CN107247678B - 一种CAN-LonWorks协议转换逻辑的编程方法 - Google Patents
一种CAN-LonWorks协议转换逻辑的编程方法 Download PDFInfo
- Publication number
- CN107247678B CN107247678B CN201710374389.XA CN201710374389A CN107247678B CN 107247678 B CN107247678 B CN 107247678B CN 201710374389 A CN201710374389 A CN 201710374389A CN 107247678 B CN107247678 B CN 107247678B
- Authority
- CN
- China
- Prior art keywords
- expression
- conversion
- protocol
- implicit
- assignment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4009—Coupling between buses with data restructuring
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
Abstract
本发明涉及一种CAN‑LonWorks协议转换逻辑的编程方法,包括以下步骤:定义运算符并定义各运算符的优先级;定义协议变量对应的唯一的数字编码;根据CAN‑LonWorks协议转换需求,使用操作数和运算符,并通过运算符规则编制各协议变量的显式赋值表达式;对显式赋值表达式进行压缩转换,从而将显式赋值表达式编码为隐式赋值表达式;对隐式赋值表达式进行检查,解析无误则检查通过并在赋值表达式末尾追加一行结束标识“END”。本发明提供的CAN‑LonWorks协议转换逻辑的编程方法,对转换逻辑进行按需编程,以适应不同的应用场合。
Description
技术领域
本发明涉及一种CAN-LonWorks协议转换逻辑的编程方法。
背景技术
CAN是ISO国际标准化的串行通信协议,CAN总线以其抗干扰性好、成本低廉等特点,在汽车及工业测控等领域有广泛应用。CAN总线协议提供了OSI参考模型三层协议(物理层、数据链路层和应用层),并定义了物理层和数据链路层,应用层协议根据应用对象自行定义。CAN协议的数据帧格式如图1,包括7个部分:帧起始(Start of Frame)、仲裁场(Arbitration Field)、控制场(Control Field)、数据场(Data Field)、CRC场(CRCField)、应答场(ACK Field)、帧结尾(End of Frame)。其中帧起始、CRC场、应答场、帧结尾由CAN控制器自动完成,仲裁场、控制场、数据场有用户根据应用对象进行设计。
仲裁场包括识别符和远程发送请求位。远程发送请求位区别帧类型,为0时表示帧类型为远程帧,为1时表示帧类型为数据帧;识别符在不同的帧格式中有所不同,标准帧格式的识别符为11bit,扩展帧格式的识别符为29bit。
控制场共6bit,在不同的帧格式中意义不同。标准帧格式时,由4bit数据长度,1bit IDE和1bit保留位组成;拓展帧时,由4bit数据长度和2bit保留位组成。
数据场由发送数据组成,共8byte。
LonWorks总线具有支持多种介质、拓展能力强、开放性好等特点,在楼宇自动化及工业测控等领域占据相当大的比例。LonWorks技术的核心是神经元芯片,它包括一个固化的高级通讯协议(LonTalk)。LonTalk协议提供了OSI参考模型的全部七层协议,其中1-6层协议固化在神经元芯片中,只有第七层应用协议是根据应用对象自行定义。LonWorks节点之间的数据交换通过消息来完成,消息一般可被编码为应用消息(Application Message)、外来帧消息(Foreign Frame Message)和网络变量(Network Variable)。应用消息和外来帧消息的报文编码分别如图2、图3所示,包括消息编码和数据;网络变量的报文编码如图4所示,包括数据传输方向(Dir)、网络变量选择器(Selector)和数据。
无论是CAN总线还是LonWorks总线,其应用协议种类繁多。现有的CAN-LonWorks协议转换器,其CAN总线和LonWorks总线的数据转换过程遵循的是固定单一的转换逻辑,仅适用于两种指定的总线应用协议之间的转换,无法适用于其它应用协议转换的场景。
CAN总线和LonWorks总线之间的协议转换,其核心是研究转换逻辑,使两种应用协议按照转换逻辑进行转换。现有的协议转换器关注的是两种总线底层协议的转换,仅进行CAN协议和LonTalk协议的转换,并不考虑其应用层协议的种类繁多且各不相同,未关注两种协议之间的复杂的逻辑关系,即未对LonTalk协议的格式(消息类型、数据等)与CAN协议的格式(帧类型、帧格式、识别符、数据等)之间复杂的逻辑关系进行转换,可认为完成的仅仅是LonTalk协议和CAN协议之间的透明传输,其转换逻辑不支持修改。但协议转换器在不同的应用场合,需处理的LonTalk的协议和CAN的协议也不尽相同,需要不同的转换逻辑。如LonTalk协议使用的消息类型可为应用消息、外来帧消息和网络变量中的之一,其消息编码的长度也因消息类型而异;CAN帧类型可分远程帧和数据帧,帧格式可分标准帧和拓展帧,识别符的长度也因帧格式而异;因而,转换逻辑所需解决的LonTalk协议消息的消息编码、数据与CAN协议的识别符、数据之间的转换逻辑不一而同。
发明内容
本发明所要解决的技术问题是针对上述现有技术提供一种通过对CAN总线和LonWorks总线的数据转换逻辑进行编辑,使得应用层协议不同的CAN总线和LonWorks总线之间能够进行通信,而无需修改CAN总线或LonWorks总线的应用层协议的CAN-LonWorks协议转换逻辑的编程方法。
本发明解决上述问题所采用的技术方案为:一种CAN-LonWorks协议转换逻辑的编程方法,其特征在于包括以下步骤:
步骤一、定义运算符并定义各运算符的优先级;
步骤二、定义协议变量对应的唯一的数字编码;
步骤三、根据CAN-LonWorks协议转换需求,使用操作数和运算符,并通过运算符规则编制各协议变量的显式赋值表达式,所述操作数包括十进制数值、十六进制数值以及协议变量,所述赋值表达式为:协议变量=转换表达式;
步骤四、对显式赋值表达式进行压缩转换,从而将显式赋值表达式编码为隐式赋值表达式,所述显式赋值表达式的压缩转换是对各协议变量用字符‘X’和协议变量对应的数字编码的字符组合进行替换,编码成隐式赋值表达式;
步骤五、对隐式赋值表达式进行检查,所述隐式赋值表达式的检查方法是将转换表达式中的操作数用数字替代,并执行隐式转换表达式的解析方法,解析无误则检查通过并在赋值表达式末尾追加一行结束标识“END”。
作为改进,所述隐式转换表达式的解析方法为:
扫描隐式赋值表达式所存储的内存,根据换行符‘\n’分解出每条赋值表达式,并依次解析、执行转换表达式,运算得到目标协议的协议变量的值,隐式赋值表达式的解析和执行流程如下:
步骤5.1、系统程序访问隐式转换表达式所在的存储区,指针指向隐式转换表达式的首地址;
步骤5.2、从指针位置依次遍历地址,直到遇到换行符‘\n’,遍历的内容即为一条隐式赋值表达式,然后指针指向换行符下一地址;
步骤5.3、根据赋值表达式的等号‘=’,将表达式拆分为协议变量和转换表达式;
步骤5.4、解析并运行转换表达式,解析无误则将运算结果赋值到协议变量;
步骤5.5、返回步骤5.1直到遇到结束标识。
作为改进,解析并运行转换表达式的方法为:对构成转换表达式的字符逐个进行解析;
设计两个堆栈,一个为用于存放运算符的运算符堆栈,另一个为存放操作数的数值堆栈;
将转换表达式中的运算符存入到运算符堆栈中,将转换表达式中的操作数存入到数值堆栈中;
逐个读取转换表达式的字符,并根据字符的类型分别进入运算符处理子流程和操作数字符运算子流程,运算符堆栈为空,数值堆栈仅有一个值时,数值堆栈中的值即为运算结果,如此完成一条转换表达式的正确解析和运算。
所述协议变量包括CAN标识符、LonTalk消息编码或网络变量选择器、CAN数据、LonTalk数据。
与现有技术相比,本发明的优点在于:LonTalk协议使用的消息类型可为应用消息、外来帧消息和网络变量中的之一,其消息编码的长度也因消息类型而异。CAN帧类型可分远程帧和数据帧,帧格式可分标准帧和拓展帧,识别符的长度也因帧格式而异。因而,转换逻辑所需解决的LonTalk协议消息的消息编码、数据与CAN协议的识别符、数据之间的转换逻辑有非常多的组合形式。本发明提供的CAN-LonWorks协议转换逻辑的编程方法,对转换逻辑进行按需编程,以适应不同的应用场合。
附图说明
图1为CAN协议的数据帧格式图。
图2为LonWorks节点之间的应用消息报文结构图。
图3为LonWorks节点之间的外来帧消息报文结构图。
图4为LonWorks节点之间的网络变量报文结构图。
图5为本发明实施例中隐式赋值表达式的解析流程图。
图6为本发明实施例中转换表达式的解析执行流程图。
具体实施方式
以下结合附图实施例对本发明作进一步详细描述。
本实施例中的CAN-LonWorks协议转换逻辑的编程方法,其特征在于包括以下步骤:
步骤一、定义运算符并定义各运算符的优先级,如表1所示;
表1运算符
步骤二、定义协议变量对应的唯一的数字编码,协议变量包括CAN标识符、LonTalk消息编码或网络变量选择器、CAN数据、LonTalk数据,如表2所示;
表2协议变量
步骤三、根据CAN-LonWorks协议转换需求,使用操作数和运算符,并通过运算符规则编制各协议变量的显式赋值表达式,所述操作数包括十进制数值、十六进制数值以及协议变量,所述赋值表达式为:协议变量=转换表达式;
其中转换表达式为右值表达式,示例如下:
MsgID=(CANID3<<4)|CANID2
LON_DATA0=CAN_DATA0&CAN_DATA1&(CAN_DATA2|CAN_DATA3)
LON_DATA1.1=CAN_DATA4.1&0x0FFF
LON_DATA1.2=~CAN_DATA3.7
LON_DATA31=0;
步骤四、对显式赋值表达式进行压缩转换,从而将显式赋值表达式编码为隐式赋值表达式,所述显式赋值表达式的压缩转换是对各协议变量用字符‘X’和协议变量对应的数字编码的字符组合进行替换,编码成隐式赋值表达式,示例如下:
X4=(X3<<4)|X2
X6=X0&X1&(X 2|X 3)
X7.1=X10.1&0x0FFF
X7.2=~X3.7
X37=0;
步骤五、对隐式赋值表达式进行检查,所述隐式赋值表达式的检查方法是将转换表达式中的操作数用数字替代,并执行隐式转换表达式的解析方法,解析无误则检查通过并在赋值表达式末尾追加一行结束标识“END”。
如图5所示,其中隐式转换表达式的解析方法为:
扫描隐式赋值表达式所存储的内存,根据换行符‘\n’分解出每条赋值表达式,并依次解析、执行转换表达式,运算得到目标协议的协议变量的值,隐式赋值表达式的解析和执行流程如下:
步骤5.1、系统程序访问隐式转换表达式所在的存储区,指针指向隐式转换表达式的首地址;
步骤5.2、从指针位置依次遍历地址,直到遇到换行符‘\n’,遍历的内容即为一条隐式赋值表达式,然后指针指向换行符下一地址;
步骤5.3、根据赋值表达式的等号‘=’,将表达式拆分为协议变量和转换表达式;
步骤5.4、解析并运行转换表达式,解析无误则将运算结果赋值到协议变量;
步骤5.5、返回步骤5.1直到遇到结束标识。
如图6所示,解析并运行转换表达式的方法为:对构成转换表达式的字符逐个进行解析;
设计两个堆栈,一个为用于存放运算符的运算符堆栈,另一个为存放操作数的数值堆栈;
将转换表达式中的运算符存入到运算符堆栈中,将转换表达式中的操作数存入到数值堆栈中;
逐个读取转换表达式的字符,并根据字符的类型分别进入运算符处理子流程和操作数字符运算子流程,运算符堆栈为空,数值堆栈仅有一个值时,数值堆栈中的值即为运算结果,如此完成一条转换表达式的正确解析和运算。
依据运算符的不同执行不同的处理流程,如左括号处理分支、右括号处理分支、单目运算处理分支、双目运算处理分支和成员访问符处理分支。操作数字符的解析流程即将离散的操作数字符还原为操作数。若操作数为协议变量,则访问其值。结果数值放入数值堆栈栈顶。
运算符的执行流程如下,根据运算符的类别,分别执行不同的操作。单目运算符的操作数为一个数值,取数值栈顶元素为操作数,然后执行对应的单目运算;双目运算符的操作数为两个数值,分别取数值栈顶的两个元素为左右操作数,然后执行对应的双目运算;成员访问符的操作数为两个数值,分别取数值栈顶的两个元素为对象和成员,然后取对象的成员比特值。
LonTalk协议使用的消息类型可为应用消息、外来帧消息和网络变量中的之一,其消息编码的长度也因消息类型而异。CAN帧类型可分远程帧和数据帧,帧格式可分标准帧和拓展帧,识别符的长度也因帧格式而异。因而,转换逻辑所需解决的LonTalk协议消息的消息编码、数据与CAN协议的识别符、数据之间的转换逻辑有非常多的组合形式。本发明提供的CAN-LonWorks协议转换逻辑的编程方法,对转换逻辑进行按需编程,以适应不同的应用场合。
Claims (4)
1.一种CAN-LonWorks协议转换逻辑的编程方法,其特征在于包括以下步骤:
步骤一、定义运算符并定义各运算符的优先级;
步骤二、定义协议变量对应的唯一的数字编码;
步骤三、根据CAN-LonWorks协议转换需求,使用操作数和运算符,并通过运算符规则编制各协议变量的显式赋值表达式,所述操作数包括十进制数值、十六进制数值以及协议变量,所述赋值表达式为:协议变量=转换表达式;
步骤四、对显式赋值表达式进行压缩转换,从而将显式赋值表达式编码为隐式赋值表达式,所述显式赋值表达式的压缩转换是对各协议变量用字符‘X’和协议变量对应的数字编码的字符组合进行替换,编码成隐式赋值表达式;
步骤五、对隐式赋值表达式进行检查,所述隐式赋值表达式的检查方法是将转换表达式中的操作数用数字替代,并执行隐式转换表达式的解析方法,解析无误则检查通过并在赋值表达式末尾追加一行结束标识“END”。
2.根据权利要求1所述的CAN-LonWorks协议转换逻辑的编程方法,其特征在于:所述隐式转换表达式的解析方法为:
扫描隐式赋值表达式所存储的内存,根据换行符‘\n’分解出每条赋值表达式,并依次解析、执行转换表达式,运算得到目标协议的协议变量的值,隐式赋值表达式的解析和执行流程如下:
步骤5.1、系统程序访问隐式转换表达式所在的存储区,指针指向隐式转换表达式的首地址;
步骤5.2、从指针位置依次遍历地址,直到遇到换行符‘\n’,遍历的内容即为一条隐式赋值表达式,然后指针指向换行符下一地址;
步骤5.3、根据赋值表达式的等号‘=’,将表达式拆分为协议变量和转换表达式;
步骤5.4、解析并运行转换表达式,解析无误则将运算结果赋值到协议变量;
步骤5.5、返回步骤5.1直到遇到结束标识。
3.根据权利要求2所述的CAN-LonWorks协议转换逻辑的编程方法,其特征在于:解析并运行转换表达式的方法为:对构成转换表达式的字符逐个进行解析;
设计两个堆栈,一个为用于存放运算符的运算符堆栈,另一个为存放操作数的数值堆栈;
将转换表达式中的运算符存入到运算符堆栈中,将转换表达式中的操作数存入到数值堆栈中;
逐个读取转换表达式的字符,并根据字符的类型分别进入运算符处理子流程和操作数字符运算子流程,运算符堆栈为空,数值堆栈仅有一个值时,数值堆栈中的值即为运算结果,如此完成一条转换表达式的正确解析和运算。
4.根据权利要求1所述的CAN-LonWorks协议转换逻辑的编程方法,其特征在于:所述协议变量包括CAN标识符、LonTalk消息编码或网络变量选择器、CAN数据、LonTalk数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710374389.XA CN107247678B (zh) | 2017-05-24 | 2017-05-24 | 一种CAN-LonWorks协议转换逻辑的编程方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710374389.XA CN107247678B (zh) | 2017-05-24 | 2017-05-24 | 一种CAN-LonWorks协议转换逻辑的编程方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107247678A CN107247678A (zh) | 2017-10-13 |
CN107247678B true CN107247678B (zh) | 2020-04-03 |
Family
ID=60017528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710374389.XA Active CN107247678B (zh) | 2017-05-24 | 2017-05-24 | 一种CAN-LonWorks协议转换逻辑的编程方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107247678B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101859138A (zh) * | 2010-06-04 | 2010-10-13 | 中环天仪股份有限公司 | 一种EPA总线与LonWorks总线转换适配器 |
CN102149225A (zh) * | 2011-04-28 | 2011-08-10 | 北京交通大学 | 动车组状态监测系统及其多功能混合网关 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101995862B1 (ko) * | 2013-06-13 | 2019-10-01 | 삼성전자주식회사 | 통신 장치 및 그 제어 방법 |
-
2017
- 2017-05-24 CN CN201710374389.XA patent/CN107247678B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101859138A (zh) * | 2010-06-04 | 2010-10-13 | 中环天仪股份有限公司 | 一种EPA总线与LonWorks总线转换适配器 |
CN102149225A (zh) * | 2011-04-28 | 2011-08-10 | 北京交通大学 | 动车组状态监测系统及其多功能混合网关 |
Non-Patent Citations (2)
Title |
---|
LonWorks-CanBus通讯协议控制网关的设计;郝凤涛、高满茹、薛立军;《微计算机信息》;20081031;第24卷(第10期);全文 * |
The Application of LonWorks in the Building Air Conditioner Intelligent Control System;Huang Xiao-Ping、Li Jian-Liang;《2012 4th International Conference on Intelligent Human-Machine Systems and Cybernetics IN IEEE》;20120930;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN107247678A (zh) | 2017-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7051143B2 (en) | Method, system and program for the transmission of modbus messages between networks | |
US8812643B2 (en) | Conversion of hierarchical infoset type data to binary data | |
CN100525233C (zh) | 一种基于can总线的信号实时性处理方法 | |
CN108881251B (zh) | 一种任意二进制设备接入解析与标准化的系统及方法 | |
CN108199941B (zh) | 一种基于can2.0b的can总线通信方法 | |
US9575920B2 (en) | Method for transmitting a process map via a gateway device | |
US8683320B2 (en) | Processing module, a device, and a method for processing of XML data | |
CN112995172B (zh) | 物联网设备和物联网平台之间对接的通信方法及通信系统 | |
CN113596017B (zh) | 一种协议解析方法、装置、软网关和存储介质 | |
CN102255687A (zh) | 速率匹配方法与装置 | |
CN114020272A (zh) | 一种序列化编码、解码方法、装置及电子设备 | |
CN112437064A (zh) | 数据传输方法、数据读取方法、装置、设备及存储介质 | |
US7840735B2 (en) | Can system | |
CN112417515A (zh) | 组态软件协议处理方法及系统 | |
CN106027686B (zh) | 基于mpeg-2的增强型modbus通信方法 | |
CN107247678B (zh) | 一种CAN-LonWorks协议转换逻辑的编程方法 | |
CN106814646A (zh) | 用于控制制造机器系统的方法及控制制造机器系统的装置 | |
CN112911024A (zh) | 一种物联网数据采集的方法、系统、电子装置和存储介质 | |
JP2021039732A (ja) | データ伝送方法 | |
CN108763127B (zh) | 源数据与目标数据相互转换的Modbus适配器的实现方法 | |
CN105793842B (zh) | 序列化消息之间的转换方法和装置 | |
JP2020088707A (ja) | クラウドブルートゥース装置管理システム | |
US8554966B2 (en) | Method for data exchange | |
US10742783B2 (en) | Data transmitting apparatus, data receiving apparatus and method thereof having encoding or decoding functionalities | |
CN111679623B (zh) | 一种通信方法、装置、终端、可编程逻辑控制器以及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |