S7-1200 MODBUS TCP通信多请求处理
单独的客户机连接需要遵循的规则:
1.每个“MB_CLIENT”连接需要使用一个不同的背景数据块;
2.每个“MB_CLIENT”连接必须指定一个服务器IP地址;
3.每个“MB_CLIENT”连接必须指定一个唯一的连接ID;
4.是否需要唯一的IP端口号取决于服务器组态;
连接ID和背景数据块组合成对,对每个连接来说,组合对都是唯一的。
对于多请求处理,有两种方法:
方法一:如果TCP连接充裕,可以建立多个不同的连接发送请求,即每个请求使用一个独立的连接,调用独立的“MB_CLIENT”功能块,具体操作参考“ModbusTCP”部分。
通过不同的连接发送多个请求,“MB_CLIENT”功能块多次调用,需要使用不同的背景数据块,不同的ID号和不同的端口号。
方法二:通过公共的连接发送多个请求。
通过公共的连接发送多个请求,“MB_CLIENT”功能块多次调用,需要使用相同的背景数据块,连接ID号,IP地址和端口号。
在任意时间,只能有一个MB_CLIENT请求处于激活状态,在一个请求完成执行后,下一个请求再开始执行,轮循处理。
方法二特例:MODBUS TCP客户端访问网关后的多个MODBUS RTU从站
方法二轮循处理的操作
一.软硬件要求
MB_Client/Server指令的使用要求:软件 V11 SP1及以上版本,CPU固件版本V1.02及以上版本。
二.测试条件
硬件:CPU 1214C(DC/DC/DC) V4.4 ,电脑(ModSim32 调试软件);
软件:TIA PORTAL STEP 7 V16
实验:S7-1200作ModbusTCP客户机,用FC03功能对调试软件先后进行读取40001开始的2个字以及40003开始的2个字。
三.组态配置
1.S7-1200的IP地址192.168.1.218,将系统存储器字节设置为MB1,如图1所示,图2所示。
图1 IP地址设置
图2 系统存储器字节设置
2.ModSim32 调试软件设置
服务器采用ModSim32 软件测试,将测试电脑的IP地址设置成192.168.1.216,如图3所示,打开ModSim32软件,在设置功能码FC03、起始地址、长度、设备ID等,如图4所示。
图3 电脑的IP地址
图4 ModSim32 调试软件的从站设置
在“Connection”中选择“Modbus/TCP Svr”,设置本地服务器端口号为502,如图5所示。
图5 连接设置
四.编程
1.新建数据块
如图6所示,新建DB,添加变量类型为TCON_IP_V4,设置InterfaceId,ID,ActiveEstablished,RemoteAddress,RemotePort等参数,具体含义参见链接。
图6 设置连接变量
如图7所示,在DB中建立结构数组,用于轮询控制位以及数据,其中元素0用于第一次读取,元素1用于第二次读取。Init用于初始标志位。
图7 轮询数据
2.编写轮循功能
1)如图8所示,用“FirstScan”在第一次扫描中将初始标志位置位。
图8 初始化标志位
2)如图9所示,程序段2中,第二步的完成位或者错误位去置位第一步的使能位复位第二步的使能位,复位第二步的完成位、错误位、触发的沿变量。
程序段3中,一般情况下是EN通过第一步的使能位使能,REQ通过使能位的上升沿触发,设置模式、读取数据地址、长度、存储地址、连接数据、完成、错误位等。需要考虑第一次触发轮询,可以使用手动触发,在这里使用初始化标志位实现指令的第一次使能,去进行CPU和调试软件的TCP连接,使用Connected标志位触发第一次的REQ触发。
图9 请求1触发
如图10所示,程序段4中,第一步的完成位或者错误位去置位第二步的使能位复位第一步的使能位,复位第一步的完成位、错误位、触发的沿变量,Zui后复位初始化标志位,确保第一个MB_CLIENT不会一直接通。
程序段5中,EN通过第二步的使能位使能,REQ通过使能位的上升沿触发,设置模式、读取数据地址、长度、存储地址、连接数据、完成、错误位等。
图10 请求2触发
五.通讯测试
通讯结果如图11 所示。
图11 测试结果
注意:
1.如果需要更多的读写任务可以按照例子自行添加。2.ModSim32 是做 Modbus RTU从站以及ModbusTCP服务器的测试软件,是第三方软件,可以从网络上下载。