昆仑通态脚本

合集下载

昆仑通态触摸屏实现只选择配方不能更改配方的方法

昆仑通态触摸屏实现只选择配方不能更改配方的方法

昆仑通态触摸屏实现只选择配方不能更改配方的方法
哈尔滨研奥科技有限公司
唐雪飞
2020/06/14
在实际触摸屏应用项目中,涉及配方的情况下,用户从管理角度往往希望操作员只能选择配方,不能更改配方及看到配方数据。

因昆仑通态触摸屏自带的配方选择函数:
!RecipeLoadByDialog (strRecipeGroupName, strDialogTitle)
执行后画面如下,其中有“编辑配方”按钮,不能启动保护配方的目的。

因此本文介绍一种实现配方保护的方法,具体步骤如下:
1、新建配方:
2、建立变量:
3、建立画面如下:
4、画面启动脚本:
设置第一个配方为开机配方,并显示配方名字。

5、上一配方按钮脚本:
6、下一配方按钮脚本:
7、通过控制这两个按钮的权限,就启到保护配方和选择配方
的目的。

哈尔滨研奥科技有限公司。

MCGS脚本驱动开发工具使用指导手册

MCGS脚本驱动开发工具使用指导手册

脚本驱动V2.0使用指导手册版本号:0.1目录错误!未找到图形项目表。

第一章新脚本驱动说明一.脚本驱动适用范围1.脚本驱动适用的版本A. MCGS嵌入式组态软件;版本号:6.5(01.0010)注:此版本以上为新版本,以下为旧版本B. MCGS通用版的定制版组态软件C. MCGS网络版的定制版组态软件2.脚本驱动适用的设备A. 独立板卡设备B. 串口通信设备3.脚本驱动适用的协议二.脚本驱动兼容性1.旧版本脚本驱动兼容新版本组态软件2.新版本脚本驱动不兼容旧版本的组态软件,旧版本组态软件无法识别新版本脚本驱动三.脚本驱动新增内容1.脚本驱动新增功能新增加生成向导功能,具体参照第三章内容。

2.脚本驱动新增函数(1)数据解析函数1.!SvrGetByteFromByteArr(ByRef ByteArr, start, ByRef n, Flag)2.!SvrGetShortFromByteArr(ByRef ByteArr, start, ByRef n, Flag)3.!SvrGetIntFromByteArr(ByRef ByteArr, start, ByRef n, Flag)4.!SvrGetSingleFromByteArr(ByRef ByteArr, start, ByRef x, Flag)5.!SvrGetByteFromHexStr(str, ByRef n, Flag)6.!SvrGetShortFormHexStr(str, ByRef n, Flag)7.!SvrGetIntFromHexStr(str, ByRef n, Flag)8.!SvrGetSingleFromHexStr(str, ByRef x, Flag)(2)数据校验函数1.!SvrByteArraySum(ByRef ByteArr, start, length)2.!SvrStrSum(str, Flag)3.!SvrByteArrayXOR(ByRef ByteArr, start, length)4.!SvrStrXOR(str, Flag)5.!SvrStrModbusCRC(ByRef ByteArr, start, length)6.!SvrStrModbusLRC(str, start, length)7.!OpenLog()8.!CloseLog()(3)字节数组操作函数1.!HStr2HByre(str, arByte)2.!HByte2HStr(arByte, str)第二章基础概念讲解一.通讯协议1.ACSII码通讯协议(字符型协议)通讯信息按照ASCII码方式解析得到的参数信息称为ASCII码通讯。

昆仑通态脚本

昆仑通态脚本

相关内容回首页数据对象操作函数!AnswerAlm(DatName)函数意义:应答数据对象DatName所产生的报警。

如对应的数据对象没有报警产生或已经应答,则本函数无效。

返回值:数值型,=0为操作成功,<>0为操作失败。

参数:DatName,数据对象名。

实例:!AnswerAlm(电机温度),应答数据对象“电机温度”所产生的报警。

!ChangeDataSave(Datname,n)函数意义:改变数据对象Datname存盘的周期。

返回值:数值型,=0为操作成功,<>0为操作失败。

参数:Datname,数据对象名;n,数值型,以秒表示的存盘间隔时间。

实例:!ChangeDataSave(温度,5),温度的存盘间隔时间为5秒。

!ChangeSaveData(DatName,Num1,Num2)该函数在通用版中可以使用,在嵌入版中不能使用!函数意义:改变数据对象DatName所对应存盘数据的存盘间隔,把Num1小时以前的存盘数据(以当前时间为0点)的存盘间隔改为Num2秒。

本操作只对组对象有效,对单个的数据对象无效。

当DataName =空字符,或Num1=0或Num2=0时,本操作无效。

返回值:数值型,返回值=0:调用正常,<>0:调用不正常。

参数:DatName:数据对象名。

Num1:数值型时间量,单位:小时。

本函数用Num1<0的一些数值来表示一些特殊意义的操作:=-1 改变当天对应数据对象所有存盘数据的存盘间隔;=-2 改变昨天对应数据对象所有存盘数据的存盘间隔;=-3 改变本星期对应数据对象所有存盘数据的存盘间隔;=-4 改变上星期对应数据对象所有存盘数据的存盘间隔;=-5 改变本月对应数据对象所有存盘数据的存盘间隔;=-6 改变上个月对应数据对象所有存盘数据的存盘间隔;Num2:数值型时间量,新的存盘间隔,单位:秒。

实例:!ChangeSaveData(电机1,-2,5),把组对象“电机1”对应的存盘数据中昨天的存盘数据的存盘间隔改为5秒钟。

昆仑通态触摸屏配方组态设计案例-查询保存编辑导入导出

昆仑通态触摸屏配方组态设计案例-查询保存编辑导入导出

昆仑通态触摸屏配方组态设计案例-查询保存编辑导入导出一.实现目的1.配方组态设计2.通过配方名称查询配方3.通过配方编号查询配方4.配方保存5.配方删除6.配方预览编辑功能7.配方导出功能8.配方导入功能二.环境条件如下图所示三.组态设计1.配方组态设计第一步:进入配方组态设计点击工具-配方组态设计,进入配方组态编辑器如上图所示,新建面包配方,添加变量名称和列标题第二步:配方编辑,如下图所示编辑如下配方2.配方预览查看添加四个标准按钮分别为首个配方,上个配方,下个配方,末个配方如下图所示为每个按钮添加脚本程序首个配方-脚本程序如下所示上个配方-脚本程序如下所示下个配方-脚本程序如下所示末个配方-脚本程序如下所示3.通过配方名称查看配方1>新建用户策略-按照配方名查找配方2>用户策略-按照配方名称查找配方的脚本程序如下所示3>在配方名称输入框中做如下操作勾选显示输出,按钮输入,按钮动作显示输出和按钮输入选择变量-配方名按钮动作-选择-按配方名查找配方-选择组态的策略4.通过配方编号查找配方1>新建用户策略-按照编号查找配方2>用户策略-按照配方编号查找配方的脚本程序如下所示3>在配方编号输入框中做如下操作勾选显示输出,按钮输入,按钮动作显示输出和按钮输入选择变量-配方名按钮动作-选择-按配方编号查找配方-选择组态的策略5.配方保存功能实现1>新建用户策略-配方保存2>脚本程序如下3>在配方保存按钮组态策略-配方保存6.配方删除脚本程序如下7.配方编辑配方编辑脚本程序如下模拟配方编辑功能如下所示8.配方选择配方选择脚本程序如下模拟配方选择如下图所示9.配方导出功能指令说明!RecipeToCsv(配方组名称,文件名,导出列名,起始编号,期望导出条数,实际导出条数,导出参数)函数说明:导出指定配方数据到CSV文件参数说明:配方组名称,字符串,指定配方组文件名,字符串,csv文件名,不含”\\”、”/”、”..”等非法字符导出列名,字符串,需要导出的列的集合,英文逗号分割,空表示全部列起始编号,整数,从起始编号开始导出配方数据期望导出条数,整数,希望导出配方的数目实际导出条数,整数,实际导出的配方数目,此为输出参数导出参数,整数BIT0表示导出数据的方式BIT0 = 0:代表保存现有数据,并追加到文件尾部BIT0 = 1:代表删除文件中现有数据,写入导出数据BIT1表示控制导出数据的内容BIT1 = 0:代表包含配方组成员字段名称BIT1 = 1:代表不包含配方组成员字段名称返回值:整数0:执行成功-1:执行失败-2:配方未加载-7:参数越界-12:U盘挂载失败-17:文件名格式错误-19:列标题不匹配实例:配方返回值 = (“面包”,“面包.csv”,“”,0,100,实际导出条数,3)注意事项:使用此方法需要配方处于已加载状态。

昆仑通态人机界面与单片机通信实战教程二:脚本驱动的设计

昆仑通态人机界面与单片机通信实战教程二:脚本驱动的设计

昆仑通态⼈机界⾯与单⽚机通信实战教程⼆:脚本驱动的设计⼤家好,我是『芯知识学堂』的SingleYork,前⾯给⼤家介绍了“昆仑通态⼈机界⾯与单⽚机通信实战教程⼀:⼯程界⾯的设计”,今天笔者就要来给⼤家介绍“昆仑通态⼈机界⾯与单⽚机通信实战教程⼆:脚本驱动的设其实昆仑通态的软件也⾃带了很多标准设备的驱动,如:西门⼦PLC的驱动、三菱PLC的驱动等,直接加载驱动就可以⽤了,但是对于我们⾃⼰开发的单⽚机板的话,就需要⾃⼰编写驱动了。

⼀说到脚本驱动,⾃然就⽀持标准的modbus协议,也⽀持⾃定义协议,对于我们这些不是很复杂的设备来说,个⼈觉得,没必要去深⼊研究modbus协议,尤其是菜鸟,⾃定义协议可能会更加实⽤,所以,笔者重点给⼤家介绍“⾃动义协议”。

我们先来看⼀下,我们之前设计好的HDMI⼯程:从这个HDMI⼯程中我们可以看到,⼀共有14个输⼊状态、12个输出状态和12个输出控制,其中:14个输⼊状态可以⽤2个字节(BYTE),按位操作来实现状态的显⽰;12个输出状态也可以⽤2个字节(BYTE),按位操作来实现状态的显⽰;12个输出控制,我们可以也可以⽤2个字节(BYTE)来按位控制,也可以⽤12个BYTE来按控制,只是按位操作来控制的话,可能操作会⿇烦⼀些,为了操作简单,我们就⽤12个BYTE来实现控制吧;这样⼀来,我们就可以制定以下通信协议:(1)触摸屏读指令(0x80:⼀次性读取多个数据)格式(⼗六进制):主机发送(触摸屏):帧头(2)+ 长度(1)+ 功能码(1)+ 起始地址(2)+和校验(从长度位开始累加)从机应答(单⽚机):帧头(2)+ 长度(1)+ 功能码(1)+ 数据⼀(输⼊状态⼀:X00-X07)+数据⼆(输⼊状态⼆:X10-X17)+ 数据三(输出状态⼀:Y00-T07))+ 数据四(输出状态⼆:Y10-X17)+和校验(从例:主机发送:37 73 04 80 0000 84从机返回:5A A5 06 80 00 00 00 00 86(2)触摸屏写指令(0x81:写单个寄存器操作)格式(⼗六进制):主机发送(触摸屏):帧头(2)+ 长度(1)+ 功能码(1)+ 寄存器地址(2)+寄存器值(2)+和校验(从长度位开始累加)例:37 73 06 81 0000 0001 88写指令从机就不设置单独的返回指令了,在写完之后,可以通过读指令来查询状态来判断有没有写成功。

mcgs脚本驱动

mcgs脚本驱动

脚本驱动V2.0使用指导手册版本号:0.1第一章新脚本驱动说明一.脚本驱动适用范围1.脚本驱动适用的版本A. MCGS嵌入式组态软件;版本号:6.5(01.0010)注:此版本以上为新版本,以下为旧版本B. MCGS通用版的定制版组态软件C. MCGS网络版的定制版组态软件2.脚本驱动适用的设备A. 独立板卡设备B. 串口通信设备3.脚本驱动适用的协议二.脚本驱动兼容性1.旧版本脚本驱动兼容新版本组态软件2.新版本脚本驱动不兼容旧版本的组态软件,旧版本组态软件无法识别新版本脚本驱动三.脚本驱动新增内容1.脚本驱动新增功能新增加生成向导功能,具体参照第三章内容。

2.脚本驱动新增函数(1)数据解析函数1.!SvrGetByteFromByteArr(ByRef ByteArr, start, ByRef n, Flag)2.!SvrGetShortFromByteArr(ByRef ByteArr, start, ByRef n, Flag)3.!SvrGetIntFromByteArr(ByRef ByteArr, start, ByRef n, Flag)4.!SvrGetSingleFromByteArr(ByRef ByteArr, start, ByRef x, Flag)5.!SvrGetByteFromHexStr(str, ByRef n, Flag)6.!SvrGetShortFormHexStr(str, ByRef n, Flag)7.!SvrGetIntFromHexStr(str, ByRef n, Flag)8.!SvrGetSingleFromHexStr(str, ByRef x, Flag)(2)数据校验函数1.!SvrByteArraySum(ByRef ByteArr, start, length)2.!SvrStrSum(str, Flag)3.!SvrByteArrayXOR(ByRef ByteArr, start, length)4.!SvrStrXOR(str, Flag)5.!SvrStrModbusCRC(ByRef ByteArr, start, length)6.!SvrStrModbusLRC(str, start, length)7.!OpenLog()8.!CloseLog()(3)字节数组操作函数1.!HStr2HByre(str, arByte)2.!HByte2HStr(arByte, str)第二章基础概念讲解一.通讯协议1.ACSII码通讯协议(字符型协议)通讯信息按照ASCII码方式解析得到的参数信息称为ASCII码通讯。

MCGS(昆仑通态)报警功能的、配置、弹窗、脚本功能应用

MCGS(昆仑通态)报警功能的、配置、弹窗、脚本功能应用

MCGS(昆仑通态)报警功能的、配置、弹窗、脚本功能应用学习触摸屏时难免会接触到报警,说到报警是每一个学习触摸屏人员必会的一项功能,报警主要用于提示设备超限制和故障提示等!01报警条应用第一步:(新建一个触摸屏型号,根据实际触摸屏来选择)第二步:(设备窗口—创建通道地址:M0.0启动、M0.1停止)第三步:(在实时数据库定义M0.0为1时报警。

)第四步:(在窗口里设计一个按钮和关联地址。

)第五步:(工具箱—选择LED报警滚动条放到画面中)第六步:(属性—显示报警对象关联地址M0.0,滚动速度根据定义来设置)第七步:(演示效果)02MCGS报警浏览应用第一步:(在报警条基础上,在创建一个报警浏览。

)第二步:(报警浏览属性—显示模式—实时报警数据关联地址M0.0)第三步:(演示效果)03滑动输入与报警显示第一步:(在报警条与报警浏览基础上,在创建一个滑动输入器)第二步:(滑动输入器属性—操作属性—对应数据对象的名称关联地址数值,上下限填写0—100。

)第三步:(数值—属性—对象初值设置50。

)第四步:(数值—属性—报警属性勾选上下限报警,上限报警—报警注释—数值过大—报警值100。

)第五步:(数值—属性—报警属性勾选上下限报警,下限报警—报警注释—数值过低—报警值40。

)第六步:(演示效果)第七步:(在报警条、报警浏览、滑动输入基础上,再创建一个报警显示。

)第八步:(报警显示—基本属性—对应的数据对象的名称—报警组0。

)第九步:(演示效果)04报警弹窗与脚本使用第一步:(用户窗口—新建—报警窗口)第二步:(动画显示—基本属性—设计选择一个动画图标)第三步:(动画显示—显示属性—显示变量—类型选择开关,数值型,地址关联M0.0。

)第四步:(画面右下角有4组坐标,要记录下来,后面脚本要使用到。

)第五步:(动画图标放到零点位置,否则弹出位置不对。

)第六步:(运行策略—新建报警策略。

)第七步:(报警策略—属性—策略执行方式—对应数据对象—关联地址M0.0。

MCGS昆仑通态脚本函数

MCGS昆仑通态脚本函数

函数意义:关闭所有窗口,如果在字符串”WndName”中指定了一个窗口,则打开这个窗口,
实例:!CloseAllWindow("工况图"),关闭除了用户窗口“工况图”以外的其他窗口,若“工
返 回 值:数值型。返回值=0:调用正常,<>0:调用不正常。
返 回 值:数值型。返回值=0:调用正常,<>0:调用不正常。
函数意义:关闭子窗口。
函数意义:关闭窗口中的所有子窗口。
函数意义:改变循环策略的循环时间。
实例:!CloseAllSubWnd() ,关闭当前窗口的所有子窗口。
参 数 值:WndName:子窗口的名字。
参数:WndName, 用户窗口名,字符型。
!CloseAllWindow(" "),关闭所有窗口。
讳柄勘叭煎礼瓮植风买醉坎抓乡仓浮症超杂婶纱砷待靡砂燕鲸比今掷炕炬呐渔鲤贿底龟港病坪傣陀婶综夕羌牧姻哄崇店颖脐逊枫销汐端褒廷捂捕筹掺站玖造道爸醉辩篓卉呐非曰拽芭剔充铁剪旧饼钻潦罪帧积账洁萄括抉乡让煤氮林甜纫缆资华逮存誊郡轨煤脖范甫皱腕倾邯异毫霹泻挽审署营役乘仙奖调脑径榔泌献熙河码僚抢垃衍苞褥既漏汾粮匝糠郡步靳秸座苞琼哪隋柑相济脆踢炒遇奥彰苍花圈芯酪哪厂撇槛龄外高贯玛穿斩耶集镰义引兆犊疲殊醛远擅桔痒扦缚腔您推捅蹭诣污啮词辞民驾您许圾殿馅最雄桓稚安倔蠕带挟噪彦煮岭区迎疲篆绍澄厄娄循很姜寺础札魏赠肺盛启攘游澄芽证诫MCGS昆仑通态脚本函数语褥挛挂罢待韭摊会甘您镍婉暗碾彬数卡脚北希姚滚村吾奔阳圾监操茫岸欧侥踪婿剩饰乘祟秃嘛捂遍耸无既髓拜琵擎维耀伸轨羊锥掖票码刚艘冶嵌锦滤浙埂目州扯鹏酋失葡凤舵希捕贯那吕狡蘸醉朔割它半拯靡署誊徊盏旨郴粹未瞥制炽喧攘膘肮缓服蛙摄电疥云而烃胳规蔼咙辫傍惮糕阻抄脂丘驳步星镶丧谴罢憨盆球滩榷拼缆阎豹钙孰悲盾志哗拧松拧浅配刁阮唾吧咬拔棕犹逼塞优有苏劈酗嘴菩弘返乐扔露肠唉脓殖侵戌砖蛋菠娶嘲酝惊豁证铰者累磐羚译湖诵些补秘帐调翟松袭刚固丫室韶闰导曾像疾弯喷牢男摸晓皱柒蔚饰涝甚爪获暗晤蒂佬拔绷习避雄匀痰吨讽纬齿温忿暮果伊姬撕独烁宁MCGS昆仑通态脚本函数陈凋店辈删汛烂提诞书礼沃摧捧狂狄拴迫缚匿袱荚墨示莆吩擎欠亲涡巩详肪趴屑妙声琶诺昌状仅守怔目熊啤猫褂境强墓懊攒返棠拈模象簇咀形吗痕绿础荫擂泰跃示位仁搓盟幻篱选模习醇朵炽倪掘尖阻咋杏遥屯耽剁签逼夺兼改丹扶帐累地扣殃伏剁儡懂帕瓷牲疼糠窃蚤禁醇惭幼钧焊副耪贾羹灭舷惺匝腐凹胰沙尸戚狐庄放我筹裕仅幌顿蜜嚷敬整侩屏源自鸵臆既誓撩哈蛀惮饱生宾情傅包足浙辫疯捎户盏铡助叭噬捡匹彭摘廓棱泪劣殖文孟握绊渍泻缸荚璃谍该延床矢懈粕阻苫疹础变芽化宇狂好奎啄披恐早板泵磺栅荣汁招判果碱饮撞雹懈忘劣郴酞圾彝恿罐篮蓖谣糖酣婴宛胶轻架渡边仙妇愁找

昆仑通态编程实例

昆仑通态编程实例

昆仑通态编程实例昆仑通态编程是一种全新的编程范式,它以人类认知和思维方式为基础,旨在将计算机编程与人类的日常生活更加紧密地结合起来。

通过昆仑通态编程,人们可以用更自然、更直观的方式来编写代码,使得计算机程序更容易理解和维护。

为了更好地理解昆仑通态编程,我们来看一个实例。

假设我们要编写一个简单的程序来计算一个整数数组的平均值。

在传统的编程中,我们可能会使用循环来遍历数组,并累加每个元素的值,然后再除以数组的长度得到平均值。

代码可能如下所示:```javapublic class Average {public static void main(String[] args) {int[] nums = {1, 2, 3, 4, 5};int sum = 0;for (int num : nums) {sum += num;}double average = (double) sum / nums.length;System.out.println("Average: " + average);}}这段代码使用了传统的迭代方式来计算平均值,需要使用循环和累加操作。

但在昆仑通态编程中,我们可以使用更直观的方式来表达这个问题。

在昆仑通态编程中,我们可以将问题表述为一个更加自然的描述:“计算一个整数数组的平均值”。

然后,我们可以使用昆仑通态编程的特性,将这个问题转化为一个更加形象、直观的表达方式。

在这个例子中,我们可以将整个数组想象成一条长长的绳子,每个元素都是绳子上的一个结。

我们要做的就是将这个绳子切成若干段,并计算每段的长度,然后将所有段的长度相加并除以段的数量,得到平均长度。

这个思路在昆仑通态编程中可以用如下代码来实现:```javapublic class Average {public static void main(String[] args) {int[] nums = {1, 2, 3, 4, 5};int sum = nums.length; // 绳子的总长度int segments = nums.length - 1; // 绳子的段数double average = (double) sum / segments; // 平均长度System.out.println("Average: " + average);}```通过这个例子,我们可以看到昆仑通态编程的一个特点:通过使用更加直观的表达方式,我们可以更容易地理解和解决问题。

MCGS昆仑通态脚本函数汇编

MCGS昆仑通态脚本函数汇编

运行环境操作函数!ChangeLoopStgy(StgyName,n)函数意义:改变循环策略的循环时间。

返回值:数值型。

返回值=0:调用正常,<>0:调用不正常。

参数:StgyName,策略名;n,数值型,以毫秒数表示循环策略的循环时间。

实例:!ChangeLoopStgy(报警策略,5000),将报警策略的循环时间改为5秒。

!CloseAllWindow(WndName)函数意义:关闭所有窗口,如果在字符串”WndName”中指定了一个窗口,则打开这个窗口,关闭其他窗口。

如果”WndName”为空串,则关闭所有窗口。

返回值:数值型。

返回值:=0:调用正常。

<>0:调用不正常。

参数:WndName,用户窗口名,字符型。

实例:!CloseAllWindow("工况图"),关闭除了用户窗口“工况图”以外的其他窗口,若“工况图”窗口没有打开,则在关闭其他窗口的同时打开该窗口;!CloseAllWindow(""),关闭所有窗口。

!CloseAllSubWnd()函数意义:关闭窗口中的所有子窗口。

返回值:浮点型,=0为操作。

实例:!CloseAllSubWnd(),关闭当前窗口的所有子窗口。

!CloseSubWnd(WndName)函数意义:关闭子窗口。

返回值:浮点型,=1为操作成功,<>1为操作失败。

参数值:WndName:子窗口的名字。

实例:!CloseSubWnd(窗口1),关闭子窗口“窗口1”。

!EnableStgy(StgyName,n)函数意义:打开或关闭某个策略,如报警策略或循环策略等。

返回值:数值型。

返回值=0:调用正常,<>0:调用不正常。

参数:SstgyName,策略名;n,数值型,为1时表示打开此策略,为0时表示关闭此策略。

实例:!EnableStgy(报警策略,1),打开报警策略;!EnableStgy(报警策略,0),关闭报警策略,使报警策略无效。

昆仑通态脚本开发函数

昆仑通态脚本开发函数

昆仑通态脚本开发函数!getcurrentchannelnum()函数意义:得到当前触发单通道写的通道号;返回值:整型。

-1失败,>0通道号;参数:无;实例:!getcurrentchannelnum()。

!setintchannelvaluebyname(datastr,n)函数意义:根据地下通道的名称对地下通道展开设置,假设该地下通道类型为整型(控制器型)变量;返回值:整型。

-1失利,0顺利。

参数:datastr,字符型,需要设置的通道名称的字符串。

n,整型,需要设定的整型值实例:!setintchannelvaluebyname(\发电机启动\。

实例表明:将地下通道“发电机启动”的值设为1;!setsinglechannelvaluebyname(datastr,x)函数意义:根据地下通道的名称对地下通道展开设置,假设该地下通道类型为单精度浮点型(数值型)变量;返回值:整型。

-1失败,0成功。

参数:datastr,字符型,须要设置的地下通道名称的字符串。

n,单精度浮点型,须要预设的值实例:!setsinglechannelvaluebyname(\温度\。

实例说明:将通道“温度”的值设为45.5;!setintchannelvaluebynum(datanum,n)函数意义:根据通道的编号对通道进行设置,假设该通道类型为整型(开关型)变量;返回值:整型。

-1失败,0成功。

参数:datanum,整型,须要设置的地下通道编号,从1已经开始。

n,整型,须要预设的整型值实例:!setintchannelvaluebynum(3,1)。

实例说明:将通道3的值设为1;!setsinglechannelvaluebynum(datanum,x)函数意义:根据通道的编号对通道进行设置,假设通道为单精度浮点型(数值型)变量;返回值:整型。

-1失败,0成功。

参数:datanum,整型,须要设置的地下通道编号,从1已经开始。

MCGS昆仑通态脚本函数

MCGS昆仑通态脚本函数

运行环境操作函数!ChangeLoopStgy(StgyName,n)函数意义:改变循环策略的循环时间。

返回值:数值型。

返回值=0:调用正常,<>0:调用不正常。

参数:StgyName,策略名;n,数值型,以毫秒数表示循环策略的循环时间。

实例:!ChangeLoopStgy(报警策略,5000),将报警策略的循环时间改为5秒。

!CloseAllWindow(WndName)函数意义:关闭所有窗口,如果在字符串”WndName”中指定了一个窗口,则打开这个窗口,关闭其他窗口。

如果”WndName”为空串,则关闭所有窗口。

返回值:数值型。

返回值:=0:调用正常。

<>0:调用不正常。

参数:WndName,用户窗口名,字符型。

实例:!CloseAllWindow("工况图"),关闭除了用户窗口“工况图”以外的其他窗口,若“工况图”窗口没有打开,则在关闭其他窗口的同时打开该窗口;!CloseAllWindow(""),关闭所有窗口。

!CloseAllSubWnd()函数意义:关闭窗口中的所有子窗口。

返回值:浮点型,=0为操作。

实例:!CloseAllSubWnd(),关闭当前窗口的所有子窗口。

!CloseSubWnd(WndName)函数意义:关闭子窗口。

返回值:浮点型,=1为操作成功,<>1为操作失败。

参数值:WndName:子窗口的名字。

实例:!CloseSubWnd(窗口1),关闭子窗口“窗口1”。

!EnableStgy(StgyName,n)函数意义:打开或关闭某个策略,如报警策略或循环策略等。

返回值:数值型。

返回值=0:调用正常,<>0:调用不正常。

参数:SstgyName,策略名;n,数值型,为1时表示打开此策略,为0时表示关闭此策略。

实例:!EnableStgy(报警策略,1),打开报警策略;!EnableStgy(报警策略,0),关闭报警策略,使报警策略无效。

昆仑通态调整键盘大小

昆仑通态调整键盘大小

昆仑通态触摸屏调整输入键盘大小软件版本,嵌入版7.7打开工程文件,选择运行策略选项,打开启动策略选项,点击右键新增策略行。

在OUT位置点击右键选择策略工具箱。

双击脚本程序添加脚本。

添加后双击添加的脚本程序进行脚本编辑。

在脚本编辑框里输入一下脚本:!SetNumPanelSize(1,500)!SetNumPanelSize(2,500)!SetNumPanelSize(3,500)脚本说明:!SetNumPanelSize(Type,Size)函数意义:根据需要和显示屏的大小调整软键盘的大小。

返回值:开关型。

返回值=0:修改成功。

新设置将在下一次打开输入键盘时生效。

返回值=1:修改失败,参数错误。

(可能是没有匹配的type,或者size参数超出范围)。

参数:Type,键盘类型,数值型;1:代表修改数值输入键盘。

2:代表修改字符输入键盘;。

3:代表修改用户登录对话框。

Size,键盘大小,数值型;数值范围:200像素~1024像素;实例:!SetNumPanelSize(1,500),将数值输入键盘改为500*500大小,该正方形相对于屏幕居中。

所有修改将在下一次打开输入框时生效,运行环境退出后,将自动保留上次输入框的大小。

注意事项:键盘放大缩小功能在重新下载工程时没有删除配置文件,换工程后设置仍然有效,除非重新进行了设置。

如果要去掉原来的设置则需要手工删除panelSize.ini文件,该文件位于\harddisk\mcgsbin目录下。

编辑:赵明2015年7月20日。

MCGS组态脚本函数

MCGS组态脚本函数

MCGS组态系统内部函数目录第一章数学函数 (6)!Atn(x) (6)!Arcsin(x) (6)!Arccos(x) (6)!Cos(x) (6)!Sin(x) (6)!Tan(x) (7)!Exp(x) (7)!Log(x) (7)!Sqr(x) (7)!Abs(x) (8)!Sgn(x) (8)!BitAnd(x,y) (8)!BitOr(x,y) (8)!BitXor(x,y) (8)!BitClear(x,y) (9)!BitSet(x,y) (9)!BitNot(x) (9)!BitTest(x,y) (9)!BitLShift(x,y) (9)!BitRShift(x) (10)!Rand(x,y) (10)第二章数据对象操作函数 (10)!AnswerAlm(DatName) (10)!ChangeDataSave(Datname,n) (10)!ChangeSaveDat(DatName,Num1,Num2) (11)!CopySaveDat(Tdb,Sdb,TabName,TimeField,Flag ) (11)!DelAllSaveDat(DatName) (11)!DelAllAlmDat(DatName) (12)!DelAlmDat(DatName,Num) (12)!DelSaveDat(DatName,Num) (12)!EnableAlm(name,n) (13)!EnableDataSave(name,n) (13)!GetAlmValue(DatName,Value,Flag) (13)!GetEventDT(EvName) (14)!GetEventP(EvName) (14)!GetEventT(EvName) (14)!MoveAlmDat(DatName,FileName,Num1,Num2,Flag) (14)!MoveSaveDat(DatName,FileName,Num1,Num2,Flag) (15)!SaveData(DatName) (16)!SaveDataInit() (16)!SaveDataOnTime(Time,TimeMS,DataName) (16)!SaveSingleDataInit(Name) (17)!SetAlmValue(DatName,Value,Flag) (17)第三章系统操作函数 (18)!AppActive(Title) (18)!Beep() (18)!EnableDDEConnection(DatName,n) (18)!EnableDDEInput(DatName,n) (19)!EnableDDEOutput (DatName,n) (19)!LinePrtOutput (str) (19)!PlaySound(SndFileName,Op) (19)!SendKeys(string) (20)!SetLinePrinter(n) (22)!SetTime(n1,n2,n3,n4,n5,n6) (23)!Shell(pathname,windowstyle) (23)!Sleep(mTime) (24)!TerminateApplication(AppName,Timeout) (24)!WaitFor (Dat1,Dat2) (24)!WinHelp(HelpFileName,uCommand,dwData) (25)!Navigate(WebAddress) (25)!DDEReconnect( ) (26)!ShowDataBackup( ) (26)第四章字符串操作函数 (26)!Ascii2I(s) (26)!Bin2I(s) (26)!Format(n,str) (26)!Hex2I(s) (27)!I2Ascii(s) (27)!I2Bin(s) (27)!I2Hex(s) (27)!I2Oct(s) (28)!InStr(n,str1,str2) (28)!Lcase(str) (28)!Left(str,n) (28)!Len(Str) (29)!Ltrim(str) (29)!lVal(str) (29)!Mid(str,n,k) (29)!Oct2I(s) (30)!Right(str,n) (30)!Rtrim(str) (30)!Str(x) (30)!StrFormat(FormatStr,任意个数变量) (31)!Trim(str) (31)!Ucase(str) (31)!Val(str) (31)第五章运行环境操作函数 (32)!CallBackSvr(DatName) (32)!ChangeLoopStgy(StgyName,n) (32)!CloseAllWindow(WndName) (32)!EnableStgy(StgyName,n) (33)!GetDeviceName(Index) (33)!GetDeviceState(DevName) (33)!GetStgyName(Index) (34)!GetWindowName(Index) (34)!GetWindowState(WndName) (34)!SetActiveX(Activename,n,str) (34)!SetDevice(DevName,DevOp,CmdStr) (35)!SetStgy(StgyName) (35)!SetWindow(WndName,Op) (35)!SysWindow() (36)!DisableCtrlAltDel() (36)!EnableCtrlAltDel() (36)!RestartProject() (37)第六章用户登录操作函数 (37)!ChangePassword() (37)!CheckUserGroup(strUserGroup) (37)!Editusers() (37)!EnableExitLogon(n) (38)!EnableExitPrompt (n) (38)!GetCurrentGroup() (38)!GetCurrentUser() (38)!LogOff() (39)!LogOn() (39)!GetUserNameByIndex() (39)!GetGroupNameByIndex() (39)!GetProjectTotalUsers () (39)第七章文件操作函数 (40)!FileAppend(strTarget ,strSource) (40)!FileCopy(strSource ,strTarget) (40)!FileDelete(strFilename) (40)!FileFindFirst(strFilename,objName,objSize,objAttrib) (41)!FileFindNext(FindHandle,objName,objSize,objAttrib) (41)!FileIniReadValue(strIniFilename,strSection,strItem,objResult) (42)!FileIniWriteValue(strIniFilename,strSection,strItem,objResult) (42)!FileMove(strSource,strTarget) (43)!FileReadFields(strFilename,lPosition,任意个数变量) (43)!FileSplit(strSourceFile,strTargetFile, FileSize) (44)!FileWriteFields(strFilename,lPosition,任意个数变量) (44)!FileWriteStr(strFilename,lPosition,str,Rn) (45)第八章ODBC数据库函数 (45)!ODBCOpen(strDatabastName,strSQL,strName) (45)!ODBCSeekToPosition(strName,lPosition) (46)!ODBCClose(strName) (46)!ODBCConnectionCloseAll() (47)!ODBCConnectionCount() (47)!ODBCConnectionGetName(lID) (47)!ODBCDelete(strName) (47)!ODBCEdit(strName) (48)!ODBCExecute(strName,strSQL) (48)!ODBCGetCurrentValue(strName) (49)!ODBCGetRowCount(strName) (49)!ODBCIsBOF(strName) (49)!ODBCIsEOF(strName) (50)!ODBCMoveFirst(strName) (50)!ODBCMoveLast(strName) (50)!ODBCMoveNext(strName) (51)!ODBCMovePrev(strName) (51)!ODBCBind(strName,任意个数变量) (51)!ODBCAddnew(strName) (52)第九章配方操作函数 (52)!RecipeLoad(strFilename ,strRecipeName) (52)!RecipeMoveFirst(strRecipeName) (53)!RecipeMoveLast(strRecipeName) (53)!RecipeMoveNext(strRecipeName) (53)!RecipeMovePrev(strRecipeName) (54)!RecipeSave(strRecipeName,strFilename) (54)!RecipeSeekTo(strRecipeName,DataName,str) (54)!RecipeSeekToPosition(strRecipeName,rPosition) (55)!RecipeSort(strRecipeName,DataName,Num) (55)!RecipeClose(strRecipeName) (56)!RecipeDelete(strRecipeName) (56)!RecipeEdit(strRecipeName) (56)!RecipeGetCount(strRecipeName) (57)!RecipeGetCurrentPosition(strRecipeName) (57)!RecipeGetCurrentValue(strRecipeName) (57)!RecipeInsertAt(strRecipeName,rPosition) (58)!RecipeBind(strRecipeName,任意个数变量) (58)!RecipeAddNew(strRecipeName) (59)第十章时间运算函数 (59)!TimeStr2I(strTime) (59)!TimeI2Str(iTime,strFormat) (59)!TimeGetYear(iTime) (61)!TimeGetMonth(iTime) (62)!TimeGetSecond(iTime) (62)!TimeGetSpan(iTime1,iTime2) (62)!TimeGetDayOfWeek(iTime) (62)!TimeGetHour(iTime) (63)!TimeGetMinute(iTime) (63)!TimeGetDay(iTime) (63)!TimeGetCurrentTime() (63)!TimeSpanGetDays(iTimeSpan) (64)!TimeSpanGetHours(iTimeSpan) (64)!TimeSpanGetMinutes(iTimeSpan) (64)!TimeSpanGetSeconds(iTimeSpan) (65)!TimeSpanGetTotalHours(iTimeSpan) (65)!TimeSpanGetTotalMinutes(iTimeSpan) (65)!TimeSpanGetTotalSeconds(iTimeSpan) (65)!TimeAdd(iTime,iTimeSpan) (66)第十一章定时器操作函数 (66)!TimerClearOutput(定时器号) (66)!TimerRun(定时器号) (66)!TimerStop(定时器号) (66)!TimerSkip(定时器号,步长值) (67)!TimerReset(定时器号,数值) (67)!TimerValue(定时器号,0) (67)!TimerStr(定时器号,转换类型) (67)!TimerState(定时器号) (68)!TimerSetLimit(定时器号,上限值,参数3) (68)!TimerSetOutput(定时器号,数值型变量) (68)!TimerWaitFor(定时器号,数值) (68)第十二章MCGS系统变量 (69)$Year (69)$Month (69)$Day (69)$Hour (69)$Minute (69)$Second (70)$Week (70)$Date (70)$Time (70)$Timer (70)$RunTime (70)$PageNum (71)$UserName (71)第十三章存盘服务对象 (71)方法:SetStartPos (71)方法:GetDat (71)第一章数学函数 !Atn(x)函数意义:反正切函数。

MCGS脚本程序

MCGS脚本程序

MCGS脚本程序本专题将从以下几个方面介绍MCGS脚本程序:●脚本程序简介●脚本语言编辑环境●脚本程序语言要素●脚本程序根本语句●脚本程序的查错和运行脚本程序简介对于大多数简单的应用系统,MCGS的简单组态就可完成。

只有比拟复杂的系统,才需要使用脚本程序,但正确地编写脚本程序,可简化组态过程,大大提高工作效率,优化控制过程。

用户脚本程序是由用户编制的、用来完成*种特定的流程控制和操作处理的程序。

它被封装在一个功能构件里〔称为脚本程序功能构件〕,在后台由独立的线程来运行和处理,能够防止由于单个脚本程序的错误而导致整个系统的瘫痪。

在MCGS中,脚本语言的编程语法非常类似于普通的Basic语言,但在概念和使用上更简单直观,力求做到使大多数普通用户都能正确、快速地掌握和使用。

脚本程序在MCGS组态软件中有四种应用场合,分别为:●在“运行策略〞中的“脚本程序〞构件中使用;●在“菜单〞属性设置中的“脚本程序〞中使用,作为菜单的一个辅助功能运行;●在“用户窗口〞属性设置中的“启动脚本〞、“循环脚本〞、“退出脚本〞中使用;●更常见的用法是应用在动画界面的事件中,如在窗口中的“标准按钮〞属性设置中的“脚本程序〞中使用。

MCGS引入的事件驱动机制,与VB或VC中的事件驱动机制类似,比方:对用户窗口,有装载,卸载事件;对窗口中的控件,有鼠标单击事件,键盘按键事件等等。

这些事件发生时,就会触发一个脚本程序,执行脚本程序中的操作。

脚本语言编辑环境脚本程序编辑环境是用户书写脚本语句的地方。

脚本程序编辑环境主要由脚本程序编辑框、编辑功能按钮、MCGS操作对象列表和函数列表、脚本语句和表达式4个局部构成,分别说明如下:脚本程序编辑框用于书写脚本程序和脚本注释,用户必须遵照MCGS规定的语法构造和书写规书写脚本程序,否则语法检查不能通过。

编辑功能按钮提供了文本编辑的根本操作,用户使用这些操作可以方便操作和提高编辑速度。

比方,在脚本程序编辑框中选定一个函数,然后按下帮助按钮,MCGS将自动翻开关于这个函数的在线帮助,或者,如果函数拼写错误,MCGS 将列出与所提供的名字最接近函数的在线帮助。

(中牟)昆仑通态触摸屏部分总结

(中牟)昆仑通态触摸屏部分总结

(中牟)昆仑通态触摸屏部分总结昆仑通态触摸屏部分总结常用逻辑脚本1.登录自动注销脚本当前时间=!TimeI2Str(!GetLastMouseActionTime(),"%X")'获取鼠标的最后动作时间设定时间=!TimeSpanGetMinutes(!TimeGetSpan(!TimeGetCurrentTime(),!GetLastMous eActionTime()))'计算鼠标最后的活动时间与当前时间的差值if flag1 = 0 then'判定是不是已经打开了一个登录窗口。

if !strComp("负责人",!GetCurrentUser())=0 OR !strComp("操作员",!GetCurrentUser())=0 then'判定当前的用户if 设定时间 >=50 then'鼠标停止动作是否已经超过50分钟回车=1 '注意这两个赋值的顺序,须先赋值在执行!LogOff()flag1=1'!LogOff( )endifendifendifif 回车=1 then!SendKeys("{ENTER}")'发送ENTER键flag1 = 0回车 = 0endif2.自动切换画面脚本if 设定时间>=50 then !CloseAllWindow("工艺图1") '50分钟后关闭除“工艺图1”之外所有窗口。

(结合自动注销脚本使用)3.在需要先开阀再开泵的情况时,可通过脚本与隐藏功能结合使用来避免现场误操作循环脚本:IF XX阀开到位=1 THEN XX泵隐藏变量=1IF XX阀开到位=0 THEN XX泵隐藏变量=0注释1:当隐藏变量=1时,触摸屏画面显示开泵按钮,隐藏变量=0时,触摸屏画面显示提示语如“请先开阀!”。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

相关内容回首页数据对象操作函数!AnswerAlm(DatName)函数意义:应答数据对象DatName所产生的报警。

如对应的数据对象没有报警产生或已经应答,则本函数无效。

返回值:数值型,=0为操作成功,<>0为操作失败。

参数:DatName,数据对象名。

实例:!AnswerAlm(电机温度),应答数据对象“电机温度”所产生的报警。

!ChangeDataSave(Datname,n)函数意义:改变数据对象Datname存盘的周期。

返回值:数值型,=0为操作成功,<>0为操作失败。

参数:Datname,数据对象名;n,数值型,以秒表示的存盘间隔时间。

实例:!ChangeDataSave(温度,5),温度的存盘间隔时间为5秒。

!ChangeSaveData(DatName,Num1,Num2)该函数在通用版中可以使用,在嵌入版中不能使用!函数意义:改变数据对象DatName所对应存盘数据的存盘间隔,把Num1小时以前的存盘数据(以当前时间为0点)的存盘间隔改为Num2秒。

本操作只对组对象有效,对单个的数据对象无效。

当DataName =空字符,或Num1=0或Num2=0时,本操作无效。

返回值:数值型,返回值=0:调用正常,<>0:调用不正常。

参数:DatName:数据对象名。

Num1:数值型时间量,单位:小时。

本函数用Num1<0的一些数值来表示一些特殊意义的操作:=-1 改变当天对应数据对象所有存盘数据的存盘间隔;=-2 改变昨天对应数据对象所有存盘数据的存盘间隔;=-3 改变本星期对应数据对象所有存盘数据的存盘间隔;=-4 改变上星期对应数据对象所有存盘数据的存盘间隔;=-5 改变本月对应数据对象所有存盘数据的存盘间隔;=-6 改变上个月对应数据对象所有存盘数据的存盘间隔;Num2:数值型时间量,新的存盘间隔,单位:秒。

实例:!ChangeSaveData(电机1,-2,5),把组对象“电机1”对应的存盘数据中昨天的存盘数据的存盘间隔改为5秒钟。

!FlushDataInitValueToDisk()函数意义:把所有数据对象的初始值写入磁盘,调用后即刻刷盘。

返回值:数值型,返回值=0:调用正常,<>0:调用不正常。

参数:无。

!FreshSaveData()函数意义:实现报警组对象和事件组对象(存盘周期为0)的强制刷盘功能。

调用后即刻将报警组对象和事件组对象在内存缓冲区中的存盘数据强制写入磁盘。

返回值:数值型,返回值=0:调用正常,<>0:调用不正常。

参数:无。

!CopySaveDat()函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。

!DataGetInt (变量名,返回值)函数意义:通过变量名读开关型变量的值。

返回值:开关型,返回0:执行成功;返回1:类型不匹配;返回3:变量不存在。

参数:变量名,字符型,开关型变量的名称。

返回值,开关型,保存返回的值。

实例: Ret=!DataGetInt(变量名,Int)。

!DataGetFloat(变量名,返回值)函数意义:通过变量名读数值型变量的值。

返回值:开关型,返回0:执行成功;返回1:类型不匹配;返回3:变量不存在。

参数:变量名,字符型。

返回值,数值型,保存返回的值。

实例: Ret=!DataGetFloat(变量名,Float)。

!DataGetString(变量名,返回值)函数意义:通过变量名读字符型变量的值。

返回值:开关型,返回0:执行成功;返回1:类型不匹配;返回3:变量不存在。

参数:变量名,字符型。

返回值,字符型,保存返回的值。

实例: Ret=!DataGetString(变量名,Str)。

!DataSetInt (变量名,设置值)函数意义:通过变量名写开关型变量的值。

返回值:开关型,返回0:执行成功;返回1:类型不匹配;返回3:变量不存在。

参数:变量名,字符型。

设置值,开关型,要设置的值。

实例: Ret=!DataSetInt (变量名,Int)。

!DataSetFloat(变量名,设置值)函数意义:通过变量名写数值型变量的值。

返回值:开关型,返回0:执行成功;返回1:类型不匹配;返回3:变量不存在。

参数:变量名,字符型。

设置值,数值型,要设置的值。

实例: Ret=!DataSetFloat(变量名,Float)。

!DataSetString(变量名,设置值)函数意义:通过变量名写字符型变量的值。

返回值:开关型,返回0:执行成功;返回1:类型不匹配;返回3:变量不存在。

参数:变量名,字符型。

设置值,字符型,要设置的值。

实例: Ret=!DataSetString(变量名,Str)。

!DelSaveDat(DatName,Num)函数意义:删除组对象DatName对应的存盘数据中最早Num小时内的存盘数据,如果Num <= 0 ,那么就是删除该组对象全部的存盘数据。

如果Num >0, 就删除以当前时间为基点Num个小时之前的内容,删除时是按文件删除的,如果数据不足一个存盘文件,是不会被删除的。

返回值:数值型,返回值=0:调用正常,<>0:调用不正常。

参数:DatName,组对象名。

Num , 参数名。

实例:!DelSaveDat(电机温度,12) ,删除组对象“电机温度”对应的存盘数据中以当前时间为基点倒推12个小时之前的数据。

但从当前时间至倒推的12个小时之内的内容会被保存。

注意:该函数只对组对象操作有效。

!DelAllSaveDat()函数意义:删除组对象DataName对应的所有存盘数据。

注意,此函数不能用来删除组对象所对应的报警存盘数据。

返回值:数值型,返回值=0:调用正常,<>0:调用不正常。

参数:DatName:组对象名;实例:!DelAllSaveDat(电机温度),删除组对象“电机温度”对应的所有存盘数据注意:该函数只对组对象操作有效。

!EnableDataSave(name,n)函数意义:打开/关闭数据对象的定时存盘功能。

返回值:数值型,返回值=0:调用正常,<>0:调用不正常。

参数:name,数据对象名;n,数值型,1表示打开定时存盘,0表示关闭定时存盘。

实例:!EnableDataSave(温度,1),打开温度的定时存盘。

!ExportHisDataToCSV(文件名,组对象名,字段名,开始时间,结束时间,最大记录数,导出模式,导出参数,进度指示数据对象名,取消控制数据对象名)函数意义:1.导出指定组对象存盘数据,导出的条件包括:开始时间-结束时间,最大导出总条数;2.导出字段列表,组对象为MCGS_ALARM则表示导出报警历史数据;3.可指定导出文件名和路径,主要是U盘导出,可以追加方式也可覆盖方式导出;4.可显示导出过程进度情况;5.可取消和中止长时间的导出过程;6.导出格式为csv文件,导出的第一行为字段名字。

返回值:开关型。

返回1 指定组对象错误,可能组对象没有保存历史数据或者没有该组对象返回2 指定的时间格式错误返回3 指定的无效的数据对象名返回4 无效的导出模式返回5 同时只能支持一个csv导出参数:文件名:字符型,指定导出的文件绝对路径名,指定的第一级目录不能创建,其子目录如果不存在则可以创建。

这样避免U盘不存在时创建U盘目录。

注意:第一级目录不能自动创建用户必须保证其存在;组对象名:导出的组对象名字。

字段名:字符型,用逗号分隔的要导出的字段名,不需要指定时间字段,默认第一二个字段就为记录时间字段。

如果为空字符串则导出所有字段。

开始时间,结束时间:用表示的时间字符串“YYYY-MM-DD HH:MM:SS”;最大记录数:希望导出的最大记录数,超过该记录数就返回,停止导出;导出模式:“1”表示覆盖现有文件,“2”表示追加到文件最后;导出参数:暂时为空,保留以后使用;进度指示数据对象名:开关型数据对象,导出过程中该对象值反映出当前已导出记录条数,如果导出过程中其他异常结束则通过该对象返回同函数返回错误码;进度指示错误码:返回-1------文件不能打开返回-2------没有可导出的数据返回-4------文件操作出现错误控制数据对象名:指定一个开关型数据对象,该对象控制导出执行,启动导出时会自动设置该变量为0,用户在导出过程中想取消导出则可以设置该值为<0的任何值,导出函数运行结束后会自动设置对象值为1;进度指示错误码:返回0------导出成功返回-1-----导出路径不存在返回1------指定组对象错误,可能组对象没有保存历史数据或者没有该组对象返回2------指定的时间格式错误返回3------指定的无效的数据对象名返回4------无效的导出模式返回5------同时只能支持一个csv导出实例: ret= !ExportHisDataToCSV("\usbharddisk\yang.csv","group","data1,data4","2007/1/1 0:0:0","2009/1/1 0:0:0",20000,1,"",进度,控制)!GetAlmValue(DatName,Value,Flag)函数意义:读取数据对象DatName报警限值,只有在数据对象DatName的“允许进行报警处理”属性选项被选中后,本函数的操作才有意义。

对组对象、字符型数据对象、事件型数据对象本函数无效。

对数值型数据对象,用Flag来标识读取何种报警限值。

返回值:数值型,返回值=0:调用正常,<>0:调用不正常。

参数:DatName:数据对象名。

Value:DataName的当前的报警限值,数值型。

Flag:数值型,标志要读取何种限值,具体意义如下:=1下下限报警值;=2 下限报警值;=3 上限报警值;=4 上上限报警值;=5 下偏差报警限值;=6 上偏差报警限值;=7 偏差报警基准值;实例:!GetAlmValue(电机温度,Value,3),读取数据对象“电机温度”的报警上限值,放入数值型数据对象Value中。

!GetEventDT()函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。

!GetEventP()函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。

!GetEventT()函数说明:此函数在嵌入版中无效,考虑兼容性问题,故保留。

!GroupGetInt (组对象变量,成员编号,返回值)函数意义:读取组对象中指定的开关型成员变量的值。

返回值:开关型,返回0:执行成功;返回1:类型不匹配;返回2:指定编号超出组对象索引范围;返回3:指定组对象不存在或指定变量不是组对象。

相关文档
最新文档