HMI 曲线控件 如何清除曲线显示
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
清空曲线,在资料采样里面有控制地址,写0x0055就可以清掉曲线数据 on_update这个回调函数有点类似TFT的on_control_notify,需要从屏幕侧主动修改才会触发这个函数 If后要接end 发表于 2023-3-21 08:50
清空曲线,在资料采样里面有控制地址,写0x0055就可以清掉曲线数据
我是用的 连续地址模式 这个模式下, 我看说明中控制地址的作用是设置隐藏或者显示某条曲线,这种情况,在哪里快速清除曲线或者对应的内存呢, 只能用MCU自己做吗?
另外,设置Y轴数据最大值, 这个我看说明只能通过lua来实现, 那么不点击屏幕的情况下, 如何使用MCU发送数据来通知lua设置Y轴最大值呢?
资料采集,里面有一个控制地址的选项,绑定一个变量来清除曲线 If后要接end 发表于 2023-3-21 15:13
资料采集,里面有一个控制地址的选项,绑定一个变量来清除曲线
选择曲线的数据来源为 连续地址 之后, 整个属性界面只有曲线设置下面有个 控制地址 其他地方没有看到呀, 能给个截图看看吗, 这个控制地址是不是控制曲线是否显示的? 而不是清除曲线的数据
另外就是MCU和lua配合, 实现mcu修改Y轴最大值, 这个如何实现?
改y轴这个,可以试试设置两个变量a,b,a是当前y轴的最值,b在定时器里面,一直获取A地址的数值。你用指令改这个A地址的数值,定时器里面一直判断a,b两个数值是否相同,不相同就将当前y轴的最值改成最新修改的值,同时将a赋值为b 工程-资料采样里面 If后要接end 发表于 2023-3-21 15:26
工程-资料采样里面
连续地址模式下, 是没有这个设置界面的. 连续地址模式下的话,只有显示隐藏了。清空的话把这些地址都写0
页:
[1]