最新新闻
我要投稿
联系电话:027-87592219/20/21转188
投稿邮箱:tb@e-works.net.cn
您所在的位置:首页 > 智库 > 智能生产

基于组件技术的可重构伺服驱动软件设计

发布时间:2014-02-13 作者:王志成 林浒 刘伟军  来源:万方数据
文章针对传统伺服驱动软件开发的通用性、扩展性差的问题,首次引入嵌入式组件技术,对伺服驱动软件进行可重构设计。并通过可重构示例、测试和分析,说明设计的合理性和可行性。文章对伺服驱动产品开发和控制类产品研究具有指导意义。

  1.2 嵌入式组件

  组件是基于组件构建的系统中的最小组成单位,组件的基本体系结构应该包含基本组件结构,组件属性以及组件接口几个部分。

  组件x是一个四元组<P(x),C(x),PF(x),尺F(x)>,其中P(x)是组件x的属性集合,c(x)={C0,C1,.....,Cn}表示组件x包含的子组件集合,PF(x)是服务接口集合,尺F(x)是请求接口集合。基本组件的结构如图2所示。

基本组件模型
图2基本组件模型

  P(x)是组件x的属性集合,是一个四元组<N(x),PM(x),,N(x),OUT(x)>,其中N(x)={N0,N1,...,Nn}是组件x的标识,可能有一个或多个,比如组件名,组件佃,组件描述等。PM(x)是组件x的参数,用来修改组件x的配置。删(x)表示组件x的输入,Dur(x)表示组件x的输出,IN(x)和OUT(x)之间通过数据的共享实现组件之间的数据流连接。

  PF(x)是组件x的服务接口集合,每一个服务接口都是一个二元组<FP(x),Dp(x)>,其中FP(x)={f0,f1,...,fn}表示接口中包含的操作,Dp(x)表示服务接口中包含的数据参数。DPF(x)是组件x的请求接口集合,每一个请求接口都是一个二元组<Fr(x),Dr(x)>,其中Fr(X)={扣,月,...。厂凡}表示接口中包含的操作,Dr(x)表示请求接口中包含的数据参数。

2 可重构伺服驱动软件设计

  2.1 软件体系结构设计

  根据上述的组件模型,采用层次化和模块化的设计思想,对伺服驱动软件的体系结构进行设计。可重构伺服驱动软件体系结构如图3所示。

重构伺服驱动软件体系结构
图3 可重构伺服驱动软件体系结构

  整个软件分为三个层次,驱动层、控制层和应用层,硬件层为外部被控对象(电机)和伺服驱动硬件。驱动层是在硬件层上的第一层软件,实现对硬件层的抽象和封装,并为上层提供服务支持。这样可以使上层编程不用关注硬件的实现细节,同时当硬件发生变化时,只要修改驱动层的程序,而不改变驱动层的服务接口,就不用改变上层软件,从而保证上层软件的稳定性。驱动层主要包括编码器驱动组件模块(QEP)、模数转换组件模块(ADc)、脉宽调制组件模块(PwM)和两个调试接口驱动组件:数模转换组件模块(DAC)和USB组件模块。控制层是实现电机控制算法的核心层,主要包括大量电机控制相关的组件模块(RC、RG、IPARK等),这些组件模块根据现场需要利用参数进行动态连接,从而实现不同控制算法的可重构。控制层的运行要保证实时性。应用层是建构在最上层的非实时性任务,主要用于完成系统的人机交互、通信、参数管理等功能。该层的实现需要底层提供相应的数据支持。

  分层体系结构,可以使各层次之间相对独立,在伺服驱动协同开发过程中,把每一层作为有机整体理解,只需要保持各层之间的接口不变,就无需更多的关注其他层次。一方面使得系统结构清晰,规范了系统的开发方法;另一方面还能实现多层的协同开发,缩短了系统的开发周期。

  2.2 组件设计

  开发过程中,组件的定义形式如下边伪代码段所示(以软件示波器OSCI组件为例):

代码

  2.3 组件规划

  将伺服驱动内的功能进行合理划分,规划出功能相对独立的组件模块。部分控制相关模块的名称和功能如表1所示。

控制组件

本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。