三菱FX1N控制一个水泵一个雾化器一个杀菌灯一个增氧泵。PLC上电后四个设备间隔2分钟依次启动启动完成后各自按设备指定的循环工作水泵每隔1小时启动30分钟;雾化器每隔9小时启动20分钟;杀菌灯每隔6小时启动30分钟;增氧泵每隔4小时启动30分钟。每个设备都可以手动控制启动和停止。按上文的描述用GX WORKS2写一个STL程序。
NETWORK
NAME Main
// 定义数据块
DATA_BLOCK DB1
// 定义元件
// 水泵
BOOL Pump_On; // 水泵手动开关
BOOL Pump_Auto; // 水泵自动控制开关
INT Pump_Count; // 水泵计数器
// 雾化器
BOOL Atomizer_On; // 雾化器手动开关
BOOL Atomizer_Auto; // 雾化器自动控制开关
INT Atomizer_Count; // 雾化器计数器
// 杀菌灯
BOOL Sterilization_On; // 杀菌灯手动开关
BOOL Sterilization_Auto; // 杀菌灯自动控制开关
INT Sterilization_Count; // 杀菌灯计数器
// 增氧泵
BOOL Aeration_On; // 增氧泵手动开关
BOOL Aeration_Auto; // 增氧泵自动控制开关
INT Aeration_Count; // 增氧泵计数器
END_DATA_BLOCK
// 定时器
TIMER T1(PT1S); // 1秒定时器
// 定义常量
INT Pump_Delay := 120; // 水泵启动延迟2分钟
INT Atomizer_Delay := 540; // 雾化器启动延迟9分钟
INT Sterilization_Delay := 360; // 杀菌灯启动延迟6分钟
INT Aeration_Delay := 240; // 增氧泵启动延迟4分钟
INT Pump_Work_Time := 1800; // 水泵工作时间30分钟
INT Atomizer_Work_Time := 1200; // 雾化器工作时间20分钟
INT Sterilization_Work_Time := 1800; // 杀菌灯工作时间30分钟
INT Aeration_Work_Time := 1800; // 增氧泵工作时间30分钟
// 定义步骤
ST_STEP Step1 // 启动延迟
ST_OUT T1; // 启动1秒定时器
ST_OUT Pump_Auto := TRUE; // 自动控制开启
ST_OUT Atomizer_Auto := TRUE; // 自动控制开启
ST_OUT Sterilization_Auto := TRUE; // 自动控制开启
ST_OUT Aeration_Auto := TRUE; // 自动控制开启
ST_OUT Pump_Count := 0; // 计数器清零
ST_OUT Atomizer_Count := 0; // 计数器清零
ST_OUT Sterilization_Count := 0; // 计数器清零
ST_OUT Aeration_Count := 0; // 计数器清零
ST_NEXT; // 跳转到下一个步骤
END_STEP
ST_STEP Step2 // 水泵启动
ST_OUT T1; // 启动1秒定时器
ST_OUT Pump_On := TRUE; // 手动控制开启
ST_OUT Pump_Auto := FALSE; // 自动控制关闭
ST_OUT Pump_Count := Pump_Count + 1; // 计数器加1
ST_NEXT; // 跳转到下一个步骤
END_STEP
ST_STEP Step3 // 水泵停止
ST_OUT T1; // 启动1秒定时器
ST_OUT Pump_On := FALSE; // 手动控制关闭
ST_OUT Pump_Auto := TRUE; // 自动控制开启
ST_NEXT; // 跳转到下一个步骤
END_STEP
ST_STEP Step4 // 雾化器启动
ST_OUT T1; // 启动1秒定时器
ST_OUT Atomizer_On := TRUE; // 手动控制开启
ST_OUT Atomizer_Auto := FALSE; // 自动控制关闭
ST_OUT Atomizer_Count := Atomizer_Count + 1; // 计数器加1
ST_NEXT; // 跳转到下一个步骤
END_STEP
ST_STEP Step5 // 雾化器停止
ST_OUT T1; // 启动1秒定时器
ST_OUT Atomizer_On := FALSE; // 手动控制关闭
ST_OUT Atomizer_Auto := TRUE; // 自动控制开启
ST_NEXT; // 跳转到下一个步骤
END_STEP
ST_STEP Step6 // 杀菌灯启动
ST_OUT T1; // 启动1秒定时器
ST_OUT Sterilization_On := TRUE; // 手动控制开启
ST_OUT Sterilization_Auto := FALSE; // 自动控制关闭
ST_OUT Sterilization_Count := Sterilization_Count + 1; // 计数器加1
ST_NEXT; // 跳转到下一个步骤
END_STEP
ST_STEP Step7 // 杀菌灯停止
ST_OUT T1; // 启动1秒定时器
ST_OUT Sterilization_On := FALSE; // 手动控制关闭
ST_OUT Sterilization_Auto := TRUE; // 自动控制开启
ST_NEXT; // 跳转到下一个步骤
END_STEP
ST_STEP Step8 // 增氧泵启动
ST_OUT T1; // 启动1秒定时器
ST_OUT Aeration_On := TRUE; // 手动控制开启
ST_OUT Aeration_Auto := FALSE; // 自动控制关闭
ST_OUT Aeration_Count := Aeration_Count + 1; // 计数器加1
ST_NEXT; // 跳转到下一个步骤
END_STEP
ST_STEP Step9 // 增氧泵停止
ST_OUT T1; // 启动1秒定时器
ST_OUT Aeration_On := FALSE; // 手动控制关闭
ST_OUT Aeration_Auto := TRUE; // 自动控制开启
ST_NEXT; // 跳转到下一个步骤
END_STEP
ST_STEP Step10 // 水泵计时
ST_OUT T1; // 启动1秒定时器
IF Pump_Count * Pump_Delay >= 3600 THEN // 计数器达到1小时
ST_OUT Pump_Count := 0; // 计数器清零
ST_JUMP Step2; // 跳转到水泵启动步骤
END_IF
ST_NEXT; // 跳转到下一个步骤
END_STEP
ST_STEP Step11 // 雾化器计时
ST_OUT T1; // 启动1秒定时器
IF Atomizer_Count * Atomizer_Delay >= 32400 THEN // 计数器达到9小时
ST_OUT Atomizer_Count := 0; // 计数器清零
ST_JUMP Step4; // 跳转到雾化器启动步骤
END_IF
ST_NEXT; // 跳转到下一个步骤
END_STEP
ST_STEP Step12 // 杀菌灯计时
ST_OUT T1; // 启动1秒定时器
IF Sterilization_Count * Sterilization_Delay >= 21600 THEN // 计数器达到6小时
ST_OUT Sterilization_Count := 0; // 计数器清零
ST_JUMP Step6; // 跳转到杀菌灯启动步骤
END_IF
ST_NEXT; // 跳转到下一个步骤
END_STEP
ST_STEP Step13 // 增氧泵计时
ST_OUT T1; // 启动1秒定时器
IF Aeration_Count * Aeration_Delay >= 14400 THEN // 计数器达到4小时
ST_OUT Aeration_Count := 0; // 计数器清零
ST_JUMP Step8; // 跳转到增氧泵启动步骤
END_IF
ST_NEXT; // 跳转到下一个步骤
END_STEP
// 启动步骤
ST_STEP Start
ST_JUMP Step1; // 跳转到启动延迟步骤
END_STEP
END_NETWORK
``
原文地址: https://www.cveoy.top/t/topic/cgxt 著作权归作者所有。请勿转载和采集!