這篇文章要探討的是如何多點強制SET、RESET,及如何解除被強制狀態的接點
多強制指令FK,指令說明如下:
每次只能指定一種控制元件,只能控制1組通道中的16個接點,而計時、計數器則一次只能控制1組,使用上反而不如單點強制簡單
控制命令的字串組成:起始碼+機號+指令+控制元件+通道號碼+接點狀態+偵誤碼+結束碼
控制元件的字串部分一定是4個字組成的字串,不足的部分要以空白(按鍵盤空白鍵)取代。另外說明上可控制的接點種類雖多,但實際上有些機種(尤其是小型低階機種)沒有,所以這裡要實做的僅限於各機種都有的部分,控制元件字串種類表示意義如下(空白部分以(S)代表):
CIO(S)→輸出入接點、輔助接點、特殊接點
LR(S)(S)→連接接點
HR(S)(S)→保持接點
AR(S)(S)→補助記憶接點
TIM(S)→計時器
TIMH→高速計時器
CNT(S)→計數器
CNTR→可反向(倒數)計數器
通道號碼是BCD碼10進制數值,使用範圍要查各機種的手冊
接點狀態手冊說明這樣寫只會造成混亂,不知道在寫什麼(尤其是中文版手冊錯誤更多)?而實做測試結果:每個接點狀態是用1個16進制數值文字代表,指令中共要用到16個字,內容由高位元排列到低位元
16進制數值文字的代表意義:
0→無處理
2→手冊上寫是指定為資料0,其實是接點OFF
3→手冊上寫是指定為資料1,其實是接點ON
4→強制RESET
5→強制SET
8→解除被強制為SET、RESET狀態的接點,成為資料0、1(OFF、ON)的狀態
※其中指定為2、3時,接點會受PLC內部程式的影響,也就是PLC程式優先於強制指令。若指定為4、5時則不受影響,也就是強制指令優先於PLC程式
※計時、計數器只能指定為4、5、8的狀態,必須指定在第15接點,其他接點一定要指定為0無處理狀態,否則會錯誤控制失敗。例如要計時、計數器強制為SET,接點狀態必須輸入5000000000000000
PLC回應的字串組成:起始碼+機號+指令+結束字串+偵誤碼+結束碼
控制面板程式設計的部份,因為控制元件和接點狀態是固定範圍字串,所以做成選單式,可避免輸入錯誤
控制元件的選單直接引用上一篇單點強制中的作法來完成
接點狀態選單用同樣方法製作,如下圖:
完成的程式控制面板如下圖:
控制元件已作成選單式
接點狀態選單另外在做成包含16個元件的1D陣列(1個通道16個接點)
同樣是3格流程控制方式,通訊參數和關閉通訊埠照慣例寫到外面
第1格同樣把所有通訊字串組合寫入PLC中
控制元件選單式元件引用上一篇單點強制的作法來輸出字串
接點狀態選單陣列要用另外的方法:先在程式中建立包含(0、2、3、4、5、8)等文字的1D陣列,再使用For Loop迴圈,把接點狀態選單陣列的內容一一轉換為文字,再把文字依順序組成字串
第2格延遲同樣要稍長一點,這裡設定是200
第3格一樣只是讀取PLC回應的字串,用來判定是否控制成功
接下來說明解除強制指令KC,指令說明如下:
控制命令的字串組成:起始碼+機號+指令+偵誤碼+結束碼
PLC回應的字串組成:起始碼+機號+指令+結束字串+偵誤碼+結束碼
因為程式簡單,所以大概解說,完成的程式如下圖:
照樣是3格流程控制方式,通訊參數和關閉通訊埠照慣例寫到外面
第1格同樣把所有通訊字串組合寫入PLC中
第2格延遲同樣要稍長一點,設太短回應會不正常
第3格照樣只一讀取PLC回應的字串,用來判定是否控制成功
強制解除指令是用來解除單點強制指令KS、KR和多點強制指令FK所強制保持住的接點,但只是解除強制狀態而已,並不會恢復原狀,所以在解除後ON的接點還是ON的狀態,OFF的接點還是OFF的狀態
因此在PROGRAM(程式書寫模式)下看不出這指令有何變化,因為PLC內程式並未執行,所以不會影響到接點
要發揮這指令的功能,PLC必須是在MONITOR(監看模式)狀態
留言列表