以FPGA为基础的实现MEWTOCOL-COM与MODBUS RTU协议转换方法的设计

网友投稿 737 2023-05-03

以FPGA为基础的实现MEWTOCOL-COM与MODBUS RTU协议转换方法的设计

0 引言

1 MEWTOCOL-COM与MODBUS通信原理

1.1 MEWTOCOL-COM通信原理

1.2 MEWTOCOL-COM基本帧格式

MEWTOCOL-COM协议中规定了基本帧格式,基本帧格式有控制代码,包含了帧头、命令、正常响应、错误响应、结束等字符,如表2所示。MEWTOCOL-COM的每次通信都先由主站发起,主站发起命令帧,命令帧内容除了包含控制代码外,还包括一些特殊标志码、PLC站号和呼号字符等[3]。表3是基本帧的格式。命令帧在文本区域中填写命令代码和操作地址,命令代码含义如表4所示。

MODBUS在串行通信模式下,通信帧格式有两种:一种是主机发起的查询和命令从设备的格式,另一种是从设备收到主机命令后的应答格式[4]。通信原理是采用请求/应答的方式进行主从通信,其工作原理如图2所示。MODBUS主站通过向相应物理地址的从站发送相应的控制信息进行总线数据的交互,一般采用的是一对多的物理连接方式,其通信的实质是主从一对一的请求/应答模式的通信过程[5]。

在MODBUS RTU协议中,主机设备通常通过不同的功能码实现对位、字进行操作,这里的功能码就是对应MEWTOCOL-COM中的命令。

1.4 命令映射表

为了实现MEWTOCOL-COM 协议与MODBUS 协议的相互转换,首先创建命令对应表,如表5所示。

1.5 地址映射表

MODBUS的地址编码是从1开始,并且分不同的地址段,MEWTOCOL-COM的地址是从0开始,要进行两者相互之间的转换,MODBUS的地址是MEWTOCOL-COM的地址+1。转换关系如表6所示。

2 FPGA实现设计

转换后的MODBUS RTU协议报文,按照8 bit数据位,1 bit停止位的发送。

2.1 顶层设计

2.2 各模块说明

(1)时钟模块PLL

PLL模块采用Altera公司提供的基础锁相环IP,输入时钟clk是50 MHz,通过PLL后,输出信号c0是波特率的采样时钟,本例中采用固定波特率115 200 b/s,因此,采用频率为波特率115 200的16倍,即1.843 2 MHz。

采样时钟c0作为模块的运行时钟,分别送到串行端口的收发数据模块。

(2)串口接收数据模块uart_receiver

(3)协议转换模块cov_fp_mod

cov_fp_mod模块是从串口接收数据模块中接收并行的8 bit数据,同时按照MEWTOCOL-COM协议帧转换为MODBUS RTU协议帧的方式,将重新组装数据,并实时地发送到串口发送数据模块。

(4)串口发送数据模块uart_transfer

串口发送数据模块是将协议转换模块输出的协议帧数据,进行并串转换,并发送到串行接口线路上。

2.3 SignalTap信号抓取

3 测试

假设PC按MEWTOCOL-COM协议从站号(设备地址)为10号(范围是1~32)的保持寄存器DT1105号开始读取数据,直到读到寄存器1107号,命令帧:%10#RDD011050110757cr。

其中57是数据帧的BCC校验字段,cr是结束符。

以FPGA为基础的实现MEWTOCOL-COM与MODBUS RTU协议转换方法的设计

3.1 命令转换

根据命令对应关系,在读取保持寄存器,MEWTOCOL-COM的RD命令对应MDOBUS RTU的03功能码。

3.2 地址转换

首先是站号的进制转换,MEWTOCOL-COM协议中是ASCII通信,站号为10,对应到MODBUS RTU的十六进制格式就是0x0a。

其次是访问的寄存器地址转换,在MEWTOCOL-COM协议中,访问的是数据保持寄存器DT1105~DT1107,起始寄存器地址是1105,结束地址是1107,一共3个寄存器。在MODBUS RTU协议中,需要起始地址和访问的寄存器数量,因此,根据表4,MOBUS RTU的地址是MEWTOCOL-COM的地址+1,DT1105的地址映射到MODBUS RTU地址,16位的十六进制就是0x0452。

最后是不同协议中地址字段的转换映射关系。MEWTOCOL-COM协议字段使用了起始地址和结束地址,而MODBUS RTU协议中使用的是寄存器的起始地址和被访问的寄存器的数量,因此,还要计算出实际的访问寄存器的数量,1 107-1 105+1=3,转成16位的十六进制数据是0x0003,并填入MODBUS RTU协议字段中。

3.3 转换前后通信帧

经过上述命令、地址和数据的转换和映射关系,由PC发出的MEWTOCOL-COM协议的通信帧命令%10#RDD011050110757cr,经过FPGA电路转换到从站号25号接收到的MODBUS RTU协议通信帧是(hex格式):0A 03 04 52 00 03 A4 51。

4 结论

本文在深入分析了MEWTOCOL-COM和MODBUS RTU两种现场总线通信协议的基础上, 提出了基于FPGA架构的协议转换方法的硬件方案,方便快捷地实现了不同现场总线网络的互联互通,并能快速进行协议转换和收发,两者延时时间约1 200 μs,FPGA的资源占用也比较小,图5是综合后的实际逻辑数量,综合代码已经包含了两者协议的相互转换逻辑,实验验证了基于FPGA实现MEWTOCOL-COM与MODBUS RTU协议转换,达到了快速转换和收发的特点,为现场总线网关的设计提供了一个很好的解决方案。

参考文献

[1] 梅恪,沈璞。关于总线国际标准IEC61158的研究报告[J]。仪器仪表标准化与计量,2003(2):30-34.

[4] 于枫.ALTERA可编程逻辑器件应用技术[M]。北京:科学出版社,2004.

[6] 吴志杰,王新霞,孔凡敏,等。多路隔离的Modbus协议转换器的设计[J]。电子技术应用,2016,42(10):77-79.

[7] 吴继华,王诚.Altera FPGA/CPLD设计[M]。北京:人民邮电出版社,2005.

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:电瓶修复——关于蓄电池技术设计改良低温性2
下一篇:如何检验感应电机转子和定子故障
相关文章