EC机器人RS485通讯协议
1. 控制柜485
艾利特机器人EC系列支持RS485通讯,用户可以通过将 RS485 设备连接到图 7-27 中所示的连接器来从控制柜执行串行通信。为了能在控制柜中设置 RS485 连接器,必须拆掉串口连接 器,并将 RS485 线焊接到黑色连接器背面的金属触点,如图 7-28 所示。黑色塑料装置的正反 面分别标有 PIN“1 3 5”和“2 4 6”。PIN3 应焊接到 RS485B,PIN4 应焊接 到 RS485A。该 接口支持的最大波特率为 500Kbps。

2. 工具IO485
艾利特机器人同样支持末端工具485通讯,当需要使用末端 RS485 接口与执行器通信时, 注意从机器人控制器上写入发送数据到数据在末端工具 I/O 的 RS485上开始发送,延迟范围为 2ms 到 4ms。 从末端工具 I/O 的 RS485 上开始接收数据到机器人控制器收到数据并开始处理,延迟范 围为 2ms 到4ms。本篇文章介绍控制柜实现485通讯方式,工具端485查询脚本手册。
下表为RS485 接口的可用设置


3. 控制柜脚本指令
3.1 打开 485 接口
ret rs485_open ()
功能: 用于打开 485 接口
参数: 无
返回值: ret: 大于等于 0:打开成功 -1:打开失败
示例: ret= rs485_open ()
3.2 设置 485 串口配置
ret rs485_setopt (speed ,bits ,event ,stop)
功能: rs485_setopt 用于设置 485 串口的配置
参数: speed: 波特率,int类型
bits: 数据长度 7/8,int类型
event: 奇偶校验“O”,“N”,“E”,int类型
stop: 停止位 1/2,int类型
返回值: ret: 大于等于 0:设置成功 -1:设置失败
示例: ret= rs485_setopt (9600 ,8 ,"N",1)
3.3 接收数据
ret , recv_buff rs485_recv (time_out ,hex ,len)
功能: 参数: rs485_recv 用于 485 的读操作
time_out: 超时时间,单位:ms,int类型
hex: 是否为 16 进制数,1 的接收到的数据为 16 进制字符格式(默认为 0),int类型
len: 可选参数,想要获取的长度,在超过 1024 情况下,会自动被设置成 1024,int类型
返回值: ret: 读到的长度(都是转化为字符长度) 0,-1:读取失败 recv_buff: 获取数据 示例: ret , recv_buff = rs485_recv (100 ,0 ,512)
3.4 发送数据
ret rs485_send (buff ,hex)
功能: rs485_send 用于 485 的发送操作
参数: buff: 需要发送的字符,string类型
hex: 是否为 16 进制数,1 的发送的数据为 16 进制字符格式,int类型
返回值: ret: 1:发送成功 -1:发送失败
示例: ret= rs485_send ("test",0)
3.5 关闭 485 接口
ret rs485_close ()
功能: rs485_close 用于关闭 485 接口
参数: 无
返回值: ret: 大于等于 0:关闭成功 -1:关闭失败
示例: 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数据
sleep(0.001)
until(ret ~=0)
elite_print("receive data :",recv_buff)
rs485_send ( recv_buff ) --发送485数据
end
sleep(0.01)
end
end
rs485_close ()
4.工具IO脚本指令
4.1 打开末端485接口
ret tci_open()
功能: 用于打开末端485接口
参数:无
返回值:ret:大于等于0:打开成功,-1:打开失败
备注:无
示例: ret: ret=tci_open()
4.2 设置TCI串口的配置
ret tci_setopt(speed,bits,event,stop)
功能: 用于设置 TCI 串口的配置
参数: speed: 波特率,int类型 bits: 数据长度 8,int类型 event: 奇偶校验“O”,“N”,“E”,
string类型 stop: 停止位 1/2,int类型
返回值:ret: 大于等于0:设置成功-1:设置失败
示例: ret=tci_setopt(9600,8,"N",1)
4.3 接收数据
ret,recv_buff tci_recv(time_out,hex,len)
功能: 用于 TCI 的读操作
参数: time_out: 超时时间,单位:ms,int类型 hex: 是否为 16 进制数,1 的接收到的数
据为 16 进制字符格式(默认为 0),int类型 len: 可选参数,想要获取的
长度,在超过 1024 情况下,会自动被设置成 1024,int类型
返回值: ret: 读到的长度(都是转化为字符长度)0,-1:读取失败
recv_buff: 获取数据
示例: ret,recv_buff=tci_recv(100,0,512)
4.4 发送数据
ret tci_send(buff,hex)
功能: 用于 TCI 的发送操作
参数:buff: 需要发送的字符,string类型 hex: 是否为 16 进制数,1 的发送的数据为 16 进制
字符格式,int类型
返回值: ret: 无 1:发送成功-1:发送失败
示例: ret=tci_send("test",0)
4.5 关闭TCI接口
ret tci_close()
功能:用于关闭 TCI 接口
参数: 无
返回值:ret: 无 大于等于0:关闭成功-1:关闭失败
示例: ret=tci_close()
4.6 清空TCI缓冲区
tci_flush ()
功能:用于清空 TCI 的缓冲区
参数: 无
返回值: 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数据
sleep(1)
if(ret>0) then
elite_print(recv_buff)
tci_send(recv_buff)--发送485数据
end
end
else
elite_print("set tci failed.")
end
else
elite_print("open tci failed.")
end
tci_close()