One of the most useful things about text-based AIs like GPT is that you can hand them a piece of data and ask them what they see.
Kickdrive's own support bot can provide great answers, at least for a limited portion of a CAN Monitor log, since the maximum input length for our support bot is limited.
For the little test below, I relied on a regular ChatGPT prompt, and the result was almost spot on. In short...
TL;DR
The ChatGPT prompt
What can I help with?
I have attached a CAN bus log/trace file. It shows the communication between a CANopen configuration tool (Kickdrive) and a CANopen node (a Fullmo MovingCap servo drive). Please go through the CAN frame sequence and explain step-by-step what they mean on a CANopen level (CiA 301 and CiA 402 standards). Note that the CAN interface used to create this log is a dual channel interface which reads back the TX frames sent by Kickdrive (echo). So the line below a "TX" line is the same data, not a second CAN frame.
The data
(But I left out the first frame with a duplicate 82 00 request uses for the Scan, just to not confuse GPT right from the start.)
The answer from ChatGPT
Here’s a walk‑through of your trace, grouping frames into the logical CANopen operations (CiA 301 SDO/NMT/Heartbeat + CiA 402 control/state commands). I’ve decoded each SDO by COB‑ID, command specifier (cs), index/sub‑index and data, and explained what it does in terms of the device profile.
1. Reset Communication & Boot‑up
Frame | ID | Data | Meaning |
---|---|---|---|
2 TX | 0x000 | 82 00 | NMT “Reset Communication” broadcast (cs=0x82, node=0 = all) |
3 RX | 0x000 | 82 00 | echo |
4 RX | 0x701 | 00 | Heartbeat / Boot‑up from node 1: state = 0 (Bootup) |
-
What’s happening: Kickdrive tells all nodes to reset their communication state. Node 1 then re‑boots its CANopen stack and issues a Heartbeat (Cob‑ID = 0x700 + nodeID) with value 0 = Boot‑up.
2. SDO Upload: Read “Device Type” (0x1000:00)
Frame | ID | Data | Explanation |
---|---|---|---|
5 TX | 0x601 | 40 00 10 00 00 00 00 00 | SDO “Initiate Upload” — read Index=0x1000, Sub=0 (cs=0x40) |
6 RX | 0x601 | (echo) | |
7 RX | 0x581 | 43 00 10 00 92 01 02 00 | SDO “Upload Response” — 4‑byte value = 0x00020192 ⇒ Device Type |
Device Type = 0x00020192 identifies the Fullmo MovingCap servo drive.
3. SDO Upload: Read Identity (0x1018 sub‑indexes 1–4)
The Identity Object (0x1018) holds four entries:
-
sub0 = number of entries (4)
-
sub1 = Vendor ID
-
sub2 = Product Code
-
sub3 = Revision Number
-
sub4 = Serial Number
idx | sub | Req Data | Resp Data | Value |
---|---|---|---|---|
1 | 1 | 40 18 10 01 … | 43 18 10 01 01 00 00 00 | Vendor ID = 0x00000001 |
2 | 2 | 40 18 10 02 … | 43 18 10 02 02 00 00 00 | Product Code = 0x00000202 |
3 | 3 | 40 18 10 03 … | 43 18 10 03 03 00 00 00 | Revision No. = 0x00000003 |
4 | 4 | 40 18 10 04 … | 43 18 10 04 BC 45 FC 05 | Serial No. = 0x05FC45BC |
-
CiA 301 SDO expedite / upload used for each 4‑byte read.
4. SDO Upload: Read Device Name (0x1008)
This is a VISIBLENAME string, so requires segmented upload:
-
Initiate Upload
-
Frame 20 TX
40 08 10 00…
⇒ read 0x1008 sub0 -
Frame 22 RX
41 08 10 00 0A 00 00 00
⇒ sub0 = 0x0A = 10 bytes
-
-
Segment 1
-
Frame 23 TX
60 00…
(segmented‐upload req) -
Frame 25 RX
00 4D 6F 76 69 6E 67 43
⇒ “MovingC” (7 chars + “C”)
-
-
Segment 2
-
Frame 26 TX
70 00…
(next segment) -
Frame 28 RX
19 61 70 00 00 00 00 00
⇒ “ap” + padding
-
Resulting name: “MovingCap”
5. SDO Upload: Read Software Version (0x100A)
Also a string, same segmented pattern:
-
Initiate Upload
-
Frame 29 TX
40 0A 10 00…
⇒ sub0 = 9 -
Frame 31 RX
41 0A 10 00 09 00 00 00
⇒ length = 9
-
-
Segment 1
-
Frame 32 TX
60 00…
-
Frame 34 RX
00 76 31 2E 30 2E 34 35
⇒ “v1.0.45”
-
-
Segment 2
-
Frame 35 TX
70 00…
-
Frame 37 RX
1B 31 00 00 00 00 00 00
⇒ trailing “1” + padding
-
Software version: “v1.0.451”
Comment: Here is the one place where GPT gets it wrong, because of the missing knowledge about this manufacturer-specific object for Python program control:
6. SDO Download: Set Homing Parameter (0x3500:02)
Frame | ID | Data | Operation |
---|---|---|---|
38 TX | 0x601 | 2F 00 35 02 00 00 00 00 | Expedited Download ⇒ write 0x00000000 to index=0x3500, sub=2 |
40 RX | 0x581 | 60 00 35 02 00 00 00 00 | Download Response (confirm write) |
Likely clearing or initializing a homing or motion parameter per CiA 402 profile.
7. NMT Reset Communication & Re‑Boot
Frame | ID | Data | Meaning |
---|---|---|---|
41 TX | 0x000 | 82 01 | NMT “Reset Communication” for node 1 |
42 RX | 0x000 | 82 01 | echo |
43 RX | 0x701 | 00 | Heartbeat = 0 (Boot‑up) from node 1 |
8. SDO Downloads: Control‑Word & Mode‑of‑Operation (CiA 402)
a) Fault‑Reset / Shutdown
Frame | ID | Data | Meaning |
---|---|---|---|
44 TX | 0x601 | 2B 40 60 00 80 00 00 00 | Expedited Download ⇒ write Control‑word (0x6040:0) = 0x0080 (Fault Reset) |
46 RX | 0x581 | 60 40 60 00 00 00 00 00 | Confirm |
b) Set Mode of Operation = 0 (Profile Position)
Frame | ID | Data | Meaning |
---|---|---|---|
47 TX | 0x601 | 2F 60 60 00 00 00 00 00 | write Mode‑of‑Operation (0x6060:0) = 0 |
49 RX | 0x581 | 60 60 60 00 00 00 00 00 | Confirm |
c) (Manufacturer‑specific at 0x60FF:0)
Frame | ID | Data | Meaning |
---|---|---|---|
50 TX | 0x601 | 23 FF 60 00 00 00 00 00 | Segmented Download ⇒ init write to 0x60FF:0 |
52 RX | 0x581 | 60 FF 60 00 00 00 00 00 | Confirm |
9. CiA 402 State Machine: Shutdown → Switch‑On → Ready-to‑Switch‑On
-
Shutdown Command (Control‑word = 0x0006)
-
Frame 53 TX
2B 40 60 00 06 00 00 00
-
Frame 55 RX
60 40 60 00 00 00 00 00
-
-
Verify Control‑word
-
Frame 56 TX
40 40 60 00…
(Upload 0x6040:0) -
Frame 58 RX
4B 40 60 00 06 00 00 00
⇒ reads back 0x0006
-
-
Switch‑On Command (Control‑word = 0x0007)
-
Frame 59 TX
2B 40 60 00 07 00 00 00
-
Frame 61 RX
60 40 60 00 00 00 00 00
-
-
Verify Control‑word
-
Frame 62 TX
40 40 60 00…
-
Frame 64 RX
4B 40 60 00 07 00 00 00
⇒ reads back 0x0007
-
-
Read Status‑word (0x6041:0)
-
Frame 65 TX
40 41 60 00…
-
Frame 67 RX
4B 41 60 00 23 00 00 00
⇒ Status = 0x0023
-
Status 0x0023 means “Ready to Switch On” (bits: Ready, Switched On, Voltage Enabled but Operation Disabled) per CiA 402.
Summary of Drive Initialization Sequence
-
Reset communication → node boots
-
Read basic identity (Device Type, Vendor, Product, SW version, Name) via SDO Upload
-
Configure homing parameter (0x3500:02 → 0)
-
Reset communication (again) → node boots
-
CiA 402 drive setup
-
Fault‑reset (Control‑word=0x0080)
-
Set Mode‑of‑Operation = Profile Position (0x6060=0)
-
[Vendor‑specific write at 0x60FF]
-
Move through Shutdown (0x0006) → Switch‑On (0x0007)
-
Read Status‑word = 0x0023 → drive is “Ready to Switch On”
-
At this point the drive is in the “Ready to Switch On” state and ready for further commands (enable operation, start motion, etc.) under CiA 402.
Comments
Post a Comment