找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2312|回復(fù): 10
收起左側(cè)

關(guān)于CAN總線請(qǐng)教大家個(gè)問題

[復(fù)制鏈接]
ID:228467 發(fā)表于 2020-3-24 19:37 | 顯示全部樓層 |閱讀模式
       我現(xiàn)在使用1個(gè)主機(jī)給2個(gè)從機(jī)發(fā)送數(shù)據(jù),數(shù)據(jù)是電機(jī)的轉(zhuǎn)動(dòng)圈數(shù),每個(gè)從機(jī)都控制一個(gè)直流電機(jī),從機(jī)的電機(jī)執(zhí)行完轉(zhuǎn)動(dòng)圈數(shù)后給主機(jī)一個(gè)信號(hào),表示從機(jī)執(zhí)行完這組數(shù)據(jù)了,主機(jī)接受到這個(gè)信號(hào)后再給從機(jī)發(fā)送下一組數(shù)據(jù)讓兩個(gè)電機(jī)同時(shí)運(yùn)動(dòng),2個(gè)電機(jī)的圈數(shù)是一 一對(duì)應(yīng)的。要求是必須每個(gè)電機(jī)都執(zhí)行完上一組的數(shù)據(jù)后,主機(jī)才能 同時(shí) 給2個(gè)從機(jī)發(fā)送下一組數(shù)據(jù),現(xiàn)在的問題是 每個(gè)電機(jī)的轉(zhuǎn)動(dòng)圈數(shù)是不同的也就是說 每個(gè)從機(jī)給主機(jī)的這個(gè) 執(zhí)行完 信號(hào)并不是同時(shí)到達(dá)主機(jī)的,怎么才能讓主機(jī)給2個(gè)從機(jī)同時(shí)發(fā)送信號(hào)呢?
    我自己寫了個(gè)程序但是沒有實(shí)現(xiàn)我想要的功能
       i f ( 從機(jī)1執(zhí)行完信號(hào) && 從機(jī)2執(zhí)行完信號(hào) )
         {
             給從機(jī)1發(fā)送數(shù)據(jù);
             給從機(jī)2發(fā)送數(shù)據(jù);
         }



我的其他想法是能不能使用 while()進(jìn)行等待,不知道行不行

想請(qǐng)各位大佬來指點(diǎn)指點(diǎn),感激不盡!

回復(fù)

使用道具 舉報(bào)

ID:687694 發(fā)表于 2020-3-24 23:15 | 顯示全部樓層
你這個(gè)if應(yīng)該可以的,在發(fā)送完數(shù)據(jù)后應(yīng)該復(fù)位執(zhí)行完畢的標(biāo)志。
回復(fù)

使用道具 舉報(bào)

ID:715178 發(fā)表于 2020-3-25 00:14 | 顯示全部樓層
CAN 總線是廣播的,給主機(jī)給兩個(gè)從機(jī)發(fā)送完指定圈數(shù)之后,再發(fā)送一個(gè)觸發(fā)信號(hào)(或者叫啟動(dòng)信號(hào)),只要發(fā)一個(gè)信號(hào),兩個(gè)從機(jī)收到啟動(dòng)信號(hào)后,同時(shí)轉(zhuǎn)動(dòng),可以達(dá)到同步的效果。
回復(fù)

使用道具 舉報(bào)

ID:715178 發(fā)表于 2020-3-25 00:16 | 顯示全部樓層
發(fā)送完圈數(shù)后,用一個(gè)啟動(dòng)信號(hào),來同時(shí)觸發(fā)兩個(gè)從機(jī)開始轉(zhuǎn)動(dòng)。
回復(fù)

使用道具 舉報(bào)

ID:228467 發(fā)表于 2020-3-25 10:19 | 顯示全部樓層
lovexulu 發(fā)表于 2020-3-24 23:15
你這個(gè)if應(yīng)該可以的,在發(fā)送完數(shù)據(jù)后應(yīng)該復(fù)位執(zhí)行完畢的標(biāo)志。

感謝您回復(fù)了!
回復(fù)

使用道具 舉報(bào)

ID:420836 發(fā)表于 2020-3-25 10:21 | 顯示全部樓層
CAN總線上的通信基于消息廣播。  兩個(gè)從節(jié)點(diǎn)廣播就緒消息,主節(jié)點(diǎn)接收此消息,并開始向兩個(gè)從節(jié)點(diǎn)廣播同一消息,然后兩個(gè)從節(jié)點(diǎn)將請(qǐng)求的具有指定ID的數(shù)據(jù)幀廣播回總線。
回復(fù)

使用道具 舉報(bào)

ID:228467 發(fā)表于 2020-3-25 10:27 | 顯示全部樓層
xuzhou201206 發(fā)表于 2020-3-25 00:14
CAN 總線是廣播的,給主機(jī)給兩個(gè)從機(jī)發(fā)送完指定圈數(shù)之后,再發(fā)送一個(gè)觸發(fā)信號(hào)(或者叫啟動(dòng)信號(hào)),只要發(fā)一 ...

從機(jī)把上一次的數(shù)據(jù)執(zhí)行完了給主機(jī)個(gè)信號(hào),表示從機(jī)執(zhí)行完了,主機(jī)接收到這個(gè)信號(hào) 才發(fā)送下一組數(shù)據(jù)的,但是兩個(gè)從機(jī)并不是同時(shí)給主機(jī)信號(hào)的,所以我用那個(gè) i f 語(yǔ)句的,您說的這個(gè) 廣播啟動(dòng)信號(hào),我這邊是加了的
回復(fù)

使用道具 舉報(bào)

ID:228467 發(fā)表于 2020-3-25 10:31 | 顯示全部樓層
xuzhou201206 發(fā)表于 2020-3-25 00:16
發(fā)送完圈數(shù)后,用一個(gè)啟動(dòng)信號(hào),來同時(shí)觸發(fā)兩個(gè)從機(jī)開始轉(zhuǎn)動(dòng)。

主機(jī)發(fā)送 啟動(dòng)信號(hào)的前提是 兩個(gè)從機(jī)都把各自的數(shù)據(jù)執(zhí)行完了的,如果只有 從機(jī)1 執(zhí)行完了他的數(shù)據(jù)返回了 執(zhí)行完信號(hào),而 從機(jī)2 并沒有返回這個(gè) 執(zhí)行完 信號(hào),這該怎么辦呢?用while 等待嗎?
回復(fù)

使用道具 舉報(bào)

ID:228467 發(fā)表于 2020-3-25 10:32 | 顯示全部樓層
TTQ001 發(fā)表于 2020-3-25 10:21
CAN總線上的通信基于消息廣播。  兩個(gè)從節(jié)點(diǎn)廣播就緒消息,主節(jié)點(diǎn)接收此消息,并開始向兩個(gè)從節(jié)點(diǎn)廣播同一 ...

主機(jī)發(fā)送 啟動(dòng)信號(hào)的前提是 兩個(gè)從機(jī)都把各自的數(shù)據(jù)執(zhí)行完了的,如果只有 從機(jī)1 執(zhí)行完了他的數(shù)據(jù)返回了 執(zhí)行完信號(hào),而 從機(jī)2 并沒有返回這個(gè) 執(zhí)行完 信號(hào),這該怎么辦呢?用while 等待嗎?
回復(fù)

使用道具 舉報(bào)

ID:228467 發(fā)表于 2020-3-25 10:35 | 顯示全部樓層
xuzhou201206 發(fā)表于 2020-3-25 00:16
發(fā)送完圈數(shù)后,用一個(gè)啟動(dòng)信號(hào),來同時(shí)觸發(fā)兩個(gè)從機(jī)開始轉(zhuǎn)動(dòng)。

主機(jī)發(fā)送 啟動(dòng)信號(hào)的前提是 兩個(gè)從機(jī)都把各自的數(shù)據(jù)執(zhí)行完了的,如果只有 從機(jī)1 執(zhí)行完了他的數(shù)據(jù)返回了 執(zhí)行完信號(hào),而 從機(jī)2 并沒有返回這個(gè) 執(zhí)行完 信號(hào),這該怎么辦呢?用while 等待嗎?
回復(fù)

使用道具 舉報(bào)

ID:680763 發(fā)表于 2020-4-22 19:05 | 顯示全部樓層
把你的成果分享給大家好么?也好讓大家學(xué)習(xí)討論
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表