EC机器人JBI与LUA交互

2025-07-02

随着技术的不🥘断进步【duàn jìn bù】,根据客🎾户不同的需求,现在机【xiàn zài jī】🍝器人的【qì rén de】工作已经不仅【jīng bú jǐn】🕝仅是简单的执行运动【háng yùn dòng】指令,往往会【wǎng wǎng huì】伴随着大量的🕔计算和通讯任🐸务【wù】。其中通【qí zhōng tōng】🏩讯用来【xùn yòng lái】🙈和外部【hé wài bù】设备交互,做数据传输或一些逻辑控制,而计算则常用🚄来做一🏆些数学㊙运算,进制转换☔,机器人【jī qì rén】的位姿【de wèi zī】运算等等。

1.  EC 系列的 Lua 结构和【jié gòu hé】🆖 JBI 结构

而我们【ér wǒ men】漫蛙机械臂采【xiè bì cǎi】🚦用🕺 jbi 程序✡+lua 脚本的方式来实现多【shí xiàn duō】❔种符合场景下的使用🕺,将大量【jiāng dà liàng】🍶复杂的运算🛳、通讯任【tōng xùn rèn】务和运动程序【dòng chéng xù】💽进行🙆分离🔨,jbi 程序✡主要负责运动,lua 脚本用🕺来数据【lái shù jù】👓运算和【yùn suàn hé】通讯🧚交 互【hù】🚔。这样可以保证【yǐ bǎo zhèng】🚛运动任务的高【wù de gāo】🛑效运行🙆,不掺杂过多冗余的计【yú de jì】算指【suàn zhǐ】🉑令,同时【tóng shí】脚本内容👧专一,只 负责后【fù zé hòu】台运算🌑和通讯🧚。在稍微【zài shāo wēi】🔟大型的🍘项目中【xiàng mù zhōng】,分离🔨式的设计🖌不仅可【bú jǐn kě】以保证【yǐ bǎo zhèng】🚛程序的💨易读性,同时【tóng shí】在编写过程中【zhōng】也可以多【kě yǐ duō】🔢人协作🆙,计算和通讯🧚的验证和示教点【diǎn】🚽位【wèi】工作并行🙆进行🙆。这种设【zhè zhǒng shè】🌔计即保证了机【zhèng le jī】器【qì】人基础功能【chǔ gōng néng】运动指【dòng zhǐ】♐令的简单插入【dān chā rù】😼,同时【tóng shí】大大提高【dà tí gāo】💏了机器【qì】人能够执行🙆任务的上限。 运动和【yùn dòng hé】🎒计算的🤼分离🔨式设计【shì shè jì】,可以🔒避免运动指【dòng zhǐ】♐令和计算指【suàn zhǐ】🉑令的大量掺杂📧,导致调【dǎo zhì diào】试阶段【shì jiē duàn】程序✡ 调试效率低不好调试,后期运⏭动程序【dòng chéng xù】💽与计算【yǔ jì suàn】指🉑令掺杂【lìng chān zá】过多不易维护的情🚬况【kuàng】,这也类似PLC 编程时,往往工【wǎng wǎng gōng】程师喜欢用【huān yòng】🕺 STL 文本去实现重复复杂的运算🛳指令👑。同时【tóng shí】 JBI 程序搭🚁配类工🎫业风的【yè fēng de】✴示教器【shì jiāo qì】操作风🚍格可以【gé kě yǐ】🔒更快的示教点【diǎn】🚽位【wèi】,验证点【diǎn】位【wèi】,程序✡调用🕺等,而脚本【ér jiǎo běn】⬆使用🕺 LUA 语言【yǔ yán】🆑,可以🔒使工程师无缝从 STL 文本编【wén běn biān】程切换。在脚本🏼编程中【zhōng】,不仅可【bú jǐn kě】以🔒 lua 语言【yǔ yán】🆑本身的丰【fēng】🍸富的【fù de】 API 外🔔,还可以🔒使用🕺漫蛙机器【qì】🔈人实现的接口【de jiē kǒu】,获取机器人的【qì rén de】各种状态和数据【jù】,使用机🐈器人的【qì rén de】硬件接【yìng jiàn jiē】口。 从设计角度来【jiǎo dù lái】说【shuō】🖲,lua 的执行【de zhí háng】🙆优先级【yōu xiān jí】没有【méi yǒu】🗝 jbi 高【gāo】🛑,但是执⛽行却是🗒在同步【zài tóng bù】执行🙆的。所以🔒在实际【zài shí jì】🦂 使用🕺中【zhōng】,lua 和 jbi 程序的💨执行往🎃往需要互【hù】锁🔻,两者进行🙆逻辑上的同⛰步【bù】,才能达〽到理想的效果。

2.  如何进【rú hé jìn】🛐行🛢 Lua 脚本和 JBI 程序的交互【jiāo hù】

2.1 变量

如表格所示🐢,漫蛙机器人全【qì rén quán】🥥局变量分为五【fèn wéi wǔ】种均可【zhǒng jun1 kě】通过 jbi 和🤮 lua 进行【háng】操作,通常使用情况🍹下【xià】🐂,会使用 B、I、D 变量进【biàn liàng jìn】♑行【háng】 逻辑的🎢交互和【jiāo hù hé】🈵简单数据【jù】的传递【dì】,而 P 变量用🥫作放置关节数据【jù】,V 变量用🥫作放置笛卡尔🐸数据【jù】。 P 变量和🤮 V 变量存📎放对应【fàng duì yīng】的数据【jù】🚒后【hòu】🔌,可以使用示教器手动移动到目标位【mù biāo wèi】置,或者通【huò zhě tōng】过移动⚓指令 直接到【zhí jiē dào】🍂指定的位置【wèi zhì】。

2.2输入输出

如上表格所示【gé suǒ shì】,用户也📋可以用数字输入输出或者模【huò zhě mó】拟输入输出来🦔进行【jìn háng】🐼lua与【yǔ】JBI的交互🗿


3.JBI如何操作全局变量


JBI 代码:

NOP

// 设置全局变量 B0 为 1

SET B000 1

// 设置全局变量 I0 为 1

SET I000 1

// 设置全局变量 D0 为 1

SET D000

// 设置全【shè zhì quán】📇局变量 P0 的🧞 j1 数据 为【wéi】 1

SET P000(0) 1

// 设置全【shè zhì quán】局变量【jú biàn liàng】 V0 的🦕 x 数据🖍 为 1

SET V000(0) 1

// 将后面⏯的数据【de shù jù】赋值给 P0,当插入指令时,自动选【zì dòng xuǎn】取当前🐒关节角🍦度插入【dù chā rù】

// 插入后【chā rù hòu】🎬修改指【xiū gǎi zhǐ】令时,也是默认更新数据为🚉当前关🍑节角度【jiē jiǎo dù】

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

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

// 插入后修改指令时【lìng shí】🚃,也是默认更新🏐数据为当前笛【dāng qián dí】🗝卡尔角【kǎ ěr jiǎo】度

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")

-- 对于 P,V 变量【biàn liàng】,由于存【yóu yú cún】储连续🤳的🧠 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)

-- 设置 V0 的数据【de shù jù】为💊 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

// 将 B001 设置为【shè zhì wéi】🛁 1,使 lua 进行计【jìn háng jì】算赋值🚚

SET B001 1

// 等待【děng dài】 B001 为🤚 0,等于 0 代表【dài biǎo】🌧 lua 的计算🙌赋值完【fù zhí wán】成

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 运行【yùn háng】
repeat
elite_print("Waiting B1 == 1!")
until
(get_global_variable("B1") == 1)
-- 获取数【huò qǔ shù】据并赋🏥值
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ī】🧗直等【zhí děng】 B1=1,当【dāng】 jbi 初始化 D 变量后,设置 B1 为 1,lua 侧开始获取数🍾据并将【jù bìng jiāng】其赋值给 P1,随后设✋置 B1 为 0,然后🚡 JBI 侧检测【cè jiǎn cè】😕到 B1 为 0,即运行【jí yùn háng】到新的💭 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
--等待前⛪台脚本【tái jiǎo bě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ù】据【jù】:","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ì】反馈给前台💬
end




download-669.svg comicon14.svg

电话咨询

download-397.svg comicon15.svg

免费试用

Vector.svg Frame.svg

微信小程序

img1.jpg

微信小程序

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

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

我已知🌈晓并同意漫蛙通过电【tōng guò diàn】子邮件【zǐ yóu jiàn】发送相【fā sòng xiàng】👂关资料😶

提交