基于ARM的给煤机控制系统的设计
扫描二维码
随时随地手机看文章
摘 要:本文介绍了给煤机控制系统的基本结构以及控制系统的硬/软件设计,并详细分析了实时多任务操作系统mC/OS-II在Samsung公司32位ARM控制器S3C44B0x上的移植。
关键词:给煤机控制系统;S3C44B0x;mC/OS-II
引言
本文设计的给煤机控制系统主要用于火力发电厂的磨煤制粉系统中,它与磨煤机设备配合,承担向系统定量均匀供煤的任务,是火力发电厂重要的辅助设备。这种系统同样可以应用于冶金、化工等部门的散状物料的计量输送系统,对于节约能源和提高经济效益及保证安全方面有重大意义。
图1 自跟踪电源电路
图2 4~20mA电流产生电路
控制系统硬件的设计
该控制系统主要包括称重传感器信号的检测、数字式速度传感器信号的检测、键盘输入信号的扫描、液晶显示屏的显示,以及一些报警装置等。由于本设计对主控制器的要求较高,所以最终采用了Samsung公司的基于ARM7TDMI-S内核的低功耗ARM处理器S3C44B0x作为系统的主控制器。
称重传感器信号的采集是影响本系统控制精度的最重要因素之一,本设计中将传感器桥路设计成4片应变片都受力的形式。同时由于应变片式传感器的输出信号非常小,因而要求桥路的电压特别稳定,所以此系统采用了对称型、并有正负压自跟踪性能的电源,如图1所示。
传感器的信号首先经过放大、滤波处理,然后送到A/D控制器。S3C44B0x处理器内部集成了8路10位的A/D控制器、零比较器和内部产生的比较时钟信号,支持软件使能休眠模式,所以可以很精确的测出传感器的信号。并且通过使用该处理器使得本系统不需要再外扩A/D转换芯片,从而减少了系统的复杂性。
速度传感器检测的是皮带的速度,由于电机旋转的速度和皮带的速度一般不同,有一个比例系数,为了确保准确性,本设计单独采用了速度传感器,速度传感器的脉冲输出正比于皮带速度。通过将皮带的速度信号和称重传感器的重量信号送入微处理器进行处理,就得到了以吨/小时为单位的实际流量。
通过键盘输入所需要的给煤量,将实际给煤量和所需给煤量进行PID运算,并把产生的控制信号用来控制变频器,进而来控制电机的转速。本系统用的变频器是西门子的MMV400,将此变频器设置为4~20mA的电流控制,由控制器比较用户指令和现场的状态反馈后发送4~20mA电流至变频器的模拟量输入口,然后变频器将输入的电流信号转换为对应的频率后输出来控制电机。其中产生4~20mA电流的电路如图2所示。
ARM处理器的控制数据首先经过光电隔离送到D/A控制器(TLC5615),转换成0~2V的电压信号,然后经过V/I转换器(AD694)产生4~20mA的电流信号,用来精确的控制电机的转速。
LCD显示屏显示的内容包括电机的转速、所需给煤量、实际的给煤量,以及皮带的速度等。S3C44B0x中集成了LCD控制器,可以将显示缓存中的数据传送到外部的LCD驱动电路中,并可以支持单色、4或16级灰度的LCD和256级的彩色LCD。大量的I/O口作为继电器信号输出。并且S3C44B0x还可以通过串口RS-232和上位机进行通信。
控制系统软件的设计
给煤机控制系统软件选用嵌入式实时多任务操作系统mC/OS-II。它是一个源代码公开、可移植、可固化、可剪裁、占先式的实时多任务操作系统。其绝大部分源代码是用ANSI C写的,移植方便,并且运行稳定可靠。目前,它已经在几十种从8位到64位的微处理器,微控制器上实现了成功的移植。
mC/OS-II在S3C44B0x上的移植
移植mC/OS-II主要包括:声明3个宏(开中断,关中断和任务切换);设置堆栈的增长方向;声明10个与编译器相关的数据类型;用C语言编写6个与操作系统有关的函数(OS-CPU-C.C任务堆栈初始化和5个钩子函数);用汇编语言编写4个与处理器相关的函数(OS-CPU.ASM)。
用汇编语言编写4个与处理器相关的函数如下。
mC/OS-II需要先禁止中断再访问代码的临界断,并且在访问结束后重新允许中断, 操作系统是通过OS_ENTER_CRITICAL(),OS_EXIT_CRITICAL()两函数来实现开中断和关中断的。
在mC/OS-II中,使用OS-STK-GROWTH来指定堆栈的增长方向,0表示从低地址向高地址增长,1则相反。但是所用的ADS编译器仅支持高地址向低地址增长的方式,所以OS-STK-GROWTH应设置为1。
然后用汇编语言编写4个与处理器相关的函数,放到函数OS-CPU.ASM中,这就完成了OS-CPU.ASM文件的移植。上层任务调度部分不需要任何改动。完成以上工作后,mC/OS-II就可以正常运行在S3C44B0x处理器上了。
系统任务的划分以及调度
嵌入式实时系统中的任务不同于前后台系统中的子程序模块,一般,一个任务对应于一段独立的主程序,它可以调用子程序,并使用如中断等各种系统资源。嵌入式系统的任务划分,是将系统中所要处理的事情划分为一个个相对独立的任务模块,将其按顺序建立一个个的任务,并且分配不同的优先级。在主程序中,所需要做的是建立这些模块的任务,然后每次执行就绪任务队列中优先级最高的任务。根据本控制系统的特点,可将任务划分如下:键盘扫描、传感器信号的检测、电机速
度减慢、电机速度变快,以及液晶显示等任务。
mC/OS-II的任务调度是按优先级进行的,所以必须为每个任务分配不同的优先级,其中0,1,2,3,OS_LOWEST_PRIO-3, OS_LOWEST_PRIO-2, OS_LOWEST_PRIO-1, OS_LOWEST_PRIO,这几个优先级供系统使用,所以必须保留。
根据每个任务的实时性要求以及重要程度,分别将以上任务的优先级分配为:12、6、7、8和13等。任务优先级号越低,优先级越高。
当给煤机控制系统启动后,如果启动一切正常,则进行送煤任务,运行时,如果传感器信号检测到给煤量偏多,则发送信号给电机减慢的任务,反之,就发送信号给电机加速任务。此外,当有一些故障、危险出现时,则发送信号给停机任务。总之,在控制系统中,信号、消息不断传递,使得各任务不断切换运行,从而整个系统得以正常的连续的工作。
结语
本文在介绍了给煤机结构的基础上,介绍了其控制系统的硬件原理以及软件设计,经多次现场调试运行,本控制系统能很好的完成电厂的给煤任务。