天天看點

CANopen從站伺服配置封包及使用CANopen從站伺服配置封包及使用步驟1:切換到預操作态步驟二:失能PDO(TPDO,RPDO)步驟三:清空PDO映射步驟四:設定PDO映射步驟五:設定PDO傳輸類型步驟六:參數被映射步驟七:使能映射參數步驟八:切換到操作态步驟九:寫入參數(主站)步驟十:讀取參數(主站)

CANopen從站伺服配置封包及使用

步驟1:切換到預操作态

使PDO進入預操作态(在預操作狀态下才可修改參數,否側容易報錯);

主站發送封包:0x000 0x80 0x01(節點号)

步驟二:失能PDO(TPDO,RPDO)

失能RPDO1(修改參數前需要失能,否側不能更改參數,COB-ID 0x201)

主站發送封包:0x601 0x22 0x00 0x14 0x01 0x01 0x02 0x00 0x80

失能RPDO2(修改參數前需要失能,否側不能更改參數,COB-ID 0x301)

主站發送封包:0x601 0x22 0x01 0x14 0x01 0x01 0x03 0x00 0x80

失能RPDO3(修改參數前需要失能,否側不能更改參數,COB-ID 0x401)

主站發送封包:0x601 0x22 0x02 0x14 0x01 0x01 0x04 0x00 0x80

失能RPDO4(修改參數前需要失能,否側不能更改參數,COB-ID 0x501)

主站發送封包:0x601 0x22 0x03 0x14 0x01 0x01 0x05 0x00 0x80

失能TPDO1(修改參數前需要失能,否側不能更改參數,COB-ID 0x201)

封包:0x601 0x22 0x00 0x18 0x01 0x01 0x18 0x00 0x80

失能TPDO2(修改參數前需要失能,否側不能更改參數,COB-ID 0x301)

封包:0x601 0x22 0x01 0x18 0x01 0x01 0x28 0x00 0x80

失能TPDO3(修改參數前需要失能,否側不能更改參數,COB-ID 0x301)

封包:0x601 0x22 0x02 0x18 0x01 0x01 0x38 0x00 0x80

失能TPDO4(修改參數前需要失能,否側不能更改參數,COB-ID 0x301)

封包:0x601 0x22 0x03 0x18 0x01 0x01 0x48 0x00 0x80

步驟三:清空PDO映射

清空RPDO1 Mapping,全部置0

封包:0x601 0x2F 0x00 0x16 0x00 0x00 0x00 0x00 0x00

清空RPDO2 Mapping,全部置0

封包:0x601 0x2F 0x01 0x16 0x00 0x00 0x00 0x00 0x00

清空RPDO3 Mapping,全部置0

封包:0x601 0x2F 0x02 0x16 0x00 0x00 0x00 0x00 0x00

清空RPDO4 Mapping,全部置0

封包:0x601 0x2F 0x03 0x16 0x00 0x00 0x00 0x00 0x00

清空TPDO1 Mapping,全部置0

封包:0x601 0x2F 0x00 0x1A 0x00 0x00 0x00 0x00 0x00

清空TPDO2 Mapping,全部置0

封包:0x601 0x2F 0x01 0x1A 0x00 0x00 0x00 0x00 0x00

清空TPDO3 Mapping,全部置0

封包:0x601 0x2F 0x02 0x1A 0x00 0x00 0x00 0x00 0x00

清空TPDO4 Mapping,全部置0

封包:0x601 0x2F 0x03 0x1A 0x00 0x00 0x00 0x00 0x00

步驟四:設定PDO映射

注意:8bit:0x08

16bit: 0x10

32bit: 0x20

RPDO映射:

PT模式:

設定控制字0x6040(ControlWord 16bit,子索引0)映射到RPDO1子索引1

設定目标力矩0x6071(TargetTorque16bit,子索引0)映射到RPDO1子索引2

封包:0x601 0x22 0x00 0x16 0x01 0x10 0x00 0x40 0x60

封包:0x601 0x22 0x00 0x16 0x02 0x10 0x00 0x71 0x60

設定控制字0x6040(ControlWord 16bit,子索引0)映射到RPDO2子索引1

設定控制模式0x6060(Modes_of_operation 8bit,子索引0)映射到RPDO2子索引2

封包:0x601 0x22 0x01 0x16 0x01 0x10 0x00 0x40 0x60

封包:0x601 0x22 0x01 0x16 0x02 0x08 0x00 0x60 0x60

PP模式

設定控制字0x6040(ControlWord 16bit,子索引0)映射到RPDO3子索引1

設定目标位置0x607A(Target_position 32bit,子索引0)映射到RPDO3子索引2

封包:0x601 0x22 0x02 0x16 0x01 0x10 0x00 0x40 0x60

封包:0x601 0x22 0x02 0x16 0x02 0x20 0x00 0x7A 0x60

PV模式

設定控制字0x6040(ControlWord 16bit,子索引0)映射到RPDO4子索引1

設定目标速度0x60FF(Target_velocity 32bit,子索引0)映射到RPDO4子索引2

封包:0x601 0x22 0x03 0x16 0x01 0x10 0x00 0x40 0x60

封包:0x601 0x22 0x03 0x16 0x02 0x20 0x00 0xFF 0x60

TPDO映射:

設定狀态字0x6041(StatusWord 16bit,子索引0)映射到TPDO1子索引1

設定實際電流0x6078(Current_actual_value 16bit,子索引0)映射到TPDO1子索引2

封包:0x601 0x22 0x00 0x1A 0x01 0x10 0x00 0x41 0x60

封包:0x601 0x22 0x00 0x1A 0x02 0x10 0x00 0x78 0x60

設定狀态字0x6041(StatusWord 16bit,子索引0)映射到TPDO2子索引1

設定實際電流0x6061(Modes_of_operation_display 8bit,子索引0)映射到TPDO2子索引2

封包:0x601 0x22 0x01 0x1A 0x01 0x10 0x00 0x41 0x60

封包:0x601 0x22 0x01 0x1A 0x02 0x08 0x00 0x61 0x60

設定狀态字0x6041(StatusWord 16bit,子索引0)映射到TPDO3子索引1

設定實際電流0x6064(Modes_of_operation_display 32bit,子索引0)映射到TPDO3子索引2

設定實際電流0x6077(ActualTorque 16bit,子索引0)映射到TPDO3子索引3

封包:0x601 0x22 0x02 0x1A 0x01 0x10 0x00 0x41 0x60

封包:0x601 0x22 0x02 0x1A 0x02 0x20 0x00 0x64 0x60

封包:0x601 0x22 0x02 0x1A 0x03 0x10 0x00 0x77 0x60

設定狀态字0x6041(StatusWord 16bit,子索引0)映射到TPDO4子索引1

設定實際電流0x606C(Velocity_actual_value 32bit,子索引0)映射到TPDO4子索引2

封包:0x601 0x22 0x03 0x1A 0x01 0x10 0x00 0x41 0x60

封包:0x601 0x22 0x03 0x1A 0x02 0x20 0x00 0x6C 0x60

步驟五:設定PDO傳輸類型

同步非周期模式(0x00):收到同步封包之後,啟動pdo事件。

同步周期模式(0x01-0xFB):收到指定個同步封包後,啟動pdo事件。

同步遠端模式(0xFC):收到同步封包後準備好pdo封包,等待接收到遠端請求幀時發送封包。

異步遠端模式(0xFD):收到遠端請求幀時,建構pdo封包并發送。

異步特殊模式(0xFF):pdo封包初始化或接收到遠端請求幀時,啟動pdo事件。特殊事件無視直接禁止時間,直接取消禁止然後建構pdo封包并發送。

一般選擇0xFF就可。

設定RPDO1傳輸類型(類型FFh);異步

封包:0x601 0x2F 0x00 0x14 0x02 0xFF 0x00 0x00 0x00

設定RPDO2傳輸類型(類型FFh);

封包:0x601 0x2F 0x01 0x14 0x02 0xFF 0x00 0x00 0x00

設定RPDO3傳輸類型(類型FFh);

封包:0x601 0x2F 0x02 0x14 0x02 0xFF 0x00 0x00 0x00

設定RPDO4傳輸類型(類型FFh);

封包:0x601 0x2F 0x03 0x14 0x02 0xFF 0x00 0x00 0x00

設定TPDO1傳輸類型(類型01h);同步循環模式

封包:0x601 0x2F 0x00 0x18 0x02 0x01 0x00 0x00 0x00

設定TPDO2傳輸類型(類型FFh);

封包:0x601 0x2F 0x01 0x18 0x02 0x01 0x00 0x00 0x00

設定TPDO3傳輸類型(類型FFh);

封包:0x601 0x2F 0x02 0x18 0x02 0x01 0x00 0x00 0x00

設定TPDO4傳輸類型(類型FFh);

封包:0x601 0x2F 0x03 0x18 0x02 0x01 0x01 0x00 0x00

設定TPDO1禁止限制時間(1/10ms);

封包:0x601 0x2B 0x00 0x18 0x03 0x2C 0x01 0x00 0x00

設定TPDO2禁止限制時間(1/10ms);

封包:0x601 0x2B 0x01 0x18 0x03 0x2C 0x01 0x00 0x00

設定TPDO3禁止限制時間(1/10ms);

封包:0x601 0x2B 0x02 0x18 0x03 0x2C 0x01 0x00 0x00

設定TPDO4禁止限制時間(1/10ms);

封包:0x601 0x2B 0x03 0x18 0x04 0x2C 0x01 0x00 0x00

步驟六:參數被映射

設定索引0為映射的參數個數

使能RPDO1映射參數

封包:0x601 0x2F 0x00 0x16 0x00 0x02 0x00 0x00 0x00

使能RPDO2映射參數

封包:0x601 0x2F 0x01 0x16 0x00 0x02 0x00 0x00 0x00

使能RPDO3映射參數

封包:0x601 0x2F 0x02 0x16 0x00 0x02 0x00 0x00 0x00

使能RPDO4映射參數

封包:0x601 0x2F 0x03 0x16 0x00 0x02 0x00 0x00 0x00

使能TPDO1映射參數

封包:0x601 0x2F 0x00 0x1A 0x00 0x02 0x00 0x00 0x00

使能TPDO2映射參數

封包:0x601 0x2F 0x01 0x1A 0x00 0x02 0x00 0x00 0x00

使能TPDO3映射參數

封包:0x601 0x2F 0x02 0x1A 0x00 0x03 0x00 0x00 0x00

使能TPDO4映射參數

封包:0x601 0x2F 0x03 0x1A 0x00 0x02 0x00 0x00 0x00

步驟七:使能映射參數

使能RPDO1映射參數

封包:0x601 0x22 0x00 0x14 0x01 0x01 0x02 0x00 0x00

使能RPDO2映射參數

封包:0x601 0x22 0x01 0x14 0x01 0x01 0x03 0x00 0x00

使能RPDO3映射參數

封包:0x601 0x22 0x02 0x14 0x01 0x01 0x04 0x00 0x00

使能RPDO4映射參數

封包:0x601 0x22 0x03 0x14 0x01 0x01 0x05 0x00 0x00

使能TPDO1映射參數

封包:0x601 0x22 0x00 0x18 0x01 0x01 0x18 0x00 0x00

使能TPDO2映射參數

封包:0x601 0x22 0x01 0x18 0x01 0x01 0x28 0x00 0x00

使能TPDO3映射參數

封包:0x601 0x22 0x02 0x18 0x01 0x01 0x38 0x00 0x00

使能TPDO4映射參數

封包:0x601 0x22 0x03 0x18 0x01 0x01 0x48 0x00 0x00

步驟八:切換到操作态

封包:0x000 0x01 0x01(節點)

步驟九:寫入參數(主站)

主站發出封包:0x201 0x0F 0x00 0xE8 0x03(16bit控制字,16bit 目标力矩 1000)

主站發出封包:0x301 0x0F 0x00 0x03(16bit控制字,8bit 控制模式)

主站發出封包:0x401 0x0F 0x00 0xE8 0x03 0x00 0x00 (16bit控制字,32bit 目标位置 1000)

主站發出封包:0x501 0x0F 0x00 0xE8 0x03 0x00 0x00 (16bit控制字,32bit 目标速度 1000)

步驟十:讀取參數(主站)

從站發出封包:0x181 0x00 0x00 0xE8 0x03(16bit狀态字,16bit 實際電流 1000)

從站發出封包:0x281 0x00 0x00 0x03(16bit狀态字,8bit 運作模式)

從站發出封包:0x381 0x00 0x00 0xE8 0x03 0x00 0x00 0xE8 0x03(16bit狀态字,32bit 實際位置 1000,16bit 實際力矩 1000)

從站發出封包:0x481 0x00 0x00 0xE8 0x03 0x00 0x00(16bit狀态字,32bit 實際速度 1000)

注:若參數超過8位元組,會多幀發送。

原文使用語雀文檔,有顔色标注,更加清晰:

CANopen從站伺服配置封包及使用CANopen從站伺服配置封包及使用步驟1:切換到預操作态步驟二:失能PDO(TPDO,RPDO)步驟三:清空PDO映射步驟四:設定PDO映射步驟五:設定PDO傳輸類型步驟六:參數被映射步驟七:使能映射參數步驟八:切換到操作态步驟九:寫入參數(主站)步驟十:讀取參數(主站)

下載下傳連結:https://download.csdn.net/download/qq_28149763/87287922

繼續閱讀