MODULE Module for Stepper TMCM-3351 TMCL™ Firmware Manual Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 The TMCM-3351 is a three axes controller/driver modules for 2-phase bipolar stepper motors with separate differential encoder and separate home and stop switch inputs for each axis. Dynamic current control, and quiet, smooth and efficient operation are combined with StealthChop™, DcStep™, StallGuard2™ and CoolStep™ features.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 2 / 144 Contents 1 Features 1.1 StallGuard2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 CoolStep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 6 6 2 First Steps with TMCL 2.1 Basic Setup . . . . . . . . . . . . . . . 2.2 Using the TMCL Direct Mode . . . . . 2.3 Changing Axis Parameters . . . . .
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.26 3.6.27 3.6.28 3.6.29 3.6.30 3.6.31 3.6.32 3.6.33 3.6.34 3.6.35 3.6.36 3.6.37 3.6.38 3.6.39 3.6.40 3.6.41 3.6.42 3.6.43 3.6.44 3.6.45 3.6.46 3.6.47 3.6.48 3.6.49 3.6.50 3.6.51 3.6.52 3.6.53 3.6.54 3.6.55 3.6.56 3.6.57 3.6.58 CALCX (Calculate using the X Register) . . . . . . . . . . . . . . . . . . . . . . AAP (Accu to Axis Parameter) . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 6.3 Closed-Loop Operation . . . . . . . . 6.3.1 Closed-Loop Parameters . . . 6.3.2 Load Angle Control . . . . . . . 6.3.3 Current Level Control . . . . . 6.3.4 Field Weakening . . . . . . . . 6.3.5 Position Catch up . . . . . . . . 6.4 StallGuard2 . . . . . . . . . . . . . . . 6.5 CoolStep . . . . . . . . . . . . . . . . . 6.6 Velocity and Acceleration Calculation 7 . . . . . . . . . . . . . . . . . . . . .
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 1 5 / 144 Features The TMCM-3351 is a triple 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 3.3A RMS and 24V DC supply voltage.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 1.1 6 / 144 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.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 2 7 / 144 First Steps with TMCL In this chapter you can find some hints for your first steps with the TMCM-3351 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-3351 module. • A USB cable with micro USB plug or an RS485 interface with suitable cable or a CAN interface with suitable cable.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 8 / 144 The following table points out the most important axis parameters. Please see chapter 4 for a complete list of all axis parameters. Most important axis parameters Number Axis Parameter Description Range [Units] Access 4 Maximum positioning speed The maximum speed used for positioning ramps. 0. . . 16777215 RW [pps] 5 Maximum acceleration Maximum acceleration in positioning ramps.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 9 / 144 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. 3. Click the Run icon (or choose Run from the TMCL menu) in the TMCL creator to run the program on the module.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3 10 / 144 TMCL and the TMCL-IDE — An Introduction As with most TRINAMIC modules the software running on the microprocessor of the TMCM-3351 consists of two parts, a boot loader and the firmware itself. Whereas the boot loader is installed during production and testing at TRINAMIC and remains untouched throughout the whole lifetime, the firmware can be updated by the user.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 11 / 144 TMCL Command Format Bytes Meaning 1 Module address 1 Command number 1 Type number 1 Motor or Bank number 4 Value (MSB first!) 1 Checksum Table 2: TMCL Command Format Info Note 3.1.1 The checksum is calculated by accumulating all the other bytes using an 8-bit addition. When using the CAN interface, leave out the address byte and the checksum byte.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.2 12 / 144 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.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.3 13 / 144 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.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.4 14 / 144 TMCL Command Overview This sections gives a short overview of all TMCL commands.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 17 / 144 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 flow (loops, conditions, jumps etc.).
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.5.5 18 / 144 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.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 19 / 144 order to have symbolic constants for the interrupt numbers. Table 12 show all interrupts that are available on the TMCM-3351.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 20 / 144 will be called. Before an interrupt handling routine gets called, the context of the normal program (i.e. accumulator register, X register, flags) will be saved automatically. There is no interrupt nesting, i.e. all other interrupts are disabled while an interrupt handling routine is being executed.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 2 4 21 / 144 # include Interrupts . inc VECT TI_TIMER0 , Timer0Irq SGP TI_TIMER0 , 3 , 1000 EI TI_TIMER0 EI TI_GLOBAL 3.5.7 New TMCL Commands In order to make several operations easier, the following new commands have been introduced from firmware version 1.11 on. Using these new commands many taks can be programmed in an easier way.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6 22 / 144 Detailed TMCL Command Descriptions The module specific 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 specified velocity in right direction (increasing the position counter). The velocity is given in microsteps per second (pulse per second [pps]).
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.2 23 / 144 ROL (Rotate Left) The motor is instructed to rotate with a specified 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.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.3 24 / 144 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 Binary Representation Instruction Type Motor/Bank Value 3 0 0. . . 2 0 Reply in Direct Mode Status Value 100 - OK don’t care Example Stop motor 0.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.4 25 / 144 MVP (Move to Position) With this command the motor will be instructed to move to a specified 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.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 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) 01h Value (Byte 1) 5Fh Value (Byte 0) 90h Checksum F5h Example Move motor 0 from current position 10000 steps backward.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 27 / 144 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 Info Before moving to a stored coordinate, the coordinate has to be set using an SCO, CCO or ACO command.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.5 28 / 144 SAP (Set Axis Parameter) With this command most of the motion control parameters of the module can be specified. The settings will be stored in SRAM and therefore are volatile. That is, information will be lost after power off. For a table with parameters and values which can be used together with this command please refer to section 4.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.6 29 / 144 GAP (Get Axis Parameter) Most motion / driver related parameters of the TMCM-3351 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).
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.7 30 / 144 SGP (Set Global Parameter) With this command most of the module specific parameters not directly related to motion control can be specified and the TMCL user variables can be changed. Global parameters are related to the host interface, peripherals or application specific variables. The different groups of these parameters are organized in banks to allow a larger total number for future products.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.8 31 / 144 GGP (Get Global Parameter) All global parameters can be read with this function. Global parameters are related to the host interface, peripherals or application specific variables. The different groups of these parameters are organized in banks to allow a larger total number for future products. Currently, bank 0 is used for global parameters, and bank 2 is used for user variables.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.9 32 / 144 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 modified.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.10 33 / 144 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.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.11 34 / 144 RFS (Reference Search) The TMCM-3351 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 finished.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 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 ©2019 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany Terms of delivery and rights to technical change reserved. Download newest version at www.trinamic.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.12 36 / 144 SIO (Set Output) This command sets the states of the general purpose digital outputs. Internal function: The state of the output line specified by the type parameter is set according to the value passed to this command. Related commands: GIO.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 37 / 144 Digital Outputs in Bank 2 Port Command Range OUT0 SIO 0, 2, 0/1 OUT1 SIO 1, 2, 0/1 OUT2 SIO 2, 2, 0/1 OUT3 SIO 3, 2, 0/1 OUT4 SIO 4, 2, 0/1 OUT5 SIO 5, 2, 0/1 OUT6 SIO 6, 2, 0/1 OUT7 SIO 7, 2, 0/1 Special case: SIO 255, 2, can be used to change all general purpose digital output lines simulaneously.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.13 38 / 144 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 10 bit result in the range of 0. . . 1023.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 39 / 144 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.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 40 / 144 Analog Inputs in Bank 1 Port Command Range ANA0 GIO 0, 1 0. . . 1023 ANA1 GIO 1, 1 0. . . 1023 ANA2 GIO 2, 1 0. . . 1023 ANA3 GIO 3, 1 0. . . 1023 Supply Voltage (ADC value) GIO 4, 1 0. . . 1023 Temperature (ADC value) GIO 5, 1 0. . . 1023 INP6 GIO 6, 1 0. . . 1023 INP7 GIO 7, 1 0. . .
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.14 41 / 144 CALC (Calculate) A value in the accumulator variable, previously read by a function such as GAP (get axis parameter) can be modified with this instruction. Nine different arithmetic functions can be chosen and one constant operand value must be specified. The result is written back to the accumulator, for further processing like comparisons or data transfer.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.15 43 / 144 COMP (Compare) The specified number is compared to the value in the accumulator register. The result of the comparison can for example be used by the conditional jump (JC) instruction. This command is intended for use in standalone operation only. Internal function: The accumulator register is compared with the sepcified value.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.16 44 / 144 JC (Jump conditional) The JC instruction enables a conditional jump to a fixed address in the TMCL program memory, if the specified condition is met. The conditions refer to the result of a preceding comparison. Please refer to COMP instruction for examples. This command is intended for standalone operation only.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 Binary form of JC GE, Label assuming 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 ©2019 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany Terms of delivery and rights to technical change reserved. Download newest version at www.trinamic.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.17 46 / 144 JA (Jump always) Jump to a fixed 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.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.18 47 / 144 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.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.19 48 / 144 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.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.20 49 / 144 WAIT (Wait for an Event to occur) This instruction interrupts the execution of the TMCL program until the specified condition is met. This command is intended for standalone operation only. There are five different wait conditions that can be used: • TICKS: Wait until the number of timer ticks specified by the parameter has been reached.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 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 ©2019 TRINAMIC Motion Control GmbH & Co.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.21 51 / 144 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.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.22 52 / 144 SCO (Set Coordinate) Up to 20 position values (coordinates) can be stored for every axis for use with the MVP COORD command. This command sets a coordinate to a specified value. Depending on the global parameter 84, the coordinates are only stored in RAM or also stored in the EEPROM and copied back on startup (with the default setting the coordinates are stored in RAM only).
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.23 53 / 144 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 field of the reply, without affecting the accumulator.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 54 / 144 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.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.24 55 / 144 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).
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.25 56 / 144 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.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.26 57 / 144 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.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 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 ©2019 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany Terms of delivery and rights to technical change reserved. Download newest version at www.trinamic.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.27 59 / 144 AAP (Accu to Axis Parameter) The content of the accumulator register is transferred to the specified axis parameter. For practical usage, the accumulator has to be loaded e.g. by a preceding GAP instruction. The accumulator may have been modified by the CALC or CALCX (calculate) instruction. This command is mainly intended for use in standalone mode.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.28 60 / 144 AGP (Accu to Global Parameter) The content of the accumulator register is transferred to the specified global parameter. For practical usage, the accumulator has to be loaded e.g. by a preceding GAP instruction. The accumulator may have been modified by the CALC or CALCX (calculate) instruction. This command is mainly intended for use in standalone mode.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.29 CLE (Clear Error Flags) This command clears the internal error flags. It is mainly intended for use in standalone mode. The following error flags can be cleared by this command (determined by the <flag> parameter): • ALL: clear all error flags. • ETO: clear the timeout flag. • EAL: clear the external alarm flag. • EDV: clear the deviation flag. • EPO: clear the position error flag. Related commands: JC, WAIT.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 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 ©2019 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany Terms of delivery and rights to technical change reserved. Download newest version at www.trinamic.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.30 63 / 144 EI (Enable Interrupt) The EI command 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. Please see table 12 for a list of interrupts that can be used on the TMCM-3351 module. Info Related commands: DI, VECT, RETI.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.31 64 / 144 DI (Disable Interrupt) The DI command 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. Please see table 12 for a list of interrupts that can be used on the TMCM-3351 module. Info Related commands: EI, VECT, RETI.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.32 65 / 144 VECT (Define Interrupt Vector) The VECT command defines 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-defined. This command is intended for use in standalone mode only.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 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 ©2019 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany Terms of delivery and rights to technical change reserved. Download newest version at www.trinamic.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.33 67 / 144 RETI (Return from Interrupt) This command terminates an interrupt handling routine. Normal program flow will be continued then. This command is intended for use in standalone mode only. An interrupt routine must always end with a RETI command. Do not allow the normal program flow to run into an interrupt routine.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.34 68 / 144 CALCVV (Calculate using two User Variables) The CALCVV instruction directly uses the contents of two user variables for an arithmetic operation, storing the result in the first user variable. This eliminates the need for using the accumulator register and/or X register for such purposes. The parameters of this command are the arithmetic function, the index of the first user variable (0. . .
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.35 70 / 144 CALCVA (Calculate using a User Variable and the Accumulator Register) The CALCVA instruction directly modifies a user variable using an arithmetical operation and the contents of the accumulator register. The parameters of this command are the arithmetic function and the index of a user variable (0. . . 255). This command is mainly intended for use in standalone mode.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.36 72 / 144 CALCAV (Calculate using the Accumulator Register and a User Variable) The CALCAV instruction modifies the accumulator register using an arithmetical operation and the contents of a user variable. The parameters of this command are the arithmetic function and the index of a user variable (0. . . 255). This command is mainly intended for use in standalone mode.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.37 74 / 144 CALCVX (Calculate using a User Variable and the X Register) The CALCVX instruction directly modifies a user variable using an arithmetical operation and the contents of the X register. The parameters of this command are the arithmetic function and the index of a user variable (0. . . 255). This command is mainly intended for use in standalone mode.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.38 76 / 144 CALCXV (Calculate using the X Register and a User Variable) The CALCXV instruction modifies the X register using an arithmetical operation and the contents of a user variable. The parameters of this command are the arithmetic function and the index of a user variable (0. . . 255). This command is mainly intended for use in standalone mode.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.39 78 / 144 CALCV (Calculate using a User Variable and a Direct Value) The CALCV directly modifies a user variable using an arithmetical operation and a direct value. This eliminates the need of using the accumulator register for such a purpose and thus can make the program shorter and faster. The parameters of this command are the arithmetic function, the index of a user variable (0. . .
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.40 80 / 144 RST (Restart) Stop the program, reset the TMCL interpreter and then re-start the program at the given label. This command can be used to re-start the TMCL program from anywhere in the program, also out of subroutines or interrupt rotuines. This command is intended for standalone operation only.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.41 81 / 144 DJNZ (Decrement and Jump if not Zero) Decrement a given user variable and jump to the given address if the user variable is greater than zero. This command can for example be used to easily program a counting loop, using any user variable as the loop counter. This command is intended for standalone operation only. Internal function: The user variable passed to this command is decremented.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.42 82 / 144 CALL (Conditional Subroutine Call) The CALL command calls a subroutine in the TMCL program, but only if the specifed condition is met. Otherwise the program execution will be continued with the next command following the CALL command. The conditions refer to the result of a preceding comparison or assignment. This command is intended for standalone operation only.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 14 16 RunRight : RORA 0 RSUB 18 20 22 24 MotorStop : GAP 2 , 0 JC ZE , MotorIsStopped MST 0 MotorIsStopped : RSUB Binary form of CALL LT, RunLeft (assuming RunLeft at address 100) Field Value Target address 01h Instruction number 50h Type 06h Motor/Bank 00h Value (Byte 3) 00h Value (Byte 2) 00h Value (Byte 1) 00h Value (Byte 0) 64h Checksum BBh ©2019 TRINAMIC Motion Control GmbH & Co.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.43 84 / 144 MVPA (Move to Position specified by Accumulator Register) With this command the motor will be instructed to move to a specified relative or absolute position. The contents of the accumulator register will be used as the target position. This command is non-blocking which means that a reply will be sent immediately after command interpretation and initialization of the motion controller.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 Binary Form of MVPA ABS, 0 Field Value Target address 01h Instruction number 2Eh Type 00h Motor/Bank 00h Value (Byte 3) 00h Value (Byte 2) 00h Value (Byte 1) 00h Value (Byte 0) 00h Checksum 2Fh ©2019 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany Terms of delivery and rights to technical change reserved. Download newest version at www.trinamic.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.44 86 / 144 ROLA (Rotate Left using the Accumulator Register) Rotate in left direction (decreasing the position counter) using the velocity specified by the contents of the accumulator register. The velocity is given in microsteps per second (pulse per second [pps]). Internal function: • First, velocity mode is selected.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.45 87 / 144 RORA (Rotate Right using the Accumulator Register) Rotate in right direction (increasing the position counter) using the velocity specified by the contents of the accumulator register. The velocity is given in microsteps per second (pulse per second [pps]). Internal function: • First, velocity mode is selected.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.46 88 / 144 MVPXA (Move to Position specified by Accumulator Register and X Register) With this command the motor will be instructed to move to a specified relative or absolute position. The contents of the accumulator register will be used as the target position, and the contents of the X register specifies the motor number.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 Binary Form of MVPXA ABS Field Value Target address 01h Instruction number 2Fh Type 00h Motor/Bank 00h Value (Byte 3) 00h Value (Byte 2) 00h Value (Byte 1) 00h Value (Byte 0) 00h Checksum 30h ©2019 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany Terms of delivery and rights to technical change reserved. Download newest version at www.trinamic.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.47 90 / 144 ROLXA (Rotate Left using the Accumulator Register and X Register) Rotate in left direction (decreasing the position counter) using the velocity specified by the contents of the accumulator register and the motor specified by the contents of the X register. The velocity is given in microsteps per second (pulse per second [pps]). Internal function: • First, velocity mode is selected.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.48 91 / 144 RORXA (Rotate Right using the Accumulator Register and X Register) Rotate in right direction (increasing the position counter) using the velocity specified by the contents of the accumulator register and the motor specified by the contents of the X register. The velocity is given in microsteps per second (pulse per second [pps]). Internal function: • First, velocity mode is selected.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.49 92 / 144 MSTX (Motor Stop using X Register) The motor specified by the X register is instructed to stop using a soft stop. Internal function: For the axis specified by the X register, velocity mode is selected and the target speed (axis parameter #0) is set to zero. Related commands: RORXA, ROLXA.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.50 93 / 144 SAPX (Set Axis Parameter, Axis specified by X Register) The SAPX command nearly works the same way as the SAP command, except that the axis number is specified by the X register. This command is mainly intended for use in standalone mode. For a table with parameters and values which can be used together with this command please refer to section 4.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.51 94 / 144 GAPX (Get Axis Parameter, Axis specified by X Register) The GAPX command nearly works the same way as the GAP command, except that the motor number is specified by the X register. This command is mainly intended for use in standalone mode. For a table with parameters and values that can be used together with this command please refer to section 4.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.52 95 / 144 AAPX (Accu to Axis Parameter, Axis specified by X Register) The AAPX command nearly works the same way as the AAP command, with the only exception that the axis number is specified by the X register. This command is mainly intended for use in standalone mode. For a table with parameters and values which can be used together with this command please refer to section 4.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 Binary Form of AAP 0 Field Value Target address 01h Instruction number 12h Type 00h Motor/Bank 00h Value (Byte 3) 00h Value (Byte 2) 00h Value (Byte 1) 00h Value (Byte 0) 00h Checksum 13h ©2019 TRINAMIC Motion Control GmbH & Co. KG, Hamburg, Germany Terms of delivery and rights to technical change reserved. Download newest version at www.trinamic.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.53 97 / 144 SIV (Set Indexed Variable) This command copies a direct value to a TMCL user variable. The index of the user variable (0. . . 255) is specified by the content of the X register. Therefore the value in the X register must not be lower than zero or greater than 255. Otherwise this command will be ignored. This command is mainly intended for use in standalone mode.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.54 98 / 144 GIV (Get Indexed Variable) This command reads a TMCL user variable and copies its content to the accumulator register. The index of the user variable (0. . . 255) is specified by the X register. Therefore the content of the X register must not be lower than zero or greater than 255. Otherwise this command will be ignored. This command is mainly intended for use in standalone mode.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.55 99 / 144 AIV (Accumulator to Indexed Variable) This command copies the content of the accumulator to a TMCL user variable. The index of the user variable (0. . . 255) is specified by the content of the X register. Therefore the value in the X register must not be lower than zero or greater than 255. Otherwise this command will be ignored. This command is mainly intended for use in standalone mode.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.56 100 / 144 Customer specific Command Extensions (UF0. . . UF7 – User Functions) These commands are used for customer specific 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 firmware. Related commands: none. Mnemonic: UF0. . .
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.57 101 / 144 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.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 3.6.58 103 / 144 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).
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 Instruction Description Type Value 135 – get application status Return information about the current status, depending on the type field. 0 - return mode, wait flag, memory pointer 1 - return mode, wait flag, program counter 2 - return accumulator 3 - return X register 0 (don’t care) 136 – get firmware version Return firmware version in string format (special reply) or binary format).
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 4 105 / 144 Axis Parameters Most motor controller features of the TMCM-3351 module are controlled by axis parameters. Axis parameters can be modified or read using SAP, GAP and AAP commands. This chapter describes all axis parameters that can be used on the TMCM-3351 module.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 107 / 144 Number Axis Parameter Description Range [Units] 26 Virtual stop left Virtual stop position when motor is moving in negative direction. -2147483648 RW . . . 2147483647 [µsteps] 27 Virtual stop right Virtual stop position when motor is moving in positive direction. -2147483648 RW . . .
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 108 / 144 Number Axis Parameter Description Range [Units] 112 CL offset Offset for closed loop operation. Measured during closed loop initialization. -2147483648 RW . . . 2147483647 113 CL current minimum Minimum current setting in closed loop operation. 0. . . 255 RW 114 CL current maximum Maximum current setting in closed loop operation. 0. . .
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 109 / 144 Number Axis Parameter Description Range [Units] Access 129 Closed Loop Mode 0 - closed loop off 1 - closed loop on 2 - PID mode based on vactual 3 - PID mode based on v=0 After switching on closed loop, please wait until parameter #133 is 1 before executing any motion commands. 0/1 RW 131 measured speed Speed measured using the encoder. -2147483648 R . . .
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 110 / 144 Number Axis Parameter Description Range [Units] Access 164 Disable fast decay comperator See parameter 163. For ”classic const. off time” setting this parameter to ”1” will disable current comparator usage for termination of fast decay cycle. 0/1 RW 165 Chopper hysteresis end / fast decay time See parameter 163.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 111 / 144 Number Axis Parameter Description Range [Units] Access 171 SmartEnergy current up step Sets the current increment step. The current becomes incremented for each measured StallGuard2 value below the lower threshold see SmartEnergy hysteresis start). Current increment step size: Scaling: 0. . . 3: 1, 2, 4, 8 0: slow increment 3: fast increment / fast reaction to rising load 0. . .
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 112 / 144 Number Axis Parameter Description Range [Units] Access 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).
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 Number 193 Axis Parameter Reference search mode 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.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 114 / 144 Number Axis Parameter Description Range [Units] Access 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 201 Encoder mode A combination of the following values: 0. . . 511 RW Bit 0 Required channel A polarity for null channel event.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 116 / 144 Number Axis Parameter Description Range [Units] Access 251 Reverse shaft Reverse the rotation direction of the motor shaft. Please note that this will not reverse the encoder counting direction. Use axis parameter #210 to reverse the encoder counting direction. 0/1 RW Table 15: All Axis Parameters of the TMCM-3351 Module ©2019 TRINAMIC Motion Control GmbH & Co.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 5 117 / 144 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 configuration of the module. • Bank 1: Not used. • Bank 2: TMCL user variables. • Bank 3: TMCL interrupt configuration. 5.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 118 / 144 All Global Parameters of the TMCM-3351 Module in Bank 0 Number 65 Global Parameter RS232 and RS485 baud rate Description 0 9600 1 14400 2 19200 3 28800 4 38400 5 57600 6 76800 7 115200 8 230400 Not supported by PCs 9 250000 Not supported by PCs 10 500000 Not supported by PCs 11 1000000 Not supported by PCs Range [Units] Access 0. . .
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 119 / 144 Number Global Parameter Description Range [Units] Access 76 Serial host address Host address used in the reply telegrams sent back via RS485 and RS232. 0. . . 255 RWA 77 Auto start mode 0 - Do not start TMCL application after power up (default). 1 - Start TMCL application automatically after power up.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 120 / 144 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. . .
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 121 / 144 Interrupt Parameters in Bank 3 Number Global Parameter Description Range [Units] 0 Timer 0 period (ms) Time between two interrupts 0. . . 4294967295 RW [ms] 1 Timer 1 period (ms) Time between two interrupts 0. . . 4294967295 RW [ms] 2 Timer 2 period (ms) Time between two interrupts 0. . . 4294967295 RW [ms] 27 Stop left 0 trigger transition 0=off, 1=low-high, 2=high-low, 3=both 0.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 6 122 / 144 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. You will also find basic information about StallGuard2™ and CoolStep™ in this chapter. 6.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 6.1.1 123 / 144 Mode 1 Reference search mode 1 only searches the left end switch. Select this mode by setting axis parameter #193 to 1. Figure 3 illustrates 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.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 L 124 / 144 R start stop left limit / end / stop switch right limit / end / stop switch : reference search speed (axis parameter 194) : reference switch speed (axis parameter 195) Figure 5: Reference Search Mode 3 6.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 figure 6.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 125 / 144 Home L R start stop left limit / end / stop switch home switch : reference search speed (axis parameter 194) : reference switch speed (axis parameter 195) Figure 7: Reference Search Mode 5 6.1.6 Mode 6 Reference search mode 6 searches the home switch in positive direction. The search direction will be reversed if the right limit switch is reached. This is shown in figure 8.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 L 126 / 144 R start stop home switch : reference search speed (axis parameter 194) : reference switch speed (axis parameter 195) Figure 9: Reference Search Mode 7 6.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.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 6.2 127 / 144 Using Encoders With the TMCM-3351 it is also possible to use encoders. The TMCM-3351 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 field and the position counter.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 25 27 29 31 SAP SAP SAP SAP SAP 116 , 117 , 118 , 119 , 124 , 0, 0, 0, 0, 0, 20 2000 0 100000 65536 // set // set // set // set // set 128 / 144 CL correction velocity I CL correction velocity I clipping CL correction velocity DV clock CL correction velocity DV clipping correction position P ( default 65536) SAP 212 , 0 , 1000 SAP 213 , 0 , 30000 // Max . position deviation . // Pos_ERROR output .
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 6.3.2 129 / 144 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 by encoder feedback. The closed-loop motor control monitors the resulting load angle (deviation between driver stage current vector and encoder angle).
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 130 / 144 Current Value [0..
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 131 / 144 Normal Closed Loop Load Angle [µSteps] Field Weakening max. 180° SAP 110 SAP 111max. 90° Motor Velocity [pps] SAP 108 SAP 109 Figure 14: Field Weakening • SAP 111: Closed Loop Beta • SAP 110: Closed Loop Gamma • SAP 108: Gamma Vmin • SAP 109: Gamma Vmax 6.3.5 Position Catch up The TMCM-3351 includes a special feature for closed-loop positioning.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 132 / 144 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 field of the stator and magnets in the rotor. This also is the most energy efficient point of operation for the motor.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 6.5 133 / 144 CoolStep This section gives an overview of the CoolStep related parameters. Please bear in mind that the figure only shows one example for a drive. There are parameters which concern the configuration of the current. Other parameters are there for velocity regulation and for time adjustment. Figure 16 shows all the adjustment points for CoolStep.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 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).
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 6.6 135 / 144 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-3351 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.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 7 136 / 144 TMCL Programming Techniques and Structure 7.1 Initialization The first 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. 7.2 Main Loop Embedded systems normally use a main loop that runs infinitely.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 17 137 / 144 WAIT POS , Motor0 , 0 JA MainLoop Have a look at the file TMCLParam.tmc provided with the TMCL-IDE. It contains symbolic constants that define 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 definition of the constant and do not have to change all occurrences of it in your program. 7.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 7.5 138 / 144 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.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 139 / 144 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 first 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.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 8 140 / 144 Figures Index 1 2 3 4 5 6 7 8 StallGuard2 Load Measurement as a Function of Load . . . . . . . . . . . . . 6 Energy Efficiency Example with CoolStep 6 Reference Search Mode 1 . . . . . . . . 123 Reference Search Mode 2 . . . . . . . . 123 Reference Search Mode 3 . . . . . . . . 124 Reference Search Mode 4 . . . . . . . . 124 Reference Search Mode 5 . . . . . . . . 125 Reference Search Mode 6 . . .
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 9 141 / 144 Tables Index 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Most important Axis Parameters . TMCL Command Format . . . . . . TMCL Reply Format . . . . . . . . . TMCL Status Codes . . . . . . . . . Overview of all TMCL Commands Motion Commands . . . . . . . . . Parameter Commands . . . . . . . Branch Commands . . . . . . . . . I/O Port Commands . . . . . . . . Calculation Commands . . . . . .
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 10 142 / 144 Supplemental Directives 10.1 Producer Information 10.2 Copyright TRINAMIC owns the content of this user manual in its entirety, including but not limited to pictures, logos, trademarks, and resources. © Copyright 2019 TRINAMIC. All rights reserved. Electronically published by TRINAMIC, Germany.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 143 / 144 or of any other nature are made hereunder with respect to information/specification 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.
TMCM-3351 TMCL™ Firmware Manual • Firmware Version V1.11 | Document Revision V1.06 • 2019-APR-26 11 11.1 Revision History Firmware Revision Version Date Author Description 1.07 2017-JUN-01 OK First release. 1.08 2017-JUL-24 OK stallGuard2 / coolStep fixed. 1.09 2017-DEC-01 OK Added axis parameters #50, #249 and #251. Added deviation checking. Added stop switch interrupts. 1.10 Not deployed. 1.11 2019-JAN-24 OK New TMCL commands supported.