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

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