在工作現場,經常會用到通訊與其它裝置互動資訊,而ABB機器人做為四大家族之一,通訊功能也是極其豐富。如果在現場要和PLC進行通訊,而PLC支援的是MODBUS TCP 通訊協議,ABB並沒有提供標準的MODBUS相關處理函式,要使用modbus/tcp,可以使用普通socket收發,按照modbus TCP格式進行資料傳輸。ABB工業機器人沒有專用的指令,因此只能作為客戶端。客戶端連線程式可以放在初始化程式中,每次執行連線一次即可。
要使用MODBUS TCP 通訊協議就必須瞭解它的資訊幀格式:
MODBUS TCP是結合了MODBUS協議和TCP/IP網路標準,它是MODBUS協議在TCP/IP上的具體實現,資料傳輸時在TCP報文中插入MODBUS 應用資料單元,Modbus協議賦予TCP埠號為502,這是目前在儀表與自動化行業中唯一分配到的埠號,所使用的硬體介面為乙太網介面。
MODBUS TCP資訊幀包含了報文頭、功能碼、資料3部分內容,其中訊息報文頭由四部分構成,共7個位元組,與MODBUS RTU相比,MODBUS TCP中不存在CRC校驗,校驗部分由TCP/IP協議和乙太網的鏈路層來完成。
資訊幀解讀:傳輸標符:2個位元組長度,標誌Modbus詢問/應答的傳輸,一般預設是00 00
協議識別符號:2個位元組長度,00 00 表示Modbus協議
資料長度:2個位元組長度,即從單元識別符號以後的資料個數
單元識別符號:1個位元組長度,相當於MODBUS RTU通訊中的從站站號
功能碼:1個位元組長度。可用於讀取裝置資料或者往裝置中寫入資料。
資料:根據讀取資料長度的不同。由n個位元組組成。
1.MODBUS/TCP基於乙太網,故ABB機器人在使用時需要有616-1PCINTERFACE選項。(在機器人主選單中,選擇“系統資訊”檢視選項)
2.MODBUS/TCP通訊介質使用普通網線即可,但是網線連線的是機器人控制器的“X5”網口中。
案例:1.ABB機器人現在要讀取除錯工具中的保持暫存器的值,從第6位元組開始讀取2個字,使用的功能碼為0X03。(除錯工具上設定IP地址127.0.0.1,埠號502)
2.讀取到了資料在機器人的示教器上顯示
3.機器人作為客戶端,除錯工具作為伺服器
機器人端程式編寫:
VAR socketdev socket1;定義一個套接字資料型別Socket1
VAR byte send_byte{12};定義一個位元組資料型別陣列send_byte{12}
VAR byte recv_byte{13};定義一個位元組資料型別陣列send_byte{13}
VAR num send_num; 定義傳送資料個數send_num
VAR num recv_num; 定義接收資料個數recv_num
PROC main()
SocketClose socket1; 關閉套接字
SocketCreate socket1;建立套接字
SocketConnect socket1,"127.0.0.1",502;指定連線的IP地址和埠號
send_byte{1}:=0X00; 傳輸識別符號
send_byte{2}:=0X00; 傳輸識別符號
send_byte{3}:=0X00; 協議識別符號
send_byte{4}:=0X00; 協議識別符號
send_byte{5}:=0X00; 長度
send_byte{6}:=0X06; 長度(00 06代表的是6個位元組長度)
send_byte{7}:=0XFF; 單元識別符號(任意設定)
send_byte{8}:=0X03; 功能碼
send_byte{9}:=0X00; 資料地址
send_byte{10}:=0X06;資料地址(暫存器地址)
send_byte{11}:=0X00; 資料個數
send_byte{12}:=0X02; 資料個數
send_num:=12;
recv_num:=13;
WHILE TRUE DO 死迴圈不斷收發資料
SocketSend socket1\data:=send_byte\NoOfBytes:=send_num;
注:\data代表的是陣列的格式傳送位元組資料型別
\NoOfBytes:指定傳送位元組數
SocketReceive socket1\data:=recv_byte\NoRecBytes:=recv_num;
TPErase;
TPWrite"server wrote-"+ValToStr(recv_byte);
WaitTime 2;
ENDWHILE
ENDPROC
在MODBUDS除錯工具中設定好IP地址和埠號(127.0.0.1和502),地址00 06和00 07這兩個地址的值,分別手動賦值是5和8。
在MODBUDS除錯工具“訊息”這一欄中可以看到資訊幀資料(藍色字型代表機器人給到除錯工具的,紅色字型代表除錯工具給到機器人的)
藍色字型(從左往右):
00 00傳輸表示符
00 00協議表示符
00 06 資料長度
FF: 單元識別符號
03: 功能碼
00 06: 暫存器地址
00 02: 資料個數
紅色字型(從左往右):
00 00:傳輸表示符
00 00:協議表示符
00 07 返回資料長度
01:單元識別符號
03:功能碼
00 04:4個位元組
00 05:第一個資料值
00 08:第二個資料值