新聞中心

EEPW首頁(yè) > 手機(jī)與無線通信 > 設(shè)計(jì)應(yīng)用 > 基于串行通信的智能家居上位機(jī)設(shè)計(jì)

基于串行通信的智能家居上位機(jī)設(shè)計(jì)

作者: 時(shí)間:2010-09-22 來源:網(wǎng)絡(luò) 收藏

0 引言
機(jī)系統(tǒng)的一個(gè)重要組成部分,擔(dān)負(fù)著管理、控制、維護(hù)和用戶界面操作的重任,高效可靠的機(jī)是整個(gè)系統(tǒng)正常運(yùn)作的重要保障。機(jī)與系統(tǒng)的實(shí)際上是與下端單片機(jī)的。單片機(jī)或單片機(jī)系統(tǒng)是控制的核心,當(dāng)計(jì)算機(jī)作為單片系統(tǒng)的一個(gè)角色時(shí),通常被稱為“工控機(jī)”或“上位機(jī)”,各獨(dú)立的單片機(jī)是系統(tǒng)中實(shí)現(xiàn)功能的一個(gè)模塊,所以有時(shí)也稱單片機(jī)為模塊。
計(jì)算機(jī)與單片機(jī)是通過串口來實(shí)現(xiàn)的,本文著重討論計(jì)算機(jī)與單片機(jī)的串口通信的實(shí)現(xiàn)方法和MSComm控件技術(shù)。

1上位機(jī)在系統(tǒng)的角色
首先,必須認(rèn)識(shí)計(jì)算機(jī)在智能家居系統(tǒng)的作用,可以概括為以下幾個(gè)方面:
1.1 通信測(cè)試工具
傳統(tǒng)的單片機(jī)系統(tǒng)的通信測(cè)試通過示波器來監(jiān)測(cè),既不直觀又容易丟失信息。將計(jì)算機(jī)加入到系統(tǒng)中,可以實(shí)時(shí)監(jiān)測(cè)到線路中的信息,并以數(shù)字化呈現(xiàn),使各個(gè)單片機(jī)間的通信得到檢驗(yàn),及時(shí)解決系統(tǒng)存在的問題。所以計(jì)算機(jī)在加速系統(tǒng)的開發(fā)和保證系統(tǒng)的運(yùn)行質(zhì)量的作用就不言而喻了。
1.2 系統(tǒng)維護(hù)
一個(gè)單片機(jī)系統(tǒng)往往需要對(duì)系統(tǒng)中各個(gè)不同功能的模塊(單片機(jī))進(jìn)行參數(shù)的設(shè)置,以適應(yīng)不同的運(yùn)行環(huán)境,雖然可以通過各模塊的控制面板來調(diào)整,但操作通常比較麻煩,非專業(yè)人員不易掌握。同時(shí)對(duì)于一些需要定義其地理位置的參數(shù)難以實(shí)現(xiàn),不夠直觀。計(jì)算機(jī)加入到系統(tǒng)中,不但可以解決操作上的問題,同時(shí)還可以讀取各模塊的參數(shù),以便于調(diào)整。
1.3 單片機(jī)
計(jì)算機(jī)可以作為單片機(jī)系統(tǒng)的一個(gè)模塊,完成相應(yīng)的功能。計(jì)算機(jī)應(yīng)答系統(tǒng)的請(qǐng)求、處理系統(tǒng)中的信息,一方面將信息呈現(xiàn)給用戶,另一方面計(jì)算機(jī)程序通過自動(dòng)計(jì)算或用戶的輸入,將信息反饋到系統(tǒng)中,參與系統(tǒng)的控制。
1.4 主控機(jī)
在單片機(jī)系統(tǒng)中,往往存在一個(gè)主控機(jī)或主控模塊,負(fù)責(zé)對(duì)整個(gè)系統(tǒng)的統(tǒng)籌和設(shè)置。單片機(jī)系統(tǒng)通常是通過各功能模塊的輸入和響應(yīng)來實(shí)現(xiàn)其功能的,因此必須有一個(gè)負(fù)責(zé)收集輸入任務(wù)并指定響應(yīng)模塊的主控模塊。計(jì)算機(jī)系統(tǒng)中既可以是一個(gè)普通的模塊,又可以是負(fù)責(zé)總體協(xié)調(diào)的主控器。

2 通信協(xié)議
一個(gè)單片機(jī)系統(tǒng)是由硬件系統(tǒng)和軟件系統(tǒng)構(gòu)成的。硬件是實(shí)現(xiàn)功能的前提,而系統(tǒng)功能則是通過軟件來實(shí)現(xiàn)的,為了保證各個(gè)模塊通信,實(shí)現(xiàn)系統(tǒng)信息交流,必須制訂系統(tǒng)的通信協(xié)議。
從物理上來說,系統(tǒng)各模塊是以半雙工的模式來通信的,下文提及的智能照明系統(tǒng)下端模塊就是以半雙工的RS 485總路線為通信架構(gòu)的。而計(jì)算機(jī)的RS 232串口是以全雙工的模式來實(shí)現(xiàn)通信的,因此,計(jì)算機(jī)要通過串口參與到單片機(jī)系統(tǒng)中必須增加一個(gè)RS 232和RS 485總線轉(zhuǎn)換的模塊。
從邏輯上講,要實(shí)現(xiàn)各模塊之間的通信,就必須在模塊間約定一個(gè)共同遵守的通信協(xié)議。單片機(jī)以位(b)為基本單位,傳輸時(shí)以8位1字節(jié)(B)來傳輸,單片機(jī)以毫秒間距發(fā)送若干個(gè)字節(jié)為一個(gè)數(shù)據(jù)包,也稱為一幀,幀之間又規(guī)定若干毫秒的間隙。通過計(jì)算機(jī)程序可以捕獲線路中每一幀信息。
下面以智能照明系統(tǒng)為例,講述單片機(jī)系統(tǒng)的通信協(xié)議。
本協(xié)議采用異步通信方式,字節(jié)幀格式:1個(gè)起始位+8個(gè)數(shù)據(jù)位+1個(gè)停止位,無校驗(yàn)位。
幀格式如下:
l幀=幀頭(F4H F5H)+數(shù)據(jù)包+幀尾(F4HFBH)255B
數(shù)據(jù)包=有效字節(jié)數(shù)(1B)+傳輸層數(shù)據(jù)+校驗(yàn)和(1B)251B
幀數(shù)據(jù)的發(fā)送、接收過程中前后兩字節(jié)數(shù)據(jù)傳送延時(shí)不得超過O.5s。
各模塊分配兩個(gè)字節(jié)的地址碼,第一字節(jié)代表模塊類型,第二字節(jié)代表模塊在系統(tǒng)中分配的順序。各模塊獲取總線上的幀后,對(duì)自己的地址幀響應(yīng),其他的幀拋掉。
以下是本協(xié)議中的關(guān)于“燈開??刂?rdquo;的協(xié)議:
描述:該信息是輸出子模塊的各路燈的開或關(guān)控制。
構(gòu)成:該信息發(fā)送時(shí)由信息頭和信息內(nèi)容構(gòu)成,返回時(shí)由信息頭構(gòu)成。
主控器或PC機(jī)發(fā)給輸出模塊時(shí):

本文引用地址:http://butianyuan.cn/article/157065.htm

系統(tǒng)的通信按照規(guī)定的各條協(xié)議來執(zhí)行。

3 計(jì)算機(jī)通信的實(shí)現(xiàn)
計(jì)算機(jī)硬件上通過RS 232與RS 485接口轉(zhuǎn)換與下端模塊進(jìn)行通信。而軟件的實(shí)現(xiàn)有多種方法,下面主要介紹在VB 6.0通過MSComm控件來實(shí)現(xiàn)通信的方法。
3.1 將MSComm控件引入到VB平臺(tái)
MSComm控件通過端口傳輸和接收數(shù)據(jù),為應(yīng)用程序提供通訊功能。MSComm控件在串口編程時(shí)非常方便,程序員不必去花時(shí)間去了解較為復(fù)雜的API函數(shù),而且在VC,VB,Delphi等語(yǔ)言中均可使用。
MSComm是Mierosoft公司提供的簡(jiǎn)化Windows下串行通信編程的ActiveX控件,它為應(yīng)用程序提供了通過串行接口收發(fā)數(shù)據(jù)的簡(jiǎn)便方法。具體的來說,它提供了兩種處理通信問題的方法:一是事件驅(qū)動(dòng)(Eventdriyen)方法,一是查詢法。
3.2 MSComm控件的設(shè)置
3.2.1 MSComm控件的屬性

MSComm控件有很多重要的屬性,正確設(shè)置其屬性是程序進(jìn)行正常通信的保證,下面介紹幾個(gè)必須熟悉的屬性。
CommPort:設(shè)置并返回通訊端口號(hào)。
Settings:以字符串的形式設(shè)置并返回波特率、奇偶校驗(yàn)、數(shù)據(jù)位、停止位。
PortOpen:設(shè)置并返回通訊端口的狀態(tài),也可以打開和關(guān)閉端口。
Input:從接收緩沖區(qū)返回和刪除字符。
InputMode:接收模式,取O值時(shí),接收文本數(shù)據(jù);取1時(shí),接收二進(jìn)制數(shù)據(jù)。
Output:向傳輸緩沖區(qū)寫一個(gè)字符串。
Rthrehold:響應(yīng)模式,取整數(shù)。當(dāng)接收字符后,若Rthrehold屬性設(shè)置為O,則不產(chǎn)生OnComm事件;若設(shè)置為1,則接收緩沖區(qū)收到每一個(gè)字符都會(huì)使MSComm控件產(chǎn)生OnComm事件。
Sthreshold:發(fā)送模式,設(shè)置O(缺省值),數(shù)據(jù)傳輸事件不會(huì)產(chǎn)生OnComm事件;設(shè)置為1,當(dāng)傳輸緩沖區(qū)完全空時(shí),MSComm控件產(chǎn)生OnComm事件。如果在傳輸緩沖區(qū)中的字符數(shù)小于value,CommEvent屬性設(shè)置為comEvSend,并產(chǎn)生OnComm事件。
Handshake:通信握手模式,取值為O時(shí),無握手;取值為1時(shí),表示XOn/Xoff握手;取值為2時(shí),表示Request-to\-send/clear-to-send握手;取值為3時(shí),表示eqLlest-to-send&clear-to-send握手皆可。


上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉