《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 基于串行通信的智能家居上位機設(shè)計
基于串行通信的智能家居上位機設(shè)計
中國物聯(lián)網(wǎng)
空城 收編
摘要: 上位機設(shè)計是智能家居系統(tǒng)的一個重要組成部分,,擔(dān)負著管理,、控制、維護和用戶界面操作的重任,高效可靠的上位機設(shè)計是整個系統(tǒng)正常運作的重要保障,。上位機與系統(tǒng)的通信實際上是與下端單片機的通信。單片機或單片機系統(tǒng)是智能家居控制的核心,,當計算機作為單片系統(tǒng)的一個角色時,,通常被稱為“工控機”或“上位機”,各獨立的單片機是系統(tǒng)中實現(xiàn)功能的一個模塊,,所以有時也稱單片機為模塊,。
Abstract:
Key words :

        上位機設(shè)計是智能家居系統(tǒng)的一個重要組成部分,擔(dān)負著管理,、控制,、維護和用戶界面操作的重任,高效可靠的上位機設(shè)計是整個系統(tǒng)正常運作的重要保障,。上位機與系統(tǒng)的通信實際上是與下端單片機的通信,。單片機或單片機系統(tǒng)是智能家居控制的核心,當計算機作為單片系統(tǒng)的一個角色時,,通常被稱為“工控機”或“上位機”,,各獨立的單片機是系統(tǒng)中實現(xiàn)功能的一個模塊,所以有時也稱單片機為模塊,。
  計算機與單片機是通過串口來實現(xiàn)通信的,,本文著重討論計算機與單片機的串口通信的實現(xiàn)方法和MSComm控件技術(shù)。
  1 上位機在智能家居系統(tǒng)的角色
  首先,,必須認識計算機在智能家居系統(tǒng)的作用,,可以概括為以下幾個方面:
  1.1通信測試工具
  傳統(tǒng)的單片機系統(tǒng)的通信測試通過示波器來監(jiān)測,,既不直觀又容易丟失信息。將計算機加入到系統(tǒng)中,,可以實時監(jiān)測到線路中的信息,,并以數(shù)字化呈現(xiàn),使各個單片機間的通信得到檢驗,,及時解決系統(tǒng)存在的問題,。所以計算機在加速系統(tǒng)的開發(fā)和保證系統(tǒng)的運行質(zhì)量的作用就不言而喻了。
  1.2系統(tǒng)維護
  一個單片機系統(tǒng)往往需要對系統(tǒng)中各個不同功能的模塊(單片機)進行參數(shù)的設(shè)置,,以適應(yīng)不同的運行環(huán)境,,雖然可以通過各模塊的控制面板來調(diào)整,但操作通常比較麻煩,,非專業(yè)人員不易掌握,。同時對于一些需要定義其地理位置的參數(shù)難以實現(xiàn),不夠直觀,。計算機加入到系統(tǒng)中,,不但可以解決操作上的問題,同時還可以讀取各模塊的參數(shù),,以便于調(diào)整,。
  1.3單片機
  計算機可以作為單片機系統(tǒng)的一個模塊,完成相應(yīng)的功能,。計算機應(yīng)答系統(tǒng)的請求,、處理系統(tǒng)中的信息,一方面將信息呈現(xiàn)給用戶,,另一方面計算機程序通過自動計算或用戶的輸入,,將信息反饋到系統(tǒng)中,參與系統(tǒng)的控制,。
  1.4主控機
  在單片機系統(tǒng)中,,往往存在一個主控機或主控模塊,負責(zé)對整個系統(tǒng)的統(tǒng)籌和設(shè)置,。單片機系統(tǒng)通常是通過各功能模塊的輸入和響應(yīng)來實現(xiàn)其功能的,,因此必須有一個負責(zé)收集輸入任務(wù)并指定響應(yīng)模塊的主控模塊。計算機系統(tǒng)中既可以是一個普通的模塊,,又可以是負責(zé)總體協(xié)調(diào)的主控器,。
  2 通信協(xié)議
  一個單片機系統(tǒng)是由硬件系統(tǒng)和軟件系統(tǒng)構(gòu)成的。硬件是實現(xiàn)功能的前提,,而系統(tǒng)功能則是通過軟件來實現(xiàn)的,,為了保證各個模塊通信,實現(xiàn)系統(tǒng)信息交流,必須制訂系統(tǒng)的通信協(xié)議,。
  從物理上來說,,系統(tǒng)各模塊是以半雙工的模式來通信的,,下文提及的智能照明系統(tǒng)下端模塊就是以半雙工的RS485總路線為通信架構(gòu)的,。而計算機的RS232串口是以全雙工的模式來實現(xiàn)通信的,因此,,計算機要通過串口參與到單片機系統(tǒng)中必須增加一個RS232和RS485總線轉(zhuǎn)換的模塊,。

  從邏輯上講,要實現(xiàn)各模塊之間的通信,,就必須在模塊間約定一個共同遵守的通信協(xié)議,。單片機以位(b)為基本單位,傳輸時以8位1字節(jié)(B)來傳輸,,單片機以毫秒間距發(fā)送若干個字節(jié)為一個數(shù)據(jù)包,,也稱為一幀,幀之間又規(guī)定若干毫秒的間隙,。通過計算機程序可以捕獲線路中每一幀信息,。
  下面以智能照明系統(tǒng)為例,講述單片機系統(tǒng)的通信協(xié)議,。
  本協(xié)議采用異步串行通信方式,,字節(jié)幀格式:1個起始位+8個數(shù)據(jù)位+1個停止位,無校驗位,。
  幀格式如下:
  l幀=幀頭(F4HF5H)+數(shù)據(jù)包+幀尾(F4HFBH)<255B
  數(shù)據(jù)包=有效字節(jié)數(shù)(1B)+傳輸層數(shù)據(jù)+校驗和(1B)<251B
  幀數(shù)據(jù)的發(fā)送,、接收過程中前后兩字節(jié)數(shù)據(jù)傳送延時不得超過O.5s。
  各模塊分配兩個字節(jié)的地址碼,,第一字節(jié)代表模塊類型,,第二字節(jié)代表模塊在系統(tǒng)中分配的順序。各模塊獲取總線上的幀后,,對自己的地址幀響應(yīng),,其他的幀拋掉。
  以下是本協(xié)議中的關(guān)于“燈開??刂?rdquo;的協(xié)議:
  描述:該信息是輸出子模塊的各路燈的開或關(guān)控制,。
  構(gòu)成:該信息發(fā)送時由信息頭和信息內(nèi)容構(gòu)成,返回時由信息頭構(gòu)成,。
  主控器或PC機發(fā)給輸出模塊時:
 
  系統(tǒng)的通信按照規(guī)定的各條協(xié)議來執(zhí)行,。
  3 計算機通信的實現(xiàn)
  計算機硬件上通過RS232與RS485接口轉(zhuǎn)換與下端模塊進行通信。而軟件的實現(xiàn)有多種方法,,下面主要介紹在VB6.0通過MSComm控件來實現(xiàn)通信的方法,。
  3.1將MSComm控件引入到VB平臺
  MSComm控件通過串行端口傳輸和接收數(shù)據(jù),為應(yīng)用程序提供串行通訊功能,。MSComm控件在串口編程時非常方便,,程序員不必去花時間去了解較為復(fù)雜的API函數(shù),,而且在VC,VB,,Delphi等語言中均可使用,。 
  MSComm是Mierosoft公司提供的簡化Windows下串行通信編程的AcTIveX控件,,它為應(yīng)用程序提供了通過串行接口收發(fā)數(shù)據(jù)的簡便方法,。具體的來說,它提供了兩種處理通信問題的方法:一是事件驅(qū)動(Eventdriyen)方法,,一是查詢法,。
  3.2.1MSComm控件的屬性
  MSComm控件有很多重要的屬性,正確設(shè)置其屬性是程序進行正常通信的保證,,下面介紹幾個必須熟悉的屬性,。

  CommPort:設(shè)置并返回通訊端口號。
  Settings:以字符串的形式設(shè)置并返回波特率,、奇偶校驗,、數(shù)據(jù)位、停止位,。
  PortOpen:設(shè)置并返回通訊端口的狀態(tài),,也可以打開和關(guān)閉端口。
  Input:從接收緩沖區(qū)返回和刪除字符,。
  InputMode:接收模式,,取O值時,接收文本數(shù)據(jù),;取1時,,接收二進制數(shù)據(jù)。
  Output:向傳輸緩沖區(qū)寫一個字符串,。
  Rthrehold:響應(yīng)模式,,取整數(shù)。當接收字符后,,若Rthrehold屬性設(shè)置為O,,則不產(chǎn)生OnComm事件;若設(shè)置為1,,則接收緩沖區(qū)收到每一個字符都會使MSComm控件產(chǎn)生OnComm事件,。
  Sthreshold:發(fā)送模式,設(shè)置O(缺省值),,數(shù)據(jù)傳輸事件不會產(chǎn)生OnComm事件,;設(shè)置為1,當傳輸緩沖區(qū)完全空時,MSComm控件產(chǎn)生OnComm事件,。如果在傳輸緩沖區(qū)中的字符數(shù)小于value,,CommEvent屬性設(shè)置為comEvSend,并產(chǎn)生OnComm事件,。
  Handshake:通信握手模式,,取值為O時,無握手,;取值為1時,,表示XOn/Xoff握手;取值為2時,,表示Request-to\-send/clear-to-send握手;取值為3時,,表示eqLlest-to-send&clear-to-send握手皆可,。
  3.2.2MSComm控件兩種處理通訊的方式
  MSComm控件提供下列兩種處理通訊的方式:事件驅(qū)動方式和查詢方式。
  (1)事件驅(qū)動方式
  事件驅(qū)動通訊是處理串行端口交互作用的一種非常有效的方法,。在許多情況下,,在事件發(fā)生時需要得到通知,例如,,在串口接收緩沖區(qū)中有字符,,或者CarrierDetect(CD)或RequestToSend(RTS)線上一個字符到達或一個變化發(fā)生時。在這些情況下,,可以利用MSComm控件的OnComm事件捕獲并處理這些通訊事件,。OnComm事件還可以檢查和處理通訊錯誤。所有通訊事件和通訊錯誤的列表,,參閱CommEvent屬性,。在編程過程中,就可以在OnComm事件處理函數(shù)中加入自己的處理代碼,。這種方法的優(yōu)點是程序響應(yīng)及時,,可靠性高。每個MSComm控件對應(yīng)著一個串行端口,。如果應(yīng)用程序需要訪問多個串行端口,,必須使用多個MSComm控件。
  (2)查詢方式
  查詢方式實質(zhì)上還是事件驅(qū)動,,但在有些情況下,,這種方式顯得更為便捷。在程序的每個關(guān)鍵功能之后,,可以通過檢查CommEvent屬性的值來查詢事件和錯誤,。如果應(yīng)用程序較小,并且是自保持的,這種方法可能是更可取的,。例如,,如果寫一個簡單的電話撥號程序,則沒有必要對每接收一個字符都產(chǎn)生事件,,因為惟一等待接收的字符是調(diào)制解調(diào)器的“確定”響應(yīng),。

  3.3計算機信息發(fā)送和接收的實現(xiàn)
  下面以智能照明系統(tǒng)中PC機與主控器的通信,說明計算機與單片機通信的實現(xiàn)方法,。以下是實現(xiàn)的主要子程序,。
  頁面裝載程序:
  通信建立后,計算機就可以與下端單片機通過設(shè)定的協(xié)議進行通信,,可以測試下端模塊的響應(yīng),。
  4 MSComm控件的問題和解決辦法
  在實際應(yīng)用中,MSComm控件對于一問一答式的通信,,效果還是可以的,,所以用于單模塊的通信測試問題不大。但是,,如果計算機作為單片系統(tǒng)的一個角色,,要實時捕獲總線上的信息并響應(yīng),存在失幀和誤幀的問題,,如果系統(tǒng)要求不高,,還可以對付,而象智能照明這樣要求信息持續(xù),、實時,、準確的系統(tǒng),利用MSComm控件處理串口通信就難以勝任了,。
  在智能照明系統(tǒng)中,,采用了自編制的動態(tài)庫Transdata,dll程序,,作為處理串口通信的接口,,誤幀率和失幀率較低,能滿足產(chǎn)品化的要求,。
  Transdata.dll使用說明:
  (1)初始化串口并處于通訊狀態(tài)<函數(shù)>
  Init_OpenCom(byvalm_strasstring,,byvalnbaudasInteger)asBoolean
  參數(shù)說明:m_str為串口名稱,如“coml”“com2”等,;nbaud為波特率,,可為1200,2400,,4800,,9600等,;返回值為Boolean,若為true則成功,,否則失敗false,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。