|
类型 |
通讯指令 |
|
描述 |
设置或读取MODBUS主端的对方。 通讯等待时只会阻塞当前这个任务,不影响其他任务。 使用485串口与多个设备通讯时,建立通讯连接可加入等待或延时,等上一个设备连接成功再连接下一个设备,防止出现通讯失败的情况。 |
|
语法 |
MODBUSM_DES (address[,port],[timer],[resendset]) ADDRESS1 = MODBUSM_DES([port]) address:对端的modbus协议站号 port:当前modbus主通讯的port号 timer:消息超时时间设置,缺省1000ms。 resendset:超时消息重发设置,0-不重发,1-SEND指令重发,2-SEND与MODBUSM指令都重发。
MODBUSM指令超时重发要注意,从控制器可能收到2次消息,对寄存器的扫描也可能出现2次。 SEND指令超时重发对从控制器没有影响, 重要标志性变量可以通过SEND指令来修改。 |
|
适用控制器 |
通用 |
|
例子 |
例一 多主端-多从端通讯 SETCOM(38400,8,1,0,0,14,2,1000) '设置串口0为modbus主端,通讯等待1s SETCOM(38400,8,1,0,1,14,2,1000) '设置串口1为modbus主端,通讯等待1s
WHILE 1 IF IN(0)=1 THEN 'IN0高电平时使用串口0 IF IN(1)=1 THEN MODBUSM_DES(1,0) 'IN1高电平时与从端站号1通讯 MODBUSM_REGSET(0,10,0) '本地寄存器复制到对端 MODBUSM_REGGET(20,10,20) '对端寄存器复制到本地 WAIT UNTIL MODBUSM_STATE <> 1 '等待消息结束
ELSE MODBUSM_DES(2,0) 'IN1低电平时与从端站号2通讯 MODBUSM_REGSET(30,10,30) '本地寄存器复制到对端 MODBUSM_REGGET(40,10,40) '对端寄存器复制到本地 WAIT UNTIL MODBUSM_STATE <> 1 '等待消息结束 ENDIF ?"通道0状态=", MODBUSM_STATE '打印通讯状态
ELSE 'IN0低电平时使用串口1 IF IN(1)=1 THEN MODBUSM_DES(1,1) 'IN1高电平时与从端站号1通讯 MODBUSM_REGSET(50,10,50) '本地寄存器复制到对端 MODBUSM_REGGET(60,10,60) '对端寄存器复制到本地 WAIT UNTIL MODBUSM_STATE <> 1 '等待消息结束 ELSE MODBUSM_DES(2,1) 'IN1低电平时与从端站号2通讯 MODBUSM_REGSET(70,10,70) '本地寄存器复制到对端 MODBUSM_REGGET(80,10,80) '对端寄存器复制到本地 WAIT UNTIL MODBUSM_STATE <> 1 '等待消息结束 ENDIF ?"通道1状态=", MODBUSM_STATE '打印通讯状态 ENDIF WEND |
|
相关指令 |