是一个严峻的工程挑战,本文主要介绍在该DSP的C/C++集成开发环境CCS(Code Composer Studio)下,如何基于面向对象技术,开发电梯变频器实时多任务软件系统,该软件系统开发的核心理念是软件层次化和基于虚拟设备的
用层次化意见研究电梯变频器的功能需求,电梯变频器软件系统采用四层递阶层次结构,即某一层只能被其上层调用,而每一层中的大模块组是平行的,同一层模块之间无耦合关系,以此来实现软件功能的并行扩展。设计软件模块的基本准则是模块间尽大概无耦合关系。
电梯变频器软件是实时多任务软件,本设计直接对于DSP的硬件中断机制,采用有优先级别的中断任务机制实实际时多任务调度与办理。这种方法的好处是能精确确定每个任务的执行时间,这对任务实时性一定精确到微秒级的电机控制系统软件是绝对必要的。
由于TMS320F2811的外设编程十分复杂,并且保持软件对硬件平台的兼容性在软件的整个生命周期至关重要,因此DSP硬件外设管理层面设计的第一个任务是实现分割软件模块的硬件相关性,使上层软件模块独立于硬件。
通过面向对象编程技术,把DSP的每种外设用相应的软件结构体定义,同一类对象仅定义一种结构体,然后经过对象实例指向具体的外设。比如:DSP中有多个定时器,定义定时器结构体structCPUTIMER_REGS描述定时器的控制寄存器,该结构体如下所示:structCPUTIMER_REGS{
定义了结构体后,再定义三个以上结构体的变量,就能分别描述DSP中的三个定时器。
曾经的控制寄存器访问直接操纵寄存器的某个位,这种程序阅读性较差,特别在寄存器数量非常多时很容易出错,且不便于查错。应用访问C语言联合结构体的方法直接操纵外设简单易用。
每一个外设都定义为一个标准对象,上层软件经过访问这些对象的数据成员获取外设信息或操控外设,而实时中断任务经过调用外设对象的方法函数来实现对外设的更新操纵或外设事件响应处理。经过ADC_DRV对象获得ADC外设的转换结果,彻底分割了软件功能模块的硬件相关性,并且实现外设接口办理的标准化,极大的提升软件的可移植性。对象的不一样的方法函数在不一样进程中执行,这是面向对象编程与传统瀑布式结构化编程的显著不一样点。
第一部分:基本运算和信号处理功能库。针对32位的TMS320F281x系列DSP,TI公司提供了基础虚拟浮点运算库和较丰富的数字信号处理库。
第二部分:电机参数辨识和矢量控制模块库,这部分是电机控制的核心算法。开发的关键是控制管理系统信号流程图与软件模块结构图之间的一一对应关系。采用可视化的信号流程图是表现复杂控制策略的基本方法。
由于是采用面向对象的开发方法,可以针对以上控制算法采用软件对象逐一实现具体的控制模块,并经过对象成员变量直接表现控制信号的传递整个过程。
采用面向对象技术使控制算法与软件模块一一对应,有以下几个好处:①控制算法调试方便。②控制算法扩展方便。③极大降低软件开发难度,大幅度减少软件出错概率。
按具体接口方式划分有三种,分别是:数字式操纵器、异步串行通信接口、CAN总线功能扩展。按通信协议实现层次划分,用户接口管理层面大抵分为通信子层和参数传递解析层。通信子层中异步串行通信采用Mod bus协议,这是在PLC、变频器中普遍采用的通信协议,保持了与工业标准的一致性。
参数传递子层用于面向不一样软件应用层的参数传递与修改。在电梯控制整一个完整的过程中,一定能修改软件各层中有关模块的参数,有些时候用户对一个应用参数的修改在软件系统内部大概有关到许多个不一样层模块。为了确认和保证参数修改的一致性,设立多种参数解析传递对象,以包管参数修改的正确性,并滤除各种非法操纵和错误的参数输出。经过调用不一样操纵对象,就能轻松实现特定接口办理功能。
电梯变频器是一个混杂系统,既有连续控制,也有复杂时序逻辑控制,一定有恰当的方法描述这种复杂系统。在电梯运行整一个完整的过程中,有许多差别很大的工作情形,不大概用单一控制策略涵盖所有工况,并且一定有完善的故障控制策略,这增加了软件开发的复杂性。避免由于控制的复杂性使得软件模块间的相互偶合是设备正常运行逻辑管理层面设计的关键,为此引入“虚拟设备”概念。这里的设备是表现混杂对象的工具,而不是工业中的具体设备。
设备运行逻辑管理层面由不一样虚拟设备对象构成,主要有变频器设备、可编程逻辑设备等。虚拟设备逻辑具体定义如下:
描述虚拟设备怎么样从一种模式转化为另一种模式。一个虚拟设备可定义多个模式组,比如变频器设备可定义“运行模式组”、“操控模式组”等。
描述能观(observable)能控(controllable)的虚拟设备状态成立条件,原因是经过判断外部命令、模式、故障、给定值等决定现在的设备状态。