基于ARM的嵌入式多单元同步控制器的实现
扫描二维码
随时随地手机看文章
摘要:在分析工业生产中多单元同步传动特点的基础上,介绍了同步传动控制器的原理。以往同步控制器大都是基于或PC的,限制了先进算法的使用,PC成本较高,针对这种情况,采用ARM核芯片作为核心微处理器,并根据控制要求扩展外围电路,给出了系统的硬件原理图、控制方法及基于uClinux的主要硬件的驱动程序。该控制器可对机台的车速在线调整。
关键词:同步传动;交流电机;微处理器;操作系统
1 引言
在工业生产的很多行业,诸如纺织、造纸、印染等都要求进行多个单元的同步控制,保持张力的恒定,以提高产品的质量。随着交流调速技术的日趋成熟,以及交流的结构、性价比、维护等方面都优于直流,本同步控制器主传动部分采用交流异步电机变频调速。以往大多进行一些简单的控制,系统大多在循环加中断的方式下工作,而随着32位CPU 的出现(如ARM),嵌入式系统能够适应复杂的控制,进行多任务的处理,极大提升了效率。当然这一切还需要嵌入式操作系统的支持。嵌入式在市场中逐渐赢得了众多用户的青睐,因此,控制部分采用ARM核微处理器,移植uClinux操作系统进行开发。
2 系统工作原理
微机同步控制器要控制各单元的线速度相等,即V4 =V3=V2=V1,电气控制示意图如图1所示。M1 ~M4为交流异步电机,~INV4为通用型。整条生产线上的被加工物的张力控制被分割成两段,因而设计两个张力控制环来控制整条线的生产张力。
图1电气控制示意图
第一个张力控制环主要由松劲架、测速电机TG、电机M1、电机M2和组成。当该段张力太小时,松劲架将张力值反馈给控制器,控制器运算处理后自动增加电机M1的给定电压,从而使电机M1转速增加,该段张力增加。反之,当张力过大时,控制器减小电机M1的给定电压,从而使电机M1转速下降,被加工物所受张力减小。另一个张力控制环主要由松劲架、测速电机TG、电机M3、电机M4和组成,其工作原理与第一个张力控制环相同。通过这两个张力控制环可以任意控制两端的工作张力。生产过程中,使两个控制环张力给定值一致,两个主令电机M2、M3速度给定值一致,从而实现四个单元的恒张力同步控制。
3 硬件组成
同步控制器核心部件由处理器及其外围器件组成。主要包括:16M的;2M的;显示器及4×4键盘,用于设定控制器参数及显示过程参数;8255芯片用于输入开、停车信号,输出报警、指示等量信号;A/D转换芯片用于采集测速发电机和松劲架的反馈信号;D/A转换芯片用于输出给定信号;实现的3.3V信号电平与外围5V信号电平之间的转换。系统硬件框图见图2。
图2 系统硬件框图
S3C4510B是一款高性价比的16/32位微控制器,内含一个16/32位 处理器核,内部集成有以太网控制器,可移植uC、uCOS Ⅱ等操作系统。
为4通道12位逐次逼近式模数转换芯片,其内部自带2.5V参考电源,采样速率可达133KSPS,电压范围为2.7V至3.6V,串行接口兼容于SPI/QSPI和Microwire同步串行标准,允许将4个通道编程为单极性/双极性和差动/单端工作。
为电压输出的12位数/模转换器。+3.3V单电源供电,可与+5V逻辑电平直接相连,串行接口兼容于SPI/QSPI和Microwire同步串行标准。可调的精密输出允许增益设置。
此处用S3C4510B的通用I/O口模拟同步串口,实现SPI总线通信,多片和都挂接在该SPI总线上,从而使硬件连接简单方便。采用产生1.25V参考电压。D/A和A/D转换的部分连接图见图3。
图3 MAX1246和MAX5353与S3C4510B的连接
4 软件设计
4.1 控制方法
在实际生产中,生产速度的变化会立即影响到当前时刻的张力测量值,速度变化时,可能会出现因张力失控或张力变化过大而使被加工物变形、断裂等现象。考虑到这种情况,对该同步控制系统中每个闭环所采用的增量式PID算法改进如下:
⑴ 当速度的给定值保持不变时,按带有防积分截断误差的增量式PID控制算法控制各自的张力和速度。
⑵ 当速度的给定值改变,且变化量△V≤△Vmax时,则相应地在张力控制的输出U上,增加一个提前量K△V,即:
式中Ut为当前的输出量,Ut-1为上一次的输出量,△U为PID求得的增量,K为比例系数,△V为速度给定值的变化量,△Vmax为允许最大的速度变化量。
⑶ 当速度的给定值变化很大时,由微机分步输出,设△V<M△Vmax (M为正整数)。取△V’=△V/M<△Vmax,则需M步才能把速度从V升到V+△V,故速度的给定值每步增加△V’,其张力的输出量为:
输出的电机控制信号Uk1跟随Uk2,Uk4跟随Uk3变化。
4.2 驱动程序设计
操作系统的作用之一就是向用户隐藏硬件设备的特殊性,使应用程序的开发与底层物理设备无关。设备驱动程序是连接应用程序和具体物理设备的桥梁。在uClinux中MAX1246和MAX5353属于字符型设备。
在uClinux中每个设备都被看成是一个文件,通过File_operations结构体记录了每一种设备具体操作函数的函数指针,以便在具体调用中转入到实际操作的函数中。在这个结构体中,定义了各类操作函数的类型和入口参数,常用的操作函数有、、、write、等。并不是所有的接口函数都需要在驱动程序中实现,对于设备不支持的操作,可以将对应的设备接口函数指针置为空。
模块初始化函数_( )是每个内核模块加载的时候首先调用的一个默认函数。一般在该函数中完成设备的注册,当模块加载完毕之后,内核即知晓设备的存在。模块卸载函数_exit( )与_( )做相反的工作,在内核中取消设备的登记。该函数在模块卸载的时候自动调用。
对MAX5353和MAX1246各开发了一个驱动程序,其结构体分别声明如下。
static struct file_operations _fops={
: _,
: _,
llseek: max5353_, };
static struct file_operations _fops={
open: _open,
release: _release,
llseek: max1246_, };
模块初始化函数module_( )主要通过调用int register_chrdev(unsigned int , *,struct file_operations*fops)完成设备的注册,例如:
int retv=register_chrdev(,max5353_,&max5353_fops);
int retv=register_chrdev(,max1246_,&max1246_fops);
模块卸载函数module_exit( )主要通过调用int unregister_chrdev(unsigned int major, *name)取消对设备的注册,例如:
int retv=unregister_chrdev(major,max5353_name);
int retv=unregister_chrdev(major,max1246_name);
MAX5353的控制操作函数如下,其中arg参数为需要D/A转换输出的数值,cmd参数用于选择4路D/A输出通道,send_data(arg,cs_ctrl)函数实现S3C4510B与MAX5353通信的时序关系。
static int max5353_ioctl(struct inode *inode, struct file *file,
unsigned int cmd, unsigned long arg)
{ int cs_ctrl;
switch (cmd)
{case MAX5353_CH0:
cs_ctrl=0xfb; //CH0:片选cs=0
send_data(arg,cs_ctrl);
break;
case MAX5353_CH1:
cs_ctrl=0xfd; //CH1: 片选cs=0
send_data(arg,cs_ctrl);
break;
…… }
return 0; }
运行于uClinux上的应用程序需要调用第0路D/A输出时,调用ioctl(fd, MAX5353_CH0, value)函数即可,其中fd参数为设备文件句柄,MAX5353_CH0参数表示选择第0路通道,value参数为要D/A转换输出的数值。通道的应用与此类似。
MAX1246的控制操作函数如下,其中cmd参数用于4路A/D输入通道的选择,adcadc(adctrl)函数实现S3C4510B与MAX1246通信的时序关系并返回A/D采样值。
static int max1246_ioctl(struct inode *inode, struct file *file,
unsigned int cmd, unsigned long arg)
{ int adctrl,addat=0;
switch (cmd)
{ case MAX1246_CH0:
adctrl=0x9e;
addat=adcadc(adctrl);
break;
case MAX1246_CH1:
adctrl=0xde;
addat=adcadc(adctrl);
break;
…… }
return addat; }
运行于uClinux上的应用程序需要调用第0路A/D采样时,利用value=ioctl(fd, MAX1246_CH0, 0)语句即可实现,其中fd参数为设备文件句柄,MAX1246_CH0参数表示选择第0路通道,value变量为A/D转换结果。通道的应用与此类似。
5 结论
通过给S3C4510B扩展A/D、D/A等外围部件,增强了其在控制领域的适应性,该扩展方法对其它ARM芯片的功能扩展也具有一定的参考价值。实践证明,该同步控制器具有良好的抗干扰能力和控制精度,同步能力强,运行可靠。利用其工业以太网接口,可实现多个控制器的互连,以及与计算机的互连,从而实现多单元的网络化同步控制,具有广泛应用前景。采用先进的32位ARM核微处理器代替传统的单片机,控制器的处理速度大幅度提高,能够适用于复杂控制算法的运算,有效增强了控制系统的实时性,控制精度明显提高,且较以往PC控制系统降低了成本。在S3C4510B处理器上移植了嵌入式操作系统uClinux,使控制器能够支持多任务操作,并且使开发过程更方便。为外围硬件编写了uClinux下的驱动程序,使应用程序的开发更为简便,通用性更好,且便于控制器应用程序的改进升级。S3C4510B芯片上集成有以太网控制器,在操作系统uClinux的支持下,可实现以太网通信,从而实现网络化控制。