Skip to main content
x

智能液晶显示模块技术白皮书 - 曲线实现

背景介绍

在工业控制领域,Modbus 作为一种开放式串行通讯协议,应用十分广泛,是连接工业电子设备很流行的方法。Modbus通过设备之间的串行线进行数据传输,最简单的设置是使用一根串行电缆连接两个设备(主设备和从设备)上的串行端口。Modbus 协议有四种:Modbus ASCII, Modbus Plus, Modbus TCP 和 Modbus RTU。工业上用得最多的是 Modbus RTU制式,它是一种紧凑的采用二进制表示数据的方式;因为使用二进制编码和CRC错误检查的结合使得 Modbus RTU广泛应用于工业场景。

这里我们将以 HKT070DMC-2C 为例,讲解如何在工控环境下,通过 Modbus 收集数据,并以曲线实时展示在屏幕上。

modbus types

硬件

7 inch Smart TFT LCD

HKT070DMC-2C 是一款在Modbus主机模式下工作的智能液晶显示屏,内置 Lua 脚本引擎,带有IP65耐候外壳和电阻触摸屏,适合在恶劣的工作环境中使用

尺寸:7 英寸
分辨率:800x480
接口:RS485 (Modbus-RTU master)
工作温度:-20°C ~ 70°C
工作电压:11V~26V

具体实现

在智能显示模块的系统中,预留了一块内存(RAM)空间, 用于存放曲线控件需要用的数据。这块特殊的内存空间定义在0x060000 ~ 0x06FFFF地址段,数值范围:-32768 ~ +32766。因为 HK070DMC-2C 用的是RS485接口 Modbus 通讯协议,而 Modbus 协议不支持对 0x060000 ~ 0x06FFFF地址段进行操作,我们无法直接把数据放进曲线控件支持的存储空间。

比较好的解决方法是:使用 Lua 脚本读取 Modbus 地址寄存器上的数据,然后,用屏幕封装好的 Lua 函数写曲线指令来更新曲线数据。

新建工程

  • 新建工程:选择800x480分辨率,型号HK070DMC-2C
  • 新建页面,设置一个背景图
  • 在页面中建立曲线控件(本页面曲线可显示500个点数据,对应曲线VP变量长度为500)

设置Modbus寄存器地址和映射

因为 Modbus 协议不支持对曲线控件使用的存储空间操作,我们需要建立一个映射的关系。

VP 地址 Modbus 操作地址
0x080000 0x1000
0x080002 0x1001
... ...
0x080320 0x1190
0x080322 0x1192
0x080A00 0x2000

在智能显示模块开发工具SGTools中配置映射 - 菜单-->工具-->Modbus脚本编辑器

modbus update

当智能显示模块通过Modbus收到数据后,他们会即时被同步到VP寄存器中。

用Lua脚本更新曲线

曲线控件有2种刷新模式:

模式1:向左推进

  • 每次向曲线控件提供一个数值
  • 曲线控件把前面的数据向左移动一个点,并把最新数值放在最后

Lua脚本中实现方法:
   - 定义1个 Modbus寄存器用于存储最新的曲线数值。
   - 从设备(Slave)实时往定义的寄存器地址中写数据。
   - 屏幕实时读取定义的寄存器数值,用”向左推进模式”更新曲线。

模式2:一次更新曲线

Lua脚本中实现方法:
   - 从设备(Slave)更新500个点曲线数据(往0x1000~0x11F4写数据)
   - 屏幕读取500个曲线数据,用写”曲线模式”一次写500个曲线数据。

总结

使用智能显示模块 HKT070DMC-2C,我们可以通过 Modbus 总线收集多个从机设备上的数据,并用曲线形式显示出来。