VJ-03-CAN is the CAN bus version of the VJ-03 joint: the same motor, harmonic gear and torque range, controlled over CAN 2.0A at 1 Mbit/s and built into a fully enclosed housing with screw-locking M12 connectors. Any master with a CAN port – an STM32 board, a PLC or a PC with a USB-CAN adapter – can read position and command position or speed with a handful of simple messages. No EtherCAT master or real-time PC is needed. It suits custom robots, mobile robots, OEM machines and research or teaching labs. Designed and built by Robot3T in Vietnam.
Request a quote WhatsApp +84 974 908 615Typical applications
- Custom robots and OEM machines: multi-axis arms, gantry wrists and rotary tool heads driven from an STM32 or a PLC with a CAN port.
- Mobile and service robots: arms on AMRs and pan-tilt heads; CAN keeps wiring short and noise-tolerant.
- Research and education: students read position and current and command position or speed using a USB-CAN adapter and Python.
- Rotary axes and positioners: indexing tables and camera or sensor gimbals that need high torque and absolute position.
Why VJ-03-CAN
- All-in-one, fully enclosed – motor, harmonic gear, driver, absolute encoder and brake in one sealed unit, with screw-locking M12 connectors.
- Simple CANopen-style protocol – 16 commands, standard 11-bit IDs; each joint has its own command and reply IDs, so the master can query several joints at once.
- Keeps absolute position through power loss – 20-bit single-turn and multi-turn encoder backed by a 3.6 V battery; no homing at every start-up.
- Safe by design – electromagnetic brake that closes when control is lost, command watchdog, broadcast E-STOP and protection against over-current, over-voltage, over-temperature and encoder faults.
- Two ways to move – stream setpoints every 1–2 ms like EtherCAT, or send a target once and let the joint generate its own acceleration profile.
Specifications
| Model | VJ-03-CAN |
| Harmonic gear ratio | 50 / 80 / 100 |
| Rated torque | 58 / 92.8 / 116 Nm |
| Peak torque | 164 / 262.4 / 328 Nm |
| Max. output speed (48 VDC) | ≈ 48 / 30 / 24 rpm |
| Motor | Frameless BLDC Ø85 mm, 8 pole pairs |
| Motor shaft torque | 1.45 Nm rated · 4.1 Nm peak |
| Supply voltage | 24–48 VDC |
| Encoder | 20-bit absolute, single-turn and multi-turn |
| Encoder backup battery | 3.6 V |
| Repeatability | ±0.0025° |
| Control interface | CAN 2.0A, 1 Mbit/s, VJ CAN v2 protocol |
| Control modes | Position, speed, hand guiding |
| Brake | Electromagnetic, fail-safe |
| Controller | STM32H7, FOC position – speed – current loops |
| Connectors | Screw-locking M12 |
Torque and speed are listed for ratios 50 / 80 / 100. Max. motor shaft speed ≈ 2,400 rpm at 48 VDC (2,000 rpm at 30 VDC).
VJ-03-CAN vs. VJ-03 (EtherCAT)
| VJ-03 | VJ-03-CAN | |
|---|---|---|
| Interface | EtherCAT 100 Mbps, daisy chain | CAN 2.0A 1 Mbit/s, shared bus |
| Master required | EtherCAT master, real-time PC | Any device with CAN or a USB-CAN adapter |
| Housing and connectors | Standard housing | Fully enclosed, screw-locking M12 |
| Best for | Multi-axis cobots with short synchronized cycles | Custom and mobile robots, OEM, education |
Same motor, harmonic gear, 20-bit encoder and torque range.
CAN interface – bus parameters
| Parameter | Value |
|---|---|
| Frame format | CAN 2.0A, standard 11-bit ID, data frames (no 29-bit IDs, no CAN FD) |
| Bit rate | 1 Mbit/s, 80 % sample point |
| Byte order | Little-endian |
| Joints per bus | Up to 127, joint ID N = 1..127, printed on the label |
| Units | Position: motor-shaft encoder counts (1,048,576 per rev) · speed: 0.1 rpm motor shaft · current: mA · voltage: 0.1 V |
| Command processing cycle | 1 ms inside the joint |
Identifiers (COB-ID), N = joint ID
| COB-ID | Direction | Content |
|---|---|---|
| 0x000 | Master → all joints | Broadcast E-STOP |
| 0x600 + N | Master → joint N | Command: B0 command code, B1..B7 parameters |
| 0x580 + N | Joint N → master | Reply: B0 command code, B1 result code, B2..B7 data |
| 0x700 + N | Joint N → master | Boot-up and heartbeat (state, error code, mode, flags) |
| 0x180 + N | Joint N → master | Cyclic feedback: int32 position, int16 current, error code, flags |
Example for joint N = 2: send commands to 0x602, receive replies on 0x582. Every command gets a reply, even when rejected; replies to SET_POSITION and SET_SPEED can be turned off to reduce bus load.
Command set
| Code | Command | Send | Returns |
|---|---|---|---|
| 01 | GET_INFO | — | Protocol, firmware and board version, joint ID |
| 02 | ESTOP | — | — |
| 10 | SET_MODE | mode 0..7 | — |
| 11 | SET_COMMAND | 0 disable · 1 enable · 3 reset | — |
| 12 | SET_POSITION | int32 counts · level 0..15 | — |
| 13 | SET_SPEED | int32, 0.1 rpm | — |
| 14 | SET_OUTPUT | 0 / 1 | — |
| 20 | GET_STATUS | — | Error code, state, mode, command, flags |
| 21 | GET_POSITION | — | int32 counts (absolute) |
| 22 | GET_ENCODER | 1 single-turn · 2 multi-turn · 3 absolute | uint32 |
| 23 | GET_CURRENT | — | int32 mA |
| 24 | GET_VBUS | — | Supply voltage, 0.1 V |
| 25 | GET_ENC_BAT | — | Encoder battery voltage, 0.1 V · alarm |
| 30 | SET_CONFIG | parameter · uint32 | — |
| 31 | GET_CONFIG | parameter | uint32 |
Result codes: 00 OK · 01 unknown command · 02 missing bytes · 03 invalid value · 04 wrong state. Encoder reset, brake release and remote restart require the A5 confirmation byte.
Modes and configuration
- Mode 1 – position: stream setpoints every 1–2 ms (level 0), or send a target once (levels 1..15) for a built-in trapezoidal profile
- Mode 2 – speed: zero speed holds position without drift
- Mode 3 – hand guiding: reduced stiffness for teaching by hand
- Jerk-free enable: holds the current position, releases the brake after 200 ms
- Heartbeat: configurable period, sent immediately on error change
- Cyclic feedback: position and current, from 1 ms period
- Command watchdog: joint decelerates and brakes if the master or cable is lost
- Profile speed and acceleration: set with SET_CONFIG, effective immediately
- Absolute or relative position: selected with parameter 7
- Service: RS232 debug port, 115,200 bps
Example: move joint N = 2 to 100,000 counts
| Step | Send 0x602 | Receive 0x582 |
|---|---|---|
| Heartbeat 100 ms | 30 01 64 00 00 00 | 30 00 01 |
| Watchdog 100 ms | 30 03 64 00 00 00 | 30 00 03 |
| Check errors | 20 | 20 00 00 01 00 00 00 |
| Position mode | 10 01 | 10 00 |
| Enable | 11 01 | 11 00 |
| Go to 100,000 counts, level 8 | 12 A0 86 01 00 08 | 12 00 |
| Read position | 21 | 21 00 A0 86 01 00 |
| Stop and brake | 11 00 | 11 00 |
Emergency stop for all joints: send 02 00 to ID 0x000. You can test quickly with any USB-CAN tool (PCAN-View, ECANTools, SavvyCAN): 1000 kbit/s, Standard frames.
CAN bus wiring
- Daisy-chain topology: master → joint 1 → joint 2 → … → last joint; no star wiring, stubs no longer than 0.3 m.
- Termination: two 120 Ω resistors at the two far ends of the bus. With power off, CANH–CANL should read about 60 Ω.
- Cable: 120 Ω twisted-pair CANH/CANL, 0.2–0.35 mm², shielded near power wiring; up to about 40 m at 1 Mbit/s, under 25 m recommended on a robot.
- Ground: connect signal ground between the master and every joint.
Supplied with the joint
- Full CAN integration manual: wiring, command set, operating sequence, error codes and troubleshooting.
- Sample code: reading position and status, position and speed moves, safe stop.
- Options: USB-CAN adapter, M12 cables, 48 VDC power supply, training fixtures.
Video
Sealed joint, M12 connectors, CAN bus
VJ-03-CAN packs the motor, harmonic gear, driver, absolute encoder and brake into one sealed housing. Plug in 24–48 VDC and a CAN cable, and any CAN master can drive it.
- Housing: fully enclosed, screw-locking M12 connectors.
- Output: harmonic gear flange with keyed hollow shaft, up to 328 Nm peak.
- Control: CAN 2.0A at 1 Mbit/s, up to 127 joints on one bus.
- Feedback: 20-bit multi-turn absolute encoder, ±0.0025° repeatability.
- Safety: fail-safe brake, command watchdog, broadcast E-STOP.
FAQ
What do I need to control the joint?
A 24–48 VDC supply and any device with a 1 Mbit/s CAN 2.0 port: an STM32 microcontroller, a PLC with a CAN module, or a PC with a USB-CAN adapter. The driver is built into the joint.
Is it standard CANopen CiA 402?
Not fully. The joint uses CANopen-style ID assignment (0x600 + N, 0x580 + N, 0x700 + N, 0x180 + N) with a compact command set of its own, so you can program it quickly without a CANopen stack. If your project requires CiA 402 or 29-bit IDs, contact us about a custom firmware version.
How many joints can one bus run?
Up to 127 joint addresses. A 6-joint arm at a 2 ms cycle uses about 35–65 % of the bus, depending on whether replies are enabled.
Will it lose position after a power cut?
No. The multi-turn absolute encoder is backed by a 3.6 V battery, and the joint reports the battery voltage so you can replace it before it runs low (below 3.0 V).
VJ-03-CAN or VJ-03 EtherCAT?
Choose CAN for your own controller, mobile robots or teaching. Choose EtherCAT for multi-axis cobots that need very short synchronized cycles.
Building your own robot or motion axis?
Tell us your payload, reach, speed and the controller you use. Robot3T engineers will recommend the right joint and send a free quote.
Request a quote














