前两天做了一个小的改造项目,需要使三菱Q系列plc和一块LED显示屏进行数据通讯,LED显示屏经改造后支持RS232和RS485接口的MODBUS协议,PLC侧安装有一块型号为QJ71C24N-R2的通讯模块,查此模块资料可知道此模块提供两个RS232物理接口CH1的CH2,可进行基于串口的无协议通讯,唯独不能支持MODBUS协议。考虑到成本问题,不打算更换硬件,最后经过查询资料和验证后,最终实现MODBUS协议通讯。以下是大概方法,供各位朋友交流参考,不对之处请指正。 首先要了解下什么是无协议通讯和MODBUS协议通讯。根据度娘所说: 所谓无协议通讯就是说通信网络的两个或多个终端通过通信网络实现数据的传输,而不必遵循共同的规定或规则。 Modbus 协议是应用于电子控制器上的一种语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。 说简单点无协议通讯就相当于画图,想表达什么就画什么,基本上全世界都能看懂。而MODBUS协议就是中文,只有中国人能看懂。要想让一个不会中文的人和一个只懂中文的人交流,就只能让这个不懂汉字的人模仿汉字的写法,尽管他不认识这个字。所以咱要做的就是教会PLC按照MODBUS协议的格式来和下位机对话, 接下来看下MODBUS协议的格式内容,以MODBUS-RTU为例。 站地址:MODBUS网络中设备都有一个属于自己的站地址,用来区分是哪个设备来接收这个信息。 功能代码:MODBUS设备所支持的功能代码(需要查询设备手册),比如这次使用的MODBUS协议卡支持的功能码如下: 01 读线圈、 03 读取保持寄存器、 04 读输入寄存器、 05 写单个线圈、 06 写单个寄存器、 15 写多个线圈、 16 写多个寄存器。 数据地址:MODBUS设备对应的寄存器地址,查设备手册可知道。 CRC校验码:CRC16校验码占用1个字节。 PLC侧按照手册上接好线,打开模块设置,配置好CH2通道的参数,如图: 然后创建一个子程序,先把CH2 的错误处理程序写上,防止通讯错误,影响其他设备通讯,然后向指定地址写入数据,确定CH2通讯数据长度单位。具体程序如图所示:
这里这个N是8位数据个数,一个D地址是16位,一定要注意, Un的数值要根据模块配置时起始XY地址确定清除错误状态 程序编写完成后,要使用串行模块线路跟踪工具进行发送数据测试,具体路径在工具-智能功能模块用工具-串行通信模块-线路跟踪
|
电工学习网 ( )
GMT+8, 2023-4-7 01:37