一种总线上现场实时通信的方法与流程

文档序号:12478083阅读:216来源:国知局
一种总线上现场实时通信的方法与流程

本发明主要涉及到通信技术,确切地说,尤其是涉及到一种现场实时总线通信方法的通信协议的实现方法。



背景技术:

在完整的通信系统中,不同的实体设备之间要完成有效的通信,必须按照一定的约定通信协议规则来进行,不同的通信设备的消息交互也是按照这种协议规定的消息格式进行的。通信协议的实现是通信系统的关键步骤,对于通信系统中的各个接口都有专用的通信协议,包括其消息的编码方式,同时考虑到传输的效率问题,大多数接口消息都定义了自己的编码方式,发送方按照预先约定的编码规则把消息编码成码流,接收方则根据这个编码规则来解码,以此完成整个消息的交互过程。

通信协议特别是信息的编码解码要在通信系统的实体设备上实现,例如通信设备的对外接口上就要求有一个编码解码模块,编码解码模块的实现方案既可以用软件也可以用硬件来执行,当前由于通信设备的处理能力逐步加强以及计算机语言能力的拓展,较多的情况是采用软件实时。为了便于实现和管理,通信协议的描述需要有统一的语言,语法规则语言可以用于描述通信协议的内容,得到预期的通信目的。本发明的目的就在于,提供一种利用抽象语法规则描述的通信协议,高效的实现协议解编码,实现无冲突的协调实时性并支持一问多答的通信方式,提高通信效率。



技术实现要素:

一种总线上现场实时通信的方法,用于在主节点和从节点间实现通信,由主节点为从节点分配通道,每个从节点在自己所分配的通道中向主节点汇报数据;

总线上的每个数据块均由主节点发起且限定从节点无权发起数据块,其中总线上的每个数据块至少包括由主节点发出的第一套节点数据和由从节点发出的第二套节点数据。

上述的方法,在任意一个所述数据块中:

所述第一套节点数据至少包括作为首个节点数据的从节点组标识符(TG)和作为末尾一个节点数据的数据块结束控制字(EOF),和包括时序位于首个节点数据与末尾节点数据之间的一个第一数据发送结束控制字(EOS1);其中

所述第二套节点数据的时序位于所述第一数据发送结束控制字(EOS1)和所述数据块结束控制字(EOF)之间。

上述的方法,所述第一套节点数据还包括时序位于所述从节点组标识符(TG)和所述第一数据发送结束控制字(EOS1)之间的一个功能码控制字(FC)。

上述的方法,所述第二套节点数据包括所述从节点回应一部分所述第一套节点数据的一个或多个确认控制字(ACK)。

上述的方法,所述第二套节点数据包括所述从节点回应一部分所述第一套节点数据的一个或多个确认控制字(ACK)。

上述的方法,所述第一套节点数据还包括时序位于所述从节点组标识符(TG)和所述功能码控制字(FC)之间的高位地址(ADDRH)、低位地址(ADDRL);

所述第一套节点数据还包括时序位于所述功能码控制字(FC)与所述第一数据发送结束控制字(EOS1)之间的一个或多个请求数据字(RQ);以及

所述第二套节点数据包括所述从节点回应一部分所述第一套节点数据的一个或多个确认控制字(ACK)。

上述的方法,所述第一套节点数据还包括时序位于所述从节点组标识符(TG)和所述功能码控制字(FC)之间的高位地址(ADDRH)、低位地址(ADDRL);

所述第一套节点数据还包括时序位于所述功能码控制字(FC)与所述第一数据发送结束控制字(EOS1)之间的一个或多个请求数据字(RQ);以及

定义所述第二套节点数据包括一个或多个数据集合,每个数据集合均包括所述从节点 回应一部分所述第一套节点数据的一个或多个响应数据字(RS),每个数据集合还包括时序位于一个或多个响应数据字(RS)后面紧随的一个第二数据发送结束控制字(EOS2)。也即一个从节点所发出的{RS1、RS2……RSN,EOS2}就构成了一个单独的数据集合,而总线上可以出现多个类似这样的数据集合,这些数据集合既可以是一个从节点发出的,也可以是不同的多个从节点发出的,例如,第一个从节点回应某些第一套节点数据时发出了{RS1、RS2……RSN,EOS2},第二个从节点也回应某些第一套节点数据时而发出了{RS1、RS2……RSN,EOS2},实现主从节点间的一问多答协议。

上述的方法,在所述第一套节点数据中将所述功能码控制字(FC)的时序设置为紧随着所述从节点组标识符(TG)的时序;以及

所述第一套节点数据还包括时序位于所述功能码控制字(FC)和所述第一数据发送结束控制字(EOS1)之间的一个或多个请求数据字(RQ);以及

所述第二套节点数据包括所述从节点回应一部分所述第一套节点数据的一个或多个确认控制字(ACK)。

上述的方法,在所述第一套节点数据中将所述功能码控制字(FC)的时序设置为紧随着所述从节点组标识符(TG)的时序;以及

所述第一套节点数据还包括时序位于所述功能码控制字(FC)和所述第一数据发送结束控制字(EOS1)之间的一个或多个请求数据字(RQ);以及

所述第二套节点数据包括所述从节点回应一部分所述第一套节点数据的一个或多个响应数据字(RS),并且还包括时序位于最后一个响应数据字(RS)和所述数据块结束控制字(EOF)之间的一个第二数据发送结束控制字(EOS2)。

上述的方法,所述从节点对所述数据块开始执行解析的条件是:

总线上的实际空闲时间超过一个预设的空闲时间阈值(10ms);或者

从节点收到总线上任意一个数据块的所述数据块结束控制字(EOF),且所述数据块结束控制字(EOF)不是用于指示数据块从总线上退出的数据块退出控制字(ESC_EOF)。

上述的方法,总线上通信的波特率速度随着通信物理层的不同而随之改变或是固定不 变,但总线上所预设的空闲时间阈值不随着通信速度的改变而改变。

上述的方法,从节点回应主节点的回应时间限制条件为:

自从节点被主节点询问的时刻算起,从节点应该在预设的回应时间期限(8ms)内响应,如果超过回应时间阈值(10ms)从节点没有回应则认为从节点不存在或发生故障。

上述的方法,总线上的字节编码方式包括第一类至第十六类编码,它们对应的代号分别为S0、S1……S15;

代号为S0至S13的编码的控制字分配使用所述从节点组标识符(TG)、功能码控制字(FC)、确认控制字(ACK);

代号为S14的编码的控制字分配使用所述从节点组标识符(TG)、确认控制字(ACK);

其中,代号S13表示数据块从总线上退出,代号S14表示数据发送结束,代号S15表示一个数据块结束。

上述的方法,当所述从节点组标识符(TG)采用代号S14时,表示在总线上执行点到点的通信,从节点的定址格式是:从节点组标识符(TG)-高位地址(ADDRH)-低位地址(ADDRL);或者

当所述从节点组标识符(TG)采用代号S0~S13时,表示在总线上执行一对多的多播组通信,从节点的定址格式是:从节点组标识符(TG)。

上述的方法,由所述主节点发出的功能码控制字(FC)选取None和0~15中的任意之一,当功能码控制字(FC)为None或偶数时,从节点回应主节点的方式为所述确认控制字(ACK);并且

功能码控制字(FC)包括主节点询问从节点状态的Ping命令;

功能码控制字(FC)包括主节点用于配置组播方式的Config命令,并且配置组播采用单播的方式确定从节点的地址;

功能码控制字(FC)包括主节点发布执行(Do)的命令;

功能码控制字(FC)包括主节点发布写(Write)的命令;

功能码控制字(FC)包括主节点发布询问(Query)的命令。

上述的方法,由主节点发出的功能码控制字(FC)选取None和0~15中的任意之一,当主节点发出的功能码控制字(FC)不为None或偶数时,从节点回应主节点的方式为一个或多个响应数据字(RS)序列并以第二数据发送结束控制字(EOS2)结束;并且

功能码控制字(FC)至少包括主节点发布读(Read)的命令。

上述的方法,总线上的由从节点发出的第二套节点数据中的多个确认控制字(ACK)可以是分别由多个不同的从节点发出的。

上述的方法,定义所述第二套节点数据包括多个数据集,每个数据集均包括一个或多个响应数据字(RS),且每个数据集还包括时序位于一个或多个响应数据字(RS)后面紧随的一个第二数据发送结束控制字(EOS2);

其中,总线上不同的数据集是由不同的从节点发起的。

上述的方法,其中:

第一套节点数据和第二套节点数据中定义有控制字节类型的数据:从节点组标识符(TG)、功能码控制字(FC)、确认控制字(ACK)和第一、第二数据发送结束控制字(EOS1、EOS2)、数据块结束控制字(EOF);以及

第一套节点数据和第二套节点数据中定义有数据字节类型的数据:高位地址(ADDRH)、低位地址(ADDRL)、请求数据字(RQ)、响应数据字(RS)。

上述的方法,所述数据字节类型的数据采用代号为S13至S15的特殊编码时,其中:

代号S13的第一层含义表示在总线上读取数据时跳过S13自身的编码而将时序紧随着它之后的一个编码读取为实际需要读取的数据;

代号S14的第一层含义表示数据发送结束;

代号S15的第一层含义表示一个数据块结束;

S13至S15各自的第二层含义表示它们的原始十六进制字节;

如果要写入S13至S15各自的原始十六进制字节到总线上,则

S13~S15中任意之一的原始十六进制字节在总线上的写入方法为先出现一个S13编码再紧跟着一个S13~S15中的任意之一,也即在总线上读到S13时,首个S13编码被 跳过而将后一个S13~S15中的任意之一编码读取为实际要读取的原始十六进字节。

附图说明

阅读以下详细说明并参照以下附图之后,本发明的特征和优势将显而易见:

图1是通信协议的示意图。

图2是编码方式的示意图。

图3是功能码定义示意图。

具体实施方式

参见图1所示,基于按照一定的约定通信协议规则来实现不同的通信设备的消息交互的目的,本申请定义了自己的编码方式,发送方按照预先约定的编码规则把消息编码成码流,接收方则根据这个编码规则来解码,以此完成整个消息的交互过程。总线是通信设备尤其是计算机的各种功能部件之间传送信息的公共通信干线,在图1中,本申请总线上的通讯是由Frame_1、Frame_2、Frame_3……Frame_N等多个数据块或帧Frame组成的。为了便于实现通信协议得到预期的通信目的。在本发明中要求Frame必须由主节点Master发起并且从节点没有发起Frame的权力,并且每一个数据块Frame都是由主节点和从节点发出的数据组成的。为了解释这一点,以任意的一个数据块Frame_3作为范例来进行说明。数据块Frame_3的数据结构有多种可选方式,下文将一一阐释。

数据块Frame_3在通信协议中的第一种情况(101):

在该实施例中:

数据块Frame_3由主节点发出的第一套节点数据(实线方框)和由从节点发出的第二套节点数据(虚线方框)组成。第一套节点数据包括作为Frame_3中的首个节点数据的从节点组标识符(Target,简称TG),和包括作为Frame_3中的末尾一个节点数据的数据块结束控制字(End of Frame,简称EOF),还包括时序位于首个节点数据与末尾节点数据之间的一个第一数据发送结束控制字(End of Send,简称EOS1)。从节点组标识 符TG代表此FRAME的对象,每个不同的TG代表着不同的从节点组。在这种情况下我们定义TG、EOS1和EOF都属于主节点发出的第一套节点数据。

在该实施例中:

第二套节点数据的时序位于EOS1和EOF之间,此时第二套节点数据包括从节点回应一部分第一套节点数据的一个或多个确认控制字(ACK1、ACK2……ACKN),上文和这里出现的N是≥1的自然数。在时序关系上应当满足:EOS1的时序紧随着TG,而一系列的(ACK1、ACK2……ACKN)的时序紧随着EOS1,其中EOF的时序位于所有的确认控制字ACK1、ACK2……ACKN(Acknowledge,简称ACK)之后。

数据块Frame_3在通信协议中的第二种情况(102):

在该实施例中:

与第一种情况(101)相比,此实施例仅仅是第一套节点数据额外多了一个功能码控制字(FC),而且在时序关系上:功能码控制字(Function,简称FC)紧随着从节点组标识符(TG)并且FC位于第一数据发送结束控制字(EOS1)之前。除了这个FC的区别点之外,该实施例与第一种情况(101)其他的编码方案基本相同。

数据块Frame_3在通信协议中的第三种情况(103):

在该实施例中:

第一套节点数据(实线方框)包括作为Frame首个节点数据的从节点组标识符(TG)和作为Frame末尾一个节点数据的数据块结束控制字(EOF),还包括时序位于首个节点数据与末尾节点数据之间的一个第一数据发送结束控制字(EOS1);其中

第二套节点数据(虚线方框)的时序位于第一数据发送结束控制字(EOS1)和数据块结束控制字(EOF)之间。第二套节点数据(虚线方框)包括从节点回应一部分第一套节点数据(例如回应FC)的一个或多个确认控制字(ACK)。

第一套节点数据还包括时序位于从节点组标识符(TG)和所述的第一数据发送结束控制字(EOS1)之间的一个功能码控制字(FC)。

第一套节点数据还包括时序位于从节点组标识符(TG)和功能码控制字(FC)之间 的高位地址(ADDRH)、低位地址(ADDRL),此时ADDRH的时序在ADDRL之前;

此外第一套节点数据还包括时序位于功能码控制字(FC)与第一数据发送结束控制字(EOS1)之间的一个或多个请求数据字RQ1、RQ2…RQN(Request内容,简称RQ)。

对比第二种情况(102)和第三情况(103),可以得出Frame配置的不同:第三情况(103)实质上是在第二种情况(102)的TG和FC之间插入了高位地址ADDRH和低位地址ADDRL,且还在FC和EOS1之间插入了请求数据字RQ1、…RQN。

数据块Frame_3在通信协议中的第四种情况(104):

在该实施例中:

第一套节点数据(实线方框)包括作为Frame首个节点数据的从节点组标识符(TG)和作为Frame末尾一个节点数据的数据块结束控制字(EOF),还包括时序位于首个节点数据与末尾节点数据之间的一个第一数据发送结束控制字(EOS1);其中

第二套节点数据(虚线方框)的时序位于第一数据发送结束控制字(EOS1)和数据块结束控制字(EOF)之间。第二套节点数据(虚线方框)包括从节点回应一部分第一套节点数据(如回应FC)的一个或多个确认控制字(ACK1、ACK2……ACKN)。

并且在第一套节点数据中,将功能码控制字(FC)的时序设置为紧随着从节点组标识符(TG)的时序。

第一套节点数据还包括时序位于该功能码控制字(FC)和该第一数据发送结束控制字(EOS1)之间的一个或多个请求数据字(RQ1、RQ2……RQN)。

对比第二种情况(102)和第四情况(104),可以得出Frame配置的不同:第四情况(104)实质上是在第二种情况(102)的FC和EOS1之间插入了一个或多个请求数据字RQ1、RQ2…RQN。

数据块Frame_3在通信协议中的第五种情况(105):

第一套节点数据(实线方框)包括作为Frame首个节点数据的从节点组标识符(TG)和作为Frame末尾一个节点数据的数据块结束控制字(EOF),还包括时序位于首个节点数据与末尾节点数据之间的一个第一数据发送结束控制字(EOS1);其中

第二套节点数据(虚线方框)的时序位于第一数据发送结束控制字(EOS1)和数据块结束控制字(EOF)之间。第二套节点数据(虚线方框)包括从节点回应一部分第一套节点数据(例如回应FC或回应RQ等)的一个或多个响应数据字RS1、RS2……RSN,这里Response/Result的内容简称RS。并且第二套节点数据还包括时序位于一系列响应数据字中的最后一个响应数据字(RSN)和数据块结束控制字(EOF)之间的一个第二数据发送结束控制字(EOS2),意味着发送RS数据结束。

在第一套节点数据中,将该功能码控制字(FC)的时序设置为紧随着从节点组标识符(TG)的时序;以及

第一套节点数据(实线方框)还包括时序位于功能码控制字(FC)和第一数据发送结束控制字(EOS1)之间的一个或多个请求数据字(RQ1、RQ2……RQN)。

对比第五种情况(105)和第四情况(104),可以得出Frame配置的不同:第五种情况(105)实质上是在第四情况(104)的EOS1和EOF之间,将原本的ACK1…ACKN替换掉,取而代之的是在EOS1和EOF之间插入了一个或多个响应数据字RS1……RSN以及一个EOS2,EOS2的时序位于RS1……RSN之后。

数据块Frame_3在通信协议中的第六种情况(106):

在该实施例中:

第一套节点数据(实线方框)包括作为Frame首个节点数据的从节点组标识符(TG)和作为Frame末尾一个节点数据的数据块结束控制字(EOF),还包括时序位于首个节点数据与末尾节点数据之间的一个第一数据发送结束控制字(EOS1);其中

第二套节点数据(虚线方框)的时序位于第一数据发送结束控制字(EOS1)和数据块结束控制字(EOF)之间。第二套节点数据(虚线方框)包括从节点回应一部分第一套节点数据(例如回应FC或回应RQ等)的一个或多个响应数据字RS1、RS2……RQN,这里一系列Response/Result的内容简称RS1、RS2……。且第二套节点数据还包括时序位于最后一个响应数据字(RSN)和数据块结束控制字(EOF)之间的一个第二数据发送结束控制字(EOS2),EOS2意味着发送RS数据结束。

第一套节点数据(实线)还包括时序位于该从节点组标识符(TG)和该功能码控制字(FC)之间的高位地址(ADDRH)、低位地址(ADDRL),ADDRH在ADDRL之前。

第一套节点数据(实线)还包括时序位于该功能码控制字(FC)与该第一数据发送结束控制字(EOS1)之间的一个或多个请求数据字(RQ1、RQ2……RQN),EOS1意味着请求数据字RQ的发送结束。

对比第六种情况(106)和第三情况(103),可以得出Frame配置的不同:第六种情况(106)实质上是在第三情况(103)的EOS1和EOF之间,将原本的ACK1…ACKN替换掉,取而代之的是在EOS1和EOF之间插入了一个或多个响应数据字RS1……RSN以及一个EOS2,EOS2的时序位于RS1……RSN之后。

基于上文讨论的内容,按照任一数据块的第一至第六种(101~106)情况,介绍了本发明的主要通信协议情况。注意从节点解析一个数据块Frame或帧的条件是:总线上的实际空闲时间超过一个预设的空闲时间阈值(例如10ms);或者当从节点收到总线上任意一个数据块的数据块结束控制字(EOF)时,并且数据块结束控制字(EOF)不是用于指示数据块从总线上退出的数据块退出控制字(ESC_EOF),只要这两个条件之一满足,就表示着接下来就是一帧的开发。

总线上通信的波特率速度bps随着通信物理层的不同而随之改变或是固定不变,但总线上的定时时间或预设的空闲时间阈值不随着通信速度的改变而改变。另外,从节点回应主节点的回应时间限制条件为:自从节点被主节点询问的时刻算起,从节点应该在预设的回应时间期限(例如8ms)内响应,如果超过回应时间阈值(例如10ms)从节点没有回应,则认为从节点不存在或发生故障。这里回应时间阈值TRES一般比回应时间期限TLIM要略大,如果在回应时间期限TLIM至回应时间阈值TRES之间的这段时间内,从节点仍然没有回应主节点,主节点处于等待状态,暂时不判定从节点不存在或故障。

参见图2,总线上的字节编码方式包括第一类至第十六类编码,例如第一类至第十六编码对应分别采用十六进制的0x0F、0x1A、0x29、0x3C、0x46、0x53、0x60、0x75、0x85、0x90、0xA3、0xB6、0xCC、0xD9、0xEA、0xFF,在图2中编码对应的代号分 别为S0、S1、S2、S3……S12、S13(ESC)、S14(EOS)、S15(EOF),每一个编码与一个代号对应,例如第一类编码0x0F对应S0,第二类编码0x1A对应S1,以此类推直至第十六类编码0xFF对应S15(EOF)。

其中代号为S0~S12、S13(ESC)的编码的控制字分配使用TG、FC、ACK;代号为S14(EOS)的编码的控制字分配使用TG、ACK;代号为S15(EOF)的编码的控制字没有分配任何控制字。且代号S13(ESC)表示数据块从总线上退出,代号S14(EOS)表示数据发送结束,代号S15(EOF)表示一个数据块结束。

当从节点组标识符(TG)采用代号S14时,表示在总线上执行点到点的通信,从节点的定址格式是:依赖从节点组标识符(TG)-高位地址(ADDRH)-低位地址(ADDRL),在时序关系上它们依次定义为TG、ADDRH、ADDRL。

当从节点组标识符(TG)采用代号S0~S13时,表示在总线上执行一对多的多播组通信,从节点的定址格式是:仅仅依赖从节点组标识符(TG)。

参见图3,由主节点发出的功能码控制字FC选取None和0~15中的任意之一,当功能码控制字FC为None或0~15中的偶数时,从节点回应主节点的方式为通过回应确认控制字ACK。

在作为范例的可选实施例中:

FC为None时,功能码控制字(FC)包括主节点询问从节点状态的Ping命令,所有的从节点都必须支持此项Ping功能或命令,此时第一套节点数据中的RQ的内容可以是None,即无需做出具体的请求内容。

FC为0时,功能码控制字(FC)包括主节点用于配置组播方式的Config命令,并且配置组播采用单播的方式确定从节点的地址,该情况下数个RQ序列的具体内容例如可以是TG、RS_seq_hi、RS_seq_lo等,TG为0~13代表着从节点加入相应的组,而响应数据字RS_seq_hi、RS_seq_lo则是要加入组的从节点的高位、低位回应次序。

FC为2时,功能码控制字(FC)包括主节点发布执行(Do)的命令,该情况下一个或多个RQ序列的具体内容可以是对应于Do命令的具体实施措施(Action)。

FC为6时,功能码控制字(FC)包括主节点发布写(Write)的命令,该情况下一个或多个RQ1、RQ2…序列的内容可以是tag_hi、tag_low、d1_hi、d1_low…等,RQ对应于Write命令至少具有的请求内容为记录写操作结果的标志位高tag_hi和标志位低tag_low,还有表示写入数据的数据高位d1_hi和数据低位d1_low等。

FC为8时,功能码控制字(FC)包括主节点发布询问(Query)的命令,该情况下一个或多个RQ1、RQ2…序列的具体内容可以是tag_hi、tag_low、query、d1_hi、d1_low…mask1…等,其中query赋值为0时例如可以是是询问等于吗?query赋值为1时例如可以是是询问小于吗?query赋值为2时例如可以是是询问不等于吗?query赋值为3时例如可以是是询问大于吗?等等。mask1的位代表是否忽略或在意,例如mask1为1的位代表不介意not care。

参见图3,由主节点发出的功能码控制字FC选取None和0~15中的任意之一,当主节点发出的功能码控制字FC不为None或偶数时,例如奇数,从节点回应主节点的方式为一个或多个响应数据字RS序列并以第二数据发送结束控制字(EOS2)结束,也即响应数据字时序之后的EOS2意味着RS序列发送结束。在图3的实施例中,虽然FC一般选取于None和0~15,但FC在15时最好定义为不可用,不赋任意含义。

在作为范例的可选实施例中:

FC为3时,功能码控制字(FC)至少包括主节点发布读(Read)的命令。该情况下一个或多个RQ1、RQ2…序列的内容可以是tag_hi、tag_low等,RQ对应于Read命令至少具有请求内容为记录读操作结果的标志位高tag_hi和标志位低tag_low等。

综上所述,本发明涉及的一种在总线上以现场实时(Field Real-time bus)的方式实现通信的方法,主要用于在主节点和从节点之间实现通信,基本思想是由主节点为从节点分配通道,而且每个从节点在自己所分配的通道中可以向上汇报数据的能力。总线上的每个数据块均由主节点发起且限定从节点无权发起数据块,其中总线上的每个数据块至少包括由主节点发出的第一套节点数据和由从节点发出的第二套节点数据。

本申请的主要设计目标:

1、总线上无冲突的协调实时性,主节点为从节点分配通道,从节点在自己的通道中有向上汇报情况的能力,比传统的轮询方式快了一个数量级。

2、主节点和从节点之间支持一问多回答的通信方式,提高通信效率。

3、标准的串口操作,不需要特殊的时序IO操作,简化了与PC等系统的集成。

4、从节点软件简单,存储占用资源很少,目标是从节点闪存Flash占用小于512B,RAM存储小于64B(收发缓冲器bufer大约占用20B,总线多播配置13B,诊断4B等)。

5、总线上支持同步操作。

6、通信协议非常可靠,具有纠错和总线诊断功能。

7、协议支持低成本多种物理层:“线与”单线,RS485等。

本申请涉及到的名词定义:

TG:Target,代表此FRAME的对象,每个不同的TG代表不同的从节点组。

FC:Function Code,代表此FRAME的帧格式和主要内容。

ACK:Acknownledge,是从节点对某些FC的回应。

RQ:Request内容。

RS:Response/Result内容。

EOS:End of Send。

EOF:End of Frame。

本申请上下文中称TG、FC、EOS、EOF、ACK为控制字,ADDRH、ADDRL、RQn、RSn为数据字。

本申请涉及到的通信协议的编码方式:

总线上所有的字节采用4b8b编码,这符合mBnB编码规则,所谓mBnB编码就是将m位bit分成一组,变换成对应的n位bit串行送出,4b8b编码就是将4位bit分成一组,变换成对应的8位bit串行发送出。数据字节的完整性是靠ECC(Error Checking and Correcting)校验的,数据包的完整性是靠数据包的长度校验的。因为应用层知道每部分的长度,接收节点应当校验相应部分的长度是否正确。总线上的字节格式是8N1,串行 数据格式(8N1)编码每个字节场的长度是10个比特时间(BIT TIME)。起始位START BIT是一个显性位,它标志着字节场的开始。接着是8个数据位,首先发送最低位。停止位STOP BIT是一个隐性位,它标志着字节场的结束。

在本申请中TG和ADDRx的使用定义,节点的定址模式为:

TG为14时表示是点到点通信,定址格式为TG-ADDRH-ADDRL。

TG为0~13时是多播组,最多支持14个多播组,定址格式为TG。

TG不能为15。

在本申请中FC、ACK的使用定义:

FC为None和偶数时,回应方式为ACK,否则为RS序列以EOS结束。

ACK怎么使用没有硬性规定,比如回应FC时有多种方案:

ACK采用0:表示超时(Timeout)。

ACK采用1:表示错误(Err)。

ACK采用2:表示为特殊应用保留(reserved for special application)。

ACK采用3:表示为特殊应用保留(reserved for special application)。

ACK采用4:表示正常确认(OK)。

或者ACK在表示待机通信质量(standby the quality of communication)时:

ACK采用0:表示通信错误(communication Err)。

ACK采用1:表示通信警告(communication Warn)。

ACK采用3:表示通信正常(communication Good)。

在本申请中总线的管理方式:主节点负责整个总线的管理,多播组新节点的加入:主节点定期用PING帧轮询的新节点,当有回应是就加入相应的组。多播组老节点的退出:当有从节点当机或其他原因退出时,主机会从相应的回应中感知,从而重新组织多播组。

参见图1,数据块Frame在通信协议中的第一种情况(101)、第二种情况(102)、第三种情况(103)、第四种情况(104)中,一个或多个确认控制字(ACK1、ACK2……ACKN)可以是同一个从节点发出的,也可以是不同的从节点发出的,例如ACK1是第一 个从节点发出的,ACK2是第二个从节点发出的,ACKN是第N个从节点发出的。

参见图1,数据块Frame在通信协议中的第五种情况(105)、第六种情况(106)中,先定义每个数据集合均包括一个或多个响应数据字(RS),且每个数据集合还包括时序位于一个或多个响应数据字(RS)后面紧随的一个第二数据发送结束控制字(EOS2),也就是说{RS1、RS2……RSN,EOS2}构成了一个数据集合,总线上可以出现多个这样数据集合,这些数据集合既可以是同一个从节点发出的,也可以是不同的从节点发出的,例如第一个数据集合是第一个从节点发出的,第二个数据集合是第二个从节点发出的,第N个数据集合是由第N个从节点发出的,这就是主机和从机之间的一问多答协议。

参见图1,第一套节点数据和第二套节点数据中定义有控制字节类型的数据:从节点组标识符(TG)、功能码控制字(FC)、确认控制字(ACK)和第一、第二数据发送结束控制字(EOS1、EOS2)、数据块结束控制字(EOF)。以及第一套节点数据和第二套节点数据中定义有数据字节类型的数据:高位地址(ADDRH)、低位地址(ADDRL)、请求数据字(RQ)、响应数据字(RS)。

参见图2,数据字节类型的数据(也即ADDRH、ADDRL、RQ、RS)采用代号为S13至S15的特殊编码(特殊之处就在于它们至少有两层含义)时,其中:

代号S13的第一层含义表示在总线上读取数据时跳过S13自身的编码而将时序紧随着它之后的一个编码读取为实际需要读取的数据;

代号S14的第一层含义表示数据发送结束;

代号S15的第一层含义表示一个数据块结束;

S13至S15各自的第二层含义表示它们的原始十六进制字节;

如果要写入S13至S15各自的原始十六进制字节到总线上(此时要求不能使用S13至S15各自的第一层含义),则:

S13~S15中任意之一的原始十六进制字节在总线上的写入方法为先出现一个S13编码再紧跟着一个S13~S15中的任意之一,也即在总线上读到S13时,首个S13编码被跳过而将后一个S13~S15中的任意之一编码读取为实际要读取的原始十六进字节。

例如,ADDRH、ADDRL、RQ、RS等之中的一者需要采用S13的原始十六进字节编码0xD9时,如果总线上直接出现十六进制0xD9,则会认为是代号S13的第一层含义也即跳过S13而将S13时序之后的任意一个数据读取到,显然这是有误的。但是如果在总线上写入时序上连续的{0xD9,0xD9},则在总线上读取到第一个0xD9时,第一个0xD9按照第一层含义而被跳过忽略,并将第二个0xD9读取为真实的原始十六进制字节。

例如,ADDRH、ADDRL、RQ、RS等之中的一者需要采用S14的原始十六进字节编码0xEA时,如果总线上直接出现十六进制0xEA,则会认为是代号S14的第一层含义也即表示数据发送结束,显然这是有误的。但是如果在总线上写入时序上连续的{0xD9,0xEA},则在总线上读取到第一个0xD9时,第一个0xD9按照第一层含义而被跳过忽略,并将第二个0xEA读取为真实的原始十六进制字节(实际数据)。

例如,ADDRH、ADDRL、RQ、RS等之中的一者需要采用S15的原始十六进字节编码0xFF时,如果总线上直接出现十六进制0xFF,则会认为是代号S15的第一层含义也即表示数据块结束,显然这是有误的。但是如果在总线上写入时序上连续的{0xD9,0xFF},则在总线上读取到第一个0xD9时,第一个0xD9按照第一层含义而被跳过忽略,并将第二个0xFF读取为真实的原始十六进制字节(实际数据)。

以上,通过说明和附图,给出了具体实施方式的特定结构的典型实施例,上述发明提出了现有的较佳实施例,但这些内容并不作为局限。对于本领域的技术人员而言,阅读上述说明后,各种变化和修正无疑将显而易见。因此,所附的权利要求书应看作是涵盖本发明的真实意图和范围的全部变化和修正。在权利要求书范围内任何和所有等价的范围与内容,都应认为仍属本发明的意图和范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1