ab-plc之間通訊
ab-plc之間進行通訊比較常用的方法有兩種:
第一種:使用生產者/消費者,通過設置數據類型方式進行通信
第二種:使用msg指令,進行通信
兩種通訊方式有什么區別?
在生產者/消費者通信中,生產者數據所在的plc必須在消費者plc網絡組態中,而使用msg指令進行數據交換則沒有此項要求。
使用生產者-消費者數據通訊:
所謂消費者就是需要接收的數據、主動讀取數據的那一方,生產者就是被讀取數據、發送數據那一方。下面定義plc-a為生產者plc,plc-b為消費者plc,通訊步驟如下:
(1) plc-a控制器標簽中定義需要發送的數據區,數據類型為生產型;plc-b控制器標簽中定義接收數據區,數據類型為消費
(2) 設置plc-b中消費者標簽的連接屬性,在remote data屬性中填寫對應于plc-a中生產者變量名稱即可
ps:這里需要注意,標簽必須創建在控制器區域,全局數據區;傳送數據的標簽不能超過500個字節,如果是通過controlnet網絡數據交換,數據標簽則不能超過480?個字節,這是受限于contronet?網絡的數據包的尺寸;如果produce幾個數據到同一個控制器,將幾個數據合并在一個用戶自定義結構的數據標簽中,這樣可以減少連接數,合并后的數據會用相同的rpi;標簽只能使用dint和real,或它們的數組,或者用戶自定義結構數據,因為對外操作數據必須是32位的;如果有sint和int的數據需要傳送,將它們組合在用戶自定義結構中傳送;produce的標簽和consume的標簽數據格式必須一致,才能確保數據的準確。
使用msg指令通訊:
(1)建立數據類型為messsage結構的標簽,每一條msg指令調用之前都要分配一個標簽,這個標簽將記錄本條指令的通訊組態和執行情況
只有為指令分配了標簽后,點擊 方可進入組態界面:
說明:
? 對控制器以外的各種設備傳送信息,它的信息類型如下所列:
-cip data table read/write 對controllogix控制器進行讀寫
-plc5 typed read/write 對plc5處理器進行讀寫
-plc5 word range read/write 對類似plc5處理器地址進行讀寫
-block transfer read/write 對塊傳送模塊進行讀寫
-plc2 unprotected read/write 對plc2處理器及類似plc2地址(寄存器地址)的設備進行讀寫。
-plc3 typed read/write對plc3處理器進行讀寫
-plc3 word range read/write,對類似plc3處理器地址進行讀寫。
-slc typed read/write對slc處理器進行讀寫
-module reconfigure 在模塊仍然連接時,對模塊進行重新組態 。
-cip generic 對任何設備的服務性操作。
? 本指令執行的狀態
-enable 指令級條件成立,指令被使能,開始工作。
-enable waiting 信息傳送請求被送到緩沖區,等待傳送。
-start 緩沖區排隊輪到,開始傳送數據。
-done 數據傳送完畢,指令置位完成。
-done length 實際完成的數據塊長度
-error code 如指令執行失敗,此處給出16進制的錯誤代碼00xx。
-extended error code 給出16進制的擴展錯誤代碼xxxx。
-tined out 設置超時請求,此項選擇,當發生超時,終止msg傳送過程。
(2)以 controllogix 控制器與controllogix 控制器的通訊為例
源或目標的標簽地址不是引用tag名,而是tag的第一個元素,否則認為是語法錯誤,梯級不能接受。
元素個數最多可有65335個,盡管controlnet 的數據包最多只有500個字節,msg指令可將數據塊拆開,分成一個以上的數據包送走。
communication 頁面要求輸入兩個控制器之間的通訊路徑,如果在i/o組態中有該控制器,亦可通過browse獲得路徑,倘若僅僅是為了建立msg路徑而在i/o組態中加入控制器,則沒有必要,那樣將占用內存空間,建議書寫路徑,路徑書寫規則:
路徑是段和段的連接,段由x,y組成,段和段之間用逗號分離。
? x 背板為1;網絡為2。
? y 槽號;站號,controlnet網絡1-99號,ethernet網絡為ip地址。
上面書寫的路徑是:背板(1)—cnb(位于5槽)—controlnet網絡(2)—對方cnb(站號3號)— 背板(1) — 控制器(位于0槽)。
路徑還可以是動態的,在信息塊的結構數據中,有path一項,這是個字符串結構,更換字符串數據即更換了路徑,字符串的長度最大82個,足夠表達路徑了。
,此項建立了msg指令的連接,缺省是選擇的,也就是說msg指令占用一個固定的連接;如果釋放此項,只有在msg指令執行的時候才占用連接,是一個活動的連接,可編制程序,令多條msg指令共同使用一個連接,這對緩和資源的運用是有好處的。










