EC機器人系列2臺機器人基于modbustcp交互
1. 簡(jiǎn)介
兩臺EC機器人通過(guò)MODBUSTCP通訊進(jìn)行交互,可以通過(guò)1#機器人讀寫(xiě)2#機器人的M變量
實(shí)現類(lèi)似IO通訊的效果。
例如1#機器人的M560-M575作為本機的輸出,寫(xiě)入2#機器人的M560-M575的值。
1#機器人的M576-M591做為本機的輸入,讀取2#機器人中的M576-M591的數值。
EC機器人腳本手冊:下載中心_機器人技術(shù)-艾利特機器人
EC程序備份與恢復:EC機器人數據備份與恢復-技術(shù)文檔-艾利特機器人
2. 操作流程
兩臺機器人IP設置為同一網(wǎng)段:
1#機器人192.168.1.200 2#機器人192.168.1.201
兩臺機器人之間通過(guò)網(wǎng)線(xiàn)相互連接。

lua腳本案例:下方腳本導入到1號機器人中,連接成功后,就可實(shí)現兩臺機器人通過(guò)ModbusTCP相互控制M線(xiàn)圈。
sleep(1)
ip = "192.168.1.201"
-- 對方機器人 IP 地址
port = 502
startl = 560
-- 本機寫(xiě)入對方機器人的起始 M 地址
lenl = 16
-- 本機寫(xiě)入對方機器人的 M 個(gè)數
starts = 576
-- 對方寫(xiě)入本機機器人的起始 M 地址
lens = 16
-- 對方寫(xiě)入本機機器人的 M 個(gè)數
ctx = modbus_new_tcp(ip,port)
repeat
ret = modbus_connect(ctx)
elite_print("連接失敗")
until(ret ~= -1)
elite_print("連接成功")
t200l = {}
t200s = {}
while(1) do
--讀取另外一臺機器人的線(xiàn)圈地址
ret201l = modbus_read_bits(ctx,startl,lenl)
ret201s = modbus_read_bits(ctx,starts,lens)
--for循環(huán)獲得當前機器人的M線(xiàn)圈
for i=1,lenl,1 do
t = i+startl-1
name = "M"..tostring(t)
t200l[i] = get_robot_io_status(name)
end
for i=1,lens,1 do
t = i+starts-1
name = "M"..tostring(t)
t200s[i] = get_robot_io_status(name)
end
--for循環(huán)判斷兩臺機器人對應線(xiàn)圈數值是否相同,不相同則把1#機器人的值寫(xiě)入2#機器人中
for i=1,lenl,1 do
if(t200l[i]~=ret201l[i]) then
retl = modbus_write_bit(ctx,i+startl-1,t200l[i])
if(retl == -1) then
elite_print("Write1 Wrong")
end
end
end
--for循環(huán)判斷兩臺機器人對應線(xiàn)圈數值是否相同,不相同則把2#機器人的值寫(xiě)入1#機器人中
for i=1,lens,1 do
if(t200s[i]~=ret201s[i]) then
t = 575+i
name = "M"..tostring(t)
set_robot_io_status(name, ret201s[i])
end
end
end
modbus_close(ctx)