TMCM-1311 Firmware Manual Datasheet by Trinamic Motion Control GmbH

View All Related Products | Download PDF Datasheet
A TRINAMIC MOTION CONTROL
MODULE FOR STEPPER MOTORS MODULE
TRINAMIC Motion Control GmbH & Co. KG
Hamburg, Germany
www.trinamic.com
Firmware Version V1.11
TMCL™ FIRMWARE MANUAL
+ + TMCM-1311
+ +
1-Axis Stepper
Closed Loop Controller/Driver
3.0
A / 48
V
Encoder Input
18 GPIOs
USB, CAN, RS485
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 2
www.trinamic.com
Table of Contents
2 Features ........................................................................................................................................................................... 4
3 Putting the TMCM-1311 into Operation ................................................................................................................. 6
3.1 Connecting the TMCM-1311 .............................................................................................................................. 6
3.2 Finding Optimum Settings with Parameterization Tool .......................................................................... 9
3.3 Using the TMCL-IDE to Develop Programs ................................................................................................ 11
3.3.1 Using TMCL Direct Mode ........................................................................................................................... 12
3.3.2 Testing with a Simple TMCL Program ................................................................................................... 13
3.4 Important Motor Settings ............................................................................................................................... 14
4 TMCL and the TMCL-IDE: Introduction ................................................................................................................. 15
4.1 Binary Command Format ................................................................................................................................ 15
4.1.1 Checksum Calculation ................................................................................................................................ 16
4.2 Reply Format ....................................................................................................................................................... 16
4.2.1 Status Codes ................................................................................................................................................. 17
4.3 Standalone Applications .................................................................................................................................. 17
4.4 The ASCII Interface ........................................................................................................................................... 18
4.4.1 Format of the Command Line ................................................................................................................. 18
4.4.2 Format of a Reply ....................................................................................................................................... 18
4.4.3 Commands Used in ASCII Mode ............................................................................................................. 18
4.4.4 Configuring the ASCII Interface ............................................................................................................. 19
5 TMCL Commands ........................................................................................................................................................ 20
5.1 Motion Commands ............................................................................................................................................ 20
5.2 Parameter Commands ...................................................................................................................................... 20
5.3 Control Commands ........................................................................................................................................... 20
5.4 I/O Port Commands .......................................................................................................................................... 20
5.5 Calculation Commands .................................................................................................................................... 21
5.6 Interrupt Commands ........................................................................................................................................ 21
5.6.1 Interrupt Types: ........................................................................................................................................... 21
5.6.2 Interrupt Processing: .................................................................................................................................. 21
5.6.3 Interrupt Vectors: ........................................................................................................................................ 22
5.6.4 Further Configuration of Interrupts ....................................................................................................... 22
5.6.5 Using Interrupts in TMCL .......................................................................................................................... 22
5.6.6 ASCII Commands ........................................................................................................................................ 23
5.7 Commands ........................................................................................................................................................... 24
5.7.1 ROR (rotate right) ........................................................................................................................................ 24
5.7.2 ROL (rotate left) ........................................................................................................................................... 25
5.7.3 MST (motor stop)......................................................................................................................................... 26
5.7.4 MVP (move to position) ............................................................................................................................ 27
5.7.5 SAP (set axis parameter) ........................................................................................................................... 29
5.7.6 GAP (get axis parameter) .......................................................................................................................... 30
5.7.7 STAP (store axis parameter) ..................................................................................................................... 31
5.7.8 RSAP (restore axis parameter) ................................................................................................................. 32
5.7.9 SGP (set global parameter) ...................................................................................................................... 33
5.7.10 GGP (get global parameter)...................................................................................................................... 34
5.7.11 STGP (store global parameter) ................................................................................................................ 35
5.7.12 RSGP (restore global parameter) ............................................................................................................ 36
5.7.13 RFS (reference search) ................................................................................................................................ 37
5.7.14 SIO (set input / output) ............................................................................................................................. 38
5.7.15 GIO (get input /output) ............................................................................................................................. 40
5.7.16 CALC (calculate) ............................................................................................................................................ 43
5.7.17 COMP (compare)........................................................................................................................................... 44
5.7.18 JC (jump conditional) ................................................................................................................................. 45
5.7.19 JA (jump always) ......................................................................................................................................... 46
5.7.20 CSUB (call subroutine) ............................................................................................................................... 47
5.7.21 RSUB (return from subroutine) ................................................................................................................ 48
5.7.22 WAIT (wait for an event to occur) ......................................................................................................... 49
5.7.23 STOP (stop TMCL program execution) ................................................................................................... 49
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 3
www.trinamic.com
5.7.24 SCO (set coordinate) ................................................................................................................................... 51
5.7.25 GCO (get coordinate) .................................................................................................................................. 52
5.7.26 CCO (capture coordinate) .......................................................................................................................... 53
5.7.27 ACO (accu to coordinate) .......................................................................................................................... 54
5.7.28 CALCX (calculate using the X register) .................................................................................................. 55
5.7.29 AAP (accumulator to axis parameter) .................................................................................................... 56
5.7.30 AGP (accumulator to global parameter) ............................................................................................... 57
5.7.31 CLE (clear error flags) ................................................................................................................................. 58
5.7.32 VECT (set interrupt vector) ........................................................................................................................ 59
5.7.33 EI (enable interrupt) ................................................................................................................................... 60
5.7.34 DI (disable interrupt) .................................................................................................................................. 61
5.7.35 RETI (return from interrupt) ..................................................................................................................... 62
5.7.36 Customer Specific TMCL Command Extension (user function) ....................................................... 63
5.7.37 Request Target Position Reached Event ............................................................................................... 64
5.7.38 BIN (return to binary mode) .................................................................................................................... 64
5.7.39 Control Functions: Firmware Version and Reset to Factory Defaults .......................................... 65
6 Axis Parameters .......................................................................................................................................................... 66
6.1 Velocity Calculation ........................................................................................................................................... 78
7 stallGuard2 Related Parameters ............................................................................................................................. 79
8 Closed-Loop Operation Related Axis Parameter ................................................................................................ 80
8.1 General Closed Loop Axis Parameters ........................................................................................................ 80
8.2 General Structure of the Closed Loop System ......................................................................................... 81
8.3 Setting Encoder Resolution and Motor Resolution ................................................................................. 82
8.4 Positioning Mode .............................................................................................................................................. 83
8.5 Position Maintenance and Standstill Mode ............................................................................................... 86
8.6 Velocity Mode ..................................................................................................................................................... 88
8.7 Torque Mode ....................................................................................................................................................... 89
8.8 Current Regulation ............................................................................................................................................ 90
8.9 Field Weakening ................................................................................................................................................ 94
8.10 Status and Feedback Information ................................................................................................................ 95
8.11 Example Programs: Closed Loop Operation .............................................................................................. 96
8.11.1 Example Program 1 ..................................................................................................................................... 96
8.11.2 Example Program 2 ..................................................................................................................................... 97
9 Reference Search ........................................................................................................................................................ 98
9.1.1 Reference Search Modes (Axis Parameter 193) ................................................................................... 99
10 Global Parameters .................................................................................................................................................... 101
10.1 Bank 0 ................................................................................................................................................................. 101
10.2 Bank 1 ................................................................................................................................................................. 103
10.3 Bank 2 ................................................................................................................................................................. 103
10.4 Bank 3 ................................................................................................................................................................. 103
11 TMCL Programming Techniques and Structure ............................................................................................... 104
11.1 Initialization ...................................................................................................................................................... 104
11.2 Main Loop .......................................................................................................................................................... 104
11.3 Using Symbolic Constants ............................................................................................................................ 104
11.4 Using Variables ................................................................................................................................................ 105
11.5 Using Subroutines ........................................................................................................................................... 105
11.6 Mixing Direct Mode and Standalone Mode .............................................................................................. 106
12 Life Support Policy ................................................................................................................................................... 107
13 Revision History ........................................................................................................................................................ 108
13.1 Firmware Revision .......................................................................................................................................... 108
13.2 Document Revision ......................................................................................................................................... 108
14 References .................................................................................................................................................................. 109
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 4
www.trinamic.com
2 Features
The TMCM-1311 is a single axis stepper motor controller and driver standalone board with USB, CAN and
RS485 interface. It supports motor currents up to 3A RMS and supply voltages up to 48V nominal. The module
offers inputs for an incremental a/b/n (TTL, open-collector, and differential inputs) encoder. In addition, there
are dedicated stop switch inputs and 8 general purpose inputs and 8 general purpose outputs.
MAIN CHARACTERISTICS
Bipolar stepper motor driver
- Up to 256 microsteps per full step
- High-efficient operation, low power dissipation
- Dynamic current control
- Integrated protection: overtemperature and undervoltage
- stallGuard2™ feature for stall detection (for open load operation)
Encoder
- Encoder input for incremental a/b/n (TTL, OC or diff.)
Interfaces
- RS485 2-wire communication interface
- CAN 2.0B communication interface (4x DIP-switch for CAN / RS485 address setting or other settings)
- USB 2.0 full-speed (12Mbit/s) communication interface (mini-USB connector)
- Encoder input: incremental a/b/n (TTL, OC or diff.)
- Dedicated STOP_L / STOP_R inputs
- Up to 8 multi-purpose inputs (+24V compatible, incl. 2 dedicated analog inputs)
- Up to 8 multi-purpose outputs (Open-drain, incl. 2 outputs for currents up to 1A)
Software
- TMCL™ remote (direct mode) and standalone operation with memory for up to 1024 TMCL commands
- Closed-loop support
- Fully supported by TMCL-IDE (PC based integrated development environment)
Electrical data
- Supply voltage: +12V… +48V DC
- Motor current: up to 3A RMS (programmable)
Mechanical data
- Board size: 110mm x 110mm, height 26.3mm max.
Please refer to separate TMCM-1311 Hardware Manual for additional information.
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 5
www.trinamic.com
TRINAMIC FEATURES CLOSED LOOP MODE
The TMCM-1311 is mainly designed to run 2-phase stepper motors in closed loop mode. It offers an automatic
motor load adaption in positioning mode, velocity mode, and torque mode, which is based on encoder
feedback and closed loop control software for analysis, error detection and error correction.
The closed loop mode operation combines the advantages of a stepper driver system with the benefits of a
servo drive. Thus, the TMCM-1311 is able to satisfy ambitious requirements in reliability and precision and
can be used in several industrial demanding applications.
Benefits of Stepper Drive
High torque without gearing
No feedback loop oscillations
High precision
Precise velocity control
Benefits of Servo Drive
Reaction to any impact
No position loss
Torque control
TMCM-1311
Figure 2.1 TMCM-1311 characteristics in closed loop mode
THE TRINAMIC CLOSED LOOP MODE OPERATION
- prevents the motor from stall and step loss caused by too high load or high velocity.
- adapts the current amplitude to each motor load which is within the ranges predetermined by motor
and controller/driver board characteristics.
- achieves a higher torque output than in open loop mode.
- guarantees a precise and fast positioning.
- enables velocity and positioning error compensation.
Using the TMCM-1311, energy will be saved and the motor will be kept cool.
PRECAUTIONS (my-d Loco IiCM 1311
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 6
www.trinamic.com
3 Putting the TMCM-1311 into Operation
Here you can find basic information for putting your TMCM-1311 into operation. If you are already common
with TRINAMICs modules you may skip this chapter.
THE THINGS YOU NEED:
- TMCM-1311
- Interface (RS485/CAN/USB) suitable to your module with cables
- Nominal supply voltage +24V DC or +48V DC for your module
- TMCM-1310/1311-GUI parameterization software, TMCL-IDE program, and PC
- Stepper motor
- Encoder (in case, closed loop mode operation is desired)
3.1 Connecting the TMCM-1311
1
Ref. Sw.
S/D IN
Stepper
Motor
1
Power
Pin 1 GND
Pin 2 V
DRIVER
Motor
Pin 1 A1
Pin 2 A2
Pin 3 B1
Pin 4 B2
USB
In/Out 1
In/Out 0
15
69
USB
RS485
CAN
CAN
Pin 2 CAN_L
Pin 7 CAN_H
Pin 3 GND
RS485
Pin 2 RS485-
Pin 7 RS485+
Pin 3 GND
CAN / RS485
Converter
e.g. USB-2-485
Converter
e.g. USB-2-X
Serial USB
interface
USB
Encoder
Pin 1 GND
Pin 2 +5V
Pin 3 A+
Pin 4 A-
Pin 5 B+
Pin 6 B-
Pin 7 N+
Pin 8 N-
Figure 3.1 Starting up
PRECAUTIONS
Do not connect or disconnect the TMCM-1311 while powered!
Do not connect or disconnect the motor while powered!
Do not exceed the maximum power supply voltage of 48V DC!
Note, that the module is not protected against reverse polarity!
START WITH POWER SUPPLY OFF!
Choose your interface f (www.tn namincom Canned the motor
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 7
www.trinamic.com
1. Choose your interface
According to default settings of the module, USB interface and CAN interface can be used without
any further configuration. For operation with RS485 interface, change interface setting (SGP 88
) first.
a) CAN interface
Pin Label Direction Description
1
2
Bi-directional
Differential CAN bus signal (inverting)
3
Power (GND)
Signal and system ground
4
5
6
7
Bi-directional
Differential CAN bus signal (non-inverting)
8
9
b) RS485 interface
Before connecting the interface it is necessary to configure it. Therefore, use the USB or the CAN
interface and the software development environment TMCL-IDE. With global parameter 88 (interface
selection) the RS485 interface can be selected.
TMCL-command for changing to the RS485 interface: SGP 88, 0
Pin Label Direction Description
1
2
Bi-directional
Differential RS485 bus signal (inverting)
3
Power (GND)
Signal and system ground
4
5
6
7
Bi-directional
Differential RS485 bus signal (non-inverting)
8
9
c) USB interface
For using USB interface download and install the file TMCM-1311.inf (www.trinamic.com).
Pin Label Direction Description
1
Power
(+5V input)
+5V supply from Host
2
Bi-directional
USB Data -
3
Bi-directional
USB Data +
4 ID Connected to signal and system ground
5 GND Power (GND) Signal and System ground
2. Connect the motor
Pin Label Direction Description
1
A1
Output
Pin 1 of motor coil A
2
A2
Output
Pin 2 of motor coil A
3
B1
Output
Pin 1 of motor coil B
4 B2 Output Pin 2 of motor coil B
Canned the encoder (optional - for closed loop operation) Canned the gower supgly 5w tch ON the gower sugply
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 8
www.trinamic.com
3. Connect the encoder (optional - for closed loop operation)
Pin Label Direction Description
1
Power (GND)
Signal and system ground
2 +5V
Power
(supply output)
+5V output for external circuit
3 A+ Input Encoder channel A+ input
(differential, non-inverting)
4 A- Input Encoder channel A- input
(differential, inverting)
5 B+ Input Encoder channel B+ input
(differential, non-inverting)
6 B- Input Encoder channel B- input
(differential, inverting)
7 N+ Input Encoder zero / index channel input
(differential, non-inverting)
8 N- Input Encoder zero / index channel input
(differential, inverting)
4. Connect the power supply
Pin Label Direction Description
1 GND Power (GND) Common system supply and signal ground
2
V
DRIVER
Power
(supply input)
Stepper driver supply voltage. Without this voltage the stepper
driver and any motor connected will not be energized.
3
V
DIGITAL
Power
(supply input)
Supply voltage for everything else apart from the stepper motor
driver. The on-
board voltage regulator generates the necessary
voltages for the digital circuits from this supply. The pin can be
left unconnected. In this case a diode between VDRIVER and VDIGITAL
ensures the supply for the digital parts.
ATTENTION:
- The diode has a current rating of 3A. As VDIGTIAL
is available
at the I/O connectors and at the reference switch connectors
also, always connect this pin to positive supply voltage in
case substantial amount of cu
rrent is withdrawn from these
pins for external circuits.
- It is expected that VDIGITAL and VDRIVER
are connected to the
same power supply output when both pins are used.
Otherwise please ensure that VDIGITAL
is always equal or
higher than VDRIVER when connected (due to the diode).
5. Switch ON the power supply
Turn power ON. The green LED should be flashing. The motor is powered but in standstill now.
If this does not occur, switch power OFF and check your connections as well as the power supply.
Refer to the hardware manual for further information about the hardware characteristics of your
module!
www.trinamic.com xma‘ [w] mum] a» m amps] my rum]
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 9
www.trinamic.com
3.2 Finding Optimum Settings with Parameterization Tool
Evaluating best parameter values for the TMCM-1311 with the TMCM-1310/1311-GUI software tool is quite
easy. The TMCM-1310/1311-GUI is available on www.trinamic.com.
After connecting the module as described in chapter 3.1, start the TMCM-1310/1311-GUI with a double click.
The following window will appear on the screen (see Figure 3.2).
The software detects your module and the related virtual com port for USB automatically if the file TMCM-
1311.inf is installed correctly. Now, click Connect to connect the module and start the trace controller in case
you like to work with graphs for velocity, positioning, or torque.
Figure 3.2 Welcome window of TMCM-1310/1311-GUI
The graphs for velocity, positioning, and torque can be selected via the Info menu as shown in Figure 3.3.
Figure 3.3 Info menu
gmwam 1w wsmwmg-n. . fin! Waming! Waming! ‘ The malnr will rotate during inifializafion! The malnr will rotate during inifializafion! Mon-(MW pm |:: madam 2m |:: Minsk“ mflmmhmmm Minsk“ m-tfimmm‘ym m-
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 10
www.trinamic.com
QUICKSTART
Using the default values of the TMCM-1311, it is possible to proceed with a quickstart. This way, you can
check how the module drives your specific stepper motor using these default values. Calibrate them after
first tests to find optimum values.
THERE ARE ONLY TWO THINGS THAT HAVE TO BE DONE BEFORE THE QUICKSTART:
- For closed loop mode, initialize the encoder with the appropriate command fields (see Figure 3.5) first.
To open up the encoder initialization window, click on the Init encoder button on the quickstart tab.
- Now, choose closed loop mode or open loop mode operation.
Choose
open loop mode or
closed loop mode
Click here to
initialize the
encoder
Figure 3.4 Quickstart tab
HOW TO INITIALIZE THE ENCODER
Fill in the fullstep resolution of your motor and click Start encoder initialization. The motor will rotate just
one round to initialize the encoder. If the encoder has been detected successfully, the appropriate
initialization status will be shown. In case an error occurred, this will be shown in the status field also (state
3 = encoder detection failed). In this case check your hardware connections and the motor fullstep resolution.
Figure 3.5 Encoder initialization window before initialization and afterwards
Now, first steps are made. Parameterize your module using the other tabs of the software tool.
www.mna miccom Installing the TMCLVIDE: USB interface E TMCLlnmagmad Development Emimnm [New El: 1] mg m mu Debug filfifil‘é‘fllfi'fi 0mm [NewaleT] a ConfiguleModuk... | p} SsathndIlL. l 8 lnsnllos~ mllGuard v mum-ml & (“5qu Vavamau Calculation". I 2‘ BLDC Configurnlion Tool" Commonw— Dp: RSZSZ/RSIEE/USBLEUM pm] v HSzaz/sts Eaud Agdms 1 www.TRINAMIC.com)
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 11
www.trinamic.com
3.3 Using the TMCL-IDE to Develop Programs
The TMCL-IDE is available on www.trinamic.com.
Installing the TMCL-IDE:
Make sure the COM port you intend to use is not blocked by another program.
Open TMCL-IDE by clicking TMCL.exe.
Choose Setup and Options and thereafter the Connection tab.
Choose COM port and type with the parameters shown in Figure 3.6 (baud rate 9600). Click OK.
USB interface
If the file TMCM-1311.inf is installed correctly, the module will be identified automatically.
Figure 3.6 Setup dialogue and connection tab of the TMCL-IDE.
Please refer to the TMCL-IDE User Manual for more information (see www.TRINAMIC.com).
T , meLDimMnde«1_ X Wu Inmuuim 5mm [min-client Due flow / Bank yam [l-RDHmefigH -] [U-
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 12
www.trinamic.com
3.3.1 Using TMCL Direct Mode
1. Start TMCL Direct Mode.
Direct Mode
2. If the communication is established the TMCM-1311 will be detected automatically. If the module
should not be detected, please check all points above (cables, interface, power supply, COM port,
baud rate).
3. Issue a command by choosing Instruction, Type (if necessary), Motor, and Value and click
Execute to send it to the module.
Examples:
- ROR rotate right, motor 0, value 50000 -> Click Execute. The motor is rotating now.
- MST motor stop, motor 0 -> Click Execute. The motor stops now.
Top right of the TMCL Direct Mode window is the button Copy to editor. Click here to copy the chosen
command and create your own TMCL program. The command will be shown immediately on the editor.
+h ? 1‘ ¥ IEF
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 13
www.trinamic.com
3.3.2 Testing with a Simple TMCL Program
Type in the following program:
Assemble
Download Run
Stop
1. Click the Assemble icon to convert the TMCL program into binary code.
2. Then download the program to the TMCM-1311 module by clicking the Download icon.
3. Click the Run icon. The desired program will be executed.
4. Click the Stop button to stop the program.
ROL 0, 50000 //Rotate motor 0 with speed 50000
WAIT TICKS, 0, 500
MST 0
ROR 0, 50000 //Rotate motor 0 with 50000
WAIT TICKS, 0, 500
MST 0
SAP 4, 0, 50000 //Set max. Velocity
SAP 5, 0, 50000 //Set max. Acceleration
Loop: MVP ABS, 0, 100000 //Move to Position 10000
WAIT POS, 0, 0 //Wait until position reached
MVP ABS, 0, -100000 //Move to Position -10000
WAIT POS, 0, 0 //Wait until position reached
JA Loop //Infinite Loop
42/1 255 3 DA 255 4 2A 255 I :< 1="">><7 m="" imus="" 255="">
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 14
www.trinamic.com
3.4 Important Motor Settings
There are some axis parameters which have to be adjusted right in the beginning after installing your
module. Please set the upper limiting values for the speed (axis parameter 4), the acceleration (axis parameter
5), and the current (axis parameter 6). Further set the standby current (axis parameter 7) and choose your
microstep resolution with axis parameter 140. Please use the SAP (Set Axis Parameter) command for adjusting
these values. The SAP command is described in paragraph 5.7.5. You can use the TMCL-IDE direct mode for
easily configuring your module.
IMPORTANT AXIS PARAMETERS FOR MOTOR SETTING
Number Axis Parameter Description Range [Unit]
4 Maximum
positioning
speed
Should not exceed the physically highest possible
valu
e. Adjust the pulse divisor (axis parameter 154), if
the speed value is very low (<50) or above the upper
limit.
0… +268.435.454
[pps]
5
Maximum
acceleration
The limit for acceleration (and deceleration). Changing
this parameter requires re-calculation o
f the
acceleration factor (no. 146) and the acceleration divisor
(no. 137), which is done automatically. See TMC 429
datasheet for calculation of physical units.
1… +33554431
[pps/s]
6
Absolute max.
current
(CS / Current
Scale)
The maximum value is 255. This value means 100% of
the maximum current of the module. The current
adjustment is within the range 0… 255 and can be
adjusted in 32 steps.
The most important motor setting, since too high
values might cause motor damage!
0… 7
79…87
160… 167
240… 247
8… 15
88… 95
168… 175
248… 255
16… 23
96… 103
176… 183
24… 31
104… 111
184… 191
32… 39 112… 119 192… 199
40… 47
120… 127
200… 207
48… 55
128… 135
208… 215
56… 63
136… 143
216… 223
64… 71
144… 151
224… 231
72… 79
152… 159
232… 239
0… 255
𝐼𝐼
𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝
=< 𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣 4.2𝐴𝐴
255
𝐼𝐼𝑅𝑅𝑅𝑅𝑅𝑅 =< 𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣 3.0𝐴𝐴
255
7
Standby current
The current limit two seconds after the motor has
stopped.
0… 255
𝐼𝐼
𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝
=< 𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣 4.2𝐴𝐴
255
𝐼𝐼𝑅𝑅𝑅𝑅𝑅𝑅 =< 𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣 >× 3.0𝐴𝐴
255
140 Microstep
resolution
0 full step
1
half step
2
4 microsteps
3
8 microsteps
4 16 microsteps
5
32 microsteps
6
64 microsteps
7
128 microsteps
8
256 microsteps
0… 8
Attention:
The most important motor setting is the absolute maximum motor current setting, since too high values
might cause motor damage!
(httgdlwwwm na m \mom)
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 15
www.trinamic.com
4 TMCL and the TMCL-IDE: Introduction
The software running on the microprocessor of the TMCM-1311 consists of two parts, a boot loader and the
firmware itself. Whereas the boot loader is installed during production and testing at TRINAMIC and remains
untouched throughout the whole lifetime, the firmware can be updated by the user. New versions can be
downloaded free of charge from the TRINAMIC website (http://www.trinamic.com).
The TMCM-1311 supports TMCL direct mode (binary commands) and standalone TMCL program execution. You
can store up to 2048 TMCL instructions on it. In direct mode and most cases the TMCL communication over
RS485, CAN, or USB follows a strict master/slave relationship. That is, a host computer (e.g. PC/PLC) acting as
the interface bus master will send a command to the TMCM-1311. The TMCL interpreter on the module will
then interpret this command, do the initialization of the motion controller, read inputs and write outputs or
whatever is necessary according to the specified command. As soon as this step has been done, the module
will send a reply back over RS485/CAN/USB to the bus master. Only then should the master transfer the next
command. Normally, the module will just switch to transmission and occupy the bus for a reply, otherwise
it will stay in receive mode. It will not send any data over the interface without receiving a command first.
This way, any collision on the bus will be avoided when there are more than two nodes connected to a
single bus.
The Trinamic Motion Control Language [TMCL] provides a set of structured motion control commands. Every
motion control command can be given by a host computer or can be stored in an EEPROM on the TMCM
module to form programs that run standalone on the module. For this purpose there are not only motion
control commands but also commands to control the program structure (like conditional jumps, compare
and calculating).
Every command has a binary representation and a mnemonic. The binary format is used to send commands
from the host to a module in direct mode, whereas the mnemonic format is used for easy usage of the
commands when developing standalone TMCL applications using the TMCL-IDE (IDE means Integrated
Development Environment).
There is also a set of configuration variables for the axis and for global parameters which allow individual
configuration of nearly every function of a module. This manual gives a detailed description of all TMCL
commands and their usage.
4.1 Binary Command Format
Every command has a mnemonic and a binary representation. When commands are sent from a host to a
module, the binary format has to be used. Every command consists of a one-byte command field, a one-
byte type field, a one-byte motor/bank field and a four-byte value field. So the binary representation of a
command always has seven bytes. When a command is to be sent via RS485 or USB interface, it has to be
enclosed by an address byte at the beginning and a checksum byte at the end. In this case it consists of
nine bytes.
This is different when communicating is via the CAN bus. Address and checksum are included in the CAN
standard and do not have to be supplied by the user.
The binary command format for R485/USB is as follows:
Bytes Meaning
1
Module address
1 Command number
1 Type number
1
Motor or Bank number
4
Value (MSB first!)
1
Checksum
- The checksum is calculated by adding up all the other bytes using an 8-bit addition.
- When using CAN bus, just leave out the first byte (module address) and the last byte (checksum).
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 16
www.trinamic.com
4.1.1 Checksum Calculation
As mentioned above, the checksum is calculated by adding up all bytes (including the module address byte)
using 8-bit addition. Here are two examples to show how to do this:
- in C:
unsigned char i, Checksum;
unsigned char Command[9];
//Set the “Command” array to the desired command
Checksum = Command[0];
for(i=1; i<8; i++)
Checksum+=Command[i];
Command[8]=Checksum; //insert checksum as last byte of the command
//Now, send it to the module
- in Delphi:
var
i, Checksum: byte;
Command: array[0..8] of byte;
//Set the “Command” array to the desired command
//Calculate the Checksum:
Checksum:=Command[0];
for i:=1 to 7 do Checksum:=Checksum+Command[i];
Command[8]:=Checksum;
//Now, send the “Command” array (9 bytes) to the module
4.2 Reply Format
Every time a command has been sent to a module, the module sends a reply.
The reply format for RS485/ /USB is as follows:
Bytes Meaning
1 Reply address
1
Module address
1
Status (e.g. 100 means no error)
1
Command number
4 Value (MSB first!)
1 Checksum
- The checksum is also calculated by adding up all the other bytes using an 8-bit addition.
- When using CAN bus, just leave out the first byte (module address) and the last byte (checksum).
- Do not send the next command before you have received the reply!
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 17
www.trinamic.com
4.2.1 Status Codes
The reply contains a status code. The status code can have one of the following values:
Code Meaning
100 Successfully executed, no error
101 Command loaded into TMCL
program EEPROM
1
Wrong checksum
2
Invalid command
3
Wrong type
4
Invalid value
5 Configuration EEPROM locked
6 Command not available
4.3 Standalone Applications
The module is equipped with a TMCL memory for storing TMCL applications. You can use TMCL-IDE for
developing standalone TMCL applications. You can download a program into the EEPROM and afterwards it
will run on the module. The TMCL-IDE contains an editor and the TMCL assembler where the commands can
be entered using their mnemonic format. They will be assembled automatically into their binary
representations. Afterwards this code can be downloaded into the module to be executed there.
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 18
www.trinamic.com
4.4 The ASCII Interface
There is also an ASCII interface that can be used to communicate with the module and to send some
commands as text strings.
ENTERING AND LEAVING ASCII MODE:
- The ASCII command line interface is entered by sending the binary command 139 (enter ASCII mode).
- Afterwards the commands are entered as in the TMCL-IDE. Please note that only those commands,
which can be used in direct mode, also can be entered in ASCII mode.
- For leaving the ASCII mode and re-entering the binary mode enter the command BIN.
4.4.1 Format of the Command Line
As the first character, the address character has to be sent. The address character is A when the module
address is 1, B for modules with address 2 and so on. After the address character there may be spaces (but
this is not necessary). Then, send the command with its parameters. At the end of a command line a <CR>
character has to be sent.
EXAMPLES FOR VALID COMMAND LINES
AMVP ABS, 1, 50000
A MVP ABS, 1, 50000
AROL 2, 500
A MST 1
ABIN
These command lines would address the module with address 1. To address e.g. module 3, use address
character C instead of A. The last command line shown above will make the module return to binary mode.
4.4.2 Format of a Reply
After executing the command the module sends back a reply in ASCII format. The reply consists of:
- the address character of the host (host address that can be set in the module)
- the address character of the module
- the status code as a decimal number
- the return value of the command as a decimal number
- a <CR> character
So, after sending AGAP 0, 1 the reply would be BA 100 –5000 if the actual position of axis 1 is 5000,
the host address is set to 2 and the module address is 1. The value 100 is the status code 100 that means
command successfully executed.
4.4.3 Commands Used in ASCII Mode
The following commands can be used in ASCII mode: ROL, ROR, MST, MVP, SAP, GAP, STAP, RSAP, SGP, GGP,
STGP, RSGP, RFS, SIO, GIO, SCO, GCO, CCO, UF0, UF1, UF2, UF3, UF4, UF5, UF6, and UF7.
SPECIAL COMMANDS WHICH ARE ONLY AVAILABLE IN ASCII MODE
- BIN: This command quits ASCII mode and returns to binary TMCL mode.
- RUN: This command can be used to start a TMCL program in memory.
- STOP: Stops a running TMCL application.
Note:
Only direct mode commands can be entered in ASCII mode!
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 19
www.trinamic.com
4.4.4 Configuring the ASCII Interface
The module can be configured so that it starts up either in binary mode or in ASCII mode. Global parameter
67 is used for this purpose (please see also chapter 10.1).
Bit 0 determines the startup mode: if this bit is set, the module starts up in ASCII mode, else it will start up
in binary mode (default).
Bit 4 and Bit 5 determine how the characters that are entered are echoed back. Normally, both bits are set
to zero. In this case every character that is entered is echoed back when the module is addressed. Character
can also be erased using the backspace character (press the backspace key in a terminal program).
When bit 4 is set and bit 5 is clear the characters that are entered are not echoed back immediately but the
entire line will be echoed back after the <CR> character has been sent.
When bit 5 is set and bit 4 is clear there will be no echo, only the reply will be sent. This may be useful in
RS485 systems.
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 20
www.trinamic.com
5 TMCL Commands
In this section a short overview of the TMCL commands is given.
5.1 Motion Commands
These commands control the motion of the motor. They are the most important commands and can be used
in direct mode or in standalone mode.
Mnemonic
Command number
Meaning
ROL 2 Rotate left
ROR
1
Rotate right
MVP 4 Move to position
MST
3
Motor stop
RFS 13 Reference search
SCO
30
Store coordinate
CCO
32
Capture coordinate
GCO
31
Get coordinate
5.2 Parameter Commands
These commands are used to set, read and store axis parameters or global parameters. Axis parameters can
be set independently for the axis, whereas global parameters control the behavior of the module itself.
These commands can also be used in direct mode and in standalone mode.
5.3 Control Commands
These commands are used to control the program flow (loops, conditions, jumps etc.). It does not make
sense to use them in direct mode. They are intended for standalone mode only.
Mnemonic Command number Meaning
JA
22
Jump always
JC 21 Jump conditional
COMP
20
Compare accumulator with constant value
CSUB 23 Call subroutine
RSUB
24
Return from subroutine
WAIT
27
Wait for a specified event
STOP
28
End of a TMCL program
5.4 I/O Port Commands
These commands control the external I/O ports and can be used in direct mode and in standalone mode.
Mnemonic
Command number
Meaning
SIO
14
Set output
GIO 15 Get input
Mnemonic
Command number
Meaning
SAP
5
Set axis parameter
GAP
6
Get axis parameter
STAP
7
Store axis parameter into EEPROM
RSAP
8
Restore axis parameter from EEPROM
SGP 9 Set global parameter
GGP
10
Get global parameter
STGP 11 Store global parameter into EEPROM
RSGP
12
Restore global parameter from EEPROM
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 21
www.trinamic.com
5.5 Calculation Commands
These commands are intended to be used for calculations within TMCL applications. Although they could
also be used in direct mode it does not make much sense to do so.
Mnemonic
Command number
Meaning
CALC
19
Calculate using the accumulator and a constant value
CALCX 33 Calculate using the accumulator and the X register
AAP
34
Copy accumulator to an axis parameter
AGP 35 Copy accumulator to a global parameter
ACO
39
Copy accu to coordinate
For calculating purposes there is an accumulator (or accu or A register) and an X register. When executed in
a TMCL program (in standalone mode), all TMCL commands that read a value store the result in the
accumulator. The X register can be used as an additional memory when doing calculations. It can be loaded
from the accumulator.
When a command that reads a value is executed in direct mode the accumulator will not be affected. This
means that while a TMCL program is running on the module (standalone mode), a host can still send
commands like GAP and GGP to the module (e.g. to query the actual position of the motor) without affecting
the flow of the TMCL program running on the module.
5.6 Interrupt Commands
Due to some customer requests, interrupt processing has been introduced in the TMCL firmware for ARM
based modules.
Mnemonic Command number Meaning
EI
25
Enable interrupt
DI 26 Disable interrupt
VECT
37
Set interrupt vector
RETI
38
Return from interrupt
5.6.1 Interrupt Types:
There are many different interrupts in TMCL, like timer interrupts, stop switch interrupts, position reached
interrupts, and input pin change interrupts. Each of these interrupts has its own interrupt vector. Each
interrupt vector is identified by its interrupt number. Please use the TMCL included file Interrupts.inc for
symbolic constants of the interrupt numbers.
5.6.2 Interrupt Processing:
When an interrupt occurs and this interrupt is enabled and a valid interrupt vector has been defined for that
interrupt, the normal TMCL program flow will be interrupted and the interrupt handling routine will be
called. Before an interrupt handling routine gets called, the context of the normal program will be saved
automatically (i.e. accumulator register, X register, TMCL flags).
There is no interrupt nesting, i.e. all other interrupts are disabled while an interrupt handling routine is
being executed.
On return from an interrupt handling routine, the context of the normal program will automatically be
restored and the execution of the normal program will be continued.
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 22
www.trinamic.com
5.6.3 Interrupt Vectors:
The following table shows all interrupt vectors that can be used.
Interrupt number
Interrupt type
0 Timer 0
1
Timer 1
2
Timer 2
3
Target position reached
15
stallGuard2
21 Deviation
27 Left stop switch
28
Right stop switch
39
Input change 0
40
Input change 1
41 Input change 2
42 Input change 3
43
Input change 4
44
Input change 5
45
Input change 6
46 Input change 7
255
Global interrupts
5.6.4 Further Configuration of Interrupts
Some interrupts need further configuration (e.g. the timer interval of a timer interrupt). This can be done
using SGP commands with parameter bank 3 (SGP <type>, 3, <value>). Please refer to the SGP command
(paragraph 5.7.9) for further information about that.
5.6.5 Using Interrupts in TMCL
To use an interrupt the following things have to be done:
- Define an interrupt handling routine using the VECT command.
- If necessary, configure the interrupt using an SGP <type>, 3, <value> command.
- Enable the interrupt using an EI <interrupt> command.
- Globally enable interrupts using an EI 255 command.
- An interrupt handling routine must always end with a RETI command
EXAMPLE FOR THE USE OF A TIMER INTERRUPT:
VECT 0, Timer0Irq //define the interrupt vector
SGP 0, 3, 1000 //configure the interrupt: set its period to 1000ms
EI 0 //enable this interrupt
EI 255 //globally switch on interrupt processing
//Main program: toggles output 3, using a WAIT command for the delay
Loop:
SIO 3, 2, 1
WAIT TICKS, 0, 50
SIO 3, 2, 0
WAIT TICKS, 0, 50
JA Loop
//Here is the interrupt handling routine
Timer0Irq:
GIO 0, 2 //check if OUT0 is high
JC NZ, Out0Off //jump if not
SIO 0, 2, 1 //switch OUT0 high
RETI //end of interrupt
Out0Off:
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 23
www.trinamic.com
SIO 0, 2, 0 //switch OUT0 low
RETI //end of interrupt
In this example the interrupt numbers are used directly. To make the program better readable use the
provided include file Interrupts.inc. This file defines symbolic constants for all interrupt numbers which can
be used in all interrupt commands. The beginning of the program above then looks like the following:
#include Interrupts.inc
VECT TI_TIMER0, Timer0Irq
SGP TI_TIMER0, 3, 1000
EI TI_TIMER0
EI TI_GLOBAL
Please also take a look at the other example programs.
5.6.6 ASCII Commands
Mnemonic
Command number
Meaning
-
139
Enter ASCII mode
BIN - Quit ASCII mode and return to binary mode.
This command can only
be used in ASCII mode.
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 24
www.trinamic.com
5.7 Commands
The module specific commands are explained in more detail on the following pages. They are listed according
to their command number.
5.7.1 ROR (rotate right)
With this command the motor will be instructed to rotate with a specified velocity in positive direction
(increasing the position counter).
Like on all other TMCL modules, the motor will be accelerated or decelerated to the speed given with the
command. The speed is given in microsteps per second (pps). For conversion of this value into rounds per
minute etc. please refer to chapter 6.1, also.
The range is -268.435.455 +268.435.454.
Internal function: first, velocity mode is selected. Then, the velocity value is transferred to axis parameter
#2 (target velocity).
Related commands: ROL, MST, SAP, GAP
Mnemonic: ROR 0, <velocity>
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
1 don't care <motor>
0*
<velocity>
-268.435.455… +268.435.454
* Motor number is always O as the module support just one axis
Reply in direct mode:
STATUS VALUE
100 OK
don't care
Example:
Rotate right, velocity = 10000
Mnemonic: ROR 0, 10000
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number
Type Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$01
$00
$00
$00
$00
$27
$10
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 25
www.trinamic.com
5.7.2 ROL (rotate left)
With this command the motor will be instructed to rotate with a specified velocity in positive direction
(increasing the position counter).
Like on all other TMCL modules, the motor will be accelerated or decelerated to the speed given with the
command. The speed is given in microsteps per second (pps). For conversion of this value into rounds per
minute etc. please refer to chapter 6.1, also.
The range is -268.435.455… +268.435.454.
Internal function: first, velocity mode is selected. Then, the velocity value is transferred to axis parameter
#2 (target velocity).
Related commands: ROR, MST, SAP, GAP
Mnemonic: ROL 0, <velocity>
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
2 don't care <motor>
0*
<velocity>
-268.435.455… +268.435.454
* Motor number is always O as the module support just one axis
Reply in direct mode:
STATUS VALUE
100 OK
don't care
Example:
Rotate left, velocity = 10000
Mnemonic: ROL 0, 10000
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number
Type
Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$02
$00
$00
$00
$00
$27
$10
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 26
www.trinamic.com
5.7.3 MST (motor stop)
The motor will be instructed to stop.
Internal function: the axis parameter target velocity is set to zero.
Related commands: ROL, ROR, SAP, GAP
Mnemonic: MST 0
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
3 don’t care
<motor>
0
*
don’t care
* Motor number is always O as the module support just one axis
Reply in direct mode:
STATUS VALUE
100 OK don’t care
Example:
Stop motor 0
Mnemonic: MST 0
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function Target-
address
Instruction
Number
Type Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01 $03 $00 $00 $00 $00 $00 $00
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 27
www.trinamic.com
5.7.4 MVP (move to position)
The motor will be instructed to move to a specified relative or absolute position or a pre-programmed
coordinate. It will use the acceleration/deceleration ramp and the positioning speed programmed into the
unit. This command is non-blocking that is, a reply will be sent immediately after command interpretation
and initialization of the motion controller. Further commands may follow without waiting for the motor
reaching its end position. The maximum velocity and acceleration are defined by axis parameters #4 and #5.
UNITS AND RANGE
Open loop: the range of the MVP command is 32 bit signed (−2.147.483.648… +2.147.483.647). The unit is
microsteps.
Closed loop: the range of the MVP command is 32 bit signed (−2.147.483.648… +2.147.483.647). The unit is
encoder steps.
Positioning can be interrupted using MST, ROL or ROR commands.
THREE OPERATION TYPES ARE AVAILABLE:
- Moving to an absolute position in the range from −2.147.483.648… +2.147.483.647.
- Starting a relative movement by means of an offset to the actual position. In this case, the new resulting
position value must not exceed the above mentioned limits, too.
- Moving the motor to a (previously stored) coordinate (refer to SCO for details).
Please note, that the distance between the actual position and the new one should not be more than
2.147.483.647 (231-1) microsteps resp. encoder steps. Otherwise the motor will run in the opposite direction
in order to take the shorter distance.
When moving to a coordinate, the coordinate has to be set properly in advance with the help of the SCO,
CCO or ACO command.
Internal function: A new position value is transferred to the axis parameter #0 (target position).
Related commands: SAP, GAP, SCO, CCO, GCO, MST
Mnemonic: MVP <ABS|REL|COORD>, 0, <position|offset|coordinate number>
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
4
0 ABS absolute
<motor>
0*
<position>
−2.147.483.648…
+2.147.483.647
1 REL relative
<offset>
−2.147.483.648…
+2.147.483.647
2 COORD coordinate
<coordinate number>
0… 20
* Motor number is always O as only one motor is involved
Reply in direct mode:
STATUS VALUE
100 OK don’t care
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 28
www.trinamic.com
Example:
Move motor 0 to (absolute) position 90000
Mnemonic: MVP ABS, 0, 9000
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number
Type Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$04
$00
$00
$00
$01
$5f
$90
Example:
Move motor 0 from current position 1000 steps backward (move relative 1000)
Mnemonic: MVP REL, 0, -1000
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number
Type
Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$04
$01
$00
$ff
$ff
$fc
$18
Example:
Move motor 0 to previously stored coordinate #8
Mnemonic: MVP COORD, 0, 8
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function Target-
address
Instruction
Number
Type Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex) $01 $04 $02 $00 $00 $00 $00 $08
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 29
www.trinamic.com
5.7.5 SAP (set axis parameter)
With this command most of the motion control parameters can be specified. The settings will be stored in
SRAM and therefore are volatile. That is, information will be lost after power off. Please use command STAP
(store axis parameter) in order to store any setting permanently.
Internal function: the parameter format is converted. The parameter is transferred to the correct position in
the appropriate device.
Related commands: GAP, STAP, RSAP, AAP
Mnemonic: SAP <parameter number>, 0, <value>
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
5 <parameter number>
<motor>
0
*
<value>
* Motor number is always O as only one motor is involved
Reply in direct mode:
STATUS VALUE
100 OK don’t care
For a table with parameters and values which can be used together with this command please refer to
chapter 6.
Example:
Set the absolute maximum current of the motor during movements to approx. 78% of max. module
current:
Mnemonic: SAP 6, 0, 200
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number
Type
Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex) $01 $05 $06 $00 $00 $00 $00 $c8
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 30
www.trinamic.com
5.7.6 GAP (get axis parameter)
Most parameters of the TMCM-1311 can be adjusted individually for the axis. With this parameter they can
be read out. In standalone mode the requested value is also transferred to the accumulator register for
further processing purposes (such as conditioned jumps). In direct mode the value read is only output in
the value field of the reply (without affecting the accumulator).
Internal function: the parameter is read out of the correct position in the appropriate device. The parameter
format is converted adding leading zeros (or ones for negative values).
Related commands: SAP, STAP, AAP, RSAP
Mnemonic: GAP <parameter number>, 0
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
6 <parameter number>
<motor>
0* don’t care
* Motor number is always O as only one motor is involved
Reply in direct mode:
STATUS VALUE
100 OK don’t care
For a table with parameters and values which can be used together with this command please refer to
chapter 6.
Example:
Get the maximum current of motor
Mnemonic: GAP 6, 0
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number Type Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$06
$06
$01
$00
$00
$00
$00
Reply:
Byte Index 0 1 2 3 4 5 6 7
Function
Host-
address
Target-
address
Status
Instruction
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$02
$01
$64
$06
$00
$00
$02
$80
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 31
www.trinamic.com
5.7.7 STAP (store axis parameter)
An axis parameter previously set with a Set Axis Parameter command (SAP) will be stored permanent. Most
parameters are automatically restored after power up.
Internal function: an axis parameter value stored in SRAM will be transferred to EEPROM and loaded from
EEPORM after next power up.
Related commands: SAP, RSAP, GAP, AAP
Mnemonic: STAP <parameter number>, 0
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
7 <parameter number> <motor>
0* don’t care*1
* Motor number is always O as only one motor is involved
*1 The value operand of this function has no effect. Instead, the currently used value (e.g. selected by SAP) is saved
Reply in direct mode:
STATUS VALUE
100 OK don’t care
For a table with parameters and values which can be used together with this command please refer to
chapter 6.
The STAP command will not have any effect when the configuration EEPROM is locked (refer to 10.1). In
direct mode, the error code 5 (configuration EEPROM locked, see also section 4.2.1) will be returned in this
case.
Example:
Store the maximum speed of motor
Mnemonic: STAP 4, 0
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number Type Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$07
$04
$00
$00
$00
$00
$00
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 32
www.trinamic.com
5.7.8 RSAP (restore axis parameter)
For all configuration-related axis parameters non-volatile memory locations are provided. By default, most
parameters are automatically restored after power up. A single parameter that has been changed before can
be reset by this instruction also.
Internal function: the specified parameter is copied from the configuration EEPROM memory to its RAM
location.
Relate commands: SAP, STAP, GAP, and AAP
Mnemonic: RSAP <parameter number>, 0
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
8 <parameter number>
<motor>
0*
don’t care
* Motor number is always O as only one motor is involved
Reply structure in direct mode:
STATUS VALUE
100 OK don’t care
For a table with parameters and values which can be used together with this command please refer to
chapter 6.
Example:
Restore the maximum current of motor
Mnemonic: RSAP 6, 0
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function Target-
address
Instruction
Number Type Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$08
$06
$00
$00
$00
$00
$00
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 33
www.trinamic.com
5.7.9 SGP (set global parameter)
With this command most of the module specific parameters not directly related to motion control can be
specified and the TMCL user variables can be changed. Global parameters are related to the host interface,
peripherals or application specific variables. The different groups of these parameters are organized in banks
to allow a larger total number for future products. Currently, bank 0 and 1 are used for global parameters,
bank 2 is used for user variables, and bank 3 is used for interrupts.
All module settings will automatically be stored non-volatile (internal EEPROM of the processor). The TMCL
user variables will not be stored in the EEPROM automatically, but this can be done by using STGP commands.
For a table with parameters and bank numbers which can be used together with this command please refer
to chapter 10.
Internal function: the parameter format is converted. The parameter is transferred to the correct position in
the appropriate (on board) device.
Related commands: GGP, STGP, RSGP, AGP
Mnemonic: SGP <parameter number>, <bank number>, <value>
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
9 <parameter number> <bank number> <value>
Reply in direct mode:
STATUS VALUE
100 OK don’t care
Example:
Set the serial address of the target device to 3
Mnemonic: SGP 66, 0, 3
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number Type Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$09
$42
$00
$00
$00
$00
$03
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 34
www.trinamic.com
5.7.10 GGP (get global parameter)
All global parameters can be read with this function. Global parameters are related to the host interface,
peripherals or application specific variables. The different groups of these parameters are organized in banks
to allow a larger total number for future products. Currently, bank 0 and 1 are used for global parameters,
bank 2 is used for user variables, and bank 3 is used for interrupts.
For a table with parameters and bank numbers which can be used together with this command please refer
to chapter 10
Internal function: the parameter is read out of the correct position in the appropriate device. The parameter
format is converted.
Related commands: SGP, STGP, RSGP, AGP
Mnemonic: GGP <parameter number>, <bank number>
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
10 <parameter number> <bank number> don’t care
Reply in direct mode:
STATUS VALUE
100 OK don’t care
Example:
Get the serial address of the target device
Mnemonic: GGP 66, 0
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number
Type
Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex) $01 $0a $42 $00 $00 $00 $00 $00
Reply:
Byte Index 0 1 2 3 4 5 6 7
Function
Host-
address
Target-
address
Status Instruction Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$02
$01
$64
$0a
$00
$00
$00
$01
Status = no error, value = 1
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 35
www.trinamic.com
5.7.11 STGP (store global parameter)
This command is used to store TMCL user variables permanently in the EEPROM of the module. Some global
parameters are located in RAM memory, so without storing modifications are lost at power down. This
instruction enables enduring storing. Most parameters are automatically restored after power up.
For a table with parameters and bank numbers which can be used together with this command please refer
to chapter 10
Internal function: the specified parameter is copied from its RAM location to the configuration EEPROM.
Related commands: SGP, GGP, RSGP, AGP
Mnemonic: STGP <parameter number>, <bank number>
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
11 <parameter number> <bank number> don’t care
Reply in direct mode:
STATUS VALUE
100 OK don’t care
Example:
Store the user variable #42
Mnemonic: STGP 42, 2
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number
Type
Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$0b
$2a
$02
$00
$00
$00
$00
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 36
www.trinamic.com
5.7.12 RSGP (restore global parameter)
With this command the contents of a TMCL user variable can be restored from the EEPROM. For all
configuration-related axis parameters, non-volatile memory locations are provided. By default, most
parameters are automatically restored after power up. A single parameter that has been changed before can
be reset by this instruction.
For a table with parameters and bank numbers which can be used together with this command please refer
to chapter 10
Internal function: The specified parameter is copied from the configuration EEPROM memory to its RAM
location.
Relate commands: SGP, STGP, GGP, and AGP
Mnemonic: RSGP <parameter number>, <bank number>
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
12 <parameter number> <bank number> don’t care
Reply structure in direct mode:
STATUS VALUE
100 – OK don’t care
Example:
Restore the user variable #42
Mnemonic: RSGP 42, 2
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function Target-
address
Instruction
Number Type Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$0c
$2a
$02
$00
$00
$00
$00
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 37
www.trinamic.com
5.7.13 RFS (reference search)
The TMCM-1311 has a built-in reference search algorithm which can be used. The reference search algorithm
provides switching point calibration and three switch modes. The status of the reference search can also be
queried to see if it has already finished. (In a TMCL program it is better to use the WAIT command to wait
for the end of a reference search.) Please see the appropriate parameters in the axis parameter table to
configure the reference search algorithm to meet your needs (chapter 6). The reference search can be started,
stopped, and the actual status of the reference search can be checked.
Internal function: the reference search is implemented as a state machine. Interaction is possible during
execution.
Related commands: WAIT
Mnemonic: RFS <START|STOP|STATUS>, 0
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
13
0 START start ref. search
1 STOP abort ref. search
2 STATUS get status
<motor>
0* see below
* Motor number is always O as only one motor is involved
Reply in direct mode:
When using type 0 (START) or 1 (STOP):
STATUS VALUE
100 OK don’t care
When using type 2 (STATUS):
STATUS VALUE
100 OK 0 ref. search active
other values no ref. search
active
Example:
Start reference search of motor 0
Mnemonic: RFS START, 0
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function Target-
address
Instruction
Number Type Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$0d
$00
$00
$00
$00
$00
$00
With this module it is possible to use stall detection instead of a reference search.
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 38
www.trinamic.com
5.7.14 SIO (set input / output)
SIO sets the status of the general digital output either to low (0) or to high (1). Bank 2 is used for this
purpose.
Internal function: the passed value is transferred to the specified output line.
Related commands: GIO, WAIT
Mnemonic: SIO <port number>, <bank number>, <value>
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
14 <port number> <bank number>
2
<value>
0/1
Reply structure:
STATUS
VALUE
100 OK
don’t care
Example:
Set OUT_7 to high (bank 2, output 7)
Mnemonic: SIO 7, 2, 1
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number
Type
Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$0e
$07
$02
$00
$00
$00
$01
OVERVIEW CONNECTORS 0 AND 1
I/O
connector 1
I/O
connector 0
Figure 5.1 I/O connectors
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 39
www.trinamic.com
OVERVIEW OF CONNECTORS 0 AND 1
Pin IN/OUT 0 IN/OUT 1 Direction Description
1
GND
GND
Power (GND)
GND
2 VCC VCC
Power
(supply output)
Connected to VDIGITAL of Power connector
3 AIN0 AIN4 Input
Dedicated analog input,
input voltage range: 0… +10V,
resolution: 12bit (0… 4095)
4 IN1 IN5 Input Digital input (+24V compatible)
5
IN2
IN6
Input
Digital input (+24V compatible)
6
IN3
IN7
Input
Digital input (+24V compatible)
7 OUT0 OUT4 Output
Open-drain output (max. 100mA)
Integrated freewheeling diode
8 OUT1 OUT5 Output
Open-drain output (max. 100mA)
Integrated freewheeling diode
9 OUT2 OUT6 Output
Open-drain output (max. 100mA)
Integrated freewheeling diode
10 OUT3 OUT7 Output Open-drain output (max. 1A)
Integrated freewheeling diode
I/O PORTS USED FOR SIO AND COMMAND
I/O Connector
Pin
I/O port
Command
Range
0
7
OUT_0
SIO 0, 2, <n>
1/0
0
8
OUT_1
SIO 1, 2, <n>
1/0
0
9
OUT_2
SIO 2, 2, <n>
1/0
0 10 OUT_3 SIO 3, 2, <n> 1/0
1
7
OUT_4
SIO 4, 2, <n>
1/0
1
8
OUT_5
SIO 5, 2, <n>
1/0
1
9
OUT_6
SIO 6, 2, <n>
1/0
1
10
OUT_7
SIO 7, 2, <n>
1/0
ADDRESSING ALL OUTPUT LINES WITH ONE SIO COMMAND:
- Set the type parameter to 255 and the bank parameter to 2.
- The value parameter must then be set to a value between 0 255, where every bit represents one
output line.
- Furthermore, the value can also be set to -1. In this special case, the contents of the lower 8 bits of the
accumulator are copied to the output pins.
Example:
Set all output pins high.
Mnemonic: SIO 255, 2, 3
THE FOLLOWING PROGRAM WILL SHOW THE STATES OF THE INPUT LINES ON THE OUTPUT LINES:
Loop: GIO 255, 0
SIO 255, 2,-1
JA Loop
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 40
www.trinamic.com
5.7.15 GIO (get input /output)
With this command the status of the two available general purpose inputs of the module can be read out.
The function reads a digital or analogue input port. Digital lines will read 0 and 1, while the ADC channels
deliver their 12 bit result in the range of 0… 4095.
GIO IN STANDALONE MODE
In standalone mode the requested value is copied to the accumulator (accu) for further processing purposes
such as conditioned jumps.
GIO IN DIRECT MODE
In direct mode the value is only output in the value field of the reply, without affecting the accumulator.
The actual status of a digital output line can also be read.
Internal function: the specified line is read.
Related commands: SIO, WAIT
Mnemonic: GIO <port number>, <bank number>
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
15 <port number> <bank number> don’t care
Reply in direct mode:
STATUS VALUE
100 OK <status of the port>
Example:
Get the analogue value of ADC channel 0
Mnemonic: GIO 0, 1
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function Target-
address
Instruction
Number Type Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$0f
$00
$01
$00
$00
$00
$00
Reply:
Byte Index 0 1 2 3 4 5 6 7
Function
Host-
address
Target-
address
Status
Instruction
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$02
$01
$64
$0f
$00
$00
$01
$2e
[med . sunny TMCM 311 ”(E
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 41
www.trinamic.com
OVERVIEW CONNECTORS 0 AND 1
I/O
connector 1
I/O
connector 0
Figure 5.2 I/O connectors
OVERVIEW OF CONNECTORS 0 AND 1
Pin IN/OUT 0 IN/OUT 1 Direction Description
1
GND
GND
Power (GND)
GND
2 VCC VCC
Power
(supply output)
Connected to VDIGITAL of Power connector
3 AIN0 AIN4 Input
Dedicated analog input,
input voltage range: 0… +10V,
resolution: 12bit (0… 4095)
4
IN1
IN5
Input
Digital input (+24V compatible)
5
IN2
IN6
Input
Digital input (+24V compatible)
6
IN3
IN7
Input
Digital input (+24V compatible)
7 OUT0 OUT4 Output
Open-drain output (max. 100mA)
Integrated freewheeling diode
8 OUT1 OUT5 Output
Open-drain output (max. 100mA)
Integrated freewheeling diode
9 OUT2 OUT6 Output
Open-drain output (max. 100mA)
Integrated freewheeling diode
10 OUT3 OUT7 Output
Open-drain output (max. 1A)
Integrated freewheeling diode
5.7.15.1 I/O Bank 0 – Digital Inputs:
The ADIN lines can be read as digital or analogue inputs at the same time. The analogue values can
be accessed in bank 1.
Note: AIN_0 and AIN_4 can be used in digital mode, too.
I/O Connector
Pin
I/O port
Command
Range
0
3
AIN_0
GIO 0, 0
0/1
0
4
IN_1
GIO 1, 0
0/1
0 5 IN_2 GIO 2, 0 0/1
0
6
IN_3
GIO 3, 0
0/1
1
3
AIN_4
GIO 4, 0
0/1
1
4
IN_5
GIO 5, 0
0/1
1
5
IN_6
GIO 6, 0
0/1
1 6 IN_7 GIO 7, 0 0/1
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 42
www.trinamic.com
READING ALL DIGITAL INPUTS WITH ONE GIO COMMAND:
- Set the type parameter to 255 and the bank parameter to 0.
- In this case the status of all digital input lines will be read to the lower eight bits of the accumulator.
USE FOLLOWING PROGRAM TO REPRESENT THE STATES OF THE INPUT LINES ON THE OUTPUT LINES:
Loop: GIO 255, 0
SIO 255, 2,-1
JA Loop
5.7.15.2 I/O Bank 1 – Analogue Inputs:
The ADIN lines can be read back as digital or analogue inputs at the same time. The digital states can
be accessed in bank 0.
FURTHER READ-OUT COMMANDS
I/O port
Command
Supply voltage [1/10V]
GIO 8, 1
Temperature [˚C] GIO 9, 1
Coil current A [mA] GIO 10, 1
Coil current B [mA]
GIO 11, 1
Input current [mA]
GIO 12, 1
5.7.15.3 I/O Bank 2 –States of Digital Outputs
The states of the OUT lines (that have been set by SIO commands) can be read back using bank 2.
I/O Connector
Pin
I/O port
Command
Range
0 3 AIN_0 GIO 0, 1 0… 4095
1
3
AIN_4
GIO 4, 1
0… 4095
I/O Connector
Pin
I/O port
Command
Range
0 7 OUT_0 GIO 0, 2, <n> 1/0
0
8
OUT_1
GIO 1, 2, <n>
1/0
0
9
OUT_2
GIO 2, 2, <n>
1/0
0
10
OUT_3
GIO 3, 2, <n>
1/0
1 7 OUT_4 GIO 4, 2, <n> 1/0
1 8 OUT_5 GIO 5, 2, <n> 1/0
1
9
OUT_6
GIO 6, 2, <n>
1/0
1
10
OUT_7
GIO 7, 2, <n>
1/0
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 43
www.trinamic.com
5.7.16 CALC (calculate)
A value in the accumulator variable, previously read by a function such as GAP (get axis parameter) can be
modified with this instruction. Nine different arithmetic functions can be chosen and one constant operand
value must be specified. The result is written back to the accumulator, for further processing like comparisons
or data transfer.
Related commands: CALCX, COMP, JC, AAP, AGP, GAP, GGP, GIO
Mnemonic: CALC <operation>, <value>
Binary representation:
INSTRUCTION NO. TYPE <operation> MOT/BANK VALUE
19 0 ADD add to accu
1 SUB subtract from accu
2 MUL multiply accu by
3 DIV divide accu by
4 MOD modulo divide by
5 AND logical and accu with
6 OR logical or accu with
7 XOR logical exor accu with
8 NOT logical invert accu
9 LOAD load operand to accu
don’t care <operand>
Example:
Multiply accu by -5000
Mnemonic: CALC MUL, -5000
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function Target-
address
Instruction
Number Type Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$13
$02
$00
$FF
$FF
$EC
$78
Reply:
Byte Index 0 1 2 3 4 5 6 7
Function
Host-
address
Target-
address
Status
Instruction
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$02
$01
$64
$13
$ff
$ff
$ec
$78
Status = no error, value = -5000
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 44
www.trinamic.com
5.7.17 COMP (compare)
The specified number is compared to the value in the accumulator register. The result of the comparison
can for example be used by the conditional jump (JC) instruction.
This command is intended for use in standalone operation only.
Internal function: the specified value is compared to the internal accumulator, which holds the value of a
preceding get or calculate instruction (see GAP/GGP/GIO/CALC/CALCX). The internal arithmetic status flags are
set according to the comparison result.
Related commands: JC (jump conditional), GAP, GGP, GIO, CALC, CALCX
Mnemonic: COMP <value>
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
20 don’t care don’t care <comparison value>
Example:
Jump to the address given by the label when the position of motor is greater than or equal to 1000.
GAP 1, 2, 0 //get axis parameter, type: no. 1 (actual position), motor: 0, value: 0 don’t care
COMP 1000 //compare actual value to 1000
JC GE, Label //jump, type: 5 greater/equal, the label must be defined somewhere else in the
program
Binary format of the COMP 1000 command:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number
Type
Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$14
$00
$00
$00
$00
$03
$e8
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 45
www.trinamic.com
5.7.18 JC (jump conditional)
The JC instruction enables a conditional jump to a fixed address in the TMCL program memory, if the specified
condition is met. The conditions refer to the result of a preceding comparison. Please refer to COMP
instruction for examples.
This function is for standalone operation only.
Internal function: the TMCL program counter is set to the passed value if the arithmetic status flags are in
the appropriate state(s).
Related commands: JA, COMP, WAIT, CLE
Mnemonic: JC <condition>, <label>
Binary representation:
INSTRUCTION NO. TYPE <condition> MOT/BANK VALUE
21
0 ZE - zero
1 NZ - not zero
2 EQ - equal
3 NE - not equal
4 GT - greater
5 GE - greater/equal
6 LT - lower
7 LE - lower/equal
8 ETO - time out error
don’t care
<jump address>
Example:
Jump to address given by the label when the position of motor is greater than or equal to 1000.
GAP 1, 0, 0 //get axis parameter, type: no. 1 (actual position), motor: 0, value: 0 don’t care
COMP 1000 //compare actual value to 1000
JC GE, Label //jump, type: 5 greater/equal
...
...
Label: ROL 0, 1000
Binary format of JC GE, Label when Label is at address 10:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number
Type
Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$15
$05
$00
$00
$00
$00
$0a
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 46
www.trinamic.com
5.7.19 JA (jump always)
Jump to a fixed address in the TMCL program memory.
This command is intended only for standalone operation.
Internal function: the TMCL program counter is set to the passed value.
Related commands: JC, WAIT, CSUB
Mnemonic: JA <Label>
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
22 don’t care don’t care <jump address>
Example: An infinite loop in TMCL
Loop: MVP ABS, 0, 10000
WAIT POS, 0, 0
MVP ABS, 0, 0
WAIT POS, 0, 0
JA Loop //Jump to the label Loop
Binary format of JA Loop assuming that the label Loop is at address 20:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number
Type
Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex) $01 $16 $00 $00 $00 $00 $00 $14
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 47
www.trinamic.com
5.7.20 CSUB (call subroutine)
This function calls a subroutine in the TMCL program memory.
This command is intended for standalone operation, only.
Internal function: the actual TMCL program counter value is saved to an internal stack, afterwards overwritten
with the passed value. The number of entries in the internal stack is limited to 8. This also limits nesting of
subroutine calls to 8. The command will be ignored if there is no more stack space left.
Related commands: RSUB, JA
Mnemonic: CSUB <Label>
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
23 don’t care don’t care <subroutine address>
Example: Call a subroutine
Loop: MVP ABS, 0, 10000
CSUB SubW //Save program counter and jump to label SubW
MVP ABS, 0, 0
JA Loop
SubW: WAIT POS, 0, 0
WAIT TICKS, 0, 50
RSUB //Continue with the command following the CSUB command
Binary format of the CSUB SubW command assuming that the label SubW is at address 100:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number Type Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$17
$00
$00
$00
$00
$00
$64
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 48
www.trinamic.com
5.7.21 RSUB (return from subroutine)
Return from a subroutine to the command after the CSUB command.
This command is intended for standalone operation only.
Internal function: the TMCL program counter is set to the last value of the stack. The command will be
ignored if the stack is empty.
Related command: CSUB
Mnemonic: RSUB
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
24 don’t care don’t care don’t care
Example: Call a subroutine
Loop: MVP ABS, 0, 10000
CSUB SubW //Save program counter and jump to label SubW
MVP ABS, 0, 0
JA Loop
SubW: WAIT POS, 0, 0
WAIT TICKS, 0, 50
RSUB //Continue with the command following the CSUB command
Binary format of RSUB:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number
Type
Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$18
$00
$00
$00
$00
$00
$00
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 49
www.trinamic.com
5.7.22 WAIT (wait for an event to occur)
This instruction interrupts the execution of the TMCL program until the specified condition is met.
This command is intended for standalone operation. only.
THERE ARE FIVE DIFFERENT WAIT CONDITIONS THAT CAN BE USED:
TICKS Wait until the number of timer ticks specified by the <ticks> parameter has been reached.
POS Wait until the target position of the motor specified by the <motor> parameter has been reached.
An optional timeout value (0 for no timeout) must be specified by the <ticks> parameter.
REFSW Wait until the reference switch of the motor specified by the <motor> parameter has been
triggered. An optional timeout value (0 for no timeout) must be specified by the <ticks> parameter.
LIMSW Wait until a limit switch of the motor specified by the <motor> parameter has been triggered. An
optional timeout value (0 for no timeout) must be specified by the <ticks> parameter.
RFS Wait until the reference search of the motor specified by the <motor> field has been reached. An
optional timeout value (0 for no timeout) must be specified by the <ticks> parameter.
The timeout flag (ETO) will be set after a timeout limit has been reached. You can then use a JC ETO command
to check for such errors or clear the error using the CLE command.
Internal function: the TMCL program counter is held until the specified condition is met.
Related commands: JC, CLE
Mnemonic: WAIT <condition>, 0, <ticks>
Binary representation:
INSTRUCTION NO. TYPE <condition> MOT/BANK VALUE
27
0 TICKS - timer ticks*1
don’t care
<no. of ticks*>
1 POS - target position reached <motor>
0*
<no. of ticks* for timeout>,
0 for no timeout
2 REFSW reference switch <motor>
0*
<no. of ticks* for timeout>,
0 for no timeout
3 LIMSW limit switch
<motor>
0*
<no. of ticks* for timeout>,
0 for no timeout
4 RFS reference search completed
<motor>
0*
<no. of ticks* for timeout>,
0 for no timeout
* Motor number is always O as only one motor is involved.
*1 One tick is 10 milliseconds.
Example:
Wait for motor 0 to reach its target position, without timeout
Mnemonic: WAIT POS, 0, 0
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number
Type
Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$1b
$01
$00
$00
$00
$00
$00
5.7.23 STOP (stop TMCL program execution)
This function stops executing a TMCL program. The host address and the reply are only used to transfer the
instruction to the TMCL program memory.
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 50
www.trinamic.com
The STOP command should be placed at the end of every standalone TMCL program.
The STOP command is not to be used in direct mode.
Internal function: TMCL instruction fetching is stopped.
Related commands: none
Mnemonic: STOP
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
28
don’t care
don’t care
don’t care
Example:
Mnemonic: STOP
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number
Type
Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$1c
$00
$00
$00
$00
$00
$00
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 51
www.trinamic.com
5.7.24 SCO (set coordinate)
Up to 20 position values (coordinates) can be stored for every axis for use with the MVP COORD command.
This command sets a coordinate to a specified value. Depending on the global parameter 84, the coordinates
are only stored in RAM or also stored in the EEPROM and copied back on startup (with the default setting
the coordinates are stored in RAM only).
Please note that the coordinate number 0 is always stored in RAM only.
Internal function: the passed value is stored in the internal position array.
Related commands: GCO, CCO, MVP
Mnemonic: SCO <coordinate number>, 0, <position>
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
30 <coordinate number>
0… 20
<motor>
0*
<position>
−2.147.483.648…
+2.147.483.647
* Motor number is always O as only one motor is involved
Reply in direct mode:
STATUS VALUE
100 OK don’t care
Example:
Set coordinate #1 of motor to 1000
Mnemonic: SCO 1, 0, 1000
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number Type Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$1e
$01
$00
$00
$00
$03
$e8
Note:
Two special functions of this command have been introduced that make it possible to copy all coordinates
or one selected coordinate to the EEPROM.
THESE FUNCTIONS CAN BE ACCESSED USING THE FOLLOWING SPECIAL FORMS OF THE SCO COMMAND:
SCO 0, 255, 0 copies all coordinates (except coordinate number 0) from RAM to
the EEPROM.
SCO <coordinate number>, 255, 0 copies the coordinate selected by <coordinate number> to the
EEPROM. The coordinate number must be a value between 1 and
20.
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 52
www.trinamic.com
5.7.25 GCO (get coordinate)
This command makes possible to read out a previously stored coordinate. In standalone mode the requested
value is copied to the accumulator register for further processing purposes such as conditioned jumps. In
direct mode, the value is only output in the value field of the reply, without affecting the accumulator.
Depending on the global parameter 84, the coordinates are only stored in RAM or also stored in the EEPROM
and copied back on startup (with the default setting the coordinates are stored in RAM, only).
Please note that the coordinate number 0 is always stored in RAM, only.
Internal function: the desired value is read out of the internal coordinate array, copied to the accumulator
register and in direct modereturned in the value field of the reply.
Related commands: SCO, CCO, MVP
Mnemonic: GCO <coordinate number>, 0
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
31
<coordinate number>
0… 20
<motor>
0* don’t care
* Motor number is always O as only one motor is involved
Reply in direct mode:
STATUS VALUE
100 OK don’t care
Example:
Get motor value of coordinate 1
Mnemonic: GCO 1, 0
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function Target-
address
Instruction
Number Type Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$1f
$01
$00
$00
$00
$00
$00
Reply:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Target-
address
Status Instructio
n
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$02
$01
$64
$0a
$00
$00
$00
$00
Value: 0
Two special functions of this command have been introduced that make it possible to copy all coordinates
or one selected coordinate from the EEPROM to the RAM.
These functions can be accessed using the following special forms of the GCO command:
GCO 0, 255, 0 copies all coordinates (except coordinate number 0) from the
EEPROM to the RAM.
GCO <coordinate number>, 255, 0 copies the coordinate selected by <coordinate number> from the
EEPROM to the RAM. The coordinate number must be a value
between 1 and 20.
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 53
www.trinamic.com
5.7.26 CCO (capture coordinate)
The actual position of the axis is copied to the selected coordinate variable. Depending on the global
parameter 84, the coordinates are only stored in RAM or also stored in the EEPROM and copied back on
startup (with the default setting the coordinates are stored in RAM only). Please see the SCO and GCO
commands on how to copy coordinates between RAM and EEPROM.
Note, that the coordinate number 0 is always stored in RAM only.
Internal function: the selected (24 bit) position values are written to the 20 by 3 bytes wide coordinate
array.
Related commands: SCO, GCO, MVP
Mnemonic: CCO <coordinate number>, <motor>
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
32
<coordinate number>
0… 20
<motor>
0*
don’t care
* Motor number is always O as only one motor is involved
Reply in direct mode:
STATUS VALUE
100 OK don’t care
Example:
Store current position of the axis 0 to coordinate 3
Mnemonic: CCO 3, 0
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number Type Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$20
$03
$00
$00
$00
$00
$00
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 54
www.trinamic.com
5.7.27 ACO (accu to coordinate)
With the ACO command the actual value of the accumulator is copied to a selected coordinate of the motor.
Depending on the global parameter 84, the coordinates are only stored in RAM or also stored in the EEPROM
and copied back on startup (with the default setting the coordinates are stored in RAM only).
Please note also that the coordinate number 0 is always stored in RAM only. For Information about storing
coordinates refer to the SCO command.
Internal function: the actual value of the accumulator is stored in the internal position array.
Related commands: GCO, CCO, MVP COORD, SCO
Mnemonic: ACO <coordinate number>, 0
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
39 <coordinate number>
0… 20
<motor>
0* don’t care
* Motor number is always O as only one motor is involved
Reply in direct mode:
STATUS VALUE
100 OK don’t care
Example:
Copy the actual value of the accumulator to coordinate 1 of motor
Mnemonic: ACO 1, 0
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number
Type
Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$27
$01
$00
$00
$00
$00
$00
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 55
www.trinamic.com
5.7.28 CALCX (calculate using the X register)
This instruction is very similar to CALC, but the second operand comes from the X register. The X register
can be loaded with the LOAD or the SWAP type of this instruction. The result is written back to the
accumulator for further processing like comparisons or data transfer.
Related commands: CALC, COMP, JC, AAP, AGP
Mnemonic: CALCX <operation>
Binary representation:
INSTRUCTION NO. TYPE <operation> MOT/BANK VALUE
33
0 ADD add X register to accu
1 SUB subtract X register from accu
2 MUL multiply accu by X register
3 DIV divide accu by X-register
4 MOD modulo divide accu by x-register
5 AND logical and accu with X-register
6 OR logical or accu with X-register
7 XOR logical exor accu with X-register
8 NOT logical invert X-register
9 LOAD load accu to X-register
10 SWAP swap accu with X-register
don’t care don’t care
Example:
Multiply accu by X-register
Mnemonic: CALCX MUL
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number
Type
Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex) $01 $21 $02 $00 $00 $00 $00 $00
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 56
www.trinamic.com
5.7.29 AAP (accumulator to axis parameter)
The content of the accumulator register is transferred to the specified axis parameter. For practical usage,
the accumulator has to be loaded e.g. by a preceding GAP instruction. The accumulator may have been
modified by the CALC or CALCX (calculate) instruction.
For a table with parameters and values which can be used together with this command please refer to
chapter 6.
Related commands: AGP, SAP, GAP, SGP, GGP, GIO, GCO, CALC, CALCX
Mnemonic: AAP <parameter number>, 0
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
34 <parameter number>
<motor>
0*
<don't care>
* Motor number is always O as only one motor is involved
Reply in direct mode:
STATUS VALUE
100 OK don’t care
Example:
Positioning motor by a potentiometer connected to the analogue input #0:
Start: GIO 0,1 // get value of analogue input line 0
CALC MUL, 4 // multiply by 4
AAP 0,0 // transfer result to target position of motor 0
JA Start // jump back to start
Binary format of the AAP 0,0 command:
Byte Index
0
1
2
3
4
5
6
7
Function
Target-
address
Instruction
Number Type Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$22
$00
$00
$00
$00
$00
$00
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 57
www.trinamic.com
5.7.30 AGP (accumulator to global parameter)
The content of the accumulator register is transferred to the specified global parameter. For practical usage,
the accumulator has to be loaded e.g. by a preceding GAP instruction. The accumulator may have been
modified by the CALC or CALCX (calculate) instruction.
Note that the global parameters in bank 0 are EEPROM-only and thus should not be modified automatically
by a standalone application.
For a table with parameters and bank numbers which can be used together with this command please refer
to chapter 10.
Related commands: AAP, SGP, GGP, SAP, GAP, GIO
Mnemonic: AGP <parameter number>, <bank number>
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
35 <parameter number> <bank number> don’t care
Reply in direct mode:
STATUS VALUE
100 OK don’t care
Example:
Copy accumulator to TMCL user variable #3
Mnemonic: AGP 3, 2
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number
Type
Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$23
$03
$02
$00
$00
$00
$00
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 58
www.trinamic.com
5.7.31 CLE (clear error flags)
This command clears the internal error flags.
The CLE command is intended for use in standalone mode, only.
THE FOLLOWING ERROR FLAGS CAN BE CLEARED BY THIS COMMAND (DETERMINED BY THE <FLAG> PARAMETER):
- ALL: clear all error flags.
- ETO: clear the timeout flag.
- EDV: clear the deviation flag
Related commands: JC
Mnemonic: CLE <flags>
where <flags>=ALL|ETO|EDV|EPO
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
36
0 (ALL) all flags
1 (ETO) timeout flag
3 (EDV) deviation flag
don’t care don’t care
Example:
Reset the timeout flag
Mnemonic: CLE ETO
Binary:
Byte Index 0 1 2 3 4 5 6 7
Function Target-
address
Instruction
Number Type Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$24
$01
$00
$00
$00
$00
$00
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 59
www.trinamic.com
5.7.32 VECT (set interrupt vector)
The VECT command defines an interrupt vector. It needs an interrupt number and a label as parameter (like
in JA, JC and CSUB commands).
This label must be the entry point of the interrupt handling routine.
Related commands: EI, DI, RETI
Mnemonic: VECT <interrupt number>, <label>
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
37 <interrupt number> don’t care <label>
The following table shows all interrupt vectors that can be used.
Interrupt number Interrupt type
0
Timer 0
1
Timer 1
2
Timer 2
3
Target position reached
15 stallGuard2
21 Deviation
27
Left stop switch
28
Right stop switch
39
Input change 0
40 Input change 1
41
Input change 2
42
Input change 3
43
Input change 4
44
Input change 5
45 Input change 6
46
Input change 7
255
Global interrupts
Example:
Define interrupt vector at target position 500
VECT 3, 500
Binary format of VECT:
Byte Index 0 1 2 3 4 5 6 7
Function Target-
address
Instruction
Number Type Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$25
$03
$00
$00
$00
$01
$F4
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 60
www.trinamic.com
5.7.33 EI (enable interrupt)
The EI command enables an interrupt. It needs the interrupt number as parameter. Interrupt number 255
globally enables interrupts.
Related command: DI, VECT, RETI
Mnemonic: EI <interrupt number>
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
25 <interrupt number> don’t care don’t care
The following table shows all interrupt vectors that can be used:
Interrupt number Interrupt type
0
Timer 0
1 Timer 1
2
Timer 2
3
Target position reached
15
stallGuard2
21
Deviation
27 Left stop switch
28
Right stop switch
39
Input change 0
40
Input change 1
41 Input change 2
42 Input change 3
43
Input change 4
44
Input change 5
45
Input change 6
46
Input change 7
255 Global interrupts
Examples:
Enable interrupts globally
EI, 255
Binary format of EI:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number
Type
Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$19
$FF
$00
$00
$00
$00
$00
Enable interrupt when target position reached
EI, 3
Binary format of EI:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number
Type Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$19
$03
$00
$00
$00
$00
$00
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 61
www.trinamic.com
5.7.34 DI (disable interrupt)
The DI command disables an interrupt. It needs the interrupt number as parameter. Interrupt number 255
globally disables interrupts.
Related command: EI, VECT, RETI
Mnemonic: DI <interrupt number>
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
26 <interrupt number> don’t care don’t care
The following table shows all interrupt vectors that can be used:
Interrupt number Interrupt type
0
Timer 0
1
Timer 1
2 Timer 2
3 Target position reached
15
stallGuard2
21
Deviation
27
Left stop switch
28 Right stop switch
39
Input change 0
40
Input change 1
41
Input change 2
42
Input change 3
43 Input change 4
44 Input change 5
45
Input change 6
46
Input change 7
255
Global interrupts
Examples:
Disable interrupts globally
DI, 255
Binary format of DI:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number
Type
Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$1A
$FF
$00
$00
$00
$00
$00
Disable interrupt when target position reached
DI, 3
Binary format of DI:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Instruction
Number
Type
Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex) $01 $1A $03 $00 $00 $00 $00 $00
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 62
www.trinamic.com
5.7.35 RETI (return from interrupt)
This command terminates the interrupt handling routine, and the normal program execution continues.
At the end of an interrupt handling routine the RETI command must be executed.
Internal function: the saved registers (A register, X register, flags) are copied back. Normal program execution
continues.
Related commands: EI, DI, VECT
Mnemonic: RETI
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
38 don’t care don’t care don’t care
Example: Terminate interrupt handling and continue with normal program execution
RETI
Binary format of RETI:
Byte Index 0 1 2 3 4 5 6 7
Function Target-
address
Instruction
Number Type Motor/
Bank
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$01
$26
$00
$00
$00
$00
$01
$00
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 63
www.trinamic.com
5.7.36 Customer Specific TMCL Command Extension (user function)
The user definable functions UF0… UF7 are predefined functions without topic for user specific purposes. A
user function (UF) command uses three parameters. Please contact TRINAMIC for a customer specific
programming.
Internal function: Call user specific functions implemented in C by TRINAMIC.
Related commands: none
Mnemonic: UF0… UF7 <parameter number>
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
64… 71 user defined user defined user defined
Reply in direct mode:
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Target-
address
Status
Instruction
Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex) $02 $01 user
defined
64… 71 user
defined
user
defined
user
defined
user
defined
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 64
www.trinamic.com
5.7.37 Request Target Position Reached Event
This command is the only exception to the TMCL protocol, as it sends two replies: one immediately after the
command has been executed (like all other commands also), and one additional reply that will be sent when
the motor has reached its target position.
This instruction can only be used in direct mode (in standalone mode, it is covered by the WAIT command)
and hence does not have a mnemonic.
Internal function: send an additional reply when the motor has reached its target position
Mnemonic: ---
Binary representation:
INSTRUCTION NO. TYPE MOT/BANK VALUE
138 don’t care don’t care 0*
* Motor number
Reply in direct mode (right after execution of this command):
Byte Index 0 1 2 3 4 5 6 7
Function
Target-
address
Target-
address
Status Instruction Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex)
$02 $01 100 138 $00 $00 $00 Motor bit
mask
Additional reply in direct mode (after motors have reached their target positions):
Byte Index 0 1 2 3 4 5 6 7
Function Target-
address
Target-
address
Status Instruction Operand
Byte3
Operand
Byte2
Operand
Byte1
Operand
Byte0
Value (hex) $02 $01 128 138 $00 $00 $00 Motor bit
mask
5.7.38 BIN (return to binary mode)
This command can only be used in ASCII mode. It quits the ASCII mode and returns to binary mode.
Related Commands: none
Mnemonic: BIN
Binary representation: This command does not have a binary representation as it can only be used in ASCII
mode.
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 65
www.trinamic.com
5.7.39 Control Functions: Firmware Version and Reset to Factory Defaults
There are several TMCL control functions, but for the user are only 136 and 137 interesting. Other control
functions can be used with axis parameters.
Instruction number
Type
Command
Description
136 0 string
1 binary
Firmware version
Get the module type and firmware revision as a
string or in binary format. (Motor/Bank and Value
are ignored.)
137 don’t care Reset to factory
defaults
Reset all settings stored in the EEPROM to their
factory defaults
This command does not send back a reply.
Value must be 1234
FURTHER INFORMATION ABOUT COMMAND 136
- Type set to 0 - reply as a string:
Byte index
Contents
1
Host Address
2… 9
Version string (8 characters, e.g. 1311V107)
There is no checksum in this reply format!
- Type set to 1 - version number in binary format:
Please use the normal reply format. The version number is output in the value field of the reply in
the following way:
Byte index in value field
Contents
1
05
2
1F
3
Version number, low byte
4
Version number, high byte
BBB
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 66
www.trinamic.com
6 Axis Parameters
The following sections describe all axis parameters that can be used with the SAP, GAP, AAP, STAP and RSAP
commands.
Attention!
Related to positioning, there are several parameters which have two unit specifications.
- In open loop mode, calculate with µsteps.
- In closed loop mode, calculate with encoder steps.
For further information about closed loop operation parameters and functions please refer to Section 8.
MEANING OF THE LETTERS IN COLUMN ACCESS:
type
Related
command(s)
Description
R GAP Parameter readable
SAP, AAP
Parameter writable
STAP, RSAP
Parameter automatically restored from EEPROM after reset or power-on. These
parameters can be stored permanently in EEPROM using STAP command and
also explicitly restored (copied back from EEPROM into RAM) using RSAP.
Basic parameters should be adjusted to motor / application for proper module operation.
Parameters for the more experienced user please do not change unless you are absolutely sure!
Parameters for closed loop operation
Number
Axis Parameter
Description
Range [Unit]
Acc.
0 Target position
The desired position in position mode (see
ramp mode, no. 138).
−2.147.483.648…
+2.147.483.647
[µsteps]
[encoder steps]
RW
1
Actual position
The current position of the motor. Should only
be overwritten for reference point setting.
−2.147.483.648…
+2.147.483.647
steps]
[encoder steps]
RW
2 Target speed
The desired speed in velocity mode (see ramp
mode / axis parameter 138).
In position mode, this parameter is set by
hardware:
- during acceleration to maximum speed
-
during deceleration and rest to zero
-327.678.000
+327.679.999
[pps]
RW
3 Actual speed The current rotation speed. -327.678.000
+327.679.999
[pps]
RW
4 Maximum
positioning
speed
Should not exceed the physically highest
possible value.
0… +327.679.999
[pps]
RWE
5 Maximum
acceleration
The limit for acceleration (and deceleration). 1… +24.999.998
[pps/s]
RWE
4,2,4 [MM :< value="">>< e="" 3a="" 255="" i="" 7="" 1="" 41a="" mk="">< va="" 119="">xm I 7< 1="">>< 3'4="" m-="" mm="" m="" red="" as="">
TMCM-1311 TMCL Firmware V1.11 Manual (Rev. 1.17 / 2015-NOV-05) 67
www.trinamic.com
Number
Axis Parameter
Description
Range [Unit]
Acc.
6 Absolute max.
current
(CS / Current
Scale)
The maximum value is 255. This value means
100% of the maximum current of the module.
The current adjustment is within the range 0
255 and can be adjusted in 32 steps.
The most important motor setting, since too
high values might cause motor damage!
0… 7
79…87
160… 167
240… 247
8… 15
88… 95
168… 175
248… 255
16… 23
96… 103
176… 183
24… 31
104… 111
184… 191
32… 39
112… 119
192… 199
40… 47