查看: 678|回复: 22
收起左侧

[综合] PLC应用编程实践_空压机程序编写实现(8)

Bob 2020-4-17 21:31:13 | 显示全部楼层 |阅读模式
邀请回答

马上注册,享受更多特权

您需要 登录 才可以下载或查看,没有帐号?立即注册   

x
本帖最后由 Bob 于 2020-4-17 21:36 编辑

子程序逻辑细化

根据前面的状态和功能划分、I/O端口功能定义、变量定义,就可将前面划分的各子程序需要处理的逻辑,细化为如下表中语句描述。
为便于说明编程方法,只将空压机几个运行状态部分的子程序编程示出,并对前后关系进行了说明,方便读者理解归纳,其余部分只说明其功能要点,读者可自行推衍编程。
Autoshop编程软件最多支持多个127个子程序,在编写时除了将前面提到的运行状态按对应子程序编写外,还可以将采集参数处理、传感器异常判断、告警标志刷新、运行时间的累计等等,归类成几个子程序,便于后续编程完善。

  
Sbr0
  
系统上电后即设状态指针D1490(自检状态),执行该子程序几秒钟;用于等待其它设备上电完成,温度压力传感器的检测,以便HMI显示欢迎画面;
  
本子程序只有1处调用。
具体操作内容
1)  清除所有控制输出,复位系统各种标志/命令/索引/缓冲区等;
  
2)  将系统状态说明信息指针D911=8,(显示“上电自检中...”)
  
3)  此时按RUN或STOP按键无效,清除M137(RunKey)和M138(StopKey)
  
4)  倒计时D10减到为0时,将状态指针D149置为1(转状态1);
  

上表中的功能,可用梯形图程序来表达,举例如下:

sbr0.png
其中D10倒计时精度要求不高,采用系统秒跳脉冲M8013计时就够了。

在主程序中,判断起动命令(含面板命令、远程控制端子命令),若命令有效,执行Sbr2子程序,开始起动主电机,空压机运行:
SS2.png



<
回复 邀请回答送花

使用道具 举报

Bob 2020-4-17 21:43:56 | 显示全部楼层
本帖最后由 Bob 于 2020-4-17 23:01 编辑

  
Sbr2
  
当系统为停机状态(D1491M800),且主电机为工频驱动模式(X0011),当有RunKey按键操作,则执行该子程序,开始工频电机的启动操作。
  
本子程序只有1处调用。
具体操作内容
1)  若为Y-△启动方式,置状态指针D149=20;闭合工频接触器、Y型接触器;预制Y型启动延迟的倒计时D10=D418
  
2)  若为直接启动方式,置状态指针D149=21;预置加载延迟倒计时D10=D472;闭合工频接触器、△型接触器
  
3)  清除RunKey标志


在sbr2子程序中,根据是Y-△起动,还是△直接起动,控制接触器Y输出,转对应起动状态(ST20或ST21)
SBR2.png


在停机状态,顺手清除停机命令,防止影响后面的运行。在临跳转到下一个状态之前,为下一状态调整好输出状态(起始输出状态)。
回复 送花

使用道具 举报

Bob 2020-4-17 21:51:50 | 显示全部楼层
本帖最后由 Bob 于 2020-4-17 23:01 编辑

  
Sbr3
  
该子程序用于紧急停机处理。任何状态下按紧急键,都会调用该子程序,根据主电机驱动方式分别将状态切换为D14914(变频)或25(工频)状态。
具体操作内容
1)  若当前为运行状态(M81=1,或M82=1),当空压机系统的紧急停机按钮按下(X0=0):
  
l   若为主电机为工频驱动模式,置状态指针D149=25;
  
l   若为主电机为变频驱动模式,置状态指针D149=14;
  
l   清除倒计时计数器D10=0;
  
l   置紧急停机标志M205=1;
  
l   置停机原因寄存器D47=1,(D47=0/1/2=正常停机/故障停机/紧急停机)
  
2)  在运行状态(M81=1,或M82=1),若有驱动模式设置开关的(X01)切换动作:
  
l   若切换后主电机为变频驱动模式(X01=0),置状态指针D149=25
  
l   若切换后主电机为工频驱动模式,置状态指针D149=14
  
l   清除倒计时计数器D10=0;
  
l   置紧急停机标志M205=1;
  
l   置停机原因寄存器D47=1,(D47=0/1/2=正常停机/故障停机/紧急停机)

若空压机在运行状态,按紧停按钮,去停机准备状态(延时准备时间为0),沿用停机准备的处理逻辑流程,以后若停机准备程序修改,这里也是沿用有效。程序如下:


sbr3.png

上面的程序语句,就实现了本状态要求的逻辑处理。
回复 送花

使用道具 举报

Bob 2020-4-17 21:55:22 | 显示全部楼层
本帖最后由 Bob 于 2020-4-17 23:02 编辑

  
Sbr4
  
该子程序用于主机、风机的点动试运转。
  
当为停机状态(D1491),才判断主机点动JOG标志(M2371)、风机点动JOG标志(M242),该两个标志由键盘或HMI发出,按按下时为1,松手时为0
  
由于动作简单,可以不单独写成子程序
具体操作内容
1)  当主机JOG运行有效(M237=1),主接触器Y5=1、Y型接触器Y6=1;
  
2)  当主机JOG命令释放(M237=0):主接触器Y5=0、Y型接触器Y6=0;
  
3)  当风机JOG命令有效(M242=1),风扇Y3=1;
  
4)  当风机JOG命令释放(M242=0),风扇Y3=0;
        这个逻辑比较容易写,就不列了。
       要保证点动运行指令M237、M242只能由本地操作面板、在停机状态下发出;在D149=1,且无故障告警的条件下被判断执行,其它状态下,该命令标志一律清除。
回复 送花

使用道具 举报

Bob 2020-4-17 21:58:37 | 显示全部楼层
本帖最后由 Bob 于 2020-4-17 22:13 编辑

  
Sbr6
  
该子程序用于判断当前存在的故障,若严重故障,将系统转为停机准备状态并告警;若预警信号,提示检查故障信号。
  
主机工频驱动模式下(X11),在主循环中反复执行;  
具体操作内容
1)      将M200~M231的状态标志集中到D0+D1中,(其中屏蔽了部分预警标志):
  
2)      若有告警信号,且空压机系统为运行M85=1或休眠M86=1状态,置系统状态指针D149为25,清除倒计时计数器,停机原因D47=2,M80=1;若系统为停机状态M85=0和M86=0,送显示信息“故障请检查”D220=19;
  
3)      若外部紧急停机M205=1,则M80保持为1
  
按照上面的功能要求的编写的程序如下。因为在主机工频驱动时也可能有风机变频驱动的情况,风机通信故障的停机也这里一并判断处理。

sbr6.png

说明:     前面2行语句,用于对32类错误的M200~M231变量中,属于严重异常的M变量进行判别(通过WAND过滤了不重要的异常信号),(对风机变频器通信故障M223,则还判断其持续时间达到10s),只要有其中一种异常,就跳转到停机准备状态,且停机准备时间为0(立即停机)。
回复 送花

使用道具 举报

Bob 2020-4-17 22:12:18 | 显示全部楼层

  
Sbr7
  
该子程序在主循环中反复执行,停机命令判断,状态转移处理,保证起停命令只一次有效。
具体操作内容
1)  若非停机状态(D149<>1),清除运行按键指令M137;
  
2)  若系统非运行状态(M81=0,M82=0),或D149=14,或=25, 清除停机按键指令M138;
  
3)  若有停机按键M138=1,则执行如下:
  
l   若工频运行状态M85=1,则令D149=25; D10 =D473,Y0=0.
  
l   若为工频休眠M86=1或变频休眠M84=1,则令D149=15; D10= D474.
  
l   清除停机按键M138,故障原因说明D47=0;


sbr7.png

回复 送花

使用道具 举报

Bob 2020-4-17 22:24:26 | 显示全部楼层
本帖最后由 Bob 于 2020-4-18 15:35 编辑

.....还有许多子程序,实现代码的写法,读者可以去举一反三。作为工频起动的子程序Sbr20,这里列出来,便于读者可以看到一个完整的起动过程的程序,原来这么简单:
  
Sbr20
  
主机工频Y型起动子程序,在D14920(工频Y型启动中)时被执行。
具体操作内容
1)  当Y型启动倒计时D10为0,转移到D149=21(工频△型)状态,置加载延迟倒计时D10=D1920,闭合工频接触器Y3和△型接触器Y5;  
2)  当倒计时D10不为0,刷新之;  
3)  显示“Y型启动中...”信息。

注意:
     在得到有效RUN命令进入ST20时,前一状态的程序已将本状态所需的:变频器输出Y4=0接触器Y7=0、工频主接触器Y5=1Y型接触器Y6=1、进气阀Y2=0,倒计时D10=D1920等作了赋值,本子程序只需倒计时到D10=0,转状态ST21,并将下一状态所需接触器赋初值,这种作法可以简化后续状态的编程。
sbr20.png
回复 送花

使用道具 举报

Bob 2020-4-17 22:29:29 | 显示全部楼层
本帖最后由 Bob 于 2020-4-18 15:35 编辑

  
Sbr21
  
主机△起动子程序在D14921(工频△型启动)时被执行。
  
具体操作内容
1)  当加载延迟倒计时D10为0,置D149=22,闭合电磁阀Y0、工频接触器Y3和△型接触器Y5;  
2)  当倒计时D10不为0,刷新之;  
3)  显示“△型启动中...”信息。
注意:
   ST1ST20两个状态可以转移到ST21,前一状态的程序已将本状态所需的:Y4=0Y7=1Y5=1Y6=0D10=D1921等作了赋值,本子程序只需倒计时到D10=0,转正常运行状态ST22,并将下一状态所需进气阀Y2=1接触器赋初值:
sbr21.png
回复 送花

使用道具 举报

Bob 2020-4-17 22:40:11 | 显示全部楼层
本帖最后由 Bob 于 2020-4-18 15:42 编辑

好了,见证空压机正常运行的加载卸载子程序,是这样的:
  
Sbr22
  
工频运行加载控制子程序在D14922(工频加载运行状态)时被执行。
具体操作内容
1)  显示“运行”状态信息(D220=3);  
2)  当当前压力D99小于加载压力D387时,闭合电磁阀Y0;  
3)  当当前压力D99大于卸载压力D388时,断开电磁阀Y0;置D149=23(工频卸载运行状态);开始休眠判断计时D13。
这个状态程序如下:
sbr22.png

  
Sbr23
  
工频运行卸载控制子程序在D14923时被执行;压力低于加载压力后,转回状态ST22  
在该状态的持续时间超过“休眠判断时间”后,转入休眠状态ST24
具体操作内容
1)  显示“运行”状态信息(D220=3);  
2)  当当前压力D99小于加载压力D387时,闭合电磁阀Y0;置D149=22;  
3)  当当前压力D99大于卸载压力D388时,断开电磁阀Y0;  
4)  当当前压力D99大于加载压力D387,且电磁阀Y0为断开状态,休眠判断的时间满(D13=0),则置D149=24(工频休眠状态),断开所有接触器Y0~Y5。在休眠时间判断中,刷新计时器D13。  
5)  当当前压力D99大于加载压力D387,且电磁阀Y0为闭合状态,复位休眠判断计时器D13=D402,置D149=22(工频加载运行状态)。
则程序如下:
sbr23.png
  卸载状态,累计判断持续时间,超过了转休眠;欠压了转加载。很简单。

回复 送花

使用道具 举报

Bob 2020-4-17 22:42:49 | 显示全部楼层
本帖最后由 Bob 于 2020-4-18 13:30 编辑

  
Sbr24
  
工频休眠状态子程序在D14924时被执行。
具体操作内容
1)  当当前压力D99小于加载压力D387时,  
l   若配置为Y-△启动方式(D412=0),置D149=20,闭合工频接触器Y3和Y型接触器Y4,开始Y型启动延时D10=D413;  
l   若配置为直接启动方式(D412=1),置D149=21,闭合工频接触器Y3和△型接触器Y5,开始加载延时D10=D472;  
2)  显示“休眠运行中...”(D220=4)。

程序如下:
SBR24.png
回复 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册   

本版积分规则

有技术问题,就上汇川技术社区

INOVANCE汇川技术 公众号

汇川控制技术 公众号

全国服务热线:8:30-17:30

400-777-1260

苏州地址:江苏省苏州市吴中区越溪友翔路16号

深圳地址:深圳市宝安区留仙二路6号鸿荣源鸿威工业区E栋

Copyright © 2003-2100 汇川技术 Powered by Discuz! X3.4 ( 苏ICP备12002088号 )
快速回复 返回列表 返回顶部