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