EC机器人读写32位M变量

2025-05-27

1.简介

对连续32位 M变量,可以读取连续32bit M变量并转成对用DINT,或者将DINT数据存储到连续32bit M变量

2.操作流程

2.1变量定义

2.2JBI和LUA代码

使用如下JBI和lua代码:

2.3JBI代码

NOP

//D变量的值转化M的值

SET I000 528

SET D002 1987

SET B000 2

TIMER T=1 S

WAIT B000 = 0


//M变量的值转化D的值

SET I000 528

SET B000 1

TIMER T=1 S

WAIT B000 = 0

END


2.4LUA代码

sleep(1)

--32位M变量转成DINT数据

function M32bitToDint(startbit)

    local mout = 0

    local mbit = 0

    for i = 32, 1, -1 do

        mbit = get_robot_io_status("M" .. (startbit + i - 1))

        mout = mout | mbit

        mout = mout<<1

    end

    mout = mout>>1

    mout = string.pack("I", mout)

    return string.unpack("i", mout)

end


--DINT数据转成32位M变量

function DintToM32(data, startbit)

    local mout = 0

    mout = string.pack("i", data)

    mout = string.unpack("I", mout)

    for i = 1, 32, 1 do

        if (mout & 1) > 0 then

            set_robot_io_status("M" .. (startbit+i-1), 1)

        else

            set_robot_io_status("M" .. (startbit+i-1), 0)

        end

        mout = mout >> 1

    end

end


sleep(0.3)

local startbit

local D001

local D002

local B000

while true do

    B000 = get_global_variable("B000")

    if (B000 == 1) then

        startbit = get_global_variable("I000")

        D001 = M32bitToDint(startbit)

        set_global_variable("D001", D001)

        set_global_variable("B000", 0)

    end

    if (B000 == 2) then

        startbit = get_global_variable("I000")

        D002 = get_global_variable("D002")

        DintToM32(D002, startbit)

        set_global_variable("B000", 0)

    end

    sleep(0.5)

end

3.附录:

使用U盘或FTP升级导入JBI和LUA

EC机器人FTP文件传输-技术文档-艾利特机器人

TS2023057E-EC系列使用u盘导入jbi和lua-Elite应用技术文档 (1).pdf

download-669.svg comicon14.svg

电话咨询

download-397.svg comicon15.svg

免费试用

Vector.svg Frame.svg

微信小程序

img1.jpg

微信小程序

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

我已阅读并同意艾利特《隐私政策》《法律声明》

我已知晓并同意艾利特通过电子邮件发送相关资料

提交