引言 分布式控制系統(DistributedControl System,DCS)是應用計算機技術(shù)對生產(chǎn)過(guò)程進(jìn)行集中監測、管理和分散控制的綜合性網(wǎng)絡(luò )系統。目前,采用微控制器作為分布控制核心,通過(guò)RS485網(wǎng)絡(luò )構建的分布式控制系統在工業(yè)、農業(yè)、醫療等領(lǐng)域獲得了廣泛的應用,例如,分布式溫室環(huán)境信息監測系統,分布式水下電腦燈控制系統等等。 LPC2138是飛利浦公司推出的基于ARM7TDMI-S內核的微控制器,它具有非常豐富的外圍模塊,強大的處理和控制功能,非常易于構建嵌入式系統。用它構建的分布式控制系統,不僅體積小,性?xún)r(jià)比高,而且還具有穩定可靠、功能強大、開(kāi)發(fā)周期短等特點(diǎn)。LPC21 38微控制器介紹LPC2138內嵌512KB的高速Flash存儲器和32KB的RAM,具有豐富的外設資源:2個(gè)32位定時(shí)器(帶捕獲、比較通道);2個(gè)10位8路ADC;1個(gè)10位DAC;PWM通道;4 7 路GPIO;9個(gè)邊沿或電平觸發(fā)的外部中斷;具有獨立電源和時(shí)鐘的RTc;多個(gè)串行接口(UART、I2C、SPI、SSP)。它內含向量中斷控制器,可配置中斷優(yōu)先級和向量地址,片內Boot裝載程序可以實(shí)現在系統/在應用編程(ISP/IAP),通過(guò)片內PLL可實(shí)現60MHz的CPU操作頻率,具有空閑和掉電2種低功耗模式,并且可通過(guò)外部中斷喚醒。 控制系統設計 在分布式的控制系統中一般采用通用的單片機作為控制處理的核心,不僅速度慢信息處理能力弱,而且一般需要附加許多外圍電路,例如RAM、ROM、ADC、DAC、看門(mén)狗等等。采用ARM微控制器LPC2138為核心的分布式控制系統,通過(guò)擴展簡(jiǎn)單的外圍電路(顯示模塊、中斷鍵盤(pán)、RS485模塊),開(kāi)發(fā)相應的嵌入式程序即可實(shí)現功能強大的系統,不僅具有較高的系統集成度和穩定性,而且開(kāi)發(fā)周期比較短。本文所設計系統總體框圖如圖1所示,包含了OLED顯示、中斷鍵盤(pán)、RS485接口和EXT_CON接口(用來(lái)功能擴展的預留接口)。 系統顯示模塊采用OLED顯示模塊VGSl2864E,它是64×128矩陣式單色圖形字符顯示模塊,由于采用有機發(fā)光技術(shù),無(wú)需背光源,所以與傳統LCD相比在陽(yáng)光照射下更能呈現清晰的圖像和數據。另外它還具有高亮度、高對比度、寬視角、低驅動(dòng)電壓和高發(fā)光效率等優(yōu)越的特性,較寬的溫度范圍(存儲溫度:-30℃~80℃,工作溫度:-20℃~70℃)也能適應更惡劣的環(huán)境。 VGS12864E使用兩片列驅動(dòng)控制器,內嵌64×64顯示數據RAM,RAM中每位數據對應屏上一個(gè)點(diǎn)的亮、暗,每個(gè)半屏都被分成了按行的八頁(yè),因為每個(gè)字節的數據按低位(LSB)在上,高位(MSB)在下的結構排列,所以在提取字庫的時(shí)候,需要設置取字模的方式為:縱向取模,字節倒序。它與LPC2138的連接如圖2所示。ARM和OLED之間需要加電平轉換芯片,本設計采用16位雙向電平轉換芯片IDT74FCT164245,另外進(jìn)行電平轉換時(shí)需要進(jìn)行方向控制(圖2中DIR即為方向控制腳)。 RS485接口電路設計 RS485通信部分采用TI公司的SN65HVD24收發(fā)芯片,它具有較高的共模電壓范圍(一 20~25V),支持最多256個(gè)節點(diǎn),高達16kV的ESD,通信速率在500m時(shí)最高達3Mbps。為了防止串行通信時(shí)外界干擾引入微控制器,在微控制器和RS485通信芯片間加入了光電隔離電路,電路圖見(jiàn)圖3。 無(wú)極性連接設計 實(shí)現無(wú)極性連接有利于工程施工,方便系統擴容。如果采用差分曼徹斯特編碼的方法雖然可靠性高,但需要增加編解碼器,提高了硬件復雜性。本系統采用了異或門(mén)和軟件編程的方法實(shí)現。即在信息輸入輸出部分增加異或門(mén)進(jìn)行控制,當連接錯誤的時(shí)候控制引腳輸出高電平對信息取反,連接正確引腳輸出低電平信息不變。通過(guò)程序實(shí)現系統的自動(dòng)信息監測和自動(dòng)控制,由主機發(fā)送系統自檢信息,包括一個(gè)正向數據信息和反向的數據信息,在信息中包含正反信息碼,當從機接收到這些信息的時(shí)候就可以自動(dòng)調整自己的控制端進(jìn)行相應的控制操作。使用這種方式只需增加少許的軟硬件開(kāi)銷(xiāo)就實(shí)現了無(wú)極性的控制。 在應用編程(1AP)實(shí)現許多場(chǎng)合(例如地下燈光控制、土壤檢測)在系統布好后就不易進(jìn)行系統重新配置和程序的更新,所以采用IAP技術(shù)不僅使系統的適應能力增強,工作壽命增長(cháng)而且維護比較方便。 LPC2138的IAP程序位于BootBlock中,占用12KB存儲空間,位于地址0x0007D000-0x0007FFFF的Flash中,同時(shí)它的最低64字節也出現在從地址0x00000000開(kāi)始的Flash存儲器區域,所以復位后中斷向量被激活,跳轉到Boot Block裝載程序的入口。Boot裝載程序控制復位后的初始化操作,并提供實(shí)現Flash編程的方法。 IAP程序是Thumb代碼,位于地址0x7FFFFFFO(重映射后地址)處。IAP的功能可用下面的C代碼來(lái)調用。 ( 1)定義IAP程序的入口地址(由于IAP地址的第0位是1,因此,當程序計數器轉移到該地址時(shí)會(huì )引起Thumb指令集的變化) #define IAP_LOCATIONOx7FFFFFFl ( 2)定義數據結構或指針 unsigned long command[5]; unsigned long result[2]; (3)定義函數類(lèi)型指針 Typedef void(*IAP)(unsignedint[],unsigned int[]); IAP iap_entry; ( 4)設置函數指針 iaP_entrY = (I A P)lAP_LOCATl0N; (5)調用IAP iap_entry(command,result); 程序開(kāi)發(fā)采用ARM公司的集成開(kāi)發(fā)工具ADS1.2,把終端程序分為主程序和更新程序兩部分: 主程序用來(lái)實(shí)現終端的功能,是需要進(jìn)行更新的部分,更新程序僅負責主程序的更新。編譯鏈接時(shí)主程序占據0~14扇區,更新程序占據22~26扇區,15~21扇區用來(lái)存儲待更新主程序。更新程序用到的數據定義到片內R A M中0x40007800~0x40007FFF區域。另外為了實(shí)現主程序和更新程序的精確定位,設置ARMLinker中Linktype用Scattered方式,它能根據格式文件中指定的地址映射生成ELF格式的映像文件。 更新過(guò)程可大體分為程序更新準備和程序更新兩個(gè)階段: 準備階段分三步完成,首先主站通過(guò)RS485總線(xiàn)將編譯過(guò)的新終端主程序(不包含更新模塊)分成小的數據單元下傳給終端,終端將收到的經(jīng)校驗正確的數據存儲到片內F1ash存儲器中,然后主站查詢(xún)終端代碼的接收情況,并對傳輸錯誤的部分重新下傳進(jìn)行更正,最后主站發(fā)送啟動(dòng)更新指令,終端檢驗程序數據正確性并置上更新標志,停止刷新看門(mén)狗,從而使終端復位。 程序更新分兩步完成,首先終端重啟時(shí)檢測到更新標志有效即可調用更新程序進(jìn)行程序更新,程序更新完成后再次使終端自復位,即可運行更新后的程序代碼,完成程序更新全過(guò)程。 另外,由于IAP服務(wù)代碼是Thumb指令,用c程序直接調用時(shí)須在設置編譯參數ATPCS時(shí)選中Arm/ThumbInte2rworking項。由于執行IAP命令使用片內RAM頂端的32個(gè)字節空間,因此用戶(hù)程序不應該使用該空間。調用IAP功能前,要關(guān)閉PLL、MAM(存儲器加速模塊)部件及所有 中斷以及正確設置系統時(shí)鐘。 結語(yǔ) 基于A(yíng)RM微處理器的分布式控制系統不僅提高了系統集成度,增強了系統功能和系統穩定性,而且通過(guò)其強大的處理能力和IAP技術(shù)也使得系統智能化程度提高,符合分布式控制系統的發(fā)展方向。 |