針對在測量環境較差的場合中,要求測量系統體積小,數據處理性能高且遠程傳輸穩定的問題,提出了利用DSP 和CAN總線技術進行遠程數據采集傳輸的方案。系統通過CAN 控制器進行遠程多節點間的數據傳輸,與上位機采用DSP 的SCI串口進行通信。介紹了系統的硬件接口設計和相應的軟件設計。經測試,系統實現了高效穩定的數據傳輸處理,具有很高的實際應用價值。 1 引言 控制局域網CAN屬于現場總線范圍,是德國Bosch 公司從20 世紀80 年代初為解決現代汽車中眾多的控制與測試儀器之間的數據交換而開發的一種串行數據通信協議,它是一種多主總線,通信介質可以是雙絞線、同軸電纜或光導纖維,通信速度可達1 M bit/ s. CAN 協議的最大特點是廢除了傳統的站地址編碼,而對通信數據塊進行編碼。采用這種方法的優點可使網絡內的節點個數在理論上不受限制,數據塊的標識碼可由11 位或29 位二進制數組成,因此可以定義211或229個不同的數據塊,這種按數據塊編碼的方式,還可使不同的節點同時接收到相同的數據,這一點在分布式控制系統中非常有用。 2 系統設計 在很多野外或測量環境比較差的地方,需要采用體積小,數據處理性能高,并且遠程傳輸穩定的數據處理傳輸系統。針對這種要求,設計了多節點遠程數據采集傳輸系統。在遠端將要檢測的各個節點的數據采集送到DSP進行處理,通過DSP的CAN控制接口,將各節點數據傳輸到CAN 總線上,然后用DSP 的串行通信口與上位機進行數據交換和控制操作。 系統采用了DSP 作為微處理器,充分利用DSP 器件的體積小,功耗低,數據處理功能強大的優點;同時采用CAN 總線來傳輸數據,不僅結構簡單(只有2 根線與外部連接) ,傳輸穩定性高而且傳輸距離遠,尤其是可對網絡內各個節點通信數據塊進行獨立編碼,加大了數據接收的靈活性,擴展了網絡節點數。系統在數據采集處理同時,可以方便地與當地PC 利用DSP 的SCI串行口進行通信。基于以上優點的方案設計解決了在很多工作環境惡劣,檢測點較多的場合下的數據處理傳輸問題。 美國德州儀器(TI) 公司的DSP24xx 系列是TI 公司推出的低價格高性能的16 位定點DSP 芯片,是專為數字電機控制和其他控制應用而設計的芯片。選用了TMS320LF2407 芯片作為數據處理芯片,與上位PC 機進行數據傳輸。TMS320LF2407 自帶CAN控制器(符合CAN 總線210 協議) ,且可以通過設置內部寄存器的自測試位來實現CAN 控制器的自發自收功能,為調試CAN 通訊的下位機提供了方便。基于芯片的此功能模塊,硬件設計只要通過CAN 驅動器(電平轉換) 接到CAN 總線上,就可以與其他CAN 節點進行通訊。DSP與上位機通信部分可以通過SCI 異步串行通信口來實現。系統結構圖如圖1所示。 圖1 系統結構圖 3 硬件設計 采用的DSP 芯片自帶了CAN 控制器模塊和SCI 串行通信口,但是在系統各節點的連接和與PC 機通信上存在電平驅動轉換的問題。 CAN 驅動芯片采用TI 公司的UC5350 驅動芯片。UC5350控制器區域網轉換器專為采用CAN 通信的工業應用而設計,具有最高可達1 M bit/ s 的高速收發特性,并且至少可以連接110 個節點。圖2 為UC5350 與TMSLF2407 芯片的硬件連接圖。 需要注意的是,在CAN 傳輸網絡的兩個終端CAN 節點上,節點的CANH和CANL 兩根信號線之間一定要跨接1個120 Ω的電阻R2 ,這是為了消除傳輸中的回流干擾問題。 圖2 CAN 驅動硬件圖 DSP 與上位機的通信部分,采用TMS320LF2407 的SCI 異步串口來完成。由于TMS320LF2407 的串行口輸入輸出均為TTL電平,而IBM- PC 機的串行口是按RS - 232 - C 標準設計的,必須經過電平轉換才能實現兩者之間的通信。設計中采用了符合RS - 232 標準的驅動芯片MAX232 進行電平之間的轉換。圖3 為DSP 與PC 串口之間的接口硬件圖。 圖3 RS232 串口驅動硬件圖 4 軟件設計 4. 1 CAN模塊間通信程序的設計 TMS320LF2407 的CAN 模塊是1個16位的外設, 支持CAN2.0B 協議。CAN 模塊有6 個郵箱(MBOX0~MBOX5) ,其中2 個接收郵箱(MBOX0 , MBOX1) , 2 個發送郵箱(MBOX4 ,MBOX5) 和2 個可配置為接收或發送郵箱(MBOX2 ,MBOX3) ;有用于0 ,1 ,2 和3 號郵箱的本地屏蔽寄存器和15 個控制/ 狀態寄存器。對它的訪問分成控制/ 狀態寄存器的訪問和郵箱的RAM訪問。這些郵箱位于1個48 ×16位的RAM中,可被CPU或CAN 讀寫。 由于系統是1 個多節點的遠程數據收發系統,因此對各節點CAN模塊正確的初始化就顯得十分重要。初始化必須設置各節點中CAN模塊的通信波特率和同步跳轉寬度一致,且配置好節點模塊中的接收碼和屏蔽碼。再按照發送數據幀格式來配置郵箱ID 和信息控制寄存器。 4. 1. 1 初始化位定時器 CAN 通信中的波特率設定與系統控制狀態寄存器SCSR1、CAN 模塊中定時器BCR1 和BCR2 有關(其中BCR1 和BCR2 決定了CAN 控制器的通信波特率、同步跳轉寬度、采樣次數和重同步方式) 。在對位定時器進行初始化時,注意要先設置CAN模塊主控制寄存器MCR 中的改變配置請求位為1 ,即CCR = 1 ,并判斷全局狀態寄存器GSR 中的改變配置使能位CCE 是否為1 ,如為1 則可進行下面的初始化工作。而在完成對位定時器的初始化后需將CCR 位清零以進入正常工作模式; 在配置BCR1 和BCR2 時要按照如下公式對CAN 控制器波特率進行設定: 波特率= ICLK/ [ ( BRP + 1) + BitTime ] 式中: ICLK為CAN 控制器的時鐘頻率,即在SCSR1 中充定的DSP 的系統頻率; BRP 為波特率預分頻位,決定著CAN 控制器的時間片TQ , TQ = ( BRP + 1) / ICLK; BitTime = ( TSEG1 + 1) +( TESG2 + 1) + 1 , TSEG1 為時間段1 ,可編程為3~16個TQ時間片。TSEG2 為時間段2 ,必須小于或等于時間段1。 4. 1. 2 初始化郵箱 對郵箱初始化即是對郵箱中的有關寄存器進行初始化,主要用來設置郵箱接收或發送報文的標識符,發送的是遠程幀還是數據幀,并對發送的數據區賦初值。步驟為:禁止郵箱工作,即向郵箱方向/ 使能控制寄存器MDER 中的郵箱使能位MEn( n = 0~5) 寫0 ;設置MCR 寄存器中數據域改變請求位為1 ;配置郵箱的內容;返回正常模式;使能郵箱。 4. 1. 3 郵箱信息的接收和發送 在做完以上初始化工作后, 就可以轉入郵箱的收發程序。為了大量的數據能在系統網絡上連續傳輸, 在內存設置了2個數據緩沖區(讀和寫2 個數據區) , 分別用來存放要發送和接收的數據。用郵箱發送時, 將準備發送的數據從寫數據存儲區寫到發送郵箱的數據區, 然后使能發送郵箱并設置TCR寄存器中發送請求位為1 , 判斷發送應答信號和發送中斷標志位, 在成功發送之后再將發送中斷標志位和發送應答位清除。 圖4 數據發送流程圖 對于一個接收事件來說,由于每個CAN 節點接收數據是根據檢測網絡上數據幀的ID 與接收郵箱中初始化設定的報文的設定ID 是否相符來決定該節點是否接收此數據,因此在接收事件中,要設置接收郵箱報文的標識符及標識符相關的局部屏蔽寄存器(LAM) 。然后判斷接收信息懸掛位RMPn 或接收中斷標志位MIFn 是否置位,如果位說明郵箱成功接收信息,將接收的數據轉移到讀據緩沖區,然后復位接收中斷標志位和接收信息懸掛位。 圖5 數據接收流程圖 4. 2 SCI 串行通信程序設計 串行通信的程序分為DSP 的串行收發和PC 機的串行收發兩個。對于PC 機的串行收發采用了標準串口通訊程序。TMS320LF2407 串行通信的軟件設計可以采用查詢和中斷兩種方式,設計中采用了中斷方式接收數據,并設置軟件發送標志位來查詢發送的方式。程序分為主程序和中斷服務程序2 個部分。 在主程序中對SCI 異步串口進行初始化(包括操作模式、波特率、字符長度、奇偶校驗位、停止位位數、中斷優先級和使能控制等信息) 。主程序設置了軟件發送標志位,并不斷查詢此位,在其置位時發送數據。中斷服務程序中,當需要上傳數據時,在中斷程序或其他的子程序中置發送標志位,由主程序通過查詢該標志位來控制發送數據;對于接收數據,則在中斷服務程序中,將接收到的數據地址與相應軟件設置的地址進行比較,采用地址位喚醒模式實現與上位機通訊。 在串行通信中,時鐘和波特率的同步是十分重要的,在編程中,考慮到所用芯片的特性和實際應用需要,采用了系統時鐘為20 MHz ,通訊波特率4 800 bit/ s 與RS - 232 進行通信。根據公式: SCI 異步波特率= SYSCLK/ [ (BRR + 1) ×8] 來確定波特率選擇寄存器BRR 的值。 值得注意的是在串行通信設置中,串行通信控制寄存器SCICTL1 的SLEEP 位(上電時為1) 設置很重要,SLEEP 位為SCI休眠位,為1 時使能休眠方式,它的正確設置可以使得通信過程正確的響應中斷,從而轉移到相應的服務程序中。因此必須正確設置使得程序只有在檢測到地址字節時被中斷。而在中斷程序中比較地址:若相同,則軟件清除SLEEP 位,確保在收到每個數據字節都可產生中斷;若不相同,則保持SLEEP 為1 以接收下一個地址。由于系統為多節點的通信,因此采用了地址位喚醒模式來正確控制各節點間的數據收發。在調試程序中為每個節點設置了2 個標識地址(如00H 和FFH) ,當收到00H時,DSP 發送數據,當收到FFH 時,DSP 接收數據。圖6、圖7 分別為串行主程序和中斷服務程序的流程圖。 圖6 串行通信主程序流程圖 圖7 中斷服務程序的流程圖 5 結束語 系統解決了野外作業時要求高穩定性的遠程數據傳輸問題,可以在環境惡劣的情況下,多點采集數據,并將采集到的數 據及時處理傳輸到遠端上位機進行分析控制。在實際的測試中,用此系統很好地完成了數據的采集傳輸工作,由此得出此系統可以穩定的進行工作。 |