如何使用ST寫簡易圓盤類PLC程式
什麼是圓盤類機台
簡要定義:
- 至少有一個料件輸入站,一個成品輸出站
- 至少有一個圓盤
- 圓盤依製程有不同的分割數(或稱工位)
- 每個分割可放置一或多個工件
- 可用人工或送料機輸入料件
網路上找到的:
程式 Layout
一般我會把plc程式的架構切分如下:
- “Init” 初始化程式碼
- “Always” 放置常態執行程式碼,含 Function Block 的 Instance
- “Auto” 自動模式的控制
- “Manual” 手動模式控制
- “Error” 錯誤狀態控制碼
- “St1”
- “Stx” 各站的週期控制碼
狀態機
手/自動模式的管理,我習慣由統一的狀態機來執行,如圖:
若是較簡單的系統,就會簡化成只有手動/自動的切換,或依各別需求執行。
當然,各站別的動作也是自己的狀態機處理。自動模式時,主狀態機的作用只在喚起各站是否需要執行動作及判斷完成等狀態。
時序圖

- a:自動的第一個動作都是轉圓盤,後再讓各站作動
- b:圓盤到位後,St2Cycle才能作業
- c:St1、St2作業完成後才會再次轉動圓盤
圓盤基本上只有兩個狀態:
- 轉動中
- 到位停止中
而各站別基本上有兩種類型,
- 圓盤到位後才能作動的
- 可以先動作,圓盤到位後再接續作動
如上圖,St1屬於轉動中可偷跑的,而St2屬於到位後才能作動的。
Sample file
總結
其實有的寫法用ladder的型式去表現會較直覺,但是ST的好處在於方便寫程式碼自動產生器,在開發時能夠縮短不少時間。
寫ST時要注意:
- ":=" 等效 “out” 命令
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// assign a boolean value equals "out" command in converted ladder rung. | |
st1Cycle := true; |
- if 指令會佔用較多的steps空間
如果只有一行指令時,建議轉為單一的命令,雖然可讀性較差,但更省空間…
沒有留言:
張貼留言