恭喜,你发布的帖子
发布于 2022-12-12 17:22:45
45楼
我举一个例子,大家看看什么情况下会变得不可靠?
经典的两按钮、一输出的启、保、停。
初始化部分略去。
I0.0:启动按钮,1=按下
I0.1:停止按钮,1=按下
Q0.0:输出,1=启动运行
1、通常的写法
LD I0.0 // 启动
EU // 脉冲型
O Q0.0 // 自保
AN I0.1 // 停止,状态型,停优先
= Q0.0 // 输出
2、R/S写法
网络1
LD I0.0 // 启动
EU // 脉冲型
S Q0.0, 1 // 启动电机
网络2:
LDN I0.0 // 停止
R Q0.0, 1 // 停电机
3、“双线圈”写法
网络1
LD I0.0 // 启动
EU // 脉冲型
O Q0.0 // 自保
= Q0.0 // 输出(实际是临时存贮)
网络2
LDN I0.0 // 停止
A Q0.0 // 清自保
= Q0.0 // 输出(最终值)
4、R/S+非全扫描写法
网络1
LD I0.0 // 启动
EU // 脉冲型
NOT // 未发生
JMP 1 // 跳转
网络2
LD Always_On
S Q0.0, 1 // 只有在启动按钮按下时,被扫一次
网络3
LBL 1 // 第1个跳转点
网络4
LDN I0.1 // 停止没有按下
JMP 2 // 跳转
网络5
LD Always_On
R Q0.0, 1 // 只有停止按钮按下时,才扫描
网络6
LBL 2 // 第二个跳转点
5、“双线圈”+非全扫描写法
网络1
LD I0.0 // 启动
EU // 脉冲型
NOT // 未发生
JMP 1 // 跳转
网络2
LD Always_On
= Q0.0 // 置1
网络3
LBL 1 // 第1个跳转点
网络4
LDN I0.1 // 停止没有按下
JMP 2 // 跳转
网络5
LDN Always_On
= Q0.0 // 清0
网络6
LBL 2 // 第二个跳转点
请评论可靠性问题。
编码和执行效率,不是本例子的目的。
1、表面看,都能正确执行,没啥问题。但后面的跳转,若是跳很远,这个程序就很难看明白了。因为,这种习惯会变成,I0.0 跳转1;I0.1跳转2。。。这种编程风格。
2、一个公司,五个程序员,五种写法的话;一套程序交给客户的话,非晕菜了。我也能理解为啥一个公司要统一编程规则了。
请填写推广理由:
分享
只看
楼主