嵌入式设计应用
μCLinux下的变频调速控制系统的设计
20世纪后半叶,变频调速技术[1]的出现和日益完善,成为电力拖动领域的一个重大事件。由于变频调速技术的发展,使结构简单牢固、价格低廉、应用普及的交流异步电动机有了性能良好的调速手段。
近 10年来,随着电力电子技术、计算机技术、自动控制技术的迅速发展,电气传动技术面临着一场历史革命,即交流调速取代直流调速和计算机数字控制技术取代模拟控制技术已成为发展趋势。交流异步电机变频调速技术是当今节电、改善工艺流程以提高产品质量和改善环境、推动技术进步的一种主要手段。变频调速以其优异的调速和起制动性能,高效率、高功率因数和节间效果,广泛的适用范围及其它许多优点而被国内外公认为最有发展前途的调速方式。
ARM技术是嵌入式系统方面的主流技术。目前市场上 ARM芯片速度可达几百兆,以它为主控芯片可在硬件上实现高速、高精度且具有一定处理能力的变频调速控制系统。本系 1统采用 Philips公司的 LPC2292处理器,结合嵌入式 µClinux操作系统来实现其功能。嵌入式 µClinux操作系统提供了丰富的驱动资源。LPC2292处理器具有丰富的接口资源,能够满足变频调速控制系统的设计要求。
2 系统硬件的工作原理
图 2.1为变频调速控制系统的硬件设计和工作原理图。系统的硬件设计主要有 ARM处理器模块、以太网模块、键盘输入模块、LCD显示屏模块、数据采集模块、A/D模数转换模块和 PWM脉宽调制模块 7部分。 ARM处理器模块主要包括 PLC2292处理器、FLASH、 SDRAM、电源模块、实时时钟模块和其它辅助电路构成。 ARM处理器模块是变频调速控制系统的核心处理单元,以 LPC2292为控制核心;以太网口接口模块[2]主要负责变频调速控制系统进行远程控制和监视;键盘模块负责工作参数的设置输入,以及工作状态的切换; LCD显示屏模块负责当前设置和工作状态的显示,同时显示时钟日历等,实时时钟通过 I2C总线与 LPC2292连接;数据采集模块主要负责从外部采集信息; A/D模数转换模块主要是负责将数据采集模块采集来的模拟信号转换成数字信号;PWM脉宽调制模块主要负责通过 IPM职能功率模块对交流异步电机进行变频调速。
LPC2292处理器是变频调速控制系统的核心处理单元。数据采集模块采集的模拟信号经 A/D模块量化后数据参数传入 ROM中的嵌入式 µClinux操作系统的应用程序中,应用程序根据数据在通过 PWM脉宽调制模块控制输出频率,从而再通过 IPM智能功率模块对交流异步电机进行变频调速。
3 系统软件平台设计
系统软件平台设计主要使用C语言和ARM汇编语言。系统软件平台设计主要包括3个方面:启动引导程序 Bootloader;建立μ CLinux操作系统的开发环境; PWM脉冲宽度调制模块驱动程序的实现。
3.1 启动引导程序Bootloader
引导程序 Bootloader是在操作系统运行之前执行的一段程序 [3]。它主要实现的功能[4]包括:初始化 CPU运行的时钟频率;初始化 Flash和内存的数据宽度,读写访问周期和刷新周期;初始化中断系统;初始化系统中各种片内、片外设备和 I/O端口;初始化系统各种运行模式下的寄存器和堆栈;加载和引导μCLinux操作系统。
3.2建立μCLinux操作系统的开发环境
μCLinux操作系统沿袭了传统 Linux操作系统的主要特性,包括稳定、强大的网络和文件系统支持;建立μCLinux操作系统的开发环境主要包括 3个步骤 [5]:建立μCLinux操作系统的交叉编译环境、μCLinux操作系统的编译和μCLinux操作系统的加载。
3.3 PWM脉宽调制驱动程序的开发
设备驱动程序是操作系统内核和硬件之间的接口,它作为应用设备之间的软件层, 为应用程序屏蔽了硬件的细节。在μ CLinux操作系统下开发字符设备驱动程序,主要有如下几个步骤[6]:(1)设置驱动程序的设备号。(2)实现保存设备信息的结构体中的部分函数。(3)实现驱动程序的初始化函数和清除函数。
PWM脉宽调制驱动程序属于字符设备驱动程序,因此 PWM脉宽调制驱动程序遵循上述的开发步骤。
3.3.1设置PWM驱动程序的设备号
PWM脉宽调制驱动程序要先建立文件设备的主设备号和从设备号。PWM驱动程序默认的主设备号为125,没有使用从设备号。因此,需要建立 1个设备文件,起主设备号为 125,从设备号可任意选择,文件名可定为PWM。建立设备文件的程序清单如下:
程序清单3.2建立设备文件程序
mknod /dev/PWM c 125 0
3.3.2实现保存设备信息的结构体中的部分函数
PWM驱动程序属于字符设备的驱动程序。PWM驱动程序要建立保存设备信息的结构体。PWM驱动程序的结构体如下:
程序清单3.1 PWM驱动程序操作的结构体
struct file_operations pwm_fops={
因为PWM驱动程序仅需要实现open( )、release( )和ioctl( )函数,所以 PWM驱动不能使用标准C的库函数来访问,只能使用内核提供给应用程序的接口函数来访问。
从此函数接口看, 我们实现PWM设备的打开、释放和控制。函数 open(const char* pathname , int flags)主要实现对 PWM设备的打开;函数close(int fd )主要实现对PWM设备的关闭;函数 ioctl(int fd , unsigned long int cmd , … )主要实现对PWM脉宽调制设备输出频率和占空比的控制。
PWM脉宽调制驱动程序最重要的功能是控制PWM输出的频率和占空比。PWM脉宽调制驱动程序输出的频率可以通过命令PWM_SET_CYC设置PWM脉宽调制频率。实际上是以 VPB总线周期为单位设置PWM脉宽调制的周期。频率是周期的倒数,所以也就设置了频率。 PWM脉宽调制驱动程序知道PWM脉宽调制的输出频率和高电平时间,就可以计算占空比。因此,设置再设置高电平时间就可以计算占空比。PWM脉宽调制驱动程序可以用 PWM_1_SET_DUYY、PWM_1_SET_DUYY等命令设置高电平时间。
3.3.3实现驱动程序的初始化函数和清除函数
μCLinux操作系统在加载内核模块时会调用驱动程序的初始化函数,在卸载内核模块时调用驱动程序的清除函数。PWM驱动程序的初始化函数和清除函数程序代码如下:
程序清单3.3 PWM驱动程序初始化函数代码
int pwm_init(void){ int result ;
result = register_chrdev(MAJOR, DEVICE, &pwm_fops);
if (result<0){
printk(KERN_ERR DEVICE_NAME “: Unable to get major %d\n” , MAJOR_NR);
return(result);
}
if (MAJOR_NR = =0) MAJOR_NR = result;
printk(KERN_INFO DEVICE_NAME”: init OK\n”);
return (0);
}
程序清单3.4 PWM驱动程序清除函数代码
void pwm_cleanup(void){
unregister_chrdev(MAJOR_NR,DEVICE_NAME);
}
3.3.4为PWM脉宽调制驱动程序添加中断服务程序
μCLinux操作系统内核具有中断管理功能,因此中断服务程序必须按照其规范使用。μ CLinux操作系统在使用中断服务程序之前,需要向内核注册中断服务程序;不再使用中断服务程序时,需要注销中断服务程序。注册中断服务程序通过调用函数request_irq( )实现。通常申请中断返回值为0表示成功,或者返回一个负的错误码。函数返回 -EBUSY,表示另一个设备程序已使用了要申请信号线。注销中断服务程序通过调用free_irq( )实现。
3.3.5编译和测试驱动程序
PWM驱动程序源代码编写成功后,需要把它编译进内核。当用户需要打开设备时,还需要一个在/dev目录的设备文件名称,这样驱动程序才能工作。
最后经过编译得到zImage 内核压缩文件。用引导程序Bootloader通过串口或者以太网接口将zImage文件引导到LPC2292处理器上片外SDRAM上进行调试。 4 结束语
嵌入式系统具有低功耗、可靠性高等突出优点。采用嵌入式系统来设计和实现变频调速控制系统,使得变频调速控制系统可靠性高、性能强、实时性好,将以太网接口集成与变频调速系统中,使得对变频调速系统的远程控制和监视变得简单易行。因此,研制一个带以太网接口的嵌入式变频调速控制系统具有重要的科学意义和价值。
本文的主要创新点:具体实现了在PLC2292+μ CLinux操作系统平台下的6路PWM脉宽调制变频调速控制系统的软硬件设计;详细分析可PWM脉宽调制模块设备在嵌入式μCLinux操作系统下驱动程序结构和开发过程,编写出驱动模块,实现了 6路PWM脉宽调制驱动模块设备的控制,结合已经完成的以太网接口驱动模块,已成功地应用到变频调速控制系统中,系统简明,扩展方便,信息处理实时性高。
参考文献
[1]王树.变频调速系统设计与应用[M].北京:机械工业出版社,2005.
[2]熊育悦,赵哲身.工业以太网在控制系统应用前景[J].仪表技术,2002, (3):37~39
[3]孙秋野,孙凯,冯健.ARM嵌入式系统开发典型模块[M].北京:人民邮电出版社,2007.
[4]单承刚,戴学丰.基于ARM的嵌入式BootLoader设计与启动过程[J].微计算机信息,2006, 11-2:22.
[5]孙纪坤,张小全.嵌入式Linux系统开发技术详解—基于ARM[M].北京:人民邮电出版社,
2006.
[6]周立功,陈明计,陈渝.ARM嵌入式Linux系统构建与驱动开发范例[M].北京:北京航空航天大学出版社,2006.
全部0条评论
快来发表一下你的评论吧 !