CAN總線的數(shù)據(jù)采集與處理系統(tǒng)的設計
現(xiàn)場總線及其應用技術日益成為國際自動控制領域關注的一個焦點。CAN總線是目前公認的幾種最有前途的現(xiàn)場總線之一。通信介質(zhì)可以是雙絞線、同軸電纜和光纖,其通信速率可達1mbps。can國際標準的制定更加推動了它的發(fā)展和應用,基于can總線的工業(yè)應用系統(tǒng)業(yè)大量涌現(xiàn)。其主要應用領域包括大型儀器設備、傳感器技術及數(shù)據(jù)采集系統(tǒng)和工業(yè)現(xiàn)場監(jiān)控系統(tǒng)等[1][2]。本文結(jié)合can總線的特點,介紹了基于can總線的數(shù)據(jù)采集與處理的一種設計方法。
本文引用地址:http://m.butianyuan.cn/article/201612/329423.htm2 系統(tǒng)設計
2.1 can系統(tǒng)概要
圖1 結(jié)構簡圖
本系統(tǒng)由兩個cpu通過雙口 ram相互連接組成,一片cpu(p87c591)負責can信號的發(fā)送與接收,另一片cpu(p89c58ba)負責 rs-485 信號的發(fā)送與接收。設計中通訊控制器選用了集成有can控制器的p87c591單片機。它自帶的can控制器完全具有sja1000的功能,可完成can協(xié)議中規(guī)定的所有數(shù)據(jù)鏈路層和物理層的功能。且p87c591自帶了15個中斷源和看門狗定時器(wdt),應用十分方便。系統(tǒng)結(jié)構簡圖如圖1所示。圖中各部分所完成的主要功能如下:
(1) cpu-1:該芯片帶有can接口,故可與下位機進行can通訊。通過can總線發(fā)送上位機的設定信息給下位機,同時接收下位機提供的數(shù)據(jù)信息,將其存入雙口ram中,以供cpu-2來查詢。
(2) cpu-2:該芯片連接有max491和max485 芯片,故可與外部進行422或485通訊,上位機的信息通過485通訊讀入cpu-2之中,cpu-2再將其存入雙口ram之中,以供cpu-1來查詢,cpu-1再通過can總線將此設定信息傳送給上位機。反之,下位機的所有已存入雙口ram的檢測值信息,也是通過該單片機的讀取,并通過485通訊,將所有顯示信息在人機界面上顯示。
(3) 雙口ram:雙口ram用于存儲系統(tǒng)的設置信息和狀態(tài)信息,完成各種信息存儲與交換。選用存儲容量為16k的idt7006系列,并采用后備電池支持,保證掉電時存儲的信息不丟失。雙口ram按存儲內(nèi)容不同,分為設置區(qū)、狀態(tài)區(qū)和預留區(qū)。設置區(qū)用來存儲上位機的信息;狀態(tài)區(qū)用來存儲從下位機收集的系統(tǒng)狀態(tài)信息;預留區(qū)則作為預留備用。
2.2 p87c591單片機概要
在系統(tǒng)中采用philips公司生產(chǎn)的p87c591單片機,該單片機是一個8 位高性能微控制器具有片內(nèi)can控制器[3],大大簡化了硬件電路的設計,提高了can接口的穩(wěn)定性。p87c591 采用了強大的80c51指令集,并集成了sja1000 can控制器的pelican功能。主要有以下功能特點:can2.0b控制器,支持11位標準標識符和29位擴展標識符,4個可獨立配置的驗收濾波器,都可“在運行中改變”。can控制器的發(fā)送緩沖區(qū)能夠保存一個完整的can信息幀(標準或擴展幀格式),只要通過cpu啟動發(fā)送,信息字節(jié)就從發(fā)送緩沖區(qū)傳輸?shù)絚an內(nèi)核模塊完成發(fā)送。can接口包含5個實現(xiàn)cpu與can控制器連接的特殊功能寄存器,對重要can寄存器的訪問通過快速自動增加的尋址和對特殊功能寄存器的位尋址實現(xiàn)。接收一個信息時,can內(nèi)核模塊將串行位流轉(zhuǎn)換成并行數(shù)據(jù)輸入到驗收濾波器,通過該可編程濾波器,p87c591可以確定實際接收到的信息。
p87c591連接的can節(jié)點電路設計比較簡單,所需的外部元件只是一個晶振加兩個電容驅(qū)動片內(nèi)震蕩器、一個連接到復位腳的電阻、電容。使用片內(nèi)上電復位電路以及一個收發(fā)器將p87c591連接到can總線上。如圖2所示。
圖2 can 節(jié)點電路
2.3 can總線p87c591單片機側(cè)的主要任務
在整個系統(tǒng)中591起到數(shù)據(jù)傳輸和處理的作用,通過can總線接收數(shù)據(jù)采集節(jié)點接收來的信息,整理后按協(xié)議存儲到雙口ram中。其主要任務有以下兩點:其一采集下位機的數(shù)據(jù)信息;其二將采集來的信息按照協(xié)議的約定存儲到雙口ram中的固定的位置,便于58查詢顯示。
3 can總線軟件設計
can總線軟件設計主要包括兩大部分:通信網(wǎng)絡的應用層協(xié)議和功能實現(xiàn)的流程和編碼。can通信軟件主要由初始化、接收處理、發(fā)送處理及中斷處理等組成。本文重點介紹發(fā)送、接收處理子程序。
3.1 發(fā)送程序
發(fā)送子程序負責節(jié)點報文的發(fā)送。信息從can控制器發(fā)送到can總線是由can控制器自動完成的。其流程圖如圖3所示。
圖3 查詢發(fā)送流程圖
3.2 接收程序
接收子程序負責接收節(jié)點報文的接收。信息從can總線到can緩沖區(qū)是由can控制器自動完成的,接收程序只需從接收緩沖區(qū)讀取要接收的信息。其流程圖如圖4所示。
圖4 中斷接收流程圖
4 問題討論
本設計的硬件電路中, 采用雙cpu系統(tǒng),即用一個cpu完成測控功能,另一個cpu完成系統(tǒng)聯(lián)網(wǎng)和接口通信功能。cpu間的通信可以采用串口、并口等方式,但它們共同的缺點是操作復雜、速度慢。因此,采用雙口ram方式在兩個cpu系統(tǒng)間交換數(shù)據(jù)是一個不錯的選擇。但雙口ram有時會發(fā)生共享沖突問題。
一般雙口ram都提供了兩個完全獨立的端口,每個端口都有自己的控制線、地址線和數(shù)據(jù)線,cpu對雙口ram端口的操作等效于對它對外部ram進行操作。雙口ram在使用上要注意的問題是如何避免兩端cpu對同一ram單元的爭用,雙口ram可提供三種防沖突方式:插入等待狀態(tài)的防沖突方式;信號燈防沖突方式;中斷防沖突方式。本設計中雙口ram主要用于兩個cpu之間交換數(shù)據(jù),由于交換的實時性很難用軟件來保證,所以采用中斷方式解決沖突問題。
雙口ram被劃分為兩個區(qū)域,其中數(shù)據(jù)接收緩沖區(qū)是通信cpu插件向其發(fā)送命令和數(shù)據(jù)的區(qū)域;數(shù)據(jù)發(fā)送緩沖區(qū)是它向通信cpu插件發(fā)送數(shù)據(jù)的區(qū)域。為了保證數(shù)據(jù)交換的實時性和有效性,可采用雙口ram的中斷方式通知對方,信號intl和intr可作為cpu的一個中斷輸入。數(shù)據(jù)交換時,先將數(shù)據(jù)放入對應的雙口ram存儲區(qū),然后寫入對方信箱,以通知對方有數(shù)據(jù)發(fā)送;接收方在相應的中斷中對數(shù)據(jù)進行處理,同時讀自己的信箱以清除中斷信號,然后再寫入對方信箱以告知其數(shù)據(jù)已處理完畢。
5 結(jié)束語
所設計的系統(tǒng)可用于電力參數(shù)監(jiān)控和其他工業(yè)自動化場合。利用can總線結(jié)構靈活簡單,可靠性高,適應性好,易于維護等優(yōu)點。通過rs485/422和can 總線轉(zhuǎn)換器實現(xiàn)現(xiàn)場智能設備與上位機間或其他監(jiān)控裝置的數(shù)據(jù)交換,利用上位機強大的數(shù)據(jù)處理能力,實現(xiàn)事件記錄、數(shù)據(jù)處理等功能。因此該系統(tǒng)用于工業(yè)領域性價比較高。
評論