在开发中,有时要求将重要数据记录下来(比如电压,电流值等),并能查询显示。现在通过用mcgs屏,将要需要的数据定时保存下来。再用存盘数据浏览构件来显示。
1.在实时数据库中新建一个对象,属性设为组对象,这里叫{保存数据组},存盘属性选择定时存储到磁盘或者定时存储到内存.(区别是存到磁盘后,重启屏后存盘的数据还在),并设定存盘周期为0s,将需要存盘的变量加入此组对象的组对象成员。
2.在运行策略界面,使用循环策略或者事件策调用函数!savedata(组对象名称)定时存储数据。
常见有两种
一种是通过一个plc的m继电器触发,例如上升沿一次存盘一次
这里使用事件策略,触发对象这里例如选择m1,执行条件根据实际需求选择,如果是类似上升沿就选择正跳变,从0变化到1时,执行1次
一种是通过一个bool量作为使能标志,标志置位时候1秒或1分钟存一次
这里使用循环策略,这里设置循环时间,这里为1000ms,1秒
脚本里加个简单的if判断即可
3.在用户窗口,在工具箱选中存盘数据浏览构件,在数据来源项关联对应组对象
4.在显示属性点“复位“按钮,将显示列自动添加上,再修改标题和宽度,也可在这添加单位,修改显示的小数点
这里注意一件事:
存盘成功后,只有使用Refresh( )刷新一下显示构件,才会有数据在表格中显示
可以在在窗口循环或者按钮脚本中添加Refresh( )
模拟效果
5.如果要清除所有存盘数据,用函数!DelAllSaveDat(),!DelAllSaveDat(DatName)是删除数据对象DatName的所有记录
如果不清除,存到设定大小对应的条数,就会自动将老数据清除给新数据腾出空间
6导出csv通过!ExportHisDataToCSV()导出
具体参数在下图
Dim Data AS integer
Data = !ExportHisDataToCSV(文件名,"保存数据组","",开始时间,当前时间,20000,1,"",导出进度,状态控制)
IF Data = 0 THEN
用户窗口.提示弹窗.Open( )
提示信息 = 0
else
用户窗口.提示弹窗.Open( )
提示信息 = 1
ENDIF
导出效果,这里要设置下单元的格式