前言
本文分享一个自己编写的调节阀控制逻辑块。
一、功能概述
- 手动状态、自动状态、检修状态自由切换;
- 手动状态下,手动输入阀门开度值;
- 自动状态下,根据程序联锁要求自动计算阀门开度值;
- 检修状态下,自动关阀。
二、调节阀程序编写
1.创建自定义数据类型
2.创建FC块“调节阀”
建立如下引脚变量:
3.编写程序
代码如下:
1.赋值
#HMI.Fault := #Fault;
#HMI.Ready_DI := #Ready_DI;
#HMI.Open_DI := #Open_DI;
#HMI.Close_DI := #Close_DI;
#HMI.Man_Value := #Man_Value;
#HMI.Auto_Value := #Auto_Value;
2.手动状态显示
IF #HMI.HMI_Manual AND NOT #HMI.HMI_Auto AND NOT #HMI.HMI_Pause THEN
#HMI.Manual_DO := 1;
#HMI.Auto_DO := 0;
END_IF;
//默认手动状态
IF NOT #HMI.Auto_DO AND NOT #HMI.Pause_DO THEN
#HMI.Manual_DO := 1;
#HMI.Auto_DO := 0;
#HMI.Pause_DO := 0;
END_IF;
3.自动状态显示
IF #HMI.HMI_Auto AND NOT #HMI.HMI_Manual AND NOT #HMI.HMI_Pause THEN
#HMI.Manual_DO := 0;
#HMI.Auto_DO := 1;
END_IF;
4.休止状态显示
IF #HMI.HMI_Pause AND NOT #HMI.HMI_Manual AND NOT #HMI.HMI_Auto THEN
#HMI.Pause_DO := 1;
#HMI.Auto_DO := 0;
#HMI.Manual_DO := 0;
END_IF;
IF #HMI.HMI_Pause = 0 THEN
#HMI.Pause_DO := 0;
END_IF;
5.手动状态赋值
IF #HMI.Manual_DO AND NOT #HMI.Fault THEN
#OUT := #HMI.Man_Value;
END_IF;
6.自动状态赋值
IF #HMI.Auto_DO AND NOT #HMI.Fault THEN
#OUT := #HMI.Auto_Value;
END_IF;
7.休止状态赋值
IF #HMI.Pause_DO AND NOT #HMI.Fault THEN
#OUT := 0.0;
END_IF;
8.按钮自复位
IF NOT "AlwaysFALSE" THEN
#HMI.HMI_Manual := 0;
#HMI.HMI_Auto := 0;
END_IF;