摘要:本文提出了一種在小型集散控制系統(tǒng)中應(yīng)用MSComm控件實(shí)現(xiàn)PC機(jī)與單片機(jī)的串行通信方法。這種通信方法具有投資小、硬件連接簡(jiǎn)單、軟件設(shè)計(jì)簡(jiǎn)單和操作方便的特點(diǎn),能夠滿足通訊的要求,對(duì)于工業(yè)監(jiān)控系統(tǒng)和數(shù)據(jù)采集系統(tǒng)具有一定的參考價(jià)值。
關(guān)鍵詞:集散系統(tǒng) MSComm 單片機(jī) 串行通信
在工業(yè)檢測(cè)控制領(lǐng)域中,集散控制系統(tǒng)的結(jié)構(gòu)通常是上位機(jī)采用PC機(jī),目的是利用PC的強(qiáng)大數(shù)據(jù)計(jì)算功能,下位機(jī)可以是PLC,也可以是單片機(jī),主要進(jìn)行數(shù)據(jù)采集和控制操作。上位機(jī)與下位機(jī)的通訊可以采用工業(yè)總線,也可以采用串行通信。工業(yè)總線主要用于大型的集散控制系統(tǒng);對(duì)于小型集散控制系統(tǒng),采用工業(yè)總線的投資過(guò)大,并且需要對(duì)單片機(jī)和PC機(jī)進(jìn)行工業(yè)總線接口設(shè)計(jì)。
1 系統(tǒng)硬件設(shè)計(jì)
系統(tǒng)硬件如圖1所示,由于89C52單片機(jī)的電平是TTL電平,與RS-232電平不能直接相連,所以89C52單片機(jī)與RS-232的連接通過(guò)MAX232來(lái)實(shí)現(xiàn)電平轉(zhuǎn)換:MAX的T2in端接到89C52的TXD端,用于89C52單片機(jī)發(fā)送數(shù)據(jù),MAX232的T2out端接到89C52的RXD端,用于89C52單片機(jī)接收數(shù)據(jù);MAX232的R2out連接到DB-9針連接器的第3腳(SD:發(fā)送數(shù)據(jù)腳),R2in連接到DB-9針連接器的第2腳(RD:接收數(shù)據(jù)腳)。
2 串行通訊協(xié)議說(shuō)明
計(jì)算機(jī)采用查詢發(fā)送、中斷接收的通訊方式。單片機(jī)采用中斷接收、發(fā)送的通訊方式。
PC機(jī)向單片機(jī)發(fā)送的數(shù)據(jù)以數(shù)據(jù)串的形式給出。為了可靠,地址和命令連續(xù)發(fā)送兩遍。下位的單片機(jī)處于中斷接收狀態(tài),當(dāng)接收到地址時(shí)與自己的地址進(jìn)行比較,如果與自己的地址相同,就接收控制命令和數(shù)據(jù)。單片機(jī)根據(jù)接收到的命令和數(shù)據(jù)進(jìn)行操作:或進(jìn)行控制操作,或進(jìn)行數(shù)據(jù)發(fā)送。
PC機(jī)中可以在工程中添加MSComm控件,然后進(jìn)行相應(yīng)的屬性設(shè)置(波特率、奇偶校檢、停止位、發(fā)送與接收的觸發(fā)方式、發(fā)送數(shù)據(jù)的類型等)就可以用它來(lái)實(shí)現(xiàn)串行通信。為了完成PC機(jī)和單片機(jī)之間的串行通信,要求PC機(jī)串行通信的數(shù)據(jù)幀格式和波特率應(yīng)該與單片機(jī)串行口的數(shù)據(jù)幀格式和波特率一致。
MSComm控件和單片機(jī)的串行口的設(shè)置如下。
MSComm控件的設(shè)置為:數(shù)據(jù)幀的格式為8位數(shù)據(jù)位,1位停止位,波特率為9600,數(shù)據(jù)采用ASCII碼。
單片機(jī)的串行口設(shè)置為:數(shù)據(jù)幀格式為8位數(shù)據(jù)位,1位停止位,波特率為9600,無(wú)奇偶校檢,串行口設(shè)定為方式2工作方式,中斷方式。
3 計(jì)算機(jī)通訊程序設(shè)計(jì)
①使用MFC AppWizard(exe)建立一個(gè)基于對(duì)話框的程序。
②添加ActiveX控件中的MSComm控件。設(shè)置控件的屬性:9600,n,8,1,;Rthreshoid=1;其它按缺省值。
③編寫通訊程序:PC機(jī)的串行口通信程序可以用VB來(lái)編寫,可以用VC來(lái)編寫,還可以用其它語(yǔ)言來(lái)編寫。
4 單片機(jī)通訊設(shè)計(jì)
單片機(jī)處于中斷接收狀態(tài),檢測(cè)接受到的地址是否與自己的地址,如果不是自己的地址,則繼續(xù)處于等待接收狀態(tài);如果是,則檢測(cè)接受的命令是請(qǐng)求發(fā)送數(shù)據(jù)命令還是控制命令,如果是請(qǐng)求發(fā)送數(shù)據(jù)命令,則向PC機(jī)發(fā)送采集來(lái)的數(shù)據(jù),發(fā)送完數(shù)據(jù)返回到等待接收狀態(tài);如果是控制命令,則進(jìn)行相應(yīng)的控制操作,操作結(jié)束返回到等待接收狀態(tài)。
5 結(jié)論
應(yīng)用MSComm控件在小型集散控制系統(tǒng)中實(shí)現(xiàn)PC機(jī)與單片機(jī)的串行通信方法。具有投資小、硬件連接簡(jiǎn)單、軟件設(shè)計(jì)簡(jiǎn)單和操作方便的特點(diǎn),經(jīng)在煤礦井下人員定位系統(tǒng)中應(yīng)用,效果良好,能夠滿足串行通信的要求。
參考文獻(xiàn):
[1]趙波,李博.MSComm控件在儀器設(shè)備串行通信中的應(yīng)用[A].江蘇省計(jì)量測(cè)試學(xué)術(shù)論文集(2010)[C].2010.
[2]王麗,雷秀,余建國(guó).基于PC機(jī)與單片機(jī)AT89C52的串行通信協(xié)議設(shè)計(jì)[J].機(jī)電工程技術(shù),2006(02).
[3]宋兵躍,吳軍輝,黃斌.單片機(jī)的高效串行通信研究[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2010(01).
作者簡(jiǎn)介:陳啟友(1958-),男,山東淄博人,工程師,現(xiàn)從事煤礦工程開(kāi)采與管理工作。