现场总线协议转换硬件架构设计*

2022-04-19 10:49王雪迪时广轶
电子技术应用 2022年4期
关键词:总线控制器错误

王雪迪,王 博,时广轶,严 伟

(北京大学 软件与微电子学院,北京 102627)

0 引言

现场总线是20 世纪80 年代中期发展起来的通信、控制技术,带给20 世纪90 年代的工业控制领域一场革命。与其他工业领域的网络相比,现场总线采用串行通信方式,具有稳定性高、布网简单、设备开发周期快等优点,迅速发展成为工业控制领域内应用最广泛的通信网络。

自现场总线出现以来,工业控制领域出现了多种现场总线标准,这些标准在出现之初都曾被广泛应用过,它们在不同的方面占据优势。随着工业应用场景的变化其他新型总线标准不断出现。目前业内大约存在着40种现场总线标准,但绝大部分的市场份额被少数几种总线标准占据。

目前现场总线出现的这种多种标准并存的现象,一方面是受到商业利益的驱使[1],另一方面还存在客观上的原因。新应用场景、新技术层出不穷,至今仍没有一种现存的现场总线能够满足所有应用要求,用户不得不根据自己的需要选择不同的总线设备。不同现场总线网络间不可互相通信,所以多种总线标准并存势必会大大降低系统的组态性和灵活性,增加系统的后续改造升级难度。由此可见,提出实现一种不同现场总线间的协议转换架构,是一个具有较高使用价值的研究内容,解决工业领域不同设备不同总线协议之间的通信问题,降低开发、组网成本。

国内对协议转换的研究与开发仍主要集中在现场总线网关的开发,且大多采用通用嵌入式处理器实现,协议转换的实时性和确定性较差。戈瑞[2]实现了一种MODBUS 总线与CAN 总线的一对一的转换器设计,包括两种总线协议数据的转换和地址的互相寻址。转换方案的硬件平台采用DSP 和CAN 总线控制器实现,PC 作为MODBUS 主站,另一个DSP 和51 单片机以及CAN 控制器作为两个CAN 节点。DSP 芯片集成了CAN 总线控制器。庄乾成等[3]实现了以太网与现场总线CAN 协议的转换,文献中提到的协议转换方案,是将CAN 总线帧中的数据或者以太网帧中的数据提取出来,再封装进目的协议帧中,没有对网络中的地址、错误处理等部分进行转换。胥军等[4]通过嵌入式的方式,采用ASPC2 专用PROFIBUS-DP 芯片实现了从PROFIBUS-DP 主站到MODBUS 从站的单向协议转换。其中协议数据转换方式是将MODBUS 的ADU 数据作为PROFIBUS-DP 数据链路层的DU 域从PROFIBUS-DP 发给转换器,转换器再将DU 中的数据ADU 取走发给MODBUS 从站,仅实现了协议数据的转换。LOU GUOHUAN 等[5]进行了PROFIBUS和CAN 协议之间的转换,建立了统一的报文格式和地址编址。硬件平台采用ARM9 单片机S3C2410 作为主控芯片,使用Linux 操作系统。文献中对PROFIBUS 和CAN协议之间的转换做了较为详细的阐述,但是采用嵌入式操作系统,协议转换的实时性较差,且没有对协议的错误处理进行转换。RONG YIN 等[6]进行了统一的协议数据处理,统一的数据帧中包括了da、sa、pr、fc 和df 共五段。设计了消息缓冲机制。一旦应用层需要读取现场设备的状态数据,就向网关发送读取命令消息。硬件平台采用ARM11 微处理器s3c6410 为核心,采用嵌入式的处理方式,实现协议数据转换。

综合以上国内外研究现状,目前对于协议转换工作的研究,大多只对协议数据做重新封装,将协议数据放入目的协议帧中进行转发,部分研究进行了较深入的协议转换,编制了统一的地址,定义了统一的报文格式。但绝大多数的研究工作都没有对协议的错误处理错误响应机制进行转换,协议的错误处理错误响应机制在协议组成中是至关重要的一部分,它能保证总线网络的正常运行以及总线突发情况的正确及时处理,能够极大地保障网络的稳定性,所以对协议的错误处理错误响应机制的转换,是协议转换工作中重要的组成部分。其次绝大多数的研究工作采用的是嵌入式的处理方式,即由总线控制模块和通用处理器组成,采用嵌入式软件或基于Linux 操作系统的软件平台进行协议转换,受限于通用处理器的通用架构和中断处理等机制,以及操作系统的调度机制,总线协议帧接收以及转换时间较长且不确定,协议转换实时性较差,不能满足工业4.0 对于通信实时性和确定性的要求。

1 协议转换原理设计

1.1 协议转换拓扑结构

本协议转换方案支持三种协议的相互转换,支持三种网络拓扑结构:MODBUS 总线网络、CAN 总线网络、HART 总线网络。三种网络拓扑结构有所不同。

1.1.1 MODBUS 总线网络拓扑结构

当整个网络工作在MODBUS 总线网络中时,网络的拓扑结构如图1 所示。

图1 MODBUS 总线网络拓扑图

整个网络中只有1 个MODBUS 主设备,MODBUS 从设备以及CAN 节点设备、HART 从站,均是MODBUS 总线网络的从设备。协议转换器和其他MODBUS 从设备相同,通过MODBUS 物理层电路接入MODBUS 总线网络中。协议转换器通过CAN 总线的控制器和收发器与CAN 总线网络连接;通过HART 总线的控制器和物理层电路与HART 总线网络连接。

MODBUS 主设备可寻址网络中的MODBUS 从设备以及CAN 节点设备、HART 从站设备。网络中的CAN 节点设备、HART 从站设备转接到MODBUS 总线网络时,只作为MODBUS 主设备的从站,可将MODBUS 主站请求的数据通过转换器传输到MODBUS 总线网络中。其中CAN 节点设备转接到MODBUS 总线网络时,CAN 节点设备不可向其他CAN 节点和MODBUS 设备、HART 从站发送遥控帧请求数据;HART 从站设备转接到MODBUS 总线网络时,不可向其他HART 从站和CAN 节点、MODBUS从设备发送命令帧请求数据。

1.1.2 CAN 总线网络拓扑结构

当整个网络工作在CAN 总线网络中时,网络的拓扑结构如图2 所示。

图2 CAN 总线网络拓扑图

协议转换器和其他CAN 节点设备相同,通过CAN 收发器电路接入CAN 总线网络中。协议转换器通过MODBUS 控制器和物理层电路与MODBUS 总线网络连接;通过HART 总线的控制器和物理层电路与HART 总线网络连接。

CAN 总线网络中的CAN 节点设备,可向MODBUS 从设备和HART 从站发送遥控帧请求数据。网络中的MODBUS 从设备、HART 从站设备转接到CAN 总线网络时,只作为CAN 总线网络中的节点,不可发送遥控帧请求数据,可发送数据帧和错误帧等其他帧类型。其中MODBUS从设备转接到CAN 总线网络时,MODBUS 从设备不可向其他MODBUS 设备发送MODBUS 命令请求数据;HART从站设备转接到CAN 总线网络时,不可向其他HART 从站和发送命令帧请求数据。

1.1.3 HART 总线网络拓扑结构

当整个网络工作在HART 总线网络中时,网络的拓扑结构如图3 所示。

图3 HART 总线网络拓扑图

整个网络中只有1 个HART 主站、1 个HART 第二主站,MODBUS 从设备以及CAN 节点设备均是HART 总线网络的从站。协议转换器和其他HART 从站相同,通过HART 物理层电路接入HART 总线网络中。协议转换器通过CAN 总线的控制器和收发器与CAN 总线网络连接;通过MODBUS 总线的控制器和物理层电路与MODBUS总线网络连接。

HART 主站可寻址网络中的HART 从站以及CAN节点设备、MODBUS 从设备。网络中的CAN 节点设备、MODBUS 从设备转接到HART 总线网络时,只作为HART网络的从站,可将HART 主站请求的数据通过转换器传输到HART 总线网络中。其中CAN 节点设备转接到HART 总线网络时,CAN 节点设备不可向其他CAN 节点和MODBUS 设备、HART 从站发送遥控帧请求数据;MODBUS 从设备转接到HART 总线网络时,不可向其他HART 从站和CAN 节点、MODBUS 从设备发送命令帧请求数据。

1.2 地址转换

1.2.1 MODBUS 总线网络

当协议转换器工作在MODBUS 总线网络时,则要求给每个CAN 节点设备和HART 从设备分配一个8 位地址,且符合MODBUS 总线协议地址要求。对于HART 设备,要求使用长地址,且每个长地址对应一个MODBUS总线地址,此MODBUS 总线地址在整个MODBUS 总线网络中唯一。对于CAN 设备,需要找到每个CAN 设备独特的ID 号,独特的ID 号表示只有本CAN 节点设备可接收的ID 帧数据,其他CAN 设备不能接收此ID 帧数据,如果CAN 总线设备没有独特的ID 号,则需要创建一个独特的ID 号,专门用来被MODBUS 主设备寻址,然后将此ID 号对应为一个MODBUS 总线地址。

1.2.2 CAN 总线网络

CAN 设备没有主从之分,而是通过总线帧中的仲裁段ID 进行仲裁,以获取总线发送权。CAN 节点通过发送遥控帧请求其他节点数据,数据帧的优先级要高于遥控帧。

当协议转换器工作在CAN 总线网络时,应为每个MODBUS 从设备和HART 从站分配一个固定的CAN ID号,同时规定这些ID 号只能用来寻址MODBUS 从设备和HART 从站,其他CAN 节点不能回复此ID 帧数据,保证只有一个MODBUS 从设备或HART 从站回复此ID的协议帧。要求HART 采取长地址,也就是唯一地址,每一个长地址对应一个CAN ID。

1.2.3 HART 总线网络

当协议转换器工作在HART 网络时,则要求HART网络使用长地址模式,由于HART 设备的长地址是设备厂商出场时所附有的唯一地址,因此本转换模块工作的HART 总线网络中MODBUS 总线和CAN 总线设备的地址为虚拟HART 长地址,仅满足在本HART 网络内唯一即可。对于网络中的MODBUS 设备,需要将每个MODBUS 设备的地址对应为一个HART 长地址;对于网络中的CAN 设备,需要将每个CAN 设备独特的ID 号对应为一个HART 长地址。

1.3 协议帧转换

本部分定义一种统一的数据帧结构,协议转换模块将接收到的各协议数据转换为统一的数据帧格式进行缓存,然后再将缓存的统一数据帧转换为目标协议的帧格式发送出去。两种协议帧之间的转换,可以采用一对一的转换方式,但这样做的缺点在于每增加一种新的总线形式都需要针对其他总线类型进行新的转换设计,扩展性和兼容性较差。所以本方案定义一种统一的数据帧格式,增加新的协议帧不需要再针对其他协议进行转换设计,只需要将新的协议帧转换为统一的数据帧格式。

统一的数据帧结构如图4 所示。

图4 数据帧结构图

SAddr 代表源地址,DAddr 代表目的地址,Length 代表Data 字段长度,即字节数量;Timer_a 和Timer_b 用来存放时间戳信息,Type 表示原协议帧类型,Data 字段表示协议帧数据。

SAddr 和DAddr,如果原协议帧是CAN 总线协议帧,那么SAddr 和DAddr 均为CAN 协议帧中的ID 号;如果原协议帧是MODBUS 总线和HART 总线协议帧,那么SAddr 是发送协议帧的设备地址,DAddr 是目的地址。

Length,表示Data 字段的字节数量,长度为1 B。

Timer_a 和Timer_b,字段长度均为1 B,用于应用层对链路层协议帧的实时性进行控制,为了保证通信的实时性,应在应用层设计监听程序,对所有的数据请求、数据交换进行监听与调度,利用此字段进行时间约束。

Type,字段长度为1 B,表示原协议帧类型。

Data 为数据字段。如果原协议帧是MODBUS 总线协议帧,需要将MODBUS 总线协议帧的功能码、数据段填入此Data 段。如果原协议帧是HART 总线协议帧,需要将HART 协议帧的命令字段、数据段填入此Data 段。如果原协议帧是CAN 总线协议帧,需要将CAN 协议帧的数据段填入此Data 段。

1.4 错误通知转换

1.4.1 协议转换器工作在CAN 网络状态

当网络工作在CAN 总线网络时,一方面需要将MODBUS 从设备和HART 从站的错误响应转换为CAN总线的错误响应,另一方面,协议转换器作为发送设备应发出错误通知和作为接收设备检测总线错误。

当CAN 总线设备发送遥控帧,请求MODBUS 从设备和HART 从站数据时,如果发送遥控帧的CAN 设备产生了位错误、格式错误,转换模块中的CAN 控制器在接收到此类错误时,不会将错误的遥控帧转换后发给MODBUS 从设备和HART 从站,同时按照CAN 协议规范向总线发送错误通知。如果转换模块接收到遥控帧,检测到总线上的遥控帧的填充错误或CRC 错误,转换模块的CAN 控制器产生错误通知,不会将错误的遥控帧转换后发给MODBUS 从设备和HART 从站。如果CAN设备的遥控帧成功发送给MODBUS 从设备和HART 从站后,MODBUS 从设备和HART 从站回复错误响应给转换模块,转换模块将不会向CAN 设备发出错误帧,这是由于CAN 协议的错误通知均是在协议帧正在发送过程中进行上报,转换模块成功接收遥控帧后,不能再上报CAN 协议错误通知。

如果MODBUS 从设备和HART 从站回复校验错误,或HART 设备回复组帧错误,那么转换模块将再次发送命令帧给MODBUS/HART 设备回复,并设定最大重复次数;如果MODBUS 从设备和HART 从站回复地址错误,或MODBUS 设备回复非法功能错误等其他应用层错误,那么转换模块将错误响应帧转换为CAN 协议的ACK帧,将错误信息放入data 字段,回复给CAN 设备。

如果CAN 设备的遥控帧成功发送给MODBUS 从设备和HART 从站后,MODBUS 从设备和HART 从站回复正确的响应帧,转换模块将响应帧进行转换后发送至CAN 总线上,如在发送过程中产生位错误、格式错误、ACK 错误,转换模块将按照CAN 协议要求进行错误通知与重发操作,如果CAN 接收设备检测到响应帧的填充错误、格式错误、CRC 错误,转换模块在检测到错误通知后进行错误响应与重发操作。

1.4.2 协议转换器工作在MODBUS 网络状态

当协议转换器工作在MODBUS 总线网络时,需要将CAN 节点和HART 从站的错误响应转换为MODBUS 总线的异常响应。当MODBUS 主站发送的命令帧请求CAN 节点和HART 从站回复时,如果转换模块接收到的命令帧CRC 校验错误或奇偶校验错误时,转换模块不会将此帧数据转换后发送至CAN 节点和HART 从站,同时转换模块回复异常响应PDU 至MODBUS 主站设备。

如果转换模块接收到正确的MODBUS 主站命令PDU,转换模块将命令PDU 转换后发送至CAN 节点和HART 从站,CAN 节点和HART 从站将响应帧发送至转换模块的过程中产生的链路层错误,按照相应协议要求,在CAN 节点和HART 从站和转换模块之间进行错误响应与错误处理,不会将错误通知发送到MODBUS 网络中;CAN 节点和HART 从站将响应帧发送至转换模块的过程中产生的应用层错误,转换模块将错误码转换成MODBUS 协议中规定的错误代码,回复异常响应PDU 至MODBUS 主站。

1.4.3 协议转换器工作在HART 网络状态

当协议转换器工作在HART 总线网络时,需要将CAN节点和MODBUS 从设备的错误响应转换为HART 总线的错误响应。当HART 主站发送的命令帧请求CAN 节点和MODBUS 从设备回复时,如果转换模块接收到的命令帧奇偶校验错误,转换模块不会将此帧数据转换后发送至CAN 节点和MODBUS 从设备,同时转换模块回复异常响应帧至HART 主站设备。

如果转换模块接收到正确的HART 主站命令PDU,转换模块将命令PDU 转换后发送至CAN 节点和MODBUS从设备,CAN 节点和MODBUS 从设备将响应帧发送至转换模块的过程中产生的链路层错误,按照相应协议要求,在CAN 节点和MODBUS 从设备和转换模块之间进行错误响应与错误处理,不会将错误通知发送到HART网络中;CAN 节点和MODBUS 从设备将响应帧发送至转换模块的过程中产生的应用层错误,转换模块将错误码转换成HART 协议中规定的错误代码,回复错误响应PDU 至HART 主 站。

1.5 总线速度匹配

本部分主要解决两个传输速率差距较大的总线网络之间的通信问题。当传输速率高的总线网络向速率低的网络发送命令请求数据时,此时两个网络传输速率差距较大,应答设备通过速率较低的网络接收和发送应答帧,发出命令的设备可能会出现等待应答超时的错误。

当网络工作在HART 网络状态时,由于HART 网络传输速率最低,传输速率为1 200 b/s,HART 主站向CAN节点和MODBUS 从设备发送命令时,不会出现等待超时的错误。

当网络工作在MODBUS 网络状态时,传输速率可选较低的9 600 b/s。MODBUS 主设备向CAN 节点设备发送命令时,由于CAN 总线的传输速率最高可达1 Mb/s,因此不会出现等待超时错误;MODBUS 主设备向HART 从站发送命令时,经计算,即使HART 网络的传输速率为9 600 b/s,也能满足MODBUS 总线协议要求的应答间隔低于3.5 个字符时间,所以不会出现等待超时错误。

当网络工作在CAN 网络状态,如果CAN 网络的传输速率是最高的1 Mb/s,则与其他两种总线传输速率差距很大,但是由于CAN 总线协议只规定了链路层传输规范,没有定义应答超时的错误机制。为解决此状态下的总线速度不匹配问题,可采取以下两种方式:(1)在CAN 网络上定义的应用层,其应答间隔定义时长能满足总线速度差异产生的传输间隔。采用这种方式,缺点是整个网络的通信效率较低,浪费了CAN 网络的传输带宽;优点是开发难度较小。(2)采取异步数据缓存的方法。在总线网络空闲阶段,转换模块不断向HART/MODBUS 设备请求关键数据,转换模块将此数据预存到缓冲区内,并不断刷新,当CAN 设备请求HART/MODBUS设备的数据时,可将缓冲区内预存的数据回复给CAN 设备。采用这种方式,优点是能够及时响应CAN 设备的请求,传输效率高,缺点是请求的数据类型受限,这是由于在总线空闲期间,转换模块不断向HART/MODBUS 设备请求的数据,并不能覆盖所有的设备数据类型,如果不断请求所有的设备数据类型,会占用较大的缓冲区空间。

2 协议转换硬件架构设计

协议转换的硬件架构设计图5 所示。

图5 现场总线协议转换硬件架构图

协议转换部分共包括rec_buffer、tran_buffer、addr_conver、frame_conver、error_conver、discriminator 共6 个模块;filedbus_controller 模块是三种总线控制器模块;apb_reg和intr 模块为本硬件架构的配置模块。

2.1 filedbus_controller 模块

此模块中集成了3 种总线协议控制器,用来接收来自总线物理层的协议串行数据。当filedbus_controller 模块接收到总线物理层上的数据,需要将物理层的串行数据转化为字节数据,并将字节数据存入到rec_buffer 中。其中MODBUS 总线协议帧输出地址域、功能码和数据字段,不输出CRC 校验字段;CAN 总线协议帧输出仲裁段的11 bit CAN ID、控制端的4 bit DLC(数据长度)和数据段;HART 总线协议帧输出定界符、地址段、扩展字段、DLL 载荷段(command、octet count、data)。

2.2 缓存模块

rec_buffer 模块、tran_buffer 模块完成的是总线协议帧的缓存工作,2 个缓存模块均采用异步FIFO 实现,FIFO宽度是1 B,深度为256 B,之所以将FIFO 深度设计为256 B,是因为三种协议帧帧长最长是256 B,而CAN 总线协议和HART 总线协议的协议帧中均有数据长度或者帧长度字段,所以需要预先缓存整个协议帧,才能获得实际的数据长度或者帧长度。rec_buffer 模块缓存接收到的上游原始协议帧数据,tran_buffer 模块缓存协议转换后的协议帧数据。

2.3 addr_conver 模块

此模块主要完成的是协议转换中的协议地址转换工作。模块内含有一个地址映射表,此地址映射表中含有原协议网络地址和目标协议网络地址的映射关系,表格可通过外部总线维护。

映射表中的每一项的前半部分是原协议帧的地址,后半部分是目标协议地址。由于不同的协议转换,其原协议帧地址和目标协议地址长度均不相同,因此,需要根据转换判断模块输出的指示信号,进行地址转换查找。

2.4 frame_conver 模块

frame_conver 模块原理图如图6 所示,模块内含有6个不同的转换电路模块,根据选择信号,来判断原协议帧将进入哪个转换电路模块。选择信号由4 bit 位宽的信号组成,高2 bit 用来表示原数据帧总线类型,低2 bit用来表示目标总线类型,数据分配器将依据此信号进行数据分配。

图6 frame_conver 模块原理图

当MODBUS 总线协议帧向CAN 总线协议和HART总线协议转换时,MODBUS 总线协议帧中的命令字段和数据字段需填到CAN 总线协议帧或HART 总线协议帧的数据字段;当CAN 总线协议帧向MODBUS 总线协议和HART 总线协议转换时,CAN 总线协议帧中的数据字段填到MODBUS 总线协议帧或HART 总线协议帧的数据字段;当HART 总线协议帧向MODBUS 总线协议转换时,HART 总线协议帧中的命令字段填到MODBUS 总线协议帧中的命令字段,数据字段填到MODBUS 总线协议帧的数据字段,当HART 总线协议帧向CAN 总线协议转换时,HART 总线协议帧中的命令字段和数据字段填到CAN 总线协议帧的数据字段。

2.5 error_conver 模块

此模块主要完成原协议帧无错误的被转发至目标协议设备后,目标协议设备回复的协议帧出现错误,此时的转换工作。

当网络工作在MODBUS 总线网络时,CAN 节点和HART 从站将响应帧发送至转换模块的过程中产生的链路层错误,按照相应协议要求,在CAN 节点和HART从站和转换模块之间进行错误响应与错误处理,不会将错误通知发送到MODBUS 网络中;HART 从站将响应帧发送至转换模块的过程中产生的应用层错误,本模块需要将HART 总线协议定义的错误码转换为MODBUS总线协议规定的异常响应码,然后将错误帧发送给filedbus_controller 模块中的MODBUS 总线控制器。

当网络工作在HART 总线网络时,MODBUS 总线从设备将响应帧发送至转换模块的过程中产生的应用层错误,本模块需要将MODBUS 总线协议定义的一场响应码转换为HART 总线协议规定的错误码,然后将此错误码发送给filedbus_controller 模块中的HART 总线控制器。

3 仿真验证

图7 展示了MODBUS 总线协议传输测试,由仿真图可以看出MODBUS 总线控制器数据收发正常,波特率配置、奇偶校验配置正常,能进行正常总线通信。

图7 MODBUS 总线协议仿真图

图8 展示了HART 总线协议传输测试,由仿真图可以看出HART 总线控制器数据收发正常,中断产生正常,能进行正常的总线通信。

图8 HART 总线协议仿真图

FPGA 原型验证原理图如图9 所示,本现场总线协议转换器内集成了三种总线控制器,所以仅需要连接三种总线的物理层芯片,即可接入到三种总线网络中。

图9 FPGA 原型验证原理图

图9 展示的是转换器工作在MODBUS 总线网络中,MODBUS 物理层采用的是RS232 芯片,转换器通过RS232接入到MODBUS 总线网络中,MODBUS 主站向MODBUS总线网络发送协议帧寻址CAN 节点或者HART 从设备,转换器通过RS232 接收MODBUS 总线协议帧,然后将转换后的协议帧通过CAN 收发器和HART 调制解调电路发送至相应的总线网络中,CAN 节点和HART 从设备在相应的总线网络中接收转换后的协议帧。

4 结论

本文介绍了MODBUS 总线、CAN 总线和HART 总线三种总线协议之间的转换原理,并依据此转换原理,设计了一种现场总线协议转换硬件架构,硬件架构集成有总线控制器、协议转换器以及配置模块。采用硬件电路并行处理总线数据,进行总线协议帧转换,仿真验证表明实现了三种总线协议的转换,转换时间短且具有确定性。

猜你喜欢
总线控制器错误
在错误中成长
工商业IC卡控制器改造为物联网控制器实践
PLC可编程控制器相关外置的选择计算研究
一种基于CAN总线的误码测试方法
CAN总线并发通信时下位机应用软件设计
不犯同样错误
基于CAN总线的水下通信系统设计
模糊PID控制器设计及MATLAB仿真
宝马F02车总线系统
Freescale公司的可编程电磁阀控制器MC33816