Codesys编写红路灯程序(ST语言)

使用Codesys平台编写一个红绿灯程序(后附代码)

编写逻辑

状态定义:定义了一个结构体 TrafficLightState 来表示红绿灯的状态。
变量声明:声明了一个 TrafficLight 变量来存储当前的红绿灯状态,一个 Timer 变量来控制状态切换的时间,以及一个 CurrentState 变量来表示当前的状态。
主程序逻辑:使用 CASE 语句来根据 CurrentState 的值来切换红绿灯的状态。每个状态都有一个对应的计时器来控制状态的持续时间。

运行效果
初始状态为红灯,持续5秒。
然后切换到绿灯,持续5秒。
最后切换到黄灯,持续2秒。
循环往复。

代码

创建一个结构体
Application——右击选择添加对象——DUT——命名为TrafficLightState
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

TYPE TrafficLightState:
STRUCT
	Red : BOOL;
    Yellow : BOOL;
    Green : BOOL;
END_STRUCT
END_TYPE
PROGRAM PLC_PRG
VAR
    TrafficLight1 : TrafficLightState;
    Timer : TON;
    CurrentState : INT := 0;
END_VAR

// 初始化
TrafficLight1.Red := TRUE;
TrafficLight1.Yellow := FALSE;
TrafficLight1.Green := FALSE;

//主循环
CASE CurrentState OF
    0: // 红灯状态
        TrafficLight1.Red := TRUE;
        TrafficLight1.Yellow := FALSE;
        TrafficLight1.Green := FALSE;
        Timer(IN := TRUE, PT := T#5s);
        IF Timer.Q THEN
            Timer(IN := FALSE);
            CurrentState := 1;
        END_IF
    1: // 绿灯状态
        TrafficLight1.Red := FALSE;
        TrafficLight1.Yellow := FALSE;
        TrafficLight1.Green := TRUE;
        Timer(IN := TRUE, PT := T#5s);
        IF Timer.Q THEN
            Timer(IN := FALSE);
            CurrentState := 2;
        END_IF
    2: // 黄灯状态
        TrafficLight1.Red := FALSE;
        TrafficLight1.Yellow := TRUE;
        TrafficLight1.Green := FALSE;
        Timer(IN := TRUE, PT := T#2s);
        IF Timer.Q THEN
            Timer(IN := FALSE);
            CurrentState := 0;
        END_IF
END_CASE





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值