MODBUSM_DES -- modbus通讯连接

类型

通讯指令

描述

设置或读取MODBUS主端的对方。

通讯等待时只会阻塞当前这个任务,不影响其他任务。

使用485串口与多个设备通讯时,建立通讯连接可加入等待或延时,等上一个设备连接成功再连接下一个设备,防止出现通讯失败的情况。

语法

MODBUSM_DES (address[,port],[timer],[resendset])

ADDRESS1 = MODBUSM_DES([port])

address:对端的modbus协议站号   

port:当前modbus主通讯的port

timer:消息超时时间设置,缺省1000ms

resendset:超时消息重发设置,0-不重发,1-SEND指令重发,2-SENDMODBUSM指令都重发。

 

MODBUSM指令超时重发要注意,从控制器可能收到2次消息,对寄存器的扫描也可能出现2次。

SEND指令超时重发对从控制器没有影响, 重要标志性变量可以通过SEND指令来修改。

适用控制器

通用

例子

例一 多主端-多从端通讯

SETCOM(38400,8,1,0,0,14,2,1000)   '设置串口0modbus主端,通讯等待1s

SETCOM(38400,8,1,0,1,14,2,1000)   '设置串口1modbus主端,通讯等待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

相关指令

SETCOMPROTOCOLPORTMODBUSM_DES2