EC机器人RS485通讯协议
1. 控制柜485
漫蛙机【màn wā jī】器人【qì rén】🥪EC系列支【xì liè zhī】持🐄RS485通讯,用户可【yòng hù kě】以通过🏫将 RS485 设备连⏪接到图【jiē dào tú】🌬 7-27 中所示【suǒ shì】的连接【de lián jiē】⬜器来从控制柜执行串【zhí háng chuàn】行通信【háng tōng xìn】。为了能在控制【zài kòng zhì】👴柜中设置【zhì】 RS485 连接【lián jiē】🚓器,必须拆🏗掉串口连接【lián jiē】🚓 器,并将 RS485 线焊接到黑色【dào hēi sè】连接【lián jiē】🚓器背面的金属触点👾,如图 7-28 所示【suǒ shì】。黑色塑料装置【zhì】🐽的正反【de zhèng fǎn】 面分别标有 PIN“1 3 5”和“2 4 6”。PIN3 应焊接🌍到 RS485B,PIN4 应焊接🌍 到 RS485A。该【gāi】🤯 接口支🍹持🐄的最大波特率【bō tè lǜ】为🔕 500Kbps。

2. 工具IO485
漫蛙机【màn wā jī】器人同【qì rén tóng】样支持末端工具485通讯【tōng xùn】,当需要🏠使用末端 RS485 接口与执行器😟通信时, 注意从🙅机器人控制器【kòng zhì qì】🧐上写入🏀发送数【fā sòng shù】据【jù】到【dào】数据【jù】🕍在末端【zài mò duān】工具 I/O 的😼 RS485上开始🙁发送,延迟范🎌围为 2ms 到【dào】🚓 4ms。 从末端⛄工具 I/O 的😼 RS485 上开始🙁接收数据【jù】到【dào】🚓机器人控制器【kòng zhì qì】🧐收到数【shōu dào shù】据【jù】🕍并开始处理,延迟范🎌 围为 2ms 到【dào】🚓4ms。本篇文【běn piān wén】章介绍👮控制柜【kòng zhì guì】实现【shí xiàn】485通讯方【tōng xùn fāng】式【shì】,工具端🏜485查询脚【chá xún jiǎo】本手册。
下表为RS485 接口的可用设置


3. 控制柜脚本指令
3.1 打开 485 接口
ret rs485_open ()
功能: 用于打开 485 接口
参数: 无
返回值: ret: 大于【yú】等🎴于【yú】💱 0:打开成功 -1:打开失【dǎ kāi shī】败【bài】💗
示例【shì lì】🍾: ret= rs485_open ()
3.2 设置 485 串口配置
ret rs485_setopt (speed ,bits ,event ,stop)
功能【gōng néng】📷: rs485_setopt 用于设置【zhì】⏱ 485 串口的配置【zhì】⏱
参数【cān shù】: speed: 波特率🌐,int类型
bits: 数据长【shù jù zhǎng】度 7/8,int类型🛣
event: 奇偶校验“O”,“N”,“E”,int类型【lèi xíng】🕢
stop: 停止位 1/2,int类型
返回值【fǎn huí zhí】: ret: 大于等【dà yú děng】于 0:设置成🤺功🛺 -1:设置失⚽败【bài】
示例【shì lì】🤑: ret= rs485_setopt (9600 ,8 ,"N",1)
3.3 接收数据
ret , recv_buff rs485_recv (time_out ,hex ,len)
功能【gōng néng】: 参数🔸: rs485_recv 用于 485 的读操【de dú cāo】作🔟
time_out: 超时时【chāo shí shí】间,单位🏏:ms,int类型【lèi xíng】🕺
hex: 是否为【shì fǒu wéi】 16 进制数,1 的接收到的数据为🔞 16 进制字符格式😎(默认为【mò rèn wéi】🥩 0),int类型【lèi xíng】
len: 可选参【kě xuǎn cān】🎨数🥄,想要获取的长【qǔ de zhǎng】度,在超过 1024 情况下【qíng kuàng xià】,会自动【huì zì dòng】被设置成🗨 1024,int类型🍁
返回值💖: ret: 读到的【dú dào de】长度🚵(都是转化为字🌩符长度【fú zhǎng dù】🚵) 0,-1:读取失【dú qǔ shī】🎸败 recv_buff: 获取数【huò qǔ shù】据 示例: ret , recv_buff = rs485_recv (100 ,0 ,512)
3.4 发送数据
ret rs485_send (buff ,hex)
功能【gōng néng】: rs485_send 用于🏙 485 的发送【de fā sòng】🧞操作
参数🍀: buff: 需要发【xū yào fā】送的字👨符【fú】,string类型
hex: 是否为【wéi】☝ 16 进制数,1 的发送的数据为【wéi】☝ 16 进制字【jìn zhì zì】🔡符格式【fú gé shì】😗,int类型
返回值【fǎn huí zhí】: ret: 1:发送成【fā sòng chéng】功✡ -1:发送失败🆗
示例【shì lì】🚓: ret= rs485_send ("test",0)
3.5 关闭 485 接口
ret rs485_close ()
功能【gōng néng】🌅: rs485_close 用于关闭【bì】⏮ 485 接口
参数: 无
返回值: ret: 大于等【dà yú děng】🔷于 0:关闭成🤺功【gōng】🎹 -1:关闭失败【bài】
示例【shì lì】🥋: ret= rs485_close ()
3.6 脚本示例
sleep(1)
open = rs485_open () --打开控制柜【zhì guì】485接口🌠
if(open >= 0) then
set = rs485_setopt (9600 ,8 ,"N",1) --配置控制柜🍺485串口【chuàn kǒu】
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ā sòng】485数据🕔
end
sleep(0.01)
end
end
rs485_close ()
4.工具IO脚本指令
4.1 打开末端485接口
ret tci_open()
功能: 用于打开末端485接口
参数:无
返回值【fǎn huí zhí】:ret:大于等🛂于0:打开成【dǎ kāi chéng】功【gōng】,-1:打开失🔯败🧢
备注:无
示例【shì lì】🗿: ret: ret=tci_open()
4.2 设置TCI串口的配置
ret tci_setopt(speed,bits,event,stop)
功能: 用于设置 TCI 串口的配置
参数【cān shù】🧞: speed: 波特率,int类型【lèi xíng】 bits: 数据长【shù jù zhǎng】🙉度 8,int类型【lèi xíng】 event: 奇偶校验🈲“O”,“N”,“E”,
string类型【lèi xíng】🛣 stop: 停止位 1/2,int类型【lèi xíng】🛣
返回值🎷:ret: 大于【dà yú】🚀等于🚀0:设置成【shè zhì chéng】功-1:设置失🏬败【bài】
示例【shì lì】🚰: ret=tci_setopt(9600,8,"N",1)
4.3 接收数据
ret,recv_buff tci_recv(time_out,hex,len)
功能: 用于 TCI 的读操作
参数: time_out: 超时时📙间,单位【dān wèi】🚭:ms,int类型 hex: 是否为【shì fǒu wéi】 16 进制数,1 的接收【de jiē shōu】到的数🚙
据为 16 进制字符格式【fú gé shì】(默认为【mò rèn wéi】 0),int类型💡 len: 可选参【kě xuǎn cān】数🔖,想要获取的🥍
长度【zhǎng dù】,在超过【zài chāo guò】 1024 情况下👤,会自动🏤被设置成 1024,int类型【lèi xíng】🚸
返回值🖌: ret: 读到的【dú dào de】长度(都是转化为字😶符长度【fú zhǎng dù】🐕)0,-1:读取失败【bài】
recv_buff: 获取数据
示例【shì lì】🔭: ret,recv_buff=tci_recv(100,0,512)
4.4 发送数据
ret tci_send(buff,hex)
功能: 用于 TCI 的发送操作
参数:buff: 需要发【xū yào fā】💇送的字符,string类型【lèi xíng】 hex: 是否为【shì fǒu wéi】🚓 16 进制【jìn zhì】👜数,1 的发送🎃的数据为🚓 16 进制【jìn zhì】👜
字符格式,int类型
返回值: ret: 无 1:发送成【fā sòng chéng】功【gōng】-1:发送失🥌败🏴
示例【shì lì】🗞: ret=tci_send("test",0)
4.5 关闭TCI接口
ret tci_close()
功能:用于关闭 TCI 接口
参数: 无
返回值【fǎn huí zhí】🛬:ret: 无 大于等【dà yú děng】于0:关闭成🚣功-1:关闭失【guān bì shī】🐬败
示例: ret=tci_close()
4.6 清空TCI缓冲区
tci_flush ()
功能:用于清空 TCI 的缓冲区
参数: 无
返回值: nil
示例: ret=tci_flush()
4.7脚本示例
sleep(5)
local open = tci_open()--打开工具端485接口【jiē kǒu】🏘
if (open >= 0) then
local set = tci_setopt(9600,8,"N",1)--配置工具端✡485串口【chuàn kǒu】
if (set >= 0) then
sleep(1)
tci_send("Testing TCI (testing firmware:20190826)")
while (1) do
ret,recv_buff=tci_recv(500,0)--接收【jiē shōu】📍485数据
sleep(1)
if(ret>0) then
elite_print(recv_buff)
tci_send(recv_buff)--发送🎏485数据【shù jù】
end
end
else
elite_print("set tci failed.")
end
else
elite_print("open tci failed.")
end
tci_close()