舵機的分布式控制系統及方法與流程
2023-04-25 03:15:01

本發明涉及自動化機器人技術領域,尤其涉及一種舵機的分布式控制系統及方法。
背景技術:
舵機最早應用於船舶上,由於其轉角可連續控制,被廣泛應用於智能小車及機器人等領域。大多數舵機控制系統採用的是集中式控制方法,即通過一個控制器產生一路或多路PWM信號驅動舵機轉動。控制器需要執行路徑規劃,計算每個舵機的目標位置、運動速度等控制參數,並產生相應的PWM信號驅動舵機轉動,同時需要採集各路舵機的反饋信號方便實時跟蹤調節,使各舵機以最佳性能達到指定的目標位置。
但是,集中式控制方法存在如下不足:1.當舵機數量較多時系統控制難度增加、接線複雜;2.當舵機安裝位置遠時,控制系統抗幹擾能力降低等;3.控制系統的控制器處理所有的控制功能,佔用資源較多、負擔重;4.控制系統控制的舵機數量有限,不易擴展,當舵機數量比較多時,無法滿足要求。
技術實現要素:
發明目的:本發明針對現有技術存在的問題,提供一種舵機的分布式控制系統。
技術方案:本發明所述的舵機的分布式控制系統包括:
上位機,用於當上位機對舵機需要進行控制時,向通訊控制器發送舵機控制參數和對應的通訊ID,還用於當上位機需要獲取舵機狀態時,向通訊控制器發送舵機狀態獲取指令和對應的通訊ID,以及用於在接收到舵機狀態數據後根據通訊ID更新舵機狀態;
通訊控制器,設有若干個通訊埠,用於根據通訊ID映射出目的埠ID和目的舵機ID號,並將目的舵機ID號和上位機發送的數據發送至映射出的目的埠ID對應的通訊埠,還用於將舵機返回的舵機狀態數據和對應的通訊ID上傳至上位機;
若干組舵機,一組舵機通過一個通訊埠連接至通訊控制器,舵機用於根據通訊控制器發送的目的舵機ID號進行匹配,當匹配成功時根據舵機控制參數進行舵機控制,還用於根據通訊控制器發送的舵機狀態獲取指令返回當前狀態數據。
進一步的,所述上位機包括:
路徑規劃單元,用於對需要控制的舵機執行路徑規劃;
指令生成單元,用於對需要獲取狀態的舵機生成狀態獲取指令;
控制參數生成單元,用於根據規劃的路徑生成舵機控制參數;
數據包生成單元,用於將控制參數生成單元生成的舵機控制參數,加上其對應的通訊ID生成數據包,還用於將指令生成單元生成的狀態獲取指令,加上其對應的通訊ID生成數據包;
數據傳輸單元,用於將數據包生成單元生成的數據包發送至通訊控制器,還用於接收通訊控制器返回的舵機狀態數據和對應的通訊ID;
匹配單元,用於將數據傳輸單元接收的通訊ID,與向通訊控制器發送舵機狀態獲取指令對應的通訊ID進行匹配,若一致,則匹配成功,否則匹配失敗;
狀態更新的單元,用於在匹配單元匹配成功時,更新通訊ID對應的舵機的狀態。
進一步的,所述通訊控制器包括:
第一傳輸單元,用於上位機和通訊控制器的數據傳輸;
第一映射單元,用於從第一傳輸單元接收的數據包中,提取出通訊ID,並根據通訊ID映射出目的埠ID和目的舵機ID號;
第一數據包生成單元,用於將上位機發送的數據和目的舵機ID號生成數據包,並發送至第二數據傳輸單元;
第二傳輸單元,用於將第一數據包生成單元的數據包發送至映射出的目的埠ID對應的通訊埠,還用於接收舵機通過通訊埠返回的舵機狀態數據和對應的舵機ID;
第二映射單元,用於將第二傳輸單元接收的舵機ID和接收時採用的通訊埠的埠ID,映射為通訊ID;
第二數據包生成單元,用於將映射的通訊ID和接收的舵機狀態數據打包生成數據包,並發送至第一傳輸單元。
進一步的,所述舵機包括:
數據傳輸單元,用於接收通訊控制器發送的數據,以及向通訊控制器返回舵機狀態數據和對應的舵機ID;
匹配單元,用於從接收的數據中提取出目的舵機ID號,並與當前舵機的ID號進行匹配,若一致,則匹配成功,否則匹配失敗;
舵機控制單元,用於在匹配單元匹配成功,且接收的數據是舵機控制參數時,根據該舵機控制參數對舵機進行控制;
舵機狀態獲取單元,用於在匹配單元匹配成功,且接收的數據是舵機狀態獲取指令時,將當前舵機的狀態數據發送至數據傳輸單元。
進一步的,所述上位機通過RS422連接通訊控制器,每組舵機通過一個RS485總線連接通訊控制器。
本發明所述的舵機的分布式控制方法包括步驟:
S1、當上位機對舵機需要進行控制時,向通訊控制器發送舵機控制參數和對應的通訊ID;
S2、通訊控制器根據通訊ID映射出目的埠ID和目的舵機ID號,並將目的舵機ID號和上位機發送的數據發送至映射出的目的埠ID對應的通訊埠,其中,通訊控制器設有若干個通訊埠;
S3、舵機根據通訊控制器發送的目的舵機ID號進行匹配,當匹配成功時根據舵機控制參數進行舵機控制,其中,舵機一共有若干組,一組舵機通過一個通訊埠連接至通訊控制器;
S4、當上位機需要獲取舵機狀態時,向通訊控制器發送舵機狀態獲取指令和對應的通訊ID;
S5、通訊控制器根據通訊ID映射出目的埠ID和目的舵機ID號,並將目的舵機ID號和上位機發送的數據發送至映射出的目的埠ID對應的通訊埠;
S6、舵機根據通訊控制器發送的目的舵機ID號進行匹配,當匹配成功時根據通訊控制器發送的舵機狀態獲取指令返回當前狀態數據;
S7、通訊控制器將舵機返回的舵機狀態數據和對應的通訊ID上傳至上位機;
S8、上位機接收到舵機狀態數據後根據通訊ID更新舵機狀態。
進一步的,步驟S1具體包括:
S11、當上位機對舵機需要進行控制時,對需要控制的舵機執行路徑規劃;
S12、根據規劃的路徑生成舵機控制參數;
S13、將生成的舵機控制參數加上其對應的通訊ID生成數據包;
S14、將數生成的數據包發送至通訊控制器;
步驟S4具體包括:
S41、當上位機需要獲取舵機狀態時,生成舵機狀態獲取指令;
S42、將舵機狀態獲取指令和對應的通訊ID生成數據包;
S43、將數生成的數據包發送至通訊控制器;
步驟S8具體包括:
S81、將接收的通訊ID,與向通訊控制器發送舵機狀態獲取指令時對應的通訊ID進行匹配,若一致,則匹配成功,否則匹配失敗;
S82、在匹配成功時,更新通訊ID對應的舵機的狀態。
進一步的,步驟S2具體包括:
S21、通訊控制器接收上位機傳輸的數據;
S22、從接收的數據包中,提取出通訊ID,並根據通訊ID映射出目的埠ID和目的舵機ID號;
S23、將上位機發送的舵機控制參數和目的舵機ID號生成數據包;
S24、將生成的數據包發送至映射出的目的埠ID對應的通訊埠;
步驟S5具體包括:
S51、通訊控制器接收上位機傳輸的數據;
S52、從接收的數據包中,提取出通訊ID,並根據通訊ID映射出目的埠ID和目的舵機ID號;
S53、將上位機發送的舵機狀態獲取指令和目的舵機ID號生成數據包;
S54、將生成的數據包發送至映射出的目的埠ID對應的通訊埠;
步驟S7具體包括:
S71、通訊控制器接收舵機通過通訊埠返回的舵機狀態數據和對應的舵機ID;
S72、通訊控制器將接收的舵機ID和接收時採用的通訊埠的埠ID,映射為通訊ID;
S73、通訊控制器將映射的通訊ID和接收的舵機狀態數據打包生成數據包,並發送至上位機。
進一步的,步驟S3具體包括:
S31、舵機接收通訊控制器發送的數據;
S32、舵機從接收的數據中提取出目的舵機ID號,並與當前舵機的ID號進行匹配,若一致,則匹配成功,否則匹配失敗;
S33、在匹配成功,且接收的數據是舵機控制參數時,根據該舵機控制參數對舵機進行控制;
步驟S6具體包括:
S61、舵機接收通訊控制器發送的數據;
S62、舵機從接收的數據中提取出目的舵機ID號,並與當前舵機的ID號進行匹配,若一致,則匹配成功,否則匹配失敗;
S63、在匹配成功,且接收的數據是舵機狀態獲取指令時,將當前舵機的狀態數據發送至數據傳輸單元。
進一步的,所述上位機通過RS422連接通訊控制器,每組舵機通過一個RS485總線連接通訊控制器。
有益效果:本發明與現有技術相比,其顯著優點是:
1.控制難度低、接線簡單;
2.傳輸距離遠、抗幹擾能力強;
3.上位機被佔資源少,負擔輕;
4.可控制舵機數量多且易於擴展;
5.中繼成本低。
附圖說明
圖1是本發明提供的舵機的分布式控制系統的一個實施例的系統框圖;
圖2是圖1中上位機的單元示意圖;
圖3是圖1中通訊控制器的單元示意圖;
圖4是圖1中舵機的單元示意圖;
圖5是本發明提供的舵機的分布式控制方法的一個實施例的流程示意圖;
圖6是舵機控制流程示意圖;
圖7是舵機狀態數據獲取的流程示意圖。
具體實施方式
如圖1所示,本實施例的舵機的分布式控制系統包括:上位機、通訊控制器和若干組舵機(圖中有三組,每組有N個舵機)。上位機通過RS422連接通訊控制器,每組舵機通過一個RS485總線連接通訊控制器。其中,上位機用於當上位機對舵機需要進行控制時,向通訊控制器發送舵機控制參數和對應的通訊ID,還用於當上位機需要獲取舵機狀態時,向通訊控制器發送舵機狀態獲取指令和對應的通訊ID,以及用於在接收到舵機狀態數據後根據通訊ID更新舵機狀態;通訊控制器設有若干個通訊埠,用於根據通訊ID映射出目的埠ID和目的舵機ID號,並將目的舵機ID號和上位機發送的數據發送至映射出的目的埠ID對應的通訊埠,還用於將舵機返回的舵機狀態數據和對應的通訊ID上傳至上位機;一組舵機通過一個通訊埠連接至通訊控制器,舵機用於根據通訊控制器發送的目的舵機ID號進行匹配,當匹配成功時根據舵機控制參數進行舵機控制,還用於根據通訊控制器發送的舵機狀態獲取指令返回當前狀態數據。本系統中,上位機並不直接參與舵機的實際控制,而是將舵機的控制由舵機本身的控制電路獨立實現,所以舵機控制佔用上位機的資源大大減少,減輕了上位機的負擔。
如圖2所示,上位機包括路徑規劃單元、指令生成單元、控制參數生成單元、數據包生成單元、數據傳輸單元、匹配單元和狀態更新的單元。其中,路徑規劃單元用於對需要控制的舵機執行路徑規劃;指令生成單元用於對需要獲取狀態的舵機生成狀態獲取指令;控制參數生成單元用於根據規劃的路徑生成舵機控制參數;數據包生成單元用於將控制參數生成單元生成的舵機控制參數,加上其對應的通訊ID生成數據包(例如,圖1中,1-1表示通訊ID,前面的1表示通訊埠的埠ID,後面的1表示舵機ID),還用於將指令生成單元生成的狀態獲取指令,加上其對應的通訊ID生成數據包;數據傳輸單元用於將數據包生成單元生成的數據包發送至通訊控制器,還用於接收通訊控制器返回的舵機狀態數據和對應的通訊ID;匹配單元用於將數據傳輸單元接收的通訊ID,與向通訊控制器發送舵機狀態獲取指令對應的通訊ID進行匹配,若一致,則匹配成功,否則匹配失敗;狀態更新的單元用於在匹配單元匹配成功時,更新通訊ID對應的舵機的狀態,匹配失敗時丟棄數據。
如圖3所示,通訊控制器包括第一傳輸單元、第一映射單元、第一數據包生成單元、第二傳輸單元、第二映射單元、第二數據包生成單元。其中,第一傳輸單元用於上位機和通訊控制器的數據傳輸;第一映射單元用於從第一傳輸單元接收的數據包中,提取出通訊ID,並根據通訊ID映射出目的埠ID和目的舵機ID號(例如,通訊ID為2-1,映射出通訊埠的埠ID為2,目的舵機ID號為1);第一數據包生成單元用於將上位機發送的數據和目的舵機ID號生成數據包,並發送至第二數據傳輸單元;第二傳輸單元用於將第一數據包生成單元的數據包發送至映射出的目的埠ID對應的通訊埠,還用於接收舵機通過通訊埠返回的舵機狀態數據和對應的舵機ID;第二映射單元用於將第二傳輸單元接收的舵機ID和接收時採用的通訊埠的埠ID,映射為通訊ID;第二數據包生成單元用於將映射的通訊ID和接收的舵機狀態數據打包生成數據包,並發送至第一傳輸單元。
如圖4所示,舵機包括數據傳輸單元、匹配單元、舵機控制單元、舵機狀態獲取單元。其中,數據傳輸單元用於接收通訊控制器發送的數據,以及向通訊控制器返回舵機狀態數據和對應的舵機ID;匹配單元用於從接收的數據中提取出目的舵機ID號,並與當前舵機的ID號進行匹配,若一致,則匹配成功,否則匹配失敗;舵機控制單元用於在匹配單元匹配成功,且接收的數據是舵機控制參數時,根據該舵機控制參數對舵機進行控制;舵機狀態獲取單元用於在匹配單元匹配成功,且接收的數據是舵機狀態獲取指令時,將當前舵機的狀態數據發送至數據傳輸單元。
如圖5所示,本實施例的舵機的分布式控制方法包括步驟:
S1、當上位機對舵機需要進行控制時,向通訊控制器發送舵機控制參數和對應的通訊ID。
具體的,步驟S1包括:S11、當上位機對舵機需要進行控制時,對需要控制的舵機執行路徑規劃;S12、根據規劃的路徑生成舵機控制參數,包括目標位置、速度等參數;S13、將生成的舵機控制參數加上其對應的通訊ID生成數據包;S14、將數生成的數據包發送至通訊控制器。
例如,如圖6所示,當上位機需要對通訊ID為2-1的舵機進行控制時,對該舵機執行路徑規劃;根據規劃的路徑生成舵機控制參數;將生成的舵機控制參數加上其對應的通訊ID2-1生成數據包;將數生成的數據包發送至通訊控制器。
S2、通訊控制器根據通訊ID映射出目的埠ID和目的舵機ID號,並將目的舵機ID號和上位機發送的數據發送至映射出的目的埠ID對應的通訊埠,其中,通訊控制器設有若干個通訊埠。
具體的,步驟S2包括:S21、通訊控制器接收上位機傳輸的數據;S22、從接收的數據包中,提取出通訊ID,並根據通訊ID映射出目的埠ID和目的舵機ID號;S23、將上位機發送的舵機控制參數和目的舵機ID號生成數據包;S24、將生成的數據包發送至映射出的目的埠ID對應的通訊埠。
例如,如圖6所示,通訊控制器接收上位機傳輸的數據;從接收的數據包中,提取出通訊ID 2-1,根據2-1映射出目的埠ID為2和目的舵機ID號為1;將上位機發送的舵機控制參數和目的舵機ID號1生成數據包;將生成的數據包發送至通訊埠2。
S3、舵機根據通訊控制器發送的目的舵機ID號進行匹配,當匹配成功時根據舵機控制參數進行舵機控制,其中,舵機一共有若干組,一組舵機通過一個通訊埠連接至通訊控制器。
具體的,步驟S3具體包括:S31、舵機接收通訊控制器發送的數據;S32、舵機從接收的數據中提取出目的舵機ID號,並與當前舵機的ID號進行匹配,若一致,則匹配成功,否則匹配失敗;S33、在匹配成功,且接收的數據是舵機控制參數時,根據該舵機控制參數對舵機進行控制。
例如,如圖6所示,舵機2-1接收通訊控制器發送的數據;從接收的數據中提取出目的舵機ID號為1,並與當前舵機的ID號1進行匹配,若一致,則匹配成功,否則匹配失敗;在匹配成功,且接收的數據是舵機控制參數時,根據該舵機控制參數對舵機進行控制。
S4、當上位機需要獲取舵機狀態時,向通訊控制器發送舵機狀態獲取指令和對應的通訊ID。
具體的,步驟S4具體包括:S41、當上位機需要獲取舵機狀態時,生成舵機狀態獲取指令;S42、將舵機狀態獲取指令和對應的通訊ID生成數據包;S43、將數生成的數據包發送至通訊控制器。
例如,如圖7所示,當上位機需要獲取通訊ID為2-1的舵機狀態時,生成舵機狀態獲取指令;將舵機狀態獲取指令和2-1生成數據包;將數生成的數據包發送至通訊控制器。
S5、通訊控制器根據通訊ID映射出目的埠ID和目的舵機ID號,並將目的舵機ID號和上位機發送的數據發送至映射出的目的埠ID對應的通訊埠。
具體的,步驟S5具體包括:S51、通訊控制器接收上位機傳輸的數據;S52、從接收的數據包中,提取出通訊ID,並根據通訊ID映射出目的埠ID和目的舵機ID號;S53、將上位機發送的舵機狀態獲取指令和目的舵機ID號生成數據包;S54、將生成的數據包發送至映射出的目的埠ID對應的通訊埠。
例如,如圖7所示,通訊控制器接收上位機傳輸的數據;從接收的數據包中,提取出通訊ID為2-1,根據通訊ID 2-1映射出目的埠ID為2和目的舵機ID號為1;將上位機發送的舵機狀態獲取指令和目的舵機ID號1生成數據包;將生成的數據包發送至通訊埠2。
S6、舵機根據通訊控制器發送的目的舵機ID號進行匹配,當匹配成功時根據通訊控制器發送的舵機狀態獲取指令返回當前狀態數據。
具體的,步驟S6具體包括:S61、舵機接收通訊控制器發送的數據;S62、舵機從接收的數據中提取出目的舵機ID號,並與當前舵機的ID號進行匹配,若一致,則匹配成功,否則匹配失敗,丟棄數據;S63、在匹配成功,且接收的數據是舵機狀態獲取指令時,將當前舵機的狀態數據和當前舵機的ID發送至數據傳輸單元。
例如,如圖7所示,舵機接收通訊控制器發送的數據;從接收的數據中提取出目的舵機ID號為1,與當前舵機的ID號進行匹配,若一致,則匹配成功,否則匹配失敗,丟棄數據;在匹配成功,且接收的數據是舵機狀態獲取指令時,將當前舵機的狀態數據和舵機ID號1發送至數據傳輸單元。
S7、通訊控制器將舵機返回的舵機狀態數據和對應的通訊ID上傳至上位機。
具體的,步驟S7具體包括:S71、通訊控制器接收舵機通過通訊埠返回的舵機狀態數據和對應的舵機ID;S72、通訊控制器將接收的舵機ID和接收時採用的通訊埠的埠ID,映射為通訊ID;S73、通訊控制器將映射的通訊ID和接收的舵機狀態數據打包生成數據包,並發送至上位機。
例如,如圖7所示,通訊控制器接收舵機通過通訊埠2返回的舵機狀態數據和舵機ID 1;通訊控制器將接收的舵機ID 1和接收時採用的通訊埠的埠ID 2,映射為通訊ID 2-1;通訊控制器將映射的通訊ID2-1和接收的舵機狀態數據打包生成數據包,並發送至上位機。
S8、上位機接收到舵機狀態數據後根據通訊ID更新舵機狀態。
具體的,步驟S8具體包括:S81、上位機將接收的通訊ID,與向通訊控制器發送舵機狀態獲取指令時對應的通訊ID進行匹配,若一致,則匹配成功,否則匹配失敗,丟棄數據;S82、在匹配成功時,更新通訊ID對應的舵機的狀態。
例如,如圖7所示,上位機將接收的通訊ID 2-1,與向通訊控制器發送舵機狀態獲取指令時對應的通訊ID 2-1進行匹配,若一致,則匹配成功,否則匹配失敗;在匹配成功時,更新通訊ID 2-1對應的舵機的狀態。
以上所揭露的僅為本發明一種較佳實施例而已,不能以此來限定本發明之權利範圍,因此依本發明權利要求所作的等同變化,仍屬本發明所涵蓋的範圍。