Ⅰ 假如CAN通訊為一主多從,且從節點MCU可變換,CAN通訊從節點ID怎麼設置,CAN主節點怎麼識別從節點ID
節點ID設置可以屬於CAN應用層協議內容,而應用協議可以自行定義。
一、從節點的版ID如果要和MCU「不相關」,可權以又多種方式實現,ID事先裝入EEPROM,或者用硬體的撥碼開關來指示。
如果邏輯上復雜一些,可以做到ID自動分配,自動識別。
二、「如從主節點向從節點下載程序」——可以主節點同時向多個從節點發送數據(廣播),也可以指向特定的ID發送(單個問答式)。
實際上主節點的數據發到匯流排上了,所有從節點都可以接收到的,至於如何接收可以兩種方式:
1、每個節點都把數據收入緩沖區,軟體判斷不屬於自己節點的就丟棄不處理。
2、硬體設置CAN濾波,不屬於自己節點的數據就不會收入緩沖區,節點處於空閑狀態,只有屬於自己的特定ID才會收進來。
Ⅱ can匯流排的ID怎麼設定的
CAN匯流排ID是包含在報文幀中的。
1、主要用作CAN匯流排的仲裁使用,所以一般來說網版絡上的每個節點(向匯流排上權發送)的ID應該有所不同。ID值越低,報文優先順序越高,在兩組不同ID報文同時上線時候,仲裁機制使得ID值低的佔用匯流排,ID值高的退出。
2、ID域可以是11位和29位,其值和含義可以由用戶自定義,可以用作高層協議的管理,比如CANopen等協議中把ID的部分做為「源地址」,部分作為「目的地址」,這樣CAN報文從哪來到哪去都清晰了。
3、ID的另一個作用是配合接收方濾波使用,就是說一般接收的濾波器可以設定接收ID的范圍等,用於過濾掉不需要接收的信息,減輕CPU的處理負擔。
Ⅲ CAN通信:CAN卡接收到的ID和單片機里設置的ID不相同是什麼原因
意思是下位機自己開發的節點發的ID 和上位機接收到顯示的ID不同?
1、基本事項包括兩個部分A:注意看一下本節點的發送ID在填入SJA1000的發送標識符TX identifier(標准幀兩個位元組,擴展幀四個位元組)的時候需要移位處理,因為有的位是留空不用或者做其他用途的。
方法:擴展模式是四個位元組的ID整體左移3位後依次填入填入TX identifier。(相信這個您應該在手冊上已經看到)
B:如果下位節點的移位確認是正確的,那麼需要確認CAN卡的接收是否是直接顯示的節點ID還是顯示的SJA1000的ID接收寄存器,因為有的廠家沒有把SJA1000寄存器值還原成實際ID。
2、如果方法1不成功,建議測試兩組數據,用實際ID,0x1FFFFFFF和0x1AAAAAAA寫入發到CAN卡上看看收到是什麼ID,你補充出來,這樣基本可以看出問題所在
Ⅳ CAN 匯流排 上,如果2個節點ID號一樣,先後發送數據後怎麼辨別匯流排上出現了兩個相同ID
雖然這樣的應用在CAN的規范里沒有明確禁止,但是絕對不建議這樣設計網路規劃,專這樣會為後續帶來的諸如升級屬等十分復雜的問題,也影響網路的穩定。
現在回答補充問題,首先你要明確ID是賦給幀的,不是直接給節點的,只是某節點知道自己要接收某個ID的幀。匯流排上的節點來說它只管取匯流排上他應該取的ID的幀,並不管是誰發的。
即使是遠程幀,發出請求的節點在獲得相應時也僅僅是根據幀ID判定,並不影響其他節點的接收。
再回到開始,首先這樣的網路規劃是非常不合理的,等於是網路上出現了A和B兩個對某一幀功能相同的節點,完全沒必要,如果你要更新某個信號,只需讓A節點重新發送新的即可,如果更新的信號是通過B節點模塊更新的,也只需先通過B向A發送一個幀更新某個信號,然後A再重新發送更新的幀。
如果你兩個節點關聯同一個幀,以後加入新節點和升級改動網路的時候會多一倍的工作量,而且再遠程幀的響應中,同ID多響應很容易出現問題。
總之一句話,我們要從匯流排的角度去看待CAN,不要從節點的角度出發
Ⅳ 我需要研究CAN匯流排數據是有特定ID的,它們可以通過usb can轉換器分離出來嗎
感謝題主復的邀請,我來說下我制的看法:
答案當然是可以的,尤其是當你使用了GCGD的USBCAN轉換器的時候。
通過ECANTOOLS軟體,你可以直接設置濾波模式,也就是說,過濾掉不需要的數據類型,只讓有一定ID的數據通過。這樣做的話,就可以減少數據的閱讀量,提高工作效率。這對於有龐大信息量的汽車CAN數據解析工作來說,是具有重要意義的。如果您有需要相關的設備和軟體,請登錄GCGD官網進行具體的咨詢。
Ⅵ CAN匯流排如何設置本節點標識符,就是本節點ID.
1.can協議中有規定,在某幾位發送目的站的地址,目的站可以通過對這幾位進行選擇,自行回決定是否接受答該消息,是自變成設定的.
2.一般CAN通信晶元都可以在寄存器里設定自己需要接受的標識符等
A要和B通信,A要指導B的標識符,然後發出去,B發現標識符正確接受,C和D讀完標識符後選擇丟棄。
要實現CAN通信,選擇一個合適的can控制晶元和驅動晶元即可.
Ⅶ can匯流排 多個節點都想發數據到某一節點,怎麼寫ID
雖然這樣的應用在CAN的規范里沒有明確禁止,但是絕對不建議這樣設計網路規內劃,這樣會為後續帶容來的諸如升級等十分復雜的問題,也影響網路的穩定。
現在回答補充問題,首先你要明確ID是賦給幀的,不是直接給節點的,只是某節點知道自己要接收某個ID的幀。匯流排上的節點來說它只管取匯流排上他應該取的ID的幀,並不管是誰發的。
Ⅷ 如果CAN匯流排中有10台設備,如果其中有標識符ID一樣,會出現什麼情況
不會,標識符只是發送時的沖裁判斷,後面的數據不一樣,才能知道是哪一個設備發送出來的。不過現實不是這樣用的,需要用不同的ID表示不一樣的含義,還要根據CAN數據的重要性來安排ID.
Ⅸ 兩個can設備,其中一個設置了過濾模式,另一個發送id不匹配的報文,請
CAN匯流排ID是包含在報文幀中的. 1、主要用作CAN匯流排的仲裁使用, 所以一般來說網路上的每個節點(向匯流排上發送)的ID應該有所不同. ID值越低
Ⅹ CAN匯流排中 如果有多個節點發送相同的ID, 將會出現什麼樣的錯誤
會出復現仲裁錯誤,因為仲裁製是監測ID的。如果兩個及以上的節點同時發送ID值一樣的報文,但是數據域內容如果不同,那麼這些節點本身可能認為發生出錯。
從應用層協議的含義上說,ID通常包含節點地址等信息,所以一般不要相同,否則不能區分。