工学现代电力电子技术的广泛应用电力电子装置的控制

上传人:dus****log 文档编号:71181405 上传时间:2022-04-06 格式:DOC 页数:43 大小:186KB
收藏 版权申诉 举报 下载
工学现代电力电子技术的广泛应用电力电子装置的控制_第1页
第1页 / 共43页
工学现代电力电子技术的广泛应用电力电子装置的控制_第2页
第2页 / 共43页
工学现代电力电子技术的广泛应用电力电子装置的控制_第3页
第3页 / 共43页
资源描述:

《工学现代电力电子技术的广泛应用电力电子装置的控制》由会员分享,可在线阅读,更多相关《工学现代电力电子技术的广泛应用电力电子装置的控制(43页珍藏版)》请在装配图网上搜索。

1、摘 要电力电子技术日趋广泛地应用于能源、工业、信息、家电消费品等领域。根据电力电子装置控制器在硬件、软件和开发途径三个方面具有的广泛共性,完全可以研制一种通用的电力电子装置数字控制器开发平台。本文针对电力电子装置控制器的通用性特点和要求,设计并实现了一种通用电力电子装置数字控制平台。该平台采用TI公司的32位浮点DSPTMS320VC33为核心,以满足电力电子装置控制高精度、高实时性的要求;在此硬件平台上移植了嵌入式实时操作系统mC/OS-II,并扩充了电力电子控制所必需的基础模块,使该操作系统适用于电力电子装置控制,并具有很好的可移植性。该控制平台为从事电力电子科研和教学的研究人员提供了通用

2、的软硬件开发平台,具有很大的实际意义。关键词:电力电子,DSP,嵌入式实时操作系统(RTOS),mC/OS-IIABSTRACTThe technology of Power Electronic has been widely applied in the many fields. There is abroad commonness in aspects of hardware, software and development of control system of the power electronic devices. So, it is possible to design a

3、 universal digital development platform for the control system of the power electronic devices.A universal digital development platform for power electronic control system has been implemented. DSP (TMS320VC33), which can meet the requirement of high precision and real time, was used in the platform

4、. An embedded RTOS (mC/OS-II) was transplanted into the plat and some basic function blocks were appended into the RTOS.It is a universal hardware and software development platform for the research personnel of power electronic. And it has highly practice meaning.Liu Jin (Power Electronics and Elect

5、ric Drives)Directed by Prof. Zhang YigongKEY WORDS: Power electronics, DSP, RTOS, mC/OS-II目 录中文摘要英文摘要第一章引 言11.1 现代电力电子技术的广泛应用11.2 电力电子装置的控制21.3 电力电子装置通用控制平台2第二章 硬件平台的设计与调试52.1 控制平台硬件结构52.2 32位浮点DSPTMS320VC3362.3 控制平台功能分配82.3.1 电源管理及看门狗82.3.2 数据采集92.3.3 开关量输入/出102.3.4 串口通信102.3.5 引导加载程序(Bootloader)12

6、2.3.6 系统扩展12第三章 嵌入式实时操作系统mC/OS-II133.1 C/OS文件结构与硬件平台关系133.2 嵌入式系统143.3 嵌入式操作系统15前后台系统15实时多任务操作系统(RTOS)15嵌入式实时操作系统173.4 嵌入式实时操作系统mC/OS-II17第四章 操作系统的移植204.1 C/OS的移植20INCLUDES.H文件20OS_CPU_H.H文件20OS_CPU_A.ASM文件21OS_CPU_C.C文件224.2 C/OS移植代码的测试23第五章 基于C/OS-的嵌入式系统构件255.1 嵌入式系统构件的思想255.2 开关量输入输出模块(DIO)26头文件(

7、DIO.H)27硬件抽象层和硬件驱动层(DIO模块)27应用函数接口285.3 数据采集模块(AI)295.3.1 头文件AI.H295.3.2 硬件抽象层和硬件驱动层(AI模块)295.3.3 应用函数接口305.3.4 采样数据的处理305.4 通信模块(UART)305.4.1 接收数据315.4.2 发送数据315.4.3 串口UART模块325.5 CPLD脉宽调制发生模块(PWM)335.5.1 用CPLD实现的PWM控制器335.5.2 软件模块(PWM)345.5.3 用CPLD实现空间矢量(SVPWM)控制器355.6 控制算法模块385.6.1 平均值滤波模块385.6.2

8、 数字滤波模块38abc_dq变换与dq_abc反变换模块38abc_dq0(派克变换)变换与dq0_abc反变换模块395.6.5PID模块395.7 用户应用程序模块395.7.1 用户主程序基本结构395.7.2 用户任务程序基本结构40第六章 结论与展望41参考文献42致 谢44第一章 引 言电力电子技术以功率处理为对象,以实现高效率用电和高品质用电为目标,通过采用电力半导体器件,并综合自动控制、计算机(微处理器)等技术,实现电能的获取、传输、变换和利用。随着电力电子技术在能源、工业、信息、家电消费品等领域的广泛应用,以及电力电子功率器件、控制技术、微处理器技术的飞速发展,对于电力电子

9、装置的控制提出了更高的要求,其控制器逐步向数字化、模块化、智能化发展。1.1 现代电力电子技术的广泛应用以功率MOSFET和IGBT为代表的、集高频、高电压和大电流于一身的功率半导体复合器件和以微处理器为主的数字控制技术的应用,表明已经进入现代电力电子技术时代。电力电子技术在交流变频调速、供电电源、电力系统输配电、照明、电能质量控制等方面已经获得日益广泛的应用。同时,光伏、风力、燃料电池等新能源发电技术和电动汽车的推广需要电力电子技术的支持,并将形成电力电子产品的巨大市场。在信息产业中,信息电子应用、以及采用现代最新技术的汽车电子和家用电器,将有可能成为现代电力电子技术重要的应用方向。大功率、

10、高频化、低功耗是功率器件发展的重要特征,电力电子器件的工作频率已经提高到了数十千赫兹。电力电子电路功率变换技术与电力电子器件同步发展, 除发明了众多功率变换的电路拓扑,还提出了如吸收、多重化、谐振开关、多电平等概念;在控制技术方面出现了相控、PWM控制、空间矢量控制、以状态空间平均法为代表的动态建模理论、神经网络、模糊控制等技术。它们无论对改造传统工业(如电力、机械、矿冶、汽车、船舶等),还是对高技术产业(航空航天、激光、通信等)的发展和高效利用能源都将起到至关重要的作用。在电力变换和控制中采用可编程数字信号处理技术(DSP)、半导体元器件的集成技术等方面的发展为电力电子控制提供了新的控制方式

11、。随着功率器件高频化、控制技术多样化、实现功能复杂化和微处理器各项功能的飞速发展,电力电子装置的控制器也从以前的模拟型、简单功能型向现代的数字化、复杂功能型转化,并要求具有高精度、高实时性和高可靠性。1.2 电力电子装置的控制早期电力电子装置采用模拟电路进行控制,其主要缺点有:硬件修改困难、设计成本高、抗干扰能力差、存在元件老化问题等。随着微处理器技术的飞速发展,单片机、数字信号处理器(DSP)、可编程器件(CPLD/FPGA)等越来越多地应用到电力电子装置控制中。数字控制具有较高的灵活性(可以通过修改软件来修改控制算法)、能够实现复杂的控制算法、性能稳定、可靠性高、抗干扰能力强等优点,从而逐

12、渐取代了传统的模拟控制技术。目前,电力电子装置控制器的开发方法主要是从硬件到软件的统一集中设计。即首先进行硬件电路的设计、制作和调试,然后再进行控制软件的设计,并且软件设计的成功与否很大程度上取决于设计人员对微处理器的了解程度和使用的熟练程度。许多运行于没有内存管理的CPU之上的程序都是一些比较简单的控制程序,系统大多数工作在超级循环加事件(中断)的方式下。在系统控制的外设和担负的任务不多的时候,这种方式可以满足要求。但是,当有多任务需要处理,要求对外部事件做出实时响应,任务之间存在信息传递,甚至多个微处理器协同工作时,这种传统的程序设计方法就会面临许多问题。另外,程序设计人员要十分了解硬件的

13、特性、结构及其专用的汇编语言,这样就要求在开发之前先去学习硬件知识和汇编语言。这些都阻碍了电力电子应用工程师快速、高效地致力于控制算法软件的研究与设计,并且对于新的项目要进行类似的重复工作。1.3 电力电子装置通用控制平台从主回路拓扑结构上看,许多电力电子装置具有相同或相近的主回路结构,其功能的不同大多依赖于控制器的控制算法。从电力电子装置控制器结构组成上看,基本上是由信号调理电路、A/D转换电路、微处理器(DSP或单片机)核心电路、PWM发生器、D/A转换电路、开关量输入输出、与上位机的通信(串口或USB口)电路、程序数据存储器等部分组成,其结构示意图如图1.1所示。因此,以微处理器为基础的

14、电力电子装置控制器具有广泛的共性,其共性集中表现在硬件、软件和开发途径三个方面。从有利于加快电力电子装置的研制、开发,控制算法的试验、提高效率和缩短开发周期的观点来看,研制一种电力电子装置通用数字控制器开发平台很有必要,对它进行研究必将促进电力电子装置控制算法的研究和电力电子产品的开发。从控制器的硬件结构上考虑,可以设计一个通用的硬件平台以满足大多数电力电子装置的控制要求,应包括图1.1中的几个部分:信号调理电路、A/D转换电路、D/A转换电路、DSP核心电路、开关量输入输出电路、PWM控制波形发生电路、程序数据存储电路以及通信接口电路等部分。图1.1 电力电子装置主回路与控制器结构示意图由于

15、电力电子装置的控制,往往是由多个控制要求(任务)组成,如数据采集、数据的处理、控制算法的实现、控制信号的输出、与上位机的通信以及对于电力电子装置主回路的保护等任务。也就是说,电力电子装置控制系统是一个的多任务的控制系统。所以在控制软件的设计上借鉴了的PC机采用操作系统(如Windows)来对多任务进行管理。这同以前的超级循环加事件(中断)方式有本质的区别。近年来,华北电力大学(北京)电力电子研究所一直在进行电力电子装置控制通用数字化开发平台的研究1。其控制平台由最初的单片机发展到现在的DSP控制器。但由于开发工具的限制,其编程语言一直限于汇编语言。由于不同的处理器有其不同的汇编语言,这样就限制

16、了该开发平台的通用性,延长了控制算法的开发周期。本文借鉴原有的定点DSP(TMS320F240)控制平台的设计思想,引入了嵌入式实时操作系统mC/OS-II,完成了浮点DSP(TMS320VC33)通用控制平台的硬件部分的设计和调试;在该硬件平台上进行了嵌入式实时操作系统mC/OS-II的移植;根据电力电子装置的控制特点和要求,扩充了电力电子控制所必需的基础模块,使其成为适用与电力电子控制的嵌入式实时操作系统;编写了与硬件平台相关的硬件驱动程序,使得操作系统可以方便的通过系统调用来操作硬件;进行了操作系统的测试。该平台提供了与定点DSP控制平台兼容的外部接口,从而可以根据不同的控制要求来选择定

17、点DSP和浮点DSP控制平台。后续开发人员可以不需要深入了解硬件平台,在该嵌入式操作系统平台上用C语言进行二次开发,从而致力于控制算法的研究,大大缩短了控制算法的开发周期。 第二章 硬件平台的设计与调试现代电力电子装置的控制要求具有高精度、高实时性和高可靠性。本文所完成的硬件平台的CPU采用美国TI公司的32位浮点DSPTMS320VC33,工作频率可达到150MHz;A/D转换芯片采用MAXIM公司的MAX125,精度为14位,采样速率最高可达250ksps(单通道),能够进行8路信号的采样(4路同时采样),每路信号的转换时间为3微秒。因此,该硬件平台能够满足大多数的电力电子装置对于精度和实

18、时性的控制要求,从而保证了平台的通用性。2.1 控制平台硬件结构大多数电力电子装置的控制流程为:1. 通过电压和电流互感器得到三相电压和三相电流(需测量电压、电流及其相数是根据控制对象和要求来确定的);2. 测得的电压电流量通过信号调理电路调整为A/D转换芯片所要求的电压范围;3. A/D芯片把来自调理电路的模拟电压电流量转换为数字量;4. 微控制器根据这些数字量进行控制算法的运算,得出需要由电力电子主回路输出的控制波形数据;5. 将控制波形的数据送到PWM发生电路,形成各个开关的PWM控制信号;6. 通过隔离和放大电路将控制信号送到各个开关的驱动电路。7. 驱动电路工作,控制主回路输出需要的

19、波形。因此电力电子装置控制器基本上是由信号调理电路、A/D输入、DSP核心单元、PWM发生器等组成,另外还有一些辅助功能电路,如D/A输出、开关量输入输出、与上位机通信(串口或USB口)、程序和数据存储器等部分组成。本文设计的硬件平台采用TMS320VC33为主控芯片,除实现数据处理和控制算法外,还要进行系统外设的管理(包括A/D、串口通信、开关量输入/出、Bootloader等)。DSP通过控制算法得出的与PWM控制有关的数据送到CPLD(PWM发生器)中,从而产生6路PWM控制信号,送到主回路驱动控制模块,实现对电力电子装置的实时控制。硬件平台的结构框图如图2.1所示。图2.1 硬件平台结

20、构框图2.2 32位浮点DSPTMS320VC33在定点DSP芯片中,采用定点数进行数值运算,其操作数一般采用整型数来表示。一个整型数的最大表示范围取决于DSP芯片所给定的字长。字长越长,所能表示的数的范围越大,精度也越高6。对于定点数而言,数值范围与精度是一对矛盾,一个变量要想能够表示比较大的数值范围,必须以牺牲精度为代价;要想提高精度,数的表示范围就相应地减小。在定点DSP上进行浮点运算时,则需将浮点运算改写为定点算法。其在动态范围和精度要求上存在矛盾,而且将降低DSP的运算速度。由于浮点DSP芯片有支持浮点加法和乘法的硬件结构,从而具有运算精度高、浮点运算快、编程方便和容易支持高级语言等

21、特点。正是基于浮点DSP的这些优点,在控制平台中选用了浮点DSP-TMS320VC33作为硬件平台的CPU。TMS320C3X系列芯片是美国TI公司推出的第一代浮点DSP芯片,具有丰富的指令集、很高的运算速度、较大的寻址空间和较高的性价比,在各领域得到了广泛的应用6。图2.2 TMS320VC33功能结构图TMS320VC33是一种低功耗高性能的浮点DSP。VC33能工作在150MHz的时钟频率下,指令运行速度达到150 MFLOPS。对TMS320VC33进行开发可以使用汇编语言,也可以使用C语言。使用汇编语言的优点在于运行速度快、可以充分利用芯片的硬件特性,但开发速度较慢,程序的可读性差;

22、而C语言的优势在于编程容易、调试快、可读性好,可以大大缩短开发周期。TMS320VC33芯片的组成如图2.2所示7:32位CPU、34K字静态RAM(可满足大多数系统对RAM的要求)、1个DMA通道、1个串口、2个定时器、引导加载程序(BootLoader)、6432位的指令Cache(用来存储经常使用的代码块,这可大大减少片外访问的次数,从而提高程序运行速度);另外还有如下的通用寄存器:8个40bit的寄存器(R0R7),可以用来存放32bit的整数,同时也可以用来存放40bit的扩展精度的浮点数;8个32bit的辅助寄存器(AR0AR7),它们的主要作用是存储地址、参与各种模式的寻址等,也

23、可以作为一般的寄存器来使用;状态寄存器ST(含全局中断使能位)、堆栈寄存器SP、中断标志寄存器IF、中断使能寄存器IE、I/O标志寄存器IOF、数据页指针寄存器DP、索引寄存器IR0、IR1、块寄存器BK、重复执行寄存器RS(块起始地址)、RE(块终止地址)、RC(重复次数)。分开的程序总线、数据总线和DMA总线使得取指、读写数据和DMA操作可并行进行。由于主总线的地址总线是24位,因此TMS320VC33可以访问多达16M的32位字的存储器空间,其中程序、数据和I/O空间都包含在这16M字的空间中。从软件资源上看TMS320VC33有丰富的指令系统、灵活的程序流控制、流水线操作和多种寻址方式

24、。2.3 控制平台功能分配2.3.1 电源管理及看门狗TMS320VC33为双电源供电,接口电源电压为3.3V,内核电源电压为1.8V。采用TI公司的线性稳压器TPS767D318为DSP芯片供电,该芯片专门为DSP的应用设计,具有双电压输出。其输入电压为5V,输出电压为3.3V和1.8V,可以提供高达1A的电流,并有两路电源监视复位功能,提供两个宽度为200ms的低电平复位脉冲,分别对内核和I/O进行复位。图2.3 MAX706T监控电路原理图由于VC33接口电源电压为3.3V,复位信号低电平有效,选用了MAXIM公司的MAX706T芯片(可监测3.3V电压),监控电路如图2.3所示。该电路

25、实现了系统上电自动复位、手动复位、电源低压报警和看门狗软件监视等功能。MAX706T的复位输出(RESET)是低电平有效,直接送往VC33的复位端,复位信号被反相后送往串行通信接口芯片TL16C550C(复位信号高电平有效)的复位端。当3.3V电源电压低于MAX706T的复位门限2.93V(或MR端复位按键按下)时,MAX706T的RESET端输出低电平复位VC33和TL16C550C。当3.3V电源电压高于2.93V时,或MR端复位按键弹起时,MAX706T的RESET端的低电平维持200ms后变为高电平。与电阻、电容和反相器所构成的普通复位电路相比,MAX706T复位功能的实现更为方便,并

26、且复位准确、可靠。看门狗功能电路是将MAX706T的WDI端与VC33的输出引脚XF1相连,WDO端通过二极管D与MR端相连。在VC33正常运行时,VC33每隔一定时间(小于1.6s)改变XF1引脚的状态1次,刷新MAX706T的内部定时器,WDO维持高电平;当VC33运行失控时,VC33无法定期改变XF1引脚状态,这样,MAX706T的内部定时器就会溢出,WDO变为低电平,二极管D导通,造成复位端RESET输出低电平,强行复位VC33和TL16C550C。这样,由系统控制软件通过定时“喂狗”来实现看门狗的功能,防止控制程序跑飞。2.3.2 数据采集数据采集芯片选用了MAXIM公司的MAX12

27、5芯片。MAX125有8个数据采集通道,能同时采集4路信号,每路信号的转换时间为3s,14位分辨率,工作频率从0.1Hz到16MHz,采样频率单通道可以达到250ksps,有高速并行DSP接口。通过编程进行转换通道的选择;在转换结束信号有效后,通过连续读操作可以依次读取每个通道的转换结果。图2.4 MAX125与VC33系统接口电路框图由于MAX125是5V供电,而TMS320VC33的I/O是3.3V供电,在两者的数据线之间用TLVC16245进行电平转换。数据采集部分如图2.4所示。MAX125的使用步骤如下:(1)设定工作方式:MAX125有8种转换工作方式及省电模式。初始上电时,器件工

28、作于缺省方式,即每次只转换A组的通道1。可以通过编程选择每次转换A组或B组中的一个、两个、三个、四个通道。当选定的所有通道转换结束后,INT信号变为低电平表明转换结束。可以使用INT作为中断请求信号或查询方式下的转换结束信号。(2)启动转换:在编程MAX125的工作方式后,提供给CONVST一个低电平脉冲可以启动一次转换过程,MAX125在CONVST信号的上升沿采样模拟信号。(3)读取转换结果:把A/D转换结果(最多可达4个通道)自动存储在MAX125的片内RAM中;在接受到INT信号有效后,为了获取转换结果,可以执行最多4次连续的读操作。当CS为低电平,首先读取的是通道1的转换结果,在第一

29、次RD的上升沿,将INT复位为高电平,在每个RD信号的上升沿,片内地址指针前移一步。如果编程为每次转换一个通道,只需要一次读操作;对于多通道转换方式,可以最多在4个RD信号的下降沿顺序读取通道1至通道4的转换结果。对于n通道的转换过程(1n4),在n个RD脉冲后,地址指针复位至通道1。2.3.3 开关量输入/出开关量输入/出部分由数据、地址总线和74LVC244和74LS273构成。开关量的输入通过74LVC244转换为3.3V电平,送入VC33;开关量通过锁存器74LS273输出,用来控制信号灯和继电器等,以实现调试、指示、保护动作等功能。2.3.4 串口通信图2.5 串口通信结构示意图控制

30、平台与上位机通信采用异步串口通信方式。TMS320VC33只有同步串口,为了实现异步串行通信,使用了TI公司的UART(通用异步串口)芯片TLC16C550C,其总线连接逻辑包括I/O数据总线、地址线、读写信号线等,通过总线可直接与DSP实现连接。TL16C550C硬件逻辑连接如图2.5所示。TL16C550C内部寄存器主要有:接收缓冲寄存器(RBR);发送保持寄存器(THR);中断允许寄存器(IER);FIFO控制寄存器(FCR);中断状态寄存器(ISR);线路控制寄存器(LCR);线路状态寄存器(LSR);MODEM控制寄存器(MCR);MODEM状态寄存器(MSR);临时数据寄存器(SC

31、R);波特率除数锁存器低位(LSB);波特率除数锁存器高位(MSB)。在16C550中,使用3位地址线定义了11个内部寄存器。除之外,LCR.7(DLAB)参与了辅助定义。当LCR.70,且000/001时,定义访问波特率除数锁存器LSB/MSB;当LCR.70,且000时,定义访问接收缓冲/发送保持寄存器RBR/THR。当UART接收数据时,在接收时钟信号RCLK的作用下,将SIN输入端上的数据串行移入接收缓冲寄存器RBR,供DSP读取;当UART发送数据时,在发送时钟信号的作用下,将数据总线上的数据写入到发送寄存器THR,再从SOUT端上串行输出。图2.6 引导加载程序的流程图对16C55

32、0的编程主要包括两部分:初始化和数据收发。初始化编程主要完成对其工作模式的设定及内部寄存器的设置;对于数据的收发,一般采用中断方式。引导加载程序(Bootloader)TMS320VC33可运行于微计算机模式或微处理器模式下。当MCBL/MP引脚为高电平时,VC33将运行于微计算机模式下。在上电后,通过VC33内部自带的引导程序将存储在慢速存储器件里的数据装载到VC33片内的高速RAM中来运行,从而降低了系统的成本,方便了系统设计。VC33提供了四种引导模式,通过硬件和控制逻辑的合理设计进行不同模式的选择。其中三种模式可以选择外部的存储空间进行引导,一种模式可以通过串口进行引导。VC33引导加

33、载程序流程如图2.6所示。本系统的Bootloader采用了TMS320VC33的中断1(INT1)引导方式,系统上电后将根据内部的引导程序,从EEPROM中将程序读入DSP内部的高速RAM中运行。EEPROM选用了SST公司的SST29LE010芯片,3.3V供电,容量为128KX8位,用来存放系统程序。SST29LE010具有以下主要特点:可电擦除、可编程存储;读取时间150ns;分页程序操作,擦除、编程单向循环方式,可超过10000次;1024页分区(128字节/页),内部地址和128位数据锁存;硬件和软件数据保护;快速的分页编程。2.3.6 系统扩展为了以后根据需要对系统进行功能扩展,

34、该平台扩展出了8位地址总线和16位数据总线;提供了与CPLD控制板的扩展接口,包括地址、数据总线,控制逻辑信号、锁相同步信号以及中断信号等,能方便地与CPLD控制板进行通信。第三章 嵌入式实时操作系统mC/OS-II在传统的嵌入式系统软件设计中,多采用单任务循环加事件(中断)机制。此机制的优势在于流程直观,但它常常会带来一个重要问题系统安全性差,即程序运行中任何一个环节出错都会导致系统的混乱,只能靠看门狗进行复位,重新运行,不适合处理多任务的控制系统。实时多任务操作系统(Real Time multi-tasking Operation System, RTOS)是嵌入式应用软件的基础和开发平

35、台。RTOS将应用分解成多个任务,简化了应用系统软件的设计;良好的多任务设计,有助于提高系统的稳定性和可靠性。基于RTOS开发出的程序,绝大部分代码与硬件平台无关,具有较高的可移植性。嵌入式软件的函数化、产品化能够提高软件的可重用性,减少软件的重复开发,提高应用算法的研发效率。针对电力电子装置控制的多任务性、实时性、算法的多样性和复杂性,本文选用了嵌入式实时操作系统mC/OS-II作为应用软件的基础和开发平台,由操作系统来管理电力电子多个控制任务。这样,既满足了电力电子的控制要求,又可以提高控制软件的重用性,减少重复劳动,提高了工作效率。3.1 C/OS文件结构与硬件平台关系嵌入式实时操作系统

36、C/OS的内核文件结构与硬件平台的关系如图3.1所示3。可以看出C/OS内核介于硬件平台和用户应用程序之间,通过与CPU相关的几个模块与硬件平台进行交互,为用户应用程序提供良好的应用程序接口(API)。操作系统把系统软件和硬件部分隔离开来,这样就使得系统的设备操作程序与硬件设备无关,从而大大提高了系统的可移植性。从软硬件测试角度来看,软硬件的测试工作都可分别基于操作系统来完成,使得软硬件的测试工作的并行进行成为可能。根据电力电子控制的特点,将重要的、必不可少的电力电子控制基础程序作为操作系统的扩充部分(包括对A/D数据的读取、数据的简单处理、开关量的输入输出、与上位机的通信等),将操作系统修改

37、为适用于电力电子控制的专用操作系统。这样,开发人员可以在操作系统的基础上方便地进行控制算法开发,减少了编写基础程序工作量,提高了控制算法的开发效率。图3.1 C/OS硬件与软件体系结构图3.2 嵌入式系统嵌入式系统是以应用为中心、以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统,它由硬件和软件组成2。嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及特定的应用程序等4个部分组成,用于实现对其它设备的控制、监视或管理功能。很多简单的嵌入式系统,如大多数单片机系统,是不需要操作系统的。但一些功能复杂的嵌入式系统,如机顶盒,有自己

38、的操作系统。从硬件方面来讲,各式各样的嵌入式处理器是嵌入式系统硬件中最核心的部分,包括:嵌入式微控制器(MicroController Unit, MCU),其典型代表是单片机;嵌入式DSP处理器(Digital Signal Processor, DSP);嵌入式微处理器(MicroProcessor Unit, MPU)和嵌入式片上系统(System On Chip, SOC)。目前,嵌入式系统的软件主要有两大类:实时系统和分时系统。其中实时系统又分为两类:硬实时系统和软实时系统。3.3 嵌入式操作系统3.3.1前后台系统图3.2 前后台系统示意图不复杂的小系统一般设计成如图3.2所示。这

39、种系统可称为前后台系统或超循环系统(Super-Loops)。应用程序是一个无限的循环,循环中调用相应的函数完成相应的操作,这部分可以看成后台行为(background)。中断服务程序处理异步事件,这部分可以看成前台行为(foreground)。后台也可以叫做任务级。前台也叫中断级。时间相关性很强的关键操作(Critical operation)一定是靠中断服务来保证的。因为中断服务提供的信息一直要等到后台程序运行到该处理这个信息这一步时才能得到处理。处理信息的及时性称作任务级响应时间,最坏情况下的任务级响应时间取决于整个循环的执行时间。因为循环的执行时间不是常数,程序经过某一特定部分的准确时

40、间也是不能确定的。所以,如果程序修改了,循环的时序也会受到影响。3.3.2实时多任务操作系统(RTOS)实时多任务操作系统是嵌入式应用软件的基础和开发平台,是相对分时操作系统而言的,我们日常接触的通用操作系统(如Windows、Unix、Linux等)都是分时操作系统。RTOS能及时(或即时)地响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。与分时系统相比,具有多路性、独立性、及时性、交互性、可靠性的特点。实时多任务系统的特点是,如果逻辑和时序出现偏差将会引起严重后果。实时系统分为两种类型:软实时系统和硬实时系统。在软实时系统中,系统的宗旨是使各个任务运

41、行得越快越好,并不限定某一任务必须在给定的时间内完成。在硬实时系统中,各个任务不仅要执行无误而且要做到准时。大多数实时系统是二者的结合。实时系统的应用涵盖广泛的领域,而多数实时系统又是嵌入式的。这意味着计算机嵌在系统内部,用户从系统外部看不到计算机的存在。RTOS的采用使得实时应用程序的设计和扩展变得容易,不需要大的改动就可以增加新的功能。通过将应用程序分割成若干独立的任务,RTOS使得应用程序的设计过程大为减化。使用可剥夺性内核时,所有对时间要求苛刻的事件都得到了尽可能快捷、有效的处理。通过有效的服务,如信号量、邮箱、队列、延时、超时等,RTOS使得资源得到更好的利用。多任务运行的实现实际上

42、是靠CPU(中央处理单元)在许多任务之间转换、调度。CPU只有一个,轮番服务于一系列任务中的某一个。多任务运行很像前后台系统,但后台任务有多个。多任务运行使CPU的利用率得到最大的发挥,并使应用程序模块化。在实时应用中,多任务化的最大特点是,开发人员可以将很复杂的应用程序层次化。RTOS最关键的部分是实时多任务内核。内核负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务之间的通讯。内核提供的基本服务是任务切换。之所以使用实时内核可以大大简化应用系统的设计,是因为实时内核允许将应用分成若干个任务,由实时内核来管理它们。内核本身也增加了应用程序的额外负荷,代码空间增加ROM的用量,内核

43、本身的数据结构增加了RAM的用量。但更主要的是,每个任务要有自己的栈空间,这部分栈空间要求有足够的内存。内核本身对CPU的占用时间一般在2到5个百分点之间。通过提供必不可缺少的系统服务,诸如信号量管理,邮箱、消息队列、延时等,实时内核使得CPU的利用更为有效。RTOS的引入,解决了嵌入式软件开发标准化的问题。引入RTOS相当于引入了一种新的管理模式,对于开发单位和开发人员都是一个提高。基于RTOS开发出的程序具有较高的可移植性4。RTOS中的几个重要的概念是:(1) 系统响应时间:系统发出处理要求到系统给出应答信号的时间。(2) 任务切换时间:任务之间切换而使用的时间。(3) 中断延迟:是计算

44、机收到中断信号到操作系统做出响应,并完成切换转入到中断服务程序的时间。(4) 任务:实时操作系统中的任务(Task)等同于分时操作系统中的进程的概念。系统任务一般有四种状态:运行态、就绪态、挂起态和睡眠态。评价一个实时操作系统一般可以从任务调度、内存管理、任务通信、内存开销、任务切换时间、最大中断禁止时间等几个方面来衡量4。其中最大中断禁止时间和任务切换时间是评价一个RTOS实时性的最重要的两个技术指标。3.3.3嵌入式实时操作系统嵌入式实时操作系统是将嵌入式和实时性相结合的产物。由于其优良的特性,广泛应用于制造工业、通信、航空航天、军事武器装备等领域。它的主要特点有:响应时间快,并且有确定的

45、硬实时性要求;具有异步处理并发事件的能力;具有快速启动、出错处理和自动复位功能。嵌入式实时操作系统的种类繁多,大体上可分为两种:商用型和源码开放型。商用型的主要有美国WindRiver公司的VxWork、pSOS;Microwave公司的OS-9;Lynx Real-time System 的LynxOS和加拿大QNX公司的QNX等。源码开放型的主要有嵌入式Linux(软实时)和mC/OS,mC/OS-II是mC/OS的升级版本。3.4 嵌入式实时操作系统mC/OS-IImC/OS-II是由Labrosse先生编写的嵌入式实时操作系统内核(RTOS)。其主要特点如下3:1源代码开放使系统变得完

46、全透明,很容易将其移植到各个不同的硬件平台上。2可移植性mC/OS-II绝大部分源代码是用ANSI C写的,可移植性较强。而与微处理器硬件相关的部分是用汇编语言写的,已经压到最低限度,使其便于移植。3可裁剪性用户可以在应用程序中选择需要的mC/OS-II的功能,从而减少所需的存储空间。其可裁剪性是通过条件编译实现的。4占先式mC/OS-II完全是占先式的实时内核,它总是运行就绪条件下优先级最高的任务。5多任务mC/OS-II可以管理64个任务,其中8个留给系统,应用程序最多可以有56个任务,赋予每个任务的优先级必须是不同的。6可确定性全部mC/OS-II的函数调用与服务的执行时间具有可确定性,

47、是可知的,系统服务的执行时间不依赖于应用程序任务的多少。7任务栈每个任务自己单独的栈,mC/OS-II允许每个任务有不同的栈空间,以便压低应用程序对RAM的需求。8系统服务mC/OS-II提供很多系统服务,例如邮箱、信息队列、信号量、块大小固定的申请和释放、时间相关函数等。9中断管理中断可以使正在执行的任务暂时挂起,如果优先级更高的任务被该中断唤醒,则高优先级的任务在中断嵌套全部推出后立即执行,中断嵌套层数可达255层。10稳定性与可靠性mC/OS-II是基于mC/OS的,已经有许多成功的商业应用,具有很好的稳定性和可靠性。图3.3 mC/OS-II任务状态转换示意图mC/OS-II控制下的任

48、务状态的转换过程如图3.3所示。一个任务,也称作一个线程,是一个简单的程序。实时应用程序的设计过程,包括如何把问题分割成多个任务,每个任务都是整个应用的某一部分,每个任务被赋予一定的优先级,有它自己的任务堆栈空间。由该实时系统内核实现任务调度。使各个任务在睡眠、就绪、运行、等待、被中断五种状态之间转变,就绪任务中优先级最高者将占有CPU。睡眠态:任务驻留在程序空间(ROM或RAM),还没有交给mC/OS-II来管理,即任务还没有被应用程序建立。就绪态:任务一旦建立,就进入了就绪态,准备运行。任务的建立可以是在多任务运行开始之前,也可以动态地由一个运行着的任务建立。一个任务可以通过调用OSTas

49、kDel()返回到睡眠态,或通过调用该函数让另一个任务进入睡眠态。运行态:已经就绪的优先级最高的任务在启动多任务后,被执行,进入运行态。等待状态:正在运行的任务可以通过调用延时函数,将自身延迟一段时间,进入等待状态。当等待时间过去后,系统会使延迟的任务进入就绪态。中断服务态:响应中断时,正在执行的任务被挂起,中断子程序控制了CPU的使用权,被中断的任务就进入中断服务态。mC/OS-II操作系统内核由与处理器无关的文件(系统函数)、与应用相关的文件(对操作系统进行配置)和与移植相关(与移植的具体CPU有关)的文件组成,其文件组织结构如图3.4所示。mC/OS-II内核结构(与处理器无关的代码)m

50、C/OS-II.H (定义常量、数据结构、全局变量、函数原型)mC/OS-II.C ( 包含文件)内部函数(OS_CORE.C)消息邮箱管理(MBOX.C)任务管理(TASK.C)时间管理(TIME.C)内存管理(MEM.C)消息队列管理(Q.C)信号量管理( SEM.C)(与应用相关的代码)OS_CFG.H (mC/OS-II中初始化配置项,使OS 可裁减)INCLUDES.H ( 添加用户自己的头文件)(与处理器相关的代码,移植相关)OS_CPU.H (声名数据类型、3个宏)OS_CPU_A.ASM (4个汇编语言函数)OS_CPU_C.C(6个简单函数,初始化任务的堆栈)图3.4 mC/

51、OS-II文件组织结构示意图第四章 操作系统的移植4.1 C/OS的移植所谓移植,就是使一个实时内核能够在某个微处理器或微控制器上运行3。要实现C/OS-向TMS320VC33的移植,需要C3x的C编译器支持。本文使用的是TI公司的DSP集成开发环境CCC3xC4x。这个集成开发环境包括的C编译器允许嵌入行汇编,具有强大的优化C编译的功能。 为了便于移植,大部分C/OS-的代码是用C语言编写的;但是由于C/OS-在读/写处理器寄存器时,只能通过汇编语言来实现,因此需要用C语言和汇编语言编写一些与处理器硬件相关的代码。在移植中所需修改的文件和与CPU相关的文件主要有四个:头文件INCLUDES.

52、H、头文件OS_CPU_H.H和汇编文件OS_CPU_A.ASM、 C语言文件OS_CPU_C.C。移植的主要工作就是针对这些文件,结合TMS320VC33的特点做一些变动,编写一些代码。4.1.1 INCLUDES.H文件INCLUDES.H是主要的头文件,在大多数.C文件的开始都包含INCLUDES.H文件,使得每个.C文件无需分别考虑它实际上需要哪些头文件。这样就可能包含一些与当前要编译的.C文件实际不相干的头文件,但采用该方法增强了代码的可移植性。对于不同处理器、不同编译器和不同的库文件,需要修改INCLUDES.H文件,删除不使用的头文件,添加自己的头文件。4.1.2 OS_CPU_

53、H.H文件OS_CPU_H.H包括定义与CPU相关的常数,宏定义以及数据类型。与CPU有关的内容是:(1)用于关/开中断的宏定义:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()。(2) 在C/OS-从低优先级任务切换到高优先级任务时用到的宏:OS_TASK_SW()。它总在任务级代码中被调用。 (3) 设置常量OS_STK_GROWTH来指定堆栈的方向。设为0,表示堆栈从下(低地址)往上(高地址)递增;设为1,表示地址从上(高地址)往下(低地址)递减。4.1.3 OS_CPU_A.ASM文件这个汇编文件中要实现4个函数:多任务启动函数中调用的OSStartHigh

54、Rdy()、任务切换函数OSCtxSw()、中断任务切换函数OSIntCtxSw()、时钟节拍服务函数OSTickISR()。 1. 多任务启动函数中调用的OSStartHighRdy()这个函数只在多任务启动函数中调用一次,主要用来把多任务启动时优先级最高的就绪任务的上下文环境从堆栈中恢复过来。C/OS-II系统启动时至少创建了一个任务空闲任务,实际应用还要创建别的用户任务。OSStart()首先从这些任务中查找出优先级最高的就绪任务,并把它的任务控制块的地址赋给OSTCBHighRdy,然后调用OSStartHighRdy()来运行OSTCBHighRdy指向的那个任务控制块所对应的任务。

55、其流程是:1)先调用用户定义任务OSTaskSwHook();2)将该函数的返回地址压入堆栈。此处涉及的堆栈是C/OS-II操作系统使用的堆栈,而与其他任何任务使用的堆栈没有任何关系,而且这个地址压不压栈意义已经不大,因为不可能再从返回这里返回回去;3)把变量OSRunning赋值为True,标志多任务已经启动;4)从任务初始化过的堆栈中恢复上下文环境;5)执行RETI指令运行这个任务。2. 任务级的任务切换函数:OSCtxSw() 该函数由任务切换函数OS_TASK_SW()进入,与中断程序中调用的OSIntCtxSw()不同。C/OS-II中,如果任务执行了某个函数,其结果改变了当前任务的

56、状态(如OSTaskSuspend()、OSTimeDly()、或者是改变了别的任务的状态(OSTaskResume()、OSTimeDlyResume()都要引起新的任务调度:OSSched();由任务调度函数找出新任务,并将其控制块地址放到OSTCBHigRdy,然后执行函数OS_TASK_SW()。任务切换流程是:1) 硬件进入中断处理:全局中断使能位置0、返回地址压栈;2) 寄存器值(即当前任务的上下文环境)压入当前任务堆栈;3) 修改当前任务控制块指针OSTCBCur和当前任务优先级OSPrioCur;4) 将任务堆栈中的值恢复到寄存器中;5) 执行RETI指令,运行切换后的新任务。

57、3. 中断级的任务切换函数OSIntCtxSw()C/OS-II中,中断的产生可能会引起任务的切换,在中断服务程序的最后会调用OSIntExit()检查任务就绪状态。如果需要进行任务切换,将调用OSIntCtxSw(),所以OSIntCtxSw()又称为中断级的任务切换函数。需要注意的是,任何中断服务程序ISR前面都要保存上下文环境。因此,OSIntCtxSw()和OSCtxSw()的后半部分几乎相同,不同之处是:对当前任务的堆栈指针进行的调整。4时钟节拍服务中断函数:OSTickISR() C/OS-II中,时钟节拍中断是一个非常重要的中断,因为整个操作系统的活动都受到它的激励。 OSTic

58、kISR()的执行流程:1) 硬件进入中断处理;2) 保护上下文环境;3) 调用OSIntEnter(),记录中断嵌套层数;4) 调用OSTimeTick(),检查处理各个任务的延时,并根据情况修改就绪任务表;5) 调用OSIntExit(),检查就绪任务表,看是否有比当前任务优先级更高的任务就绪,如果有,则进行调度;如果没有,OSIntExit()返回并恢复在2)中所保存的上下文环境,并执行RETI回到被中断的那个任务里继续运行。4.1.4 OS_CPU_C.C文件这个文件里,要编写6个函数。其中,只有堆栈初始化函数OSTaskInit()是必要的,其余5个功能扩展函数必须声明,但可以为空函

59、数。1. 堆栈初始化函数OSTaskInit()堆栈初始化函数OSTaskInit()是通过任务创建函数OSTaskCreate()或OSTaskCreateExt()来调用,用来初始化任务堆栈。初始化后的堆栈保存着任务第一次执行时的上下文环境,它和中断后的堆栈相似,所以寄存器都保存在堆栈中。这个函数最关键的两个参数就是任务的起始地址void(* task)(void *pdata)和任务使用堆栈的栈顶指针void *ptos。需要注意的是,任务第一次执行时的某些全局寄存器的值有特殊要求:1)状态寄存器ST的初始值必须保证中断全局使能位GIE为1,从而保证时钟节拍中断不会长时间被屏蔽,这里选择

60、初值为0x2000;2)页指针寄存器DP的初始值:如果选择Small-Memory模式进行编译,那么它的初始值应该和建立C环境时对DP的初始化值相同;否则就不要对这个DP寄存器进行任何保护处理;如果选择了Large-Memory模式的话,那么这个值的初始化就可以不进行了,因为编译系统在编译时会自动插入更新DP的指令的。2其余5个功能扩展函数其余5个功能扩展函数是:任务建立钩子函数OSTaskCreatHook();任务删除钩子函数OSTaskDelHook();任务切换钩子函数OSTaskSwHook();任务统计钩子函数OSTaskStatHook();时钟节拍钩子函数OSTimeTickH

61、ook()。这些功能扩展函数允许用户在系统调用之前加入自己定义的任务。4.2 C/OS移植代码的测试在完成了C/OS-II内核在TMS320VC33上的移植工作后,编写了一个由10个任务组成的测试程序。这10个任务是:C/OS-II创建的两个内部的任务:系统空闲任务和系统统计任务;主任务(开始任务,创建其余7个任务);任务0堆栈容量检查任务;任务1计算系统当前时间;任务2向邮箱M中写一个字母,等待M收到字符“1”时,向M发送下一个字母;任务3从邮箱M中取出2发出的字母并显示该字母,然后向邮箱M中送1; 任务4定时地向信息队列Q中发送一则信息;任务5无期限地等待消息队列Q中的消息,一旦有了消息,

62、将其显示出来;任务6在规定的时间内没有等到消息队列Q中有消息,则显示超时。这10个任务都是在不停的循环运行。该应用测试程序在硬件平台上运行正常,其运行输出结果如图4.2和图4.3所示。图4.3 C/OS-II在运行3小时后的输出结果图图4.2 C/OS-II开始运行时的输出结果图第五章 基于C/OS-的嵌入式系统构件在控制平台的软件设计中引入了嵌入式实时操作系统C/OS-,从而满足了电力电子控制的多任务性、高实时性和高可靠性要求。依据嵌入式系统构件的思想,构建了对硬件平台各个部分的管理模块,并将其添加到操作系统中去,使其成为操作系统的一部分。从而完成了对C/OS-的裁剪和功能添加,使其成为适合

63、于电力电子控制的嵌入式实时操作系统。用户可以通过系统调用来实现对硬件平台各个部分的管理和操作。这样,就在提高了软件平台的可移植性和通用性。5.1 嵌入式系统构件的思想应用程序INITDSPDSP初始化DI开关量输入AI模拟量输入C/OS-系统内核WDOG看门狗监控SIO异步串行通信DO开关量输出TMR计时器管理器图5.1 基于C/OS-的嵌入式系统构件的结构框图采用C/OS-嵌入式实时操作系统的目的之一,就是以此操作系统为软件平台,通过硬件平台设备的驱动程序来实现对硬件平台设备的管理和操作。同时为用户提供一个开发平台,使得用户通过操作系统提供的应用程序接口函数来实现对硬件的操作,而不必过多的了解硬件平台。这样,即使硬件平台有所改动,只要其接口函数保持不便,应用程序就不用做丝毫的改动,使应用程序具有良好的通用性。正是基于此思想,在硬件设备的驱动程序、接口函数、基本的控制算法程序的设计和程序文件的组织结构上采用了模块化的系统构件思想,在应用程序代码和硬件之间设置了一个硬件抽象层。基于C/OS-的嵌入式系统构件的结构框图如图5.1所示。系统构件主要用C语言编写,只有少部分与硬件相关的代码用汇编语言编写,应用程序接口函数主要通过数据结构同硬件交换数据

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!