| 作者 | 主题 |
|---|---|
|
WWCWWC 至圣
经验值:79172 发帖数:9104 精华帖:157 |
楼主
主题:跟我一起玩200smart PLC 报警状态显示
跟我一起玩200smart PLC 报警状态显示 今天在“找答案”中看到有这么一则问题求助,要求将以位故障报警信息按具体触发位单独循环显示,当报警离去是不显示该位信息,具体问题链接:http://www.ad.siemens.com.cn/service/answer/tobe_solution.aspx?Q_ID=159103&cid=1032 我考虑了一下,感觉可以用移位指令和逻辑“字与”的方法解决此问题。 编程思路:假设控制以一个字的报警信息在QW0中反应。 1) 首先新建一个子程序命名为“报警信息”,并定义相关变量及数据类型: 2) 根据编程思路编辑相应的控制程序: 子程序: 2.0)初始移位指令 2.1)将初值做循环左移1位操作 2.2)将左循环移位结果与报警状态输入做逻辑“与”运算,结果给输出 3) 在主程序中调用“报警显示”子程序,并新建“状态图表”方便监控状态: 4) 假设,报警信息VW0有报警存在,(V1.0~V1.2)3个报警被激活,启动M0.0 = 1. 当循环左移有效位与报警状态值进行“与”运算,得到Q1.0~Q1.2的输出有效状态。 当实时报警信息状态改为VW0 = 2#111时,循环左移到Q1.0~Q1.2通过“与”运算,使Q1.0~Q1.2 = 分别为1的一秒钟时间有效。 5) 改变报警状态值,VW0 = 2#1010,得到的输出结果: 运行结果当报警状态值VW 0= 2#1010时,Q1.1 = 1;Q1.3 = 1。结果符合控制要求,当然如果还需要用其它方式显示可以通过修改逻辑指令和脉冲时间得到。 注意!西门子字寻址是按高位低字节方式排列的。 |