故事有点长...
先从一个电路图开始.
为了改造一下设备的功能.增加了这块电路.

意思是用西门子输出信号控制继电器去切换信号来源.以达到屏蔽光栅的目的.
[ 我知道这种安全信号是不允许这么干的,但是我们这里是特殊区域.不是那么紧张的地方..而且,这个也不是重点............]
继电器的开关速度能"骗过"Pilz那边...所以,硬件不用怀疑. 这个也不是重点......
刚开始的时候,使用SCL 的块直接输出到Q点...
下图这样:

我做过如下测试:
1,强制Q点....功能正常.
2,monitorQ点... 功能正常.
3,如果本来在强制状态,再次点强制,就会有一个提示.这种情况...功能不正常.
4,手动按中间继电器[我这个是有手动按的那种继电器]...手速不够.失败.
5,按照上面做的逻辑.从IN1-IN7一个个的动一遍输入...程序输出Q点.功能正常.
重点来了.
6,程序自动运行的时候.....大约10次有2次左右正常....其余全挂.....
我现在的做法是.
块的输出到M 点..加延时和自锁后输出到Q.
这样每次都能成功.
那么问题来了.
既然自锁和强制都能够成功...证明.整个硬件电路肯定没问题.
既然手动测试都没问题...那么自动运行为什么有问题.
ps: 这些点,除了输入点有共用以外.其他的点都是干净的....
下面附上SCL 代码
SCL Source(FB1200) -- ABB.pdf
下面是失败的调用.
OB1-Network30.pdf
下面是修改后 能够凑合用的调用.加了 自锁
OB1.pdf