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

lua腳本案例:下方腳本導入到1號機器人中,連接成功后,就可實現兩臺機器人通過ModbusTCP相互控制M線圈。
sleep(1)
ip = "192.168.1.201"
-- 對方機器人 IP 地址
port = 502
startl = 560
-- 本機寫入對方機器人的起始 M 地址
lenl = 16
-- 本機寫入對方機器人的 M 個數
starts = 576
-- 對方寫入本機機器人的起始 M 地址
lens = 16
-- 對方寫入本機機器人的 M 個數
ctx = modbus_new_tcp(ip,port)
repeat
ret = modbus_connect(ctx)
elite_print("連接失敗")
until(ret ~= -1)
elite_print("連接成功")
t200l = {}
t200s = {}
while(1) do
--讀取另外一臺機器人的線圈地址
ret201l = modbus_read_bits(ctx,startl,lenl)
ret201s = modbus_read_bits(ctx,starts,lens)
--for循環獲得當前機器人的M線圈
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循環判斷兩臺機器人對應線圈數值是否相同,不相同則把1#機器人的值寫入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循環判斷兩臺機器人對應線圈數值是否相同,不相同則把2#機器人的值寫入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)