首頁>科技>

在工作現場,經常會用到通訊與其它裝置互動資訊,而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:第二個資料值

30
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 環衛新能源領域或迎來最好的十年