恭喜,你发布的帖子
发布于 2017-11-02 15:24:36
10楼
我的就是OR逻辑,输出的是最后一个故障位,而且必须是全部报警都消失后,才显示。今天**聘期的专家来了,说这样不行。第一个报警位触发了,就置位首出,而且不需要等到返回。搞得我只能重新编写功能块了,不能用这个了。
经过今天测试总结如下:
我前面说了"首出字是导致输出变化的第一个信号的位号,这里强调了输出变化"。这个变化是输出管脚OUT从1->0的变化(如上图)。就是说,正常情况下,你要保证OUT为1,这个很重要。你可以看到INTLOCK块的输出OUT管脚=1时,面板上显示的是绿色,OUT管脚=0时,面板上显示的是红色。(这个也符合电机等块的Intlock管脚的定义,1=未激活,0=激活)所以说这个块应该就是反逻辑应用,和正逻辑正好相反。
用AND 的话,输入信号应当全是1,当第一个信号变化了(这时应当是1->0),就导致输出OUT从1->0;
用OR的话,输入信号应当全是1,当最后一个信号(这时就是引起输出变化的第一个信号)变化了(这时应当是1->0),就导致输出OUT从1->0。
你要根据要实现的功能来选择AND或OR逻辑,输入信号的状态该取反时就取反。
实测截图如下:
图1是正常时的状态,注意这里我对信号取反了
图1
第一个信号变化后的状态,如图2
图2
第二个信号变化后的状态,如图3
图3
在这里,可以看到FirstIn=16#2,指示的就是第二个信号位(其实就是指第一个引起输出变化的信号位)
复位后将两个信号变化顺序调换一下,再测一遍
第二个信号变化后的状态,如图4
图4
第一个信号变化后的状态,如图2
图5
在这里,可以看到FirstIn=16#1,指示的就是第一个信号位(其实就是指第一个引起输出变化的信号位)
在此纠正一下我前面所说的:“用AND 的话就是表示最后一个变化的信号位,因为只有最后一个信号变化了,才能导致输出变化;用OR的话就表示第一个变化的信号位,因为只需要一个信号变化,就能导致输出变化。”这只是适用于普通AND逻辑和OR逻辑,不适用于Intlock的AND逻辑和OR逻辑。
请填写推广理由:
分享
只看
楼主