在PLC程序的編寫過程中,可以使用狀態機的控制思路,將一些復雜的控制過程使用狀態機的方法處理。這里簡單給大家介紹一下什么是狀態機?如下圖所示,為一個狀態機的狀態圖。
從以上圖中可以看到,其是將動作執行的各個狀態進行了一個劃分、規劃。動作程序的執行就是使程序在不同的條件下進行各個狀態之間的轉換。
以上這些都比較抽象,初次接觸的話不是特別能讓人理解,接下來我們看一下一個程序功能如何拆分為狀態機的單個狀態。
如何拆分設計狀態機的狀態
狀態的選擇
一般將程序執行過程中,會存在停留、保持、等待等過程。在設計狀態的時候,就可以將狀態的最小單位設計為這些過程。例如,1、控制氣缸伸出/收回,這就可以選做狀態機的一個狀態;2、設備停止,等待接收命令,這也應該是一個狀態;3、啟動電機運行,電機運行到停止這也應該是一個狀態;
總的來說,在選擇狀態的時候,狀態在程序的時序結構上,在時間單位上應該是一個“保持”的狀態。
狀態之間的轉換
狀態轉換一定是要某種條件的。即狀態在處于保持的過程中,檢測到條件滿足,就進行狀態間的轉換。例如,氣缸伸出/收回這個狀態,在氣缸動作的過程中,其缸動作到位傳感器檢測到到位信號,則程序就應該轉換到下一個狀態。下一個狀態可以是另一個氣缸的動作、也可以是等待延時、還可以是其他設備流程上的步驟。
狀態機實現流程控制方法
舉例1
這里以機械手物料取放機構為例給大家分享。這個是我以前給大家分享的一篇文章PLC編程示例-機械手物料取放。在這篇文章中,我以類似于“流水線”的方式給大家分享如何處理這類流程控制邏輯。
這種方式簡單方便,編寫程序的時候就依照動作的流程順序執行下去就可以。但是如果設備的動作比較復雜,就可能會將這個“流水線”設計得非常得長。這當然不是一個優質的程序結構。但是如果使用狀態機的方式來處理,就可以將程序簡化許多。且程序的代碼質量也會提高不少。
舉例2
串口自定義協議實現過程。在處理串口通信的過程中,在進行數據傳輸的過程中一般都會有幾個動作,如串口狀態查詢、串口空閑查詢、數據發送、數據接收、異常檢測、異常處理。
同樣的,將串口通信的過程均使用狀態機的方式來進行處理,可以極大的簡化程序的結構。尤其在通信過程為動態變化的情況下,如某一時刻,僅需要數據發送流程;某一時刻,僅需要數據接收;某一時間既要發送又要接收;在處理此類流程復雜的過程時,選用狀態機的方式可以靈活的適用在各種變化的通信過程。
-
狀態機
+關注
關注
2文章
492瀏覽量
27486 -
PLC程序
+關注
關注
4文章
72瀏覽量
11265
發布評論請先 登錄
相關推薦
評論