付建國,李 益,李 程,周 斌
(中車株洲電力機車研究所有限公司,湖南 株洲 412001)
工業(yè)實時控制器作為工業(yè)設備的大腦,承擔著設備實時控制、系統IO、對外通信等功能。隨著當前工業(yè)設備市場競爭日趨白熱化,對控制器功能多樣性及成本管控提出了越來越大的挑戰(zhàn)。
為實現設備在功能密度提升的同時滿足成本下降的需求,本文提出并設計了一種基于TMS320F28377D型微控制單元(microcontroller unit,MCU)的控制系統的平臺架構。TMS320F28377D(簡稱“F28377D”)為TI公司生產的單MCU雙核芯片,其中一個內核完成傳感器信號采集、PWM脈沖生成、故障快速保護與電機算法控制等任務,另一個內核實現邏輯程序控制、故障數據記錄、程序遠程加載、波形監(jiān)視等功能。這種基于F28377D的單芯片平臺架構不僅滿足了工業(yè)實時控制器的功能需求,而且極大地簡化了系統的數據流并降低了產品成本,同時也減輕了平臺的維護壓力[1]。
本控制器采用單芯片F28377D架構,其硬件關聯關系如圖1所示。F28377D采用I2C總線通信,實現對時鐘芯片和溫濕度芯片的訪問;采用串行外設接口(serial peripheral interface,SPI)總線通信,實現對旋變解碼芯片、NOR Flash芯片以及集成以太網芯片的訪問,進而實現以太網通信功能;利用片內AD采樣模塊實現對電壓、電流等信號的采集;利用片內PWM模塊生成PWM脈沖,進而實現電機控制。
主控芯片采用F28377D,其是一款功能強大的32位浮點微控制器(MCU),專門針對高級閉環(huán)控制應用而設計。F28377D支持新型雙核架構,顯著提升了系統性能;雙實時控制子系統基于TI的32位C28x浮點CPU,每個內核可提供200 MHz的信號處理能力。F28377D包含2個外部存儲器接口(EMIF)、2個CAN模塊、3個高速(最高50 MHz)SPI端口、4個串行通信接口、2個I2C接口、4個模數轉換器(最多支持12路16位AD采樣或者24路12位AD采樣)、24路具有增強功能的脈寬調制器通道以及8個比較器子系統,可在未滿足電流限制條件的情況下保護功率器件。
基于F28377D的控制系統軟件架構主要分為底層軟件和應用軟件,它們分別被存放在片內FLASH存儲器的兩個扇區(qū)。底層軟件主要負責更新應用軟件,應用軟件主要實現實時控制功能。控制器上電時,首先運行底層軟件并判斷是否需要跳轉到應用軟件;應用軟件運行后,根據需求可下發(fā)指令跳轉回底層軟件進行應用軟件的更新。應用軟件的架構如圖2所示。其中,內核CPU1負責邏輯程序控制、故障記錄并結合硬件TCP/IP協議棧芯片(W5500)實現以太網通信,進而實現參數分離、波形監(jiān)視等功能。內核CPU2通過片上AD采樣模塊實現對電機控制側和電網控制側模擬信號以及模塊溫度信號的采集;同時利用采集到的模擬信號生成相應的PWM脈沖,實現電機算法控制;另外,根據故障反饋信號封鎖PWM脈沖,實現故障保護。CPU1和CPU2通過內部共享RAM,實現雙核之間的數據交互。
在工業(yè)領域,成本是產品競爭的關鍵,針對這一特點,本文提出的低成本控制平臺相較于傳統平臺有如下優(yōu)勢:
(1)在傳統平臺中,實時控制由DSP執(zhí)行,邏輯控制由ARM處理器執(zhí)行;本文所設計的平臺則將實時控制及邏輯控制功能融合于單片MCU中,使得成本大幅降低[2]。
(2)在傳統平臺中,實時保護由FPGA完成;而本平臺以F28377D作為專用MCU,在芯片內部集成了基于模擬量比較器的實時硬件保護電路,構建了實時保護體系。
(3)在傳統平臺中,用操作系統的文件服務記錄故障文件;本平臺建立了一套全新的文件管理機制,在無操作系統情況下可以實現文件管理。
(4)在傳統平臺中,用操作系統的內存服務管理波形監(jiān)視數據;本平臺提出了一種高效內存管理方法,可提升內存利用率,實現數據的高效管理。
(5)傳統平臺設計需要操作系統工程師、實時控制軟件工程師、底層驅動開發(fā)工程師3人全部參與;而本平臺實現所有功能一體化,只需底層驅動開發(fā)工程師1人參與即可,實現了資源集約型平臺開發(fā)。
本平臺在成本大幅降低的同時,完全保留了既有“CPU+FPGA”架構平臺的所有功能特征,性價比高,優(yōu)勢明顯,滿足低成本實時控制系統需求。
本節(jié)重點介紹該控制平臺軟件架構重要功能的實現方法,主要包含系統同步采樣、以太網通信、波形監(jiān)視、故障記錄以及程序遠程加載等。
工業(yè)實時控制器是一個高實時性的數字控制系統,在實際的控制過程中,采樣位置和控制輸出的精確性直接影響著控制系統的控制精度和系統的響應速度,最終影響算法的控制效果。
在當前常見的“DSP+FPGA”架構控制器中,DSP的主循環(huán)控制在DSP芯片時鐘驅動下周期性運行,而數據采樣則在可編程器件的內部時鐘驅動下按照固定周期完成數據采樣,兩者屬于異步時鐘系統。采樣數據在傳遞給DSP的過程中引入了由于異步時鐘關系引起的抖動偏移,造成DSP接收數據采樣時刻的不確定性,從而影響控制響應過程。在這樣的異步架構下,DSP的控制結果輸出也同樣存在這樣的問題,其引入的數據抖動對系統的快速響應和收斂會造成一定影響。
為保證傳感器采樣與控制算法間的固定相位關系,本方案基于F28377D內部集成的ADC電路,構建了一套同步采樣方案,即在載波過零點t0時刻和周期值點t1時刻兩個時刻同時觸發(fā)AD采樣并且產生中斷運行控制算法,t2時刻和t3時刻分別為AD采樣完成時刻,且(t2-t0)等于(t3-t1)。該方案可以保證采樣轉換完成時刻與主循環(huán)周期的固定相位關系,從而有效控制采樣偏移抖動帶來的控制振蕩。其同步控制系統時序如圖3所示。
以太網通信作為當前運用最為普遍的通信方式,已成為工業(yè)設備調試及信息交互不可或缺的手段。傳統以太網協議棧軟件體積較大,需要具備大容量內存的CPU及操作系統來實現。
為滿足小型MCU處理器系統對外以太網通信的需求,本平臺采用“F28377D+硬件協議棧芯片W5500”的方式來實現以太網通信,其內部數據流為F28377D內核CPU1與W5500進行SPI通信傳輸的數據,W5500與客戶端計算機之間按照特定的TCP/IP協議進行用戶數據報協議(user datagram protocol,UDP)通信來傳輸數據,其數據流如圖4所示[3-4]。相較現有的“ARM+以太網物理層芯片”方案,本文所提方案可降低開發(fā)難度、減輕工作量、提高系統集成度、使系統運行更加穩(wěn)定;且以太網通信模塊的應用為波形監(jiān)視、故障記錄、程序遠程加載等功能的設計提供了基礎[5]。
圖4 以太網通信數據流Fig.4 Ethernet communication data flow diagram
為了在產品開發(fā)過程中調試,本平臺利用已開發(fā)的以太網通信方案,設計并開發(fā)了波形監(jiān)視功能。基本原理為:CPU2將待監(jiān)視數據存儲到片內RAM存儲器中;CPU1讀取RAM中待監(jiān)視的數據,其通過W5500發(fā)送給上位機軟件并以波形的形式顯示出來[6]。
根據應用的需求,波形監(jiān)視方案設計要點如下:
(1)CPU2配置16個待監(jiān)視變量。
(2)為防止出現數據丟失現象,在CPU2片內RAM中配置2個緩存區(qū)間,每個緩存區(qū)間大小為160個字(緩存10次),以實現乒乓緩存。
(3)為防止CPU1重復接收數據,在CPU1讀取待監(jiān)視數據程序里定義了防止重復讀取標志位。
波形監(jiān)視流程如圖5所示。圖中,Buffer1是用來表示緩存區(qū)間1和緩存區(qū)間2緩存數據滿標志位。該標志位只能由CPU2對其進行寫操作,CPU1只能對其進行讀操作。標志位為1,表示緩存區(qū)間1存滿數據;標志位為0,表示緩存區(qū)間2存滿數據。Buffer_cnt為緩存次數變量,每個緩存區(qū)緩存10次。Flag為防止重復讀取標志位,標志位為0,表示緩存區(qū)間1數據未被讀?。粯酥疚粸?,表示緩存區(qū)間2數據未被讀取。該標志位只能由CPU1對其進行寫操作,CPU2只能對其進行讀操作。
圖5 波形監(jiān)視流程Fig.5 Waveform monitoring flow diagram
圖5中,藍色虛線框內為CPU2將待監(jiān)視數據存儲到片內RAM的流程;紅色虛線框內為CPU1將RAM里的待監(jiān)視數據讀取出來,并采用以太網通信方式發(fā)送給上位機軟件后以波形的形式顯示出來的流程。
本方案對波形監(jiān)視中可能出現丟失數據和重復接收數據的情況做了相應的處理。首先,數據丟失和重復接收是由于CPU2存滿一個緩存區(qū)間所用的時間(T2)與CPU1讀取一個緩存區(qū)間所用的時間(T1)不匹配而導致的。如果T1>T2,則會出現數據丟失情況,此時可通過增加每個緩存區(qū)間的緩存次數來解決該問題,即增大每個緩存區(qū)間的存儲容量;如果T1<T2,則會出現重復接收數據的情況,此時通過判斷Flag的值并做相應處理來解決該問題。
為了提升產品的質量,故障記錄在工業(yè)傳動產品應用過程中是不可或缺的。本平臺故障記錄的基本原理為:F28377D內核CPU1接收故障反饋信息,再將此故障信息傳輸給CPU2;若沒有故障發(fā)生,CPU2將在環(huán)形緩存區(qū)更新并存儲故障前數據;若有故障發(fā)生,CPU2將在環(huán)形緩存區(qū)更新、存儲故障后數據并在存儲完后告知CPU1,CPU1將禁止CPU2更新環(huán)形緩存區(qū)內數據,同時,將環(huán)形緩存區(qū)內數據存儲到NOR flash存儲器,待CPU1完成故障信息存儲再通知CPU2更新環(huán)形緩存區(qū)內數據[7]。
根據應用的需求,故障記錄方案設計要點如下:
(1)在SDRAM內配置環(huán)形緩存區(qū),大小為120 000個字節(jié),即60 000個字。存儲20個16位的變量,每個變量故障前存儲2 000個點,即存儲空間為2 000個字;故障后存儲1 000個點,即1 000個字。
(2)在NOR Flash內配置環(huán)形緩存區(qū),分為41塊。每塊大小為128 KB,存儲一條故障記錄數據,擦除下一數據塊用來存儲40條故障記錄數據。
(3)若無故障,環(huán)形緩存區(qū)持續(xù)更新、存儲故障前數據;若發(fā)生故障,環(huán)形緩存區(qū)更新存儲故障后數據(共計1 000個點)。
(4)禁止更新環(huán)形緩存區(qū)內數據,并將環(huán)形緩存區(qū)內數據存儲到NOR Flash存儲器中。
根據應用需求,故障記錄模塊需要保存最新的40條故障記錄數據。由于本平臺沒有相應操作系統來對文件進行管理,這就要求平臺能夠記住上一次故障記錄數據存放在NOR Flash內的位置。本平臺采用的防掉電連續(xù)存儲方案如下:
(1)在NOR Flash內配置一個環(huán)形緩存區(qū),將其均分為41塊區(qū)域,依次為扇區(qū)1,......,扇區(qū)41,每塊大小為128 KB。
(2)依次讀?。◤牡?到第41扇區(qū))41個扇區(qū)的第1個字節(jié),若第1個字節(jié)為0xFF,則表示該扇區(qū)沒有存儲數據,并將此次故障記錄數據存儲到該扇區(qū)。
(3)擦除步驟(2)中存儲故障記錄數據扇區(qū)的下一個扇區(qū)。
故障記錄流程如圖6所示。圖中,紅色虛線框內流程為CPU2核內執(zhí)行的將故障記錄數據存儲到SDRAM的過程;藍色虛線框內除去紅色虛線框內流程外,其他流程為CPU1核內執(zhí)行的將故障記錄數據從SDRAM存儲到NOR Flash的過程;綠色虛線框內流程為防掉電連續(xù)存儲方案。
圖6 故障記錄流程Fig.6 Fault record flow diagram
圖6中,CPU1_FLAG=0,表示沒有故障發(fā)生;CPU1_FLAG=1,表示有故障發(fā)生;CPU1_FLAG=2,表示有故障發(fā)生且CPU2已經將故障記錄數據存儲到SDRAM的環(huán)形緩沖區(qū),此時CPU1正在將環(huán)形緩沖區(qū)中的數據存儲到NOR Flash,并且禁止CPU2向SDRAM的環(huán)形緩沖區(qū)存儲數據。CPU2_FLAG=0,表示沒有故障發(fā)生,此時正在向環(huán)形緩沖區(qū)更新故障前數據;CPU2_FLAG=1,表示有故障發(fā)生,此時CPU2正在向環(huán)形緩沖區(qū)存儲故障后數據;CPU2_FLAG=2,表示有故障發(fā)生且CPU2已經將故障記錄數據存儲到SDRAM的環(huán)形緩沖區(qū),此時正在等待CPU1將環(huán)形緩沖區(qū)中的數據存儲到NOR Flash。CPU1_FLAG只允許CPU1對其進行寫操作,CPU2只能對其進行讀操作;CPU2_FLAG只允許CPU2對其進行寫操作,CPU1只能對其進行讀操作。
現有的MCU應用程序更新的主要過程為:利用仿真器通過MCU的聯合測試工作組(joint test action group,JTAG)接口將應用程序下載到MCU內部閃存中,以對應用程序進行升級[8-9]。然而該種更新方式需要拆開控制器才能將仿真器連接到MCU,可操作性不強。另外,控制器若是從主電路取電,在升級過程中則可能存在安全隱患,也容易出現應用程序更新失敗的情況,從而使得程序升級工作效率偏低[10-11]。因此,本文提出了一種基于以太網通信的可靠、穩(wěn)定、高效的MCU應用程序升級方法。
本文使用的F28377D芯片包括兩個內核,每個內核都有其獨立的片內RAM和片內Flash,供每個內核自身使用[12]。每個內核的片內Flash分為兩個區(qū)間,分別存儲其對應的Boot程序和應用程序[13]。內核CPU1可與上位機進行以太網通信,通過上位機實現將應用程序裝載到片內FLASH中存儲應用程序的區(qū)間[14]。F28377D程序遠程更新主要分為以下幾個步驟:
(1)上位機通過以太網向F28377D發(fā)出更新請求。
(2)F28377D控制其內核CPU1和內核CPU2處于應用程序更新狀態(tài)。
(3)上位機通過以太網將升級程序發(fā)送給內核CPU1和/或內核CPU2。
(4)MCU根據接收到的升級程序對對應的應用程序進行升級。
F28377D的內核CPU1更新程序詳細步驟如下:
(1)上位機將升級程序分為多頁數據包,并依次將每頁數據包發(fā)送給內核CPU1。
(2)內核CPU1依次對數據包進行頁校驗。若頁校驗通過,則將該頁數據包存儲到內核CPU1中;否則上位機重新發(fā)送對應頁數據包。若同一頁數據包頁校驗3次均不通過,則停止升級。
(3)當升級程序的所有頁數據包均被存儲于內核CPU1中時,內核CPU1對接收到的升級程序進行程序校驗;若程序校驗通過,則上位機提示升級程序成功,否則提示升級程序失敗。
F28377D的內核CPU2更新程序詳細步驟如下:
(1)上位機將升級程序分為多頁數據包,并依次將每頁數據包發(fā)送給內核CPU1。
(2)內核CPU1將接收到的數據包依次發(fā)送給內核CPU2。
(3)內核CPU2對讀取的數據包進行頁校驗。若頁校驗通過,則將該頁數據包存儲到內核CPU2中;否則上位機重新發(fā)送對應頁數據包。若同一頁數據包頁校驗3次均不通過,則停止升級。
(4)當升級程序的所有頁數據包均存儲于內核CPU2中時,內核CPU2對接收到的升級程序進行程序校驗;若程序校驗通過,則上位機提示升級程序成功,否則提示升級程序失敗。
基于目前工業(yè)實時控制器平臺架構復雜、成本高等問題,本文提出并設計了基于F28377D的控制系統軟件平臺方案。該方案不僅滿足了工業(yè)實時控制器的功能需求,同時改變了傳統平臺的開發(fā)方式,實現了平臺的集約型開發(fā),原有平臺開發(fā)需要3人,每人開發(fā)用時2個月,本方案設計平臺只需1人開發(fā),開發(fā)用時3個月,縮短了平臺開發(fā)周期;另外,原有平臺需要“ARM+FPGA+DSP”3塊芯片,而本方案只需要單片F2837TD芯片,簡化了平臺數據流,控制器降本約30%。該平臺在空調螺桿機變頻器產品上批量裝機應用數千套,連續(xù)穩(wěn)定無故障運行一年以上,驗證了該平臺的可靠性。
為了滿足工業(yè)實時控制器日益增加的應用需求,后續(xù)本平臺可以利用其內部協處理器,將故障診斷及旋變軟解碼等功能布局在協處理器內,以實現單芯片4核控制。