S7-1200集成PN接口MODBUS TCP通信多请求处理

单独的客户机连接需要遵循的规则:

1.每个“MB_CLIENT”连接需要使用一个不同的背景数据块;

2.每个“MB_CLIENT”连接必须指定一个唯一的服务器IP地址;

3.每个“MB_CLIENT”连接必须指定一个唯一的连接ID;

4.是否需要唯一的IP端口号取决于服务器组态;

连接ID和背景数据块组合成对,对每个连接来说,组合对都是唯一的。

对于多请求处理,有两种方法:

方法一:如果TCP连接富余,可以建立多个不同的连接发送请求,即每个请求使用一个独立的连接,调用独立的“MB_CLIENT”功能块,具体操作参考“Modbus TCP”部分。

通过不同的连接发送多个请求,“MB_CLIENT”功能块多次调用,但是需要使用不同的背景数据块,不同的ID号和不同的端口号。

方法二:通过公共的连接发送多个请求。

通过公共的连接发送多个请求,“MB_CLIENT”功能块多次调用,但是需要使用相同的背景数据块,连接ID号,IP地址和端口号。

在任意时间,只能有一个客户机请求处于激活状态,在一个请求完成执行后,下一个请求再开始执行,轮循处理。

方法二轮循处理的操作如下所示。

一.软硬件要求

MB_Client/Server指令的使用要求:软件 V11 SP1及以上版本,CPU固件版本V1.02及以上版本。

二.测试条件

硬件:CPU 1214C(DC/DC/DC) V2.1 ,电脑(Modbus Slave 串口调试软件);

软件:STEP7 V11 SP1

实验:S7-1200作Modbus TCP客户机,用FC03功能对调试软件进行两次读信号。

三.组态配置

1.S7-1200的IP地址192.168.0.123,将系统存储器字节设置为MB50,如图1.所示。

图1. 1200的IP地址

2.Modbus Slave调试软件设置

服务器采用Modbus Slave软件测试,首先将测试电脑的IP地址设置成192.168.0.210,如图2.所示,打开Modbus Slave软件,在“Set up->Slave Definition”中设置功能码FC03、起始地址、长度等,如图3.所示。

图2.电脑的IP地址

图3.Modbus Slave调试软件的从站设置

在“Connection->connect...”中打开连接属性对话框,选择“TCP/IP”,TCP/IP Server Port本地服务器端口号为502,并且勾选“Ignore Unit ID”选项,如图4.所示。

图4.Modbus Slave调试软件的连接属性

四.编程

1.MB_DATA_PTR数据块的新建

通过“Program blocks”>“Add new block”,选择“Data block”创建DB块,选择“标准与S7-300/400兼容”,点击“OK”键,定义数据区为100个字的数组,如图5.所示。

图5.创建MB_DATA_PTR数据块

2.创建轮循功能块

用“FirstScan”在第一次扫描将本例中所用到的一些M区清零,“break”用于断开轮询程序,同时对M区清零,如图6.所示。

图6.初始化复位

“manual_set”可以手动触发轮循的开始,“AlwaysTrue”可以在上电或重新下载后启动轮循(不设置掉电保持)。请求2的正常的完成位“Done_2”,故障位“Error_2”,和定时超时位“Time_out_2”(根据实际确定,至少要大于请求响应的时间),这些条件组合置位请求1的触发条件“Req_1”,同时复位请求2的触发条件“Req_2”,如图7.所示。

图7.请求1的触发条件

请求1 触发:EN也不能用常1信号,否则多次调用STATUS会报16#80A5错误(连接ID被占用),REQ触发采用上升沿触发,EN和REQ可以用同一信号触发。例子中用“Req_1”触发,对方服务器的IP地址是192.168.0.210,端口号是502,用功能码03,Modbus 地址从40001开始,2个寄存器,接收缓冲区为数据块DB2,起始地址为0,即地址对应关系为 40001-----DB2.DBW0,40002-----DB2.DBW2,如图8.所示。

图8.请求1用功能码03读取服务器2个字

定时超时条件,在请求触发后,一段时间内既没有来完成位,又没有来错误位,就输出定时超时,例子中请求1超时条件“Time_out_1”设定时间10S,该参数根据实际请求间隔修改,需要大于实际请求间隔,如图9.所示。

图9.请求1定时超时条件

请求2的“Req_2”触发条件置位和请求1的“Req_1”触发条件复位,如图10.所示。

图10.请求2触发条件

请求2 触发:同一连接,多次调用的“MB_CLIENT”的背景DB,ID号,IP和端口号需要相同,例子中背景DB为DB1,ID为4,IP为192.168.0.210,端口号为502,同图8.所示,用“Req_2”触发,用功能码03,Modbus 地址从40004开始,2个寄存器,接收缓冲区为数据块DB2,起始地址为10,即地址对应关系为 40004-----DB2.DBW10,40005-----DB2.DBW12,如图11.所示。

图11.请求2用功能码03读取服务器2个字

请求2的定时超时条件“Time_out_2”,如图12.所示。

图12.请求2定时超时条件

四.通讯测试

通讯结果如图13.所示,从服务器读到数据11,1083和22,1180分别到客户机的DB2.DBW0,DB2.DBW2区域和DB2.DBW10,DB2.DBW12区域。

图13.测试结果

注意:
1.本例对通讯故障时处理方式是简单的放弃当前操作,并触发下一个作用,实际应用中可根据实际情况判断是否需要重发或进行其他处理;
2.Modbus Slave 做 Modbus TCP server 测试软件,是第三方软件,可以从 internet 网络上下载。