quote:以下是引用n次看你的背影在2012-10-31 19:35:36的发言:
如果CPU有多条网络,判断会复杂一些;如果CPU只有一条PB网络,下面挂了些从站,判断从站通讯故障可以在OB86里面写点代码来判断、显示哪个从站通信故障,写了点东西,也许可以参考下:
L LW 0 //当前事件内容
L W#16#39C4 //事件代码(从站通信故障发生)
==I
JCN M003 //如果从站没有故障发生,则跳转;如果从站故障发生,往下执行
L LB 11 //DP从站 ID
L P#0.0 //地址偏移量
+D
T LD 20
S DBX [LD 20] //将当前从站故障位置位
M003: L LW 0 //当前事件内内容
L W#16#38C4
==I
JCN M004 //如果从站故障没有消失,则跳转;如果从站故障消失,往下执行
L LB 11 //DP从站 ID
L P#0.0 //地址偏移量
+D
T LD 20
R DBX [LD 20] //将当前故障位复位
m004: NOP 0
参考说明:如果是3号从站通讯故障发生,那么会将DB400.DBX0.3置位,其它从站依次类推;如果是3号从站通讯故障消失,那么会将DB400.DBX0.3复位,其它从站依次类推。dbx0.0到dbx29.7,能放将近240个故障信息,容量应该足够了。这样就可以在上位或HMI上显示或报警了。
如果DP从站通信故障导致危险发生或者影响产品质量需要停CPU,那么可以在OB1或者其它地方判断DB400.DBW0~DBW38的内容;或者有选择性的故障从站的位的状态,用这个故障位来启动定时器(防止网络闪断),延时到执行SFC46,CPU ”STP“。