CAN匯流排中如果有多個節點傳送相同的ID,將會出現什麼樣

2021-03-22 16:38:18 字數 4720 閱讀 7527

1樓:勝利之

會出現仲裁錯誤,因為仲裁是監測id的。如果兩個及以上的節點同時傳送id值一樣的報文,但是資料域內容如果不同,那麼這些節點本身可能認為發生出錯。

從應用層協議的含義上說,id通常包含節點位址等資訊,所以一般不要相同,否則不能區分。

can匯流排中 如果有多個節點傳送相同的id,將會出現什麼樣的錯誤

2樓:翠豐巴安和

會出現仲裁錯誤,因為仲裁是監測id的。如果兩個及以上的節點同時傳送id值一樣的報文,但是資料域內容如果不同,那麼這些節點本身可能認為發生出錯。

從應用層協議的含義上說,id通常包含節點位址等資訊,所以一般不要相同,否則不能區分。

can 匯流排 上,如果2個節點id號一樣,先後傳送資料後怎麼辨別匯流排上出現了兩個相同id?

3樓:匿名使用者

雖然這樣的應用在can的規範裡沒有明確禁止,但是絕對不建議這樣設計網路規劃,這樣會為後續帶來的諸如公升級等十分複雜的問題,也影響網路的穩定。

現在回答補充問題,首先你要明確id是賦給幀的,不是直接給節點的,只是某節點知道自己要接收某個id的幀。匯流排上的節點來說它只管取匯流排上他應該取的id的幀,並不管是誰發的。

即使是遠端幀,發出請求的節點在獲得相應時也僅僅是根據幀id判定,並不影響其他節點的接收。

再回到開始,首先這樣的網路規劃是非常不合理的,等於是網路上出現了a和b兩個對某一幀功能相同的節點,完全沒必要,如果你要更新某個訊號,只需讓a節點重新傳送新的即可,如果更新的訊號是通過b節點模組更新的,也只需先通過b向a傳送乙個幀更新某個訊號,然後a再重新傳送更新的幀。

如果你兩個節點關聯同乙個幀,以後加入新節點和公升級改動網路的時候會多一倍的工作量,而且再遠端幀的響應中,同id多響應很容易出現問題。

總之一句話,我們要從匯流排的角度去看待can,不要從節點的角度出發

4樓:匿名使用者

看了很多有關can匯流排的提問,都在糾結於「你傳送我接收」這種通訊模式的討論,這個實際上是對can匯流排很大的誤解。

can匯流排通訊介質就是一高一低兩條線,根據兩線之間的電壓差來判斷當前傳送的訊號是0或1,所有節點都併聯到這兩根線上,從can的基本通訊來說(can 2.0b,或者iso11898),所有節點都是沒有位址這個說法的,大家要傳送資訊,只需往兩根線上加電壓。從can的鏈路層可以看出,如果兩個相同id的can幀同時發出來的話,那就只能看誰先發誰就有優先權。

單從這裡是看不出這個can幀來自哪個節點的。

那為什麼大家會看到很多can協議都會提到「位址」的概念呢?那是因為can 2.0a或b以及iso11898只定義了can的基本協議,對於很多應用場合是遠遠不夠,所以各個廠家根據各個行業的應用又制定高層協議(也叫上層協議),就是在can 2.

0和iso11898的基礎之上,對can的id重新進行了包裝,比如sae j1939協議就對擴充套件幀的29位id進行重新定義,將其中其中兩個位元組定義為pf和ps,合成為pgn,還有乙個位元組定義為sa,就是源位址。這樣j1939發出來的can幀裡面就有所謂的源位址的說法,這樣在樓主所說的這個情形就可以分辨出來這個can幀的**了。

另外在j1939協議的網路裡,可以通過傳送位址請求幀,讓所有節點都傳送一次位址宣告幀,從而獲得當前網路中有多少個節點存在,各自的位址是多少。如果有兩個節點的位址有衝突,需要制定位址的仲裁機制來解決。

5樓:匿名使用者

can匯流排上的每個節點傳送的幀資訊都有自己的id,接收節點會根據這個id來判斷是不是給自己的資訊。因為id是人為定義的,做系統時不會出現有相同id的情況。

6樓:匿名使用者

沒有看到實際情形不好說明白,一般想象應該是這樣的:對於操作應該物件可以很方便的觀察到電源的共給迴路,把這個去除之外,餘下的應該就是通訊線路,多觀察

如果can匯流排中有10臺裝置,如果其中有識別符號id一樣,會出現什麼情況?

7樓:匿名使用者

不會,識別符號只是傳送時的衝裁判斷,後面的資料不一樣,才能知道是哪乙個裝置傳送出來的。不過現實不是這樣用的,需要用不同的id表示不一樣的含義,還要根據can資料的重要性來安排id.

can匯流排怎麼實現一各節點傳送多各節點接收,應答機制,向大神求解額!!!!!

8樓:匿名使用者

ack slot只有乙個bit,而接下去的ack delimiter始終為隱性(我們可認為是1),當資料到達ack slot的時候,所有的節點都會傳送顯性位(我們可以認為是0),而傳送者在ack這個時間裡保持隱性位(即傳送者在傳送的時候ack slot 為1),這時傳送者會檢測匯流排上的ack時間內的訊號,如果是0,則表示正確,如果是1,表示有錯誤。如果當中有某乙個節點在ack slot填入隱性位,則匯流排上同樣還是顯性位電平,故只要匯流排上有乙個節點正確接收到資料,則ack slot就會被填入顯性電平;那麼,接收錯誤的節點如何來告知傳送者此次傳送不成功呢?這時候就要用到can的錯誤幀,當乙個接收者收到錯誤的資料的時候,它立即開始傳送乙個錯誤幀,則接下去匯流排上的訊號就是這個錯誤幀,其它的節點和傳送者也都會收到這個錯誤幀,那所有的節點都知道出錯了,接收者會丟掉此次訊息,而傳送者會試圖重發此次訊息。

這才是ack slot真正的含義。

9樓:勝利之

can匯流排傳送,就是已廣播的形式發出的(多節點接收)。

1、當接收器正確地接收到有效的報文,接收器就會在應答間隙(ack slot )

期間(傳送ack訊號)向傳送器傳送一「顯性」的位以示應答。

2、結束

3、匯流排仲裁

10樓:系叡雋運幹

首先你得保證你的時序正確,其它18b20是否能可靠讀寫,時序沒問題,檢查連線,連線沒問題,那就是它o了。

11樓:匿名使用者

樓主解決了麼?我也很困惑啊

can匯流排通訊中,如果是多節點通訊。多通訊中遇到了問題。問題在補充中: 50

12樓:匿名使用者

首先,can匯流排不分主機,最多是整車廠在網路規劃的時候定義了乙個功能比較多的節點,各家車廠不一樣(如閘道器),或者類似powermaster。但是can本身協議裡是不存在主、從的。

其次,樓上說的仲裁延時的問題,can協議本身是考慮到這個問題的,當然按他的方法通過協議延時可以解決,但是既然can協議已經給了我們解決方法那肯定是更科學更有效的,具體的去看can的仲裁吧,你需要乙個節點的報文傳送不存在延時,只需要給它分配乙個優先順序很高的id即可,當然這得從網路規劃的角度出發,不是這麼簡單說說的。

回到你的問題,你說的主機請求資料,在can中只能是遠端幀(乙個遠端標誌位為1,資料場為空的幀),當這個幀出現在匯流排上時,擁有這個id資料的節點就要傳送這個同id的完整幀(遠端幀標誌位為0)。但是只能有乙個節點接受這個遠端幀的請求。

這裡強調乙個概念,同乙個id的幀只能由乙個節點傳送,不然可想而知匯流排上都是衝突。

你補充問一下,你想實現什麼效果吧

請問can匯流排上乙個節點能用兩個id號傳送訊息嗎,會不會用乙個id號傳送完,再換個id號就發不出去了/

13樓:匿名使用者

首先我覺得你對can匯流排的理解上有點偏差,can匯流排上傳送的報文是根據報文資訊重要性和實時性來定義優先順序的,其次can匯流排的報文識別符號(也就是你所說的id)都是不同的,這個就是你軟體定義的乙個識別符號的報文對應哪些節點要接收。can匯流排節點不存在物理ip位址,它所謂的ip位址(叫識別符號)只是和報文內容有關,如果乙個節點要連續傳送兩個不同的報文前提是第二個報文的優先順序比其他節點同時想要傳送的報文高。具體想要了解具體的匯流排競爭規範可以追問~~~·

關於can匯流排的id號,遠端幀,有一些問題,迷茫的要死,求高手解答

14樓:匿名使用者

問題1: can資料域都是事先定義好了的,必然會包含can.bin的資料,node b只需要響應遠端幀即可正確回應node a想要的資料了。

問題2: 不是節點優先順序不同,而是資料幀的優先順序不同,每個資料幀的仲裁域中包含id,優先順序就是比較id的大小。兩個節點同時傳送資料幀和遠端幀,也是靠正常的仲裁機制來判斷傳送順序的,沒有衝突。

如果某一時刻資料幀和遠端幀的id相同,那麼資料幀的優先順序高於遠端幀。

問題3: 問題2 已回答。

15樓:匿名使用者

1.你可以不發遠端幀,發資料幀,然後在資料部分指定要求的檔案。或者發遠端幀,但是遠端幀id的謀幾位規定為要求的檔案號

16樓:小連

我們工作一年多,遠端幀在實際是沒有應用的。

三個問題結合到一起回答

首先說下什麼是遠端幀,最新iso11898 -2015版,frame that requests the tran**ission of a dedicated data frame   請求專用資料幀傳輸的幀。a傳送給b一幀遙控幀報文(同時c/d/e都會收到,但不作處理),b會發給a一幀資料幀報文。(幀的結構如下圖,資料幀比遙控幀多乙個資料段)

id是一般是主機廠自定義,比如 $0-500是 資料幀id 500-600是遠端幀id 600-700診斷id(實際用不到遠端幀,都是資料幀)。非同時傳送時誰先發出,誰先發;同時發出時,id越小優先順序越高,無論是什麼幀!

id只是幀的一部分,資料段也是幀的一部分(如圖,看幀的結構)。

幀裡面具體是什麼呢?是二進位制數,比如11111111111,前三個1代表id 後三個1代表資料。資料幀的三個1也是主機廠自定義的,如can矩陣。

excel中VLookup函式,如果有重複值,如何取想要的那個值

你可以將你要查詢的關鍵字聯結,如採購單號和收穫日期,聯結成的新字段將是唯一,無重複項,就可以用vlookup查詢了。用vlookup的話,你首先需要把 按收貨日期排序 倒序 查出的結果就是了 這裡隱復含了查詢關鍵字和最大制兩個條件,用vlookup解決不了。比如要查單號cg05156012的最近收貨...

NBA籃球比賽中如果有隊員受傷了應該怎麼處理呢?

如果nba籃球比賽中有人受傷了,肯定會進行暫停,然後隊醫進行緊急處置,然後再拿下去做一些 在nba比賽中,如果出現了隊員受傷的情況,裁判可以暫停比賽,但如果當時是活球的情況,應該等持球隊投籃或者失去球權,才能暫停。受傷球員如果不能繼續比賽,教練要上替補球員。nba眾隊員如果受傷的話,一般會被抬下場,...

請問招警考試體檢中如果有蛀牙但修補好了這樣有沒有影響啊

這個 應該沒有影響吧 警察的牙齒也會壞的 參軍蛀牙體檢有沒有影響,影響大不大?當兵體檢的要求是比較嚴格的,相信這一點有很 多人都知道,當兵體檢也要進行口腔方面的檢查。那麼,當兵體檢有蛀牙可以嗎?入伍體檢口腔科的合格標準有哪些?有蛀牙也是可以當兵的。入伍體檢標準規定,三度齲齒 齒缺失並列在一起的超過二...