彩色小長(zhǎng)圖無紙記錄儀的設(shè)計(jì)與開發(fā)
摘要:介紹了在保持與中長(zhǎng)圖無紙記錄儀通用的基礎(chǔ)上開發(fā)的小長(zhǎng)圖無紙記錄儀。該記錄儀可全中文圖形界面顯示、萬能輸入、功能完備,運(yùn)用了數(shù)據(jù)空間擴(kuò)展分頁訪問管理和代碼空間擴(kuò)展切換等新技術(shù)。從硬件以及軟件兩方面詳細(xì)論述了這些新技術(shù)的實(shí)現(xiàn)。
本文引用地址:http://www.ex-cimer.com/article/255601.htm關(guān)鍵詞:分頁訪問 代碼切換 無紙記錄儀
記錄儀是工業(yè)生產(chǎn)自動(dòng)化系統(tǒng)中常見的二次儀表。傳統(tǒng)的記錄儀功能單一,機(jī)械結(jié)構(gòu)易發(fā)故障,日常維護(hù)工作繁瑣,已經(jīng)無法滿足生產(chǎn)過程綜合自動(dòng)化的要求。筆者天1998年研制的彩色中長(zhǎng)圖無紙記錄儀,已經(jīng)實(shí)現(xiàn)了產(chǎn)品化,并廣泛應(yīng)用于化工、鋼鐵行業(yè)的過程監(jiān)控,獲得用戶的好評(píng)。在此基礎(chǔ)上,根據(jù)用戶的實(shí)際需求以及使用意見,筆者又開發(fā)了新一代的彩色小長(zhǎng)圖無紙記錄儀。該記錄儀具有5DSTN彩色液晶顯示,1~8通道萬能輸入、16點(diǎn)報(bào)警、2點(diǎn)PID輸出,尺寸小、功能全、可滿足大多數(shù)行業(yè)的需求。
1 主要功能
(1)信號(hào)采樣:模擬輸入通道1~8路。全隔離萬能輸入,可輸入0~10V、0~5V、0~10mA、4~20mA標(biāo)準(zhǔn)信號(hào)和PT100、Cu50熱電阻信號(hào)以及K、S、B、N、T、E、J、R熱電偶信號(hào)。用戶直接在組態(tài)畫面選擇,無需更換輸入通道板。記錄間隔可設(shè)置為1/2/4/8/20/40/60/120/240等。
(2)組態(tài)功能:該記錄儀具有強(qiáng)大的組態(tài)功能,用戶可對(duì)通道信號(hào)類型、單位、量程、顯示范圍、記錄間隔、報(bào)警上下限以及顯示畫面、歷史追憶、流量累計(jì)、PID參數(shù)等進(jìn)行設(shè)置。圖形化的組態(tài)界面,操作簡(jiǎn)單。
(3)顯示功能:全中文圖形界面,菜單驅(qū)動(dòng),信息直觀豐富,操作簡(jiǎn)單。主要顯示畫面:水平趨勢(shì)畫面、垂直趨勢(shì)畫面、棒圖畫面、數(shù)字畫面(以上畫面均可1~8通道選擇)、歷史數(shù)字趨勢(shì)追憶畫面(單通道或多通道同時(shí))、多通道流量累計(jì)畫面、組態(tài)畫面(包括通道設(shè)置、顯示設(shè)置、流量累計(jì)設(shè)置、PID參數(shù)設(shè)置、歷史追憶設(shè)置等畫面)。
(4)存儲(chǔ)功能:采用大容量Flash作為主要存儲(chǔ)設(shè)備(用戶可選1/2/4/6M)。軟盤作為輔助,用戶可以將任意時(shí)間段內(nèi)的數(shù)據(jù)轉(zhuǎn)存到軟盤,然后在PC機(jī)上進(jìn)行顯示、分析、打印。
(5)通訊功能:提供RS-232/RS-485通訊接口??蛇h(yuǎn)距離通訊,多臺(tái)儀表組網(wǎng)。配合上位PC機(jī)軟件可實(shí)現(xiàn)遠(yuǎn)程監(jiān)控。
(6)打印功能:提供常用微型打印機(jī)接口,打印任意時(shí)間段內(nèi)數(shù)據(jù)、趨勢(shì)曲線、流量累計(jì)值等。
(7)報(bào)警功能:配有16點(diǎn)開關(guān)量輸出通道(可選長(zhǎng)開/長(zhǎng)閉),根據(jù)各通道設(shè)置的上下限,在顯示畫面實(shí)時(shí)顯示報(bào)警信息的同時(shí)輸出報(bào)警信號(hào)。
(8)簡(jiǎn)單PID調(diào)節(jié)功能:具有兩路PID輸出通道,信號(hào)類型為1~5~/4~20mA。
2 硬件設(shè)計(jì)
作者先前開發(fā)的彩色中長(zhǎng)圖無紙記錄儀內(nèi)部采用了上下位機(jī)的結(jié)構(gòu)。上位機(jī)采用ALL-IN-ONE型PC104嵌入式模板作為硬件平臺(tái),直接接入GB級(jí)硬盤和1.44MB軟盤、640×480的10“彩色TFT液晶顯示屏、6鍵數(shù)字鍵盤。下位機(jī)采用以PHILIPS公司80C552為控制核心的采集模塊。上位機(jī)負(fù)責(zé)畫面顯示、用戶組態(tài)、數(shù)據(jù)管理、打印以及遠(yuǎn)程通訊(RS232或485)。下位機(jī)負(fù)責(zé)信號(hào)調(diào)理、數(shù)據(jù)計(jì)算、報(bào)警以及PID輸出。上下位機(jī)間通過RS232接口連接,傳遞通道組態(tài)信息和通道數(shù)據(jù)值。結(jié)構(gòu)框圖見圖1。采用該種結(jié)構(gòu)的優(yōu)點(diǎn)是模塊化設(shè)計(jì),上下位機(jī)各司其職,分工合作;應(yīng)用靈活,兼容性好;故障定位容量。該系統(tǒng)的易用性和可靠性已經(jīng)在工廠應(yīng)用得到了證明。但也要看到,在該系統(tǒng)中,PC104模板的功能并沒有被充分使用,硬件空間浪費(fèi)嚴(yán)重(目前市場(chǎng)上已買不到4G以下容量的硬盤了),液晶顯示屏價(jià)格昂貴,從而導(dǎo)致了記錄儀價(jià)格偏高。
在總結(jié)了中長(zhǎng)圖無紙記錄儀的研發(fā)之后,在小長(zhǎng)圖無紙記錄儀的設(shè)計(jì)中仍然采用了上下位機(jī)的結(jié)構(gòu)。其中下位機(jī)數(shù)據(jù)采集模塊與中長(zhǎng)圖無紙記錄儀通用,這樣避免了重復(fù)開發(fā),并使小長(zhǎng)圖、中長(zhǎng)圖無紙記錄儀成為一個(gè)體系。全新開發(fā)了以Dallas公司80C320為核心的上位機(jī)。結(jié)構(gòu)框圖見圖2。采用了320×240的5“DSTN彩色液晶顯示屏。數(shù)據(jù)存儲(chǔ)主要采用大容量的Flash,輔助設(shè)備采用1.44M軟盤,由GM82C765負(fù)責(zé)控制。使用80C320主要基于兩點(diǎn)考慮:一是80C320具有兩個(gè)UART,能滿足記錄儀內(nèi)部上下位機(jī)通訊以及與外部的遠(yuǎn)程通訊,軟件編制的復(fù)雜程度也大大降低;二是軟驅(qū)控制器GM82C765的實(shí)時(shí)性要求比較高,而80C320的4周期技術(shù)可使其在與其它51芯片采用相同晶振的條件下,指令執(zhí)行速度快三倍;加上雙DPTR的結(jié)構(gòu),能提高程序執(zhí)行效率,從而更好地與GM82C765配合。
由于液晶屏采用RAM方式驅(qū)動(dòng),并且大容量的并行Flash存儲(chǔ)器遠(yuǎn)遠(yuǎn)超出了51單片機(jī)64K的數(shù)據(jù)尋址空間,因此,我們對(duì)80C320進(jìn)行了數(shù)據(jù)空間擴(kuò)展,增加了8根地址線。對(duì)增加的地址空間我們進(jìn)行了分頁管理(每個(gè)頁面大小為32K),利用51原有的高端32K數(shù)據(jù)空間進(jìn)行換頁訪問。在增加的數(shù)據(jù)空間內(nèi),我們安排了32K的I/O空間、64K的液晶顯示空間以及Flash存儲(chǔ)器空間,擴(kuò)充的數(shù)據(jù)空間達(dá)到8M。原理圖見圖3。
對(duì)編程而言,數(shù)據(jù)空間就是原有的64K空間。當(dāng)程序要訪問擴(kuò)充的數(shù)據(jù)空間時(shí),先向地址0x7FFF寫入高8位地址進(jìn)行頁面選擇,由硬件片選電路將被選擇的頁面映射到原51的高端32K數(shù)據(jù)空間。此后對(duì)高端32K數(shù)據(jù)空間的訪問就是對(duì)所選擴(kuò)展數(shù)據(jù)空間頁面的訪問。擴(kuò)充數(shù)據(jù)空間總共有分為256個(gè)頁面。低端32K數(shù)據(jù)空間的訪問不受頁面選擇的影響。
由于51系列單片機(jī)體系結(jié)構(gòu)上的限制,其代碼空間只有64K。小長(zhǎng)圖無紙記錄儀軟件采用C語言編寫,菜單驅(qū)動(dòng)全中文圖形界面顯示,并且功能完備,軟件代碼的長(zhǎng)度超出了64K。為了解決這個(gè)問題,我們開創(chuàng)性地使用了擴(kuò)充代碼空間并自行控制片選從而切換代碼空間的方法,可以說這是最小長(zhǎng)圖無紙記錄儀在技術(shù)上的一個(gè)創(chuàng)新。其硬件原理見圖4。而在軟件設(shè)計(jì)上,為了保證程序能在兩塊代碼空間自由切換且保證運(yùn)行正常,在軟件編寫以及編譯連接定位上均有較高的要求。
這在下面的軟件設(shè)計(jì)一節(jié)中詳細(xì)說明。
3 軟件設(shè)計(jì)
小長(zhǎng)圖無紙記錄儀軟件采用C語言和匯編語言混合編寫。用C語言進(jìn)行編程能提高開發(fā)的效率以及代碼的質(zhì)量,但在實(shí)時(shí)性要求較高的場(chǎng)合,目前的C51編譯器仍有其局限性。因此,軟件的主體部分采用C語言編寫;而對(duì)實(shí)時(shí)性要求嚴(yán)格的GM82C765軟驅(qū)控制器的訪問、液晶屏有驅(qū)動(dòng)等底層函數(shù)均采用51匯編語言編寫。C程序和匯編語言模塊之間的連接主要解決變量傳遞、共享及代碼調(diào)用等問題。限于篇幅,在此就不多論述了,有興趣的讀者論壇者請(qǐng)參閱參考文獻(xiàn)3。
軟件設(shè)計(jì)中要解決的關(guān)鍵問題是代碼切換。其原理圖見圖5。
原理圖中Function1與Funciton2代碼很大,當(dāng)它們放在一個(gè)工程中編譯時(shí),代碼超出了64K的限制。因此將它們分置于兩個(gè)代碼空間中。相應(yīng)的程序必須分成兩個(gè)工程來編寫。其中Function1放在ROM1中,F(xiàn)unction2放在ROM2中,MainLoop(主循環(huán))與SwitchChip(空間切換函數(shù))為公共函數(shù);民時(shí)為了工程能夠被正確編譯連接,在ROM1和ROM2中分別加放了Function2與Function1的空函數(shù)。
代碼空間切換的流程是這樣的:假定上電后,程序開始運(yùn)行于ROM1空間,進(jìn)入MainLoop循環(huán)等待事件發(fā)生。當(dāng)某一時(shí)刻,event2事件發(fā)生,程序調(diào)用SwitchChip,參數(shù)為2(見圖中①)。進(jìn)入SwitchChip函數(shù)后,根據(jù)參數(shù)設(shè)置片選,選中ROM2,此后程序在ROM2空間運(yùn)行(見圖中②)。SwitchChip函數(shù)返回,開始調(diào)用ROM2中真正的Function2函數(shù)(見圖中③)。完畢后程序在ROM2空間中的MainLoop循環(huán),等待新事件發(fā)生。
當(dāng)程序運(yùn)行在ROM2中的MainLoop時(shí),event1事件發(fā)生,程序調(diào)用SwitchChip,參數(shù)為1(見圖中④)。進(jìn)入SwitchChip函數(shù)后,根據(jù)參數(shù)設(shè)置片選,先中ROM1,從而程序回到ROM1空間運(yùn)行(見圖中⑤)。SwitchChip函數(shù)返回,開始調(diào)用ROM1中真正的Function1函數(shù)(見圖中⑥)。執(zhí)行完畢后程序在ROM1空間中的MainLoop循環(huán)。
而當(dāng)程序運(yùn)行在ROM1中發(fā)生event1事件時(shí),調(diào)用SwitchChip不會(huì)切換ROM空間,從而能正確調(diào)用Function1函數(shù)。同理在ROM2中發(fā)生event2事件也是一樣。
·兩塊ROM中MainLoop函數(shù)的起始地址必須相同,并且語句必須完全一樣,從而保證每條語句的地址是相同的。在ROM切換后,函數(shù)調(diào)用的返回地址是相同的。程序能正常運(yùn)行而不跑飛。
·同理,兩塊ROM中SwitchChip函數(shù)體必須完全相同并定位在相同的地址。
·兩個(gè)工程中的全局變量在RAM中的定位必須完全一致,否則將出現(xiàn)不可預(yù)期的后果。
·ROM片選線的切換速率必須足夠快,使得CPU在讀取下一條指令前片選信號(hào)就已穩(wěn)定下來。
程序中函數(shù)以及變量的定位可參考C51編譯器以及連接器的定位開關(guān),這里就不展開了。
彩色小長(zhǎng)圖無紙記錄儀的設(shè)計(jì)與開發(fā)保持了與彩色中長(zhǎng)圖無紙記錄儀的通用性?;竟δ芤恢拢w積減小,成本降低。并且使用了數(shù)據(jù)空間(RAM)擴(kuò)展分頁訪問管理、代碼空間(ROM)擴(kuò)展切換等新技術(shù)。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論