中國煙草總公司職工進(jìn)修學(xué)院 李源源,張旭
一種高速卷煙機(jī)EtherCAT從站設(shè)計(jì)
中國煙草總公司職工進(jìn)修學(xué)院 李源源,張旭
文章根據(jù)目前在高速、超高速卷煙機(jī)組上大量使用的嵌入式PC現(xiàn)狀,使用從站芯片和DSP,設(shè)計(jì)了一個(gè)EtherCAT從站,實(shí)現(xiàn)了模擬量數(shù)據(jù)采集和標(biāo)準(zhǔn)的EtherCAT協(xié)議通訊。重點(diǎn)介紹了系統(tǒng)的硬件設(shè)計(jì)和軟件設(shè)計(jì),其中LAN9252完成從站的EtherCAT協(xié)議通訊,而DSP芯片負(fù)責(zé)從站初始化、模擬量采集、數(shù)據(jù)收發(fā)、狀態(tài)管理等。
EtherCAT;卷煙機(jī)組;從站
近幾年引進(jìn)的高速卷包設(shè)備中,大量使用了BECKHOFF(倍福)的控制系統(tǒng),如PROTOS-M5、M8卷煙機(jī),KDF4濾棒成型機(jī),F(xiàn)OCKE-FX、S1000、H1000包裝機(jī)等,而在國內(nèi)卷包設(shè)備升級(jí)改造項(xiàng)目上,也實(shí)現(xiàn)了基于工業(yè)PC控制技術(shù)的電氣化改造。
目前傳統(tǒng)的現(xiàn)場(chǎng)總線技術(shù)由于其響應(yīng)時(shí)間長、實(shí)時(shí)性差等特點(diǎn),正日趨成為工業(yè)自動(dòng)化控制系統(tǒng)性能發(fā)展的瓶頸[1]。EtherCAT技術(shù)作為BECKHOFF公司主導(dǎo)提出的一種實(shí)時(shí)工業(yè)以太網(wǎng)技術(shù),與其工業(yè)PC有著良好的匹配性,且高速傳輸、價(jià)格低廉、配置簡單,基于EtherCAT通訊的從站在高速卷煙機(jī)功能擴(kuò)展中應(yīng)用廣泛。本設(shè)計(jì)以EtherCAT從站芯片LAN9252和DSP芯片為主要硬件組成,實(shí)現(xiàn)EtherCAT從站向主站發(fā)送實(shí)時(shí)采集的模擬量數(shù)據(jù)。
EtherCAT技術(shù)利用IEEE 802.3以太網(wǎng)幀傳遞,Ethertype為0x88A4,具有靈活的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),同時(shí)支持熱拔插功能[2]。EtherCAT的數(shù)據(jù)幀結(jié)構(gòu)如圖1所示:
圖1 EtherCAT數(shù)據(jù)幀結(jié)構(gòu)示意圖
EtherCAT采用主從站結(jié)構(gòu),主站一般是PC機(jī),采用標(biāo)準(zhǔn)的100Base-TX以太網(wǎng)卡,從站采用EtherCAT從站專用芯片(ESC)。主站來掃描從站設(shè)備以確定每個(gè)從站的地址,并控制總線循環(huán)周期。運(yùn)行時(shí)主站發(fā)出下行報(bào)文(數(shù)據(jù)幀的結(jié)構(gòu)如圖1所示),報(bào)文的最大有效數(shù)據(jù)長度為1498個(gè)字節(jié)。報(bào)文將遍歷所有從站設(shè)備,每個(gè)從站設(shè)備在數(shù)據(jù)幀經(jīng)過時(shí)分析尋址到本設(shè)備的報(bào)文,根據(jù)報(bào)文頭中的命令從報(bào)文中讀取數(shù)據(jù)或向報(bào)文中指定位置寫入數(shù)據(jù),同時(shí)將從站報(bào)文的工作計(jì)數(shù)器(WKC)加1,表示數(shù)據(jù)被處理。報(bào)文被傳送到整個(gè)系統(tǒng)邏輯位置的最后一個(gè)從站后,該從站把經(jīng)過各個(gè)從站處理后的數(shù)據(jù)幀作為上行報(bào)文直接發(fā)送給主站。主站收到此上行報(bào)文后,處理返回?cái)?shù)據(jù),一次通信結(jié)束。
設(shè)計(jì)采用的EtherCAT從站控制器芯片ESC是近年新推出的LAN9252芯片,這個(gè)芯片集成了兩個(gè)10/100M以太網(wǎng)收發(fā)器,簡化了硬件設(shè)計(jì),同時(shí)支持光纖和銅線,并具備電纜診斷功能,便于現(xiàn)場(chǎng)技術(shù)服務(wù)人員能夠快速、有效地診斷線路故障。LAN9252支持SPI總線、8位/16位的uC接口以及獨(dú)立的數(shù)字I/O接口,在設(shè)計(jì)時(shí)可以根據(jù)需求靈活選擇[3]。LAN9252完全符合EtherCAT標(biāo)準(zhǔn),并可與所有EtherCAT系統(tǒng)實(shí)現(xiàn)互操作,它包含一個(gè)4KB的雙端口RAM(DPRAM)和三個(gè)現(xiàn)場(chǎng)總線存儲(chǔ)器管理單元(FMMU)。
DSP芯片采用的是TI公司的TMS320F2812,其采用哈佛結(jié)構(gòu)的定點(diǎn)DSP,最高處理速度可達(dá)150M,具有快速的指令周期,處理數(shù)據(jù)位數(shù)也從16位定點(diǎn)躍升到32位定點(diǎn)[4]。擁有EVA、EVB事件管理器和配套的12位16通道的AD數(shù)據(jù)采集,再加上豐富的外設(shè)接口,如CAN、SCI、UART等,多端口可復(fù)用,I/O端口豐富,可以靈活應(yīng)用在很多領(lǐng)域。
在本設(shè)計(jì)硬件系統(tǒng)中,使用DSP芯片TMS320F2812、EtherCAT從站芯片LAN9252、EEPROM、網(wǎng)絡(luò)隔離器及電源管理芯片等構(gòu)成。LAN9252芯片完成EtherCAT協(xié)議數(shù)據(jù)的收發(fā),DSP芯片完成自身和LAN9252芯片的初始化,運(yùn)行驅(qū)動(dòng)程序,采集一路模擬量數(shù)據(jù),管理EtherCAT協(xié)議中相關(guān)數(shù)據(jù)的收發(fā),然后進(jìn)行后繼的處理,并對(duì)從站自身的狀態(tài)進(jìn)行管理。
系統(tǒng)的硬件實(shí)際電路示意圖如圖2所示:
圖2 硬件電路示意圖
系統(tǒng)中LAN9252采用3.3V電源供電,而TMS320F2812采用3.3V和1.8V雙電源供電。LAN9252是從站的核心芯片,由于其內(nèi)部集成了2個(gè)以太網(wǎng)收發(fā)器,所以在硬件設(shè)計(jì)是只需要使用網(wǎng)絡(luò)隔離器就可以直接連接到RJ45插頭上使用,在本文中是LAN9252的PORT0端口(對(duì)應(yīng)到圖2中的RJ45接口1)和PORT1端口(對(duì)應(yīng)到圖2中的RJ45接口2),其中PORT0端口是EtherCAT總線的輸入端口,連接主站或上游的EtherCAT從站;PORT1端口是EtherCAT總線的輸出端口,可以連接下游的EtherCAT從站,實(shí)現(xiàn)總線的后繼擴(kuò)展。EEPROM選擇24FC512芯片,具有15K的存儲(chǔ)空間,用來存儲(chǔ)主站的配置數(shù)據(jù)等相關(guān)信息。EEPROM芯片和LAN9252之間采用標(biāo)準(zhǔn)的I2C總線通信。DSP和LAN9252之間采用16位接口,DSP通過這個(gè)接口可以讀寫LAN9252的雙端口RAM,對(duì)LAN9252進(jìn)行驅(qū)動(dòng)和初始化。DSP在采集模擬量數(shù)據(jù)時(shí),利用其自帶的16個(gè)12位AD采樣模塊來轉(zhuǎn)化,但由于其自身精度受限制,所以在本設(shè)計(jì)采用了以下2種方式來增加其精度:一是在芯片其它不用的AD管腳上增加2個(gè)不同電壓值的參考電壓;二是多次采樣取其平均值或做個(gè)濾波之后再作為本次采樣的數(shù)據(jù)。
4.1設(shè)備描述語言文件(XML)的編寫及下載
在EtherCAT主從站系統(tǒng)中,主站是靠XML來識(shí)別從站并配置從站內(nèi)部細(xì)節(jié)信息,并正確操作和組態(tài)來自不同廠商的從站設(shè)備。
在本設(shè)計(jì)中XML文件是在離線狀態(tài)下,使用XML Notepad軟件環(huán)境來編寫的,其內(nèi)容包括XML聲明、廠商信息、設(shè)備描述等信息。編寫完成后,首先將編寫好的XML文件拷貝到TwinCAT軟件安裝目錄的驅(qū)動(dòng)程序文件夾中,再通過主站上的TwinCAT軟件掃描到本從站,將XML文件轉(zhuǎn)化成二進(jìn)制文件寫入到本從站的EEPROM中;然后刪除這個(gè)從站,重新掃描硬件,如果可以讀到從站設(shè)備所對(duì)應(yīng)的信息,表明寫入成功,編寫的這個(gè)XML文件是正確的。
4.2主程序設(shè)計(jì)
在本設(shè)計(jì)中,主程序是運(yùn)行在DSP芯片中的程序,主要用來完成系統(tǒng)的初始化、驅(qū)動(dòng)程序加載、和LAN9252之間的數(shù)據(jù)交互、模擬量的采集等功能。在編程之前,為了簡化程序設(shè)計(jì),需要下載其LAN9252 SDK開發(fā)包,將其移植到DSP的開發(fā)環(huán)境下,同時(shí)需要從EtherCAT網(wǎng)站上獲得其Beckhoff EtherCAT從器件協(xié)議棧代碼(SSC)。結(jié)合這兩個(gè)文件,可以快速的編寫本設(shè)計(jì)中的程序。主程序的總體流程圖如圖3所示。
4.3周期性數(shù)據(jù)處理
周期性數(shù)據(jù)處理是從站和主站之間傳輸數(shù)據(jù)的,就本設(shè)計(jì)而言就是從站從主站中讀取狀態(tài)等數(shù)據(jù),然后向主站傳輸實(shí)時(shí)采集到的模擬量數(shù)據(jù)。周期性數(shù)據(jù)處理包括三種模式:同步模式、自由運(yùn)行模式和DC模式,同步模式是使用中斷服務(wù)例程來處理數(shù)據(jù),自由運(yùn)行模式是以查詢方式來處理數(shù)據(jù),DC模式則使用系統(tǒng)同步時(shí)鐘來處理數(shù)據(jù)。在本設(shè)計(jì)中主要使用同步模式,利用中斷來處理周期性數(shù)據(jù),執(zhí)行過程如下:
(1)從雙端口RAM中讀取事件請(qǐng)求寄存器值;
圖3 主程序總體流程圖
(2)解析寄存器值,如果是發(fā)送事件,則從LAN9252的雙端口RAM中讀取由主站發(fā)送來的周期性輸出數(shù)據(jù);
(3)解析輸出數(shù)據(jù),如果數(shù)據(jù)有效,則由DSP將輸出數(shù)據(jù)映射到相應(yīng)的輸出變量,并通過硬件執(zhí)行輸出操作;注意如果從站處于Safe_OP狀態(tài)時(shí),即使輸出數(shù)據(jù)有效,考慮到安全因素,從站不執(zhí)行硬件輸出操作;
(4)讀取硬件輸入操作,判斷是否需要寫入輸入數(shù)據(jù),如果需要?jiǎng)t將輸入數(shù)據(jù)寫入到相應(yīng)的LAN9252雙端口RAM中,等待下個(gè)數(shù)據(jù)幀到來時(shí)被主站讀??;
(5)將報(bào)文中的工作計(jì)數(shù)器(WKC)值加1。
周期性數(shù)據(jù)在同步模式下,利用中斷服務(wù),進(jìn)行編程時(shí)的部分程序源代碼如下:
Interrupt void GPIO_SYNC0_ISR(void)
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; //清中斷標(biāo)志
ReadDRAM_Status(); //從LAN9252雙端口RAM中讀取狀態(tài)數(shù)據(jù)If(IsInputData == 1){//判斷是否有輸出操作
ReadDRAM_Input();//從LAN9252中讀取輸入數(shù)據(jù)到DSP
Input_Operate();//DSP執(zhí)行對(duì)輸入數(shù)據(jù)的后繼處理
If(IsInputData == 1)//判斷是否有輸入操作
WriteDRAM_Output();//DSP將模擬量數(shù)據(jù)發(fā)送到LAN9252的DRAM
Add_WKC_data();//將WKC計(jì)數(shù)器值+1
4.4從站狀態(tài)機(jī)的處理
因?yàn)樵趯?shí)際使用從站時(shí),從站需要根據(jù)主站發(fā)送來狀態(tài)操作在以下幾種狀態(tài)之間切換:Init(初始化)、Pre-Operation(預(yù)運(yùn)行)、Operational(運(yùn)行)、Safe-Operational(安全運(yùn)行)和可選狀態(tài)Boot-Strap(引導(dǎo)狀態(tài)),所以需要對(duì)從站的工作狀態(tài)進(jìn)行檢測(cè)和切換。主站若想改變從站狀態(tài),需將目的狀態(tài)寫入到從站芯片的相應(yīng)控制位,從站在接收到這個(gè)命令后進(jìn)行后繼的相應(yīng)處理,從站狀態(tài)機(jī)管理的處理流程圖如圖4所示:
圖4 從站狀態(tài)轉(zhuǎn)換程序流程圖
在設(shè)計(jì)時(shí),從站從高級(jí)別狀態(tài)向低級(jí)別狀態(tài)轉(zhuǎn)換時(shí),需先停止相應(yīng)的通信數(shù)據(jù)處理,再進(jìn)行狀態(tài)切換。
4.5模擬量數(shù)據(jù)采集
利用DSP自帶的AD轉(zhuǎn)化管腳對(duì)模擬量進(jìn)行采集,利用低優(yōu)先級(jí)的定時(shí)中斷程序(高優(yōu)先級(jí)用作周期性數(shù)據(jù)的操作,以保證EtherCAT總線的實(shí)時(shí)性),定時(shí)時(shí)間為2us,每執(zhí)行一次這個(gè)中斷就進(jìn)行一次模數(shù)轉(zhuǎn)換。在程序編寫時(shí),定義1個(gè)整形數(shù)組,數(shù)組長度為25,每執(zhí)行一次模數(shù)轉(zhuǎn)換,就將轉(zhuǎn)換后的數(shù)據(jù)更新到這個(gè)數(shù)組中,替換掉數(shù)組中最早轉(zhuǎn)換的數(shù)據(jù),同時(shí)取這個(gè)數(shù)組中每個(gè)數(shù)據(jù)的平均值作為當(dāng)前模數(shù)轉(zhuǎn)換值,這樣就能保證在EtherCAT總線最小的循環(huán)周期50us的情況下,每次采集到數(shù)據(jù)都是最新的數(shù)據(jù)。當(dāng)有寫入數(shù)據(jù)操作時(shí),將這個(gè)數(shù)據(jù)寫入到LAN9252相應(yīng)的存儲(chǔ)區(qū),通過EtherCAT總線發(fā)送到主站,供其使用。
本設(shè)計(jì)采用TMS320F2812芯片和LAN9252芯片相結(jié)合,設(shè)計(jì)了一款可以采集模擬量數(shù)據(jù)的、具有EtherCAT總線協(xié)議的從站模塊。該EtherCAT總線從站模塊具有傳輸速度快、實(shí)時(shí)性高、易于控制等特點(diǎn),在基于嵌入式PC控制的高速卷煙機(jī)技術(shù)改造及信息數(shù)據(jù)采集系統(tǒng)中具有很高的應(yīng)用價(jià)值。
[1] 吉順平. 網(wǎng)絡(luò)控制系統(tǒng)的控制器與通信協(xié)議的研究與設(shè)計(jì)[D]. 南京:南京航空航天大學(xué),2009.
[3] MICROCHIP TECHNOLOGY INC. LAN9252 Datasheet[Z]. 2015.
[4] Texas Instruments. TMS320F2812 Data Manual[Z]. 2011.
Design of EtherCAT Slave Station for High Speed Cigarette Machine
According to the present situation of embedded PC widely used in high speed cigarette units, the author utilizes the slave station chips and DSP to design an EtherCAT slave station, which implements the analog data acquisition and standard protocol communication. The hardware design and software design of the system are introduced in this paper. The LAN9252 chip is used to implement the EtherCAT protocol communication of slave station. The DSP chips are responsible for the initialization of the station, the analog signal acquisition, the data receiving and dispatching, and the state management.
EtherCAT; Cigarette units; Slave station
李源源(1980-),男,河南鶴壁人,高級(jí)企業(yè)培訓(xùn)師,碩士,現(xiàn)就職于中國煙草總公司職工進(jìn)修學(xué)院,從事卷煙生產(chǎn)、物流設(shè)備的電氣自動(dòng)化系統(tǒng)設(shè)計(jì)、教學(xué)及信息系統(tǒng)集成工作和研究。