您现在的位置:智能制造网>技术中心>COM组件技术在世纪星驱动开发中的应用

直播推荐

更多>

企业动态

更多>

推荐展会

更多>

COM组件技术在世纪星驱动开发中的应用

2009年11月27日 13:45:27人气:885来源:北京世纪长秋科技有限公司

[摘 要]与设备通信的驱动程序是世纪星组态软件的重要组成部分,本文主要讲述COM组件技术在开发世纪星驱动程序时的应用。

1 引言

在工控软件中,数据的采集和下发直接影响系统的性能,因此对于如何构架一个合理的软件系统在工控界一直被广泛关注。在组态软件中,一般可分为两部分:HMI人机接口和数据采集模块。其中HMI是用户和现场设备进行通信的接口,HMI要做到直观易用以便于用户对生产情况的了解和操作,而HMI要以数据采集模块作为支撑,可见数据采集模块在工控软件中的重要性。为了适应各种不同的设备,世纪星的驱动程序采用了组件技术,使数据采集模块具有高性能、高可靠性、灵活、便于升级等重要特性。

2 COM组件技术

COM--Component Object Model,即组件对象模型,它是微软提出的一套开发软件的方法与规范。组件实际上是一些小的二进制可执行程序,它们可以给应用程序,操作系统,以及其他组件提供服务,能够跨越链接库、应用程序、系统软件甚至网络软件,多个COM对象甚至可以联接起来形成应用程序或组件系统。组件式程序设计方法能像搭积木一样开发大而复杂的软件系统,并且可以利用以往开发的组件资源而不必进行二次开发。COM(组件对象模型是一个与操作平台 无关的、分布的、面向对象的机制,其本质特性是COM对象的接口与实现的分离。基于COM的组件开发具有以下几点优势:

*,从用户的角度考虑,用户一般希望能够定制所用的应用程序,而组件技术从本质上讲就是可被定制的,因而用户可以用更能满足他们需要的某个组件来替换原来的那个。
     
第二,由于组件是相对应用程序独立的部件,我们可以在不同的程序中使用同一个组件而不会产生任何问题,软件的可重用性将大大的得到增强。
     
第三,随着网络应用的普及,分布式网络应用程序在软件市场上变得越来越重要。组件价构可以使得开发这类应用程序的过程得以简化。

第四,组件式开发便于软件系统的升级,当某部分功能需要升级时,开发人员只需修改相应组件即可,而用户只需替换原来的组件,这就使得软件升级只是替换一些组件而已。

第五,组件式开发便于软件开发的分工协作,每个组件各自完成所需功能,只需在进行开发前协商好接口即可。

3 世纪星数据采集模块

  数据采集模块是世纪星软件系统的后台服务程序,负责从现场设备采集数据并将数据提供给HMI,而HMI产生的控制信号又通过数据采集模块传输给设备,这样就达到了用户与设备的相互对话。其信息流如图1所示:

 

1

在数据采集模块中,基本上由两部分组成,一部分是和设备相对应的驱动程序,该程序既是一个COM组件,另有一个控制程序DataComm负责调用驱动程序以及和其他模块通信。在上位机和下位机或其他一些板卡进行通信时大致有以下几种方式:串口,TCP/IP,计算机PCI卡,数据采集模块通过一个统一的接口访问不同的设备,设备驱动文件只需完成该接口功能即可,这样在与新设备通信时DataComm不必修改,只要开发出与该设备通信的驱动组件就能完成上位机与设备之间的通信,DataComm与驱动程序之间的关系如图2所示:

 

2

4 设备驱动的接口设计与实现

每个COM组件都至少有一个IUnknown接口或继承IUnknown的子接口,IUnknown接口负责查询该组件的其他接口和维护引用计数,引用计数与组件对象持久性相关,本文不详细阐述。前面说访问设备使用统一的接口,那么该接口应该具有所有操作设备通用的功能,如初始化和关闭设备,读写数据等。在C++中使用抽象基类作为接口,其部分定义如下:

class IDeviceAccess : public IUnknown 

{

public:

virtual  HRESULT __stdcall QueryInterface(REFIID iid, void** ppvObj) = 0;

virtual  ULONG   __stdcall AddRef() = 0;

virtual  ULONG   __stdcall Release() = 0;

public:

virtual  BOOL  __stdcall UnInitialDevice( LPDEVADDR pDevAddr )=0;

virtual  BOOL  __stdcall InitialDevice( LPDEVINIDATA pInitDat )=0;

virtual  BOOL  __stdcall ReadData(…… )=0;

virtual  BOOL  __stdcall WriteData( …… )=0;

……   ……

};

该接口的实现是在COM组件中,因为设备不同,所以实现也有所不同,但同类设备也有一些相同之处,比如智能仪表大多都是通过串口进行通信,而对串口的参数设置是这类设备的共同之处,为此我们定义一个类CDevicepublic IdeviceAccess,这个类完成初始化等基本的功能,而读写数据ReadDataWriteData都进行空实现,让所有相关设备以CDevice为基类然后重写ReadDataWriteData即可。世纪星的驱动组件是使用MFC开发的,MFC是通过嵌套类实现COM功能,在世纪星中我们以继承CDevice的类作为嵌套类,这个嵌套类完成一些具体功能,它所在的类我们成为外部类,外部类提供一个全局*的CLSIDDataComm通过CLSID定位组件,然后使用之前定义的接口完成与设备的通信,通过图3描述如下:

                       

3

5 小结

数据采集模块的性能是影响工控软件的一个重要因素,稳定的数据通信服务是工控软件或许更大发展的基本保证。世纪星使用COM技术实现数据通信既方便了开发人员对新设备驱动的开发,又便于用户对驱动的升级,同时增强了世纪星本身的可扩展性。

 

全年征稿/资讯合作 联系邮箱:1271141964@qq.com

免责声明

  • 凡本网注明"来源:智能制造网"的所有作品,版权均属于智能制造网,转载请必须注明智能制造网,https://www.gkzhan.com。违反者本网将追究相关法律责任。
  • 企业发布的公司新闻、技术文章、资料下载等内容,如涉及侵权、违规遭投诉的,一律由发布企业自行承担责任,本网有权删除内容并追溯责任。
  • 本网转载并注明自其它来源的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品来源,并自负版权等法律责任。
  • 如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

<
更多 >

工控网机器人仪器仪表物联网3D打印工业软件金属加工机械包装机械印刷机械农业机械食品加工设备制药设备仓储物流环保设备造纸机械工程机械纺织机械化工设备电子加工设备水泥设备海洋水利装备矿冶设备新能源设备服装机械印染机械制鞋机械玻璃机械陶瓷设备橡塑设备船舶设备电子元器件电气设备


我要投稿
  • 投稿请发送邮件至:(邮件标题请备注“投稿”)1271141964.qq.com
  • 联系电话0571-89719789
工业4.0时代智能制造领域“互联网+”服务平台
智能制造网APP

功能丰富 实时交流

智能制造网小程序

订阅获取更多服务

微信公众号

关注我们

抖音

智能制造网

抖音号:gkzhan

打开抖音 搜索页扫一扫

视频号

智能制造网

公众号:智能制造网

打开微信扫码关注视频号

快手

智能制造网

快手ID:gkzhan2006

打开快手 扫一扫关注
意见反馈
关闭
企业未开通此功能
详询客服 : 0571-87858618