嵌入式系统在智能电梯中的应用研究_第1页
嵌入式系统在智能电梯中的应用研究_第2页
嵌入式系统在智能电梯中的应用研究_第3页
嵌入式系统在智能电梯中的应用研究_第4页
嵌入式系统在智能电梯中的应用研究_第5页
已阅读5页,还剩21页未读, 继续免费阅读

下载本文档

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

文档简介

目录一、设计题目1二、设计要求1三、设计作用与目的1四、所用设备及软件3五、系统设计方案35.1、系统总体设计45.2、系统工作原理5六、系统硬件设计76.1、系统整体设计86.2、整流滤波单元106.3、电机速度及转子位置检测单元116.4、逆变单元126.5、控制电路电源模块126.6、看门狗模块146.7、低电压复位模块156.8、电流检测模块166.9、故障报警模块166.10、编程与仿真接口17七、系统软件设计177.1、主程序流程设计187.2、初始化模块197.3、中断模块207.4、开关量输入模块217.5、故障处理模块227.6、正常工作模块237.7、检修工作模块237.8、消防状态工作模块247.9、CAN总线接收的数据处理模块257.10、系统断电数据保存模块267.11、软件定时器模块26八、实验调试结果27九、设计中的问题及解决方法30十、设计心得31十一、参考文献32嵌入式系统在智能电梯中的应用研究一、设计题目嵌入式系统在智能电梯中的应用研究二、设计要求嵌入式实时系统作为计算机应用的一个崭新领域,以其简洁、高效等特点越来越多地受到人们的广泛关注。本文以嵌入式实时操作系统在一种基于CAN总线的分布式智能电梯控制系统中的应用为背景,以高性能的嵌入式微处理器为核心,采用嵌入式实时操作系统μC/OS—Ⅱ在各任务间优化地分配CPU时间和系统资源,简化了软件编程,保证了系统的实时性,提高了系统的可靠性。电梯控制系统硬件上采用嵌入式微处理器作为控制核心,以现场总线作为通讯总线,各控制器之间只需一对绞线通过网络拓扑结构连接即可,安装极为方便,对于不同的楼层数的控制系统只需在现场总线中参加相应数目的呼梯控制器即可,主控器硬件软件不需做任何改动。使得电梯控制系统安装更加灵活、方便。本设计重点讨论了电梯变频驱动局部的电路设计,及应用嵌入式实时操作系统μC/OS—Ⅱ的系统程序设计。三、设计作用与目的传统的电梯控制系统各楼层与控制器之间采用以PLC为控制核心的点对点的连接方式每个呼叫器都有一套数据线与主控器相连,当电梯楼层数比拟多时,系统就会有大量的数据线需要连接,使得电梯的安装、维护比拟麻烦。特别是不同楼层数的控制系统需要有相应输入输出点数的主控制器相匹配,通用性差,给生产带来许多不便[3]。以嵌入式微处理器为核心控制器的嵌入式系统作为计算机应用的一个崭新领域,以其简洁、高效等特点越来越多地受到人们的广泛关注。而且在工业控制系统中已得到了广泛的应用,应用于电梯控制系统,具有很大的优越性。(1)可以实现无触点逻辑线路,提高系统可靠性,降低维修费用,提高产品质量。(2)编制控制程序灵活性大,可以适应各种不同的功能要求。(3)可以实现故障显示,使得维修方便,减少故障时间,提高运行率,而且调速灵活,提高电梯的舒适感。(4)使得电梯控制系统体积减小,本钱降低,节省能源,可靠性提高,通用性强,灵活性答,实现了复杂功能。不但可以装配用于新的电梯产品,还可以用来改造旧电梯控制系统,并能取得良好的经济效益和社会效益。(5)便于实现电梯群控系统的管理,合理调配电梯,提高电梯运行效率,节约能源,缩短候梯时间。(6)可以减少控制装置的占地面积。电梯控制系统硬件上采用嵌入式微处理器作为控制核心,以现场总线作为通讯总线,各控制器之间只需一对双绞线通过网络拓扑结构连接即可,安装极为方便,对于不同楼层数的控制系统只需在现场总线中参加相应数目的呼梯控制器即可,主控器硬件软件不需做任何改动。使得电梯控制系统安装更加灵活,方便。但是随着对电梯运行速度、逻辑功能的要求越来越高,常用的8位、16位单片机已逐渐不能满足快速处理、实时响应和系统结构高效、简洁的需求。目前国内的电梯控制系统还是以PLC和8位单片机为主,软件编程采用的还是以无嵌入式实时操作系统的单任务循环的前后台编程方式,使得电梯控制系统的实时性、稳定性和软件编程的灵活性已不能满足电梯系统功能和速度的要求。随着各种高速、高集成的嵌入式处理器的飞速开展,包括嵌入式数字信号处理器(DSP)在内的嵌入式处理器广泛应用于工业控制系统,其中TMS32OCZooo系列DSP的体系结构专为实时控制和实时信号处理而设计,所配置的片内外设为电梯控制系统应用提供了理想的解决方案。对电梯控制系统功能要求越高,控制程序就必然越复杂,引入嵌入式实时操作系统作为软件开发平台可以优化系统结构,提高系统可靠性、实时性和编程的灵活性,将是智能电梯控制系统开发的必需环节。四、所用设备及软件表4.1局部元件清单DSP56F8025MFBE芯片1个MC333951个LM2940T-5.01个NCV1117-3.31个TPS38241个CAT809S1个PC机1台电阻假设干电容假设干晶振1个反相器假设干二极管假设干三极管假设干μC/OS—Ⅱ嵌入式实时操作系统五、系统设计方案电梯控制系统是一个相当复杂的逻辑控制系统,系统要在极短的时间内对几百个信号进行检测、处理,加上系统对平安性能要求较高,使得电梯的控制和管理相当复杂,现有国内的电梯控制系统大多数采用PLC作为电梯的控制核心,对每层楼进行点对点控制,进一步加大了电梯的复杂性,给电梯的安装、调试、以及扩展带来了许多麻烦。随着计算机硬件、软件技术和集成电路技术的迅速开展,工业控制系统已成为计算机技术应用领域中最具活力的一个分支,并取得了巨大的进步,突出表现为嵌入式微处理器和嵌入式微控制器技术在控制系统中的大量运用。而电梯控制系统中主控制器不仅要完成复杂的逻辑控制、还要实现数据通讯、数据处理、平安监测及实时响应的功能,根据电梯主控制器的特点,对智能电梯控制系统主控制器进行了设计。5.1、系统总体设计随着计算机技术和网络技术的开展,电梯的分布式控制成为了可能。将电梯的控制功能分为假设干模块,由不同的控制器完成各局部特定的功能,各控制器间采用可靠的通信技术控制局域网传递信息,相互进行通信,协同工作。这样,系统可以实现电缆的插接化,并大大减少井道中电缆数量,减少布线工作量和维护本钱。而且,可以使得系统中各个控制器有更充裕的时间用于进一步完善其自身的功能,以改善电梯的性能。本次课题研究开发的智能电梯控制系统可分为四个主要局部:1.主控制器即电梯控制器。它是电梯控制系统的主要局部,负责整个电梯的运行控制。一般主控器和位于楼房的顶部电梯机房内的电梯动力装置曳引机构成了整个电梯控制系统的核心。2.轿厢轿厢是电梯系统中运载乘客的装置,它通过轿厢中的键盘、显示屏,使乘客与电梯建立起了相互联系。曳引机通过钢丝牵引轿厢的上下运行,用于运送乘客。在轿顶〔轿厢的顶部〕还有一个门机控制器,用于电梯的开关门动作。3.呼梯它是每一层楼的呼叫装置,给出每一楼层的呼叫请求信息,并且显示电梯当前运行状态。此外,电梯整个系统还包括上、下限位开关,上、下限速开关,限速器,平安闸,对重,随行电缆,平层检测板,道轨和缓冲器等一系列电梯运行机械装置和平安保护设备。4.控制器之间的通信方式主控制器、轿厢控制器和呼梯控制器之间采用现场总线之一的CAN总线进行通信,各控制器之间只需一对双绞线通过网络拓扑结构连接即可,安装极为方便。CAN总线是一种有效支持分布式控制和实时控制的串行通信网络,具有非常好的抗干扰能力和可靠性。通信速率可达1Mbps/40m,直接传输距离最远可达10km/kbps。可挂接设备最多为110个。电梯控制系统总体结构框,如图5.1所示。图5.1系统整体结构框图5.2、系统工作原理主控制器是整个电梯的核心。不但要保证整个系统的稳定运行,而且要在极短的时间内对系统所有的任务进行响应。其任务包括:接收、处理电梯的各种状态,并做出相应的动作,控制电梯的总体运行,实施对电梯驱动局部的控制,包括抱闸的松放、门机的开关、变频器低、中、高速的给出等控制。接收轿厢控制器送来的内选信号,执行内选外呼指令,向轿厢控制器、呼梯控制器发送楼层指示信号,实施平安保护等。为了实现电梯状态监控的需要,主控制器还参加了基于LCD显示的电梯参数设置、监控系统。电梯主控系统,是一个功能繁多,运行复杂的控制系统。电梯每一步运行都要考虑到各种平安问题。总的来说,系统按运行上来说可分为正常运行、非正常运行两大框架结构,按功能上又可分为开关门、上下运行等功能局部。另外,为了保证系统平安正常的运行,及时发现平安隐患,还要对整个系统的各种参数进行自身检测,并且把电梯的一些内部参数、内部状态通过液晶屏显示出来,以便及时发现问题并进行报警。以下对电梯控制系统运行状态进行具体分析。电梯运行时,根据不同的情况,可分为正常运行、检修运行、自学习运行、消防运行等运行状态,要求各状态之间可随时互相转换。1.正常运行电梯正常运行局部是电梯运行的主要局部,他占据了整个电梯运行的大局部运行时间,按运行状态来说大致可分为平层区状态和非平层区状态。(1)平层区状态正常运行时,电梯一旦监测到平层区标志,就要进入平层区状态,根据呼叫计算,分别决定停车、等待还是继续运行。如果电梯到达运行目的楼层,系统进入停车模式。考虑到电梯的顺利停车和启动、乘客平安、机械局部的损坏等问题,系统必须按照一定的规那么停车和启动。(2)非平层区状态非平层区状态相对于平层状态来说相对简单,主要完成电梯在运行途中系统通过CAN总线与呼梯、轿厢的通信,提出登记楼层呼叫情况,并计算电梯运行目标楼层,决定电梯运行的速度和方向,以及计算即将到达的目的地是否停车等任务。2.检修检修状态是电梯控制系统中最根本的运行局部,是电梯安装、调试必不可少的状态。检修状态只包括电梯的几个最根本功能:开门、关门、上行、下行,在电梯初次安装、调试或出现故障时,调用最根本、最简单的运行功能,以便解决其它问题。3.自学习为了增加电梯控制系统的智能化程度,系统参加了自学习功能。因为安装电梯的楼房楼层高度不可能统一,就算有标准,也会因为施工存在误差而导致楼层高度存在差异。对于电梯控制系统来说,必须预先知道楼层的高度,以便准确、及时的改变运行速度,减速停车。一般来说,系统通过读取电梯曳引机端的脉冲编码器根据电器上下运行的行程所发出的脉冲数来得到电梯所在楼层的层高。在传统的电梯控制系统中,为了取得大楼楼层的高度,安装调试的时候采用检修运行方式,手动控制电梯的上下运行,通过观察电梯主控系统的脉冲计数器所读到的数值,人工的计录下楼层的高度值。在本系统中,引入了自学功能,即自动完成楼宇高度脉冲的读取、纪录、保存,并自动检测大楼楼层数。给电梯安装调试带来了很大的方便。4.消防电梯在运行时,如果有人把设置在系统基站的消防开关开启,电梯立刻进入消防状态。消防状态是电梯系统在楼层发生火灾的情况下,为了保护乘客的平安以及方便消防人员救火救人而设置的一种功能状态。一般来说,消防状态可以分为消防保护阶段和消防再次运行阶段。〔1〕消防保护阶段电梯在正常运行时,如果有消防呼叫,系统即处于消防保护阶段。〔2〕再次运行阶段电梯完成消防保护阶段后,自动进入再次运行阶段,以便消防人员和急救人员紧急使用和临时使用电梯。5.故障检测对于电梯控制系统来说,其平安问题尤为重要。能够及时发现、解决系统的电子、机械问题,并显示相应的故障代码,指明故障情况,将对电梯故障的预防、故障出现后电梯的检修带了很大的帮助。一般来说,电梯控制系统中的故障包括控制电路的器件故障,包括元件老化、失灵、损坏等情况,还有变频器运行故障,分布式控制系统的串行通讯故障,门联锁、抱闸接触器、主接触器等机械故障等[9]。6.系统监控为了准确掌握电梯内部参数、了解当前运行状况,本系统采用了基于LCD液晶屏的电梯监控系统。操作人员可以通过上、下、左、右、ENTER、EXIT、RESET共有七个操作键对监控系统进行操作,观察自动、检修、消防、电梯运行方向、当前速度、上、下限位等运行状态,还可以进入参数设置窗口,对电梯运行速度、换速脉冲、开关门时间、方向、速度等一系列参数进行设。六、系统硬件设计电梯控制系统中主控制器不仅要完成复杂的逻辑控制,还要实现数据通讯、数据处理、平安监测及实时响应的功能,根据电梯主控制器的特点,提出一种新型、高效的控制系统结构DSP+CPLD。由于DSP具有数据处理速度快、工作特性稳定、集成化程度高等特性,在设计中主要用来完成数据的实时处理、运算和响应,与控制系统中其它微处理器之间的局域网数据通信,输入/输出(I/O)信号的处理,电源监控及数据的非易失性保存,而复杂可编程逻辑器件CPLD是应用很广泛的专用集成电路,具有集成度高、工作速度快和在线编程方便等特性,所以在系统设计中采用CPLD可以增强DSP访问外设的能力,实现可编程I/0口的扩展、片内时序逻辑电路和组合逻辑电路设计、输入缓冲、输出驱动及产生其它器件的片选信号。CPLD通过片内可编程数据交换逻辑模块发送输入端口状态信息到DSP,接收DSP发出的控制信息,对于系统中局部输入、输出逻辑关系直接在CPLD中由可编程逻辑处理模块完成。本设计中电梯主控制器就是采用DSP+CPLD的系统结构,基于DSP技术和CPLD技术有效结合的主导思想设计的主控制器,成功的应用在智能电梯控制系统。数字信号处理器DSP采用Freescle公司生产的DSP56F8025MFBE,,而复杂可编程逻辑器件CPLD采用Altera公司生产的MAX7128S。本章将以DSP作为重点,详细介绍系统变频驱动局部的硬件设计。6.1、系统整体设计芯片DSP56F8025MFBE数字信号处理器(DSP)是一种适合于进行实时数字信号处理运算的微处理器,能够快速实时的完成数字信号处理、运算。全数字控制器以DSP56F800系统为核心,其具有较好的通用性。本设计中,突出了控制器的高效性、通用性以及实用性。在全数字控制器的研制中,采用核心控制芯片为DSP56F8025MFBE。该DSP芯片系列混合了DSP的高运算能力与MCU的控制特性于一体,提供了许多专用于电机控制的外设接口,如PWM模块、ADC、Timer、SCI、SPI和CAN总线等,非常适合于数字马达控制;同时,它还有通用型的GPIO口,每条运算指令仅有25ns的高速运算速度等,所有这些特性,为整个系统的控制提供了良好的外部控制环境。DSP56800内核采用哈佛结构,包括三个可并行的工作的执行单元,六级流水线。它的MCU风格编程模式和优化指令集允许直接生成有效的、紧凑的DSP控制码。DSP568025MFBE支持从外部或内部存储器开始执行程序。并且每个指令周期可以同时从内部RAM读取两个操作数,同时提供了两个中断线和最多达32路的GPIO(通用I/O)引脚。DSP568025MFBE包含DSP56800系列内核的程序和数据存储器以及用于嵌入式控制的片内外设。DSP56800内核包括三个并行工作的执行单元,在一个指令周期可以同时执行6条指令。MCU编程模式以及优化的指令集允许生成有效、紧凑的DSP控制代码。DSP56800的主要特点如下:采用双哈佛结构,16位DSP处理器。在内部时钟为80M时,指令执行速度可达40MIPS。单周期16位*16位并行MAC。带扩展位的2个36位累加器。16位双向循环移位器。采用DSP特有寻址模式的并行指令集。硬件实现DO和REP循环。三条内部地址总线和一条外部地址总线。四条内部数据总线和一条外部数据总线。支持DSP和控制器函数的指令集。控制器风格的寻址模式和指令。高效的C编辑器,支持局部变量。只限制于存储器大小的子程序和中断堆栈。JTAG/ONCE调试接口。图6.1DSP56F8025MFBE原理图DSP56F8025MFBE具有数据处理速度快、工作特性稳定、集成化程度高的特性。系统采用了模块化设计理念,组成框图如图6.2所示。图6.2主控制器结构框图由上图可知,设计中采用交-直-交型变频电路,包括由不可控二极管和电容矩阵组成的滤波整流单元和逆变单元。控制电路局部以DSP为核心组成全数字控制系统,其中包括控制电路电源模块、上电复位模块、看门狗模块、光电码盘、电流采样及故障报警等模块。本系统是一个有速度反应的闭环系统,DSP接受电机的转速及转子的位置信号,电机电流信号,通过数字算法输出SPWM,控制电机。同时DSP还负责监控系统运行的状态,当系统出现,过压,过流,短路等故障时,DSP将停止系统工作,发出声光报警。6.2、整流滤波单元380V的交流电压经6个不可控的二极管全波整流后变为直流后再经电解电容进行滤波,同时为负载的直流电源之间的无功功率进行缓冲。如图6.3所示。图6.3整流滤波单元当变频器刚合上电源的瞬间由电容组成的滤波电路充电电流较大,过大的冲击电流极易损坏电源的整流模块,因此为保护整流桥在变频器刚接通电源的一段时间里电路串联一个限流电阻,使瞬间的充电电流被限制在允许的范围内。当电源电压到达稳定后,通过电阻分压的方式使光耦导通,继电器线圈得电,闭合短路限流电阻,从而降低系统能量损耗。6.3、电机速度及转子位置检测单元系统使用光电码盘检测电机的速度及转子的位置信息反应给DSP,DSP再通过相应的算法控制电机的运行。如图6.4所示,为光电码盘与DSP之间的接口电路。图6.4光电码盘接口电路6.4、逆变单元系统选用freescale公司的MC33395作为逆变单元的驱动芯片,按DSP输入的不同模式控制6个功率开关的导通与关闭,实现对电机的SPWM调节。如图6.5所示。在工作过程中,当MC33395检测到过电流或过电压时可以通过VT2关闭供电,从而禁止了SPWM的输出,保护系统平安。图6.5逆变单元6.5、控制电路电源模块系统的控制回路电压可以通过外接220V生活电压的方式给定。当电梯启动时,VT1导通,Q1导通,经过变压器变压整流桥整流的输入电压被接入,首先经过78S12后输出稳定的12V电压,接着经过LM2940T-5.0后输出稳定的5V电压,最后经过NCV1117-3.3输出稳定的3.3V电压,连续使用3块串行稳压电源为控制电路提供不同的供电电压,以满足使用要求。如图6.6,6.7,6.8,6.9所示。图6.6启动开关及变压整流模块图6.7+12V电源模块图6.8+5V电源模块图6.9+3.3V电源模块如图6.9所示,在电压接入78L12+12稳压模块之前,回路中还参加了由R6和D4组成的顺压保护电路,其中R6作为限流电阻防止D4被过强的释能电流烧穿。D4为TVS管即瞬态稳压二极管,当输入的电压过高时,TVS会瞬时导通将过高的能量释放,同时将输出电压限制在平安范围内,从而有效的防止了12V稳压块因瞬间过压烧毁,提高控制器的可靠性。图6.10瞬压保护电路6.6、看门狗模块为提高控制系统的平安性,防止程序在运行过程中出现错误,在外围电路中参加看门狗模块,但程序运行错误时,看门狗模块可以将CPU复位,使芯片恢复正常工作,设计中所选用看门狗芯片为T动电压2.63V,内部定时器每200ms发出一次复位信号。因此当程序运行错误时,在200ms内未能将其内部定时器清零,那么TPS3824将发出RESET信号复位DSP,从而有效的防止死机的情形发生。如图6.11所示。图6.11看门狗模块6.7、低电压复位模块在系统上断电过程中电源局部可能出现过电压过低的情况,此时DSP可能在非正常电压工作时产生错误,为防止类似情形产生,系统中参加低电压压复位模块。因为DSP供电电压为3.3V,所以选用CAT809S作为复位芯片。如图6.12所示。CAT809S的复位电压为2.93V,当DSP供电电压低于此值时,CAT809S将发出RESET信号,复位DSP。图6.12低电压复位模块6.8、电流检测模块电流检测模块用于检测这个系统运行过程中的电流情况。系统可以根据电流情况调整电机的速度,电梯内风扇的开关,还可以有效的防止过电流的发生,保障系统平安。如图6.13所示。电流检测模块采用正向运算放大器组成的电压放大电路,输入端的电压被滤波并放大11倍后送入DSP的AD采样通道,DSP将实际中的模拟量通过AD模块转换成相应的数字量,最后通过计算,判断获得希望的控制模式。由于DSP的管脚耐压值有限,电压经运算放大器放大后,可能超出正常范围,所以在DSP的管脚输入端接有二极管限幅电路,使得当DSP管脚处电压输入过大时被有效的限制在允许的范围内。图6.13电流检测模块6.9、故障报警模块当系统出项故障时,DSP在完成系统停机保护的同时,输出GPIO端口将发出高电平,Q2三极管导通,故障灯与响铃同时得电,发出声光报警提示用户。如图6.14所示。图6.14故障报警模块6.10、编程与仿真接口可以通过串行接口RS232进行通讯及仿真,方便了嵌入式程序的编辑与调试。如图6.15所示。图6.15编程及仿真接口七、系统软件设计嵌入式实时操作系统(EmbeddedRealTimeOperatingSystem)是一种实时的、支持嵌入式系统应用的操作系统软件,它是嵌入式系统(包括硬、软件系统)极为重要的组成局部,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。7.1、主程序流程设计本设计将重点运用μC/OS—Ⅱ嵌入式实时操作系统作为软件开发平台,进行应用系统软件的设计。电梯控制系统控制策略与方法以流程图表示,如图7.1所示图7.1主程序流程图7.2、初始化模块初始化模块是电梯控制系统初始运行局部,负责初始化系统的各种参数,根据情况把电梯设置成一种初始上电运行状态。初始化模块包括:(1)DSP系统初始化函数SYS_INIT()。完成DSP系统的配置存放器和接口模块时钟控制。主要包括系统控制和状态存放器、中断优先级和中断向量表、外设中断扩展控制器、中断向量、CPU中断存放器、外设中断存放器等。(2)定时器初始化函数EVB_init()。DSP有四个通用定时器,选择定时器3做为整个软件程序定时的基准。完成定时器内外时钟的选择,设置可编程定标器的初值,选择计数时钟频率,计数模式等,并向操作系统时钟节拍函数OSTimeTick()提供根本计时单位。完成初始化各个定时标志的初始化的工作。(3)光电编码器初始化函数EVA_init()。选择定时器2作为光电编码器输入脉冲处理的根本时钟信号。完成正交编码信号计数模式,计数方向等。(4)I/O初始化函数I几init()。在电梯上电的的初始状态,系统的I/O状态是随机的,这样对电梯造成的极大的危险。I/O初始化主要是根据初始情况设置I/O口的输入输出状态,是电梯到达一个比拟稳定、平安的状态。(5)复杂可编程逻辑器件(CPLD)接口初始化函数Cpld_Init()。数字信号处理器(DSP)通过数据总线向CPLD输出初始状态数据,完成CPLD初始化。(6)CAN控制器的初始化CAN_init()。对DSp320LF2407中的CAN控制段中的存放器进行初始化,设置CAN控制器的波特率、各个邮箱的功,接收屏蔽码等。(7)串行通信接口初始化函数SCI_init()。主控制器与液晶显示模块采用串行通信接口进行通讯。完成串行通信口可编程的数据格式、波特率的设置等。(8)串行外设接口初始化函数SPI_init()。主控制器采用串行外设接口(SPI)对串行EEPR伽管理,用于系统断电后非易失数据保存。初始化函数完成完成串行外设接口可编程的数据格式、波特率的设置等。内存初始化函数Meomory_Init()。完成内存中变量及标志的初始化。(9)嵌入式实时操作系统μC/OS—Ⅱ操作系统初始化函数OSinit()。完成初始μC/OS—Ⅱ所有变量和数据结构。7.3、中断模块电梯控制系统中断模块包括两局部:定时器模块和CAN总线数据接收模块。操作系统在中断效劳程序中所用到函数包括:中断开始函数OSIntEnter(),时钟节拍函数OSTimeTiek(),退出中断函数OSIntExit()。1)定时器模块采用中断3,函数是c_int2()voidc_int2(){if(PIVR==0x002F)//是否认时器10MS{unsignedintTint=0//定义局部变量Tint*OSIntEnter();//通知内核开始中断效劳OSTimeTick();//10MS一个时钟节拍中断效劳子程序OSMboxPost(TimerMbox,(void*)&Tint);//发送定时时间消息到软件定时器OSIntExit();//退出中断asm(″CLRCINTM″);//开中断}}2)CAN总线数据接收模块采用中断5,函数是c_int5()。voidc_int5(){if(PIVR==0x0040){unsignedintCANint=0;//定义局部变量OSIntEnter();//通知内核开始中断效劳呼梯或是轿厢发送的数据的ID号判断中断效劳子程序OSMboxPost(CANREMbox,(void*)&CANint);//发送CAN总线接收到的数据消息到CAN接收数据处理函数Can_Receive()OSIntExit();//退出中断asm(″CLRCINTM″);//开中断}}7.4、开关量输入模块开关量输入模块功能是完成读取开关量控制指令及电梯状态值,并进行数据转换,便于其他函数调用。采用操作系统μC/OS—Ⅱ创立开关量输入模块任务如下:OSTaskCreate(IO_RECEIVETask,(void*)O,(void*)&TaskstkIORe[29],3)任务名称:IO-RECEIVE任务堆栈:分配给开关量输入模块IO-RECEIVE()堆栈的栈顶指针&TaskstkIORe[29],操作系统初始化通过设置OS_STK_GROWTH将堆栈设定为是由上往下递减。优先级:3采用μC/OS—Ⅱ对开关量输入模块管理的流程如下:voidIO_Reeeive(){while(1){OSTasksuspend(3);/*采用任务挂起方式先将任务置于挂起态*/读入开关量信号输入值及数据转换用户代码;根据输入信号确定正常、检修和消防那种任务恢复就绪态。if(检修状态有效)OSIntTaskResume(5):/*检修任务恢复就绪态*/}7.5、故障处理模块电梯控制系统的故障状态处理模块主要完成电梯处于故障状态时的运行控制。采用操作系统μC/OS—Ⅱ创立故障处理模块任务如下:OSTaskCreate(Ctr_TroubleTask,(void*)0,(void*)&TaskstkTrouble[59],4)任务名称:Ctr_Trouble()任务堆栈:分配给电梯控制系统故障状态处理模块Ctr_trouble()堆栈的栈顶指针&TaskstkTrouble[29]。优先级:4采用协μC/OS—Ⅱ对故障工作模块管理的流程如下:voidCtr_trouble(){while(l){MaiITrouble=OSMboxPend(TroubleMbox,0,&error):/*采用消息邮箱与其它任务模块进行信息传递*/troublesign=*Mai1Trouble;/*读取返回值,根据邮箱返回的值执行相应的功能*/if(troublesign==?){故障处理子程序1}故障处理其它子程序}}7.6、正常工作模块电梯控制系统正常工作模块主要完成:(1)电梯正常运行过程中的呼叫提取、呼叫计算、根据呼叫计算结果确定电梯运行目标楼层.(2)启动电梯运行包括:主继电器控制、给定方向、松闸和给定速度。(3)停止电梯运行包括:主继电器控制、撤速度、抱闸和撤方向。(4)开关门控制逻辑处理。采用操作系统μC/OS—Ⅱ创立电梯正常运行模块任务如下:OSTaskCreate(CtrjormalTask,(void*)0,(void*)&TaskstkNormal[59],9)任务名称:Ctr_Normal()任务堆栈:分配给电梯控制系统正常模块Ctr_Normal()堆栈的栈顶指针&TaskstkNormal[59]。优先级:9恢复就绪态方式:由I/O输入模块函数IO_RECEIvE()根据I/O口状态执行恢复函数进入就绪态。采用μC/OS—Ⅱ对正常工作模块管理的流程如下:Ctr_Normal(){while(1){OSTasksuspend(9);/*采用任务挂起方式将任务先置于挂起态*/}}正常运行各局部子程序7.7、检修工作模块电梯控制系统的检修模块主要完成工作人员在对电梯调试、维护时的运行控制。采用操作系统协μC/OS—Ⅱ创立开关量输入模块任务如下:OSTaskCreate(Ctr_ExamTask,(void*)O,(void*)&TaskstkExam[29],5)任务名称:Ctr_Exam()任务堆栈:分配给电梯控制系统检修模块Ctr_Exam()堆栈的栈顶指针&TaskstkExam[29]。优先级:5恢复就绪态方式:由I/O输入模块函数IO_RECEIVE()根据I/O口状态执行恢复函数进入就绪态。采用μC/OS—Ⅱ对检修工作模块管理的流程如下:voidCtr_Exam(){while(l)OSTasksuspend(5);/*采用任务挂起方式将任务先置于挂起态*/}检修状态下开、关门和上、下行处理程序7.8、消防状态工作模块电梯控制系统的消防状态工作模块主要完成电梯处于消防报警状态时的运行控制[21]。采用操作系统林μC/OS—Ⅱ创立开关量输入模块任务如下:OSTaskCreate(Ctr_FireTask,(void*)O,(void*)&TaskstkFire[59],6)任务名称:Ctr_Fire()任务堆栈:分配给电梯控制系统消防状态处理模块Ctr_Fire()堆栈的栈顶指针&TaskstkFire[29]。优先级:6恢复就绪态方式:由I/O输入模块函数IO_RECEIVE()根据I/O口状态执行恢复函数进入就绪态。采用μC/OS—Ⅱ对消防工作模块管理的流程如下:voidCtr_Fire(){while(l){OSTasksuspend(6);/*采用任务挂起方式将任务先置于挂起态*/消防状态运行控制程序}}7.9、CAN总线接收的数据处理模块电梯控制系统的CAN总线接收的数据处理模块主要完成电梯主控制器从轿厢控制器、呼梯控制器接收的数据的处理。采用操作系统μC/OS—Ⅱ创立故障处理模块任务如下:OSTaskCreate(Ctr_CanRxTask,(void*)0,(void*)&TaskstkCanRx[29],7)任务名称:Ctr_CanRx()任务堆栈:分配给电梯控制系统CAN总线接收的数据处理模块Ctr_CanRx()堆栈的栈顶指针&TaskstkCanRx[29]。优先级:7采用μC/OS—Ⅱ对数据处理模块管理的流程如下:voidCtr_CanRx(){while(1){MailCanRx=OSMboxPend(CanRxMbox,30,&error):/*采用消息邮箱与其它任务模块进行信息传递*/eznrxsign=*MailCanRx:/*读取返回值,根据邮箱返回的值执行相应的功能*/if(eznrxsign==轿厢信息){轿厢数据处理子程序}CAN总线接收的数据进行处理的其它子程序7.10、系统断电数据保存模块电梯控制系统的系统断电数据保存模块主要完成电梯控制系统在突然断电时数据的非易失保存。采用操作系统μC/OS—Ⅱ创立断电数据保存模块任务如下:OSTaskCreate(Ctr_SaveTask,(void*)0,(vosd*)&Taskstksave[29],8)任务名称:Ctr_Save()任务堆栈:分配给电梯控制系统断电数据保存模块Ctr_Save()堆栈的栈顶指针&Taskstksave[29]。优先级:8恢复就绪态方式:由I/0输入模块函数10_REcEIVEO根据I/0口状态执行恢复函数进入就绪态。采用μC/OS—Ⅱ对断电数据保存模块管理的流程如下:voidCtr_Save(){while(1){OSTasksuspend(S);/*采用任务挂起方式将任务先置于挂起态*/系统断电数据非易失保存程序}}7.11、软件定时器模块电梯控制系统的软件定时器模块主要完成电梯主控制器的各个软件定时器的计算和处理。采用操作系统μC/OS—Ⅱ创立软件定时器模块任务如下:OSTaskCreate(CtrjimerTask,(void*)0,(v。id*)&TaskstkTimer[29],10)任务名称:Ctr_TimerO任务堆栈:分配给电梯控制系统软件定时器模块ctr_Timero堆栈的栈顶指针&TaskstkTimer[29]。优先级:10采用μC/OS—Ⅱ对数据处理模块管理的流程如下:voidCtrjimer(){while(l)MaiITimer=OSMboxPend(TimerMbox,10,&error):/*采用消息邮箱与其它任务模块进行信息传递*/timersign=*Mai1Timer:/*读取返回值,根据邮箱返回的值执行相应的功能*/if(timersign==looms到有效){以100ms为根本计数单位的软件定时器处理子程序软件定时器其它子程序;}}八、实验调试结果本设计将重点运用μC/OS—Ⅱ嵌入式实时操作系统作为软件开发平台,进行应用系统软件的设计。1.μC/OS—Ⅱ的初始化和启动在调用μC/OS—Ⅱ的其他效劳之前,μC/OS—Ⅱ总要求用户首先调用系统初始化函数OSInit(),完成对μC/OS—Ⅱ中一些变量和数据结构的初始化。μC/OS—Ⅱ还初始化了4个空数据结构缓冲区。每个缓冲区都是单向链表,允许μC/OS—Ⅱ从缓冲区迅速得到或释放一个其中的元素。μC/OS—Ⅱ安排总的系统任务数OS_N_SYS_TASKS,控制块OS-TCB的数目也就自动确定了。当然,包括组合结构的任务控制块分配给空闲任务和统计任务。多任务的启动是用户通过调用OSStart()实现的。然而,启动μC/OS—Ⅱ前,用户至少要建立一个应用任务。当调用OSStart()时,OSStart()从任务就绪表中找出那个用户建立的优先级最高任务的任务控制块。然后,OSStart()调用最高优先级就绪任务启动函数OSStartHighRdy(),这个文件与选择的微处理器有关。实质上,函数OSStartHighRdy()是将任务栈中保存的值弹回到CPU存放器中,然后执行一条中断返回指令,中断返回指令强制执行该任务代码。注意,OSStartHighRdy()将永远不会返回到OSStart()。2.任务管理在μC/OS—Ⅱ中,任务通常是一个无限的循环,任务是绝对不会返回的。故返回参数必须定义成void。协μC/OS—Ⅱ可管理多达64个任务,但μC/OS—Ⅱ保存了优先级为0、1、2的任务。可供用户使用的有多达56个应用任务。必须给每个任务赋以不同的优先级,μC/OS—Ⅱ初始化时,最低优先级总是被赋给空闲任务。为了使μC/OS—Ⅱ能够管理用户任务,用户必须在建立一个任务的时候,将任务的起始地址与其他参数一起传给OSTaskCreate()或OSTaskCreateExt()函数。每个任务的就绪标志都放在就绪表(ready1ist)中,就绪表中有两个变量OSRdyGrp和OSRdyTbl[]。在OSRdyGrp中,任务按优先级分组,8个任务即为一组。OSRdyGrp中的每一位表示8组任务中每一组中是否有进入就绪状态的任务,任务进入就绪态,就绪表OSRdyTbl[]中相应元素的相应位也置位。在μC/OS—Ⅱ中,确定该哪个任务运行的工作是由调度器(scheduler)完成的。任务级的调度是由函数OSSched()完成的。任务切换很简单,将被挂起任务的微处理器存储器推入堆栈,然后将较高优先级的任务的存放器值从栈中恢复到存放器中。OSSched()的所有代码都属于临界区代码。在寻找进入就绪态的最高优先级的任务的过程中,为防止中断效劳程序把一个或几个任务的就绪位置位,中断是被关掉的。3.常用的任务管理函数OSTaskDel()用于将任务返回并处于休眠态,其代码不再被μC/OS—Ⅱ调用,也就是删除任务。删除空闲任务和在中断效劳子程序中(ISR)删除一个任务是不允许的,但可以删除统计任务。可通过指定OS_PRIO--SELF参数来删除自己。OSTaskChangePrio()用来改变建立任务的时候分配给任务的优先级。用户需要指定任务当前的优先级和新的优先级。OSTasksuspend()用来挂起任务。如果被挂起的任务同时也在等待延时的期满,那么挂起操作需要被取消,任务继续等待延时期满,并转入就绪态。任务可挂起自己或其他任务,但必须确保不是在挂起优先级是无效的任务或空闲任务。OSTaskResume()用于恢复被挂起的任务。OSTaskResume()首先要确保被恢复的任务不是空闲任务,这个测试也是在恢复优先级为OS_RIO_SELF的任务。接着,检查要恢复的任务是否存在,是否是被挂起的。OSTaskQuery()用来获得自身或其他应用任务的信息。OSTaskQuery()获得的是对应任务的OS_TCB中内容的拷贝。4.时间管理μC/OS—Ⅱ一日的时钟节拍μC/OS—Ⅱ需要用户提供周期性信号源,用于实现延时和确认超时。时钟节拍的实际频率取决于用户应用程序的精度。时钟节拍源可以采用嵌入式处理器的硬件定时器。μC/OS—Ⅱ中的时钟节拍效劳是通过在中断子程序中调用OSTimeTick()实现的。时钟节拍中断效劳子程序的代码必须用汇编语言编写。OSTimeTiekHook()开始,这个外连函数可以将时钟节拍函数OSTimeTiek()予以扩展。OSTiIneTiok()中大量工作是给每个用户任务控制块OS_TCB中的时间延时项OSTCBDly减1(该项不为零时)。OSTimeTiek()从OSTCBList开始,沿着OS_TCB链表做,一直到空闲任务。当某个任务的任务控制块中的时间延时项OSTCBDly减到了零,这个任务就进入就绪态。被任务挂起函数OSTasksuspend()挂起的任务那么不会进入就绪态。OSTimeTiek()的执行时间直接与应用程序中建立的任务数成正比。5.邮箱邮箱是协μC/OS—Ⅱ中一种通信机制,它可使一个任务或者中断效劳子程向另一个任务发送一个指针型变量。该指针指向一个包含了特定“消息〞的数据结构。要在μC/OS—Ⅱ中使用邮箱,必须将OS_CFG.H文件中的常数BOX_EN置为1。使用邮箱前,必须先建立该邮箱,并指定指针初始值。OS_M如果邮箱用来通知一个事件的发生,就要初始化该邮箱为NULL;如果邮箱用来共享某些资源,就要初始化该邮箱为一个非NULL的指针。6.μC/OS—Ⅱ的中断处理下面我们来了解一下在协μC/OS—Ⅱ中是如何处理中断的。在用户中断效劳子程序中,用户代码应该将全部CPU存放器推入当前任务栈。μC/OS—Ⅱ需要知道用户在做中断效劳,故用户应该调用OSIntEnter(),或者将全局变量OSIntNesting直接加1,这两种方法的选择取决于用户的微处理器。因为,如果用户使用的微处理器有存储器直接加1指令,用将全局变量OSIntNesting直接加1的方法比调用OSIntEnter()快得多。但如果用户使用的微处理器没有这样的指令,就必须先将OSIntNesting读入存放器,再将存放器加l,然后再写回到变量OSIntNesting中去,这种情况下调用OSIntEnter()更简单。要留神的是,有些情况下,从OSIntEnter()返回时,会把中断开了。这时,在调用OS1ntEnter()前要先清中断源,否那么,中断会连续反复发生,程序就会崩溃。μC/OS—Ⅱ允许中断嵌套,因为μC/OS—Ⅱ跟踪嵌套层数OSIntNesting。然而,为了允许中断嵌套,在多数情况下,用户应在开中断前先清中断源。调用脱离中断函数OS1ntExit()标志中断效劳子程序的终结,OSIntExit()将中断嵌套层数计数器减1。当中断嵌套层数计数器减到O时,所有中断就都完成了,此时μC/OS—Ⅱ要判断有没有优先级较高的任务被中断效劳子程序唤醒了。如果有,μC/OS—Ⅱ就返回到那个高优先级的任务,OSIntExit()返回到调用点,此时OSIntExit()将占用较长的运行时间。保存的存放器的值是在这个时候恢复的,然后是执行中断返回指令。注意,如果调度被禁止了,μC/OS—Ⅱ将被返回到被中断了的任务。用户中断效劳中做的要尽可能少,要把大局部工作留给任务做。如果需要做任务切换,OSIntExit()将调用OSIntctxsw()。九、设计中的问题及解决方法本设计遇到的最大问题在于对μC/OS—Ⅱ操作系统没有掌握好。在零根底的情况下,完成课程设计是有一定难度的。经过查找资料,对相关知识有了一定程度上的了解。本系统是以嵌入式实时操作系统在智能电梯控制系统中的应用为背景的,以优化系统结构、合理分配任务和提高系统的可靠性为目的,引入了嵌入式的实时操作系统μC/OS—Ⅱ,实现了μC/OS—Ⅱ作为开发平台的智能电梯单梯控制系统的设计。本设计中电梯主控制器硬件上采用数字信号处理器DSP56F8025MFBE与可编程器件MAX7128S相结合的一种高性能的结构。同时软件上采用嵌入式实时操作系统抖μC/OS—Ⅱ实现多任务管理、中断管理、定时器管理和任务间的通信与同步,这种设计方案具有的特点如下:1.提高了系统的实时性和可靠性在嵌入式系统中使用RTOS的最主要的原因

温馨提示

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

评论

0/150

提交评论