西门子s7-200plc灯亮怎么解决?西门子200PLC中有禁止DO输出的特殊继电器么
西门子s7-200plc灯亮怎么解决?西门子200PLC中有禁止DO输出的特殊继电器么M20.0为1的话Q点输出块就可以执行,如果我把网络1处M20.0的SM0.0为常闭点,那么M20.0就无法接通,输出块就不能执行了。网络2是调用输入点的块,网络3写控制程序,网络4只写输出点!主程序规划主程序规划:从图中可以看到,程序很简单就4行,SM0.0是总是为1的点,那么M20.0就也是一个一直为1的点,且M20.0在程序的其他地方,坚决不能被再次写操作了,可以读。---这里的写操作就是比如置位S指令,MOVE指令等,坚决不能被别的地方写操作,也最好在程序的任何其他地方都不使用---这是规划,规则,也是最终我们要求的结果!
引子:前段时间刚入头条在悟空问答的答题有的答的很简短,因为不知道哪些问题会被关注,就没有说的很详细,结果就造成了一些小伙伴的困惑。比如今天文章的题目,这个就是有人问说三菱的PLC中M8034就是禁止全部DO输出的特殊继电器,西门子200PLC中有么?
我说西门子中没有,但是有可以实现的方法,结果说的太简短了,有些小伙伴还在疑惑中,所以发今天这个文章,详细说一下,希望能解开你们的疑虑!
正文:程序是按照人的意志被编写出来的,所以我们要实现某些功能的时候,应该对程序有一个规划,然后后续程序的编写,都应该遵从这个规划。现在我们需要一个点可以控制全部的DO不输出,那么DO点全部在一个块中,如果这个块不被主程序调用就可以了。
直接看图吧:
主程序规划
主程序规划:
从图中可以看到,程序很简单就4行,SM0.0是总是为1的点,那么M20.0就也是一个一直为1的点,且M20.0在程序的其他地方,坚决不能被再次写操作了,可以读。---这里的写操作就是比如置位S指令,MOVE指令等,坚决不能被别的地方写操作,也最好在程序的任何其他地方都不使用---这是规划,规则,也是最终我们要求的结果!
网络2是调用输入点的块,网络3写控制程序,网络4只写输出点!
M20.0为1的话Q点输出块就可以执行,如果我把网络1处M20.0的SM0.0为常闭点,那么M20.0就无法接通,输出块就不能执行了。
再来看一下输出块中的程序:
Q输出程序规划
Q输出程序规划:
从图中可以看到,Q0.0是被V0.0控制的,Q0.1是被V0.1控制的,看到这里应该有的朋友就知道那我控制程序中写的程序,最终其实都是去控制V0.0和V0.1,这样不管V0.0和V0.1是否接通,只要我这个程序块在前边M20.0不接通,那么Q0.0和Q0.1就无法接通。---这里隐含了一个很重要的规划规定,就是Q0.0和Q0.1的线圈只能在Q输出块中出现,且只能在只能在Q输出块中被写这么一次,坚决不能在其他块中被写操作,也坚决不允许Q的线圈在其他任何块中再次出现。其实对于Q0.0的读操作最好在别的程序块中也不要用,在别的程序块中尽可能多使用V0.0。
再开看控制块中的程序:
控制程序规划
控制程序规划:
从图中可以看出,控制程序中最终操作的都是V0.0和V0.1,这里严禁使用Q0.0代替V0.0,因为其实我们的规划是,所有的Q点都应该对应一个映射点,所有的程序控制都是对这个映射点的控制。不管是SET/RESET,MVOE或者直接对线圈操作,都应该是对映射点的操作!坚决反对这个块中出现对任何Q点的操作!
---我们只有处处遵守这些既定的规划,才能实现最终的目的!
文章到这里,朋友们应该可以明白,我说M20.0可以控制全部的DO点了吧,DO的Q点线圈必须全部写在一个块中,在主程序中调用,这样才能被一个点全部控制。
聪明的朋友应该可以看到I输入块处,其实也是应该用I0.0去驱动M0.0,这样M0.0就是I0.0的映射了。--这样做的好处是I0.0我在程序运行的时候,外部线路如果是0,则不能通过修改程序让其为1,禁掉输入块的时候,可以在程序中改动M0.0让其为1,也就相当于得到了I0.0为1的信号。Q0.0为1的话可能会使设备动作,当禁止输出块输出的时候,V0.0同样可以监控到运行结果。--所以,这样把输入和输出都用别的点映射出来,就很方便测试程序!(当然,你说你用真实的I点测试,或者强制Q点输出,调试都很方便,那就随自己高兴。)
文章到此就结束了,希望朋友们能理解我说的什么,也希望大家领略到这样作的真正好处,谢谢!