← 所有文章

點動 持續運轉與單次動作 三種操作命令怎麼定義

· 站長

比較點動、持續運轉與單次動作的觸發、保持及結束條件,測試忙碌與停止邊界。

先把問題拆開 定義狀態 請求與完成條件

三種命令的差別在生命週期:點動只跟著按鈕,持續運轉由請求啟動並等Stop,單次動作則鎖存一次目標直到完成。先把 Button、Request、Permit、Stop、Busy、Done 分開,任何命令都必須受Permit和Stop限制。

項目 應定義 不要混淆
JOG 按住且允許 放開或禁止
RUN 上升緣且待機 Stop/故障
ONE_SHOT 上升緣且待機 Done/Fail
Busy中再按 依規格拒絕 改寫工作

教學先用虛擬狀態與監看欄位,不接實體輸出。每一步都寫前置、操作、預期結果與失敗先查位置;這樣你在工程軟體中才能逐項核對,而不是只看最後一盞燈。

建立流程 先做狀態表 再寫轉移

先建立JogButton、RunRequest、OneShotRequest、JogRun、RunState、Busy與Done。點動每掃描以按鈕電平、Permit、Stop及互斥狀態決定JogRun,放開即撤銷。停止或禁止後須先放開再操作,不因Permit恢復而自動動作。RUN與ONE_SHOT採新的上升緣,Busy期間一律拒絕重入。

  1. 建立 Button、Stop、Permit、JogRun、RunState、Busy、Done。

  2. 點動按住確認 JogRun=1,放開後變 0。

  3. 持續運轉只出現一次上升緣,放開後仍保持。

  4. 單次動作 Busy 中再次按下,確認拒絕並記錄原因。

完成後應看到:狀態、操作請求、資料欄位與虛擬輸出一致。若不同,先查是否有其他程式段改寫狀態、在錯誤分支清除記憶,或取樣時機不一致。

具體合成案例 逐掃描核對正常與邊界

以下是三組各自重新初始化的獨立測試,不是連續五個掃描完成全部動作。點動按住兩次取樣可由0到5再到10,放開停在10;持續運轉啟動後即使放開仍運作,Stop使其退出;單次動作從0走到100,位置40收到新請求時拒絕,只有達目標且沒有停止或故障才產生Done。

掃描/條件 判斷 狀態 應看到的結果
點動A1 Button=1 Permit=1 JOG 位置0→5
點動A2 仍按住 JOG 位置5→10
點動A3 Button=0 IDLE 位置保持10
持續B1 新RunRequest RUN 放開仍持續
持續B2 Stop=1 IDLE 撤銷輸出 不回成功
單次C1 新OneShotRequest BUSY 目標100鎖定
單次C2 位置40 新請求 BUSY 拒絕新請求
單次C3 到100且無Stop DONE 只回一次成功

本例每次只採用一個狀態轉移,故障優先於一般操作;取消、停止與完成的細節依下列固定案例核對。不同設備改用其他政策時,文字、事件表與程式必須一起修改。

Stop與到達目標同時成立時,本例採Stop優先,回報中止而非Done。所有例子的立即停止都指本次邏輯判斷撤銷命令;實際機械停止時間另由硬體與控制設計決定。每掃描加五只是虛擬位置演示,不可當成與時間無關的速度控制。

按鍵長按 失去允許與恢復允許

先對點動做一個完整事件序列:按住、允許消失、允許恢復、放開、再次按下。本例在允許消失時撤銷命令,即使按鍵一直保持,允許恢復後也不自行點動;必須先放開再按下。這比只測按住與放開多兩個邊界,能查出禁止期間留下的舊操作。

持續運轉測試的關鍵是分開啟動事件與運轉狀態。按鈕放開後,啟動事件已經結束,但運轉狀態仍保持;停止成立時清除運轉狀態。停止解除後若按鈕仍高,也不能直接重新建立運轉,必須等到新的合法操作。否則看似使用上升緣,仍可能被不正確初始化繞過。

單次動作則要把目標與工作識別碼一起鎖定。忙碌中按第二次,原工作的位置、目標和識別碼都保持不變,只記錄被拒絕的新請求。到達目標後,先回報本次結果,再回待機;若原按鈕尚未放開,不把它當下一次操作。

把三種命令同時接到同一個虛擬輸出前,先做互斥判斷。本例同時收到兩種操作便拒絕並報衝突,不依程式排列順序挑一個執行。這個規則讓教學結果容易核對;若現場需要手動優先或特定模式優先,就改成明確矩陣並重跑所有組合。

最後檢查完成與中止的區別。單次動作走到目標才是成功;途中按停止,雖然輸出也變零,結果應是中止。畫面若只顯示已停止,使用者無法知道是否做完。保留工作識別碼、最後位置與結束原因,後續報表才不會把未完成動作算成完成。

失敗先查 適用限制與常見問題

觀察RunState、JogRun、Busy、位置與Done的時序。完成結果是點動放開即停、RUN受Stop、故障與禁止條件結束、ONE_SHOT只產生一次Done;失敗先查命令是否用上升沿、Stop是否優先於輸出,再查Busy期間是否錯誤覆寫目標。

三個常見問題

持續運轉可以只靠回授嗎?還要加 Stop、故障和模式許可。單次動作要上升緣嗎?通常要,避免長按重啟。點動放開仍動怎麼查?先查取樣與保持狀態。

測試三種命令時,不要只改按鈕而忽略操作速度。對點動要測一掃描短按、跨多掃描長按和按鈕在禁止條件成立時放開;對持續運轉要測啟動後 Stop 同掃描成立、故障中按下和重新 RUN;對單次動作要測完成瞬間再次按下、執行中長按和 Done 後仍未放開。將每次 Button、前次 Button、命令事件、Busy、位置與 ErrorCode 記錄下來,才能分辨是上升緣漏抓、狀態保持錯誤或完成條件錯誤。三種命令最後都應匯入同一個輸出允許決策點。

命令名稱和輸出名稱要分開,例如 RunRequest 不等於 RunPermit,JogRequest 不等於 JogRun。先計算所有請求,再套用 Stop、Fault、Mode 和互斥條件,最後只寫一次虛擬輸出。若同一掃描同時收到點動與持續運轉,本例全部拒絕並報命令衝突;若單次動作已完成,新的上升緣要等回到待機才接受。

教學時可以用三色狀態燈表示三種命令,但燈號只反映虛擬狀態,不能直接代表安全輸出。每次操作先看 Permit,再看命令事件,最後看 RunPermit;若燈亮而事件沒有變化,查綁定或取樣;若事件有變化而燈不亮,查狀態轉移與輸出決策。這個分層能把人機操作問題和 PLC 邏輯問題分開。

操作驗收與適用限制

驗收時應看到JogButton放開即停止、RUN遇Stop停止、ONE_SHOT只產生一次Done;Busy期間的新命令要留下拒絕原因。限制是位置更新與速度皆為虛擬案例,Q06UDVCPU實際輸出模組、脈波或馬達控制仍需依硬體與專案指令另行設計。

請做四項測試:點動按住與放開、RUN啟動與Stop、單次完成、Busy時重送。重新RUN前清除RunState與目標值,避免保持資料讓ONE_SHOT誤觸發;先在不接實體輸出的虛擬資料上核對。

參考:三菱 QnUCPU 使用手冊 程式執行與裝置資料

適用型號與限制:概念可套用具備位元與狀態資料的 PLC;實際指令、資料型別、計時單位、模式切換與復歸行為必須依目標 CPU、工程軟體和設備規格確認。

延伸閱讀


使用 PLC 工具箱 →