专利名称:基于profibus报文快速识别的多端口控制方法
技术领域:
本发明涉及一种不需要解析PROFIBUS报文、波特率自适应的 PROFIBUS报文数据流快速识别方法以及基于此种方法的PROFIBUS多 端口数据流控制技术。本方法可以应用于多端口 PROFIBUS网络设备, 如PROFIBUS中继器、集线器、光纤转换接口及多端口 PROFIBUS网关、 网桥产品的开发;也可以应用于其它基于RS-485网络的中继器、集线器 等多端口网络设备的产品开发。
背景技术:
在基于RS-485的PROFIBUS网络中,需要中继器增加网段,以增加 PROFIBUS站点、延长PROFIBUS传输距离。利用PROFIBUS多端口设 备,如PROFIBUS集线器,可以改变PROFIBUS总线型网络拓扑结构, 实现树型或混合型网络结构。无论是中继器、集线器、还是其它多端口网 络设备,其控制方法都要涉及PROFIBUS报文数据流方向、报文启止的 判别,以实现多端口数据流控制。首先是要能够检测到接收PROFIBUS 报文启始时刻。现有技术的方法是检测接收信号的下降沿,来确定 PROFIBUS总线上接收报文启始信号。此方法的缺点是在高波特率传输 条件下会造成信号发送的延误而产生PROFIBUS波形损失。对于报文结 束时刻的快速判别则难度更大,现有技术采用的方法是解析报文字符,截 取报文中报文长度字段、并结合识别报文结束符的方法来判断报文的结 束。这种方法硬件设计复杂、解析报文有延时、速度慢;由于解析报文涉 及网络上层协议,因此这种方法与协议有关,不适应其它RS-485网络。
发明内容
为解决上述问题,本发明的目的是提供一种基于PROFIBUS报文快 速识别的多端口控制方法,不用解析报文字符,不需对波特率逐次试探测 试、不需要检测时间,是一种快速、波特率自适应的报文数据流判别方法。
为实现上述目的,本发明采用以下技术方案
一种基于PROFIBUS报文快速识别的多端口控制方法,包括以下步 骤其特征是
步骤①上电复位电路上电,复位电路对多路收/发控制逻辑电路发
复位信号,将多路收/发控制逻辑电路的各个发送允许端置为o,同时将多
路收/发控制逻辑电路的各个接收允许端置为0,使所有通道处在接收状 态;
步骤②各通道的检测及隔离电路检测相应端口的信号线电平,等待 出现报文启始信号;
步骤③当某一通道的检测及隔离电路检测到该端口出现报文启始信
号,该检测及隔离电路立即向多路收/发控制逻辑电路发送第一波触发信
号;
步骤 :多路收/发控制逻辑电路收到第一波触发信号后,立即将其余 通道的发送允许端置1,接收允许端置1,使其余通道处于发送状态,同 时,多路收/发控制逻辑电路将接收端接收到的报文信号转换成发送报文信 号,通过发送端发送给其余通道的驱动及隔离电路,其余通道的驱动及隔 离电路再将发送报文信号输送到各自端口中;
步骤⑤上述步骤③中的检测及隔离电路在发送完第一波触发信号 后,继续检测该端口接收到的报文信号,每当检测及隔离电路检测到端口 的信号线的电平由发送状态转变为释放状态,检测及隔离电路都要向多路 收/发控制逻辑电路的触发端发送第二波触发信号;
步骤⑥当多路收/发控制逻辑电路收到第二波触发信号并确认该端口 信号线上报文确已发送结束,多路收/发控制逻辑电路立即将其余通道的发 送允许端置0,接收允许端置0,关闭其余通道的驱动及隔离电路,使它 们回到接收状态,这时,所有通道均回到接收状态;
步骤⑦返回步骤②。
所述步骤③中,检测及隔离电路是通过如下方式检测该端口出现报文 启始信号检测及隔离电路检测端口外端PROFIBUS信号线电平,当某一 端口的PROFIBUS信号线电平由释放状态转到发送状态,即可判定该端 口接收到PROFIBUS报文启始信号。
所述步骤⑥中多路收/发控制逻辑电路每当收到第二波触发信号后, 都要通过判定触发信号的持续时间来确定报文是否确已发送结束,当触发 信号的持续时间大于等于0.17微秒且小于0.92微秒时,多路收/发控制逻 辑电路就确定报文确已发送结束。
本发明有以下积极有益效果
本方法采用检测端口外端PROFIBUS信号线电平由释放状态转到发 送状态,从而判定该端口接收到PROFIBUS报文启始信号。因而在高波 特率传输条件下会造成信号发送的延误而产生PROFIBUS波形损失。
本方法通过判定触发信号的持续时间来确定报文是否确已发送结束, 因而不用解析报文字符,硬件开销小、速度快;不需对波特率逐次试探测 试、不需要检测时间;是一种快速、波特率自适应的报文数据流判别方法, 检测原理基于PROFIBUS纯物理层,不涉及上层协议,可适用于所有基 于RS-485的PROFIBUS应用层协议,包括PROFIBUS-DP/V0、 VI、 V2,及各种应用行规,包括PROFIsafe (安全),Redundancy (冗余)。 等等,也部分适用于其它RS-485传输技术的现场总线或网络,如 MODBUS。
图1是采用多端口 PROFIBUS集线器实现的混合型组网结构。 图2是多端口 PROFIBUS集线器电路硬件方框图。
图3是图2的电路原理图。
图4是多端口 PROFIBUS集线器的工作过程状态转换图。 图5是PROFIBUS报文字符格式的示意图。 图6是PROFIBUS总线开始接收报文信号的示意图。 图7是PROFIBUS总线发送报文结束信号的示意图。
具体实施例方式
请参照图1: PROFIBUS组网中采用PROFIBUS集线器可以方便实 现树形及混合型结构。
PROFIBUS集线器可以有多个端口,下面以六端口为例,说明 PROFIBUS集线器的硬件组成,请参照图2、图3,六端口 PROFIBUS集 线器由六个总线通道、复位电路、多路收/发控制逻辑电路组成,六个通道 分别是一号、二号、三号、四号、五号、六号总线通道。
一号通道由PROFIBUS的端口Dl、 RS —485驱动及隔离电路U1、检测 及隔离电路N1组成。
二号通道由PROFIBUS的端口D2、 RS — 485驱动及隔离电路U2、检测 及隔离电路N2组成。
三号通道由PROFIBUS的端口D3、 RS — 485驱动及隔离电路U3、检测 及隔离电路N3组成。
四号通道由PROFIBUS的端口D4、 RS — 485驱动及隔离电路U4、检测 及隔离电路N4组成。
五号通道由PROFIBUS的端口D5、 RS —485驱动及隔离电路U5、检测 及隔离电路N5组成。
六号通道由PROFIBUS的端口D6、 RS —485驱动及隔离电路U6、检测 及隔离电路N6组成。
每个检测及隔离电路由比较器芯片、放大器芯片、反相器芯片、光隔 芯片组成。
多路收/发控制逻辑电路U7由复杂可编程逻辑器件(CPLD)组成,多 路收/发控制逻辑电路U7的有六组收/发控制端。每组收/发控制端由五个通 用I/0端口组成,各组收/发控制端中的五个通用i/o端口都经过程序编程被 定义为发送端、接收端、发送允许端、接收允许端与触发信号端。
六个通道中的RS — 485驱动及隔离电路的发送端、接收端、发送允许 端、接收允许端,分别与多路收/发控制逻辑电路U7中的六组收/发控制端 中的发送端、接收端、发送允许端、接收允许端一一对应相连。
例如,多路收/发控制逻辑电路U7的第一组收发控制端的五个通用I/0 端口经过程序编程被定义为发送端TXD1、接收端RXD1、发送允许端 RST1、接收允许端REN1与触发信号端CMP1。 一号通道中的RS — 485驱
动及隔离电路U1的发送端D、接收端R、发送允许端DE、接收允许端RE 分别与多路收/发控制逻辑电路U7中的第一组收/发控制端中的发送端 TXD1、接收端RXD1、发送允许端RST1、接收允许端REN1——对应相连。
请参照图3、图4,六端口PROFIBUS集线器由多路收/发控制逻辑电路 U7 (CPLD)中的程序自动完成收/发控制。收/发控制整个流程包括四个 状态,即上电复位状态T1,接收状态S1、接收转发状态S2、关闭发送状态 S3。其中接收状态S1、接收转发状态S2、关闭发送状态S3构成了一个闭环 的循环过程。
下面详述多端口 PROFIBUS集线器的工作过程
① 上电复位状态T1:复位电路对多路收/发控制逻辑电路U7进行复 位后,所有通道进入接收状态S1;
② 接收状态S1:所有通道处于接收状态,各通道的检测及隔离电路 随时检测PROFIBUS通信线路是否有数据信号传送。任意端口一旦检测 到PROFIBUS信号传送,立即进入接收转发状态S2。
③ 接收转发状态S2:当某一端口 (Dl — D6)—旦接收到PROFIBUS 通信信号,多路收/发控制逻辑电路U7立即控制其余端口进入发送状态, 将该端口接收到的PROFIBUS信号通过其它所有端口发送出去。当该通 道的检测及隔离电路检测到PROFIBUS报文发送结束后,立即进入关闭 发送状态S3。
关闭发送状态S3:当多路收/发控制逻辑电路U7接收到该通道检 测电路检测到的PROFIBUS报文发送结束信号,将其他端口由发送状态 切换到接收状态,集线器回到接收状态S1。
RS-485驱动及隔离电路采用单双工差动输出(A 、 B) , NRZ (不归 零)比特编码;由发送允许端DE控制发送、由接收允许端RE控制接收。 当RE-0,且DE-0时,RS-485驱动及隔离电路处于接收状态,此时其单 双工差动输出(A、 B)为高阻,也称释放状态。当RE-1,且DE-1时, RS-485驱动及隔离电路处于发送状态。此时,RS-485驱动及隔离电路将 发送端信号转换成PROFIBUS/485电平和NRZ编码,再通过A、 B输出。
PROFIBUS/485网络不允许有一个以上站点同时发送数据。为此, PROFIBUS协议规定主站与从站之间采用主/从通信方式、主站与主站之 间采用令牌控制,以保证总线控制的正确性。因此,多端口 PROFIBUS 集线器控制要求就是当任意的一个端口接收到报文信号,立即通过其他 端口,无延时地将报文转发出去。
无论是中继器、集线器、还是其它多端口网络设备,要实现多端口 PROFIBUS数据流控制,就要解决以下两项关键技术
关键技术1:任意通道检测到PROFIBUS接收报文应立即打开其它通 道将报文转发出去。
关键技术2:检测接收报文结束时刻并及时关闭其它发送通道。
下面分别详细阐述
关键技术1:任意通道检测到PROFIBUS接收报文应立即打开其它通
道将报文转发出去。
首先是要能够检测到接收PROFIBUS报文启始时刻。现有技术的方 法是检测RS-485驱动及隔离电路U1、 U2、 U3、 U4、 U5、 U6的信号接收 端RXD1、 RXD2、 RXD3、 RXD4、 RXD5、 RXD6的下降沿,来确定本端 口 PROFIBUS总线上接收报文信号。该方法依据的原理是RS-485驱动 及隔离电路Ul、 U2、 U3、 U4 、 U5、 U6的接收端RXD1、 RXD2、 RXD3、 RXD4、 RXD5、 RXD6已将PROFIBUS信号(A1陽B1、 A2-B2、 A3誦B3、 A4-B4、 A5-B5、 A6-B6)转换成异步串行通信接口信号。请参照图5, PROFIBUS报文异步串行通信数据格式是1启始位+8数据位+偶校验+l 停止位。无报文时RXD1 — RXD6为"1"电平,启始位为"0"电平。当RXD1 一RXD6中任意一个检测到有下降沿(由"1"变"0")时说明该端口接收到 PROFIBUS报文启始位。
此方法的缺点是以端口 D1为例,由于RS-485驱动及隔离电路U2-U6 打开发送有延时,因此RTS2、 RTS3、 RTS4、 RTS5、 RTS6发送允许信 号必须超前报文发送信号TXD2、 TXD3、 TXD4、 TXD5、 TXD6。因此, 当RXD1检测到启始位为"0"电平,再依此信号打开U2、 U3、 U4、 U5、 U6发送允许RTS2、 RTS3、 RTS4、 RXD5、 RXD6为时已晚。尤其是在高 波特率传输条件下会造成U2、 U3、 U4、 U5、 U6对TXD2、 TXD3、 TXD4、 TXD5、 TXD6信号发送的延误而产生PROFIBUS波形损失。
本发明采用方法是请参照图3、图6,检测端口外端PROFIBUS信 号线电平(A1-B1、 A2-B2、 A3-B3、 A4國B4、 A5-B5、 A6-B6),当某一端 口 (以端口 Dl为例)PROFIBUS信号线A1、 Bl电平由释放状态转到发 送状态,即判定端口 Dl接收到PROFIBUS报文启始信号,并依此信号打 开U2-U6的发送允许端RTS2-RTS6。直接检测PROFIBUS信号线电平可 及时打开其他端口发送,这对高波特率(如12M bit/s)数据传输十分重要。
关键技术2:检测接收报文结束时刻并及时关闭其它发送通道。
根据PROFIBUS标准,当PROFIBUS总线上发送站点发送完毕后, 所有站点将回到接收状态,这种总线释放状态最短时只延续llbits时间, 该时间称为Tsdr。 Tsdr之后其它站点就会向PROFIBUS总线发送数据。 对多端口设备来说(如PROFIBUS集线器),在某一端口 (如端口 Dl) 接收报文最后一个bit结束后,在Tsdr时间之内必须将所有端口 (Dl正 在接收状态,D2-D6正在发送状态)全部恢复到接收状态。
如果是12M波特率,Tsdr (12M) =11 (bit) / 12M (bit/s)=0.92 微秒;
如果是9.6K波特率,Tsdr(9.6K)= ll(bit) / 9.6K (bit / s)= 1145.83
微秒;
如何检测与识别接收到的报文结束字符的最后一个bit 现有技术采 用的方法是解析报文字符,截取报文中报文长度字段、并结合识别报文结 束符的方法来判断报文的结束。这种方法的缺点是
需要设计波特率自适应的PROFIBUS接收通道(一种高速异步串行 通信接口),最高波特率高达12Mbit/s,为此硬件设计复杂、开销大。
解析报文涉及到网络链路层协议,因此这种方法与协议有关,不适应 其它RS-485网络。PROFIBUS报文长短不一,结束符与报文中的数据多 有重合,报文解析方法设计复杂,延时长。
本发明采用方法是不解析报文,而是通过检测PROFIBUS总线释 放状态来确定PROFIBUS报文结束。详细原理叙述如下请参见图7, PROFIBUS标准规定PROFIBUS总线电平有三种状态发送"l"状态、 发送"0"状态、释放状态(也就是全线/段站点处在接收状态)。其中发送"l" 状态和发送"0"状态统称为发送状态。注意PROFIBUS总线采用NRZ (不归零)编码。PROFIBUS标准规定站点发送报文结束后应立即将发 送关闭,PROFIBUS全线处于释放状态。因此当检测及隔离电路检测到 PROFIBUS总线处于释放状态电平,可能是
① 报文发送完毕,或者
② 由发送"1"向发送"0"转变的过渡中经过释放状态电平,或者
③ 由发送"0"向发送"l"转变的过渡中经过释放状态电平。 由于发送电平转换("0" — "1"、 "l"一"0")很陡,上述②③两种可能
状态都是非常短暂的。因此当某一通道在接收到的PROFIBUS报文中检 测到一个释放状态并持续足够长时间Td,则说明报文结束,应立即关闭 所有发送端,转换成接收状态。这个持续时间Td应大于2Tbit时间,在 12M波特率时,Td (2bits) =0.17微秒,因此取TdX).17微秒。
持续时间Td必须小于Tsdr,对不同波特率来说有Td < 11 bits时 间;如果要做到波特率自适应,应按照最小Td,即最大波特率12M时考 虑在12M波特率时Td (llbits) =0.92微秒,因此取Td<0.92微秒。
本发明是一种基于PROFIBUS报文快速识别的多端口控制方法,包 括以下步骤
步骤①上电复位电路上电,复位电路对多路收/发控制逻辑电路 U7发复位信号,将多路收/发控制逻辑电路U7的各个发送允许端RTS1、 RTS2、 RTS3、 RTS4、 RTS5、 RTS6置为0,同时将多路收/发控制逻辑电 路U7的各个接收允许端REN1、 REN2、 REN3、 REN4、 REN5、 REN6 置为0,使所有通道处在接收状态;
步骤②各通道的检测及隔离电路Nl、 N2、 N3、 N4、 N5、 N6检测 相应端口D1、 D2、 D3、 D4、 D5、 D6的PROFIBUS信号线电平;等待出 现报文启始信号。
步骤(D:当某一通道的检测及隔离电路检测到该端口出现报文启始 信号,该检测及隔离电路立即向多路收/发控制逻辑电路U7发送第一波触 发信号;检测及隔离电路是通过如下方式检测该端口出现报文启始信号:
检测及隔离电路检测端口外端PROFIBUS信号线电平,当某一端口的 PROFIBUS信号线电平由释放状态转到发送状态,即可判定该端口接收到 PROFIBUS报文启始信号。例如一号通道的端口 Dl的信号线Al、 Bl电 平由释放状态转为发送状态,则该通道的检测及隔离电路N1即可判定该 端口接收到报文启始信号,该检测及隔离电路Nl立即向多路收/发控制逻 辑电路U7的触发端发送第一波触发信号CMP1;
步骤④多路收/发控制逻辑电路U7收到第一波触发信号后,立即将 其余通道的发送允许端置l,接收允许端置l,即将RTS2、 RTS3、 RTS4、 RTS5、 RTS6-1,将REN2、 REN3、 REN4、 REN5、 REN6=1;使其余通 道处于发送状态;同时,多路收/发控制逻辑电路U7将信号接收端RXDl 接收到的报文信号转换成发送报文信号,通过信号发送端TXD2、 TXD3、 TXD4、 TXD5、 TXD6发送给其余通道的驱动及隔离电路U2、 U3、 U4、 U5、 U6,其余通道驱动及隔离电路U2、 U3、 U4、 U 5、 U6再将发送报文 信号(A2-B2、 A3-B3、 A4-B4、 A5-B5、 A6-B6)输送到各自端口D2、 D3、 D4、 D5、 D6上;
步骤⑤上述步骤③中的检测及隔离电路Nl在发送完第一波触发信
号后,继续检测该端口 Dl接收到的报文信号,每当检测及隔离电路Nl 检测到端口 Dl的信号线的电平由发送状态转变为释放状态,检测及隔离 电路Nl都要向可多路收/发控制逻辑电路U7的触发端CPM1发送第二波 触发信号;
步骤⑥多路收/发控制逻辑电路U7每当收到一个第二波触发信号后, 都通过判定触发信号的持续时间以确定报文是否确已发送结束,只有当触 发信号的持续时间Td大于等于0.17微秒且小于0.92微秒,多路收/发控 制逻辑电路U7即可确定报文确已发送结束。
以端口 Dl为例,多路收/发控制逻辑电路U7的触发端CPM1收到第 二波触发信号,经持续时间Td以确认端口 Dl的信号线Bl、 Al上报文发 送确已结束,多路收/发控制逻辑电路U7立即将与其余端口对应的发送允 许端置0,接收允许端置0,即将RTS2、 RTS3、 RTS4、 RTS5、 RTS6=0, REN2、 REN3、 REN4、 REN5、 REN6-0;关闭其余通道,使它们回到接 收状态;这时,所有通道均回到接收状态;
步骤⑦返回步骤②,等待下一次某一端口出现报文启始信号。
权利要求
1.一种基于PROFIBUS报文快速识别的多端口控制方法,包括以下步骤其特征是步骤①上电复位电路上电,复位电路对多路收/发控制逻辑电路发复位信号,将多路收/发控制逻辑电路的各个发送允许端置为0,同时将多路收/发控制逻辑电路的各个接收允许端置为0,使所有通道处在接收状态;步骤②各通道的检测及隔离电路检测相应端口的信号线电平,等待出现报文启始信号;步骤③当某一通道的检测及隔离电路检测到该端口出现报文启始信号,该检测及隔离电路立即向多路收/发控制逻辑电路发送第一波触发信号;步骤④多路收/发控制逻辑电路收到第一波触发信号后,立即将其余通道的发送允许端置1,接收允许端置1,使其余通道处于发送状态,同时,多路收/发控制逻辑电路将接收端接收到的报文信号转换成发送报文信号,通过发送端发送给其余通道的驱动及隔离电路,其余通道的驱动及隔离电路再将发送报文信号输送到各自端口中;步骤⑤上述步骤③中的检测及隔离电路在发送完第一波触发信号后,继续检测该端口接收到的报文信号,每当检测及隔离电路检测到端口的信号线的电平由发送状态转变为释放状态,检测及隔离电路都要向多路收/发控制逻辑电路的触发端发送第二波触发信号;步骤⑥当多路收/发控制逻辑电路收到第二波触发信号并确认该端口信号线上报文确已发送结束,多路收/发控制逻辑电路立即将其余通道的发送允许端置0,接收允许端置0,关闭其余通道的驱动及隔离电路,使它们回到接收状态,这时,所有通道均回到接收状态;步骤⑦返回步骤②。
2. 如权利要求1所述的基于PROFIBUS报文快速识别的多端口控制 方法,其特征是所述步骤③中,检测及隔离电路是通过如下方式检测该 端口出现报文启始信号检测及隔离电路检测端口外端PROFIBUS信号 线电平,当某一端口的PROFIBUS信号线电平由释放状态转到发送状态, 即可判定该端口接收到PROFIBUS报文启始信号。
3. 如权利要求1所述的基于PROFIBUS报文快速识别的多端口控制 方法,其特征是所述步骤⑥中多路收/发控制逻辑电路每当收到第二波 触发信号后,都要通过判定触发信号的持续时间来确定报文是否确已发送 结束,当触发信号的持续时间大于等于0.17微秒且小于0.92微秒时,多 路收/发控制逻辑电路就确定报文确巳发送结束。
全文摘要
一种基于PROFIBUS报文快速识别的多端口控制方法,包括步骤①上电复位;步骤②检测及隔离电路检测端口信号电平;步骤③检测及隔离电路检测端口PROFIBUS信号电平,当信号电平由释放状态转到发送状态即可判定该端口收到报文启始信号;步骤④多路收/发控制逻辑电路使其余端口处于发送状态;并将接收报文转成发送报文信号,经驱动及隔离电路输出到其余端口;步骤⑤当检测及隔离电路检测到信号电平由发送状态转变为释放状态,则发送第二波触发信号;步骤⑥多路收/发控制逻辑电路通过判定第二波触发信号的持续时间以确定报文发送结束,并关闭其余端口;步骤⑦返回步骤②。本方法不用解析报文,不需对波特率测试,是一种快速、波特率自适应的报文数据流判别方法。
文档编号H04L12/56GK101374115SQ200810223199
公开日2009年2月25日 申请日期2008年9月28日 优先权日2008年9月28日
发明者唐济扬 申请人:北京鼎实创新科技有限公司