登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:西门子PLC中选择语句怎么实现?

点击:3377 回复:5

本人在编写西门子PLC程序中碰到了一个问题,望高手指点迷津:
I0.0,I0.1,I0.2,分别控制Q0.0,Q0.1,Q0.2,Q0.3的输出,关系如下:
(1)I0.0接通时:Q0.0,Q0.1,Q0.3接通,点动型;
(2)I0.1接通时:Q0.0,Q0.2接通,点动型;
(3)I0.2接通时:Q0.0,Q0.2,Q0.3接通,点动型;
开始我用梯形图直接写顺序语句:
-|I0.0|-(Q0.0)
        -(Q0.1)
        -(Q0.3)
I0.1
-||-(Q0.0)
   -(Q0.2)
I0.2
-||-(Q0.0)
  -(Q0.2)
  -(Q0.3)
发现(1)(2)(3)之间对输出有重复作用,即I0.0通时,Q0.0,Q0.1,Q0.3并没有通,因为I0.1和I0.2没有接通,执行下来时,Q0.0,Q0.1,Q0.3就没有通了;
在C语言中我知道这是个条件分支语句,即(1)(2)(3)同时只能有一个情况存在,用switch来实现,在PLC中该如何实现呢?
后来我想了这样个办法:
--|I0.0|-MOVB
          1   VB10
--|I0.1|-MOVB
          2   VB10
--|I0.2|-MOVB
          3   VB10
 VB10  I0.0
-|==B|--||--(Q0.0)
   1         -(Q0.1)
             -(Q0.3)
   
 VB10  I0.1
-|==B|--||--(Q0.0)
   2        -(Q0.2)
         
 VB10  I0.2
-|==B|--||--(Q0.0)
   3         -(Q0.2)
              -(Q0.3)
虽然能满足要求,但是觉得欠妥,希望哪位高手能指点下,有没有更精简的程序来满足要求,是不是PLC的结构语言中有swicth语句啊?  小弟不胜感激涕零!
最后修改:2008-5-20 20:30:16
08-05-20 20:22
I0.0 =ON    Q0.0,0.1,0.3=ON  那么相当于QB0=2#1011 ,也就是说使用MOV语句直接向QB0送数据就可以了。
无论什么方法,只要机器会动作不会冒烟就可以了。使用者不会去关心如何去实现以及效能如何。
08-05-20 20:35
但是,这样好像不是点动型的啊??
08-05-20 20:47
利用上升沿|P|来触发动作,利用|N|下降沿来复位QB,将0送入QB不就实现复位?
您玩的PLC档次不行,西门子需要S7-300,400才支持SCL编程,也就是直接使用Switch(IEC指令中应该称为CASE语句。
如果是富士等日系品牌,那么使用这些厂商的IEC编程软件就可以直接支持ST语言的编程,非常之方便,看来西门子并不是IEC61131标准的完全支持者。
08-05-20 22:09
3楼给了我很大的提示啊!多谢啊!
这个网站真是不错!!!
08-05-22 21:34
西门子的PLC怎么进放梯形图编程的?它怎么不像三菱的一样,可以直接进入的?
08-06-07 14:59

工控新闻

更多新闻资讯