如何实现两台PLC之间的MODBUS无线通信?
d8805【中国自动化网社区】95394e【http://sns.ca800.com】40
在工业现场可能会遇到这样的情况,分布在不同地方(车间、控制室场所等)的PLC之间需要进行远程相互控制,通常是采用RS485总线,通过MODBUS协议完成此功能。
6bac3df【中国自动化网社区】9e396b【http://sns.ca800.com】ee307
如果现场布线不方便的话,也可以采用无线方式进行通信。这里以达泰DTD433无线模组和台达DVP-80EH为例进行说明。
6bac3df【中国自动化网社区】9e396b【http://sns.ca800.com】ee307
一、两DVP-80EH台达PLC之间的远程控制
20dca1【中国自动化网社区】9524b8【http://sns.ca800.com】cd025
20dca1【中国自动化网社区】9524b8【http://sns.ca800.com】cd025
实现的功能:
20dca1【中国自动化网社区】9524b8【http://sns.ca800.com】cd025
f9bd08【中国自动化网社区】93873d【http://sns.ca800.com】52de7c
l PLC1的8个开关量输入,X0~X7与PLC2的开关量输出Y0~Y7一一对应,也就是说上图中的A1开关按下时,PLC1的开关量输入X0闭合,PLC2的输出继电器触点Y0导通,L2点亮。
f9bd08【中国自动化网社区】93873d【http://sns.ca800.com】52de7c
f9bd08【中国自动化网社区】93873d【http://sns.ca800.com】52de7c
l PLC1与PLC2之间的通信是通过RS485总线连接的,其中采用了Modbus协议。
f9bd08【中国自动化网社区】93873d【http://sns.ca800.com】52de7c
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
二、台达PLC通信中的Modbus协议编程方法
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
假设把PLC1作为主站,PLC2作为从站,分别编写主站和从站程序,主要掌握以下要点:
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
Modbus主站读写程序
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
l Modbus RTU主站功能是通过指令库中预先编好的内存值实现的,该内存值可以用WPL软件:帮助->辅助编程->通信格式设置,在这个工具中输入你想要的通信格式,然后生成对应的内存值。
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
Modbus RTU主站中一定要设置通信模式,模式编号请查阅WPL软件的帮助文档。
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
上述程序解析:
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
l M1002常开触点,当系统RUN以后第一次扫描为:ON,之后都为:OFF;该脉冲的宽度为一次扫描周期;
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
l MOV H81 D1120为设置通信格式为:9600-8-n-1;
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
l 通信格式保持应用命令;
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
l 设置通信逾时300ms;
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
l 设置主站的通信模式为Modbus RTU
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
Modbus从站读写程序
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
上述程序解析:
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
l M1002常开触点,当系统RUN以后第一次扫描为:ON,之后都为:OFF;该脉冲的宽度为一次扫描周期;
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
l MOV H81 D1120为设置通信格式为:9600-8-n-1;
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
l 通信格式保持应用命令;
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
用户出现的问题:PLC无法与DTD433模块通信
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
用户程序:
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
原因分析:
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
本程序无法通信主要原因是:
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
1.PLC的通信格式和DTD433C的数据通信格式不一样,上图用户程序里设置的通信格式为:9600 7-E-1;而DTD433模块通信格式为:9600 8-N-1;
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
2.PLC没有选择正确的通信模式,上图程序中没有设置,一般是要设置的。
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
解决方法:
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
1.改变用户PLC程序中通信格式设置,设置为9600 8-N-1;也就是说采用的波特率为9600、8位的数据位、无校验、1位的停止位;上图中用户程序设置通信格式的语句为MOV H80 D1120,其中MOV为数据传送指令,将H80传送到D1120,而H80对应的数据格式为9600 7-E-1(波特率是9600、数据位是7位、偶校验、停止位1位)查询方法如下图:
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
D1120是设置通信的功能口,所以只要把通信格式设置为9600、8-N-1对应该的内存值,如下图所示:
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
所以设置通信格式的命令应该改为:MOV H81 D1120
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
2.加入设置通信模式的语句,设置为Modbus RTU模式(RTU模式只能是8位的数据位);设置通信模式的指令需要用到SET指令,当SET指令被驱动,其指定的元件被设置为On,且被设置的元件会维持On,不管SET指令是否仍被驱动;设置Modbus RTU模式时,因为本次设置的主机用的是COM2口(D1120也是用在COM2口的),所以设置Modbus RTU模式的特殊继电器为:M1143;因此设置通信模式的命令应该为:SET M1143。
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
通过上述两个方面的修改,PLC和DTD433模块通信成功!
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
三、无线Modbus通信的实现方法
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
以上说明了采用有线RS485总线实现多台PLC之间的远程控制方法,有时由于现场条件的限制,重新布设通信线路很不方便,例如山上与山下,或者横跨马路的情况,尤其对于工程改造项目二次布线几乎是甲方无法接受的。在这种情况下,可以采用DTD433无线通信模组代替通信电缆,实现起来非常方便,不需要编程。
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
无线通信模组采用中心频率为433MHz开放的ISM频段,内部使用全数字RF通信芯片与单片机组成无线数传系统,外部通信接口与RS485总线完全一致,为了使用方便,通信实现所发即所得,也就是说数据通信是完全的透明方式,这样的话,用两个DTD433模组能够直接代替有线的RS485通信导线。需要注意的是:
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
l PLC的Modbus通信速率要与无线数传模组的波特率设置一致,例如通信参数可以设置为9600bps,8位数据,无效验位。
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
l DVP-80EH的RS485+连接DTD433的RS485_A;
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
l DVP-80EH的RS485-连接DTD433的RS485_B;
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
l 无线数传模组的供电电源为直流24V,与PLC可以共用电源;
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
l 无线通讯距离在200米左右选用DTD433A模组;
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
l 无线通讯距离在1000米左右选用DTD433B模组;
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
l 无线通讯距离在3000米左右选用DTD433C模组;
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
l 保证通信距离,提高通信质量要选择高增益的吸盘天线,天线安放高度离地面越高效果越好。
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
四、PLC与DTD433无线模组通讯成功的案例
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
l 西门子PLC与DTD433C-S4 9600bps,8,N,1,RS485口
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
l 海为PLC与DTD433C-S4 9600bps,8,N,2,RS485口
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb
台达PLC与DTD433A_S4 9600bps,8,N,1,RS485口
8d【中国自动化网社区】2c2457【http://sns.ca800.com】acc0dcb