欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 關于單片機CAN總線有個問題想請教下大家 [打印本頁]

作者: 上善若水001    時間: 2022-9-15 19:24
標題: 關于單片機CAN總線有個問題想請教下大家
關于CAN總線有個問題想請教下大家
就是我現在用的是一個主機來控制3個從機。單片機程序流程是主機發送一個廣播消息,3個從機接收到消息后執行相關功能,執行完后 3個從機分別給主機發送一個消息證明已經執行完了,然后主機接收完這3個消息后再發一個廣播消息,讓3個從機繼續執行,就這樣一直循環。現在的問題是 我把接收消息的程序放到了定時器中斷里,10ms讀取一次,發現有時候從機就停止執行功能了,我用串口打印的方式查找錯誤發現是主機這邊有時候會接收不到個別從機的數據,但是從機是發送正常的。所以應該是3個從機發送的數據沖突了,導致主機漏掉了數據。我目前的解決辦法是讓主機接收到哪個從機的數據后就給那個從機發送消息說不用發送了。現實情況是之前的從機偶爾停止情況改善很多,但是還是有,我實在沒有辦法了,想來求助下大家

1.jpg (92.65 KB, 下載次數: 95)

這是主機

這是主機

2.jpg (72.92 KB, 下載次數: 86)

這是主機

這是主機

3.jpg (110.88 KB, 下載次數: 82)

這是主機

這是主機

作者: 上善若水001    時間: 2022-9-15 19:24
這是從機

5.jpg (108.77 KB, 下載次數: 85)

5.jpg

作者: pcf2000    時間: 2022-9-16 12:38
采用廣播的方式發送命令,意味著3從機同時接收到數據,同時執行動作,還有可能同時返回數據,這就會導致總線競爭的,所以要解決好競爭的問題;再一個就是,如果3從機的實時性要求不高,主機可以采取輪詢發送命令的方式進行,間隔一定時間輪次發送命令,可以避免總線競爭問題
作者: 圓就是圈圈    時間: 2022-9-16 13:45
這應該是緩沖區的問題,你的緩沖區里邊里面應該只能接受一條消息,導致其他消息被頂出了緩沖區或者無人接受
作者: glinfei    時間: 2022-9-16 15:23
我覺得還是總線沖突,反正你運動函數也不返回成功值,不如把從機返回執行命令提前在運動函數前,這樣大家基本同時返回值,然后你給每個從機不同延時,這樣能減少沖突。還有,也可以在從機發信前,先監聽總線是否有信息在發送。反正能用就行,沖突跟干擾一樣是不可能徹底解決的。
作者: yzwzfyz    時間: 2022-9-17 09:01
CAN通訊是硬件沖突的,CAN的地址有優先識別,當多路同時發送數據時,地址優先的會搶到總線,直到它發完數據,其它另一個次優先的才能使用總線。
【解決的方案】是:每個設備間隔一段時間發數據就可以了。
間隔多久呢?估算一下,假設4個機子的總數據量一起發完需要T時間,間隔時間>T,就可以了,這是CAN通訊的特長!不必考慮在T時間內,會不會發生沖突。即使你同時發,它也會自動通過硬件,讓地址優先的先發,發完后,其它的再發,優先級差的,一定最后發。
也即,CAN數據的真正發送時刻,不是你下達發送命令的時刻,你的命令下達后,只是將數據送入緩沖區,當總線上有空閑時(比你優先的不用了),此刻數據才會被發出。

作者: 上善若水001    時間: 2022-9-17 10:38
pcf2000 發表于 2022-9-16 12:38
采用廣播的方式發送命令,意味著3從機同時接收到數據,同時執行動作,還有可能同時返回數據,這就會導致總 ...

感謝老哥的指點了!
作者: 上善若水001    時間: 2022-9-17 10:39
圓就是圈圈 發表于 2022-9-16 13:45
這應該是緩沖區的問題,你的緩沖區里邊里面應該只能接受一條消息,導致其他消息被頂出了緩沖區或者無人接受

感謝老哥的指點了!CAN緩沖區有8個字節,我只發了1個,應該不是這里的問題
作者: 上善若水001    時間: 2022-9-17 10:40
glinfei 發表于 2022-9-16 15:23
我覺得還是總線沖突,反正你運動函數也不返回成功值,不如把從機返回執行命令提前在運動函數前,這樣大家基 ...

非常感謝老哥的指點!
作者: 上善若水001    時間: 2022-9-17 10:41
yzwzfyz 發表于 2022-9-17 09:01
CAN通訊是硬件沖突的,CAN的地址有優先識別,當多路同時發送數據時,地址優先的會搶到總線,直到它發完數據 ...

厲害!非常感謝老哥的指點,學習了




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1