O 引言
家庭智能控制系統(tǒng)的主要功能集中在家庭安全報警,、電話或電腦遠程控制、紅外遙控,、自動抄表控制,、燈光和濕度控制等方面。根據(jù)智能終端設(shè)備傳輸數(shù)據(jù)和功能的不同可以把它分成兩類子網(wǎng),,一類是傳輸數(shù)據(jù)以數(shù)據(jù)量小,、速率低的家庭自動化控制設(shè)備;另一類是傳輸多媒體信息,、(視頻,、音頻信號),信號量大,、速率快,,如視頻會議、音頻點播等,。家庭智能終端設(shè)備可以采用總線結(jié)構(gòu)組建成有線子網(wǎng)和無線子網(wǎng),,因各設(shè)備分布在家中不同的地方,對于組建成有線子網(wǎng)布線比較復(fù)雜,,但是如果采用PLC與CAN總線構(gòu)建成網(wǎng)絡(luò),,將降低成本。
CAN(Controller Area Network,,控制器局域網(wǎng))是德國Bosch公司在20世紀80年代初為汽車檢測控制而開發(fā)的一種串行數(shù)據(jù)通訊協(xié)議,它是一種多主機總線,,通訊介質(zhì)可以是雙絞線,、同軸電纜或光導(dǎo)纖維,,通訊速率為1Mb/s。CAN總線具有卓越的性能,,極高的可靠性和獨特的設(shè)計,,廣泛應(yīng)用于工業(yè)自動化、交通工具,、醫(yī)療儀器以及建筑,、環(huán)境控制等眾多部門。
1 家庭智能化控制系統(tǒng)的組成
家庭智能化控制系統(tǒng)是電視,、洗衣機,、空調(diào)及水表、電表,、燃氣表等設(shè)備的指揮通信和信息管理的核心,,主要功能是與遠程控制系統(tǒng)進行數(shù)傳通信,接收各種控制口令,,完成對相應(yīng)設(shè)備的實時控制,。
控制系統(tǒng)中凡具有嵌入式微處理器或微計算機的單體均通過CAN總線相互連接。組成分布式局部網(wǎng),,實現(xiàn)數(shù)據(jù)交換和信息資源共享,。這種設(shè)計具有以下優(yōu)點:減少了通信端口、連接電纜,;抗干擾能力強,;配置靈活、系統(tǒng)擴展和升級方便,;調(diào)試簡單,,檢修方便。
由CAN總線組成的家庭智能化控制系統(tǒng)原理如圖1所示,。
2 PLC與CAN總線的連接
現(xiàn)以GE FANUC系列90 PLC為例,,給出一個PLC與CAN總線的連接方案。
GE系列90 PLC都帶有經(jīng)轉(zhuǎn)換的RS 232串行通訊口,,編程計算機通過此串口與PLC進行通訊和編程,。RS 232標準電平采用負邏輯,規(guī)定+3~+15V之間的任意電平為邏輯“0”電平,,-3~-15V之間的任意電平為邏輯“1”電平,。而CAN信號則使用差分電壓傳送,兩條信號線稱為“CAN _H”和“CAM_L”,,靜態(tài)時均為2.5 V左右,,此時的狀態(tài)表示為邏輯“1”,也可以叫做“隱性”,;用CAN_H比CAN_L高表示邏輯“0”,,稱為“顯性”,。顯性時,通常電壓值為:CAN_H=3.5V,,CAN_L=1.5V,。
RS 232串口的幀格式為:1位起始位,8位數(shù)據(jù)位,,1位可編程的第9位(此位為發(fā)送和接收的地址/數(shù)據(jù)位),,1位停止位。而CAN的數(shù)據(jù)幀格式為:幀信息+ID+數(shù)據(jù)(可分為標準幀和擴展幀兩種格式),。因此,,設(shè)計時就需要有一個微控制器來實現(xiàn)電平和幀格式等的轉(zhuǎn)換,其轉(zhuǎn)換方式如圖2所示,。
用單片機AT89C52作為微處理器,;用SJAl000作為CAN微控制器,SJAl000中集成了CAN協(xié)議的物理層和數(shù)據(jù)鏈路層功能,,可被動局面對通信數(shù)據(jù)的幀處理,;高速光電隔離用6N137實現(xiàn),其作用是防止串入信號干擾,;MAX232用來完成RS 232電平到微控制器接口芯片TTL電平的轉(zhuǎn)換,。具體的硬件接口電路參見SJAl000的資料,但有以下幾點需要注意:
(1)CAN總線兩端接有一個120 Ω的電阻,,其作用是匹配總線阻抗,,提高數(shù)據(jù)通信的抗干擾性及可靠性。但實際上只需保證CAN網(wǎng)絡(luò)中“CAN_H”和“CAN_L”之間的跨接電阻為60 Ω即可,。
(2)SJAl000的20引腳RXl在不使用時可接地,,配合CDR.6的置位可使總線長度大大增加。
(3)引腳TX0,,TXl的接法決定了串行輸出的電平,。具體關(guān)系可參考輸出控制寄存器OCR的設(shè)置。
(4)AT82C250的RS引腳與地間接有1個斜率電阻,。電阻大小可根據(jù)總線通信速度作適當調(diào)整,,一般在16~140 kΩ之間。
(5)MAX232外圍需要4個電解電容C1,,C2,,C3,C4,,這些電容也是內(nèi)部電源轉(zhuǎn)換所需電容,,其取值均為1μF/25 V,宜選用鉭電容并且位置應(yīng)用量靠近芯片,,電源Vcc和地之間要接1個0.1μF的去耦電容,。
在微處理控制下,,RS 232和CAN進行數(shù)據(jù)交換時,,采用串口接收和CAN中斷方式可提高工作效率,。SJAl000的初始化在復(fù)位模式下才可以進行,主要包括工作方式的設(shè)置,、時鐘分頻和驗收濾波寄存器的設(shè)置,、波特率參數(shù)的設(shè)置以及中斷允許寄存器的設(shè)置等。其主程序流程圖如圖3所示,。
數(shù)據(jù)能否準確傳遞還取決于波特率和流量控制,,這也是軟件設(shè)計時不可忽略的地方。因此接下來主要介紹CAN波特率的設(shè)置,、串口波特率的自動檢測,、串口數(shù)據(jù)流量控制。
CAN協(xié)議中的要素之一是波特率,??梢栽O(shè)置位周期中的位采樣點位置和采樣次數(shù),以使可以自由地優(yōu)化應(yīng)用網(wǎng)絡(luò)性能,,但在優(yōu)化過程中,,要注意位定時參數(shù)基準參考振蕩器的容差和系統(tǒng)中不同信號傳播延遲之間的關(guān)系。
系統(tǒng)的位速率fbit表示每單位時間傳輸數(shù)據(jù)位的量,,即波特率fbit=1/tbit,。額定的位定時由3個互不重疊的段SYNC_SEG,TSEGl和TSEG2組成,,這3個時間段分別是tSYNC_SEG,,tTSEGl和tTSEG2。所以,,額定位周期tbit是3個時間段的和:tbit=tSYNC_SEG+tTSEGl+tTSEG2,。位周期中這些段都用整數(shù)個基本時間單位來表示。該時間單位叫時間份額TQ,,時間份額的持續(xù)時間是CAN系統(tǒng)時鐘的一個周期tSCL,,可從振蕩器時鐘周期tCLK取得。通過編程預(yù)分頻因數(shù)(波特率預(yù)設(shè)值BRP)可以調(diào)整CAN系統(tǒng)時鐘,,即tSCL=BRP×2tCLK=2BPR/CLK,。
對CAN位定時計算的另一個很重要的時間段是同步跳轉(zhuǎn)寬度(SJW),持續(xù)時間是tSJW,。SJW段并不是位周期的一段,,只是定義了在重同步事件中被增長或縮短的位周期的最大TQ數(shù)量。此外,,CAN協(xié)議還允許用戶指定位采樣模式(SAM),,分別是單次采樣和三次采樣模式(在3個采樣結(jié)果中選出1個),。在單次采樣模式中,采樣點在TESG1段的末端,。而三次采樣模式比單次采樣多取兩個采樣點,,它們在TSEGl段末端的前面,之間相差一個TQ,。上面所提到的BPR,,SJW,SAM,,TESGl,,TESG2都可由用戶通過CAN控制器的內(nèi)裝中寄存器BTR0和BTRl來定義。設(shè)置好BTR0和BTRl后,,實際傳輸?shù)牟ㄌ芈史秶鸀椋鹤畲?1/(tbit-tSJW),,最小=1/(tbit+tSJW)。
檢測轉(zhuǎn)換裝置的串口波特率,,首先可對主機的接收波特率(以9600 b/s為例)進行設(shè)定,,并在終端發(fā)送一個特定的字符(以回車符為例),這樣,,主機根據(jù)接收到的字符信息就可以確定轉(zhuǎn)換裝置的通信波特率,。回車符的ASCII值是0DH,,在不同波特率下接收到的值如表1所列,。
數(shù)據(jù)在兩個串口之間的傳輸時,常常會出現(xiàn)丟失數(shù)據(jù)的現(xiàn)象,。由于單片機緩沖區(qū)有限,,如接收數(shù)據(jù)時緩沖區(qū)已滿,那么此時繼續(xù)發(fā)送來的數(shù)據(jù)就會丟失,。而流控制能有效地解決該問題,,當接收端數(shù)據(jù)處理不過來時,流控制系統(tǒng)就會發(fā)出“不再接收”的信號,,而使發(fā)送端停止發(fā)送,,直到收到“可以繼續(xù)發(fā)送”的信號再發(fā)送數(shù)據(jù)。因此流控制可以控制數(shù)據(jù)傳輸?shù)倪M程,,防止數(shù)據(jù)丟失,。常用的兩種流控制是硬件流控制(包括RTS/CTS,DTR/CTS等)和軟件流控制XON/XOFF(繼續(xù)/停止),,下面僅就硬件流控制RTS/CTS加以說明,。
采用硬件進行流控制時,串口終端RTS,CTS接到單片機的I/O口,,通過置I/O口為1或0來接收和發(fā)出起停信號,。數(shù)據(jù)終端設(shè)備(如計算機)使用RTS來起始單片機發(fā)出的數(shù)據(jù)流,而單片機則用CTS來起動和暫停來自計算機的數(shù)據(jù)流,。實現(xiàn)這種硬件握手方式時,,在編程時根據(jù)接收端緩沖區(qū)的大小設(shè)置一個高位標志和一個低位標志,當緩沖區(qū)內(nèi)數(shù)據(jù)量達到高位時,,就在接收端將CTS線置低(送邏輯0),,而當發(fā)送端的程序檢測到CTS為低后,,就停止發(fā)送數(shù)據(jù),,直到接收端緩沖區(qū)的數(shù)據(jù)量低于低位而將CTS置高為止。RTS則用來標明接收設(shè)備有沒有準備好接收數(shù)據(jù),。
以下是CAN接收子程序:
3 結(jié)語
通過對家庭智能控制系統(tǒng)的分析,,采用PLC與CAN總線構(gòu)建成控制性局域網(wǎng),通過仿真系統(tǒng)的測試,,該總線完全能完成對家庭智能終端設(shè)備實行控制,,但要使它控制的穩(wěn)定性和實時性得到進一步提高,還需在此基礎(chǔ)上作更加深入的研究,。