VisualHMI 动态绘图:连续寄存器绘图命令、LUA set_array 与封闭填充

免费免费技术资料

这篇内容可直接阅读,适合用于基础学习和搜索引流。

本文目录
  1. 1. 1. 属性介绍
  2. 2. 2. 图形命令列表
  3. 3. 3. LUA 绘图(set_array)

动态绘图控件让你在 HMI 上创建和修改图形元素(点、线、圆、矩形、封闭图形、图片裁剪),像一个绘图板。核心机制:通过一段连续寄存器写入绘图命令——PLC 或 LUA 都能画。

1. 属性介绍

属性 说明
数据地址 绘图命令写入地址
线条粗细 线段宽度像素 1~4
命令模式 单条(单次写一个命令)/ 多条(单次写多个命令)
绘图模式 重绘(新指令先刷新旧图)/ 叠加(在画面上继续添加)
画布颜色 RGB 颜色
完成通知 绘图完成后指令清零并通知

VisualHMI 动态绘图:连续寄存器绘图命令、LUA set_array 与封闭填充插图

连续寄存器格式

LW     CMD         绘制图形类型
LW+1   Draw_Cnt    数据包数量(一个矩形=1个包)
LW+2   DATA        N 个字节数据段
LW+1+N END         结束字段,固定 0xFF00

VisualHMI 动态绘图:连续寄存器绘图命令、LUA set_array 与封闭填充插图1

2. 图形命令列表

命令 数据段格式 示例
画点(0x0001) X,Y,颜色 AA55 00 0F F1 2000 0001 0001 01F4 00F0 F800 FF00 CCCC(红点 500,240)
端点连线(0x0002) 数量,各点X,Y(连成线),颜色列表 AA55 00 1D F1 2000 0002 0003 FFFF 012C 012C 01F4 012C 01F4 0064 02BC 0064 FF00 CCCC
矩形(0x0003) 左上X,Y,右下X,Y,颜色(每矩形) AA55 00 1F F1 2000 0003 0002 011E 00AA 01AA 010A 471A 0258 0064 02BC 012C 2C4A FF00 CCCC(两个矩形)
矩形填充(0x0004) 同上 AA55 00 1F F1 2000 0004 0002 … FF00 CCCC
圆形(0x0005) 圆心X,Y,半径,颜色 AA55 00 13 F1 2000 0005 0001 01F4 00FA 0096 FEA0 FF00 CCCC
圆形填充(0x0005变体) 同上 AA55 00 13 F1 2000 0005 0001 0200 0100 0085 FEAA FF00 CCCC
图片(0x0007) PIC ID,裁剪左上X,Y,右下X,Y,目标X,Y AA55 00 19 F1 2000 0007 0001 0000 0021 0027 00A3 0040 0168 0168 FF00 CCCC
封闭区域填充(0x0008) X,Y,颜色 AA 55 00 11 F1 1001 0008 0001 01A4 00F6 F800 FF00 CCCC
频谱(0x0009) 数量,颜色,Xn,Yn 对 AA55 00 33 F1 2000 0009 0005 F800 0168 0064 0064 … FF00 CCCC(5 条垂线)
线段(0x000A) 数量,颜色,XnS,YnS,XnE,YnE AA55 00 33 F1 2000 000A 0004 … FF00 CCCC
矩形反色(0x000D) 左上,右下,颜色(反色=0xFFFF-颜色) AA55 00 15 F1 2000 000D 0001 0168 00E6 0190 010E 49F1 FF00 CCCC

VisualHMI 动态绘图:连续寄存器绘图命令、LUA set_array 与封闭填充插图2

PIC ID 查看:编译后 private 资源包里有 image.bin;PIC ID 对照打开工程目录下 build/image.xml(id=0 对应画面0背景图)。

VisualHMI 动态绘图:连续寄存器绘图命令、LUA set_array 与封闭填充插图3

封闭区域填充的坑:要两个动态绘图控件——一个画封闭图形(如 0x2000),一个设填充色(如 0x1001,CMD=0x0008),且设填充色的控件必须层叠在画封闭图形的控件上层;画面背景必须纯色,否则无法正常填充。

3. LUA 绘图(set_array)

LUA 里用 set_array() 写连续寄存器实现绘图。以 on_update 触发为例(字设置按钮写 0xF000 的值 1~13 切换图形):

baseGraphCmd = {
  opint=0x0001, Connection=0x0002, rect=0x0003, rectFill=0x0004,
  circle=0x0005, PIC=0x0006, ICON=0x0007, fill=0x0008,
  Spectrum=0x0009, line=0x000A, rectFillOr=0x000D }
-- 画点: 命令, 点数, X, Y, 颜色, 结束
local data = {baseGraphCmd.opint, 0x0003,
  0x01F4, 0x00F0, 0xF800, 0x01F5, 0x00F1, 0xF800, 0x01F6, 0x00F3, 0xF800,
  0xFF00}
set_array(VT_LW, 0x2000, data)   -- 单条模式地址 0x2000

多条模式把多个图形命令按顺序放进一个数组一次写入(地址 0x3000);叠加模式不清屏直接追加(地址 0x4000)。

VisualHMI 动态绘图:连续寄存器绘图命令、LUA set_array 与封闭填充插图4

VisualHMI 动态绘图:连续寄存器绘图命令、LUA set_array 与封闭填充插图5

VisualHMI 动态绘图:连续寄存器绘图命令、LUA set_array 与封闭填充插图6

三种模式选型:单条=一次画一个图形(重绘),多条=一次画多个图形(重绘),叠加=不清屏连续画。做趋势/频谱这种动态刷新用重绘,做流程示意图这种累积显示用叠加。

整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)组态控件教程「动态绘图」,版权归大彩科技所有。

技术术语(共 2 个)—— 点击展开
寄存器Modbus 寄存器存储数据单元,分线圈/离散输入/保持/输入寄存器四类
PLC可编程逻辑控制器,工业自动化控制的核心设备
来源/工具信息 —— 点击展开
来源 Modbus.cn — China's leading Modbus communication protocol technical community 分类 串口屏/HMI 开发 / 组态控件 字数 1929 字 · 阅读约 5 分钟 更新 2026-08-04 永久链接 http://www.modbus.cn/en/51023.html
Recommended: Modbus Debug Assistant Mini Program
Modbus中文网官方推出的Modbus调试工具,支持 Modbus RTU/TCP 实时通信调试、寄存器读写、线圈控制、数据监控和报文分析。 无需安装,微信搜索「Modbus调试助手」即可使用。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
📝 作者声明
本文由 Modbus中文网技术团队 原创撰写,内容基于实际项目案例与技术文档,力求为读者提供准确、实用的参考信息。
把这篇资料用于真实项目?

进入工具中心进行报文解析、CRC 校验和设备调试,或提交需求获取选型与接入建议。

工程师会员

把这篇文章变成可执行的调试资料

开通后可使用高级报文解析、资料包下载、代码示例、工程案例和优先技术支持,适合真实项目交付。

高级工具不限次
资料包与代码包
完整工程案例库
优先技术支持入口

发表回复

Your email address will not be published. 必填项已用 * 标注