| 復制代碼 (****************************************************************************** * 從自動包裝切換到手動操作 * 如果前面進行過“自動包裝”,切換到“手動操作”時進行一次初始化 *****************************************************************************)IF HmiKey_ManualOP THEN        IF( bMode_Manual = FALSE ) THEN                bMode_Manual := TRUE;        bMode_Auto   := FALSE;        HmiKey_AutoPack := FALSE;        HmiKey_FillPack := FALSE;        HmiKey_EmptyBagTest := FALSE;        HmiKey_FillBagOne := FALSE;                ZRST( TRUE, Y001, Y004 );         ZRST( TRUE, Y006, Y007 );         ZRST( TRUE, Y010, Y011 );         ZRST( TRUE, Y013, Y017 );                ZRST( TRUE, Y020, Y027 );                 Tcnt_10[ IDX_DOWN_FILL_DLY ].reset := TRUE;            Tcnt_10[ IDX_DOWN_FILL ].reset := TRUE;            Tcnt_10[ IDX_PULL_FILM_DLY ].reset := TRUE;            Tcnt_10[ IDX_VERT_SEAL_DLY ].reset := TRUE;            Tcnt_10[ IDX_VERT_SEAL ].reset := TRUE;                    Tcnt_10[ IDX_KNURL_DLY ].reset := TRUE;            Tcnt_10[ IDX_KNURL ].reset := TRUE;            Tcnt_10[ IDX_VACUUM_BOX_CLOSE_DLY ].reset := TRUE;            Tcnt_10[ IDX_BAG_FOLD_DLY ].reset := TRUE;            Tcnt_10[ IDX_BAG_FOLD ].reset := TRUE;                                            Tcnt_10[ IDX_BAG_CUT_DLY ].reset := TRUE;                            Tcnt_10[ IDX_BAG_CUT ].reset := TRUE;                                Tcnt_10[ IDX_VACUUMIZE ].reset := TRUE;                            Tcnt_10[ IDX_HEAT_SEAL ].reset := TRUE;                        Tcnt_10[ IDX_SEAL_KEEP ].reset := TRUE;                            Tcnt_10[ IDX_SEAL_COOL ].reset := TRUE;                            END_IF;    ELSE    RST( TRUE, bMode_Manual );    END_IF; (****************************************************************************** * 從手動操作切換到自動包裝 * 如果前面進行過“手動操作”,切換到“自動包裝”時進行一次初始化 *****************************************************************************)IF HmiKey_AutoPack THEN        IF( bMode_Auto = FALSE ) THEN      (* 初始化 *)                bMode_Auto   := TRUE;        bMode_Manual := FALSE;             HmiKey_ManualOP := FALSE;        HmiKey_Knurling := FALSE;                ZRST( TRUE, Y001, Y004 );         ZRST( TRUE, Y006, Y007 );         ZRST( TRUE, Y010, Y011 );         ZRST( TRUE, Y013, Y017 );                ZRST( TRUE, Y020, Y027 );                         Tcnt_10[ IDX_DOWN_FILL_DLY ].reset := TRUE;            Tcnt_10[ IDX_DOWN_FILL ].reset := TRUE;            Tcnt_10[ IDX_PULL_FILM_DLY ].reset := TRUE;            Tcnt_10[ IDX_VERT_SEAL_DLY ].reset := TRUE;            Tcnt_10[ IDX_VERT_SEAL ].reset := TRUE;                    Tcnt_10[ IDX_KNURL_DLY ].reset := TRUE;            Tcnt_10[ IDX_KNURL ].reset := TRUE;            Tcnt_10[ IDX_VACUUM_BOX_CLOSE_DLY ].reset := TRUE;            Tcnt_10[ IDX_BAG_FOLD_DLY ].reset := TRUE;            Tcnt_10[ IDX_BAG_FOLD ].reset := TRUE;                                            Tcnt_10[ IDX_BAG_CUT_DLY ].reset := TRUE;                            Tcnt_10[ IDX_BAG_CUT ].reset := TRUE;                                Tcnt_10[ IDX_VACUUMIZE ].reset := TRUE;                            Tcnt_10[ IDX_HEAT_SEAL ].reset := TRUE;                        Tcnt_10[ IDX_SEAL_KEEP ].reset := TRUE;                            Tcnt_10[ IDX_SEAL_COOL ].reset := TRUE;            END_IF;    ELSE    bMode_Auto := FALSE;               (* 如果切換到“手動操作”,這條語句必然被執行 *)    END_IF;(****************************************************************************** * brief  按鍵掃描與互鎖 * note    *****************************************************************************) HmiKey_Scan_InterLock();    (****************************************************************************** * brief  自動包裝(填充包裝)按鍵事件處理 * note  *****************************************************************************) (* 按鍵生效,下降沿 *) IF( LDP( TRUE, KeyID_FillPack ) AND ( bY0_out_watch = FALSE ) ) THEN                  PackingFlow := FLOW_STANDBY;            END_IF; (* 按鍵生效,下降沿 *)     IF( LDF( TRUE, KeyID_FillPack ) ) THEN                  PackingFlow := FLOW_END;                           END_IF;(****************************************************************************** * brief  空袋調試 按鍵事件處理 * note *****************************************************************************)  (* 按鍵生效,上升沿 *) IF( LDP( TRUE, KeyID_EmptyBagTest ) AND ( bY0_out_watch = FALSE ) ) THEN                  PackingFlow := FLOW_STANDBY;            END_IF; (* 按鍵生效,下降沿 *)     IF( LDF( TRUE, KeyID_EmptyBagTest ) ) THEN                  PackingFlow := FLOW_END;                           END_IF; (****************************************************************************** * brief 制袋一個 按鍵事件處理 * note  *****************************************************************************)          (* 按鍵生效,下降沿 *) IF( LDP( TRUE, KeyID_FillBagOne ) AND ( bY0_out_watch = FALSE ) ) THEN                  PackingFlow := FLOW_STANDBY;            END_IF; (* 按鍵生效,下降沿 *)     IF( LDF( TRUE, KeyID_FillBagOne ) ) THEN                  PackingFlow := FLOW_END;                           END_IF; (****************************************************************************** * 拉膜皮帶 * * 伺服電機通過傳動桿驅動拉膜皮帶,拉膜氣缸控制拉膜皮帶: * 抱緊下料筒的包裝膜 * 松開下料筒的包裝膜 *****************************************************************************) IF( bMode_Auto )  THEN         IF( HmiKey_BeltFlimPull ) THEN                           SET( TRUE, Y_BeltPullFilm_cylinder );             ELSE                  RST( TRUE, Y_BeltPullFilm_cylinder );             END_IF;     END_IF;(****************************************************************************** * 真空泵 *  *****************************************************************************)IF( bMode_Auto ) THEN        IF( HmiKey_VacuumPump ) THEN                 SET( TRUE, Y_VacuumPump_SSR );            ELSE                 RST( TRUE,Y_VacuumPump_SSR );            END_IF;    END_IF;   (****************************************************************************** * 跑遍糾正 * * HmiPB_MoveLeft     HMI“自動包裝”界面“跑偏糾正”左移按鈕 * HmiPB_MoveRight    HMI“自動包裝”界面“跑偏糾正”右移按鈕 * Limit_Left         左移限位開關 * Limit_Right        右移限位開關 *****************************************************************************)IF( HmiKey_MoveLeft AND ( NOT ix_PackFilm_Limit_L ) ) THEN        SET( TRUE, Y_MoveLeft_SSR );     ELSE        RST( TRUE, Y_MoveLeft_SSR );    END_IF;IF( HmiKey_MoveRight  AND ( NOT ix_PackFilm_Limit_R ) )THEN        SET( TRUE, Y_MoveRight_SSR );    ELSE        RST( TRUE, Y_MoveRight_SSR );    END_IF; 
 |