摘 要:介紹了基于STC12C5A60S2單片機、SJA1000型CAN接口控制器以及PCA82C250串行收發器構成的總線通信網絡。該網絡中遠端的CAN節點可監測現場環境,并實現數據收發和串行通信,上位PC機利用VB6.0設計的監測界面可實時顯示現場CAN節點的環境參摘 要:介紹了基于STC12C5A60S2單片機、SJA1000型CAN接口控制器以及PCA82C250串行收發器構成的總線通信網絡。該網絡中遠端的CAN節點可監測現場環境,并實現數據收發和串行通信,上位PC機利用VB6.0設計的監測界面可實時顯示現場CAN節點的環境參數。文中重點分析了CAN總線節點和組網技術,給出了系統的硬件電路設計和軟件處理流程。實驗結果表明,該系統具有數據傳輸可靠、通信距離遠以及實時顯示功能,而且抗干擾能力強。
關鍵詞:單片機;CAN總線;VB6.0;環境參數
中圖分類號:TP393 文獻標識碼:A 文章編號:2095-1302(2014)01-0019-04數。文中重點分析了CAN總線節點和組網技術,給出了系統的硬件電路設計和軟件處理流程。實驗結果表明,該系統具有數據傳輸可靠、通信距離遠以及實時顯示功能,而且抗干擾能力強。
關鍵詞:單片機;CAN總線;VB6.0;環境參數
中圖分類號:TP393 文獻標識碼:A 文章編號:2095-1302(2014)01-0019-04
0 引 言
CAN(Controller Area Network)總線是一種用于智能化現場設備和自動化系統的開放式、數字化、雙向串行、多節點的通信總線,廣泛應用于分布式測控系統[1]。環境參數監測系統研究的主要內容是設計一種可遠程采集溫度、濕度、照度等參數,由參數采集、CAN數據收發、串行通信和上位機等部分組成,參數采集由數字溫度傳感器、濕度傳感器和光敏器件等組成[2]。CAN節點的數據收發使用獨立的SJA1000總線控制器,配合CAN接口驅動芯片PCA82C250,實現CAN節點與PC機之間的數據傳輸[3]。
1 系統總體設計
以CAN總線為通信載體的環境監控系統設計方案中,系統上位機采用資源豐富的PC機,通過CAN主節點實現對遠端CAN節點的管理。系統中的遠端CAN節點具有現場數據采集、控制及CAN 總線通信功能,通過CAN 總線與監控現場和其他測控節點傳送狀態和各種參數,并接收上位機的命令和數據來調整和改變控制狀態,CAN總線系統的組成結構如圖1所示。
2 監控節點的硬件設計
2.1 CAN總線節點的組成
從系統設計成本及抗干擾能力出發,CAN節點的控制芯片采用宏晶公司的1T單片機STC12C5A60S2,具有增強型8051內核,高速、抗干擾、低功耗和在線編程等優勢,CAN節點組成如圖2所示[4]。遠端CAN節點完成數字溫度采集、照度的模擬采集、濕度的頻率捕捉以及CAN通信,主節點還具有與上位PC機通信的功能。
2.2 CAN現場總線
CAN總線遵從ISO/OSI模型,分為3層:物理層、數據鏈路層與應用層,每一層與另一設備上相同的那一層通信。實際的通信發生在每一設備上相鄰的兩層,而設備只通過模型物理層的物理介質互連。CAN的規范定義了模型的最下面兩層:數據鏈路層和物理層,應用層協議可以由CAN用戶定義成適合特別工業領域的任何方案[5]。CAN能夠使用多種物理介質,其中最常用的是雙絞線,信號使用差分電壓傳送,兩條信號線被稱為“CAN_H”和“CAN_L”,靜態時均是2.5 V左右,此時狀態表示為邏輯“1”,也叫“隱性”。用CAN_H比CAN_L高表示邏輯“0”,稱為“顯形”,此時,通常電壓值為:CAN_H為3.5 V 、CAN_L為1.5 V。
2.3 基于SJA1000的CAN總線接口
SJA1000是應用于汽車和一般工業環境的獨立CAN總線控制器[6]。具有完成CAN通信協議所要求的全部特性,經過簡單總線連接的SJA1000完成CAN總線的物理層和數據鏈路層的所有功能,其軟硬件設計和PCA82C200的基本CAN模式 (BasicCAN)兼容,同時新增加的增強CAN模式(PeliCAN)支持CAN2.0B協議。SJA1000主要功能由接口管理邏輯、發送緩沖器、接收緩沖器、接收濾波器、位流處理器、位定時邏輯、錯誤管理邏輯等控制模塊組成。
本設計是基于SJA1000的CAN總線接口模塊,采用STC12C5A60S2單片機作為處理核心,PCA82C250作為CAN總線驅動器,整個模塊具有較好的通用性及可擴展性,電路如圖3所示。單片機現場采集的數據通過總線控制器SJA1000送給驅動器PCA82C250驅動CAN總線實現數據通信。
3 環境參數采集電路設計
環境參數采集部分需要完成溫度、濕度和照度等信號采集,由于傳感器類型和成本不同,溫度采用數字式單總線傳感器DS18B20,對于濕度和照度的采集分別采用模擬的HS1101和2DU10傳感器,通過A/D轉換為數字信號。
3.1 溫度采集
DS18B20數字溫度傳感器是DALLAS公司生產的單總線器件組成測溫系統,具有線路簡單、使用方便的特點。由于DS18B20采用的是1-Wire總線協議方式,即在一根數據線實現數據的雙向傳輸。而對單片機來說,硬件上并不支持單總線協議,因此,必須采用軟件的方法模擬單總線的協議時序來完成對DS18B20芯片的訪問,通過嚴格的通信協議保證各位數據傳輸的正確性和完整性。而每一次命令和數據的傳輸都是從主機啟動寫時序開始,如果要求單總線器件回送數據,在進行寫命令后,主機啟動讀時序完成數據接收,數據和命令的傳輸都是低位在先,接口電路如圖4(a)所示。
3.2 濕度采集
濕度采集使用HS1101傳感器,屬于電容式濕度傳感器,專利的固態聚合物結構,其工作機理是當電極間的感濕材料吸附環境中的水分時,介電常數隨之變化,等效電容C與環境中水蒸汽的關系表示為:
其中ε0是真空介電常數、εμ是感濕材料的介電常數、S是電容式傳感器有效面積、d為感濕膜厚度。在環境濕度檢測中,利用HS1101濕度傳感器的等效電容與濕度的關系組成振蕩器,將濕度與電容的關系轉化為濕度與頻率的關系,圖4(b)所示是由HS1101組成典型的555非穩態多諧振蕩器電路,HS1101作為電容變量接在555的TR與TH兩引腳上,電阻R1、R2確定后,電路的振蕩頻率主要由HS1101的等效電容即濕度大小決定,通過頻率的測量即達到檢測濕度的目的。
3.3 照度采集
照度采集使用2DU10硅光電池傳感器,其應用范圍0.4~1.1 μm,峰值波長在0.85 μm附近,適合在很寬的范圍內使用。2DU10的光照特性決定了其短路電流I與光強J(λ)成線性關系,短路電流I滿足如下關系:
其中σ(λ)為人射光的單色能流密度,η為等效轉換率,在有效范圍內可認為η不變。2DU10硅光電池傳感器將環境光強對應的短路電流經I/U轉換得到電壓信號uo如下:
輸出電壓uo經運算放大器LM358_2A放大后送入A/D轉換電路得到數字與照度的關系,其電路工作原理如圖4(c)所示。
(a)溫度采集 (b)濕度溫度
(c)照度溫度
4 系統軟件設計
4.1 SJA1000應用程序設計
CAN總線建立通信的過程包括系統上電和正常運行兩個階段。在系統上電階段,首先要對STC12C5A60S2進行初始化設置,其次需要根據模式的選擇對SJA1000的接收濾波、位定時邏輯等參數進行設置;在正常運行階段,要準備待發送的報文,同時完成報文的接收并對發生的錯誤進行處理[7]。
可見,SJA1000的應用程序被分為SJA1000初始化程序、報文發送程序和報文接收程序。
4.1.1 SJA1000初始化程序
單片機STC12C5A60S2在上電后首先運行其自身的復位程序,并在此后調用SJA1000的配置程序。配置程序在設置SJA1000的寄存器前,必須通過讀復位模式/請求標志來檢查SJA1000是否已處于復位模式,因為要寫入配置信息的寄存器僅在復位模式下進行。在復位模式下,單片機STC12C5A60S2需要配置SJA1000的控制段寄存器、模式寄存器、時鐘分頻寄存器、驗收碼寄存器和驗收屏蔽寄存器、總線定時寄存器以及輸出控制寄存器。根據分析,SJA1000的初始化程序如下:
//****SJA1000初始化************************
SJAEntryResetMode();
// sja1000進入復位模式
REG_CAN_CDR = 0x88;
// 時鐘分頻;CDR.3=1時時鐘關閉;
CDR.7=0時basic CAN;CDR.7=1時Peli CAN
SJASetBandRateStandard(ByteRate_100k);
//16M晶振,波特率設置
REG_CAN_IER = 0x01;
//.1=0--關閉發送中斷使能
REG_CAN_OCR = 0xaa;
// 配置輸出控制寄存器
REG_CAN_CMR = 0x04; //命令寄存器;釋放接收緩沖器
SJASetAccCode(0x33,0x44,0x55,0x55);
//濾波
SJASetAccMask(0xff,0xff,0xff,0xff);
//屏蔽碼設置
SJAQuitResetMode();
//退出復位模式
4.1.2 SJA1000報文發送程序
采用SJA1000的中斷請求控制報文的發送時,必須開放SJA1000的發送中斷使能和單片機STC12C5A56S2的外部中斷0,并設定SJA1000發送中斷的優先級高于啟動發送。報文的發送過程分為兩個部分,一部分由STC12C5A56S2的主程序完成,另外一部分由SJA1000的發送中斷服務程序完成,這兩部分程序的流程圖如圖5(a)、(b)所示。
4.1.3 SJA1000報文接收程序
根據CAN協議規范,報文的接收由CAN控制器SJA1000獨立完成,收到的報文放在接收緩沖器內,同時將狀態寄存器的接收緩沖器狀態標志RBS和接收中斷標志RI置位。如果報文接收被使能,單片機將接收緩沖器內的新報文讀出,并存儲到單片機的內存單元或外部數據存儲器中,然后釋放接收緩沖器。本設計采用中斷請求SJA1000的控制段狀態標志來控制,通過SJA1000中斷控制報文接收的程序流程圖如4.2 PC機監視界面設計
Visual Basic是Microsoft公司推出的Windows編程工具,亦是最經典的可視化編程語言。本設計采用VB標準模塊中的MSComm串口通信控件 [8],完成CAN節點數據接收、分析并顯示,包括通信端口選擇、串行通信參數設置、串口控制以及數據顯示區等,本系統上位PC機監視界面如圖6所示。
5 結 語
系統調試過程中按照模塊到系統的測試方法循序漸進。首先調試數據采集模塊,通過串口調試助手查看溫濕度的參數采集;然后調試CAN通信,通過數據傳輸測試CAN控制器以及CAN收發器工作狀況;最后聯調兩部分和串口通信。
在調試過程中,各節點能夠與上位PC機傳送數據,并接受來自上位機的命令,運行可靠。結果表明:系統檢測可靠、操作簡單、人機界面友好,可達到設計的目標。
參 考 文 獻
[1]陳輝, 周文超. 基于CAN總線的遠程數據分布式測控系統設計[J].電子設計工程,2012, 20(17):186-188.
[2]連衛東. 基于CAN總線的智能溫壓數據采集及實時監測系統設計[J]. 化工自動化及儀表, 2012,39(1):68-70.
[3]浣上. 基于CH341的USB-CAN適配器設計[J].現代電子技術,2012,35(18):50-52.
[4]張迎春,季茂勝.基于單片機的CAN總線系統設計[J].計算機與網絡,2012(5):52-54.
[5]饒運濤,鄒繼軍.現場總線CAN原理與應用技術[M].北京:北京航空航天大學出版社,2007.
[6]陳祖海,潘明.基于SJA1000IP核的CAN總線通信系統[J].新器件新技術,2012(7):37-40.
[7]劉濤.基于89C51和SJA1000的CAN通信方法研究[J].電腦編程技巧與維護,2011(4):87-88.
[8]周軍,尹崗.在VB中對數據庫和串口操作的實現[J].電子測量技術,2010(5):93-95.