组态王如何记录设备的启停时间及运行时间
组态王使用说明

皖西学院监控组态软件实验指导书机械与电子工程学院电气工程教研室2013.3实验一监控组态工程建立与工艺流程图绘制一、实验目的熟练掌握工控组态软件的绘图工具二、实验内容熟悉工控组态软件的绘图工具,完成反应工段工艺流程绘制以及外部设备和变量的定义。
三、实验步骤1.1创建工程在工程管理器中选择菜单“文件/新建工程”,或者点击工具栏的“新建”按钮,根据“新建工程向导”对话框完成工程创建,如图一所示图一工程管理器1.2 组态画面双击工程管理器中的工程,打开工程浏览器,在工程浏览器中左侧的“工程目录显示区”中选择“画面”,在右侧视图中双击“新建”,弹出新建画面对话框如图一所示。
图二画面属性设置点击图二确定按钮后,在工具箱和图库中选中相应图素进行监控画面组态,绘制工艺流程图如图三所示。
图三反应车间监控画面1.3定义设备根据工程中实际使用得设备进行定义,本例程使用亚控的仿真PLC设备,使用“PLC-亚控-仿真PLC-串口”驱动,定义设备名称为“PLC”。
1.4定义变量在组态王中定义三个变量:原料油液位(IO实数类型)、成品油液位(IO实数类型)、催化剂液位(IO实数类型)。
原料油液位变量:最小值0,最大值100,最小原始值0,最大原始值100,连接设备PLC,寄存器DECREA100,数据类型short,读写属性为只读,采集频率1000。
记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。
催化剂液位变量:最小值0,最大值100,最小原始值0,最大原始值100,连接设备PLC,寄存器DECREA100,数据类型short,读写属性为只读,采集频率1000。
记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。
成品油液位变量:最小值0,最大值200,最小原始值0,最大原始值200,连接设备PLC,寄存器INCREA200,数据类型short,读写属性为只读,采集频率1000。
记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。
用组态王报表

用组态王报表实现显示设备启动、停止时间和运行时长的方法在对设备的状态进行监控中,往往要取得一些参数来记录和分析设备的运行状况。
这其中就包括设备的启动时间、停止时间和运行的时长。
当然,组态软件不会有这样的功能,让我们轻易实现。
不过,通过组态软件的报表功能,再通过二次开发,写一些脚本语言。
实现起来倒也不难。
以下,以组态王为例,是对操作过程的描述,希望能够对需要的人有一些帮助。
总体思路:以一个项目为例。
在这个工程中,有21台设备的运行状态需要记录,他们的运行状态依次记录在报表中。
报表中的每一行都表示,此设备的一个运行周期。
由于设备状态在报表中依次排列,因此需要相应的变量来保存该设备状态所在的行数。
这样,当停止该设备时,才能将“停止时间”和“运行时长”填充到正确的位置。
这样,就需要建立21个内存整形变量。
由于报表中的记录依次排列,因此还需要一个变量来保存报表中最后一条记录的行数,这样才能顺序填充记录。
1、新建报表,并命名为“报表1”。
2、创建内存整形变量。
21个内存变量分别保存21个设备状态所在的行数。
1个内存变量保存报表中最后一条记录的行数。
3、编写自定义函数,好处是减少代码量,修改方便。
脚本内容具体如下//"var"是变量的名称,"name"是要显示在报表中的字符串,"varRow"是保存记录的行数//用年月日,时分秒,系统变量来组合形成日期。
//不用日期变量,因为其格式长度不确定,在后来的分解中会很麻烦。
string strY=StrFromInt(\本站点$年, 10 );string strM=StrFromInt(\本站点$月, 10 );string strD=StrFromInt(\本站点$日, 10 );string strH=StrFromInt(\本站点$时, 10 );string strMi=StrFromInt(\本站点$分, 10 );string strS=StrFromInt(\本站点$秒, 10 );//确定日期的格式,并使长度和位置固定if(\本站点$月<10) strM="0"+strM;if(\本站点$日<10) strD="0"+strD;if(\本站点$时<10) strH="0"+strH;if(\本站点$分<10) strMi="0"+strMi;if(\本站点$秒<10) strS="0"+strS;//组合,定义格式string str=strY+"-"+strM+"-"+strD+" "+strH+":"+strMi+":"+strS;//启动设备时,将“序号”、“名称”、“启动时间”填充到报表中if(var==1){long num=报表当前行-1;string id=StrFromInt(num, 10 );ReportSetCellString("报表1", 报表当前行, 1, id);//序号ReportSetCellString("报表1", 报表当前行, 2, name);//名称ReportSetCellString("报表1", 报表当前行, 3, str);//开始时间varRow=报表当前行;//所在行=报表当前行报表当前行=报表当前行+1;}//停止设备时else{string startStr=ReportGetCellString("报表1", varRow, 3);//从报表中取得开始时间//开始时间转换秒 2011-05-06 12:23:34string midY=StrMid(startStr, 1, 4 );string midM=StrMid(startStr, 6, 2 );string midD=StrMid(startStr, 9, 2 );string midH=StrMid(startStr, 12, 2 );string midMi=StrMid(startStr, 15, 2 );string midS=StrMid(startStr, 18, 2 );long lY=StrToInt(midY);long lM=StrToInt(midM);long lD=StrToInt(midD);long lH=StrToInt(midH);long lMi=StrToInt(midMi);long lS=StrToInt(midS);long startTime= HTConvertTime(lY,lM,lD,lH,lMi,lS);long endTime= HTConvertTime(\本站点$年,\本站点$月,\本站点$日,\本站点$时,\本站点$分,\本站点$秒);//结束时间转换秒//计算时间差long timeLength=endTime-startTime;//单位秒//秒转换为小时//timeLength=timeLength/3600;string endStr=StrFromInt(timeLength, 10 )+"秒";//将“停止时间”和“运行时长”填充到报表中ReportSetCellString("报表1", varRow, 4, str);//结束时间ReportSetCellString("报表1", varRow, 5, endStr);//时间长度}4、建立设备启动或停止的运行事件命令。
组态王使用问题解答

组态王使用问题解答1 关于Microsoft Date and Time Picker控件,我按你说的做。
在大部分情况下可以查到数据了。
但是如果是小于10的时间数,就又不对了。
比如在“Microsoft Date and Time Picker"控件中输入08:15:10 则按钮下命令语言执行完报警查询起始时间=hour1+"时"+minute1+"分"+second1+"秒"; 后得到的是8时15分10秒而不是所需要的08时15分10秒。
少了一个0字就又查不到数据了。
请赐教,该如何解决之。
用IF语句做一下判断若小于10时在前面加“0”3 兰精灵关于设置模拟量参数输出不稳定的问题?急!关于设置模拟量参数输出不稳定的问题?我的一段程序使用6.02开发的前端使用的是三菱fx2n,通讯和采集数据都正常,但是我设置一个地址比如“d120”为最大值时,模拟量输出时是最大值但很快就掉到零,然后又恢复到最大值。
输出就不停这样变换,我要的是一个稳定输出最大值,未何会掉到零。
(去掉组态王后,只看plc输出是对的)。
最大值和最大原始值要一样最小值和最小原始值要一样请检查具体设置4 为什么VIEW的时候会提示:“创建协议组件失败”??我从别人这COPY了一个工程,但VIEW的时候会提示:“创建协议组件失败”是的工程不能在线运行!请问有什么方法可以解决这问题?!请安装组态王提供的硬件驱动程序5 怎么不能驱动呀[求助] 我问下啊,下载的驱动程序是哪个版本的呀?我现在用的是6.01版的,我怎么驱动不上啊如果驱动程序不分版本,请问怎么驱动呀?我是双机后,点搜索,可是怎么装不上呢?先把组态王提供的驱动程序包(至少应该包括以下几个文件:××.Dll,DEVLST.DAT,××.REG)拷入除组态王路径外的任一路径下安装驱动程序:“搜索亚控产品”选中搜索到的再安装驱动程序最好安装网站上提供的最新驱动6 如何使用KVDBGrid实现数据查询?当要查询数据库的AlarmDate,输入为:grid.Where=“AlarmDate=”+\\本站点\查询日期7 组态王6.03"创建协议组件失败",是何错误,如何处理!您查看一下您所用的设备的驱动程序是否安装,如果没有安装的话,可能会出现这种情况8 再问一个关于实时报表的问题我按着组态王提供的example自己做的例子,语句和例子里的差不多,但是在运行的时候实时报表无法显示当前时间段里的变量变化情况。
组态王 历史数据查询例程说明文档

例程说明文档目录1. 功能概述 (1)2. 工程实例 (1)3. 操作步骤 (1)3.1 定义设备 (1)3.2 定义变量 (1)3.3 制作画面 (2)3.4 进入运行系统 (10)4. 注意事项 (14)1. 功能概述常规需求:很多工业现场会存储数据并对存储的历史数据进行查询、打印输出。
历史数据查询一般为起始时间、结束时间、间隔时间都不固定,最终用户根据实际需要进行查询。
组态王中的实现方法:利用组态王内置报表以及报表的函数来实现对历史数据的查询。
组态王内置报表的操作类似excel,操作简单、方便,并且组态王提供了大量的报表函数来实现各种复杂功能。
2. 工程实例我们举一个例子来说明实现方法。
在此例程中我们定义五个变量,分别为“压力”、“温度”、“密度”、“电流”、“电压”,运行系统运行后记录历史数据,下面就以此为例来演示完成这一要求的具体步骤。
3. 操作步骤3.1定义设备根据工程中实际使用得设备进行定义,本例程使用亚控的仿真PLC设备,使用“PLC -亚控-仿真PLC-串口”驱动,定义设备名称为“PLC”。
3.2定义变量在组态王中定义五个变量:压力(IO实数类型)、温度(IO实数类型)、密度(IO 实数类型)、电压(IO实数类型)、电流(IO实数类型)。
压力变量:最小值0,最大值100,最小原始值0,最大原始值100,连接设备PLC,寄存器INCREA100,数据类型short,读写属性为只读,采集频率1000。
记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。
温度变量:最小值0,最大值50,最小原始值0,最大原始值100,连接设备PLC,寄存器DECREA100,数据类型short,读写属性为只读,采集频率1000。
记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。
密度变量:最小值0,最大值1,最小原始值0,最大原始值100,连接设备PLC,寄存器INCREA100,数据类型short,读写属性为只读,采集频率1000。
组态王教程及使用问题解答(基础篇)

建立新项目 假设你已经正确安装了“组态王”,首先启动组态王工程浏览器。工程浏览器运行后,将打开你上一 次工作后的项目。如果你是第一次使用工程浏览器,默认的是组态王示例程序所在的目录。为建立一 个新项目,请执行以下操作: 在工程浏览器中选择菜单“工程/新建”,出现“新建工程”对话框。在对话 框中输入工程名称:myproj 在工程描述中输入:工程路径自动指定为当前目录下以工程名称命名的子 目录。如果你需要更改工程路径,请单击“浏览”按钮。 单击“确定”。组态王将在工程路径下生成初始 数据文件。至此,新项目已经可以开始建立了。你可以在每一个项目下建立数目不限的画面,在下一 节,我们将开始绘制第一幅画面。
数据库的作用 数据库是“组态王”最核心的部分。在TOUCHVEW运行时,工业现场的生产状况要以动画的形式反 映在屏幕上,操作者在计算机前发布的指令也要迅速送达生产现场,所有这一切都是以实时数据库为 中介环节,所以说数据库是联系上位机和下位机的桥梁。 定义变量的方法 对于我们将要建立的“监控中心”,需要从下位机采集两个原料罐的液位和一个反应罐的液位,所 以需要在数据库中定义这三个变量。因为这些数据是通过驱动程序采集到的,所以三个变量的类型都 是I/O实型变量。这三个变量分别命名为“原料罐1液位”、“原料罐2液位”和“反应罐液位”,定义方法如 下:在工程浏览器的左侧选择“数据词典”,在右侧双击“新建”,弹出“变量属性”对话框;对话框设置为 如图T6-2:设置完成后,单击“确定”。用类似的方法建立另两个变量“原料罐2液位”和“反应罐液位”。 变量的类型 数据库中存放的是你制作应用系统时定义的变量以及系统预定义的变量。变量可以分为基本类型 和特殊类型两大类。基本类型的变量又分为“内存变量”和“I/O变量”两类。“I/O变量”指的是需要“组态王” 和其它应用程序(包括I/O服务程序)交换数据的变量。这种数据交换是双向的、动态的,就是说:在“组 态王”系统运行过程中,每当I/O变量的值改变时,该值就会自动写入远程应用程序;每当远程应用程序 中的值改变时,“组态王”系统中的变量值也会自动更新。所以,那些从下位机采集来的数据、发送给 下位机的指令,比如“反应罐液位”、“电源开关”等变量,都需要设置成“I/O变量”。那些不需要和其它 应用程序交换只在“组态王”内需要的变量,比如计算过程的中间变量,就可以设置成“内存变量”。基本 类型的变量也可以按照数据类型分为离散型、模拟型、长整数型和字符串型。内存离散变量、I/O离散 变量:类似一般程序设计语言中的布尔(BOOL)变量,只有0,1两种取值,用于表示一些开关量。内 存实型变量、I/O实型变量:类似一般程序设计语言中的浮点型变量,用于表示浮点数据,取值范围10E-38 至10E+38,有效值7位。内存整型变量、I/O整型变量:类似一般程序设计语言中的有符号长整数型变 量,用于表示带符号的整型数据,取值范围 -2147483648至2147483647。内存字符串型变量、I/O字符 串型变量:类似一般程序设计语言中的字符串变量,用于记录一些有特定含义的字符串,如名称,密 码等,该类型变量可以进行比较运算和赋值运算。特殊变量类型有报警窗口变量、报警组变量、历史 趋势曲线变量、时间变量四种。这几种特殊类型的变量正是体现了“组态王”系统面向工控软件、自动 生成人机接口的特色。
组态王使用教程

组态王简明教程 第一课
了解组态王 在本课程您将: ·了解组态王软件的整体结构 ·了解组态王的工件方式 ·了解建立应用程序的一般过程
组态王软件的结构
“组态王”是运行于 Microsoft Windows 98/NT 中文平台的全中文界面的组态软件,采用了多 线程、COM 组件等新技术,实现了实时多任务,软件运行稳定可靠。组态王具有一个集成开发 环境“组态王工程浏览器”,在工程浏览器中您可以查看工程的各个组成部分,也可以完成构造数 据库、定义外部设备等工作。画面的开发和运行由工程浏览器调用画面制作系统 TOUCHMAK 和画面运行系统 TOUCHVEW 来完成的。TOUCHMAK 是应用程序的开发环境。您需要在这个 环境中完成设计画面、动画连接等工作。TOUCHMAK 具有先进完善的图形生成功能;数据库中 有多种数据类型,能合理地抽象控制对象的特性;对变量报警、趋势曲线、过程记录、安全防范 等 重 要 功 能 都 有 简 单 的 操 作 办 法 。 TOUCHVEW 是 “ 组 态 王 ” 软 件 的 实 时 运 行 环 境 , 在 TOUCHMAK 中建立的图形画面只有在 TOUCHVEW 中才能运行。TOUCHVEW 从工业控制对 象中采集数据,并记录在实时数据库中。它还负责把数据的变化用动画的方式形象地表示出来, 同时完成变量报警、操作记录、趋势曲线等监视功能,并生成历史数据文件。
使用图形工具箱 接下来在此画面中绘制各图素。绘制图素的主要工具放置在图形编辑工具箱内。当画面打开
时,工具箱自动显示,如果工具箱没有出现,选择菜单“工具\显示工具箱”或按 F10 键打开它。 工具箱中各种基本工具的使用方法和 WINDOWS 中“画笔”很类似,假如你熟悉“画笔”的使用, 绘制本画面将是很容易的。首先绘制监控对象原料罐和反应罐:在工具箱内单击圆角矩形工具, 在画面上绘制一个矩形作为第一个原料罐;在矩形框上单击鼠标左键,在矩形框周围出现 8 个小 矩形,当鼠标落在任一小矩形上时,按下鼠标左键,可以移动图形对象的位置用同样的方法绘制 另一原料罐和反应罐。在工具箱内单击多边形工具,绘制三条管道。要改变管道的填充颜色,请 选中此对象,然后单击调色板窗口的第二个按钮,再从调色板中选择任一种颜色。在工具箱内单 击文本工具,输入文字。要改变文字的字体、字号,请先选中文本对象,然后在工具箱内选择“改 变字体”。选择菜单“图库\刻度”,在图库窗口中双击一种竖向的刻度。在画面上单击鼠标左键,
组态王历史数据查询

历史数据查询1. 功能概述常规需求:很多工业现场会存储数据并对存储的历史数据进行查询、打印输出。
历史数据查询一般为起始时间、结束时间、间隔时间都不固定,最终用户根据实际需要进行查询。
组态王中的实现方法:利用组态王内置报表以及报表的函数来实现对历史数据的查询。
组态王内置报表的操作类似excel,操作简单、方便,并且组态王提供了大量的报表函数来实现各种复杂功能。
2. 工程实例我们举一个例子来说明实现方法。
在此例程中我们定义五个变量,分别为“压力”、“温度”、“密度”、“电流”、“电压”,运行系统运行后记录历史数据,下面就以此为例来演示完成这一要求的具体步骤。
3. 操作步骤3.1定义设备根据工程中实际使用得设备进行定义,本例程使用亚控的仿真PLC设备,使用“PLC-亚控-仿真PLC-串口”驱动,定义设备名称为“PLC”。
3.2定义变量在组态王中定义五个变量:压力(IO实数类型)、温度(IO实数类型)、密度(IO实数类型)、电压(IO实数类型)、电流(IO实数类型)。
压力变量:最小值0,最大值100,最小原始值0,最大原始值100,连接设备PLC,寄存器INCREA100,数据类型short,读写属性为只读,采集频率1000。
记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。
温度变量:最小值0,最大值50,最小原始值0,最大原始值100,连接设备PLC,寄存器DECREA100,数据类型short,读写属性为只读,采集频率1000。
记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。
密度变量:最小值0,最大值1,最小原始值0,最大原始值100,连接设备PLC,寄存器INCREA100,数据类型short,读写属性为只读,采集频率1000。
记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。
电流变量:最小值30,最大值50,最小原始值0,最大原始值100,初始值为30,连接设备PLC,寄存器DECREA100,数据类型short,读写属性为只读,采集频率1000。
精心整理组态王常用命令语言函数速查手册

精心整理组态王常用命令语言函数速查手册组态王命令语言函数手册―组态王‖支持使用内建的复杂函数,其中包括字符串函数、数学函数、系统函数、控件函数、报表函数及其他函数,下面依次介绍各个函数(函数名不区分大小写,按字母排序):Abs此函数用于计算变量值的绝对值,使用格式如下: Abs(变量名或数值); 返回值:整值或实型值; 例如: Abs(14); 返回值为14 Abs(-7.5); 返回值为7.5Abs(距离); 返回内存模拟变量―距离‖的绝对值。
Ack对变量进行报警确认,或对报警组进行报警确认。
如果函数参数为变量名称,则只对该变量进行报警确认;如果函数参数为报警组名称,则确认所有属于该报警组及其子报警组的变量。
该函数的参数只能是变量名或报警组名,不可以为字符串变量。
此函数常用于按钮命令语言,当发生报警时,用此函数进行报警确认,它将产生确认报警事件。
调用格式: Ack(报警组名); 或 Ack(变量名); 例如: Ack(全厂); 或 Ack(反应罐液位);ActivateApp activate['ækt?ve?t] vt. 刺激;使活动;使活泼;使产生放射性app [æp]n.应用程序此函数用于激活正在运行的窗口应用程序,使之变为当前窗口。
获得输入焦点。
该函数也可配合函数SendKeys的使用。
调用形式: ActivateApp(―ExeName‖);参数:ExeName 应用程序的执行文件名例如:激活Microsoft Word的正确调用为: ActivateApp("Word.exe"); ArcCos arc[ɑ?k] adj. 圆弧的;反三角函数的此函数用于计算变量值的反余弦值, 变量值的取值范围在[-1,1]之间,否则函数返回值无效。
调用格式: ArcCos(变量名或数值); 返回值:整值或实型值; 例如: ArcCos(1); 此函数返回值为0 ArcCos(temp); 此函数返回变量―temp‖的反余弦值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1:准备工作
设备状态变量:泵,离散值,=1时启动,=0时停止。
新建内存字符串变量:启动时间,停止时间,设备名称新建内存整数变量:运行时间
配置数据库odbc连接
新建表格模板及对应的记录体
2:运行启动时输入“SQLConnect( DeviceID, "dsn=sa;uid=root;pwd=123"); SQLCreateTable( DeviceID, "sbyxsj", "mb" );”
连接数据库及新建数据表
3:在事件函数中添加:
在发生时输入:\\本站点\启动时间=\\本站点\$时间;
存在时输入:\\本站点\泵运行时间=\\本站点\泵运行时间+3;
结束时输入:\\本站点\停止时间=\\本站点\$时间;
\\本站点\泵运行时间=\\本站点\泵运行时间/60;
\\本站点\设备名称="beng1";
SQLInsert( DeviceID, "sbyxsj", "jlt" );
4:在画面添加ado控件,连接对应数据库中表格,运行后在ado控件中查看历史记录如下图所示:。