版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、. . . . CAN總線(xiàn)的淺析CANopen協(xié)議摘 要: 本文分析了CAN總線(xiàn)的一些特點(diǎn)以與在國(guó)的的應(yīng)用狀況,提出了引入國(guó)際上通用的CAN總線(xiàn)高層應(yīng)用協(xié)議,以提高國(guó)CAN系統(tǒng)應(yīng)用水平的建議,并簡(jiǎn)要介紹了一種CAN的高層協(xié)議CANopen協(xié)議。文章最后部分介紹了國(guó)際上一些較先進(jìn)的CAN產(chǎn)品和開(kāi)發(fā)方法。 關(guān)鍵詞: CAN-bus協(xié)議;CANopen協(xié)議;嵌入式軟件中間件 在設(shè)計(jì)嵌入式系統(tǒng),尤其是分布式嵌入式系統(tǒng)時(shí),解決好系統(tǒng)各單元間可靠、有效的通信是系統(tǒng)設(shè)計(jì)成敗的關(guān)鍵,對(duì)實(shí)時(shí)性和安全可靠性要求高的網(wǎng)絡(luò)而言就更是如此。解決這一問(wèn)題有多種方案,如RS232/485串行總線(xiàn)、CAN、Pro
2、fitBus、FF、WorldFIP、LonWorks等各類(lèi)型的現(xiàn)場(chǎng)總線(xiàn),還有嵌入式以太網(wǎng)等。其中,盡管RS485串行總線(xiàn)協(xié)議的性能不高,但由于其在硬件成本以與開(kāi)發(fā)簡(jiǎn)便性上的巨大優(yōu)勢(shì),目前仍然是國(guó)廣泛的總線(xiàn)應(yīng)用。 隨著嵌入式系統(tǒng)應(yīng)用的發(fā)展,RS485性能上的不足逐漸顯露出來(lái),已經(jīng)不能滿(mǎn)足設(shè)計(jì)一個(gè)高性能、高實(shí)時(shí)性系統(tǒng)的要求。盡管還需要實(shí)踐的證明,但筆者經(jīng)過(guò)多年的觀察和實(shí)踐,感覺(jué)到CAN總線(xiàn)是其中最有希望成功的。 選擇CAN總線(xiàn)實(shí)現(xiàn) 通信的原因 選擇CAN總線(xiàn)作為最佳候選者,主要是基于以下幾方面原因: CAN串行總線(xiàn)具有高性能 CAN的傳輸距離可以達(dá)到10公里;通信速率最高可達(dá)1Mbps;具有完善
3、的錯(cuò)誤檢測(cè)機(jī)制;采用“多重訪(fǎng)問(wèn)沖突仲裁”機(jī)制的幀傳輸方式,可保證不丟失信息;每一幀中最多可以傳輸8個(gè)字節(jié)數(shù)據(jù),可提供很高的實(shí)時(shí)性等等。性能上的優(yōu)勢(shì)保證了CAN可以應(yīng)用在很多的領(lǐng)域,在汽車(chē)工業(yè)、船舶運(yùn)輸、機(jī)械控制、工廠(chǎng)自動(dòng)化、樓宇自動(dòng)化等都可以看到CAN的應(yīng)用。 CAN在硬件成本上很具優(yōu)勢(shì) 除了性能外,和其它現(xiàn)場(chǎng)總線(xiàn)相比,CAN總線(xiàn)在硬件成本上也有很大優(yōu)勢(shì)。從硬件芯片上來(lái)說(shuō),智能節(jié)點(diǎn)要收發(fā)信息需要一個(gè)CAN控制器和一個(gè)CAN收發(fā)器。經(jīng)過(guò)20多年的發(fā)展,CAN已經(jīng)獲得了國(guó)際上各大半導(dǎo)體制造商的大力支持,據(jù)CAN最主要的推廣組織CIA(自動(dòng)化CAN)統(tǒng)計(jì),目前已經(jīng)有20余種CAN控制器和收發(fā)器可供選
4、擇,片集成CAN控制器的單片機(jī)更多達(dá)100余種。CAN在開(kāi)發(fā)成本上的優(yōu)勢(shì)也很明顯 目前,從廣泛應(yīng)用的8位/16位單片機(jī),到DSP和32位的PowerPC、ARM等嵌入式處理器,均在芯片部含有CAN總線(xiàn)硬件接口單元。因此,從硬件角度看,CAN具備其它現(xiàn)場(chǎng)總線(xiàn)無(wú)法比擬的高集成化優(yōu)勢(shì)和廣泛的市場(chǎng)支持基礎(chǔ)。 CAN的開(kāi)發(fā)平臺(tái)也比較簡(jiǎn)單,用戶(hù)如果選擇普通單片機(jī)加上CAN控制器進(jìn)行開(kāi)發(fā),則CAN的開(kāi)發(fā)平臺(tái)和普通單片機(jī)的開(kāi)發(fā)平臺(tái)完全一樣;如果選擇帶有片CAN控制器的單片機(jī)進(jìn)行開(kāi)發(fā),則只要換用支持該單片機(jī)的仿真器就可以了,其他開(kāi)發(fā)設(shè)備完全一樣。開(kāi)發(fā)CAN也需要相應(yīng)的驅(qū)動(dòng)程序。用戶(hù)可以自行根據(jù)選擇的CAN控制器
5、開(kāi)發(fā)驅(qū)動(dòng)程序。 圖1 CANopen協(xié)議通信模型圖2 CANopen設(shè)備模型通過(guò)采用高層協(xié)議將CAN的應(yīng)用推向深化 和其他的現(xiàn)場(chǎng)總線(xiàn)相比,CAN只定義了物理層和數(shù)據(jù)鏈路層的規(guī)(遵循OSI標(biāo)準(zhǔn)),這種設(shè)計(jì)和CAN規(guī)定義時(shí)的歷史條件有關(guān),也可以使CAN能夠更廣泛地適應(yīng)不同的應(yīng)用條件,但必然給用戶(hù)應(yīng)用帶來(lái)一些不便。用戶(hù)在應(yīng)用CAN協(xié)議時(shí),必須自行定義高層協(xié)議。 如何將CAN協(xié)議的應(yīng)用推向更深的層次,同時(shí)滿(mǎn)足產(chǎn)品的兼容和互操作性?國(guó)際上通行的辦法是發(fā)展基于CAN的高層應(yīng)用協(xié)議,只用在應(yīng)用層上,不同公司的產(chǎn)品才可能實(shí)現(xiàn)互操作,好的應(yīng)用層協(xié)議更可以為用戶(hù)帶來(lái)系統(tǒng)性能的飛躍。 在CAN總線(xiàn)協(xié)議飛
6、速發(fā)展的20年中,很多領(lǐng)域都制定了CAN在該領(lǐng)域應(yīng)用時(shí)所采用的高層協(xié)議規(guī)。其中,比較著名的有美國(guó)汽車(chē)工程師協(xié)會(huì)(SAE)制定的車(chē)通信規(guī)J1939等。這些協(xié)議和規(guī)對(duì)CAN的推廣起了很大的作用,但總體來(lái)說(shuō),協(xié)議的模塊化特性都不太好,一般只能應(yīng)用于特定的領(lǐng)域。為了能夠把CAN推廣到更多的領(lǐng)域,歐洲一些公司推出了CAL(應(yīng)用層CAN)協(xié)議,盡管CAL在理論上正確,并在工業(yè)上可以投入應(yīng)用,但每個(gè)用戶(hù)都必須設(shè)計(jì)一個(gè)新的子協(xié)議,因?yàn)镃AL 是一個(gè)真正的應(yīng)用層協(xié)議。CAL 可以被看作一個(gè)應(yīng)用CAN 方案的必要理論步驟,但在這一領(lǐng)域它不會(huì)被推廣。從1993 年起,由Bosch公司領(lǐng)導(dǎo)的一個(gè)歐洲機(jī)構(gòu)研究出一個(gè)協(xié)議
7、原型,由此發(fā)展成為CANopen規(guī)。 CANopen是一個(gè)基于CAL的子協(xié)議,采用面向?qū)ο蟮乃枷朐O(shè)計(jì),具有很好的模塊化特性和很高的適應(yīng)性,通過(guò)擴(kuò)展可以適用于大量的應(yīng)用領(lǐng)域。在CANopen規(guī)基本完成之后,Bosch將其移交給CIA組織,由其進(jìn)行維護(hù)與發(fā)展。在1995年,CIA發(fā)表了完整版的CANopen通信子協(xié)議;僅僅用了5年的時(shí)間,它已成為全歐洲最重要的嵌入式網(wǎng)絡(luò)標(biāo)準(zhǔn)。 CANopen 不僅定義了應(yīng)用層和通信子協(xié)議,而且為可編程系統(tǒng)、不同器件、接口、應(yīng)用子協(xié)議定義了大量的行規(guī),遵循這些行規(guī)開(kāi)發(fā)出的CANopen設(shè)備將能夠?qū)崿F(xiàn)不同公司產(chǎn)品間的互操作。另外,CANopen協(xié)議是免許可證的,任何組
8、織和個(gè)人都可以開(kāi)發(fā)支持CANopen協(xié)議的設(shè)備而不用支付版稅,這也是CANopen得到迅猛發(fā)展的重要原因之一。CANopen目前已在汽車(chē)工業(yè)控制系統(tǒng),公共交通運(yùn)輸系統(tǒng),醫(yī)療設(shè)備,海運(yùn)電子設(shè)備和建筑自動(dòng)化系統(tǒng)中取得了廣泛的應(yīng)用,是將CAN應(yīng)用推向深化的理想選擇。 采用CANopen協(xié)議 實(shí)現(xiàn)通信 CANopen協(xié)議中包含了標(biāo)準(zhǔn)的應(yīng)用層規(guī)和通信規(guī),其通信模型如圖1所示。在CANopen的應(yīng)用層,設(shè)備間通過(guò)相互交換通信對(duì)象進(jìn)行通信。良好的分層和面向?qū)ο蟮脑O(shè)計(jì)思想將帶給用戶(hù)一個(gè)清晰的通信模型。 CANopen設(shè)備模型 一個(gè)CANopen設(shè)備模塊可以被分為3部分,如圖2所示。 通信接口和協(xié)議軟件提供在總
9、線(xiàn)上收發(fā)通信對(duì)象的服務(wù)。不同CANopen設(shè)備間的通信都是通過(guò)交換通信對(duì)象完成的。這一部分直接面向CAN控制器進(jìn)行操作。 對(duì)象字典描述了設(shè)備使用的所有的數(shù)據(jù)類(lèi)型,通信對(duì)象和應(yīng)用對(duì)象。是一個(gè)CANopen設(shè)備的核心部分。對(duì)象字典位于通信程序和應(yīng)用程序之間,向應(yīng)用程序提供接口,應(yīng)用程序?qū)?duì)象字典進(jìn)行操作就可以實(shí)現(xiàn)CANopen通信。理解對(duì)象字典的概念是理解CANopen模型的關(guān)鍵。應(yīng)用程序由用戶(hù)編寫(xiě),包括功能部分和通信部分。通信部分通過(guò)對(duì)對(duì)象字典進(jìn)行操作實(shí)現(xiàn)CANopen通信,而功能部分由用戶(hù)根據(jù)應(yīng)用要現(xiàn)。 CANopen網(wǎng)絡(luò)的通信和管理都是通過(guò)不同的通信對(duì)象來(lái)完成的,為了能夠?qū)崿F(xiàn)通信,網(wǎng)絡(luò)管理,
10、緊急情況處理等功能,CANopen規(guī)定義了四類(lèi)標(biāo)準(zhǔn)的通信對(duì)象: ·進(jìn)程數(shù)據(jù)對(duì)象(PDO) 第一類(lèi)通信對(duì)象為進(jìn)程數(shù)據(jù)對(duì)象。PDO被映射到單一的CAN幀中,使用所有的8個(gè)字節(jié)的數(shù)據(jù)域來(lái)傳輸應(yīng)用對(duì)象。每個(gè)PDO有一個(gè)獨(dú)立的標(biāo)識(shí)符并且可能只被一個(gè)節(jié)點(diǎn)發(fā)送,但它可以被多于一個(gè)節(jié)點(diǎn)接收,這種模式被稱(chēng)之為生產(chǎn)者/消費(fèi)者通信模式。PDO可以通過(guò)多種模式傳送,部事件,外部時(shí)鐘,遠(yuǎn)程幀請(qǐng)求以與從特定節(jié)點(diǎn)接收到同步報(bào)文都可以啟動(dòng)PDO發(fā)送。 ·服務(wù)數(shù)據(jù)對(duì)象(SDO) 第二類(lèi)通信對(duì)象為服務(wù)數(shù)據(jù)對(duì)象,該對(duì)象可以傳輸大于8個(gè)字節(jié)的配置信息。也就是說(shuō),SDO傳送協(xié)議允許傳送任意長(zhǎng)度的對(duì)象。接收者將確認(rèn)收
11、到的每個(gè)段信息,發(fā)送和接收者間將建立點(diǎn)對(duì)點(diǎn)的通信,稱(chēng)之為客戶(hù)機(jī)/服務(wù)器模式。未來(lái),CANopen將允許快速傳輸SDO,不必對(duì)傳送的每個(gè)段都進(jìn)行確認(rèn),只要在整個(gè)對(duì)象傳送完畢后進(jìn)行確認(rèn)即可。 ·網(wǎng)絡(luò)管理對(duì)象(NMT) 第三類(lèi)通信對(duì)象是網(wǎng)絡(luò)管理對(duì)象,包括節(jié)點(diǎn)警戒對(duì)象以與NMT對(duì)象。節(jié)點(diǎn)警戒對(duì)象是由NMT主節(jié)點(diǎn)遠(yuǎn)程請(qǐng)求發(fā)送的帶有1字節(jié)數(shù)據(jù)的CAN幀,一個(gè)字節(jié)的數(shù)據(jù)中包含1個(gè)觸發(fā)位以與7個(gè)用于表示節(jié)點(diǎn)狀態(tài)的數(shù)據(jù)位。NMT主節(jié)點(diǎn)將周期性地發(fā)送節(jié)點(diǎn)警戒對(duì)象。發(fā)送周期(警戒時(shí)間)的長(zhǎng)度在對(duì)象字典中規(guī)定并且可以通過(guò)SDO進(jìn)行配置。另外,系統(tǒng)還定義了生命警戒時(shí)間,NMT主節(jié)點(diǎn)要在生命警戒時(shí)間過(guò)后向NMT
12、從節(jié)點(diǎn)發(fā)送遠(yuǎn)程請(qǐng)求。這種機(jī)制保證了即使NMT主節(jié)點(diǎn)不在了,系統(tǒng)中的其他節(jié)點(diǎn)也可以通過(guò)用戶(hù)定義的方式進(jìn)行回應(yīng)。 ·特殊功能對(duì)象 CANopen還為同步,緊急狀態(tài)表示以與時(shí)間標(biāo)記傳送定義了三個(gè)特定的對(duì)象。同步對(duì)象由同步制造者向網(wǎng)絡(luò)進(jìn)行周期性廣播,該對(duì)象將提供基本的網(wǎng)絡(luò)時(shí)鐘。當(dāng)設(shè)備發(fā)生嚴(yán)重的部錯(cuò)誤時(shí),相關(guān)的一個(gè)緊急狀態(tài)客戶(hù)機(jī)將發(fā)送一個(gè)緊急狀態(tài)對(duì)象。時(shí)間標(biāo)記對(duì)象將為應(yīng)用設(shè)備提供公共的時(shí)間幀參考。 要理解CANopen規(guī),核心是要理解CANopen的設(shè)備模型和各類(lèi)型的通信對(duì)象。掌握了這兩者后,通過(guò)利用各類(lèi)標(biāo)準(zhǔn)的設(shè)備描述就可以開(kāi)發(fā)出符合國(guó)際標(biāo)準(zhǔn)的CANopen設(shè)備了。 展望 最近一段時(shí)期,國(guó)開(kāi)發(fā)
13、、應(yīng)用CAN系統(tǒng)的人員正在逐漸增多,對(duì)CAN協(xié)議的研究也在不斷加深。在很多領(lǐng)域,如研制電動(dòng)汽車(chē)和混合動(dòng)力汽車(chē)的863重大課題,已經(jīng)將CAN作為標(biāo)準(zhǔn)的車(chē)通信協(xié)議確定下來(lái)。電力,航天等部門(mén)也在CAN方面取得了不小的應(yīng)用成績(jī)。 在CAN應(yīng)用蓬勃發(fā)展的時(shí)候,我們也應(yīng)當(dāng)清醒地看到,盡管CAN協(xié)議在歐美已經(jīng)發(fā)展了20年,應(yīng)用層協(xié)議的發(fā)展也差不多有10年時(shí)間,但目前國(guó)大多數(shù)的應(yīng)用系統(tǒng)仍然基于CAN2.0B規(guī)開(kāi)發(fā),還不能在應(yīng)用層的水平上進(jìn)一步深入,這不能不說(shuō)是很遺憾的事情。另外,國(guó)研究、開(kāi)發(fā)CAN協(xié)議,尤其是CAN高層協(xié)議的組織和人員還太少,這對(duì)CAN在中國(guó)的推廣是十分不利的,筆者誠(chéng)切希望更多的有識(shí)之士能夠加
14、入這一行列。最近在學(xué)習(xí)CANopen協(xié)議,遇到一些小知識(shí)點(diǎn),查閱后作為補(bǔ)充,記錄在此,方便以后查詢(xún),算是讀書(shū)筆記吧。一、CANopen協(xié)議中SYNC功能和使用 SYNC是CANopen管理各節(jié)點(diǎn)同步數(shù)據(jù)收發(fā)的一種方法,相當(dāng)于網(wǎng)絡(luò)節(jié)拍,基于同步的PDO按照這個(gè)網(wǎng)絡(luò)節(jié)拍來(lái)執(zhí)行實(shí)時(shí)數(shù)據(jù)的收發(fā)。SYNC屬于生產(chǎn)/消費(fèi)型通訊方式,網(wǎng)絡(luò)中有且只有一個(gè)SYNC生產(chǎn)者,一般有多個(gè)消費(fèi)者,其網(wǎng)絡(luò)標(biāo)識(shí)符優(yōu)先級(jí)很高,一般設(shè)置為0x80,基本上除了NMT優(yōu)先級(jí)最高。SYNC生產(chǎn)者按照固定頻率發(fā)送SYNC報(bào)文,需要SYNC的節(jié)點(diǎn)(消費(fèi)者)將其接收并計(jì)數(shù),當(dāng)計(jì)數(shù)值達(dá)到節(jié)點(diǎn)相應(yīng)TPDO要求時(shí),該TPDO映射的數(shù)據(jù)被發(fā)送(根
15、據(jù)PDO傳輸類(lèi)型也可能是映射數(shù)據(jù)更新),此過(guò)程中SYNC生產(chǎn)者提供網(wǎng)絡(luò)節(jié)拍,各消費(fèi)者以節(jié)拍周期的倍數(shù)執(zhí)行數(shù)據(jù)傳輸功能。在CANopen網(wǎng)絡(luò)中應(yīng)用SYNC要注意以下幾點(diǎn):1. SYNC并不是主節(jié)點(diǎn)必須的功能,不一定要和NMT放在同一節(jié)點(diǎn)上,實(shí)際網(wǎng)絡(luò)應(yīng)用中可以在網(wǎng)絡(luò)中找一個(gè)任務(wù)較少、實(shí)時(shí)性好的節(jié)點(diǎn)來(lái)作為SYNC生產(chǎn)者,SYNC消費(fèi)者可以有多個(gè),但是生產(chǎn)者同時(shí)只能有一個(gè)存在。2. SYNC是不帶數(shù)據(jù)的,以使報(bào)文盡可能短,目的是為了加快其傳輸,減少網(wǎng)絡(luò)占用。3. SYNC發(fā)出后,需要發(fā)送數(shù)據(jù)的PDO要在規(guī)定時(shí)間段發(fā)送數(shù)據(jù),這個(gè)時(shí)間段叫做時(shí)間窗口(對(duì)象1006H指定),要小于SYNC節(jié)拍周期,以便每個(gè)周
16、期留一定時(shí)間來(lái)進(jìn)行其他類(lèi)型的網(wǎng)絡(luò)通訊二、CANopen協(xié)議PDO的幾種傳輸方式由于PDO所傳輸?shù)臄?shù)據(jù)容是無(wú)協(xié)議的且分配的標(biāo)識(shí)符圍較SDO靠前,因此,其效率和優(yōu)先級(jí)都是較高的,通常用于實(shí)時(shí)過(guò)程數(shù)據(jù)的傳輸.PDO是生產(chǎn)/消費(fèi)類(lèi)型的通訊方式,數(shù)據(jù)只有一個(gè)生產(chǎn)者(發(fā)送),但是消費(fèi)者(接收)可以有多個(gè),生產(chǎn)者和消費(fèi)者事先都已知道數(shù)據(jù)的類(lèi)型和容(通過(guò)設(shè)置PDO映射來(lái)管理).對(duì)PDO通訊參數(shù)的設(shè)置可以實(shí)現(xiàn)四種通訊方式:1. 同步傳輸.在收到SYNC消息后觸發(fā)PDO發(fā)送,可以定義收到幾個(gè)SYNC后觸發(fā)一次TPDO,在有SYNC的CANopen網(wǎng)絡(luò)中,SYNC就相當(dāng)于一個(gè)網(wǎng)絡(luò)節(jié)拍,數(shù)據(jù)根據(jù)節(jié)拍來(lái)進(jìn)行固定周期的過(guò)
17、程數(shù)據(jù)傳輸.比如網(wǎng)絡(luò)中有一個(gè)壓力傳感器,一個(gè)溫度傳感器,一個(gè)物位傳感器,網(wǎng)絡(luò)中有一個(gè)HMI監(jiān)控終端來(lái)實(shí)時(shí)監(jiān)控三個(gè)傳感器采集的數(shù)據(jù),壓力傳感器可能檢測(cè)的是一個(gè)快速的壓力變化,那可以每隔200mS更新一次數(shù)據(jù),溫度可能需要1S更新一次數(shù)據(jù),物位可能5S更新一次數(shù)據(jù),(假設(shè)各傳感器的數(shù)據(jù)采集周期都比數(shù)據(jù)更新周期小,如果大的話(huà)數(shù)據(jù)更新快可能沒(méi)有意義,呵呵)現(xiàn)在我可以設(shè)置一個(gè)200mS周期的SYNC消息,壓力傳感器每收到一個(gè)SYNC就向HMI傳輸一次數(shù)據(jù),溫度傳感器可以每隔5個(gè)SYNC傳輸一次數(shù)據(jù),同樣物位傳感器就是每收到25個(gè)SYNC發(fā)送一次數(shù)據(jù).這種通訊方式顯得比較規(guī)矩,好管理,系統(tǒng)運(yùn)行效率高,適合
18、周期性數(shù)據(jù)更新的應(yīng)用.2. 遠(yuǎn)程請(qǐng)求.在需要網(wǎng)絡(luò)上某個(gè)節(jié)點(diǎn)的數(shù)據(jù)的時(shí)候,我發(fā)一個(gè)遠(yuǎn)程數(shù)據(jù)請(qǐng)求過(guò)去,對(duì)方在接收到請(qǐng)求后,把我要的數(shù)據(jù)給發(fā)過(guò)來(lái),這種方式是在我需要的時(shí)候去主動(dòng)獲取.3. 定時(shí)發(fā)送.這個(gè)有別于SYNC,它是在本節(jié)點(diǎn)實(shí)現(xiàn)周期發(fā)送,通過(guò)設(shè)置PDO參數(shù),定一個(gè)周期,每隔固定的時(shí)間向網(wǎng)絡(luò)上發(fā)送一次PDO,它與SYNC無(wú)關(guān),在網(wǎng)絡(luò)設(shè)計(jì)中主要按照傳感器的數(shù)據(jù)采集速度和數(shù)據(jù)更新要求來(lái)設(shè)定定時(shí)周期.4. 事件觸發(fā).當(dāng)節(jié)點(diǎn)的某個(gè)時(shí)間發(fā)生觸發(fā)的一次數(shù)據(jù)發(fā)送,例如當(dāng)某個(gè)接著報(bào)警開(kāi)關(guān)的開(kāi)關(guān)量采集節(jié)點(diǎn)的報(bào)警狀態(tài)發(fā)生變化時(shí),觸發(fā)一次PDO將報(bào)警狀態(tài)發(fā)送到網(wǎng)絡(luò)上,使系統(tǒng)能夠與時(shí)獲得該報(bào)警狀態(tài)信息.該方式是實(shí)時(shí)性最
19、好的一種傳輸方式,特別適合系統(tǒng)運(yùn)行出錯(cuò)報(bào)警和重大事件的與時(shí)處理上.上面的幾種傳輸方式各有所長(zhǎng),在CANopen網(wǎng)絡(luò)的設(shè)計(jì)中,按照不同的應(yīng)用靈活配合使用才能構(gòu)建一個(gè)優(yōu)秀的解決方案.三、SDO服務(wù)SDO是服務(wù)數(shù)據(jù)對(duì)象接口(Service Data Obiect)的縮寫(xiě),顧名思義提供服務(wù)數(shù)據(jù)的訪(fǎng)問(wèn)接口,服務(wù)數(shù)據(jù)就是一些實(shí)時(shí)性要求不高的數(shù)據(jù),一般是指節(jié)點(diǎn)配置參數(shù),因此,SDO一般用來(lái)配置和獲得節(jié)點(diǎn)的配置參數(shù)。其優(yōu)先級(jí)只比心跳(Heartbeat)高。SDO既然稱(chēng)之為服務(wù),那就要有服務(wù)的提供者和使用者,提供者就是SDO server,使用者就是SDO client,在CANopen網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)都要有一
20、個(gè)SDO server,因?yàn)槊總€(gè)節(jié)點(diǎn)的對(duì)象字典大部分對(duì)象都是通過(guò)SDO來(lái)訪(fǎng)問(wèn)的,對(duì)象字典的被訪(fǎng)問(wèn),提供所請(qǐng)求的服務(wù)當(dāng)然要有個(gè)SDO server。SDO請(qǐng)求和應(yīng)答報(bào)文都是8個(gè)字節(jié)的數(shù)據(jù),其中包括對(duì)象字典的索引、子索引、SDO命令和數(shù)據(jù)。這里要注意和我們熟知的以太網(wǎng)FTP不同,SDO的上傳和下載正好與之相反,F(xiàn)TP是從client的角度出發(fā)去理解上傳和下載,SDO是以server的角度去理解的,從服務(wù)器上獲得數(shù)據(jù)即對(duì)對(duì)象字典進(jìn)行讀操作叫做上傳,往服務(wù)器上寫(xiě)數(shù)據(jù)即對(duì)對(duì)象字典進(jìn)行寫(xiě)操作叫做下載。 四、怎樣實(shí)現(xiàn)SDO服務(wù) SDO是CANopen協(xié)議中最復(fù)雜的一部分,帶有應(yīng)答機(jī)制,有多種傳輸方式,并且完
21、整的SDO功能節(jié)點(diǎn)需提供1個(gè)SDO server和多個(gè)SDO client,因此SDO的實(shí)現(xiàn)異常困難,協(xié)議多種傳輸方式的解析處理還有跡可循,多個(gè)SDO client服務(wù)和多個(gè)對(duì)SDO server的訪(fǎng)問(wèn)的協(xié)調(diào)就不容易了,這里介紹一種方法SDO線(xiàn)程來(lái)解決。注意,這里的線(xiàn)程可不是操作系統(tǒng)提供的多線(xiàn)程技術(shù),況且為保證協(xié)議棧良好的移植性,在CANopen協(xié)議棧核心代碼里中也不好去調(diào)與操作系統(tǒng)相關(guān)的庫(kù)函數(shù)。我們這里的SDO線(xiàn)程只是借鑒了操作系統(tǒng)多線(xiàn)程機(jī)制的一套SDO服務(wù)處理方法,每個(gè)SDO線(xiàn)程表示的是與網(wǎng)絡(luò)上其他節(jié)點(diǎn)建立的一個(gè)SDO,相當(dāng)于在兩個(gè)節(jié)點(diǎn)間建立一個(gè)SDO通訊路徑,其中每個(gè)節(jié)點(diǎn)都擁有一個(gè)對(duì)這個(gè)
22、路徑的描述,在該節(jié)點(diǎn)看來(lái)好像建立了一個(gè)線(xiàn)程來(lái)負(fù)責(zé)這個(gè)路徑(但決不會(huì)真的創(chuàng)建一個(gè)系統(tǒng)線(xiàn)程),在通訊過(guò)程中雙方通過(guò)這個(gè)路徑來(lái)交流,SDO通訊結(jié)束則釋放該線(xiàn)程,每個(gè)節(jié)點(diǎn)可以同時(shí)與多個(gè)節(jié)點(diǎn)建立多個(gè)這樣的路徑和互不影響,就如同操作系統(tǒng)的線(xiàn)程機(jī)制一樣的效果。我們知道每建立一個(gè)線(xiàn)程都會(huì)生成一個(gè)描述線(xiàn)程屬性的參數(shù)表和一些私有數(shù)據(jù),類(lèi)似的,SDO線(xiàn)程的建立也會(huì)初始化一個(gè)對(duì)應(yīng)的參數(shù)和數(shù)據(jù)結(jié)構(gòu)體SDO線(xiàn)程參數(shù)表,以之來(lái)描述這個(gè)SDO的屬性并提供私有通訊數(shù)據(jù)的存儲(chǔ)。SDO線(xiàn)程參數(shù)表可以說(shuō)是SDO線(xiàn)程的核心,所有SDO線(xiàn)程的建立、刪除和SDO通訊都要涉與到這個(gè)參數(shù)表。參數(shù)表容包括能夠描述一個(gè)SDO訪(fǎng)問(wèn)過(guò)程的所有參數(shù),這
23、里不詳述。一次SDO訪(fǎng)問(wèn)是這樣完成的。首先SDO發(fā)起節(jié)點(diǎn)(SDO client)收集足夠的信息,建立一個(gè)SDO線(xiàn)程,說(shuō)白了就是初始化SDO線(xiàn)程參數(shù)表,將收集的信息以特定格式放入?yún)?shù)表,形成一幀SDO請(qǐng)求,發(fā)送出去。SDO服務(wù)節(jié)點(diǎn)(SDO server)收到這幀請(qǐng)求,為它建立一個(gè)SDO線(xiàn)程,將這幀請(qǐng)求分析分解以獲得足夠信息來(lái)初始化這個(gè)SDO線(xiàn)程對(duì)應(yīng)的參數(shù)表,然后程序就會(huì)按照參數(shù)表的描述去執(zhí)行server的功能收集數(shù)據(jù)來(lái)滿(mǎn)足這個(gè)SDO請(qǐng)求,然后將收集到的數(shù)據(jù)形成SDO應(yīng)答幀返回給SDO client,如果此次請(qǐng)求結(jié)束則釋放該線(xiàn)程,否則等待下一幀請(qǐng)求到來(lái);SDO client在收到應(yīng)答后判斷該請(qǐng)否還
24、有后續(xù)請(qǐng)求,無(wú)則釋放此SDO線(xiàn)程。如果在這個(gè)過(guò)程中,SDO server 和SDO client所在節(jié)點(diǎn)有收到其他節(jié)點(diǎn)的SDO請(qǐng)求或需要通過(guò)SDO請(qǐng)求其它節(jié)點(diǎn),則新建SDO線(xiàn)程來(lái)實(shí)現(xiàn),跟上面的步驟一樣,這樣就可以實(shí)現(xiàn)多個(gè)SDO server和SDO client服務(wù)都得到實(shí)現(xiàn)而互不干擾,相當(dāng)于雙向多線(xiàn)鐵路,可比單線(xiàn)爽多了。該方法已在單片機(jī)下實(shí)現(xiàn),效果還不錯(cuò)。本文來(lái)自CSDN博客,請(qǐng)標(biāo)明出處:CanOpen開(kāi)發(fā)中的常見(jiàn)問(wèn)題參考:.picavrbbs./news/2009-10/1439.htmSDO是CANopen協(xié)議中最復(fù)雜的一部分,帶有應(yīng)答機(jī)制,有多種傳輸方式,并且完整的SDO功能節(jié)點(diǎn)需提供
25、1個(gè)SDO server和多個(gè)SDO client,因此SDO的實(shí)現(xiàn)異常困難,協(xié)議多種傳輸方式的解析處理還有跡可循,多個(gè)SDO client服務(wù)和多個(gè)對(duì)SDO server的訪(fǎng)問(wèn)的協(xié)調(diào)就不容易了,這里介紹一種方法SDO線(xiàn)程來(lái)解決。注意,這里的線(xiàn)程可不是操作系統(tǒng)提供的多線(xiàn)程技術(shù),況且為保證協(xié)議棧良好的移植性,在CANopen協(xié)議棧核心代碼里中也不好去調(diào)與操作系統(tǒng)相關(guān)的庫(kù)函數(shù)。我們這里的SDO線(xiàn)程只是借鑒了操作系統(tǒng)多線(xiàn)程機(jī)制的一套SDO服務(wù)處理方法,每個(gè)SDO線(xiàn)程表示的是與網(wǎng)絡(luò)上其他節(jié)點(diǎn)建立的一個(gè)SDO,相當(dāng)于在兩個(gè)節(jié)點(diǎn)間建立一個(gè)SDO通訊路徑,其中每個(gè)節(jié)點(diǎn)都擁有一個(gè)對(duì)這個(gè)路徑的描述,在該節(jié)點(diǎn)看來(lái)
26、好像建立了一個(gè)線(xiàn)程來(lái)負(fù)責(zé)這個(gè)路徑(但決不會(huì)真的創(chuàng)建一個(gè)系統(tǒng)線(xiàn)程),在通訊過(guò)程中雙方通過(guò)這個(gè)路徑來(lái)交流,SDO通訊結(jié)束則釋放該線(xiàn)程,每個(gè)節(jié)點(diǎn)可以同時(shí)與多個(gè)節(jié)點(diǎn)建立多個(gè)這樣的路徑和互不影響,就如同操作系統(tǒng)的線(xiàn)程機(jī)制一樣的效果。我們知道每建立一個(gè)線(xiàn)程都會(huì)生成一個(gè)描述線(xiàn)程屬性的參數(shù)表和一些私有數(shù)據(jù),類(lèi)似的,SDO線(xiàn)程的建立也會(huì)初始化一個(gè)對(duì)應(yīng)的參數(shù)和數(shù)據(jù)結(jié)構(gòu)體SDO線(xiàn)程參數(shù)表,以之來(lái)描述這個(gè)SDO的屬性并提供私有通訊數(shù)據(jù)的存儲(chǔ)。SDO線(xiàn)程參數(shù)表可以說(shuō)是SDO線(xiàn)程的核心,所有SDO線(xiàn)程的建立、刪除和SDO通訊都要涉與到這個(gè)參數(shù)表。參數(shù)表容包括能夠描述一個(gè)SDO訪(fǎng)問(wèn)過(guò)程的所有參數(shù),這里不詳述。一次SDO訪(fǎng)問(wèn)
27、是這樣完成的。首先SDO發(fā)起節(jié)點(diǎn)(SDO client)收集足夠的信息,建立一個(gè)SDO線(xiàn)程,說(shuō)白了就是初始化SDO線(xiàn)程參數(shù)表,將收集的信息以特定格式放入?yún)?shù)表,形成一幀SDO請(qǐng)求,發(fā)送出去。SDO服務(wù)節(jié)點(diǎn)(SDO server)收到這幀請(qǐng)求,為它建立一個(gè)SDO線(xiàn)程,將這幀請(qǐng)求分析分解以獲得足夠信息來(lái)初始化這個(gè)SDO線(xiàn)程對(duì)應(yīng)的參數(shù)表,然后程序就會(huì)按照參數(shù)表的描述去執(zhí)行server的功能收集數(shù)據(jù)來(lái)滿(mǎn)足這個(gè)SDO請(qǐng)求,然后將收集到的數(shù)據(jù)形成SDO應(yīng)答幀返回給SDO client,如果此次請(qǐng)求結(jié)束則釋放該線(xiàn)程,否則等待下一幀請(qǐng)求到來(lái);SDO client在收到應(yīng)答后判斷該請(qǐng)否還有后續(xù)請(qǐng)求,無(wú)則釋放此S
28、DO線(xiàn)程。如果在這個(gè)過(guò)程中,SDO server 和SDO client所在節(jié)點(diǎn)有收到其他節(jié)點(diǎn)的SDO請(qǐng)求或需要通過(guò)SDO請(qǐng)求其它節(jié)點(diǎn),則新建SDO線(xiàn)程來(lái)實(shí)現(xiàn),跟上面的步驟一樣,這樣就可以實(shí)現(xiàn)多個(gè)SDO server和SDO client服務(wù)都得到實(shí)現(xiàn)而互不干擾,相當(dāng)于雙向多線(xiàn)鐵路,可比單線(xiàn)爽多了。怎樣利用好單片機(jī)上的存儲(chǔ)器資源來(lái)實(shí)現(xiàn)OD的存儲(chǔ)與訪(fǎng)問(wèn)我們知道OD(對(duì)象字典)是CANopen的核心,所有功能都是圍繞它開(kāi)展的,是協(xié)議棧的數(shù)據(jù)中心,良好的OD實(shí)現(xiàn)是協(xié)議棧高效穩(wěn)定運(yùn)行的基礎(chǔ),而OD的實(shí)現(xiàn)最基本的一點(diǎn)就是怎么去保存它。因?yàn)镺D的容比較雜,讀寫(xiě)屬性上,有只讀數(shù)據(jù)、只寫(xiě)數(shù)據(jù)、可讀寫(xiě)數(shù)據(jù);保存
29、要求上有非易失和掉電丟失兩種類(lèi)型;數(shù)據(jù)類(lèi)型上有字符型、整型、長(zhǎng)整型等等;存儲(chǔ)格式上有8位、16位、32位等。其它的不管,本文現(xiàn)只討論怎么利用單片機(jī)的資源去盡量滿(mǎn)足OD的存儲(chǔ)需求。有人會(huì)以為這還要討論么?只讀的就放在只讀存儲(chǔ)器中,可寫(xiě)的就放在RAM中,需要掉電保存的就放在非易失可讀寫(xiě)存儲(chǔ)器中。話(huà)是這么說(shuō),但實(shí)際上問(wèn)題很多,羅列如下:1 對(duì)協(xié)議棧只讀并不表示對(duì)應(yīng)用程序只讀。2 可讀寫(xiě)而又掉電保存的數(shù)據(jù)不能放在RAM里。3 頻繁讀寫(xiě)的數(shù)據(jù)不能放在非易失存儲(chǔ)器中,因?yàn)榉且资Т鎯?chǔ)器往往速度慢,有寫(xiě)次數(shù)限制。4 單片機(jī)資源有限,存取方式和讀寫(xiě)速度有限值,因此得合理利用。既然有這些問(wèn)題,我們先對(duì)OD的數(shù)據(jù)進(jìn)
30、行分析分類(lèi):1 系統(tǒng)只讀參數(shù)。自節(jié)點(diǎn)出廠(chǎng)就無(wú)需更改,例如,節(jié)點(diǎn)硬件序列號(hào)、軟硬件版本等。2 過(guò)程數(shù)據(jù)對(duì)象。頻繁讀寫(xiě),掉電無(wú)需保存。例如,采集的模擬量、待輸出的開(kāi)關(guān)量。3 系統(tǒng)配置參數(shù)??勺x寫(xiě),偶爾配置,大部分時(shí)間只讀。基本上所有的OD對(duì)象都可以歸到這三類(lèi)中去。下面再以AVR單片機(jī)為例說(shuō)說(shuō)單片機(jī)的幾類(lèi)存儲(chǔ)資源以與其特點(diǎn): 類(lèi)型 運(yùn)行中讀寫(xiě)屬性 訪(fǎng)問(wèn)速度 容量 特點(diǎn)FLASH 程序存儲(chǔ)器 只讀 一般 較大 操作方便但只能放程序和初始化只讀數(shù)據(jù),掉電不丟失SRAM 數(shù)據(jù)存儲(chǔ)器 讀寫(xiě) 最快 小 操作方便,速度快,掉電數(shù)據(jù)丟失EEPROM 數(shù)據(jù)存儲(chǔ)器 讀寫(xiě) 讀一般,寫(xiě)很慢 小 操作復(fù)雜,寫(xiě)速度極慢看到上
31、面這個(gè)表,你會(huì)馬上把OD的三類(lèi)數(shù)據(jù)存放位置定下來(lái)吧,系統(tǒng)只讀參數(shù)放在FLASH中;過(guò)程數(shù)據(jù)對(duì)象放在SRAM中;系統(tǒng)配置參數(shù)放在EEPROM中。實(shí)際上確實(shí)該如此安排,但是所有問(wèn)題的解決了?NO,NO,NO!OD中的數(shù)據(jù)對(duì)象是怎么安排進(jìn)存儲(chǔ)器的?系統(tǒng)啟動(dòng)怎么初始化?怎么去訪(fǎng)問(wèn)?下面提供一種方案:出廠(chǎng)設(shè)置隨程序一起寫(xiě)入FLASH,然后系統(tǒng)重器開(kāi)始運(yùn)行,在軟件初始化過(guò)程中,程序?qū)⒊鰪S(chǎng)默認(rèn)的整個(gè)OD對(duì)象從FLASH 載入到RAM中去,不論是OD的那種分類(lèi)的數(shù)據(jù);之后如果判斷是第一次運(yùn)行,將用RAM中屬于的統(tǒng)配置參數(shù)的那一類(lèi)數(shù)據(jù)去初始化EEPROM,否則用EEPROM中的系統(tǒng)配置參數(shù)去重新覆蓋對(duì)應(yīng)的RAM
32、映像。好了初始化完成,開(kāi)始運(yùn)行,因?yàn)樗蠴D數(shù)據(jù)都load到RAM中,因此OD對(duì)外可以提供統(tǒng)一快速的數(shù)據(jù)服務(wù)接口,外部的讀操作就是直接讀RAM,寫(xiě)則是先寫(xiě)RAM映像,然后再判斷如果是OD的系統(tǒng)配置參數(shù)那一類(lèi)則同時(shí)更新EEPROM。最后要注意一點(diǎn)就是OD的對(duì)象屬性等信息一定要放在FLASH中,否則將是一個(gè)極大的RAM開(kāi)銷(xiāo)。上面方案優(yōu)點(diǎn)是在滿(mǎn)足OD需求的前提下能夠提供統(tǒng)一快速的OD訪(fǎng)問(wèn)接口;能夠與時(shí)存儲(chǔ)非易失性數(shù)據(jù);并能在軟件上實(shí)現(xiàn)恢復(fù)出廠(chǎng)設(shè)置的操作而不增加額外的出廠(chǎng)設(shè)置備份空間(在EEPROM中置一標(biāo)志就行了,自己去想)。明顯的優(yōu)點(diǎn)也意味著明顯的缺點(diǎn),就是占用較多RAM空間,只讀數(shù)據(jù)和非易失性數(shù)
33、據(jù)都要映射到RAM中,浪費(fèi)了一部分RAM,這將使得本來(lái)就緊的RAM資源更加緊,好在一般節(jié)點(diǎn)上的OD容一般不多,而且現(xiàn)在RAM非常便宜。上面的方案同樣適用于其他單片機(jī),基本上現(xiàn)在的單片機(jī)上都有FLASH和RAM,而即使有的單片機(jī)沒(méi)有EEPROM,但是本身FLASH區(qū)是可以運(yùn)行中在線(xiàn)寫(xiě)入的,也可以當(dāng)EEPROM用(但此時(shí)最好就不要來(lái)一個(gè)寫(xiě)一個(gè)了,因?yàn)镕LASH是頁(yè)擦除的,比較耗時(shí)間,因此建議做成批量寫(xiě)入方式,OD的0x1010和0x1011對(duì)象有涉與),實(shí)在不行還可以外擴(kuò)。對(duì)象字典0x1005和0x1006的理解SYNC不一定由主站產(chǎn)生,因此,產(chǎn)生SYNC的節(jié)點(diǎn),0x1005對(duì)象的值一般是0x40
34、000080,第30位為1表示本節(jié)點(diǎn)產(chǎn)生SYNC,而本節(jié)點(diǎn)的0x1006對(duì)象就是產(chǎn)生同步周期值了;而接收SYNC的節(jié)點(diǎn)0x1005對(duì)象值一般是0x80,第30位是0表示本身不產(chǎn)生SYNC,而接收COB-ID為0x80的報(bào)文作為同步幀,該節(jié)點(diǎn)0x1006一般置0,沒(méi)什么用處了. 在CANopen網(wǎng)絡(luò)過(guò)LSS服務(wù)設(shè)置節(jié)點(diǎn)地址和網(wǎng)絡(luò)波特率CANopen專(zhuān)有個(gè)子協(xié)議用來(lái)描述怎樣去通過(guò)網(wǎng)絡(luò)設(shè)置節(jié)點(diǎn)地址和波特率,就是CiA DSP-305,大伙都叫LSS協(xié)議,是Layer Setting Services的縮寫(xiě),不太好翻譯,也許可以翻譯成底層設(shè)置服務(wù)協(xié)議吧。屬于主從式服務(wù),類(lèi)似于NMT的方式,占用2021
35、(for master)和2020(for slave)兩個(gè)標(biāo)識(shí)符。CANopen網(wǎng)絡(luò)中同時(shí)只能有一個(gè)節(jié)點(diǎn)能提供LSS Master服務(wù),并且該節(jié)點(diǎn)同時(shí)也必須是NMT Master。網(wǎng)絡(luò)上的其他節(jié)點(diǎn)都提供LSS Slave服務(wù)。假設(shè)網(wǎng)絡(luò)上除了主節(jié)點(diǎn)之外,其他節(jié)點(diǎn)都是無(wú)地址的,那么它根據(jù)什么去設(shè)置各節(jié)點(diǎn)地址呢?答案是LSS地址,這跟節(jié)點(diǎn)的地址可不同,它理論上是全球唯一的,那么這個(gè)地址到底是什么呢?答案是對(duì)象字典1018H的容,包括vendor-id(制造商ID)、product-code(產(chǎn)品碼)、revision-number(修訂碼)和serial-number(序列號(hào)),這幾個(gè)加起來(lái)就全球
36、唯一了吧。一般要求LSS Master節(jié)點(diǎn)要預(yù)先知道網(wǎng)絡(luò)上的各節(jié)點(diǎn)的LSS地址。設(shè)置某個(gè)節(jié)點(diǎn)地址的步驟如下:1. 通過(guò)LSS地址去將希望設(shè)置ID的節(jié)點(diǎn)切換到配置狀態(tài)(相當(dāng)于NMT的停止?fàn)顟B(tài)),當(dāng)然是通過(guò)LSS服務(wù)(Switch Mode Selective)。2. 然后通過(guò)Configure Node-ID服務(wù)設(shè)置其節(jié)點(diǎn)地址。3. 置該節(jié)點(diǎn)到可操作狀態(tài)。不是很困難吧。設(shè)置網(wǎng)絡(luò)波特率要復(fù)雜一些,步驟如下:1. 將網(wǎng)絡(luò)上所有LSS Slave切換到配置狀態(tài),通過(guò)switch Mode Global服務(wù)實(shí)現(xiàn)。2. 通過(guò)Configure Bit Timing Parameters服務(wù)將波特率廣播到每
37、個(gè)節(jié)點(diǎn)中。3. 通過(guò)Activate Bit Timing Parameters服務(wù)激活新設(shè)置。將整個(gè)網(wǎng)絡(luò)波特率切換為新設(shè)置。4. 置網(wǎng)絡(luò)切換回可操作狀態(tài)。這里要注意:在Activate Bit Timing Parameters服務(wù)中有個(gè)switch_delay參數(shù),該參數(shù)指定相等長(zhǎng)度的兩個(gè)延遲周期長(zhǎng)度,是為了避免總線(xiàn)上出現(xiàn)不同的位定時(shí)參數(shù)(波特率)。每個(gè)節(jié)點(diǎn)在收到命令后switch_delay毫秒后應(yīng)用新的位定時(shí)參數(shù)。在應(yīng)用新參數(shù)后,節(jié)點(diǎn)在第二個(gè)switch_delay毫秒定時(shí)到之前不發(fā)送任何報(bào)文。各節(jié)點(diǎn)處理位定時(shí)激活命令需要的時(shí)間可能不同,而且激活命令之前的的報(bào)文可能還在節(jié)點(diǎn)的接收隊(duì)列中
38、。意思就是某個(gè)節(jié)點(diǎn)在處理延時(shí)的過(guò)程中可能還會(huì)以舊的波特率來(lái)傳輸CAN報(bào)文。因此swith_delay要比網(wǎng)絡(luò)上任何一個(gè)節(jié)點(diǎn)的處理時(shí)間都要長(zhǎng),這樣才能避免一個(gè)節(jié)點(diǎn)已經(jīng)改變了波特率,而另一個(gè)節(jié)點(diǎn)還在以舊的波特率工作。在第一次經(jīng)過(guò)switch_delay指定的時(shí)間長(zhǎng)度后,每個(gè)節(jié)點(diǎn)必須在第二個(gè)switch_delay期間完成到新波特率的切換。因而在經(jīng)過(guò)了第二個(gè)switch_delay后,所有的節(jié)點(diǎn)都必須保證以新的波特率監(jiān)聽(tīng)網(wǎng)絡(luò)。至于LSS提供的LSS地址查詢(xún)等功能這里就不介紹了。CANopen協(xié)議中的SDO服務(wù)SDO是服務(wù)數(shù)據(jù)對(duì)象接口(Service Data Obiect)的縮寫(xiě),顧名思義提供服務(wù)數(shù)
39、據(jù)的訪(fǎng)問(wèn)接口,服務(wù)數(shù)據(jù)就是一些實(shí)時(shí)性要求不高的數(shù)據(jù),一般是指節(jié)點(diǎn)配置參數(shù),因此,SDO一般用來(lái)配置和獲得節(jié)點(diǎn)的配置參數(shù)。其優(yōu)先級(jí)只比心跳(Heartbeat)高。SDO既然稱(chēng)之為服務(wù),那就要有服務(wù)的提供者和使用者,提供者就是SDO server,使用者就是SDO client,在CANopen網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)都要有一個(gè)SDO server,因?yàn)槊總€(gè)節(jié)點(diǎn)的對(duì)象字典大部分對(duì)象都是通過(guò)SDO來(lái)訪(fǎng)問(wèn)的,對(duì)象字典的被訪(fǎng)問(wèn),提供所請(qǐng)求的服務(wù)當(dāng)然要有個(gè)SDO server。SDO請(qǐng)求和應(yīng)答報(bào)文都是8個(gè)字節(jié)的數(shù)據(jù),其中包括對(duì)象字典的索引、子索引、SDO命令和數(shù)據(jù)。這里要注意和我們熟知的以太網(wǎng)FTP不同,SDO的
40、上傳和下載正好與之相反,F(xiàn)TP是從client的角度出發(fā)去理解上傳和下載,SDO是以server的角度去理解的,從服務(wù)器上獲得數(shù)據(jù)即對(duì)對(duì)象字典進(jìn)行讀操作叫做上傳,往服務(wù)器上寫(xiě)數(shù)據(jù)即對(duì)對(duì)象字典進(jìn)行寫(xiě)操作叫做下載。CANopen協(xié)議中SYNC功能和使用SYNC是CANopen管理各節(jié)點(diǎn)同步數(shù)據(jù)收發(fā)的一種方法,相當(dāng)于網(wǎng)絡(luò)節(jié)拍,基于同步的PDO按照這個(gè)網(wǎng)絡(luò)節(jié)拍來(lái)執(zhí)行實(shí)時(shí)數(shù)據(jù)的收發(fā)。SYNC屬于生產(chǎn)/消費(fèi)型通訊方式,網(wǎng)絡(luò)中有且只有一個(gè)SYNC生產(chǎn)者,一般有多個(gè)消費(fèi)者,其網(wǎng)絡(luò)標(biāo)識(shí)符優(yōu)先級(jí)很高,一般設(shè)置為0x80,基本上除了NMT優(yōu)先級(jí)最高。SYNC生產(chǎn)者按照固定頻率發(fā)送SYNC報(bào)文,需要SYNC的節(jié)點(diǎn)(消費(fèi)者)將其接收并計(jì)數(shù),當(dāng)計(jì)數(shù)值達(dá)到節(jié)點(diǎn)相應(yīng)TPDO要求時(shí),該TPDO映射的數(shù)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024八年級(jí)地理上冊(cè)第一章疆域和人口-從世界看中國(guó)學(xué)情評(píng)估晉教版
- 大學(xué)生心理健康教育(河南經(jīng)貿(mào)職業(yè)學(xué)院版)學(xué)習(xí)通測(cè)試及答案
- 《金版學(xué)案》2022屆高考政治一輪復(fù)習(xí)課時(shí)作業(yè):必修2-4單元總結(jié)-
- 2025年人教版八年級(jí)數(shù)學(xué)寒假預(yù)習(xí) 第03講 二次根式的加減(3個(gè)知識(shí)點(diǎn)+7大考點(diǎn)舉一反三+過(guò)關(guān)測(cè)試)
- 2025年人教版七年級(jí)數(shù)學(xué)寒假?gòu)?fù)習(xí) 專(zhuān)題05 一元一次方程(4重點(diǎn)串講+13考點(diǎn)提升+過(guò)關(guān)檢測(cè))
- 【狀元之路】2022高考地理總復(fù)習(xí)隨堂訓(xùn)練1-2-4全球氣候變化和氣候類(lèi)型的判讀-
- 【創(chuàng)新設(shè)計(jì)】2021高考化學(xué)(廣東專(zhuān)用)二輪-微題型專(zhuān)練17
- 四川省綿陽(yáng)2024-2025學(xué)年高二上學(xué)期數(shù)學(xué)期末模擬試題(五)(含答案)
- 【原創(chuàng)】江蘇省2021屆高三上學(xué)期第三次周測(cè)數(shù)學(xué)試題
- 部編版語(yǔ)文二年級(jí)下冊(cè)第五單元綜合素養(yǎng)測(cè)評(píng) A卷(含答案)
- 2025年首都機(jī)場(chǎng)集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 2025年醫(yī)院院感工作計(jì)劃
- 中國(guó)珠寶市場(chǎng)發(fā)展報(bào)告(2019-2024)(中英)-中國(guó)珠寶玉石首飾行業(yè)協(xié)會(huì)
- 2024年陜西省安全員《A證》考試題庫(kù)及答案
- 2024版新能源汽車(chē)購(gòu)置補(bǔ)貼及服務(wù)保障合同3篇
- 期末測(cè)試卷-2024-2025學(xué)年語(yǔ)文四年級(jí)上冊(cè)統(tǒng)編版
- 安徽省蕪湖市2023-2024學(xué)年高一上學(xué)期期末考試 數(shù)學(xué) 含解析
- 2023-2024學(xué)年廣東廣州番禺區(qū)四年級(jí)數(shù)學(xué)第一學(xué)期期末綜合測(cè)試試題含答案
- 光譜儀操作流程和注意事項(xiàng)
- 九年級(jí)物理上冊(cè)期末考試試卷及答案
- 初中物理公式表
評(píng)論
0/150
提交評(píng)論