TMCM-1111 TMCL™ Firmware Manual Datasheet by Trinamic Motion Control GmbH

View All Related Products | Download PDF Datasheet
STOP_L. STOP_R. a U stepfiacker SEFUD A TRINAMIC MOTION CONTROL
Module for Stepper Motors MODULE
TMCM-1111 TMCLFirmware Manual
Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20
The TMCM-1111 is a single axis controller/driver module for 2-phase bipolar stepper motors. The
TMCM-1111 TMCL rmware allows to control the module using TMCLcommands, supporting
standalone operation as well as direct mode control, making use of the Trinamic TMC4361 mo-
tion controller and the TMC262 motor driver. Dynamic current control, and quiet, smooth and
ecient operation are combined with closed-loop operation as well as stallGuardand coolStep
features.
Features
Single Axis Stepper motor control
Supply voltage 24V DC
TMCL
USB interface
RS485 interface
CAN interface
coolStep
stallGuard2
Applications
Lab-Automation
Semiconductor Handling
Manufacturing
Robotics
Factory Automation
CNC
Laboratory Automation
Simplied Block Diagram
10… 30V DC
µC
EEPROM
USB
Inputs
Motion
Controller
GPIOs
RS485
Step/Dir IN
Motor 0
STOP_L, STOP_R,
HOME
Driver
TMCM-1111_V10
E
Optional
Encoder for
closed-Loop
ABN
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at: www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 2 / 109
Contents
1 Features 5
1.1 stallGuard2 ................................................. 6
1.2 coolStep .................................................. 6
2 First Steps with TMCL 7
2.1 Basic Setup ................................................. 7
2.2 Using the TMCL Direct Mode ...................................... 7
2.3 Changing Axis Parameters ........................................ 7
2.4 Testing with a simple TMCL Program .................................. 8
3 TMCL and the TMCL-IDE An Introduction 10
3.1 Binary Command Format ........................................ 10
3.1.1 Checksum Calculation ...................................... 11
3.2 Reply Format ............................................... 12
3.2.1 Status Codes ........................................... 12
3.3 Standalone Applications ......................................... 13
3.4 TMCL Command Overview ....................................... 14
3.4.1 TMCL Commands ......................................... 14
3.5 TMCL Commands by Subject ...................................... 15
3.5.1 Motion Commands ........................................ 15
3.5.2 Parameter Commands ...................................... 16
3.5.3 Branch Commands ........................................ 16
3.5.4 I/O Port Commands ....................................... 16
3.5.5 Calculation Commands ..................................... 17
3.5.6 Interrupt Processing Commands ................................ 17
3.6 Detailed TMCL Command Descriptions ................................ 21
3.6.1 ROR (Rotate Right) ........................................ 21
3.6.2 ROL (Rotate Left) ......................................... 22
3.6.3 MST (Motor Stop) ......................................... 23
3.6.4 MVP (Move to Position) ..................................... 24
3.6.5 SAP (Set Axis Parameter) .................................... 27
3.6.6 GAP (Get Axis Parameter) .................................... 28
3.6.7 SGP (Set Global Parameter) ................................... 29
3.6.8 GGP (Get Global Parameter) .................................. 30
3.6.9 STGP (Store Global Parameter) ................................. 31
3.6.10 RSGP (Restore Global Parameter) ............................... 32
3.6.11 RFS (Reference Search) ...................................... 33
3.6.12 SIO (Set Output) .......................................... 35
3.6.13 GIO (Get Input) .......................................... 37
3.6.14 CALC (Calculate) .......................................... 40
3.6.15 COMP (Compare) ......................................... 42
3.6.16 JC (Jump conditional) ....................................... 43
3.6.17 JA (Jump always) ......................................... 45
3.6.18 CSUB (Call Subroutine) ...................................... 46
3.6.19 RSUB (Return from Subroutine) ................................ 47
3.6.20 WAIT (Wait for an Event to occur) ................................ 48
3.6.21 STOP (Stop TMCL Program Execution End of TMCL Program) .............. 50
3.6.22 SCO (Set Coordinate) ....................................... 51
3.6.23 GCO (Get Coordinate) ...................................... 52
3.6.24 CCO (Capture Coordinate) .................................... 54
3.6.25 ACO (Accu to Coordinate) .................................... 55
3.6.26 CALCX (Calculate using the X Register) ............................. 56
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 3 / 109
3.6.27 AAP (Accu to Axis Parameter) .................................. 58
3.6.28 AGP (Accu to Global Parameter) ................................ 59
3.6.29 CLE (Clear Error Flags) ...................................... 60
3.6.30 EI(Enable Interrupt) ....................................... 62
3.6.31 DI(Disable Interrupt) ....................................... 63
3.6.32 VECT (Dene Interrupt Vector) ................................. 64
3.6.33 RETI(Return from Interrupt) .................................. 66
3.6.34 Customer specic Command Extensions (UF0. . . UF7 User Functions) ......... 67
3.6.35 Request Target Position reached Event ............................ 68
3.6.36 TMCL Control Commands .................................... 70
4 Axis Parameters 72
5 Global Parameters 81
5.1 Bank 0 ................................................... 81
5.2 Bank 1 ................................................... 84
5.3 Bank 2 ................................................... 84
5.4 Bank 3 ................................................... 84
6 Module Specic Hints 86
6.1 General Purpose Inputs and Outputs ................................. 86
7 Hints and Tips 87
7.1 Reference Search ............................................. 87
7.1.1 Mode 1 ............................................... 88
7.1.2 Mode 2 ............................................... 88
7.1.3 Mode 3 ............................................... 88
7.1.4 Mode 4 ............................................... 89
7.1.5 Mode 5 ............................................... 89
7.1.6 Mode 6 ............................................... 90
7.1.7 Mode 7 ............................................... 90
7.1.8 Mode 8 ............................................... 91
7.2 Using encoders .............................................. 92
7.3 Closed-Loop Operation ......................................... 92
7.3.1 Closed-Loop Parameters .................................... 93
7.3.2 Load Angle Control ........................................ 93
7.3.3 Current Level Control ...................................... 94
7.3.4 Field Weakening ......................................... 95
7.3.5 Position Catch up ......................................... 96
7.4 stallGuard2 ................................................. 96
7.5 coolStep .................................................. 98
7.6 Velocity and Acceleration Calculation .................................100
8 TMCL Programming Techniques and Structure 101
8.1 Initialization ................................................101
8.2 Main Loop .................................................101
8.3 Using Symbolic Constants ........................................101
8.4 Using Variables ..............................................102
8.5 Using Subroutines ............................................103
8.6 Combining Direct Mode and Standalone Mode ...........................103
8.7 Make the TMCL Program start automatically .............................104
9 Figures Index 105
10 Tables Index 106
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 4 / 109
11 Supplemental Directives 107
11.1 Producer Information ..........................................107
11.2 Copyright ..................................................107
11.3 Trademark Designations and Symbols .................................107
11.4 Target User .................................................107
11.5 Disclaimer: Life Support Systems ....................................107
11.6 Disclaimer: Intended Use ........................................107
11.7 Collateral Documents & Tools ......................................108
12 Revision History 109
12.1 Firmware Revision ............................................109
12.2 Document Revision ............................................109
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 5 / 109
1 Features
The TMCM-1111 is a single axis controller/driver module for 2-phase bipolar stepper motors with state
of the art feature set. It is highly integrated, offers a convenient handling and can be used in many
decentralized applications. The module has been designed for coil currents up to 2.8A RMS and 24V
DC supply voltage. It is also equipped with end switch inputs as well as some general purpose digital
inputs and outputs and one analogue input. An encoder input for ABN encoders also makes closed-loop
operation possible. With its high energy eciency from TRINAMICs coolStep
technology cost for power
consumption is kept down. The TMCL rmware allows for both standalone and direct mode operation.
Main characteristics
Motion controller & stepper motor driver:
Hardware motion prole calculation in real-time.
On the y alteration of motion parameters (e.g. position, velocity, acceleration).
High performance microcontroller for overall system control and communication protocol
handling.
Up to 256 microsteps per full step.
High-ecient operation, low power dissipation.
Dynamic current control.
Integrated protection.
stallGuard2feature for stall detection.
coolStepfeature for reduced power consumption and heat dissipation.
Closed-loop operation possible.
Interfaces
USB interface.
RS485 bus.
CAN bus.
Additional digital inputs and outputs.
One analogue input.
End switch inputs.
Step/direction input and output.
Software
TMCL: remote controlled operation via USB, RS485 or CAN interface and/or stand-alone operation via
TMCL programming. PC-based application development software TMCL-IDE available for free.
Electrical data
Supply voltage: +12V and +24V nominal (10. . . 27V DC supply range).
Motor current: up to 2.8A RMS / 3.9A peak (programmable).
Please see also the separate Hardware Manual.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
0“? Momr mu; rve H Vemmy [RPM]
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 6 / 109
1.1 stallGuard2
stallGuard2 is a high-precision sensorless load measurement using the back EMF of the coils. It can be
used for stall detection as well as other uses at loads below those which stall the motor. The stallGuard2
measurement value changes linearly over a wide range of load, velocity, and current settings. At maximum
motor load, the value reaches zero or is near zero. This is the most energy-ecient point of operation for
the motor.
Load [Nm] stallGuard2
Initial stallGuard2 (SG) value: 100%
Max. load
stallGuard2 (SG) value: 0
Maximum load reached.
Motor close to stall.
Motor stalls
Figure 1: stallGuard2 Load Measurement as a Function of Load
1.2 coolStep
coolStep is a load-adaptive automatic current scaling based on the load measurement via stallGuard2
adapting the required current to the load. Energy consumption can be reduced by as much as 75%.
coolStep allows substantial energy savings, especially for motors which see varying loads or operate at a
high duty cycle. Because a stepper motor application needs to work with a torque reserve of 30% to 50%,
even a constant-load application allows signicant energy savings because coolStep automatically enables
torque reserve when required. Reducing power consumption keeps the ystem cooler, increases motor life,
and allows cost reduction.
0
0,1
0,2
0,3
0,4
0,5
0,6
0,7
0,8
0,9
0 50 100 150 200 250 300 350
Efficiency
Velocity [RPM]
Efficiency with coolStep
Efficiency with 50% torque reserve
Figure 2: Energy Eciency Example with coolStep
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 7 / 109
2 First Steps with TMCL
In this chapter you can nd some hints for your rst steps with the TMCM-1111 and TMCL. You may skip
this chapter if you are already familiar with TMCL and the TMCL-IDE.
Things that you will need
Your TMCM-1111 module.
A USB cable.
A power supply (24V DC) for your TMCM-1111 module.
The TMCL-IDE 3.x already installed on your PC
A two-phase bipolar stepper motor.
2.1 Basic Setup
First of all, you will need a PC with Windows (at least Windows 7) and the TMCL-IDE 3.x installed on it. If
you do not have the TMCL-IDE installed on your PC then please download it from the TMCL-IDE product
page of Trinamics website (http://www.trinamic.com) and install it on your PC.
Please also ensure that your TMCM-1111 is properly connected to your power supply and that the stepper
motor is properly connected to the module. Please see the TMCM-1111 hardware manual for instructions
on how to do this.
Do not connect or disconnect a stepper motor to or from the module while the
module is powered!
Then, please start up the TMCL-IDE. After that you can connect your TMCM-1111 via USB and switch on the
power supply for the module (while the TMCL-IDE is running on your PC). The module will be recognized
by the TMCL-IDE, and necessary driver registrations in Windows will automatically done by the TMCL-IDE.
2.2 Using the TMCL Direct Mode
At rst try to use some TMCL commands in direct mode. In the TMCL-IDE a tree view showing the TMCM-
1111 and all tools available for it is displayed. Click on the Direct Mode entry of the tool tree. Now, the
Direct Mode tool will pop up.
In the Direct Mode tool you can choose a TMCL command, enter the necessary parameters and execute
the command. For example, choose the command ROL (rotate left). Then choose the appropriate motor
(motor 0 if your motor is connected to the motor 0 connector). Now, enter the desired speed. Try entering
51200 (pps) as the value and then click the Execute button. The motor will now run.
Choose the MST (motor stop) command and click Execute again to stop the motor.
2.3 Changing Axis Parameters
Next you can try changing some settings (also called axis parameters) using the SAP command in direct
mode. Choose the SAP command. Then choose the parameter type and the motor number. Last, enter
the desired value and click execute to execute the command which then changes the desired parameter.
The following table points out the most important axis parameters. Please see chapter 4for a complete
list of all axis parameters.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
RDL 0, 51200 WAIT TICKS, 0, 500 MST 0 EUR 0, 51200 WAIT TICKS, 0, 500 MST 0 SAP 4, 0, 51200 SAP 5, 0, 51200 Loop: MVP ABS, 0, 512000 WAIT P05, 0, 0 MVP ABS, 0, 7512000 WAIT P05, 0, 0 JA Loop //R0tate motor 0 with speed 10000 //Rotate motor 0 with 50000 //Set max. Velocity //Set max. Acceleration //Move to Position 512000 //Wait until position reached //Move to Position 7512000 //Wait until position reached //Infinite Loop
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 8 / 109
Most important axis parameters
Number Axis Parameter Description Range
[Units]
Access
4 Maximum
positioning
speed
The maximum speed used for positioning ramps. 0. . . 7999774
[pps]
RW
5 Maximum
acceleration
Maximum acceleration in positioning ramps. Ac-
celeration and deceleration value in velocity
mode.
0. . . 7629278
[pps2]
RW
6 Maximum
current
Motor current used when motor is running. The
maximum value is 255 which means 100% of the
maximum current of the module.
The most important setting, as too high values can
cause motor damage.
0. . . 255 RW
7 Standby
current
The current used when the motor is not running.
The maximum value is 255 which means 100% of
the maximum current of the module. This value
should be as low as possible so that the motor
can cool down when it is not moving. Please see
also parameter 214.
0. . . 255 RW
Table 1: Most important Axis Parameters
2.4 Testing with a simple TMCL Program
Now, test the TMCL stand alone mode with a simple TMCL program. To type in, assemble and download
the program, you will need the TMCL creator. This is also a tool that can be found in the tool tree of
the TMCL-IDE. Click the TMCL creator entry to open the TMCL creator. In the TMCL creator, type in the
following little TMCL program:
After you have done that, take the following steps:
1.
Click the Assemble icon (or choose Assemble from the TMCL menu) in the TMCL creator to assemble
the program.
2.
Click the Download icon (or choose Download from the TMCL menu) in the TMCL creator to donwload
the program to the module.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 9 / 109
3.
Click the Run icon (or choose Run from the TMCL menu) in the TMCL creator to run the program on
the module.
Also try out the debugging functions in the TMCL creator:
1. Click on the Bug icon to start the debugger.
2. Click the Animate button to see the single steps of the program.
3. You can at any time pause the program, set or reset breakpoints and resume program execution.
4. To end the debug mode click the Bug icon again.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 10 / 109
3 TMCL and the TMCL-IDE An Introduction
As with most TRINAMIC modules the software running on the microprocessor of the TMCM-1111 consists
of two parts, a boot loader and the rmware itself. Whereas the boot loader is installed during production
and testing at TRINAMIC and remains untouched throughout the whole lifetime, the rmware can be
updated by the user. New versions can be downloaded free of charge from the TRINAMIC website
(http://www.trinamic.com).
The TMCM-1111 supports TMCL direct mode (binary commands). It also implements standalone TMCL
program execution. This makes it possible to write TMCL programs using the TMCL-IDE and store them in
the memory of the module.
In direct mode the TMCL communication over RS-232, RS-485, CAN and 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-1111. 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 specied command. As soon as this step has been done, the module will send a reply back over the
interface 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 rst. 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 com-
mands 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 conguration variables for the axis and for global parameters which allow individual
conguration of nearly every function of a module. This manual gives a detailed description of all TMCL
commands and their usage.
3.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 eld, a
one-byte type eld, a one-byte motor/bank eld and a four-byte value eld. So the binary representation
of a command always has seven bytes. When a command is to be sent via RS-232, RS-485, RS-422 or USB
interface, it has to be enclosed by an address byte at the beginning and a checksum byte at the end. In
these cases it consists of nine bytes.
The binary command format with RS-232, RS-485, RS-422 and USB is as follows:
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
,unsjgned char 1, Checksum; unsigned char Command [9]; //Set the Command array to the desired command 5 Checksum : Command[0]; for(j:1; j<8; j++)="" checksum+:command="" [i];="" command="" [8]:checksum;="" insert="" checksum="" as="" last="" byte="" of="" the="" command="" now,="" send="" it="" to="" the="" module="" var="" i,="" checksum:="" byte;="" command:="" array[o..8]="" of="" byte;="" set="" the="" command="" array="" to="" the="" desired="" command="" ca1cu1ate="" the="" checksum:="" checksum::command="" [0];="" for="" j.="" to="" 7="" do="" checksum.="" command="" [8]="" ::checksum;="" now,="" send="" the="" command="" array="" (9="" bytes)="" to="" the="" module="" checksum+command="" [i];="">
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 11 / 109
TMCL Command Format
Bytes Meaning
1 Module address
1 Command number
1 Type number
1 Motor or Bank number
4 Value (MSB rst!)
1 Checksum
Table 2: TMCL Command Format
Info
The checksum is calculated by accumulating all the other bytes using an 8-bit
addition.
Note
When using the CAN interface, leave out the address byte and the checksum byte.
With CAN, the CAN-ID is used as the module address and the checksum is not
needed because CAN bus uses hardware CRC checking.
3.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 which show how to do this:
Checksum calculation in C:
Checksum calculation in Delphi:
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 12 / 109
3.2 Reply Format
Every time a command has been sent to a module, the module sends a reply.
The reply format with RS-232, RS-485, RS-422 and USB is as follows:
TMCL Reply Format
Bytes Meaning
1 Reply address
1 Module address
1 Status (e.g. 100 means no error)
1 Command number
4 Value (MSB rst!)
1 Checksum
Table 3: TMCL Reply Format
Info
The checksum is also calculated by adding up all the other bytes using an 8-bit
addition. Do not send the next command before having received the reply!
Note
When using CAN interface, the reply does not contain an address byte and a
checksum byte. With CAN, the CAN-ID is used as the reply address and the
checksum is not needed because the CAN bus uses hardware CRC checking.
3.2.1 Status Codes
The reply contains a status code. The status code can have one of the following values:
TMCL Status Codes
Code Meaning
100 Successfully executed, no error
101 Command loaded into TMCL program EEPROM
1 Wrong checksum
2Invalid command
3 Wrong type
4Invalid value
5 Conguration EEPROM locked
6 Command not available
Table 4: TMCL Status Codes
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 13 / 109
3.3 Standalone Applications
The module is equipped with a TMCL memory for storing TMCL applications. You can use the 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.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 14 / 109
3.4 TMCL Command Overview
This sections gives a short overview of all TMCL commands.
3.4.1 TMCL Commands
Overview of all TMCL Commands
Command Number Parameter Description
ROR 1 <motor number>, <velocity> Rotate right with specied velocity
ROL 2 <motor number>, <velocity> Rotate left with specied velocity
MST 3 <motor number> Stop motor movement
MVP 4
ABS|REL|COORD, <motor number>,
<position|offset>
Move to position (absolute or relative)
SAP 5
<parameter>, <motor number>,
<value>
Set axis parameter (motion control
specic settings)
GAP 6 <parameter>, <motor number>
Get axis parameter (read out motion
control specic settings)
SGP 9
<parameter>, <bank number>,
<value>
Set global parameter (module specic
settings e.g. communication settings
or TMCL user variables)
GGP 10 <parameter>, <bank number>
Get global parameter (read out mod-
ule specic settings e.g. communica-
tion settings or TMCL user variables)
STGP 11 <parameter>, <bank number>
Store global parameter (TMCL user
variables only)
RSGP 12 <parameter>, <bank number>
Restore global parameter (TMCL user
variables only)
RFS 13
<START|STOP|STATUS>, <motor num-
ber>
Reference search
SIO 14
<port number>, <bank number>,
<value>
Set digital output to specied value
GIO 15 <port number>, <bank number> Get value of analog/digital input
CALC 19 <operation>, <value> Process accumulator and value
COMP 20 <value> Compare accumulator with value
JC 21 <condition>, <jump address> Jump conditional
JA 22 <jump address> Jump absolute
CSUB 23 <subroutine address> Call subroutine
RSUB 24 Return from subroutine
EI25 <interrupt number> Enable interrupt
DI26 <interrupt number> Disable interrupt
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 15 / 109
Command Number Parameter Description
WAIT 27
<condition>, <motor number>,
<ticks>
Wait with further program execution
STOP 28 Stop program execution
SCO 30
<coordinate number>, <motor num-
ber>, <position>
Set coordinate
GCO 31
<coordinate number>, <motor num-
ber>
Get coordinate
CCO 32
<coordinate number>, <motor num-
ber>
Capture coordinate
CALCX 33 <operation> Process accumulator and X-register
AAP 34 <parameter>, <motor number> Accumulator to axis parameter
AGP 35 <parameter>, <bank number> Accumulator to global parameter
CLE 36 <ag> Clear an error ag
VECT 37 <interrupt number>, <address> Dene interrupt vector
RETI38 Return from interrupt
ACO 39
<coordinate number>, <motor num-
ber>
Accu to coordinate
Table 5: Overview of all TMCL Commands
3.5 TMCL Commands by Subject
3.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.
Motion Commands
Mnemonic Command number Meaning
ROL 2 Rotate left
ROR 1 Rotate right
MVP 4 Move to position
MST 3 Motor stop
SCO 30 Store coordinate
CCO 32 Capture coordinate
GCO 31 Get coordinate
Table 6: Motion Commands
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 16 / 109
3.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 each axis, whereas global parameters control the behavior of the module
itself. These commands can also be used in direct mode and in standalone mode.
Parameter Commands
Mnemonic Command number Meaning
SAP 5 Set axis parameter
GAP 6 Get axis parameter
SGP 9 Set global parameter
GGP 10 Get global parameter
STGP 11 Store global parameter
RSGP 12 Restore global parameter
Table 7: Parameter Commands
3.5.3 Branch Commands
These commands are used to control the program ow (loops, conditions, jumps etc.). Using them in direct
mode does not make sense. They are intended for standalone mode only.
Branch Commands
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 specied event
STOP 28 End of a TMCL program
Table 8: Branch Commands
3.5.4 I/O Port Commands
These commands control the external I/O ports and can be used in direct mode as well as in standalone
mode.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 17 / 109
I/O Port Commands
Mnemonic Command number Meaning
SIO 14 Set output
GIO 15 Get input
Table 9: I/O Port Commands
3.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.
Calculation Commands
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
Table 10: Calculation Commands
For calculating purposes there is an accumulator (also called 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 ow of the TMCL program running on the module.
3.5.6 Interrupt Processing Commands
TMCL also contains functions for a simple way of interrupt processing. Using interrupts, many tasks can
be programmed in an easier way.
The following commands are use to dene and handle interrupts:
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 18 / 109
Interrupt Processing Commands
Mnemonic Command number Meaning
EI25 Enable interrupt
DI26 Disable interrupt
VECT 37 Set interrupt vector
RETI38 Return from interrupt
Table 11: Interrupt Processing Commands
3.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 identied by its interrupt number. Please use the TMCL include le Interrupts.inc in
order to have symbolic constants for the interrupt numbers. Table 12 show all interrupts that are available
on the TMCM-1111.
Interrupt Vectors
Interrupt number Interrupt type
0 Timer 0
1 Timer 1
2 Timer 2
3 Target position reached 0
15 stallGuard axis 0
21 Deviation axis 0
27 Left stop switch 0
28 Right stop switch 0
39 Input change 0
40 Input change 1
41 Input change 2
42 Input change 3
43 Input change 4
44 Input change 5
255 Global interrupts
Table 12: Interrupt Vectors
3.5.6.2 Interrupt Processing
When an interrupt occurs and this interrupt is enabled and a valid interrupt vector has been dened
for that interrupt, the normal TMCL program ow will be interrupted and the interrupt handling routine
will be called. Before an interrupt handling routine gets called, the context of the normal program (i.e.
accumulator register, X register, ags) will be saved automatically.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
, VECT o, sup 0, a E1 e E1 255 //Main program: 1 0 1 Loop: Slu a, 2, 9 WAIT TICKS, Slu a, 2, n WAIT TICKS, JA Loop //Here is the m Timeroqu: 610 o, n JC NZ, Slu o, s RETI UutOUff: n Slu o, RETI UutOUff toggles output 3, 50 50 interrupt handling routine 2 2, 1 2, 0 //Check if DUTO is high //jump if not //switch DUTO high //end of interrupt //switch DUTO low //end of interrupt «include lnterrupts.inc 2 VECT TI_TIMERO , SGF TI_TIMERO , Timeroqu a, 1000 using a WAIT command for the delay Timeroqu //define the interrupt vector 3, 1000 //configure the interrupt: set its period to 1000ms //enable this interrupt //globally switch on interrupt processing
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 19 / 109
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 (RETIcommand), the context of the normal program will
automatically be restored and the execution of the normal program will be continued.
3.5.6.3 Further Conguration of Interrupts
Some interrupts need further conguration (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
(chapter 3.6.7) for further information about that.
3.5.6.4 Using Interrupts in TMCL
To use an interrupt the following things have to be done:
Dene an interrupt handling routine using the VECT command.
If necessary, congure the interrupt using an SGP <type>, 3, <value> command.
Enable the interrupt using an EI<interrupt> command.
Globally enable interrupts using an EI255 command.
An interrupt handling routine must always end with a RETIcommand.
Do not allow the normal program ow to run into an interrupt handling routine.
The following example shows the use of a timer interrupt:
In the example above, the interrupt numbers are being used directly. To make the program better readable
use the provided include le Interrupts.inc. This le denes symbolic constants for all interrupt numbers
which can be used in all interrupt commands. The beginning of the program above then looks as follows:
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
EI TI_TIMERO EI TI_GLDBAL
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 20 / 109
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 21 / 109
3.6 Detailed TMCL Command Descriptions
The module specic commands are explained in more detail on the following pages. They are listed
according to their command number.
3.6.1 ROR (Rotate Right)
The motor is instructed to rotate with a specied velocity in right direction (increasing the position counter).
The velocity is given in microsteps per second (pulse per second [pps]).
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 <axis>,<velocity>
Binary Representation
Instruction Type Motor/Bank Value
1 0 0 -2147483648. . . 2147583647
Reply in Direct Mode
Status Value
100 - OK dont care
Example
Rotate right motor 0, velocity 51200.
Mnemonic: ROR 0, 51200.
Binary Form of ROR 0, 51200
Field Value
Target address 01h
Instruction number 01h
Type 00h
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) C8h
Value (Byte 0) 00h
Checksum CAh
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 22 / 109
3.6.2 ROL (Rotate Left)
The motor is instructed to rotate with a specied velocity in left direction (decreasing the position counter).
The velocity is given in microsteps per second (pulse per second [pps]).
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 <axis>,<velocity>
Binary Representation
Instruction Type Motor/Bank Value
2 0 0 -2147483648. . . 2147583647
Reply in Direct Mode
Status Value
100 - OK dont care
Example
Rotate left motor 0, velocity 51200.
Mnemonic: ROL 0, 51200.
Binary Form of ROL 0, 51200
Field Value
Target address 01h
Instruction number 02h
Type 00h
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) C8h
Value (Byte 0) 00h
Checksum CBh
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 23 / 109
3.6.3 MST (Motor Stop)
The motor is instructed to stop with a soft stop.
Internal function:
The velocity mode is selected. Then, the target speed (axis parameter #0) is set to zero.
Related commands: ROR, ROL, SAP, GAP.
Mnemonic: MST <axis>
Binary Representation
Instruction Type Motor/Bank Value
3 0 0 0
Reply in Direct Mode
Status Value
100 - OK dont care
Example
Stop motor 0.
Mnemonic: MST 0.
Binary Form of MST 0
Field Value
Target address 01h
Instruction number 03h
Type 00h
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 00h
Checksum 04h
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 24 / 109
3.6.4 MVP (Move to Position)
With this command the motor will be instructed to move to a specied relative or absolute position. 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 as well as other ramp parameters are
dened by the appropriate axis parameters. For a list of these parameters please refer to section 4.
The range of the MVP command is 32 bit signed (-2147483648. . . 2147483647). Positioning can be inter-
rupted using MST, ROL or ROR commands.
Three operation types are available:
Moving to an absolute position in the range from -2147483648. . . 2147483647 (231...231 1).
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).
Note
The distance between the actual position and the new position must not be
more than 2147483647 (2
31
1) microsteps. Otherwise the motor will run in
the opposite direction in order to take the shorter distance (caused by 32 bit
overow).
Internal function: A new position value is transferred to the axis parameter #0 (target position).
Related commands: SAP, GAP, SCO, GCO, CCO, ACO, MST.
Mnemonic: MVP <ABS|REL|COORD>,<axis>,<position|offset|coordinate>
Binary Representation
Instruction Type Motor/Bank Value
4
0ABS absolute 0 <position>
1REL relative 0 <offset>
2COORD coordinate 0. . . 255 <coordinate number (0..20)>
Reply in Direct Mode
Status Value
100 - OK dont care
Example
Move motor 0 to position 90000.
Mnemonic: MVP ABS, 0, 90000
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 25 / 109
Binary Form of MVP ABS, 0, 90000
Field Value
Target address 01h
Instruction number 04h
Type 00h
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 10h
Value (Byte 1) 5Fh
Value (Byte 0) 90h
Checksum F5h
Example
Move motor 0 from current position 10000 microsteps backward.
Mnemonic: MVP REL, 0, -10000
Binary Form of MVP REL, 0, -10000
Field Value
Target address 01h
Instruction number 04h
Type 01h
Motor/Bank 00h
Value (Byte 3) FFh
Value (Byte 2) FFh
Value (Byte 1) D8h
Value (Byte 0) F0h
Checksum CCh
Example
Move motor 0 to stored coordinate #8.
Mnemonic: MVP COORD, 0, 8
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 26 / 109
Binary Form of MVP COORD, 0, 8
Field Value
Target address 01h
Instruction number 04h
Type 02h
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 08h
Checksum 0Fh
Note
Before moving to a stored coordinate, the coordinate has to be set using an SCO,
CCO or ACO command.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 27 / 109
3.6.5 SAP (Set Axis Parameter)
With this command most of the motion control parameters of the module can be specied. The settings
will be stored in SRAM and therefore are volatile. That is, information will be lost after power off.
Info
For a table with parameters and values which can be used together with this
command please refer to section 4.
Internal function:
The specied value is written to the axis parameter specied by the parameter number.
Related commands: GAP, AAP.
Mnemonic: SAP <parameter number>, <axis>, <value>
Binary representation
Binary Representation
Instruction Type Motor/Bank Value
5 see chapter 40 <value>
Reply in Direct Mode
Status Value
100 - OK dont care
Example Set the maximum positioning speed for motor 0 to 51200 pps.
Mnemonic: SAP 4, 0, 51200.
Binary Form of SAP 4, 0, 51200
Field Value
Target address 01h
Instruction number 05h
Type 04h
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) C8h
Value (Byte 0) 00h
Checksum D2h
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 28 / 109
3.6.6 GAP (Get Axis Parameter)
Most motion / driver related parameters of the TMCM-1111 can be adjusted using e.g. the SAP command.
With the GAP 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 conditional jumps). In direct mode
the value read is only output in the value eld of the reply, without affecting the accumulator.
Info
For a table with parameters and values that can be used together with this
command please refer to section 4.
Internal function: The specied value gets copied to the accumulator.
Related commands: SAP, AAP.
Mnemonic: GAP <parameter number>, <axis>
Binary Representation
Instruction Type Motor/Bank Value
6 see chapter 40 <value>
Reply in Direct Mode
Status Value
100 - OK value read by this command
Example
Get the actual position of motor 0.
Mnemonic: GAP 1, 0.
Binary Form of GAP 1, 0
Field Value
Target address 01h
Instruction number 06h
Type 01h
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 00h
Checksum 08h
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 29 / 109
3.6.7 SGP (Set Global Parameter)
With this command most of the module specic parameters not directly related to motion control can be
specied and the TMCL user variables can be changed. Global parameters are related to the host interface,
peripherals or application specic variables. The different groups of these parameters are organized in
banks to allow a larger total number for future products. Currently, bank 0 is used for global parameters,
and bank 2 is used for user variables. Bank 3 is used for interrupt conguration.
All module settings in bank 0 will automatically be stored in non-volatile memory (EEPROM).
Info
For a table with parameters and values which can be used together with this
command please refer to section 5.
Internal function:
The specied value will be copied to the global parameter specied by the type and
bank number. Most parameters of bank 0 will automatically be stored in non-volatile memory.
Related commands: GGP, AGP.
Mnemonic: SGP <parameter number>, <bank>, <value>
Binary Representation
Instruction Type Motor/Bank Value
9 see chapter 50/2/3 <value>
Reply in Direct Mode
Status Value
100 - OK dont care
Example
Set the serial address of the device to 3.
Mnemonic: SGP 66, 0, 3.
Binary Form of SGP 66, 0, 3
Field Value
Target address 01h
Instruction number 09h
Type 42h
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 03h
Checksum 4Fh
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 30 / 109
3.6.8 GGP (Get Global Parameter)
All global parameters can be read with this function. Global parameters are related to the host interface,
peripherals or application specic variables. The different groups of these parameters are organized in
banks to allow a larger total number for future products. Currently, bank 0 is used for global parameters,
and bank 2 is used for user variables. Bank 3 is used for interrupt conguration.
Info
For a table with parameters and values which can be used together with this
command please refer to section 5.
Internal function:
The global parameter specied by the type and bank number will be copied to the
accumulator register.
Related commands: SGP, AGP.
Mnemonic: GGP <parameter number>, <bank>
Binary Representation
Instruction Type Motor/Bank Value
10 see chapter 50/2/3 0 (dont care)
Reply in Direct Mode
Status Value
100 - OK value read by this command
Example
Get the serial address of the device.
Mnemonic: GGP 66, 0.
Binary Form of GGP 66, 0
Field Value
Target address 01h
Instruction number 0Ah
Type 42h
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 00h
Checksum 4Dh
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 31 / 109
3.6.9 STGP (Store Global Parameter)
This command is used to store TMCL global parameters permanently in the EEPROM of the module. This
command is mainly needed to store the TMCL user variables (located in bank 2) in the EEPROM of the
module, as most other global parameters (located in bank 0) are stored automatically when being modied.
The contents of the user variables can either be automatically or manually restored at power on.
Info
For a table with parameters and values which can be used together with this
command please refer to dection 5.3.
Internal function:
The global parameter specied by the type and bank number will be stored in the
EEPROM.
Related commands: SGP, AGP, GGP, RSGP.
Mnemonic: STGP <parameter number>, <bank>
Binary Representation
Instruction Type Motor/Bank Value
11 see chapter 5.3 2 0 (dont care)
Reply in Direct Mode
Status Value
100 - OK 0 (dont care)
Example
Store user variable #42.
Mnemonic: STGP 42, 2.
Binary Form of STGP 42, 2
Field Value
Target address 01h
Instruction number 0Bh
Type 2Ah
Motor/Bank 02h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 00h
Checksum 38h
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 32 / 109
3.6.10 RSGP (Restore Global Parameter)
With this command the contents of a TMCL user variable can be restored from the EEPROM. By default, all
user variables are automatically restored after power up. A user variable that has been changed before
can be reset to the stored value by this instruction.
Info
For a table with parameters and values which can be used together with this
command please refer to section 5.3.
Internal function:
The global parameter specied by the type and bank number will be restored from
the EEPROM.
Related commands: SGP, AGP, GGP, STGP.
Mnemonic: RSGP <parameter number>, <bank>
Binary Representation
Instruction Type Motor/Bank Value
12 see chapter 5.3 2 0 (dont care)
Reply in Direct Mode
Status Value
100 - OK 0 (dont care)
Example
Restore user variable #42.
Mnemonic: RSGP 42, 2.
Binary Form of RSGP 42, 2
Field Value
Target address 01h
Instruction number 0Ch
Type 2Ah
Motor/Bank 02h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 00h
Checksum 39h
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 33 / 109
3.6.11 RFS (Reference Search)
The TMCM-1111 has a built-in reference search algorithm. The reference search algorithm provides
different refrence search modes. This command starts or stops the built-in reference search algorithm.
The status of the reference search can also be queried to see if it already has nished. (In a TMCL program
it mostly is better to use the WAIT RFS command to wait for the end of a reference search.) Please see the
appropriate parameters in the axis parameter table to congure the reference search algorithm to meet
your needs (please see chapter 4).
Internal function:
The internal reference search state machine is started or stoped, or its state is queried.
Related commands: SAP, GAP, WAIT.
Mnemonic: RFS <START|STOP|STATUS>, <motor>
Binary Representation
Instruction Type Motor/Bank Value
0 START start reference search
13 1 STOP stop reference search 0 0 (dont care)
2 STATUS get status
Reply in Direct Mode (RFS START or RFS STOP)
Status Value
100 - OK 0 (dont care)
Reply in Direct Mode (RFS STATUS)
Status Value
100 - OK 0 no ref. search active
other values reference search active
Example
Start reference search of motor 0.
Mnemonic: RFS START, 0.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 34 / 109
Binary Form of RFS START
Field Value
Target address 01h
Instruction number 0Dh
Type 00h
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 00h
Checksum 0Eh
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 35 / 109
3.6.12 SIO (Set Output)
This command sets the states of the general purpose digital outputs.
Internal function:
The state of the output line specied by the type parameter is set according to the
value passed to this command.
Related commands: GIO.
Mnemonic: SIO <port number>, <bank number>, <value>
Binary Representation
Instruction Type Motor/Bank Value
14 <port number> <bank number> (2) 0/1
Reply in Direct Mode
Status Value
100 - OK 0 (dont care)
Example
Set output 0 (bank 2) to high.
Mnemonic: SIO 0, 2, 1.
Binary Form of SIO 0, 2, 1
Field Value
Target address 01h
Instruction number 0Eh
Type 00h
Motor/Bank 02h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 01h
Checksum 12h
Bank 2 Digital Outputs
The following output lines can be set by the SIO commands) using bank 2.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 36 / 109
Digital Outputs in Bank 2
Port Command Range
OpenDrain1 SIO 0, 2, <value> 0/1
OpenDrain2 SIO 1, 2, <value> 0/1
PWMU0 SIO 2, 2, <value> 0/1
PWMU1 SIO 3, 2, <value> 0/1
PWMU2 SIO 4, 2, <value> 0/1
PWMD0 SIO 5, 2, <value> 0/1
PWMD1 SIO 6, 2, <value> 0/1
PWMD2 SIO 7, 2, <value> 0/1
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 37 / 109
3.6.13 GIO (Get Input)
With this command the status of the available general purpose outputs of the module can be read. The
function reads a digital or an analog input port. Digital lines will read as 0 or 1, while the ADC channels
deliver their 16 bit result in the range of 0. . . 65535. In standalone mode the requested value is copied to
the accumulator register for further processing purposes such as conditional jumps. In direct mode the
value is only output in the value eld of the reply, without affecting the accumulator. The actual status of a
digital output line can also be read.
Internal function:
The state of the i/o line specied by the type parameter and the bank parameter is read.
Related commands: SIO.
Mnemonic: GIO <port number>, <bank number>
Binary Representation
Instruction Type Motor/Bank Value
15 <port number> <bank number> (0/1/2) 0 (dont care)
Reply in Direct Mode
Status Value
100 - OK status of the port
Example
Get the value of ADC channel 0.
Mnemonic: GIO 0, 1.
Binary Form of GIO 0, 1
Field Value
Target address 01h
Instruction number 0Fh
Type 00h
Motor/Bank 01h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 00h
Checksum 11h
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 38 / 109
Reply (Status=no error, Value=302)
Field Value
Host address 02h
Target address 01h
Status 64h
Instruction 0Fh
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 01h
Value (Byte 0) 2Eh
Checksum A5h
Bank 0 Digital Inputs
The analog input lines can be read as digital or analog inputs at the same time. The digital input states can
be accessed in bank 0.
Digital Inputs in Bank 0
Port Command Range
AIN0 GIO 0, 0 0/1
PWMD0 GIO 1, 0 0/1
PWMD1 GIO 2, 0 0/1
PWMD2 GIO 3, 0 0/1
PWMU0 GIO 4, 0 0/1
PWMU1 GIO 5, 0 0/1
PWMU2 GIO 6, 0 0/1
Bank 1 Analog Inputs
The analog input lines can be read back as digital or analog inputs at the same time. The analog values
can be accessed in bank 1.
Analog Inputs in Bank 1
Port Command Range
AIN0 GIO 0, 1 0. . . 65535
Bank 2 States of the Digital Outputs
The states of the output lines (that have been set by SIO commands) can be read back using bank 2.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 39 / 109
Digital Outputs in Bank 2
Port Command Range
OpenDrain1 GIO 0, 2 0/1
OpenDrain2 GIO 1, 2 0/1
PWMU0 GIO 2, 2 0/1
PWMU1 GIO 3, 2 0/1
PWMU2 GIO 4, 2 0/1
PWMD0 GIO 5, 2 0/1
PWMD1 GIO 6, 2 0/1
PWMD2 GIO 7, 2 0/1
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 40 / 109
3.6.14 CALC (Calculate)
A value in the accumulator variable, previously read by a function such as GAP (get axis parameter) can
be modied with this instruction. Nine different arithmetic functions can be chosen and one constant
operand value must be specied. The result is written back to the accumulator, for further processing like
comparisons or data transfer. This command is mainly intended for use in standalone mode.
Related commands: CALCX, COMP, AAP, AGP, GAP, GGP, GIO.
Mnemonic: CALC <operation>, <operand>
Binary representation
Binary Representation
Instruction Type Motor/Bank Value
19 0 ADD add to accumulator 0 (dont care) <operand>
1 SUB subtract from accumulator
2 MUL multiply accumulator by
3 DIVdivide accumulator by
4 MOD modulo divide accumulator by
5 AND logical and accumulator with
6 OR logical or accumulator with
7 XOR logical exor accumulator with
8 NOT logical invert accumulator
9 LOAD load operand into accumulator
Reply in Direct Mode
Status Value
100 - OK the operand (dont care)
Example
Multiply accumulator by -5000.
Mnemonic: CALC MUL, -5000
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 41 / 109
Binary Form of CALC MUL, -5000
Field Value
Target address 01h
Instruction number 13h
Type 02h
Motor/Bank 00h
Value (Byte 3) FFh
Value (Byte 2) FFh
Value (Byte 1) ECh
Value (Byte 0) 78h
Checksum 78h
Reply (Status=no error, value=-5000:
Field Value
Host address 02h
Target address 01h
Status 64h
Instruction 13h
Value (Byte 3) FFh
Value (Byte 2) FFh
Value (Byte 1) ECh
Value (Byte 0) 78h
Checksum DCh
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
is” 1, 0 //get actual position of motor 0 CDMP 1000 aJC GE, Label //compare actual value with 1000 //jump to Lable if greter or equal to 1000
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 42 / 109
3.6.15 COMP (Compare)
The specied 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 accumulator register is compared with the sepcied value. The internal arithmetic
status ags are set according to the result of the comparison. These can then control e.g. a conditional
jump.
Related commands: JC, GAP, GGP, GIO, CALC, CALCX.
Mnemonic: COMP <operand>
Binary Representation
Instruction Type Motor/Bank Value
20 0 (dont care) 0 (dont care) <operand>
Example
Jump to the address given by the label when the position of motor #0 is greater than or equal to 1000.
Binary Form of COMP 1000
Field Value
Target address 01h
Instruction number 14h
Type 00h
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 03h
Value (Byte 0) E8h
Checksum 00h
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
,GAF 1, 0 // CDMF 1000 aJC GE, Label 2 Label: RDL 0 get actual position of motor 0 //compare actual value with 1000 //jump to Lable if greter or equal to 1000 , 1000
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 43 / 109
3.6.16 JC (Jump conditional)
The JC instruction enables a conditional jump to a xed address in the TMCL program memory, if the
specied condition is met. The conditions refer to the result of a preceding comparison. Please refer to
COMP instruction for examples. This command is intended for standalone operation only.
Internal function:
The TMCL program counter is set to the value passed to this command if the status
ags are in the appropriate states.
Related commands: JA, COMP, WAIT, CLE.
Mnemonic: JC <condition>, <label>
Binary Representation
Instruction Type Motor/Bank Value
21 0 ZE - zero 0 (dont care) <jump address>
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
9 EAL - external alarm
10 EDV - deviation error
11 EPO - position error
Example
Jump to the address given by the label when the position of motor #0 is greater than or equal to 1000.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 44 / 109
Binary form of JC GE, Label as-
suming Label at address 10
Field Value
Target address 01h
Instruction number 15h
Type 05h
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 0Ah
Checksum 25h
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
, Loop: MVP ABS, 0, 51200 WAIT PBS, 0, o MVP ABS, 0, o WAIT PBS, 0, 0 JA Loop
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 45 / 109
3.6.17 JA (Jump always)
Jump to a xed address in the TMCL program memory. This command is intended for standalone operation
only.
Internal function: The TMCL program counter is set to the value passed to this command.
Related commands: JC, WAIT, CSUB.
Mnemonic: JA <label>
Binary Representation
Instruction Type Motor/Bank Value
22 0 (dont care) 0 (dont care) <jump address>
Example
An innite loop in TMCL:
Binary form of the JA Loop command when the label Loop is at address 10:
Binary Form of JA Loop (assum-
ing Loop at address 10)
Field Value
Target address 01h
Instruction number 16h
Type 00h
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 0Ah
Checksum 21h
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
Loop: MVP ABS , 0, 10000 CSUB Subw //Save program counter and jump to label Subw MVP ABS, 0, 0 CSUB Subw //Save program counter and jump to label Subw JA Loop Subw: WAIT FDS , 0, 0 WAIT TICKS, 0, 50 RSUB //Continue with the command following the CSUB command
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 46 / 109
3.6.18 CSUB (Call Subroutine)
This function calls a subroutine in the TMCL program memory. It 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 Type Motor/Bank Value
23 0 (dont care) 0 (dont care) <subroutine address>
Example
Call a subroutine:
Binary form of CSUB SubW
(assuming SubW at address
100)
Field Value
Target address 01h
Instruction number 17h
Type 00h
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 64h
Checksum 7Ch
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 47 / 109
3.6.19 RSUB (Return from Subroutine)
Return from a subroutine to the command after the CSUB command. This command is intended for use in
standalone mode only.
Internal function:
the TMCL program counter is set to the last value saved on the stack. The command
will be ignored if the stack is empty.
Related commands: CSUB.
Mnemonic: RSUB
Binary Representation
Instruction Type Motor/Bank Value
24 0 (dont care) 0 (dont care) 0 (dont care)
Example
Please see the CSUB example (section 3.6.18).
Binary form:
Binary Form of RSUB
Field Value
Target address 01h
Instruction number 18h
Type 00h
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 00h
Checksum 19h
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 48 / 109
3.6.20 WAIT (Wait for an Event to occur)
This instruction interrupts the execution of the TMCL program until the specied condition is met. This
command is intended for standalone operation only.
There are ve different wait conditions that can be used:
TICKS: Wait until the number of timer ticks specied by the <ticks> parameter has been reached.
POS: Wait until the target position of the motor specied by the <motor> parameter has been
reached. An optional timeout value (0 for no timeout) must be specied by the <ticks> parameter.
REFSW: Wait until the reference switch of the motor specied by the <motor> parameter has been
triggered. An optional timeout value (0 for no timeout) must be specied by the <ticks> parameter.
LIMSW: Wait until a limit switch of the motor specied by the <motor> parameter has been triggered.
An optional timeout value (0 for no timeout) must be specied by the <ticks> parameter.
RFS: Wait until the reference search of the motor specied by the <motor> eld has been reached.
An optional timeout value (0 for no timeout) must be specied by the <ticks> parameter.
Special case for the <ticks> parameter: When this parameter is set to -1 the contents of the accumulator
register will be taken for this value. So for example WAIT TICKS, 0, -1 will wait as long as specied by the
value store in the accumulator. The accumulator must not contain a negative value when using this option.
The timeout ag (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 will be held at the address of this WAIT command until the
condition is met or the timeout has expired.
Related commands: JC, CLE.
Mnemonic: WAIT <condition>, <motor number>, <ticks>
Binary Representation
Instruction Type Motor/Bank Value
0 TICKS timer ticks 0 (dont care) <no. of ticks to wait1>
1 POS target position reached <motor number> <no. of ticks for timeout1>
0 for no timeout
2 REFSW reference switch <motor number> <no. of ticks for timeout1>
27 0 for no timeout
3 LIMSW limit switch <motor number> <no. of ticks for timeout1>
0 for no timeout
4 RFS reference search completed <motor number> <no. of ticks for timeout1>
0 for no timeout
Example
1one tick is 10 milliseconds
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 49 / 109
Wait for motor 0 to reach its target position, without timeout.
Mnemonic: WAIT POS, 0, 0
Binary Form of WAIT POS, 0, 0
Field Value
Target address 01h
Instruction number 1Bh
Type 01h
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 00h
Checksum 1Dh
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 50 / 109
3.6.21 STOP (Stop TMCL Program Execution End of TMCL Program)
This command stops the execution of a TMCL program. It is intended for use in standalone operation only.
Internal function: Execution of a TMCL program in standalone mode will be stopped.
Related commands: none.
Mnemonic: STOP
Binary Representation
Instruction Type Motor/Bank Value
28 0 (dont care) 0 (dont care) 0 (dont care)
Example
Mnemonic: STOP
Binary Form of STOP
Field Value
Target address 01h
Instruction number 1Ch
Type 00h
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 00h
Checksum 1Dh
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 51 / 109
3.6.22 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 specied 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).
Note Coordinate #0 is always stored in RAM only.
Internal function: the passed value is stored in the internal position array.
Related commands: GCO, CCO, ACO, MVP COORD.
Mnemonic: SCO <coordinate number>, <motor number>, <position>
Binary Representation
Instruction Type Motor/Bank Value
30 <coordinate number> <motor number> <position>
0. . . 20 0 231 . . . 231 1
Example
Set coordinate #1 of motor #0 to 1000.
Mnemonic: SCO 1, 0, 1000
Binary Form of SCO 1, 0, 1000
Field Value
Target address 01h
Instruction number 1Eh
Type 01h
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 03h
Value (Byte 0) E8h
Checksum 0Bh
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.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 52 / 109
3.6.23 GCO (Get Coordinate)
Using this command previously stored coordinate can be read back. In standalone mode the requested
value is copied to the accumulator register for further processing purposes such as conditional jumps.
In direct mode, the value is only output in the value eld 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).
Note Coordinate #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 mode returned in the value eld of the reply.
Related commands: SCO, CCO, ACO, MVP COORD.
Mnemonic: GCO <coordinate number>, <motor number>
Binary Representation
Instruction Type Motor/Bank Value
31 <coordinate number> <motor number> 0 (dont care)
0. . . 20 0
Reply in Direct Mode
Status Value
100 - OK value read by this command
Example
Get coordinate #1 of motor #0.
Mnemonic: GCO 1, 0
Binary Form of GCO 1, 0
Field Value
Target address 01h
Instruction number 1Fh
Type 01h
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 00h
Checksum 21h
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 53 / 109
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.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 54 / 109
3.6.24 CCO (Capture Coordinate)
This command copies the actual position of the axis 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 Coordinate #0 is always stored in RAM only.
Internal function:
the actual position of the selected motor is copied to selected coordinate array entry.
Related commands: SCO, GCO, ACO, MVP COORD.
Mnemonic: CCO <coordinate number>, <motor number>
Binary Representation
Instruction Type Motor/Bank Value
32 <coordinate number> <motor number> 0 (dont care)
0. . . 20 0
Reply in Direct Mode
Status Value
100 - OK value read by this command
Example
Store current position of motor #0 to coordinate array entry #3.
Mnemonic: CCO 3, 0
Binary Form of CCO 3, 0
Field Value
Target address 01h
Instruction number 20h
Type 01h
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 00h
Checksum 22h
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 55 / 109
3.6.25 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).
Note Coordinate #0 is always stored in RAM only.
Internal function:
the actual position of the selected motor is copied to selected coordinate array entry.
Related commands: SCO, GCO, CO, MVP COORD.
Mnemonic: ACO <coordinate number>, <motor number>
Binary Representation
Instruction Type Motor/Bank Value
39 <coordinate number> <motor number> 0 (dont care)
0. . . 20 0
Reply in Direct Mode
Status Value
100 - OK dont care
Example
Copy the actual value of the accumulator to coordinate #1 of motor #0.
Mnemonic: ACO 1, 0
Binary Form of ACO 1, 0
Field Value
Target address 01h
Instruction number 27h
Type 01h
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 00h
Checksum 29h
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 56 / 109
3.6.26 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. This command is mainly intended for
use in standalone mode.
Related commands: CALC, COMP, JC, AAP, AGP, GAP, GGP, GIO.
Mnemonic: CALCX <operation>
Binary Representation
Instruction Type Motor/Bank Value
33 0 ADD add X register to accumulator 0 (dont care) 0 (dont care)
1 SUB subtract X register from accumulator
2 MUL multiply accumulator by X register
3 DIVdivide accumulator by X register
4 MOD modulo divide accumulator by X register
5 AND logical and accumulator with X register
6 OR logical or accumulator with X register
7 XOR logical exor accumulator with X register
8 NOT logical invert X register
9 LOAD copy accumulator to X register
10 SWAP swap accumulator and X register
Reply in Direct Mode
Status Value
100 - OK dont care
Example
Multiply accumulator and X register.
Mnemonic: CALCX MUL
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 57 / 109
Binary Form of CALCX MUL
Field Value
Target address 01h
Instruction number 21h
Type 02h
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 00h
Checksum 24h
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
1 Start: cm 0,1 , CALC MUL, AAF 0,0 5 JA Start 4 //get value of analog input line 0 //mu1tip1y by 4 //transfer result to target position of motor 0 //jump back to start
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 58 / 109
3.6.27 AAP (Accu to Axis Parameter)
The content of the accumulator register is transferred to the specied axis parameter. For practical usage,
the accumulator has to be loaded e.g. by a preceding GAP instruction. The accumulator may have been
modied by the CALC or CALCX (calculate) instruction. This command is mainly intended for use in standalone
mode.
Info
For a table with parameters and values which can be used together with this
command please refer to section 4.
Related commands: AGP, SAP, GAP, SGP, GGP, GIO, GCO, CALC, CALCX.
Mnemonic: AAP <parameter number>, <motor number>
Binary Representation
Instruction Type Motor/Bank Value
34 see chapter 40 <value>
Reply in Direct Mode
Status Value
100 - OK dont care
Example
Position motor #0 by a potentiometer connected to analog input #0:
Binary Form of AAP 0, 0
Field Value
Target address 01h
Instruction number 22h
Type 00h
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 00h
Checksum 23h
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 59 / 109
3.6.28 AGP (Accu to Global Parameter)
The content of the accumulator register is transferred to the specied global parameter. For practical
usage, the accumulator has to be loaded e.g. by a preceding GAP instruction. The accumulator may have
been modied by the CALC or CALCX (calculate) instruction. This command is mainly intended for use in
standalone mode.
Info
For an overview of parameter and bank indices that can be used with this com-
mand please see section 5.
Related commands: AAP, SGP, GGP, SAP, GAP, GIO.
Mnemonic: AGP <parameter number>, <bank number>
Binary Representation
Instruction Type Motor/Bank Value
35 <parameter number> 0/2/3 <bank number> 0 (dont care)
Reply in Direct Mode
Status Value
100 - OK dont care
Example
Copy accumulator to user variable #42:
Mnemonic: AGP 42, 2
Binary Form of AGP 42, 2
Field Value
Target address 01h
Instruction number 23h
Type 2Ah
Motor/Bank 02h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 00h
Checksum 50h
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 60 / 109
3.6.29 CLE (Clear Error Flags)
This command clears the internal error ags. It is mainly intended for use in standalone mode.
The following error ags can be cleared by this command (determined by the <ag> parameter):
ALL: clear all error ags.
ETO: clear the timeout ag.
EAL: clear the external alarm ag.
EDV: clear the deviation ag.
EPO: clear the position error ag.
Related commands: JC, WAIT.
Mnemonic: CLE <ags>
Binary Representation
Instruction Type Motor/Bank Value
36 0 ALL all ags 0 (dont care) 0 (dont care)
1(ETO) timeout ag
2(EAL) alarm ag
3(EDV) deviation ag
4(EPO) position ag
5(ESD) shutdown ag
Reply in Direct Mode
Status Value
100 - OK dont care
Example
Reset the timeout ag.
Mnemonic: CLE ETO
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 61 / 109
Binary Form of CLE ETO
Field Value
Target address 01h
Instruction number 24h
Type 01h
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 00h
Checksum 26h
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 62 / 109
3.6.30 EI(Enable Interrupt)
The EIcommand enables an interrupt. It needs the interrupt number as parameter. Interrupt number 255
globally enables interrupt processing. This command is mainly intended for use in standalone mode.
Info
Please see table 12 for a list of interrupts that can be used on the TMCM-1111
module.
Related commands: DI, VECT, RETI.
Mnemonic: EI<interrupt number>
Binary Representation
Instruction Type Motor/Bank Value
25 <interrupt number> 0 (dont care) 0 (dont care)
Reply in Direct Mode
Status Value
100 - OK dont care
Example
Globally enable interrupt processing:
Mnemonic: EI255
Binary form of EI255
Field Value
Target address 01h
Instruction number 19h
Type FFh
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 00h
Checksum 19h
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 63 / 109
3.6.31 DI(Disable Interrupt)
The DIcommand disables an interrupt. It needs the interrupt number as parameter. Interrupt number
255 globally disables interrupt processing. This command is mainly intended for use in standalone mode.
Info
Please see table 12 for a list of interrupts that can be used on the TMCM-1111
module.
Related commands: EI, VECT, RETI.
Mnemonic: DI<interrupt number>
Binary Representation
Instruction Type Motor/Bank Value
26 <interrupt number> 0 (dont care) 0 (dont care)
Reply in Direct Mode
Status Value
100 - OK dont care
Example
Globally disable interrupt processing:
Mnemonic: DI255
Binary Form of DI255
Field Value
Target address 01h
Instruction number 1Ah
Type FFh
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 00h
Checksum 1Ah
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
VECT 0, Leaf); ' 3;" Loop ijégéuq: SID 0, RETI TimerOIrq 2. 1
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 64 / 109
3.6.32 VECT (Dene Interrupt Vector)
The VECT command denes an interrupt vector. It takes an interrupt number and a label (just like with
JA, JC and CSUB commands) as parameters. The label must be the entry point of the interrupt handling
routine for this interrupts. Interrupt vectors can also be re-dened. This command is intended for use in
standalone mode only.
Info
Please see table 12 for a list of interrupts that can be used on the TMCM-1111
module.
Related commands: EI, DI, RETI.
Mnemonic: VECT <interrupt number>, <label>
Binary Representation
Instruction Type Motor/Bank Value
37 <interrupt number> 0 (dont care) <label>
Reply in Direct Mode
Status Value
100 - OK dont care
Example
Dene interrupt vector for timer #0 interrupt:
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 65 / 109
Binary form of VECT (assuming
label is at 50)
Field Value
Target address 01h
Instruction number 25h
Type FFh
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 32h
Checksum 58h
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 66 / 109
3.6.33 RETI(Return from Interrupt)
This command terminates an interrupt handling routine. Normal program ow will be continued then.
This command is intended for use in standalone mode only.
An interrupt routine must always end with a RETIcommand. Do not allow the normal program ow to run
into an interrupt routine.
Internal function:
The saved registers (accumulator, X registers, ags and program counter) are copied
back so that normal program ow will continue.
Related commands: EI, DI, VECT.
Mnemonic: RETI
Binary Representation
Instruction Type Motor/Bank Value
38 <interrupt number> 0 (dont care) 0 (dont care)
Reply in Direct Mode
Status Value
100 - OK dont care
Example
Return from an interrup handling routine.
Mnemonic: RETI
Binary Form of RETI
Field Value
Target address 01h
Instruction number 26h
Type FFh
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 00h
Checksum 27h
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 67 / 109
3.6.34 Customer specic Command Extensions (UF0. . . UF7 User Functions)
These commands are used for customer specic extensions of TMCL. They will be implemented in C by
Trinamic. Please contact the sales department of Trinamic Motion Control GmbH & Co KG if you need a
customized TMCL rmware.
Related commands: none.
Mnemonic: UF0. . . UF7
Binary Representation
Instruction Type Motor/Bank Value
64. . . 71 <user dened> 0 <user dened> 0 <user dened>
Reply in Direct Mode
Status Value
100 - OK user dened
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 68 / 109
3.6.35 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 a motor has reached its target position.
Related commands: none.
Binary Representation
Instruction Type Motor/Bank Value
138 0/1 0 (dont care) always 1
With command 138 the value eld is a bit vector. It shows for which motors one would like to have a
position reached message. The value eld contains a bit mask where every bit stands for one motor. For
one motor modules like the TMCM-1111 it only makes sense to have bit 0 set. So, always set this parameter
to 1 with the TMCM-1111 module. With the type eld set to 0, only for the next MVP command that
follows this command a position reached message will be generated. With type set to 1 a position reached
message will be generated for every MVP command that follows this command. It is recommended to use
the latter option.
Example
Get a target position reached message for each MVP command that follows.
Binary Form for this example
Field Value
Target address 01h
Instruction number 8Ah
Type 01h
Motor/Bank 00h
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) 01h
Checksum 8Dh
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 69 / 109
Reply in Direct Mode
Field Value
Target address 01h
Host address 02h
Status 64h(100)
Command 8Ah(138)
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) Motor bit mask
Checksum depends also on motor bit mask
Additional Reply after Motor has reached Target Position
Field Value
Target address 01h
Host address 02h
Status 80h(128)
Command 8Ah(138)
Value (Byte 3) 00h
Value (Byte 2) 00h
Value (Byte 1) 00h
Value (Byte 0) Motor bit mask
Checksum depends also on motor bit mask
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 70 / 109
3.6.36 TMCL Control Commands
There is a set of TMCL commands which are called TMCL control commands. These commands can
only be used in direct mode and not in a standalone program. For this reason they only have opcodes,
but no mnemonics. Most of these commands are only used by the TMCL-IDE (in order to implement
e.g. the debugging functions in the TMCL creator). Some of them are also interesting for use in custom
host applications, for example to start a TMCL routine on a module, when combining direct mode and
standalone mode (please see also section 8.6. The following table lists all TMCL control commands.
The motor/bank parameter is not used by any of these functions and thus is not listed in the table. It
should always be set to 0 with these commands.
TMCL Control Commands
Instruction Description Type Value
128 stop application stop a running TMCL
application
0 (dont care) 0 (dont care)
129 run application start or continue
TMCL program
execution
0from current
address
0 (dont care)
1from specic
address
starting ad-
dress
130 step application execute only the next
TMCL command
0 (dont care) 0 (dont care)
131 reset application Stop a running TMCL
program.
Reset program
counter and stack
pointer to zero.
Reset accumulator
and X register to zero.
Reset all ags.
0 (dont care) 0 (dont care)
132 enter download mode All following
commands (except
control commands)
are not executed but
stored in the TMCL
memory.
0 (dont care)
start address
for download
133 exit download mode End the download
mode. All following
commands are
executed normally
again.
0 (dont care) 0 (dont care)
134 read program memory Return contents of
the specied
program memory
location (special reply
format).
0 (dont care)
address of
memory loca-
tion
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 71 / 109
Instruction Description Type Value
135 get application status Return information
about the current
status, depending on
the type eld.
0 - return mode,
wait ag, memory
pointer
1 - return mode,
wait ag, program
counter
2 - return
accumulator
3 - return X
register
0 (dont care)
136 get rmware version Return rmware
version in string
format (special reply)
or binary format).
0 - string format
1 - binary format
0 (dont care)
137 restore factory settings Reset all settings in
the EEPROM to their
factory defaults.
This command does
not send a reply.
0 (dont care) set to 1234
Table 13: TMCL Control Commands
Especially the commands 128, 129, 131 and 136 are interesting for use in custom host applications. The
other control commands are to be used mainly by the TMCL-IDE.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 72 / 109
4 Axis Parameters
Most motor controller features of the TMCM-1111 module are controlled by axis parameters. Axis
parameters can be modied or read using SAP, GAP, AAP, STAP and RSAP commands. This chapter
describes all axis parameters that can be used on the TMCM-1111 module.
All Axis Parameters of the TMCM-1111 Module
Number Axis Parameter Description Range [Units] Access
0 Target position The desired target position in position mode -2147483648
. . . 2147483647
[µsteps]
RW
1 Actual position
The actual position of the motor. Stop the motor
before overwriting it. Should normally only be
overwritten for reference position setting.
-2147483648
. . . 2147483647
[µsteps]
RW
2 Target speed
The desired speed in velocity mode. Not valid in
position mode.
-1677215
. . . 16777215
[pps]
RW
3 Actual speed The actual speed of the motor. -16777215
. . . 16777215
[pps]
R
4 Maximum
positioning
speed
The maximum speed used for positioning
ramps.
0. . . 16777215
[pps]
RW
5 Maximum
acceleration
Maximum acceleration during ramp-up. 0. . . 16777215
[pps2]
RW
6 Maximum
current
Motor current used when motor is running. The
maximum value is 255 which means 100% of the
maximum current of the module.
The most important setting, as too high values can
cause motor damage.
0. . . 255 RW
7 Standby
current
The current used when the motor is not running.
The maximum value is 255 which means 100% of
the maximum current of the module. This value
should be as low as possible so that the motor
can cool down when it is not moving. Please see
also parameter 214.
0. . . 255 RW
8 Position
reached ag
This ag is always set when target position and
actual position are equal.
0/1 R
9 Home switch
state
The logical state of the home switch input. 0/1 R
10 Right limit
switch state
The logical state of the right limit switch input. 0/1 R
11 Left limit
switch state
The logical state of the left limit switch input. 0/1 R
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 73 / 109
Number Axis Parameter Description Range [Units] Access
12 Right limit
switch enable /
polarity
0 - switch deactivated
1 - switch active, motor will stop if input is low
2 - switch active, motor will stop if input is high
0/1/2 RW
13 Left limit
switch ensable
/ polarity
0 - switch deactivated
1 - switch active, motor will stop if input is low
2 - switch active, motor will stop if input is high
0/1/2 RW
15 Start velocity
For trapezoidal ramps: initial velocity at motion
start.
0. . . 16777215
[pps]
RW
16 Start
acceleration
For trapezoidal ramps: initial acceleration at mo-
tion start. Will be changed to maximum accel-
eration (axis parameter 5) as soon as the break
velocity has been reached (axis parameter 18).
0. . . 16777215
[pps]
RW
17 Maximum
deceleration
For trapezoidal ramps: maximum deceleration.
May be set to the same value as the maximum
acceleration (axis parameter 5), but can also be
set to a different value.
0. . . 16777215
[pps2]
RW
18 Break velocity
For trapezoidal ramps: below this velocity the
start acceleration (axis parameter 16) is used
above this velocity the maximum acceleration
(axis parameter 5) is used.
0. . . 16777215
[pps2]
RW
19 Final
deceleration
For trapezoidal ramps: deceleration used as
soon as the actual velocity has fallen below the
break velocity (axis parameter 18).
0. . . 16777215
[pps]
RW
20 Stop velocity
For trapezoidal ramps: velocity when target po-
sition has been reached and motion stopsö.
0. . . 16777215
[pps]
RW
21 Stop
deceleration
Deceleration value if stop switches or virtual
stops are used with soft ramps. A value not
equal to zero will generate an automatic linear
ramp when a stop switch is hit or a virtual stop
has been reached.
0. . . 16777215 RW
26 Virtual stop left
Virtual stop position when motor is moving in
negative direction.
-2147483648
. . . 2147483647
[pps]
RW
27 Virtual stop
right
Virtual stop position when motor is moving in
positive direction.
-2147483648
. . . 2147483647
[pps]
RW
28 Virtual stop
enable
0 - both virtual stop disabled
1 - Virtual stop left enable
2 - Virtual stop right enable
3 - both virtual stop enabled
0. . . 3 RW
29 Virtual stop
mode
0 - use normal ramp deceleration settings
1 - use hard stop
2 - use stop deceleration (parameter #21)
0/1/2 R
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 74 / 109
Number Axis Parameter Description Range [Units] Access
33 Swap stop
switches
Use right stops switch for negative direction and
left stop switch for positive direction if set to 1.
0/1 RW
34 Enable soft
stop
0 - use hard stop at stop switches
1 - use deceleration ramp (parameter #21) at
stop switches
0/1 RW
108 CL gamma
Vmin
For higher velocities the inuence of the back
EMF may be compensated. At this velocity the
compensation will start.
0. . . 16777215
[pps]
RW
109 CL gamma
Vmax
For higher velocities the inuence of the back
EMF may be compensated. At the start veloc-
ity (axis parameter #108) plus this velocity the
compensation will reach its maximum.
0. . . 16777215
[pps]
RW
110 CL maximum
gamma
For higher velocities the inuence of the back
EMF may be compensated. This is the compen-
sation factor that will be added scaled using the
current velocity (see axis parameter #108 and
#109).
0. . . 255 RW
111 CL beta
Maximum commutation angle that can be used
to compensate for an evaluated position devia-
tion.
0. . . 511 RW
112 CL offset
Offset for closed loop operation. Measured dur-
ing closed loop initialization.
-2147483648
. . . 2147483647
RW
113 CL current
minimum
Minimum current setting in closed loop opera-
tion.
0. . . 255 RW
114 CL current
maximum
Maximum current setting in closed loop opera-
tion.
0. . . 255 RW
115 CL correction
velocity P
Parameter P of the PIregulator which controls
the maximum velocity during closed loop regu-
lation.
0. . . 1677215 RW
116 CL correction
velocity I
Parameter Iof PIregulator which controls the
maximum velocity during closed loop regulation.
0. . . 16777215 RW
117 CL correction
velocity I
clipping
Clipping of the error sum of the integral part of
the PIregulator which controls the maximum
velocity during closed loop regulation.
0. . . 32767 RW
118 CL correction
velocity DV
clock
Clock divider for D part calculation. 0. . . 32767 RW
119 CL correction
velocity DV
clipping
Limit maximum velocity deviation above the
maximum velocity.
0. . .
2147483647
RW
120 CL upscale
delay
Delay when increasing motor current during
closed loop operation.
0. . . 16777215 RW
121 CL downscale
delay
Delay when decreasing motor current during
closed loop operation.
0. . . 16777215 RW
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 75 / 109
Number Axis Parameter Description Range [Units] Access
124 CL correction
position P
Proportional controller P parameter for compen-
sating a detected position deviation. Resulting P
parameter is this parameter divided by 65536.
0. . . 16777215 RW
125 CL max.
correction
tolerance
Tolerance range for position deviation. 0. . . 255 RW
126 CL start up
Tolerance range for position deviation. If posi-
tion deviation is within the CL start up window
the current will not ramp up.
0. . . 255 RW
127 Relative
positioning
option
Start position for MVP REL command:
0 last target position
1 actual position
2 encoder position
0/1 RW
129 Closed Loop
Flag
0 - closed loop off
1 - closed loop on
After switching on closed loop, please wait until
parameter #133 is 1 before executing any mo-
tion commands.
0/1 RW
133 Closed Loop
Init Flag
0 - initialization not nished yet
1 - closed loop initialization nished
0/1 R
134 Positioning
window
Maximum deviation for target reached ag to be
set.
0. . .
2147483647
RW
136 EncMeanWait Enocder lter related RW
137 EncMeanFilter Encoder lter related RW
138 EncMeanInt Encoder lter related RW
140 Microstep
resolution
Microstep resolutions per full step:
0 fullstep
1 halfstep
2 4 microsteps
3 8 microsteps
4 16 microsteps
5 32 microsteps
6 64 microsteps
7 128 microsteps
8 256 microsteps
Always leave at 8 (256 microstpes) when
using closed loop operation!
0..8 RW
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 76 / 109
Number Axis Parameter Description Range [Units] Access
162 Chopper blank
time
Selects the comparator blank time. This time
needs to safely cover the switching event and
the duration of the ringing on the sense resistor.
Normally leave at the default value.
0..3 RW
163 Constant TOff
mode
Selection of the chopper mode:
0spread cycle
1classic constant offtime
0/1 RW
164 Disable fast
decay
comperator
See parameter 163. For classic const. offtime
setting this parameter to 1will disable current
comparator usage for termination of fast decay
cycle.
0/1 RW
165 Chopper
hysteresis end /
fast decay time
See parameter 163. For spread cyclechopper
mode this parameter will set / return the hys-
teresis end setting (hysteresis end value after a
number of decrements). For classic const. off
timechopper mode this parameter will set /
return the fast decay time.
0. . . 15 RW
166 Chopper
hysteresis start
/ sine wave
offset
See parameter 163. For spread cyclechopper
mode this parameter will set / return the Hys-
teresis start setting (please note that this value is
an offset to the hysteresis end value). For clas-
sic const. offtimechopper mode this parameter
will set / return the sine wave offset.
0. . . 8 RW
167 Chopper off
time (TOff)
The offtime setting controls the minimum
chopper frequency. An offtime within the range
of 5µs to 20µs will t.
Offtime setting for constant t Offchopper:
NCLK = 12 + 32 tOF F (Minimum is 64 clocks)
Setting this parameter to zero completely dis-
ables all driver transistors and the motor can
free-wheel.
0. . . 15 RW
168 smartEnergy
current
minimum
(SEIMIN)
Sets the lower motor current limit for coolStep
operation by scaling the maximum current (see
axis parameter 6) value.
Minimum motor current:
0 - 1
2of CS
1 - 1
4of CS
0/1 RW
169 smartEnergy
current down
step
Sets the number of stallGuard2 readings above
the upper threshold necessary for each current
decrement of the motor current. Number of
stallGuard2 measurements per decrement:
Scaling: 0. . . 3: 32, 8, 2, 1
0: slow decrement
3: fast decrement
0. . . 3 RW
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 77 / 109
Number Axis Parameter Description Range [Units] Access
170 smartEnergy
hysteresis
Sets the distance between the lower and the
upper threshold for stallGuard2 reading. Above
the upper threshold the motor current becomes
decreased. Hysteresis: ([AP 172] + 1) 32
Upper stallGuard threshold: ([
AP
172]+[
AP
170]+
1) 32
0. . . 15 RW
171 smart Energy
current up step
Sets the current increment step. The current
becomes incremented for each measured stall-
Guard2 value below the lower threshold see
smartEnergy hysteresis start). Current incre-
ment step size:
Scaling: 0. . . 3: 1, 2, 4, 8
0: slow increment
3: fast increment / fast reaction to rising load
0. . . 3 RW
172 smart Energy
hysteresis start
The lower threshold for the stallGuard2 value
(see smart Energy current up step).
0..15 RW
173 stallGuard2
lter enable
Enables the stallGuard2 lter for more precision
of the measurement. If set, reduces the mea-
surement frequency to one measurement per
four fullsteps. In most cases it is expedient to
set the ltered mode before using coolStep. Use
the standard mode for step loss detection.
0 - standard mode
1 - ltered mode
0/1 RW
174 stallGuard2
threshold
This signed value controls stallGuard2 threshold
level for stall output and sets the optimum mea-
surement range for readout. A lower value gives
a higher sensitivity. Zero is the starting value.
A higher value makes stallGuard2 less sensitive
and requires more torque to indicate a stall.
-64. . . +63 RW
180 smartEnergy
actual current
This status value provides the actual motor cur-
rent setting as controlled by coolStep. The value
goes up to the CS value and down to the portion
of CS as specied by SEIMIN.
Actual motor current scaling factor:
0. . . 31: 1/32, 2/32, . . . 32/32
0. . . 31 R
181 Stop on stall
Below this speed motor will not be stopped.
Above this speed motor will stop in case stall-
Guard2 load value reaches zero.
0. . .
2147483647
[pps]
RW
182 smartEnergy
threshold
speed
Above this speed coolStep becomes enabled. 0. . .
2147483647
[pps]
RW
184 Random TOff
mode
0 - Chopper offtime is xed
1 - Chopper offtime is random
0/1 RW
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 78 / 109
Number Axis Parameter Description Range [Units] Access
185 Chopper syn-
chronization
This parameter allows synchronization of the
chopper for both phases of a two phase motor
in order to avoid the occurrence of a beat, espe-
cially at low velocities.
0: chopper sync function chopSync off
1. . . 15: chopper synchronization
0. . . 15 RW
186
PWM threshold
speed
The stealthChop feature will be switched off
when the actual velocity is higher than this value.
It will be switched on when the actual velocity is
below this value (and parameter #187 is greater
than zero).
0. . .
2147483647
[pps]
RW
187 PWM gradient
Velocity dependent gradient for PWM amplitude
(stealthChop). Setting this value to 0 turns off
stealthChop.
0. . . 15 RW
188 PWM
amplitude
Maximum PWM amplitude when switching to
stealthChop mode. Do not set too low. Values
above 64 recommended.
0. . . 255 RW
193 Reference
search mode
1 Search left stop switch only.
2
Search right stop switch, then
search left stop switch.
3
Search right stop switch, then
search left stop switch from both
sides.
4
Search left stop switch from both
sides.
5
Search home switch in negative di-
rection, reverse the direction when
left stop switch reached.
6
Search home switch in positive di-
rection, reverse the direction when
right stop switch reached.
7
Search home switch in positive di-
rection, ignore end switches.
8
Search home switch in negative di-
rection, ignore end switches.
Additional functions:
Add 128 to a mode value for inverting
the home switch (can be used with mode
5. . . 8).
Add 64 to a mode for searching the right
instead of the left reference switch (can be
used with mode 1. . . 4).
1. . . 8 RW
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 79 / 109
Number Axis Parameter Description Range [Units] Access
194 Reference
search speed
This value species the speed for roughly search-
ing the reference switch.
0. . . 16777215
[pps]
RW
195 Reference
switch speed
This parameter species the speed for searching
the switching point. It should be slower than
parameter 194.
0. . . 16777215
[pps]
RW
196 End switch
distance
This parameter provides the distance between
the end switches after executing the RFS com-
mand (with reference search mode 2 or 3).
-2147483648
...
2147483647
[µsteps]
R
197 Last reference
position
This parameter contains the last position value
before the position counter is set to zero during
reference search.
-2147483648
. . . 2147483647
[µsteps]
R
200 Boost current
Current used for acceleration and deceleration
phases. If set to 0 the same current as set by
axis parameter #6 will be used. Same scaling as
with axis parameter #6.
0. . . 255 RW
202 Motor full step
resolution
Full step resolution of the motor (Default: 200). 0. . . 65535
[fullsteps
round ]
RW
204 Freewheeling
mode
Stand still option when the standby
current (parameter 7) is set to zero.
0 normal operation
1 freewheeling
2 coil shorted using low side drivers
3 coil shorted using high side drivers
0. . . 3 RW
206 Actual load
value
Readout of the actual load value used for stall
detection (stallGuard2).
0. . . 1023 R
207 Extended error
ags
A combination of the following values:
1 stallGuard error
2 deviation error
These error ags are cleared automatically
when this parameter has been read out or when
a motion command has been executed.
0. . . 3 R
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 80 / 109
Number Axis Parameter Description Range [Units] Access
208 Motor driver
error ags
A combination of the following values:
Bit 0 stallGuard2 status
(1: stall detected)
Bit 1 Overtemperature
(1: driver is shut down due to overtemper-
ature)
Bit 2 Overtemperature pre-warning
(1: temperature threshold is exceeded)
Bit 3 Short to ground A
(1: short condition detected, driver cur-
rently shut down)
Bit 4 Short to ground B
(1: short condition detected, driver cur-
rently shut down)
Bit 5 Open load A
(1: no chopper event has happened during
the last period with constant coil polarity)
Bit 6 Open load B
(1: no chopper event has happened during
the last period with constant coil polarity)
Bit 7 Stand still
(1: no step pulse occurred during the last
220 clock cycles)
0. . . 255 R
209 Encoder
position
Encoder counter value. -2147483648
. . . 2147483647
[µsteps]
RW
210 Encoder
resolution
Encoder counts per round. 0. . . 65535 RW
212 Maximum
encoder
deviation
When the actual position (parameter 1) and the
encoder position (parameter 209) differ more
than set here the motor will be stopped. This
function is switched offwhen the maximum de-
viation is set to zero.
0. . .
2147483647
[encoder
steps]
RW
213 Maximum
velocity
deviation
The motor will be stopped when the desired
speed and the real speed differ more than this
value. Setting the value to 0 turns offthis func-
tion.
0. . .
2147483647
[encoder
steps]
RW
214 Power down
delay
Standstill period before the current will be
ramped down to standby current. The standard
value is 200 (which means 2000ms).
0. . . 65535
[10ms]
RW
Table 14: All Axis Parameters of the TMCM-1111 Module
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 81 / 109
5 Global Parameters
The following sections describe all global parameters that can be used with the SGP, GGP, AGP, STGP and
RSGP commands. Global parameters are grouped into banks:
Bank 0: Global conguration of the module.
Bank 1: Not used.
Bank 2: TMCL user variables.
Bank 3: TMCL interrupt conguration.
5.1 Bank 0
Parameters with numbers from 64 on congure all settings that affect the overall behaviour of a module.
These are things like the serial address, the RS485 baud rate or the CAN bit rate (where appropriate).
Change these parameters to meet your needs. The best and easiest way to do this is to use the appropriate
functions of the TMCL-IDE. The parameters with numbers between 64 and 128 are automatically stored in
the EEPROM.
Note
An SGP command on such a parameter will always store it permanently and
no extra STGP command is needed.
Take care when changing these parameters, and use the appropriate func-
tions of the TMCL-IDE to do it in an interactive way.
Some congurations of the interface (for example baud rates that are not
supported by the PC) may leed to the fact that the module cannot be reached
any more. In such a case please see the TMCM-1111 Hardware Manual on
how to reset all parameters to factory default settings.
Some settings (especially interface bit rate settings) do not take effect im-
mediately. For those settings, power cycle the module after changing them
to make the changes take effect.
There are different parameter access types, like read only or read/write. Table 15 shows the different
parameter access types used in the global parameter tables.
Meaning of the Letters in the Access Column
Access type Command Description
R GGP Parameter readable
W SGP, AGP Parameter writable
E STGP, RSGP Parameter can be stored in the EEPROM
A SGP Automatically stored in the EEPROM
Table 15: Meaning of the Letters in the Access Column
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 82 / 109
All Global Parameters of the TMCM-1111 Module in Bank 0
Number Global Parameter Description Range [Units] Access
65 RS485 baud rate
0 9600 Default
1 14400
2 19200
3 28800
4 38400
5 57600
6 76800
7 115200
8 230400
0. . . 8 RWA
66 Serial address Module (target) address for RS485. 1. . . 255 RWA
68 Serial heartbeat
Serial heartbeat for RS485 interface and
USB interface. If this time limit is up and no
further command is received by the mod-
ule the motor will be stopped. Setting this
parameter to 0 (default) turns offthe serial
heartbeat function.
0. . . 65535 RWA
75 Telegram pause
time
Pause time before the reply via RS485 is
sent. For use with older RS485 interfaces it
is often necessary to set this parameter to
15 or more (e.g. RS485 adapters controlled
by the RTS pin). For CAN interface this pa-
rameter has no effect!
0. . . 255 RWA
76 Serial host
address
Host address used in the reply telegrams
sent back via RS485.
0. . . 255 RWA
77 Auto start mode
0 - Do not start TMCL application after
power up (default).
1 - Start TMCL application automatically af-
ter power up.
0/1 RWA
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 83 / 109
Number Global Parameter Description Range [Units] Access
78 I/O mode
Bit vector that selects input or output mode
for each general purpose input/output. A
bit that is clear selects input mode and a bit
that is set selects output mode. Add up the
values of the bits that are to be set.
Bit Value Input/Output
0 1 PWMU0
1 2 PWMU1
2 4 PWMU2
3 8 PWMD0
4 16 PWMD1
5 32 PWMD2
0. . . 63 RWA
81 TMCL code
protection
Protect a TMCL program against disassem-
bling or overwriting.
0 - no protection
1 - protection against disassembling
2 - protection against overwriting
3 - protection against disassembling and
overwriting
When switching offthe protection
against disassembling (changing this
parameter from 1 or 3 to 0 or 2, the
program will be erased rst!
0/1/2/3 RWA
84 Coordinate
storage
0 - coordinates are stored in RAM only (but
can be copied explicitly between RAM and
EEPROM)
1 - coordinates are always also stored in the
EEPROM
0/1 RWA
85 Do not restore
user variables
Determines if TMCL user variables are to be
restored from the EEPROM automatically on
startup.
0 - user variables are restored (default)
1 - user variables are not restored
0/1 RWA
87 Serial secondary
address
Second module (target) address for RS485.
Setting this parameter to 0 switches offthe
seconndary address.
0. . . 255 RWA
128 TMCL application
status
0 - stop
1 - run
2 - step
3 - reset
0. . . 3 R
129 Download mode 0 - normal mode
1 - download mode
0/1 R
130 TMCL program
counter
Contains the address of the currently exe-
cuted TMCL command.
R
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 84 / 109
Number Global Parameter Description Range [Units] Access
132 TMCL tick timer
A 32 bit counter that gets incremented by
one every millisecond. It can also be reset
to any start value.
0. . . 2147483647
RW
133 Random number
Returns a random number. The seed value
can be set by writing to this parameter.
0. . . 2147483647
RW
255 Suppress reply
The reply in direct mode will be suppressed
when this parameter is set to 1. This pa-
rameter cannot be stored to EEPROM and
will be reset to 0 on startup. The reply will
not be suppressed for GAP, GGP and GIO
commands.
0/1 RW
Table 16: All Global Parameters of the TMCM-1111 Module in Bank 0
5.2 Bank 1
The global parameter bank 1 is normally not available. It may be used for customer specic extensions
of the rmware. Together with user denable commands these variables form the interface between
extensions of the rmware (written by Trinamic in C) and TMCL applications.
5.3 Bank 2
Bank 2 contains general purpose 32 bit variables for use in TMCL applications. They are located in RAM
and the rst 56 variables can also be stored permanently in the EEPROM. After booting, their values are
automatically restored to the RAM. Up to 256 user variables are available. Please see table 15 for an
explanation of the different parameter access types.
User Variables in Bank 2
Number Global Parameter Description Range [Units] Access
0. . . 55
user variables
#0. . . #55
TMCL user variables
-2147483648 . . .
2147483647
RWE
56. . . 255
user variables
#56. . . #255
TMCL user variables
-2147483648 . . .
2147483647
RWE
Table 17: User Variables in Bank 2
5.4 Bank 3
Bank 3 contains interrupt parameters. Some interrupts need conguration (e.g. the timer interval of
a timer interrupt). This can be done using the SGP commands with parameter bank 3 (SGP <type>, 3,
<value>).
The priority of an interrupt depends on its number. Interrupts with a lower number have
a higher priority.
Table 18 shows all interrupt parameters that can be set. Please see table 15 for an explanation of the
parameter access types.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 85 / 109
Interrupt Parameters in Bank 3
Number Global Parameter Description Range [Units] Access
0 Timer 0 period
(ms)
Time between two interrupts
0. . . 4294967295
[ms]
RW
1 Timer 1 period
(ms)
Time between two interrupts
0. . . 4294967295
[ms]
RW
2 Timer 2 period
(ms)
Time between two interrupts
0. . . 4294967295
[ms]
RW
27 Stop left 0 trigger
transition
0=off, 1=low-high, 2=high-low, 3=both 0. . . 3 RW
28
Stop right 0 trigger
transition
0=off, 1=low-high, 2=high-low, 3=both 0. . . 3 RW
39 Input 0 trigger
transition
0=off, 1=low-high, 2=high-low, 3=both 0. . . 3 RW
40 Input 1 trigger
transition
0=off, 1=low-high, 2=high-low, 3=both 0. . . 3 RW
41 Input 2 trigger
transition
0=off, 1=low-high, 2=high-low, 3=both 0. . . 3 RW
42 Input 3 trigger
transition
0=off, 1=low-high, 2=high-low, 3=both 0. . . 3 RW
43 Input 4 trigger
transition
0=off, 1=low-high, 2=high-low, 3=both 0. . . 3 RW
44 Input 5 trigger
transition
0=off, 1=low-high, 2=high-low, 3=both 0. . . 3 RW
Table 18: Interrupt Parameters in Bank 3
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 86 / 109
6 Module Specic Hints
This section contains some hints that are specic to the TMCM-1111 module.
6.1 General Purpose Inputs and Outputs
The TMCM-1111 module is equipped with six general purpose digital lines. Each of these can either be
used as an input or as an output. This can be selected using global parameter #78. For historical reasons
(compatibility with the rst TMCM-1110 stepRocker module), these inputs and outputs are named PWMU0,
PWMU1, PWMU2, PWMD0, PWMD1 and PWMD2.
Global parameter #78 is a bit vector where each bit determines if the corresponding digital line is an input
or an output. A bit that is clear means input, and a bit that is set means output.
Table 19 shows the relationship between the bits of global parameter #78 and the digital lines. Just add up
the values of all bits that are to be set (i.e. of those digital lines that are to be used as outputs) and set
global parameter #78 to this value.
Selection of Inputs and Outputs
Bit Value Digital I/O line
0 1 PWMU0
1 2 PWMU1
2 4 PWMU2
3 8 PWMD0
4 16 PWMD1
5 32 PWMD2
Table 19: Selection of Inputs and Outputs
For example, setting global parameter #78 to 7 (default value) programs PWMU0, PWMU1 and PWMU2 as
outputs and PWMD0, PWMD1 and PWMD2 as inputs.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 87 / 109
7 Hints and Tips
This chapter gives some hints and tips on using the functionality of TMCL, for example how to use and
parameterize the built-in reference search algorithm or using an incremental encoder. You will also nd
basic information about stallGuard2and coolStepin this chapter.
7.1 Reference Search
The built-in reference search features switching point calibration and support for a home switch and/or
one or two end switches. The internal operation is based on a state machine that can be started, stopped
and monitored (instruction RFS, opcode 13). The settings of the automatic stop functions corresponding to
the end switches (axis parameters 12 and 13) do not inuence the reference search.
Notes:
Until the reference switch is found for the rst time, the searching speed set by axis parameter 194 is
used.
After hitting the reference switch, the motor slowly moves until the switch is released. Finally the
switch is re-entered in the other direction, setting the reference point to the center of the two
switching points. The speed used for this calibration is dened by axis parameter 195.
Axis parameter 193 denes the reference search mode to be used. Choose one of the reference search
modes shown in table 20 and in the following subsections:
Reference Search Modes
Value Description
1 search left stop switch only
2
search right stop switch, then search left stop
switch
3
search right stop switch, then search left stop
switch from both sides
4 search left stop switch from both sides
5
search home switch in negative direction, reverse
the direction when left stop switch reached
6
search home switch in positive direction, reverse
the direction when right stop switch reached
7
search home switch in positive direction, ignore
end switches
8
search home switch in negative direction, ignore
end switches
Table 20: Reference Search Modes
The drawings in the following subsections show how each reference search mode works. A linear stage
with two end points and a moving slider is used as example.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 88 / 109
7.1.1 Mode 1
Reference search mode 1 only searches the left end switch. Select this mode by setting axis parameter
#193 to 1. Figure 3illustrates this.
Add 64 to the mode number (i.e. set axis parameter #193 to 65) to search the right end switch instead of
the left end switch.
Figure 3: Reference search Mode 1
7.1.2 Mode 2
Reference search mode 2 rst searches the right end switch and then the left end switch. The left end
switch is then used as the zero point. Figure 4illustrates this. Select this mode by setting axis parameter
#193 to 2. After the reference search has nished, axis parameter #196 contains the distance between the
two reference switches in microsteps.
Add 64 to the mode number (i.e. set axis parameter #193 to 66) to search the left end switch rst and then
use the right end switch as the zero point.
left limit / end / stop switch
L R
right limit / end / stop switch
start
stop
: reference search speed (axis parameter 194)
: reference switch speed (axis parameter 195)
Figure 4: Reference search Mode 2
7.1.3 Mode 3
Reference search mode 3 rst searches the right end switch and then the left end switch. The left end
switch is then searched from both sides, to nd the middle of the left end switch. This is then used as
the zero point. Figure 5illustrates this. Select this mode by setting axis parameter #193 to 3. After the
reference search has nished, axis parameter #196 contains the distance between the right end switch
and the middle of the left end switch in microsteps.
Add 64 to the mode number (i.e. set axis parameter #193 to 67) to search the left end switch rst and then
use the middle of the right end switch as the zero point.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
_ relay”! mm. 5pm 4am pummetsr 195; _ mm.“ mm. spesd 4m pummetsv 195/
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 89 / 109
left limit / end / stop switch
L R
right limit / end / stop switch
start
stop
: reference search speed (axis parameter 194)
: reference switch speed (axis parameter 195)
Figure 5: Reference search Mode 3
7.1.4 Mode 4
Reference search mode 4 searches the left end switch only, but from both sides so that the middle of the
switch will be found and used as the zero point. This is shown in gure 6.
Add 64 to the mode number (i.e. set axis parameter #193 to 68) to search the right end switch instead.
left limit / end / stop switch
L R
stop
: reference search speed (axis parameter 194)
: reference switch speed (axis parameter 195)
start
Figure 6: Reference search Mode 4
7.1.5 Mode 5
Refeerence search mode 5 searches the home switch in negative direction. The search direction will be
reversed if the left limit switch is reached. This is shown in gure 7.
Add 128 to the mode number (i.e. set axis parameter #193 to 129) to reverse the polarity of the home
switch input.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 90 / 109
Figure 7: Reference search Mode 5
7.1.6 Mode 6
Reference search mode 6 searches the home switch in positive direction. The search direction will be
reversed if the left limit switch is reached. This is shown in gure 8.
Add 128 to the mode number (i.e. set axis parameter #193 to 130) to reverse the polarity of the home
switch input.
L R
right limit / end / stop switch
: reference search speed (axis parameter 194)
: reference switch speed (axis parameter 195)
start
stop
home switch
Figure 8: Reference search Mode 6
7.1.7 Mode 7
Reference search mode 7 searches the home switch in positive direction, ignoring the limit switch inputs.
It is recommende mainly for use with a circular axis. The exact middle of the switch will be found and used
as the zero point. Figure 9illustrates this.
Add 128 to the mode number (i.e. set axis parameter #193 to 131) to reverse the polarity of the home
switch input.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
_ Islevsnze Swvlzlv 3pm [axis pummstsrlfl) _ referent! swmh Spesd 1m pummnev 195/
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 91 / 109
L R
: reference search speed (axis parameter 194)
: reference switch speed (axis parameter 195)
start
stop
home switch
Figure 9: Reference search Mode 7
7.1.8 Mode 8
Reference search mode 8 searches the home switch in positive direction, ignoring the limit switch inputs.
It is recommende mainly for use with a circular axis. The exact middle of the switch will be found and used
as the zero point. Figure 10 illustrates this.
Add 128 to the mode number (i.e. set axis parameter #193 to 132) to reverse the polarity of the home
switch input.
L R
: reference search speed (axis parameter 194)
: reference switch speed (axis parameter 195)
start
stop
home switch
Figure 10: Reference search Mode 8
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
,//Closed loop operation with 10000cpr optical encoder and 1.8“ Motor //General Settings: SAP 6, 0, SAP 7, 0, //Encoder Resolution Setting: SAP 210, 0 85 10 //set current to 1A (EMS) //set standby current 10000 //10000 counts per round //Closed Loop Field Weakening Settings //gamma Vmin 1600000 //gamma Vmax //set CL maximum gamma SAP 103, SAP 109, SAP 110, //C1osed SAP 111, SAP 11a, SAP 114, SAP 126, SAP 125, SAP 134, SAP 120, SAP 121, SAP 115, SAP 116, SAP 117, 0 0 0 300000 255 Loop Current Setting: //set CL beta (default 255) :> 90° //set CL current minimum //set CL current maximum //Start of Current Increase in CL Mode[0. //set max. correction tolerance ooooooooooo 255 50 255 255 255 100 1000 10000 3000 20 2000 //Set //Set //Set //Set //Set CL CL CL CL CL upscale delay downscale delay correction velocity P correction velocity 1 correction velocity 1 clipping .255]
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 92 / 109
7.2 Using encoders
With the TMCM-1111 it is also possible to use encoders. The TMCM-1111 can work as an open-loop system
as well as a true servo-like closed-loop system. In open-loop mode encoders can be used just to check
if the motor really reaches its target positions and thus can follow the magnetic eld and the position
counter. In closed-loop mode the encoder is used for position feed back with regulation of the position, so
that it will work like a servo.
Consider the following things for using encoders with the TMCM-1111:
Set the motor full step resolution using parameter 202 (for 1.8
°
motors this is 200 which is also the
default value of this parameter).
Set the encoder resolution (as encoder counts per round) using axis parameter 210.
When parameters 202 and 210 are set to the right values the module will automatically convert the
encoder resolution to the motor microstep resolution so that the encoder postion is the same as the
motor position.
The encoder position can be read using axis parameter 209. This parameter is also writable, e.g. for
setting a new origin. After a reference search this parameter is also automatically set to 0.
The motor can also be stopped automatically when it cannot follow anymore (due to overload or
obstruction). Axis parameter 212 controls this function.
7.3 Closed-Loop Operation
Together with an external ABN encoder it is possible to operate each axis of the TMCM-1111 as a closed-
loop stepper system. Before enabling this feature, some parameters have to be set. The following example
TMCL program shows how to do this.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
21 SAP 118, 0, 0 //set CL correction velocity DV clock SAP 119, 0, 100000 //set CL correction velocity DV clipping 29 SAP 124, 0, 65536 //set correction position P (default 65536) :x SAP 212, 0, 1000 //Max. position deviation. SAP 213, 0, 30000 //Pos_ERRDR output. Max. velocity deviation. SAP 129, 0, 1 //Turn on closedrloop Waitlnit: .. 0AP 133, 0 //Wait until CLrInit finished JC ZE, Waitlnit //Acce1eration, Velocity Settings: .. SAP 4, 0, 600000 //set positioning velocity SAP 5, 0, 800000 //set acceleration .3 SAP 17, 0, 800000 // set deceleration .5 STEIP //end of the program
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 93 / 109
7.3.1 Closed-Loop Parameters
The closed-loop operation of the TMCM-1111 is based on Trinamics closed-loop hardware motion controller
IC TMC4361.
The 2-phase closed-loop control of the TMCM-1111 follows a different approach than PID control cascades
to consider stepper motor driver characteristics. The ramp generator which assigns target and velocity is
independent of the position control (commutation angle control) which is also independent of the current
control. The closed-loop control scheme is depicted in the following picture.
Ramp Generator
Position
Control
Velocity
Control
Torque Control
Driver
Stage
Load
Angle
Control
Field
Weakening
Current
Level
Control
Torque Control
Motor
ABN Encoder
Flags /
Status
Ramp
Parameters
Control
Parameters
velocity / position / electrical angle
velocity / position
Figure 11: Closed-Loop Control Scheme
Load angle control and current level control will be executed in parallel.
7.3.2 Load Angle Control
As typical for stepper motor drivers, phase currents will be assigned directly to he motor drivers. This
results in a current vector which should be followed by the rotor.The rotor position will be directly sampled
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
AXJAREET ~ 255 55(79 XJARGET 255
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 94 / 109
by encoder feedback. The closed-loop motor control monitors the resulting load angle (deviation between
driver stage current vector and encoder angle). Further on, the direction of the current vector will track the
rotor position if the load angle should impend to exceed a certain limit. The result is a load angle which
will be never exceed the given limit and as a result no step loss will occur. Thus, the current vector will
follow an overpowered load until the load is reduced.
Figure 12 shows the parameters which limit the load angle.
Load Angle [µSteps](Deviation Current Vector and Encoder)
X_TARGET
X_TARGET - 128
128(45°) 255(90°)-128(-45°)-255(-90°)
Current Vector [µSteps](Driver Stage)
X_TARGET - 255
X_TARGET + 128
X_TARGET + 255
SAP 111SAP 111
383(135°)-383(-135°)
Figure 12: Load Angle Control Parameter
7.3.3 Current Level Control
Parallel to the load angle control the TMCM-1111 controls the motor current level (current vector ampli-
tude) depending on the load angle to save energy during no or light load. Figure 13 gives an overview of
the current control parameters.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
Current Value [0355]
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 95 / 109
Load Angle [µSteps](Deviation Current Vector and Encoder)
128(45°) 255(90°)-128(-45°)-255(-90°)
Current Value [0..255]
SAP 126
383(135°)-383(-135°)
255
128
SAP 126
SAP 111SAP 111
SAP 113
SAP 114
SAP 134SAP 134
Figure 13: Current Level Control
SAP 111: Closed Loop Beta
SAP 126: Closed Loop Start Up
SAP 113: Minimum Closed Loop Current Scaler
SAP 114: Maximum Closed Loop Current Scaler
SAP 134: Positioning Window for Target Reached Flag
Axis parameters #120 and #121 set up the delay which denes how fast the actual current will be increased
or decreased and will follow the red marked graph.
7.3.4 Field Weakening
With every stepper motor the TMCM-1111 will reach a velocity where it is not possible to maintain the
target motor current due to the motor back EMF. Above this velocity load angle (SAP 111, default 90
°
) and
current level control will reach their maximum. To drive the stepper motor faster the back EMF must be
compensated by commutating the stepper motor with a commutation angle between 90
°
and 180
°
. The
parameters for eld weakening are described in gure 14.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
SAP m saw my Position
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 96 / 109
Motor Velocity [pps]
Load Angle [µSteps]
SAP 108 SAP 109
SAP 110
SAP 111max. 9
Field Weakening
Normal Closed Loop
max. 180°
Figure 14: Field Weakening
SAP 111: Closed Loop Beta
SAP 110: Closed Loop Gamma
SAP 108: Gamma Vmin
SAP 109: Gamma Vmax
7.3.5 Position Catch up
The TMCM-1111 includes a special feature for closed-loop positioning. Positioning parameters like velocity
and acceleration will be calculated to reach a position in a dedicated time. If the target trapezoidal ramp
cannot be maintained due to high load peaks the TMCM-1111 includes a special position catch-up mode
to ensure that the position will still be reached in time if possible.
Motor Velocity [pps]
Position
SAP 119
SAP 119
Overload
Catch-upPID control parameters for catch-up
SAP 115, 116, 117, 118
Figure 15: Position Catch up
7.4 stallGuard2
The module is equipped with motor driver chips that feature load measurement. This load measurement
can be used for stall detection. stallGuard2 delivers a sensorless load measurement of the motor as well
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 97 / 109
as a stall detection signal. The measured value changes linear with the load on the motor in a wide range
of load, velocity and current settings. At maximum motor load the stallGuard value goes to zero. This
corresponds to a load angle of 90
°
between the magnetic eld of the stator and magnets in the rotor. This
also is the most energy ecient point of operation for the motor.
Stall detection means that the motor will be stopped automatically when the load gets too high. This
function is congured mainly using axis parameters #174 and #181.
Stall detection can for example be used for nding the reference point without the need for reference
switches. A short routine written in TMCL is needed to use stallGuard for reference searching.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
The current depends on
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 98 / 109
7.5 coolStep
This section gives an overview of the coolStep related parameters. Please bear in mind that the gure only
shows one example for a drive. There are parameters which concern the conguration of the current.
Other parameters are there for velocity regulation and for time adjustment.
Figure 16 shows all the adjustment points for coolStep. It is necessary to identify and congure the
thresholds for current (I6, I7 and I183) and velocity (V182). Furthermore the stallGuard2 feature has to be
adjusted (SG170). It can also be enabled if needed (SG181).
The reduction or increasing of the current in the coolStep area (depending on the load) has to be congured
using parameters I169 and I171.
In this chapter only basic axis parameters are mentioned which concern coolStep and stallGuard2. The
complete list of axis parameters in chapter 4contains further parameters which offer more conguration
options.
Velocity
Time
T214
coolStep area
I7
I7
area without coolStep™
SG170
SG181
V182
I 6
I183 I183
Current
V123 Velocity and parameter
I123 Current and parameter
T123 Time parameter
I7
I6
I183
I6/2*
* The lower threshold of the coolStep current can be adjusted up to I6/4. Refer to parameter 168.
The current depends on
the load of the motor.
SG123 stallGuard2 parameter
Figure 16: coolStep Adjustment Points and Thresholds
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 99 / 109
coolStep Adjustment Points and Thresholds
Number Axis Parameter Description
I6 Absolute maximum current
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 (0. . . 255 divided by eight; e.g. step 0 =
0. . . 7, step 1 = 8. . . 15 and so on).
Too high values may cause motor damage!
I7 Standby current
The current limit two seconds after the mo-
tor has stopped.
I168 smartEnergy current minimum
Sets the lower motor current limit for cool-
Step operation by scaling the CS (Current
Scale, see axis parameter 6) value.
Minimum motor current:
0 - 1/2 of CS
1 - 1/4 of CS
I169 smartEnergy current down step
Sets the number of stallGuard2 readings
above the upper threshold necessary for
each current decrement of the motor cur-
rent. Number of stallGuard2 measurements
per decrement:
Scaling: 0. . . 3: 32, 8, 2, 1
0: slow decrement
3: fast decrement
I171 smartEnergy current up step
Sets the current increment step. The
current becomes incremented for each
measured stallGuard2 value below the
lower threshold (see smartEnergy hystere-
sis start).
current increment step size:
Scaling: 0. . . 3: 1, 2, 4, 8
0: slow increment
3: fast increment
SG170 smartEnergy hysteresis
Sets the distance between the lower and
the upper threshold for stallGuard2 read-
ing. Above the upper threshold the motor
current becomes decreased.
SG181 Stop on stall
Below this speed motor will not be stopped.
Above this speed motor will stop in case
stallGuard2 load value reaches zero.
V182 smartEnergy threshold speed
Above this speed coolStep becomes en-
abled.
T214 Power down delay
Standstill period before the current is
changed down to standby current. The stan-
dard value is 200 (which means 2000msec).
Table 21: coolStep Adjustment Points and Thresholds
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 100 / 109
7.6 Velocity and Acceleration Calculation
When the unit mode (axis parameter #255) is set to 1 (which is also the default value), all velocity parameters
on the TMCM-1111 are given in microsteps per second (also called pulse per second or pps). Acceleration
and deceleration units are given in pps2.
When axis parameter #255 is set to 0 the internal units of the ramp generators are directly used. But this
is only necessary in very special cases. Normally one should leave axis parameter #255 at 1 and use the
pps units.
In order to convert between pps units and units like rounds per second (rps) or rounds per minute (rpm),
one has to know the fullstep resolution of the motor (full steps per round) and the microstep resolution
setting of the module (axis parameter #140, default setting is 256 microsteps per full step).
So to convert from pps to rps, use the following formula:
vrps =vpps
rfullstep ·rmicrostep
To convert from rps to rpm, use:
vrpm =vrps ·60
With the following symbols:
vrps: velocity in rounds per second
vrpm: velocity in rounds per minute
vpps: velocity in pulses (microsteps) per second
rfullstep: fullstep resolution of the motor (with most motors 200 (1.8°))
rmicrostep: microstep setting of the module (default 256)
So, with a 200 fullsteps motor and a microstep setting of 256 (axis parameter #140 = 8), a velocity of
51200pps will result in 1rps (60rpm).
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
, //Initialization SAP 4, 0, 50000 //define maximum positioning speed a SAP 5, 0, 10000 //define maximum acceleration 5 MainLoop: //do something, in this example just running between two positions 1 MVP ABS, 0, 5000 WAIT PBS, 0, 0 a MVP ABS, 0, 0 WAIT PBS, 0, 0 ,, JA MainLoop //end of the main loop :> run infinitely ,//Define some constants #include TMCLFaram.tmc , MaxSpeed : 50000 MaxAcc : 10000 5 Position0 : 0 Positionl : 500000 //Initialization a SAP APMaxPositioningSpeed, Hetero, MaxSpeed SAP AFMaxAcceleration, Hetero, MaxAcc MainLoop: ,, MVP ABS, Hetero, Positionl WAIT FDS, Hetero, 0 ,5 MVP ABS, Hetero, Position0
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 101 / 109
8 TMCL Programming Techniques and Structure
8.1 Initialization
The rst task in a TMCL program (like in other programs also) is to initialize all parameters where different
values than the default values are necessary. For this purpose, SAP and SGP commands are used.
8.2 Main Loop
Embedded systems normally use a main loop that runs innitely. This is also the case in a TMCL application
that is running stand alone. Normally the auto start mode of the module should be turned on. After power
up, the module then starts the TMCL program, which rst does all necessary initializations and then enters
the main loop, which does all necessary tasks end never ends (only when the module is powered offor
reset).
There are exceptions to this, e.g. when TMCL routines are called from a host in direct mode.
So most (but not all) stand alone TMCL programs look like this:
8.3 Using Symbolic Constants
To make your program better readable and understandable, symbolic constants should be taken for all
important numerical values that are used in the program. The TMCL-IDE provides an include le with
symbolic names for all important axis parameters and global parameters. Please consider the following
example:
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
WAIT FuS, Motoro, o ,1 JA MainLoop , MyVariable : 42 //Use a symbolic name for the user variable a //(This makes the program better readable and understandable.) s SGF MyVariable, 2, 1234 //Initia1iZe the variable with the value 1234 GOP MyVariable, 2 //Copy contents of variable to accumulator register 9 CALC MUL, 2 //Mu1tip1y accumulator register with two AAF MyVariable, 2 //Store contents of accumulator register to variable
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 102 / 109
Have a look at the le TMCLParam.tmc provided with the TMCL-IDE. It contains symbolic constants that
dene all important parameter numbers.
Using constants for other values makes it easier to change them when they are used more than once in a
program. You can change the denition of the constant and do not have to change all occurrences of it in
your program.
8.4 Using Variables
The user variables can be used if variables are needed in your program. They can store temporary values.
The commands SGP, GGP and AGP as well as STGP and RSGP are used to work with user variables:
SGP is used to set a variable to a constant value (e.g. during initialization phase).
GGP is used to read the contents of a user variable and to copy it to the accumulator register for
further usage.
AGP can be used to copy the contents of the accumulator register to a user variable, e.g. to store the
result of a calculation.
The STGP command stores the contents of a user varaible in the EEPROM.
The RSGP command copies the value stored in the EEPROM back to the user variable.
Global parameter 85 controls if user variables will be restored from the EEPROM automatically on
startup (default setting) or not (user variables will then be initialized with 0 instead).
Please see the following example:
Furthermore, these variables can provide a powerful way of communication between a TMCL program
running on a module and a host. The host can change a variable by issuing a direct mode SGP command
(remember that while a TMCL program is running direct mode commands can still be executed, without
interfering with the running program). If the TMCL program polls this variable regularly it can react on
such changes of its contents.
The host can also poll a variable using GGP in direct mode and see if it has been changed by the TMCL
program.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
//Jump commands to the TMCL routines 2 Funcl: JA FunclStart Func2 JA Func2Start . Func JA FuncaStart a FunclStart: MVP ABS, 0, 1000 a WAIT PBS, 0, 0 MVP ABS, 0, 0 m WAIT PBS, 0, 0 STEP Func2Start: u RDL 0, 500 WAIT TICKS, 0, 100 m MST 0 STEP FuncSStart: m EUR 0, 1000 WAIT TICKS, 0, 700 u MST 0 STEP
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 103 / 109
8.5 Using Subroutines
The CSUB and RSUB commands provide a mechanism for using subroutines. The CSUB command branches
to the given label. When an RSUB command is executed the control goes back to the command that
follows the CSUB command that called the subroutine.
This mechanism can also be nested. From a subroutine called by a CSUB command other subroutines can
be called. In the current version of TMCL eight levels of nested subroutine calls are allowed.
8.6 Combining Direct Mode and Standalone Mode
Direct mode and standalone mode can also be combined. When a TMCL program is being executed in
standalone mode, direct mode commands are also processed (and they do not disturb the ow of the
program running in standalone mode). So, it is also possible to query e.g. the actual position of the motor
in direct mode while a TMCL program is running.
Communication between a program running in standalone mode and a host can be done using the TMCL
user variables. The host can then change the value of a user variable (using a direct mode SGP command)
which is regularly polled by the TMCL program (e.g. in its main loop) and so the TMCL program can react
on such changes. Vice versa, a TMCL program can change a user variable that is polled by the host (using a
direct mode GGP command).
A TMCL program can be started by the host using the run command in direct mode. This way, also a set
of TMCL routines can be dened that are called by a host. In this case it is recommended to place JA
commands at the beginning of the TMCL program that jump to the specic routines. This assures that
the entry addresses of the routines will not change even when the TMCL routines are changed (so when
changing the TMCL routines the host program does not have to be changed).
Example:
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 104 / 109
This example provides three very simple TMCL routines. They can be called from a host by issuing a run
command with address 0 to call the rst function, or a run command with address 1 to call the second
function, or a run command with address 2 to call the third function. You can see the addresses of the
TMCL labels (that are needed for the run commands) by using the Generate symbol le functionof the
TMCL-IDE.
8.7 Make the TMCL Program start automatically
For stand-alone operation the module has to start the TMCL program in its memory automatically after
power-on. In order to achieve this, switch on the Autostart option of the module. This is controlled by
global parameter #77. There are different ways to switch on the Autostart option:
Execute the command SGP 77, 0, 1 in direct mode (using the Direct Mode tool in the TMCL-IDE).
Use the Global Parameters tool in the TMCL-IDE to set global parameter #77 to 1.
Use the Autostart entry in the TMCL menu of the TMCL Creator in the TMCL-IDE. Go to the Autostart
entry in the TMCL menu and select "On".
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 105 / 109
9 Figures Index
1
stallGuard2 Load Measurement as a
Function of Load ............ 6
2
Energy Eciency Example with coolStep
6
3 Reference search Mode 1 ....... 88
4 Reference search Mode 2 ....... 88
5 Reference search Mode 3 ....... 89
6 Reference search Mode 4 ....... 89
7 Reference search Mode 5 ....... 90
8 Reference search Mode 6 ....... 90
9 Reference search Mode 7 ....... 91
10 Reference search Mode 8 ....... 91
11 Closed-Loop Control Scheme ..... 93
12 Load Angle Control Parameter . . . . 94
13 Current Level Control .......... 95
14 Field Weakening ............. 96
15 Position Catch up ............ 96
16
coolStep Adjustment Points and
Thresholds ................ 98
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 106 / 109
10 Tables Index
1 Most important Axis Parameters . . . 8
2 TMCL Command Format ........ 11
3 TMCL Reply Format ........... 12
4 TMCL Status Codes ........... 12
5 Overview of all TMCL Commands . . . 15
6 Motion Commands ........... 15
7 Parameter Commands ......... 16
8 Branch Commands ........... 16
9I/O Port Commands .......... 17
10 Calculation Commands ........ 17
11 Interrupt Processing Commands . . . 18
12 Interrupt Vectors ............ 18
13 TMCL Control Commands ....... 71
14
All Axis Parameters of the TMCM-1111
Module .................. 80
15
Meaning of the Letters in the Access
Column .................. 81
16
All Global Parameters of the TMCM-
1111 Module in Bank 0 ......... 84
17 User Variables in Bank 2 ........ 84
18 Interrupt Parameters in Bank 3 . . . . 85
19 Selection of Inputs and Outputs . . . 86
20 Reference Search Modes ........ 87
21
coolStep Adjustment Points and
Thresholds ................ 99
22 Firmware Revision ........... 109
23 Document Revision ........... 109
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 107 / 109
11 Supplemental Directives
11.1 Producer Information
11.2 Copyright
TRINAMIC owns the content of this user manual in its entirety, including but not limited to pictures, logos,
trademarks, and resources.
©
Copyright 2017 TRINAMIC. All rights reserved. Electronically published by
TRINAMIC, Germany.
Redistributions of source or derived format (for example, Portable Document Format or Hypertext Markup
Language) must retain the above copyright notice, and the complete Datasheet User Manual docu-
mentation of this product including associated Application Notes; and a reference to other available
product-related documentation.
11.3 Trademark Designations and Symbols
Trademark designations and symbols used in this documentation indicate that a product or feature is
owned and registered as trademark and/or patent either by TRINAMIC or by other manufacturers, whose
products are used or referred to in combination with TRINAMICs products and TRINAMICs product docu-
mentation.
This TMCL
Firmware Manual is a non-commercial publication that seeks to provide concise scientic
and technical user information to the target user. Thus, trademark designations and symbols are only
entered in the Short Spec of this document that introduces the product at a quick glance. The trademark
designation /symbol is also entered when the product or feature name occurs for the rst time in the
document. All trademarks and brand names used are property of their respective owners.
11.4 Target User
The documentation provided here, is for programmers and engineers only, who are equipped with the
necessary skills and have been trained to work with this type of product.
The Target User knows how to responsibly make use of this product without causing harm to himself or
others, and without causing damage to systems or devices, in which the user incorporates the product.
11.5 Disclaimer: Life Support Systems
TRINAMIC Motion Control GmbH & Co. KG does not authorize or warrant any of its products for use in life
support systems, without the specic written consent of TRINAMIC Motion Control GmbH & Co. KG.
Life support systems are equipment intended to support or sustain life, and whose failure to perform,
when properly used in accordance with instructions provided, can be reasonably expected to result in
personal injury or death.
Information given in this document is believed to be accurate and reliable. However, no responsibility
is assumed for the consequences of its use nor for any infringement of patents or other rights of third
parties which may result from its use. Specications are subject to change without notice.
11.6 Disclaimer: Intended Use
The data specied in this user manual is intended solely for the purpose of product description. No repre-
sentations or warranties, either express or implied, of merchantability, tness for a particular purpose
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 108 / 109
or of any other nature are made hereunder with respect to information/specication or the products to
which information refers and no guarantee with respect to compliance to the intended use is given.
In particular, this also applies to the stated possible applications or areas of applications of the product.
TRINAMIC products are not designed for and must not be used in connection with any applications where
the failure of such products would reasonably be expected to result in signicant personal injury or death
(safety-Critical Applications) without TRINAMICs specic written consent.
TRINAMIC products are not designed nor intended for use in military or aerospace applications or environ-
ments or in automotive applications unless specically designated for such use by TRINAMIC. TRINAMIC
conveys no patent, copyright, mask work right or other trade mark right to this product. TRINAMIC assumes
no liability for any patent and/or other trade mark rights of a third party resulting from processing or
handling of the product and/or any other use of the product.
11.7 Collateral Documents & Tools
This product documentation is related and/or associated with additional tool kits, rmware and other
items, as provided on the product page at: www.trinamic.com.
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.
TMCM-1111 TMCLFirmware Manual Firmware Version V1.05 | Document Revision V1.00 2016-OCT-20 109 / 109
12 Revision History
12.1 Firmware Revision
Version Date Author Description
V1.05 2016-OCT-17 OK First release version.
Table 22: Firmware Revision
12.2 Document Revision
Version Date Author Description
V1.00 2016-OCT-20 OK First release version.
Table 23: Document Revision
©2017 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany
Terms of delivery and rights to technical change reserved.
Download newest version at www.trinamic.com
Read entire documentation.

Products related to this Datasheet

BOARD CONTROLLER DRIVER STEPPER
Available Quantity: 0
Unit Price: 188.11