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