Schematic

CAN Networking on Roboteq Controllers
164 Advanced Digital Motor Controller User Manual V1.8 August 28, 2017
Using MiniCAN Mode
MiniCAN is greatly simplified subset of CANopen. It only supports Heartbeat, and fixed
map Received Process Data Objects (RPDOs) and Transmit Process Data Objects (TP-
DOs). It does not support Service Data Objects (SDOs), Network Management (NMT),
SYNC or other objects.
Transmitting Data
In MiniCAN mode, data to be transmitted is placed in one of the controllers available In-
teger or Boolean User Variables. Variables can be written by the user from the serial/USB
using !VAR for Integer Variables, or !B for Boolean Variables. They can also be written from
MicroBasic scripts using the setcommand(_VAR, n) and setcommand(_B, n) functions.
The value of these variables is then sent at a periodic rate inside four standard CANopen
TPDO frames (TPDO1 to TPDO4). Each of the four TPDOs is sent in turn at the time peri-
od defined in the SendRate configuration parameter.
Header:
TPDO1: 0x180 + NodeID
TPDO2: 0x280 + NodeID
TPDO3: 0x380 + NodeID
TPDO4: 0x480 + NodeID
Data:
Byte1 Byte2 Byte3 Byte4 Byte5 Byte6 Byte7 Byte8
TPDO1 VAR1 VAR2
TPDO2 VAR3 VAR4
TPDO3 VAR5 VAR6 VAR7 VAR8
TPDO4 BVar
1-8
BVar
9-16
BVar
17-24
BVar
25-32
Byte and Bit Ordering:
Integer Variables are loaded into a frame with the Least Significant Byte first. Example
0x12345678 will appear in a frame as 0x78 0x56 0x34 0x12.
Boolean Variables are loaded in a frame as shown in the table above, with the lowest
Boolean Variable occupying the least significant bit of each byte. Example Boolean Var 1
will appear in byte as 0x01.
Receiving Data
In MiniCAN mode, incoming frames headers are compared to the Listen Node ID number.
If matched, and if the other 4 bits of the header identify the frame as a CANopen standard
RPDO1 to RPDO4, then the data is parsed and stored in Integer or Boolean Variables ac-
cording to the map below. The received data can then be read from the serial/USB using
the ?VAR or ?B queries, or they can be read from a MicroBasic script using the getval-
ue(_VAR, n) or getvalue(_B, n) functions.