| 作者 | 主题 |
|---|---|
|
布娃娃 新手 经验值:29 发帖数:22 精华帖:0 |
楼主
主题:请教前辈们,怎样让程序停止但继电器仍保持吸合?
目标:在整个程序的一开始要检查一个输入脚的电平,如果是高电平,后面的程序都不执行了,并且使驱动告警灯的输出继电器吸合。
过程:原本我在初始化里做这个功能,通过SM0.1,用END用的END指令,但是程序结束后,指示灯也灭了。 帮助文档似乎和手册里的解释有点不同,一个是结束程序,一个只是结束当前的扫描周期,不知道是不是语言上的不同代表一个意思。 帮助文档的解释:“有条件结束(END)指令根据前一个逻辑条件终止主用户程序。” 手册的解释:“条件结束(END)指令根据前面的逻辑关系终止当前扫描周期。” 如果我在初始化(通过SM0.1做)里用END,若它只是结束当前的扫描周期,那下一个扫描周期,程序就会跳过SM0.1开头的段落,直接执行下面的程序还是整个程序就此停住?有否其他的办法可以解决这样的要求? |
|
醉书生 侠士 经验值:1348 发帖数:718 精华帖:25 |
楼
主题:回复:请教前辈们,怎样让程序停止但继电器仍保持吸合?
耐心的看完了这个帖子,LZ的标题与内容不匹配,所以大家才讨论了这么多
提问题应该先描述你需要实现的直接目的,然后才是你是怎么做的(或采取了哪些措施),做的过程中碰到了什么疑问或现象?这样大家才能完整的理解你的意思,否则只能断章取义,就某一点来回答,当然难以符合你的要求了。 LZ的问题实际上引申的是四个问题:1、sm0.1?2、END指令?3、如何实现上电检查、报警并自锁程序?4、程序停止输出保持? LZ的问题已解决,可是我看不到LZ的贴图,显示"此图片仅限于网易用户交流沟通使用"。给出两种方法供LZ参考 方法一: 网络1 ld sm0.3 // 上电 a i0.0 // 开关闭合 s q0.0,1 // 报警 网络2 ldn I0.0 // 故障已解除 r q0.0,1 // 停止报警,使正常程序得以运行 网络3 ld q0.0 // 已报警(省掉了中间标志位,正常程序中不得再使用q0.0) end // 结束扫描周期(程序仍在运行,但限于前面几个网络) 网络2的作用是如能在带电状态下解除故障可继续执行程序, 否则须对 PLC 重新上电才能执行后面正常程序部分,不需要此特性可以去掉该网络。当然还可以将 sm0.3 换成 sm0.1,则带电解除故障时只须将运行开关拨到 STOP 再到 RUN 即可恢复程序正常运行。 方法二: 网络1 ld sm0.3 // 上电 a i0.0 // 开关闭合 = q0.0 // 报警 stop // 停止运行 此方法需要在"系统块-输出表"中勾选 Q0.0 以维持报警信号,这才是真正的“让程序停止但继电器仍保持吸合” 再说一下 END 指令:PLC的整系统程序实际上是一个大的循环,整个用户程序都在这个循环体内,END指令相当于高级语言中的 continue,意思到这条指令止,不执行后面的程序了,直接从头部开始下一次循环。这是一条非常有用的指令,怎么用就看你的逻辑需求了,这条指令是结构化程序里必不可少的
生命存在的方式只有两种:腐烂或燃烧
|