陽(yáng)軍軍,張兵,曹廣忠,張保祥,周受欽
( 1.深圳大學(xué) 深圳市電磁重點(diǎn)控制實(shí)驗(yàn)室,深圳 518052;2.深圳中集智能科技有限公司)
* 基金項(xiàng)目:國(guó)家科技支撐計(jì)劃(2014BAH23F04);深圳市科技計(jì)劃項(xiàng)目(JCYJ20140418182819160)。
?
陽(yáng)軍軍1,張兵1,曹廣忠1,張保祥2,周受欽2
( 1.深圳大學(xué) 深圳市電磁重點(diǎn)控制實(shí)驗(yàn)室,深圳 518052;2.深圳中集智能科技有限公司)
* 基金項(xiàng)目:國(guó)家科技支撐計(jì)劃(2014BAH23F04);深圳市科技計(jì)劃項(xiàng)目(JCYJ20140418182819160)。
摘要:針對(duì)傳統(tǒng)冷藏集裝箱環(huán)境控制系統(tǒng)的各種參數(shù)與環(huán)節(jié)由單一控制器集中控制,系統(tǒng)結(jié)構(gòu)復(fù)雜、非模塊化、安裝維護(hù)困難等問(wèn)題,設(shè)計(jì)了基于STM32微控制器的冷藏集裝箱微環(huán)境控制系統(tǒng)的串行通信子系統(tǒng)。介紹了該串行通信子系統(tǒng)的構(gòu)成,分析了基幀識(shí)別、收發(fā)處理、輪詢機(jī)制、有限狀態(tài)機(jī)等設(shè)計(jì)方法及程序?qū)崿F(xiàn)。測(cè)試結(jié)果表明,該系統(tǒng)實(shí)現(xiàn)了冷藏集裝箱環(huán)境控制系統(tǒng)的分散控制與集中管理,簡(jiǎn)化了系統(tǒng)結(jié)構(gòu),方便維護(hù),且效果良好。
關(guān)鍵詞:冷藏集裝箱微環(huán)境控制;串行通信;STM32微控制器;分散控制集中管理
引言
傳統(tǒng)冷藏集裝箱環(huán)境控制系統(tǒng)中各種參數(shù)與環(huán)節(jié)由單一控制器集中控制,系統(tǒng)結(jié)構(gòu)復(fù)雜、非模塊化、安裝維護(hù)困難[1]?,F(xiàn)代工業(yè)提倡分散控制、集中管理,現(xiàn)場(chǎng)總線技術(shù)應(yīng)運(yùn)而生,其中串行通信因其占用資源少、布線方便被廣泛應(yīng)用于工業(yè)控制中[2]。將串行通信技術(shù)與冷藏集裝箱環(huán)境控制系統(tǒng)相結(jié)合,實(shí)現(xiàn)冷藏集裝箱內(nèi)各參數(shù)的分散控制與集中管理,可降低控制系統(tǒng)的復(fù)雜度,使系統(tǒng)模塊化,利于安裝維護(hù)。STM32系列微控制器是意法半導(dǎo)體公司生產(chǎn)的基于ARM Crotex-M3 內(nèi)核的32位微控制器,它具有接口資源豐富、內(nèi)部存儲(chǔ)容量大、最高時(shí)鐘頻率達(dá)72 MHz等特點(diǎn)[3],適合用作基于串行通信控制系統(tǒng)的控制器。
1系統(tǒng)結(jié)構(gòu)
冷藏集裝箱微環(huán)境控制系統(tǒng)即實(shí)現(xiàn)對(duì)冷藏集裝箱內(nèi)部溫度、濕度、空調(diào)風(fēng)量、內(nèi)部氣壓進(jìn)行調(diào)節(jié)的系統(tǒng),它的串行通信網(wǎng)絡(luò)部分系統(tǒng)結(jié)構(gòu)圖如圖1所示。
該控制系統(tǒng)以STM32F103VET6(以下簡(jiǎn)稱STM32)微控制器為通信與控制的核心,使用STM32微控制器的4個(gè)串行通信接口組成了控制網(wǎng)絡(luò)。其中串行通信接口UART1用于與車載通信機(jī)進(jìn)行通信,以實(shí)現(xiàn)遠(yuǎn)程后臺(tái)監(jiān)控功能;串行通信接口UART2用于與溫濕度、壓力風(fēng)量傳感器通信以獲取傳感器數(shù)據(jù);串行通信接口UART3用于與壓力風(fēng)機(jī)驅(qū)動(dòng)器和風(fēng)量控制變頻器通信以實(shí)現(xiàn)對(duì)壓力和風(fēng)量的控制;串行通信接口UART4用于與開(kāi)利冷機(jī)通信,以實(shí)現(xiàn)對(duì)溫度的控制。
圖1 冷藏集裝箱微環(huán)境控制系統(tǒng)的串行通信結(jié)構(gòu)圖
STM32微控制器與車載通信機(jī)使用RS485總線連接,通信協(xié)議為私有協(xié)議。微控制器與傳感器、壓力風(fēng)機(jī)驅(qū)動(dòng)器、風(fēng)量控制變頻器均使用RS485總線連接,使用ModBus RTU協(xié)議。微控制器與開(kāi)利冷機(jī)使用RS232總線連接,通信協(xié)議是開(kāi)利冷機(jī)私有協(xié)議??梢?jiàn)冷藏集裝箱微環(huán)境控制系統(tǒng)為典型的多總線、多協(xié)議、主從機(jī)一體的通信控制系統(tǒng)。
2通信的幀識(shí)別與組裝
串行通信中使用的通信協(xié)議決定了通信幀的格式,通信幀的識(shí)別就是根據(jù)通信協(xié)議,判斷識(shí)別接收到的數(shù)據(jù)是否為一個(gè)完整有效的通信幀。因冷藏集裝箱微環(huán)境控制系統(tǒng)中串行通信的通信協(xié)議種類繁多,存在私有協(xié)議(如冷藏集裝箱微環(huán)境控制系統(tǒng)中的開(kāi)利冷機(jī)與車載通信機(jī))。為了不涉及具體某種通信協(xié)議和方便描述,本文將串行通信幀格式描述為如圖2所示的一般格式[4]。
圖3 數(shù)據(jù)幀識(shí)別狀態(tài)轉(zhuǎn)移圖
圖2串行通信幀的一般結(jié)構(gòu)
通信數(shù)據(jù)段是順序連續(xù)被發(fā)送和接收的,因而對(duì)于數(shù)據(jù)幀的識(shí)別過(guò)程,就是按照?qǐng)D2所示的數(shù)據(jù)幀格式分段,從幀頭到幀尾依次識(shí)別的過(guò)程。狀態(tài)轉(zhuǎn)移圖如圖3所示,整個(gè)識(shí)別過(guò)程分為7個(gè)狀態(tài)進(jìn)行。
對(duì)于STM32微控制器幀識(shí)別處理,則是放在接收中斷程序中,可以方便進(jìn)行接收一段、識(shí)別一段,實(shí)現(xiàn)圖3所示的狀態(tài)轉(zhuǎn)移關(guān)系。同時(shí),由圖3所示的轉(zhuǎn)移關(guān)系可知,只有當(dāng)接收數(shù)據(jù)從幀頭到幀尾都符合要求,接收的數(shù)據(jù)才算一幀完整有效的數(shù)據(jù),而接收幀內(nèi)任意一段數(shù)據(jù)有誤,則之前接收到的數(shù)據(jù)都會(huì)被拋棄,接收狀態(tài)會(huì)從幀頭處重新開(kāi)始。
通信幀的組裝,即將需要發(fā)送的數(shù)據(jù)按照協(xié)議格式組成一幀或多幀數(shù)據(jù)。對(duì)于STM32微控制器來(lái)說(shuō),通信幀的組裝就是編程將幀頭到幀尾的數(shù)據(jù)段按照幀格式填充到發(fā)送緩沖區(qū)。
3收發(fā)處理
3.1主機(jī)模式下的收發(fā)處理
在上述冷藏集裝箱微環(huán)境控制控制系統(tǒng)中,STM32微控制器作為主控制器與傳感器、開(kāi)利冷機(jī)、變頻器、風(fēng)機(jī)驅(qū)動(dòng)器等通信時(shí),STM32微控制器是通信主機(jī),主持通信的收發(fā)調(diào)度。在冷藏集裝箱微環(huán)境控制系統(tǒng)設(shè)計(jì)中,因通信從機(jī)數(shù)量多而且協(xié)議多樣,為保證通信有序的同時(shí)提高控制器效率,本設(shè)計(jì)中控制器對(duì)從機(jī)的通信收發(fā)完全采用中斷加有限狀態(tài)機(jī)方式。
圖4 數(shù)據(jù)發(fā)送操作流程圖
對(duì)于數(shù)據(jù)發(fā)送的具體操作:當(dāng)控制器需發(fā)送數(shù)據(jù)給從機(jī)時(shí),在STM32微控制器的主程序中啟動(dòng)數(shù)據(jù)第一字節(jié)的發(fā)送,并填寫應(yīng)發(fā)送的字節(jié)數(shù)。隨即打開(kāi)發(fā)送完成中斷,后續(xù)字節(jié)將在發(fā)送完成中斷中發(fā)送并計(jì)數(shù),直至發(fā)送計(jì)數(shù)值等于應(yīng)發(fā)送數(shù)據(jù)值。數(shù)據(jù)發(fā)送操作的流程圖如圖4所示。
數(shù)據(jù)接收操作與幀識(shí)別操作一起進(jìn)行,都是在STM32微控制器的接收中斷中完成。具體為:STM32微控制器接收到從機(jī)發(fā)來(lái)的數(shù)據(jù)而發(fā)生接收中斷,中斷程序中暫存接收到的數(shù)據(jù)并進(jìn)行幀識(shí)別,即判斷此次接收到的數(shù)據(jù)是否符合通信協(xié)議要求的數(shù)據(jù)幀段格式,如果符合,則接收計(jì)數(shù)值加1,并保存此次接收的數(shù)據(jù);否則接收計(jì)數(shù)值清0,并拋棄此前保存的數(shù)據(jù),幀識(shí)別從幀頭處重新開(kāi)始,如此直至接收到計(jì)數(shù)值等需要接收的數(shù)據(jù)量。
圖5 數(shù)據(jù)接收操作流程
應(yīng)注意的是,這里需要接收的數(shù)據(jù)量一般是根據(jù)接收到的數(shù)據(jù)長(zhǎng)度段的值計(jì)算出來(lái)的。數(shù)據(jù)接收操作流程如圖5所示。
對(duì)于整個(gè)通信收發(fā)的調(diào)度,本設(shè)計(jì)采用有限狀態(tài)機(jī)的方式。狀態(tài)轉(zhuǎn)移圖如圖6所示,通信收發(fā)過(guò)程被分為6個(gè)狀態(tài),分別是發(fā)送準(zhǔn)備狀態(tài)、發(fā)送中狀態(tài)、接收狀態(tài)、通信故障處理狀態(tài)、接收處理狀態(tài)、間隔等待狀態(tài)。
圖6 主機(jī)模式下通信收發(fā)調(diào)度狀態(tài)轉(zhuǎn)移圖
主機(jī)模式下默認(rèn)狀態(tài)就是發(fā)送準(zhǔn)備狀態(tài),此狀態(tài)下STM32微控制器需要發(fā)送數(shù)據(jù)時(shí)可以進(jìn)入發(fā)送中狀態(tài);發(fā)送完成后微控制器開(kāi)始等待接收從機(jī)的回應(yīng),即進(jìn)入接收狀態(tài);此時(shí)如果STM32微控制器接收到有效數(shù)據(jù)(即接收完成),若STM32微控制器接收的數(shù)據(jù)無(wú)效或者接收等待時(shí)間超時(shí),則STM32微控制器進(jìn)入通信故障處理狀態(tài),通信故障處理完成,則進(jìn)入發(fā)送準(zhǔn)備狀態(tài)開(kāi)始下一輪數(shù)據(jù)發(fā)送。接收完成后,STM32微控制器處理從機(jī)回應(yīng)的數(shù)據(jù),然后進(jìn)入間隔等待狀態(tài)直到等待計(jì)時(shí)完成,STM32微控制器又進(jìn)入發(fā)送準(zhǔn)備狀態(tài),開(kāi)始下一輪收發(fā)過(guò)程。
在主機(jī)模式下通信收發(fā)狀態(tài)中,數(shù)據(jù)接收超時(shí)計(jì)時(shí)是由定時(shí)器完成的。定時(shí)器在發(fā)送完成后開(kāi)始計(jì)時(shí),STM32微控制器接收到有效數(shù)據(jù)則停止,否則一直計(jì)時(shí)到超時(shí)。間隔等待狀態(tài)的插入是為了在每次收發(fā)中加入等待延時(shí),防止主機(jī)發(fā)送數(shù)據(jù)幀過(guò)快使從機(jī)無(wú)法響應(yīng),等待間隔時(shí)間可以根據(jù)從機(jī)需要進(jìn)行調(diào)整。
3.2從機(jī)模式下的收發(fā)處理
在上述冷藏集裝箱微環(huán)境控制控制系統(tǒng)中,STM32微控制器與車載通信機(jī)通信時(shí),微控制器是通信從機(jī),車載通信機(jī)是通信主機(jī)。作為通信從機(jī),微控制器只需接收通信主機(jī)命令然后做出相應(yīng)的回應(yīng)即可。從機(jī)模式下微控制器通信處理可分如下3個(gè)狀態(tài):接收狀態(tài)、接收處理狀態(tài)、發(fā)送狀態(tài)等。其狀態(tài)轉(zhuǎn)移如圖7所示,從機(jī)模式下默認(rèn)狀態(tài)為接收狀態(tài),STM32微控制器此時(shí)收到主機(jī)發(fā)送的有效數(shù)據(jù)便進(jìn)入接收處理狀態(tài)以處理接收到的數(shù)據(jù)。完成接收數(shù)據(jù)的處理后STM32微控制器進(jìn)入發(fā)送狀態(tài),發(fā)送數(shù)據(jù)響應(yīng)主機(jī),發(fā)送完成,STM32微控制器再次進(jìn)入接收狀態(tài)開(kāi)始下一輪收發(fā)處理。
圖7 從機(jī)模式下通信收發(fā)調(diào)度狀態(tài)轉(zhuǎn)移圖
4通信輪詢機(jī)制
圖8 通信輪詢操作流程圖
在冷藏集裝箱微環(huán)境控制系統(tǒng)串行通信中,單個(gè)串行通信接口并不僅與一個(gè)執(zhí)行器或者傳感器通信(如串行通信接口2與10個(gè)傳感器通信,串行通信接口3與兩類執(zhí)行器通信),且單個(gè)傳感器或執(zhí)行通信數(shù)據(jù)不只一幀,因而微控制器必須有適當(dāng)?shù)妮喸儥C(jī)制才能保證每個(gè)傳感器或執(zhí)行器均能正常通信連接。
在上述冷藏集裝箱微環(huán)境控制系統(tǒng)中,采用了內(nèi)部通信幀輪詢與外部設(shè)備輪詢相結(jié)合的輪詢機(jī)制。輪詢操作流程如圖8所示,即STM32微控制器先按每個(gè)傳感器或者執(zhí)行器通信一次需要的數(shù)據(jù)幀數(shù),完成收發(fā)單個(gè)設(shè)備通信的所有數(shù)據(jù),即實(shí)現(xiàn)設(shè)備內(nèi)部的幀輪詢。單個(gè)設(shè)備通信數(shù)據(jù)收發(fā)完成則進(jìn)入下一個(gè)設(shè)備,如此直至單個(gè)通信接口上的所有設(shè)備完成通信便開(kāi)始下一輪輪詢操作。
5程序?qū)崿F(xiàn)
從機(jī)模式下的收發(fā)狀態(tài)機(jī)調(diào)度程序略——編者注。
收發(fā)狀態(tài)機(jī)調(diào)度程序主要實(shí)現(xiàn)圖6 所示的主機(jī)模式下通信收發(fā)調(diào)度狀態(tài)轉(zhuǎn)移:
void SCI2_SensorTask(void){
static uint16_t u8_cnt = 0;
//SCI2傳感器通信調(diào)度
SCI2_CommScheduleMachine();
//SCI2收發(fā)調(diào)度
switch(u8_SCI2_StateMachine){
//發(fā)送準(zhǔn)備狀態(tài)
case SCI2_TXREADLY:
SCI2_TxTask();
break;
//接收失敗狀態(tài)(超時(shí)或者出錯(cuò))
case SCI2_RXFAILED:
SCI2_FailureTask();
break;
//接收成功狀態(tài)
case SCI2_RXOK:
SCI2_RxTask();
break;
//接收轉(zhuǎn)發(fā)送中間狀態(tài)
case SCI2_RXTOTX:
u8_cnt++;
if(u8_cnt >= 20000){
u8_cnt = 0;
u8_SCI2_StateMachine
= SCI2_TXREADLY;
}
break;
default:
break;
}
}
6現(xiàn)場(chǎng)應(yīng)用
如圖9所示,本文所述的基于STM32微控制器的冷藏集裝箱微環(huán)境控制系統(tǒng)最終以控制箱的形式外掛在冷藏集裝箱的前端??叵鋬?nèi)設(shè)備安裝布局略——編者注。
圖9 冷藏集裝箱微環(huán)境控制箱箱內(nèi)設(shè)備
在整個(gè)系統(tǒng)的測(cè)試、應(yīng)用中,基于STM32微控制器的串行通信子系統(tǒng)能正常獲取傳感器數(shù)據(jù)、向執(zhí)行器發(fā)送命令數(shù)據(jù),且通信質(zhì)量良好,無(wú)丟幀、中斷等現(xiàn)象,實(shí)現(xiàn)了冷藏集裝箱微環(huán)境控制系統(tǒng)的分散控制集中管理。
結(jié)語(yǔ)
以STM32微控制器為核心的冷藏集裝箱微環(huán)境控制系統(tǒng)串行通信設(shè)計(jì),在實(shí)際測(cè)試、應(yīng)用中通信質(zhì)量及速度都取得了令人滿意的效果。同時(shí),本文所述的幀識(shí)別、收發(fā)處理、輪詢機(jī)制等設(shè)計(jì)方法對(duì)于其他基于串行通信控制、監(jiān)測(cè)場(chǎng)合均適用,可以很好地移植應(yīng)用。基于ARM Crotex-M3內(nèi)核的STM32微控制器在串行通信控制中的應(yīng)用為冷藏集裝箱環(huán)境控制系統(tǒng)的集散控制提供了一種新方案。
參考文獻(xiàn)
[1] 趙曉峰,朱瑞祥,馬輝,等.基于ARM的農(nóng)產(chǎn)品冷藏車環(huán)境檢測(cè)系統(tǒng)設(shè)計(jì)[J].傳感器與微系統(tǒng),2009(2):98-100.
[2] 孫漢卿,吳海波.現(xiàn)場(chǎng)總線技術(shù)[M].北京:國(guó)防工業(yè)出版社,2014.
[3] 黃智偉,王兵,朱衛(wèi)華.STM32F32位ARM微控制器應(yīng)用設(shè)計(jì)與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2014.
[4] 張愛(ài)民,王云沼,龔松顯.STM32微控制器可靠串口通信技術(shù)研究[J].單片機(jī)與嵌入式系統(tǒng)應(yīng),2013(10):21-23.
[5] 蔣明柯,皮佑國(guó).數(shù)控系統(tǒng)中RS485串行通信協(xié)議的設(shè)計(jì)[J].組合機(jī)床與自動(dòng)化加工技術(shù),2013(5):23-26.
[6] 王艷春,王宜懷.嵌入式應(yīng)用開(kāi)發(fā)中通用串行通信程序的設(shè)計(jì)方法[J].現(xiàn)代電子技術(shù),2006(11):146-148.
[7] 李明偉,郭廣峰,黃鴿.PIC單片機(jī)與觸摸屏串行通信的modbus協(xié)議實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2005(9):40-42.
陽(yáng)軍軍、張兵、張保祥(碩士),主要研究方向?yàn)榍度胧接?jì)算機(jī)技術(shù);曹廣忠(教授),主要研究方向?yàn)橄冗M(jìn)控制理論及其應(yīng)用、磁懸浮技術(shù)、嵌入式計(jì)算機(jī)技術(shù);周受欽(博士),主要研究方向?yàn)槲锫?lián)網(wǎng)技術(shù)、嵌入式技術(shù)。
Yang Junjun1,Zhang Bing1,Cao Guangzhong1,Zhang Baoxiang2,Zhou Shouqin2
(1.Shenzhen Key Laboratory of Electromagnetic Control,Shenzhen University,Shenzhen 518052,China;
2.CIMC Intelligent Technology Co.,Ltd.)
Abstract:The various parameters and the links centrally are controlled by a single controller in the traditional reefer container environment control system,so the system structure is complex,non modular,and is difficult to install and maintain.So a serial communication subsystem of the micro environmental control system in reefer container based on STM32 microcontroller is designed.In the paper,the structure of the system is introduced,the design methods and program implementation of frame identify,sending and receiving processing,polling mechanism,finite state machine of the communication subsystem is analyzed.The test results prove that the system achieves decentralized control and centralized management in the environmental control system in reefer container,it simplifies the system architecture and makes it more convenient to maintain.
Key words:micro environmental control system in reefer container;serial communication;STM32 microcontroller;decentralized control and centralized management
收稿日期:(責(zé)任編輯:楊迪娜2015-07-10)
中圖分類號(hào):TP23
文獻(xiàn)標(biāo)識(shí)碼:A
單片機(jī)與嵌入式系統(tǒng)應(yīng)用2015年12期