组态王曲线数据采集
组态王曲线数据采集
1定义变量
选中工程浏览器左侧数据库\数据词典,在右侧双击新建定义以下变量:
变量名变量描述变量类型
a 曲线数据源内存整数
采集间隔采集曲线数据的时间间隔内存实数
采集次数1 辅助变量内存整数
采集次数曲线数据采集个数内存整数
计数标志辅助变量内存离散
数据1—数据30 存放采集的曲线数据(30个)内存实数
2新建模板和记录体
2.4 新建模板
1.选中工程浏览器左侧SQL访问管理器\表格模板。
在右侧双击“新建”,建立模板。
2.输入模板名:muban2
字段名称:数据1
变量类型:浮点型
3.点击增加字段,即将字段“数据1”加入到模板中。
以同样的变量类型依次将字段
“数据2”到“数据30”加入到模板中最后点击“确认”。
如图1:
图 1
2.5 新建记录体
1.选中工程浏览器左侧SQL访问管理器\记录体。
在右侧双击“新建”,建立记录体。
输入记录体名:jiluti3
字段名称:数据1
2.点击图2中“?”按钮关联变量“数据1”,点击增加字段即将数据1加入到“jiluti3”
中。
依次将“数据2”到“数据30”增加到“jiluti3”中最后点击“确认”。
图 2
3命令语言
3.4 应用程序命令语言
在工程浏览器左侧命令语言\应用程序命令语言\启动时增加如下语句:
SQLCreateTable( DeviceID, "quxian", "muban2" );
3.5 数据改变命令语言
在工程浏览器左侧命令语言\数据改变命令语言\启动时输入如图3语句,通过点击图中“?”按钮选择关联变量“采集次数”。
即当变量“采集次数”值改变时执行命令语言。
图 3
3.6 事件命令语言
1.选中工程浏览器左侧命令语言\事件命令语言新建命令语言在存在时输入如图4语
句:
图 4
a)事件描述:(\\本站点\采集间隔= =0.5)&&(\\本站点\计数标志= =1)
b)注意图4中语句执行频率是500毫秒
语句一直要写到:if(\\本站点\采集次数1= =30)
\\本站点\数据30=\\本站点\a;
2.在命令语言\事件命令语言\存在时输入语句:
SQLInsert( DeviceID, "quxian", "jiluti3" );
3.如图5创建另一个事件命令语言,“存在时”和“消失时”语句内容同第1步。
图 5
区别在于:
a)事件描述:(\\本站点\采集间隔= =1)&&(\\本站点\计数标志= =1)
b)注意图5中语句执行频率是1000毫秒
4新建画面
4.1 创建实时趋势曲线控件
1.图6选择工具箱\插入通用控件在弹出的插入控件窗口中选择CkvrealTimeCurves
Control点击确定。
对话框自动消失,鼠标箭头变为小“十”字型。
图 6
2.左键拖动显示出一个虚线的矩形框,该矩形框为创建后的曲线的外框。
如图7:
图7
4.2 添加数据值输出文本
图8选择工具箱\文本放于适当位置输入文本名:数据1,双击文本勾选模拟值输出关联变量“数据1”进行如下设置:
整数位数:2
小数位数:1显示格式:十进制
图8
依次点击确定完成文本“数据1”的设置。
如法添加“数据2”到“数据30”。
4.3 添加采集间隔、采集个数文本
1.点击工具箱\文本添加文本:“间隔”,双击文本弹出动画连接对话框勾选模拟值输
入、模拟值输出均关联变量“采集间隔”,输出格式如图8。
2.同样方法添加文本“次数”输出小数位数为1位关联变量“采集次数”。
3.在文本“间隔”及“次数”左边分别添加文本“采集间隔”与“采集次数”便于在
运行系统中区分。
4.4 添加滑动杆输入文本
1.添加文本“a”,双击文本“a”弹出如图9对话框:
图9
2.勾选动画连接中的滑动杆输入\水平,弹出水平滑动杆输入连接对话框如图10:
图10
3.按图10设置文本“a”的水平滑动杆输入连接属性。
4.5 开始采集按钮
1.点击工具箱\圆角矩形,拖动鼠标添加矩形框。
在矩形框的动画连接中分别输入如
下语句:
a)按下时:\\本站点\采集次数1=0;
\\本站点\数据1=0;
\\本站点\数据2=0;
…
\\本站点\数据29=0;
\\本站点\数据30=0;
b)弹起时:\\本站点\计数标志=1;
2.勾选矩形动画连接的“填充属性”弹出如图11所示对话框:
图11
3.将表达式关联到变量“计数标志”,选中“刷属性”点击“修改”使值“0”对应红
色,值“1”对应蓝色。
依次点击“确定”退出设置。
4.在矩形框上叠加放置文本“开始采集”。
4.6 插入记录按钮
点击工具箱\按钮,在画面中添加按钮“插入记录”。
在弹起时动画连接中输入如下语句:SQLInsert( DeviceID, "quxian", "jiluti3" );
4.7 查询采集的数据
1.操作步骤参考“组态王与数据库连接(错误!未找到引用源。
错误!未找到引用源。
)”,
注意此时
控件名改为:grid2
表格名为:quxian
相应的在“查询记录”按钮弹起时语句改为:
grid2.FetchData();
grid2.FetchEnd();
“清除记录”按钮弹起时语句改为:
SQLClearTable( DeviceID, "quxian");
2.由于数据库表格“quxian”有30个字段,如图12须取消勾选“自动调整列宽”,
否则在运行系统中字段会挤在一起。
图12
4.8 画面切换
为了便于在运行系统中切换画面,须在进行如下操作。
1.在画面“数据库操作”画面右下角添加按钮设置如下
按钮字符串:切换到趋势曲线
弹起时命令语句:ShowPicture("实时趋势曲线");
2.在画面“实时趋势曲线”画面右下角添加按钮设置如下
按钮字符串:切换到数据库操作
弹起时命令语句:ShowPicture("数据库操作");
4.9 运行效果
设置完毕保存全部画面,进入运行系统作如下操作。
采集间隔:0.5;采集次数:10
点击图红色圆圈内开始按钮再点击开始采集按钮,采集按钮由红变蓝开始采集数据。
鼠标左键拖动文本“a”,当“开始采集”按钮变回红色采集自动结束。
点击“查询记录”按钮可查看采集的数据。
效果如图13
图13 5.。
组态王曲线数据采集
组态王曲线数据采集1定义变量选中工程浏览器左侧数据库\数据词典,在右侧双击新建定义以下变量:2新建模板和记录体2.4新建模板1.选中工程浏览器左侧SQL访问管理器\表格模板。
在右侧双击“新建”,建立模板。
2.输入模板名:muban2字段名称:数据1变量类型:浮点型3.点击增加字段,即将字段“数据1”加入到模板中。
以同样的变量类型依次将字段“数据2”到“数据30”加入到模板中最后点击“确认”。
如图1:图12.5新建记录体1.选中工程浏览器左侧SQL访问管理器\记录体。
在右侧双击“新建”,建立记录体。
输入记录体名:jiluti3字段名称:数据12.点击图2中“?”按钮关联变量“数据1”,点击增加字段即将数据1加入到“jiluti3”中。
依次将“数据2”到“数据30”增加到“jiluti3”中最后点击“确认”。
图23命令语言3.4应用程序命令语言在工程浏览器左侧命令语言\应用程序命令语言\启动时增加如下语句:SQLCreateTable( DeviceID, "quxian", "muban2" );3.5数据改变命令语言在工程浏览器左侧命令语言\数据改变命令语言\启动时输入如图3语句,通过点击图中“?”按钮选择关联变量“采集次数”。
即当变量“采集次数”值改变时执行命令语言。
图33.6事件命令语言1.选中工程浏览器左侧命令语言\事件命令语言新建命令语言在存在时输入如图4语句:图4a)事件描述:(\\本站点\采集间隔= =0.5)&&(\\本站点\计数标志= =1)b)注意图4中语句执行频率是500毫秒语句一直要写到:if(\\本站点\采集次数1= =30)\\本站点\数据30=\\本站点\a;2.在命令语言\事件命令语言\存在时输入语句:SQLInsert( DeviceID, "quxian", "jiluti3" );3.如图5创建另一个事件命令语言,“存在时”和“消失时”语句内容同第1步。
如何使用组态软件进行数据采集与分析
如何使用组态软件进行数据采集与分析组态软件是一种用于实时数据监视、数据采集和分析的工具。
它能够帮助用户收集并整合来自不同设备和系统的数据,并通过可视化和数据分析功能,帮助用户获取对数据的洞察,并支持决策制定。
本文将介绍如何使用组态软件进行数据采集与分析的基本步骤和技巧。
一、数据采集1. 确定数据源:在使用组态软件进行数据采集之前,首先需要确定数据源。
数据源可能是传感器、仪表、PLC(可编程逻辑控制器)或其他数据采集设备。
2. 连接数据源:根据数据源的不同,选择合适的连接方式。
常用的连接方式包括模拟输入、数字输入、串口通信、以太网通信等。
3. 配置数据采集参数:在组态软件中,根据具体的数据源和连接方式,配置相应的数据采集参数。
参数包括采样间隔、数据格式、通信协议等。
4. 运行数据采集任务:配置完数据采集参数后,运行数据采集任务。
组态软件将会按照设定的参数从数据源中采集数据,并将其存储在本地或远程数据库中。
二、数据分析1. 数据可视化:通过组态软件提供的图表、仪表盘和报表功能,将采集到的数据进行可视化展示。
可以根据需要选择合适的图表类型,如折线图、柱状图、饼图等。
2. 数据处理:对采集到的数据进行处理,如计算平均值、最大值、最小值等。
组态软件通常提供了函数库和算术运算等功能,可以方便地进行数据处理。
3. 数据分析:基于可视化和数据处理的结果,进行数据分析。
可以进行趋势分析、周期性分析、关联分析等,以发现数据中存在的规律和趋势。
4. 报警和通知:通过设置报警条件,当数据达到或超过设定的阈值时,组态软件可以发出警报并发送通知。
这样可以及时发现并处理异常情况。
三、数据存储与共享1. 数据存储:组态软件通常支持将采集到的数据存储在本地数据库或云端数据库中。
可以选择合适的存储方式,以满足数据的安全性和查询需求。
2. 数据共享:根据需要,将存储在数据库中的数据与其他系统进行集成,实现数据的共享和交互。
可以通过API接口、数据库连接等方式实现数据共享。
基于组态王的数据采集与监视控制系统的设计
基于组态王的数据采集与监视控制系统的设计摘要:工业控制系统已经广泛应用于国家能源领域和民生领域,随着信息技术和网络技术的发展以及“工业4.0”的发展,工业控制系统网络安全事件不断发生,其安全问题已经影响着生产安全、工业稳定以及国家的战略安全。
作为工业控制系统监控水平的上位机专用软件,监控设定软件( SupervisoryControl And Data Acquisition,SCADA )用于数据采集和过程控制,其可靠性和稳定性对工程控制系统的安全极为重要本文介绍的监控配置软件用于国产基于可信计算的加密机制的PLC (增加加密模块的硬件,分配专用的公钥和私钥,支持冗余),跨平台、分布式C/S架构具备双机并网热备冗余机制,在国产计算机和Linux操作系统上运行,支持Windows操作系统,实现开发和运行环境的双重国产化,安全可控。
关键词:组态王;数据采集与监视;控制系统;设计引言组态王软件是一种通用的工业监控软件,集过程控制设计、现场操作和工厂资源管理为一体,将一个企业内各种生产系统、应用和信息交换集中在一起,实现优化管理。
生态王软件适应性强,在企业各级、工作控制环节可用于不同位置,大大提高了生产效率;利用组态王软件可以快速灵活地建立实时监控系统,及时分析现场大量数据,在降低原料成本的基础上实现生产过程的优化。
在教学中,利用组态王软件可以引导学生观察完整的生产制造控制过程,从而极大地调动学生的积极性和创造性。
1监控结构及功能设计目前市场上常用的配置软件有MCGS、组态王、WinCC等,其中WinCC可以集中多种自动化设备和控制软件,具有控制灵活、功能齐全等优点,可扩展性最高。
mgs是国内配置软件中较可靠的产品,具有现场数据采集、历史实时曲线输出、报告输出及视频显示等特点。
组态王经过9年的开发优化,具备实用、简单、可靠的优点。
目前,它已成为国内组态软件用户使用最多的软件,特别是在航空航天领域应用广泛。
关于组态王数据库绘制曲线的方式
关于组态王历史曲线的绘制在作项目中,常常遇到需要查看工程的历史数据图和历史曲线。
在使用组态王的过程中遇到了以下问题。
问题;工程要求要能查找历史数据和查看历史曲线。
组态王内置历史曲线可以绘制,但数据不能第三方访问。
且历史数据记录不能停止。
要绘制历史曲线,首先要有历史数据,组态王本身有历史数据库。
也可使用第三方数据库。
组态王自己的历史数据库不开放(只可用函数语句表另存为),第三方不能访问。
第三方数据库是微软的access数据库或者是SQL sever 数据库等。
在测试access数据时发现。
组态王保存的历史数据在绘制历史曲线调用时,有个日期时间格式的数据需要选取。
但在数据库里边没有符合这个格式的选项。
经查看发现组态王合成的日期时间格式在access里是字符串(文本)格式,不符合datetime格式。
于是手动更改为datetime格式,组态王可以调用历史数据绘制曲线了。
但数据又不能插入了。
测试失败。
方法1.在SQL several数据库中同时插入两个一摸一样的表格,表格1插入数据,表二在表1插入时同时插入数据并转换数据格式,然后在历史曲线控件里调用。
在表格1调用触发器,然后再插入数据到表格2,同时更改日期时间字符串为datetime格式,直接在组态王历史控件里调用即可。
create trigger myinsertaon MODEfor insertasdeclare @a char(15),@b int,@c char(8),@d char(10),@e char(24),@f int,@g int,@h int,@i int,@j int,@k int,@l int,@m char(10);select @a=工件号编码,@b=序号,@c=时间,@d=日期,@e=DATATIME,@f=毫秒,@g=轨顶温度,@h=轨顶温度,@i=轨低温度,@j=轨低温度,@k=喷风温度,@l=喷风压力,@m=用户FROM INSERTEDINSERT INTO MODE1 values(@a,@b,@c,@d,@e,@f,@g,@h,@i,@j,@k,@l,@m);上面第一个触发器定义中间变量和数据长度和格式,定义的格式应当和组态王模板设定的长度和数据类型一致。
组态王连接Accesss大数据库与历史曲线显示
我是依据组态王帮助文件里面的案例,不过我写的会更详细!以某工业现场应用为例,需要对原料进行称量,并记录原料的生产厂家、原料编号、称量日期、称量时间,值班人员、原料重量。
针对这种关系数据,使用组态王的历史库是无法记录的,因此我们使用关系数据库Access 进行记录。
下面就以此为例来演示完成这一现场需求的设置步骤。
操作步骤:1、新建数据库以及表:1.1)在Access 中新建一个空数据库,例如建立路径为:D:\数据库存储例程\数据.mdb。
1.2)在数据库D:\数据库存储例程\数据.mdb 中创建一个数据表:表的名称为:原料数据。
字段为:称量日期、称量时间、原料重量、原料厂家、原料编号、值班人员、datetime(这个变量是我自己需要历史曲线用的)。
如下图所示:(下面的值是我测试的)其中原料重量字段类型为“数字”设置为“单精度”,datetime设置为日期/时间默认值改为now()。
其余为“文本”类型。
(这里默认的视图是数据表视图,要切换到设计视图,如图所示:)在这下面设置字段大小为单精度型,小数位数为2(这个按自己需求设置位数)。
2、设置ODBC 数据源:2.1) 在“控制面板”-----“管理工具”----“ODBC 数据源”中建立ODBC 数据源,点击“ODBC数据源”弹出“ODBC 数据源管理器”,如下图所示:(这里注意的是如果系统是64位系统的话,则打开C:\Windows\SysWOW64\odbcad32.exe)2.2) 在“用户DSN”中点击“添加”,弹出“选择数据源驱动程序”窗口,如下图所示:选择“Microsoft Access Driver (*.mdb)”驱动,点击“完成”。
弹出如图所示窗口,填写ODBC数据源的名称,根据需要对数据源进行命名,如“数据”,点击“选择(S)”,如图所示,选择我们前面定义的数据库文件“D:\数据库存储例程\数据.mdb”。
点击“确定”完成ODBC 数据源的定义,如图所示。
利用组态王网络功能实现计算机数据采集
下面 以锅炉水位 系统 ( 如 图2 所示 ) 的入 口管路流量 和高低 限 水位采集为例 , 阐述运用组态王 ( K i n g v i e w 6 . 5 5 版本 ) 开发服务器 和 客户机数据采集软件的过程。 3 . 1 服务器软件设计 1 ) 在服务器计算机上 , 启动组态 王管理器 , 建立 名称为 “ 锅炉 水位系统数据采集” 的工程 。
系统 。 2 采 集 系 统硬 件 设计
图2 锅 炉 水 位 系统 结 构 图
表1 P C I 一 1 7 1 1 板 卡端 口与仪表信 号连接表
P C I 一 1 7 1 l 是一款采用 1 2 位A / D 转换器 、采样速率可达 1 0 0 K H z 的多功能P c I 总线数据采集卡 , 其提供 了1 6 路单端模拟量输入和 1 6 路 数字量 输入 , 可 以采集 电压 、 电流 等模拟量 信号 以及各 种开 关 量信号 。为此 , 本 系统采用各种传感器检测相应工业现场参数 , 并 转化 为4 — 2 0 m A 标准 电流信号后 ,通过P C I 一 1 7 1 1 板 卡将4 — 2 0 mA 信 号转 换成数字量 , 并经串 口送入计算机 服务器 。借 助具有 网络 功 能 的组态 王软件 ,在服务器上 编写程序 实现 现场数 据采 集和存 储, 在客户机程序 中定 义网络设备实现对 服务器数据 的访 问与 显 3 . 2 客户机软件设计 示 。计算机数据采集系统构成如图1 所示 。 1 ) 在客户机 上 , 启动组 态王管理器 , 建立名称 为“ 锅 炉水位系 统数据采集 ” 的工程 。
信 息科 学
民营科技2 0 1 7 年第2 期
利用组态王 网络功能实现计算机数据采集
基于组态王的数据采集通信与控制系统设计
基于组态王的数据采集通信与控制系统设计石建国;杨磊;李臣龙【摘要】通过DDE技术实现组态王与Matlab、VB应用程序之间数据交换,VB将PLC外部设备状态信息进行采集处理,通过DDE技术将所采集信息在组态王中以可视化界面显示输出,完成对外部设备监控.同时,通过MATLAB对组态王进行控制算法设计.实践证明该方案实现的监控系统更加有效,实时性更强.【期刊名称】《菏泽学院学报》【年(卷),期】2018(040)005【总页数】6页(P11-16)【关键词】组态王;数据通信;Matlab;VB;控制【作者】石建国;杨磊;李臣龙【作者单位】安徽工程大学计算机与信息学院 ,安徽芜湖 241000;安徽工程大学计算机与信息学院 ,安徽芜湖 241000;安徽工程大学计算机与信息学院 ,安徽芜湖241000【正文语种】中文【中图分类】TP273引言组态王在工业控制领域应用非常广泛,它可从现场设备采集状态信息,并在监控终端进行显示和输出报警,具有可支持众多硬件接口和交互界面友好等优点.其局限性在于进行数据采集和控制的设备驱动程序主要针对大公司生产的板卡,对中小公司开发的板卡及仪表设备并未提供设备驱动[1].为此,组态王通过支持DDE的动态数据交换技术,解决了与其它支持DDE的应用设备进行数据通信的难题.组态王虽然能够动态显示并控制设备运行状态,生成友好监控画面,但它对于实现复杂控制并无任何优势可言[2,10,15].因此,在很多工程应用中需要通过VB、MATLAB等第三方软件对组态王的数据进行分析处理.MATLAB运算效率高,通过算法编程可实现复杂场景下设备的控制[3];VB作为程序后台通过串行接口将PLC 等外部设备状态信息进行采集处理,支持与组态王之间进行数据交换.利用MATLAB、VB和组态王都支持DDE技术这一特点,把三者结合起来,从而更好地实现对外部设备状态信息采集和有效监控,与单一基于组态王的设备实时监控相比具有控制灵活有效、实时性强等优点.1 DDE通信原理及网络结构1.1 DDE通信原理DDE(Dynamic Data Exchange)可以实现支持DDE的多个应用程序相互交换数据[4].DDE完成客户和服务器应用程序之间的通信连接[5],DDE支持双向通信,应用程序既可作为客户端又可作服务器,但在某一特定通信过程中只能扮演客户或服务器一种角色[6].DDE通信设定有三个标识名,项目Item表征某一数据对象[1,11];Application 是DDE对话双方的命名;主题Topic为某特定数据域,组态王中Topic默认为“tagname”,在VB中由某一窗体的Linktopic来设定.项目Item在组态王定义I/O变量时进行设置,在VB中则通过Linkitem设置.1.2 组态王支持的几种通讯方式组态王支持与常见的PLC、智能仪表、智能模块和数据采集板卡通过常规通信接口进行通信,常见的通信方式有串口通信、DDE通信等[7],如图1所示.图1 组态王支持的几种通信方式组态王与I/O设备通信一般是通过调用动态库实现的,动态库对应于具体设备.在设备管理界面中列有与组态王通信的各I/O设备名,表示某具体设备的逻辑名,逻辑名又与设备驱动程序相对应,以此映射至某具体设备[7],组态王各逻辑设备与具体设备间的对应关系如图2所示.图2 组态王与各设备之间的对应关系1.3 组态王与应用程序通信的网络结构组态王在与应用程序进行通信时,采用组态王、Matlab和VB都支持的DDE技术,VB通过串行接口与PLC连接,通信网络结构如图3所示,过程如下:1)VB应用程序通过串行通信接口RS485采集PLC设备的状态信息,VB端通过可视化编程实现VB与PLC串口通信,完成对PLC状态数据的采集.2)通过DDE技术实现组态王与VB通信程序数据交换,组态王通过发送指令给VB 客户端,VB将采集到的状态信息发送给组态王服务器.3)MATLAB作为客户应用程序,可以使用MATLAB中的DDE客户端模块所提供的函数与组态王服务器进行数据通信.图3 组态王与应用程序通信网络结构2 组态王与VB之间的DDE通信设计2.1 DDE通信时组态王的设定在组态王数据词典里建立一个I/O变量,并登记服务器程序的三个标志名.本系统中应用程序名为VBDDE,话题名为FormTopic,项目名为Text1ToKing,程序交换方式为标准 Windows DDE交换.组态王参数设置见表1至表4.表1 组态王DDE设备定义连接对象名服务程序名话题名数据交换方式VBDDEvbddeFormTopic标准windows DDE交换表2 组态王变量定义变量名变量类型连接设备项目名转换方式VBToKing1I/O实数VBDDEText1ToKing线性表3 组态王设备安装定义设备设备逻辑名设备地址通讯方式转换方式亚控仿真PLCPLC1COM线性表4 组态王I/O变量定义变量名变量类型连接设备寄存器数据类型转换方式读写属性KingToVBI/O整型PLCSTATIC100INT线性读写(允许DDE访问)2.2 DDE通信时VB的设定VB中的DDE通信通过设置控件的属性和方法来完成,这些控件包括文本框、标签或图片框[11].VB作为客户端在交换数据时,需对上述控件的LinkItem、LinkTopic、LinkMode属性[6]进行设置:Control.LinkTopic=服务器程序名.主题名Control.LinkItem=项目名Control.LinkMode有四种链接模式:“0”为终止DDE链接;“1”为启动热链接,表示服务器端数据有变化时立即传送数据给客户端来处理;“2”冷链接,表示由客户提出请求,服务器做出响应;“3”表示通告链接[4,14],表示当服务器端状态变化时告知客户端来索要数据.本文中Control表示文本框Text1,LinkTopic设置为FormTopic,LinkItem设置为PLC1.STATIC100,LinkMode 设置为1.VB参数设置见表5.表5 VB参数设置文本框Text1TextToView窗体Form1LinkTopicLinkItemLinkModeFormTopicPLC1.STATIC1001(source)编制Visual Basic程序[12]:进入VB编辑环境,在“Form1.frm”窗口内键入建立与组态王变量的连接程序,初始化算法伪代码如下:Procedure Form_LOAD()beginControl.LinkTopic ← TopicName;Control.LinkItem ← Item Name;Control.LinkMode ← LinkMode;End运行VB可视化编程工具.打开窗口Form1,在“Form1.frm”窗口中键入算法程序,实现组态王与VB间数据交换.2.3 连接数据库SQLConnect(KingToVB,"dsn=数据;uid=;pwd=");//建立与数据库的连接SQLDisconnect(KingToVB); // 断开与数据库的连接KingToVB是数据词典中创建的整型变量,用来保存SQLConnect()为数据库连接分配的一个数值.3 组态王与MATLAB的通信及仿真实例3.1 组态王与MATLAB的通信设计由于组态王在构造算法和计算功能上的局限性,无法完成复杂计算和实现高实时性过程控制,而MATLAB可以很方便构造出复杂控制系统模型,并能在控制算法运行过程中,对模型参数加以修改和优化,输出修改后的仿真结果,对实际生产过程中的各种设备状态及参数变化有很强的实时跟踪和控制效果.基于此,通过DDE技术将组态王与MATLAB相结合,实现两者之间的优势互补,以实现更复杂和实时性更强的控制效果.3.2 组态王前台控制系统实例为验证组态王与MATLAB通过DDE通信对控制系统的控制效果,在组态王服务器端开发了化工工艺流程控制系统,系统状态运行界面如图4所示.前台界面可以通过自动和手动两种方式监控该控制系统中碱液罐、聚合罐、反应罐和成品罐的液位以及聚合罐温度,液位控制可通过各装置输入调节阀的开启和关闭进行调节,水箱液位单回路控制原理如图5所示.图4 组态王监控系统状态运行界面图5 水箱液位单回路控制原理图3.2.1 组态王设备连接在组态王软件中设置碱液罐、聚合罐、反应罐和成品罐对应模块地址分别为1、2、3、4,通信方式RS485,通信波特率9 600 bit/s,无校验,数据位8,停止位1,通信超时3 000 ms.3.2.2 组态王数据变量定义设备的运行状态要以动画形式反映在屏幕上,操作者发布的指令要迅速传达给现场设备,这些都要以动态库中的实时数据为中介.因此,定义了组态软件可访问的寄存器变量见表6:表6 组态王寄存器变量定义变量名变量类型地址设置读写属性连接设备项目名转换方式备注JhgWDToMat1I/O实型001读写(允许DDE访问)DDE设备PLC.STATIC001线性4通道JhgWDToMat2I/O实型002读写(允许DDE访问)DDE设备PLC.STATIC002线性4通道JygToMatlabI/O实型003读写(允许DDE访问)DDE设备PLC.STATIC003线性8通道JhgToMatlabI/O实型004读写(允许DDE访问)DDE设备PLC.STATIC004线性8通道FygToMatlabI/O实型005读写(允许DDE访问)DDE设备PLC.STATIC005线性8通道CpgToMatlabI/O实型006读写(允许DDE访问)DDE设备PLC.STATIC006线性8通道以聚合罐温度控制为例,创建一个单回路PID控制回路,定义变量并创建画面连接,组态王实时数据输出如图6所示,其控制结果如图7所示.可看出组态王的运算速度和控制能力仍未能实时控制聚合罐温度达到一稳定状态.图6 组态王实时数据输出图7 组态王控制曲线图3.3 MATLAB为控制核心的DDE通信设计由于组态王和MATLAB之间在通信过程中为双向实时数据传递,所以采用热链方式.MATLAB提供了6个有关DDE的客户函数[9],分别是DDEinit()、DDEadv()、DDEreq()、DDEpoke()、DDEunadv()和DDEterm().函数作用见表7.表7 DDE链接函数的作用DDE函数名表达式作用ddeinitChannel=ddeinit(service,topic)建立对话,成功返回1通道号,之后操作以此通道号进行ddeadvRC=ddeadv(channel,item,callback,timeout)建立链接ddereqRC=ddereq(channel,item,format,timeout)从服务器请求索取数据ddepokeRC=ddepoke(channel,item,data,format,timeout)从MATLAB向DDE服务器应用程序发送数据ddeunadvRC=ddeunadv(channel,item,format,timeout)释放链接ddetermRC=ddeterm(channel)终止对话3.3.1 代码设计在MATLAB中编写初调用函数call.m,伪代码如下:function control(x)Step1. chan1=ddeinit('VIEW','TAGNAME');Step2. pv=ddereq(matctrl,'PLC.STATIC001');Step3. fb=ddereq(matctrl,'PLC.STATIC002');Step5. result=0+fb*(350-0)/1000;Step6. RC=ddepoke(matctrl,'PLC.STATIC002',result);Step7. RC=ddeterm(matctrl);在Step5中,输入的I/O数据在进入组态软件前需进行工程量转换,因为组态王显示数值只有“0~100”,聚合罐温度原始数值区间设为“0~1000”,温度变化控制区间设为“0~350”,MATLAB计算结果也应在“0~100”数值区间.为了转换成0~100的格式,采用如下线性转换公式:工程量最小值工程量用result表示,一般情况下,最小值默认情况下取为0,“原始输入-原始最小值”用fb表示,则得到第六步公式.通过以上的配置,实验结果如图8所示.图8 MATLAB控制实时曲线图3.3.2 结果分析从图8可以看出,MATLAB作为控制核心,响应速度更快,超调量相对小,但系统温度控制仍不稳定,因此,我们将比例系数k由0.1调小到0.03,如图9所示,可以看到MATLAB计算速度快,运行曲线表明输出未超出设定温度阈值,每100 ms采集一次数据,就会不停的把计算结果输出,图9中曲线上升至最高温值点比图8耗用的时间稍长,这是因为比例系数调低后调节次数增加了,耗用了部分系统时间.另外,图8的曲线相对较粗糙,这是因为系统运行过程中存在搅动干扰和噪声,图9的曲线相对平滑,说明通过参数调整,利用MATLAB强大的计算和控制能力,可以实时有效消除部分干扰和噪声,而且系统处于稳态时对温度的控制更加精确.从图9可以看出其控制效果较好.图9 比例系数为0.03的控制效果4 结束语本文介绍了利用动态数据交换DDE技术实现VB、MATLAB和组态王之间通信的方法,利用MATLAB强大的控制功能和仿真优化功能,可使控制算法应用于模拟控制系统中.经验证在控制系统中取得了良好的控制效果.【相关文献】[1]马龙博,郑建英.基于组态王和VB的智能仪表实时监控系统[J].自动化仪表,2008(08):32-34+40.[2]冯江涛.组态王与MATLAB的DDE通信设计[J].电力学报,2006(03):291-293.[3]冯江涛.基于OPC的组态软件和MATLAB的通信实现[J].微计算机信息,2008(01):295-296+283.[4]陈燕虹,沈帅,刘宏伟,等.多辆电动汽车远程监控系统[J].吉林大学学报(工学版),2013,43(02):285-290.[5]敬伟,王鹏,兀伟.基于组态王的实时监控系统的数据处理[J].计算机工程与科学,2009,31(08):128-129.[6]史丽红,贾存良.动态数据交换在矿井监测监控系统中的应用[J].采矿技术,2005(02):41-42.[7]熊伟.工控组态软件及应用[M].北京:中国电力出版社,2012:12-14.[9]胡大斌,胡锦晖,吴峰.基于组态王与MATLAB的监控软件实现[J].武汉理工大学学报,2005,29(2):234-237.[10]邹益民.基于OPC的MATLAB与组态王实时通讯在过程控制实验装置中应用[J].自动化与仪器仪表,2014(10):87-89.[11]宋晶,沈兴全,赵润鸿,等.基于组态王的PC机与单片机串口通信技术研究[J].化工自动化及仪表,2011,38(05):551-553.[12]刘宇君.Visual Basic程序设计例题解析与实践[M].北京:高等教育出版社,2013.[14]董新利,王景景.在控制系统中实现组态王与MATLAB的DDE通讯[J].微计算机信息,2005(12):3-5.[15]Wang D.Automatic Control Mechanism for Grinding Process Based on KingView and PLC System[C]//International Conference on Mechatronics,Control and Electronic Engineering.2014.。
组态王曲线数据采集
组态王曲线数据采集1定义变量选中工程浏览器左侧数据库\数据词典,在右侧双击新建定义以下变量:2新建模板和记录体2.4新建模板1.选中工程浏览器左侧SQL访问管理器\表格模板。
在右侧双击“新建”,建立模板。
2.输入模板名:muban2字段名称:数据1变量类型:浮点型3.点击增加字段,即将字段“数据1”加入到模板中。
以同样的变量类型依次将字段“数据2”到“数据30”加入到模板中最后点击“确认”。
如图1:图12.5新建记录体1.选中工程浏览器左侧SQL访问管理器\记录体。
在右侧双击“新建”,建立记录体。
输入记录体名:jiluti3字段名称:数据12.点击图2中“?”按钮关联变量“数据1”,点击增加字段即将数据1加入到“jiluti3”中。
依次将“数据2”到“数据30”增加到“jiluti3”中最后点击“确认”。
图23命令语言3.4应用程序命令语言在工程浏览器左侧命令语言\应用程序命令语言\启动时增加如下语句:SQLCreateTable( DeviceID, "quxian", "muban2" );3.5数据改变命令语言在工程浏览器左侧命令语言\数据改变命令语言\启动时输入如图3语句,通过点击图中“?”按钮选择关联变量“采集次数”。
即当变量“采集次数”值改变时执行命令语言。
图33.6事件命令语言1.选中工程浏览器左侧命令语言\事件命令语言新建命令语言在存在时输入如图4语句:图4a)事件描述:(\\本站点\采集间隔= =0.5)&&(\\本站点\计数标志= =1)b)注意图4中语句执行频率是500毫秒语句一直要写到:if(\\本站点\采集次数1= =30)\\本站点\数据30=\\本站点\a;2.在命令语言\事件命令语言\存在时输入语句:SQLInsert( DeviceID, "quxian", "jiluti3" );3.如图5创建另一个事件命令语言,“存在时”和“消失时”语句内容同第1步。
组态王曲线数据采集
组态王曲线数据采集1定义变量变量名变量描述变量类型a 曲线数据源存整数采集间隔采集曲线数据的时间间隔存实数采集次数1 辅助变量存整数采集次数曲线数据采集个数存整数计数标志辅助变量存离散数据1—数据30 存放采集的曲线数据(30个)存实数2新建模板和记录体2.4新建模板1.选中工程浏览器左侧SQL访问管理器\表格模板。
在右侧双击“新建”,建立模板。
2.输入模板名:muban2字段名称:数据1变量类型:浮点型3.点击增加字段,即将字段“数据1”加入到模板中。
以同样的变量类型依次将字段“数据2”到“数据30”加入到模板中最后点击“确认”。
如图 1:图 12.5新建记录体1.选中工程浏览器左侧SQL访问管理器\记录体。
在右侧双击“新建”,建立记录体。
输入记录体名:jiluti3字段名称:数据12.点击图 2中“?”按钮关联变量“数据1”,点击增加字段即将数据1加入到“jiluti3”中。
依次将“数据2”到“数据30”增加到“jiluti3”中最后点击“确认”。
图 23命令语言3.4应用程序命令语言在工程浏览器左侧命令语言\应用程序命令语言\启动时增加如下语句:SQLCreateTable( DeviceID, "quxian", "muban2" );3.5数据改变命令语言在工程浏览器左侧命令语言\数据改变命令语言\启动时输入如图 3语句,通过点击图中“?”按钮选择关联变量“采集次数”。
即当变量“采集次数”值改变时执行命令语言。
图 33.6事件命令语言1.选中工程浏览器左侧命令语言\事件命令语言新建命令语言在存在时输入如图 4语句:图 4a)事件描述:(\\本站点\采集间隔= =0.5)&&(\\本站点\计数标志= =1)b)注意图 4中语句执行频率是500毫秒语句一直要写到:if(\\本站点\采集次数1= =30)\\本站点\数据30=\\本站点\a;2.在命令语言\事件命令语言\存在时输入语句:SQLInsert( DeviceID, "quxian", "jiluti3" );3.如图 5创建另一个事件命令语言,“存在时”和“消失时”语句容同第1步。
数据采集及绘制曲线
数据采集及绘制曲线
现在正在学习使用西门子模拟量(em2314ai)模块采集模拟量(位移,变送器0—10v),编写程序时采用的定时中断采集,100ms采集一次。
用组态王进行组态监控,绘制实时曲线时,最快只能500ms采集到一次数据,并绘制一个点。
用组态软件是不是大致上都只能事这个采集频率?用触摸屏会不会好点?或者只能用想labview那样的专业数据采集卡及其软件来实现100ms采集一次?
最佳答案
wincc的采集频率更高一些,应该能到100ms
触摸屏到不到100ms.
实时趋势的意义不是现在想的这样。
100ms记录一个数据,如果从工艺的角度上看,只是每分钟需要一个数据。
那在绘制实时趋势的时候,非要选择100ms就不是很有意义。
.。
