首先,我们打开“MCGS嵌入版”组态软件新建一个工程,在“实时数据库”选项卡中建立如下几个变量:
ceshi1(变量的对象类型为数值型)
ceshi2(变量的对象类型为数值型)
group1(变量的对象类型为组对象)
导出状态(变量的对象类型为开关型)
进度指示(变量的对象类型为开关型)
如下图所示:
接下来我们设置刚才建立的变量group1的数据对象属性,在“实时数据库”选项卡中选中group1鼠标右键单击选择属性,如下图所示:
我们选择“存盘属性”选项卡,在“数据对象值的存盘”一项中选择“定时存盘,存盘周期项”并把时间设置为0秒;在“组对象成员”选项卡中我们把左侧的“数据对象列表”中的ceshi1和ceshi2变量添加到右侧的“组对象成员列表”然后单击确定。
如下两幅图所示:
打开“用户窗口”选项卡,点击右侧的“新建窗口”按钮,建立一个新窗口,如下图所示:
我们点击“窗口0”,进行画面组态
这里的“导出状态”和“进度指示”上面的两个方框是“标签动画”构件,鼠标右键单击并打开“属性”我们选中“属性设置”选项卡,在右侧的“输入输出连接”一项中勾上“显示输出”选项;选择“显示输出”选项卡关联我们之前建立的两个“开关量”(导出状态和进度指示一个标签对应一个变量)选择“输出值类型”为“数值量输出”
值得注意的是在“实时数据库”当中建立的两个变量是开关量,这里显示的是“数值量”是因为显示的是这个数据的返回值,建立变量的时候还是要建立”开关量”的
这样可以直观的监视数据导出的过程及状态。
然后我们添加两个“输入框”构件,分别关联我们之前建立的两个“数值量”(ceshi1和ceshi2一个输入框对应一个变量)
继续添加一个“标准按钮”构件,选择“脚本程序”选项卡在“抬起脚本”中写入如下代码:
!SaveData(group1)
(代码的意义是将group1的值存盘)
!TransToUSB("group1","2017/10/300:0:0","2017/10/31 0:0:0",导出状态,进度指示,0,"")
(代码的意义是导出2017/10/30 0:0:0到2017/10/31 0:0:0这之前的所有group1存盘数据)
然后点击确认。
保存并下载程序到HMI设备,插上U盘准备给导出数据使用。
设置变量“ceshi1”和“ceshi2”的值,这里我们可以设置任意值,然后单击导出U盘。
拔下U盘,插入电脑,可以在U盘的根目录中找到group1.csv文件,可以使用MicrosoftOffice EXCEL程序打开此文件。
打开文件可以看到刚才设置的值(这里一共点击了“导出U盘“按钮7次,前6次没有输入两个数值量没有设置任何值,第七次都设置为1,然后拔下的U盘插入电脑)
嗯,最后,附上上述脚本程序中用到的两条函数指令的详细说明。
!TransToUSB(组对象名,起始时间,结束时间,导出状态,进度指示,转出模式,保留参数)
函数意义:将XXX组对象的存盘数据导出到"USB HARDDISK"目录下,保存为“XXX.csv”文件,模拟环境则是保存到与可执行文件相同路径下。
返回值:开关型。
0:参数没有错误。
1:第一个参数错误。(请检查是否组对象名称,或“MCGS_ALARM”)
2: 时间参数格式错误。
3:状态变量的类型错误。(两个变量都必须是开关量)
5:同时只能支持一个csv导出。
参 数: 组对象名:字符型,要导出的组对象名称(或“MCGS_ALARM”)。
起始时间:字符型,要导出的历史数据的开始时间,格式:YYYY-MM-DD HH:MM:SS。
结束时间:字符型,要导出的历史数据的结束时间,格式:YYYY-MM-DD HH:MM:SS。
导出状态:开关型,进度指示数据对象名(开关量),输出导出状态。
正常导出存盘后输出当前已经导出的记录条数。
当创建导出文件“XXX.csv”失败时输出-1。(请检查下位机是否正常插入了U盘)
当前没有记录可导出时输出-2。(请检查对应的组对象是否有存盘信息,或者开始时间结束时间是否设置正确)
导出过程中出现未知数据类型时输出-3。(不应该出现)
导出过程中出现文件操作异常时输出-4。(请检查U盘容量是否足够)
进度指示:开关量,指定一个数字型或开关型对象,该对象控制导出执行,启动导出时会自动设置该变量为0,用户在导出过程中想取消导出可设置该变量为<0的任何值,导出函数运行结束后会自动设置对象值为1。
注:6.5(01.0010)之前的版本,此参数为原导出状态变量2,显示的是导出数据总条数。
转出模式:开关型,保留,设置为0。
保留参数:字符型,保留, 设置为空字符串。
!SaveData(DatName)
函数意义:把数据对象DataName对应的当前值存入存盘数据库中。本函数的操作使对应的数据对象的值存盘一次。此数据对象必须具有存盘属性,且存盘时间需设为0秒。否则会操作失败。
返回值:数值型,=0为操作成功,<>0为操作失败。
参 数:DatName,数据对象名。
实 例:!SaveData(电机1),把组对象“电机1”的所有成员对应的当前值存盘一次。
|