謝佳亮,王建衛(wèi)
(貴州工程應(yīng)用技術(shù)學(xué)院,貴州畢節(jié),551700)
近些年來(lái),單片機(jī)在電器、金融、交通、機(jī)械、通訊領(lǐng)域均有廣泛應(yīng)用,特別是在多級(jí)協(xié)調(diào)通訊領(lǐng)域的應(yīng)用日趨深入。所謂的多機(jī)通訊,指的是由兩臺(tái)或兩臺(tái)以上的單片機(jī)構(gòu)成的網(wǎng)絡(luò)結(jié)構(gòu),借助于串行通訊模式,實(shí)現(xiàn)對(duì)某一過(guò)程的有效控制。對(duì)于多機(jī)通訊系統(tǒng)而言,實(shí)現(xiàn)的關(guān)鍵在于多機(jī)之間通訊信息的交互傳送。下文以單片機(jī)技術(shù)為基礎(chǔ),對(duì)多機(jī)通訊系統(tǒng)進(jìn)行了設(shè)計(jì),以提升該系統(tǒng)的應(yīng)用性能。
對(duì)于多機(jī)通訊系統(tǒng)而言,為了保障通訊過(guò)程的暢通無(wú)阻,還需要構(gòu)建起相應(yīng)的網(wǎng)絡(luò)協(xié)議。由于系統(tǒng)采用的多通訊機(jī)共用1個(gè)服務(wù)器,因此,需要TCP/IP網(wǎng)絡(luò)協(xié)議予以支持。而多機(jī)通訊還需構(gòu)建一個(gè)新網(wǎng)絡(luò)協(xié)議,支持系統(tǒng)服務(wù)端、客戶端間的通訊。就信息傳輸通訊而言,服務(wù)端會(huì)先進(jìn)行兩次查詢,明確信息的發(fā)送指令,若首次查詢結(jié)果同網(wǎng)絡(luò)協(xié)議的既定值存在差異,則會(huì)進(jìn)行第2次查詢,若同上結(jié)果相同,則通訊過(guò)程將被阻斷,服務(wù)端將不會(huì)與客戶端展開數(shù)據(jù)傳送,并繞過(guò)該端進(jìn)行下個(gè)通訊命令的查詢,直至通訊查詢指令與網(wǎng)絡(luò)協(xié)議的既定信息相同,方可進(jìn)行通訊傳輸。若客戶端接收不到訊息,表明信息傳送失敗,將原路返回。
就基于單片機(jī)的多機(jī)通訊系統(tǒng)結(jié)構(gòu)而言,主要包括三大部分,即PC機(jī)、串行通訊接口、主從單片機(jī)。該系統(tǒng)測(cè)試平臺(tái)所需信息、波形量大,因而采集量要求較高,而每個(gè)單片機(jī)僅有59個(gè)I/O接口,若少量單片機(jī)則無(wú)法滿足信息采集需求,并導(dǎo)致整個(gè)系統(tǒng)的運(yùn)行速度減緩,為此,在這一平臺(tái)開發(fā)過(guò)程中,還需采用3個(gè)單片機(jī),與PC機(jī)之間實(shí)現(xiàn)串行通訊。
對(duì)于PC機(jī)、主單片機(jī)而言,其相互間的通訊是利用UART轉(zhuǎn)以太網(wǎng)接口實(shí)現(xiàn)的,由于以太網(wǎng)具有較強(qiáng)大抗干擾能力,而且可以遠(yuǎn)程通訊、搭接簡(jiǎn)便,因而采用該接口進(jìn)行通訊。而主單片機(jī)與2個(gè)從單片機(jī)間的通訊,借助于UART串口實(shí)現(xiàn)。

圖1 PC機(jī)與多單片機(jī)通訊結(jié)構(gòu)圖
如圖1所示,在該系統(tǒng)中,只需將上位機(jī)信息依據(jù)類型劃分,定義為不同種類的數(shù)據(jù)包,并依據(jù)所確定好的時(shí)間間隔,傳送至上位機(jī),待其接收至數(shù)據(jù)包之后,即可依據(jù)定義內(nèi)容將數(shù)據(jù)包加以拆解,分別展示在各自的位置。PC機(jī)利用系統(tǒng)提供的USB接口與UART轉(zhuǎn)向以太網(wǎng),與信息采集卡、單片機(jī)間實(shí)現(xiàn)通訊過(guò)程,并在系統(tǒng)軟件的驅(qū)動(dòng)下,實(shí)現(xiàn)訊號(hào)的采集、電壓及頻率的輸出,繼而將指令發(fā)送出,引發(fā)正弦訊號(hào)的產(chǎn)生,繼而引發(fā)電阻模擬。對(duì)于主單片機(jī)而言,其負(fù)責(zé)控制開關(guān)及同PC機(jī)之間的通訊過(guò)程。其中從單片機(jī)1負(fù)責(zé)電壓訊號(hào)的傳送、顯示,從單片機(jī)2負(fù)責(zé)訊號(hào)生成、波形的測(cè)量。
具體通訊包括上、下行兩大過(guò)程,上行過(guò)程是從單片機(jī)1和從單片機(jī)2對(duì)主單片機(jī)的檢測(cè),看齊接收端UART1是否遭致占用,若未占用,從單片機(jī)將信息傳送至主單片機(jī),而主單片機(jī)將定時(shí)將信息加以封裝處理,并傳送至工控機(jī),由工控機(jī)將狀態(tài)展示出來(lái);下行過(guò)程是PC機(jī)借助于以太網(wǎng)UART將控制指令傳送至主單片機(jī)UART0,由主單片機(jī)對(duì)指令加以解讀,若需要轉(zhuǎn)發(fā),則利用UART1以廣播通訊方式傳送至從單片機(jī)上,由從單片機(jī)負(fù)責(zé)執(zhí)行。

圖2 主單片機(jī)通訊中斷處理流程圖
系統(tǒng)軟件設(shè)計(jì)主要包括兩部分,即上、下位機(jī)的通訊設(shè)計(jì)。
下位機(jī)通訊設(shè)計(jì)中,主要利用C8051F060單片機(jī)的“狀態(tài)機(jī)”控制結(jié)構(gòu),實(shí)現(xiàn)各指令的鑒別、解讀、控制、信息管理等,單片機(jī)間的通訊利用主從模式,此時(shí),從單片機(jī)需要接收主單片機(jī)的指令。對(duì)于這一程序而言,關(guān)鍵在于中斷的實(shí)現(xiàn),主單片機(jī)同PC機(jī)間的中斷具有較高的優(yōu)先級(jí),其次是主單片機(jī)與從單片機(jī)間的中斷,其中斷處理流程如圖2所示。
上位機(jī)通訊軟件結(jié)構(gòu),主要包括界面、程序控制、信息采集、信息分析等部分,程序利用編程方法,結(jié)合信息鏈表的存放、遍歷信息對(duì)象。系統(tǒng)每隔固定時(shí)間會(huì)向下位機(jī)傳送相應(yīng)的資訊指令,若信息存在更新,則會(huì)對(duì)所采集信息加以更新,顯示在界面上,結(jié)合波形的差異設(shè)置對(duì)應(yīng)采集周期,獲取波形信息。待下位機(jī)收到指令后,會(huì)將成功接收信息以電壓、頻率等方式返送回來(lái),并實(shí)現(xiàn)數(shù)據(jù)的交換。
較其他通訊系統(tǒng)而言,本文所開發(fā)的多機(jī)通訊系統(tǒng)優(yōu)化了PC機(jī)、單片機(jī)間的通訊問(wèn)題,并克服了大數(shù)據(jù)數(shù)據(jù)傳送極易引發(fā)的通路堵塞等問(wèn)題,避免出現(xiàn)信息發(fā)送過(guò)程中的沖突競(jìng)爭(zhēng)以及單片機(jī)性能浪費(fèi)等問(wèn)題。實(shí)驗(yàn)顯示,該系統(tǒng)具有較高的抗干擾性,而且性能較為可靠,能夠滿足較為復(fù)雜的通訊需求,具有一定的應(yīng)用推廣價(jià)值。
參考文獻(xiàn)
[1]辛惠娟,劉興智,李國(guó)榮.基于UART的多機(jī)通信系統(tǒng)的設(shè)計(jì)[J].航空維修與工程,2015(12):74-76.
[2]李楠.基于單片機(jī)技術(shù)的多機(jī)通信系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2016,39(12):164-166.