恭喜,你发布的帖子
发布于 2025-08-10 13:08:01
1楼
你需要在通讯中断后,间隔一定时间如果还没有通讯恢复,就初始化通讯参数一次。超过多少次就报警就行了。
参数
说明
示例配置
Mode 操作模式(读 / 写类型):
- 1 = 写单个线圈;3 = 读保持寄存器;4 = 读输入寄存器 读输入点(3x 区)→ Mode=4
RemoteIP 艾莫迅模块的 IP 地址(字节数组) VB100=192, VB101=168, VB102=2, VB103=10
RemotePort 艾莫迅模块的 MODBUS 端口(固定 502) VW104=502
LocalPort 200 SMART 本地端口(0 = 自动分配) VW106=0
UnitId 从站地址(MODBUS TCP 中通常为 1,部分模块需与硬件地址一致) VW108=1
StartAddr 寄存器起始地址(30001 对应 0,40001 对应 0,00001 对应 0) 读 30001→VW110=0
Length 读取的寄存器数量(如读 2 个输入点) VW112=2
DataPtr 数据缓冲区(存放读取结果,如 V 区) &VB200(结果存 VB200~VB203)
Enable 使能信号(首次扫描 SM0.1 触发初始化,或持续使能实现周期读取) SM0.1(初始化)或SM0.0(周期读)
Done 操作完成标志(1 = 成功) 监控Done判断是否初始化成功
Error 错误代码(0 = 无错;非 0 需排查,如 6 = 连接失败) 错误时根据代码定位问题
(2)程序示例(初始化逻辑)
plaintext
// 首次扫描触发初始化(读取艾莫迅输入点)
LD SM0.1
= L0.0
// 调用MB_CLIENT
CALL MB_CLIENT, L0.0, 4, &VB100, VW104, VW106, VW108, VW110, VW112, &VB200, Q0.0, MB100
// 监控结果:Done=1且Error=0表示初始化成功
LD Q0.0 // Done=1
AN MB100 // Error=0
= Q0.1 // 通讯正常标志
请填写推广理由:
分享
只看
楼主