EC機器人RS485通訊協(xié)議
1. 控制柜485
艾利特機器人EC系列支持RS485通訊,用戶可以通過將 RS485 設(shè)備連接到圖 7-27 中所示的連接器來從控制柜執(zhí)行串行通信。為了能在控制柜中設(shè)置 RS485 連接器,必須拆掉串口連接 器,并將 RS485 線焊接到黑色連接器背面的金屬觸點,如圖 7-28 所示。黑色塑料裝置的正反 面分別標(biāo)有 PIN“1 3 5”和“2 4 6”。PIN3 應(yīng)焊接到 RS485B,PIN4 應(yīng)焊接 到 RS485A。該 接口支持的最大波特率為 500Kbps。

2. 工具IO485
艾利特機器人同樣支持末端工具485通訊,當(dāng)需要使用末端 RS485 接口與執(zhí)行器通信時, 注意從機器人控制器上寫入發(fā)送數(shù)據(jù)到數(shù)據(jù)在末端工具 I/O 的 RS485上開始發(fā)送,延遲范圍為 2ms 到 4ms。 從末端工具 I/O 的 RS485 上開始接收數(shù)據(jù)到機器人控制器收到數(shù)據(jù)并開始處理,延遲范 圍為 2ms 到4ms。本篇文章介紹控制柜實現(xiàn)485通訊方式,工具端485查詢腳本手冊。
下表為RS485 接口的可用設(shè)置


3. 控制柜腳本指令
3.1 打開 485 接口
ret rs485_open ()
功能: 用于打開 485 接口
參數(shù): 無
返回值: ret: 大于等于 0:打開成功 -1:打開失敗
示例: ret= rs485_open ()
3.2 設(shè)置 485 串口配置
ret rs485_setopt (speed ,bits ,event ,stop)
功能: rs485_setopt 用于設(shè)置 485 串口的配置
參數(shù): speed: 波特率,int類型
bits: 數(shù)據(jù)長度 7/8,int類型
event: 奇偶校驗“O”,“N”,“E”,int類型
stop: 停止位 1/2,int類型
返回值: ret: 大于等于 0:設(shè)置成功 -1:設(shè)置失敗
示例: ret= rs485_setopt (9600 ,8 ,"N",1)
3.3 接收數(shù)據(jù)
ret , recv_buff rs485_recv (time_out ,hex ,len)
功能: 參數(shù): rs485_recv 用于 485 的讀操作
time_out: 超時時間,單位:ms,int類型
hex: 是否為 16 進制數(shù),1 的接收到的數(shù)據(jù)為 16 進制字符格式(默認(rèn)為 0),int類型
len: 可選參數(shù),想要獲取的長度,在超過 1024 情況下,會自動被設(shè)置成 1024,int類型
返回值: ret: 讀到的長度(都是轉(zhuǎn)化為字符長度) 0,-1:讀取失敗 recv_buff: 獲取數(shù)據(jù) 示例: ret , recv_buff = rs485_recv (100 ,0 ,512)
3.4 發(fā)送數(shù)據(jù)
ret rs485_send (buff ,hex)
功能: rs485_send 用于 485 的發(fā)送操作
參數(shù): buff: 需要發(fā)送的字符,string類型
hex: 是否為 16 進制數(shù),1 的發(fā)送的數(shù)據(jù)為 16 進制字符格式,int類型
返回值: ret: 1:發(fā)送成功 -1:發(fā)送失敗
示例: ret= rs485_send ("test",0)
3.5 關(guān)閉 485 接口
ret rs485_close ()
功能: rs485_close 用于關(guān)閉 485 接口
參數(shù): 無
返回值: ret: 大于等于 0:關(guān)閉成功 -1:關(guān)閉失敗
示例: ret= rs485_close ()
3.6 腳本示例
sleep(1)
open = rs485_open () --打開控制柜485接口
if(open >= 0) then
set = rs485_setopt (9600 ,8 ,"N",1) --配置控制柜485串口
elite_print ("set = ", set)
if(set >= 0) then
while(1) do
repeat
ret , recv_buff = rs485_recv (500 ,0)--接收485數(shù)據(jù)
sleep(0.001)
until(ret ~=0)
elite_print("receive data :",recv_buff)
rs485_send ( recv_buff ) --發(fā)送485數(shù)據(jù)
end
sleep(0.01)
end
end
rs485_close ()
4.工具IO腳本指令
4.1 打開末端485接口
ret tci_open()
功能: 用于打開末端485接口
參數(shù):無
返回值:ret:大于等于0:打開成功,-1:打開失敗
備注:無
示例: ret: ret=tci_open()
4.2 設(shè)置TCI串口的配置
ret tci_setopt(speed,bits,event,stop)
功能: 用于設(shè)置 TCI 串口的配置
參數(shù): speed: 波特率,int類型 bits: 數(shù)據(jù)長度 8,int類型 event: 奇偶校驗“O”,“N”,“E”,
string類型 stop: 停止位 1/2,int類型
返回值:ret: 大于等于0:設(shè)置成功-1:設(shè)置失敗
示例: ret=tci_setopt(9600,8,"N",1)
4.3 接收數(shù)據(jù)
ret,recv_buff tci_recv(time_out,hex,len)
功能: 用于 TCI 的讀操作
參數(shù): time_out: 超時時間,單位:ms,int類型 hex: 是否為 16 進制數(shù),1 的接收到的數(shù)
據(jù)為 16 進制字符格式(默認(rèn)為 0),int類型 len: 可選參數(shù),想要獲取的
長度,在超過 1024 情況下,會自動被設(shè)置成 1024,int類型
返回值: ret: 讀到的長度(都是轉(zhuǎn)化為字符長度)0,-1:讀取失敗
recv_buff: 獲取數(shù)據(jù)
示例: ret,recv_buff=tci_recv(100,0,512)
4.4 發(fā)送數(shù)據(jù)
ret tci_send(buff,hex)
功能: 用于 TCI 的發(fā)送操作
參數(shù):buff: 需要發(fā)送的字符,string類型 hex: 是否為 16 進制數(shù),1 的發(fā)送的數(shù)據(jù)為 16 進制
字符格式,int類型
返回值: ret: 無 1:發(fā)送成功-1:發(fā)送失敗
示例: ret=tci_send("test",0)
4.5 關(guān)閉TCI接口
ret tci_close()
功能:用于關(guān)閉 TCI 接口
參數(shù): 無
返回值:ret: 無 大于等于0:關(guān)閉成功-1:關(guān)閉失敗
示例: ret=tci_close()
4.6 清空TCI緩沖區(qū)
tci_flush ()
功能:用于清空 TCI 的緩沖區(qū)
參數(shù): 無
返回值: nil
示例: ret=tci_flush()
4.7腳本示例
sleep(5)
local open = tci_open()--打開工具端485接口
if (open >= 0) then
local set = tci_setopt(9600,8,"N",1)--配置工具端485串口
if (set >= 0) then
sleep(1)
tci_send("Testing TCI (testing firmware:20190826)")
while (1) do
ret,recv_buff=tci_recv(500,0)--接收485數(shù)據(jù)
sleep(1)
if(ret>0) then
elite_print(recv_buff)
tci_send(recv_buff)--發(fā)送485數(shù)據(jù)
end
end
else
elite_print("set tci failed.")
end
else
elite_print("open tci failed.")
end
tci_close()