CANopen應(yīng)用以及嵌入式網(wǎng)絡(luò)多接口問題
——
近來,許多嵌入式應(yīng)用都涉及到嵌入式網(wǎng)絡(luò)問題,應(yīng)用中使用了多個微控制器,它們之間相互通信。這樣做是因為系統(tǒng)的控制是分布式的,或者是因為遠(yuǎn)程傳感器和執(zhí)行器需要連接到主控制單元。
最近的趨勢之一是在一個系統(tǒng)內(nèi)使用多個嵌入式網(wǎng)絡(luò)。使用多個網(wǎng)絡(luò)有助于使單個網(wǎng)絡(luò)上的負(fù)載保持較低和更可預(yù)測。使用多個網(wǎng)絡(luò)的另一個需求是當(dāng)需要把在嵌入式網(wǎng)絡(luò)上采集的數(shù)據(jù)傳送到更高控制層或統(tǒng)計數(shù)據(jù)采集層時,經(jīng)常負(fù)責(zé)將數(shù)據(jù)向更高控制層報告的網(wǎng)絡(luò)具有一些與傳感器和執(zhí)行機構(gòu)上的網(wǎng)絡(luò)完全不同的要求,因而可能采用完全不同的技術(shù)和網(wǎng)絡(luò)協(xié)議棧。為了實現(xiàn)這兩種網(wǎng)絡(luò)之間的接口,就需要采用某種橋接或網(wǎng)關(guān)技術(shù)。
協(xié)議轉(zhuǎn)換
用于嵌入式網(wǎng)絡(luò)的網(wǎng)橋和網(wǎng)關(guān)不僅要能夠接收和轉(zhuǎn)發(fā)信息,通常還需要執(zhí)行協(xié)議轉(zhuǎn)換工作。CAN總線上使用的協(xié)議可能是DeviceNet或CANopen,而以太網(wǎng)上使用的協(xié)議則可能為TCP/IP。為了能夠?qū)?shù)據(jù)從其中一個網(wǎng)絡(luò)向其他網(wǎng)絡(luò)傳遞,可能需要執(zhí)行進一步的數(shù)據(jù)處理,一個網(wǎng)關(guān)不僅需要實現(xiàn)所有協(xié)議棧,而且還需要能夠進行處理。另外還需要一些詳細(xì)的配置,以便讓網(wǎng)關(guān)知道要把哪個網(wǎng)絡(luò)上的哪個數(shù)據(jù)轉(zhuǎn)發(fā)到另外的某一網(wǎng)絡(luò)上。
轉(zhuǎn)發(fā)器、網(wǎng)橋和網(wǎng)關(guān)
當(dāng)需要在不同網(wǎng)絡(luò)架構(gòu)間進行接口時,有多種多樣可實現(xiàn)這些網(wǎng)絡(luò)互連的方法,最常用的就是轉(zhuǎn)發(fā)器、網(wǎng)橋和網(wǎng)關(guān)。就硬件和軟件要求而言,包括開發(fā)和配置在內(nèi),轉(zhuǎn)發(fā)器、網(wǎng)橋和網(wǎng)關(guān)之間在復(fù)雜度上存在很大差別。轉(zhuǎn)發(fā)器不需要微控制器和軟件就可以開發(fā),網(wǎng)橋則需要有一個中等性能的微控制器/微處理器,并運行熟悉選定網(wǎng)絡(luò)協(xié)議特性的軟件。而網(wǎng)關(guān)則需要有一個高端微控制器/微處理器,并運行功能全面的軟件包,它需要能夠理解與之連接的“所有”網(wǎng)絡(luò)協(xié)議和“所有”傳送數(shù)據(jù)的詳盡配置信息。只有擁有這些信息,網(wǎng)關(guān)才能做出決策,決定將哪個數(shù)據(jù)如何轉(zhuǎn)發(fā)以及發(fā)往何處。
網(wǎng)橋和網(wǎng)關(guān)對微控制器的要求
對網(wǎng)橋或網(wǎng)關(guān)中使用微控制器的第一個要求是要能夠訪問需要進行互連的嵌入式網(wǎng)絡(luò)。所需的這些通信接口越是集成在片上,網(wǎng)橋或網(wǎng)關(guān)的實現(xiàn)就會更簡單和更經(jīng)濟。添加外圍元器件來處理這些通信接口通常要花更多成本(增加芯片數(shù)量和PCB板空間)。
其次,微控制器需要具備足夠的性能來處理這些接口上惡劣情況下的通信負(fù)荷,以保證沒有信息丟失。在此,需要著重指出的是,不僅要考慮總吞吐率,還要考慮最差情況延遲,這種情況可能會在中斷服務(wù)程序從接收緩沖區(qū)中檢索數(shù)據(jù)前發(fā)生。
最后,微控制器需要能夠訪問一定容量的RAM和非易失性存儲器。RAM用于在將數(shù)據(jù)轉(zhuǎn)發(fā)到其他網(wǎng)絡(luò)前對數(shù)據(jù)進行緩沖/暫存以便處理。非易失性存儲器(如EEPROM或Flash)用于存儲配置信息,這些信息可決定將來自哪個網(wǎng)絡(luò)的哪個數(shù)據(jù),通過什么方式轉(zhuǎn)發(fā)到其他哪個網(wǎng)絡(luò)。一般而言,網(wǎng)關(guān)需要的RAM比網(wǎng)橋要多得多,網(wǎng)橋需要的RAM比轉(zhuǎn)發(fā)器要多得多。
至于所需的性能要求,一般的流行通信接口可分為三組:
◆ 面向字節(jié)通信(RS-485、LIN、I2C)
可通過低性能微控制器來處理,包括許多8位衍生系列控制器。
◆ 面向消息、小量、高速率(CAN)
如果要處理兩個接口,一般至少需要使用一個中等性能的16位微控制器。如果要處理三個或更多接口,則需要使用一個32位微控制器。
◆ 面向消息、大量、中等速率(以太網(wǎng))
要實現(xiàn)網(wǎng)橋或網(wǎng)關(guān)的高效處理,一般需要使用一個32位微控制器。
使用微控制器示例
以飛利浦公司的LPC2000系列微控制器為例,LPC2000是基于ARM7的32位高性能微控制器,具有多種通信接口。LPC2000系列產(chǎn)品目前最多具有4個CAN接口、2個UART和2個I2C接口。未來還將提供具有附加以太網(wǎng)和USB接口的衍生系列。32位性能(頻率最高可達(dá)60MHz)與眾多通信接口的結(jié)合,使LPC2000適合許多橋接和網(wǎng)關(guān)應(yīng)用。
ESAcademy的測試表明,LPC2000可在不到5毫秒的時間內(nèi)處理一條由高層協(xié)議(如CANopen)使用的CAN消息,這種處理包含了有關(guān)該數(shù)據(jù)的所有高層協(xié)議解釋。作為直接對比,一個中等性能的16位微控制器執(zhí)行同一任務(wù)需要約160毫秒。
對于使用所有4個CAN接口、通信速率為1Mbps、且總線負(fù)荷為100%時的最差情況,LPC2000平均可每12.5毫秒處理一個消息(4個CAN接口中每個接口每50毫秒一個消息),從而使CPU負(fù)荷低于50%。
采用公共協(xié)議縮短開發(fā)時間
多種網(wǎng)絡(luò)技術(shù)及協(xié)議之間的嵌入式網(wǎng)關(guān)的開發(fā)需要更高端的處理能力和進行大量的軟件開發(fā),每種網(wǎng)絡(luò)協(xié)議的實現(xiàn)必須具備將消息從一個網(wǎng)絡(luò)協(xié)議轉(zhuǎn)發(fā)到其他網(wǎng)絡(luò)協(xié)議的方法。然而,如果在不同網(wǎng)絡(luò)技術(shù)中采用一種公共協(xié)議,則可以大大減少此類網(wǎng)橋和網(wǎng)關(guān)的開發(fā)工作。
公共協(xié)議CANopen頗受歡迎
公共協(xié)議的一個例子就是CANopen,它不僅可以在CAN上運行,而且可以在很多的各種串行總線以及以太網(wǎng)上運行,這極大地簡化了網(wǎng)橋或網(wǎng)關(guān)的開發(fā),具體表現(xiàn)在多個方面:首先,由于多個接口采用同一協(xié)議,因此協(xié)議棧的開發(fā)被大大簡化,一些代碼程序和獨立于硬件的功能可以共享。其次,由于交換的數(shù)據(jù)仍然處于同一協(xié)議內(nèi),因此網(wǎng)橋或網(wǎng)關(guān)的配置得以簡化。它不需要先進行完全轉(zhuǎn)換然后再重新提交給某個網(wǎng)絡(luò)協(xié)議棧,從而能夠獲得較快的轉(zhuǎn)發(fā)機制。
需要指出的是,上述網(wǎng)橋或網(wǎng)關(guān)的開發(fā)絕非“只是容易了一點”,而是整個復(fù)雜度被大大簡化。例如,假定一個網(wǎng)關(guān)需要處理三種不同的網(wǎng)絡(luò)技術(shù):RS-485傳統(tǒng)網(wǎng)絡(luò)、CAN及以太網(wǎng)。如果所有三種網(wǎng)絡(luò)采用不同的網(wǎng)絡(luò)協(xié)議,那么這些協(xié)議棧都必須實現(xiàn),另外還必須創(chuàng)建并維護數(shù)據(jù)轉(zhuǎn)發(fā)表和/或算法。
但如果所有三種網(wǎng)絡(luò)技術(shù)采用一種公共協(xié)議,那么協(xié)議棧的開發(fā)時間將只占到開發(fā)3種不同協(xié)議時開發(fā)時間的30%~50%。此外,數(shù)據(jù)轉(zhuǎn)發(fā)算法也將只占原來開發(fā)時間的30%~50%,因為轉(zhuǎn)發(fā)數(shù)據(jù)是在同一協(xié)議內(nèi)進行的,這比將數(shù)據(jù)重新打包成不同協(xié)議要簡單得多。
CANopen衍生協(xié)議已應(yīng)用在多種串行總線(MicroMessaging)及以太網(wǎng)(Ethernet-Powerlink)上,并獲得很大成功,使CANopen成為公共網(wǎng)絡(luò)協(xié)議首選協(xié)議的理由還有:
◆ 其在標(biāo)準(zhǔn)可獲得性方面的開放性(規(guī)范可從CiA-CAN自動化用戶及制造商組織獲得)
◆ 可針對深度嵌入式應(yīng)用進行定制的開放性(可針對應(yīng)用要求進行優(yōu)化)
◆ 最小形狀因子、最小實現(xiàn)可使用一些最小的8位微控制器
◆ 應(yīng)用程序獨立性(不只限定于某個特定的、有限的用途)
◆ 數(shù)量眾多的開發(fā)工具提供商,如配置工具、監(jiān)測器、分析儀、庫、源代碼和現(xiàn)成產(chǎn)品。
總之,CANopen非常適合用于多種通信技術(shù),只要這些技術(shù)是提供某些基本的、公共的要求。
使用嵌入式網(wǎng)絡(luò)的應(yīng)用多種多樣,汽車、工業(yè)或機械控制之類的應(yīng)用使用嵌入式網(wǎng)絡(luò)已經(jīng)有多年了。如今,幾乎任何包含執(zhí)行機構(gòu)(如電驅(qū)動/電機、水力或氣動機械)的機械均使用了嵌入式網(wǎng)絡(luò),而微控制器的不斷升級換代對嵌入式網(wǎng)絡(luò)橋接技術(shù)的發(fā)展也起到了關(guān)鍵的推動作用。
評論