找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3255|回復: 17
收起左側(cè)

關于單片機多機通訊解決方案建議

[復制鏈接]
ID:36977 發(fā)表于 2021-9-26 18:09 | 顯示全部樓層 |閱讀模式
1、用STC8H單片機
2、一個主設備N個從設備(采用軟件分配地址-首次分配-增加從設備分配-根據(jù)距離長短從小到大分配)
3、通訊方式,485或者其他不易分析的通訊方式
4、地址碼,控制碼,數(shù)據(jù),數(shù)據(jù),數(shù)據(jù),數(shù)據(jù)長度,校驗位



考慮用Modbus 不知道有沒有更好的建議。  
回復

使用道具 舉報

ID:419909 發(fā)表于 2021-9-26 19:03 | 顯示全部樓層
還沒研究過。不過目前我也在做一種多機級聯(lián)的項目。用的是通用串口方式。在試用中。
回復

使用道具 舉報

ID:36977 發(fā)表于 2021-9-26 19:06 | 顯示全部樓層
一般單片機地址都是采用撥碼方式設定,現(xiàn)在考慮成本 想用軟件 根據(jù)唯一ID 賦值地址 再根據(jù)距離讓從機從小到大獲取地址。
回復

使用道具 舉報

ID:419909 發(fā)表于 2021-9-26 20:11 | 顯示全部樓層
我這個是通過串口傳輸,但是采用的是應答方式來處理主,從關系。并自動軟件分配ID,獲得主機權限有兩種方式。第一個開機的設備為主機,或者通過按鍵手動設置。
回復

使用道具 舉報

ID:36977 發(fā)表于 2021-9-26 20:14 | 顯示全部樓層
wfqxgw 發(fā)表于 2021-9-26 20:11
我這個是通過串口傳輸,但是采用的是應答方式來處理主,從關系。并自動軟件分配ID,獲得主機權限有兩種方式 ...

你說的我們項目實際情況不容許,我們設備不可能固定誰第一個開機,也不好從機固定不變。所以想這如何根據(jù)唯一ID 查編碼 再根據(jù)返回ID的先后順序固定ID。感謝您的回復
回復

使用道具 舉報

ID:624769 發(fā)表于 2021-9-26 22:03 | 顯示全部樓層
xuchun 發(fā)表于 2021-9-26 20:14
你說的我們項目實際情況不容許,我們設備不可能固定誰第一個開機,也不好從機固定不變。所以想這如何根據(jù) ...

串口多機通信,本來就是依靠不同的地址,來區(qū)分哪臺機,你既不讓從機地址固定,又要區(qū)分各從機,感覺上,只能用一個變通的方法。

確保,從機不同一時間一起開機。
主機,定期呼叫某一特定編號從機。比如 0xee (純粹舉例子)
從機,開機默認 0xee,等待主機分配新地址
主機給這臺新從機分配一個新的地址,并登記到已開機列表。
從機,重新登記主機分配的地址為新地址,并且亮一個指示燈。

開下一臺從機,重復上面步驟。直到所有從機被分配地址

按你的需求好像只能這樣變通實行。

當然,還有一個模仿對碼的方案,就是從機按一個按鍵,就進入對碼狀態(tài),給自己分配對碼頻道 0xee 等待主機分配新地址。
主機按一個鈕,進入對碼狀態(tài),查找 0xee從機,給他分配新地址。
也是一個方案。

回復

使用道具 舉報

ID:36977 發(fā)表于 2021-9-26 22:17 | 顯示全部樓層
188610329 發(fā)表于 2021-9-26 22:03
串口多機通信,本來就是依靠不同的地址,來區(qū)分哪臺機,你既不讓從機地址固定,又要區(qū)分各從機,感覺上, ...

感謝您的回復,可能我的表述有問題,需求是:從設備依次從近至遠安裝到指定位置,系統(tǒng)運行主設備尋找發(fā)現(xiàn)從設備,詢問發(fā)現(xiàn)的從設備數(shù)量是否與實際安裝的設備數(shù)量一致,如果一致系統(tǒng)開始分配地址,從機最近  -先獲取到數(shù)據(jù)  取最小數(shù)地址!但是考慮后期從設備可能更換或者增加,所以不知道大家都是如何處理的。
回復

使用道具 舉報

ID:624769 發(fā)表于 2021-9-26 22:34 | 顯示全部樓層
xuchun 發(fā)表于 2021-9-26 22:17
感謝您的回復,可能我的表述有問題,需求是:從設備依次從近至遠安裝到指定位置,系統(tǒng)運行主設備尋找發(fā)現(xiàn) ...

你這個只能從非標通信角度去考慮了。

比如環(huán)狀串口模式,即,主機 TX =>  一號機 RX,  一號機 TX => 二號機 RX  ……………… , N號機 TX => 主機RX

那么,主機發(fā)送    “開始設置”    一號機收到, 給自己標記  1號機,然后發(fā)送  “你是2號機”, …………………… N號機收到 后  給自己標注 N號機, 并發(fā)送 你是 “N + 1 號機”  , 主機收到后, 標記,總共 N 號機。

通信時, 主機發(fā)送:  X 號機 做 ABC       然后每個從機接力,收到后判斷自己是不是 X 號機,不是的話繼續(xù)傳下去,是的話, 就做 ABC   做完后, 發(fā)送: X號機說: CDE    然后,再一圈接力。直到主機收到 后 記錄。
回復

使用道具 舉報

ID:36977 發(fā)表于 2021-9-26 22:43 | 顯示全部樓層
188610329 發(fā)表于 2021-9-26 22:34
你這個只能從非標通信角度去考慮了。

比如環(huán)狀串口模式,即,主機 TX =>  一號機 RX,  一號機 TX =>  ...

感謝,我是想先根據(jù)ID判斷有多少從機 然后丟多少地址出去 讓先收到從機自己撿最小的拿走!主機發(fā)功能碼時候直接帶地址 丟出去 是誰的自己判斷 然后干活。
回復

使用道具 舉報

ID:624769 發(fā)表于 2021-9-26 22:59 | 顯示全部樓層
xuchun 發(fā)表于 2021-9-26 22:43
感謝,我是想先根據(jù)ID判斷有多少從機 然后丟多少地址出去 讓先收到從機自己撿最小的拿走!主機發(fā)功能碼時 ...

我知道你的意思,但是,帶地址多從機串口通訊(其實就是并聯(lián)) 在從機沒有分配地址前,所有從機都為收到相同的內(nèi)容,又會同時發(fā)送信息,這是無法調(diào)節(jié)的矛盾,要么,你手動每個從機設置好地址,要么就是我說的建立一個對碼“頻道”,要么,就只能環(huán)狀通信這一條路,
當然,還有一個辦法,就是搭建一個串行路由器,所有通訊通過這個串行路由來分配。不過,這個成本,還不如上網(wǎng)絡模塊了。通過以太網(wǎng)方式通訊就不存在這個問題了。

當然,如果你主機IO多,通過,不同的IO,下拉不同從機的 指定IO 告訴從機,這是我和你私密通訊,也是一個方法。這就類似 SPI 的一主多從模式,通過不同的 SS 線控制,SPI的的片選。
回復

使用道具 舉報

ID:36977 發(fā)表于 2021-9-26 23:04 | 顯示全部樓層
188610329 發(fā)表于 2021-9-26 22:59
我知道你的意思,但是,帶地址多從機串口通訊(其實就是并聯(lián)) 在從機沒有分配地址前,所有從機都為收到 ...

好的,感謝您。我再考慮考慮
回復

使用道具 舉報

ID:47286 發(fā)表于 2021-9-27 02:00 來自觸屏版 | 顯示全部樓層
xuchun 發(fā)表于 2021-9-26 22:17
感謝您的回復,可能我的表述有問題,需求是:從設備依次從近至遠安裝到指定位置,系統(tǒng)運行主設備尋找發(fā)現(xiàn) ...

其他都不是問題 就是要求距離確定先后沒想出怎么弄
回復

使用道具 舉報

ID:343102 發(fā)表于 2021-9-27 07:38 | 顯示全部樓層
試試提前寫入地址,用I2C通訊。缺點是速率較低。
回復

使用道具 舉報

ID:236035 發(fā)表于 2021-9-27 08:05 | 顯示全部樓層
要按距離來,就只能手拉手了。遠的從機把離主機近的上一個從機作為主機。
回復

使用道具 舉報

ID:800529 發(fā)表于 2021-9-27 09:21 | 顯示全部樓層
多機通訊的話,也可以考慮下CAN總線通訊。
回復

使用道具 舉報

ID:236035 發(fā)表于 2021-9-27 10:04 | 顯示全部樓層
baonng 發(fā)表于 2021-9-27 09:21
多機通訊的話,也可以考慮下CAN總線通訊。

樓主要求無地址。
回復

使用道具 舉報

ID:123289 發(fā)表于 2021-9-27 11:06 | 顯示全部樓層
說白了,就是個通訊協(xié)議!
通用的格式是:
起始標記、字節(jié)數(shù)、源機號、的機號、命令號、數(shù)據(jù)[N]、校驗碼、結(jié)束標記。
這樣比較全�?筛鶕�(jù)具體情況刪除一些,如樓主條件是1拖N。由于1是固定的,所以源機號可省。
通過字節(jié)數(shù)據(jù)可以計算出結(jié)束標記的位置,結(jié)束標記可省。不省也有不省的好處。誰寫程序誰清楚。
回復

使用道具 舉報

ID:81196 發(fā)表于 2021-9-29 13:40 | 顯示全部樓層
當然你也可以選擇CAN總線,速度又快,也有自己的仲裁機制。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

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

快速回復 返回頂部 返回列表