我在用SFC87读取S7连接状态时,当我断开某条线路,差不多要等38秒读取的连接状态才变化?为什么会这么慢呢?并且,我在网络NetPro里面监视了一下,连接状态也差不多要等20秒才更新出来?
最佳答案
系统功能块SFC 87 C_DIAG用一个固定组态,决定了连接的当前状态,例如所有的S7连接和所有容错的S7连接。每次调用,SFC 87 C_DIAG从操作系统中读取连接数据,并输入到用户存储器用于赋值。然后SFC响应在操作系统中发生的读操作,这样可以记录这次与上一次读取操作之间状态的改变。如果想持续地监视连接,在固定的间隔内调用SFC,如在定时中断组织块中每10秒调用一次。
SFC 87 C_DIAG是-个异步操作的系统功能。以参数REQ信号状态为“1”触发一个请求。如果请求不能立刻执行,则SFC在参数BUSY中返回信号状态“0”,否则返回BUSY=“1”表示请求正在处理。
SFC 87 C_DIAG可以在多种操作模式下工作,通过参数MODE可以自己设定操作模式:
●MODE= B#16#00
SFC响应读出,而不复制连接数据。
●MODE= B#16#01
SFC复制连接数据并响应读出。
●MODE= B#16#02
在连接数据发生改变时SFC才复制连接数据,并通知响应读出,即使数据没有改变,SFC也依然响应读出。
●MODE= B#16#03
SFC复制连接数据而不响应读出。
SFC 87 C_DIAG把来自操作系统的当前连接数据传送到参数CON_ARR指定的目标区域。目标区域是一个结构数组,每一个数组单元包括用于一个连接的数据。数组元素(结构)的数目必须与可能的连接数目对应。
提问者对于答案的评价:
非常感谢
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc352259.html