组态王使用1组态王重要功能简单使用介绍一、图库1、图形建立动画连接并合成图素的方式创建的图库精灵,在画面中引用后,其属性界面中动画连接属性的变量改变后,可以任意移动它的位置,但不能再调整其大小,否则动画连接属性的变量会变回到原先的变量。为避免误操作,可以把图库精灵转换成普通图素后再定义属性变量。2、一般情况下,含有图库精灵的画面会有许多操作上的限制。如,为了在画图过程中把常用的图块创建为图库精灵,但图块中的图素要求不能包含引用到的图库精灵。所以在画图过程中引用到的图库精灵应首先转化成普通图素。转化成普通图素后,还可以个性化定义动画,而图库精灵定义动画比较死板。二、动画制作1、组态王软件对稍微复杂的动画,如旋转轮、搅拌叶片模拟动作等没有现成的图库引用,都必须自己设计,无论采用图素基本旋转功能还是图素显示与隐藏方式实现视觉上的动画效果,绝大多数情况下都必须使用到内存变量。一般一个动画使用到一个内存变量。当软件点数较少,变量使用较紧张时,就不能为了动画效果而定义大量的内存变量。动画的实现一般要求有重复计数功能的表达式支持,这就要定义专用的内存整型变量(为了使动画更流畅,可以定义内存实型变量,以小于1的阶梯变化),通过命令语言来实现重复计数功能。为了减少变量的使用数,就应对整个组态系统的动画效果进行大的归类,如旋转、移动、闪烁、缩放等,每一类定义一个或多个(尽量少)的内存实型变量。使用方法为:1、在应用程序命令语言中写出变量重复计数的程序,在某一窗口只要引用此变量来实现动画即可;2、在每个需要动画效果的窗口的画面命令语言中写出变量重复计数的程序。方法1优点是每个变量只要书写一次计数程序,缺点是整个监控系统的同类型的动画效果相同,制作也不灵活。方法2的优点是每个窗口中变量计数的变化量可以不一样,这样使得制作动画更方便灵活,每个窗口动画效果可根据需要灵活实现,缺点是同一个变量要多次书写计数程序。另外必须注意的是:如果同时多个窗口都要实现同类型的动画效果,也就是同一个变量在多个窗口使用。则必须在每个画面命令语言中(显示时)使用关闭画面函数来关闭其它相关窗口,目的为:方法1,避免计算机内存工作量大。方法2,避免变量在不同窗口有不同计数变化量时,产生计数冲突,影响动画效果。三、命令语言在监控设计时经常用到的一些命令语言函数。1、命令语言的句法如控件函数、数学函数等,都可通过命令语言编辑器编辑输入。2、条件语句可以嵌套使用。3、HTConverTime(yeat,month,day,hour,minute,second)此函数将指定的时间格式(年,月,日,时,分,秒)转换为以秒为单位的长整型数,转换的时间基准是1969年12月31日24时0分0秒。StrFromTime(SecsSince1_1_70,StringType),此函数将一个时间值(1970年1月1日起,以秒为单位)转换成字符串。例子:显示2005年6月15日第前27天的时间格式。命令语言为:组态王使用2实型变量A=HTConverTime(2005,6,15,0,0,0);实型变量A=实型变量A-27*24*3600;字符型变量A=StrFromTime(实型变量A,1);结果:字符型变量A=2005-5-194、StrMid(Text,StartChar,Chars)此函数从指定的位置开始,从一个文字变量中返回指定个数的字符;StrRight(Text,Chars)此函数返回指定文字变量的最末端(或最右)若干个字符;StrLeft(Text,Chars)此函数返回指定文字变量的开始(或最左的)若干个字符;StrReplace(Text,SearchFor,ReplaceWith,CaseSens,NumToReplace,MatchWholeWords)此函数替换或改变所提供字符串的指定部分。使用此函数能获取字符串变量并替换字符、单词或短语;StrToInt(Text)此函数将一个由数字组成的字符串转换成一个能用作数学计算的整数值。利用以上函数可以把某变量灵活转换成各种形式,如把字符串形式的时间格式转换成其他形式的时间格式(如2005/06/19)。四、通用控件使用监控系统经常使用到的外部控件有:1、复选框控件:在历史曲线查询时使用到。在控件的click()事件中编写变量历史曲线查询语句。可能使用到.Enabled、.Valu、.Caption等属性。2、控件microsoftdateandtimepickercontrol6.0(sp4):简单方便的日期输入控件,主要在需要用到时间参数的历史数据查询时应用。经常用到的属性有.day、.month、.year等。3、控件KVDBGridClass:数据库查询控件。经常使用的属性有.Rows(查询到记录总数)、.Row(记录中指针位置),方法“.Print()”为查询结果打印语句。4、超级文本显示框控件:将扩展名为.rtf或.txt文件调入到超级文本显示框中,使用组态王控件函数LoadText()实现调入。要在写字板中编辑RTF或TXT格式文件。主要在制作帮助说明窗口时用到,如果要更改帮助说明文件的内容时,只要在RTF或TXT格式文件中修改就行。5、报表窗口控件:其操作对象为在变量属性对话框的记录与安全区属性卡片中有记录设定的变量。使用到的控件函数有ReportSetHistData2()(系统会自动弹出报表历史查询对话框)、ReportPrintSetup()(报表打印预览)、ReportPrint2()(打印报表)。五、实时报警提示制作1、实时报警和历史报警控件都占用一个变量点数。2、对于需要报警属性定义的变量,为了在监视系统运行过程中具有实时报警提示功能,可利用系统内部变量($新报警)和实时报警控件相结合设计。①、由于当有报警属性定义的变量产生报警时,$新报警变量会自动附值为1,利用这功能,在事件命令语言窗口中设计程序:条件产生时,打开报警窗口。$新报警变量需要人为用程序复位。组态王使用3②、在报警窗口中引用实时报警控件。实时报警控件的属性配置中的列属的项目可选定事件类型、报警时间、变量描述、报警类型、界限值等,使得报警提示信息简洁、清晰。3、为了与上点配合,对于需要报警属性定义的变量,其变量描述栏中的描述语句应该体现报警时的报警内容,报警文本体现报警原因。对于不要求报警属性定义的变量,不需要在变量描述栏中编辑。六、SQL数据库访问报警事件通过工程浏览器中报警配置属性页中数据库配置功能存储到数据库可以方便准确地查询到历史报警信息,而模拟变量在属性对话框的记录与安全区属性卡片中设定定时记录参数则很方便历史数据的查询。离散变量报警存储一般不采用在属性对话框的记录和安全区属性卡片中设定,这样以报表方式查询模拟变量历史数据时,报表查询对话框中的变量属性一栏中只显示在记录与安全区属性卡片有记录定义的变量。记录报警事件到数据库与查询:1、数据库配置中报警格式配置所选定的项必须在数据库的报警表中有相应的字段与它一一对应,否则组态王不会存储其它所有的报警内容。而报警表可以有字段不包含报警格式配置中所选的项。表中各字段以文本形式储存。2、数据库中报警表的字段名称,大小写要按组态王规定格式设计。报警格式配置所选的项的顺序与报警表相应字段的顺序可以不一致。3、组态王的数据库配置和数据库报警表都设计好后,当软件运行时出现报警,则系统自动把报警内容按设定的格式存入数据库中。注意:数据库配置中数据源设计步骤为:①打开计算机的控制面板中的管理工具文件夹。②双击数据源ODBC,在管理器的用户DSN或系统DSC中点击添加按钮,选择与自己所选的数据库相应的驱动程序。按“完成”按钮。③在出现的对话框中写上自己定义的数据源名称。并选择与组态王通信的数据库,按“确认”钮。④到此,ODBC数据源设计完成,定义的数据源名称会出现在管理器中。4、组态王从数据库中查询历史报警数据,可以通过控件KVDBGridClass,此控件与数据库的通信能比较方便设计。在插入通用控件的对话框中选择KVDBGridClass控件。窗口中放置好控件后,打开控件属性对话框。在数据源对话框中选择第3点中设定好的数据源名称,再依次选好表名、需要在KVDBGridClass中显示的字段、条件查询语句等。还可以在其他属性卡片中设计字体、打印设置、表格格式等。5、上述第4点只是确定组态王与数据库的连接信息。在程序运行中还需要调用控件方法函数来实现数据查询。显示函数:控件名.FetchData();刷新函数:控件名.RefreshData(),每次调用显示函数后应调用结束函数:控件名.FetchEnd()。打印函数为:控件名.Print()。6、KVDBGridClass控件属性语句,如条件属性语句写法为:控件名.where=“***“,其中字符串只加单引号,这与如MicrosoftAccess数据库字符串加单引号或双引号都可以不同。组态王使用4使用SQL访问管理器存储数据:对于温度的历史数据存储,除了在记录与安全区属性卡片中设定数据记录参数,系统自动按设定进行数据存储外,也可以通过运行命令语言即SQL函数来进行数据存储。方法:1、首先在控制面板中建立一个ODBC数据源,组态王是通过ODBC数据源与数据库连接的。2、在SQL访问管理器中建立记录体。目的是通过记录体使数据库表中字段与组态王变量对应起来。所以记录体中字段名称必须与数据库表的字段名称一致,并且记录体中字段顺序也必须与数据库表的字段顺序一致。3、1、2点完成后使用指令SQLConnect(DeviceID,dsn=mine;uid=sa;pwd=)建立和数据库中表格连接,其中DeviceID是用户创建的内存整形变量,用来保存SQLConnec()函数为每个数据库连接分配的一个数值,dsn为ODBC数据源名称,uid为用户名,pwd为密码。每运行一次SQLInsert(DeviceID,TableName,BindList)就在数据库中存储一组新数据,其中TableName为数据库中表名,BindList为记录体名。而SQLDisconnect(DeviceID)指令是执行断开与数据库的连接。SQL函数执行情况如下:系统运行时只要执行一次SQLConnect()后就建立了与数据库的连接,此时DeviceID值不会自动加1,然后定时反复执行SQLInsert()函数,数据就不断地存储到数据库中。如果在SQLDisconnect执行之前,重复执行SQLConnect将会增加DeviceID,DeviceID超过软件规定值后,可能某些查询数据库的指令无法执行,这时只能重新运行系统。执行SQLDisconnect后,SQLInsert()指令就处于无效状态,只有执行SQLDisconnect后第一次执行SQLConnect()指令,DeviceID不会增加。在数据库使用完之后,使用SQLDisconnect函数断开和数据库的连接。4、使用SQLDelete(DeviceID,TableName,WhereExpr)指令对数据库中满足要求的过时记录进行自动删除(比如在系统运行或退出时进行一次删除操作),其中WhereExpr为条件语句,书写格式与SQL语言一致。5、SQL访问管理器中建立表格摸板,通过SQLCreateTable(DeviceID,TableName,TemplateName)指令,可以在数据库中按摸板参数建立新表,其中TableName为新表名称,TemplateName为摸板名称。6、使用SQL访问管理器存储数据,对于简单的历史数据存储、数据库操作操作,一般使用SQL函数SQLCreateTable()、SQLConnect()、SQLInsert()、SQLDisconnect()、SQLDelete()等就可以满足需要。七、历史趋势曲线查询1、历史趋势曲线控件占用一个变量点数。其操作对象为在变量属性对话框的记录与安全区属性卡片中有记录设定的变量。直接引用图库中历史曲线控件,可以省去许多操作的设定与制作。2、在一个历史趋