基于AT89C52網(wǎng)絡(luò)監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
0 引 言
以電子設(shè)備故障檢修技能考核與訓(xùn)練智能化系統(tǒng)為例,介紹由一臺(tái)PC機(jī)與多臺(tái)單片機(jī)組成的主從式網(wǎng)絡(luò)通信系統(tǒng),單片機(jī)控制作為下位機(jī),負(fù)責(zé)對(duì)電子設(shè)備故障點(diǎn)進(jìn)行數(shù)據(jù)采集和控制,通過接口將結(jié)果傳給PC機(jī);PC機(jī)作為上位機(jī),對(duì)數(shù)據(jù)進(jìn)行分析和處理,根據(jù)分析和處理的結(jié)果來控制單片機(jī)的操作。目前,應(yīng)用Visual C++開發(fā)串行通信實(shí)現(xiàn)智能化考核和訓(xùn)練系統(tǒng)的通信方法通常有4種:
(1)調(diào)用API(Application Program Interface)函數(shù)實(shí)現(xiàn);
(2)利用Visual C++的標(biāo)準(zhǔn)通信函數(shù)一inp、一inpw等直接對(duì)串口進(jìn)行操作;
(3)使用Visual C++的通信控件(MSComm);
(4)利用第三方編寫的通信類(Cserial)。
以上幾種方法中第一種方法使用面較廣,但由于需要許多低層設(shè)置,比較復(fù)雜,專業(yè)化程度要求較高,使用困難;第二種需要了解硬件電路結(jié)構(gòu)原理,較難掌握;第三種方法看來較簡(jiǎn)單,只需要對(duì)串口進(jìn)行簡(jiǎn)單配置,但使用了令人費(fèi)解WARIANT類,且不能滿足使用多個(gè)串口進(jìn)行復(fù)雜處理的需要;第四種方法是利用一個(gè)專門針對(duì)串行通信的CSerial類,該方法功能較強(qiáng),只要理解這種類的幾個(gè)成員函數(shù),就能方便使用。RS 485總線以其靈活性好、成本低、抗干擾能力強(qiáng)、支持節(jié)點(diǎn)多、傳輸距離遠(yuǎn)、連接簡(jiǎn)單的優(yōu)勢(shì),被廣泛應(yīng)用于網(wǎng)絡(luò)單片機(jī)系統(tǒng)。在該系統(tǒng)中,上位機(jī)采用Visual C++的Cserial類通信方式;下位機(jī)采用ATMEL公司的AT89C52單片機(jī),總線采用RS 485標(biāo)準(zhǔn)組網(wǎng)。
l 系統(tǒng)結(jié)構(gòu)
整個(gè)系統(tǒng)是一個(gè)基于RS 485現(xiàn)場(chǎng)總線,自定義通信協(xié)議,在總線上連接各下位機(jī)和上位機(jī),由上位機(jī)統(tǒng)一管理的主從式總線型的監(jiān)控系統(tǒng)。該系統(tǒng)包括監(jiān)控層、通信層、以及現(xiàn)場(chǎng)設(shè)備層。其中,監(jiān)控層由上位機(jī)(PC機(jī))承擔(dān),負(fù)責(zé)接收底層現(xiàn)場(chǎng)設(shè)備上傳的數(shù)據(jù),進(jìn)行數(shù)據(jù)的分析和存儲(chǔ),下位機(jī)參數(shù)的設(shè)定和修改,以及實(shí)時(shí)和歷史數(shù)據(jù)的查詢,實(shí)現(xiàn)對(duì)現(xiàn)場(chǎng)設(shè)備的監(jiān)控管理;通信層通過自制定的通信協(xié)議與現(xiàn)場(chǎng)下位機(jī)設(shè)備進(jìn)行實(shí)時(shí)通信,完成數(shù)據(jù)通信包的打包、拆包、檢驗(yàn)等處理;現(xiàn)場(chǎng)設(shè)備層由多臺(tái)電子設(shè)備、單片機(jī)、繼電器、鍵盤、LCD顯示器等組成的監(jiān)控系統(tǒng)。
系統(tǒng)結(jié)構(gòu)方框圖如圖1所示。
上位機(jī)為教師操作的教學(xué)控制管理系統(tǒng),在微機(jī)上用Visual C++編程實(shí)現(xiàn)功能。教學(xué)控制管理系統(tǒng)的主要功能為:
(1)考試的技術(shù)準(zhǔn)備工作;
(2)考試的監(jiān)考工作;
(3)輔助完成其他考務(wù)信息管理工作。
根據(jù)功能要求,教學(xué)控制管理系統(tǒng)由通訊模塊、代碼編譯模塊、代碼執(zhí)行模塊、系統(tǒng)管理模塊、歷史資料查詢模塊組成,這幾個(gè)模塊和用戶界面用戶接口一起構(gòu)成整個(gè)系統(tǒng)軟件。
下位機(jī)作為這個(gè)分布式控制系統(tǒng)的學(xué)生客戶端,是一個(gè)基于AT89C52單片機(jī)的應(yīng)用系統(tǒng)。本系統(tǒng)使用計(jì)算機(jī)、AT89C52單片機(jī)、光電耦合器、驅(qū)動(dòng)電路、繼電器、彩色電視機(jī)等組成的監(jiān)控系統(tǒng),通過局域網(wǎng),構(gòu)成一個(gè)智能化訓(xùn)練及鑒定系統(tǒng)。AT89C52單片機(jī)控制系統(tǒng)如圖2所示。
AT89C52單片機(jī)控制系統(tǒng)采用計(jì)算機(jī)與AT89C52單片機(jī)所構(gòu)成的多種微處理芯片混合的主從系統(tǒng),教師機(jī)是系統(tǒng)的上位機(jī),實(shí)現(xiàn)人機(jī)交互和數(shù)據(jù)交換、檢索、存儲(chǔ)、處理、更新圖形的顯示,對(duì)下位機(jī)(即學(xué)生機(jī))的控制和通信等控制。學(xué)生機(jī)完成數(shù)據(jù)的采集和信號(hào)的處理。教師機(jī)作為主機(jī),學(xué)生機(jī)作為從機(jī)。主從機(jī)間的通信方式采用串行口方式。每一個(gè)訓(xùn)練或鑒定工位均有獨(dú)立的學(xué)生機(jī)和彩色電視機(jī),每臺(tái)學(xué)生機(jī)之間通過網(wǎng)線互聯(lián)。學(xué)生機(jī)通過繼電器控制彩色電視機(jī)故障點(diǎn)的狀態(tài)。
AT89C52單片機(jī)控制系統(tǒng)需要進(jìn)行軟、硬件開發(fā)。與單個(gè)獨(dú)立單片機(jī)系統(tǒng)不同,網(wǎng)絡(luò)中單片機(jī)不僅要按預(yù)先設(shè)計(jì)的程序工作,更多時(shí)候需要根據(jù)來自上位機(jī)的控制指令適時(shí)調(diào)整工作程序。實(shí)操訓(xùn)練或考試時(shí)下位機(jī)主要功能如下:
(1)作為上位機(jī)的終端;
(2)作為電子設(shè)備控制器;
(3)提供考生交互界面;
(4)其他監(jiān)考服務(wù)。
2 通信接口設(shè)計(jì)
通信接口是單片機(jī)控制系統(tǒng)的重要組成部分。單片機(jī)與計(jì)算機(jī)之間不斷地進(jìn)行信息交換和傳輸,而這種信息的交換和傳輸都必須通過通信接口和數(shù)據(jù)總線來實(shí)現(xiàn),通信接口器件和總線的合理選擇是單片機(jī)控制系統(tǒng)中數(shù)據(jù)交換和傳輸順利進(jìn)行的前提和保障。
該系統(tǒng)采用RS 485總線組網(wǎng),上位機(jī)通過串行接口經(jīng)標(biāo)準(zhǔn)RS 232總線和RS 232/RS 485轉(zhuǎn)換器將RS 232標(biāo)準(zhǔn)電平轉(zhuǎn)換為RS 485標(biāo)準(zhǔn)電平與考生的下位機(jī)端通信;在下位機(jī)端SN75176將RS 485標(biāo)準(zhǔn)電平轉(zhuǎn)換為TTL電平接入處理器的異步串行通信口(UART),實(shí)現(xiàn)RS 485網(wǎng)絡(luò)的半雙工通信。
RS 232/RS 485轉(zhuǎn)換器采用市場(chǎng)上即插即用型的產(chǎn)品,本身已經(jīng)實(shí)現(xiàn)智能控制收發(fā)使能,無須更改任何上位機(jī)硬件。上位機(jī)最多可連接32臺(tái)下位機(jī),如果在下位機(jī)端采用SN75184則上位機(jī)最多可連接64臺(tái)下位機(jī)。
RS 485接口電路的設(shè)計(jì)要充分考慮線路上的各種干擾及線路特征阻抗的匹配。信號(hào)在傳輸過程中會(huì)產(chǎn)生電磁干擾和終端反射,使有用信號(hào)與干擾信號(hào)在傳輸線上相疊加,當(dāng)干擾太大時(shí),可導(dǎo)致通信無法進(jìn)行。該系統(tǒng)選用SN75176 RS 485接口芯片,RS 485總線網(wǎng)絡(luò)的通信介質(zhì)采用帶有屏蔽層的雙絞線,并在傳輸線末端各安裝120Ω匹配電阻,以消除傳輸線上信號(hào)的反射,通信距離可達(dá)到1 200 m。
3 通信協(xié)議
RS 485接口的軟件設(shè)計(jì)對(duì)系統(tǒng)聯(lián)網(wǎng)的可靠性有很大的影響。由于RS 485總線是異步半雙工的通信總線,在某一時(shí)刻總線只可能呈現(xiàn)一種狀態(tài),所以這種方式使用于上位機(jī)與下位機(jī)的查詢方式通信,為了協(xié)調(diào)總線的分時(shí)復(fù)用,必須制定一套合理的通信協(xié)議,以保證數(shù)據(jù)通信的正常進(jìn)行。本系統(tǒng)通信協(xié)議是:波特率約定為9 600 b/s,Tl工作于方式2,初值為FDH,SMOD=O。串行口初始化為方式3。通信格式要求如下:
通信數(shù)據(jù)格式總共24 b(二進(jìn)制),8 b識(shí)別碼,8 b控制指令代碼,8 b故障點(diǎn)代碼,格式如下:
規(guī)定如下:
識(shí)別碼為下位機(jī)地址碼,地址范圍為70H~88H。控制指令代碼為:字符“1”表示故障點(diǎn)短接,ASCII碼為“31H”;字符“O”表示故障點(diǎn)斷開,ASCII碼為“30H”。
(1)上位機(jī)狀態(tài)字:
bo:發(fā)卷指令標(biāo)志1,無發(fā)卷指令標(biāo)志0;
b1:開考指令標(biāo)志1,無開考指令標(biāo)志O;
b2:答題查詢指令標(biāo)志1,無答題查詢指令標(biāo)志0;
b3:強(qiáng)行中止答題指令標(biāo)志1,無強(qiáng)行中止答題指令標(biāo)志O;
b4:恢復(fù)答題指令標(biāo)志1,無恢復(fù)答題指令標(biāo)志0。
(2)下位機(jī)狀態(tài)字:
b0:登陸請(qǐng)求1,無登陸請(qǐng)求0;
b1:已登陸狀態(tài)標(biāo)志1,未登陸狀態(tài)標(biāo)志0;
b2:已收卷狀態(tài)標(biāo)志1,未收卷狀態(tài)標(biāo)志0;
b3:開始答題狀態(tài)標(biāo)志1,未開始答題狀態(tài)標(biāo)志O;
b4:交卷請(qǐng)求標(biāo)志1,無交卷請(qǐng)求標(biāo)志0;
b5:已交卷標(biāo)志1,未交卷標(biāo)志O;
b6:答題中止標(biāo)志l,答題恢復(fù)標(biāo)志O。
4 通信過程
上位機(jī)開機(jī)啟動(dòng)程序,上位機(jī)進(jìn)入輪詢過程。此時(shí),下位機(jī)開機(jī)登陸,在輪詢到自己時(shí),發(fā)出登陸信息,上位機(jī)收到后,進(jìn)行必要的登陸處理。在所有下位機(jī)登陸完畢后或監(jiān)考老師認(rèn)為收到所有考生的登陸信息后,按下發(fā)卷按鈕,對(duì)每一個(gè)登陸下位機(jī)依次發(fā)卷。發(fā)卷完畢后,由監(jiān)考老師按下開考按鈕,以廣播方式發(fā)出考試開始指令,下位機(jī)顯示考試題目,系統(tǒng)開始計(jì)時(shí)。在考試進(jìn)行過程中,監(jiān)考老師可查詢?nèi)我粋€(gè)下位機(jī)的狀態(tài)(包括考生考試情況);甚至可以啟動(dòng)自動(dòng)巡考指令,自動(dòng)巡視每個(gè)考生的答題情況??荚囘^程中考生答題完畢可交卷,在考生按下交卷按鈕后交卷,發(fā)出交卷信息,上位機(jī)接收,并發(fā)出正確接收的回復(fù)信息。考試過程中,監(jiān)考老師發(fā)現(xiàn)有學(xué)生作弊,可隨時(shí)按下中止考試按鈕,中止此下位機(jī)的運(yùn)行,考試記零分??荚嚂r(shí)間到,系統(tǒng)自動(dòng)判斷是否仍有考生沒有交卷,中止考生答卷,并取回相應(yīng)下位機(jī)的答題信息。上下位機(jī)基本輪詢及通信動(dòng)作示意圖如圖3所示。
上下位機(jī)通信動(dòng)作過程如下:
①上位機(jī)作為網(wǎng)絡(luò)主控端,以一定時(shí)間間隔dtl進(jìn)行輪詢。輪詢過程是這樣的:首先上位機(jī)查詢上位機(jī)狀態(tài)字,判斷是否存在通訊請(qǐng)求,如果沒有,就對(duì)輪詢到的下位機(jī)發(fā)出通訊授權(quán)標(biāo)志,若在延遲短暫時(shí)間后下位機(jī)無應(yīng)答,置此地址下位機(jī)不在線標(biāo)志,并中止此次輪詢;若有應(yīng)答則置與此下位機(jī)通訊的通道標(biāo)志。
②下位機(jī)發(fā)出指令:表明下位機(jī)回復(fù)查詢指令,根據(jù)狀態(tài)字判斷下位機(jī)狀態(tài)。
③上位機(jī)發(fā)出指令:表明上位機(jī)根據(jù)下位機(jī)的狀態(tài)字及上位機(jī)狀態(tài)字,按上位機(jī)有優(yōu)先原則,發(fā)出上位機(jī)準(zhǔn)備接收信息。
④下位機(jī)發(fā)出指令:上位機(jī)根據(jù)功能指令解析數(shù)據(jù),完成相應(yīng)的顯示及確認(rèn)回復(fù)。
⑤上位機(jī)發(fā)出指令:在從下位機(jī)向上位機(jī)傳輸信息過程中出現(xiàn)錯(cuò)誤時(shí),上位機(jī)將向下位機(jī)發(fā)出重發(fā)功能指令,重發(fā)次數(shù)確定根據(jù)調(diào)試過程確定。
在設(shè)計(jì)RS 485通信軟件時(shí),要注意對(duì)RS 485控制端的軟件編程。為了保證數(shù)據(jù)收發(fā)可靠,在RS 485總線狀態(tài)切換時(shí)需要加適當(dāng)?shù)难訒r(shí),延時(shí)一般控制在1 ms左右,再進(jìn)行數(shù)據(jù)的收發(fā)。經(jīng)過這樣處理后,使總線在狀態(tài)切換時(shí)有一個(gè)穩(wěn)定的工作過程。
5 上位機(jī)通信軟件的設(shè)計(jì)
上位機(jī)通信是采用一個(gè)專門針對(duì)串行通信的CSerial類進(jìn)行程序設(shè)計(jì)的,該方法功能較強(qiáng),只要理解這種類的幾個(gè)成員函數(shù),就能方便使用。以下是幾個(gè)常用的成員函數(shù):
6 結(jié) 語(yǔ)
提出了一種基于AT89C52單片機(jī)網(wǎng)絡(luò)通信系統(tǒng)的軟硬件設(shè)計(jì),該方案已成功應(yīng)用在電子產(chǎn)品故障檢修技能智能化考核系統(tǒng)中,并將其產(chǎn)品化,經(jīng)一年多來的使用,運(yùn)行可靠。此外,由于系統(tǒng)采用模塊化設(shè)計(jì),靈活性強(qiáng),可根據(jù)用戶的實(shí)際需要,實(shí)現(xiàn)對(duì)不同型號(hào)、不同品牌、不同功能的終端設(shè)備進(jìn)行控制。因此具有較高的應(yīng)用價(jià)值和推廣價(jià)值。