摘 要: 基于Cortex-M3內核的ARM芯片STM32F107所構建的車橋追溯管理系統終端,采用以太網進行數據傳輸,嵌入μC/OS-II實時操作系統和LwIP協議棧,實現多任務的管理,優化數據的傳輸。實驗表明,終端系統穩定,人機對話界面友好,數據能快速、大量、有效傳輸,具有很好的應用前景。
關鍵詞: 車橋總成;STM32F107;以太網;μC/OS-II;LwIP協議棧
車橋生產企業錄入VIN編碼時,經常發生人為失誤,如工人在記錄時的字跡模糊不清、錄入員在錄入時的操作過失、遺漏單據等現象,阻礙了整個車橋安裝進程的進度,降低了勞動生產率,直接影響著企業的經濟效益[1]。至此,實時錄入工位車橋總成信息的終端具有應用的現實意義。由STM32F107構建的車橋追溯管理系統終端,通過以太網進行數據傳輸,同時嵌入μC/OS-II實時操作系統實現多任務管理,將工位總成信息傳至PC機以進行統一管理。
1 總體方案
終端采用基于Cortex-M3內核的ARM芯片STM32F107為處理器,構建STM32應用電路、以太網通信電路、人機接口電路、指示報警電路、電源電路,結構框圖如圖1所示。終端分為上橋終端與工位終端。工位終端安裝在裝配流水線的相關工序對應的工位,實現流水線工位有效信息的錄入;上橋終端安裝在裝配流水線的上橋工位,實現總成橋類型、數量按當班總調度的要求實時調度與控制。
終端的數據傳輸方式如圖2所示。PC機作為以太網
2 硬件設計
終端硬件分為STM32應用單元、以太網通信單元、人機接口單元、指示報警單元等。
2.1 STM32應用單元
STM32F107是一款性價比極高的微控制器,它集成了豐富的外圍功能模塊,可滿足多種應用場合,適宜于實時控制[2]。STM32的系統時鐘可來自3個不同的時鐘源,本終端采用HSE時鐘為高速外部時鐘信號,通過OSC_IN接入一個最高為25 MHz占空比為50%的外部時鐘信號提供系統所需的時鐘基準。復位方式為系統外部復位,通過按下獨立按鍵,向NRST引腳輸入低電平,完成復位。STM32的內核集成了串行線/JTAG調試接口用于接調試器,便于程序的調試。
2.2 以太網通信單元
以太網通信電路,如圖3所示。通過STM32F107的MAC接口與以太網驅動芯片DP83848構成的的PHY(物理層)接口相連接,再與網絡變壓器、RJ45插槽相連接,從而實現網絡通信。STM32F107以太網模塊支持兩種模式接口:獨立介質接口(MII)和簡化獨立介質接口(RMII)[3]。設計選擇獨立介質接口(MII),它需要16根數據和控制信號的引腳,支持10 Mb/s、100 Mb/s數據傳輸。
DP83848C是一款高性能的滿足10M/100M單接口的PHY物理層元器件,它具有低電壓損耗特性,同時提供幾種智能休眠模式,這樣可以減少電能的消耗,提高元器件的可靠性[3]。通過配置DP83848C的MII_MODE引腳為0,SNI_MODE引腳任意,選擇為MII模式。AN_EN、AN_0、AN_1引腳上拉3.3 V,自動協商功能使能,且支持10BASE_T半/全雙工和100BASE_TX半/全雙工兩種傳輸方式。PHY的物理地址由PHYAD[0:4]引腳確定,PHYAD[0]引腳內部有弱上來電阻,PHYAD[4:1]引腳有弱下拉電阻,所以PHY地址默認為00001(01h)。
2.3 其他單元
人機接口單元包括PS2鍵盤電路與LCM屏電路,主要用于人機信息的交互。指示報警單元利用LED燈和蜂鳴器對終端的運行情況進行指示、報警,包括網絡連接診斷指示、以太網通信指示、終端運行狀況指示和硬件錯誤指示,當終端出現硬件錯誤與通信錯誤時,除了LED外,報警電路的蜂鳴器同時響起。電源單元采用美國國家半導體LM2576HVS-3.3芯片將直流+48 V轉換為直流+3.3 V,為整個終端提供可靠、穩定的電能。
3 軟件設計
軟件上嵌入μC/OS-II實時操作系統[4],建立以太網通信、人機接口、指示報警、終端選擇等任務,通過μC/OS-II任務調度,完成任務的切換與運行。嵌入LwIP協議棧,實現TCP/IP協議層的構建。
3.1 LwIP協議棧移植
μC/OS-II是一個開放源碼的實時操作系統,它只是一個實時的任務調度及通信內核,缺少對外圍設備和接口的充分支持[5]。而LwIP TCP/IP在保持TCP協議主要功能的基礎上減少對RAM的占用,一般它只需要幾十KB的RAM和約40 KB的ROM就可以運行,這使LwIP協議棧適合在低端嵌入式系統中使用。它與系統其他部分的相對位置關系如圖4所示。
sys_arch.h中的內容是與OS相關的一些結構和函數,分為四個部份:
(1)sys_sem_t數據結構及信號量函數
struct sys_sem_t;sys_sem_new();
sys_sem_free();sys_sem_signal();
sys_arch_sem_wait();
(2)sys_mbox_t消息函數
sys_mbox_new();sys_mbox_free();
sys_mbox_post();sys_arch_mbox_fetch();
(3)系統超時函數
struct sys_timeouts*
sys_arch_timeouts(void)
(4)創建新線程函數
void sys_thread_new(void(*thread)(void*arg),void*arg);
3.2 任務劃分和資源分配
μC/OS-II是專為嵌入式應用設計的公開源代碼的搶占式實時操作系統,它把系統軟件分割成多個任務,每個任務負責完成相應工作,系統功能由多個任務協作完成[6]。任務分配方案的好壞將直接影響軟件編寫效率和性能,系統任務分配如表1所示。在起始任務中建立了一系列的郵箱信號來協調各個任務的運行,資源分配如表2所示。
終端μC/OS-II系統設置為每隔50 ms進行一次任務切換,以太網任務用于以太網數據的發送與接收;終端選擇任務是通過功能按鍵中斷觸發來選擇任務,進入終端選擇界面之后,根據界面的提示,通過PS2鍵盤選擇終端類型;人機接口任務主要完成人機信息的交互;指示報警任務則是最終端的運行狀況進行檢測、指示、報警。
在μC/OS-II平臺下,各個任務對資源的申請,以及任務間的通信通過操作系統的消息管理模塊來進行,可保證任務與任務之間的耦合性最小,增加了系統的穩定系數。
3.3 以太網通信任務
STM32F107的以太網模塊支持通過以太網收發數據,符合IEEE 802.3-2002標準,通過外接的PHY接口,支持10 Mb/s、100 Mb/s秒的數據傳輸速率。
(1)以太網任務初始化。針對此任務的變量、標志位以及LwIP協議棧初始化,其包括Heap型內存初始化,Pool型內存初始化,網絡配置初始化,宏定義初始化等。
(2)以太網數據發送與接收。上橋終端發送給工位終端的橋號先傳給PC機,再由PC機轉發給工位終端。如果由上橋終端直接發送給工位終端,則上橋終端既作服務器,又做客服端,這樣增加了終端程序的任務量,至此,將更多的數據傳輸交給PC機,充分利用PC機的高效性。以太網的數據在以太網中斷程序接收,通過μC/OS-II建立的以太網郵箱,將接收到的數據以郵件的形式“投遞”到以太網任務進行處理。有以太網郵件的到來才會激活以太網任務,否則,以太網任務一直處于掛起狀態。根據終端的類型將接收到的有效數據存儲至STM32F107自帶的Flash中,防止掉電意外丟失。同時對數據進行處理,通過以太網發送到相應的PC或者終端中。以太網通信任務流程圖如圖5所示。
終端上電后,如果是第一次啟動,尚未選擇終端類型,需要按下功能鍵,程序會自動進入終端選擇界面,通過PS2鍵盤選擇相應的終端,工位終端的選擇。
利用“網絡調試助手軟件”模擬上位機軟件,用來發送和接收各終端的信息。終端作為客戶端,PC機作為服務器。在“網絡調試助手軟件”對話框中設置好IP號、端口號,等待各終端的連接,各終端成功連接之后便可以進行數據傳輸。上橋終端接收到VIN碼后,將其顯示在液晶屏上,通過PS2鍵盤的確認鍵,每按一次,就發送一組VIN碼給工位終端。工位終端接收到VIN碼后,進入錄入數據界面,如圖7所示。輸入工序數,確認無誤后,再依次輸入分成號、工序號、操作者號,點擊確認鍵,數據通過以太網上傳給PC機。
車橋追溯管理系統終端結合μC/OS-II和以太網技術技術實現了數據遠程與實時傳輸。μC/OS-II實時操作系統的嵌入,大大提高了微處理器利用效率;多任務的建立,既加強了各外設的聯系,又優化了以太網數據的傳輸。實驗表明,此終端系統穩定,人機對話界面友好,以太網數據能快速、有效傳輸,具有廣闊的市場前景。
參考文獻
[1] 王文虎,李建奇,曾進輝.基于CAN總線的車橋總成數據管理系統設計[J].自動化與儀器儀表,2006(1):12-14.
[2] 黃鄭.擴展STM32系列續寫32位微控制器優勢[J].電子設計應用,2008,1(7):4-6.
[3] 宋鑫,郭勇,謝興紅.RMII模式以太網PHY芯片DP83848C的應用[J].單片機與嵌入式系統應用,2010(8):43-45.
[4] 邵貝貝.嵌入式實時操作系統UC/OS-II[M].北京:北京航空航天大學出版社,2003.
[5] 焦海波.TCP/IP協議棧LwIP的設計與實現[J].信息與控制,2000,29(2):12-14.
[6] 何雅琴.基于UCOS_II的智能窗系統的設計[D].上海:華東師范大學,2007.