姜日凡
1 引言
超載限制器是配置在重型起重設(shè)備的安全裝置之一,在吊裝作業(yè)過程中對被吊裝的貨物重量起到監(jiān)測作用。它根據(jù)該機械的額定重量作限制設(shè)定,當起吊重量達到限定值或超過限定值時,超載限制器就立刻發(fā)出報警甚至將自動切斷電源迫使吊鉤下降,放棄對超載貨物的吊裝。由于用戶的限價原因使得這種產(chǎn)品一直處于較低品位,但考慮到超載限制器是防止因超載而造成惡性事故的重要裝置,必須在性能、功能上加以提高來滿足實際需要并在產(chǎn)品成本上加以限制,提高市場競爭能力。
傳統(tǒng)的超載限制器采用單片機為核心部件控制和處理超載限制器的整個監(jiān)測過程,傳統(tǒng)的超載限制器的軟硬件有一些缺點,硬件缺點是芯片和元器件太多,造成超載限制器體積大,抗干擾性差。軟件缺點是大部分單片機flash太小無法嵌入操作系統(tǒng),一般主程序采用循環(huán)掃描,造成現(xiàn)場的實時性差。
我們采用移植了μC/OS-II操作系統(tǒng)的STM32F103為核心芯片的超載限制器,可以有效地避免傳統(tǒng)超載限制器的軟硬件的缺點;硬件方面減少了大量外部元器件(如:數(shù)據(jù)采集芯片、存儲芯片、通信芯片等),提高了抗干擾性,減小了體積,同時價格低廉,降低了產(chǎn)品成本;軟件方面移植了μC/OS-II操作系統(tǒng),提高了系統(tǒng)的實時性和程序的擴展性。
2 STM32F103芯片性能和特點
STM32系列基于專為要求高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計的ARM Cortex-M3內(nèi)核。ARM的Cortex-M3處理器是最新一代的嵌入式ARM處理器,它為實現(xiàn)MCU的需要提供了低成本的平臺、縮減的管腳數(shù)目、降低的系統(tǒng)功耗,同時提供卓越的計算性能和先進的中斷系統(tǒng)響應(yīng)。
STM32系列按性能分成兩個不同的系列:STM32F103“增強型”系列和STM32F101“基本型”系列。增強型系列時鐘頻率達到72MHz,是同類產(chǎn)品中性能最高的產(chǎn)品;基本型時鐘頻率為36MHz,以16位產(chǎn)品的價格得到比16位產(chǎn)品大幅提升的性能,是16位產(chǎn)品用戶的最佳選擇。兩個系列都內(nèi)置32K到128K的閃存,不同的是SRAM的最大容量和外設(shè)接口的組合。時鐘頻率72MHz時,從閃存執(zhí)行代碼,STM32功耗36mA,是32位市場上功耗最低的產(chǎn)品,相當于0.5mA/MHz。
STM32F103xx增強型系列使用高性能的ARM Cortex-M3 32位的RISC內(nèi)核,工作頻率為72MHz,具有單周期乘法和硬件除法,內(nèi)置高速存儲器(高達128K字節(jié)的閃存和20K字節(jié)的SRAM),豐富的增強I/O端口(多功能雙向5V兼容的I/O口和所有I/O口可以映像到16個外部中斷)和聯(lián)接到兩條APB總線的外設(shè)。所有型號的器件都包含2個12位的ADC(1us轉(zhuǎn)換時間和0至3.6V的轉(zhuǎn)換范圍)、3個通用16位定時器(每個定時器有多達4個用于輸入捕獲/輸出比較/PWM或脈沖計數(shù)的通道)和一個PWM定時器,還包含標準和先進的通信接口:多達2個I2C(SMBus/PMBus)和2個SPI同步串行接口(18兆位/秒)、3個USART(支持ISO7816,LIN,IrDA接口和調(diào)制解調(diào)控制)、一個USB和一個CAN。
STM32F103xx增強型系列工作于-40°C至+105°C的溫度范圍,供電電壓2.0V至3.6V,一系列的省電模式保證低功耗應(yīng)用的要求。
這些豐富的外設(shè)配置,使得STM32F103xx增強型微控制器適合于多種應(yīng)用場合:電機驅(qū)動和應(yīng)用控制、醫(yī)療和手持設(shè)備、PC外設(shè)和GPS平臺、工業(yè)應(yīng)用(如:可編程控制器、變頻器等)、警報系統(tǒng)、視頻對講和暖氣通風(fēng)空調(diào)系統(tǒng)。
3 μC/OS-II在STM32F103上的移植
我們采用移植了μC/OS-II操作系統(tǒng)的STM32F103為核心芯片的超載限制器,這樣就有效的提高了超載限制器的實時性。μC/OS-II是一個完成的,可移植、可固化、可裁減的搶占式實時多任務(wù)操作系統(tǒng)內(nèi)核。主要用ANSI的C語言編寫,少部分代碼是匯編語言。它的主要特點如下:
(1)公開源代碼,很容易就能把操作系統(tǒng)移植到各個不同的硬件平臺上;
(2)可移植性,絕大部分源代碼是用C語言寫的,便于移植到其他微處理器上;
(3)可裁剪性,有選擇的使用需要的系統(tǒng)服務(wù),以減少所需的存儲空間;
(4)占先式,完全是占先式的實時內(nèi)核,即總是運行就緒條件下優(yōu)先級最高的任務(wù);
(5)多任務(wù),可管理64個任務(wù),任務(wù)的優(yōu)先級必須是不同的,不支持時間片輪轉(zhuǎn)調(diào)度法;
(6)可確定性,函數(shù)調(diào)用與服務(wù)的執(zhí)行時間具有其可確定性,不依賴于任務(wù)的多少;
(7)實用性和可靠性,成功應(yīng)用該實時內(nèi)核的實例,是其實用性和可靠性的最好證據(jù)。
由于μC/OS-II僅是一個實時內(nèi)核,這就意味著它不像其他實時存在系統(tǒng)那樣提供給用戶的只是一些API函數(shù)接口,還有很多工作需要用戶自己去完成。
下面看看ucosii代碼組成:
os_core.c是ucosii的核心,它包含了內(nèi)核初始化,任務(wù)切換,事件塊管理等,其中事件塊是各個同步量的基礎(chǔ),如:os_flag.c、os_mbox.c、os_mutex.、os_q.c、os_sem.c 是各個同步量管理代碼;os_mem.c 是內(nèi)存管理代碼;os_time.c 是時間管理代碼,主要做各種延時;os_tmr.c是定時器管理代碼。
移植相關(guān)文件如下:os_cpu.h是進行數(shù)據(jù)類型定義,處理器相關(guān)代碼和幾個函數(shù)原型;os_cpu_c.c:是定義一些用戶hook函數(shù);os_cpu_a.asm:是移植需要用匯編代碼完成的函數(shù),主要就是任務(wù)切換函數(shù);os_dbg.c是內(nèi)核調(diào)試相關(guān)數(shù)據(jù)和函數(shù),可以不改。
4 結(jié)語
我們采用移植了μC/OS-II操作系統(tǒng)的STM32F103為核心芯片的超載限制器,該控制系統(tǒng)較以往系統(tǒng)具有功能強、抗干擾能力強、實時性強、體積小、操作方便等特點,多個參數(shù)顯示及超載限動報警保護使操作人員能及時了解起重機的工作情況,提高了工作效率,有效地預(yù)防了事故的發(fā)生。
參考文獻
[1] 劉軍.例說STM32[M].北京航空航天大學(xué)出版社,2011.
[2] 召貝貝譯.嵌入式實時操作系統(tǒng)μC/OS-II[M].北京航空航天大學(xué)出版社, 2005.