本人也是在使用时FOR循环时发现无法监控数组中指定变量下FB和FC内部的运行情况,在网上找了好久也没找到好的方法,本人最终是通过编程来间节实现程序块的监控,又能不影响程序正常运行,现在专门写了一段测试程序分享给大家,希望对大家有所帮助。
实现方法就是将需要监控的变量放在FOR循环外单独执行,可以直接监控,在监控时FOR循环内不执行此变量的程序。只需要修改监控编号就能实现指定程序监控,
请参考下方程序和图片。欢迎大家一起交流探讨更好的方法。
REGION 监控FOR循环
//限制手动设置的监控编号范围,防止操作失误超出数组范围PLC报错
"监控测试".监控编号 := LIMIT(MN := 0, IN := "监控测试".监控编号, MX := 100);
#x := "监控测试".监控编号;
//开启监控时,将需要监控的编号块放在FOR循环外部独立执行,通过手动设置监控编号查看内部执行过程
IF "监控测试".启用监控 THEN
"FC_MOVE"(IN := #x,
OUT => "监控测试".OUT[#x]);
END_IF;
//不启用监控时,在FOR循环内部执行
FOR #i := 0 TO 100 DO
//有监控时,跳过被监控的数值,直接进入下一循环
IF "监控测试".启用监控 AND #x = #i THEN
CONTINUE;
END_IF;
"FC_MOVE"(IN := #i,
OUT => "监控测试".OUT[#i]);
END_FOR;
END_REGION
