本 HMI 支持 Modbus RTU、Modbus TCP、Modbus ASCII、ModbusServer RTU、ModbusServer TCP,一个端口可以挂载一种协议的多个设备。
默认传输的数据格式为:
起始位:1bit
数据位:8bit
校验位:无
停止位:1bit
串口波特率:
HMI 会根据协议配置自动生成符合 MODBUS 协议的指令格式。所以用户不需要考虑屏幕如何生成 Modbus 报文、如何解析 Modbus 报文。屏做主机时,控件上绑定的设备变量通过串口或者网口周期性地发送这些指令到从机,接收从机响应的指令并解析后,更新被设备变量绑定的控件。
寄存器 PLC 地址 | 寄存器协议地址 功能码 | 寄存器种类 读写状态 |
---|---|---|
00001-09999 | 0000-FFFF | 01H、05H、0FH 线圈状态 可读可写 |
10001-19999 | 0000-FFFF | 02H 离散输入状态 可读 |
30001-39999 | 0000-FFFF | 04H 输入寄存器 可读 |
40001-49999 | 0000-FFFF | 03H、06H、10H 保持寄存器 可读可写 |
注意:HMI 中软元件地址统一为 10 进制,只需将协议地址转化为 HMI 设备地址即可读写该 PLC 地址的寄存器或继电器。ModBus 协议一个地址一个寄存器默认为 2 个字节的字。所以设备变量类型一般选择 16 位整形。继电器为单个位操作,默认为 bool 类型操作单个位。也可改其他类型操作多个位。
右键 设备管理 进行添加,下拉框中选择 Modbus,进而选择 Modbus/RTU 按分区/Modbus/ASCII 按分区
添加完成后,设置通讯串口。根据设备任意设置串口并配置参数。注意:如需在屏下测试,还需要配置 HMI 参数,如下图所示:
在端口号配置上,我们提供了三个 COM 口。COM1 对应 232 电平,COM2 对应 485 电平,COM3 对应 TTL 电平(如遇多个 485-定制板,COM3 也对应 485 电平)。填写其他端口号无效。
右键 设备管理 进行添加,下拉框中选择 Modbus,进而选择 Modbus/TCP按分区。添加完成后,设置通讯网口。根据设备设置配置参数。注意:如需在屏下测试,还需要配置 HMI 参数,如下图所示:
IP 地址为从机地址。(例如我的屏的地址为 192.168.1.100,Modbus 模拟设备的地址为电脑地址 192.168.1.10。通过网线将屏和电脑连在一起。)端口为 TCP 常用 502 端口。注意:端口请谨慎填写。
选择 ModbusServer/RTU,连接方法同ModBus RTU
选择 ModbusServer/TCP 。IP 地址固定,将会随着屏上地址变化而变化
添加完设备后,即可添加相应地址的设备变量。下面将展示两种格式:
拖动控件并设置关联变量即可实现控件绑定。
示例一:使用 VM 读整型或 BOOL 类型设备变量,其他类型同理。
int value =0;
vm->getInt("4区1地址设备变量", value);
示例二:使用 VM 写整型或 BOOL 类型写设备变量,其他类型同理。
int value =99;
vm->setInt("4区1地址设备变量", value);
示例三:使用 VM 立即读整型或 BOOL 类型设备变量,其他类型同理。
int value =0;
vm->getInt("4区1地址设备变量", value,true);
示例四:使用 VM 立即写整型或 BOOL 类型写设备变量,其他类型同理。
int value =99;
vm->setInt("4区1地址设备变量", value,true);
- 如果不使用第三个参数,如示例一与示例二,则设备变量的读取和写入都为采集线程通讯的参数,如果采集超时或者写队列指令过多,可能会导致采集现场写队列重复。
- 如果 设备变量 设置为 驻留 ,则 全局采集 这个设备变量的地址(即不在当前页面也能及时获取设备变量的刷新)。
- 如果 设备变量 设置为 不驻留,则 当前页面如果有设备变量引用 才会采集该设备变量(即若当前页面设备变量与控件相绑定才可以实时获取设备变量的值)。
- 如果使用第三个参数并设置为 true ,如示例三与示例四,则为单独通道去读写该地址,可以按读写时序操作,完成较为复杂的逻辑。
static bool ison = false;
if(!ison){
vm->setInt("变量_3", 1, true);
vm->setInt("变量_4", 1, true);
vm->setInt("变量_5", 1, true);
ison = true;
}else{
vm->setInt("变量_3", 0, true);
vm->setInt("变量_4", 0, true);
vm->setInt("变量_5", 0, true);
ison = false;
}
仅有 设备变量 可以设置驻留(其他驱动同理)。
设置驻留的变量不能过多。否则会严重影响执行效率。
eth0 通常固定为 IP 为 192.168.1.100,默认网关为 192.168.1.1 。
双网口机型 eth1 默认为固定 IP 为 192.168.0.100,默认网关为 192.168.0.1 。
D