不同於三菱PLC一道命令適用於各種接點和資料的讀取,OMRON PLC對接點和資料的讀取命令依用途是不同的,這次要研究的是輸出入及輔助和特殊接點的監控技術
首先要說明的是OMRON PLC接點的編號原則:
輸出入接點(相當於三菱的XY接點)、輔助接點(相當於三菱的M接點)、特殊接點(相當於三菱的特M接點)和三菱有何不同?
三菱的輸出入接點是8進制編號,而輔助和特殊接點則是10進制。OMRON PLC則全部是通道制,每個通道都是16位元編號為0~15,也就是位元編號的組成是通道號碼+位元號碼
另外OMRON PLC通道和接點的編號全系列都採用BCD碼編號,數值除了0~9外沒有其他數值
※BCD碼是PLC用的10進制數值系統,以每4個位元代表1個數值。4個位元可表示的數值是0~F,但BCD碼只取用0~9的部份
了解以上編號和BCD碼的觀念後,再來要實際討論多接點讀取命令RR,指令說明如下圖:
多點讀取的命令字串組成:起始碼+機號+指令+開始通道編號+讀取通道數量+偵誤碼+結束碼
開始通道編號是BCD碼10進制的,不同系列PLC的編號範圍是不同的,下命令前先查清楚PLC的手冊,不要輸入不存在的通道編號
讀取通道數量也是BCD碼10進制的,輸入的範圍是0001~0256,理論上最多可讀取256組通道。但有些通道(如輸出入接點)實際上並沒有那麼多組,所以輸入的組數不要超過實際通道的範圍
要特別注意的是讀取越多組通道需要更久的延遲時間,所以要的是監控的速率或是最多的監控組數,這個平衡點要衡量一下
PLC回應的字串組成:起始碼+機號+指令+結束字串+第1通道資料+...+第n通道資料+偵誤碼+結束碼
要注意的是超過30個通道的資料會自動切割分組,不會顯示在同一字串上。另外每一通道的資料是由4個16進制數值字元組成,在程式處理上要注意這點
※注意輸出入接點是硬體接點,通常依不同系列每個通道只會用到6、8、12個點,若在程式中沒把那些沒用到的點當輔助接點用,則那些點全部是OFF
程式面板配置如下:
輸出的PLC回應字串只是觀察用,不需要的可以刪除。而每個通道的接點狀態則用2D的LED陣列顯示,2D的陣列組成是16×n
※這範例只讀取2組輸入通道,所以陣列是16×2。因為用的機種輸入是24點,每個通道是12點,所以可以看到不使用的點全是OFF
完成的程式架構如下圖,比之前的程式稍複雜點
但還是基本的3格動作流程控制結構,通訊參數和關閉通訊埠照慣例寫到格子外
第一格和之前文章相同把所有命令字串合成再寫入PLC內
為了拆解讀回來的資料,要把讀取數量的字串轉為數值傳到第3格
這裡有個重點:因為讀取數量是BCD碼,所以絕不能直接用字串轉數值元件去轉換。要先把每個字元分開拆解,各別轉為數值,再乘上相對應的倍數,最後在全部相加
第2格延遲時間照前面所寫要長一點,這範例讀取2組通道,所以設定為200
第3格要把讀回來的資料轉換成LED元件的Boolean狀態
這範例中可以看到傳回的字串是@00RR000248053149*(ASCII碼13),藍字標示的就是所有通道資料。因為讀取2個通道,所以有8個字元,而每個通道的資料排列是由左邊高位元往低位元排列。而第1個通道的資料0248中,第1個字為0的原因是硬體上沒有那些接點
拆解資料的重點是先分開每個通道的資料,分開的資料再把每個字元再分離,分離的字元再轉換為Boolean狀態,轉換後的資料按低位元往高位元串接,完成1個通道的轉換。最後再按照通道順序組成陣列輸出
以上拆解法實做時要用2個For Loop迴圈:外圈是分開每個通道的資料,執行次數就是第1格讀取組數轉換的數值。內圈執行次數是4次,就是要把每個通道的4個字元拆開處理
以上程式還可以應用到以下2個指令:
1.RL讀取連接接點LR通道
2.RH讀取保持接點HR通道
除了指令不同外,讀回來的資料處理方法是相同的
留言列表