2301_78440508 2023-06-13 11:17 采纳率: 50%
浏览 23

这种用西门子plc怎么写?

img


21控制要求如下
系统开始运行时,要确定系统处于初始标态,如果处于初始状态,显示屏显示数字“000”,系统可以启动进行工作。
(1)按下启动按钮及水位选择开关开始进水,进水时显示屏显示数字“118”不倒计时直到高水位停止进水并开始洗涤。
(2)洗涤时,开始倒计时,正转15秒后暂停,暂停3秒后,然后开始反转洗涤15秒,然后暂停3秒。
(3)循环3次共108秒后开始排水,排水不倒计时,排到低水位脱水10秒
(4)开始清洗,重复(1)-(3)洗涤3遍。
(5)整个过程显示屏跟随倒计时。
(6)清洗完成、报警10秒(不计入售计时)并自动停机。
(7) 按下停止按钮,可手动排水和手动脱水

  • 写回答

1条回答 默认 最新

  • 小杰911 2023-06-14 09:15
    关注
    
    // 定义变量
    VAR
        iCount : INT; // 倒计时时间,单位为秒
        iState : INT; // 系统状态,0表示初始状态,1表示进水状态,2表示洗涤状态,3表示排水状态,4表示清洗状态
        iCycle : INT; // 清洗循环次数,最多为3次
    END_VAR
    
    // 初始化
    iCount := 0;
    iState := 0;
    iCycle := 0;
    
    // 主程序
    WHILE TRUE DO
        // 判断系统状态
        CASE iState OF
            // 初始状态
            0:
                // 显示屏显示数字“000// 如果按下启动按钮及水位选择开关
                IF (StartButton AND WaterLevelSwitch) THEN
                    // 进入进水状态
                    iState := 1;
                    // 显示屏显示数字“118// 不倒计时直到高水位停止进水并开始洗涤
                END_IF
            // 进水状态
            1:
                // 显示屏显示数字“118”
                CountDown(0); // 不倒计时
                // 如果高水位停止进水
                IF HighWaterLevel THEN
                    // 进入洗涤状态
                    iState := 2;
                    // 倒计时15秒
                    iCount := 15;
                END_IF
            // 洗涤状态
            2:
                // 倒计时
                CountDown(iCount);
                // 如果倒计时时间到
                IF (iCount = 0) THEN
                    // 如果正转
                    IF ForwardRotation THEN
                        // 暂停3秒
                        iCount := 3;
                    // 如果反转
                    ELSE
                        // 暂停3秒
                        iCount := 3;
                        // 如果循环次数不够
                        IF (iCycle < 2) THEN
                            // 进入下一个循环
                            iCycle := iCycle + 1;
                            // 进入进水状态
                            iState := 1;
                            // 显示屏显示数字“118// 不倒计时直到高水位停止进水并开始洗涤
                        // 如果循环次数够了
                        ELSE
                            // 进入排水状态
                            iState := 3;
                            // 排水不倒计时
                        END_IF
                    END_IF
                END_IF
            // 排水状态
            3:
                // 排水不倒计时
                // 如果低水位脱水10秒
                IF (LowWaterLevel AND (iCount >= 10)) THEN
                    // 进入清洗状态
                    iState := 4;
                    // 清洗循环次数加1
                    iCycle := iCycle + 1;
                    // 如果清洗循环次数不够
                    IF (iCycle < 3) THEN
                        // 进入进水状态
                        iState := 1;
                        // 显示屏显示数字“118// 不倒计时直到高水位停止进水并开始洗涤
                    // 如果清洗循环次数够了
                    ELSE
                        // 清洗完成,报警10秒并自动停机
                  
    
    
    
                    // 倒计时10秒
                    iCount := 10;
                END_IF
    
                END_IF
            // 清洗状态
            4:
                // 重复洗涤过程
                iState := 2;
            // 报警状态
            5:
                // 报警10秒
                CountDown(iCount);
                // 如果倒计时时间到
                IF (iCount = 0) THEN
                    // 自动停机
                    iState := 6;
                END_IF
            // 停机状态
            6:
                // 如果按下停止按钮
                IF StopButton THEN
                    // 手动排水和手动脱水
                    // 进入初始状态
                    iState := 0;
                    // 显示屏显示数字“000”
                END_IF
        END_CASE
    END_WHILE
    
    评论

报告相同问题?

问题事件

  • 创建了问题 6月13日