相關(guān)鏈接: 中國安全網(wǎng) 中國質(zhì)量網(wǎng) 中國論文網(wǎng) 中國資訊網(wǎng)
從宏壽 蔡堯堯
(安徽工業(yè)大學(xué)電氣與信息工程學(xué)院,安徽馬鞍山243000)
摘要:以Ptoteus為平臺,對同一窗口放置多個(gè)單片機(jī)構(gòu)成多個(gè)子站(下位機(jī))進(jìn)行了研究。采用COMPIM組件,結(jié)合物理串口或虛擬串口,應(yīng)用VB6.0、C51分別編寫上位機(jī)程序、下位機(jī)程序,實(shí)現(xiàn)子站(下位機(jī))與主站(上位機(jī))的通信,構(gòu)成嵌入式工控網(wǎng)絡(luò)。若采
用虛擬串口,可在一臺PC上實(shí)現(xiàn)嵌入式工控網(wǎng)絡(luò)的仿真研究。設(shè)計(jì)結(jié)果滿足嵌入式工控網(wǎng)絡(luò)的應(yīng)用要求。
關(guān)鍵詞:Ptoteus串口通信通信協(xié)議通信模型嵌入式工控網(wǎng)絡(luò)單片機(jī)集散控制系統(tǒng)VB
中圖分類號:TP368;TH89DOI:10. 16086/j.cnki. issnl000 - 0380. 201604014
0 引言
嵌入式工控網(wǎng)絡(luò)是典型的集散控制系統(tǒng),在工業(yè)控制現(xiàn)場得到廣泛應(yīng)用。該系統(tǒng)由上下位機(jī)構(gòu)成,上位機(jī)實(shí)現(xiàn)集中管理,下位機(jī)負(fù)責(zé)分散控制。上下位機(jī)之間通過網(wǎng)絡(luò)連接,上位機(jī)采用工控機(jī),可記錄各站點(diǎn)工作狀態(tài)、歷史曲線,發(fā)送控制命令等;下位機(jī)通常由單片機(jī)、DSP、PLC站點(diǎn)等構(gòu)成,負(fù)責(zé)獨(dú)立控制現(xiàn)場設(shè)備。
Proteus是一款集單片機(jī)仿真與SPICE分析于一體的EDA仿真軟件。一般情況下,虛擬仿真環(huán)境不能與實(shí)際的物理環(huán)境進(jìn)行交互通信,但Proteus提供的組件COMPIM(串行接口組件),使Proteus虛擬環(huán)境與實(shí)際的物理環(huán)境直接交互成為可能。當(dāng)PC機(jī)或UART軟件生成的數(shù)字信號出現(xiàn)在COM口(串口)時(shí),COMPIM能緩沖接收數(shù)據(jù)。鑒于此,以Proteus為單片機(jī)開發(fā)平臺,可在一臺PC上實(shí)現(xiàn)嵌入式工控網(wǎng)絡(luò)設(shè)計(jì)與仿真分析。PC機(jī)與下位機(jī)之間通過COM口連接,設(shè)計(jì)關(guān)鍵是通信協(xié)議。
1 Proteus虛擬環(huán)境與上位機(jī)通信模型
Proteus虛擬環(huán)境在PC1,串口調(diào)試助手軟件在PC2,且PC1與PC2都有物理串口。Proteus虛擬環(huán)境與實(shí)際PC通信模型如圖1所示。
Proteus虛擬環(huán)境與虛擬PC串口的通信模型如圖2所示。
如果不希望使用物理PC串口而使用虛擬PC串口,則可在一臺PC上實(shí)現(xiàn)Proteus虛擬環(huán)境與虛擬PC串口之間的通信。這時(shí),還需要安裝虛擬串口驅(qū)動軟件( virtual serial port driver,VSPD)。這對手提電腦的用戶非常實(shí)用,因?yàn)槭痔犭娔X通常沒有物理COM口。
2 基于Proteus的嵌入式工控網(wǎng)絡(luò)設(shè)計(jì)
2.1嵌入式工控網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì)
嵌入式工控網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
上位機(jī)為PC機(jī)及應(yīng)用軟件,下位機(jī)由單片機(jī)構(gòu)成應(yīng)用系統(tǒng),上下位機(jī)之間通過串口連接。由于實(shí)際工控網(wǎng)絡(luò)系統(tǒng)需要串口連接線,考慮到串口驅(qū)動能力,下位機(jī)最多可連接32個(gè)單元,且終端需要120 Ω匹配阻抗。在Proteus虛擬環(huán)境中,上下位機(jī)之間的通信不需要串口連接線,通過虛擬串口驅(qū)動軟件Virtual SerialPort Driver實(shí)現(xiàn)驅(qū)動,且下位機(jī)數(shù)量不受限制。端口分配:上位機(jī)為COMs,下位機(jī)1~32全部為COM4。
2.2嵌入式工控網(wǎng)絡(luò)通信協(xié)議設(shè)計(jì)
嵌入式工控網(wǎng)絡(luò)結(jié)構(gòu)可分為應(yīng)用層、數(shù)據(jù)鏈路層、物理層3層。應(yīng)用層負(fù)責(zé)應(yīng)用程序的管理和執(zhí)行,其功能由單片機(jī)及PC應(yīng)用程序?qū)崿F(xiàn);數(shù)據(jù)鏈路層為串口通信協(xié)議(如異步數(shù)據(jù)幀格式),保證數(shù)據(jù)的可靠傳輸,實(shí)現(xiàn)傳輸速率和差錯控制;物理層為物理接口和傳輸介質(zhì)。
應(yīng)用層通信協(xié)議由地址碼、數(shù)據(jù)標(biāo)志、數(shù)據(jù)碼構(gòu)成。地址碼有5位,共32個(gè)代碼,對應(yīng)32個(gè)子站;數(shù)據(jù)標(biāo)志說明每幀傳輸?shù)挠行?shù)據(jù)字節(jié)數(shù),如每幀傳輸128個(gè)字節(jié)數(shù)據(jù),則為7位,數(shù)據(jù)標(biāo)志的長度可根據(jù)待傳輸?shù)臄?shù)據(jù)長度增減;數(shù)據(jù)碼為待傳輸?shù)挠行?shù)據(jù),數(shù)據(jù)量不足的補(bǔ)0處理。在實(shí)際應(yīng)用時(shí),考慮到傳輸?shù)目煽啃,還可在數(shù)據(jù)碼后面增加校驗(yàn)碼,如循環(huán)冗余校驗(yàn)。
鏈路層通信協(xié)議,即串口異步數(shù)據(jù)幀,如圖4所示。
上位機(jī)發(fā)送給下位機(jī)的數(shù)據(jù),按照應(yīng)用層協(xié)議組成數(shù)據(jù)包,發(fā)送時(shí)以二進(jìn)制形式按字節(jié)發(fā)送至串口;鏈路層協(xié)議為異步數(shù)據(jù)幀,上位機(jī)和下位機(jī)分別通過程序設(shè)置完成,包括端口號、波特率、數(shù)據(jù)位長度、奇偶校驗(yàn)位,應(yīng)用層數(shù)據(jù)發(fā)送至串口的數(shù)據(jù)自動按照鏈路層協(xié)議傳輸。下位機(jī)接收到上位機(jī)數(shù)據(jù)以后,先分離地址碼,并與本機(jī)地址碼進(jìn)行比較,確認(rèn)為本機(jī)地址碼后,再接收數(shù)據(jù)標(biāo)志和數(shù)據(jù);若不是本機(jī)地址碼,則不接收后面的數(shù)據(jù)標(biāo)志和數(shù)據(jù)。下位機(jī)發(fā)送給上位機(jī)的數(shù)據(jù),也按照同樣的規(guī)則傳輸。
3 基于Proteus的嵌入式工控網(wǎng)絡(luò)的實(shí)現(xiàn)與仿真
3.1功能要求
本文所設(shè)計(jì)的嵌入式工控網(wǎng)絡(luò)的主要功能要求是:主站(上位機(jī))發(fā)送數(shù)據(jù)至子站(下位機(jī)),控制子站LED燈的循環(huán)點(diǎn)亮與熄滅;子站接收來自主站的指令后,可以獨(dú)立工作,互不影響。此外,子站開關(guān)閉合后,可控制子站向主站發(fā)送文本信息。主站可以接收來自各個(gè)子站發(fā)送的信息并且加以顯示,同時(shí)不同的文本信息不會被擦除,以待分析對比。
3.2通信協(xié)議設(shè)置
應(yīng)用層通信協(xié)議設(shè)置:根據(jù)控制子站的個(gè)數(shù)和所發(fā)送指令的長短,可自行確定通信協(xié)議中的數(shù)據(jù)幀長度。本文以控制兩個(gè)子站為例,考慮到實(shí)際應(yīng)用中最多可控制32個(gè)子站,故設(shè)置子站地址碼為“00000”和“00001”,分別對應(yīng)子站1和子站2;數(shù)據(jù)標(biāo)志為2位,可以標(biāo)志出數(shù)據(jù)碼中1~4個(gè)有效字節(jié)數(shù),即“00”(1個(gè)有效字節(jié))、“01”(2個(gè)有效字節(jié))、“10”(3個(gè)有效字節(jié))、“11”(4個(gè)有效字節(jié));控制命令循環(huán)點(diǎn)亮LED為“1”,熄滅LED為“0”,控制命令作為數(shù)據(jù)碼,需要補(bǔ)零處理,可以組成2個(gè)有效字節(jié)。數(shù)據(jù)幀包如表1所示。
將這些數(shù)據(jù)幀包賦給data數(shù)組,由VB以二進(jìn)制形式發(fā)給子站。主站發(fā)送數(shù)據(jù)幀時(shí),子站接收主站的數(shù)據(jù)幀,然后對地址和數(shù)據(jù)進(jìn)行分離。判斷數(shù)據(jù)幀中的地址碼,如果是自己的地址碼,則根據(jù)數(shù)據(jù)幀中的控制指令作出相應(yīng)的反應(yīng)。
鏈路層通信協(xié)議設(shè)置:為了便于串行通信設(shè)置,下位機(jī)(AT89 C51)晶振時(shí)鐘頻率為11. 059 2 MHz。打開串行接口組件COMPIM屬性對話框,設(shè)置端口為COM5。該串口是使用軟件虛擬出來的,波特率為9 600 bit/s,有8個(gè)數(shù)據(jù)位,無奇偶校驗(yàn),有1個(gè)停止位。上位機(jī)端口為COM4,其他設(shè)置與下位機(jī)一致。COM4、COM5由虛擬串口驅(qū)動軟件(VSPD)構(gòu)建虛擬串口,可在一臺計(jì)算機(jī)上實(shí)現(xiàn)嵌入式工控網(wǎng)絡(luò)仿真。
3.3硬件實(shí)現(xiàn)
上位機(jī)使用VB構(gòu)建應(yīng)用界面,包括上位機(jī)對下位機(jī)所有控制按鈕及用于接收下位機(jī)發(fā)送過來的文本信息的文本框,執(zhí)行數(shù)據(jù)的發(fā)送與接收。下位機(jī)是由單片機(jī)組成的應(yīng)用系統(tǒng),其硬件在Proteus中實(shí)現(xiàn),主要完成硬件平臺的搭建和仿真效果的測試。
在Proteus ISIS環(huán)境中,調(diào)用2個(gè)AT89 C51單片機(jī)、COMPIM組件(該組件設(shè)置單片機(jī)串口通信協(xié)議)等,組成單片機(jī)通信系統(tǒng)。COMPIM已經(jīng)自帶電平轉(zhuǎn)換功能,就不需要MAX232元件。在P1口接8個(gè)LED,單片機(jī)的P3.0、P3.1分別與串口元件COMPIM的RXD、TXD相連。同時(shí),單片機(jī)的P3.2分別連接一個(gè)按鈕,用于觸發(fā)外部中斷,使下位機(jī)發(fā)送文本信息至上
位機(jī)。
3.4軟件實(shí)現(xiàn)
系統(tǒng)軟件的實(shí)現(xiàn)包括PC上位機(jī)軟件和下位機(jī)單片機(jī)系統(tǒng)軟件的實(shí)現(xiàn)。
(1)上位機(jī)控制程序設(shè)計(jì)。
上位機(jī)使用VB建立界面和通信程序,完成數(shù)據(jù)的發(fā)送與接收。在工程中添加MSCOMM控件,然后進(jìn)行相應(yīng)的屬性設(shè)置(波特率、奇偶校驗(yàn)、停止位、發(fā)送與接收事件的觸發(fā)方式、發(fā)送數(shù)據(jù)的類型等),就可以用它發(fā)送與接收二進(jìn)制數(shù)據(jù)或文本數(shù)據(jù)。上位機(jī)控制流程如圖5所示。
(2)下位機(jī)控制程序設(shè)計(jì)。
下位機(jī)中的單片機(jī)主要完成串口接收與發(fā)送。下位機(jī)的單片機(jī)程序在K eil軟件中編寫。Proteus中的單片機(jī)系統(tǒng)加載控制程序,可實(shí)現(xiàn)聯(lián)調(diào),以便對嵌入式工控網(wǎng)絡(luò)進(jìn)行評估、驗(yàn)證。此外,還可以通過改變元器件參數(shù)優(yōu)化電路設(shè)計(jì)?刂屏鞒倘鐖D6所示。
3.5嵌入式工控網(wǎng)絡(luò)的仿真分析
啟動Proteus和VB的仿真按鈕,點(diǎn)擊VB(主站)中相應(yīng)的按鈕,觀察分析仿真結(jié)果,如圖7所示。
圖7中,電阻R的阻值為200Ω。上位機(jī)控制下位機(jī)2的LED燈被循環(huán)點(diǎn)亮。綜合其他仿真結(jié)果,分析說明了該嵌入式工控網(wǎng)絡(luò)設(shè)計(jì)實(shí)現(xiàn)了上位機(jī)對下位機(jī)即多個(gè)單片機(jī)的獨(dú)立控制。單擊仿真電路里的K.(或K2)觸發(fā)外部中斷,下位機(jī)發(fā)送信息至上位機(jī)中的VB應(yīng)用程序。
本設(shè)計(jì)不僅實(shí)現(xiàn)了PC機(jī)控制多個(gè)下位機(jī)的任務(wù),同時(shí)還可以接收多個(gè)下位機(jī)發(fā)送來的信息,從而實(shí)現(xiàn)了嵌入式工控網(wǎng)絡(luò)中上位機(jī)與下位機(jī)之間的雙向通信。
4結(jié)束語
本文在串口通信的基礎(chǔ)上,設(shè)計(jì)了一種適應(yīng)于嵌入式工控網(wǎng)絡(luò)的通信協(xié)議。以Proteus虛擬環(huán)境為平臺,采用AT89C51單片機(jī)設(shè)計(jì)了兩個(gè)子站(下位機(jī)),用VB設(shè)計(jì)主站(上位機(jī))程序,并借用虛擬串口驅(qū)動軟件( VSPD)構(gòu)建虛擬串口。該設(shè)計(jì)在一臺PC上實(shí)現(xiàn)了上位機(jī)與下位機(jī)之間的通信。仿真結(jié)果表明,設(shè)計(jì)結(jié)果滿足嵌入式工控網(wǎng)絡(luò)的應(yīng)用要求。