购买一个支持MODBUS-TCP通信的模块,下图为它的外观,品牌为艾莫迅,它支持较多的通信方式;有一个网口、两路串口、多路模量量收入输出、还可作通信协议转换。
模块接线说明:
ModBus TCP通信要求:
1.设备间连线:用网线相连;
2.通信规则:分客户端和服务端,服务端是一直在线的,如需通信则由客户端发起。所以根据需求确认通信设备各自充当的角色;
3.通信参数:需有指定的IP地址、端口(一般为502)、站号;
4.读写地址:MODBUS通信地址,即有位地址和寄存器地址(字16位);手册会说明对应的内容。
本例是以西门子1200系列PLC作为客户端,对模块的输入进行读取来说明MODBUS-TCP通信。
西门子1200PLC的MODBUS-TCP通信指令,有作为客户端的,有作为服务端的,主要是分是主动通信还是被动通信。主动通信方为客户端。
模块的输入输出地址与485地址的对应关系;如需读出输入通道0.0到0.7的状态,则需读10001到10008的8个位的状态。
拖入作为客户端的指令时会自己创建DB块,保存该指令的相关数据和参数。
设置通信单元的ID为1。此项相当重要!
指令引脚的手册官方解释,用自己的理解翻译一下。
指令引脚的手册官方解释,自己的理解翻译一下。
指令引脚的手册官方解释,自己的理解翻译一下。
如下图:
EN引脚作为指令执行使能;
REQ引脚,用10Hz的系统时钟来触发,1秒触发10次;
DISCONNECT引脚,0为建立连接、1为不连接;
MB_MODE引脚是0时为读操作,是1时为写操作。
建立一个数组,用来存储接收过来的数据,这里是读对方输入信号的状态,用位的数组,共8位。当为写时,就是存在这8位的值写到对方指定的地址上。所以是用指针式的数据,即从哪个地址开始的多少位。
命名为tcp01的BOOL数组,共8位,把该数据优化块的访问去掉,编译后有指定的偏移地址。
MB_DATA_ADDR引脚为MODBUS的读写地址,指PLC在MODBUS通信中规定的地址,此地址为标准的地址,大家的设备会按这个地址在内部进行映射,即一一对应。
MB_DATA_LEN引脚是指要从MB_DATA_ADDR的地址开始读多少个地址。对下图的引脚进行说明:读取服务端从10001开始的8个位状态,存储在刚创建的数组上。
指令的后面CONNECT引脚为通信参数引脚,有较多内容,在下一节说明。
本人在东莞从事教育培训行业,欢迎广大工控爱好的朋友一起学习,共同进步。如有想进一步了解和交流,加小编微信进工控学习群。同时欢迎关注转发,让学习智能制造更进一步。
相关内容:
213