请教各位大人一个问题:
目前有一个项目,是一些信号的显示和发送,硬件是按键、LED灯和CPU、SM等,按下一些按键,对应LED灯亮,现在有一个问题,这些按键里面有一个“试灯”键,怎么做到按下试灯键,不影响之前已经点亮的LED灯呢?
我想到用试灯这个按键触发硬件中断或触发子程序,在中断服务程序里,先对输出映像寄存器QB进行保存至MB,然后更改QB,完成试灯的功能,比如走马灯之类的试灯方式,在程序跳出来之前在把先前保存的MB还原给QB,退出中断服务程序之后,不影响原本的QB输出,即不影响原来点亮的LED灯。
请问,这样做可以吗?还是说OB40这些硬件中断本身就会保护现场,在中断前后,QB是不会变化的?
或者有其他的办法完成试灯这个的功能吗?
问题补充:
请问自动、手动和测试模式是怎么回事?我用的313C-2DP,就只有run、stop和mres,没有别的档位。
另外,我在ob1里面写如下:
A I 0.1
S Q 0.1
A I 0.0
= Q 0.0
= Q 0.1
= Q 0.2
仅此而已,在仿真器里为什么按下I0.1,Q0.1都不会置位?
最佳答案
一般应用中,试灯按钮的功能为按下该按钮,所有的指示灯全亮。
实现方式就是在正常指示灯的控制逻辑下并上一个试灯按钮输入。当试灯输入接通时,不管原来的控制逻辑是什么状态,都使灯输出接通。当试灯按钮输入断开时,灯的状态由原来的控制逻辑控制。
因此不需要保存与恢复输出寄存器。
这样有一个前提是你的灯输出不能再去控制别的输出,否则容易出问题。
另外,因为PLC是循环扫描的,你的方式除了要保存映像区内容以外,还要做屏蔽正常逻辑输出的工作,比较复杂。
提问者对于答案的评价:
谢谢!后来用复杂的逻辑关系解决了。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc242895.html