菜单

ModbusMaster协议

下载

使用 ModbusMaster 时,ApusTAI 屏作为主站轮询已配置的从站。先核对接线、从站地址及串口格式,再设计控件。

工程设置

在“工程设置”中选择 ModbusMaster。按设备手册设置波特率、数据位、校验位、停止位、从站站号和地址上限;再按通信情况调整读取数量、命令间隔、重试次数及超时。下图为当前 IDE 的测试工程,所列数值是示例配置,不是所有设备的默认值。
ApusTAI 历史版本截图 ModbusMaster 串口、轮询与从站设置
界面的“从站01”对应 Lua 索引 0,“从站02”对应索引 1,它们与设备实际站号分别配置。“最多读取数”限制每帧数量,“读取间隔数”是批量合并时允许的未登记间隔;两者在 3/4 区按字,在 0/1 区按 16 点组换算。“间隔时间ms”才是通信调度时间,“超时时间ms”用于等待应答。

在位控件中选择线圈或离散输入地址,在数值控件中选择输入或保持寄存器地址。区分只读区与可写区;同时核对设备手册所说的寄存器编号与工程地址的起点。多字节数据还要核对字节序、字序及数据类型。

Lua 预读未绑定的地址

控件未绑定、但脚本仍需持续读取的地址,可在 on_init 中登记异步轮询。以下示例读取第一个已配置从站的 4X 保持寄存器 100~109;0 是从站配置索引,不是设备站号。脚本接口还要求模拟器或屏端运行库包含 start_read 和 select_slave。

lua 复制代码
function on_init()
    start_read(0, 6, 100, 10)
end

function on_run()
    select_slave(0)
    local value = get_uint16(6, 100)
    -- value 来自异步缓存;首次有效应答前不能据此判断设备状态。
end

start_read 最多登记 16 个不同起点。位区的 count 按 16 位字计,字区按寄存器计。只登记实际需要的范围,避免过长的轮询周期。写入 API 返回或 on_update 触发也不等于从站已经确认执行;关键操作应通过设备响应或读回核对。接口细节见寄存器操作函数。

完整的四区字/位、功能码、多寄存器读写、轮询与双从站示例见 Modbus 脚本读写示例。

最近修改: 2026-10-22Powered by