自动化立体仓库控制系统-过程通信处理

过程通信处理FC100

#Temp0 := 0;
#Temp1 := 0;
#Temp2 := 0;
IF "模式自动I" THEN
    "DB10 堆垛机过程数据块".过程上位机电报交互完成标识 := 1;
END_IF;
FOR #Temp0 := 1 TO 32 BY 1 DO
    IF "DB10 堆垛机过程数据块".库台取货辅助标识[#Temp0] THEN
        #Temp1 := 1;
    END_IF;
    IF "DB10 堆垛机过程数据块".库台卸货辅助标识[#Temp0] THEN
        #Temp2 := 1;
    END_IF;
END_FOR;
IF "DB10 堆垛机过程数据块".过程上位机电报交互完成标识 THEN
    RETURN;
END_IF;

//取货完成 申请电报

IF "DB10 堆垛机过程数据块".流程顺序取货完毕判定 THEN  //取货完成
    IF NOT "DB10 堆垛机过程数据块".任务标识[1] AND NOT "DB10 堆垛机过程数据块".任务标识[5] THEN
        "DB10 堆垛机过程数据块".过程上位机电报交互完成标识 := 1;
        RETURN;
    ELSE
        IF "DB10 堆垛机过程数据块".任务标识[7] OR ("DB10 堆垛机过程数据块".任务标识[5] AND NOT #Temp1) THEN
            "DB10 堆垛机过程数据块".过程上位机电报交互完成标识 := 1;
            "DB10 堆垛机过程数据块".状态堆垛机当前状态[8] := 0;
            "DB10 堆垛机过程数据块".任务标识[7] := 0;
            RETURN;
        END_IF;
    END_IF;
    IF ("DB10 堆垛机过程数据块".任务标识[1] OR ("DB10 堆垛机过程数据块".任务标识[5] AND #Temp1)) AND NOT "DB10 堆垛机过程数据块".状态堆垛机当前状态[8] THEN
        "DB10 堆垛机过程数据块".状态堆垛机当前状态[8] := 1;
        "DB10 堆垛机过程数据块".电报发送定时启动[8] := 0;
    END_IF;
    //定时器
    #Temp4 := S_ODT(S := ("DB10 堆垛机过程数据块".任务标识[1] OR ("DB10 堆垛机过程数据块".任务标识[5] AND #Temp1))
                    AND "DB10 堆垛机过程数据块".状态堆垛机当前状态[8] AND "DB10 堆垛机过程数据块".电报发送定时启动[8]
                    AND "DB10 堆垛机过程数据块".电报发送标识[8],
                    T_NO := "取货完成定时发送定时器", TV := S5T#5S, Q => #Temp3);
    IF "DB10 堆垛机过程数据块".状态堆垛机当前状态[8] THEN
        "DB10 堆垛机过程数据块".电报发送定时启动[8] := 1;
    END_IF;
    IF #Temp3 THEN
        "DB10 堆垛机过程数据块".电报发送定时启动[8] := 0;
        "DB10 堆垛机过程数据块".电报发送标识[8] := 0;
    END_IF;
END_IF;

//卸货申请 申请电报

IF "DB10 堆垛机过程数据块".流程顺序卸货探货处理 THEN
    IF NOT "DB10 堆垛机过程数据块".任务标识[2] AND NOT "DB10 堆垛机过程数据块".任务标识[5] THEN
        "DB10 堆垛机过程数据块".过程上位机电报交互完成标识 := 1;
        RETURN;
    ELSE
        IF "DB10 堆垛机过程数据块".任务标识[6] OR ("DB10 堆垛机过程数据块".任务标识[5] AND NOT #Temp2) OR ("DB10 堆垛机过程数据块".系统S7链接建立标识 AND #Temp2) THEN
            "DB10 堆垛机过程数据块".过程上位机电报交互完成标识 := 1;
            RETURN;
        END_IF;
    END_IF;
    IF "DB10 堆垛机过程数据块".系统S7链接建立标识 AND #Temp2 THEN
        RETURN;
    ELSE
        IF ("DB10 堆垛机过程数据块".任务标识[2] OR ("DB10 堆垛机过程数据块".任务标识[5] AND #Temp2)) AND NOT "DB10 堆垛机过程数据块".状态堆垛机当前状态[7] THEN
            "DB10 堆垛机过程数据块".状态堆垛机当前状态[7] := 1;
            "DB10 堆垛机过程数据块".电报发送定时启动[7] := 0;
        END_IF;
        //定时器
        #Temp4 := S_ODT(S := ("DB10 堆垛机过程数据块".任务标识[2] OR ("DB10 堆垛机过程数据块".任务标识[5] AND NOT #Temp2))
                        AND "DB10 堆垛机过程数据块".状态堆垛机当前状态[7] AND "DB10 堆垛机过程数据块".电报发送定时启动[7]
                        AND "DB10 堆垛机过程数据块".电报发送标识[7],
                        T_NO := "卸货申请定时发送定时器", TV := S5T#5S, Q => #Temp3);
        IF "DB10 堆垛机过程数据块".状态堆垛机当前状态[7] THEN
            "DB10 堆垛机过程数据块".电报发送定时启动[7] := 1;
        END_IF;
        IF #Temp3 THEN
            "DB10 堆垛机过程数据块".电报发送定时启动[7] := 0;
            "DB10 堆垛机过程数据块".电报发送标识[7] := 0;
        END_IF;
    END_IF;
END_IF;

//作业完成 申请电报

IF "DB10 堆垛机过程数据块".流程顺序卸货电报处理 THEN
    IF "DB10 堆垛机过程数据块".任务标识[1] AND NOT "DB10 堆垛机过程数据块".状态堆垛机当前状态[4] THEN
        "DB10 堆垛机过程数据块".状态堆垛机当前状态[4] := 1;
        "DB10 堆垛机过程数据块".电报发送定时启动[1] := 0;
    ELSIF "DB10 堆垛机过程数据块".任务标识[2] AND NOT "DB10 堆垛机过程数据块".状态堆垛机当前状态[5] THEN
        "DB10 堆垛机过程数据块".状态堆垛机当前状态[5] := 1;
        "DB10 堆垛机过程数据块".电报发送定时启动[1] := 0;
    ELSIF "DB10 堆垛机过程数据块".任务标识[5] AND NOT "DB10 堆垛机过程数据块".状态堆垛机当前状态[6] THEN
        "DB10 堆垛机过程数据块".状态堆垛机当前状态[6] := 1;
        "DB10 堆垛机过程数据块".电报发送定时启动[1] := 0;
    END_IF;
    //定时器
    #Temp4 := S_ODT(S := (("DB10 堆垛机过程数据块".状态堆垛机当前状态[4] AND "DB10 堆垛机过程数据块".电报发送标识[1])
                    OR ("DB10 堆垛机过程数据块".状态堆垛机当前状态[5] AND "DB10 堆垛机过程数据块".电报发送标识[2])
                    OR ("DB10 堆垛机过程数据块".状态堆垛机当前状态[6] AND "DB10 堆垛机过程数据块".电报发送标识[5]))
                    AND "DB10 堆垛机过程数据块".电报发送定时启动[1],
                    T_NO := "作业完成定时发送定时器", TV := S5T#5S, Q => #Temp3);
    
    IF "DB10 堆垛机过程数据块".状态堆垛机当前状态[4] OR "DB10 堆垛机过程数据块".状态堆垛机当前状态[5] OR "DB10 堆垛机过程数据块".状态堆垛机当前状态[6] THEN
        "DB10 堆垛机过程数据块".电报发送定时启动[1] := 1;
    END_IF;
    IF #Temp3 THEN
        "DB10 堆垛机过程数据块".电报发送标识[1] := 0;
        "DB10 堆垛机过程数据块".电报发送标识[2] := 0;
        "DB10 堆垛机过程数据块".电报发送标识[5] := 0;
        "DB10 堆垛机过程数据块".电报发送定时启动[1] := 0;
    END_IF;
END_IF;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

!chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值