基于CAN总线的汽车空调软硬件系统设计

更新时间:2023-03-10 14:53:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第4章 系统硬件结构设计 4.1 系统总体结构

汽车空调控制系统以主控芯片为中心,以CAN总线构建网络,传感器传递的信号以及主控制器发出的控制信号通过CAN总线接收或者发送。图4-1为该控制系统总体结构示意图。

数据存储S342440A微处理器显示程序存储按键CAN接口CAN总线

图4-1 空调控制系统硬件总体结构示

CAN总线上挂接的节点有信号采集节点和控制执行机构节点两类,其结构如下:

压缩机控制节点风门开度控制节点鼓风机控制节点CAN-HCAN-L车内温度传感器节点车外温度传感器节点阳光强度传感器节点发动机水温传感器节点蒸发器温度传感器节点 图4-2 空调控制系统CAN节点示意图 CAN节点包括控制器、传感器、CAN收发节点,节点的控制器采样的是MPS430单片机,CAN节点用于向主控制器的发送传感器的采样结果。每个节点的

CAN网络节点地址分配如下:

表 4-1 节点地址分配

车外温度节点 车内温度节点 车外光照节点 发动机水温节点 蒸发器温度节点 压缩机控制节点 混合风门控制节点 内外风门控制节点 鼓风机控制节点 90 91 92 93 94 95 96 97 98 由于本系统中主控制器和温度采集节点的控制器都没有带CAN总线接口,因此本设计采用CAN总线控制器SJA1000和一个CAN收发器PCA82C250组成CAN收发模块,总共需要9个这样的收发模块,分别用于主控制电路以及每一个信号采集节点。

4.2 主控制器电路结构

4.2.1基于ARM9的S3C2440微处理器

ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。

ARM将其技术授权给世界上许多著名的半导体、软件和OEM厂商,每个厂商得到的都是一套独一无二的ARM相关技术及服务。利用这种合伙关系,ARM很快成为许多全球性RISC标准的缔造者。

同时ARM也表示由ARM公司设计的RISC处理器,包括ARM7、ARM9、ARM10、ARM11、Crotex 系列等等。其中 ARM7 系列、ARM9 系列、ARM9E 系列和 ARM10E 系列为四个通用处理器系列,每一个系列提供一套相对独特的性能来满足不同应

用领域的要求。

本设计中采用的基于ARM920T 核心核的微处理器S3C2440。其结构图如下:

图 4.3 S3C2440A 处理器结构

S3C2440A具有低功耗,简单,精致的特点,且全静态设计特别适合于对成本和功率敏感型的应用。它采用了新的总线架构如先进微控制总线构架(AMBA)。S3C2440A 的突出特点是其处理器核心,是一个由Advanced RISC Machines(ARM)公司设计的16/32 位ARM920T 的RISC 处理器。ARM920T 实现了MMU,AMBA 总线和哈佛结构高速缓冲体系结构。这一结构具有独立的16KB 指令高速缓存和16KB 数据高速缓存。每个都是由具有8 字长的行(line)组成。通过提供一套完整的通用系统外设S3C2440A 减少整体系统成本和无需配置额外的组件。S3C2440A集成了以下片上功能:

(1)1.2V 内核供电, 1.8V/2.5V/3.3V 储存器供电, 3.3V 外部I/O 供电,具备16KB 的指令缓存和16KB 的数据缓存和MMU的微处理器。

(2)外部存储控制器(SDRAM 控制和片选逻辑)。

(3)LCD 控制器(最大支持4K 色STN 和256K 色TFT)提供1通道LCD专用DMA。 (4) 4 通道DMA 并有外部请求引脚。

(5) 3 通道UART(IrDA1.0, 64 字节发送FIFO 和64 字节接收FIFO)。 (6) 2 通道SPI。

(7)1 通道IIC 总线接口(支持多主机)。 (8) 1 通道IIS 总线音频编码器接口。 (9) AC’97 编解码器接口。

(10) 兼容SD 主接口协议1.0 版和MMC 卡协议2.11 兼容版。 (11) 2 通道USB 主机/1 通道USB 设备(1.1 版)。 (12)4 通道PWM 定时器和1 通道内部定时器/看门狗定时器。 (13)8 通道10 位ADC 和触摸屏接口。 (14)具有日历功能的RTC。

(14)摄像头接口(最大支持4096×4096 像素输入;2048×2048 像素输入支持缩放)。

(15) 130 个通用I/O 口和24 通道外部中断源。 (16) 具有普通,慢速,空闲和掉电模式。 (17) 具有PLL 片上时钟发生器。

下所示:

4.2.2 电源电路

图 4.4 S3C2440A 部分电路引脚图

图 4.4三端稳压集成电路芯片7805

用比较常见的三端稳压集成电路芯片7805将24V转换为5V。7805的实物图如

汽车的电池一般为24V的电压输出,在本系统中需要用到5V和3.3V的电压,因此采

7805只有三条引脚输出,分别是输入端、接地端和输出端。它的样子类似

是普通的三极管,TO- 220 的标准封装,也有9013样子的TO-92封装。7805输出电压典型值为5.0V,误差不超过0.2V,最大输出电流1.5A。在实际使用时,当稳压管温度过高时,稳压性能将变差,甚至损坏,因此需要安装足够大的散热器(功率较小时也可不需要)。

得到5V电压后,可以用LM1117-3.3芯片输出3.3V的稳定电压。LM1117是一个低压差电压调节器系列。其压差在1.2V输出,负载电流为800mA时为1.2V。它与国家半导体的工业标准器件LM317有相同的管脚排列。LM1117有可调电压的版本,通过2个外部电阻可实现1.25~13.8V输出电压范围。另外还有5个固定电压输出(1.8V、2.5V、2.85V、3.3V和5V)的型号。

LM1117提供电流限制和热保护。电路包含1个齐纳调节的带隙参考电压以确保输出电压的精度在±1%以内。LM1117系列具有LLP、TO-263、SOT-223、TO-220和TO-252 D-PAK封装。输出端需要一个至少10uF的钽电容来改善瞬态响应和稳定性。本系统中用到的3.3V固定输出版本输出电压波动范围在0.2%以内,输出电流能达到800mA。电源模块电路如下:

图 4.5电源电路模块

4.2.3 外部存储器电路

本系统由于加入了Linux操作系统,因而要求有较大的存储容量,这里采用

的是64M的SDRAM加上128M的NAND FLASH的双存储结构。SDRAM具备高速访问和随机读写的特性,用于作为系统的内存单元,NAND FLASH具有接口简单,存储容量大,擦写速度快等特点,用于作为数据和程序的存储设备。

本系统采用两片K4S561632C组成32位宽的SDRAM。每片K4S561632C有12根地址线,这样其总共的寻址空间就是4K*4k=16M,其数据线宽位16bit,因而每一片的存储空间大小就是16M*16bit=32MB。NAND FLASH则是采用的三星公司的KF91208F芯片。NAND FLASH采用特有的块与页的形式来存储数据,一片KF91208F有4096个块,每一个块有32个页,而每一页有512B,因而其总共存储空间有4096*32*512B=512MB,其电路图如下所示:

控制器逻辑示意图。

4.2.4 显示模块电路

晶排列变得有秩序,使光线容易通过。

图 4.6 SDRAM连接电路

色彩鲜艳度、清晰度、显示速度等方面具有非常大的优势,选用 TFT 液晶屏作

本系统的显示单元采用TFT LCD模块,LCD是基于液晶光电效应的显示设备,

的控制,对其电极不通电时,排列变得混乱,阻止光线通过,而当对其通电时液

从而让光线通过或者不通过某些液晶单元,以达到显示的目的。也就是说每个液

晶单元都对应着一个电极,LCD 的驱动电路就是对每个液晶单元的不通电或通电

液晶屏可以显示图形、文字等大量丰富的信息,在液晶屏上可以实时显示温

为显示单元符合数字化、智能化的发展趋势。图 4.5 是 S3C2440A 内部的 LCD

度信息等。与单色图形点阵式 LCD 和 RCT 显示器相比,TFT 液晶屏在空间占用、

它的分子晶体以液固态形势存在,基本工作原理就是通过给不同的液晶单元供电,

图 4.6 显示模块连接图

图 4.6 S3C2440A 内部LCD 控制器

4.2.5 按键输入电路

本系统中需要4个按键,分别为功能键、确认键以及“+”、“-”按键。由于

按键数量较少,直接接在S3C2440的通用输入输出口GPF0、GPF1、GPF2、GPF3上,这四个GPIO口都具有中断功能,在驱动程序中,这四个按键被实现为一个简单字符设备,在读操作中等待按键端口的下降沿电平跳变到来。具体的电路图如下所示:

图 4.7 按键输入电路图

4.3 CAN收发模块 CAN

总线模块由一个CAN总线控制器SJA1000和一个CAN收发器

PCA82C250组成,它们共同构成一个CAN节点的收发模块。

SJA1000是Philips公司推出的一种独立CAN控制器,用于移动目标和工业环 境中的区域网络控制。它全面兼容CAN2.0B协议,同时支持11位和29位标识码 ,位速率可达1Mbits/S。SJA1000有两种工作模式,分别为BasicCAN模式和PeliCAN、 模式。

SJA1000芯片的原理图如下所示:

图 4.8 SJA1000芯片原理图

SJA1000有自己的数据、地址总线,并且是分时复用的,ALE是地址锁存信 号。

PCA82C250 是CAN 协议控制器和物理总线间的接口,它主要是为汽车中高速通讯(高 达1Mbps)应用而设计。此器件对总线提供差动发送能力,对CAN 控制器提供差动接收能力,完全符合“ISO11898”标准。其引脚图如下所示:

图 4.9 PCA82C250引脚图

SJA1000和PCA82C250的连接图如下所示:

图 4.10 CAN收发接口电路

1. CAN接口与控制器的连接。SJA1000的AD0~AD7作为地址数据复用线 接在控制器的IO端口上,控制器控制ALE信号来表明AD0~AD7是作为地址线还是作为数据线。当AD0~AD7作为数据线时,控制器通过RD和WR信号来表明是读数据或者写数据的操作。

2. CAN接口与总线的连接。CAN收发器82C250的CANH、CANHL直接连接到 CAN总线的CANH、CANL数据线。

4.4 CAN节点电路

本系统的 CAN 节点分为两类:采集信号的采集节点和发出控制信号的执行节点。采集节点与控制节点都包含MSP430控制器和CAN收发模块,而采集节点还包括传感器模块,控制节点则包括执行机构。 4.4.1 MSP430单片机控制器

MSP430系列单片机是由TI公司开发的功能强大的16位低功耗微型控制器,

抗干扰能力强,适应温度范围宽,在各种恶劣的环境下都能可靠的工作,同时该系列单片机将大量外围设备整合到片内,非常适合嵌入式智能仪器仪表和检测模块开发,同时MSP430有丰富的不同类型器件可供选择,给设计者带来了很大的灵活性,本设计采用的是该系列中的MSPF149A单机。

MSPF149A单片机有60K的片内FLASH和1KB的片内RAM,并带有6个8位输入输出可配置且带中断的IO口和12位的高速多通道积分型模数转换电路。其最小系统电路如下:

RD4.4.2.1 温度采集

4.4.2 信号采集节点

、WR、ALE信号。

(5)可选择寄生工作方式。

(2)先进的单总线数据通信。

(1)全数字温度转换及输出。

(7)内置EEPROM,限温报警功能。

(9)多样封装形式,适应不同硬件系统。

图 4.11 MSP430最小系统电路

(3)最高12位分辨率,精度可达0.5摄氏度。

(4)12位分辨率时的最大工作周期为750毫秒。

(6)检测温度范围为–55°C ~+125°C (–67°F ~+257°F)

本系统需要四个温度采集节点,分别采样车内外温度,蒸发器表面温度

相关的小产品的不二选择。DS18B20的主要特征如下:

(8) 64位光刻ROM,内置产品序列号,方便多机挂接。

力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。18B20共有

单片机的P0口接CAN收发模块控制器SJA1000的AD0~AD7,用于和CAN

类众多,在应用与高精度、高可靠性的场合时DALLAS(达拉斯)公司生产的

精度高,与单片机的线路连接简单,附加功能强,使得DS18B20成为开发温度

DS18B20温度传感器当仁不让。超小的体积,超低的硬件开消,抗干扰能力强,

DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰

和发动机水温。温度的正确测量对本系统的正确运行至关重要,它的精度直接决

通信的IO端口,P2.1、P2.2、P2.3、P2.4分别接CAN收发控制器SJA1000的CS、

定了整个系统的控制精度,因此要求选取高精度的温度传感器。温度传感器的种

三种形态的存储器资源,它们分别是:ROM 只读存储器,用于存放DS18B20ID编码,其前8位是单线系列编码(DS18B20的编码是19H),后面48位是芯片唯一的序列号,最后8位是以上56的位的CRC码(冗余校验)。数据在出产时设置不由用户更改。DS18B20共64位ROM。RAM 数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户EEPROM(常用于温度报警值储存)的镜像。在上电复位时其值将被刷新。第5个字节则是用户第3个EEPROM的镜像。第6、7、8个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。第9个字节为前8个字节的CRC码。EEPROM 非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20共3位EEPROM,并在RAM都存在镜像,以方便用户操作。控制器对18B20操作流程如下: 1, 复位:首先我们必须对DS18B20芯片进行复位,复位就是由控制器(单片机)给DS18B20单总线至少480uS的低电平信号。当18B20接到此复位信号后则会在15~60uS后向MSP430单片机回发一个芯片的存在脉冲。

2, 存在脉冲:在复位电平结束之后,控制器应该将数据单总线拉高,以便于在15~60uS后接收存在脉冲,存在脉冲为一个60~240uS的低电平信号。至此,通信双方已经达成了基本的协议,接下来将会是控制器与18B20间的数据通信。如果复位低电平的时间不足或是单总线的电路断路都不会接到存在脉冲,在设计时要注意意外情况的处理。

3, 控制器发送ROM指令:双方打完了招呼之后最要将进行交流了,ROM指令共有5条,每一个工作周期只能发一条,ROM指令分别是读ROM数据、指定匹配芯片、跳跃ROM、芯片搜索、报警芯片搜索。ROM指令为8位长度,功能是对片内的64位光刻ROM进行操作。其主要目的是为了分辨一条总线上挂接的多个器件并作处理。诚然,单总线上可以同时挂接多个器件,并通过每个器件上所独有的ID号来区别,一般只挂接单个18B20芯片时可以跳过ROM指令(注意:此处指的跳过ROM指令并非不发送ROM指令,而是用特有的一条“跳过指令”)。

4, 控制器发送存储器操作指令:在ROM指令发送给18B20之后,紧接着(不间断)就是发送存储器操作指令了。操作指令同样为8位,共6条,存储器操作指令分别是写RAM数据、读RAM数据、将RAM数据复制到EEPROM、温度转换、将EEPROM中的报警值复制到RAM、工作方式切换。存储器操作指令的功能是命令18B20作什么样的工作,是芯片控制的关键。

5, 执行或数据读写:一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要视存储器操作指令而定。如执行温度转换指令则控制器(单

片机)必须等待18B20执行其指令,一般转换时间为500uS。如执行数据读写指令则需要严格遵循18B20的读写时序来操作。若要读出当前的温度数据我们需要执行两次工作周期,第一个周期为复位、跳过ROM指令、执行温度转换存储器操作指令、等待500uS温度转换时间。紧接着执行第二个周期为复位、跳过ROM指令、执行读RAM的存储器操作指令、读数据(最多为9个字节,中途可停止,只读简单温度值则读前2个字节即可)。

DS18B20只需要接到控制器(单片机)的一个I/O口上,由于单总线为开漏所以需要外接一个4.7K的上拉电阻,它的运行依靠接受控制器的指令,指令表如下:

表 4.3 DS18B20的ROM指令

指令名称 Read ROM Match ROM Skip ROM Search ROM Alarm Search Write Scratchpad Read Scratchpad Copy Scratchpad Convert T Recall EEPROM Read Power Supply 指令含义 值 33H 55H CCH F0H ECH 4EH BEH 48H 44H B8H B4H 读DS18B20的64位ROM值,在只挂一个DS18B20时使用 当多个DS18B20挂接在同一总线用于寻址芯片 使芯片不对ROM编码做出反应 搜索总线上挂接的所有DS18B20 搜索高于最高温度或低于最低温度的芯片 向芯片RAM中写数据 从芯片RAM中读数据 将RAM数据复制到EEPROM中 使芯片将进行一次温度转换 将EEPROM中的报警值复制到RAM 读芯片的电源状态字

由于采用的是单总线的方式通讯,DS18B20与单片机的连接非常简单,具体电路图如图4-10所示:

图 4.12 温度采集电路

4.4.2.1 太阳辐射强度采集

太阳辐射强度的测量是利用光敏元件在不同光照强度下,输出电信号也相应不同。太阳辐射传感器包括光敏电阻、光敏二极管或者光敏三极管等类型。光敏电阻的原理是其受到光照后阻值会变小,光敏二极管和三极管的原理是基于硅PN结光照后产生的光电效应,当光敏二极管工作于反向偏压下,其光谱响应特性主要受半导体材料中所掺的杂质的影响,使用光敏三极管时,通常其基极开路,基极-集电极产生的光感生电流直接注入基极,由于光敏三极管也是三极管中的一种,因而自身具有放大作用,因此光敏三极管与光敏二极管相比其灵敏度明显要大得多。因此本设计采用光敏三极管 3DU55 作为光照强度传感器,其工作电压为 1~5V,体积小且灵敏度高。因为光敏三极管产生的光电压值比较小,在送入单片机的AD接口前需要经过放大电路的放大,具体电路如图 4-11 所示。

图 4.13 太阳辐射强度检测电路

4.4.3 控制节点

4.4.3.1 电机启停控制电路

当蒸发器中的温度足够低时,则系统需要停止压缩机的运行,相反,则需要控制压缩机的运行。由于控制节点上的微控制器MSP430的I/O口的输出电流较小,不能直接驱动继电器电路,需要加驱动电路。考虑到继电器可能会出现反向电压的现象,采用能耐高反向电压的三极管作为驱动元件,继电器选用12V的JZX-18F小型电磁继电器,最大工作电流为3A,具有体积小、动作迅速等特点。电路设计如图4-11所示。

图 4.14 电机启停控制电路

CTRL1信号接在MSP430单片机的P3.0口,这里为了加强抗干扰能力和增加驱动能力,单片机的控制信号输出通过光电耦合电路和NPN型三极管电路送给继电器。当P3.0口输入高电平时,光耦输入端有电流产生,光耦内部的发光二极管开始发光,输出端的光敏三极管导通,最终继电器线圈通电,触点得以闭合。当P3.0口为低电平时,光耦输入端无电流产生,继电器线圈没有通电,因此触点断开,与继电器相连的二极管可以释放继电器线圈中的反电势电流,起到了续流的作用,保护继电器安全工作。

4.4.3.2风门开度控制电路

风门开度控制电路用于控制冷热风混合风门、出风口风门的挡板开度,从而控制出风的温度和风向。而挡板开度的控制其本质就是控制电机的转动角度,这种控制方式非常适合使用步进电机来进行控制。

步进电机是一种能够将电脉冲信号转换成角位移或线位移的机电元件,它 实际上是一种单相或多相同步电动机。单相步进电动机有单路电脉冲驱动,输 出功率一般很小,其用途为微小功率驱动。多相步进电动机有多相方波脉冲驱 动,用途很广。 使用多相步进电动机时,单路电脉冲信号可先通过脉冲分配器转换为多相脉冲 信号,在经功率放大后分别送入步进电动机各相绕组。每输入一个脉冲到脉冲 分配器,电动机各相的通电状态就发生变化,转子会转过一定的角度(称为步距 角)。 正常情况下,步进电机转动总的角度和输入的脉冲个数成正比;连续输入一定频率的脉冲时,电动机的转速与输入脉冲的频率保持严格的对应关系,不受 电压波动和负载变化的影响。由于步进电动机能直接接收数字量的输入,所以 特别适合于微机控制。总体上说,步进电机有如下优点:

1.不需要反馈,控制简单。

2.与微机的连接、速度控制(启动、停止和反转)及驱动电路的设计比较简单。

3.没有角累积误差。 4.停止时也可保持转距。

5.没有转向器等机械部分,不需要保养,故造价较低。 6.即使没有传感器,也能精确定位。

7.根椐给定的脉冲周期,能够以任意速度转动。

综合以上考虑,本设计采用一个两相四线步进电机作为风门开度控制电机,为了电路必须保证步进电机的绕组有足够的电压、电流和正确的波形,同时也要保证驱动电路功率放大器件的安全运行,这里选用集成芯片 L298N 作为步进电机的驱动芯片。L298N 是 SGS 公司为控制和驱动电机而设计的双通道推挽式功率放大专用集成电路器件,将分立电路集成在单片 IC 之中,使外围器件成本

降低,整机可靠性提高。其具体的电路连接如下图所示:

图 4.15 风门开度控制电路

4.4.3.3 鼓风机控制电路

由于鼓风机节点需要实现的是风速的调节,也就是控制直流电机的转速。而MSP430单片机的内部定时器可以实现PWM波的输出,因此,可以利用这一特性,对直流电机进行脉宽调制(PWM)的方式来实现转速的调节。

由于内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,该芯片可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。因此,这里还是采用L298N作为直流电机调速的驱动芯片,其电路连接图如下所示:

图 4.16 鼓风机控制电路

这里,由于只需要控制电机的转速,无需控制电机的正反转,因而IN1、IN2不再连接到单片机的IO口,而是直接固定接高电平或低电平,从而是电机始终保持一种转向。ENA则与单片机的PWM输出口相连,单片机通过输出不同占空比的PWM波来调节电机的转速。

第5章 系统软件结构设计 5.1 系统软件的整体分析和设计

本设计中CAN主节点要接收多个子CAN节点的信息,并做复杂的模糊PID运算,并根据运算结果向控制CAN子节点发出控制指令,而CAN子节点仅仅只需采集传感器的数据并通过CAN总线发送,或者接受CAN主节点的控制。由此可见,主节点与子节点的任务规模和复杂度相差很大,因而,本设计中主节点采用Linux操作系统的来实现,而子节点只需要采用传统的大循环加中断的裸机程序结构。

主节点采用的基于ARM920T核的S3C2440芯片搭配64M的SDRAM和256M的NAND FLASH,再加上ARM9内带的内存管理单元(MMU)的支持,可以实现Linux的移植。其程序的开发在PC端的虚拟Linux系统完成,并通过多种接口将编译完成的可执行代码下载到ARM端的Linux系统运行。

子节点的程序开发也是在PC端的IAR集成开发环境中完成,并通过JTAG接口将程序下载到MSP430的FLASH中运行。

5.2 主节点程序设计

主节点的工作主要包括接收信息采集子节点通过CAN网络传输的传感器采用信息、接收按键输入的设定温度、根据用户设定温度以及传感器的采样信息进行模糊PID运算、向控制子节点发出控制信息、在TFT液晶屏上实时显示当前的温度和光照等状态信息。由于S3C2440芯片在正常工作前必须对系统进行正确的配置和代码搬运等一些前期的工作,而Linux系统的启动也同样需要一小段代码去引导,因而,首先必须完成启动代码的移植,接着还需移植操作系统内核和根文件,完成这些,应用程序的运行平台才算建立。整个程序开发的过程如下图所示:

启动代码内核文件根文件系统驱动程序应用程序

图 5.1 主节点程序开发流程

由于Linux的代码开源特性以及其在网络上的广泛传播 ,因此流程的前几步基本可以通过网络或其他途径来实现,其方法也已经形成统一的模式,因此在这里对于这几步就不多做介绍,而把重点放在最后两步:驱动程序和应用程序。由于Linux操作系统的特性,应用程序不能直接访问底层硬件模块,而只能通过驱动来提供读写访问接口,为了读写CAN总线的信息,必须为CAN收发模块实现驱动程序;而应用程序的设计是主节点的核心,主节点的大部分工作由应用程序来完成。

5.2.1 主节点CAN收发模块驱动程序设计

Linux的驱动程序主要分为字符设备驱动、块设备驱动、网络设备驱动等几

大类。字符设备指那些必须以串行顺序依次进行访问的设备,如触摸屏、磁带驱动器、鼠标等。块设备可以用任意顺序进行访问,以块为单位进行操作,如硬盘、软驱等。字符设备不经过系统的快速缓冲,而块设备经过系统的快速缓冲。网络设备面向数据包的接收和发送而设计,它并不对应于文件系统的节点。内核与网络设备的通信和内核与字符设备、块设备的通信方式完全不同。显然,本设计中CAN收发模块更符合字符设备的定义,且字符设备驱动实现方式简单明了,因此,这里我们打算以字符设备的方式来实现CAN模块的驱动。

在Linux系统中应用程序对字符设备的访问都是以文件的形式存在,因此驱动程序需为该设备创建一个文件节点并实现文件访问函数open()、read()、write()、 ioctl()等。Linux驱动程序与应用程序以main函数作为入口函数不同,它的入口函数以内核函数module_init来指明,通常入口函数都以设备名称命名为xxxx_init的形式,因此在这里我们可以将驱动程序的入口函数声明为如下形式: static __init can_init(void);

在入口函数中,要实现的工作包括字符设备号的申请、字符设备结构体的初始化、设备注册、文件节点的创建。在Linux 2.6.32版本内核中,该实现过程如

下:

(1)首先调用register_chrdev_region或者alloc_chrdev_region函数申请设备号的使用,两者的区别在于前一个函数申请的设备号由用户,后一个函数则由内核分配一个未使用的设备号。

(2)初始化字符设备描述结构体cdev,主要是为其成员变量赋值,从而使该结构体与申请到的设备号关联,并且和用户指明的文件操作结构体指针关联。 (3)调用cedv_add函数向内核注册设备。

(4)使用class_create和device_create函数在文件系统的dev目录下创建对应该设备的文件节点。

完成以上过程之后,还需要实现文件操作结构体file_operations中的文件操作函数,这里主要实现open、read、wrie函数,对于设备的打开和读写操作。

在打开设备的操作open函数中,首先将与S3C2440与CAN模块连接的IO进行地址映射,然后完成CAN收发器SJ1000的初始化工作,其流程如下:

初始化开始置工作方式为复位模式置通信模式为PeliCAN设置验收屏蔽码设置验收代码值设置正常输出模式设置RX缓冲起始地址清除TX错误计数清除错误代码捕获寄存器置工作方式为工作模式初始化结束

图 5.2 CAN收发控制器初始化程序

完成初始化之后,便可用read和write函数读写CAN模块,考虑到数据的传输可靠性,这里读写函数都以阻塞的方式实现。在读函数read中,只需读SJA1000的状态寄存器,若没有,则等待一段时间后重新读状态寄存器,若有数据接收,

则将接收的数据读出并通过调用从内核向用户空间拷贝的函数copy_to_user把接收的数据返回给用户程序。具体的流程如下图所示:

开始读SJA1000状态寄存器N接收缓冲区是否收到信息?Y从缓存区读出信息释放接收缓存区拷贝信息到用户空间返回到用户程序

图 5.2 CAN主节点接收程序

发送过程只需要把数据写到CAN控制器的发送缓存区,启动发送数据命令后CAN控制器会自动完成向CAN总线的数据发送,其程序流程图如下所示:

开始读SJA1000状态寄存器N发送缓存区是否被锁Y写入发送信息置发送请求位N是否发送完成Y返回到用户程序

图 5.3 CAN主节点发送程序

5.2.2 主节点应用程序设计

5.2.2.1 主节点标定程序设计

在汽车行驶当中,车外空气和太阳辐射都会向汽车乘用仓传递热量,由于这部分热量较小,在本设计中简单地以模糊控制的思想对这部分热量利用内外风门开度进行补偿 。在这里将车外温度分为寒冷、凉快、舒适、暖和、炎热五个等级,将太阳辐射也分为微弱、适度、强烈三个等级。标定程序开始后,车外温度测量节点采集车外空气的温度并将数据传递给主节点。此时标定程序在显示屏上提示用户选择当前车外温度的等级,根据用户的选择,确定每个温度等级对应的温度范围。同样,太阳辐射节点将太阳辐射对应的电压值F传递给主节点后,主节点也会要求用户选择当前的辐射等级,若用户选择的是微弱级,则电压0-2F对应的太阳辐射是微弱,2F-4F是适度,大于4F则是强烈;若用户的选择是适度,则将0-0.5F定义为微弱,0.5F-2F定义为适度,大于2F定义为强烈;若用户选择的是强烈,则0-0.25F定义为微弱,0.25F-0.5F定义为适度,大于0.5F定义为强烈。车外温度以及太阳辐射决定了内外循环风门的开度,如下表所示:

开度 寒冷 凉快 舒适 暖和 炎热

微弱 0% 30% 60% 50% 20% 适度 10% 40% 70% 40% 10% 强烈 20% 50% 60% 30% 0% 5.2.2.2 主节点其他程序设计

主节点应用程序要同时运行人机交换、CAN节点通信和运算等多个任务。

因此在这里采用Linux的多线程编程首先运行主线程,在主线程成创建执行其他任务的子线程。主线程的运行过程如下:

(1)打开CAN模块的设备文件节点来完成CAN模块的初始化。

(2)打开配置文件,根据配置文件设置设定温度、风速、各风门开度等信 息,若打开失败,则开始标定工作,确定车外温度和太阳辐射的补偿数,并创建配置文件。

(3) 创建用于保存接收信息的全局缓存区,分别保存车内温度、车外温度、 发动机水温、冷凝器温度、太阳辐射强度。

(4)创建子线程,完成恒温控制的主要工作。 (5)等待子线程退出。

主线程创建的第一个线程为人机交换线程,用于接收用户的按键。主要有功能键、确认键和“+”键、“-”键。功能键用于用户选择要执行的操作,当用户按下功能键之后,在液晶屏上会弹出一个列出用户所以可以执行的操作的菜单。包括温度设定、内外循环风设定、空调开关、出风口风向设定、风速设定。用户通过“+”和“-”来选择,并用确认键来确认选择。选择某一菜单之后,可以通过“+”和“-”以及确认键来进行具体的设定。例如需要调节风速,则在选择风速设定菜单后使用“+”来增大风速,使用“-”来减小风速,这里将风速分为5级,调节到不同的等级后,会调用控制传输子函数,控制传输子函数向鼓风机控制节点发送控制信息,鼓风机节点则调整电机的转速,从而实现风速的调节。当调节完毕,按下确认键就会返回到显示主界面。

主线程创建的第二个线程为信息采集子线程,用于读取CAN控制器的接收数据缓存区,由于CAN驱动的读操作是阻塞读的方式,因此,当没有数据可读时,

该线程也会睡眠,直到有数据到来,则解析出节点地址,并保存数据到相应的全局缓存区中去。

最后一个创建的线程实现PID运算,并根据运算结果调用控制传输子函数发出控制信息。

整个主节点应用程序的流程图如下所示:

开始CAN模块初始化是否需要标定?NY标定配置各个控制节点初始状态建立数据接收缓存区创建子线程人机交互信息接收数据处理结束

图 5.4 主节点应用程序流程图

5.3 温度采集节点程序设计

温度采集节点程序首先初始化CAN节点和DS18B20芯片并开启定时中断,初始化完成后开始一个大循环,在循环中查询定时中断标志是否置位,如果已经置位,表示要开始温度转换,则MSP430单片机通过与DS18B20的单总线相连的P2.0端口向DS18B20芯片发出温度转换命令,接收到单片机的测温命令后芯片自动完成温度测量的工作并将测量结果转换成数字信号,在接收到读RAM命

令后将数字结果发送给单片机。单片机在每向DS18B20发出温度转换的命令,并等待一段时间后读出转换结果并发送给主节点。具体的软件流程图如下:

开始DS18B20初始化中断是否到来?Y向DS18B20写温度转换命令N读温度值发送数据返回下次循环

图 5.5 温度采集节点程序

发送数据部分的实现基本与主节点类似,把数据和地址按照固定的帧格式发送到CAN收发控制器SJA1000芯片,由芯片自动完成发送。

5.4 太阳辐射采集节点程序设计

太阳辐射节点的程序设计大致与温度采集相同,区别在于:这里单片机直接与传感器相连,因而需要实现数模转换程序。MSP430单片机内部集成了12位的模数转换电路,在程序中只需初始化AD模块的时钟和转换模式,就可以开启转换,在转换完成后会把相应的标志位置位。此外,考虑到采样的精度,这里采用了滑动数字滤波方式来提高精度。滑动滤波就是每次采样后将采样结果放入一个固定长度的队列中,当队列满时,将最先入列的数据出列,然后将队列中除最大最小值外的其他值取平均值,将这个平均值作为采样结果发给主节点。整个节点的程序具体的流程图如下:

开始AD和定时器等模块初始化N定时中断是否到来?Y开始AD转换NAD转换完成?Y滑动滤波运算发送数据完成一次数据采集发送

图 5.5 太阳辐射采集节点程序

5.5 压缩机控制节点程序设计

压缩机的状态只有运转和停止两种,因此其控制节点的程序设计比较简单,

在接收到主节点的停机命令后,只需要把相应的IO端口置为低电平,继电器失电就会弹开,压缩机就会断电停机。而收到启动命令时,则只需把相应端口变为高电平即可。

5.6 风门开度控制节点程序设计

风门开度控制节点在接收到主节点的信息后,解析出地址信息并判断是否等

于本节点地址,如果是相等,则继续解析出风门转动的方向(正转或者反转)和角度;否则丢弃接收的信息。

确定了风门需要转到的方向和角度后,MSP430单片机通过IO接口驱动步进电机做出相应的动作。本系统中的两相四线制步进电机的转动按照通电的绕组数有三种驱动方式:半拍方式,单拍方式,双拍方式。双拍方式的输出扭矩是最大

的,因而本系统中采用这种方式来驱动,它的每个步进角为1.8度,由以下四个步序构成(若需要电机做相反的转动,只需将以下步序反过来就可以): 表5-1 两相步进电机双拍方式控制序列

步序 通电方式 1 2 3 4 AB 二进制编码 0110 1010 1001 0101 AB AB AB 风门控制节点的具体程序流程图如下所示:

开始CAN模块初始化NCAN模块是否有数据到来?Y解析数据地址是否匹配Y根据接收的指令控制步进电机转动返回并等待数据

图 5.6 风门开度控制节点程序

5.7 鼓风机控制节点程序设计

鼓风机控制节点的程序设计主要是根据主控节点的指令调节鼓风机的转速。

转速的调节以PWM的方式实现。

MSP430F149内部的16位定时器模块TimerA可以实现PWM输出的功能,且可以实现频率和占空比的调节。要实现PWM输出,必须首先写TimerA的寄存器TACTL来配置时钟和模式。时钟设置为8M的子系统时钟SMCLK8分频,模式设置为增计数模式。并且还需要写CCTL1寄存器将比较/捕获模式设置为比较模式,将输出模式设置为PWM置位/复位模式。以上完成后只需写CCR0寄存器和CCR1寄存器,一个PWM输出的时间为计数单位在1M时钟下从0计数到CCR0的时间,并且在计数到CCR1时输出为取反,因此CCR0的值代表了PWM输出的频率,CCR1的值代表了PWM输出的占空比。这里将CCR0设置为1000,这里PWM输出的频率就是1KHZ,初始占空比为40%,因而CCR1应该设置为400。鼓风机控制节点的程序流程图如下所示:

开始CAN模块初始化和PWM输出模块初始化NCAN模块是否有数据到来?Y解析数据地址是否匹配Y根据主节点指令设置PWM输出的占空比返回并等待数据

图 5.6 鼓风机控制节点程序

第6章 模糊PID控制

3.2 模糊控制

在传统的控制领域里,控制系统动态模式的精确与否是影响控制效果的最主要关键,系统动态的信息越详细,则越能达到精确控制的目的。然而,对于强耦合、时变性、非线性与不确定性等复杂的系统,一般建立模糊集合论、逻辑推理构成的模糊模型进行控制。模糊控制(FC)采用专家控制经验,对复杂对象的控制表现出良好的鲁棒性和控制性能等优点。

3.2.1模糊数学基础

1.模糊集合的定义

设论域U,A为其经典子集,u为U的某一元素,U到闭区间[0,1]的特征函数用?A来表示

?A(u)???1?0u?Au?A

称A为模糊集,?A为A的隶属函数,?A(u)表示u隶属于A的程度,简称为隶属度。模糊子集是由隶属函数?A(u)唯一确定,?A(u)值域越接近于1,表示u隶属于A的程度越大。 2.模糊关系和模糊矩阵

设U,V为论域,若R?F(U?V),则称R是U到V的模糊关系;若u?U,

v?V,则R(u,v)是u到v的关联程度。

设有限集论域U?V,R?F(U?V),R用矩阵的形式表示如下:

R?(rij)m?n

rij?[0,1]

此时R即模糊矩阵,rij为模糊矩阵的元素。 3.隶属函数

隶属函数就是对模糊概念的一种描述,它是进行模糊控制中的基础,隶属函数一般是依据经验、统计进行确定的,也可以由专家、权威给出。设计时常用的隶属函数包括trimf隶属函数、trapmf隶属函数和gaussmf隶属函数等。

3.2.2模糊数学理论

(一)模糊控制器的组成

模糊控制系统一般由输入、输出接口电路,模糊控制器,广义对象和检测装

置等组成,如图3-2所示。由图可知,与一般计算机控制系统相比,它们在整体结构上基本相同,不同的是控制器的类型。

r(t)e(t)输入接口模糊控制器输出接口u(t)执行机构被控对象广义对象传感器系统y(t)-图3-2 模糊控制系统框图

(l) 模糊控制器

由于模糊控制的输入是精确量,所以,它主要是对输入量进行模糊化、模糊规则运算以及清晰化等。模糊控制器的结构、模糊规则、推理算法及等决定了模糊控制系统的性能,所以模糊控制器在整个模糊控制系统中具有至关重要的作用。 (2) 接口电路

-由于本设计中引入了CAN总线网络,因此输入/输出接口电路由数据采集节点和控制节点来实现,输入/输出接口是模糊控制器连接前、后系统的两个通道。数据采集节点是把传感器检测到的模拟信号转换为数字信号传输到主节点中。控制节点是接收模糊控制器输出的控制信号进而控制执行器,来控制被控对象。 (3) 广义对象

它包括执行机构与被控对象。执行机构一般为继电器、调节阀、伺服电机等。被控对象可以是线性或非线性的、可以是单变量或多变量的,可以是有时滞或无时滞的等多种情况。 (4)检测系统

检测装置对整个控制系统的性能有很大的影响,所以,它在控制系统中占有很重要的地位,必须具有精度高、可靠且稳定性好等特点。一般有传感器、转换电路、信号处理组成。在工业控制现场多是直接由传感器进行检测在进行信号转换来实现。

(二)模糊控制器的设计

一般模糊控制器有模糊化、模糊推理、知识库和清晰化组成。具体的结构如下图3-3示。

知识库模糊化模糊推理清晰化被控对象图3-3 模糊控制器的基本结构

模糊控制器的设计具体如下几个步骤:

(l)模糊控制器的结构 设计控制器的输入、输出量。

(2)模糊控制器的知识库 需要设计者确定数据库中隶属函数的选择和用模糊语言变量表示的一系列的控制规则。

(3)模糊控制器模糊化和清晰化 模糊化的作用就是将采样得到的输入量(精确量)转变为控制器能够识别的模糊量,同样,清晰化就是把模糊推理得到的控制量转化为精确量。 一、模糊控制器的结构

一般我们把模糊控制器的输入的个数称为模糊控制器的维数,维数越高,控制就越精细,但是维数过高,控制规则就越复杂,则算法的实现就越难。 二、模糊控制器的知识库

知识库包括数据库和模糊规则库。数据库有模糊分割、隶属函数等,规则库包含一系列的控制规则。

1.输入和输出空间的模糊分割

一般有语言变量和模糊控制规则构成输入输出模糊空间。每个语言变量取值的模糊集合有相同的论域。每一个语言变量中对应的模糊语言的个数有模糊分割来确定,同时模糊分割又与控制精度相关。语言名称一般含有一定的意义。例如,NB:负大,NM:负中,NS:负小,ZE:零,PS:正小,PM:正中,PB:正大。模糊分割的个数同时也决定了模糊规则的最大个数,如对于两输入单输出的模糊控制器,E和EC的模糊分割分别为4和6,则模糊规则为4?6?24。由以上可知,模糊分割太细则规则太多,会增加计算量又不易实现,模糊分割太小则控制太粗略,难以达到控制要求。 2.隶属函数

隶属函数根据论域的不同,其描述方法分为数值描述和函数描述。离散的论域,隶属度多有表格表示,连续的论域常用函数来描述隶属度,常用的有三角形(trimf)、梯形(trapmf)和高斯型(gaussmf)。隶属函数的形状对控制器有重

要的影响,分辨率较高的隶属函数形状比较尖的,其控制较为灵敏;控制较平稳的函数形状比较缓和,稳定性较好。所以,设计者通常根据系统的偏差来选择隶属度函数。

3.模糊控制规则的建立

模糊控制规则作为模糊控制的核心,它一般用条件句来建立输入量与控制量的关系,根据模糊集合理论来进行运算,有推理结果来控制对象,在现有的模糊控制系统中,大多数情况就都采用“if?and?then”这种形式。 三、模糊控制器模糊化和清晰化 1.模糊化

对于模糊控制器,无论是偏差还是偏差变化率都是精确量,首先把它们转换为模糊集合的隶属函数才能实现模糊控制。若已知输入量e及量化因子ke,计算

ni?ke?e,求得e在基本论域[?e,?e]上的量化等级ni,然后查询语言变量E的赋

值表,找出在元素ni上最大隶属度对应的语言值所决定的模糊集合。该模糊集合就是输入量e的模糊集合,表示精确量e的模糊化。 2.清晰化

把模糊推理的结果转换为能进行控制系统的清晰值的方法即为清晰化,具体如下:

(1) 平均值法(最大隶属度)

在模糊集合论域上输出量只有一个最大值,就取隶属函数的该值作为清晰值;如果在模糊集合论域上,输出量有多个最大隶属度值,就取这些最大值的平均值为清晰值。这种方法由于信息存在丢失,常用在性能要求不好的控制系统。 (2) 中位数法(面积平分法)

它是先求得输出量模糊集合的隶属函数曲线?c(Z)和横坐标所围成的面积,然后求该面积等分为两份的均分点Z0,该点对应的论域元素就是所求的模糊集合。这种方法是常用的清晰化方法中较为合理的。

取?c(Z)的中位数Z0作为Z的清晰量,该方法的数学表达式为

Z0???Zc(Z)ZdZ/??c(Z)ZdZ

z(3)加权平均法(面积中心法)

加权平均法又称为重心法,应用较为广泛,输出模糊集U1中的各元素为

xi(i?1,2,?,n),其隶属度为?U1(xi),计算公式为

k?x?iU1(xi)x0?i?1k

(xi)??i?1U13.3 模糊-PID控制器

模糊-PID控制就是结合PID和模糊控制两者的优点来设计的一种控制器。 研究发现在温度控制系统运行的初期,温度变化的较快可以直接采用PID控制,当温度进入稳态时,即当实际温度与设定值温度的差值在较小的设定范围时模糊控制起作用。

3.3.1模糊-PID控制器结构

模糊PID控制器是以常规的PID控制为基础,采用模糊推理的思想根据不同的偏差e和偏差变化率ec对PID的参数进行自整定。该控制器由模糊推理和常规PID部分两部分组成,其结构如图3-4所示。

E模糊化ECe模糊推理ΔKpΔKdΔKiPID控制器dedt被控对象ec

图3-4 模糊-PID控制器结构图

有图可以看出,e和ec为控制器的输入, PID参数的自整定就是要找出PID的?Kp、?Ki、?Kd与e和ec之间的关系,在系统工作时不断检测e和ec,然后查询控制模糊规则表对三个参数进行修改,进而满足不同的e和ec时,取不同的参数,使系统的控制性能达到要求。

3.3.2模糊-PID控制器设计

控制器的设计是本课题的研究重点,根据模糊控制规则库的分解原理,一个多输出

系统可以分解为多个多输入单输出的系统且不失一般性,因此可以把整个模糊控制器分解成两个个二输入单输出的模糊控制器,如下图所示:

温度误差温度误差变化率模糊控制器风门开度风机转速

图6-4 系统模糊控制原理框图

本温度控制系统具有较大的滞后性、非线性等特点,我们采用PID控制与模糊

控制相结合的方法,可以构成互补的、兼有这两种控制优点的模糊-PID控制器。其具体的设计步骤如下:

(1)选择语言变量

本温度控制系统中,由于一维的模糊控制精度不高,采用二维的模糊控制方法。控制器输入量直接影响了温控系统的控制效果,对本课题而言,影响最为严重的是机械手在温箱正中间时附近的温度。所以,本文选取了温度误差,以及误差的变化率两个量作为模糊控制器的输入,模糊控制器输出量的选择为PID控制三个参数的增量。

需要设定五个语言变量,分别为:温差E、温差的变化率EC和PID三个参数的增量?Kp、?Ki和?Kd。由3.2.2中可知:论域的划分与控制精度的关系。基于本课题中温度对膜电极品质的优劣有着至关重要的影响,因此把E、EC的论域划分的较细,模糊算法采用离线计算的,所以就算算法计算复杂也不会影响系统中数据的处理。温度论域X=[70,80](?C) 各个语言变量的模糊论域具体如下: E,EC={-6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6} 量化因子ke?2?680?70=1.2

?Kp,?Ki,?Kd={-3, -2, -1, 0, 1, 2, 3,}

同上ke可求出kec,可比例因子kup,kui,kud

将输入语言变量值设置7档,即极大、大、稍大、中、稍小、小、极小,用符号表示为:PB、PM、PS、ZO、NS、NM、NB,这样能够相对准确的反应偏差值及偏差变化率的程度,输出量的语言变量值和输入的相同。 E,EC,?Kp,?Ki,?Kd={ NB、NM、NS、ZO、PS、PM、PB } (2) 选择各语言值的隶属度函数

模糊化是模糊控制器的重要部分,为使每个输入变量的值都能模糊化,已经确定了覆盖在各个模糊论域上的模糊子集的个数。下面要确定各个模糊子集的隶

属函数即模糊分布。模糊子集的分布具有完备性、一致性、交互性的特点。模糊子集的分布有的是均匀的有的是不均匀的,本课题中输入选择不均匀分布,即ZO附近的模糊子集划分的较细,每个模糊子集占用的论域段较小,因为ZO对应于系统正常工作的温度,这种分布可以提高平衡点附近的控制精度,又能够让系统在远离平衡点处快速达到平衡点附近。输入隶属函数分布如下图3-5

μNB1NMNSZOPSPMPB0-6-3-10136图3-5 输入隶属函数分布

模糊控制器的输出?Kp、?Ki、?Kd隶属函数选为高斯型。语言变量E和EC的赋值如表3-1所示,语言变量?Kp、?Ki及?Kd的赋值如表3-2所示。

表3-1 语言变量E和EC赋值表

PB PM PS ZO NS NM NB -6 0 0 0 0 0 0 1 -5 0 0 0 0 0 0.33 0.67 -4 0 0 0 0 0 0.67 0.33 -3 0 0 0 0 0 1 0 -2 0 0 0 0 0.5 0.5 0 -1 0 0 0 0 1 0 0

PB PM PS ZO NS NM 表3-2 语言变量?Kp、?Ki和?Kd赋值表 -3 -2 -1 0 1 0 0 0 0 0 0 0 0 0 0.4 0 0 0 0.4 1 0 0 0.4 1 0.4 0 0.4 1 0.4 0 0.4 1 0.4 0 0 2 0.3 1 0.4 0 0 0 3 1 0.4 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 2 0 0.5 0.5 0 0 0 0 3 0 1 0 0 0 0 0 4 0.33 0.67 0 0 0 0 0 5 0.67 0.33 0 0 0 0 0 6 1 0 0 0 0 0 0 NB 1 0.3 0 0 0 0 0 (3)设计模糊控制规则

模糊控制规则是设计模糊控制器的核心,其生成方法有两种:一是根据操作人员或专家对系统的操作经验进行的总结:二是对系统进行测试,分析数据归纳总结。本文主要是采用第一种方法并结合PID自整定的方法来确定控制规则。

?Kp、?Ki和?Kd的模糊规则如下表3-3、3-4、3-5所示。

表3-3 ?Kp的模糊规则表 E NB PB PB PM PM PS PS ZO NM PB PB PM PM PS ZO ZO NS PM PM PM PS ZO NS NM ZO PM PS PS ZO NS NM NM E NB NB NB NB NM NM ZO ZO NM NB NB NM NM NS ZO ZO NS NM NM NS NS ZO PS PS ZO NM NS NS ZO PS PS PM PS NS NS ZO PS PS PM PM PM ZO ZO PS PM PM PB PB PB ZO ZO PS PM PB PB PB PS PS PS ZO NS NS NM NM PM ZO ZO NS NM NM NM NB PB ZO NS NS NM PM NB NB EC NB NM NS ZO PS PM PB 表3-4 ?Ki的模糊规则表 EC NB NM NS ZO PS PM PB

表3-5 ?Kd的模糊规则表 EC NB NM NS ZO PS PM PB E NB PS PS ZO ZO ZO PB PS NM NS NS NS NS ZO NS NS NS NB NB NM NS ZO PS NB ZO NB NM NM NS ZO PS NB PS NB NM NS NS ZO PS NB PM NM NS NS NS ZO PS NM PB PS ZO ZO ZO ZO PB PS (4)近似推理

在建立了个语言变量的赋值表和模糊规则后,控制器的模糊关系R就可以得出,一般一个模糊控制器有n条控制规则即有n个模糊蕴涵关系R1,R2???Rn组成,但是某一时刻激活的规则一般小于总规则数,本系统中两者相处不多,所以

nR??Rj?1j

根据模糊推理求得?Kp、下面就详细的求解?Kp、?Ki和?Kd的模糊查询表。?Ki和?Kd中一个模糊规则查询表:

确定模糊关系Ri?REi?R(i?1,2,???,29)

j?6p1R1?(E7??KP1)?(?ECj??K)?RE1?REC1

R2?(E7??KP2)?(?ECj??Kj?5p2)?RE2?REC2

R29?(E1??KP7)?(?ECj??Kj?1p7)?RE29?REC29

由以上可得:

29i?129i?129j?129j?1R??Ri??(REj?RECj)?(?REj)?(?RECj)?RE?REC②

按模糊蕴涵关系的Mamdani算法计算:

在确定了模糊蕴涵关系RE和REC之后,由推理方法求得输出?Kp、?Ki、?Kd的模糊子集,具体如下:

对应于第i条模糊规则且此时的温差和温差变化为e和ec,则

?Kpi?e?Rei?ec?Reci

因此?Kp为:?Kp???Kpi 即?Kp?e?Re?ec?Rec,同理可以求得?Ki和?Kd。 (5)清晰化

上述所计算的?Kp、?Ki和?Kd实际上是输出的隶属函数,不能直接对温度控制系统进行控制,需要进行清晰化,换成每个时刻的确定的值,我们采用最大隶属度法取一个最能代表所对应的模糊集合,从而得到模糊控制查询表并存于PLC的程序存储器中。具体如附录一所示。 (6)控制算法的实现

由以上求出了模糊控制查询表,计算参数Kp、Ki、Kd的公式为

Kp?Kp0??Ei,ECi??Kp

Ki?Ki0??Ei,Kd?Kd0??Ei,ECi??Ki ECi??KdECi?为偏差和偏差变化率某时刻的

式中Kp0、Ki0、Kd0为PID的初始值,?EiPID的参数完成参数的调整。

值。PLC运行时,不断的检测到e和ec进行模糊化后,通过查询表及上式可得

3.4 3仿真

1、建立被控对象模型

本系统着重研究的是汽车乘用仓的温度控制,为了进行不同算法控制的不同效果,需要确定烘箱的数学模型进行仿真,通常采用飞升曲线法来获得对象曲线,用Cohn-Coon求得参数,烘箱的温度变化可用一阶惯性纯滞后环节来模拟,其传递函数为:

G(s)?Ke??sTs?1

其中,K为对象的增益,T为时间常数,?为纯滞后。 飞升曲线法:

c(t)c(?) 0.63c(?) r00.39c(?) t?t1t2

图3-6 一阶惯性纯滞后对象飞升曲线

K?c(?)r,r为阶跃信号的幅值

t??t??0??t??c(t)???T??1?e* ,这两个时刻t1和t2,且t2?t1??,有:

t1??Tt2??Tc(t1)?1?e*?;c(t2)?1?e*?

T?t1?t2ln[1?c(t1)]?ln[1?c(t2)]****?T?2(t2?t1)

??t2ln[1?c(t1)]?t1ln[1?c(t2)]ln[1?c(t1)]?ln[1?c(t2)]**???2t1?t2

这种计算法要比切线法更精确,所以本系统的温度控制系统的传递函数类似于一般的烘箱,具体如下:

G(s)?0.92e?30?144s?1

2、①采用一般的PID对烘箱进行控制

图3-7 PID控制仿真结构图

初始温度不同时PID仿真结果如下:

图3-8 温度初始为0时PID仿真图

图3-9 温度初始为10时PID仿真图

②采用模糊-PID对烘箱进行控制

图3-10 模糊-PID控制仿真结构图

在MATLAB中输入fuzzy,进入FIS编辑界面如下图:

图3-11 模糊编辑器

对每个变量的隶属函数进行设置,然后按照模糊控制规则设置模糊规则编辑器如下图:

图3-12 模糊规则编辑器

初始温度不同时模糊-PID仿真结果如下:

图3-13 温度初始为0时模糊PID仿真图

图3-14 温度初始为10时模糊PID仿真图

通过仿真结果可以看出:初始温度不同时,采用PID控制算法且参数不变,控制效果会发生变化,模糊-PID控制当初始温度不同时控制效果几乎不变,结合调节时间和超调等来看,可知,模糊-PID控制比单纯的PID控制效果要好些

本文来源:https://www.bwwdw.com/article/x5xw.html

Top