系统架构:S7-1200通过CM1241(RS485/422)模块,以modbus Rtu的方式和5台三菱变频器FR840通讯链 接。
5台变频器使用逻辑上要求相互独立的。
程序上是以轮询的方式进行通讯的。
问题: 当其中一台变频器掉站(变频器故障或断电),其它几台变频器的控制延迟很严重(>5s);
原因分析:
MB_COMM_LOAD背景数据块,从站响应时间RESP_TO参数;
设置单次连接从站的可响应时间,范围为5ms到65535ms(默认值为1000ms);即如从站在此时间段内未作出响应,则MB_MASTER将在发送指定次数的重试请求后终止请求并提示错误信息80C8;
需要注意:Modbus从站的执行频率须至少小于RESP_TO设置的响应时间(需要考虑响应延迟时间),才可以正常通讯。
MB_COMM_LOAD的背景数据块中,可设置重试次数RETRIES参数;
主站在返回无响应错误代码 0x80C8 之前的重试次数。(默认值为2次)
注意:此参数表示初次连接无响应后,再次连接的次数;即以默认2次为例,实际尝试连接次数为3次
MB_Master的背景数据块中提供了主站定时参数Blocked_Proc_Timeout(范围0S到5.5S,默3S)
此前的RESP_TO 是针对从站响应时间的,而Blocked_Proc_Timeout则是针对主站的定时时间,此功能参数用于防止单个MB_Master 指令独占或锁定对端口的访问。
结果:修改过”原因分析“的几个参数后,即使有变频器断电或掉站,其它变频器的控制延迟也可以控制在至少1s以内。