S7-1200 Mobus RTU通信网络中包含多个从站站点时,由于轮询的网络特性,只能同时读或写一个站点数据。因此有如下因素,会影响到最终整体的轮询时间:
1. 通信速率(波特率)设置时间
2. 每个站点的通信数据量
3. 站点数量
4. 通信距离
5. 各站点连接时间
无论是由于信号干扰,硬件质量引起的从站掉站或是由于工程需要暂时关闭站点,此时都会由于“各站点连接时间”的增加而使通信系统的轮询时间大大延长。在S7-1200的Modbus RTU通信中,主要有三个参数与“各站点连接时间”的设置相关。
如图1所示,V2.x版本的MB_COMM_LOAD初始化块可设置从站响应时间RESP_TO参数:
设置单次连接从站的可响应时间,范围为5ms到65535ms(默认值为1000ms);即如从站在此时间段内未作出响应,则MB_MASTER将在发送指定次数的重试请求后终止请求并提示错误信息80C8。
图1. RESP_TO参数设置
注意:如图2所示,Modbus从站的执行频率须至少小于RESP_TO设置的响应时间(需要考虑响应延迟时间),才可以正常通讯。
图2. 从站响应时间
在初始化功能块MB_COMM_LOAD的背景数据块中,可设置重试次数RETRIES参数:
主站在返回无响应错误代码 0x80C8 之前的重试次数。(默认值为2次)
注意:此参数表示初次连接无响应后,再次连接的次数;即以默认2次为例,实际尝试连接次数为3次。
图3 RETRIES参数设置
注意:在更改RETRIES参数后,需要重新使能MB_COMM_LOAD功能块的REQ管脚,否则更改参数不生效。
当由于某些原因(如已发出主站请求,但在彻底完成该请求前停止调用主站功能块时),造成Done及Error均没有置1时,需要提供一个定时时间,在时间到达后置位,以便执行下一个功能块或轮询下一个站点。
MB_Master的背景数据块中提供了主站定时参数Blocked_Proc_Timeout(范围0S到5.5S,默认3S)
此前的RESP_TO 是针对从站响应时间的,而Blocked_Proc_Timeout则是针对主站的定时时间,此功能参数用于防止单个 MB_Master 指令独占或锁定对端口的访问。
图4. Blocked_Proc_Timeout参数设置
由于某一个从站掉站引起的轮询周期时间延长,如何减小此影响?
通常,S7-1200可同时调整两个参数:从站响应时间 RESP_TO和重试次数 RETRIES,用于减小Modbus从站掉站或暂时关闭而增大的轮询周期时间。
例:系统默认的尝试连接次数为3次,每次1S,总计3S;
可根据项目实际工况适当减小从站响应时间RESP_TO。这一时间无法估算,建议多次测试,确认每个从站都能够正常稳定连接情况下,将此时间设置的尽量小。
以设置500ms为例。再将RETRIES设置为0。即对于每个从站,主站只尝试连接一次,总计耗时500ms。
MB_MASTER报错8200(端口正忙于处理传送请求),如何处理?
此情况是由于MB_MASTER的DONE或ERROR均未置位从而与后续MB_MASTER冲突导致。确保接通下一个MB_MASTER的时间大于Blocked_Proc_Timeout的设定时间(默认3S)。