基于ARM的嵌入式多單元同步控制器的實現(xiàn)
摘要:在分析工業(yè)生產(chǎn)中多單元同步傳動特點的基礎(chǔ)上,介紹了同步傳動控制器的原理。以往同步控制器大都是基于或PC的,限制了先進算法的使用,PC成本較高,針對這種情況,采用ARM核芯片作為核心微處理器,并根據(jù)控制要求擴展外圍電路,給出了系統(tǒng)的硬件原理圖、控制方法及基于uClinux的主要硬件的驅(qū)動程序。該控制器可對機臺的車速在線調(diào)整。
關(guān)鍵詞:同步傳動;交流電機;微處理器;操作系統(tǒng)
1 引言
在工業(yè)生產(chǎn)的很多行業(yè),諸如紡織、造紙、印染等都要求進行多個單元的同步控制,保持張力的恒定,以提高產(chǎn)品的質(zhì)量。隨著交流調(diào)速技術(shù)的日趨成熟,以及交流的結(jié)構(gòu)、性價比、維護等方面都優(yōu)于直流,本同步控制器主傳動部分采用交流異步電機變頻調(diào)速。以往大多進行一些簡單的控制,系統(tǒng)大多在循環(huán)加中斷的方式下工作,而隨著32位CPU 的出現(xiàn)(如ARM),嵌入式系統(tǒng)能夠適應(yīng)復(fù)雜的控制,進行多任務(wù)的處理,極大提升了效率。當然這一切還需要嵌入式操作系統(tǒng)的支持。嵌入式在市場中逐漸贏得了眾多用戶的青睞,因此,控制部分采用ARM核微處理器,移植uClinux操作系統(tǒng)進行開發(fā)。
2 系統(tǒng)工作原理
微機同步控制器要控制各單元的線速度相等,即V4 =V3=V2=V1,電氣控制示意圖如圖1所示。M1 ~M4為交流異步電機,~INV4為通用型。整條生產(chǎn)線上的被加工物的張力控制被分割成兩段,因而設(shè)計兩個張力控制環(huán)來控制整條線的生產(chǎn)張力。
圖1電氣控制示意圖
第一個張力控制環(huán)主要由松勁架、測速電機TG、電機M1、電機M2和組成。當該段張力太小時,松勁架將張力值反饋給控制器,控制器運算處理后自動增加電機M1的給定電壓,從而使電機M1轉(zhuǎn)速增加,該段張力增加。反之,當張力過大時,控制器減小電機M1的給定電壓,從而使電機M1轉(zhuǎn)速下降,被加工物所受張力減小。另一個張力控制環(huán)主要由松勁架、測速電機TG、電機M3、電機M4和組成,其工作原理與第一個張力控制環(huán)相同。通過這兩個張力控制環(huán)可以任意控制兩端的工作張力。生產(chǎn)過程中,使兩個控制環(huán)張力給定值一致,兩個主令電機M2、M3速度給定值一致,從而實現(xiàn)四個單元的恒張力同步控制。
3 硬件組成
同步控制器核心部件由處理器及其外圍器件組成。主要包括:16M的;2M的;顯示器及4×4鍵盤,用于設(shè)定控制器參數(shù)及顯示過程參數(shù);8255芯片用于輸入開、停車信號,輸出報警、指示等量信號;A/D轉(zhuǎn)換芯片用于采集測速發(fā)電機和松勁架的反饋信號;D/A轉(zhuǎn)換芯片用于輸出給定信號;實現(xiàn)的3.3V信號電平與外圍5V信號電平之間的轉(zhuǎn)換。系統(tǒng)硬件框圖見圖2。
圖2 系統(tǒng)硬件框圖
S3C4510B是一款高性價比的16/32位微控制器,內(nèi)含一個16/32位 處理器核,內(nèi)部集成有以太網(wǎng)控制器,可移植uC、uCOS Ⅱ等操作系統(tǒng)。
為4通道12位逐次逼近式模數(shù)轉(zhuǎn)換芯片,其內(nèi)部自帶2.5V參考電源,采樣速率可達133KSPS,電壓范圍為2.7V至3.6V,串行接口兼容于SPI/QSPI和Microwire同步串行標準,允許將4個通道編程為單極性/雙極性和差動/單端工作。
為電壓輸出的12位數(shù)/模轉(zhuǎn)換器。+3.3V單電源供電,可與+5V邏輯電平直接相連,串行接口兼容于SPI/QSPI和Microwire同步串行標準??烧{(diào)的精密輸出允許增益設(shè)置。
此處用S3C4510B的通用I/O口模擬同步串口,實現(xiàn)SPI總線通信,多片和都掛接在該SPI總線上,從而使硬件連接簡單方便。采用產(chǎn)生1.25V參考電壓。D/A和A/D轉(zhuǎn)換的部分連接圖見圖3。
圖3 MAX1246和MAX5353與S3C4510B的連接
4 軟件設(shè)計
4.1 控制方法
在實際生產(chǎn)中,生產(chǎn)速度的變化會立即影響到當前時刻的張力測量值,速度變化時,可能會出現(xiàn)因張力失控或張力變化過大而使被加工物變形、斷裂等現(xiàn)象??紤]到這種情況,對該同步控制系統(tǒng)中每個閉環(huán)所采用的增量式PID算法改進如下:
⑴ 當速度的給定值保持不變時,按帶有防積分截斷誤差的增量式PID控制算法控制各自的張力和速度。
⑵ 當速度的給定值改變,且變化量△V≤△Vmax時,則相應(yīng)地在張力控制的輸出U上,增加一個提前量K△V,即:
式中Ut為當前的輸出量,Ut-1為上一次的輸出量,△U為PID求得的增量,K為比例系數(shù),△V為速度給定值的變化量,△Vmax為允許最大的速度變化量。
⑶ 當速度的給定值變化很大時,由微機分步輸出,設(shè)△V<M△Vmax (M為正整數(shù))。取△V’=△V/M<△Vmax,則需M步才能把速度從V升到V+△V,故速度的給定值每步增加△V’,其張力的輸出量為:
輸出的電機控制信號Uk1跟隨Uk2,Uk4跟隨Uk3變化。
4.2 驅(qū)動程序設(shè)計
操作系統(tǒng)的作用之一就是向用戶隱藏硬件設(shè)備的特殊性,使應(yīng)用程序的開發(fā)與底層物理設(shè)備無關(guān)。設(shè)備驅(qū)動程序是連接應(yīng)用程序和具體物理設(shè)備的橋梁。在uClinux中MAX1246和MAX5353屬于字符型設(shè)備。
在uClinux中每個設(shè)備都被看成是一個文件,通過File_operations結(jié)構(gòu)體記錄了每一種設(shè)備具體操作函數(shù)的函數(shù)指針,以便在具體調(diào)用中轉(zhuǎn)入到實際操作的函數(shù)中。在這個結(jié)構(gòu)體中,定義了各類操作函數(shù)的類型和入口參數(shù),常用的操作函數(shù)有、、、write、等。并不是所有的接口函數(shù)都需要在驅(qū)動程序中實現(xiàn),對于設(shè)備不支持的操作,可以將對應(yīng)的設(shè)備接口函數(shù)指針置為空。
模塊初始化函數(shù)_( )是每個內(nèi)核模塊加載的時候首先調(diào)用的一個默認函數(shù)。一般在該函數(shù)中完成設(shè)備的注冊,當模塊加載完畢之后,內(nèi)核即知曉設(shè)備的存在。模塊卸載函數(shù)_exit( )與_( )做相反的工作,在內(nèi)核中取消設(shè)備的登記。該函數(shù)在模塊卸載的時候自動調(diào)用。
對MAX5353和MAX1246各開發(fā)了一個驅(qū)動程序,其結(jié)構(gòu)體分別聲明如下。
static struct file_operations _fops={
: _,
: _,
llseek: max5353_, };
static struct file_operations _fops={
open: _open,
release: _release,
llseek: max1246_, };
模塊初始化函數(shù)module_( )主要通過調(diào)用int register_chrdev(unsigned int , *,struct file_operations*fops)完成設(shè)備的注冊,例如:
int retv=register_chrdev(,max5353_,&max5353_fops);
int retv=register_chrdev(,max1246_,&max1246_fops);
模塊卸載函數(shù)module_exit( )主要通過調(diào)用int unregister_chrdev(unsigned int major, *name)取消對設(shè)備的注冊,例如:
int retv=unregister_chrdev(major,max5353_name);
int retv=unregister_chrdev(major,max1246_name);
MAX5353的控制操作函數(shù)如下,其中arg參數(shù)為需要D/A轉(zhuǎn)換輸出的數(shù)值,cmd參數(shù)用于選擇4路D/A輸出通道,send_data(arg,cs_ctrl)函數(shù)實現(xiàn)S3C4510B與MAX5353通信的時序關(guān)系。
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上的應(yīng)用程序需要調(diào)用第0路D/A輸出時,調(diào)用ioctl(fd, MAX5353_CH0, value)函數(shù)即可,其中fd參數(shù)為設(shè)備文件句柄,MAX5353_CH0參數(shù)表示選擇第0路通道,value參數(shù)為要D/A轉(zhuǎn)換輸出的數(shù)值。通道的應(yīng)用與此類似。
MAX1246的控制操作函數(shù)如下,其中cmd參數(shù)用于4路A/D輸入通道的選擇,adcadc(adctrl)函數(shù)實現(xiàn)S3C4510B與MAX1246通信的時序關(guān)系并返回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上的應(yīng)用程序需要調(diào)用第0路A/D采樣時,利用value=ioctl(fd, MAX1246_CH0, 0)語句即可實現(xiàn),其中fd參數(shù)為設(shè)備文件句柄,MAX1246_CH0參數(shù)表示選擇第0路通道,value變量為A/D轉(zhuǎn)換結(jié)果。通道的應(yīng)用與此類似。
5 結(jié)論
通過給S3C4510B擴展A/D、D/A等外圍部件,增強了其在控制領(lǐng)域的適應(yīng)性,該擴展方法對其它ARM芯片的功能擴展也具有一定的參考價值。實踐證明,該同步控制器具有良好的抗干擾能力和控制精度,同步能力強,運行可靠。利用其工業(yè)以太網(wǎng)接口,可實現(xiàn)多個控制器的互連,以及與計算機的互連,從而實現(xiàn)多單元的網(wǎng)絡(luò)化同步控制,具有廣泛應(yīng)用前景。采用先進的32位ARM核微處理器代替?zhèn)鹘y(tǒng)的單片機,控制器的處理速度大幅度提高,能夠適用于復(fù)雜控制算法的運算,有效增強了控制系統(tǒng)的實時性,控制精度明顯提高,且較以往PC控制系統(tǒng)降低了成本。在S3C4510B處理器上移植了嵌入式操作系統(tǒng)uClinux,使控制器能夠支持多任務(wù)操作,并且使開發(fā)過程更方便。為外圍硬件編寫了uClinux下的驅(qū)動程序,使應(yīng)用程序的開發(fā)更為簡便,通用性更好,且便于控制器應(yīng)用程序的改進升級。S3C4510B芯片上集成有以太網(wǎng)控制器,在操作系統(tǒng)uClinux的支持下,可實現(xiàn)以太網(wǎng)通信,從而實現(xiàn)網(wǎng)絡(luò)化控制。