发表于:2008/5/20 20:22:00
#0楼
本人在编写西门子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语句啊? 小弟不胜感激涕零!
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编辑过]