组态王学习过程记录
1、组态王与外部设备连接
工程管理系统---设备—选择合适的方式----双击新建---设备选择---设备命名----选择与设备连接相一致的COM口----
2、新建工程
工程管理器---新建---工程保存地址选择---工程名与工程描述
3、数据变量分两大类:一类是内存,一类是I/O(与外部设备的数据通信).每一类又分成整数、实数、离散(布尔量只有0和1)、字符串(长度128个字符)
4、动画连接
在数据词典定义变量如原料油液位,设置连接外部设备的参数
在开发系统里画面连接好后,双击各个设备进行动画连接。未定义的仪器仪表要在数据词典定义,如阀门。管道动画连接时双击出现窗口后选‘流动’按钮进行设置
5、画面的切换
在开发系统工具板选怎菜单项----双击它---在菜单项空白处单击会出现新建项和新建子项----设好菜单项后点击命领语言----输入程序
If(MenuIndex==0) //// MenuIndex指的是主项0表示第一个主项ShowPicture("监控");/////要显示的画面
If(MenuIndex==1&&ChildMenuIndex==0)////第二个主项里的第一个子项ShowPicture("偶了"); If(MenuIndex==2)
ShowPicture("abc");
If(MenuIndex==3)
ShowPicture("edf");
If(MenuIndex==1&&ChildMenuIndex==1) ////第二个主项里的第二个子项ShowPicture("q");
If(MenuIndex==3&&ChildMenuIndex==0)
ShowPicture("e");
6、报警
工程管理报警组----设置报警组---
-
------数据词典双击要报警的变量如原料油液位----点击报警定义进行
设置
------开发系统新建画面---工具板上选择报警键进行拖拽出现报警表----双击进行命名(名字要在数据词典里定义)列属性选择要现在报警表里的项目----还可以在画面上将原料油液位要报警的数值在画面上显示出来,就是添加文本然后双击和数据词典里的液位进行关联。
------报警画面可以改成弹出式在报警时显示画面,其他时间不显示。而且注意改变一下窗口大小,一面盖住监控画面。-----在数据改变命令语言输入程序,里面的变量域需要从数据词典里选取。
/* 这个符号是将程序屏蔽
If(\\本站点\$新报警) 新报警值为1,但不会自动回0
ShowPicture("报警");
\\本站点\$新报警=0; */ 将新报警从1变成0,以便下次报警弹出对话框
注意: 工程管理器里面有个报警项单击它会将报警数据存到一个记事本里后缀是.al2 数据库配置里选择默认数据源也可以生成格式好看的报警数据,但是在操作时我没有实现可能是机器的问题。
6、实时趋势曲线
工程管理系统新建实时曲线画面-----开发系统工具面板选择实时曲线按键进行拖拽-----双击进行设置
7、历史曲线
要想显示历史数据需要在数据词典里,对要显示的变量进行设置
在工程管理器—系统配置—历史数据记录里根据需要一般还要进行设置。数据保存天数指的是10天后数据消失,存储路径可以自己选。
新建历史曲线画面-----开发系统点击插入控件----双击拖拽出来的历史曲线窗口进行命名histryline----右击窗口点击控件属性对要显示的曲线进行增加
----------在画面里可以设置更新按钮---双击---按住时---输入程序histryline.HTUpdateToCurrentTime();------在同一画面里显示其他曲
线----设置按钮---双击---弹起时---输入程序
histryline.ChangeCurveVarName(2,"\\本站点\成品油液位");///2表示把第二条曲线替换成成品油液位的曲线。////
8、在画面里设置日历
开发系统---插入控件Microsoft Date and Time picker control 6.0-----右击可改变控件属性显示年月日或时分秒。----双击可输入程序----具体可看下载的日历控件说明。
1.保存实时数据的程序:在计算机某个盘里建一个文件夹shishishuju---新建画面—插入报表--设置按钮--双击—弹起时--输入程序
string filename;
filename=InfoAppDir()+"\shishishuju\"+\\本站点\$日期+
StrFromInt(\\本站点\$时,10)+"时"+
StrFromInt(\\本站点\$分, 10)+"分"+
StrFromInt(\\本站点\$秒, 10)+"秒.trl";
ReportSaveAs("实时报表",filename);
注意:(其中的10是实时的关键字。String定义变量,shishishuju是保存数据的文件夹,实时报表数据表的名称。)
2. 查询实时报表程序:
第一步:
新建画面—插入报表(双击命名)---设置下拉式窗口(命名窗口和变量名)--设置刷新按钮---双击—弹起时---输入程序
string file;
file=InfoAppDir()+”shishishuju\*.rtl”; ////(把shishishuju文件夹的所有.rtl文件
付给file)。
listClear(“菜单”); ////(清空菜单,这里的‘菜单’是通过插入控件命令在新建的‘实
时报表查询画面’里设置的‘’的名称)
创建过程:插入控件---窗口控制----下拉式组合框。
ListLoadFileName( “菜单”, file);(把实时数据里面的所有.rtl文件在菜单框里显示)第二步:设置显示按钮---双击—弹起时---输入程序
string name;
name=InfoAppDir()+"shishishuju\"+报表查询量; /////(‘报表查询量’是在下拉式窗口命名的变量名,而且必须在数据词典里新建它。它里面实质存储的就是.rtl 文件。程序的意思:把shishishuju文件夹里的并且是报表查询量付给name.)ReportLoad("显示报表",name); / ////( "显示报表"就是在画面里插入的报表名称。意思:显示name里的内容。)
3.历史报表查询:
第一种:新建画面—设置报表窗口—设置按钮—双击—输入程序ReportSetHistData2(2,2);(‘2,2’是指在报表的第几行第几列显示数据)
确认后保存进入运行系统---时间属性选择开始显示的时间段和间隔时间---变量属性选则要现实的变量
第二种:新建画面—设置报表窗口—设置按钮—双击—输入程序
long StartTime;
StartTime=HTConvertTime(\\本站点\$年,\\本站点\$月,\\本站点\$日,\\本站点\$时,\\本站点\$分,\\本站点\$秒);
StartTime=StartTime-60; (指的是当前一分钟以前的时间,如现在是8:22,则要显示的是8:21——8:22间的数据,所以要显示那段时间的数据就在这里改变60这个数的大小,初步了解的是以秒为单位进行修改。)
ReportSetTime("制定查询显示", StartTime, 2, "a3:a32");("制定查询显
示"是报表窗口的名称,StartTime指的是上一条程序决定的时间,2指的是时间间隔为两秒,"a3:a32"是指将时间在单元格A3到A32内显示。)
ReportSetHistData("制定查询显示", "\\本站点\原料油液位", StartTime, 2, "b3:b32");(要显示的原料油液位)
ReportSetHistData("制定查询显示", "\\本站点\原料油压力", StartTime, 2, "c3:c32");
4.组态王与数据库的连接:
一、组态王信息到access数据库
新建空的ACCESS数据库并命名为db1.Mdb文件—控制面板—管理工具---数据源—单击添加按钮
--------填写数据源名---单击选择将建立的空的db1.Mdb文件数据库与数据源相关联----在工程管理器表格模板里新建一个表格模板
----应用程序命令语言输入程序SQLConnect( DeviceID, "dsn=db1源;uid=;pwd=");/////目的是使组态王与数据库连接,其中DeviceID是在数据词典里新建的内存整形变量,db1源是数据源名称。/////--------开发环境里新建数据库画面---设置按钮取名创建表格---双击按钮----输入程序SQLCreateTable( DeviceID, "Table2", "table1" );////// 其中DeviceID是在数据词典里新建的内存整形变量, Table2是要在db1.mdb里创建的表格名称,table1是新建的表格模板///////
-----在工程管理器记录体新建记录体
这里的字段名称顺序必须与table1新建的表格模板顺序一致。--------在开发环境里新建的数据库画面里设置按钮为插入数据----双击输入程序SQLInsert( DeviceID, "Table2", "bind" );------保存运行,数据插入到数据表里了。
二、access数据库信息到组态王设置
开发系统插入控件KV ADODBGrid Class-----双击窗口命名---右击选择控件属性进行编辑
----开发系统(文件---全部存)----设置全部查询按钮----双击输入程序Ctr.Where=""; Ctr.FetchData(); Ctr.FetchEnd();//////这里的Ctr.是根据操作者命名的控件名称自动生成的,="";表示把全部数据读出来,可以通过改变双引号里面的内容来确定读出那些程序/////------设置条件查询按钮---双击输入程序long a; ////定义变量a=Ctr.QueryDialog();
if(a==1)
{Ctr.FetchData();
Ctr.FetchEnd();}
-----------------------设置保存按钮----双击输入程序Ctr.SaveToCSV("f:\ffgfdgvgn.csv");////// f:\ffgfdgvgn.csv全部需要操作者按格式填写,f:\表示在f盘,ffgfdgvgn文件名,.csv后缀/////////// ------设置打印按钮----双击输入程序Ctr.Print();-------全部保存---运行。
5、用户管理与权限
工程管理器---用户---新建(优先级1---999递增,优先级大的可以操作优先级小的。安全区:只有A的安全区不可以操作B的安全区,AB可以操作A和B.可以新建多个用户)。
--------在开发界面里可以双击按钮及图案来设置他们的权限和安全区,以保证正确的人操作正确的事。-----------在运行画面---单击特殊----登录开(可以实现操作员的登录)----登录关(可以实现操作员的退出)另外也可以在开发系统设置‘登录注销’按钮并输入程序
if(\\本站点\$用户名=="无") LogOn(); else LogOff();
全部保存在运行系统里单击它,进行管理员登录与退出。---在开发系统还可以设置对用户进行操作的按钮设置好后输入程序
EditUsers();同样也可以对他进行权限设置。