倪 敏
(上海辰竹儀表有限公司,上海 201612)
基于實時操作系統(tǒng)的智能儀表軟件設計
倪 敏
(上海辰竹儀表有限公司,上海 201612)
在過程自動化(PA)和工廠自動化(FA)系統(tǒng)應用中,存在大量現(xiàn)場信號需要檢測和控制。這些信號需符合安全規(guī)范要求,如防爆安全要求、ISO 13849機械安全要求等。目前,主流應用的工業(yè)儀表之間并沒有真正實現(xiàn)安全信號的數(shù)字化傳輸。隨著 “兩化融合”的深入推廣,工業(yè)儀表的數(shù)字化、網絡化、智能化是必由之路。嵌入式操作系統(tǒng)是當今構建智能系統(tǒng)的重要軟件基礎,是一種用途廣泛的系統(tǒng)軟件,負責全部軟硬件資源的分配、任務調度,控制和協(xié)調軟件并發(fā)任務。主要探討了基于μC /OS-III實時操作系統(tǒng)的工業(yè)智能儀表軟件設計。該設計為工業(yè)儀表的數(shù)字化提供一個安全、可靠、可擴展的軟件平臺,為嵌入式智能儀表軟件發(fā)展提供一些思路和經驗。
智能儀表; 實時操作系統(tǒng); 工業(yè)以太網; 兩化融合; 消息隊列; Modbus
在工業(yè)智能儀表模塊中,一旦有信號處理超時就會帶來嚴重后果,甚至引發(fā)事故危及生命。所以在智能儀表軟件開發(fā)中,對軟件處理結果的正確性和處理過程的及時性都有嚴格要求。
在智能儀表軟件系統(tǒng)中[1-2],引入實時操作系統(tǒng),可以協(xié)調完成對硬件資源的高效分配、任務調度,控制、協(xié)調并發(fā)活動。實時操作系統(tǒng)為高效、可靠的軟件開發(fā)提供了基礎平臺。
本文主要探討了基于μC /OS-III實時操作系統(tǒng)的工業(yè)智能儀表軟件的設計。該設計為工業(yè)儀表的數(shù)字化提供一個安全、可靠、可擴展的軟件平臺,為嵌入式智能儀表軟件發(fā)展提供一些思路和經驗。
目前,ARM Cortex M3/M4處理器在工業(yè)安全I/O上的應用具有許多技術性的優(yōu)勢(相比8位、16位處理器),例如:哈佛總線架構32位尋址、低功耗、高性能、可配置的中斷控制器、OS支持、軟件可移植性等。
ARM Cortex M3/M4處理器在設計之初就考慮了OS應用,其多個特性確保了OS的實現(xiàn)和OS的高效運行,例如:影子棧指針、SysTick定時器、SVC和PendSV異常、非特權執(zhí)行等級、排他訪問等。
ARM Cortex M3/M4處理器中存在主堆棧指針MSP和進程堆棧指針PSP。這種設計的優(yōu)點是:若應用遇到導致棧破壞的問題,OS內核使用的棧和其他任務使用的棧不會受到影響,因此可以提高系統(tǒng)的可靠性。
基于ARM Cotex-M處理器的嵌入式智能儀表硬件系統(tǒng)架構如圖1所示。
圖1 智能儀表硬件架構圖
硬件系統(tǒng)以ARM Cortex M3/M4處理器為核心,通過并行數(shù)據(jù)總線,外擴SRAM、NAND FLASH,進一步擴充存儲器資源。外設硬件接口涵蓋了工業(yè)主流的接口配置:100 MHz以太網、RS-232、RS-485、CAN總線、USB。
隨著工業(yè)以太網的興起,網絡通信接口成為了智能儀表和設備互聯(lián)互通較方便的接口標準。ST公司的幾款M3/M4處理器都集成以太網MAC IEEE 1588,硬件上再通過RMII/MII接口連接一塊物理芯片即可實現(xiàn)。TCP/IP協(xié)議??梢赃x擇Micrium公司的μC/TCP-IP(需要商業(yè)授權)或瑞典計算機科學院推出的輕量級TCP/IP協(xié)議(LWIP)。
通過移植相應的軟件協(xié)議棧,實現(xiàn)Modbus TCP、Modbus RTU、CANopen、DeviceNet、ProfiBus DP等主流的各類現(xiàn)場總線[3-4]。
其他外設還包括工業(yè)SD 卡、RTC時鐘等豐富的硬件資源,可以滿足工業(yè)檢測與控制應用場合需求。
核心ARM處理器使用了0.65 mm BGA工藝,提高了PCB集成度,使得產品體積進一步縮小。接口電路都采用增強型EMC設計,確保在工業(yè)惡劣應用環(huán)境中也能穩(wěn)定可靠運行。Cortex-M處理器[5-9]的功耗都普遍小于200 A/MHz。試驗表明,CPU運行168 MHz的工作主頻,溫升小于5 ℃,所以無需考慮CPU主動散熱。
2.1 輪詢模式
對于簡單的系統(tǒng),CPU可以一直處于等待狀態(tài),直到有事件突然發(fā)生,再進行事件的分析和處理,處理完畢CPU繼續(xù)等待。圖2的輪詢模式可以滿足簡單的應用需求。但是當應用程序變得更加復雜的時候,輪詢模式的程序設計和維護變得非常困難。此外,輪詢很難定義不同事件的處理優(yōu)先級,會導致系統(tǒng)的反應遲鈍。當有緊急請求事件發(fā)生時,CPU還在處理不重要的事情,直到處理完畢才能響應,系統(tǒng)的實時性差。
圖2 輪詢模式流程圖
2.2 中斷驅動模式
對于有功耗要求的系統(tǒng),只能選擇中斷驅動模式。CPU在等待某個事件的時候,可以進入低功耗模式,降低CPU工作能耗。在中斷驅動模式中,不同的外設被設置成不同的中斷優(yōu)先級(根據(jù)系統(tǒng)重要等級進行設計分配),優(yōu)先級高的中斷可以打斷優(yōu)先級低的中斷程序,這種軟件流程機制的響應是非常迅速的。在多數(shù)情況下,軟件設計會將輪詢模式和中斷驅動模式結合起來。當某個緊急的事件需要服務的時候,采用中斷驅動模式,觸發(fā)一個中斷請求。當中斷服務子程序處理完畢后,它就會回到主程序,利用輪詢的方式,進行應用程序的處理。
中斷驅動模式流程圖如圖3所示。
圖3 中斷驅動模式流程圖
2.3 基于實時操作系統(tǒng)的多任務系統(tǒng)
當應用程序復雜到一定程度時,輪詢模式和中斷驅動模式的程序架構未必能夠滿足處理需求。需要采用基于實時操作系統(tǒng)(real-time operation system,RTOS)的多任務系統(tǒng)。當系統(tǒng)中有執(zhí)行時間長的任務時,也需滿足系統(tǒng)的實時性響應需求。為滿足這種應用情況下的實時性要求,需要將處理器時間劃分成為多個時間片并且將時間片分給這些任務。實時操作系統(tǒng)RTOS的內核可以處理多任務的調度。目前可用于Cortex-M處理器的實時操作系統(tǒng)多達30多種,μC /OS-III最早由清華大學邵貝貝教授引入國內,是應用比較早、影響比較大的一種處理器。多任務系統(tǒng)通過高效的后臺任務調度、時間管理、任務同步、信息傳遞、存儲器管理等,程序結構更加標準化和健壯,使應用程序的開發(fā)更加高效。
基于RTOS的多任務系統(tǒng)流程如圖4所示。
圖4 多任務系統(tǒng)流程圖
時間觸發(fā)方式在嵌入式軟件領域很重要。這種方式簡單、可靠,具有很好的預測性,在一些安全關鍵領域得到了廣泛的應用?;谶@種機制設計的實時操作系統(tǒng),是一個可裁剪、可剝奪的多任務系統(tǒng),沒有任務數(shù)量的限制,是μC/OS的第三代內核。
μC/OS-III支持先進的搶占式調度器,最高優(yōu)先級的任務一旦就緒,總能得到CPU的控制權。如果中斷服務子程序使一個高優(yōu)先級的任務進入就緒態(tài),中斷完成時,優(yōu)先級高的那個任務開始運行。這種調度機制可以快速響應任務的調度。
通過以下實例介紹這種機制的工作原理。系統(tǒng)的時間節(jié)拍一般設置為1 000 Hz(節(jié)拍越快,系統(tǒng)開銷越大,取決于系統(tǒng)所需要的時間精度),由硬件定時器SystemTick產生。
典型的多任務系統(tǒng)調度如圖5所示。多任務系統(tǒng)有2個用戶任務(任務A和任務B),還有2個最基本的μC/OS系統(tǒng)內部任務。①節(jié)拍任務OS_TickTask(),一般設置優(yōu)先級為系統(tǒng)最高,是整個操作系統(tǒng)的時鐘源,用來跟蹤任務的延時和等待超時。②空閑任務OS_IdleTask()具有最低的優(yōu)先級,當所有其他任務都沒有就緒時,系統(tǒng)就會調用空閑任務。當系統(tǒng)對電功耗有要求時,可以在該任務回調函數(shù)中OSIdleTaskHook()中將CPU置成低功耗模式,從而降低CPU功耗,當下一個SysTick中斷到來時,CPU中斷觸發(fā),退出低功耗模式。
圖5 多任務系統(tǒng)調度示意圖
任務B是一個典型的長時間任務,需要8個時間片才能完成。任務A的優(yōu)先級高于任務B??梢钥吹剑蝿誂進入了就緒態(tài),任務A立刻剝奪了CPU的使用權,在2個時間片內完成工作后,將CPU使用權交還給了優(yōu)先級低的任務B。當任務B完成所有工作后,系統(tǒng)會自動調用空閑任務中,等待其他任務對CPU資源的調用。
μC/OS-III是一個可剝奪型的內核,總是運行當前任務就緒表中優(yōu)先級最高的那個任務。實時內核負責管理這些任務(或者叫做線程),多任務的有效管理,實現(xiàn)了對CPU資源的高效利用。μC/OS-III還具有其他許多特性,如信號量和消息傳遞等,有助于實現(xiàn)應用程序的模塊化開發(fā)、團隊合作,以及更為復雜的實時應用系統(tǒng)。
利用μC/OS-III消息傳遞服務,實現(xiàn)Modbus通信。數(shù)據(jù)幀的接收:使用直接內存存取(direct memory access,DMA)傳輸將串行總線外設接收到的數(shù)據(jù)直接復制到內存地址空間。無需CPU的干預,通過DMA數(shù)據(jù)可以快速地移動數(shù)據(jù)。這就節(jié)省了CPU的資源來進行其他操作。DMA同樣可以實現(xiàn)串口數(shù)據(jù)從內存區(qū)的自動發(fā)送,不需要CPU的仲裁。相比傳統(tǒng)的采用USART接收和發(fā)送字節(jié)中斷來實現(xiàn)串口數(shù)據(jù)的轉發(fā),軟件效率得到極大提高。串行數(shù)據(jù)接收示意圖如圖6所示。
圖6 串行數(shù)據(jù)接收示意圖
Modbus 通信時,規(guī)定主機發(fā)送完一組命令必須間隔3.5個字符再發(fā)送下一組新命令。這3.5個字符的主要作用是告訴其他設備這次命令(數(shù)據(jù))已結束。ARM Cortex-M處理器USART的Idle Line Detect,最適合對一個完整串行通信幀進行偵測。當UASRT總線空閑超過3.5個字符時間,硬件產生中斷,啟動解析USART接收緩沖區(qū)中的數(shù)據(jù)。通用Modbus幀如圖7所示。
圖7 通用Modbus幀示意圖
Modbus數(shù)據(jù)幀接收示意圖如圖8所示。
圖8 Modbus數(shù)據(jù)幀接收示意圖
RTOS的消息包含:指向數(shù)據(jù)的指針、表明數(shù)據(jù)長度的變量和記錄消息發(fā)布時刻的時間戳。指針指向的可以是一塊數(shù)據(jù)區(qū)或者是一個函數(shù),消息的內容必須一直保持可見,因為發(fā)布數(shù)據(jù)采用的引用傳遞是指針而不是值傳遞。發(fā)布的數(shù)據(jù)本身不產生數(shù)據(jù)拷貝,因此當數(shù)據(jù)量很大時發(fā)布的速度是很快的。
OSTaskCreate()函數(shù)建立Modbus幀解析任務。μC/OS-III已經支持通過任務自身內建的消息隊列接收數(shù)據(jù)(無需再申請消息隊列變量)。中斷服務子程序使用OSQPost()函數(shù)發(fā)布消息。μC/OS-III對消息隊列的讀取可以采用先進先出FIFO的方式,也可以采用后進先出LIFO的方式。Modbus通信采用先進先出FIFO的方式。主任務(Modbus幀解析任務)一直處于等待消息隊列OSQPend()。當消息隊列接收到Modbus數(shù)據(jù)幀,該任務馬上被μC/OS調度器喚醒,進入就緒態(tài);沒有高優(yōu)先級的任務時,轉為運行此任務,進行數(shù)據(jù)幀的解析:地址的配對、數(shù)據(jù)幀差錯校驗。然后根據(jù)不同功能碼、數(shù)據(jù)內容進行Modbus通信應答。最后調用串口DMA發(fā)送,將應答數(shù)據(jù)幀發(fā)送出去。
對于嵌入式軟件的架構設計來說,消息隊列是一個至關重要的組件,可以給智能軟件開發(fā)帶來的好處如下。
①擴展性增強。消息隊列在處理過程中間插入了一個數(shù)據(jù)的接口層,擴展或修改兩邊的處理過程變得非常方便。
②數(shù)據(jù)安全冗余。消息隊列將數(shù)據(jù)進行保存直到被完全處理,通過這一方式規(guī)避了數(shù)據(jù)丟失風險。
③數(shù)據(jù)的保證送達。消息隊列提供的冗余機制保證了消息能被實際的處理,只要一個用戶任務(進程)讀取了該隊列即可。
RTOS是構建智能軟件體系非常重要的基礎平臺,內容非常豐富。
軟件是智能儀表的“魂”,是核心關鍵基礎技術。智能儀表核心軟件的發(fā)展趨勢是依賴RTOS。RTOS負責調度可利用的資源完成實時任務,并控制和協(xié)調好所有實時任務的運行,提高了軟件系統(tǒng)的及時響應和高可靠性。在智能儀表的軟件開發(fā)中,使用RTOS技術可以將軟件系統(tǒng)以足夠快的速度予以運行,運行的結果又可以在規(guī)定的時間內對處理系統(tǒng)作出快速響應。
μC/OS-III只是眾多RTOS家族中的一員,是一個開源的系統(tǒng),可以給相關技術人員提供一些嵌入式智能儀表開發(fā)的思路。
[1] 溫宗周,錢佳佳,豆朋達,等.基于嵌入式的智能熱能表系統(tǒng)設計[J].自動化儀表,2016,37(12):45-49.
[2] 劉東波,呂方,陳玉娟,等.現(xiàn)場總線和智能儀表與核電廠DCS的接口分析及應用[J].自動化儀表,2015,36(11):41-44.
[3] 譚浩強.C程序設計[M].2版.北京:清華大學出版社,1999:13-37.
[4] 陽憲惠.現(xiàn)場總線技術及其應用[M].2版.北京:清華大學出版社,2008:15-37.
[5] 郇極,劉艷強.工業(yè)以太網現(xiàn)場總線EtherCAT驅動程序設計及應用[M].北京:北京航空航天大學出版社,2010:5-27.
[6] JEAN J.嵌入式實時操作系統(tǒng)μC/OS-III[M].北京:北京航空航天大學出版社,2012:100-230.
[7] JOSEPH Y.ARM Cortex-M3 Cortex-M4權威指南[M].3版.北京:清華大學出版社,2015:80-355.
[8] 廖義奎.ARM Cortex-M4嵌入式實戰(zhàn)開發(fā)精解:基于STM32F4[M].北京:北京航空航天大學出版社,2013:13-27.
[9] 彭剛,秦志強.基于ARM Cortex-M3的STM32系列嵌入式微控制器應用實踐[M].北京:電子工業(yè)出版社,2011:1-29.
Design of the Intelligent Instrument Software Based on Real Time Operating System
NI Min
(Shanghai Chenzhu Instrument Co.,Ltd.,Shanghai 201612,China)
There are a large number of field signals need to be detected and controlled in the applications of process automation (PA) and factory automation (FA) systems,and some of these should meet the requirements of safety regulations,e.g.,ISO 13849 explosion-proof safety requirements of mechanical safety requirements,etc. At present,there is no true realization of digital transmission of safety signals amongmainstream applicable industrial instrumentation. With the in-depth promotion of the “Integration of Informatization and Industrialization”,the digitization,networking and intellectualization of the industrial instrumentation are the only way.The embedded operating system is an important foundation for constructing today’s intelligent systems;it is widely used system software responsible for resource allocation,task scheduling,control and coordination of the whole software and hardware. The design of the application of μC /OS-III RTOS in industrial intelligent instrument is investigated;it provides a safety,reliable and scalable software platform for digitizing industrial instruments,and certain concept for developing embedded intelligent instrument software.
Intelligent instrument; Real time operating system; Industrial ethernet; Integration of informatization and industrialization; Message queue; Modbus
倪敏(1984—),男,學士,工程師,主要從事智能安全控制器的研發(fā)。E-mail:nimin@chenzhu-inst.com。
TH7;TP2
A
10.16086/j.cnki.issn1000-0380.201708022
修改稿收到日期:2017-06-23