CANopen--實現雙電機速度同步

圖1函數

 

將上圖圖中左邊的電機和右邊的電機進行速度同步,右邊的電機同步左邊的電機速度。這裏須要知道Copley的驅動中的速度環的輸入輸出狀況。以下圖所示,速度環限制器接收速度命令信號,經限制後,產生一限制速度命令信號給輸入濾波器。輸入濾波器將信號傳遞到求和節點處,求和節點將速度命令信號與反饋的實際速度值相減獲得一差值信號。(當在負載端有一編碼器的狀況下,速度反饋值一般來源於電機端的編碼器。)差值信號通過比例增益和積分增益的處理最終產生出電流命令信號。可設置的濾波器可做用於速度環的輸入和輸出端。oop

image

圖2 電機驅動速度環學習

在速度模式下,速度環的命令來源於如下某一種編碼

image

圖3 速度環命令來源spa

爲了達到目的,要設定2#電機驅動器工做在速度模式下,即 The velocity loop is driven by the paogrammed velocity value, 此時只有設置對象字典0x2300爲11。將1#電機的速度發送給2#電機,其實就是將1#的programmed velocity value發送給2#電機,2#電機將接受到數當作它的programmed velocity value,就實現了兩者的同步。3d

image

圖4調試

這裏我將1#電機設置成位置模式,而後將其中的速度環的Programmed velocity command 發送給2#電機,那麼問題來了,我怎麼經過配置將1#電機的值發送給2#,讓2#接收呢,我不可能在電機驅動裏面去編寫一套接收函數吧。這裏先留個疑問,接下來就按照CANopen的配置過程將兩個電機的PDO進行映射。對象

PDO通訊參數,定義了該設備所使用的COB-ID、傳輸類型、定時週期等。RPDO通信參數位於對象字典索引的1400h to 15FFh,TPDO通信參數位於對象字典索引的1800h to 19FFh。每條索引表明一個PDO的通訊參數集,其中的子索引分別指向具體的各類參數。以下表所示。blog

表1 索引

 

PDO映射參數是初學者學習CANopen時的一個難點,它包含了一個對象字典中的對象列表,這些對象映射到相應的PDO,其中包括數據的長度(單位,位),對於生產者和消費者都必需要知道這個映射參數,纔可以正確的解釋PDO內容。就是將通訊參數、應用數據和具體CAN報文中數據聯繫起來。

綜上,也就是在通訊參數中定義了雙方通訊的方式,映射參數中定義了通訊的內容,也就是在規定好的通訊參數的狀況下發送或者接受映射參數中的規定的數據字典對應的值。

其中不得不提到的是COB-ID(通訊對象標識符),即Communication Object ID,也就是發送或者接收對應幀的ID,再說的形象一點,我發送一幀帶有特殊ID的消息,若是你想接收到這幀數,你接收的ID號必須和個人同樣。在一些說明書裏面說明了諸以下列的說明:

表2  COB-組成說明

image

表3  對象COB-ID列表

image

 

舉例:4 號從站TPDO2 的COB-ID 爲280h + 4 = 284h。可是有時候你可能有疑問,TPDO5的COB-ID爲多少呢?上述都是人爲規定的一個規律,爲了方便你們寫的程序好讀懂,實際調試過程當中你們常常的人爲規定雙方的COB-ID號是多少,不必定說要遵循上面表中的規律。這裏,咱們將對應的COB-ID設置爲222,用的是RPDO6和TPDO4,即1#電機發送的數據從TPDO4中發出,2#電機在RPDO6中接收數據。

 

image圖5 

 

設置好消息同步,來一個同步信號(注意兩者之中只要一個產生同步信號就好了)1#電機就發送一個命令給2#電機。

配置的代碼以下:
驅動1 ID =1 主軸
配置TPDO
第1步:DisablePDO(最高位置1)
        23 03 18 01 22 02 00 80
第2步:設置通訊參數
2F 03 18 02 01 00 00 00 //設置爲循環同步
第3步:清空映射對象數目
2F 03 1A 00 00 00 00 00 
第4步:映射對象
23 03 1A 01 20 00 41 23
第5步:設置映射對象個數
2F 03 1A 00 01 00 00 00
第6步:Enable PDO(最高位清零)
23 03 18 01 22 02 00 00
主軸設置成
2B 00 23 00 1E 00 00 00
設置成operation模式
驅動2 ID = 2 從軸
配置RPDO
第一步:DisablePDO(最高位置1)
23 05 14 01 22 02 00 80
第二步:設置通訊參數
2F 03 14 02 01 00 00 00 //設置爲循環同步
第三步:清空映射對象數目
2F 05 16 00 00 00 00 00 
第四步:映射對象
23 05 16 01 20 00 41 23
第五步:設置映射對象個數
2F 05 16 00 01 00 00 00
第六步:Enable PDO(最高位清零)
23 05 14 01 22 02 00 00
第七步:從軸設置成the velocity loop is driven by the programmed velocity value.
2B 00 23 00 0B 00 00 40
第八步:設置成爲operation 模式
設置同步消息週期
23 06 10 00 10 27 00 00 ///10ms同步一次
激活同步功能
23 05 10 00 80 00 00 40
相關文章
相關標籤/搜索