菜单

第四章 资料取样

1 用途

「资料取样」功能用于按照设置的规则定时或触发采集变量实时值到保存数据库,然通过曲线或表格方式显示出来。

1.1 取样方式

1)周期式 

     按照设定周期对数据进行采集

2)触发式

     按照触发条件对数据进行采集

1.2 保存位置

1)保存到HMI

2)保存到SD卡

3)保存到U盘

1.3 显示与输出

1)曲线图显示;

2)表格显示;

3)导出为CSV文件;

2 资料取样设置

双击“工程设置”进入工程设置界面,再选择“资料取样”选项卡,如下图示:

右上角工具栏对应添加、删除、修改功能。

点击“添加”按钮,弹出资料取样设置界面,

项目
描述
变量名称
选择一个或多个变量作为采样源
取样方式

1)周期式

用固定的时间频率进行资料取样,[采样周期] 可设定范围从 0.1 秒至 25秒。

 

2)触发式

利用一个变量的状态,来触发取样动作。

[模式] 可为:

[OFF -> ON] 当指定地址的状态从 OFF 变为 ON,会触发资料取样。

[ON -> OFF] 当指定地址的状态从 ON 变为 OFF,会触发资料取样。

[OFF <-> ON] 只要指定地址的状态改变,就会触发资料取样。

 

取样后取反

若勾选,在触发资料取样后,系统会将触发位复归为 ON/OFF。

暂停取样控制
当指定位变量的状态被触发时,将暂停取样动作,直到指定地址的状态恢复。
清除实时
数据地址

当指定位变量的状态由 [OFF -> ON] 或 [ON -> OFF] 时,将清除在实时曲线已取样的数据,取样数据的数目也会被归零,但不影响已存成文件中的历史取样数据。

数据保存
可选择保存至HMI或U盘。
存放文件夹
存放的文件夹名称
文件数量限制
若勾选,当取样天数超过设定天数时系统会自动清除以前的记录。

 

注意:
每一条采集设置记录有一个唯一数字编号,当与控件配合使用时,控件的“资料取样”属性需要设置选择正确的采样记录编号,如下图所示。

3 采样数据显示

3.1 历史曲线-实时模式

放置一个历史曲线控件到页面中,拖放到合适大小,

主要设置以下属性:

1)“绑定采样”选择需要显示的采样数据任务编号,

2)“显示类型”选择:实时数据,

3)设置X轴长度、时间单位、时间格式等主要参数,

4)设置Y轴上下限,

5)设置各个显示通道(曲线)的颜色,

运行效果如下,

3.2 历史曲线-历史模式

放置一个历史曲线控件到页面中,拖放到合适大小,

主要设置以下属性:

1)“绑定采样”选择需要显示的采样数据任务编号,

2)“显示类型”选择:历史数据,

3)设置X轴长度、时间单位、时间格式等主要参数,

4)设置Y轴上下限,

5)设置各个显示通道(曲线)的颜色,

6)关联日期变量,用来告诉历史曲线显示哪一天开始的历史数据,

7)添加四个按钮,用来进行时间轴的前进、后退、跳转最前、跳转最后记录,

添加点击事件代码如下:

void Frm04::wMButton1_prs_cb(uint16_t code, LvEvent e) {
	/*wMButton1(功能键)的按下事件*/
	wMHistoryTrend2->navBack();
}

void Frm04::wMButton2_prs_cb(uint16_t code, LvEvent e) {
	/*wMButton2(功能键)的按下事件*/
	wMHistoryTrend2->navNext();
}

void Frm04::wMButton4_prs_cb(uint16_t code, LvEvent e) {
	/*wMButton1(功能键)的按下事件*/
	wMHistoryTrend2->navFirst();
}

void Frm04::wMButton5_prs_cb(uint16_t code, LvEvent e) {
	/*wMButton2(功能键)的按下事件*/
	wMHistoryTrend2->navLast();
}

运行效果如下,

X轴时间跨度、Y轴上下限可以关联变量,通过调整变量值来实现时间跨度、曲线上下限的调整。

下面的例子中,通过滑块来调整,效果如下:

3.3 表格显示-实时模式

参考视频,

正余弦波形生成请参考定时任务

3.4 表格显示-历史模式

参考视频:

 

4 采样数据导出

API接口

//使用函数
void exportCSV(const string sids,int ymdstart,int ymdend, const string dircsv="");
//sids 多个采样id用逗号分隔,如 "1,2,3"。为空时,表示全部;
//ymdstart 开始日期yyyyMMdd(含)
//ymdend  结束日期yyyyMMdd(含)
//dircsv 导出csv的保存目录(导出文件名不变,扩展名为csv)
//电脑上仿真时不起作用,固定存放在项目的“数据”文件夹下
//HMI中运行时,该参数表示U盘根目录下的子目录,如果为空表示在U盘根目录下。
 
添加一个按钮,在点击事件中实现导出,示例如下:
void Frm04::wMButton14_prs_cb(uint16_t code, LvEvent e) {
	//全部导出到U盘sample目录下。
	SampleMgr::getInstance(p_rt)->exportCSV("",0,99999999,"sample");

	//导出采样#1从2022年01月02日到2023年01月01日的采样数据到U盘sample目录下
	SampleMgr::getInstance(p_rt)->exportCSV("1",20220102, 20230101,"sample");
}

 

5 采样数据删除

 API接口:
int deleteDB(const string sids, int ymdstart,int ymdend);
//sids 多个采样id用逗号分隔,如 "1,2,3"。为空时,表示全部;
//ymstart 开始日期yyyyMMdd(含)
//ymend 结束日期yyyyMMdd(含)
//返回删除的文件数,0表示没有删除文件
 
 
例如:删除20230918当天的所有采样数据。
SampleMgr::getInstance(p_rt)->deleteDB("", 20230918, 20230918);

 

 

文章
导出全部采样数据到CSV文件
采样值的线性换算
上一个
3.5 变量传递
下一个
导出全部采样数据到CSV文件
最近修改: 2025-01-24Powered by