CAN总线技术在船舶监控系统的应用
生活随笔
收集整理的這篇文章主要介紹了
CAN总线技术在船舶监控系统的应用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
AN(Controller Area Network),即控制局域網,是一種具有很高可靠性、支持分布式和實時控制的串行通信網絡。CAN為多主方式工作,網絡上任意節點均可在任意時刻主動地向網絡上其它節點發送信息,而不分主從,且無需站地址等節點信息,通訊靈活。CAN協議模型結構只有3層,即只取OSI底層的物理層、數據鏈路層和應用層。CAN的最大特點是可靠性高,其節點在錯誤嚴重的情況下具有自動關閉輸出功能,以使總線上其它操作不受影響。CAN的直接通信距離最遠可達10km(速率在5kbps以下),通信速率最高可達1Mbps(此時通信距離最長為40m)。其通信介質可為雙絞線、同軸電纜或光纖,選擇靈活。CAN上的節點數主要取決于總線驅動電路,目前可達110個。在標準幀報文標識符有11位,而在擴展幀的報文標識符(29位)的個數幾乎不受限制。?
?
1 CAN總線在船舶的應用?
?
CAN在船舶中的應用始于20世紀90年代初。1994年德國MTU公司成功地研制了基于CAN的MCS-51監控系統,開創了CAN網絡船舶系統應用的新紀元。此后,CAN網絡被廣泛地用于船舶的遠程控制、巡回檢測、電站監控以及火災報警系統中。CAN網絡在船舶控制系統中的成功應用為解決船舶設備級(傳感器、執行器、控制模塊)的互聯網絡通信問題提供了新的數據傳輸協議,并由CAN控制器硬件完成協議的功能和服務。在CAN網絡中,通過一根可同時傳輸電源和數據信號的總線可將所有滿足CAN協議的設備掛接,并提供點對點、一點對多點和廣播式三種通信方式。針對CAN在船舶中的日益廣泛應用,美國國家海洋電子協會(NMEA,national marine electrons assciation)擴展了原有的NMEA0813協議,形成了新的NMEA2000協議,為CAN網絡在船舶中應用制定了統一的標準和接口協議。?
?
2 監控系統的基本結構?
?
在一個監控系統中,測量、控制和執行單元是必不可少的。同時,在一個基本的通信網絡中,網絡硬件和協議控制器也是必需的。典型的基于CAN的監控系統結構設計如圖1所示。?
在圖1中,基于CAN的監控系統包括以下幾個部分:?
(1)上位PC機收集總線上傳輸的所有信息,對系統的運行狀態進行監控,檢測所有設備的運行參數的調整及越限時的聲光報警等功能。并通過CAN接口卡接入網絡之中。?
(2)智能測控單元(下位機系統)包括智能傳感器、智能執行器和智能控制器等,它們被安裝在測控現場,用于直接獲取現場設備的參數或者執行相應操作和功能。智能測控單元和傳統設備相比,區別在于它們本身帶有支持CAN總線通信協議的CAN控制器模塊。因而,單元3不僅可與上位機系統通信,同時也可根據系統設計需要從單元1接收數據或者向單元;2發送數據,實現現場底層設備之間的通信,這點對于某些系統來說是非常重要的。?
2.1智能測控單元CAN通訊接口設計?
智能測控單元主要以Cygnal公司出品的C8051F040單片機為核心構成。該單片機是完全集成的混合信號系統級芯片(SOC),具有與MCS-51完全兼容的指令內核。內部采用流水線結構,機器周期由標準的12個系統周期將為1個系統周期,峰值性能達到25MIPS。此外,C8051F040的內能還集成有CAN控制器、高速A/D轉換器等,可以簡化系統設計。C8051F040集成的是CAN控制器,要使CAN總線得以運行,還需在單片機上接CAN收發器,進行電氣轉換,將邏輯信號轉換為平衡差分碼。常用的CAN收發器為PHILIPS公司出品的PCA82C250、高速TJA1050等。這里選用的是PCA82C250,它可以提供對總線的差動發送和接收功能,與ISO11898標準完全兼容,有三種不同的工作方式,即高速(最高可達1Mbps)、斜率控制和待機,可根據實際情況選擇。?
C8051F040中的CAN的工作位速率可達1Mbps,實際速率可能受CAN總線上所選擇的傳輸數據的物理層的限制。CAN處理器有32個消息對象,可以被配置為發送或接收數據。輸入數據、消息對象及其標識掩碼存儲在CAN消息RAM中。所有數據發送和接收過濾的協議處理全部由CAN控制器完成,不需要CIP-51干預,這就使得用于CAN通信對CPU干涉最小。?
該CAN控制器是可實現的Bosch全功能CAN模塊,完全符合CAN規范2.0A和2.0B。CAN控制器的原理框圖如圖2所示。CAN核提供移位輸出和輸入(CANTX和CANRX)、消息的串/并轉換及其它協議相關的任務(如數據發送和接收過濾)。消息RAM可存儲32個可以在CAN網絡上接收發送的消息對象。CAN寄存器和消息處理器為CAN寄存器和消息處理器為CAN控制器和CIP-51之間的數據傳送和狀態通知提供接口。?
CIP-51可以通過特殊寄存器直接或間接訪問CAN控制器中的CAN控制器寄存器(CAN0CN)、CAN測試寄存器(CAN0TST)和CAN狀態寄存器(CAN0STA)。其它寄存器必須通過間接索引法訪問。?
2.1.1CAN控制器外圍硬件電路實現?
為了進一步提高系統的抗干擾能力,在CAN控制器引腳CANTX、CANRX和收發器PCA82C250之間并不是直接相連,而是通過高速光耦6N173構成的隔離電路后再與PCA82C250相連,這樣就可以很好的實現總線上各節點的電氣隔離。此通信物理層電路圖如圖3所示。?
在PCA82C250與CAN總線接口部分也采用了一些安全和抗干擾措施。PCA82C250的CANH和CANL引腳各自通過一個5Ω的電阻與CAN總線連接,電阻可以起到一定的限流作用,從而保護PCA82C250免受過流的沖擊。在CANH和CANL與地之間各自接一個30pF的小電容,可以起到濾除總線上的高頻干擾和防電磁輻射的能力。另外,在CANH和CANL之間并聯一個15V的瞬態電壓抑制二極管(TVS),可以保護PCA82C250在瞬間高電壓情況下而不受損壞。PCA82C250的RS引腳上接有一個下拉電阻,電阻的大小可根據總線速率適當的調整,其值一般在16kΩ-140KΩ之間,圖3中選用47KΩ。?
C8051F040工作電壓為2.7V~3.6V,其所有I/O口允許5V(極限值5.8V)輸入,但是I/O口輸出電平為VDD,而PCA82C250為5V系統,為了能夠驅動其工作,在CANTX引腳上接一上拉電阻,其值為4.7KΩ。?
2.1.2CAN通信軟件實現?
下位機CAN通信部分主要完成的任務是:將檢測到的數據傳送給上位機或其它下位機節點。同時,上位機可以對下位機的相關參數進行設置。?
由以上可知,CAN節點通信主要包括系統初始化、發送程序、接收程序等。在本例中,系統軟件采用結構化程序設計方案,使其具有較好的模塊性和可移植性。?
2.1.3系統初始化?
初始化程序主要完成對所有報文對象的初始化(一般將所有值置零),對CAN控制器寄存器(CAN0CN)、位定時寄存器(BITREG)進行設置,還要對發送報文對象和接收報文對象分別進行初始化。其中,位定時寄存器的設置較為復雜,這里使用外部晶振為11.0592MHz,CAN通信速率為1Mbps。?
(1)初始化CAN控制器的一般步驟為:將SFRPAGE寄存器設置為CAN0_PAGE;將CAN0CN寄存器中的INIT和CCE位設置為1;設置位定時寄存器和BRP擴展寄存器中的時序參數;初始化每個消息對象或將其MsgVal為設置為0(無效);將INIT清零。?
(2)初始化發送對象的過程包括設置發送消息對象的命令屏蔽寄存器;設置仲裁寄存器;消息發送方向;指明消息長度和幀類型;選擇發送消息號。部分代碼如下:?
void init_msg_object_TX (char MsgNum)?
{?
SFRPAGE=CAN0_PAGE;?
CAN0ADR=IF1CMDMSK; // 指向命令掩碼寄存器1?
CAN0DAT=0x00B2;// 設為寫,除了標識掩碼和數據位?
CAN0ADR=IF1ARB1; // 指向仲裁寄存器?
CAN0DAT=0x0000;// 將仲裁ID設為最高優先級?
CAN0DAT=0xA000;// 設置消息有效位,沒有擴展ID,方向為寫?
CAN0DAT=0x0088; // 數據長度為8,數據幀?
CAN0ADR=IF1CMDRQST;// 指向命令請求寄存器?
CAN0DAT=MsgNum;// 寫消息對象號,即對哪個消息對象進行操作?
// 3~6個CAN時鐘周期后,IF寄存器中的內容將被移到CAN存儲器的消息對象中?
}?
初始化接收對象與發送對象類似,只需要將消息發送方向改為接收即可。?
(3)CAN啟動主要包括設置位定時寄存器;設置消息對象的命令屏蔽寄存器;設置CAN允許Init位;開中斷即可。代碼如下:?
void start_CAN (void)?
{?
SFRPAGE=CAN0_PAGE;?
CAN0CN |=0x41; // 使能CCE和INIT位?
CAN0ADR=BITREG; // 指向位定時寄存器?
CAN0DAT=0x2640; // 指向命令掩碼寄存器1?
CAN0ADR=IF1CMDMSK;?
//設置CAN RAM為寫,寫數據字節,置位TXrqst/NewDat,Clr IntPnd?
CAN0DAT=0x0087;?
CAN0ADR=IF2CMDMSK;// 指向命令掩碼寄存器2?
CAN0DATL=0x1F;//設置接收:讀CAN RAM,讀數據字節?
CAN0CN |=0x06; // 全局初始化IE和SIE?
CAN0CN &=~0x41; // 清除CCE和INIT位?
}?
(4)數據發送和接收。配置好以上信息,C8051F040就可以接收到CAN總線上的數據幀,執行相應命令或進行相應的數據處理,將反饋信息送入CAN數據寄存器,告知CAN發送消息號就可以將反饋數據傳送到上位機處理。發送程序的部分代碼如下:?
void CAN_transmit (char MsgNum)?
{?
SFRPAGE=CAN0_PAGE;?
CAN0ADR=IF1DATA1;?
CAN0DAT=Txbuffer;?
CAN0ADR=IF1CMDRQST;?
CAN0DATL=MsgNum;?
}?
?
3 結束語?
?
?
1 CAN總線在船舶的應用?
?
CAN在船舶中的應用始于20世紀90年代初。1994年德國MTU公司成功地研制了基于CAN的MCS-51監控系統,開創了CAN網絡船舶系統應用的新紀元。此后,CAN網絡被廣泛地用于船舶的遠程控制、巡回檢測、電站監控以及火災報警系統中。CAN網絡在船舶控制系統中的成功應用為解決船舶設備級(傳感器、執行器、控制模塊)的互聯網絡通信問題提供了新的數據傳輸協議,并由CAN控制器硬件完成協議的功能和服務。在CAN網絡中,通過一根可同時傳輸電源和數據信號的總線可將所有滿足CAN協議的設備掛接,并提供點對點、一點對多點和廣播式三種通信方式。針對CAN在船舶中的日益廣泛應用,美國國家海洋電子協會(NMEA,national marine electrons assciation)擴展了原有的NMEA0813協議,形成了新的NMEA2000協議,為CAN網絡在船舶中應用制定了統一的標準和接口協議。?
?
2 監控系統的基本結構?
?
在一個監控系統中,測量、控制和執行單元是必不可少的。同時,在一個基本的通信網絡中,網絡硬件和協議控制器也是必需的。典型的基于CAN的監控系統結構設計如圖1所示。?
在圖1中,基于CAN的監控系統包括以下幾個部分:?
(1)上位PC機收集總線上傳輸的所有信息,對系統的運行狀態進行監控,檢測所有設備的運行參數的調整及越限時的聲光報警等功能。并通過CAN接口卡接入網絡之中。?
(2)智能測控單元(下位機系統)包括智能傳感器、智能執行器和智能控制器等,它們被安裝在測控現場,用于直接獲取現場設備的參數或者執行相應操作和功能。智能測控單元和傳統設備相比,區別在于它們本身帶有支持CAN總線通信協議的CAN控制器模塊。因而,單元3不僅可與上位機系統通信,同時也可根據系統設計需要從單元1接收數據或者向單元;2發送數據,實現現場底層設備之間的通信,這點對于某些系統來說是非常重要的。?
2.1智能測控單元CAN通訊接口設計?
智能測控單元主要以Cygnal公司出品的C8051F040單片機為核心構成。該單片機是完全集成的混合信號系統級芯片(SOC),具有與MCS-51完全兼容的指令內核。內部采用流水線結構,機器周期由標準的12個系統周期將為1個系統周期,峰值性能達到25MIPS。此外,C8051F040的內能還集成有CAN控制器、高速A/D轉換器等,可以簡化系統設計。C8051F040集成的是CAN控制器,要使CAN總線得以運行,還需在單片機上接CAN收發器,進行電氣轉換,將邏輯信號轉換為平衡差分碼。常用的CAN收發器為PHILIPS公司出品的PCA82C250、高速TJA1050等。這里選用的是PCA82C250,它可以提供對總線的差動發送和接收功能,與ISO11898標準完全兼容,有三種不同的工作方式,即高速(最高可達1Mbps)、斜率控制和待機,可根據實際情況選擇。?
C8051F040中的CAN的工作位速率可達1Mbps,實際速率可能受CAN總線上所選擇的傳輸數據的物理層的限制。CAN處理器有32個消息對象,可以被配置為發送或接收數據。輸入數據、消息對象及其標識掩碼存儲在CAN消息RAM中。所有數據發送和接收過濾的協議處理全部由CAN控制器完成,不需要CIP-51干預,這就使得用于CAN通信對CPU干涉最小。?
該CAN控制器是可實現的Bosch全功能CAN模塊,完全符合CAN規范2.0A和2.0B。CAN控制器的原理框圖如圖2所示。CAN核提供移位輸出和輸入(CANTX和CANRX)、消息的串/并轉換及其它協議相關的任務(如數據發送和接收過濾)。消息RAM可存儲32個可以在CAN網絡上接收發送的消息對象。CAN寄存器和消息處理器為CAN寄存器和消息處理器為CAN控制器和CIP-51之間的數據傳送和狀態通知提供接口。?
CIP-51可以通過特殊寄存器直接或間接訪問CAN控制器中的CAN控制器寄存器(CAN0CN)、CAN測試寄存器(CAN0TST)和CAN狀態寄存器(CAN0STA)。其它寄存器必須通過間接索引法訪問。?
2.1.1CAN控制器外圍硬件電路實現?
為了進一步提高系統的抗干擾能力,在CAN控制器引腳CANTX、CANRX和收發器PCA82C250之間并不是直接相連,而是通過高速光耦6N173構成的隔離電路后再與PCA82C250相連,這樣就可以很好的實現總線上各節點的電氣隔離。此通信物理層電路圖如圖3所示。?
在PCA82C250與CAN總線接口部分也采用了一些安全和抗干擾措施。PCA82C250的CANH和CANL引腳各自通過一個5Ω的電阻與CAN總線連接,電阻可以起到一定的限流作用,從而保護PCA82C250免受過流的沖擊。在CANH和CANL與地之間各自接一個30pF的小電容,可以起到濾除總線上的高頻干擾和防電磁輻射的能力。另外,在CANH和CANL之間并聯一個15V的瞬態電壓抑制二極管(TVS),可以保護PCA82C250在瞬間高電壓情況下而不受損壞。PCA82C250的RS引腳上接有一個下拉電阻,電阻的大小可根據總線速率適當的調整,其值一般在16kΩ-140KΩ之間,圖3中選用47KΩ。?
C8051F040工作電壓為2.7V~3.6V,其所有I/O口允許5V(極限值5.8V)輸入,但是I/O口輸出電平為VDD,而PCA82C250為5V系統,為了能夠驅動其工作,在CANTX引腳上接一上拉電阻,其值為4.7KΩ。?
2.1.2CAN通信軟件實現?
下位機CAN通信部分主要完成的任務是:將檢測到的數據傳送給上位機或其它下位機節點。同時,上位機可以對下位機的相關參數進行設置。?
由以上可知,CAN節點通信主要包括系統初始化、發送程序、接收程序等。在本例中,系統軟件采用結構化程序設計方案,使其具有較好的模塊性和可移植性。?
2.1.3系統初始化?
初始化程序主要完成對所有報文對象的初始化(一般將所有值置零),對CAN控制器寄存器(CAN0CN)、位定時寄存器(BITREG)進行設置,還要對發送報文對象和接收報文對象分別進行初始化。其中,位定時寄存器的設置較為復雜,這里使用外部晶振為11.0592MHz,CAN通信速率為1Mbps。?
(1)初始化CAN控制器的一般步驟為:將SFRPAGE寄存器設置為CAN0_PAGE;將CAN0CN寄存器中的INIT和CCE位設置為1;設置位定時寄存器和BRP擴展寄存器中的時序參數;初始化每個消息對象或將其MsgVal為設置為0(無效);將INIT清零。?
(2)初始化發送對象的過程包括設置發送消息對象的命令屏蔽寄存器;設置仲裁寄存器;消息發送方向;指明消息長度和幀類型;選擇發送消息號。部分代碼如下:?
void init_msg_object_TX (char MsgNum)?
{?
SFRPAGE=CAN0_PAGE;?
CAN0ADR=IF1CMDMSK; // 指向命令掩碼寄存器1?
CAN0DAT=0x00B2;// 設為寫,除了標識掩碼和數據位?
CAN0ADR=IF1ARB1; // 指向仲裁寄存器?
CAN0DAT=0x0000;// 將仲裁ID設為最高優先級?
CAN0DAT=0xA000;// 設置消息有效位,沒有擴展ID,方向為寫?
CAN0DAT=0x0088; // 數據長度為8,數據幀?
CAN0ADR=IF1CMDRQST;// 指向命令請求寄存器?
CAN0DAT=MsgNum;// 寫消息對象號,即對哪個消息對象進行操作?
// 3~6個CAN時鐘周期后,IF寄存器中的內容將被移到CAN存儲器的消息對象中?
}?
初始化接收對象與發送對象類似,只需要將消息發送方向改為接收即可。?
(3)CAN啟動主要包括設置位定時寄存器;設置消息對象的命令屏蔽寄存器;設置CAN允許Init位;開中斷即可。代碼如下:?
void start_CAN (void)?
{?
SFRPAGE=CAN0_PAGE;?
CAN0CN |=0x41; // 使能CCE和INIT位?
CAN0ADR=BITREG; // 指向位定時寄存器?
CAN0DAT=0x2640; // 指向命令掩碼寄存器1?
CAN0ADR=IF1CMDMSK;?
//設置CAN RAM為寫,寫數據字節,置位TXrqst/NewDat,Clr IntPnd?
CAN0DAT=0x0087;?
CAN0ADR=IF2CMDMSK;// 指向命令掩碼寄存器2?
CAN0DATL=0x1F;//設置接收:讀CAN RAM,讀數據字節?
CAN0CN |=0x06; // 全局初始化IE和SIE?
CAN0CN &=~0x41; // 清除CCE和INIT位?
}?
(4)數據發送和接收。配置好以上信息,C8051F040就可以接收到CAN總線上的數據幀,執行相應命令或進行相應的數據處理,將反饋信息送入CAN數據寄存器,告知CAN發送消息號就可以將反饋數據傳送到上位機處理。發送程序的部分代碼如下:?
void CAN_transmit (char MsgNum)?
{?
SFRPAGE=CAN0_PAGE;?
CAN0ADR=IF1DATA1;?
CAN0DAT=Txbuffer;?
CAN0ADR=IF1CMDRQST;?
CAN0DATL=MsgNum;?
}?
?
3 結束語?
?
隨著科學技術的不斷進步,船舶自動化進一步向數字化方面發展,以開放性、分散性和數字通信為特征的現場總線體系結構,能充分適應船舶控制系統的要求。基于CAN總線的船舶監控系統具有很好的實時性,CAN現場總線技術的控制系統必將在更多的船舶上得到廣泛的應用。?
參考文獻:?
[1]饒運濤,鄒繼軍等.現場總線CAN原理與應用技術.第二版.北京航空航天大學出版社,2007.?
[2]張培仁,孫力.基于C語言C8051F系列微控制器原理與應用.北京:清華大學出版社,2006.?
[3]李巍等.現場總線技術在機艙自動化系統中的應用.船舶工程,2002,(2).?
[4]蔡華鋒等.C8051F040中CAN控制器的應用.應用天地,2005,(1).?
[5]何燕平等.基于C8051F040的CAN總線智能節點設計.嵌入式網絡應用.?
總結
以上是生活随笔為你收集整理的CAN总线技术在船舶监控系统的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4nm“翻车”:三星芯片研发一把手被撤了
- 下一篇: Windows Embedded CE