小型工业监控软件的实时数据库设计与实现_第1页
小型工业监控软件的实时数据库设计与实现_第2页
小型工业监控软件的实时数据库设计与实现_第3页
小型工业监控软件的实时数据库设计与实现_第4页
小型工业监控软件的实时数据库设计与实现_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、198计算机应用研究2006年小型工业监控软件的实时数据库设计与实现郝晓弘,李应启,刘树博(兰州理工大学电气与信息工程学院,甘肃兰州730050)3摘要:提出了一种面向小型工业监控软件的实时数据库解决方案。在VisualC+6.0编程环境下,采用ADO技术与多线程技术解决数据实时存储与处理的问题,并以法国施耐德公司的Modbus现场总线设备对试验平台进行试验运行,其性能稳定、运行可靠。关键词:实时数据库;监控软件;ADO;多线程中图法分类号:TP311113文献标识码:A文章编号:100123695(2006)0920198203DesignandRealizationofReal2timem

2、IndustrialMonitorHAO22bo(CollegeofElectricniversityofTechnology,LanzhouGansu730050,China)Abstract:Pronm2systemindustrialmonitoringandcontrolsoftware.UndertheVisualC+6.0environment,weADOtechniqueandmulti2threadstechniquetosolvetheproblemofdataprocessingandstoring,meanwhilewecancarryouttrialoperationw

3、iththeModbusfield2busequipmentoftheSchneiderCo.asthetrialoperatingplatform,systemsperformanceissteadyandoperationisreliable.Keywords:Real2timeDatabase;MonitoringandControlSoftware;ADO;Multi2Threads目前,随着计算机技术、通信技术及现场总线技术的快速发展,企业为了提高生产效率和降低生产成本,增强企业的安全运行系数,广泛地使用了计算机技术、现场总线技术对工业生产进行改造和优化。在一些不太复杂且相对较小的工

4、业系统中,采用大型工业组态软件与大型的实时数据库系统,将导致工程成本大幅提高。面对这一问题,我们提出一种面向小型工业监控软件的实时数据库解决方案。随着Windows系统的普遍使用,很多计算机控制系统的上位机大多使用的是Win2dows操作系统,采用Windows编程。VisualC+是Microsoft优点,可以用来构造可复用应用框架,支持多语言,能够访问关系数据库、非关系数据库及所有的文件系统。另外还具有远程数据服务(RemoteDataService,RDS)的特性。ADO的对象模型简化了对对象的操作,大大简化了程序编制,增加了程序的可移植性。多数情况下,我们只需要关心所要创建和使用的对象

5、,而无须了解其父对象。在ADO中可以直接打开一个记录对象,而无须建立与数据源的连接。ADO技术的特点如下:易于使用。由于ADO是高层应用,具有面向对象的特性,不必先建立连接,只需直接构造即可。高速访问数据源。ADO技术基于OLEDB,所以它也继承了OLEDB访问数据库的高速性。可以访问不同的数据源。ADO技术可以访问关系数据库和非关系数据库的所有文件系统。可以用于MicrosoftActiveX页。ADO技术可以以Ac2tiveX控件的形式出现,也可以用于MicrosoftActiveX页,简化公司推出的面向对象的软件开发工具,其功能强大,集成的MFC类库、ATL模板类以及AppWizard、

6、ClassWizard等一系列的Wizard工具,可以很快地建立应用程序,大大简化了应用程序的设计过程。VisualC+还提供了多种数据库访问技术,如ODBCAPI,MFCODBC,DAO,OLEDB,ADO等。1设计方案111所涉及的技术简介了Web页的编程。程序占用内存少。由于ADO技术是基于组件对象模型(COM)的访问技术,所以ADO产生的应用程序占用内存少。(2)多线程技术在这一方案中我们所采用的技术主要有Microsoft公司开发的数据库应用程序的新接口ADO(ActiveDataObject)技术;另外还采用了VisualC+6.0的多线程编程技术,用来解决数据库的多事务调度与并发

7、处理问题。(1)ADO技术简介ADO技术是建立在OLEDB之上的高层数据库访问技术。多任务管理是操作系统的精华。所谓多任务就是有多个工作同时运行。但CPU只有一个,因此就采用分时多任务的方式。每个任务只运行一小段时间,通过操作系统的调度机制来决定下一个CPU的使用权应该交给哪一个任务。目前所说的多任务大都是指多线程(Multi2Threads)的方式。多数支持多线程的操作系统一般均支持五种线程状态,即睡眠状态(Dormant)、准备运行状态(Ready)、运行状态(Running)、等待状态(Waiting)和延时状态(Delayed)。图1描述了这些状态之它基于COM(ComponentOb

8、jectModel),具有COM组件的诸多收稿日期:2005207221;修返日期:2005209201基金项目:甘肃省省长基金资助项目(GS0242A252011)第9期间互相切换的情形。郝晓弘等:小型工业监控软件的实时数据库设计与实现库(因为ADO库是一个COMDLL库)。199Windows2000操作系统支持两种类型的多任务,即基于进程(Process)的多任务和基于线程(Thread)的多任务。我们所采用的是基于线程的多任务,每个线程均有自己的堆栈和CPU寄存器,其执行由系统根据优先级来调度执行。基于线程的多任务允许同一个程序的两个或多个部分同时执行,这样增加了程序的维数,提高了程序

9、的执行效率。另外采用线程同步技术,防止了两个或多个任务同时操作数据而引起的错误。112方案BOOLCAdotestDlg:OnInitDialog():CoInitialize(NULL);/初始化OLE/COM库环境程序最后要调用:CoUninitialize();/释放程序占用的COM资源另外:m_pRecordset2>Close();m_pConnection2>Close();m_pRecordset=NULL;m_pConnection=NULL;用于释放所占用的ADO对象资源。212创建数据库操作线程首先在VisualC+MFC中创立基于WinThread数据库操作线

10、程CProcessDataThread;然后调用线程创建函数Create2Thread来创建数据库线程;ExitThread,MicrosoftMS,若是执行我们所采用的试验平台为法国施耐德公司的Modbus现场总线设备;下位采用的是Quantum系列的CPU卡,通过以太网模块与上位监控机相连C6.0与SQLServer2000,因此安排一种临界区(Critical,不运行调度程序,以防止因调度机制而造成无法预期的后果。还有线程同步与多个线程之间如何沟通的问题。解决这个问题时,采用信号(Semaphore)或者是事件(Event)的方式,设置全局变量(GlobalVariable)来控制线程之

11、间的同步。213ADO智能指针的设置与操作(1)设置ADO智能指针ADO库包含三个基本接口:_ConnectionPtr接口、_Com2mandPtr接口和_RecordsetPtr接口。在库环境初始化完成后,当下位的PLC,先放入下位的CPU寄存器中,通过Modbus+TCP/IP协议将数据发送至上位监控软件并放入设计的缓存中,上位监控软件与SQLServer数据库相连,采用ADO技术、多线程技术,以及设置定时器,达到对数据的实时存储与处理。其结构如图2所示。需要在头文件中定义智能指针变量:_ConnectionPtrm_pConnection;_RecordsetPtrm_pRecords

12、et;_CommandPtrm_pCommand;(2)智能指针对数据库的操作_ConnectionPtr接口返回一个记录集或一个空指针。通常使用它来创建一个数据连接或执行一条不返回任何结果的2技术实现在VisualC+6.0中实现上面的实时数据库方案,主要有四个方面:初始化ADO库环境;创建数据库操作线程;设置ADO对象智能指针;利用定时器与ADO指针对数据库进行操作。211初始化ADO库环境(1)引入ADO库文件SQL语句,如一个存储过程。使用_ConnectionPtr接口返回一个记录集不是一个好的使用方法,对于要返回记录的操作通常用_RecordsetPtr来实现;用_Connecti

13、onPtr操作时需要得到记录条数遍历所有记录,而用_RecordsetPtr时不需要。_CommandPtr接口返回一个记录集。它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。在使用_CommandPtr接口时,你可以利用全局_ConnectionPtr接口,也可以在_CommandPtr接口里直接使用连接串。如果你只执行一次或几次数据访问操作,那么后者是比较好的选择。但如果你要频繁访问数据库,并要返回很多记录集,那么你应该使用全局_ConnectionPtr接口创建一个数据连接,然后使用_Com2mandPtr接口执行存储过程和SQL语句。_RecordsetPtr是一个记录集

14、对象。与以上两种对象相比,使用ADO技术前必须在工程的Stdafx.h文件最后用直接引入符号#import引入ADO库文件,使编译器能正确编译。其代码如下:#import"C:ProgramFilescommonfilessystemadomsado15.dll"No_namespacerename("EOF","adoEOF")它对记录集提供了更多的控制功能,如记录锁定、游标控制等。与_CommandPtr接口一样,它不一定要使用一个已经创建的数据连接,还可以用一个连接串代替连接指针赋给_RecordsetPtr的Connectio

15、n成员变量,让它自己创建数据连接。如果要使用多个记录集,最好的方法是与Command对象一样使用已经创ADO类的定义作为一种资源存储在ADODLL(Msado15.dll)中,在其内部称为类型库。(2)生成应用程序框架并初始化OLE/COM库环境在使用ADO技术的InitInstance函数中初始化OLE/COM200计算机应用研究显示界面如图3所示。2006年建了数据连接的全局_ConnectionPtr接口,然后使用_Record2setPtr执行存储过程和SQL语句。214设置定时器以达到实时处理数据为了实现数据的实时存储功能,我们需要在程序中设置定时器,设置数据采样频率,实时地存储数据

16、。为了实现这一功能,我们需要调用WindowsAPI(应用程序接口)函数中的定时器函数。CWnd:SetTimer()设置一个或多个定时器用于指定时间间隔触发。其具体步骤是:先调用SetTimer(),参数值使用一个计时器ID和一个超时值,然后将WM_TIMER消息映射到应用程序类的一个OnTimer()函数中。不再使用定时器后,调用KillTimer()来取消定时。在该实时数据库方案中这一部分是核心部分,部分代码如下:(1)设置定时器SetTimer(2,2000,NULL);/设定数据采样时间为2s(根据实际要求设定)(2)编写OnTimer函数voidCMasterDlg:OnTimer

17、(UINTnIDEvent)this2>UpdateData(false);CStringY0;Y0.Format("关");3小结。在面向小型系统的基础上,求,如进一步提,达到可扩展与可移植;,实现动态曲线、报警显示等功能。参考文献:1刘怀,胡继峰.实时系统的多任务调度J.计算机工程,2002,28(3):43244.2王日宏.基于VC的Win32多线程同步问题J.计算机系统应用,2004,(7):60262.3SangHSon.Real2timeDatabaseSystems:PresentandFutureC.ProceedingsofIEEEReal2time

18、ComputingSystemsandApplications,the2ndInternationalWorkshop,1995.50252.4LarsB kgaard,JensChristianGodskesen.Real2timeEventControlinActiveDatabasesJ.TheJournalofSystemsandSoftware,1998,42(3):2632271.if(nIDEvent=2)m_pRecordset2>AddNew();GetLocalTime(&tm);Time.Format("%d/%d%d:%d:%d",tm

19、.wMonth,tm.wDay,tm.wHour,tm.wMinute,tm.wSecond);m_pRecordset2>PutCollect("Time",_variant_t(Time);if(Coil11=1)Y0.Format("开");m_pRecordset2>PutCollect("Y0",_variant_t(Y0);else作者简介:郝晓弘(19602),男,甘肃平凉人,中国人工智能学会理事,中国人工智能学会理事分布式智能专业委员会委员,教授,博导,主要研究方向为复杂系统的控制、智能控制理论与应用、计算

20、机网络与计算机控制技术、现场总线与现场控制网络;李应启(19802),男,陕西西安人,硕士研究生,主要研究方向为电力电子与电力传动、现场总线与现场控制网络;刘树博(19822),男,吉林通化人,硕士研究生,主要研究方向为电力电子与电力传动等。m_pRecordset2>Update();CDialog:OnTimer(nIDEvent);(上接第197页)和工具。参考文献:1HongZhu.CooperativeAgentApproachtoQualityAssuranceandTestingWebSoftwareC.Proc.ofthe28thAnnualInternationalComputerSoftwareandApplicationsConference,2004.1102113.2CrowderR,WillsG,HallW.HypermediaInformationManagement:ANewParadigmC.Proceedingsofthe3rdInternationalConferenceonManagementInnovationinManufacture,1998.3292334.3DavidKung.AnAgent2basedFrameworkforTestingWebA

温馨提示

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

最新文档

评论

0/150

提交评论