新闻中心

EEPW首页>嵌入式系统>设计应用> 一组PLC程序的逻辑错误分析

一组PLC程序的逻辑错误分析

作者: 时间:2014-01-13 来源:网络 收藏

图5 定时器分配程序图

图6 梯形图

4 十字路口交通灯控制程序

题目:交通灯控制程序

来源:plc应用技术开发与实践

编程平台:omron公司cqm1系列

●任务描述

工作顺序:启动按钮,南北绿灯,东西红灯,东西绿灯,南北红灯。按此顺序循环。

时序控制:(90秒周期)

●主干道

南北左转灯:绿10秒,黄2秒,红78秒;

南北直行灯:红10秒,绿30秒,绿闪3秒,黄2秒,红45秒;

东西方向左转灯和直行灯的工作方式与上相仿,但延迟45秒。人行道灯与主干道直行灯相同。

●强通控制

打开强通开关,强通方向绿灯亮,断开强通开关,绿灯闪3秒,恢复正常控制;

闪烁控制,亮0.5秒,暗0.5秒,持续3秒;

这个程序比较长,不便全部抄录在此。这里仅指出程序中的几个错误,并列出相关的程序段。

图7程序的实现

程序错误(1):闪烁控制错误。闪烁过程通过一个专门的程序段控制,按要求该程序应该每隔0.5秒输出1,然后0.5秒输出0,不断循环。图7是书中该程序的实现:

其中只用到tim050一个定时器,计时单位为十分之一秒。omron的tim型定时器的工作方式同西门子ton型定时器相仿,当输入为1时启动计时,一旦输入转0,立即停止计时,定时器变量输出复位为0。

起始状态tim050的值为0,取反后送入定时器1,启动计时,5个单位之后到时定时器产生信号1。该信号经反馈之后,把0送入定时器,这一输入值立即把定时器输出重新变为0。因此,该段程序只能产生非常短暂的1,而不是持续0.5秒的1。当该信号用于驱动绿灯时,无法产生正常的均匀闪烁效果。

●程序修正(见图8)

图8 程序修正图

这里用了两个定时器,当第一个定时器tim050到时之后,它的输出信号1送到第二个定时器tim051启动后者计时。但tim051需要5个单位之后才能到时,在这段时间内,tim050依然的输入依然是1,因此它能够把1继续保持0.5秒,由此产生一个均匀的每隔0.5秒变化的脉冲。

程序错误(2):在系统初始启动阶段,南北方向绿灯亮,但东西方向的左转红灯和直行红灯没有同时点亮

原因分析:由于相关程序比较长,不便在这里展示,这里我们仅分析一下出错的原因及解决的办法。原程序中采用顺序启动各个颜色灯的方法。即左转绿灯10秒后启动直行绿灯,30秒后绿闪,2秒后黄灯,然后55秒红灯。然而,按这一顺序运行时,一开始南北直行红灯的10秒缺掉了,东西左转红灯45秒漏了,最后东西直行红灯55秒也漏了。要改变这一情况,需要改变后一程序,同时再引入两个定时器,把红灯控制切分成两段完成。

可能人们认为上一个问题不算严重,因为原来程序在启动一分钟之后就能达到正常。但下面的强通控制的错误确是比较严重的。所谓强通是指紧急车辆到达路口时,人工控制按下相应方向的强通开关,使得这一方向的绿灯亮,另一方向亮红灯。紧急车辆过去之后,强通开关方块,强通方向绿灯闪动三下之后,恢复原来的系统运行。

程序错误(3):强通按钮放开之后,按规定强通方向绿灯应该闪烁三下,然后熄灭,但实际情况是绿灯没有按照规定闪烁和停止,而是持续发亮。

原因分析:

我们以东西向直行绿灯控制程序段为例分析这一问题。

该程序中100.12为控制东西向绿灯的输出变量。该方向的强通通过hr0.00控制,强通按钮按下之后,该变量为1,从而引起100.12输出为1,绿灯亮。强通按钮放开之后,这条通路切断,hr0.01变为0之后,hr0.03会变为1,过程在这里略去。hr0.03所在的通路将产生一个3秒钟的闪烁脉冲。编程者的意图是通过它在结束强通之后制造一个绿灯闪烁过程。然而,由于变量100.12的反馈存在,一旦该变量为1,它将自动地继续保持为1。只有两种方式可以使它恢复为0,一种是30秒定时器到时(tim010),另一个是另一方向的强通信号hr0.01。在同方向强通信号结束之后,一般情况下,上述两个信号均不会转为1,因此绿灯无法马上停止。系统并不产生规定的效果。

西门子plc相关文章:西门子plc视频教程




评论


相关推荐

技术专区

关闭