基于mcgs组态的水电站转桨式水轮机数据监测模块开发_第1页
基于mcgs组态的水电站转桨式水轮机数据监测模块开发_第2页
基于mcgs组态的水电站转桨式水轮机数据监测模块开发_第3页
全文预览已结束

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于mcgs组态的水电站转桨式水轮机数据监测模块开发

目前,液压机监控系统的工作负荷调整通常由微型调速器完成。导叶运动、输送器运动、主缸叶片旋转等数据只能显示在当前ccu控制单元的调解语句中,而不能显示在主缸中。在转桨式水轮机组中,当现地控制单元LCU和上位机距离较远时,这些参数很有必要在上位机上显示,以便监测转桨式水轮机接力器、导叶和水轮机转桨角度的配合情况。笔者探讨了基于MCGS组态软件的水电站转桨式水轮机数据监测模块的实现方法。水电站转桨式水轮机数据监测模块是水电站计算机监控系统的一个特殊模块,该模块可以采用MCGS组态软件进行开发。MCGS是一套功能丰富、简单易用的组态软件,它具有以下特点:①安全保密,扩充构件编译成二进制代码,非法用户不能通过反编译扩充构件获得设备驱动构件、运算构件和窗口界面;②简单快速,MCGS组态软件高级开发包提供了常用的数据后处理构件源代码,初级用户可以直接使用这些构件源代码,而高级用户则可以修改这些构件源代码,以满足特殊要求;③任务明确,MCGS扩充构件具有清晰的结构,可以编写定制的扩充构件,而存在功能不清、任务不明的问题。1数据采集模块的设计与实现该监测软件主要由数据采集、实时数据显示和数据处理3大子模块组成。数据采集子模块是该模块开发的核心,它通过对硬件的管理与操作来实现数据采集,在现场试验中,可以通过采集子模块实现对所需参数的采集;实时数据显示模块以图形的形式显示采集数据,可以直观地看出采集到数据的趋势;数据处理模块由数据浏览和数据分析两部分组成,其中数据浏览主要是对采集后存盘的数据进行浏览,并以报表的形式进行打印输出,数据分析主要对存盘的数据进行计算,得出所需的各种曲线。2核心技术2.1方便开发mcgs的扩充构件MCGS组态软件的高级开发基于微软公司的OLE标准,利用了最新的ActiveX技术,该技术能够方便地使用各种先进的开发工具来开发扩充构件,如:VB、VC++等编程软件可以方便地开发MCGS组态软件的扩充构件。MCGS准备了丰富的VB样例程序和功能强大的高级开发向导,可以方便地生成各种扩充构件的框架结构,快速进入编程界面。在MCGS组态软件高级开发工具包中,还提供一个源代码级调试程序,因此MCGS强烈建议使用VB来开发MCGS的扩充构件。但由于MCGS组态软件是基于OLE技术标准的,因此也可以使用VC++、Delphi等软件制作扩充构件。2.2基于vb的mcgs设备已实现及其设备驱动MCGS提供了一套规范的设备驱动程序接口,允许用户根据自己的需要定制设备驱动程序。MCGS设备驱动程序称为设备驱动构件,其通过规范的OLE接口挂接到MCGS中,使其构成一个整体。由于设备驱动构件和MCGS运行在同一个进程内,因此设备构件的运行速度快、可靠性高,不存在传统的DDE连接设备驱动时数据流通不畅等问题。同时,OLE是一个可扩充的开放标准,可以实现不同软件之间的相互操作,而不管软件采用何种编程语言。因此,只要遵守MCGS的接口规范,就可以使用VB、Delphi等语言编制MCGS设备驱动程序。鉴于VB的通用性和简单性,笔者以VB来开发MCGS设备驱动程序。MCGS把实际外部设备分为独立设备、父设备和子设备3类,独立设备是可以独立完成特定数据输入输出功能的设备,用于模拟量输入输出、数字量输入输出的PC接口卡等;父设备是本身不直接处理数据输入输出,但管理其他设备工作的设备,如串行口设备、IDCN—893的通信卡等;子设备是本身具有处理数据输入输出功能,但只有和对应的父设备一起才构成完整工作系统的设备,如PLC设备、带智能通信功能的仪器仪表等。不同类型的设备工作方式不同,其对应的设备驱动程序处理方法也不同。2.3mcgs概述编写通信子设备驱动程序时,主要是对串行端口进行操作。MCGS根据驱动程序的特点,充分运用32位操作系统多任务、多线程的优势,把复杂的对串行端口的设置、初始化和读写操作全部封装在MCGS提供的串行通信父设备中,在通信子设备驱动程序中只需调用父设备提供的标准串口读写函数,即可完成各种功能通信子设备驱动程序的开发编程。在MCGS中,每个设备构件都是独立运行的,当设备构件等待下位机的返回信息时,它会把自己“挂”起来,处于不占用CPU资源的睡眠状态,不用担心在等待过程中影响系统其他部分的运行。串行通信父设备提供的读写串行端口函数的使用方法如下。(1)aslusesnum参数语法形式为FunctionComOutDat(ByValOutNumAsLong,OutByte()AsByte)AsLong。返回值=0为成功,<0或>0为失败。参数OutNum,长整型,要从串行口输出的字节数;参数OutByte,字节数组,要从串行口输出的信息。(2)读取相关数据语法形式:FunctionComInDat(InByte()AsByte,ByValInputFlagAsLong,ByValInputNumAsLong,ByValInputCharAsLong,ByValDelayTimeAsLong)AsLong。返回值>0,从端口实际读回数据的字节数;返回值≤0,没有数据或通信出错。参数InputByte,字节数组,从串行口读取的信息;参数InputFlag,长整型,从串口读取信息的方式;参数InputNum,长整型,要读回信息的字节数;参数InputChar,长整型,要读回信息最后一个字符的ASCII码;参数DelayTime,长整型,读等待延时时间,单位ms。该函数的工作特性和InputFlag的值密切相关,InputFlag=0,等待返回信息,直到接收到ASCII值等于InputChar的字符为止;InputFlag=1,等待返回信息,直到接收到的信息的长度等于InputNum为止;InputFlag=2,发送完信息后,等待DelayTime设置的时间,然后从串行口读取数据返回;InputFlag=3,等待返回信息,直到接收到ASCII值等于InputChar的字符或接收到信息的长度等于InputNum为止。2.4设备驱动构件的编制编制通用设备驱动构件的具体方法,看起来比较复杂和难懂,但在实际应用中,如果设备的功能和作用已经确定,而且也只是完成具体的工程,那么设备驱动构件的编制要简单得多。以研华亚当模块ADAM5511为例,说明如何编制特定功能的设备驱动构件。(1)功能要求能随时读入8个模拟量输入通道的状态以及和设置4个模拟量输出通道的输出状态。(2)来标识模块设计利用MCGS高级开发向导,生成一个通信子设备驱动构件的源程序框架。假定工程名为My5511,类型为MY5511。定义一个属性DevNumber,用来标识模块的地址号,在接口CollectDevDat中编制程序代码,参照研华亚当模块的通信协议,在程序模块DevBas中编制程序,通过调用串口父设备的ComOutDat和ComInDat两个函数实现从ADAM模块读取数据。通过调用串口父设备的ComOutDat和ComInDat两个函数实现向ADAM模块输出数据。编译后得到DLL文件My5511.dll,把该文件拷贝到MCGS的program/drivers目录下,即可完成该设备构件的编程工作。3上位机软件设计该模块在现场试验时,先通过采集模块来实现对所需参数的采集,模块图形显示的采集数据,见图1。该模块形成的组件若取名为My5511.d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论