杰控组态手册25.数据库操作
- 格式:pdf
- 大小:298.35 KB
- 文档页数:13
VxSCADA监控组态软件使用手册浙江中控技术股份有限公司声 明⏹ 严禁转载本手册的部分或全部内容。
⏹ 在不经预告和联系的情况下,本手册的内容有可能发生变更,请谅解。
⏹ 本手册所记载的内容,不排除有误记或遗漏的可能性。
如对本手册内容有疑问,请与我公司联系。
文档标志符定义警告:标示有可能导致人身伤亡或设备损坏的信息。
WARNING : Indicates information that a potentially hazardous situation which, if not avoided, could result in serious injury or death.电击危险:标示有可能产生电击危险的信息。
Risk of electrical shock: Indicates information that Potential shock hazard where HAZARDOUS LIVE voltages greater than 30V RMS, 42.4V peak, or 60V DC may be accessible.防止静电:标示防止静电损坏设备的信息。
ESD HAZARD: Indicates information that Danger of an electro-static discharge to which equipment may be sensitive. Observe precautions for handling electrostatic sensitive devices注意:提醒需要特别注意的信息。
ATTENTION: Identifies information that requires special consideration.提示:标记对用户的建议或提示。
TIP :Identifies advice or hints for the user.目录1 概述 (1)1.1 技术指标 (1)2 监控组态软件的启动方法 (2)3 主界面 (3)3.1 菜单栏/工具栏 (3)4 操作小组组态 (5)4.1 添加操作小组 (5)4.2 一览画面组态 (6)4.3 趋势画面组态 (8)4.4 添加流程图 (10)4.5 添加报表 (13)4.6 调度组态 (15)4.6.1 调度组态主界面 (17)4.6.2 菜单/工具栏命令 (17)4.6.3 组态说明 (17)4.6.4 调度运行 (25)4.7 可报警分区设置 (25)4.8 报警声音设置 (28)4.9 实时报警打印设置 (32)4.10 位号关联流程图配置 (35)4.11 位号关联趋势画面配置 (38)4.12 操作指导配置 (41)4.13 报警订阅 (44)5 域组态 (46)5.1 报警颜色组态 (46)5.2 域变量组态 (49)5.3 监控用户授权 (49)5.4 历史趋势组态 (50)5.4.1 历史趋势组态主界面 (50)5.4.2 菜单功能 (51)5.4.3 组态说明 (51)5.4.4 位号筛选 (56)5.5 自定义报警分组 (57)6 资源文件 (62)7 组态发布 (66)8 其它功能 (67)8.1 组态树节点的复制剪切功能 (67)8.2 组态树节点的删除功能 (68)8.3 显示隐藏工具栏和状态栏 (68)9 资料版本说明 (69)监控组态软件1概述监控组态软件(VFHMICfg.exe)主要提供在组态模式下针对单个操作域中监控正常运行所需的相关内容进行有关组态的功能。
组态软件操作指南概述本章内容KingSCADA软件结构KingSCADA软硬件环境KingSCADA与外部设备KingSCADA软件结构KingSCADA是一种通用的工业监控软件,它融过程控制设计、现场操作以及工厂资源管理于一体,将一个企业内部的各种生产系统和应用以及信息交流汇集在一起,实现最优化管理。
它基于Windows XP/Windows 7/Windows 8/Windows10/Windows Server 2008/Windows Server 2012等操作系统,并支持多语言的操作系统。
用户可以在企业网络的所有层次的各个位置上及时获得系统的实时信息与历史信息。
采用KingSCADA开发工业监控系统,可以极大地增强用户生产控制能力、提高工厂的生产力和效率、提高产品的质量、减少成本及原材料的消耗。
它适用于从单一设备的生产运营管理和故障诊断,到网络结构分布式大型集中监控管理系统的开发。
KingSCADA软件结构由工程设计器、画面编辑器及运行系统三部分构成。
工程设计器:工程设计器是一个应用开发设计工具,用于创建应用、创建监控画面、定义监控的设备、定义相关变量、命令语言以及设定运行系统配置等系统组态工具。
画面编辑器:在画面编辑器中用户可以绘制图形画面、设置动画链接、配置报警窗口、配置趋势曲线窗口等与图形有关的所有操作。
运行系统:工程运行界面,从采集设备中获得通讯数据,并依据画面编辑器的动画设计显示动态画面,实现人与控制设备的交互操作。
KingSCADA软硬件环境1、硬件要求硬件:Intel 酷睿2 双核4线程内存:2G硬盘空间:KingSCADA完全安装占用空间需约350M,建议100GB硬盘。
显示器:VGA、SVGA或支持桌面操作系统的任何图形适配器。
要求最少显示256色,推荐无限色支持鼠标:任何PC兼容鼠标通讯:RS-232CUSB接口:用于插入KingSCADA加密锁(软授权不用)(KingSCADA对于主频有一定要求,对于有较多逻辑脚本系统,建议2.3GHz以上)2、软件要求KingSCADA与外部设备Windows操作系统,支持的操作系统语言版本:中文简体、英文、日文Windows 7专业版和旗舰版Window 8专业版和旗舰版Window 10专业版和旗舰版Windows Server 2012专业版和旗舰版Windows Server 2008专业版和旗舰版Windows Server 2003 专业版和旗舰版Windows Xp sp3Windows Vista专业版和旗舰版注:支持32位和64位,不支持Home版。
杰控组态指导手册前提:计算机已安装杰控组态软件(下面按FameView7.6为例)一、新建工程计算机安装好杰控软件后,桌面上会出现如图杰控快捷方式,双击打开软件出现下图窗口:点击窗口左上角如图按钮出现下图输入项目名称等信息,点击“确定”,新建项目成功。
二、画面组态在如图左侧树结构菜单栏选中“显示画面”,右侧出现“画面管理”,“显示属性”,“画面制作”双击“画面制作”即可进入画面编辑环境在弹出窗口中填写新建第一张画面的基本信息举例:画面名称“PIC1”画面尺寸“600*400”点击确认,进入画面菜单和工具说明请参考附件“08.画面制作”右键画面,选择画面属性,可对画面基本信息进行修改下面即可在画面根据提供的PID图进行所需流程图组态。
三、变量组态返回主界面,选择“设备通讯”,双击右侧“安装驱动”根据具体工程要求选择正确的驱动品牌和通讯方式,点击安装双击“启动驱动”,给需要启动的驱动打勾双击“设备数据表”,根据编程师提供的变量地址表预估和合理分配所需变量类型和数目。
返回主界面,选择“运行数据库”,根据要求在右侧不同的变量类型中建立变量以DI为例,双击“DI-开关只读变量”点击“新建”填写变量详细信息即可四、动画组态双击点开属性窗口这边根据你需要做动画连接,比如可见性选择条件a=b,连接变量,写下常数等于1(也就是在1的状态下可见),详情请参考附件“08.画面制作”五、报警组态,在建点的时候有需要报警的在报警一栏打上勾在扩展应用里选择变量报警,进行归档一个个添加归档进去,完成之后回到画面窗口,新建一个报警画面,拖动报警控件在组件箱变量报表,详情请参考附件“10.变量报警”六、趋势曲线,在组件箱,曲线显示里,实时曲线,拖动到曲线画面中,出现下面对话框点击实时曲线定义,把模拟量变量添加进去,详情请参考附件“11.历史数据”七、报表1.新建变量2.存档变量3.企业管理器——(Local)——数据库——新建数据库(宣化数据库名字是UserDateBase)——表——新建表4.实时报表——定义实时报表数据(有多少模拟量就定义多少数值)5.编辑报表格式6.新建报表,启动报表设计器7.下一步直接点DONE8.选择新建报表(直接点白的创建)9.从“Choose an Expert”中选择<Standard>标准报表格式;10.出现下面对话框,选择数据库来源:11.必须选择“SQL/ODBC”数据源,即执行<SQL/ODBC>按钮,出现对话框:12.选择USER Date Source13.执行<OK>按钮,出现下面对话框来选择数据表:14.选择你所建的表名,添加ADD15.添加完之后关闭,直接下一步,将表里的字段添加(ADD)到Report Filds,下一步,点击Preview Report,进入报表编辑模式(Design)设计报表格式,点击(Preview)预览样式16.设计好后保存,在默认路径下,改下文件名,后缀名(rpt)17.确定后,在编辑报表格式里可以看到该报表18.数据库——编辑数据库连接19.新建20.保存时间,触发周期改一下(根据要求),选择数据表(自己新建的表)21.选择字段名称(每个字段都要添加)22.应用数据连接,回到主画画(你可以把子画面往下拖),选择报表打印按钮,23.选择报表打印按钮后在画面上拖动出现下面画面,对象名称改一下格式文件选择你设计的报表选择时间字段,出现下面对话框,选择Fame View User Date Sourse,选择你所建的表里日期字段新建好之后,回到主画面,即页眉,右击选择画面脚本编辑,选择报表按钮,双击Show Window选择你刚刚选择报表按钮时起的对象名称,保存选择在组建箱里选择画面编程,动态菜单,选择一个动态菜单,下面可以选择一个空的添加,右边写上相应的描述,任务选择处理脚本选择报表按钮,SHOW Window双击,选择对象名称,保存报表详情请参考附件“12.实时报表”。
杰控组态指导手册前提:计算机已安装杰控组态软件(下面按FameView7.6为例)一、新建工程计算机安装好杰控软件后,桌面上会出现如图杰控快捷方式,双击打开软件出现下图窗口:点击窗口左上角如图按钮出现下图输入项目名称等信息,点击“确定”,新建项目成功。
二、画面组态在如图左侧树结构菜单栏选中“显示画面”,右侧出现“画面管理”,“显示属性”,“画面制作”双击“画面制作”即可进入画面编辑环境在弹出窗口中填写新建第一张画面的基本信息举例:画面名称“PIC1”画面尺寸“600*400”点击确认,进入画面菜单和工具说明请参考附件“08.画面制作”右键画面,选择画面属性,可对画面基本信息进行修改下面即可在画面根据提供的PID图进行所需流程图组态。
三、变量组态返回主界面,选择“设备通讯”,双击右侧“安装驱动”根据具体工程要求选择正确的驱动品牌和通讯方式,点击安装双击“启动驱动”,给需要启动的驱动打勾双击“设备数据表”,根据编程师提供的变量地址表预估和合理分配所需变量类型和数目。
返回主界面,选择“运行数据库”,根据要求在右侧不同的变量类型中建立变量以DI为例,双击“DI-开关只读变量”点击“新建”填写变量详细信息即可四、动画组态双击点开属性窗口这边根据你需要做动画连接,比如可见性选择条件a=b,连接变量,写下常数等于1(也就是在1的状态下可见),详情请参考附件“08.画面制作”五、报警组态,在建点的时候有需要报警的在报警一栏打上勾在扩展应用里选择变量报警,进行归档一个个添加归档进去,完成之后回到画面窗口,新建一个报警画面,拖动报警控件在组件箱变量报表,详情请参考附件“10.变量报警”六、趋势曲线,在组件箱,曲线显示里,实时曲线,拖动到曲线画面中,出现下面对话框点击实时曲线定义,把模拟量变量添加进去,详情请参考附件“11.历史数据”七、报表1.新建变量2.存档变量3.企业管理器——(Local)——数据库——新建数据库(宣化数据库名字是UserDateBase)——表——新建表4.实时报表——定义实时报表数据(有多少模拟量就定义多少数值)5.编辑报表格式6.新建报表,启动报表设计器7.下一步直接点DONE8.选择新建报表(直接点白的创建)9.从“Choose an Expert”中选择<Standard>标准报表格式;10.出现下面对话框,选择数据库来源:11.必须选择“SQL/ODBC”数据源,即执行<SQL/ODBC>按钮,出现对话框:12.选择USER Date Source13.执行<OK>按钮,出现下面对话框来选择数据表:14.选择你所建的表名,添加ADD15.添加完之后关闭,直接下一步,将表里的字段添加(ADD)到Report Filds,下一步,点击Preview Report,进入报表编辑模式(Design)设计报表格式,点击(Preview)预览样式16.设计好后保存,在默认路径下,改下文件名,后缀名(rpt)17.确定后,在编辑报表格式里可以看到该报表18.数据库——编辑数据库连接19.新建20.保存时间,触发周期改一下(根据要求),选择数据表(自己新建的表)21.选择字段名称(每个字段都要添加)22.应用数据连接,回到主画画(你可以把子画面往下拖),选择报表打印按钮,23.选择报表打印按钮后在画面上拖动出现下面画面,对象名称改一下格式文件选择你设计的报表选择时间字段,出现下面对话框,选择Fame View User Date Sourse,选择你所建的表里日期字段新建好之后,回到主画面,即页眉,右击选择画面脚本编辑,选择报表按钮,双击Show Window选择你刚刚选择报表按钮时起的对象名称,保存选择在组建箱里选择画面编程,动态菜单,选择一个动态菜单,下面可以选择一个空的添加,右边写上相应的描述,任务选择处理脚本选择报表按钮,SHOW Window双击,选择对象名称,保存报表详情请参考附件“12.实时报表”。
1、建立ODBC连接配置:(1)开始——设置——控制面板——管理工具——数据源:(2)双击“数据源”,选择“用户DSN”选项卡:(3)点击“添加”,选择“SQL Server”,点击“完成”:(4)写入“数据源名称”,选择需要连接的“服务器”,点击“下一步”:(5)选择“使用用户输入登录ID和密码的SQL Server验证”,“登录ID”输入“sa”,如有密码则输入密码,点击“下一步”:(6)将“更改默认的数据库为”打勾,选择需要连接的数据库名称,点击“下一步”:(7)点击“完成”:(8)点击“测试数据源”,如果提示“测试成功”,表示配置正确,点击“确定”,完成ODBC 连接配置:2、组态王——变量(1)工程浏览器——变量——新建:(2)双击“新建”,输入变量名,变量类型,变量名为需要保存到SQL数据库中的数值,如开关量,模拟量,字符串等,点击“确定”:(3)如有多个变量,重复第(2)步骤:3、组态王——新建记录体:(1)工程浏览器——系统——SQL访问管理器——记录体:(2)双击“新建”,输入“记录体名”,“字段名称”输入SQL数据表中的字段名称,“组态王变量”输入保存数值的变量名(可点击“?”选择),点击“增加字段”,可以保存该条记录,如有其它字段需要保存,可重复录入。
全部录入完毕后,点击“确认”完成:4、组态王——将变量值保存到SQL中:(1)工程浏览器——系统——文件——画面——新建:(2)新建“文本”——“开关量”,新建“按钮”——“连接SQL”,新建“按钮”——“插入一条记录”,新建“按钮”——“查询记录”,新建“按钮”——“断开SQL”:(3)双击“文本”——“开关量”,“值输出”——“模拟值输出”——选择“Test_KGL_Z”变量,“权限保护动画连接”——“值输入”——“模拟值输入”——选择“Test_KGL_Z”变量:(4)双击“按钮”——“连接SQL”,“命令语言连接”——“按下时”,写入以下语句:SQLConnect(ConnectionID, "dsn=SQL_Test;uid=sa;pwd=apply");(5)双击“按钮”——“插入一条记录”,“命令语言连接”——“按下时”,写入以下语句:SQLInsert(ConnectionID, "Test_Table","Test" );(6)双击“按钮”——“查询记录”,“命令语言连接”——“按下时”,写入以下语句:SQLSelect(ConnectionID, "Test_Table","Test", "SQL_KGL='1'", "" );(7)双击“按钮”——“断开SQL”,“命令语言连接”——“按下时”,写入以下语句:SQLDisconnect(ConnectionID);。
组态王连接本地数据库操作文档
1配置数据源ODBC
控制面板->ODBC
或者控制面板->管理工具-> ODBC
双击打开ODBC数据源管理器,在系统DSN标签中,点击添加按
钮,创建新数据源。
选择SQL Server为安装数据源的驱动程序。
填写创建到SQL Server的新数据源的名称,本例中以“yue1”为例,在服务器中选择(local)作为需要连接的SQL Server。
其他选项保存默认设置即可,配置ODBC数据源完成后在系统数据源列表中出现新添加的数据源。
2 组态王连接数据库
数据词典中新建变量DeviceID
新建画面SQLtest,在画面中添加按钮
双击新添加的按钮,弹出动画连接对话框。
点击命令语言连接“按下时”,弹出命令语言编辑对话框
点击SQL…按钮,在弹出的选择函数对话框中选择SQLConnect函数,点击确定。
修改函数中的参数,点击确认。
保存画面,并运行整个系统,
3 运行组态王“运行系统”
打开组态王“运行系统”
定。
点击文本按钮,在信息窗口可以看到系统信息SQL数据库连接成功。
用户授权管理组态操作步骤用户授权管理组态的目的是确定DCS操作和维护管理人员并赋以相应的操作权限。
不同的用户管理对应不同的权限。
如,用户管理:工程师,对应的权限:退出系统、查找位号、PID参数设置、重载组态、报表打印、查看故障诊断信息等等。
在此,将创建一个特权级用户,用户名称为“系统维护”,用户密码为“SUPCONDCS”。
创建步骤如下:1.点击命令[开始/程序/AdvanTrol-Pro/用户权限管理],弹出图1所示对话框。
对话框中的“用户名称”为系统缺省用户名“SUPER_PRIVILEGE_001”。
图1登录对话框2.在“用户密码”中输入缺省密码“SUPER_PASSWORD_001”,点击“确定”,进入到用户授权管理界面,如图2所示。
图2用户授权管理界面3.在用户信息窗中,右键点击“用户管理”下的“特权”一栏,出现右键菜单如图3所示。
图3用户列表区内的右键菜单4.在右键菜单中点击“增加”命令,弹出用户设置对话框,如图4所示。
图4用户设置对话框5.在对话框中输入以下信息:用户等级:特权用户名称:系统维护输入密码:SUPCONDCS确认密码:SUPCONDCS点击对话框中的命令按钮“授权设置”,用户设置对话框将改变如图5所示。
图5用户授权设置6.在对话框中点击命令按钮“全增加”,将“所有授权项”下的内容全部添加到“当前用户授权”下,如图6所示。
(也可选中某一授权项,通过“增加”按钮授权给当前用户)图6授权结果7.点击“确定”退出用户设置对话框,返回到用户授权管理界面。
在用户信息窗的特权用户下新增了一名“系统维护”用户,如图7所示。
图7用户添加结果8.点击“保存”按钮,将新的用户设置保存到系统中。
9.可重复以上过程设置其它级别的用户,然后退出用户授权管理界面。
系统总体结构组态操作步骤系统总体结构组态是整个系统组态过程中最先做的工作,其目的是确定构成控制系统的网络节点数,即控制站和操作站节点的数量。
第八章与数据库连接本章容创建数据源及数据库创建表格模板创建记录体对数据库的操作数据集函数在关系库中的应用概述本章我们将讲解如何将阀门的状态变化记录到数据库中并进行查询。
数据库我们选择Access数据库,记录的容包括:日期、时间、阀门描述、阀门状态四个字段。
我们利用KingSCADA的SQL访问功能来实现。
KingSCADA SQL访问功能实现KingSCADA和其他外部数据库之间的数据传输。
提供2种访问方式:一种是记录体的方式,即变量和数据库表中的字段建立绑定关系;一种是数据集方式。
记录体方式就是通过记录体配置项,实现把数据库里面的字段和KingSCADA的变量建立绑定关系。
绑定后,可以通过SQL插入或更新函数将绑定变量插入或更新到数据库的对应字段中;也可以通过SQL 查询函数将数据库中对应字段数据查询并保存到绑定变量中,实现KingSCADA和关系数据库的数据交互。
记录体方式只能在KingSCADA服务器端应用。
数据集方式就是通过KingSCADA提供的一系列数据集函数,执行标准SQL语句,实现KingSCADA 与关系数据库之间的增、查、删、改等所有数据交互功能,尤其可以通过数据集函数,实现从数据库查询出符合SQL语句的数据集合,并在报表、曲线中进行批量数据展示。
数据集方式支持在KingSCADA服务器端、C/S客户端、WEB上使用。
在这里建议采用数据集方式,更加方便、灵活。
下面具体介绍2种方式的具体使用第一节记录体方式在关系数据库中的应用(仅参考)一、创建数据源及数据库以KingSCADA带的DEMO工程中的mine.mdb数据库为例,首先将mine.mdb文件从DEMO工程中拷贝到我们新建的这个培训工程中。
然后,用Windows控制面板中自带的ODBC Data Sources (32bit)管理工具新建一个Microsoft Access Driver(*.mdb)驱动的数据源,名为:mine,然后配置该数据源,指向刚才拷贝过来的Access数据库(即mydb.mdb),如图8-1所示:图8-1ODBC数据源的建立二、创建表及记录体创建表用ACCESS打开mine.mdb数据库,在库中新建表“KingTable”,在表中建立三个字段日期时间、液位、温度,如图8-2所示:图8-2在mine数据库中创建表日期时间字段为日期时间类型。
杰控组态变量小数点1. 引言在杰控组态系统中,变量是非常重要的概念。
它们代表了系统中的各种参数、状态和数据。
在实际应用中,我们经常需要使用小数点来表示精确的数值,以满足对数据精度的要求。
本文将介绍杰控组态系统中如何处理小数点,以及相关的设置和注意事项。
2. 小数点的表示在杰控组态系统中,小数点可以通过浮点型(float)变量来表示。
浮点型变量可以存储小数和整数,具有较高的精度和范围。
在变量定义时,可以指定小数点的位数,以满足实际需求。
float temperature = 25.5; // 定义一个浮点型变量temperature,表示温度,小数点保留1位在杰控组态系统中,还可以使用其他数据类型来表示小数,如定点数(fixed-point)和双精度浮点数(double)。
不同的数据类型在精度和范围上有所不同,根据实际需求选择合适的数据类型。
3. 小数点的显示在杰控组态系统中,小数点的显示可以通过设置变量的格式来实现。
变量的格式可以包括小数点的位数、单位和显示方式等。
以下是一些常用的小数点显示设置:•小数点位数:可以设置小数点的位数,以控制小数的精度。
例如,可以设置小数点位数为1,表示保留1位小数。
•单位:可以为变量设置单位,如温度的单位可以是摄氏度(℃)或华氏度(℉)。
•显示方式:可以设置变量的显示方式,如固定小数点位数、自动调整小数点位数或科学计数法等。
在杰控组态系统中,可以通过变量属性或控件属性来设置小数点的显示。
以下是一些常用的设置方式:•变量属性:可以通过修改变量的格式属性来设置小数点的位数和单位。
例如,可以设置变量的Format属性为”0.0 ℃“,表示保留1位小数,并显示单位为摄氏度。
•控件属性:可以通过修改控件的格式属性来设置小数点的位数和显示方式。
例如,可以设置文本框控件的Format属性为”0.00”,表示保留2位小数。
4. 小数点的计算在杰控组态系统中,小数点的计算可以通过使用适当的运算符和函数来实现。
25.数据库操作序号 内容 页码25.1 数据查询 25-0125.2 曲线查询 25-0425.3 表格显示 25-0525.4 字段列表 25-0725.5 删除数据表内容 25-0825.6 数据库脚本编程 25-0925.7 存储过程脚本编程 25-1025.8 数据库记录平均统计 25-1025.9 把数据库记录导出到Excel中 25-1125.10 使用ADO访问数据库 25-1325.1数据查询提供了通过表格查看数据库内容的方法,用“数据查询”组件实现:增加一个组件对象,在设置对话框中添入数据库的有关信息,如下图所示:执行<ODBC数据源>按钮,通过出现的对话框来选择数据源(如FameView Userdata Source):执行<记录表>按钮,出现下面的对话框,其中列出数据源中所有数据表,从中选择要查询的记录集(如demo):此组件主要根据时间字段进行查询,执行<时间字段>按钮,出现下面的对话框,其中列出记录集中所有的字段,从中选择要使用的时间字段(如F3):如果希望把查询的结果进行打印或浏览,要先根据数据库利用Crystal水晶星建立报表格式,然后执行<报表格式>按钮,选择报表格式文件(*.rpt);用鼠标双击字段列表,会出现选择字段对话框,从中选择需要查询后显示的字段,此时不需要再选择时间字段;能自动的识别字段的类型,但要正确设定字段内容的字符长度;1个数据表中的字段数量要小于100;在查询显示表中,可能不希望直接显示字段的名称,请修改字段描述即可;用“Del”键可以从列表删除选错的字段;画面运行后,执行按钮查询,界面如下:如果不希望执行组件按钮来查询数据,而希望通过其他事件来执行,按照下列步骤来实现:(1)给按钮组件命名:选中组件,点击右键,弹出菜单,选择执行“对象属性”中的“脚本名称”,给对象命名,例如BTNOBJ;(2)隐藏按钮组件:选中组件,点击右键,弹出菜单,选择执行“隐藏对象”,使组件在运行画面显示时不可见:(3)编写脚本,然后被其他事件触发,例如在图标按钮中选择脚本执行,脚本内容如下:UserDbSQLObj.ShowWindow "BTNOBJ"25.2 曲线查询组态系统提供了通过曲线查看数据库内容的方法,用“曲线查询”组件实现:假设要查询的数据表的内容为;F1(罐号)F2(液位) F3(时间)1 10 2006-5-5 1:00:002 10 2006-5-5 1:00:001 100 2006-5-5 2:00:002 200 2006-5-5 2:00:001 110 2006-5-5 3:00:002 220 2006-5-5 3:00:00… … …增加一个组件对象,在设置对话框中添入数据库的有关信息,如下图所示:通过<数据源>按钮弹出对话框,选择ODBC数据源,如fameView userdata Source;通过<记录表>按钮弹出对话框,选择要查询的数据表,如demo;通过<时间字段>按钮弹出对话框,选择进行查询所依据的时间字段,如f3;通过<查询字段>按钮弹出对话框,选择进行分组查询所依据的字段;在<查询对象>中输入分组的方式,例如f1=1表示1#罐, f1=2表示2#罐;通过<曲线字段>按钮弹出对话框,选择并加入到曲线字段表中;画面运行后,执行按钮查询,界面如下:如果不希望执行组件按钮来查询数据,而希望通过其他事件来执行,按照下列步骤来实现:(1)给按钮组件命名:选中组件,点击右键,弹出菜单,选择执行“对象属性”中的“脚本名称”,给对象命名,例如BTNOBJ;(2)隐藏按钮组件:选中组件,点击右键,弹出菜单,选择执行“隐藏对象”,使组件在运行画面显示时不可见:(3)编写脚本,然后被其他事件触发,例如在图标按钮中选择脚本执行,脚本内容如下:SQLCurveObj.ShowWindow "BTNOBJ"25.3 表格显示组态系统提供了在线显示数据库内容的方法,通过“表格显示”组件实现:此组件可以在画面上以列表的方式直接显示某个数据库的内容,还可以与变量相关联;组态对话框如下:为组件命名,否则不能进行脚本操作,如“DBLIST”;执行<数据源>按钮,通过出现的对话框来选择数据库对应的数据源;执行<数据表>按钮,选择要显示的数据表,数据表中的字段数量要小于100:如果希望在列表中只显示数据表中的某部分数据,请<过滤条件>处填写缺省SQL语句,如F1>100;否则显示数据库中的所有记录;用鼠标双击字段列表,会出现选择字段对话框,从中选择需要查询后显示的字段,能自动的识别字段的类型,但要正确设定字段内容的字符长度;在查询显示表中,可能不希望直接显示字段的名称,请修改字段描述即可;用“Del”键可以从列表删除选错的字段;还提供了3组变量:增加变量、读取变量、修改变量;使系统变量(AI/AO/AR/DI/DO/DR/VA/VD /VT)与数据库之间建立联系;画面运行后,数据库列表界面如下:允许编写脚本操作数据库:要把增加变量组追加至数据库,请使用如下脚本:UserDbListObj.AddNewFromVarValue "DBLIST"要从数据库中读取第10个记录至读取变量组,请使用如下脚本:UserDbListObj.SetVarValueFromField "DBLIST",10要通过修改变量组修改数据库中的第10个记录,请使用如下脚本:UserDbListObj.EditFromVarValue "DBLIST",1025.4字段列表组态系统提供了在线选择数据库中某字段内容的方法,通过“字段列表”组件实现:此组件有以下功能:以选择框的方式供用户进行数据选择;选择框内容可以数据库中的某个字段的内容也可以显示手动输入的文本内容;选择的内容能够与变量关联;组态对话框如下:缺省列表,允许在其中手动输入多行文本(用回车换行),作为缺省的列表内容;关联数据库,设定数据源、数据表、使用字段、过滤条件,能够在画面运行时,把数据库某表中的某字段的部分记录显示添入到选择框中;过滤条件的格式为SQL查询语句,例如f3>1000;对应变量,在画面运行后,当使用选择框选择数据时,能够把所选择的内容对应到变量中:(1)索引变量可以是AO/AR/VA变量,对应的是选择框中当前文本的索引号,以0为基数;(2)数值变量可以是AO/AR/VA变量,对应的是把选择框中当前文本转换为浮点数后的数值;(3)文本变量可以是VT变量, 对应的是选择框中的当前文本;字段列表运行时的界面如下:允许用脚本更新选择框中的内容:更新数据选择框的内容DataboxObj.Update ObjName,OdbcName,TableName,FieldName,FieldType,Filter例:DataboxObj.Update "AAA","myODBC","myTable","myField",3,"f1>1000"得到当前数据选择框的文本内容n=DataboxObj.GetCurText(ObjName)例:n=DataboxObj.GetCurText("AAA")25.5 删除数据库内容某个数据库中存储了大量的数据,经过一段时间后,想把某个时间之前的数据删除;本节以例子的方式说明如何通过组态系统删除数据库中的某些数据;假设现有数据库,其ODBC数据源的名称为db1,其中有一个数据表名为T1,其中有一个日期时间字段为F4,根据F4来删除数据;增加2个文本变量(VT):VT1、VT2;在画面中各增加一个日期拾取器和时间拾取器,分别把内容保存在VT1和VT2中;再在画面中增加一个按钮,当执行按钮时,执行脚本来删除选择时间以前的数据;画面的界面如下:如果数据库的类型为Access,则脚本内容如下:'打开DB1,允许通过SQL访问SQLObj.OpenSQLConnect "DB1","",""'得到删除日期、时间s1=RunSys.GetVTtext("VT1",-1)s2=RunSys.GetVTtext("VT2",-1)'组成格式文本"Delete * From T1 Where F1<= #2002-1-1 0:0:0# "s="Delete * From T1 Where F4<= #" : s=s+s1 : s=s+" " : s=s+s2 : s=s+"#"'执行SQL语句,删除数据SQLObj.SQLExecute s'关闭DB1SQLObj.CloseSQLConnect如果数据库的类型为SQL Server,则脚本内容如下:'打开DB1,允许通过SQL访问SQLObj.OpenSQLConnect "DB1","",""'得到删除日期、时间s1=RunSys.GetVTtext("VT1",-1)s2=RunSys.GetVTtext("VT2",-1)'组成格式文本"Delete * From T1 Where F1<= ‘2002-1-1 0:0:0# ’s="Delete * From T1 Where F4<= ‘" : s=s+s1 : s=s+" " : s=s+s2 : s=s+"’"'执行SQL语句,删除数据SQLObj.SQLExecute sSQLObj.CloseSQLConnect往记录集中加入记录;UserDB.OpenConnect "My Database","",""UserDB.OpenRecordset "t1",2,2,2UserDB.AddNewUserDB.SetFieldValue "f1",7, "AAA"UserDB.SetFieldValue "f2",1,1000UserDB.UpdateUserDB.CloseRecordsetUserDB.CloseConnect得到数据库中字段的值;UserDB.OpenConnect "My Database","",""UserDB.OpenRecordset "t1",2,2,2UserDB.MoveFirstUserDB.Move(10)Value=UserDB.GetFieldValue "f2",1,1000UserDB.CloseRecordsetUserDB.CloseConnect执行SQL语句:SQLObj.OpenSQLConnect "TestDB","",""SQLObj.SQLExecute "DELETE FROM demo"SQLObj.CloseSQLConnect数据查询UserDB.OpenConnect "FameView UserData Source","",""UserDB.SetFilter "f1>=1000"UserDB.OpenRecordset "demo",2,2,2If UserDB.IsEmpty()=0 ThenretValue=UserDB.GetFieldValue("f2",4)End IfUserDB.CloseRecordsetUserDB.CloseConnect通过脚本编程可以执行数据库服务器端的存储过程;假设存储过程内容如下:CREATE PROCEDURE [test](@f1 [real], @f2 [real], @f3 [datetime], @f4 [real] output) AS INSERT INTO [UserDatabase].[dbo].[demo] ( [f1],[f2],[f3])VALUES ( @f1,@f2,@f3)if @@error=0set @f4=12.11elseset @f4=0.12GO过程调用如下:n=StoredProc.OpenConnect("FameView UserData Source","","")If n=1 ThenStoredProc.SetCommandText "test"StoredProc.SetInputParamCount 3StoredProc.SetInputParam 1,"f1",4,1.23StoredProc.SetInputParam 2,"f2",4,2.34StoredProc.SetInputParam 3,"f3",7,"2005-12-11 05:00:00"StoredProc.SetOutputParamCount 1StoredProc.SetOutputParam 1,"f4",4StoredProc.Executem=StoredProc.GetOutputValue(1)RunSys.SetVarValue VA,"%VA1",-1,mStoredProc.CloseConnectEnd If25.8 数据库记录平均统计把某个表中某天的数据求平均,存入另一个表中假设t1和t2有相同的结构,分别有3个字段:字段名称 类型F1 RealF2 RealF3 Datetime针对t1中近30天的数据,把每天的数据求平均,存入t2中,并删除t1中的数据;在SQL Server中编写存储过程test如下:CREATE PROCEDURE [test]asDeclare @n intDeclare @ct datetimeset @n=-30while @n<0beginset @ct=DATEADD(DAY,@n, GETDATE())INSERT INTO t1SELECT AVG(f1) AS f11, AVG(f2) AS F12, @ct AS F13FROM demoWHERE (YEAR(f3) = YEAR(@ct) AND (Month(f3) = MONTH(@ct) AND (Day(f3) = DAY(@ct)set @n=@n+1enddelete from demoGO在组态软件中调用过程的脚本如下:n=StoredProc.OpenConnect("FameView UserData Source","","")If n=1 ThenStoredProc.SetCommandText "test"StoredProc.ExecuteStoredProc.CloseConnectEnd If25.9 把数据库数据导出到Excel中'允许输入查询的年/月MyYear = InputBox("请输入查询年份","")MyMonth = InputBox("请输入查询月份","")MyDay = 1'检查时间是否合法If IsDate(MyMonth & "/" & MyDay & "/" & MyYear) = True ThenNOW_DATE = MyYear + "年" + MyMonth + "月"'得到开始时间StartTime = MyMonth & "/" & MyDay & "/" & MyYear & " 00:00:00"'得到结束时间If MyMonth < 12 ThenMyMonth = MyMonth + 1EndTime = MyMonth & "/" & MyDay & "/" & MyYear & " 00:00:00"ElseMyYear = MyYear + 1MyMonth = 1EndTime = MyMonth & "/" & MyDay & "/" & MyYear & " 00:00:00"End If'打开数据库及数据表demo,dt为时间字段UserDB.OpenConnect "FameView UserData Source","",""UserDB.SetFilter "dt>='"+StartTime+"' And dt<'"+EndTime+"'"UserDB.OpenRecordset "demo",2,2,2 '打开记录集;'检查查询内容是否为空If UserDB.IsEmpty()=0 Then'打开Excel文件Set ExcelObj = CreateObject("Excel.Application")ExcelObj.Visible = TrueExcelFile = "C:\组态系统\ExcelFile\test.xls"Intyexcel.Workbooks.Open ExcelFileExcelObj.Sheets("Sheet1").SelectExcelObj.Worksheets(1).SelectExcelObj.Cells(1,3) = NOW_DATE'导出记录到Excel中row=2While UserDB.IsEOF()=0ExcelObj.Cells(row,1).Value=UserDB.GetFieldValue("dt",8)ExcelObj.Cells(row,2).Value=UserDB.GetFieldValue("f1",4)ExcelObj.Cells(row,3).Value=UserDB.GetFieldValue("f2",4)row=row+1UserDB.MoveNextWendExcelObj.ActiveWorkbook.SaveAs "C:\组态系统\ExcelFile\"&NOW_DATE&".xls" ExcelObj.QuitSet ExcelObj=NothingEnd If'关闭数据库UserDB.CloseRecordsetUserDB.CloseConnectEnd If25.10 使用ADO访问数据库'与数据库(tempdb)建立连接Set conn = CreateObject("ADODB.Connection")strConn="Driver={SQL Server};Server=(local);Database=tempdb;Uid=sa;Pwd=;" conn.Open strConn'打开记录集(t1)Set rs= CreateObject("ADODB.Recordset")strSQL="SELECT * FROM t1"rs.Open strSQL,conn,2,2'添加记录rs.AddNewrs("f1")="222"rs("f2")=222rs.Update'得到记录f1=rs("f1")f2=rs("f2")'关闭连接与记录集rs.Closeconn.CloseSet rs=NothingSet conn=Nothing。