一文搞懂MODBUS通讯
现有一激光测距仪,测量范围为0-300mm,输出方式为RS485通讯以实际数值方式输出,用FX5U三菱PLC进行数据采集并显示在威纶通HMI上。
下面我们就来看一下FX5U中485通讯的实现方式。
FX5的MODBUS串行通信功能通过1台主站,在RS-485通信时可控制32个从站,在RS-232C通信时可控制1个从站。
·对应主站功能及从站功能,1台FX5可同时使用为主站及从站。(但是,主站仅为单通道)
·1台CPU模块中可用作MODBUS串行通信功能的通道数最多为4个。
·在主站中,使用MODBUS串行通信专用顺控命令控制从站。
·通信协议支持RTU模式。
PS:可在1~247*2的范围内设置从站站号。但是,FX5主站可连接的从站站数为32站。
在FX5U中PLC本体自带了一个RS485通讯接口,所以可以直接与本体上的通讯口通讯,省去额外购买通讯模块。
FX5U CPU模块使用内置RS-485端口、通信插板、通信适配器,最多可连接4通道的通信端口。通信通道的分配为固定,不受系统配置影响。
按照以下规格执行MODBUS串行通信,波特率等内容是通过GX Works3的参数进行设置的。
配线
与RS-485通信设备连接时,使用屏蔽双绞电缆。
终端电阻:必须在线路的两端设置终端电阻。内置RS-485端口、FX5-485-BD、FX5-485ADP中内置有终端电阻。用终端电阻切换开关进行设置。
1对配线时:
*1连接的双绞电缆的屏蔽层必须采用D类接地。
*2终端电阻必须在线路的两端设置。内置终端电阻时,应将切换开关设置为110Ω。
2对配线时:
*1连接的双绞电缆的屏蔽层必须采用D类接地。
*2终端电阻必须在线路的两端设置。内置终端电阻时,应将切换开关设置为330Ω。
下面根据控制需求,新建一个项目文件来看一下GX works3中如何设置。
在导航窗口依次点击“参数”-“模块参数”-双击“485串口”打开设定界面,根据外部激光测距仪通讯格式,设置MODBUS_RTU通讯格式。
然后就是编程部分,在编程应用前,我们先需要了解一下关于通讯指令ADPRW。
该命令可通过主站所对应的功能代码,与从站进行通信(数据的读取/写入)。
指令格式:ADPRW S1 S2 S3 S4 S5/D1 D2
S1:从站站号;(H0-HF7)
S2:功能代码;(H01-H06、H0F-H10、)
S3:与功能代码对应的功能参数;
S4:与功能代码对应的功能参数;
S5/D1:与功能代码对应的功能参数;
D2:执行通讯指令的通讯状态起始位软件编号:
下面我们来看一下程序部分:
指令含义:从1号(H1)从站读取(H3)当前第三个(H3)保持寄存器中的数据,显示到D60中。M30开始的位软件表示指令执行的状态。然后我们就可以将D60中的数据转存然后进行计算。