|
HMI上位机版本1.1.333, DC80480AM050_1011_0T
我设置了一个曲线控件, 数据是连续地址方式,数据地址0X4020, 数据类型U32位, 数据点数200, 一条曲线
想要点击按钮清除曲线的显示, 所以定义了一个用户变量, 0X4006, MCU写入值的时候, LUA检测变化, 然后将0X4020之后400字写0
我理解每个地址是16位的,我的曲线数据是32位的,因此200数据点, 需要清零的是400字
实际上MCU写0X4006地址后,曲线依旧显示, 没有变化.
另外, 设置Y周最大值,貌似也没有变化,曲线所在页面是1,控件ID是1001, 我定义0X4000作为Y最大值的存储位置, MCU向此地址写入32位变量
LUA检测0X4000, 0X4001变化,就将值读出,然后设置给曲线控件, 貌似也没变化.
下面是lua部分代码
--数据类型定义
VT_LW = 1 --变量地址
VT_RW = 2 --FLASH存储
function on_update(slave,vtype,addr)
if vtype == VT_LW
then
if addr == 0x4000
then
local _max = get_uint32(VT_LW, 0x4000)
wgt_set_param(1, 1001, 0x32, _max)
elseif addr == 0x4001
then
local _max = get_uint32(VT_LW, 0x4000)
wgt_set_param(1, 1001, 0x32, _max)
elseif addr == 0x4006
then
set_uint16(2,0x4006,0) --清空触发变量
local men = 0
while(men < 400)
do
set_uint16(2,0x4020+men,0) --清空曲线内存,注意这里是按照16清除的,字节数x2
end
end
end
end
|
|