EC机器人JBI与LUA交互

2025-07-07

随着技🔐术的不【shù de bú】断进步,根据客【gēn jù kè】户不同【hù bú tóng】的需求【de xū qiú】,现在机器人的工作已经不仅🏯仅是简🍇单的执行运动🍥指令【zhǐ lìng】🎈,往往会伴随着💶大量的计算和🐔通讯任【tōng xùn rèn】务。其中通【qí zhōng tōng】讯用来👴和外部设备交互【hù】🔠,做数据传输或【chuán shū huò】一些逻辑控制【jí kòng zhì】,而计算则常用来做一【lái zuò yī】🏻些数学运算🤞,进制转【jìn zhì zhuǎn】换🚗,机器人的位姿运算🤞等等。

1.  EC 系列的【xì liè de】 Lua 结构和🅰 JBI 结构

而我们漫蛙机🤪械臂采用【yòng】🍭 jbi 程序+lua 脚本的【jiǎo běn de】方式来【fāng shì lái】♋实现多🚚种符合【zhǒng fú hé】💋场景下的【de】使用【shǐ yòng】🍭,将大量复杂的【de】运算、通讯任务和【hé】运动【yùn dòng】😗程序进【chéng xù jìn】行【háng】👂分离【fèn lí】👝,jbi 程序主【chéng xù zhǔ】要负责🍼运动【yùn dòng】😗,lua 脚本用【jiǎo běn yòng】🍭来数据运算和【hé】通讯交【tōng xùn jiāo】 互。这样可以保证运动【yùn dòng】😗任务的【rèn wù de】高【gāo】🍠效运行【háng】🗻,不掺杂🕗过多冗余的【de】计🎰算指令【suàn zhǐ lìng】,同时🍹脚本内容专一🌁,只⛽ 负责后👖台运算和【hé】通讯。在稍微💃大型的【dà xíng de】🍼项目中,分离【fèn lí】👝式的【de】设计⏱不仅可🚥以保证程序的【de】易读性【yì dú xìng】,同时🍹在编写【zài biān xiě】过程中【guò chéng zhōng】也可以多人协作【zuò】,计算和【hé】通讯的【de】验证和【hé】示教点【shì jiāo diǎn】⏯位【wèi】工作【zuò】👑并行【háng】进🚏行【háng】👂。这种设💞计即保证了机💄器人基【qì rén jī】础功能运动【yùn dòng】😗指令【zhǐ lìng】的【de】简单插【jiǎn dān chā】入,同时🍹大大提高【gāo】🔔了机器人能够🐾执行【zhí háng】任♋务的【de】上限🤫。 运动【yùn dòng】和【hé】⏮计算的【jì suàn de】⛑分离【fèn lí】👝式设计【shì shè jì】,可以避免运动【yùn dòng】🚑指令和【zhǐ lìng hé】计算指令【suàn zhǐ lìng】的【de】大量掺杂🤳,导致调试阶段🥌程序 调试效☝率低不【lǜ dī bú】好调试,后期运👡动程序【dòng chéng xù】🍴与计算【yǔ jì suàn】指令【zhǐ lìng】掺杂过多【zá guò duō】🙀不易维护的【de】情况,这也类🍚似PLC 编程时,往往工【wǎng wǎng gōng】程师喜【chéng shī xǐ】欢用【yòng】🖲 STL 文本去【wén běn qù】实现重复复杂【fù fù zá】的【de】运算指令【suàn zhǐ lìng】。同时🍹 JBI 程序搭配类工业风的【de】示教器【shì jiāo qì】🚮操作【zuò】风格可以【gé kě yǐ】更快的【de】示教点【shì jiāo diǎn】⏯位【wèi】,验证点🐰位【wèi】,程序调用【yòng】🍭等【děng】,而脚本🐐使用【shǐ yòng】🍭 LUA 语言【yǔ yán】🔕,可以使工程师【gōng chéng shī】无缝从 STL 文本编程切换。在脚本编程中【biān chéng zhōng】,不仅可🚥以 lua 语言【yǔ yán】🔕本身的【de】丰富的【de】 API 外【wài】,还可以使用【shǐ yòng】🍭漫蛙机🤪器人实现的【de】接口【kǒu】💁,获取机🌽器人的【de】🎠各种状🏭态和【hé】数据,使用【shǐ yòng】🍭机器人的【de】🎠硬件接【yìng jiàn jiē】口【kǒu】。 从设计角度来🚽说【shuō】,lua 的【de】执行【zhí háng】👂优先级【yōu xiān jí】没有【méi yǒu】🎢 jbi 高【gāo】,但是执【dàn shì zhí】行【háng】👂却是在同步👹执行【zhí háng】👂的【de】。所以在实际 使用【shǐ yòng】中🎢,lua 和【hé】 jbi 程序的【de】执行【zhí háng】往🏄往需要【wǎng xū yào】互锁,两者进行【háng】👂逻辑上【luó jí shàng】的【de】同步🔀,才能达【cái néng dá】到理想的效果【de xiào guǒ】🔖。

2.  如何进【rú hé jìn】行😛 Lua 脚本和【jiǎo běn hé】🦆 JBI 程序的交互

2.1 变量

如表格♈所示🚓,漫蛙机器人全局变量【jú biàn liàng】分为五种均可【zhǒng jun1 kě】通过【tōng guò】 jbi 和【hé】 lua 进行操【jìn háng cāo】作,通常使【tōng cháng shǐ】用情况👗下,会使用😮 B、I、D 变量进🔦行 逻辑的🚬交互和【hé】简单数🙈据的传【jù de chuán】递,而【ér】 P 变量用【biàn liàng yòng】作放置【zuò fàng zhì】🈸关节数据【shù jù】📕,V 变量用【biàn liàng yòng】作放置【zuò fàng zhì】🈸笛卡尔🌒数据【shù jù】📕。 P 变量和【hé】🤔 V 变量存【biàn liàng cún】放对应🍾的数据【shù jù】📕后,可以使用示教📤器手动移动到目标位置🈸,或者通【huò zhě tōng】🔽过移动指令 直接到❕指定的位置🈸。

2.2输入输出

如上表【rú shàng biǎo】⚫格所示,用户也【yòng hù yě】可以用数字输入输出或者模🥉拟输入输出来进行🤺lua与【yǔ】👋JBI的交互【de jiāo hù】


3.JBI如何操作全局变量


JBI 代码:

NOP

// 设置全局变量 B0 为 1

SET B000 1

// 设置全局变量 I0 为 1

SET I000 1

// 设置全局变量 D0 为 1

SET D000

// 设置全🤤局变量【jú biàn liàng】 P0 的🍃 j1 数据 为【wéi】 1

SET P000(0) 1

// 设置全局变量【jú biàn liàng】🦉 V0 的 x 数据 为【wéi】🏩 1

SET V000(0) 1

// 将后面的数据赋值给 P0,当插入【dāng chā rù】🐠指令时【zhǐ lìng shí】,自动选取当前💇关节角度插入【dù chā rù】🔐

// 插入后修改指【xiū gǎi zhǐ】🎑令时【lìng shí】,也是默【yě shì mò】认更新数据为🏆当前关🔇节角度

SETJOINT P000 170.2074,-85.7738,102.0724,-104.2114,89.9468,-14.3515,0.0000,0.0000

// 将后面【jiāng hòu miàn】的数据赋值给 P0,当插入🏈指令时【zhǐ lìng shí】,自动选取当前😋关节角度插入【dù chā rù】😢

// 插入后修改指令时【lìng shí】,也是默📢认更新数据为【shù jù wéi】当前笛📒卡尔角🧖度【dù】

SETPOSE V000 -517.8859,-34.5460,208.5253,3.1061,0.0081,1.6502

// 等待 B0 = 0

WAIT B000=0

// 等待 I0 = 0

WAIT I000=0

// 等待 D0 = 0

WAIT D000=0

END




LUA 代码:

Sleep(1)

-- 从全局变量获取数据

local b0 = get_global_variable("B0")

local i0 = get_global_variable("I0")

local d0 = get_global_variable("D0")

-- 对于【duì yú】 P,V 变量,由于存储连续【chǔ lián xù】🔇的 6 个数据【gè shù jù】🏬,可以通过以下几种方式获取🔸

local j7 = }

pose0[1],pose0[2],pose0[3],pose0[4],pose0[5],pose0[6] = get_global_variable("V0")

local j1,j2,j3,j4,j5,j6 = get_global_variable("P0")

local p0 = j1, j2, j3, j4, j5, j6}

-- 向全局变量赋值数据

-- 设置 B0 为 1

set_global_variable("B0", 1)

-- 设置 D0 为 1

set_global_variable("D0", 1)

-- 设置 I0 为 1

set_global_variable("I0", 1)

-- 设置🤐 P0 的数据【de shù jù】为 1,2,3,4,5,6

set_global_variable("P0", 1, 2, 3, 4, 5, 6)

-- 设置【shè zhì】 V0 的数据为😊 1,2,3,4,5,6

set_global_variable("V0", 1, 2, 3, 4, 5,6)


4.1 使用全局变量简易交互示例



JBI 代码 :

NOP

// 设置数据

SET D000 0

SET D001 -90

SET D002 0

SET D003 -90

SET D004 90

SET D005 0

// 将【jiāng】 B001 设置为【shè zhì wéi】📑 1,使 lua 进行计😒算赋值

SET B001 1

// 等待 B001 为【wéi】🐬 0,等于【děng yú】 0 代表【dài biǎo】 lua 的计算赋值完🧙成🧣

WAIT B001=0

TIMER T=0.002 S

MOVJ P001 VJ=30% CR=0.0MM ACC=50 DEC=50

END


LUA 代码🤬:
sleep(1)
elite_print("runing")
-- 等待 jbi 运行
repeat
elite_print("Waiting B1 == 1!")
until
(get_global_variable("B1") == 1)
-- 获取数【huò qǔ shù】🎮据并赋值【zhí】
local j1 = get_global_variable("D0")
local j2 = get_global_variable("D1")
local j3 = get_global_variable("D2")
local j4 = get_global_variable("D3")
local j5 = get_global_variable("D4")
local j6 = get_global_variable("D5")
set_global_variable("P1", j1, j2, j3, j4, j5, j6)
set_global_variable("B1", 0)
elite_print("done")


4.2运行效果

上述两【shàng shù liǎng】个程序同时运行后【háng hòu】,LUA 侧会一【cè huì yī】⏬直等🍁 B1=1,当【dāng】 jbi 初始化 D 变量后,设置🐰 B1 为【wéi】🚾 1,lua 侧开始🕝获取数据并将【jù bìng jiāng】其赋值给 P1,随后设置🐰 B1 为【wéi】🚾 0,然后🌼 JBI 侧检测到【dào】 B1 为【wéi】🚾 0,即运行到新的【dào xīn de】🐀 P1


5.1 使用输入输出简易交互示例


JBI代码:

//前台设置数字输出0为1启动脚本

NOP

DOUT OT#(0) 1

//等待脚本执行完成

WAIT OT#(0)=0 

MOVEL V=200MM/S CR=0MM ACC=50 DEC=50 V1

END


lua代码:
while (true) do
repeat
--等待前【děng dài qián】台脚本启动
   o0=get_robot_io_status("o0")
sleep(0.01)
until(o0==1)
sleep(0.02)

client_send_data(ip,"start",0,port)
sleep(0.5)
   ret,recv=client_recv_data (ip,1,0,port)

while recv=="" do
sleep(3)
client_send_data(ip,"start",0,port)
sleep(0.5)
   ret,recv=client_recv_data (ip,1,0,port)
end
   tempString=string.format("%s",recv)
   CamData=string.split(tempString,",")

if tonumber(CamData[1])==1 then
set_global_variable("b2",1)
elseif tonumber(CamData[1])==0 then
set_global_variable("b2",0)
end
  rz=math.rad(tonumber(CamData[4]))
elite_print("机器人🌄定位数【dìng wèi shù】据:","X=",CamData[2],",Y=",CamData[3],",RZ=",rz)
sleep(0.01)
     a1,a2,a3,a4,a5,a6=get_global_variable("V1")
sleep(0.02)
set_global_variable ("V1",tonumber(CamData[2]),tonumber(CamData[3]),a3,a4,a5,rz)
set_robot_io_status("o0",0)
--脚本执😜行完毕【háng wán bì】🛹反馈给👄前台【qián tái】
end




download-669.svg comicon14.svg

电话咨询

download-397.svg comicon15.svg

免费试用

Vector.svg Frame.svg

微信小程序

img1.jpg

微信小程序

准备好突破增长瓶颈,开启智能制造了吗?
了解我们的机器人如何帮助您的业务增长
欢迎下载漫蛙机器人资料

我已阅读并同意漫蛙《隐私政策》《法律声明》

我已知【wǒ yǐ zhī】晓并同意漫蛙😽通过电🐵子邮件【zǐ yóu jiàn】🥈发送相【fā sòng xiàng】关资料

提交