Thorlabs APT Controllers Host-Controller Communications Protocol

Transcription

Thorlabs APT Controllers Host-Controller Communications Protocol
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Thorlabs APT Controllers
Host-Controller Communications Protocol
Date:
16 June -2015
Page 1 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Contents
Introduction............................................................................................................................... 9
Generic System Control Messages .......................................................................................... 19
Introduction............................................................................................................................. 19
MGMSG_MOD_IDENTIFY 0x0223 ........................................................................................ 20
MGMSG_MOD_SET_CHANENABLESTATE 0x0210 ............................................................... 21
MGMSG_MOD_REQ_CHANENABLESTATE 0x0211 .............................................................. 21
MGMSG_MOD_GET_CHANENABLESTATE 0x0212............................................................... 21
MGMSG_HW_DISCONNECT 0x0002 .................................................................................... 23
MGMSG_HW_RESPONSE 0x0080 ........................................................................................ 23
MGMSG_HW_RICHRESPONSE 0x0081................................................................................. 24
MGMSG_HW_START_UPDATEMSGS 0x0011 ...................................................................... 25
MGMSG_HW_STOP_UPDATEMSGS 0x0012 ........................................................................ 25
MGMSG_HW_REQ_INFO 0x0005......................................................................................... 26
MGMSG_HW_GET_INFO 0x0006 ......................................................................................... 26
MGMSG_RACK_REQ_BAYUSED 0x0060 ............................................................................... 28
MGMSG_RACK_GET_BAYUSED 0x0061 ............................................................................... 28
MGMSG_HUB_REQ_BAYUSED 0x0065 ................................................................................ 29
MGMSG_HUB_GET_BAYUSED 0x0066................................................................................. 29
MGMSG_RACK_REQ_STATUSBITS 0x0226........................................................................... 30
MGMSG_RACK_GET_STATUSBITS 0x0227 ........................................................................... 30
MGMSG_RACK_SET_DIGOUTPUTS 0x0228.......................................................................... 31
MGMSG_RACK_REQ_DIGOUTPUTS 0x0229......................................................................... 31
MGMSG_RACK_GET_DIGOUTPUTS 0x0230 ......................................................................... 31
MGMSG_MOD_SET_DIGOUTPUTS 0x0213 .......................................................................... 32
MGMSG_MOD_REQ_DIGOUTPUTS 0x0214 ......................................................................... 32
MGMSG_MOD_GET_DIGOUTPUTS 0x0215 ......................................................................... 32
Motor Control Messages ......................................................................................................... 33
Introduction............................................................................................................................. 33
MGMSG_HW_YES_FLASH_PROGRAMMING 0x0017 ........................................................... 35
MGMSG_HW_NO_FLASH_PROGRAMMING 0x0018 ........................................................... 35
MGMSG_MOT_SET_POSCOUNTER 0x0410 ......................................................................... 36
MGMSG_MOT_REQ_POSCOUNTER 0x0411 ........................................................................ 36
MGMSG_MOT_GET_POSCOUNTER 0x0412......................................................................... 36
MGMSG_MOT_SET_ENCCOUNTER 0x0409 ......................................................................... 37
MGMSG_MOT_REQ_ENCCOUNTER 0x040A ........................................................................ 37
MGMSG_MOT_GET_ENCCOUNTER 0x040B ........................................................................ 37
MGMSG_MOT_SET_VELPARAMS 0x0413 ............................................................................ 39
MGMSG_MOT_REQ_VELPARAMS 0x0414 ........................................................................... 39
MGMSG_MOT_GET_VELPARAMS 0x0415 ........................................................................... 39
MGMSG_MOT_SET_JOGPARAMS 0x0416 ........................................................................... 41
MGMSG_MOT_REQ_JOGPARAMS 0x0417 .......................................................................... 41
MGMSG_MOT_GET_JOGPARAMS 0x0418........................................................................... 41
MGMSG_MOT_REQ_ADCINPUTS 0x042B ............................................................................ 43
MGMSG_MOT_GET_ADCINPUTS 0x042C ............................................................................ 43
MGMSG_MOT_SET_POWERPARAMS 0x0426 ..................................................................... 44
Page 2 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_REQ_POWERPARAMS 0x0427 .................................................................... 44
MGMSG_MOT_GET_POWERPARAMS 0x0428..................................................................... 44
MGMSG_MOT_SET_GENMOVEPARAMS 0x043A ................................................................ 46
MGMSG_MOT_REQ_GENMOVEPARAMS 0x043B ............................................................... 46
MGMSG_MOT_GET_GENMOVEPARAMS 0x043C................................................................ 46
MGMSG_MOT_SET_MOVERELPARAMS 0x0445.................................................................. 47
MGMSG_MOT_REQ_MOVERELPARAMS 0x0446................................................................. 47
MGMSG_MOT_GET_MOVERELPARAMS 0x0447 ................................................................. 47
MGMSG_MOT_SET_MOVEABSPARAMS 0x0450 ................................................................. 48
MGMSG_MOT_REQ_MOVEABSPARAMS 0x0451 ................................................................ 48
MGMSG_MOT_GET_MOVEABSPARAMS 0x0452 ................................................................ 48
MGMSG_MOT_SET_HOMEPARAMS 0x0440 ....................................................................... 49
MGMSG_MOT_REQ_HOMEPARAMS 0x0441 ...................................................................... 49
MGMSG_MOT_GET_HOMEPARAMS 0x0442....................................................................... 49
MGMSG_MOT_SET_LIMSWITCHPARAMS 0x0423............................................................... 51
MGMSG_MOT_REQ_LIMSWITCHPARAMS 0x0424.............................................................. 51
MGMSG_MOT_GET_LIMSWITCHPARAMS 0x0425 .............................................................. 51
MGMSG_MOT_MOVE_HOME 0x0443 ................................................................................. 53
MGMSG_MOT_MOVE_HOMED 0x0444 .............................................................................. 53
MGMSG_MOT_MOVE_RELATIVE 0x0448 ............................................................................ 54
MGMSG_MOT_MOVE_COMPLETED 0x0464 ....................................................................... 56
MGMSG_MOT_MOVE_ABSOLUTE 0x0453 .......................................................................... 57
MGMSG_MOT_MOVE_JOG 0x046A..................................................................................... 59
MGMSG_MOT_MOVE_VELOCITY 0x0457 ............................................................................ 60
MGMSG_MOT_MOVE_STOP 0x0465 ................................................................................... 61
MGMSG_MOT_MOVE_STOPPED 0x0466 ............................................................................ 62
MGMSG_MOT_SET_BOWINDEX 0x04F4.............................................................................. 63
MGMSG_MOT_REQ_BOWINDEX 0x04F5 ............................................................................ 63
MGMSG_MOT_GET_BOWINDEX 0x04F6 ............................................................................. 63
MGMSG_MOT_SET_DCPIDPARAMS 0x04A0 ....................................................................... 66
MGMSG_MOT_REQ_DCPIDPARAMS 0x04A1 ...................................................................... 66
MGMSG_MOT_GET_DCPIDPARAMS 0x04A2....................................................................... 66
MGMSG_MOT_SET_AVMODES 0x04B3 ............................................................................... 68
MGMSG_MOT_REQ_AVMODES 0x04B4 .............................................................................. 68
MGMSG_MOT_GET_AVMODES 0x04B5 .............................................................................. 68
MGMSG_MOT_SET_POTPARAMS 0x04B0 ........................................................................... 70
MGMSG_MOT_REQ_POTPARAMS 0x04B1 .......................................................................... 70
MGMSG_MOT_GET_POTPARAMS 0x04B2 .......................................................................... 70
MGMSG_MOT_SET_BUTTONPARAMS 0x04B6 .................................................................... 73
MGMSG_MOT_REQ_BUTTONPARAMS 0x04B7................................................................... 73
MGMSG_MOT_GET_BUTTONPARAMS 0x04B8 ................................................................... 73
MGMSG_MOT_SET_EEPROMPARAMS 0x04B9 ................................................................... 75
MGMSG_MOT_SET_PMDPOSITIONLOOPPARAMS 0x04D7................................................. 76
MGMSG_MOT_REQ_PMDPOSITIONLOOPPARAMS 0x04D8................................................ 76
MGMSG_MOT_GET_PMDPOSITIONLOOPPARAMS 0x04D9 ................................................ 76
MGMSG_MOT_SET_PMDMOTOROUTPUTPARAMS 0x04DA............................................... 79
MGMSG_MOT_REQ_PMDMOTOROUTPUTPARAMS 0x04DB.............................................. 79
MGMSG_MOT_GET_PMDMOTOROUTPUTPARAMS 0x04DC .............................................. 79
MGMSG_MOT_SET_PMDTRACKSETTLEPARAMS 0x04E0 .................................................... 81
MGMSG_MOT_REQ_PMDTRACKSETTLEPARAMS 0x04E1 ................................................... 81
MGMSG_MOT_GET_PMDTRACKSETTLEPARAMS 0x04E2 ................................................... 81
Page 3 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_SET_PMDPROFILEMODEPARAMS 0x04E3 .................................................. 84
MGMSG_MOT_REQ_PMDPROFILEMODEPARAMS 0x04E4 ................................................. 84
MGMSG_MOT_GET_PMDPROFILEMODEPARAMS 0x04E5 ................................................. 84
MGMSG_MOT_SET_PMDJOYSTICKPARAMS 0x04E6 ........................................................... 86
MGMSG_MOT_REQ_PMDJOYSTICKPARAMS 0x04E7 .......................................................... 86
MGMSG_MOT_GET_PMDJOYSTICKPARAMS 0x04E8 .......................................................... 86
MGMSG_MOT_SET_PMDCURRENTLOOPPARAMS 0x04D4 ................................................. 88
MGMSG_MOT_REQ_PMDCURRENTLOOPPARAMS 0x04D5 ................................................ 88
MGMSG_MOT_GET_PMDCURRENTLOOPPARAMS 0x04D6 ................................................ 88
MGMSG_MOT_SET_PMDSETTLEDCURRENTLOOPPARAMS 0x04E9.................................... 90
MGMSG_MOT_REQ_PMDSETTLEDCURRENTLOOPPARAMS 0x04EA .................................. 90
MGMSG_MOT_GET_PMDSETTLEDCURRENTLOOPPARAMS 0x04EB ................................... 90
MGMSG_MOT_SET_PMDSTAGEAXISPARAMS 0x04F0 ........................................................ 92
MGMSG_MOT_REQ_PMDSTAGEAXISPARAMS 0x04F1 ....................................................... 92
MGMSG_MOT_GET_PMDSTAGEAXISPARAMS 0x04F2........................................................ 92
MGMSG_MOT_SET_TSTACTUATORTYPE 0x04FE ................................................................ 94
MGMSG_MOT_GET_STATUSUPDATE 0x0481 ..................................................................... 95
MGMSG_MOT_REQ_STATUSUPDATE 0x0480 ..................................................................... 96
MGMSG_MOT_GET_DCSTATUSUPDATE 0x0491 ................................................................. 97
MGMSG_MOT_REQ_DCSTATUSUPDATE 0x0490 ................................................................ 98
MGMSG_MOT_ACK_DCSTATUSUPDATE 0x0492 ................................................................. 98
MGMSG_ MOT_REQ_STATUSBITS 0x0429 .......................................................................... 99
MGMSG_ MOT_GET_STATUSBITS 0x042A........................................................................... 99
MGMSG_ MOT_SUSPEND_ENDOFMOVEMSGS 0x046B .................................................... 100
MGMSG_ MOT_RESUME_ENDOFMOVEMSGS 0x046C ..................................................... 101
MGMSG_MOT_SET_TRIGGER 0x0500................................................................................ 102
MGMSG_MOT_REQ_TRIGGER 0x0501 .............................................................................. 102
MGMSG_MOT_GET_TRIGGER 0x0502 ............................................................................... 102
Filter Flipper Control Messages ............................................................................................. 105
Introduction........................................................................................................................... 105
MGMSG_MOT_SET_MFF_OPERPARAMS 0x0510 .............................................................. 106
MGMSG_MOT_REQ_MFF_OPERPARAMS 0x0511 ............................................................. 106
MGMSG_MOT_GET_MFF_OPERPARAMS 0x0512 ............................................................. 106
Solenoid Control Messages ................................................................................................... 110
Introduction........................................................................................................................... 110
MGMSG_MOT_SET_SOL_OPERATINGMODE 0x04C0 ........................................................ 111
MGMSG_MOT_REQ_SOL_OPERATINGMODE 0x04C1 ....................................................... 111
MGMSG_MOT_GET_SOL_OPERATINGMODE 0x04C2 ....................................................... 111
MGMSG_MOT_SET_SOL_CYCLEPARAMS 0x04C3.............................................................. 113
MGMSG_MOT_REQ_SOL_CYCLEPARAMS 0x04C4............................................................. 113
MGMSG_MOT_GET_SOL_CYCLEPARAMS 0x04C5 ............................................................. 113
MGMSG_MOT_SET_SOL_INTERLOCKMODE 0x04C6 ......................................................... 115
MGMSG_MOT_REQ_SOL_INTERLOCKMODE 0x04C7 ........................................................ 115
MGMSG_MOT_GET_SOL_INTERLOCKMODE 0x04C8 ........................................................ 115
MGMSG_MOT_SET_SOL_STATE 0x04CB ........................................................................... 117
MGMSG_MOT_REQ_SOL_STATE 0x04CC .......................................................................... 117
MGMSG_MOT_GET_SOL_STATE 0x04CD .......................................................................... 117
Page 4 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Piezo Control Messages......................................................................................................... 119
Introduction........................................................................................................................... 119
MGMSG_PZ_SET_POSCONTROLMODE 0x0640 ................................................................. 120
MGMSG_PZ_REQ_POSCONTROLMODE 0x0641 ................................................................ 120
MGMSG_PZ_GET_POSCONTROLMODE 0x0642 ................................................................ 120
MGMSG_PZ_SET_OUTPUTVOLTS 0x0643 .......................................................................... 122
MGMSG_PZ_REQ_OUTPUTVOLTS 0x0644 ......................................................................... 122
MGMSG_PZ_GET_OUTPUTVOLTS 0x0645 ......................................................................... 122
MGMSG_PZ_SET_OUTPUTPOS 0x0646.............................................................................. 123
MGMSG_PZ_REQ_OUTPUTPOS 0x0647............................................................................. 123
MGMSG_PZ_GET_OUTPUTPOS 0x0648 ............................................................................. 123
MGMSG_PZ_SET_INPUTVOLTSSRC 0x0652 ....................................................................... 124
MGMSG_PZ_REQ_INPUTVOLTSSRC 0x0653 ...................................................................... 124
MGMSG_PZ_GET_INPUTVOLTSSRC 0x0654....................................................................... 124
MGMSG_PZ_SET_PICONSTS 0x0655 .................................................................................. 126
MGMSG_PZ_REQ_PICONSTS 0x0656 ................................................................................. 126
MGMSG_PZ_GET_PICONSTS 0x0657 ................................................................................. 126
MGMSG_PZ_REQ_PZSTATUSBITS 0x065B ......................................................................... 127
MGMSG_PZ_GET_PZSTATUSBITS 0x065C .......................................................................... 127
MGMSG_PZ_GET_PZSTATUSUPDATE 0x0661.................................................................... 129
MGMSG_PZ_ACK_PZSTATUSUPDATE 0x0662 ................................................................... 131
MGMSG_PZ_SET_OUTPUTLUT 0x0700 .............................................................................. 132
MGMSG_PZ_REQ_OUTPUTLUT 0x0701 ............................................................................. 132
MGMSG_PZ_GET_OUTPUTLUT 0x0702 ............................................................................. 132
MGMSG_PZ_SET_OUTPUTLUTPARAMS 0x0703 ................................................................ 134
MGMSG_PZ_REQ_OUTPUTLUTPARAMS 0x0704 ............................................................... 134
MGMSG_PZ_GET_OUTPUTLUTPARAMS 0x0705 ............................................................... 134
MGMSG_PZ_START_LUTOUTPUT 0x0706 ......................................................................... 138
MGMSG_PZ_STOP_LUTOUTPUT 0x0707 ........................................................................... 138
MGMSG_PZ_SET_EEPROMPARAMS 0x07D0 ..................................................................... 139
MGMSG_PZ_SET_TPZ_DISPSETTINGS 0x07D1................................................................... 140
MGMSG_PZ_REQ_TPZ_DISPSETTINGS 0x07D2.................................................................. 140
MGMSG_PZ_GET_TPZ_DISPSETTINGS 0x07D3 .................................................................. 140
MGMSG_PZ_SET_TPZ_IOSETTINGS 0x07D4 ...................................................................... 141
MGMSG_PZ_REQ_TPZ_IOSETTINGS 0x07D5 ..................................................................... 141
MGMSG_PZ_GET_TPZ_IOSETTINGS 0x07D6...................................................................... 141
MGMSG_PZ_SET_ZERO 0x0658 ......................................................................................... 143
MGMSG_PZ_REQ_MAXTRAVEL 0x0650 ............................................................................. 144
MGMSG_PZ_GET_MAXTRAVEL 0x0651 ............................................................................. 144
MGMSG_PZ_SET_IOSETTINGS 0x0670............................................................................... 145
MGMSG_PZ_REQ_IOSETTINGS 0x0671.............................................................................. 145
MGMSG_PZ_GET_IOSETTINGS 0x0672 .............................................................................. 145
MGMSG_PZ_SET_OUTPUTMAXVOLTS 0x0680 .................................................................. 147
MGMSG_PZ_REQ_OUTPUTMAXVOLTS 0x0681 ................................................................. 147
MGMSG_PZ_GET_OUTPUTMAXVOLTS 0x0682 ................................................................. 147
MGMSG_PZ_SET_TPZ_SLEWRATES 0x0683 ....................................................................... 149
MGMSG_PZ_REQ_TPZ_SLEWRATES 0x0684 ...................................................................... 149
MGMSG_PZ_GET_TPZ_SLEWRATES 0x0685 ...................................................................... 149
MGMSG_MOT_SET_PZSTAGEPARAMDEFAULTS 0x0686................................................... 151
MGMSG_PZ_SET_LUTVALUETYPE: 0x0708 ........................................................................ 152
MGMSG_PZ_SET_TSG_IOSETTINGS 0x07DA...................................................................... 153
Page 5 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_REQ_TSG_IOSETTINGS 0x07DB ..................................................................... 153
MGMSG_PZ_GET_TSG_IOSETTINGS 0x07DC ..................................................................... 153
MGMSG_PZ_REQ_TSG_READING 0x07DD......................................................................... 155
MGMSG_PZ_GET_TSG_READING 0x07DE.......................................................................... 155
NanoTrak Control Messages ................................................................................................. 156
Introduction........................................................................................................................... 156
MGMSG_PZ_SET_NTMODE 0x0603 ................................................................................... 157
MGMSG_PZ_REQ_NTMODE 0x0604 .................................................................................. 158
MGMSG_PZ_GET_NTMODE 0x0605 .................................................................................. 158
MGMSG_PZ_SET_NTTRACKTHRESHOLD 0x0606 ............................................................... 159
MGMSG_PZ_REQ_NTTRACKTHRESHOLD 0x0607 .............................................................. 159
MGMSG_PZ_GET_NTTRACKTHRESHOLD 0x0608 .............................................................. 159
MGMSG_PZ_SET_NTCIRCHOMEPOS 0x0609 ..................................................................... 160
MGMSG_PZ_REQ_NTCIRCHOMEPOS 0x0610 .................................................................... 160
MGMSG_PZ_GET_NTCIRCHOMEPOS 0x0611 .................................................................... 160
MGMSG_PZ_MOVE_NTCIRCTOHOMEPOS 0x0612 ............................................................ 161
MGMSG_PZ_REQ_NTCIRCCENTREPOS 0x0613.................................................................. 162
MGMSG_PZ_GET_NTCIRCCENTREPOS 0x0614 .................................................................. 162
MGMSG_PZ_SET_NTCIRCPARAMS 0x0618 ........................................................................ 164
MGMSG_PZ_REQ_NTCIRCPARAMS 0x0619 ....................................................................... 164
MGMSG_PZ_GET_NTCIRCPARAMS 0x0620 ....................................................................... 164
MGMSG_PZ_SET_NTCIRCDIA 0x061A ................................................................................ 167
MGMSG_PZ_SET_NTCIRCDIALUT 0x0621 .......................................................................... 168
MGMSG_PZ_REQ_NTCIRCDIALUT 0x0622 ......................................................................... 168
MGMSG_PZ_GET_NTCIRCDIALUT 0x0623 ......................................................................... 168
MGMSG_PZ_SET_NTPHASECOMPPARAMS 0x0626 .......................................................... 170
MGMSG_PZ_REQ_NTPHASECOMPPARAMS 0x0627 ......................................................... 170
MGMSG_PZ_GET_NTPHASECOMPPARAMS 0x0628 .......................................................... 170
MGMSG_PZ_SET_NTTIARANGEPARAMS 0x0630 .............................................................. 172
MGMSG_PZ_REQ_NTTIARANGEPARAMS 0x0631 ............................................................. 172
MGMSG_PZ_GET_NTTIARANGEPARAMS 0x0632 .............................................................. 172
MGMSG_PZ_SET_NTGAINPARAMS 0x0633 ....................................................................... 175
MGMSG_PZ_REQ_NTGAINPARAMS 0x0634 ...................................................................... 175
MGMSG_PZ_GET_NTGAINPARAMS 0x0635 ...................................................................... 175
MGMSG_PZ_SET_NTTIALPFILTERPARAMS 0x0636 ............................................................ 176
MGMSG_PZ_REQ_NTTIALPFILTERPARAMS 0x0637........................................................... 176
MGMSG_PZ_GET_NTTIALPFILTERPARAMS 0x0638 ........................................................... 176
MGMSG_PZ_REQ_NTTIAREADING 0x0639 ........................................................................ 178
MGMSG_PZ_GET_NTTIAREADING 0x063A ........................................................................ 178
MGMSG_PZ_SET_NTFEEDBACKSRC 0x063B ...................................................................... 180
MGMSG_PZ_REQ_NTFEEDBACKSRC 0x063C ..................................................................... 180
MGMSG_PZ_GET_NTFEEDBACKSRC 0x063D ..................................................................... 180
MGMSG_PZ_REQ_NTSTATUSBITS 0x063E ......................................................................... 182
MGMSG_PZ_GET_NTSTATUSBITS 0x063F ......................................................................... 182
MGMSG_PZ_REQ_NTSTATUSUPDATE 0x0664................................................................... 184
MGMSG_PZ_GET_NTSTATUSUPDATE 0x0665 ................................................................... 184
MGMSG_PZ_ACK_NTSTATUSUPDATE 0x0666 ................................................................... 188
MGMSG_NT_SET_EEPROMPARAMS 0x07E7 ..................................................................... 189
MGMSG_NT_SET_TNA_DISPSETTINGS 0x07E8.................................................................. 190
MGMSG_NT_REQ_TNA_DISPSETTINGS 0x07E9................................................................. 190
Page 6 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_NT_GET_TNA_DISPSETTINGS 0x07EA................................................................. 190
MGMSG_NT_SET_TNAIOSETTINGS 0x07EB ....................................................................... 191
MGMSG_NT_REQ_TNAIOSETTINGS 0x07EC ...................................................................... 191
MGMSG_NT_GET_TNAIOSETTINGS 0x07ED ...................................................................... 191
Laser Control Messages ......................................................................................................... 193
Introduction........................................................................................................................... 193
MGMSG_LA_SET_PARAMS 0x0800 .................................................................................... 194
MGMSG_LA_REQ_PARAMS 0x0801................................................................................... 194
MGMSG_LA_GET_PARAMS 0x0802 ................................................................................... 194
MGMSG_LA_SET_EEPROMPARAMS 0x0810...................................................................... 201
MGMSG_LA_ENABLEOUTPUT 0x0811 ............................................................................... 202
MGMSG_LA_DISABLEOUTPUT 0x0812 .............................................................................. 202
MGMSG_LA_REQ_STATUSUPDATE 0x0820 ....................................................................... 203
MGMSG_LA_GET_STATUSUPDATE 0x0821 ....................................................................... 203
MGMSG_LA_ACK_STATUSUPDATE 0x0822 ....................................................................... 205
Quad Control Messages ........................................................................................................ 206
Introduction........................................................................................................................... 206
MGMSG_QUAD_SET_PARAMS 0x0870 .............................................................................. 207
MGMSG_QUAD_REQ_PARAMS 0x0871............................................................................. 207
MGMSG_QUAD_GET_PARAMS 0x0872 ............................................................................. 207
MGMSG_QUAD_REQ_STATUSUPDATE 0x0880 ................................................................. 224
MGMSG_ QUAD_GET_STATUSUPDATE 0x0881 ................................................................ 224
MGMSG_QUAD_ACK_STATUSUPDATE 0x0882 ................................................................. 225
MGMSG_QUAD_SET_EEPROMPARAMS 0x0875................................................................ 226
TEC Control Messages ........................................................................................................... 227
Introduction........................................................................................................................... 227
MGMSG_TEC_SET_PARAMS 0x0840.................................................................................. 228
MGMSG_TEC_REQ_PARAMS 0x0841................................................................................. 228
MGMSG_TEC_GET_PARAMS 0x0842 ................................................................................. 228
MGMSG_TEC_SET_EEPROMPARAMS 0x0850 ................................................................... 239
MGMSG_TEC_REQ_STATUSUPDATE 0x0860 ..................................................................... 240
MGMSG_ TEC_GET_STATUSUPDATE 0x0861 .................................................................... 240
MGMSG_TEC_ACK_STATUSUPDATE 0x0862 ..................................................................... 241
Message Cross Reference by Unit Part Number ................................................................... 243
Messages Applicable to BPC20x Series ................................................................................. 244
Messages Applicable to BPC30x Series ................................................................................. 245
Messages Applicable to TPZ001 ............................................................................................ 246
Messages Applicable to TSG001 ............................................................................................ 247
Messages Applicable to MPZ601........................................................................................... 248
Messages Applicable to TDC001 ........................................................................................... 249
Messages Applicable to TSC001 ............................................................................................ 251
Messages Applicable to TST001 and TST101......................................................................... 252
Messages Applicable to TST101 ............................................................................................ 253
Messages Applicable to BSC10x and BSC20x ........................................................................ 254
Messages Applicable to LTS150 and LTS300 ......................................................................... 256
Messages Applicable to MLJ050............................................................................................ 257
Messages Applicable to MFF101 and MFF102 ...................................................................... 258
Page 7 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Messages Applicable to BBD10x, BBD20x and TBD001......................................................... 259
Messages Applicable to BNT001, MNA601 and TNA001 ...................................................... 261
Messages Applicable to TLS001............................................................................................. 263
Messages Applicable to TQD001 and TPA101....................................................................... 264
Messages Applicable to TPA101 Only ................................................................................... 264
Messages Applicable to TTC001 ............................................................................................ 264
Page 8 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Introduction
1. Purpose and Scope
This document describes the low-level communications protocol and commands used
between the host PC and controller units within the APT family. The information contained
in this document is intended to help third party system developers to write their own
applications to interface to the Thorlabs range of controllers without the constraints of using
a particular operating system or hardware platform. The commands described here are
those which are necessary to control movement; there is an additional set of commands,
used for calibration or test, which will not be detailed as these are not required for the
external system developer.
2. Electrical interface
The APT family of controllers provides a USB and an RS-232 interface to communicate with
the host PC. The communications protocol is identical in both cases but developers wishing
to use the USB interface should be aware of the USB enumeration scheme used in the
system.
2.1 USB Interface
The electrical interface within the APT controllers uses a Future Technology Devices
International (FTDI), type FT232BM USB peripheral chip to communicate with the host PC.
This is a USB2.0 compliant USB1.1 device. This USB interfacing chip provides a serial port
interface to the embedded system (i.e. APT controller) and USB interface to the host control
PC. While the overall communications protocol is independent of the transport layer (for
example, Ethernet or serial communications could also be used to carry commands from the
host to the controller), the initial enumeration scheme described below is specific to the USB
environment.
FTDI supply device drivers and interfacing libraries (for Windows, Linux and other platforms)
used to access the USB chip. Before any PC USB communication can be established with an
APT controller, the client program is required to set up the necessary FTDI chip serial port
settings used to communicate to the APT controller embedded system. Within the APT
software itself the following FTDI library calls are made to set up the USB chip serial port for
each APT USB device enumerated on the bus:// Set baud rate to 115200.
ftStatus = FT_SetBaudRate(m_hFTDevice, (ULONG)uBaudRate);
// 8 data bits, 1 stop bit, no parity
ftStatus = FT_SetDataCharacteristics(m_hFTDevice, FT_BITS_8, FT_STOP_BITS_1,
FT_PARITY_NONE);
// Pre purge dwell 50ms.
Sleep(uPrePurgeDwell);
// Purge the device.
ftStatus = FT_Purge(m_hFTDevice, FT_PURGE_RX | FT_PURGE_TX);
// Post purge dwell 50ms.
Sleep(uPostPurgeDwell);
Page 9 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
// Reset device.
ftStatus = FT_ResetDevice(m_hFTDevice);
// Set flow control to RTS/CTS.
ftStatus = FT_SetFlowControl(m_hFTDevice, FT_FLOW_RTS_CTS, 0, 0);
// Set RTS.
ftStatus = FT_SetRts(m_hFTDevice);
2.2 USB Device Enumeration
The APT Server PC software supplied is designed to work with a number of different types of
controller. The purpose of the enumeration phase is for the host to establish what devices
are present in the system and initialise the GUI accordingly. Initially this is done by
enumerating the USB devices connected to the system and reading the serial number
information contained in the USB device descriptor.
For the Thorlabs range of controllers, this serial number is an 8-digit decimal number. The
first two digits (referred to as the prefix) describe the type of controller, while the rest of the
digits make up a unique serial number. By extracting the prefix, the host can therefore
establish what type of hardware is connected to the system.
In most cases, specifically with benchtop controllers, the USB serial number contains
sufficient information for the host to know the exact type of hardware is connected. There is
a range of other controller products where several controller cards (without their own
individual USB peripheral chip) can be plugged into a motherboard and it is only the
motherboard that has USB connectivity. These are generally referred to as a card slot (or
bay) type of system (for example, the BSC103 controller). In these systems, a second
enumeration state is carried out; however, this second state is done within the protocol
framework that will be detailed in this document.
For the controller types, the USB prefixes can be the following:
USB S/N
Type of product
Thorlabs code
20xxxxxx
25xxxxxx
30xxxxxx
35xxxxxx
40xxxxxx
60xxxxxx
63xxxxxx
70xxxxxx
80xxxxxx
83xxxxxx
73xxxxxx
94xxxxxx
Legacy single channel stepper driver
Legacy single channel mini stepper driver
Legacy dual channel stepper driver
Legacy dual channel mini stepper driver
Single channel stepper driver
OptoSTDriver (mini stepper driver)
OptoDCDriver (mini DC servo driver)
Three channel card slot stepper driver
Stepper Driver T-Cube
DC servo driver T-Cube
Brushless DC motherboard
Brushless DC motor card
BSC001
BMS001
BSC002
BMS002
BSC101
OST001
ODC001
BSC103
TST001
TDC001
BBD102/BBD103
BBD102/BBD103
Of these listed above, currently only the BSC103 (serial number prefix 70) and the BBD10x
are card slot type of controllers.
Page 10 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
2.3 RS-232 Interface
The RS-232 interface uses the 9-way D-Type male connector on the rear panel, marked
‘INTERCONNECT’. Communications parameters are fixed at:
• 115200 bits/sec
• 8 data bits, 1 stop bit
• No parity
• No handshake
By nature, the RS-232 interface provides point-to-point communications, and therefore
there is no device enumeration as there is with USB based communications.
3. Overview of the Communications Protocol
The communications protocol used in the Thorlabs controllers is based on the message
structure that always starts with a fixed length, 6-byte message header which, in some
cases, is followed by a variable length data packet. For simple commands, the 6-byte
message header is sufficient to convey the entire command. For more complex commands,
for example, when a set of parameters needs to be passed on, the 6 byte header is not
enough and in this case the header is followed by the data packet.
The header part of the message always contains information that indicates whether or not a
data packet follows the header and if so, the number of bytes that the data packet contains.
In this way the receiving process is able to keep tracks of the beginning and the end of
messages.
Note that in the section below describing the various byte sequences, the C-type of notation
will be used for hexadecimal values (e.g. 0x55 means 55 hexadecimal) and logical operators
(e.g. | means logic bitwise OR). Values that are longer than a byte follow the Intel littleendian format.
4. Description of the message header
The 6 bytes in the message header are shown below:
Byte:
Meaning if no data
packet to follow
Meaning if data packet
to follow
byte 0
byte 1
message ID
message ID
byte 2
param1
byte 3
param2
byte 4
dest
byte 5
source
data packet length
dest |
0x80
source
The meaning of some of the fields depends on whether or not the message is followed by a
data packet. This is indicated by the most significant bit in byte 4, called the destination
byte, therefore the receiving process must first check if the MSB of byte 4 is set.
If this bit is not set, then the message is a header-only message and the interpretation of the
bytes is as follows:
message ID:
param1:
describes what the action the message requests
first parameter (if the command requires a parameter, otherwise 0)
Page 11 of 265
Thorlabs APT Controllers
param2:
dest:
source:
Host-Controller Communications Protocol
Issue 15
second parameter (if the command requires a parameter, otherwise 0)
the destination module
the source of the message
The meaning of the source and destination bytes will be detailed later.
If the MSB of byte 4 is set, then the message will be followed by a data packet and the
interpretation of the header is the following:
message ID:
datapacket length:
dest: | 0x80
source:
describes what the action the message requests
number of bytes to follow after header
Note: although this is a 2-byte long field, currently no datapacket
exceeds 255 bytes in length.
the destination module logic OR’d with 0x80 (noted by d|)
the source of the data
The source and destination fields require some further explanation. In general, as the name
suggests, they are used to indicate the source and destination of the message. In non-cardslot type of systems the source and destination of messages is always unambiguous, as each
module appears as a separate USB node in the system. In these systems, when the host
sends a message to the module, it uses the source identification byte of 0x01 (meaning host)
and the destination byte of 0x50 (meaning “generic USB unit”). (In messages that the
module sends back to the host, the content of the source and destination bytes is swapped.)
In card-slot (bay) type of systems, there is only one USB node for a number of sub-modules,
so this simple scheme cannot be used. Instead, the host sends a message to the
motherboard that the sub-modules are plugged into, with the destination field of each
message indicating which slot the message must be routed to. Likewise, when the host
receives a message from a particular sub-module, it knows from the source byte which slot
is the origin of the message – see Fig below.
Page 12 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Numerically, the following values are currently used for the source and destination bytes:
0x01
0x11
0x21
0x22
0x23
0x24
0x25
0x26
…
0x2A
0x50
Host controller (i.e control PC)
Rack controller, motherboard in a card slot system or
comms router board
Bay 0 in a card slot system
Bay 1 in a card slot system
etc.
etc.
etc.
etc.
Bay 9 in a card slot system
Generic USB hardware unit
In slot-type systems the host can also send messages to the motherboard that the submodules are plugged into (destination byte = 0x11). In fact, as a very first step in the
communications process, the host must send a message to the motherboard to find out
which slots are used in the system.
Note that although in theory this scheme would allow communication between individual
sub-modules (the source of the message could be a sub-module and the destination another
one), current systems do not use this option.
Page 13 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
5. General message exchange rules
The type of messages used in the communications exchange between the host and the submodules can be divided into 4 general categories:
(a) Host issues a command, sub-module carries out the command without
acknowledgement (i.e. no response is sent back to the host).
Typically, these are commands which require no information from the sub-module, for
example setting the digital outputs to a particular state.
(b) Host issues a command (message request) and the sub-module responds by sending
data back to the host.
For example, the host may request the sub-module to report the state of the digital inputs.
(c) Following a command from the host, the sub-module periodically sends a message to
the host without further prompting.
These messages are referred to as status update messages. These are typically sent
automatically every 100 msec from the sub-module to the host, showing, amongst other
things, the position of the stage the controller is connected to. The meters on the APT User
GUI rely on these messages to show the up-to-date status of the stage.
(d) Rarely – error messages, exceptions. These are spontaneously issued by the sub-module
if some error occurs. For example, if the power supply fails in the sub-module, a
message is sent to the host PC to inform the user.
Apart from the last two categories (status update messages and error messages), in general
the message exchanges follow the SET -> REQUEST -> GET pattern, i.e. for most commands a
trio of messages are defined. The SET part of the trio is used by the host (or, sometimes in
card-slot systems the motherboard) to set some parameter or other. If then the host
requires some information from the sub-module, then it may send a REQUEST for this
information, and the sub-module responds with the GET part of the command. Obviously,
there are cases when this general scheme does not apply and some part of this message trio
is not defined. For consistency, in the description of the messages this SET->REQUEST->GET
scheme will be used throughout.
Note that, as the scheme suggests, this is a master-slave type of system, so sub-modules
never send SET and REQUEST messages to the host and GET messages are always sent to the
host as a destination.
In all messages, where a parameter is longer than a single character, the bytes are encoded
in the Intel format, least significant byte first.
Page 14 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
6. Format Specifiers
format
word
short
dword
long
char
char[N]
encoding
Unsigned 16 bit integer (2 bytes) in the Intel (little-endian) format
for example decimal 12345 (3039H) is encoded as the byte sequence 39, 30
Signed 16 bit integer (2 bytes) in 2’s compliment format
for example decimal -1 is encoded as the byte sequence FF, FF
Unsigned 32 bit integer (4 bytes) in the Intel (little-endian) format
for example decimal 123456789 (75BCD15H) is encoded as the byte
sequence 15, CD, 5B, 07
Signed 32 bit integer (4 bytes) in 2’s compliment format
for example decimal -1 is encoded as the byte sequence FF, FF
4 bytes in the Intel (little-endian) format
for example decimal -123456789 (FFFFFFFFF8A432EBH) is encoded as the
byte sequence EB, 32, A4, F8,
1 byte (2 digits)
string of N characters
7. Single Precision Floating Point Format
Single-precision floating-point format is a computer number format that occupies 4 bytes
(32 bits) in computer memory and represents a wide dynamic range of values by using a
floating point.
Where message parameters use floating point variables, the system uses the IEEE 754
standard.
8. Conversion between position, velocity and acceleration values in standard physical
units and their equivalent APT parameters.
To convert between the position and encoder counters in the stage being driven, and real
world units, (e.g. mm) the system uses certain conversion (scaling) factors. These conversion
factors differ depending on the stage being driven and the controller being used.
Background
The principle described below is the same for all APT motion stepper and brushed or
brushless DC controllers and stages, but the individual distance and time conversion factors
will be typically different for each stage and/or controller.
In real life, the physical units needed to describe position, velocity and acceleration are
related to position and time measurement units (millimetres/degrees and seconds). In
motion controllers, however, normally the system only knows the distance travelled in
encoder counts (pulses) as measured by an encoder fitted to the motor shaft. In most cases
the motor shaft rotation is also scaled down further by a gearbox and a leadscrew. In any
case, the result is a scaling factor between encoder counts and position. The value of this
scaling factor depends on the stage. In the section below this scaling factor will be
represented by the symbol EncCnt.
Time is related to the sampling interval of the system, and as a result, it depends on the
motion controller. Therefore, this value is the same for all stages driven by a particular
controller. In the sections below the sampling interval will be denoted by T.
The sections below describe the position, velocity and acceleration scaling factors for all the
controllers and stages that are used with these controllers. The symbols POSAPT, VELAPT and
ACCAPT are used to denote the position, velocity and acceleration values used in APT
commands, whereas the symbols Pos, Vel and Acc denote physical position, velocity and
Page 15 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
acceleration values in mm, mm/sec and mm/sec2 units for linear stages and degree,
degree/sec and degree/sec2 for rotational stages.
As APT parameters are integer values, the APT values calculated from the equations need to
be rounded to the nearest integer.
Brushed DC Controller (TDC001) driven stages
Mathematically:
POSAPT = EncCnt × Pos
VELAPT = EncCnt × T × 65536 × Vel
ACCAPT = EncCnt × T2 × 65536 × Acc
where T = 2048 / 6 × 106
The value of EncCnt and the resulting conversion factors are listed below for each stage:
Stage
EncCnt
Scaling Factor
Position
Velocity
Acceleration
MTS25-Z8
34304
34304
767367.49
261.93
MTS50-Z8
34304
34304
767367.49
261.93
PRM1-Z8
1919.64
1919.64
42941.66
14.66
Z8xx
34304
34304
767367.49
261.93
Z6xx
24600
24600
550292.68
187.83
Brushless DC Controller (TBD001, BBD10X and BBD20X) driven stages
Mathematically:
POSAPT = EncCnt × Pos
VELAPT = EncCnt × T × 65536 × Vel
ACCAPT = EncCnt × T2 × 65536 × Acc
where T = 102.4 × 10-6
The value of EncCnt and the resulting conversion factors are listed below for each stage:
Stage
EncCnt
Scaling Factor
Position
Velocity
Acceleration
DDSM100
2000
2000
13421.77
1.374
DDS220
20000
20000
134217.73
13.744
DDS300
20000
20000
134217.73
13.744
DDS600
20000
20000
134217.73
13.744
MLS203
20000
20000
134217.73
13.744
Page 16 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Stepper Motor Controller (TST001 BSC00x, BSC10x, MST601) Driven Stages
For these stepper controllers the server sends absolute micro-steps to the controllers.
Depending on the stage and the stepper motor concerned there are different micro step
values required to move either a linear distance in millimetres or a rotational distance in
degrees.
In general for 200 full step motors (the majority of our motors) the above range of stepper
controllers is designed to insert 128 micro steps for every full step of the stepper.
So for a 200 full step motor the number of micro steps per full turn is defined as follows
Full turn micro steps = Motor full steps per turn x Number of Micro steps per full step
For a 200 full step motor this is given by :Full turn micro steps = 200 x 128 = 25600
Each stage can either be a direct drive or driven through a gear box. The table below
indicates the relationship between absolute micro steps and a positional output in
millimetres or degrees
This table is relevant for the range of controllers listed above. Note that micro step values
are for a position is 1mm, a velocity of 1mm/sec and an acceleration of 1mm/sec/sec
Stage
Gearing
Position
Micro Step Values
Position(µs) Velocity(µs/sec) Acceleration(µs/sec2)
DRV001
0.5mm/turn
1mm
51200
51200
51200
DRV013
1mm/turn
1mm
25600
25600
25600
DRV014
1mm/turn
1mm
25600
25600
25600
NRT100
1mm/turn
1mm
25600
25600
25600
NRT150
1mm/turn
1mm
25600
25600
25600
LTS150
1mm/turn
1mm
25600
25600
25600
LTS300
1mm/turn
1mm
25600
25600
25600
DRV113
1.25mm/turn
1mm
20480
20480
20480
DRV114
1.25mm/turn
1mm
20480
20480
20480
FW103*
No gear
0.998deg
71
71
71
NR360**
5.4546deg/turn
0.999deg
4693
4693
4693
*Note that there is no exact value of micro steps to get to exactly 1 degree this is because 1
turn represents 360 degrees which is 25600 micro steps. So actual resolution is
360/25600 = 0.0140625 degrees per micro step.
**Note that there is no exact value of micro steps to get to exactly 1 degree this is because 1
turn represents 5.4546 degrees which is 25600 micro steps. So actual resolution is
5.4546/25600 = 0.0002131 degrees
Page 17 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Stepper Motor Controller (BSC20x, MST602) Driven Stages
The BSC20x series and MST602 stepper controllers include a Trinamics encoder with a
resolution of 409600 micro-steps per revolution.
This table is relevant only for the Trinamic-based range of controllers listed above. Note that
micro step values are for a position is 1mm, a velocity of 1mm/sec and an acceleration of
1mm/sec/sec
Or in degrees, deg/sec or deg/sec/sec
Stage
Gearing
Position
Trinamic converted Values
Position(µs) Velocity(µs/sec) Acceleration(µs/sec2)
DRV001
0.5mm/turn
1mm
819200
43974656
9012
DRV013
1mm/turn
1mm
409600
21987328
4506
DRV014
1mm/turn
1mm
409600
21987328
4506
NRT100
1mm/turn
1mm
409600
21987328
4506
NRT150
1mm/turn
1mm
409600
21987328
4506
LTS150
1mm/turn
1mm
409600
21987328
4506
LTS300
1mm/turn
1mm
409600
21987328
4506
MLJ050
1mm/turn
1mm
409600
21987328
4506
DRV113
1.25mm/turn
1mm
327680
17589862
3605
DRV114
1.25mm/turn
1mm
327680
17589862
3605
FW103*
No gear
1.0002deg
1138
61088
13
NR360**
5.4546deg/turn 0.99997deg
75091
4030885
826
In the above table the numbers that need to be sent to the controllers are based upon the
Trinamics chip set conversions. The position is just the absolute number of micro-steps as
before, as compared with the BSC10X range, the only difference is the 16 times greater
resolution. However for velocity and acceleration now need different conversion factors to
get to correct motion profiles. For example, if a velocity of 409600 micro-steps per sec is
required, then multiply by 53.68 i.e. 409600*53.68 gives 21987328 which for a 1mm lead
screw would give 1mm/sec.
To accelerate at a rate of 409600 micro-steps/sec/sec (1mm/sec/sec), divide 409600 by
90.9 which gives 4506.
Page 18 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Generic System Control Messages
Introduction
The messages described here are either system control messages, or else generic messages
which apply to several or all controller types. Please see the list of controller specific
commands for details on applicability to a specific controller type.
Page 19 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_MOD_IDENTIFY
Function:
Issue 15
0x0223
Instruct hardware unit to identify itself (by flashing its front panel
LEDs).
Command structure (6 bytes):
0
1
23
02
Example:
2
3
header only
00
00
4
5
d
s
Identify controller #1 (i.e. bay 0 of the TDC001 controller) by flashing
its front panel LED.
TX 23, 02, 00, 00, 21, 01
Page 20 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_MOD_SET_CHANENABLESTATE
MGMSG_MOD_REQ_CHANENABLESTATE
MGMSG_MOD_GET_CHANENABLESTATE
Function
Issue 15
0x0210
0x0211
0x0212
Sent to enable or disable the specified drive channel.
SET:
Command structure (6 bytes):
0
1
10
02
2
3
header only
Chan Enable
Ident State
4
5
d
s
Channel Idents
0x01 channel 1
0x02 channel 2
Enable States
0x01 enable channel
0x02 disable channel
For single channel controllers such as the BBD10X, TDC001, the Chan Ident byte is always set
to CHAN1.
Note: Although the BBD102 is in fact a 2-channel controller, ‘channel’ in this sense means
“motor output channel within this module”. Electrically, the BBD102 is a bay system, with
two bays, each of them being a single channel controller, so only one channel can be
addressed. There are controllers in the Thorlabs product range which indeed have multiple
output channels (for example the MST601 module) for which the channel ident is used to
address a particular channel.
Example:
Enable the motor channel in bay 2
TX 10, 02, 01, 01, 22, 01
REQ:
Command structure (6 bytes):
0
1
11
02
2
3
4
header only
Chan 0
d
Ident
5
s
As above, for single channel controllers such as the BBD10X, TDC001, the Chan Ident byte is
always set to CHAN1.
Page 21 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
GET:
Response structure (6 bytes):
0
1
2
header only
12 02
Chan
Ident
3
Enable
State
4
d
5
s
The meaning of the parameter bytes “Chan Ident” and “Enable State” is the same as for the
SET version of the commands.
Page 22 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_HW_DISCONNECT
Function:
Issue 15
0x0002
Sent by the hardware unit or host when either wants to disconnect
from the Ethernet/USB bus.
REQ:
Command structure (6 bytes):
0
1
02
00
2
3
header only
00
00
Example:
4
d
5
s
Disconnect the BBD103 from the USB bus
TX 02, 00, 00, 00, 11, 00
MGMSG_HW_RESPONSE
Function:
0x0080
Sent by the controllers to notify APT Server of some event that
requires user intervention, usually some fault or error condition that
needs to be handled before normal operation can resume. The
message transmits the fault code as a numerical value – see Return
Codes.
REQ:
Command structure (6 bytes):
0
1
80
00
Example:
2
3
header only
00
00
4
d
5
s
The BBD103 unit has encountered an over current condition
TX 80, 00, 00, 00, 01, 11
Page 23 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_HW_RICHRESPONSE
Function:
0x0081
Similarly to HW_RESPONSE, this message is sent by the
controllers to notify APT Server of some event that requires user
intervention, usually some fault or error condition that needs to be
handled before normal operation can resume. However unlike
HW_RESPONSE, this message also transmits a printable text string.
Upon receiving the message, APT Server displays both the numerical
value and the text information, which is useful in finding the cause
of the problem.
REQ:
Response structure (74 bytes):
6 byte header followed by 68 byte (0x44) data packet as follows:
0
1
2
3
header
44
00
81
00
16
17
32
33
34
35
36
37
38
39
48
49
50
51
52
53
54
55
64
65
66
18
19
4
5
6
d|
s
MsgIdent
20
21
22
7
8
9
Code
10
11
data
12
13
14
15
<--------Notes------->
23
24
25
26
27
28
29
30
31
data
<---------------------------------------------------------------------Notes------------------------------------------------------------------->
40
41
42
43
44
45
46
47
data
<----------------------------------------------------------------- Notes ----------------------------------------------------------------------->
56
57
58
59
60
61
62
63
data
<----------------------------------------------------------------- Notes ----------------------------------------------------------------------->
69
70
71
72
data
<-----------------------------Notes--------------------------->
Data structure:
field
MsgIdent
Code
Notes
67
68
73
description
If the message is sent in response to an APT message, these
bytes show the APT message number that evoked the
message. Most often though the message is transmitted as
a result of some unexpected fault condition, in which case
these bytes are 0x00, 0x00
This is an internal Thorlabs specific code that specifies the
condition that has caused the message (see Return Codes).
This is a zero-terminated printable (ascii) text string that
contains the textual information about the condition that
has occurred. For example: “Hardware Time Out Error”.
format
word
word]
char[64
bytes]
Page 24 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_HW_START_UPDATEMSGS
Function:
Issue 15
0x0011
Sent to start status updates from the embedded controller. Status
update messages contain information about the position and status
of the controller (for example limit switch status, motion indication,
etc). The messages will be sent by the controller periodically until it
receives a STOP STATUS UPDATE MESSAGES command. In
applications where spontaneous messages (i.e. messages which are
not received as a response to a specific command) must be avoided
the same information can also be obtained by using the relevant
GET_STATUTSUPDATES function.
Command structure (6 bytes):
0
1
11
00
2
3
header only
Update Unused
Rate
4
5
d
s
The first data byte can be used to specify the update rate with which status updates are
received from the controller. However, the parameter is ignored for the BBD101/102/103
controllers and the update rate is fixed at 10 regardless of the parameter sent.
REQUEST:
N/A
MGMSG_HW_STOP_UPDATEMSGS
Function:
0x0012
Sent to stop status updates from the controller – usually called by a
client application when it is shutting down, to instruct the controller
to turn off status updates to prevent USB buffer overflows on the
PC.
SET:
Command structure (6 bytes):
0
1
12
00
REQUEST:
GET:
2
3
4
header only
00
00
d
5
s
N/A
N/A
Page 25 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_HW_REQ_INFO
MGMSG_HW_GET_INFO
Function:
Issue 15
0x0005
0x0006
Sent to request hardware information from the controller.
REQ:
Command structure (6 bytes):
0
1
05
00
2
3
header only
00
00
Example:
4
5
d
s
Request hardware info from controller #1
TX 05, 00, 00, 00, 11, 01
GET:
Response structure (90 bytes):
6 byte header followed by 84 byte (0x54) data packet as follows:
0
1
06
16
2
4
5
00
3
header
54
00
d|
s
17
18
20
21
19
6
7
8
9
10
<-Serial Number >
22
23
<Model>
No
<Type>
<Firmware>
Version >
32
33
34
35
36
37
38
39
48
49
50
51
52
53
54
55
64
65
11
12
13
14
data
<--------Model Number------->
15
24
25
26
27
28
29
30
31
data
<--------------------------------Notes----------------------------->
40
41
42
43
44
45
46
47
data
<----------------------------------------------------------------- Notes ----------------------------------------------------------------------->
56
57
58
59
60
61
62
63
data
<----------------------------------------------------------------- Notes ----------------------------------------------------------------------->
66
67
68
69
70
71
72
data
73
74
75
<-----------------------------Notes--------------------------->
80
81
82
83
<---------Empty Space------->
84
85
data
HW Version
86
76
77
78
79
Empty Space
87
Mod State
88
89
<-nchs-->
Page 26 of 265
Thorlabs APT Controllers
Data structure:
field
serial number
model
number
type
firmware
version
notes
Empty Space
HW Version
Mod State
nchs
Example:
Host-Controller Communications Protocol
Issue 15
description
unique 8-digit serial number
alphanumeric model number
format
long
char[8]
hardware type:
45 = multi-channel controller motherboard
44 = brushless DC controller
word
firmware version
byte[20] = minor revision number
byte[21] = interim revision number
byte[22] = major revision number
byte[23] = unused
arbitrary alphanumeric information string
Not Used
The hardware version number
The modification state of the hardware
number of channels
byte[4]
char[48]
byte [12]
word
word
word
Returned hardware info from controller #1
RX 06, 00, 54, 00, 81, 22, 89, 53, 9A, 05, 49, 4F, 4E, 30, 30, 31, 20, 00,
2C, 00, 02, 01, 39, 00, 42, 72, 75, 73, 68, 6C, 65, 73, 73, 20, 44, 43,
20, 4D, 6F, 74, 6F, 72, 20, 49, 4F, 4E, 20, 44, 72, 69, 76, 65, 00, 00…,
11, 00, 01, 00, 00, 00, 01, 00
Header: 06, 00, 54, 00, 81, 22: Get Info, 54H (84) byte data packet,
Motor Channel 2.
Serial Number: 89, 53, 9A, 05: 94000009
Model Number: 49, 4F, 4E, 30, 30, 31, 20, 00: ION001
Type: 2C, 00: 44 – Brushless DC Controller Card
firmware Version: 02, 01, 39, 00: 3735810
Notes: 42, 72, 75, 73, 68, 6C, 65, 73, 73, 20, 44, 43, 20, 4D, 6F, 74,
6F, 72, 20, 49, 4F, 4E, 20, 44, 72, 69, 76, 65, 00…: BRUSHLESS DC
MOTOR ION DRIVE…..
Empty Space: 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
HW Version: 01, 00 Hardware version 01
Mod State: 03, 00, Modification stage 03.
No Chan: 01, 00: 1 active channel
Page 27 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_RACK_REQ_BAYUSED
MGMSG_RACK_GET_BAYUSED
Function:
Issue 15
0x0060
0x0061
Sent to determine whether the specified bay in the controller is
occupied.
REQ:
Command structure (6 bytes):
0
1
60
00
2
3
header only
Bay
00
Ident
4
d
5
s
Bay Idents
0x01 Bay 1
0x02 Bay 2 to
0x09 Bay 10
Example:
Is controller bay #1 (i.e. bay 0) occupied
TX 60, 00, 00, 00, 11, 01
GET:
Command structure (6 bytes):
0
1
61
00
2
3
header only
Bay
Bay
Ident State
4
d
5
s
Bay Idents
0x01 Bay 1
0x02 Bay 2 to
0x09 Bay 10
Bay States
0x01 Bay Occupied
0x02 Bay Empty (Unused)
Example:
Controller bay #1 (i.e. bay 0) is occupied
RX 61, 00, 00, 01, 11, 01
Page 28 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_HUB_REQ_BAYUSED
MGMSG_HUB_GET_BAYUSED
Function:
0x0065
0x0066
Sent to determine which bay a specific T-Cube is fitted.
REQ:
Command structure (6 bytes):
0
1
65
00
2
3
header only
00
00
4
5
d
s
TX 65, 00, 00, 00, 50, 01
GET:
Command structure (6 bytes):
0
1
66
00
2
3
4
header only
Bay
00
d
Ident
5
s
Bay Idents
-0x01 T-Cube being standalone, i.e. off the hub.
0x00 T-Cube on hub, but bay unknown
0x01 Bay 1
0x02 Bay 2 to
0x06 Bay 6
Example:
Which hub bay is the T-Cube unit fitted
RX 66, 00, 06, 00, 01, 50
Page 29 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_RACK_REQ_STATUSBITS
MGMSG_RACK_GET_STATUSBITS
0x0226
0x0227
This method is applicable only to the MMR modular rack, and 2- and 3-channel card slot
type controllers such as the BSC103 and BPC202.
Function:
The USER IO connector on the rear panel of these units exposes a
number of digital inputs. This function returns a number of status
flags pertaining to the status of the inputs on the rack modules, or
the motherboard of the controller unit hosting the single channel
controller card.
These flags are returned in a single 32 bit integer parameter and can
provide additional useful status information for client application
development. The individual bits (flags) of the 32 bit integer value
are described below.
REQUEST:
Command structure (6 bytes):
0
1
26
02
2
3
header only
Status 00
Bits
4
5
d
s
GET:
Response structure (10 bytes)
6 byte header followed by 4 byte data packet as follows:
0
1
27
02
Data Structure:
field
StatusBits
Hex Value
0x00000001
0x00000002
0x00000004
0x00000008
2
3
header
04
00
4
5
d|
s
7
8
9
Data
StatusBits
10
description
The status bits for the associated controller channel. The
meaning of the individual bits (flags) of the 32 bit integer
value will depend on the controller and are described in the
following table.
Bit Number
1
2
3
4
format
dword
Description
Digital output 1 state (1 - logic high, 0 - logic low).
Digital output 2 state (1 - logic high, 0 - logic low).
Digital output 3 state (1 - logic high, 0 - logic low).
Digital output 4 state (1 - logic high, 0 - logic low).
Example:
With destination being 0x11 (motherboard – see Introduction) and bay
being bay 1, slot 2 (0x22)
TX 27, 02, 04, 00, 01, 22, 00, 00, 00, 00
Header: 27, 02, 04, 00, 01, 22: GetStatusBits, 04 byte data packet, bay 1 slot 2.
Page 30 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_RACK_SET_DIGOUTPUTS
MGMSG_RACK_REQ_DIGOUTPUTS
MGMSG_RACK_GET_DIGOUTPUTS
Issue 15
0x0228
0x0229
0x0230
This method is applicable only to the MMR rack modules, and 2- and 3-channel card slot
type controllers such as the BSC103 and BPC202.
Function:
The USER IO connector on the rear panel of these units exposes a
number of digital outputs. These functions set and return the status
of the outputs on the rack modules, or the motherboard of the
controller unit hosting the single channel controller card.
These flags are returned in a single 32 bit integer parameter and can
provide additional useful status information for client application
development. The individual bits (flags) of the 32 bit integer value
are described below.
SET:
Data structure (6 bytes)
0
1
28
02
2
3
4
header only
Dig OP 00 d
Hex Value
0x00000001
0x00000002
0x00000004
0x00000008
5
s
Bit Number
1
2
3
4
Description
Digital input 1 state (1 - logic high, 0 - logic low).
Digital input 2 state (1 - logic high, 0 - logic low).
Digital input 3 state (1 - logic high, 0 - logic low).
Digital input 4 state (1 - logic high, 0 - logic low).
Example:
With destination being 0x11 (motherboard – see Introduction) and bay
being bay 1, slot 2 (0x22), set Digital output 1 high
TX 28, 02, 01, 22, 11, 01,
Header: 28, 02, 01, 22, 11, 01: SetDigOutputs, 01 OP1 High, bay 1 slot 2, d=motherboard,
s=PC.
REQUEST:
Command structure (6 bytes):
0
1
29
02
2
3
4
header only
00
00
d
5
s
GET:
Response structure (6 bytes)
0
1
30
02
2
3
4
header only
00
00
d
5
s
See SET above for structure
Page 31 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_MOD_SET_DIGOUTPUTS
MGMSG_MOD_REQ_DIGOUTPUTS
MGMSG_MOD_GET_DIGOUTPUTS
Function:
Issue 15
0x0213
0x0214
0x0215
The CONTROL IO connector on the rear panel of the unit exposes a
number of digital outputs. The number of outputs available depends
on the type of unit. This message is used to configure these digital
outputs.
SET:
Command structure (6 bytes):
0
1
00
05
2
3
4
header only
Bit
00
d
5
s
Note. On brushless DC controllers (e.g. BBD201), the digital output and trigger output use a
common pin. Before calling this message to set the digital output, the trigger functionality
must be disabled by calling the Set_Trigger message.
The outputs are set (and returned) in the bits of the Bits parameter, input No 1 being the
least significant bit and input No 4 being the most significant. The number of bits used is
dependent on the number of digital outputs present on the associated hardware unit.
For example, to turn on the digital output on a BSC201 motor controller, the least significant
bit of the Bits parameter should be set to 1. Similarly, to turn on all four digital outputs on a
BNT001 NanoTrak unit, the bits of the Bits parameter should be set to 1111 (15), and to turn
the same outputs off, the Bits should be set to 0000.
Example:
Set the digital input of the BSC201 controller on:
TX 13, 02, 01, 00, 50, 01
REQ:
Command structure (6 bytes):
0
1
14
02
2
3
4
header only
Bits
00
d
5
s
GET:
Response structure (6 bytes):
0
1
2
header only
15 02
Bit
3
00
4
d
5
s
For structure see SET message above.
Page 32 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Motor Control Messages
Introduction
The ‘Motor’ messages provide the functionality required for a client application to control
one or more of the Thorlabs series of motor controller units. This range of motor controllers
covers DC servo and stepper drivers in a variety of formats including compact Cube type
controllers, benchtop units and 19" rack based modular drivers. Note for ease of description,
the TSC001 T-Cube Solenoid Controller is considered here as a motor controller. The list of
controllers covered by the motor messages includes:
BSC001 – 1 Channel Benchtop Stepper Driver
BSC002 – 2 Channel Benchtop Stepper Driver
BMS001 – 1 Channel Benchtop Low Power Stepper Driver
BMS002 – 2 Channel Benchtop Low Power Stepper Driver
MST601 – 2 Channel Modular Stepper Driver
MST602 – 2 Channel Modular Stepper Driver (2013 onwards)
BSC101 – 1 Channel Benchtop Stepper Driver (2006 onwards)
BSC102 – 2 Channel Benchtop Stepper Driver (2006 onwards)
BSC103 – 3 Channel Benchtop Stepper Driver (2006 onwards)
BSC201 – 1 Channel Benchtop Stepper Driver (2012 onwards)
BSC202 – 2 Channel Benchtop Stepper Driver (2012 onwards)
BSC203 – 3 Channel Benchtop Stepper Driver (2012 onwards)
BBD101 – 1 Channel Benchtop Brushless DC Motor Driver
BBD102 – 2 Channel Benchtop Brushless DC Motor Driver
BBD103 – 3 Channel Benchtop Brushless DC Motor Driver
BBD201 – 1 Channel Benchtop Brushless DC Motor Driver
BBD202 – 2 Channel Benchtop Brushless DC Motor Driver
BBD203 – 3 Channel Benchtop Brushless DC Motor Driver
OST001 – 1 Channel Cube Stepper Driver
ODC001 – 1 Channel Cube DC Servo Driver
TST001 – 1 Channel T-Cube Stepper Driver
TDC001 – 1 Channel T-Cube DC Servo Driver
TSC001 – 1 Channel T-Cube Solenoid Driver
TDIxxx – 2 Channel Brushless DC Motor Driver
The motor messages can be used to perform activities such as homing stages, absolute and
relative moves, changing velocity profile settings and operation of the solenoid state
(TSC001 T-Cube). With a few exceptions, these messages are generic and apply equally to
both single and dual channel units.
Where applicable, the target channel is identified in the Chan Ident parameter and on single
channel units, this must be set to CHAN1_ID. On dual channel units, this can be set to
CHAN1_ID, CHAN2_ID or CHANBOTH_ID as required.
For details on the operation of the motor controller, and information on the principles of
operation, refer to the handbook supplied with the unit.
Page 33 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Page 34 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_HW_YES_FLASH_PROGRAMMING
Function:
Issue 15
0x0017
This message is sent by the server on start up, however, it is a
deprecated message (i.e. has no function) and can be ignored.
Command structure (6 bytes):
0
1
17
00
REQUEST:
2
3
header only
Unused Unused
4
5
d
s
N/A
MGMSG_HW_NO_FLASH_PROGRAMMING
Function:
0x0018
This message is sent on start up to notify the controller of the
source and destination addresses. A client application must send
this message as part of its initialization process.
SET:
Command structure (6 bytes):
0
1
18
00
REQUEST:
GET:
2
3
4
header only
00
00
d
5
s
N/A
N/A
Page 35 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_SET_POSCOUNTER
MGMSG_MOT_REQ_POSCOUNTER
MGMSG_MOT_GET_POSCOUNTER
Function:
0x0410
0x0411
0x0412
Used to set the ‘live’ position count in the controller. In general, this
command is not normally used. Instead, the stage is homed
immediately after power-up (at this stage the position is unknown
as the stage is free to move when the power is off); and after the
homing process is completed the position counter is automatically
updated to show the actual position. From this point onwards the
position counter always shows the actual absolute position.
SET:
Command structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
10
04
2
3
header
06
00
4
5
6
7
d|
s
Chan Ident
8
9
Data
10
11
Position
Data Structure:
field
description
Chan Ident
The channel being addressed
Position
The new value of the position counter as a 32-bit signed
integer, encoded in the Intel format. The scaling between real
time values and this parameter is detailed in section 7.1.
Example:
format
word
long
MLS203 and BBD102: Set the position counter for channel 2 to 10.0 mm
TX 10, 04, 06, 00, A2, 01, 01, 00, 40, 0D, 03, 00
Header: 10, 04, 06, 00, A2, 01: SetPosCounter, 06 byte data packet, Channel 2.
Chan Ident: 01, 00: Channel 1 (always set to 1 for TDC001)
Position: 40, 0D, 03, 00: Set Counter to 10 mm (10 x 20,000)
REQUEST:
Command structure (6 bytes):
0
1
11
04
2
3
4
header only
Chan 00
d
Ident
5
s
GET:
Response structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
12
04
2
3
header
06
00
4
5
6
d|
s
Chan Ident
For structure see SET message above.
7
8
9
Data
10
11
Position
Page 36 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_SET_ENCCOUNTER
MGMSG_MOT_REQ_ENCCOUNTER
MGMSG_MOT_GET_ENCCOUNTER
Function:
0x0409
0x040A
0x040B
Similarly to the PosCounter message described previously, this
message is used to set the encoder count in the controller and is
only applicable to stages and actuators fitted with an encoder. In
general, this command is not normally used. Instead, the stage is
homed immediately after power-up (at this stage the position is
unknown as the stage is free to move when the power is off); and
after the homing process is completed the position counter is
automatically updated to show the actual position. From this point
onwards the encoder counter always shows the actual absolute
position.
SET:
Command structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
09
04
2
3
header
06
00
4
5
6
7
d|
s
Chan Ident
8
9
10
Data
Encoder Count
11
Data Structure:
field
description
Chan Ident
The channel being addressed
Encoder
The new value of the encoder counter as a 32-bit signed
Count
integer, encoded in the Intel format. The scaling between real
time values and this parameter is detailed in section 7.1.
Example:
format
word
long
MLS203 and BBD102: Set the encoder counter for channel 2 to 10.0 mm
TX 09, 04, 06, 00, A2, 01, 01, 00, 40, 0D, 03, 00
Header: 09, 04, 06, 00, A2, 01: SetEncCounter, 06 byte data packet, Channel 2.
Chan Ident: 01, 00: Channel 1 (always set to 1 for TDC001)
Position: 40, 0D, 03, 00: Set Counter to 10 mm (10 x 20,000)
REQUEST:
Command structure (6 bytes):
0
1
11
04
2
3
4
header only
Chan 00
d
Ident
5
s
Page 37 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
GET:
Response structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
0B
04
2
3
header
06
00
4
5
6
7
d|
s
Chan Ident
8
9
10
Data
Encoder Count
11
For structure see SET message above.
Page 38 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_MOT_SET_VELPARAMS
MGMSG_MOT_REQ_VELPARAMS
MGMSG_MOT_GET_VELPARAMS
Function:
Issue 15
0x0413
0x0414
0x0415
Used to set the trapezoidal velocity parameters for the specified
motor channel. For DC servo controllers, the velocity is set in
encoder counts/sec and acceleration is set in encoder
counts/sec/sec.
For stepper motor controllers the velocity is set in microsteps/sec
and acceleration is set in microsteps/sec/sec.
SET:
Command structure (20 bytes)
6 byte header followed by 14 byte data packet as follows:
0
1
13
04
12
2
3
header
0E
00
13
14
15
Acceleration
Data
4
5
6
7
d|
s
Chan Ident
16
17
18
8
9
10
Data
Min Velocity
11
19
Max Velocity
Data Structure:
field
Chan Ident
Minimum
(Start) Vel
Acceleration
Maximum Vel
Example:
follows:
description
The channel being addressed
The minimum (start) velocity in encoder counts/sec
Currently, this 4 byte value is always zero
The acceleration in encoder counts /sec/sec.
4 byte unsigned long value. If applicable, the scaling
between real time values and this parameter is detailed in
section 7.1.
The maximum (final) velocity in encoder counts /sec.
4 byte unsigned long value. If applicable, the scaling
between real time values and this parameter is detailed in
section 7.1.
format
word
long
long
long
MLS203 and BBD102: Set the trapezoidal velocity parameters for chan 2 as
Min Vel: zero
Acceleration: 10 mm/sec/sec
Max Vel: 99 mm/sec
TX 13, 04, 0E, 00, A2, 01, 01, 00, 00, 00, 00, 00, B0, 35, 00, 00, CD, CC, CC, 00
Header: 13, 04, 0E, 00, A2, 01: Set Vel Params, 0EH (14) byte data packet, Channel 2.
Chan Ident: 01, 00: Channel 1 (always set to 1 for TDC001)
Min Vel: 00, 00, 00, 00: Set min velocity to zero
Accel: 89, 00, 00, 00: Set acceleration to 10 mm/sec/sec (13.744 x 10)
Max Vel: 9E, C0, CA, 00: Set max velocity to 99 mm/sec (134218 x 99)
Page 39 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
REQUEST:
Command structure (6 bytes):
0
1
14
04
2
3
4
header only
Chan 00
d
Ident
5
s
GET:
Response structure (20 bytes)
6 byte header followed by 14 byte data packet as follows:
0
1
2
15
04
3
header
0E
00
12
13
14
Acceleration
15
4
5
6
d|
s
Chan Ident
16
Data
17
18
7
8
9
10
Data
Min Velocity
11
19
Max Velocity
For structure see SET message above.
Page 40 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_SET_JOGPARAMS
MGMSG_MOT_REQ_JOGPARAMS
MGMSG_MOT_GET_JOGPARAMS
Function:
0x0416
0x0417
0x0418
Used to set the velocity jog parameters for the specified motor
channel, For DC servo controllers, values set in encoder counts.
For stepper motor controllers the values is set in microsteps.
SET:
Command structure (28 bytes)
6 byte header followed by 22 byte data packet as follows:
0
1
16
04
12
2
3
header
16
00
13
14
Jog Step Size
22
23
24
4
5
6
d|
s
Chan Ident
15
16
Data
Jog Min Velocity
Data
Jog Max Velocity
25
26
17
7
18
8
9
Data
Jog Mode
19
20
10
11
Jog Step Size
21
Jog Acceleration
27
Stop Mode
Data Structure:
field
Chan Ident
Jog Mode
Jog Step Size
Jog Min
Velocity
Jog
Acceleration
Jog Max
Velocity
Jog Stop
Mode
description
The channel being addressed
This 2 byte value can be 1 for continuous jogging or 2 for
single step jogging. In continuous jogging mode the
movement continues for as long as the jogging trigger (the
jogging button on the GUI or an external signal) is being
active. In single step mode triggering jogging initiates a single
move whose step size is defined as the next parameter (see
below).
The jog step size in encoder counts. The scaling between real
time values and this parameter is detailed in section 7.1.
The minimum (start) velocity in encoder counts /sec.
Currently, this 4 byte value is always zero.
The acceleration in encoder counts /sec/sec
The scaling between real time values and this parameter is
detailed in section 7.1.
The maximum (final) velocity in encoder counts /sec. The
scaling between real time values and this parameter is
detailed in section 7.1.
The stop mode.
This 16 bit word can be 1 for immediate (abrupt) stop or 2
for profiled stop (with controlled deceleration).
format
word
word
long
long
long
long
word
Page 41 of 265
Thorlabs APT Controllers
Example:
Host-Controller Communications Protocol
Issue 15
MLS203 and BBD102: Set the jog parameters for channel 2 as follows:
Jog Mode: Continuous
Jog Step Size:0.05 mm
Jog Min Vel: Zero
Jog Accel: 10 mm/sec/sec
Jog Max Vel: 99 mm/sec
Jog Stop Mode: Profiled
TX 16, 04, 16, 00, A2, 01, 01, 00, 01, 00, E8, 03, 00, 00, 00, 00, 00, 00, B0,35, 00, 00, CD, CC,
CC, 00, 02, 00
Header: 16, 04, 16, 00, A2, 01: Set Jog Params, 16H (28) byte data packet, Channel 2.
Chan Ident: 01, 00: Channel 1 (always set to 1 for TDC001)
Jog Mode: 01,00,: Set jog mode to ‘continuous’
Jog Step Size: E8, 03, 00, 00: Set jog step size to 0.05 mm (1,000 encoder counts).
Jog Min Vel: 00, 00, 00, 00: Set min jog velocity to zero
Jog Accel: 89, 00, 00, 00: Set acceleration to 10 mm/sec/sec (13.744 x 10)
Jog Max Vel: 9E, C0, CA, 00: Set max velocity to 99 mm/sec (134218 x 99)
Jog Stop Mode: 02, 00: Set jog stop mode to ‘Profiled Stop’.
REQUEST:
Command structure (6 bytes):
0
1
17
04
2
3
4
header only
Chan 00
d
Ident
5
s
GET:
Response structure (28 bytes)
6 byte header followed by 22 byte data packet as follows:
0
1
18
04
12
13
2
3
header
16
00
14
Jog Step Size
22
23
24
4
5
6
d|
s
Chan Ident
15
16
Data
Jog Min Velocity
Data
Jog Max Velocity
25
26
17
7
18
8
9
Data
Jog Mode
19
20
10
11
Jog Step Size
21
Jog Acceleration
27
Stop Mode
For structure see SET message above.
Page 42 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_MOT_REQ_ADCINPUTS
MGMSG_MOT_GET_ADCINPUTS
Function:
Issue 15
0x042B
0x042C
This message reads the voltage applied to the analog input on the
rear panel CONTROL IO connector, and returns a value in the
ADCInput1 parameter. The returned value is in the range 0 to
32768, which corresponds to zero to 5 V.
Note. The ADCInput2 parameter is not used at this time.
In this way, a 0 to 5V signal generated by a client system could be
read in by calling this method and monitored by a custom client
application. When the signal reaches a specified value, the
application could instigate further actions, such as a motor move.
REQUEST:
Command structure (6 bytes):
0
1
2B
04
2
3
header only
Chan 00
Ident
4
d
5
s
GET:
Command structure (10 bytes)
6 byte header followed by 4 byte data packet as follows:
0
1
2B
04
2
3
header
04
00
4
5
6
7
d|
s
ADCInput1
Data
8
9
ADCInput2
Data Structure:
field
ADCInput1
ADCInput2
Example:
description
The voltage state of the analog input pin, in the range 0 to
32768, which corresponds to zero to 5 V.
Not used
format
word
word
Get the ADC input state
RX 2C, 04, 04, 00, A2, 01, 01, 00, 00, 00,
Header: 2B, 04, 04, 00, A2, 01: GetADCInputs, 04 byte data packet, Channel 2.
ADCInput1: 00, 80: ADC Input 1 = 5V
ADCInput2: 00, 00: Not Used r
Page 43 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_SET_POWERPARAMS
MGMSG_MOT_REQ_POWERPARAMS
MGMSG_MOT_GET_POWERPARAMS
0x0426
0x0427
0x0428
Note for BSC20x, MST602 and TST101 controller users
If the controllers listed above are used with APTServer, the ini file will typically have values
set of 5 for the rest power and 30 for the move power. Although these values are loaded
when the server boots only the rest power value is used. This allows the user to set the rest
current as normal. The move power however is not used. The move power is set within the
controller as a function of velocity. This command can be used only to set the rest power.
The command MGMSG_MOT_REQ_POWERPARAMS will return the default values or the
values that were set.
Function:
The power needed to hold a motor in a fixed position is much
smaller than that required for a move. It is good practice to
decrease the power in a stationary motor in order to reduce
heating, and thereby minimize thermal movements caused by
expansion. This message sets a reduction factor for the rest power
and the move power values as a percentage of full power. Typically,
move power should be set to 100% and rest power to a value
significantly less than this.
SET:
Command structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
26
04
2
3
header
06
00
4
5
6
7
d|
s
Chan Ident
8
9
Data
RestFactor
10
11
MoveFactor
Data Structure:
field
Chan Ident
RestFactor
MoveFactor
Example:
description
The channel being addressed
The phase power value when the motor is at rest, in the
range 1 to 100 (i.e. 1% to 100% of full power).
The phase power value when the motor is moving, in the
range 1 to 100 (i.e. 1% to 100% of full power).
format
word
word
word
Set the phase powers for channel 2 for TST001 unit
TX 26, 04, 06, 00, A2, 01, 01, 00, 0A, 00, 64, 00
Header: 26, 04, 06, 00, A2, 01: SetPowerParams, 06 byte data packet, Channel 2.
Chan Ident: 01, 00: Channel 1 (always set to 1 for TST001)
RestFactor: 0A, 00: Set rest power to 10% of full power
MoveFactor: 64, 00: Set move power to 100% of full power
REQUEST:
Command structure (6 bytes):
Page 44 of 265
Thorlabs APT Controllers
0
1
27
04
Host-Controller Communications Protocol
2
3
4
header only
Chan 00
d
Ident
Issue 15
5
s
GET:
Response structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
28
04
2
3
header
06
00
4
5
6
7
d|
s
Chan Ident
8
9
Data
RestFactor
10
11
MoveFactor
For structure see SET message above.
Page 45 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_SET_GENMOVEPARAMS
MGMSG_MOT_REQ_GENMOVEPARAMS
MGMSG_MOT_GET_GENMOVEPARAMS
Function:
0x043A
0x043B
0x043C
Used to set the general move parameters for the specified motor
channel. At this time this refers specifically to the backlash settings.
SET:
Command structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
3A
04
2
3
header
06
00
4
5
6
7
d|
s
Chan Ident
8
9
10
Data
Backlash Distance
11
Data Structure:
field
Chan Ident
Backlash
Distance
Example:
description
The channel being addressed
The value of the backlash distance as a 4 byte signed
integer, which specifies the relative distance in position
counts. The scaling between real time values and this
parameter is detailed in section 7.1.
format
word
long
MLS203 and BBD102: Set the backlash distance for chan 2 to 1 mm:
TX 3A, 04, 06, 00, A2, 01, 01, 00, 20, 4E, 00, 00,
Header: 3A, 04, 06, 00, A2, 01: SetGenMoveParams, 06 byte data packet, Channel 2.
Chan Ident: 01, 00: Channel 1 (always set to 1 for TDC001)
Backlash Dist: 20, 4E, 00, 00: Set backlash distance to 1 mm (20,000 encoder counts).
REQUEST:
Command structure (6 bytes):
0
1
3B
04
2
3
header only
Chan 00
Ident
4
d
5
s
GET:
Response structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
3C
04
2
3
header
06
00
4
5
6
7
d|
s
Chan Ident
8
9
10
Data
Backlash Distance
11
For structure see SET message above.
Page 46 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_SET_MOVERELPARAMS
MGMSG_MOT_REQ_MOVERELPARAMS
MGMSG_MOT_GET_MOVERELPARAMS
Function:
0x0445
0x0446
0x0447
Used to set the relative move parameters for the specified motor
channel. The only significant parameter at this time is the relative
move distance itself. This gets stored by the controller and is used
the next time a relative move is initiated.
SET:
Command structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
45
04
2
3
header
06
00
4
5
6
7
d|
s
Chan Ident
8
9
10
Data
Relative Distance
11
Data Structure:
field
Chan Ident
Relative
Distance
Example:
description
The channel being addressed
The distance to move. This is a 4 byte signed integer that
specifies the relative distance in position encoder counts.
The scaling between real time values and this parameter is
detailed in section 7.1.
format
word
long
MLS203 and BBD102: Set the relative move distance for chan 2 to 10 mm:
TX 45, 04, 06, 00, A2, 01, 01, 00, 40, 0D, 03, 00,
Header: 45, 04, 06, 00, A2, 01: SetMoveRelParams, 06 byte data packet, Channel 2.
Chan Ident: 01, 00: Channel 1 (always set to 1 for TDC001)
Rel Dist: 40, 0D, 03, 00: Set relative move distance to 10 mm (10 x 20,000 encoder counts).
REQUEST:
Command structure (6 bytes):
0
1
46
04
2
3
4
header only
Chan 00
d
Ident
5
s
GET:
Response structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
47
04
2
3
header
06
00
4
5
6
d|
s
Chan Ident
For structure see SET message above.
7
8
9
10
Data
Relative Distance
11
Page 47 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_SET_MOVEABSPARAMS
MGMSG_MOT_REQ_MOVEABSPARAMS
MGMSG_MOT_GET_MOVEABSPARAMS
Function:
0x0450
0x0451
0x0452
Used to set the absolute move parameters for the specified motor
channel. The only significant parameter at this time is the absolute
move position itself. This gets stored by the controller and is used
the next time an absolute move is initiated.
SET:
Command structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
50
04
2
3
header
06
00
4
5
6
7
d|
s
Chan Ident
8
9
10
Data
Absolute Position
11
Data Structure:
field
Chan Ident
Absolute
Position
Example:
description
The channel being addressed
The absolute position to move. This is a 4 byte signed
integer that specifies the absolute position in position
encoder counts. The scaling between real time values and
this parameter is detailed in section 7.1.
format
word
long
MLS203 and BBD102: Set the absolute move position for chan 2 to 10 mm:
TX 50, 04, 06, 00, A2, 01, 01, 00, 40, 0D, 03, 00,
Header: 50, 04, 06, 00, A2, 01: SetMoveAbsParams, 06 byte data packet, Channel 2.
Chan Ident: 01, 00: Channel 1 (always set to 1 for TDC001)
Abs Pos: 40, 0D, 03, 00: Set absolute move position to 10 mm (200,000 encoder counts).
REQUEST:
Command structure (6 bytes):
0
1
51
04
2
3
4
header only
Chan 00
d
Ident
5
s
GET:
Response structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
52
04
2
3
header
06
00
4
5
6
d|
s
Chan Ident
For structure see SET message above.
7
8
9
10
Data
Absolute Position
11
Page 48 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_MOT_SET_HOMEPARAMS
MGMSG_MOT_REQ_HOMEPARAMS
MGMSG_MOT_GET_HOMEPARAMS
Function:
Issue 15
0x0440
0x0441
0x0442
Used to set the home parameters for the specified motor channel.
These parameters are stage specific and for the MLS203 stage
implementation the only parameter that can be changed is the
homing velocity.
SET:
Command structure (20 bytes)
6 byte header followed by 14 byte data packet as follows:
0
1
40
04
2
3
header
0E
00
12
13
14
Home Velocity
15
4
5
6
d|
s
Chan Ident
Data
16
17
18
7
8
9
Data
Home Dir
10
11
Limit Switch
19
Offset Distance
Data Structure:
field
Chan Ident
Home
Direction
Limit Switch
Home
Velocity
Offset
Distance
description
The channel being addressed
Ignored in this implementation. Homing direction is always
positive.
Ignored in this implementation. The limit switches are not
used for homing.
The homing velocity. A 4 byte unsigned long value. The
scaling between real time values and this parameter is
detailed in section 7.1.
Not used in this implementation.
format
word
word
word
long
long
Page 49 of 265
Thorlabs APT Controllers
Example:
Host-Controller Communications Protocol
Issue 15
MLS203 and BBD102: Set the home parameters for chan 2 as follows:
Home Direction: Not used (always positive).
Limit Switch: Not used
Home Vel: 24 mm/sec
Offset Dist: Not used.
TX 40, 04, 0E, 00, A2, 01, 01, 00, 00, 00, 00, 00, 33. 33, 33, 00, 00, 00, 00, 00
Header: 40, 04, 0E, 00, A2, 01: SetHomeParams, 14 byte data packet, Channel 2.
Chan Ident: 01, 00: Channel 1 (always set to 1 for TDC001)
Home Direction: 00, 00: Not Applicable
Limit Switch: 00, 00: Not Applicable
Home Velocity: 33, 33, 33, 00: 24 mm/sec (3355443/134218)
Offset Distance: 00, 00, 00, 00: Not used
REQUEST:
Command structure (6 bytes):
0
1
41
04
2
3
4
header only
Chan 00
d
Ident
5
s
GET:
Response structure (20 bytes)
6 byte header followed by 14 byte data packet as follows:
0
1
42
04
2
3
header
0E
00
12
13
14
Home Velocity
15
4
5
6
d|
s
Chan Ident
Data
16
17
18
7
8
9
Data
Home Dir
10
11
Limit Switch
19
Offset Distance
For structure see SET message above.
Page 50 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_SET_LIMSWITCHPARAMS
MGMSG_MOT_REQ_LIMSWITCHPARAMS
MGMSG_MOT_GET_LIMSWITCHPARAMS
0x0423
0x0424
0x0425
These functions are not applicable to BBD10x units
Function:
Used to set the limit switch parameters for the specified motor
channel.
SET:
Command structure (22 bytes)
6 byte header followed by 16 byte data packet as follows:
0
1
2
23
04
3
header
10
00
12
13
15
14
Data
CW Soft Limit
4
5
6
d|
s
Chan Ident
16
17
18
CCW Soft Limit
7
19
8
9
Data
CW Hardlimit
20
10
11
CCW Hardlimit
21
Limit Mode
Data Structure:
field
Chan Ident
CW Hard
Limit
CCW Hard
Limit
CW Soft Limit
CCW Soft
Limit
description
The channel being addressed
The operation of the Clockwise hardware limit switch when
contact is made.
0x01 Ignore switch or switch not present.
0x02 Switch makes on contact.
0x03 Switch breaks on contact.
0x04 Switch makes on contact - only used for homes (e.g.
limit switched rotation stages).
0x05 Switch breaks on contact - only used for homes (e.g.
limit switched rotations stages).
0x06 For PMD based brushless servo controllers only uses index mark for homing.
Note. Set upper bit to swap CW and CCW limit switches in
code. Both CWHardLimit and CCWHardLimit structure
members will have the upper bit set when limit switches
have been physically swapped.
0x80 // bitwise OR'd with one of the settings above.
The operation of the Counter Clockwise hardware limit
switch when contact is made.
Clockwise software limit in position steps. A 32 bit unsigned
long value, the scaling factor between real time values and
this parameter is 1 mm is equivalent to 134218. For
example, to set the clockwise software limit switch to 100
mm, send a value of 13421800. (Not applicable to TDC001
units)
Counter Clockwise software limit in position steps (scaling
as for CW limit). (Not applicable to TDC001 units)
format
word
word
word
long
long
Page 51 of 265
Thorlabs APT Controllers
Software
Limit Mode
Example:
Host-Controller Communications Protocol
Software limit switch mode
0x01 Ignore Limit
0x02 Stop Immediate at Limit
0x03 Profiled Stop at limit
0x80 Rotation Stage Limit (bitwise OR'd with one of the
settings above) (Not applicable to TDC001 units)
Issue 15
word
Set the limit switch parameters for chan 2 as follows:
CW Hard Limit – switch makes.
CCW Hard Limit - switch makes
CW Soft Limit – set to 100 mm
CCW Soft Limit - .set to 0 mm
Software Limit Mode – Profiled Stop
TX 23, 04, 10, 00, A2, 01, 01, 00, 02, 00, 02, 00, E8. CC, CC, 00, 00, 00, 00, 00, 03, 00
Header: 23, 04, 10, 00, A2, 01: SetLimSwitchParams, 16 byte data packet, Channel 2.
Chan Ident: 01, 00: Channel 1 (always set to 1 for TDC001)
CW Hard Limit: 02, 00: Switch Makes
CCW Hard Limit: 02, 00: Switch Makes
CW Soft Limit: E8, CC, CC, 00: 100 mm (13421800/134218)
CCW Soft Limit: 00, 00, 00, 00: 0 mm
Soft Limit Mode: 03, 00: Profiled Stop at Limit
REQUEST:
Command structure (6 bytes):
0
1
24
04
2
3
4
header only
Chan 00
d
Ident
5
s
GET:
Response structure (20 bytes)
6 byte header followed by 16 byte data packet as follows:
0
1
2
25
04
3
header
10
00
12
13
15
14
Data
CW Soft Limit
4
5
6
d|
s
Chan Ident
16
17
18
CCW Soft Limit
7
19
8
9
Data
CW Hardlimit
20
10
11
CCW Hardlimit
21
Limit Mode
For structure see SET message above.
Page 52 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_MOT_MOVE_HOME
MGMSG_MOT_MOVE_HOMED
Function:
Issue 15
0x0443
0x0444
Sent to start a home move sequence on the specified motor channel
(in accordance with the home parameters above).
TX structure (6 bytes):
0
1
43
04
2
3
4
header only
Chan 0x
d
Ident
Example:
5
s
Home the motor channel in bay 2
TX 43, 04, 01, 00, 22, 01
HOMED:
Function:
No response on initial message, but upon completion of home
sequence controller sends a “homing completed” message:
RX structure (6 bytes):
0
1
44
04
Example:
2
3
4
header only
Chan 0x
d
Ident
5
s
The motor channel in bay 2 has been homed
RX 44, 04, 01, 00, 01, 22
Page 53 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_MOVE_RELATIVE
Function:
0x0448
This command can be used to start a relative move on the specified
motor channel (using the relative move distance parameter above).
There are two versions of this command: a shorter (6-byte header
only) version and a longer (6 byte header plus 6 data bytes) version.
When the first one is used, the relative distance parameter used for
the move will be the parameter sent previously by a
MGMSG_MOT_SET_MOVERELPARAMS command. If the longer
version of the command is used, the relative distance is encoded in
the data packet that follows the header.
Short version:
TX structure (6 bytes):
0
1
48
04
2
3
4
header only
Chan 0x
d
Ident
5
s
Example:
Move the motor associated with channel 2 by 10 mm. (10 mm was
previously set in the MGMSG_ MOT_SET_MOVERELPARAMS method).
TX 48, 04, 01, 00, 22, 01
Long version:
The alternative way of using this command is by appending the relative move params
structure (MOT_SET_MOVERELPARAMS) to this message header.
Command structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
48
04
2
3
header
06
00
4
5
6
7
d|
s
Chan Ident
8
9
10
Data
Relative Distance
11
Data Structure:
field
Chan Ident
Relative
Distance
description
The channel being addressed
The distance to move. This is a 4 byte signed integer that
specifies the relative distance in position encoder counts. In
the BBD10X series controllers the encoder resolution is
20,000 counts per mm, therefore to set a relative move
distance of 1 mm, set this parameter to 20,000 (twenty
thousand).
format
Word
Long
Page 54 of 265
Thorlabs APT Controllers
Example:
Host-Controller Communications Protocol
Issue 15
Move the motor associated with chan 2 by 10 mm:
TX 48, 04, 06, 00, A2, 01, 01, 00, 40, 0D, 03, 00,
Header: 45, 04, 06, 00, A2, 01: MoveRelative, 06 byte data packet, Channel 2.
Chan Ident: 01, 00: Channel 1 (always set to 1 for TDC001)
Rel Dist: 40, 0D, 03, 00: Set absolute move distance to 10 mm (200,000 encoder counts).
Upon completion of the relative move the controller sends a Move Completed message as
described following.
Page 55 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_MOT_MOVE_COMPLETED
Function:
Issue 15
0x0464
No response on initial message, but upon completion of the relative
or absolute move sequence, the controller sends a “move
completed” message:
RX structure (20 bytes):
0
1
64
04
2
3
4
header only
Chan 0x
d|
Ident
5
s
Followed by a 14-byte data packet described by the same status structures (i.e. MOTSTATUS
and MOTDCSTATUS) described in the STATUS UPDATES section that follows.
Page 56 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_MOVE_ABSOLUTE
Function:
0x0453
Used to start an absolute move on the specified motor channel
(using the absolute move position parameter above). As previously
described in the “MOVE RELATIVE” command, there are two
versions of this command: a shorter (6-byte header only) version
and a longer (6 byte header plus 6 data bytes) version. When the
first one is used, the absolute move position parameter used for the
move will be the parameter sent previously by a
MGMSG_MOT_SET_MOVEABSPARAMS command. If the longer
version of the command is used, the absolute position is encoded in
the data packet that follows the header.
Short version:
TX structure (6 bytes):
0
1
53
04
2
3
4
header only
Chan 0x
d
Ident
5
s
Example:
Move the motor associated with channel 2 to 10 mm. (10 mm was
previously set in the MGMSG_ MOT_SET_MOVEABSPARAMS method).
TX 53, 04, 01, 00, 22, 01
Long version:
The alternative way of using this command by appending the absolute move params
structure (MOTABSMOVEPARAMS) to this message header.
Command structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
53
04
2
3
header
06
00
4
5
6
7
d|
s
Chan Ident
8
9
10
Data
Absolute Distance
11
Data Structure:
field
Chan Ident
Absolute
Distance
description
The channel being addressed
The distance to move. This is a 4 byte signed integer that
specifies the absolute distance in position encoder counts.
In the BBD10X series controllers the encoder resolution is
20,000 counts per mm, therefore to set an absolute move
distance of 100 mm, set this parameter to 2,000,000 (two
million).
format
Word
Long
Page 57 of 265
Thorlabs APT Controllers
Example:
Host-Controller Communications Protocol
Issue 15
Move the motor associated with chan 2 to 10 mm:
TX 53, 04, 06, 00, A2, 01, 01, 00, 40, 0D, 03, 00,
Header: 45, 04, 06, 00, A2, 01: MoveAbsolute, 06 byte data packet, Channel 2.
Chan Ident: 01, 00: Channel 1 (always set to 1 for TDC001)
Abs Dist: 40, 0D, 03, 00: Set the absolute move distance to 10 mm (200,000 encoder counts).
Upon completion of the absolute move the controller sends a Move Completed message as
previously described.
Page 58 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_MOVE_JOG
Function:
0x046A
Sent to start a jog move on the specified motor channel.
TX structure (6 bytes):
0
1
6A
04
2
3
header only
Chan Direction
Ident
4
d
5
s
Data Structure:
field
Chan Ident
Direction
description
The channel being addressed
The direction to Jog. Set this byte to 0x01 to jog forward, or
to 0x02 to jog in the reverse direction.
format
word
word
Upon completion of the jog move the controller sends a Move Completed message as
previously described.
Note. The direction of the jog move is device dependent, i.e. on some devices jog forward
may be towards the home position while on other devices it could be the opposite.
Page 59 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_MOT_MOVE_VELOCITY
Function:
Issue 15
0x0457
This command can be used to start a move on the specified motor
channel.
When this method is called, the motor will move continuously in the
specified direction, using the velocity parameters set in the
MGMSG_MOT_SET_MOVEVELPARAMS command until either a stop
command (either StopImmediate or StopProfiled) is called, or a limit
switch is reached.
TX structure (6 bytes):
0
1
57
04
2
3
header only
Chan Direction
Ident
4
d
5
s
Data Structure:
field
Chan Ident
Direction
description
The channel being addressed
The direction to Jog. Set this byte to 0x01 to move forward,
or to 0x02 to move in the reverse direction.
format
word
word
Upon completion of the move the controller sends a Move Completed message as
previously described.
Example:
Move the motor associated with channel 2 forwards.
TX 57, 04, 01, 01, 22, 01
Page 60 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_MOVE_STOP
Function:
0x0465
Sent to stop any type of motor move (relative, absolute, homing or
move at velocity) on the specified motor channel.
TX structure (6 bytes):
0
1
65
04
2
3
header only
Chan Stop
Ident Mode
4
d
5
s
Data Structure:
field
Chan Ident
Stop Mode
description
The channel being addressed
The stop mode defines either an immediate (abrupt) or
profiles tops. Set this byte to 0x01 to stop immediately, or to
0x02 to stop in a controller (profiled) manner.
format
word
word
Upon completion of the stop move the controller sends a Move Stopped message as
described following
Page 61 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_MOT_MOVE_STOPPED
Function:
Issue 15
0x0466
No response on initial message, but upon completion of the stop
move, the controller sends a “move stopped” message:
RX structure (20 bytes):
0
1
66
04
2
3
4
header only
0E
0x
d|
5
s
Followed by a 14-byte data packet described by the same status structures (i.e. MOTSTATUS
and MOTDCSTATUS) described in the STATUS UPDATES section that follows.
Page 62 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_MOT_SET_BOWINDEX
MGMSG_MOT_REQ_BOWINDEX
MGMSG_MOT_GET_BOWINDEX
Function:
Issue 15
0x04F4
0x04F5
0x04F6
To prevent the motor from stalling, it must be ramped up gradually
to its maximum velocity. Certain limits to velocity and acceleration
result from the torque and speed limits of the motor, and the inertia
and friction of the parts it drives. The system incorporates a
trajectory generator, which performs calculations to determine the
instantaneous position, velocity and acceleration of each axis at any
given moment. During a motion profile, these values will change
continuously. Once the move is complete, these parameters will
then remain unchanged until the next move begins. The specific
move profile created by the system depends on several factors, such
as the profile mode and profile parameters presently selected, and
other conditions such as whether a motion stop has been
requested.
The Bow Index parameter is used to set the profile mode to either
Trapezoidal or S-curve. A Bow Index of ‘0’ selects a trapezoidal
profile. An index value of ‘1’ to ‘18’ selects an S-curve profile. In
either case, the velocity and acceleration of the profile are specified
using the Velocity Profile parameters on the Moves/Jogs tab. The
Trapezoidal profile is a standard, symmetrical
acceleration/deceleration motion curve, in which the start velocity is
always zero. This profile is selected when the Bow Index field is set
to ‘0’.
velocity
m aximu m
velo cit y (v)
a cceleratio n (slo pe ) a
tim e
In a typical trapezoidal velocity profile, (see above), the stage is ramped at acceleration ‘a’ to
a maximum velocity ‘v’. As the destination is approached, the stage is decelerated at ‘a’ so
that the final position is approached slowly in a controlled manner.
The S-curve profile is a trapezoidal curve with an additional 'Bow Value' parameter, which
limits the rate of change of acceleration and smooths out the contours of the motion profile.
The Bow Value is applied in mm/s3 and is derived from the Bow Index as follows:
Bow Value = 2 (Bow Index -1) within the range 1 to 262144 (Bow Index 1 to 18).
In this profile mode, the acceleration increases gradually from 0 to the specified acceleration
value, then decreases at the same rate until it reaches 0 again at the specified velocity. The
same sequence in reverse brings the axis to a stop at the programmed destination position.
Page 63 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Example
The figure above shows a typical S-curve profile. In segment (1), the S-curve profile drives
the axis at the specified Bow Index (BI) until the maximum acceleration (A) is reached. The
axis continues to accelerate linearly (Bow Index = 0) through segment (2). The profile then
applies the negative value of Bow Index to reduce the acceleration to 0 during segment (3).
The axis is now at the maximum velocity (V), at which it continues through segment (4). The
profile then decelerates in a similar manner to the acceleration phase, using the Bow Index
to reach the maximum deceleration (D) and then bring the axis to a stop at the destination.
Note
The higher the Bow Index, then the shorter the BI phases of the curve, and the steeper the
acceleration and deceleration phases. High values of Bow Index may cause a move to
overshoot.
SET:
Command structure (10 bytes)
6 byte header followed by 4 byte data packet as follows:
0
1
F4
04
2
3
header
04
00
4
5
6
7
d|
s
Chan Ident
Data
8
9
Bow Index
Data Structure:
field
Chan Ident
BowIndex
Example:
description
The channel being addressed
This parameter is used to set the profile mode to either
Trapezoidal or S-curve. A Bow Index of ‘0’ selects a
trapezoidal profile. An index value of ‘1’ to ‘18’ selects an Scurve profile.
format
word
word
Set the Bow Index to 18 for Channel 1 as follows:
TX F4, 04, 04, 00, A2, 01, 01, 00, 12, 00,
Header: F4, 04, 04, 00, A2, 01: Set_BowIndex, 04 byte data packet,
Chan Ident: 01, 00: Channel 1
Bow Index: 12, 00,: Set the Bow Index to 18
Page 64 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
REQUEST:
Command structure (6 bytes):
0
1
F5
04
2
3
4
header only
Chan 00
d
Ident
5
s
GET:
6 byte header followed by 4 byte data packet as follows:
0
1
F6
04
2
3
header
04
00
4
5
6
7
d|
s
Chan Ident
Data
8
9
Bow Index
For structure see SET message above.
Page 65 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_MOT_SET_DCPIDPARAMS
MGMSG_MOT_REQ_DCPIDPARAMS
MGMSG_MOT_GET_DCPIDPARAMS
Function:
Issue 15
0x04A0
0x04A1
0x04A2
Used to set the position control loop parameters for the specified
motor channel.
The motion processor within the controller uses a position control
loop to determine the motor command output. The purpose of the
position loop is to match the actual motor position and the
demanded position. This is achieved by comparing the demanded
position with the actual position to create a position error, which is
then passed through a digital PID-type filter. The filtered value is the
motor command output.
NOTE. These settings apply to LM628/629 based servo controllers
(only TDC001 at this time). Refer to data sheet for National
Semiconductor LM628/LM629 for further details on setting these
PID related parameters.
SET:
Command structure (26 bytes)
6 byte header followed by 20 byte data packet as follows:
0
1
A0
12
2
4
5
6
04
3
header
14
00
d|
s
Chan Ident
13
14
16
17
19
Integral
15
18
Data
Differential
7
8
20
9
10
Data
Proportional
21
22
11
23
Integral Limit
24
25
Data
FilterControl
Data Structure:
field
Chan Ident
Proportional
Integral
Differential
Integral Limit
FilterControl
description
The channel being addressed
The proportional gain. Together with the Integral and
Differential, these terms determine the system response
characteristics and accept values in the range 0 to 32767.
The integral gain. Together with the Proportional and
Differential, these terms determine the system response
characteristics and accept values in the range 0 to 32767.
The differential gain. Together with the Proportional and
Integral, these terms determine the system response
characteristics and accept values in the range 0 to 32767.
The Integral Limit parameter is used to cap the value of the
lntegrator to prevent runaway of the integral sum at the
output. It accepts values in the range 0 to 32767. If set to 0
then the integration term in the PID loop is ignored.
Identifies which of the above parameters are applied by
format
word
long
long
long
long
word
Page 66 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
setting the corresponding bit to ‘1’. By default, all
parameters are applied, and this parameter is set to 0F
(1111).
Example:
Set the PID parameters for TDC001 as follows:
Proportional: 65
Integral: 175
Differential: 600
Integral Limit: 20,000
FilCon: 15
TX A0, 04, 14, 00, D0, 01, 01, 00, 41, 00, AF, 00, 58, 02, 20, 4E, 00, 00, 0F, 00
Header: A0, 04, 14, 00, D0, 01: Set_DCPIDParams, 20 byte data packet, Generic USB Device.
Chan Ident: 01, 00: Channel 1 (always set to 1 for TDC001)
Proportional: 41, 00,: Set the proportional term to 65
Integral: AF, 00,: Set the integral term to 175
Differential: 58, 02,: Set the differential term to 600
Integral Limit: 20, 4E, 00, 00,: Set the integral limit to 20,000
FilterControl: 0F, 00: Set all terms to active.
REQUEST:
Command structure (6 bytes):
0
1
A0
04
2
3
header only
Chan 00
Ident
4
d
5
s
GET:
6 byte header followed by 20 byte data packet as follows:
0
1
A0
12
2
4
5
6
04
3
header
14
00
d|
s
Chan Ident
13
14
16
17
19
15
Integral
18
Data
Differential
7
8
20
9
10
Data
Proportional
21
22
11
23
Integral Limit
24
25
Data
FilterControl
For structure see Set message above.
Page 67 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_MOT_SET_AVMODES
MGMSG_MOT_REQ_AVMODES
MGMSG_MOT_GET_AVMODES
Function:
Issue 15
0x04B3
0x04B4
0x04B5
The LED on the control keypad can be configured to indicate certain
driver states.
All modes are enabled by default. However, it is recognised that in a
light sensitive environment, stray light from the LED could be
undesirable. Therefore it is possible to enable selectively, one or all
of the LED indicator modes described below by setting the
appropriate value in the Mode Bits parameter.
SET:
Command structure (10 bytes)
6 byte header followed by 4 byte data packet as follows:
0
1
B3
04
2
3
header
04
00
4
5
6
7
d|
s
Chan Ident
Data
8
9
ModeBits
Data Structure:
field
description
Chan Ident
The channel being addressed
ModeBits
The mode of operation for the LED is set according to the hex
value entered in the mode bits.
1 LEDMODE_IDENT: The LED will flash when the ‘Ident’
message is sent.
format
word
word
2 LEDMODE_LIMITSWITCH: The LED will flash when the
motor reaches a forward or reverse limit switch.
8 LEDMODE_MOVING: The LED is lit when the motor is
moving.
Example:
Set the LED to flash when the IDENT message is sent, and also when the
motor is moving.
TX B3, 04, 04, 00, D0, 01, 01, 00, 09, 00,
Header: B3, 04, 04, 00, D0, 01: SetAVModes, 04 byte data packet, Generic USB Device.
Chan Ident: 01, 00: Channel 1 (always set to 1 for TDC001)
ModeBits: 09, 00 (i.e. 1 + 8)
Similarly, if the ModeBits parameter is set to ‘11’ (1 + 2 + 8) all modes will be enabled.
REQUEST:
Command structure (6 bytes):
Page 68 of 265
Thorlabs APT Controllers
0
1
11
04
Host-Controller Communications Protocol
2
3
4
header only
Chan 00
d
Ident
Issue 15
5
s
GET:
Response structure (10 bytes)
6 byte header followed by 4 byte data packet as follows:
0
1
B5
04
2
3
header
04
00
4
5
6
7
d|
s
Chan Ident
Data
8
9
ModeBits
For structure see SET message above.
Page 69 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_SET_POTPARAMS
MGMSG_MOT_REQ_POTPARAMS
MGMSG_MOT_GET_POTPARAMS
Function:
0x04B0
0x04B1
0x04B2
The potentiometer slider on the control panel panel is sprung, such
that when released it returns to it’s central position. In this central
position the motor is stationary. As the slider is moved away from
the center, the motor begins to move; the speed of this movement
increases as the slider deflection is increased. Bidirectional control
of motor moves is possible by moving the slider in both directions.
The speed of the motor increases by discrete amounts rather than
continuously, as a function of slider deflection. These speed settings
are defined by 4 pairs of parameters. Each pair specifies a pot
deflection value (in the range 0 to 127) together with an associated
velocity (set in encoder counts/sec) to be applied at or beyond that
deflection. As each successive deflection is reached by moving the
pot slider, the next velocity value is applied. These settings are
applicable in either direction of pot deflection, i.e. 4 possible
velocity settings in the forward or reverse motion directions.
Note. The scaling factor between encoder counts and mm/sec
depends on the specific stage/actuator being driven.
SET:
Command structure (32 bytes)
6 byte header followed by 26 byte data packet as follows:
0
1
B0
12
2
4
5
6
04
3
header
1A
00
d|
s
Chan Ident
13
14
16
17
Vel1
24
15
Wnd1
25
Vel3
26
27
Wnd3
Data
28
Data
Vel2
29
18
7
19
8
9
Data
ZeroWnd
20
21
Wnd2
30
10
11
Vel1
22
23
Vel3
31
Vel4
Data Structure:
field
Chan Ident
ZeroWnd
Vel1
Wnd1
Vel2
Wnd2
description
The channel being addressed
The deflection from the mid position (in ADC counts 0 to 127)
before motion can start
The velocity (in encoder counts /sec) to move when between
Wnd0 and PotDef1
The deflection from the mid position (in ADC counts, Wnd0
to 127) to apply Vel1
The velocity (in encoder counts /sec) to move when between
PotDef1 and PotDef2
The deflection from the mid position (in ADC counts, PotDef1
to 127) to apply Vel2
format
word
word
long
word
long
word
Page 70 of 265
Thorlabs APT Controllers
Vel3
Wnd3
Vel4
Host-Controller Communications Protocol
Issue 15
The velocity (in encoder counts/sec) to move when between
PotDef2 and PotDef3
The deflection from the mid position (in ADC counts PotDef2
to 127) to apply Vel3
The velocity (in encoder counts /sec) to move when beyond
PotDef3
long
word
long
Example:
For the Z8 series motors, there are 512 encoder counts per revolution of the
motor. The output shaft of the motor goes into a 67:1 planetary gear head. This requires the
motor to rotate 67 times to rotate the 1.0 mm pitch lead screw one revolution. The end
result is the lead screw advances by 1.0 mm.
Therefore, a 1 mm linear displacement of the actuator is given by
512 x 67 = 34,304 encoder counts
whereas the linear displacement of the lead screw per encoder count is given by
1.0 mm / 34,304 counts = 2.9 x 10-5 mm (29 nm).
Typical parameters settings Hex (decimal)
ZeroWnd – 14 (20)
Vel1 – 66, 0D,00,00 (3430)
Wnd1 – 32 (50)
Vel2 – CC, 1A, 00, 00 (6860)
Wnd2 – 50 (80)
Vel3 – 32, 28, 00, 00 (10290)
Wnd3 – 64 (100)
Vel4 – 00, 43, 00, 00 (17152)
Using the parameters above, no motion will start until the pot has been deflected to 20
(approx 1/6 full scale deflection), when the motor will start to move at 0.1mm/sec. At a
deflection of 50 (approx 2/5 full scale deflection) the motor velocity will increase to
0.2mm/sec, and at 80, velocity will increase to 0.3 mm/sec. When the pot is deflected to 100
and beyond, the velocity will be 0.5 mm/sec.
Note. It is acceptable to set velocities equal to each other to reduce the number of speeds,
however this is not allowed for the deflection settings, whereby the Wnd3 Pot Deflection
value must be greater than Wnd2 Pot Deflection value.
TX B0, 04, 1A, 00, D0, 01, 01, 00, 01, 00, E8, 03, 00, 00, 00, 00, 00, 00, B0,35, 00, 00, CD, CC,
CC, 00, 02, 00
Header: B0, 04, 1A, 00, D0, 01: Set Pot Params, 1AH (26) byte data packet, Generic USB
Device.
Chan Ident: 01, 00: Channel 1 (always set to 1 for TDC001)
Wnd0: 14 (20 ADC Counts)
Vel1: 66, 0D,00,00 (3430 Encoder Counts/sec = 0.1 mm/sec)
PotDef1: 32 (50 ADC Counts)
Vel2: CC, 1A, 00, 00 (6860 Encoder Counts/sec = 0.2 mm/sec)
PotDef2: 50 (80 ADC Counts)
Page 71 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Vel3: 32, 28, 00, 00 (10290 Encoder Counts/sec = 0.3 mm/sec)
PotDef3: 64 (100 ADC Counts)
Vel4: 00, 43, 00, 00 (17152 Encoder Counts/sec = 0.5 mm/sec)
REQUEST:
Command structure (6 bytes):
0
1
17
04
2
3
4
header only
Chan 00
d
Ident
5
s
GET:
Response structure (28 bytes)
6 byte header followed by 22 byte data packet as follows:
0
1
B0
12
2
4
5
6
04
3
header
1A
00
d|
s
Chan Ident
13
14
16
17
Vel1
24
Wnd1
25
Vel3
15
26
27
Data
28
Wnd3
Data
Vel2
29
18
7
19
8
9
Data
ZeroWnd
20
21
Wnd2
30
10
11
Vel1
22
23
Vel3
31
Vel4
For structure see SET message above.
Page 72 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_SET_BUTTONPARAMS
MGMSG_MOT_REQ_BUTTONPARAMS
MGMSG_MOT_GET_BUTTONPARAMS
Function:
0x04B6
0x04B7
0x04B8
The control keypad can be used either to jog the motor, or to
perform moves to absolute positions. This function is used to set the
front panel button functionality.
SET:
Command structure (22 bytes)
6 byte header followed by 16 byte data packet as follows:
0
1
B6
04
3
header
10
00
12
13
14
Position1
Data Structure:
field
Chan Ident
Mode
Position1
Position2
TimeOut
Not Used
2
15
4
5
d|
s
16
Position2
Data
17
6
7
8
Chan Ident
18
19
TimeOut
20
Data
Mode
9
10
11
Position1
21
Not Used
description
The channel being addressed
The buttons on the keypad can be used either to jog the
motor (jog mode), or to perform moves to absolute
positions (go to position mode).
If set to 0x01, the buttons are used to jog the motor. Once
set to this mode, the move parameters for the buttons are
taken from the ‘Jog’ parameters set via the ‘Move/Jogs'
settings tab or the SetJogParams methods.
If set to 0x02, each button can be programmed with a
different position value (as set in the Position 1 and Position
2 parameters), such that the controller will move the motor
to that position when the specific button is pressed.
The position (in encoder counts) to which the motor will
move when the top button is pressed.
This parameter is applicable only if ‘Go to Position is
selected in the ‘Mode’ parameter.
The position (in encoder counts) to which the motor will
move when the bottom button is pressed.
This parameter is applicable only if ‘Go to Position is
selected in the ‘Mode’ parameter.
A ‘Home’ move or can be performed by pressing and
holding both buttons. Furthermore, the present position can
be entered into the Position 1 or Position 2 parameter by
holding down the associated button. The Time Out
parameter specifies the time in ms that the button(s) must
be depressed. This function is independent of the ‘Mode’
setting and in normal circumstances should not require
adjustment. (Not applicable to TDC001 units)
format
word
word
long
long
word
word
Page 73 of 265
Thorlabs APT Controllers
Example:
Host-Controller Communications Protocol
Issue 15
Set the button parameters for TDC001 as follows:
Mode: Go To Position
Position1: 0.5 mm
Position2: 1.2 mm
TimeOut: 2 secs
TX B6, 04, 10, 00, D0, 01, 01, 00, 02, 00, C0, 12, 00, 00, 00, 00, 00, 00, 00, 00
Header: B6, 04, 10, 00, D0, 01: SetButtonParams, 10H (16) byte data packet, Generic USB
Device
Chan Ident: 01, 00: Channel 1 (always set to 1 for TDC001)
Mode: 02, 00 (i.e. Go to position)
Position1: 00, 43, 00, 00 (17152 Encoder Counts = 0.5 mm)
Position2: CC, A0, 00, 00 (41164 encoder counts = 1.2 mm):
TimeOut: D0, 07: (2 seconds)
REQUEST:
Command structure (6 bytes):
0
1
DB
2
3
header only
Chan 00
Ident
04
4
5
d
s
GET:
Response structure (20 bytes)
6 byte header followed by 16 byte data packet as follows:
0
1
B6
04
3
header
10
00
12
13
14
Position1
2
15
4
5
d|
s
16
Data
17
Position2
6
7
8
Chan Ident
18
19
TimeOut
20
Data
Mode
9
10
11
Position1
21
Not Used
For structure see SET message above.
Page 74 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_MOT_SET_EEPROMPARAMS
Function:
Issue 15
0x04B9
Used to save the parameter settings for the specified message.
These settings may have been altered either through the various
method calls or through user interaction with the GUI (specifically,
by clicking on the ‘Settings’ button found in the lower right hand
corner of the user interface).
SET:
Command structure (10 bytes)
6 byte header followed by 4 byte data packet as follows:
0
1
B9
04
2
3
header
04
00
4
5
6
7
d|
s
Chan Ident
Data
8
9
MsgID
Data Structure:
field
Chan Ident
MsgID
description
The channel being addressed
The message ID of the message containing the parameters
to be saved.
format
word
word
Example:
TX B9, 04, 04, 00, D0, 01, 01, 00, B6, 04,
Header: B9, 04, 04, 00, D0, 01: Set_EEPROMPARAMS, 04 byte data packet, Generic USB
Device.
Chan Ident: 01, 00: Channel 1
MsgID: Save parameters specified by message 04B6 (SetButtonParams).
Page 75 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_SET_PMDPOSITIONLOOPPARAMS
MGMSG_MOT_REQ_PMDPOSITIONLOOPPARAMS
MGMSG_MOT_GET_PMDPOSITIONLOOPPARAMS
Function:
0x04D7
0x04D8
0x04D9
Used to set the position control loop parameters for the specified
motor channel.
The motion processors within the BBD series controllers use a
position control loop to determine the motor command output. The
purpose of the position loop is to match the actual motor position
and the demanded position. This is achieved by comparing the
demanded position with the actual encoder position to create a
position error, which is then passed through a digital PID-type filter.
The filtered value is the motor command output.
SET:
Command structure (34 bytes)
6 byte header followed by 28 byte data packet as follows:
0
1
D7
12
2
4
5
6
04
3
header
1C
00
d|
s
Chan Ident
13
14
16
17
15
ILimPos
24
25
KaffPos
26
27
Data
7
18
19
Differential
KdTimePos
28
30
PosErrLim
Data
29
31
N/A
8
Data
Kp Pos
20
9
21
KoutPos
32
10
11
Integral
22
23
KvffPos
33
N/A
Data Structure:
field
Chan Ident
Kp Pos
Integral
ILimPos
Differential
KdTimePos
description
The channel being addressed
The proportional gain. Together with the Integral and
Differential, these terms determine the system response
characteristics and accept values in the range 0 to 32767.
The integral gain. Together with the Proportional and
Differential, these terms determine the system response
characteristics and accept values in the range 0 to 32767.
The Integral Limit parameter is used to cap the value of the
lntegrator to prevent runaway of the integral sum at the
output. It accepts values in the range 0 to 7FFFFFFF. If set to
0 then the integration term in the PID loop is ignored.
The differential gain. Together with the Proportional and
Integral, these terms determine the system response
characteristics and accept values in the range 0 to 32767.
Under normal circumstances, the derivative term of the PID
loop is recalculated at every servo cycle. However, it may be
desirable to reduce the sampling rate to a lower value, in
order to increase stability or simplify tuning. The KdTimePos
parameter is used to set the sampling rate. For example, if
format
word
word
word
dword
word
word
Page 76 of 265
Thorlabs APT Controllers
KoutPos
KvffPos
KaffPos
PosErrLim
Not Used
Not Used
Example:
Host-Controller Communications Protocol
set to 10, the derivative term is calculated every 10 servo
cycles. The value is set in cycles, in the range 1 to 32767.
The KoutPos parameter is a scaling factor applied to the
output of the PID loop. It accepts values in the range 0 to
65535, where 0 is 0% and 65535 is 100%.
The KvffPos and KaffPos parameters are velocity and
acceleration feed-forward terms that are added to the
output of the PID filter to assist in tuning the motor drive
signal. They accept values in the range 0 to 32767.
Under certain circumstances, the actual encoder position
may differ from the demanded position by an excessive
amount. Such a large position error is often indicative of a
potentially dangerous condition such as motor failure,
encoder failure or excessive mechanical friction. To warn of,
and guard against this condition, a maximum position error
can be set in the PosErrLim parameter, in the range 0 to
7FFFFFFF. The actual position error is continuously
compared against the limit entered, and if exceeded, the
Motion Error bit (bit 15) of the Status Register is set and the
associated axis is stopped.
Issue 15
word
word
word
dword
word
word
Set the PID parameters for chan 2 as follows:
Proportional: 65
Integral: 175
Integral Limit: 80,000
Differential: 600
KdTimePos: 5
KoutPos: 5%
KvffPos: 0
KaffPos: 1000
PosErrLim: 65535
TX D7, 04, 1C, 00, A2, 01, 01, 00, 41, 00, AF, 00, 80, 38, 01, 00, 58, 02, 05, 00, CD, 0C, 00, 00,
E8, 03, FF, FF, 00, 00, 00, 00
Header: D7, 04, 1C, 00, A2, 01: Set_PMDPositionLoopParams, 28 byte data packet, Channel
2.
Chan Ident: 01, 00: Channel 1 (always set to 1 for BBD202)
Proportional: 41, 00,: Set the proportional term to 65
Integral: AF, 00,: Set the integral term to 175
Integral Limit: 80, 38, 01, 00,: Set the integral limit to 80,000
Differential: 58, 02,: Set the differential term to 600
KdTimePos: 05, 00,: Set the sampling rate to 5 cycles
KoutPos: CD, 0C,: Set the output scaling factor to 5% (i.e. 3277)
KvffPos: 00, 00,: Set the velocity feed forward value to zero
KaffPos: E8, 03,: Set the acceleration feed forward value to 1000
PosErrLim: FF, FF, 00, 00,: Set the position error limit to 65535.
Page 77 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
REQUEST:
Command structure (6 bytes):
0
1
D8
2
3
header only
Chan 00
Ident
04
4
d
5
s
GET:
Response structure (34 bytes)
6 byte header followed by 28 byte data packet as follows:
0
1
D9
12
2
4
5
6
04
3
header
1C
00
d|
s
Chan Ident
13
14
16
17
15
ILinPos
24
25
KaffPos
26
27
Data
7
18
19
Differential
KdTimePos
28
30
Data
PosErrLim
29
31
N/A
8
Data
Kp Pos
20
9
21
KoutPos
32
10
11
Integral
22
23
KvffPos
33
N/A
For structure see SET message above.
Page 78 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_SET_PMDMOTOROUTPUTPARAMS
MGMSG_MOT_REQ_PMDMOTOROUTPUTPARAMS
MGMSG_MOT_GET_PMDMOTOROUTPUTPARAMS
Function:
0x04DA
0x04DB
0x04DC
Used to set certain limits that can be applied to the motor drive
signal. The individual limits are described below.
SET:
Command structure (20 bytes)
6 byte header followed by 14 byte data packet as follows:
0
1
DA
04
3
header
0E
00
12
13
14
Motor Limit
2
15
Motor Bias
Data
4
5
d|
s
16
17
Not Used
6
7
Chan Ident
18
8
9
Data
Cont Current Lim
10
11
Energy Limit
19
Not Used
Data Structure:
field
description
Chan Ident
The channel being addressed
ContCurrentLim The system incorporates a current ‘foldback’ facility,
whereby the continuous current level can be capped. The
continuous current limit is set in the ContCurrentLim
parameter, which accepts values as a percentage of
maximum peak current, in the range 0 to 32767 (0 to
100%), which is the default maximum level set at the
factory (this maximum value cannot be altered).
EnergyLim
When the current output of the drive exceeds the limit set
in the ContCurrentLim parameter, accumulation of the
excess current energy begins. The EnergyLim parameter
specifies a limit for this accumulated energy, as a
percentage of the factory set default maximum, in the
range 0 to 32767 (0 to 100%). When the accumulated
energy exceeds the value specified in the EnergyLim
parameter, a ‘current foldback’ condition is said to exist,
and the commanded current is limited to the value
specified in the ContCurrentLim parameter. When this
occurs, the Current Foldback status bit (bit 25) is set in the
Status Register. When the accumulated energy above the
ContCurrentLim value falls to 0, the limit is removed and
the status bit is cleared.
MotorLim
The MotorLim parameter sets a limit for the motor drive
signal and accepts values in the range 0 to 32767 (100%). If
the system produces a value greater than the limit set, the
motor command takes the limiting value. For example, if
MotorLim is set to 30000 (91.6%), then signals greater
than 30000 will be output as 30000 and values less than
-30000 will be output as -30000.
MotorBias
When an axis is subject to a constant external force in one
format
word
word
word
word
word
Page 79 of 265
Thorlabs APT Controllers
Issue 15
direction (such as a vertical axis pulled downwards by
gravity) the servo filter can compensate by adding a
constant DC bias to the output. This bias is set in the
MotorBias parameter, which accepts values in the range
-32767 to 32768. The default value is 0. Once set, the
motor bias is applied while the position loop is enabled.
Not Used
Not Used
Example:
Host-Controller Communications Protocol
word
word
Set the motor output parameters for chan 2 as follows:
Continuous Current: 20%
Energy Limit: 14%
Motor Limit: 100%
Motor Bias: zero
TX DA, 04, 0E, 00, A2, 01, 01, 00, 99, 19, C0, 12, 00, 00, 00, 00, 00, 00, 00, 00
Header: DA, 04, 0E, 00, A2, 01: Set MotorOutputParams, 0EH (14) byte data packet, Channel
2.
Chan Ident: 01, 00: Channel 1 (always set to 1 for BBD202)
Cont Current Limit:
Energy Limit: 99, 19: Set the energy limit to 14%
Motor Limit: C0, 12: Set the motor limit to 100%
Motor Bias: 00, 00: Set the motor bias to zero
REQUEST:
Command structure (6 bytes):
0
1
DB
2
3
header only
Chan 00
Ident
04
4
d
5
s
GET:
Response structure (20 bytes)
6 byte header followed by 14 byte data packet as follows:
0
1
DC
04
3
header
0E
00
12
13
14
Motor Limit
2
15
Motor Bias
Data
4
5
d|
s
16
17
Not Used
6
7
Chan Ident
18
8
9
Data
Cont Current Lim
10
11
Energy Limit
19
Not Used
For structure see SET message above.
Page 80 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_MOT_SET_PMDTRACKSETTLEPARAMS
MGMSG_MOT_REQ_PMDTRACKSETTLEPARAMS
MGMSG_MOT_GET_PMDTRACKSETTLEPARAMS
Function:
Issue 15
0x04E0
0x04E1
0x04E2
Moves are generated by an internal profile generator, and are based
on either a trapezoidal or S-curve trajectory. A move is considered
complete when the profile generator has completed the calculated
move and the axis has 'settled' at the demanded position. This
command contains parameters which specify when the system is
settled.
Further Information
The system incorporates a monitoring function, which continuously indicates whether or not
the axis has ‘settled’. The ‘Settled’ indicator is bit 14 in the Status Register and is set when
the associated axis is settled. Note that the status bit is controlled by the processor, and
cannot be set or cleared manually.
The axis is considered to be ‘settled’ when the following conditions are met:
* the axis is at rest (i.e. not performing a move),
* the error between the demanded position and the actual motor
position is less than or equal to a specified number of encoder
counts (0 to 65535) set in the SettleWnd parameter (Settle
Window),
* the above two conditions have been met for a specified number of
cycles (settle time, 1 cycle = 102.4 µs), set in the SettleTime
parameter (range 0 to 32767).
The above settings are particularly important when performing a sequence of moves. If the
PID parameters are set such that the settle window cannot be reached, the first move in the
sequence will never complete, and the sequence will stall. The settle window and settle time
values should be specified carefully, based on the required positional accuracy of the
application. If positional accuracy is not a major concern, the settle time should be set to '0'.
In this case, a move will complete when the motion calculated by the profile generator is
completed, irrespective of the actual position attained, and the settle parameters described
above will be ignored.
The processor also provides a ‘tracking window’, which is used to monitor servo
performance outside the context of motion error. The tracking window is a programmable
position error limit within which the axis must remain, but unlike the position error limit set
in the SetDCPositionLoopParams method, the axis is not stopped if it moves outside the
specified tracking window. This function is useful for processes that rely on the motor’s
correct tracking of a set trajectory within a specific range. The tracking window may also be
used as an early warning for performance problems that do not yet qualify as motion error.
The size of the tracking window (i.e. the maximum allowable position error while remaining
within the tracking window) is specified in the TrackWnd parameter, in the range 0 to 65535.
If the position error of the axis exceeds this value, the Tracking Indicator status bit (bit 13) is
Page 81 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
set to 0 in the Status Register. When the position error returns to within the window
boundary, the status bit is set to 1.
SET:
Command structure (18 bytes)
6 byte header followed by 12 byte data packet as follows:
0
1
E0
12
4
5
6
04
3
header
0C
00
d|
s
Chan Ident
13
14
16
17
Track Window
2
15
Data
Not Used
7
8
Data
Time
9
10
11
Settle Window
Not Used
Data Structure:
field
Chan Ident
Time
description
The channel being addressed
The time that the associated axis must be settled before the
‘Settled’ status bit is set. The time is set in cycles, in the
range 0 to 32767, 1 cycle = 102.4 µs.
Settle
The position error is defined as the error between the
Window
demanded position and the actual motor position. This
parameter specifies the number of encoder counts (in the
range 0 to 65535) that the position error must be less than
or equal to, before the axis is considered ‘settled’.
Track Window The maximum allowable position error (in the range 0 to
65535) whilst tracking .
Not Used
Not Used
Example:
format
word
word
word
word
word
word
Set the track and settle parameters for chan 2 as follows:
Settle Time: 20%
Settle Window: 14%
Track Window: 100%
s
TX E0, 04, 0C, 00, A2, 01, 01, 00, 00, 00, 14, 00, 00, 00, 00, 00, 00, 00, 00, 00
Header: E0, 04, 0C, 00, A2, 01: Set MotorOutputParams, 0CH (12) byte data packet, Channel
2.
Chan Ident: 01, 00: Channel 1 (always set to 1 for BBD202)
Time: 00, 00: Set the Settle time to zero
Settle Window: 14, 00: Set the settle window to 20 encoder counts
Track Window: 00, 00: Set the track window to zero
Page 82 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
REQUEST:
Command structure (6 bytes):
0
1
E1
04
2
3
4
header only
Chan 00
d
Ident
5
s
GET:
Response structure (18 bytes)
6 byte header followed by 12 byte data packet as follows:
0
1
E2
12
4
5
6
04
3
header
0C
00
d|
s
Chan Ident
13
14
16
17
Track Window
2
15
Data
Not Used
7
8
Data
Time
9
10
11
Settle Window
Not Used
For structure see SET message above.
Page 83 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_SET_PMDPROFILEMODEPARAMS
MGMSG_MOT_REQ_PMDPROFILEMODEPARAMS
MGMSG_MOT_GET_PMDPROFILEMODEPARAMS
Function:
0x04E3
0x04E4
0x04E5
The system incorporates a trajectory generator, which performs
calculations to determine the instantaneous position, velocity and
acceleration of each axis at any given moment. During a motion
profile, these values will change continuously. Once the move is
complete, these parameters will then remain unchanged until the
next move begins.
The specific move profile created by the system depends on several
factors, such as the profile mode and profile parameters presently
selected, and other conditions such as whether a motion stop has
been requested. This method is used to set the profile mode to
either ‘Trapezoidal’ or ‘S-curve’.
SET:
Command structure (18 bytes)
6 byte header followed by 12 byte data packet as follows:
0
1
E3
12
4
5
6
04
3
header
0C
00
d|
s
Chan Ident
13
14
16
17
Jerk
Data Structure:
field
Chan Ident
Mode
Jerk
Not Used
Not Used
2
15
Data
Not Used
7
8
Data
Mode
9
10
11
Jerk
Not Used
description
The channel being addressed
The move profile to be used:
Trapezoidal: 0
S-Curve: 2
The Trapezoidal profile is a standard, symmetrical
acceleration/deceleration motion curve, in which the start
velocity is always zero.
The S-curve profile is a trapezoidal curve with an additional
‘Jerk’ parameter, which limits the rate of change of
acceleration and smooths out the contours of the motion
profile. In this profile mode, the acceleration increases
gradually from 0 to the specified acceleration value, then
decreases at the same rate until it reaches 0 again at the
specified velocity. The same sequence in reverse brings the
axis to a stop at the programmed destination position.
The Jerk value is specified in mm/s3 in the Jerk parameter,
and accepts values in the range 0 to 4294967295. It is used
to specify the maximum rate of change in acceleration in a
single cycle of the basic trapezoidal curve. 1.0 mm/s3 is
equal to 92.2337 jerk units.
format
word
word
dword
word
word
Page 84 of 265
Thorlabs APT Controllers
Example:
Host-Controller Communications Protocol
Issue 15
Set the profile mode parameters for chan 2 as follows:
Profile Mode: S-curve
Jerk: 10,000 mm3
TX E3, 04, 0C, 00, A2, 01, 01, 00, 02, 00, E1, 12, 0E, 00, 00, 00, 00, 00,
Header: E3, 04, 0C, 00, A2, 01: Set ProfileModeParams, 0CH (12) byte data packet, Channel
2.
Chan Ident: 01, 00: Channel 1 (always set to 1 for BBD202)
Profile Mode: 02, 00: Set the profile mode to S-Curve
Jerk: E1, 12,0E, 00: Set the jerk value to 10,000 mm/sec3 (i.e. 922337)
REQUEST:
Command structure (6 bytes):
0
1
E4
04
2
3
4
header only
Chan 00
d
Ident
5
s
GET:
Response structure (18 bytes)
6 byte header followed by 12 byte data packet as follows:
0
1
E5
12
Jerk
2
4
5
6
04
3
header
0C
00
d|
s
Chan Ident
13
14
16
17
15
Data
Not Used
7
8
Data
Mode
9
10
11
Jerk
Not Used
For structure see SET message above.
Page 85 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_SET_PMDJOYSTICKPARAMS
MGMSG_MOT_REQ_PMDJOYSTICKPARAMS
MGMSG_MOT_GET_PMDJOYSTICKPARAMS
Function:
0x04E6
0x04E7
0x04E8
The MJC001 joystick console has been designed for use by
microscopists to provide intuitive, tactile, manual positioning of the
stage. The console consists of a two axis joystick for XY control
which features both low and high gear modes. This message is used
to set max velocity and acceleration values for these modes.
SET:
Command structure (26 bytes)
6 byte header followed by 20 byte data packet as follows:
0
1
E6
12
2
4
5
6
04
3
header
14
00
d|
s
Chan Ident
13
14
16
17
JSGearHighMaxVel
15
7
18
19
Data
JSGearHighLowAccn
8
20
9
10
Data
JSGearLowMaxVel
21
22
11
23
JSGearHighHighAccn
24
25
Data
DirSense
Data Structure:
field
Chan Ident
JSGearLowMaxVel
description
The channel being addressed
Specifies the max velocity (in encoder counts/cycle) of a
joystick move when low gear mode is selected. It
accepts values in the range 0 to 4294967295.
1 mm / sec equals 134218 PMD units
JSGearHighMaxVel Specifies the max velocity (in encoder counts/cycle) of a
joystick move when high gear mode is selected. It
accepts values in the range 0 to 4294967295.
1 mm / sec equals 134218 PMD units
JSGearLowAccn
Specifies the acceleration (in encoder counts/cycle) of a
joystick move when low gear mode is selected. It
accepts values in the range 0 to 4294967295.
1 mm /sec2 equals 13.7439 PMD units.
JSGearHighAccn
Specifies the acceleration (in encoder counts/cycle) of a
joystick move when high gear mode is selected. It
accepts values in the range 0 to 4294967295.
1 mm /sec2 equals 13.7439 PMD units.
DirSense
The actual direction sense of any joystick initiated move
is dependent upon the application. This parameter can
be used to reverse the sense of direction for a particular
application and is useful when matching joystick
direction sense to actual stage direction sense.
DIRSENSE_POS 0X0001 Direction Positive
DIRSENSE_NEG 0X0002 Direction Negative
format
word
long
long
long
long
word
Page 86 of 265
Thorlabs APT Controllers
Example:
Host-Controller Communications Protocol
Issue 15
Set the joystick parameters for bay 2 as follows:
JSGearLowMaxVel: 1 mm/sec
JSGearHighMaxVel: 10 mm/sec
JSGearLowAccn: 0.5 mm /sec2
JSGearHighAccn: 5.0 mm /sec2
DirSens: Positive
TX E6, 04, 14, 00, A2, 01, 01, 00, 4A, 0C, 02, 00, E4, 7A, 14, 00, 07, 00, 00, 00, 46, 00, 00, 00,
01, 00
Header: E6, 04, 14, 00, A2, 01: SetPMDJoystickParams, 14H (20) byte data packet, bay 2.
Chan Ident: 01, 00: Channel 1 (always set to 1 for BBD202)
JSGearLowMaxVel: 4A, 0C, 02, 00 (134218)
JSGearHighMaxVel: E4, 7A, 14, 00 (1342180)
JSGearLowAccn: 07, 00, 00, 00 (7.0)
JSGearHighAccn: 46, 00, 00, 00 (70.0)
DirSens: 01, 00
REQUEST:
Command structure (6 bytes):
0
1
E7
04
2
3
4
header only
Chan 00
d
Ident
5
s
GET:
Response structure (26 bytes)
6 byte header followed by 20 byte data packet as follows:
0
1
E8
12
2
4
5
6
04
3
header
14
00
d|
s
Chan Ident
13
14
16
17
JSGearHighMaxVel
15
7
18
19
Data
JSGearHighLowAccn
8
20
9
10
Data
JSGearLowMaxVel
21
22
11
23
JSGearHighHighAccn
24
25
Data
DirSense
For structure see SET message above.
Page 87 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_SET_PMDCURRENTLOOPPARAMS
MGMSG_MOT_REQ_PMDCURRENTLOOPPARAMS
MGMSG_MOT_GET_PMDCURRENTLOOPPARAMS
Function:
0x04D4
0x04D5
0x04D6
Used to set the current control loop parameters for the specified
motor channel.
The motion processors within the BBD series controllers use digital
current control as a technique to control the current through each
phase winding of the motors. In this way, response times are
improved and motor efficiency is increased. This is achieved by
comparing the required (demanded) current with the actual current
to create a current error, which is then passed through a digital PItype filter. The filtered current value is used to develop an output
voltage for each motor coil.
This method sets various constants and limits for the current
feedback loop.
SET:
Command structure (24 bytes)
6 byte header followed by 18 byte data packet as follows:
0
1
D4
12
4
5
6
04
3
header
12
00
d|
s
Chan Ident
13
14
16
17
KiCurrent
2
15
ILimCurrent
DeadBand
Data
7
18
19
Kff
8
20
Data
Phase
9
10
11
KpCurrent
21
Not Used
22
23
Not Used
Data Structure:
field
Chan Ident
Phase
KpCurrent
KiCurrent
ILimCurrent
IDeadBand
description
The channel being addressed
The current phase to set:
PHASEA
0
PHASEB
1
PHASEA AND B 2
The proportional gain. Together with the KiCurrent this term
determines the system response characteristics and accept
values in the range 0 to 32767.
The integral gain. Together with the KpCurrent this term
determines the system response characteristics and accept
values in the range 0 to 32767.
The ILimCurrent parameter is used to cap the value of the
lntegrator to prevent runaway of the integral sum at the
output. It accepts values in the range 0 to 32767. If set to 0
then the integration term in the PID loop is ignored.
The IDeadBand parameter allows an integral dead band to
be set, such that when the error is within this dead band,
the integral action stops, and the move is completed using
the proportional term only. It accepts values in the range 0
format
word
word
word
word
word
word
Page 88 of 265
Thorlabs APT Controllers
Kff
Not Used
Not Used
Example:
Host-Controller Communications Protocol
Issue 15
to 32767.
The Kff parameter is a feed-forward term that is added to
the output of the PID filter to assist in tuning the motor
drive signal. It accepts values in the range 0 to 32767.
word
word
word
Set the limit switch parameters for chan 2 as follows:
Phase: A and B
KpCurrent: 35
KiCurrent: 80
ILimCurrent: 32,767
DeadBand: 50
Kff: 0
TX D4, 04, 12, 00, A2, 01, 01, 00, 02, 00, 23, 00, 50, 00, FF, 7F, 32, 00, 00, 00, 00, 00, 00, 00,
Header: D4, 04, 12, 00, A2, 01: Set_PMDCurrentLoopParams, 18 byte data packet, Channel
2.
Chan Ident: 01, 00: Channel 1 (always set to 1 for BBD202)
Phase: 02, 00: Set Phase A and Phase B
KpCurrent: 23, 00,: Set the proportional term to 35
KiCurrent: 50, 00,: Set the integral term to 80
ILimCurrent: FF, 7F,: Set the integral limit to 32767
IDeadBand: 32, 00,: Set the deadband to 50
Kff: 00, 00: Set the feed forward value to zero
REQUEST:
Command structure (6 bytes):
0
1
D8
2
3
header only
Chan 00
Ident
04
4
d
5
s
GET:
Command structure (24 bytes)
6 byte header followed by 18 byte data packet as follows:
0
1
D6
12
4
5
6
04
3
header
12
00
d|
s
Chan Ident
13
14
16
17
KiCurrent
2
15
ILimCurrent
DeadBand
Data
7
18
19
Kff
8
20
Data
Phase
9
10
11
KpCurrent
21
Not Used
22
23
Not Used
For structure see SET message above.
Page 89 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_SET_PMDSETTLEDCURRENTLOOPPARAMS
MGMSG_MOT_REQ_PMDSETTLEDCURRENTLOOPPARAMS
MGMSG_MOT_GET_PMDSETTLEDCURRENTLOOPPARAMS
Function:
0x04E9
0x04EA
0x04EB
These commands assist in maintaining stable operation and
reducing noise at the demanded position. They allow the system to
be tuned such that errors caused by external vibration and manual
handling (e.g. loading of samples) are minimized, and are applicable
only when the stage is settled, i.e. the Axis Settled status bit (bit 14)
is set.
SET:
Command structure (24 bytes)
6 byte header followed by 18 byte data packet as follows:
0
1
E9
12
4
5
6
04
3
header
12
00
d|
s
Chan Ident
13
14
16
17
KiSettled
Data Structure:
field
Chan Ident
Phase
2
15
ILimSettled
7
18
19
Data
DeadBandSet
KffSettled
8
20
Data
Phase
9
10
11
KpSettled
21
Not Used
22
23
Not Used
description
The channel being addressed
The current phase to set:
PHASEA
0
PHASEB
1
PHASEA AND B 2
KpSettled
The proportional gain. Together with the KiSettled this
term determines the system response characteristics and
accept values in the range 0 to 32767.
KiSettled
The integral gain. Together with the KpSettled this term
determines the system response characteristics and
accept values in the range 0 to 32767.
ILimSettled
The ILimSettled parameter is used to cap the value of the
lntegrator to prevent runaway of the integral sum at the
output. It accepts values in the range 0 to 32767. If set to
0 then the integration term in the PID loop is ignored.
IDeadBandSettled The IDeadBandSettled parameter allows an integral dead
band to be set, such that when the error is within this
dead band, the integral action stops, and the move is
completed using the proportional term only. It accepts
values in the range 0 to 32767.
KffSettled
The KffSettled parameter is a feed-forward term that is
added to the output of the PID filter to assist in tuning
the motor drive signal. It accepts values in the range 0 to
32767.
Not Used
Not Used
format
word
word
word
word
word
word
word
word
word
Page 90 of 265
Thorlabs APT Controllers
Example:
Host-Controller Communications Protocol
Issue 15
Set the limit switch parameters for chan 2 as follows:
Phase: A and B
KpSettled: 0
KiSettled: 40
ILimSettled: 30,000
DeadBandSettled: 50
KffSettled:500
TX E9, 04, 12, 00, A2, 01, 01, 00, 02, 00, 00, 00, 28, 00, 30, 75, 32, 00, F4, 01, 00, 00, 00, 00,
Header: D4, 04, 12, 00, A2, 01: Set_PMDSettledCurrentLoopParams, 18 byte data packet,
Channel 2.
Chan Ident: 01, 00: Channel 1 (always set to 1 for BBD202)
Phase: 02, 00: Set Phase A and Phase B
KpCurrent: 00, 00,: Set the proportional term to zero
KiCurrent: 28, 00,: Set the integral term to 40
ILimCurrent: 30, 75,: Set the integral limit to 30,000
IDeadBand: 32, 00,: Set the deadband to 50
Kff: F4, 01: Set the feed forward value to 500
REQUEST:
Command structure (6 bytes):
0
1
D8
2
3
header only
Chan 00
Ident
04
4
d
5
s
GET:
Command structure (24 bytes)
6 byte header followed by 18 byte data packet as follows:
0
1
EB
12
4
5
6
04
3
header
12
00
d|
s
Chan Ident
13
14
16
17
KiSettled
2
15
ILimSettled
7
18
19
Data
DeadBandSet
KffSettled
8
20
Data
Phase
9
10
11
KpSettled
21
Not Used
22
23
Not Used
For structure see SET message above.
Page 91 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_SET_PMDSTAGEAXISPARAMS
MGMSG_MOT_REQ_PMDSTAGEAXISPARAMS
MGMSG_MOT_GET_PMDSTAGEAXISPARAMS
Function:
0x04F0
0x04F1
0x04F2
The REQ and GET commands are used to obtain various parameters
pertaining to the particular stage being driven. Most of these
parameters are inherent in the design of the stage and cannot be
altered. The SET command can only be used to increase the
Minimum position value and decrease the Maximum position value,
thereby reducing the overall travel of the stage.
SET:
Command structure (80 bytes)
6 byte header followed by 74 byte data packet – see Get for structure
REQUEST:
Command structure (6 bytes):
0
1
F1
04
2
3
4
header only
Chan 00
d
Ident
5
s
GET:
Command structure (80 bytes)
6 byte header followed by 74 byte data packet as follows:
0
1
F2
2
4
5
04
3
header
4A
00
d|
s
12
13
14
15
16
17
18
Data
Part No/Axis
19
20
21
22
23
24
25
26
27
28
29
31
32
33
34
35
Part No/Axis
36
37
38
39
40
MinPos
48
49
50
51
52
Max Dec
60
61
Reserved
72
73
62
63
64
Reserved
74
Reserved
75
Data
76
6
Chan ID
30
Data
Serial Number
41
42
Data
Max Pos
53
54
Data
Max Vel
65
66
Data
Reserved
77
7
78
8
9
Data
Stage ID
10
11
Axis ID
Counts per Unit
43
44
45
46
47
Max Accn
55
56
57
Reserved
67
68
69
58
59
Reserved
70
71
Reserved
79
Reserved
Page 92 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Data Structure:
field
Stage ID
AxisID
PartNoAxis
SerialNum
CntsPerUnit
MinPos
MaxPos
MaxAccn
MaxDec
MaxVel
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Example:
description
This 2 byte parameter identifies the stage and axis:
00, 10 - MLS203_X_AXIS
00, 11 - MLS203_Y_AXIS
Not used for the BBD series controllers
A 16 byte character string used to identify the stage type
and axis being driven.
The Serial number of the stage
The number of encoder counts per real world unit (either
mm or degrees).
The minimum position of the stage, typically zero
The maximum position of the stage in encoder counts
The maximum acceleration of the stage in encoder counts
per cycle per cycle
The maximum deceleration of the stage in encoder counts
per cycle per cycle
The maximum velocity of the stage in encoder counts per
cycle.
format
word
word
char
dword
dword
long
long
long
long
long
word
word
word
word
dword
dword
dword
dword
Get the stage and axis parameters for chan 2:
RX F2, 04, 4A, 00, 81, 22, 01, 00, 11, 00, 00, 00, 4D,4C, 53, 32, 30, 33, 20, 59, 20, 41, 78, 69,
73, 00, 00, 00, 81, 96, 98, 00, 20, 4E, 00, 00, 00, 00, 00, 00, 60, E3, 16, 00, 60, 6B, 00, 00, 60,
6B, 00, 00, 9A, 99, 99, 01, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00
Header: F2, 04, 4A, 00, 81, 22: Get_PMDStageAxisParams, 74 byte data packet,Bay 1.
Chan Ident: 01, 00: Channel 1 (always set to 1 for BBD202)
Stage ID: 11, 00: MLS203 Y Axis
Axis ID: 00, 00,: Not used
PartNo Axis: 4D, 4C, 53, 32, 30, 33, 20, 59, 20, 41, 78, 69, 73, 00, 00, 00,:
MLS203 Y AXIS
SerialNum: 81, 96, 98, 00
CntsPerUnit 20, 4E, 00, 00: the encoder counts per unit is set to 20000
MinPos: 00, 00, 00, 00: the feed minimum position is set to zero
MaxPos: 60, E3, 16, 00: the maximum position is set to 1500000
MaxAccn: 60, 6B, 00, 00: the maximum acceleration is set to 27488
MaxDec: 60, 6B, 00, 00: the maximum deceleration is set to 27488
MaxVel: 9A, 99, 99, 01: the maximum velocity is set to 26843546
Page 93 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_MOT_SET_TSTACTUATORTYPE
Function:
Issue 15
0x04FE
This command is for use only with the TST101 driver, and is used to
define an actuator type so that the TST driver knows the effective
length of the stage. This information is used if a user wishes to home
the stage to the far travel end. In this case, once the stage is homed
the APT GUI count will be set to the far travel value. For example, in
the case of a ZFS25 the user will see 25mm once homed. The TST
holds this value as a number of Trinamic microsteps, which will be a
function of the gearbox ratio, the lead screw pitch, and the motor
type. So for example the number stored in the TST for the ZFS25 is
54613333.
SET:
Command structure (6 bytes):
0
1
FE
04
2
3
header only
Actuator 00
Ident
4
d
5
s
Actuator Idents:
ZST_LEGACY_6MM
ZST_LEGACY_13MM
ZST_LEGACY_25MM
ZST_NEW_6MM
ZST_NEW_13MM
ZST_NEW_25MM
ZFS_NEW_6MM
ZFS_NEW_13MM
ZFS_NEW_25MM
DRV013_25MM
DRV014_50MM
Example:
0x20
0x21
0x22
0x30
0x31
0x32
0x40
0x41
0x42
0x50
0x51
Set the actuator type to New ZFS 13 mm Travel:
Header: FE, 04, 31, 00, 50, 01:
Page 94 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_GET_STATUSUPDATE
Function:
0x0481
This message is returned when a status update is requested for the
specified motor channel. This request can be used instead of
enabling regular updates as described above.
GET:
Status update messages are received with the following format:Response structure (20 bytes)
6 byte header followed by 14 byte data packet as follows:
0
1
2
81
04
3
header
0E
00
12
13
14
EncCount
15
Data
4
5
6
7
d|
s
Chan Ident
16
17
18
8
Data
9
10
11
Position
19
Status Bits
Data Structure:
field
Chan Ident
Position
EncCount
Status Bits
description
The channel being addressed is always P_MOD_CHAN1
(0x01) encoded as a 16-bit word (0x01 0x00)
The position encoder count. In the APT Stepper Motor
controllers the encoder resolution is 25,600 counts per mm,
therefore a position change of 1 mm would be seen as this
parameter changing by 25,600. The LONG variable is a 32 bit
value, encoded in the data stream in the Intel format.
For use with encoded stages only.
The meaning of individual bits in this 32-bit variable is
described in the bit mask table below (1 = active, 0 =
inactive).
bit mask
0x00000001
0x00000002
0x00000004
0x00000008
0x00000010
0x00000020
0x00000040
0x00000080
0x00000100
0x00000200
0x00000400
0x00001000
format
word
long
long
dword
meaning
forward (CW) hardware limit switch is active
reverse (CCW) hardware limit switch is active
forward (CW) software limit switch is active
reverse (CCW) software limit switch is active
in motion, moving forward (CW)
in motion, moving reverse (CCW)
in motion, jogging forward (CW)
in motion, jogging reverse (CCW)
motor connected
in motion, homing
homed (homing has been completed)
interlock state (1 = enabled)
Page 95 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
This is not full list of all the bits but the remaining bits reflect information about the state of
the hardware that in most cases does not affect motion.
MGMSG_MOT_REQ_STATUSUPDATE
Function:
0x0480
Used to request a status update for the specified motor channel.
This request can be used instead of enabling regular updates as
described above.
REQUEST:
Command structure (6 bytes):
0
1
80
04
2
3
4
header only
Chan 00
d
Ident
5
s
GET:
See previous details on MGMSG_MOT_GET_STATUSUPDATE 0x0481.
Page 96 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_GET_DCSTATUSUPDATE
Function:
0x0491
This message is returned when a status update is requested for the
specified motor channel. This request can be used instead of
enabling regular updates as described above.
GET:
Status update messages are received with the following format:Response structure (20 bytes)
6 byte header followed by 14 byte data packet as follows:
0
1
2
91
04
3
header
0E
00
12
13
14
Velocity
15
Reserved
Data
4
5
6
7
d|
s
Chan Ident
16
17
18
8
Data
9
10
11
Position
19
Status Bits
Data Structure:
field
Chan Ident
Position
Velocity
Reserved
Status Bits
description
The channel being addressed is always P_MOD_CHAN1
(0x01) encoded as a 16-bit word (0x01 0x00)
The position encoder count. In the BBD10X series
controllers the encoder resolution is 20,000 counts per mm,
therefore a position change of 1 mm would be seen as this
parameter changing by 20,000 (twenty thousand). The
LONG variable is a 32 bit value, encoded in the data stream
in the Intel format, so for example a position of 1 million
encoder counts (equivalent to 50 mm) would be sent as
byte stream 0x40, 0x42, 0x0F, 0x00 since 1 million is
hexadecimal 0xF4240.
The actual velocity. Scaling is 204.8 per mm/sec, so a reallife measured speed of 100 mm/sec is read as 205. Again,
the two-byte data stream will be encoded in the Intel
format.
Currently Not Used
The meaning of individual bits in this 32-bit variable is
described in the bit mask table below
bit mask
0x00000001
0x00000002
0x00000010
0x00000020
0x00000040
0x00000080
0x00000200
format
word
long
word
Word
dword
meaning
forward hardware limit switch is active
reverse hardware limit switch is active
in motion, moving forward
in motion, moving reverse
in motion, jogging forward
in motion, jogging reverse
in motion, homing
Page 97 of 265
Thorlabs APT Controllers
0x00000400
0x00001000
0x00002000
0x00004000
0x01000000
0x80000000
Host-Controller Communications Protocol
Issue 15
homed (homing has been completed)
tracking
settled
motion error (excessive position error)
motor current limit reached
channel is enabled
This is not full list of all the bits but the remaining bits reflect information about the state of
the hardware that in most cases does not affect motion.
MGMSG_MOT_REQ_DCSTATUSUPDATE
Function:
0x0490
Used to request a status update for the specified motor channel.
This request can be used instead of enabling regular updates as
described above.
REQUEST:
Command structure (6 bytes):
0
1
90
04
2
3
4
header only
Chan 00
d
Ident
5
s
GET:
See previous details on MGMSG_MOT_GET_DCSTATUSUPDATE 0x0491.
MGMSG_MOT_ACK_DCSTATUSUPDATE
0x0492
Only Applicable If Using USB COMMS. Does not apply to RS-232 COMMS
Function:
If using the USB port, this message called “server alive” must be sent
by the server to the controller at least once a second or the
controller will stop responding after ~50 commands.
The controller keeps track of the number of "status update" type of
messages (e.g.move complete message) and it if has sent 50 of
these without the server sending a "server alive" message, it will
stop sending any more "status update" messages.
This function is used by the controller to check that the PC/Server
has not crashed or switched off. There is no response.
Structure (6 bytes):
0
1
92
04
2
3
4
header only
00
00
d
5
s
TX 92, 04, 00, 00, 21, 01
Page 98 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_ MOT_REQ_STATUSBITS
MGMSG_ MOT_GET_STATUSBITS
Function:
Issue 15
0x0429
0x042A
Used to request a “cut down” version of the status update message,
only containing the status bits, without data about position and
velocity.
SET: N/A
REQUEST:
Command structure (6 bytes):
0
1
29
04
2
3
4
header only
Chan 00
d
Ident
5
s
GET:
Response structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
2A
04
2
3
header
06
00
4
5
6
7
d|
s
Chan Ident
8
Data
9
10
11
Status Bits
Data Structure:
field
Chan Ident
Status Bits
description
The channel being addressed
The status bits are assigned exactly as described in the
section detailing the MGMSG_MOT_GET_DCSTATUSUPDATE
command.
format
Word
DWord
Page 99 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_ MOT_SUSPEND_ENDOFMOVEMSGS
Function:
Issue 15
0x046B
Sent to disable all unsolicited end of move messages and error
messages returned by the controller, i.e.
MGMSG_MOT_MOVE_STOPPED
MGMSG_MOT_MOVE_COMPLETED
MGMSG_MOT_MOVE_HOMED
Command structure (6 bytes):
0
1
6B
04
2
3
4
header only
00
00
d
5
s
Page 100 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_ MOT_RESUME_ENDOFMOVEMSGS
Function:
Issue 15
0x046C
Sent to resume all unsolicited end of move messages and error
messages returned by the controller, i.e.
MGMSG_MOT_MOVE_STOPPED
MGMSG_MOT_MOVE_COMPLETED
MGMSG_MOT_MOVE_HOMED
The command also disables the error messages that the controller
sends when an error conditions is detected:
MGMSG_HW_RESPONSE
MGMSG_HW_RICHRESPONSE
This is the default state when the controller is powered up.
Command structure (6 bytes):
0
1
6C
04
2
3
4
header only
00
00
d
5
s
Page 101 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_SET_TRIGGER
MGMSG_MOT_REQ_TRIGGER
MGMSG_MOT_GET_TRIGGER
Function:
0x0500
0x0501
0x0502
This message is used to configure the Motor controller for triggered
move operation. It is possible to configure a particular controller to
respond to trigger inputs, generate trigger outputs or both respond
to and generate a trigger output. When a trigger input is received,
the unit can be set to initiate a move (relative, absolute or home).
Similarly the unit can be set to generate a trigger output signal when
a specified event (e.g move initiated) occurs. For those units
configured for both input and output triggering, a move can be
initiated via a trigger input while at the same time, a trigger output
can be generated to initiate a move on another unit.
The trigger settings can be used to configure multiple units in a
master – slave set up, thereby allowing multiple channels of motion
to be synchronized. Multiple moves can then be initiated via a single
software or hardware trigger command.
SET:
Command structure (6 bytes):
0
1
00
05
2
3
header only
Chan Mode
Ident
4
d
5
s
Note. This message operates differently when used with brushless DC controllers (e.g.
BBD20x and TBD001) as opposed to other motor controllers as described in the following
paragraphs.
All benchtop stepper controllers (BSC20x,)
field
Chan Ident
Mode
description
The channel being addressed
This parameter sets the trigger mode and move type to be
initiated according to the numerical value entered in bits 0 to
7 as follows
Bit 0 (0x01): TRIGIN_ENABLE set to enable physical trigger
input
Bit 1 (0x02): TRIGOUT_ENABLE set to enable trigger output
function (mode set by BIT2 or BIT3 below)
Bit 2 (0x04): TRIGOUT_MODEFOLLOW set to enable physical
trigger output to mirror trig in
Bit 3 (0x08): TRIGOUT_MODEMOVEEND set to enable
physical trigger output, remains active (high) until move end
Bit 4 (0x10): TRIG_RELMOVE set for relative move on trigger
Bit 5 (0x20): TRIG_ABSMOVE set for absolute move on
trigger
Bit 6 (0x40): TRIG_HOMEMOVE set for home sequence on
format
char
char
Page 102 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
trigger
Bit 7 (0x80): TRIGOUT_NOTRIGIN set to enable physical
trigger output with no physical trigger in (i.e. sw initiated
trigger)
Brushless DC controllers only (BBD20x and TBD001)
field
Chan Ident
Mode
description
format
The channel being addressed
char
This parameter sets the trigger mode and move type
char
according to the numerical value entered in bits 0 to 7 as
follows
Bit 0 (0x01): TRIGIN_HIGH The Trigger input can be
configured to initiate a relative, absolute or homing home,
either on the rising or falling edge of the signal driving it. As
the trigger input is edge sensitive, it needs to see a logic LOW
to HIGH transition ("rising edge") or a logic HIGH to LOW
transition ("falling edge") for the move to be started.
Additionally, the move parameters must be downloaded to
the unit prior to the move using the relevant relative move
or absolute move methods as described below. A move
already in progress will not be interrupted; therefore
external triggering will not work until the previous move has
been completed. If this bit is set, the logic state is set HIGH.
Bit 1 (0x02): TRIGIN_RELMOVE set to enable trigger in and
initiate a relative move (specified using the latest
MoveRelative or MoveRelativeEx settings) when a trigger
input signal is received.
Bit 2 (0x04): TRIGIN_ABSMOVE set to enable trigger in and
initiate an absolute move (specified using the latest
MoveAbsolute or MoveAbsoluteEx settings) when a trigger
input signal is received.
Bit 3 (0x08): TRIGIN_HOMEMOVE set to enable trigger in and
initiate a home move (specified using the latest MoveHome
settings) whan atrigger input signal is received.
Bit 4 (0x10): TRIGOUT_HIGH The Trigger output can be
configured to be asserted to either logic HIGH or LOW as a
function of certain motion-related conditions, such as when a
move is in progress (In Motion), complete (Move Complete)
or reaches the constant velocity phase on its trajectory (Max
Vel). The logic state of the output will remain the same for as
long as the chosen condition is true. If this bit is set, the logic
state is set HIGH when the following conditions are true.
Bit 5 (0x20): TRIGOUT_INMOTION set to enable trigger out
(triggered when in motion)
Bit 6 (0x40): TRIGOUT_MOTIONCOMPLETE set to enable
trigger out (triggered when motion complete)
Bit 7 (0x80): TRIGOUT_MAXVELOCITY set to enable trigger
out (triggered when axis at maximum velocity)
Page 103 of 265
Thorlabs APT Controllers
Example:
Host-Controller Communications Protocol
Issue 15
Set the trigger mode for channel 1 of the BBD201 controller as
follows:
Trigger Input Rising Edge (High)
Enable trigger input and initiate a Relative Move
Trigger Output Rising Edge (High)
Enable trigger output when move complete.
TX 00, 05, 01, 53, 50, 01
00,05 SET_TRIGGER
01, Channel 1
53, i.e. 01010011
50, destination Generic USB device
01, Source PC
REQ:
Command structure (6 bytes):
0
1
01
05
2
3
4
header only
Chan 00
d
Ident
Example:
5
s
Request the trigger mode
TX 01, 05, 01, 00, 50, 01
GET:
Response structure (6 bytes):
0
1
2
header only
02 05
Chan
Ident
3
Mode
4
d
5
s
For structure see SET message above.
Page 104 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Filter Flipper Control Messages
Introduction
The APT Filter Flipper drive uses the Motor server control instance control its functionality.
The messages listed here provide the extra functionality required for a client application to
control one or more of the Thorlabs series of MFF series flipper units.
Page 105 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_SET_MFF_OPERPARAMS
MGMSG_MOT_REQ_MFF_OPERPARAMS
MGMSG_MOT_GET_MFF_OPERPARAMS
Function:
0x0510
0x0511
0x0512
Used to set various operating parameters that dictate the function
of the MFF series flipper unit.
SET:
Command structure (40 bytes)
6 byte header followed by 34 byte data packet as follows:
0
1
10
12
2
4
5
6
05
3
header
22
00
d|
s
Chan Ident
13
14
16
17
15
lTransitTimeADC
24
25
26
27
OperMode2
SigMode2
36
38
37
Data
18
7
SigMode1
28
30
PulseWidth2
31
Data
9
10
11
lTransitTime
19
OperMode1
29
8
20
21
22
23
PulseWidth1
Data
32
33
34
35
Not Used
39
Not Used
Data Structure:
field
Chan Ident
lTransitTime
lTransitTimeADC
description
The channel being addressed
The time taken (in milliseconds) for the flipper to move
from position 1 to position 2 and vice versa. Values
must be entered in the range 300 to 2800 ms.
The time taken (in ADC counts) for the flipper to move
from position 1 to position 2 and vice versa.
The number of ADC counts is calculated from an
equation that relates actual time of flight in milliseconds to the ADC value required by the flipper code.
The equation relating the two variables is defined as
follows
format
word
long
long
TransitTimeADC = 10000000 x TransitTime-1.591
Example
A transit time of 500 ms would be calculated as
TransitTimeADC = 10000000 x 500-1.591 = 10000000 x
0.00005080877 = 508.0877
so a user requiring 500ms motion time needs to set 508
as the ADC value in the structure. This value is then
used by the flipper to give a reasonable approximation
for the actual time of flight.
Page 106 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
wDigIO1OperMode Specifies the operating mode of the DIG IO 1
input/output signal as follows:
01 Sets IO connector to input and 'toggle position'
mode. In this mode, the input signal causes
flipper to move to other position).
word
02
Sets IO connector to input and 'goto position'
mode. In this mode, the input signal dictates flipper
position, POS 1 or POS 2. as dictated by the Button
Input or Button Input (Swap Pos) parameters set in the
DigIOSigMode parameter below.
03
Sets IO connector to output mode, where the
O/P signal indicates the flipper is ‘at position’.
wDigIO1SigMode
04
Sets IO connector to output mode, where the
O/P signal indicates the flipper is in motion (i.e.
between positions).
Specifies the functionality of the input/output signal. as
follows:
01
The connector can be short circuited (e.g. with
button). If the Operating Mode is set to Input:Toggle
Position then a short circuit causes the flipper to toggle
position. If the Operating Mode is set to Input: Goto
Position then a short circuit causes the flipper to move
to Pos 1 and open circuit causes flipper to move to POS
word
02.
The connector is set to logic input where a logic
transition (edge) dictates flipper operation. If the
Operating Mode above set to Input:Toggle Position,
then a LO to HI edge causes flipper to toggle position. If
the Operating Mode is set to Input: Goto Position, then
a LO to HI edge causes the flipper to move to POS 1 and
a HI to LO edge causes the flipper to move to POS 2.
04
This parameter can be 'Bitwise Ored' with either
the button or the logic parameters above, such that the
open circuit and short circuit or the edge functionality is
swapped.
10
The connector is set to a logic output where the
logic transition (edge) represents flipper position. If the
Operating Mode above is set to Output: At Position,
then a LO to HI edge (HI level) indicates flipper is at POS
1 and a HI to LO edge (LO level) indicates the flipper is
at POS 2. If the Operating Mode above is set to Output:
InMotion, then a LO to HI edge (HI level) indicates the
flipper is moving between positions and a HI to LO edge
(LO level) indicates the flipper has stopped moving.
20
MFFSIGMODE_OP_PULSE The connector is set to
Page 107 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
a logic output where a logic pulse indicates flipper
operation. If the Operating Mode above is set to
Output: At Position, then a logic HI pulse indicates
flipper has reached a position. If the Operating Mode
above is set to Output: InMotion, then a logic HI pulse
indicates the flipper has started moving. The Pulse
width is set in the Signal Width paramter below.
40
This parameter can be 'Bitwise Ored' with either
the level (edge) or the pulse parameters above, such
that the level or pulse functionality is swapped.
lDigIO1PulseWidth The pulse width in ms when the Digital Signal Mode
described previously is set to Logic Pulse Output or
Logic Pulse Output (Inverted). The pulse width is set
within the range 10 to 200 ms.
wDigIO2OperMode As DigIO1
wDigIO2SigMode
As DigIO1
lDigIO2PulseWidth As DigIO1
Not Used
Not Used
Example:
long
word
word
long
long
dword
Set the MFF parameters for chan 1 as follows:
TransitTime
500 ms
TransitTimeADC
508 counts
DigIO1OperMode
Toggle Position
DigIO1SigMode
Button Mode Input
DigIO1PulseWidth
200 ms
DigIO2OperMode
Toggle Position
DigIO2SigMode
Button Mode Input
DigIO2PulseWidth
200 ms
Not Used
Not Used
TX 10,05,22,00,D0,01,
01,00,F4,01,00,00,FC,01,00,00,01,00,01,00,C8,00,00,00,01,00,01,00,C8,00,00,00,00,00,00,00
,00,00,00,00
REQ:
Command structure (6 bytes):
0
1
11
05
Example:
2
3
4
header only
Chan 00
d
Ident
5
s
Request the MFF operating modes
TX 11, 05, 01, 00, 50, 01
Page 108 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
GET:
Response structure (40 bytes):
0
1
10
12
2
4
5
6
05
3
header
22
00
d|
s
Chan Ident
13
14
16
17
15
lTransitTimeADC
24
25
26
27
OperMode2
SigMode2
36
38
37
Data
18
7
SigMode1
28
30
PulseWidth2
31
Data
9
10
11
lTransitTime
19
OperMode1
29
8
20
21
22
23
PulseWidth1
Data
32
33
34
35
Not Used
39
Not Used
See SET for structure
Page 109 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Solenoid Control Messages
Introduction
The APT Solenoid drive uses the Motor server control instance control its functionality. The
messages listed here provide the extra functionality required for a client application to
control one or more of the Thorlabs series of TSC001 T-Cube solenoid driver units.
Page 110 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_MOT_SET_SOL_OPERATINGMODE
MGMSG_MOT_REQ_SOL_OPERATINGMODE
MGMSG_MOT_GET_SOL_OPERATINGMODE
Function:
0x04C0
0x04C1
0x04C2
This message sets the operating mode of the solenoid driver.
SET:
Command structure (6 bytes):
0
1
C0
04
2
3
header only
Chan Mode
Ident
4
d
5
s
Data Structure:
field
Chan Ident
Operating
Mode
Example:
description
The channel being addressed
The operating mode of the unit as a 4 bit integer:
0x01 SOLENOID_MANUAL - In this mode, operation of the
solenoid is via the front panel ‘Enable’ button, or by the
‘Output’ buttons on the GUI panel.
0x02 SOLENOID_SINGLE - In this mode, the solenoid will
open and close each time the front panel ‘Enable’ button is
pressed, or the ‘Output ON’ button on the GUI panel is
clicked. The ON and OFF times are specified by calling the
MGMSG_MOT_SET_SOL_CYCLEPARAMS message.
0x03 SOLENOID_AUTO - In this mode, the solenoid will open
and close continuously after the front panel ‘Enable’ button
is pressed, or the ‘Output ON’ button on the GUI panel is
clicked. The ON and OFF times, and the number of cycles
performed, are specified by calling the
MGMSG_MOT_SET_SOL_CYCLEPARAMS message.
0x04 SOLENOID_TRIGGER - In Triggered mode, a rising edge
on rear panel TRIG IN BNC input will start execution of the
parameters programmed on the unit (On Time, Off Time,
Num Cycles - see MGMSG_MOT_SET_SOL_CYCLEPARAMS
message.). The unit must be primed (i.e. the ENABLE button
pressed and the ENABLED LED lit) before the unit can
respond to the external trigger.
format
char
char
Set the control mode to ‘Single’.
TX C0, 04, 01, 02, 50, 01
C0,04 SET_SOL_OPERATINGMODE
01, Channel 1
02, Set mode to ‘Single’
50, destination Generic USB device
01, Source PC
Page 111 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
REQ:
Command structure (6 bytes):
0
1
C1
04
2
3
header only
Chan 00
Ident
Example:
4
d
5
s
Request the control mode
TX C1, 04, 01, 00, 50, 01
GET:
Response structure (6 bytes):
0
1
2
header only
C2 04
Chan
Ident
Example:
3
Mode
4
d
5
s
Get the control mode currently set.
RX C2, 04, 01, 01, 01, 50
Page 112 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_MOT_SET_SOL_CYCLEPARAMS
MGMSG_MOT_REQ_SOL_CYCLEPARAMS
MGMSG_MOT_GET_SOL_CYCLEPARAMS
Function:
Issue 15
0x04C3
0x04C4
0x04C5
Used to set the cycle parameters that are applicable when the
solenoid controller is operating in one of the non-manual modes.
SET:
Command structure (20 bytes)
6 byte header followed by 14 byte data packet as follows:
0
1
C3
04
12
2
3
header
0E
00
13
14
OffTime
15
Data
4
5
6
7
d|
s
Chan Ident
16
17
18
8
9
Data
10
11
OnTime
19
NumCycles
Data Structure:
field
Chan Ident
OnTime
OffTime
NumCycles
Example:
description
The channel being addressed
The time which the solenoid is activated
(100ms to 10,000s in 250 µs steps)
The time which the solenoid is a de-activated
(100ms to 10,000s in 250 µs steps)
If the unit is operating in ‘Auto’ mode, the number of
Open/Close cycles to perform. (0 to 1,000,000) is specified
in the NumCycles parameter. If set to ‘0’ the unit cycles
indefinitely. If the unit is not operating in ‘Auto’ mode, the
NumCycles parameter is ignored.
format
word
long
long
long
Set the cycle parameters parameters for chan 1 as follows:
OnTime: 1000ms
OffTime: 1000ms
NumCycles: 20
TX C3, 04, 0E, 00, D0, 01, 01, 00, A0, 0F, 00, 00, A0, 0F, 00, 00, 14, 00, 00, 00
Header: C3, 04, 0E, 00, D0, 01: Set Cycle Params, D0H (14) byte data packet, Generic USB
Device.
Chan Ident: 01, 00: Channel 1 (always set to 1 for TSC001)
OnTime: A0, 0F, 00, 00: Set on time to 1000 ms (i.e. 4000 x 250 µs)
OffTime: A0, 0F, 00, 00: Set off time to 1000 ms (i.e. 4000 x 250 µs)
NumCycles: 14, 00, 00, 00: Set number of cycles to 20
Page 113 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
REQUEST:
Command structure (6 bytes):
0
1
C4
04
2
3
header only
Chan 00
Ident
4
5
d
s
GET:
Response structure (20 bytes)
6 byte header followed by 14 byte data packet as follows:
0
1
C5
04
12
2
3
header
0E
00
13
14
OffTime
15
Data
4
5
6
7
d|
s
Chan Ident
16
17
18
8
9
Data
10
11
OnTime
19
NumCycles
For structure see SET message above.
Page 114 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_MOT_SET_SOL_INTERLOCKMODE
MGMSG_MOT_REQ_SOL_INTERLOCKMODE
MGMSG_MOT_GET_SOL_INTERLOCKMODE
Function:
Issue 15
0x04C6
0x04C7
0x04C8
The solenoid unit features a hardware interlock jackplug. This
message specifies whether the solenoid driver requires the
hardware interlock to be fitted before it can operate.
SET:
Command structure (6 bytes):
0
1
C6
04
2
3
header only
Chan Mode
Ident
4
d
5
s
Data Structure:
field
Chan Ident
Interlock
Mode
Example:
description
The channel being addressed
The operating mode of the unit as a 4 bit integer:
0x01 SOLENOID_ENABLED – The hardware interlock must
be fitted before the unit can be operated.
0x02 SOLENOID_DISABLED – The hardware interlock is not
required.
format
char
char
Set the interlock mode to ‘Enabled’.
TX C6, 04, 01, 01, 50, 01
C0,06 SET_SOL_INTERLOCKMODE
01, Channel 1
01, Set mode to ‘Enabled’
50, destination Generic USB device
01, Source PC
Page 115 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
REQ:
Command structure (6 bytes):
0
1
C7
04
2
3
header only
Chan 00
Ident
Example:
4
d
5
s
Request the control mode
TX C7, 04, 01, 00, 50, 01
GET:
Response structure (6 bytes):
0
1
2
header only
C8 04
Chan
Ident
Example:
3
Mode
4
d
5
s
Get the control mode currently set.
RX C8, 04, 01, 01, 01, 50
Page 116 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_MOT_SET_SOL_STATE
MGMSG_MOT_REQ_SOL_STATE
MGMSG_MOT_GET_SOL_STATE
Function:
Issue 15
0x04CB
0x04CC
0x04CD
This message sets the output state of the solenoid unit, and
overrides any existing settings. It can also be operated by the
SET_CHANENABLESTATE message.
SET:
Command structure (6 bytes):
0
1
CB
04
2
3
header only
Chan State
Ident
4
d
5
s
Data Structure:
field
Chan Ident
Interlock
Mode
Example:
description
The channel being addressed
The operating mode of the unit as a 4 bit integer:
0x01 SOLENOID_ON – The solenoid is active.
0x02 SOLENOID_OFF – The solenoid is de-activated.
format
char
char
Set the solenoid to ‘ON’.
TX CB, 04, 01, 01, 50, 01
CB,06 SET_SOL_STATE
01, Channel 1
01, Set state to ‘ON’
50, destination Generic USB device
01, Source PC
Page 117 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
REQ:
Command structure (6 bytes):
0
1
CC
04
2
3
header only
Chan 00
Ident
Example:
4
d
5
s
Request the control mode
TX CC, 04, 01, 00, 50, 01
GET:
Response structure (6 bytes):
0
1
2
header only
CD 04
Chan
Ident
Example:
3
Mode
4
d
5
s
Get the control mode currently set.
RX CD, 04, 01, 01, 01, 50
Page 118 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Piezo Control Messages
Introduction
The ‘Piezo’ control messages provide the functionality required for a client application to
control one or more of the Thorlabs series of piezo controller units. This range of controllers
covers both open and closed loop piezo control in a variety of formats including compact
Cube type controllers, benchtop units and 19” rack based modular drivers. Note. For ease of
description, the TSG001 T-Cube Strain Gauge reader is considered here as a piezo controller.
The list of controllers covered by the piezo messages includes:BPC001 – 1 Channel Benchtop Piezo Driver
BPC002 – 2 Channel Benchtop Piezo Driver
MPZ601 – 2 Channel Modular Piezo Driver
BPC101 – 1 Channel Benchtop Piezo Driver (2006 onwards)
BPC102 – 2 Channel Benchtop Piezo Driver (2006 onwards)
BPC103 – 3 Channel Benchtop Piezo Driver (2006 onwards)
BPC201 – 1 Channel Benchtop Piezo Driver (2007 onwards)
BPC202 – 2 Channel Benchtop Piezo Driver (2007 onwards)
BPC203 – 3 Channel Benchtop Piezo Driver (2007 onwards)
BPC301 – 1 Channel Benchtop Piezo Driver (2011 onwards)
BPC303 – 3 Channel Benchtop Piezo Driver (2012 onwards)
TPZ001 – 1 Channel T-Cube Piezo Driver
TSG001 – 1 Channel T-Cube Strain Gauge Reader
The piezo messages can be used to perform activities such as selecting output voltages,
reading the strain gauge position feedback, operating open and closed loop modes and
enabling force sensing mode. With a few exceptions, these messages are generic and apply
equally to both single and dual channel units.
Where applicable, the target channel is identified in the lChanID parameter and on single
channel units, this must be set to CHAN1_ID. On dual channel units, this can be set to
CHAN1_ID, CHAN2_ID or CHANBOTH_ID as required.
For details on the operation of the Piezo Controller, and information on the principles of
operation, refer to the handbook supplied with the unit.
Page 119 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_PZ_SET_POSCONTROLMODE
MGMSG_PZ_REQ_POSCONTROLMODE
MGMSG_PZ_GET_POSCONTROLMODE
Function:
Issue 15
0x0640
0x0641
0x0642
When in closed-loop mode, position is maintained by a feedback
signal from the piezo actuator. This is only possible when using
actuators equipped with position sensing.
This method sets the control loop status The Control Mode is
specified in the Mode parameter as follows:
0x01
0x02
0x03
0x04
Open Loop (no feedback)
Closed Loop (feedback employed)
Open Loop Smooth
Closed Loop Smooth
If set to Open Loop Smooth or Closed Loop Smooth is selected, the
feedback status is the same as above however the transition from
open to closed loop (or vise versa) is achieved over a longer period
in order to minimize voltage transients (spikes).
SET:
Command structure (6 bytes):
0
1
40
06
Example:
2
3
header only
Chan Mode
Ident
4
5
d
s
Set the control mode to closed loop.
TX 40, 06, 01, 02, 50, 01
REQ:
Command structure (6 bytes):
0
1
41
06
Example:
2
3
4
header only
Chan 00
d
Ident
5
s
Request the control mode
TX 41, 06, 01, 00, 50, 01
Page 120 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
GET:
Response structure (6 bytes):
0
1
2
header only
42 06
Chan
Ident
Example:
3
Mode
4
d
5
s
Get the control mode currently set.
RX 42, 06, 01, 02, 01, 50
Page 121 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_PZ_SET_OUTPUTVOLTS
MGMSG_PZ_REQ_OUTPUTVOLTS
MGMSG_PZ_GET_OUTPUTVOLTS
Function:
Issue 15
0x0643
0x0644
0x0645
Used to set the output voltage applied to the piezo actuator. This
command is applicable only in Open Loop mode. If called when in
Closed Loop mode it is ignored.
SET:
Command structure (10 bytes)
6 byte header followed by 4 byte data packet as follows:
0
1
43
06
2
3
header
04
00
4
5
6
7
d|
s
Chan Ident
Data
8
9
Voltage
Data Structure:
field
Chan Ident
Voltage
Example:
description
The channel being addressed
The output voltage applied to the piezo when operating in
open loop mode. The voltage is set in the range -32768 to
32767 (-7FFF to 7FFF) to which corresponds to -100% to
100% of the maximum output voltage as set using the
TPZ_IOSETTINGS command.
format
word
short
Set the drive voltage to 70V
TX 43, 06, 04, 00, D0, 01, 01, 00, 77, 77,
Header: 43, 06, 04, 00, D0, 01: SetPZOutputVolts, 04 byte data packet, Generic USB Device.
Chan Ident: 01, 00: Channel 1
Voltage: 77, 77: corresponds to 70 V (30583) for a max 75 V unit
REQUEST:
Command structure (6 bytes):
0
1
44
2
3
4
header only
Chan 00
d
Ident
6
5
s
GET:
Response structure (10 bytes)
6 byte header followed by 4 byte data packet as follows:
0
1
45
06
2
3
header
04
00
4
5
6
7
d|
s
Chan Ident
Data
8
9
Voltage
For structure see SET message above.
Page 122 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_SET_OUTPUTPOS
MGMSG_PZ_REQ_OUTPUTPOS
MGMSG_PZ_GET_OUTPUTPOS
Function:
0x0646
0x0647
0x0648
Used to set the output position of piezo actuator. This command is
applicable only in Closed Loop mode. If called when in Open Loop
mode it is ignored. The position of the actuator is relative to the
datum set for the arrangement using the ZeroPosition method.
SET:
Command structure (10 bytes)
6 byte header followed by 4 byte data packet as follows:
0
1
46
06
2
3
header
04
00
4
5
6
7
d|
s
Chan Ident
Data
8
9
PositionSW
Data Structure:
field
Chan Ident
PositionSW
Example:
description
The channel being addressed
The output position of the piezo relative to the zero
position. The voltage is set in the range 0 to 32767 (0 to
7FFF) or 0 to 65535 (0 to FFFF) depending on the unit. This
corresponds to 0 to 100% of the maximum piezo extension.
format
word
word
Set the drive position to 15 µm (when total travel = 100 µm).
TX 46, 06, 04, 00, D0, 01, 01, 00, 66, 26,
Header: 46, 06, 04, 00, D0, 01: SetPZOutputPos, 04 byte data packet, Generic USB Device.
Chan Ident: 01, 00: Channel 1
PositionSW: 33, 13: corresponds to 15 µm for a max 100 µm unit
REQUEST:
Command structure (6 bytes):
0
1
47
06
2
3
4
header only
Chan 00
d
Ident
5
s
GET:
Response structure (10 bytes)
6 byte header followed by 4 byte data packet as follows:
0
1
48
06
2
3
header
04
00
4
5
6
7
d|
s
Chan Ident
Data
8
9
PositionSW
For structure see SET message above.
Page 123 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_SET_INPUTVOLTSSRC
MGMSG_PZ_REQ_INPUTVOLTSSRC
MGMSG_PZ_GET_INPUTVOLTSSRC
Function:
0x0652
0x0653
0x0654
Used to set the input source(s) which controls the output from the
HV amplifier circuit (i.e. the drive to the piezo actuators).
SET:
Command structure (10 bytes)
6 byte header followed by 4 byte data packet as follows:
0
1
52
06
2
3
header
04
00
4
5
6
7
d|
s
Chan Ident
Data
8
9
VoltSrc
Data Structure:
field
Chan Ident
VoltSrc
Example:
description
The channel being addressed
The following values are entered into the VoltSrc parameter
to select the various analog sources.
0x00 Software Only: Unit responds only to software inputs
and the HV amp output is that set using the SetVoltOutput
method or via the GUI panel.
0x01 External Signal: Unit sums the differential signal on the
rear panel EXT IN (+) and EXT IN (-)connectors with the
voltage set using the SetVoltOutput method
0x02 Potentiometer: The HV amp output is controlled by a
potentiometer input (either on the control panel, or
connected to the rear panel User I/O D-type connector)
summed with the voltage set using the SetVoltOutput
method.
The values can be ‘bitwise ord’ to sum the software source
with either or both of the other source options.
format
word
word
Set the input source to software and potentiometer.
TX 52, 06, 04, 00, D0, 01, 01, 00, 02, 00,
Header: 52, 06, 04, 00, D0, 01: SetVoltsSrc, 04 byte data packet, Generic USB Device.
Chan Ident: 01, 00: Channel 1
VoltSrc: 02, 00: selects software and potentiometer inputs
REQUEST:
Command structure (6 bytes):
0
1
53
06
2
3
4
header only
Chan 00
d
Ident
5
s
Page 124 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
GET:
Response structure (10 bytes)
6 byte header followed by 4 byte data packet as follows:
0
1
54
06
2
3
header
04
00
4
5
6
7
d|
s
Chan Ident
Data
8
9
VoltsSrc
For structure see SET message above.
Page 125 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_SET_PICONSTS
MGMSG_PZ_REQ_PICONSTS
MGMSG_PZ_GET_PICONSTS
Function:
0x0655
0x0656
0x0657
Used to set the proportional and integration feedback loop
constants. These parameters determine the response characteristics
when operating in closed loop mode.
The processors within the controller compare the required
(demanded) position with the actual position to create an error,
which is then passed through a digital PI-type filter. The filtered
value is used to develop an output voltage to drive the piezo.
SET:
Command structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
55
06
2
3
header
06
00
Data Structure:
field
Chan Ident
PropConst
IntConst
Example:
4
5
6
7
d|
s
Chan Ident
8
9
Data
PropConst
10
11
IntConst
description
The channel being addressed
The value of the proportional term in the range 0 to 255.
The value of the Integral term.in the range 0 to 255
format
word
word
word
Set the PI constants for a TPZ001 unit.
TX 55, 06, 06, 00, D0, 01, 01, 00, 64, 00, 0F, 00
Header: 55, 06, 05, 00, D0, 01: SetPIConsts, 06 byte data packet, Generic USB Device.
Chan Ident: 01, 00: Channel 1
PropConst: 64, 00: sets the proportional constant to 100
IntConst: 0F, 00: sets the integral constant to15
REQUEST:
Command structure (6 bytes):
0
1
56
06
2
3
4
header only
Chan 00
d
Ident
5
s
GET:
Response structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
57
06
2
3
header
06
00
4
5
6
7
d|
s
Chan Ident
8
9
Data
PropConst
10
11
IntConst
For structure see SET message above.
Page 126 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_REQ_PZSTATUSBITS
MGMSG_PZ_GET_PZSTATUSBITS
Function:
0x065B
0x065C
Returns a number of status flags pertaining to the operation of the
piezo controller channel specified in the Chan Ident parameter.
These flags are returned in a single 32 bit integer parameter and can
provide additional useful status information for client application
development. The individual bits (flags) of the 32 bit integer value
are described in the following tables.
REQUEST:
Command structure (6 bytes):
0
1
5B
06
2
3
header only
Chan 00
Ident
4
5
d
s
GET:
Response structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
5C
06
Data Structure:
field
Chan Ident
StatusBits
2
3
header
06
00
4
5
6
7
d|
s
Chan Ident
8
Data
9
10
11
StatusBits
description
The channel being addressed
The status bits for the associated controller channel. The
meaning of the individual bits (flags) of the 32 bit integer
value will depend on the controller and are described in the
following tables.
format
word
dword
TPZ001 controller
Hex Value
0x00000001
0x00000010
0x00000020
0x00000040
0x00000100
0x00000400
Bit Number
1
2 to 4
5
6
7 to 8
9
10
11
12 to 20
Description
Piezo actuator connected (1 - connected, 0 - not connected).
For Future Use
Piezo channel has been zero'd (1 - zero'd, 0 not zero'd).
Piezo channel is zeroing (1 - zeroing, 0 - not zeroing).
For Future Use
Strain gauge feedback connected (1 - connected, 0 - not
connected).
For Future Use
Position control mode (1 - closed loop, 0 - open loop).
For Future Use
Page 127 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
BPC series controllers
Hex Value
0x00000001
Bit Number
1
2 to 4
5
6
7 to 8
9
Description
Piezo actuator connected (1 - connected, 0 - not connected).
For Future Use
0x00000010
Piezo channel has been zero'd (1 - zero'd, 0 not zero'd).
0x00000020
Piezo channel is zeroing (1 - zeroing, 0 - not zeroing).
0x00000040
For Future Use
0x00000100
Strain gauge feedback connected (1 - connected, 0 - not
connected).
10
For Future Use
0x00000400
11
Position control mode (1 - closed loop, 0 - open loop).
12
For Future Use
Note. Bits 13, 14 and 15 are applicable only to BPC30x series controllers.
0x00001000
13
Hardware set to 75 V max output voltage
0x00002000
14
Hardware set to 100 V max output voltage
0x00004000
15
Hardware set to 150 V max output voltage
16 to 20
For Future Use
Note. Bits 21 to 28 (Digital Input States) are only applicable if the associated digital input is fitted to
your controller – see the relevant handbook for more details
0x00100000
21
Digital input 1 state (1 - logic high, 0 - logic low).
0x00200000
22
Digital input 2 state (1 - logic high, 0 - logic low).
0x00400000
23
Digital input 3 state (1 - logic high, 0 - logic low).
0x00800000
24
Digital input 4 state (1 - logic high, 0 - logic low).
0x01000000
25
Digital input 5 state (1 - logic high, 0 - logic low).
0x02000000
26
Digital input 6 state (1 - logic high, 0 - logic low).
0x04000000
27
Digital input 7 state (1 - logic high, 0 - logic low).
0x08000000
28
Digital input 8 state (1 - logic high, 0 - logic low).
29
For Future Use
0x20000000
30
Active (1 – indicates unit is active, 0 – not active)
0x40000000
31
For Future Use
0x80000000
32
Channel enabled (1 – enabled, 0- disabled)
Page 128 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_GET_PZSTATUSUPDATE
Function:
0x0661
This function is used in applications where spontaneous status
messages (i.e. messages sent using the START_STATUSUPDATES
command) must be avoided. There is no REQ message.
Status update messages contain information about the position and
status of the controller (for example position and O/P voltage). The
messages will be sent by the controller each time the function is
called.
NOTE. This message is also returned by the NanoTrak control when it is operating in piezo
mode.
GET:
Status update messages are received with the following format:Response structure (16 bytes)
6 byte header followed by 10 byte data packet as follows:
0
1
2
3
header
0A
00
61
06
12
13
14
Status Bits
4
5
6
7
d|
s
Chan Ident
8
9
Data
OPVoltage
10
11
Position
15
Data Structure:
field
description
Chan Ident
The channel being addressed is always P_MOD_CHAN1
(0x01) encoded as a 16-bit word (0x01 0x00)
OPVoltage
The output voltage applied to the piezo. The voltage is
returned in the range -32768 to 32767 (-7FFF to 7FFF) which
corresponds to -100% to 100% of the maximum output
voltage as set using the TPZ_IOSETTINGS command.
Position
The position of the piezo. The position is returned in the
range 0 to 32767 (0 to 7FFF) which corresponds to 0 to
100% of the maximum position.
Status Bits
The meaning of the individual bits (flags) of the 32 bit
integer value will depend on the controller and are
described in the following tables.
format
word
short
short
dword
Page 129 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
TPZ001 controller
Hex Value
0x00000001
0x00000010
0x00000020
0x00000040
0x00000100
0x00000400
Bit Number
1
2 to 4
5
6
7 to 8
9
10
11
12 to 20
Description
Piezo actuator connected (1 - connected, 0 - not connected).
For Future Use
Piezo channel has been zero'd (1 - zero'd, 0 not zero'd).
Piezo channel is zeroing (1 - zeroing, 0 - not zeroing).
For Future Use
Strain gauge feedback connected (1 - connected, 0 - not
connected).
For Future Use
Position control mode (1 - closed loop, 0 - open loop).
For Future Use
BPC series controllers
Hex Value
0x00000001
Bit Number
1
2 to 4
5
6
7 to 8
9
Description
Piezo actuator connected (1 - connected, 0 - not connected).
For Future Use
0x00000010
Piezo channel has been zero'd (1 - zero'd, 0 not zero'd).
0x00000020
Piezo channel is zeroing (1 - zeroing, 0 - not zeroing).
0x00000040
For Future Use
0x00000100
Strain gauge feedback connected (1 - connected, 0 - not
connected).
10
For Future Use
0x00000400
11
Position control mode (1 - closed loop, 0 - open loop).
12 to 20
For Future Use
Note. Bits 21 to 28 (Digital Input States) are only applicable if the associated digital input is fitted to
your controller – see the relevant handbook for more details
0x00100000
21
Digital input 1 state (1 - logic high, 0 - logic low).
0x00200000
22
Digital input 2 state (1 - logic high, 0 - logic low).
0x00400000
23
Digital input 3 state (1 - logic high, 0 - logic low).
0x00800000
24
Digital input 4 state (1 - logic high, 0 - logic low).
0x01000000
25
Digital input 5 state (1 - logic high, 0 - logic low).
0x02000000
26
Digital input 6 state (1 - logic high, 0 - logic low).
0x04000000
27
Digital input 7 state (1 - logic high, 0 - logic low).
0x08000000
28
Digital input 8 state (1 - logic high, 0 - logic low).
29
For Future Use
0x20000000
30
Active (1 – indicates unit is active, 0 – not active)
0x40000000
31
For Future Use
0x80000000
32
Channel enabled (1 – enabled, 0- disabled)
Page 130 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_PZ_ACK_PZSTATUSUPDATE
Issue 15
0x0662
Only Applicable If Using USB COMMS. Does not apply to RS-232 COMMS
Function:
If using the USB port, this message called “server alive” must be sent
by the server to the controller at least once a second or the
controller will stop responding after ~50 commands.
The controller keeps track of the number of "status update" type of
messages (e.g.move complete message) and it if has sent 50 of
these without the server sending a "server alive" message, it will
stop sending any more "status update" messages.
This function is used by the controller to check that the PC/Server
has not crashed or switched off. There is no response.
Structure (6 bytes):
0
1
62
06
2
3
4
header only
00
00
d
5
s
TX 62, 06, 00, 00, 50, 01
Page 131 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_SET_OUTPUTLUT
MGMSG_PZ_REQ_OUTPUTLUT
MGMSG_PZ_GET_OUTPUTLUT
Function:
0x0700
0x0701
0x0702
It is possible to use the controller in an arbitrary Waveform
Generator Mode (WGM). Rather than the unit outputting an
adjustable but static voltage or position, the WGM allows the user
to define a voltage or position sequence to be output, either
periodically or a fixed number of times, with a selectable interval
between adjacent samples.
This waveform generation function is particularly useful for
operations such as scanning over a particular area, or in any other
application that requires a predefined movement sequence.
The waveform is stored as values in an array, with a maximum of
8000 samples per channel. The samples can have the meaning of
voltage or position; if open loop operation is specified when the
samples are output, then their meaning is voltage and vice versa, if
the channel is set to closed loop operation, the samples are
interpreted as position values. If the waveform to be output
requires less than 8000 samples, it is sufficient to download the
desired number of samples.
This function is used to load the LUT array with the required output
waveform. The applicable channel is specified by the Chan Ident
parameter
If only a sub set of the array is being used (as specified by the
cyclelength parameter of the SetOutputLUTParams function), then
only the first cyclelength values need to be set. In this manner, any
arbitrary voltage waveform can be programmed into the LUT.
Note. The LUT values are output by the system at a maximum
bandwidth of 7KHz, e.g.500 LUT values will take approximately 71
ms to be clocked out and the full 8000 LUT values will take
approximately 1.14 secs.
SET:
Command structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
00
07
2
3
header
06
00
4
5
6
7
d|
s
Chan Ident
8
Data
Index
9
10
11
Output
Data Structure:
field
description
Chan Ident
The channel being addressed
Index
The position in the array of the value to be set (0 to 7999 for
BPC, 0 to 512 for TPZ).
Output
The voltage value to be set. Values are set in the range 32768 to 32767 which corresponds to -100% to 100% of the
max HV output (piezo drive voltage).
format
word
word
short
Page 132 of 265
Thorlabs APT Controllers
Example:
Host-Controller Communications Protocol
Issue 15
Set output LUT value of 10V (for 150V piezo) in array position 2.
TX 00, 07, 06, 00, D0, 01, 01, 00, 02, 00, 88, 08
Header: 00, 07, 06, 00, D0, 01: SETOUTPUTLUT, 06 byte data packet, Generic USB Device.
Chan Ident: 01, 00: Channel 1
Index: 02, 00: sets the value of array position 2
IntConst: 88, 08: sets the value to 10V. (i.e. 150/10=15, 32767/15=2184, 2184=0888H)
REQUEST:
Command structure (6 bytes):
0
1
01
07
2
3
4
header only
Chan 00
d
Ident
5
s
GET:
Response structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
02
07
2
3
header
06
00
4
5
6
7
d|
s
Chan Ident
8
Data
Index
9
10
11
Output
For structure see SET message above.
Page 133 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_SET_OUTPUTLUTPARAMS
MGMSG_PZ_REQ_OUTPUTLUTPARAMS
MGMSG_PZ_GET_OUTPUTLUTPARAMS
Function:
0x0703
0x0704
0x0705
It is possible to use the controller in an arbitrary Waveform
Generator Mode (WGM). Rather than the unit outputting an
adjustable but static voltage or position, the WGM allows the user
to define a voltage or position sequence to be output, either
periodically or a fixed number of times, with a selectable interval
between adjacent samples.
This waveform generation function is particularly useful for
operations such as scanning over a particular area, or in any other
application that requires a predefined movement sequence.
This function is used to set parameters which control the output of
the LUT array.
SET:
Command structure (36 bytes)
6 byte header followed by 30 byte data packet as follows:
0
1
03
12
2
4
5
6
07
3
header
1E
00
d|
s
Chan Ident
13
14
16
17
15
NumCycles
24
25
26
27
28
7
18
Data
DelayTime
19
29
31
30
8
Data
Mode
20
9
10
11
CycleLength
21
22
23
PreCycleRest
32
33
34
35
Data
PostCycleRest
Data Structure:
field
Chan Ident
Mode
OPTrigStart
OPTrigWidth
TrigRepCycle
description
The channel being addressed
Specifies the output mode of the LUT waveform as follows.
Values can be ‘bitwise or’d together as required.
0x01 - OUTPUTLUT_CONTINUOUS – The waveform is
output continuously (i.e. until a StopOPLUT command is
received).
0x02 - OUTPUTLUT_FIXED – A fixed number of waveform
cycles are output (as specified in the NumCycles
parameter).
format
word
word
The following values are not applicable to the TPZ001 unit
because it has no triggering functionality.
0x04 - OUTPUTLUT_OUTPUTTRIG – Enables Output
Triggering. With OP Triggering enabled, the system can be
configured to generate one or more hardware trigger
pulses during a LUT (waveform) cycle output, as specified
in the OPTrigStart parameter below.
Page 134 of 265
Thorlabs APT Controllers
CycleLength
NumCycles
DelayTime
Host-Controller Communications Protocol
Issue 15
0x08 - OUTPUTLUT_INPUTTRIG –Enables Input Triggering.
With INPUTTRIG set to ‘False’, the waveform generator will
start as soon as it receives a StartOPLUT command. If
however, INPUTTRIG is set to ‘True, waveform generation
will only start if a software command is received AND the
trigger input is in its active state. In most cases, the trigger
input will be used to synchronize waveform generation to
an external event. In this case, the StartOPLUT command
can be viewed as a command to "arm" the waveform
generator and the waveform will start as soon as the input
becomes active.
The trigger input can be used to trigger a single channel or
multiple channels. In this latter case ensure that input
triggering is enabled on all the desired channels. Using the
trigger input for multiple channels is particularly useful to
synchronize all channels to the same event.
0x10 - OUTPUTLUT_OUTPUTTRIG_SENSE_HI – determines
the voltage sense and edge of the O/P trigger. If this bit is
set, the units responds to a rising edge (OV to 5V) trigger. If
not set it responds to a falling edge (5V to 0V).
0x20 - OUTPUTLUT_INPUTTRIG_SENSE_HI – determines
the voltage sense and edge of the I/P trigger. If this bit is
set, the units responds to a rising edge (OV to 5V) trigger. If
not set it responds to a falling edge (5V to 0V).
0x40 - OUTPUTLUT_LUTGATED – If set to ‘1’ the trigger acts
as a gate, if set to ‘0’ acts as trigger.
0x80 - OUTPUTLUT_OUTPUTTRIG_REPEAT – This
parameter is a flag which determines if repeated O/P
triggering is enabled. If set, the output trigger is repeated
by the interval set in the TrigRepeatCycle parameter. This is
useful for multiple triggering during a single voltage O/P
sweep.
Specifies how many samples will be output in each cycle of
the waveform. It can be set in the range 0 to 7999 for BPC
and MPZ units, and 0 to 512 for TPZ units. It must be less
than or equal to the total number of samples that were
loaded. (To set the LUT array values for a particular
channel, see the SetOutputLUT function).
Specifies the number of cycles (1 to 2147483648) to be
output when the Mode parameter is set to fixed. If Mode is
set to Continuous, the NumCycles parameter is ignored. In
both cases, the waveform is not output until a StartOPLUT
command is received.
Specifies the delay (in sample intervals) that the system
waits after setting each LUT output value. By default, the
time the system takes to output LUT values (sampling
interval) is set at the maximum bandwidth possible,
i.e. 7KHz (0.14 ms) for MPZ models, 1kHz(1.0 ms) for BPC
and 4 kHz (0.25 ms) for TPZ units.
The DelayTime parameter specifies the time interval
between neighbouring samples, i.e. for how long the
word
long
long
Page 135 of 265
Thorlabs APT Controllers
PreCycleRest
PostCycleRest
OPTrigStart
Host-Controller Communications Protocol
Issue 15
sample will remain at its present value.
To increase the time between samples, set the DelayTime
parameter to the required additional delay (1 to
2147483648 sample intervals). In this way, the user can
stretch or shrink the waveform without affecting its overall
shape.
In some applications, during waveform generation the first
and the last samples may need to be handled differently
from the rest of the waveform. For example, in a
positioning system it may be necessary to start the
movement by staying at a certain position for a specified
length of time, then perform a movement, then remain at
the last position for another specified length of time. This is
the purpose of PreCycleRest and PostCycleRest
parameters, i.e. they specify the length of time that the
first and last samples are output for, independently of the
DelayTime parameter.
The PreCycleRest parameter allows a delay time to be set
before the system starts to clock out the LUT values. The
delay can be set between 0 and 2147483648 sample
intervals. The system then outputs the first value in the
LUT until the PreCycleRest time has expired.
In a similar way to PreCycleRest, the PostCycleRest
parameter specifies the delay imposed by the system after
a LUT table has been output. The delay can be set between
0 and 2147483648 sample intervals. The system then
outputs the last value in the cycle until the PostCycleRest
time has expired.
Output triggering is enabled by setting the value 0x04 in
the MODE parameter. With Op Triggering enabled, the
system can be configured to generate one or more
hardware trigger pulses during a LUT (waveform) cycle
output. The OPTrigStart parameter specifies the LUT value
(position in the LUT array) at which to initiate an output
trigger. In this way, it is possible to synchronize an output
trigger with the output of a particular voltage value. Values
are set in the range 1 to 8000 but must also be less than
the CycleLength parameter.
OPTrigWidth
sets the width of the output trigger. Values are entered in
1ms increments for BPC20x models.
TrigRepeatCycle specifies the repeat interval between O/P triggers when
OUTPUTTRIG_REPEAT is set to True. This parameter is
specified in the number of LUT values between triggers (0
to 7999 for MPZ and BPC units, 0 to 512 for TPZ units). If
this value is greater than the lCycleLength parameter (set
in the SetOPLUTParams method) then by definition, a
repeated trigger will not occur during a single waveform
cycle output.
long
long
word
long
word
Page 136 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Example:
Set output LUT parameters as follows:
Channel: 1
Mode: OUTPUTLUT continuous
CycleLength: 40
NumCycles: 20
DelayTime: 10
PreCycleRest: 10
PostCycleRest: 10
OPTrigStart: 0
OPTrigWidth: 1
TrigRepeatCycle: 100
TX 03, 07, 1E, 00, D0, 01, 01, 00, 01, 00, 28, 00, 14, 00, 00, 00, 0A, 00, 00, 00, 0A, 00, 00, 00,
0A, 00, 00, 00, 00, 00, 01, 00, 00, 00, 64, 00
Header: 03, 07, 06, 00, D0, 01: SETOUTPUTLUTPARAMS, 30 byte data packet, Generic USB
Device.
Channel: 1
Mode: OUTPUTLUT continuous
CycleLength: 00, 28
NumCycles: 00, 00, 00, 14
DelayTime: 00, 00, 00, 0A
PreCycleRest: 00, 00, 00, 0A
PostCycleRest: 00, 00, 00, 0A
OPTrigStart: 00, 00
OPTrigWidth: 00, 00, 00, 01
TrigRepeatCycle: 00, 64
REQUEST:
Command structure (6 bytes):
0
1
04
07
2
3
4
header only
Chan 00
d
Ident
5
s
GET:
Response structure (36 bytes)
6 byte header followed by 30 byte data packet as follows:
0
1
03
12
2
4
5
6
07
3
header
1E
00
d|
s
Chan Ident
13
14
16
17
15
NumCycles
24
25
26
27
28
7
18
Data
DelayTime
19
29
31
30
8
Data
Mode
20
9
10
11
CycleLength
21
22
23
PreCycleRest
32
33
34
35
Data
PostCycleRest
OPTrigStart
OPTrigWidth
TrigRepCycle
For structure see SET message above.
Page 137 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_PZ_START_LUTOUTPUT
Function:
Issue 15
0x0706
This function is used to start the voltage waveform (LUT) outputs.
Note. If the IPTrig flag of the SetOPLUTTrigParams function is set to
false, this method initiates the waveform immediately. If the IPTrig
flag is set to true, then this method ‘arms’ the system, in readiness
for receipt of an input trigger.
TX structure (6 bytes):
0
1
06
07
2
3
4
header only
Chan 00
d
Ident
5
s
MGMSG_PZ_STOP_LUTOUTPUT
Function:
0x0707
This function is used to stop the voltage waveform (LUT) outputs.
TX structure (6 bytes):
0
1
07
07
2
3
4
header only
Chan 00
d
Ident
5
s
Page 138 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_PZ_SET_EEPROMPARAMS
Function:
Issue 15
0x07D0
Used to save the parameter settings for the specified message.
These settings may have been altered either through the various
method calls or through user interaction with the GUI (specifically,
by clicking on the ‘Settings’ button found in the lower right hand
corner of the user interface).
SET:
Command structure (10 bytes)
6 byte header followed by 4 byte data packet as follows:
0
1
D0
07
2
3
header
04
00
4
5
6
7
d|
s
Chan Ident
Data
8
9
MsgID
Data Structure:
field
Chan Ident
MsgID
description
The channel being addressed
The message ID of the message containing the parameters
to be saved.
format
word
word
Example:
TX D0, 07, 04, 00, D0, 01, 01, 00, 03, 07,
Header: D0, 07, 04, 00, D0, 01: Set_EEPROMPARAMS, 04 byte data packet, Generic USB
Device.
Chan Ident: 01, 00: Channel 1
MsgID: Save parameters specified by message 0703 (SetOutputLUTParams).
Page 139 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_SET_TPZ_DISPSETTINGS
MGMSG_PZ_REQ_TPZ_DISPSETTINGS
MGMSG_PZ_GET_TPZ_DISPSETTINGS
Function:
0x07D1
0x07D2
0x07D3
Used to set the intensity of the LED display on the front of the TPZ
unit.
SET:
Command structure (8 bytes)
6 byte header followed by 2 byte data packet as follows:
0
1
D1
07
2
3
header
02
00
4
5
d|
s
6
7
Data
DispIntensity
Data Structure:
field
DispIntensity
Example:
description
The intensity is set as a value from 0 (Off) to 255 (brightest).
format
word
Set the input source to software and potentiometer.
TX D1, 07, 02, 00, D0, 01, 64, 00,
Header: D1, 07, 02, 00, D0, 01: Set_DISPSETTINGS, 02 byte data packet, Generic USB Device.
DispIntensity: 64, 00: Sets the display brightness to 100 (40%)
REQ:
Command structure (6 bytes):
0
1
D2
2
3
4
header only
01
00
d
07
Example:
5
s
Request the display intensity
TX D2, 07, 01, 00, 50, 01
GET:
Command structure (8 bytes)
6 byte header followed by 2 byte data packet as follows:
0
1
D3
07
2
3
header
02
00
4
5
d|
s
6
7
Data
DispIntensity
See SET for data structure.
Page 140 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_SET_TPZ_IOSETTINGS
MGMSG_PZ_REQ_TPZ_IOSETTINGS
MGMSG_PZ_GET_TPZ_IOSETTINGS
Function:
0x07D4
0x07D5
0x07D6
This function is used to set various I/O settings as described below.
The settings can be saved (persisted) to the EEPROM by calling the
MGMSG_PZ_SET_EEPROMPARAMS function.
SET:
Command structure (16 bytes)
6 byte header followed by 10 byte data packet as follows:
0
1
D4
07
12
13
2
3
header
0A
00
Data
Future Use
14
4
5
6
7
d|
s
Chan Ident
8
9
Data
VoltageLimit
10
11
HubAnalogIP
15
Future Use
Data Structure:
field
Chan Ident
description
format
The channel being addressed is always P_MOD_CHAN1
word
(0x01) encoded as a 16-bit word (0x01 0x00)
VoltageLimit
The piezo actuator connected to the T-Cube has a specific word
maximum operating voltage range. This parameter sets
the maximum output to the value specified as follows:
0x01 VOLTAGELIMIT_75V
75V limit
0x02 VOLTAGELIMIT_100V 100V limit
0x03 VOLTAGELIMIT_150V 150V limit
HubAnalogInput When the T-Cube Piezo Driver unit is used in conjunction
word
with the T-Cube Strain Gauge Reader (TSG001) on the TCube Controller Hub (TCH001), a feedback signal can be
passed from the Strain Gauge Reader to the Piezo unit.
High precision closed loop operation is then possible using
our complete range of feedback-equipped piezo actuators.
This parameter is used to select the way in which the
feedback signal is routed to the Piezo unit as follows:
0x01 HUB_ANALOGUEIN_A the feedback
signals run through all T-Cube bays.
0x02 HUB_ANALOGUEIN_B the feedback
signals run between adjacent pairs of T-Cube bays
(i.e. 1&2, 3&4, 5&6). This setting is useful when
several pairs of Strain Gauge/Piezo Driver cubes
are being used on the same hub.
0x03 EXTSIG_SMA the feedback signals run
through the rear panel SMA connectors.
Page 141 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
REQ:
Command structure (6 bytes):
0
1
D5
2
3
4
header only
01
00
d
07
5
s
GET:
Response structure (16 bytes)
6 byte header followed by 10 byte data packet as follows:
0
1
D4
07
12
13
Future Use
2
3
header
0A
00
Data
14
4
5
6
7
d|
s
Chan Ident
8
9
Data
VoltageLimit
10
11
HubAnalogIP
15
Future Us
See SET message for structure.
Page 142 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_PZ_SET_ZERO
Function:
Issue 15
0x0658
This function applies a voltage of zero volts to the actuator
associated with the channel specified by the lChanID parameter, and
then reads the position. This reading is then taken to be the zero
reference for all subsequent position readings. This routine is
typically called during the initialisation or re-initialisation of the
piezo arrangement.
TX structure (6 bytes):
0
1
58
06
2
3
4
header only
Chan 00
d
Ident
5
s
Page 143 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_REQ_MAXTRAVEL
MGMSG_PZ_GET_MAXTRAVEL
Function:
0x0650
0x0651
In the case of actuators with built in position sensing, the
Piezoelectric Control Unit can detect the range of travel of the
actuator since this information is programmed in the electronic
circuit inside the actuator. This function retrieves the maximum
travel for the piezo actuator associated with the channel specified
by the Chan Ident parameter, and returns a value (in microns) in the
Travel parameter.
REQ:
Command structure (6 bytes):
0
1
50
06
2
3
4
header only
01
00
d
Example:
5
s
Request the max travel of the actuator associated with Channel 1,
bay 2 (0x22)
TX 50, 06, 01, 00, 22, 01
GET:
Response structure (10 bytes)
6 byte header followed by 4 byte data packet as follows:
0
1
51
06
Data Structure:
field
Chan Ident
Travel
Example:
2
3
header
04
00
4
5
d|
s
6
7
Chan ID
Data
8
9
Travel
description
The channel being addressed.
The max travel of the actuator associated with the specified
channel in the range 0 to 65535 (0 to FFFF). The travel is
read from a calibration resistor and is returned in real world
units, steps of 100nm.
format
word
Get the maximum travel.
TX 51, 06, 04, 00, 01, A2, 01, 00, C8, 00
Header: 51, 06, 04, 00, A2, 01: Get_Max Travel, 04 byte data packet, d=A2 (i.e. 22 ORed with
80), s=01 (PC).
Channel 1: 01, 00:
Travel: 00C8 (200 i.e. 20 µm)
Page 144 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_SET_IOSETTINGS
MGMSG_PZ_REQ_IOSETTINGS
MGMSG_PZ_GET_IOSETTINGS
Function:
0x0670
0x0671
0x0672
This function is used to set various I/O settings as described below.
The settings can be saved (persisted) to the EEPROM by calling the
MGMSG_PZ_SET_EEPROMPARAMS function.
SET:
Command structure (16 bytes)
6 byte header followed by 10 byte data packet as follows:
0
1
70
06
12
13
2
3
header
0A
00
4
5
6
7
d|
s
Chan Ident
8
9
Data
AmpCurrentLim
10
11
AmpLPFilter
14
15
Data
FeedbackSig
BNCTrigORLVOut
Data Structure:
field
Chan Ident
description
The channel being addressed is always P_MOD_CHAN1
(0x01) encoded as a 16-bit word (0x01 0x00)
AmpCurrentLim This parameter sets the maximum current output for the
HV amplifier circuit as follows:
CURRENTLIMIT_100MA 0x00
CURRENTLIMIT_250MA 0x01
CURRENTLIMIT_500MA 0x02
AmpLPFilter
This parameter sets the value of the hardware low pass
filter applied to the HV amplifier output channels. It can
be used to improve stability and reduce noise on the HV
outputs. It is not channel specific and the Chan Ident
parameter is ignored for this particular setting. Values are
set as follows:
OUTPUTLPFILTER_10HZ 0x00
OUTPUTLPFILTER_100HZ 0x01
OUTPUTLPFILTER_5KHZ 0x02
OUTPUTLPFILTER_NONE 0x03
FeedbackSig
For future use. The feedback signal type is locked at AC
(strain gauge) and cannot be changed at this time.
BNCTrigORLVOut The Control IO BNC connectors on the rear panel are dual
function. When set to Low Voltage (LV) outputs they
mirror the voltage on the Piezo drive HV connectors and
can be connected to an oscilloscope for monitoring
purposes. When set to Trigger mode they provide the
trigger input and output connections. This function is
used to set the mode of the rear panel BNC connectors as
follows:
BNCMODE_TRIG Trigger Output 0x0000
BNCMODE_LVOUT LV Output 0xFFFF
format
word
word
word
Page 145 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
REQ:
Command structure (6 bytes):
0
1
71
06
2
3
4
header only
01
00
d
5
s
GET:
Response structure (16 bytes)
6 byte header followed by 10 byte data packet as follows:
0
1
72
06
12
13
2
3
header
0A
00
4
5
6
7
d|
s
Chan Ident
8
9
Data
AmpCurrentLim
10
11
AmpLPFilter
14
15
Data
FeedbackSig
BNCTrigORLVOut
See SET message for structure.
Page 146 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_SET_OUTPUTMAXVOLTS
MGMSG_PZ_REQ_OUTPUTMAXVOLTS
MGMSG_PZ_GET_OUTPUTMAXVOLTS
Function:
0x0680
0x0681
0x0682
The piezo actuator connected to the unit has a specific maximum
operating voltage range: 75, 100 or 150 V. This function sets the
maximum voltage for the piezo actuator associated with the
specified channel.
SET:
Command structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
80
06
2
3
header
06
00
Data Structure:
field
Chan Ident
Voltage
Flags
4
5
6
7
d|
s
Chan Ident
8
9
Data
Voltage
10
11
Flags
description
The channel being addressed.
This parameter sets the maximum output to the value
specified, in 1/10 volt steps between 0 and 1500 (i.e. 0 to
150 V).
These flags tell the APT server certain parameters relating
to the stage and controller combination. They are not
relevant to the SET command and are only used in the
GET_OUTPUTMAXVOLTS message
format
word
word
word
Note. When the SET_OUTPUTMAXVOLTS message is sent, a GET_OUTPUTMAXVOLTS
message is automatically returned. This is to inform the server that the max output voltage
has changed. Similarly, a GET_MAXTRAVEL message is also returned to tell the server the
new max travel value.
Example:
Set the max output voltage to 100V.
TX 80, 06, 06, 00, D0, 01, 01, 00, E8, 03, 08, 00
Header: 80, 06, 06, 00, D0, 01: Set_OutputMaxVolts, 06 byte data packet, d=D0 (i.e. 50 ORed
with 80 i.e. generic USB device), s=01 (PC).
Channel 1: 01, 00:
Voltage: 03E8 (1000 i.e. 100V)
Flags: N/A
REQ:
Command structure (6 bytes):
0
1
81
06
2
3
4
header only
01
00
d
5
s
Page 147 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
GET:
Response structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
82
06
Data Structure:
field
Chan Ident
Voltage
Flags
Example:
2
3
header
06
00
4
5
6
7
d|
s
Chan Ident
8
9
Data
Voltage
10
11
Flags
description
The channel being addressed.
This parameter sets the maximum output to the value
specified,either 750, 1000 or 1500 (i.e. 75, 100 or 150 V).
These flags tell the APT server certain parameters relating
to the stage and controller combination.
The meaning of the individual bits (flags) of the 16 bit
integer value is as follows:
0x01 For Future Use
0x02 VOLTAGELIMIT_75V
75V limit
0x04 VOLTAGELIMIT_100V 100V limit
0x05 VOLTAGELIMIT_150V 150V limit
format
word
word
word
Set the max output voltage to 100V.
TX 82, 06, 06, 00, D0, 01, 01, 00, E8, 03, 08, 00
Header: 80, 06, 06, 00, D0, 01: Get_MaxOutputVolts, 06 byte data packet, d=D0 (i.e. 50
ORed with 80 i.e. generic USB device), s=01 (PC).
Channel 1: 01, 00:
Voltage: 03E8 (1000 i.e. 100V)
Flags: 08, 00: 150 V max voltage
Page 148 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_SET_TPZ_SLEWRATES
MGMSG_PZ_REQ_TPZ_SLEWRATES
MGMSG_PZ_GET_TPZ_SLEWRATES
Function:
0x0683
0x0684
0x0685
When stages with delicate internal mechanisms are being driven, it
is possible that sudden large changes to the drive voltage could
cause damage. This function is used to limit the rate of change of
the drive voltage. Different limits may be set for open loop and
closed loop operating modes.
Note. The controller is loaded at the factory with default values
suitable for driving legacy piezo stages. For newer generation stages,
the slew rate is read in automatically. Consequently, these
parameters should not require adjustment under normal operating
conditions.
SET:
6 byte header followed by 6 byte data packet as follows:
0
1
83
06
Data Structure:
field
Chan Ident
SlewOpen
2
3
header
06
00
4
5
6
7
d|
s
Chan Ident
8
9
Data
SlewOpen
10
11
SlewClosed
description
The channel being addressed.
This parameter sets the maximum slew rate when
operating in open loop mode. Values are set in the range 0
to 32767, where 0 disables the limit, and 1 is the slowest
rate. Values are calculated in V/ms as follows:
format
word
word
Slew Rate = Value x Max Voltage (i.e. 75, 100 or 150 V)
19000
SlewClosed
Example:
This parameter sets the maximum slew rate when
operating in closed loop mode.
Values are calculated as above
word
Set the open and closed max slew rates to 10V/ms for a 150V piezo.
TX 83, 06, 06, 00, D0, 01, 01, 00, F2, 04, F2, 04
Header: 80, 06, 06, 00, D0, 01: Set_SlewRates, 06 byte data packet, d=D0 (i.e. 50 ORed with
80 i.e. generic USB device), s=01 (PC).
Channel 1: 01, 00:
SlewOpen: F2, 04 (10V/ms i.e. 1266 x 150 / 19000)
SlewClosed: F2, 04
Page 149 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
REQ:
Command structure (6 bytes):
0
1
84
06
2
3
4
header only
01
00
d
5
s
GET:
Response structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
85
06
2
3
header
06
00
4
5
6
7
d|
s
Chan Ident
8
9
Data
SlewOpen
10
11
SlewClosed
See SET message for structure.
Page 150 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_MOT_SET_PZSTAGEPARAMDEFAULTS
Function:
Issue 15
0x0686
If the system has become unstable, possibly due to multiple changes
to parameter values, this message can be sent to the controller in
order to reset parameters to the default values stored in the
EEPROM.
TX structure (6 bytes):
0
1
86
06
2
3
4
header only
Chan 00
d
Ident
5
s
Page 151 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_PZ_SET_LUTVALUETYPE:
Function:
Issue 15
0x0708
It is possible to use the controller in an arbitrary Waveform
Generator Mode (WGM). Rather than the unit outputting an
adjustable but static voltage or position, the WGM allows the user
to define a voltage or position sequence to be output, either
periodically or a fixed number of times, with a selectable interval
between adjacent samples. This waveform generation function is
particularly useful for operations such as scanning over a particular
area, or in any other application that requires a predefined
movement sequence.
The waveform is stored as values in an array, with a maximum of
8000 samples per channel. The samples can have the meaning of
voltage or position; if open loop operation is specified when the
samples are output, then their meaning is voltage and vice versa, if
the channel is set to closed loop operation, the samples are
interpreted as position values. If the waveform to be output
requires less than 8000 samples, it is sufficient to download the
desired number of samples.
This message specifies whether the samples output from the LUT
are voltage or position values.
TX structure (6 bytes):
0
1
08
07
2
3
header only
LUTType 00
Data Structure:
field
LUTType
Example:
4
d
5
s
description
The LUT value type:
0x01 LUT values are Voltage
0x02 LUT values are position
format
char
Set the LUT value type to Volts.
TX, 08,07,01,00,50,01
Notes on using this message.
This method must be called BEFORE the LUT values are downloaded.
The LUT values are scaled to either voltage or position while the LUT is being downloaded. If
the value type needs to be changed during operation (e.g. the system was in open loop with
volts type selected, but now needs to change to closed loop with position type) the message
must be called again, and the LUT values downloaded again.
Page 152 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_SET_TSG_IOSETTINGS
MGMSG_PZ_REQ_TSG_IOSETTINGS
MGMSG_PZ_GET_TSG_IOSETTINGS
Function:
0x07DA
0x07DB
0x07DC
When the T-Cube Strain Gauge Reader is used in conjunction with
the T-Cube Piezo Driver unit (TPZ001) on the T-Cube Controller Hub
(TCH001), a feedback signal can be passed from the Strain Gauge
Reader to the Piezo unit. High precision closed loop operation is
then possible using our complete range of feedback-equipped piezo
actuators.
This method is used to select the way in which the feedback signal is
routed back to the Piezo unit.
SET:
Command structure (20 bytes)
6 byte header followed by 14 byte data packet as follows:
0
1
2
DA
07
3
header
0E
00
12
13
14
ForceCalib
Data Structure:
field
Chan Ident
15
Data
4
5
6
d|
s
Chan Ident
16
17
18
Future Use
7
8
9
Data
HubAnalogOP
10
11
DisplayMode
19
Future Use
description
The channel being addressed is always (e.g. 0x01)
encoded as a 16-bit word (0x01 0x00)
HubAnalogueOutput When the T-Cube Strain Gauge Reader is used in
conjunction with the T-Cube Piezo Driver unit (TPZ001)
on the T-Cube Controller Hub (TCH001), a feedback
signal can be passed from the Strain Gauge Reader to
the Piezo unit. High precision closed loop operation is
then possible using our complete range of feedbackequipped piezo actuators.
This message is used to select the way in which the
feedback signal is routed back to the Piezo unit
If set to 0x01 HUB_ANALOGUEOUT_1, the feedback
signals run through all T-Cube bays.
If set to 0x02 HUB_ANALOGUEOUT_2,the feedback
signals run between adjacent pairs of T-Cube bays (i.e.
1&2, 3&4, 5&6). This setting is useful when several
pairs of Strain Gauge/Piezo Driver cubes are being
used on the same hub.
format
word
word
Page 153 of 265
Thorlabs APT Controllers
Display Mode
Issue 15
The LED display window on the front of the unit (and
the display on the GUI panel) can be set to display the
strain gauge signal as a position (microns), a voltage
(Volts) or as a force (Newtons).
This parameter sets the display mode as follows
If set to 0x01 DISPUNITS_POSITION, the display shows
the strain gauge signal as a position in microns.
If set to 0x02 DISPUNITS_VOLTAGE, the display shows
the strain gauge signal as a voltage.
If set to 0x03 DISPUNITS_FORCE, the display shows the
strain gauge signal as a force
If using a force sensor with the TSG001 unit, the Force
Sensor has a specific maximum operating force. This
parameter sets the force calibration factor in steps of
0.001 N between 1 and 1000.
The default setting for this parameter is H7530
(30,000), to be compatible with our FSC102 force
sensor, which is specified to read forces up to 30N.
ForceCalib
Example:
Host-Controller Communications Protocol
word
word
Set the IO settings as follows.
TX DA, 07, 0E, 00, D0, 01, 01, 00, 01, 00, 02, 00, 30, 75, 00, 00, 00, 00, 00, 00
Header: DA, 07, 0E, 00, D0, 01: Set_TSG_IOSettings, 14 byte data packet, d=D0 (i.e. 50 ORed
with 80 i.e. generic USB device), s=01 (PC).
Channel 1: 01, 00:
HubAnalogueOutput: 01, 00 (Hub Analogue Output A)
Display Mode: 02, 00 (Display Voltage
Force Calibration: 30, 75 30,000 x 0.001 = 30 N
REQ:
Command structure (6 bytes):
0
1
DB
2
3
4
header only
01
00
d
07
5
s
GET:
Response structure (16 bytes)
6 byte header followed by 10 byte data packet as follows:
0
1
2
DC
07
3
header
0E
00
12
13
14
15
Data
ForceCalib
4
5
6
d|
s
Chan Ident
16
17
18
Future Use
7
8
9
Data
HubAnalogOP
10
11
DisplayMode
19
Future Use
See SET message for structure.
Page 154 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_REQ_TSG_READING
MGMSG_PZ_GET_TSG_READING
Function:
0x07DD
0x07DE
This message returns the current reading of the strain gauge
The units applicable are dependent on the current operating mode
(set using the DisplayMode parameter of the SET_TSG_IOSETTINGS
message.
REQUEST:
Command structure (6 bytes)
0
1
DD
2
3
header only
Chan 00
Ident
07
4
d
5
s
GET:
Response structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
DE
07
Data Structure:
field
Chan Ident
Reading
Smoothed
Example:
2
3
header
06
00
4
5
6
7
d|
s
Chan Ident
8
9
Data
Reading
10
11
Smoothed
description
The channel being addressed
The current reading of the strain gauge unit. If the unit is
operating in Position mode, then the returned value is a
position in microns. If the unit is in Voltage mode, then the
returned reading is a Voltage. If the controller is in ‘Force
Sensing Mode’ then the parameter returns a force value in
Newtons. Values are returned in the range -32767 to 32768,
which corresponds to -100% to 100% of the maximum
voltage, travel or force.
The returned data values are sampled at 500Hz. This is
particularly useful in touch probe or force sensing
applications where rapid polling of the force reading is
important.
Display mode and Max Force are described in the
MGMSG_PZ_GET_TSG_IOSETTINGS message. Max Travel is
described in the MGMSG_PZ_GET_MAXTRAVEL message.
format
word
short
word
Get the readings for channel 1.
RX DE, 07, 06, 00, 81, 50, 01, 00, 52, 00, 50, 00,
Header: DE, 07, 06, 00, 81, 50: Get_TSG_Readings, 6 byte data packet, d=D0 (i.e. 01 ORed
with 80 i.e. PC), s=50 (Generic USB device).
Channel 1: 01, 00
Reading: 52, 00 (i.e. 82)
Smoothed: 52, 00
Page 155 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
NanoTrak Control Messages
Introduction
The ‘NanoTrak’ ActiveX Control provides the functionality required for a client application to
control one or more NanoTrak auto-alignment controller products. The NanoTrak system
comes in benchtop (BNT001), T-Cube (TNA001) and 19" rack modular (MNA601) formats, all
of which are covered by the NanoTrak ActiveX Control.
The messages of the NanoTraks object can then be used to perform activities such as
latching/unlatching, reading power levels, obtaining/setting circle size and position and
determining if 'NanoTracking' is currently taking place.
For details on the use of the NanoTrak controller, and information on the principles of
operation, refer to the NanoTrak Operating Guide.
NOTE. The NanoTrak can be set to operate as a piezo amplifier. When operated in this
mode, some piezo control messages may also be sent or returned.
Page 156 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_SET_NTMODE
Function:
0x0603
The NanoTrak unit can be used as a standard piezo amplifier, or as a
NanoTrak Auto-alignment unit. This message sets the unit to piezo
operation, or one of the NanoTrak operating modes as described
below. The mode of operation is set in byte 2 of the message as
follows:
SET:
Command structure (6 bytes):
0
1
03
06
2
3
4
header only
State 00
d
Data Structure:
field
State
Example:
5
s
description
01
Sets the unit to Piezo mode.
Note. The hardware unit must be rebooted before changes
to operating mode can take effect.
Note. When the HW operating mode of a NanoTrak unit has
been changed to Piezo operation, then the Piezo ActiveX
control must be used to communicate with the unit. Use the
same serial number as used on the NanoTrak control in
order to establish communication with the unit.
02
Latch mode. In this mode, scanning is disabled and
the piezo drives are held at the present position.
03
Track mode. In this mode, the NanoTrak detects any
drop in signal strength resulting from misalignment of the
input and output devices, and makes vertical and horizontal
positional adjustments to maintain the maximum
throughput.
04
Horizontal Track mode. In this mode, the NanoTrak
detects any drop in signal strength resulting from
misalignment of the input and output devices, and makes
horizontal positional adjustments to maintain the maximum
throughput.
05
Vertical Track mode. In this mode, the NanoTrak
detects any drop in signal strength resulting from
misalignment of the input and output devices, and makes
vertical positional adjustments to maintain the maximum
throughput.
format
short
Set the tracking mode to Latch
TX 03, 06, 02, 00, 50, 01,
Page 157 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_PZ_REQ_NTMODE
MGMSG_PZ_GET_NTMODE
Function:
Issue 15
0x0604
0x0605
The NanoTrak unit can be used as a standard piezo amplifier, or as a
NanoTrak Auto-alignment unit. This message gets the present
operating mode of the unit as described below. The mode of
operation is returned in byte 2 of the message as follows:
REQUEST:
Command structure (6 bytes):
0
1
04
06
2
3
4
header only
00
00
d
5
s
GET:
Command structure (6 bytes):
0
1
05
06
2
3
header only
State Mode
Data Structure:
field
State
Mode
4
d
5
s
description
The Tracking state
01
NanoTracking off. The unit is in Piezo mode.
02
Latch mode. In this mode, scanning is disabled and
the piezo drives are held at the present position.
03
Tracking ON No Signal. In this mode, the NanoTrak
is tracking but the signal power is below the threshold
power set by the user in the Set_NTTrackThreshold
message.
04
Tracking ON, Signal Attained. In this mode, the
threshold power has been detected and the NanoTrak is
tracking normally.
The Tracking Mode.
01
Dual axis (X and Y) tracking.
02
Horizontal (X) axis tracking.
03
Vertical (Y) axis tracking.
format
short
Example
TX 05, 06, 04, 01, 01, 50
Mode is Tracking Signal (0x04) and dual axis (Both X and Y tracking) (0x01)
Page 158 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_SET_NTTRACKTHRESHOLD
MGMSG_PZ_REQ_NTTRACKTHRESHOLD
MGMSG_PZ_GET_NTTRACKTHRESHOLD
Function:
0x0606
0x0607
0x0608
This message sets the tracking threshold of the NanoTrak. The value
is set in Amps, and is dependent upon the application. Typically, the
value is set to lie above the ‘noise floor’ of the particular physical
arrangement. When the input signal level exceeds this value, the
tracking LED is lit on the GUI panel. Note there is no guarantee that
tracking is taking place if this threshold value is set inappropriately.
E.g. if the tracking threshold is set to below the noise floor, then the
GUI will show a lit tracking LED even though no tracking is taking
place.
SET:
Command structure (10 bytes)
6 byte header followed by 4 byte data packet as follows:
0
1
06
06
2
3
header
04
00
4
5
d|
s
6
7
8
9
Data
ThresholdAbsReading
Data Structure:
field
description
ThresholdAbsReading The tracking threshold of the NanoTrak. This is the
absolute TIA reading (PIN current).
The value set in Amps as a 4-byte floating point
number in the range 1 x 10-9 to 1 x 10 -3 (i.e. 1 nA to 1
mA).
format
Float
REQUEST:
Command structure (6 bytes):
0
1
07
06
2
3
4
header only
00
00
d
5
s
GET:
Command structure (10 bytes):
0
1
08
06
2
3
header
04
00
4
5
d|
s
6
7
8
9
Data
ThresholdAbsReading
See SET for structure.
Page 159 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_PZ_SET_NTCIRCHOMEPOS
MGMSG_PZ_REQ_NTCIRCHOMEPOS
MGMSG_PZ_GET_NTCIRCHOMEPOS
Function:
Issue 15
0x0609
0x0610
0x0611
This message sets the circle home position to the horizontal and
vertical coordinates specified in the CircHomePosA and
CircHomePosB parameters respectively.
The home position is used when the Move_NTCircToHomePos
message is called
SET:
Command structure (10 bytes)
6 byte header followed by 4 byte data packet as follows:
0
1
06
06
2
3
header
04
00
4
5
d|
s
6
7
8
9
Data
CircHomePosA
CircHomePosB
Data Structure:
field
description
CircHomePosA The horizontal co-ordinate of the circle home position, in
the range 0 to 65535 (0 to 100% of output voltage or 0 to
10 NanoTrak units).
CircHomePosB The vertical co-ordinate of the circle home position, in the
range 0 to 65535 (0 to 100% of output voltage or 0 to 10
NanoTrak units).
Example:
format
word
word
Set the NanoTrak circle home position to be screen centre.
TX 09 06, 04, 00, D0, 01, FF, 7F, FF, 7F,
Header: 09, 06, 04, 00, D0, 01: Set_NTCircHomePos, 04 byte data packet, Generic USB
Device.
CircHomePosA: FF, 7F: Sets the horizontal co-ordinate to 32767 (i.e. 50% of O/P Voltage or 5
NT units)
CircHomePosB: FF, 7F: Sets the vertical co-ordinate to 32767 (i.e. 50% of O/P Voltage or 5 NT
units)
REQUEST:
Command structure (6 bytes):
0
1
10
06
2
3
4
header only
00
00
d
5
s
GET:
Command structure (10 bytes):
0
1
11
06
2
3
header
04
00
4
5
d|
s
6
7
8
9
Data
CircHomePosA
CircHomePosB
See SET for structure.
Page 160 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_PZ_MOVE_NTCIRCTOHOMEPOS
Function:
Issue 15
0x0612
This message moves the circle to the 'Home' position as set by the
Set_NTCircHomePos message
SET:
Command structure (6 bytes)
0
1
12
06
Example:
2
3
header
00
00
4
5
d
s
Move the NanoTrak circle to the home position.
TX, 12, 06, 00, 00, 50, 01,
Page 161 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_REQ_NTCIRCCENTREPOS
MGMSG_PZ_GET_NTCIRCCENTREPOS
Function:
0x0613
0x0614
This message obtains the current horizontal and vertical position of
the circle, together with other signal and range parameters relating
to NanoTrak operation as described below.
REQUEST:
Command structure (6 bytes):
0
1
13
06
2
3
4
header only
01
00
d
5
s
GET:
Command structure (20 bytes)
6 byte header followed by 14 byte data packet as follows:
0
1
06
10
2
4
5
06
3
header
0E
00
d|
s
11
12
14
AbsReading
13
15
Data
RelReading
6
7
CircPosA
16
17
Range
Data
8
9
CircPosB
18
19
UnderOverRead
Data Structure:
field
CircPosA
CircPosB
AbsReading
RelReading
Range
description
The horizontal co-ordinate of the circle home position, in
the range 0 to 65535 (0 to 100% of output voltage or 0 to
10 NanoTrak units).
The vertical co-ordinate of the circle home position, in the
range 0 to 65535 (0 to 100% of output voltage or 0 to 10
NanoTrak units).
The absolute TIA (PIN) current or BNC voltage value at the
current position. The value is returned as a 4 byte floating
point value in the range 1 x 10-9 to 1 x 10 -3 (i.e. 1 nA to 1
mA or 1 to 10 V). The input source, TIA or BNC is set in the
Set_NTFeedbackSRC message.
The relative signal strength at the current position, in the
range 0 to 32767 (i.e. 0 to 100% of the range currently
selected). This value matches the length of the input signal
bargraph on the GUI panel. (e.g. if the 3 µA range is
currently selected, then a RelReading value of 16384 (50%)
equates to 1.5 µA).
The NanoTrak unit is equipped with an internal transimpedance amplifier (TIS) circuit (and associated
range/power level displays and control buttons in the
GUI). This amplifier operates when an external input signal
is connected to the Optical/PIN connector on the rear
panel. There are 14 range settings (1 - 14) that can be used
to select the best range to measure the input signal
format
word
word
float
word
word
Page 162 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
(displayed on the GUI panel relative input signal bar and
display).
Note. Range 1 and 2 (3 nA and 10 nA) are not applicable to
TNA001 T-Cube units.
This parameter returns the input signal range currently
selected, defined as follows:
Range 1
3 nA
0x03
Range 2
10 nA
0x04
Range 3
30 nA
0x05
Range 4
100 nA
0x06
Range 5
300 nA
0x07
Range 6
1 µA
0x08
Range 7
3 µA
0x09
Range 8
10 µA
0x0A
Range 9
30 µA
0x0B
Range 10
100 µA
0x0C
Range 11
300 µA
0x0D
Range 12
1 mA
0x0E
Range 13
3 mA
0x0F
Range 14
10 mA
0x10
UnderOverRead This parameter returns a value that identifies whether the
unit is under reading or over reading the input signal as
follows:
0x01 power signal is within current TIA range
0x02 power signal is under-reading for current TIA
0x03 power signal is over-reading for current TIA range
e.g. if a user specified range of 3 µA is currently applied,
this parameter returns '0x03’ (Over read)' for input signals
greater than 3 µA.
word
Example:
RX 14, 06, 0E, 00, 81, 50, 73, 63, 2A, F3, 00, 00, 00, 00, 00, 00, 05, 00, 02, 00
Header: 14, 06, 0E, 00, 81, 50: Get_NTCircCentrePos, 14 byte data packet, Generic USB
Device.
CircPosA;
0x6373
25459 (25459/65535 = 39%)
CircPosB;
0xF32A
62250 (62250/65535 = 95%)
AbsReading;
0x00000000
0V
RelReading;
0x0000
0V
Range;
0x0005
Range 3 (i.e. 30 nA)
UnderOverRead;
0x0002
Signal is under reading for range.
Page 163 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_PZ_SET_NTCIRCPARAMS
MGMSG_PZ_REQ_NTCIRCPARAMS
MGMSG_PZ_GET_NTCIRCPARAMS
Function:
Issue 15
0x0618
0x0619
0x0620
This message obtains sets various scanning circle parameters as
described below.
SET:
Command structure (18 bytes)
6 byte header followed by 12 byte data packet as follows:
0
1
18
06
10
11
CircOscFreq
2
3
header
0C
00
12
13
4
5
d|
s
6
7
Data
CircDiaMode
14
15
Data
AbsPwrMinCircDia
AbsPwrMaxCircDia
16
8
9
CircDiaSW
17
AbsPwrAdjustType
Data Structure:
field
CircDiaMode
CircDiaSW
CircOscFreq
description
format
This parameter allows the different modes of circle
word
diameter adjustment to be enabled and disabled as
follows:
0x01 NTCIRCDIA_SW
the circle diameter
remains at the value set using the CircDiaSW parameter
below.
0x02 NTCIRCDIA_ABSPWR the circle diameter is
set by absolute power input value (depending on
adjustment algorithm selected in the AbsPwrAdjustType
parameter - see below)
0x03 NTCIRCDIA_LUT
the circle diameter is
adjusted automatically, using a table of TIA range
dependent values (set using the SetCircDiaLUT message.
This parameter sets the NT circle diameter if
word
NTCIRCDIA_SW (0x01) is selected in the CircDiaMode
parameter above. The diameter is set in the range 0 to
65535, which relates to 0% to 100% output voltage –(i.e.
0 to 10 NT units).
This parameter contains the number of samples taken in word
one revolution of the scanning circle and is used to set
the scanning frequency of the NanoTrak circle. The
circle scanning frequency lies in the range 17.5 Hz to
87.5 Hz for TNA001 and 20 Hz to 190 Hz for the BNT001.
The factory default setting for the scanning frequency is
43.75Hz. This means that a stage driven by the
NanoTrak makes 43.75 circular movements per second.
Different frequency settings allow more than one
NanoTrak to be used in the same alignment scenario.
The scanning frequency is derived from the NanoTrak
sampling frequency of 7000 Hz and the CircOscFreq
Page 164 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
value which is calculated as follows:
CircOscFreq = 7000 / scanning frequency
Note. The CircOscFreq parameter must be entered as a
multiple of ‘4’.
AbsPwrMinCircDia The minimum circle diameter. Applicable only if the
CircDiaMode parameter above is set to
NTCIRCDIA_ABSPWR (0x02). The diameter is set in the
range 0 to 32767, which relates to 0% to 50% output
voltage –(i.e. 0 to 5 NT units).
AbsPwrMaxCircDia The maximum circle diameter. Applicable only if the
CircDiaMode parameter above is set to
NTCIRCDIA_ABSPWR (0x02). The diameter is set in the
range 0 to 32767, which relates to 0% to 50% output
voltage –(i.e. 0 to 5 NT units).
AbsPwrAdjustType This parameter sets the adjustment type and is
applicable only if CircDiaMode parameter above is set to
NTCIRCDIA_ABSPWR (0x02).
0x01 NTABSPWRCIRCADJUST_LIN
inverse linear
adjustment
0x02 NTABSPWRCIRCADJUST_LOG inverse log
adjustment
0x03 NTABSPWRCIRCADJUST_X2
inverse square
adjustment
0x04 NTABSPWRCIRCADJUST_X3
inverse cube
adjustment
word
word
word
Example
TX 18, 06, 0C, 00, D0, 01, 01, 00, 9A, 19, A0, 00, CC, 0C, 99, 19, 01, 00
Header: 18, 06, 0C, 00, D0, 01: Set_NTCircParams, 12 byte data packet, Generic USB Device.
CircDiaMode;
0x0001
Software setting mode
CircDiaSW;
0x199A
6554 6554/65535 = 10% of O/P voltage (1 NT
unit)
CircOscFreq;
0x00A0
160
7000/160 = 43.75 Hz
AbsPwrMinCircDia;
0x0CCC
3276 5% or 0.5 NT units
AbsPwrMaxCircDia;
0x1999
6553 10% or 1 NT unit
AbsPwrAdjustType;
0x0001
inverse linear adjust type.
REQUEST:
Command structure (6 bytes):
0
1
19
06
2
3
4
header only
01
00
d
5
s
Page 165 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
GET:
Command structure (18 bytes)
6 byte header followed by 12 byte data packet as follows:
0
1
20
06
10
11
CircOscFreq
2
3
header
0C
00
12
13
4
5
d|
s
6
7
Data
CircDiaMode
14
15
Data
AbsPwrMinCircDia
AbsPwrMaxCircDia
16
8
9
CircDiaSW
17
AbsPwrAdjustType
See SET for structure
Page 166 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_PZ_SET_NTCIRCDIA
Function:
Issue 15
0x061A
This message sets the NT circle diameter and can be used as an
alternative to the Set_NTCircParams message described previously.
The diameter is set in the range 0 to 65535, which relates to 0% to
100% output voltage (i.e. 0 to 10 NT units).
SET:
Command structure (6 bytes)
0
1
1A
06
Example:
2
3
header
CircDia
00
4
5
d
s
Set the NanoTrak circle diameter to 10% (i.e. 1 NT unit).
TX, 1A, 06, 99, 19, 50, 01,
H1999 = 6553
6553/65535 = 10%
Page 167 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_SET_NTCIRCDIALUT
MGMSG_PZ_REQ_NTCIRCDIALUT
MGMSG_PZ_GET_NTCIRCDIALUT
Function:
0x0621
0x0622
0x0623
This message enables a look up table (LUT) of circle diameter values
to be specified as a function of input range. When automatic LUT
diameter adjustment mode is enabled (using the CircDiaMode
parameter in the Set_NTCircParams message), the system uses
values in this LUT to modify circle diameter in relation to the input
range currently selected.
This LUT diameter adjustment mode allows appropriate circle
diameters to be applied on an application specific basis.
SET:
Command structure (38 bytes)
6 byte header followed by 32 byte data packet as follows:
0
1
21
12
4
5
06
3
header
20
00
d|
s
13
14
16
17
LUTVal
24
25
LUTVal
Data Structure:
field
CircDias
Example:
2
15
LUTVal
26
27
LUTVal
LUTVal
28
29
LUTVal
6
7
8
LUTVal
18
19
Data
LUTVal
30
31
Data
LUTVal
9
Data
LUTVal
10
21
22
20
LUTVal
LUTVal
32
33
LUTVal
11
23
LUTVal
34
35
36
LUTVal
36
LUTVal
description
format
This parameter contains the circle diameter values for each array
range of the NanoTrak. The values are entered in range
order in a 32 byte array.
Note. On the BNT001 unit bytes 1 through 4 of the array are
ignored and Range 1 starts in Byte 5.
Note. On the TNA001 unit bytes 1 through 8 of the array
are ignored and Range 1 starts in Byte 9.
The diameters are entered in the range 0 to 65535
(0 to FFFF), which relates to 0% to 100% output voltage (i.e.
0 to 10 NT units).
Enter the NanoTrak cirle diameter LUT values.
TX 21, 06, 20, 00, D0, 01, 00, 00, 00, 00, 34, 33, A4, 30, 16, 2E, 86, 2B, F6, 28, 68, 26, D8, 23,
48, 21, B8, 1E, 2A, 1C, 9A, 19, 0A, 17, 7C, 14, EC, 11
Header: 21, 06, 20, 00, D0, 01: Set_NTCircHomePos, 32 byte data packet, Generic USB
Device.
CircDias: The various range related LUT values entered in range order)
Page 168 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
REQUEST:
Command structure (6 bytes):
0
1
22
06
2
3
4
header only
00
00
d
5
s
GET:
Command structure (38 bytes)
0
1
23
12
4
5
6
06
3
header
20
00
d|
s
Not Used
13
14
16
17
LUTVal
24
25
LUTVal
2
15
LUTVal
26
27
LUTVal
LUTVal
28
29
LUTVal
7
18
19
Data
LUTVal
30
31
Data
LUTVal
8
9
Data
Not Used
20
21
10
LUTVal
22
LUTVal
32
33
LUTVal
11
23
LUTVal
34
35
LUTVal
36
36
LUTVal
See SET for structure.
Page 169 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_SET_NTPHASECOMPPARAMS
MGMSG_PZ_REQ_NTPHASECOMPPARAMS
MGMSG_PZ_GET_NTPHASECOMPPARAMS
Function:
0x0626
0x0627
0x0628
The feedback loop scenario in a typical NanoTrak application can
involve the operation of various electronic and electromechanical
components (e.g. power meters and piezo actuators) that could
introduce phase shifts around the loop and thereby affect tracking
efficiency and stability. These phase shifts can be cancelled by
setting the 'Phase Compensation' factors.
This message sets the phase compensation for the horizontal and
vertical components of the circle path in the range 0 to 360 degrees.
Typically both phase offsets will be set the same, although some
electromechanical systems may exhibit different phase lags in the
different components of travel and so require different values.
SET:
Command structure (10 bytes)
6 byte header followed by 4 byte data packet as follows:
0
1
26
06
2
3
header
06
00
4
5
d|
s
6
7
PhaseCompMode
8
9
Data
PhaseCompASW
10
PhaseCompBSW
Data Structure:
field
description
PhaseCompMode Currently, the phase compensation mode is not
adjustable, and is locked at manual (software)
adjustment.
PhaseCompASW The horizontal axis phase compensation value, entered in
real world units and calculated as follows:value = (phase angle [degrees] / 360) * CircOscFreq
See the PZ_SET_NTCIRCPARAMS message for details on
the CircOscFreq parameter
Note. Negative phase values must be made positive by
subtraction from 360 before the calculation is made.
PhaseCompBSW The vertical axis phase compensation value, entered in
real world units and calculated as follows:value = (phase angle [degrees] / 360) * CircOscFreq
See the PZ_SET_NTCIRCPARAMS message for details on
the CircOscFreq parameter
Note. Negative phase values must be made positive by
subtraction from 360 before the calculation is made.
Example:
11
format
word
short
short
Set the NanoTrak circle home position to be screen centre.
TX 26, 06, 06, 00, D0, 01, 02, 00, 93, 00, 93, 00
Header: 26, 06, 06, 00, D0, 01: Set_NTPhaseCompParams, 06 byte data packet, Generic USB
Device.
Page 170 of 265
Thorlabs APT Controllers
PhaseCompMode;
PhaseCompASW;
Host-Controller Communications Protocol
0x0002
0x0093
Issue 15
Locked at Software Adjustment mode.
147
Therefore, for circle scanning freq of 44, Phase Angle = 147/(7000/44) x 360 = -30°
PhaseCompBSW
0x0093
REQUEST:
Command structure (6 bytes):
0
1
27
06
2
3
4
header only
00
00
d
5
s
GET:
0
1
28
06
2
3
header
06
00
4
5
d|
s
6
7
PhaseCompMode
8
9
Data
PhaseCompASW
10
11
PhaseCompBSW
See SET for structure.
Page 171 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_SET_NTTIARANGEPARAMS
MGMSG_PZ_REQ_NTTIARANGEPARAMS
MGMSG_PZ_GET_NTTIARANGEPARAMS
Function:
0x0630
0x0631
0x0632
This message is used to select manual (software) or auto ranging,
and to modify the ranging characteristics in each case.
SET:
Command structure (18 bytes)
6 byte header followed by 12 byte data packet as follows:
0
1
30
06
2
3
header
0C
00
10
11
RangeDownLimit
12
13
SettleSamples
4
5
d|
s
6
7
Data
RangeMode
14
15
RangeChangeType
8
9
RangeUpLimit
16
17
RangeSW
Data Structure:
field
RangeMode
RangeUpLimit
RangeDownLimit
description
This parameter specifies the ranging mode of the unit as
follows:
0x01 RANGE_AUTO
change to Auto ranging
at the range currently selected
0x02 RANGE_SW
change to manual
ranging at the range currently selected
0x03 RANGE_SWSET
change to manual
ranging at the range set in the SetRange method (or the
'Settings' panel)
0x04 RANGE_AUTOSET
change to Auto ranging
at the range set in the RangeSW parameter below.
Only applicable if Auto Ranging is selected in the
RangeMode parameter above.
This parameter sets the upper range limit as a
percentage of the present range, 0 to 1000 = 0 to 100%.
When autoranging, the NanoTrak unit adjusts
continually the TIA range as appropriate for the input
signal level. When the relative signal rises above the
limit specified in this parameter, the unit increments the
range to the next higher setting.
The relative signal is displayed on the NanoTrak GUI
panel by a green horizontal bar.
Only applicable if Auto Ranging is selected in the
RangeMode parameter above.
This parameter sets the lower range limit as a
percentage of the present range, 0 to 1000 = 0 to 100%.
Similarly to RangeUpLimit, when the relative signal on a
particular range drifts below the limit set in this
parameter, the NanoTrak unit decrements the range to
the next lower setting.
format
word
short
short
Page 172 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
The relative signal is displayed on the NanoTrak GUI
panel by a green horizontal bar.
SettleSamples
Only applicable if Auto Ranging is selected in the
RangeMode parameter above.
This parameter determines the amount of averaging
applied to the signal before autoranging takes place.
Higher SettleSamples values improve the signal to noise
ratio when dealing with noisy feedback signals.
However, higher SettleSamples values also slow down
the autoranging response. In a particular application, the
SettleSamples value should be adjusted to obtain the
best autoranging response combined with a noise free
signal.
Values are set in real world units, from ‘2’ to ‘32’, with a
default setting value of ‘4’.
RangeChangeType Only applicable if Auto Ranging is selected in the
RangeMode parameter above.
This parameter specifies how range changes are
implemented by the system.
0x01
AUTORANGE_ALL
the unit visits all ranges
when ranging between two input signal levels.
0x02
AUTORANGE_ODD
only the odd numbered
ranges between the two input signals levels will be
visited.
0x03
AUTORANGE_EVEN
only the even numbered
ranges between the two input signals levels will be
visited.
These latter two modes are useful when large rapid
input signal fluctuations are anticipated, because the
number of ranges visited is halved to give a more rapid
response.
RangeSW
Only applicable if Manual (SW) Ranging is selected in the
RangeMode parameter above.
The NanoTrak unit is equipped with an internal transimpedance amplifier (TIA) circuit (and associated
range/power level displays and control buttons in the
GUI). This amplifier operates when an external input
signal is connected to the Optical/PIN connector on the
rear panel. There are 14 range settings (1 - 14) that can
be used to select the best range to measure the input
signal (displayed on the GUI panel relative input signal
bar and display).
Note. Range 1 and 2 (3 nA and 10 nA) are not applicable
to TNA001 T-Cube units.
This parameter returns the input signal range currently
selected, defined as follows:
Range 1
3 nA
0x03
Range 2
10 nA
0x04
Range 3
30 nA
0x05
Range 4
100 nA
0x06
Range 5
300 nA
0x07
short
word
word
Page 173 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Range 6
Range 7
Range 8
Range 9
Range 10
Range 11
Range 12
Range 13
Range 14
1 µA
3 µA
10 µA
30 µA
100 µA
300 µA
1 mA
3 mA
10 mA
Issue 15
0x08
0x09
0x0A
0x0B
0x0C
0x0D
0x0E
0x0F
0x10
Example
TX 30, 06, 0C, 00, D0, 01, 01, 00, 52, 03, 96, 00, 04, 00, 01, 00, 05, 00
Header: 30, 06, 0C, 00, D0, 01: Set_NTTIARangeParams, 12 byte data packet, Generic USB
Device.
wRangeMode;
sRangeUpLimit;
sRangeDownLimit;
wSettleSamples;
wRangeChangeType;
wRangeSW;
0x0001
0x0352
0x0096
0x0004
0x0001
0x0005
Auto Ranging mode
850 == 85%
150 == 15%
4
Auto range through all ranges
P_PZ_NTTIA_RANGE30NANO
REQUEST:
Command structure (6 bytes):
0
1
31
06
2
3
4
header only
01
00
d
5
s
GET:
Command structure (18 bytes)
6 byte header followed by 12 byte data packet as follows:
0
1
32
06
10
11
RangeDownLimit
2
3
header
0C
00
12
13
SettleSamples
4
5
d|
s
6
7
Data
RangeMode
14
15
RangeChangeType
8
9
RangeUpLimit
16
17
RangeSW
See SET for structure
Page 174 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_SET_NTGAINPARAMS
MGMSG_PZ_REQ_NTGAINPARAMS
MGMSG_PZ_GET_NTGAINPARAMS
Function:
0x0633
0x0634
0x0635
This message sets the gain level of the NanoTrak control loop, and is
used to ensure that the DC level of the input (feedback loop) signal
lies within the dynamic range of the input. Increasing this value can
lead to a more responsive NanoTrak behaviour as the signal
variation around the circular path is enhanced. However, for a
particular set up, if this value is too high, then unstable NanoTrak
operation (indicated by a fluctuating circle) can result.
SET:
Command structure (10 bytes)
6 byte header followed by 4 byte data packet as follows:
0
1
33
06
2
3
header
04
00
Data Structure:
field
GainCtrlMode
5
d|
s
6
7
8
9
Data
GainCtrlMode
NTGainSW
description
This parameter is currently locked and cannot be changed:
0x02 GAIN_SW
software setting gain control mode
This parameter sets the loop gain, as a function of TIA range
setting. The value is set between 100 and 10000 with a
default value of 600. It is not normally necessary for
anything other than minor adjustment from this default
value.
NTGainSW
Example:
4
format
word
short
Set the NanoTrak circle home position to be screen centre.
TX 33, 06, 04, 00, D0, 01, 02, 00, 58, 02
Header: 33, 06, 04, 00, D0, 01: Set_NTGainParams, 04 byte data packet, Generic USB Device.
GainCtrlMode 0x0002:
Software Setting
NTGainSW
0x0258:
600
REQUEST:
Command structure (6 bytes):
0
1
34
06
2
3
4
header only
00
00
d
5
s
GET:
Command structure (10 bytes):
0
1
35
06
2
3
header
04
00
4
5
d|
s
6
7
8
9
Data
GainCtrlMode
NTGainSW
See SET for structure.
Page 175 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_SET_NTTIALPFILTERPARAMS
MGMSG_PZ_REQ_NTTIALPFILTERPARAMS
MGMSG_PZ_GET_NTTIALPFILTERPARAMS
Function:
0x0636
0x0637
0x0638
This message specifies the cut off frequency of the digital low pass
(LP) filter applied to output readings of the internal amplifier (TIA)
circuitry. If the readings displayed or returned are unstable, this
setting can be used to remove any unwanted high frequency
components and improve input signal stability.
SET:
Command structure (26 bytes)
6 byte header followed by 20 byte data packet as follows:
0
1
36
14
2
4
5
06
3
header
14
00
d|
s
15
16
18
19
Param3
Data Structure:
field
FilterParams
17
6
20
Data
Param4
7
8
9
Data
10
11
Param1
21
22
12
Param2
23
24
25
Param5
description
This parameter contains low pass filter values which can be
applied to the OUTPUT from the TIA, i.e. is applied to those
reading params sent to the PC. It does NOT operate on the
input to the TIA and does not operate on reading values
used by the NanoTrak algorythms (these use a bandpass
filter, effectively negating the need for a LP filter).
The filter can be used to smooth out readings displayed in
the GUI. It can also be used by client applications without
affecting operation of the NanoTrak.
format
long
Note. Although there are 5 parameters available, only the
first parameter is used at this time.
The filter can be set to OFF, or one of 5 frequency values as
follows:
Note. Only the first parameter is used at this time.
0
1
2
3
4
5
Example:
LP_NONE Low pass filter inactive
LP_1HZ Cut off all signals above 1Hz
LP_3HZ Cut off all signals above 3Hz
LP_10HZ Cut off all signals above 10Hz
LP_30HZ Cut off all signals above 30Hz
LP_100HZ Cut off all signals above 100Hz
Set the LP filter to 1 Hz.
TX 36, 06, 14, 00, D0, 01, 05, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00
Page 176 of 265
13
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Header: 36, 06, 14, 00, D0, 01: Set_NTTIALPFilterParams, 20 byte data packet, Generic USB
Device.
FilterParams: 05
LP_100HZ Cut off all signals above 100Hz
REQUEST:
Command structure (6 bytes):
0
1
37
06
2
3
4
header only
00
00
d
5
s
GET:
Command structure (26 bytes)
0
1
38
14
2
4
5
06
3
header
14
00
d|
s
15
16
18
19
Param3
17
6
20
Data
Param4
7
8
9
Data
10
11
Param1
21
22
12
Param2
23
24
25
Param5
See SET for structure.
Page 177 of 265
13
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_REQ_NTTIAREADING
MGMSG_PZ_GET_NTTIAREADING
Function:
0x0639
0x063A
This message obtains the absolute signal value at the current
position, in units as displayed on the GUI panel.
REQUEST:
Command structure (6 bytes):
0
1
39
06
2
3
4
header only
00
00
d
5
s
GET:
Command structure (16 bytes)
6 byte header followed by 10 byte data packet as follows:
0
1
3A
06
12
13
Range
2
3
header
0A
00
Range
5
d|
s
6
7
8
AbsReading
Data
9
10
11
RelReading
14
15
Data
UnderOverRead
Data Structure:
field
AbsReading
RelReading
4
description
This parameter returns the absolute TIA (PIN) current or
BNC voltage value at the current position. The value is
returned as a 4 byte floating point value in the range 1 x
10-9 to 1 x 10 -3 (i.e. 1 nA to 1 mA or 1 to 10 V). The input
source, TIA or BNC is set in the Set_NTFeedbackSRC
message.
The relative signal strength at the current position, in the
range 0 to 32767 (i.e. 0 to 100% of the range currently
selected). This value matches the length of the input signal
bargraph on the GUI panel. (e.g. if the 3 µA range is
currently selected, then a RelReading value of 16384 (50%)
equates to 1.5 µA).).
This parameter returns the input signal range currently
selected. There are 14 range settings (1 - 14) that can be
used to select the best range to measure the input signal
(displayed on the GUI panel relative input signal bar and
display).
Note. Range 1 and 2 (3 nA and 10 nA) are not applicable to
TNA001 T-Cube units.
This parameter returns the input signal range currently
selected, defined as follows:
Range 1
3 nA
0x03
Range 2
10 nA
0x04
format
float
word
word
Page 178 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Range 3
30 nA
0x05
Range 4
100 nA
0x06
Range 5
300 nA
0x07
Range 6
1 µA
0x08
Range 7
3 µA
0x09
Range 8
10 µA
0x0A
Range 9
30 µA
0x0B
Range 10
100 µA
0x0C
Range 11
300 µA
0x0D
Range 12
1 mA
0x0E
Range 13
3 mA
0x0F
Range 14
10 mA
0x10
UnderOverRead This parameter returns a value that identifies whether the
unit is under reading or over reading the input signal as
follows:
0x01 power signal is within current TIA range
0x02 power signal is under-reading for current TIA
0x03 power signal is over-reading for current TIA range
e.g. if a user specified range of 3 µA is currently applied,
this parameter returns '0x03’ (Over read)' for input signals
greater than 3 µA.
Example:
word
Get the NanoTrak reading.
RX 3A, 06, 0A, 00, D0, 01, 00, 00, 00, 00, 00, 00, 05, 00, 01, 00
Header: 3A, 06, 0A, 00, D0, 01: Get_NTTIAReading, 10 byte data packet, Generic USB
Device.
AbsReading
00, 00, 00, 00:
i.e. 20 nA
RelReading
00, 40:
16384,
i.e. 50%
Range
05, 00
Range 3,
i.e. 30 nA
UnderOverRead
01, 00
Within Range
Page 179 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_SET_NTFEEDBACKSRC
MGMSG_PZ_REQ_NTFEEDBACKSRC
MGMSG_PZ_GET_NTFEEDBACKSRC
Function:
0x063B
0x063C
0x063D
This message sets the input source of the NanoTrak.
The INPUT_BNC settings are used when NanoTraking to optimise a
voltage feedback signal. Typically, these inputs are selected when an
external power meter which generates a voltage output, is
connected to the rear panel SIG IN connector.
Note. In this case the internal amplifier circuit is bypassed and the
'Range' bar on the GUI panel is switched off (autoranging
functionality is not required). Furthermore, although tracking occurs
as normal, the tracking indicator on the GUI panel is inoperative.
The INPUT_TIA setting is used when NanoTraking to optimise a PIN
current feedback signal. The TIA (trans impedence amplifier) input
source should be selected when using the rear panel OPTICAL/PIN
I/P connector with either an integral detector, or an external
detector head connected to the optional SMB adapter. This option
uses the internal amplifier circuit and associated functionality (e.g.
autoranging).
SET:
Command structure (6 bytes)
0
1
3B
06
2
3
header
00
00
4
5
d
s
The input source is set in byte 2 as follows:
P_PZ_NTFBTIA
0x01
P_PZ_NTFBBNC1V
0x02
P_PZ_NTFBBNC2V
0x03
P_PZ_NTFBBNC5V
0x04
P_PZ_NTFBBNC10V
0x05
Example:
TIA input
BNC input (1V range)
BNC input (2V range)
BNC input (5V range)
BNC input (10V range)
Set the input source to TIA input.
TX, 3B, 06, 01, 00, 50, 01,
Page 180 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
REQ:
Command structure (6 bytes)
0
1
3C
06
2
3
header
00
00
4
5
d
s
4
5
d
s
GET:
Command structure (6 bytes)
0
1
3D
06
2
3
header
00
00
See SET command for structure
Page 181 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_REQ_NTSTATUSBITS
MGMSG_PZ_GET_NTSTATUSBITS
Function:
0x063E
0x063F
Returns a number of status flags pertaining to the operation of the
NanoTrak controller channel specified in the Chan Ident parameter.
These flags are returned in a single 32 bit integer parameter and can
provide additional useful status information for client application
development. The individual bits (flags) of the 32 bit integer value
are described in the following tables.
REQUEST:
Command structure (6 bytes):
0
1
3E
06
2
3
4
header only
Chan 00
d
Ident
5
s
GET:
Response structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
3F
06
Data Structure:
field
StatusBits
2
3
header
0A
00
4
5
d|
s
6
7
8
Data
9
10
11
StatusBits
description
The status bits for the associated controller channel. The
meaning of the individual bits (flags) of the 32 bit integer
value will depend on the controller and are described in the
following tables.
TNA001 controller
Hex Value
Bit Number
0x00000001
1
0x00000002
2
0x00000004
3
0x00000008
4
0x00000010
5
0x00000020
6
0x00000040
7
8 to 16
0x00010000
17
0x00020000
18
0x00040000
19
0x00080000
20
0x00100000
21
0x00200000
22
23 to 32
format
dword
Description
Tracking (1 - tracking, 0 - latched).
Tracking with Signal (1 – with signal, 0 – no signal)
Tracking Channel A (1 – Chan A only, 0 – Both channels)
T racking Channel B (1 – Chan B only, 0 – Both channels)
Auto-ranging (1 – auto ranging, 0 manual ranging).
Under Read (1 – under reading, 0 – reading within range).
Over Read (1 – over reading, 0 – reading within range).
For future use
Channel A Connected (1 – Connected, 0 – Not Connected)
Channel B Connected (1 – Connected, 0 – Not Connected)
Channel A Enabled (1 – Enabled, 0 – Disabled)
Channel B Enabled (1 – Enabled, 0 – Disabled)
Channel A Control Mode (1 – Closed Loop, 0 – Open Loop)
Channel B Control Mode (1 – Closed Loop, 0 – Open Loop)
For future use
Page 182 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
BNT series controllers
Hex Value
Bit Number
Description
0x00000001
1
Tracking (1 - tracking, 0 - latched).
0x00000002
2
Tracking with Signal (1 – with signal, 0 – no signal)
0x00000004
3
Tracking Channel A (1 – Chan A only, 0 – Both channels)
0x00000008
4
T racking Channel B (1 – Chan B only, 0 – Both channels)
0x00000010
5
Auto-ranging (1 – auto ranging, 0 manual ranging).
0x00000020
6
Under Read (1 – under reading, 0 – reading within range).
0x00000040
7
Over Read (1 – over reading, 0 – reading within range).
8 to 16
For future use
0x00010000
17
Channel A Connected (1 – Connected, 0 – Not Connected)
0x00020000
0x00040000
19
Channel A Enabled (1 – Enabled, 0 – Disabled)
0x00080000
20
Channel B Enabled (1 – Enabled, 0 – Disabled)
0x00100000
21
Channel A Control Mode (1 – Closed Loop, 0 – Open Loop)
0x00200000
22
Channel B Control Mode (1 – Closed Loop, 0 – Open Loop)
Note. Bits 23 to 32 (Digital Input States) are only applicable if the associated digital input is fitted to
your controller – see the relevant handbook for more details
0x00100000
21
Digital input 1 state (1 - logic high, 0 - logic low).
0x00200000
22
Digital input 2 state (1 - logic high, 0 - logic low).
0x00400000
23
Digital input 3 state (1 - logic high, 0 - logic low).
0x00800000
24
Digital input 4 state (1 - logic high, 0 - logic low).
0x01000000
25
Digital input 5 state (1 - logic high, 0 - logic low).
0x02000000
26
Digital input 6 state (1 - logic high, 0 - logic low).
0x04000000
27
Digital input 7 state (1 - logic high, 0 - logic low).
0x08000000
28
Digital input 8 state (1 - logic high, 0 - logic low).
29
For Future Use
0x20000000
30
Active (1 – indicates unit is active, 0 – not active)
0x40000000
31
For Future Use
0x80000000
32
Channel enabled (1 – enabled, 0- disabled)
Page 183 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_PZ_REQ_NTSTATUSUPDATE
MGMSG_PZ_GET_NTSTATUSUPDATE
Function:
0x0664
0x0665
This function is used in applications where spontaneous status
messages (i.e. messages sent using the START_STATUSUPDATES
command) must be avoided.
Status update messages contain information about the position and
status of the controller (for example position and O/P voltage). The
response will be sent by the controller each time the function is
requested.
REQUEST:
Command structure (6 bytes):
0
1
64
06
2
3
4
header only
Chan 00
d
Ident
5
s
GET:
Status update messages are received with the following format:Response structure (32 bytes)
6 byte header followed by 26 byte data packet as follows:
0
1
65
12
2
4
5
6
06
3
header
1A
00
d|
s
CircPosA
13
14
16
17
15
AbsReading
24
25
StatusBits
Data Structure:
field
CircPosA
CircPosB
CircDia
AbsReading
26
Data
RelReading
27
28
29
Data
NTGain
PhaseCompA
7
18
19
Range
30
8
9
Data
CircPosB
20
21
UnderOverRead
10
11
CircDia
22
23
StatusBits
31
PhaseCompB
description
The horizontal co-ordinate of the circle home position, in
the range 0 to 65535 (0 to 100% of output voltage or 0 to
10 NanoTrak units).
The vertical co-ordinate of the circle home position, in the
range 0 to 65535 (0 to 100% of output voltage or 0 to 10
NanoTrak units).
This NanoTrak scanning circle diameter. The diameter is
returned in the range 0 to 65535, which relates to 0% to
100% output voltage –(i.e. 0 to 10 NT units).
The absolute TIA (PIN) current or BNC voltage value at the
current position. The value is returned as a 4 byte floating
point value in the range 1 x 10-9 to 1 x 10 -3 (i.e. 1 nA to 1
mA or 1 to 10 V). The input source, TIA or BNC is set in the
format
word
word
word
float
Page 184 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Set_NTFeedbackSRC message.
RelReading
The relative signal strength at the current position, in the
range 0 to 32767 (i.e. 0 to 100% of the range currently
selected). This value matches the length of the input signal
bargraph on the GUI panel. (e.g. if the 3 µA range is
currently selected, then a RelReading value of 16384 (50%)
equates to 1.5 µA).
Range
The NanoTrak unit is equipped with an internal transimpedance amplifier (TIS) circuit (and associated
range/power level displays and control buttons in the
GUI). This amplifier operates when an external input signal
is connected to the Optical/PIN connector on the rear
panel. There are 14 range settings (1 - 14) that can be used
to select the best range to measure the input signal
(displayed on the GUI panel relative input signal bar and
display).
Note. Range 1 and 2 (3 nA and 10 nA) are not applicable to
TNA001 T-Cube units.
This parameter returns the input signal range currently
selected, defined as follows:
Range 1
3 nA
0x03
Range 2
10 nA
0x04
Range 3
30 nA
0x05
Range 4
100 nA
0x06
Range 5
300 nA
0x07
Range 6
1 µA
0x08
Range 7
3 µA
0x09
Range 8
10 µA
0x0A
Range 9
30 µA
0x0B
Range 10
100 µA
0x0C
Range 11
300 µA
0x0D
Range 12
1 mA
0x0E
Range 13
3 mA
0x0F
Range 14
10 mA
0x10
UnderOverRead This parameter returns a value that identifies whether the
unit is under reading or over reading the input signal as
follows:
0x01 power signal is within current TIA range
0x02 power signal is under-reading for current TIA
0x03 power signal is over-reading for current TIA range
e.g. if a user specified range of 3 µA is currently applied,
this parameter returns '0x03’ (Over read)' for input signals
greater than 3 µA.
StatusBits
The meaning of the individual bits (flags) of the 32 bit
integer value will depend on the controller and are
described in the following tables.
NTGain
This parameter returns the loop gain, as a function of TIA
range setting. The value is returned between 100 and
10000 (default value of 600).
PhaseCompA
The horizontal axis phase compensation value, returned in
real world units as follows:-
word
word
word
dword
short
short
Page 185 of 265
Thorlabs APT Controllers
PhaseCompB
Host-Controller Communications Protocol
value = (phase angle [degrees] / 360) * CircOscFreq
See the PZ_SET_NTCIRCPARAMS message for details on
the CircOscFreq parameter
Note. Negative phase values must be made positive by
subtraction from 360 before the calculation is made.
The vertical axis phase compensation value, returned in
real world units as follows:value = (phase angle [degrees] / 360) * CircOscFreq
See the PZ_SET_NTCIRCPARAMS message for details on
the CircOscFreq parameter
Note. Negative phase values must be made positive by
subtraction from 360 before the calculation is made.
TNA001 controller
Hex Value
Bit Number
0x00000001
1
0x00000002
2
0x00000004
3
0x00000008
4
0x00000010
5
0x00000020
6
0x00000040
7
8 to 16
0x00010000
17
0x00020000
18
0x00040000
19
0x00080000
20
0x00100000
21
0x00200000
22
23 to 32
Issue 15
short
Description
Tracking (1 - tracking, 0 - latched).
Tracking with Signal (1 – with signal, 0 – no signal)
Tracking Channel A (1 – Chan A only, 0 – Both channels)
T racking Channel B (1 – Chan B only, 0 – Both channels)
Auto-ranging (1 – auto ranging, 0 manual ranging).
Under Read (1 – under reading, 0 – reading within range).
Over Read (1 – over reading, 0 – reading within range).
For future use
Channel A Connected (1 – Connected, 0 – Not Connected)
Channel B Connected (1 – Connected, 0 – Not Connected)
Channel A Enabled (1 – Enabled, 0 – Disabled)
Channel B Enabled (1 – Enabled, 0 – Disabled)
Channel A Control Mode (1 – Closed Loop, 0 – Open Loop)
Channel B Control Mode (1 – Closed Loop, 0 – Open Loop)
For future use
BPC series controllers
Hex Value
0x00000001
Bit Number
1
2 to 4
5
6
7 to 8
9
Description
Piezo actuator connected (1 - connected, 0 - not connected).
For Future Use
0x00000010
Piezo channel has been zero'd (1 - zero'd, 0 not zero'd).
0x00000020
Piezo channel is zeroing (1 - zeroing, 0 - not zeroing).
0x00000040
For Future Use
0x00000100
Strain gauge feedback connected (1 - connected, 0 - not
connected).
10
For Future Use
0x00000400
11
Position control mode (1 - closed loop, 0 - open loop).
12 to 20
For Future Use
Note. Bits 21 to 28 (Digital Input States) are only applicable if the associated digital input is fitted to
your controller – see the relevant handbook for more details
0x00100000
21
Digital input 1 state (1 - logic high, 0 - logic low).
0x00200000
22
Digital input 2 state (1 - logic high, 0 - logic low).
0x00400000
23
Digital input 3 state (1 - logic high, 0 - logic low).
0x00800000
24
Digital input 4 state (1 - logic high, 0 - logic low).
Page 186 of 265
Thorlabs APT Controllers
0x01000000
0x02000000
0x04000000
0x08000000
0x20000000
0x40000000
0x80000000
25
26
27
28
29
30
31
32
Host-Controller Communications Protocol
Issue 15
Digital input 5 state (1 - logic high, 0 - logic low).
Digital input 6 state (1 - logic high, 0 - logic low).
Digital input 7 state (1 - logic high, 0 - logic low).
Digital input 8 state (1 - logic high, 0 - logic low).
For Future Use
Active (1 – indicates unit is active, 0 – not active)
For Future Use
Channel enabled (1 – enabled, 0- disabled)
Page 187 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_PZ_ACK_NTSTATUSUPDATE
Issue 15
0x0666
Only Applicable If Using USB COMMS. Does not apply to RS-232 COMMS
Function:
If using the USB port, this message called “server alive” must be sent
by the server to the controller at least once a second or the
controller will stop responding after ~50 commands.
The controller keeps track of the number of "status update" type of
messages (e.g.move complete message) and it if has sent 50 of
these without the server sending a "server alive" message, it will
stop sending any more "status update" messages.
This function is used by the controller to check that the PC/Server
has not crashed or switched off. There is no response.
Structure (6 bytes):
0
1
66
06
2
3
4
header only
00
00
d
5
s
TX 66, 06, 00, 00, 50, 01
Page 188 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_NT_SET_EEPROMPARAMS
Function:
Issue 15
0x07E7
Used to save the parameter settings for the specified message.
These settings may have been altered either through the various
method calls or through user interaction with the GUI (specifically,
by clicking on the ‘Settings’ button found in the lower right hand
corner of the user interface).
SET:
Command structure (10 bytes)
6 byte header followed by 4 byte data packet as follows:
0
1
E7
07
2
3
header
04
00
4
5
6
7
d|
s
Chan Ident
Data
8
9
MsgID
Data Structure:
field
Chan Ident
MsgID
description
The channel being addressed
The message ID of the message containing the parameters
to be saved.
format
word
word
Example:
TX E7, 07, 04, 00, D0, 01, 01, 00, 18, 06,
Header: E7, 07, 04, 00, D0, 01: Set_EEPROMPARAMS, 04 byte data packet, Generic USB
Device.
Chan Ident: 01, 00: Channel 1
MsgID: Save parameters specified by message 0618 (SetNTCircParams).
Page 189 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_NT_SET_TNA_DISPSETTINGS
MGMSG_NT_REQ_TNA_DISPSETTINGS
MGMSG_NT_GET_TNA_DISPSETTINGS
Function:
0x07E8
0x07E9
0x07EA
Used to set the intensity of the LED display on the front of the TNA
unit.
SET:
Command structure (8 bytes)
6 byte header followed by 2 byte data packet as follows:
0
1
E8
07
2
3
header
02
00
4
5
d|
s
6
7
Data
DispIntensity
Data Structure:
field
DispIntensity
Example:
description
The intensity is set as a value from 0 (Off) to 255 (brightest).
format
word
Set the input source to software and potentiometer.
TX E8, 07, 02, 00, D0, 01, 64, 00,
Header: E8, 07, 02, 00, D0, 01: Set_DISPSETTINGS, 02 byte data packet, Generic USB Device.
DispIntensity: 64, 00: Sets the display brightness to 100 (40%)
REQ:
Command structure (6 bytes):
0
1
E9
07
2
3
4
header only
01
00
d
Example:
5
s
Request the display intensity
TX E9, 07, 01, 00, 50, 01
GET:
Command structure (8 bytes)
6 byte header followed by 2 byte data packet as follows:
0
1
EA
07
2
3
header
02
00
4
5
d|
s
6
7
Data
DispIntensity
See SET for data structure.
Page 190 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_NT_SET_TNAIOSETTINGS
MGMSG_NT_REQ_TNAIOSETTINGS
MGMSG_NT_GET_TNAIOSETTINGS
Function:
0x07EB
0x07EC
0x07ED
This message is used to set parameters which control the NanoTrak
output signal ranges and the way in which these signals are routed
to the associated piezo drivers.
SET:
Command structure (14 bytes)
6 byte header followed by 8 byte data packet as follows:
0
1
EB
07
2
3
header
04
00
4
5
d|
s
6
7
LVOutRange
8
9
LVOutRoute
Data
10
11
Not Used
12
Not Used
Data Structure:
field
LVOutRange
LVOutRoute
Not Used
Not Used
description
The output signals from the NanoTrak T-Cube are routed to the
piezo drivers to position the piezo actuators. Earlier piezo Tcubes accept a 5V input while later cubes accept a 10V input.
Other piezo amplifiers with 5V or 10V input ranges may be
driven from the NanoTrak T-Cube. This parameter sets the LV
output range as follows:
0x01 0 to 5V Output Range
0x02 0 to 10V Output Range
This parameter sets the way the signals are routed to the piezo
T-Cubes as follows:
0x01 Rear panel SMA connectors only
0x02 Rear panel SMA connectors and Hub routing
13
format
word
word
Example
Tx EB,07,08,00,D0,01,01,00,01,00,00,00,00,00
Header: EB, 07, 08, 00, D0, 01: Set_TNAIOSettings, 08 byte data packet, Generic USB Device.
LVOutRange: 01, 00: 0 to 5V range
LVOutRoute: 01, 00: Signal routing via rear panel SMA connectors.
Page 191 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
REQUEST:
Command structure (6 bytes):
0
1
EC
07
2
3
4
header only
Chan 00
d
Ident
5
s
GET:
Command structure (14 bytes)
6 byte header followed by 8 byte data packet as follows:
0
1
ED
07
2
3
header
04
00
4
5
d|
s
6
7
LVOutRange
8
9
LVOutRoute
Data
10
11
Not Used
12
13
Not Used
See SET for structure.
Page 192 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Laser Control Messages
Introduction
The ‘Laser’ ActiveX Control provides the functionality required for a client application to
control one or more T-Cube Laser Sources.
The methods of the Laser Control Object can then be used to control the T-Cube Laser
Source and Laser Driver units, and activities such as switching between display modes,
setting the laser power set point, reading the laser power or current and setting the LED
display intensity can be performed.
For details on the use of the Laser Source, refer to the handbook supplied with the unit.
Page 193 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_LA_SET_PARAMS
MGMSG_LA_REQ_PARAMS
MGMSG_LA_GET_PARAMS
Function:
Issue 15
0x0800
0x0801
0x0802
This generic parameter set/request message is used to control all
the functionality of the TLS001. The specific parameters to control
are identified by the use of sub-messages. These sub messages
comply with the general format of the APT message protocol but
rather than having a unique first and second byte in the header
carrying the “message identifier” information, the first and second
byte remain the same.
Instead, for the SET and GET messages, the message identifier is
carried in the first two bytes in the data packet part of the message,
whilst for the REQ message it is encoded as the third byte of the
header.
Likewise, when the TLS001 responds, the first two bytes of the
response remain the same and the first two bytes of the data packet
identify the sub-message to which the information returned in the
remaining part of the data packet relates.
The following sub messages are applicable to the TLS001:
Set/Request/Get Laser Power Setpoint (sub-message ID = 1)
Request/Get Laser Current and Power (sub-message ID = 3)
Set/Request/Get Laser Power Control Source (sub-message ID = 5)
Request/Get Status Bits (sub-message ID = 7)
Request/Get Maximum Limits (sub-message ID = 9)
Set/Request/Get Display Settings (sub-message ID = 11)
To explain the principle, the following examples describe the first of
these messages in more detail.
Example - Set/Request/Get Laser Power Setpoint (sub-message ID = 1)
This sub-command is used to set / read the laser power setpoint. The setpoint is the
required laser power that the TLS001 will attempt to maintain. This is not necessarily the
same as the actual laser power because if the current limit for the laser diode is exceeded,
the setpoint will not be reached.
SET:
Command structure (10 bytes)
6 byte header followed by 4 byte data packet as follows:
0
1
00
08
2
3
header
04
00
4
5
d|
s
6
7
MsgID
Data
8
9
SetPoint
Page 194 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Data Structure:
field
MsgID
SetPoint
Example:
description
The message ID of the message containing the parameters
The Laser power setpoint (0 to 32767 -> 0% to 100%
power).to be saved.
format
word
word
Set the laser power setpoint to be set to 5% of the maximum power
TX 00, 08, 04, 00, D0, 01, 01, 00, 66, 06,
Header: 00, 08, 04, 00, D0, 01: Set_PARAMS, 04 byte data packet, Generic USB Device.
MsgID: 01, 00: Set Laser Power Setpoint
SetPoint:.66, 06: the laser power setpoint, 0x0666 (1638 decimal), which is 5 % of the full
power.
REQUEST:
Command structure (6 bytes):
0
1
01
08
2
3
4
header only
01
00
d
5
s
TX 01, 08, 01, 00, 50, 01,
GET:
Command structure (10 bytes)
6 byte header followed by 4 byte data packet as follows:
0
1
02
08
2
3
header
04
00
4
5
d|
s
6
7
MsgID
Data
8
9
SetPoint
See SET message for data structure
Page 195 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Example - Request/Get Laser Current and Power (sub-message ID = 3)
This sub-command is used to read the actual laser power and the laser current. Note that
there is no SET message as only the setpoint power can be set, not the actual power or
current.
REQUEST:
Command structure (6 bytes):
0
1
01
08
2
3
4
header only
03
00
d
5
s
TX 01, 08, 03, 00, 50, 01,
GET:
Command structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
02
08
2
3
header
06
00
4
5
d|
s
6
7
MsgID
8
9
Data
LaserCurrent
10
11
LaserPower
Data Structure:
field
MsgID
LaserCurrent
LaserPower
Example:
description
The message ID of the message containing the parameters
The Laser current (0 to 32767 -> 0 to max current in mA)
The Laser power (0 to 32767 -> 0% to 100% power)
format
word
word
word
Get the laser current and power
RX 02, 08, 06, 00, D0, 01, 03, 00, 66, 06, 66, 06
Header: 00, 08, 06, 00, D0, 01: Set_PARAMS, 06 byte data packet, Generic USB Device.
MsgID: 03, 00: Get Laser Current and Power
LaserCurrent:.66, 06: the laser current, 0x0666 (1638 decimal), which is 5 mA for a 100 mA
max current laser.
LaserPower:.66, 06: the laser power, 0x0666 (1638 decimal), which is 5% of the full power.
Page 196 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Example - Set/Request/Get the Laser Power Control Source (sub-message ID = 5)
This sub-command is used to set / read the laser power control source. The laser power can
be controlled by APT commands, the potentiometer on the top of the unit or the external
SMA input. Only one control source can be active at any time, the options are mutually
exclusive.
SET:
Command structure (10 bytes)
6 byte header followed by 4 byte data packet as follows:
0
1
00
08
2
3
header
04
00
4
5
d|
s
6
7
Data
MsgID
8
9
LaserSource
Data Structure:
field
MsgID
LaserSource
Example:
description
The message ID of the message containing the parameters
The Laser power source. This can be one of the following
three options:
0 = SW control;
1 = external SMA input;
4 = potentiometer.
format
word
word
Set the laser power source to be external SMA input
TX 00, 08, 04, 00, D0, 01, 05, 00, 01, 00
Header: 00, 08, 04, 00, D0, 01: Set_PARAMS, 04 byte data packet, Generic USB Device.
MsgID: 05, 00: Set Laser Power Source
LaserSource:.01, 00: the laser power source is the external SMA input.
REQUEST:
Command structure (6 bytes):
0
1
01
08
2
3
4
header only
05
00
d
5
s
TX 01, 08, 01, 00, 50, 01,
GET:
Command structure (10 bytes)
6 byte header followed by 4 byte data packet as follows:
0
1
02
08
2
3
header
04
00
4
5
d|
s
6
7
MsgID
Data
8
9
LaserSource
See SET message for data structure
Page 197 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Request/Get Status Bits (sub-message ID = 7)
This sub command can be used to request the TLS001 status bits. The message only has a
request/ get part.
REQUEST:
Command structure (6 bytes):
0
1
01
08
2
3
4
header only
07
00
d
5
s
TX 01, 08, 07, 00, 50, 01,
GET:
Status update messages are received with the following format:Response structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
02
08
2
3
header
06
00
4
5
d|
s
6
7
MsgID
8
Data
9
10
11
StatusBits
Data Structure:
field
description
MsgID
The message ID of the message containing the parameters
StatusBits
The meaning of the individual bits (flags) of the 32 bit
integer value will depend on the controller and are
described in the following tables.
format
word
dword
TLS001 controller
Hex Value
0x00000001
0x00000002
0x00000004
0x00000008
0x00000010
0x00000020
0x00000040
Example
Bit Number
1
2
3
4
5
6
7
8
Description
Laser output enabled state (1 - enabled, 0 - disabled).
Keyswitch enabled state (1 - enabled, 0 – disabled)
Laser control mode (1 - power [closed loop], 0 - current [open loop])
Safety interlock, (1 - enabled, 0 – disabled)
Units mode (1 - mA, else 0).
Units mode (1 - mW, else 0).
Units mode (1 - dBm, else 0)
For Future Use
RX 02, 08, 06, 00, 81, 50, 07, 00, 2B, 00, 00, 00
Header: 02, 08, 06, 00, 81, 50: LA_Get_Params, 06 byte data packet, Generic USB Device.
MsgID: 07, 00: Get Status Bits
StatusBits: 2B,00,00,00, i.e. 00101011 the display shows mW units, the safety interlock is
enabled, the keyswitch is enabled and the output is enabled.
Page 198 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Request/Get Maximum Limits (sub-message ID = 9)
This sub command can be used to request the TLS001 maximum limits, such as maximum
current, maximum power and the wavelength of the laser diode. The message only has a
request/ get part.
REQUEST:
Command structure (6 bytes):
0
1
01
08
2
3
4
header only
09
00
d
5
s
TX 01, 08, 09, 00, 50, 01,
GET:
Status update messages are received with the following format:Response structure (14 bytes)
6 byte header followed by 8 byte data packet as follows:
0
1
02
08
Data Structure:
field
MsgID
MaxCurrent
MaxPower
WaveLength
2
3
header
08
00
4
5
d|
s
6
7
MsgID
8
9
MaxCurrent
Data
10
11
MaxPower
description
The message ID of the message containing the parameters
The Laser max current (0 to 65535 -> 0 to655.35 mA)
The Laser max power (0 to 65535 -> 0 to 6.5535 mW)
The Laser wavelength in nm (635 or 1550)
12
13
Wavelength
format
word
word
word
word
Example – Get Laser Limits
RX 02, 08, 08, 00, D0, 01, 09, 00, C8, 00, 05, 00, 0E, 06
Header: 00, 08, 06, 00, D0, 01: Set_PARAMS, 06 byte data packet, Generic USB Device.
MsgID: 09, 00: Get Laser Max Limits
MaxCurrent:.C8, 00:, 0x00C8 i.e. 200mA max current.
MaxPower:.05, 00:, 0x0005 i.e. 5 mW max power.
Wavelength:.0E, 06: the laser power, 0x060E (1550 decimal), wavelength 1550 nm.
Page 199 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Set/Request/Get Display Settings (sub-message ID = 11)
This message can be used to adjust or read the front panel LED display brightness and the
display units.
SET:
Command structure (14 bytes)
6 byte header followed by 8 byte data packet as follows:
0
1
00
08
2
3
header
08
00
4
5
d|
s
6
7
MsgID
8
9
10
11
Data
DispIntensity
DispUnits
12
13
Unused
Data Structure:
field
MsgID
DispIntensity
DispUnits
description
The message ID of the message containing the parameters
The intensity is set as a value from 0 (Off) to 255 (brightest).
The LED display window on the front of the unit can be set
to display the laser output in mA, mW or dBm as follows.
1 display shows laser current in mA.
2 display shows laser power in mW.
3 display shows laser power in dBm (relative to 1 mW)
N/A
Unused
Example:
format
word
word
word
word
Set the display to show the laser current in Amps and at max brightness:
TX 00, 08, 08, 00, D0, 01, 0B, 00, FF, 00, 01, 00, 00, 00
Header: 00, 08, 08, 00, D0, 01: Set_Params, 08 byte data packet, Generic USB Device.
MsgID: 0B, 00: Set Display Settings
DispIntensity: FF, 00: Sets the display brightness to 255 (100%)
DispUnits: 01, 00: Sets the display units to mA
REQ:
Command structure (6 bytes):
0
1
01
08
2
3
4
header only
0B
00
d
Example:
5
s
TX 01, 08, 0B, 00, 50, 01
GET:
Command structure (14 bytes)
6 byte header followed by 8 byte data packet as follows:
0
1
00
08
2
3
header
08
00
4
5
d|
s
6
7
MsgID
8
9
10
11
Data
DispIntensity
DispUnits
12
13
Unused
See SET for data structure.
Page 200 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_LA_SET_EEPROMPARAMS
Function:
Issue 15
0x0810
Used to save the parameter settings for the specified message.
These settings may have been altered either through the various
method calls or through user interaction with the GUI (specifically,
by clicking on the ‘Settings’ button found in the lower right hand
corner of the user interface).
SET:
Command structure (10 bytes)
6 byte header followed by 4 byte data packet as follows:
0
1
10
08
2
3
header
04
00
4
5
6
7
d|
s
Chan Ident
Data
8
9
MsgID
Data Structure:
field
Chan Ident
MsgID
description
The channel being addressed
The message ID of the message containing the parameters
to be saved.
format
word
word
Example:
TX 10, 08, 04, 00, D0, 01, 01, 00, 18, 06,
Header: 10, 08, 04, 00, D0, 01: Set_EEPROMPARAMS, 04 byte data packet, Generic USB
Device.
Chan Ident: 01, 00: Channel 1
MsgID: Save parameters specified by message 0821 (GetStatusUpdate).
Page 201 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_LA_ENABLEOUTPUT
MGMSG_LA_DISABLEOUTPUT
Function
Issue 15
0x0811
0x0812
These messages are sent to enable or disable the Laser output.
The 3rd and 4th bytes in the command header are unused and set to
0x00.
SET:
Command structure (6 bytes):
0
1
11
08
Example:
2
3
4
header only
00
00
d
5
s
Enable the laser output
TX 11, 08, 00, 00, 50, 01
Disable the laser output
TX 12, 08, 00, 00, 50, 01
Page 202 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_LA_REQ_STATUSUPDATE
MGMSG_LA_GET_STATUSUPDATE
Function:
0x0820
0x0821
This function is used in applications where spontaneous status
messages (i.e. messages sent using the START_STATUSUPDATES
command) must be avoided.
Status update messages contain information about the position and
status of the controller (for example position and O/P voltage). The
response will be sent by the controller each time the function is
requested.
REQUEST:
Command structure (6 bytes):
0
1
20
08
2
3
4
header only
00
00
d
5
s
GET:
Status update messages are received with the following format:Response structure (14 bytes)
6 byte header followed by 8 byte data packet as follows:
0
1
21
08
2
3
header
08
00
4
5
d|
s
6
7
LaserCurrent
8
9
10
Data
11
LaserPower
12
13
StatusBits
Data Structure:
field
description
LaserCurrent
The laser current, in the range 0 to 32760 – (i.e. 0 to max
current in mA)
LaserPower
The.laser power, in the range 0 to 32760 – (i.e. 0 to 100% of
max power)
StatusBits
The meaning of the individual bits (flags) of the 32 bit
integer value will depend on the controller and are
described in the following tables.
format
word
word
dword
TLS001 controller
Hex Value
0x00000001
0x00000002
0x00000004
0x00000008
0x00000010
0x00000020
0x00000040
Bit Number
1
2
3
4
5
6
7
8
Description
Laser output enabled state (1 - enabled, 0 - disabled).
Keyswitch enabled state (1 - enabled, 0 – disabled)
Laser control mode (1 - power [closed loop], 0 - current [open loop])
Safety interlock, (1 - enabled, 0 – disabled)
Units mode (1 - mA, else 0).
Units mode (1 - mW, else 0).
Units mode (1 - dBm, else 0)
For Future Use
Page 203 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Example
RX 21, 08, 08, 00, 81, 50, 90, 19, 90, 19, 2B, 00, 00, 00
Header: 21, 08, 08, 00, 81, 50: LA_Get_StatusUpdate, 08 byte data packet, Generic USB
Device.
LaserCurrent: 90, 19: 6544 = 20 % of the maximum current;
LaserPower: 90, 19: 6544 = 20 % of the maximum power;
StatusBits: 2B,00,00,00, i.e. 00101011 the display shows mW units, the safety interlock is
enabled, the keyswitch is enabled and the output is enabled.
Page 204 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_LA_ACK_STATUSUPDATE
Issue 15
0x0822
Only Applicable If Using USB COMMS. Does not apply to RS-232 COMMS
Function:
If using the USB port, this message called “server alive” must be sent
by the server to the controller at least once a second or the
controller will stop responding after ~50 commands.
The controller keeps track of the number of "status update" type of
messages (e.g.move complete message) and it if has sent 50 of
these without the server sending a "server alive" message, it will
stop sending any more "status update" messages.
This function is used by the controller to check that the PC/Server
has not crashed or switched off. There is no response.
Structure (6 bytes):
0
1
22
08
2
3
4
header only
00
00
d
5
s
TX 22, 08, 00, 00, 50, 01
Page 205 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Quad Control Messages
Introduction
The ‘Quad’ ActiveX Control provides the functionality required for a client application to
control one or more T-Cube Quad Detector Readers or Position Aligners.
The methods of the Quad Control Object can then be used to control the TQD001 T-Cube
Quad Reader and the TPA101 T-Cube Position Aligner, and activities such as switching
between Monitor, Open Loop and Closed Loop operating modes, setting the position
demand parameters, reading the present beam position and setting the LED display
intensity.
For details on the use of the T-Cubes, refer to the handbook supplied for the unit.
Page 206 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_QUAD_SET_PARAMS
MGMSG_QUAD_REQ_PARAMS
MGMSG_QUAD_GET_PARAMS
Function:
Issue 15
0x0870
0x0871
0x0872
This generic parameter set/request message is used to control the
functionality of the TQD001 or TPA101. The specific parameters to
control are identified by the use of sub-messages. These sub
messages comply with the general format of the APT message
protocol but rather than having a unique first and second byte in the
header carrying the “message identifier” information, the first and
second byte remain the same.
Instead, for the SET and GET messages, the message identifier is
carried in the first two bytes in the data packet part of the message,
whilst for the REQ message it is encoded as the third byte of the
header.
Likewise, when the TQD001 or TPA101 responds, the first two bytes
of the response remain the same and the first two bytes of the data
packet identify the sub-message to which the information returned
in the remaining part of the data packet relates.
The following sub messages are applicable to the TQD001 and TPA101:
Set/Request/Get Quad_LoopParams (sub-message ID = 01)
Request/Get Quad_Readings (sub-message ID = 03)
Set/Request/Get Quad Position Demand Params (sub-message ID = 05)
Set/Request/Get Quad Operating Mode (sub-message ID = 07)
Request/Get Quad Status Bits (sub-message ID = 09)
Set/Request/Get Quad Display Settings (sub-message ID = 0B)
Set/Request/Get Quad Position Demand Outputs (sub-message ID = 0D)
The following sub message is applicable only to the TPA101:
Set/Request/Get Quad_LoopParams2 (sub-message ID = 0E)
To explain the principle, the following examples describe these messages in more detail.
Set/Request/Get Quad_LoopParams (sub-message ID = 01)
Used to set the proportional, integration and differential feedback loop constants to the
value specified in the PGain, IGain and DGain parameters respectively. They apply when the
quad detector unit is operated in closed loop mode, and position demand signals are
generated at the rear panel SMA connectors by the feedback loops. These position demand
voltages act to move the beam steering elements (e.g. a piezo driven mirror) in order to
centralize a beam at the centre of the PSD head.
When operating in closed loop mode, the proportional, integral and differential (PID)
constants can be used to fine tune the behaviour of the dual feedback loops to adjust the
response of the position demand output voltages. The feedback loop parameters need to be
adjusted to suit the different types of sensor that can be connected to the system. The
default values have been optimized for the PDQ80A sensor.
Page 207 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
SET:
Command structure (14 bytes)
6 byte header followed by 8 byte data packet as follows:
0
1
70
08
Data Structure:
field
SubMsgID
PGain
IGain
DGain
Example:
2
3
header
08
00
4
5
6
7
d|
s
SubMsgID
8
9
PGain
Data
10
11
IGain
12
13
DGain
description
The message ID (i.e. 0100) of the message containing the
parameters
The proportional gain. This term provides the force used to
drive the piezo to the demand position, reducing the
positional error. Together with the Integral and Differential,
these terms determine the system response characteristics
and accept values in the range 0 to 32767 (i.e. 0 to 100 in
APT User GUI).
The integral gain. This term provides the ‘restoring’ force
that grows with time, ensuring that the positional error is
eventually reduced to zero. Together with the Proportional
and Differential, these terms determine the system
response characteristics and accept values in the range 0 to
32767 (i.e. 0 to 100 in APT User GUI).
The differential gain. This term provides the ‘damping’ force
proportional to the rate of change of the position.
Together with the Proportional and Integral, these terms
determine the system response characteristics and accept
values in the range 0 to 32767 (i.e. 0 to 100 in APT User
GUI).
format
word
word
word
word
Set the PID parameters for TQD001 or TPA101 as follows:
Proportional: 65
Integral: 80
Differential: 60
TX 70, 08, 08, 00, D0, 01, 01, 00, 41, 00, 50, 00, 3C, 00,
Header: 70, 08, 08, 00, D0, 01: Quad_SetParams, 8 byte data packet, Generic USB Device.
SubMsgID: 01, 00 SetQuadControlLoopParams)
PGain: 32, 53,(32767x65/100): Set the proportional term to 65
IGain: 65, 66, (32767x80/100): Set the integral term to 80
DGain: CC, 4C, (32767x60/100): Set the differential term to 60
REQUEST:
Command structure (6 bytes):
0
1
71
08
2
3
4
header only
01
00
d
5
s
Page 208 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
GET:
6 byte header followed by 8 byte data packet as follows:
0
1
72
08
2
3
header
08
00
4
5
6
7
d|
s
SubMsgID
8
9
PGain
Data
10
11
IGain
12
13
DGain
For structure see Set message above.
Page 209 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Request/Get Quad_Readings (sub-message ID = 3)
The TQD001 Quad Detector T-Cube has been designed to operate with the PDQ80A Quad
Detector. The detector consists of a 4-segment photodiode sensor array, which provides
‘Bottom minus Top’ (YDIFF) and ‘Left minus Right’ (XDIFF) difference signals, together with
the SUM of the signals (total beam power) from all four quadrants of the photodiode array.
This sub-message is used to read the actual SUM, XDIFF and YDIFF signals from the detector.
Whether these signals are routed to the LV OUT/XDIFF and LV OUT/YDIFF SMA connectors
on the rear panel depends on the operating mode selected (see the Quad_OperMode
message) as follows.
In ‘Closed Loop’ mode, the signal from the detector is interpreted by the unit, and the
feedback circuit sends position demand signals (XOut and YOut) to the rear panel LV
OUT/XDIFF and LV OUT/YDIFF connectors, which can be used to drive a pair of
positioning elements (e.g. piezo controllers) in order to position the light beam within
the center of the detector array. This submessage is then used to read the actual values for
the XPos and YPos position demand signals (-10 V to +10V). Note that in closed loop mode,
with the beam central, the X and Y axis difference outputs from the photodiode array are
zero. However, the position demand signals on the rear panel LV OUT XDIFF and YDIFF SMA
connectors are whatever value is necessary to drive the positioning elements to centre the
beam.
When the Quad Detector T-Cube is operated in ‘open loop’ mode, the signals on the rear
panel LV OUT/XDIFF and LV OUT/YDIFF connectors are constant. They are either fixed at
zero (0V), or held at the last Closed Loop value (depending on the ‘QuadPosDemandParams’
message. This is useful when the system is being adjusted manually, to position the light
beam within the detector array.
When operating in 'Monitor' mode, the X axis (XDIFF) and Y axis (YDIFF) difference signals
from the detector, are fed through to the rear panel SMA connectors for use in a monitoring
application.
REQUEST:
Command structure (6 bytes):
0
1
71
08
2
3
4
header only
03
00
d
5
s
TX 71, 08, 03, 00, 50, 01,
GET:
Command structure (18 bytes)
6 byte header followed by 12 byte data packet as follows:
0
1
72
12
4
5
6
08
3
header
0C
00
d|
s
SubMsgID
13
14
16
17
Sum
2
Data
XPos
15
7
8
Data
XDiff
9
10
11
YDiff
YPos
Data Structure:
Page 210 of 265
Thorlabs APT Controllers
field
SubMsgID
XDiff
YDiff
Sum
XPos
YPos
Example:
Host-Controller Communications Protocol
Issue 15
description
The message ID (i.e. 0300) of the message containing the
parameters
The present X axis difference (XDIFF) signal from the
detector head. (-10V to 10V in the range -32768 to 32767)
The present Y axis difference (YDIFF) signal value from the
detector head. (-10V to 10V in the range -32768 to 32767)
The present Sum signal value from the detector head
(0V to 10V in the range 0 to 65535)
The X axis position output value on the rear panel XDiff SMA
connector (-10V to 10V in the range -32768 to 32767)
The Y axis position output value on the rear panel YDiff SMA
connector (-10V to 10V in the range -32768 to 32767)
format
word
short
short
word
short
short
Get the Quad Detector T-Cube readings (T-Cube in open loop mode)
RX 72, 08, 0C, 00, D0, 01, 03, 00, FF, 3F, FF, 3F, FF, 7F, 00, 00, 00, 00
Header: 72, 08, 0C, 00, D0, 01: Quad_GetPARAMS, 12 byte data packet, Generic USB Device.
MsgID: 03, 00: Get Quad Readings
XDiff:.FF, 3F: 0x3FFF (16383 decimal), i.e. 5 V.
YDiff:. FF, 3F: 0x3FFF (16383 decimal), i.e. 5 V.
Sum: FF, FF: 0x7FFF (65535 decimal), i.e. 10 V.
XPos: 00, 00 i.e. Zero
YPos: 00, 00 i.e. Zero
Page 211 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Set/Request/Get Quad_PosDemandParams (sub-message ID = 5)
The TQD001 or TPA101 Quad Detector T-Cube has been designed to operate with the
PDQ80A Quad Detector. The detector consists of a 4-segment photodiode sensor array,
which provides ‘Bottom minus Top’ (YDIFF) and ‘Left minus Right’ (XDIFF) difference signals,
together with the SUM of the signals (total beam power) from all four quadrants of the
photodiode array. Whether these signals are routed to the LV OUT/XDIFF and LV OUT/YDIFF
SMA connectors on the rear panel depends on the operating mode selected – see the
Quad_OperMode message.
This sub-message is used to control the signals on the rear panel LV OUT/XDIFF and LV
OUT/YDIFF connectors.
SET:
Command structure (18 bytes)
6 byte header followed by 12 byte data packet as follows:
0
1
70
12
4
5
6
08
3
header
0C
00
d|
s
13
14
16
17
XPosDemMax
2
15
YPosDemMax
LVOutRoute
7
8
SubMsgID
9
Data
XPosDemMin
10
11
YPosDemMin
OLPosDem
XPosFBSense
YPosFBSense
Data
Data Structure:
field
SubMsgID
XPosDemandMin
YPosDemandMin
XPosDemandMax
YPosDemandMax
LVOutRoute
description
The message ID (i.e. 0500) of the message containing
the parameters
The following four parameters are applicable only
when operating in closed loop mode. The XOut and
YOut values are the low voltage signals sent to the LV
OUT/XDIFF and LV OUT/YDIFF connectors, which are
then used to drive the positioning mechanism in
order to keep the beam central in the detector.
Under normal operating conditions, these values are
between -10 V and +10 V, however some applications
may require the limits to be less than this. The
XPosDemandMin parameter is used to set the min
limit for the XOut value, between -10V and +10V.
(i.e. -32768 to 32767)
As above. The YPosDemandMin parameter is used to
set the min limit for the YOut value, between -10V
and +10V. (i.e. -32768 to 32767)
As above. The XPosDemandMax parameter is used to
set the max limit for the XOut value, between -10V
and +10V. (-32768 to 32767)
As above. The YPosDemandMax parameter is used to
set the max limit for the YOut value, between -10V
and +10V. (-32768 to 32767)
When operating in closed loop mode, the Quad
Detector position control signals are always output
on the external SMA connectors (LV OUT XDiff and LV
format
word
short
short
short
short
word
Page 212 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
OUT YDiff). In addition, they can also be routed to the
TCH002 hub, which eliminates the need for external
SMA to SMA cables. This parameter is used to set the
LV Out signal routing as follows:
1 SMA Only
2 SMA + Hub
OpenLoopPosDemands When the Quad Detector T-Cube is operated in ‘open word
loop’ mode, the position demand signals (on the
XDIFF and YDIFF connectors) can either be set to
zero, or held at their last closed loop value, according
to the value entered in this parameter as follows:
1 OpenLoopPosDemandsZero - the output is
set to zero (0V).
2 OpenLoopPosDemandsHeld = the outputs
are fixed at the values present when the unit
is switched to open loop.
XPosDemandFBSense
Due to the choice of piezo amplifier/driver or the
short
configuration of mirrors (or other optical
components) it is possible that certain application set
ups may require the sense of the X and Y axis
position demand signals to be inverted. This
parameter sets the signal sense and gain for the X
axis output as follows:
If XPosDemandFBSense is set to '10' (32767) the
signals are positive when the beam is in the left hand
quadrants of the detector array, and negative when
in the right hand quadrants. The gain of the system is
set to '1'.
If XPosDemandFBSense is set to '-7' (-22938) the
signals are positive when the beam is in the right
hand quadrants of the detector array, and negative
when in the left hand quadrants. The gain of the
system is set to '0.7'.
YPosDemandFBSense
Similarly to the XPosDemandFBSense described
short
above, this parameter sets the signal sense and gain
for the Y axis output as follows:
If YPosDemandFBSense is set to '10' (32767) the
signals are positive when the beam is in the top
quadrants of the detector array, and negative when
in the bottom quadrants. The gain of the system is
set to '1'.
If YPosDemandFBSense is set to '-3' (-9830) the
signals are positive when the beam is in the bottom
quadrants of the detector array, and negative when
in the top quadrants. The gain of the system is set to
'0.3'.
Page 213 of 265
Thorlabs APT Controllers
Example:
Host-Controller Communications Protocol
Issue 15
Set the Quad Pos Demand Params
RX 70, 08, 12, 00, D0, 01, 05, 00, 01, 80, 01, 80, FF, 7F, FF, 7F, 02, 00, 01, 00, 0A, 00, 0A, 00
Header: 70, 08, 12, 00, D0, 01: Quad_SetPARAMS, 18 byte data packet, Generic USB Device.
SubMsgID: 05, 00: Set Quad PosDemandParams
XPosDemandMin:.01, 80: 0x8001 (-32767 decimal), i.e. -10 V.
YPosDemandMin:. 01, 80: 0x8001 (-32767 decimal), i.e. -10 V.
XPosDemandMax: FF, 7F: 0x7FFF (32767 decimal), i.e. 10 V.
YPosDemandMax: FF, 7F: 0x7FFF (32767 decimal), i.e. 10 V.
LVOutRoute: 02, 00 i.e. SMA + Hub
OpenLoopPosDemand:.01, 00: i.e. Zero.
XPosDemandFBSense:. FF, 7F: i.e. Positive sense, gain = 1.
YPosDemandFBSense: 9A, D9: i.e. Positive sense, gain = 0.3.
REQUEST:
Command structure (6 bytes):
0
1
71
08
2
3
4
header only
05
00
d
5
s
TX 71, 08, 05, 00, 50, 01,
GET:
Command structure (22 bytes)
6 byte header followed by 18 byte data packet as follows:
0
1
72
12
4
5
6
08
3
header
12
00
d|
s
13
14
16
17
XPosDemMax
2
15
YPosDemMax
LVOutRoute
7
8
SubMsgID
9
Data
XPosDemMin
10
11
YPosDemMin
OLPosDem
XPosFBSense
YPosFBSense
Data
See Set message for structure
Page 214 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Set/Request/Get Quad_OperMode (sub-message ID = 07)
Used to set the operating mode of the TQD001 Quad Detector T-Cube to either Monitor,
Open Loop or Closed Loop mode as described below.
SET:
Command structure (14 bytes)
6 byte header followed by 8 byte data packet as follows:
0
1
70
08
2
3
header
08
00
4
5
6
7
d|
s
SubMsgID
Data
8
9
Mode
Data Structure:
field
SubMsg ID
Mode
Example:
description
The message ID (i.e. 0700) of the message containing the
parameters
The operating mode of the unit.
When operating in 'Monitor' mode, the X axis (XDIFF) and Y
axis (YDIFF) difference signals from the detector, are fed
through to the rear panel SMA connectors for use in a
monitoring application.
When in ‘Open Loop’ mode, the signals at the rear panel are
fixed at zero (0V), or held at the last closed loop value,
depending on the setting of the ‘OpenLoopPosDemands
parameter in the QuadPosDemandParams message. This is
useful when the system is being adjusted manually, to
position the light beam within the detector array.
In ‘Closed Loop’ mode, the feedback circuit sends position
demand signals (XOut & YOut) to the rear panel XDIFF and
YDIFF connectors, which can be used to drive a pair of
positioning elements (e.g. piezo drivers) in order to position
the light beam within the center of the detector array.
The mode is set as follows:
1 Monitor Mode
2 OpenLoop
3 ClosedLoop
format
word
word
Set the operating mode to closed loop
TX 70, 08, 04, 00, D0, 01, 07, 00, 03, 00,
Header: 70, 08, 04, 00, D0, 01: Quad_SetPARAMS, 04 byte data packet, Generic USB Device.
SubMsgID: 07, 00: SetQuadOperMode
Mode: 03, 00,: Set closed loop mode
Page 215 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
REQUEST:
Command structure (6 bytes):
0
1
71
08
2
3
4
header only
Msg
00
d
Ident
5
s
GET:
6 byte header followed by 8 byte data packet as follows:
0
1
70
08
2
3
header
08
00
4
5
6
7
d|
s
SubMsgID
Data
8
9
Mode
For structure see Set message above.
Page 216 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Request/Get Quad_Status Bits (sub-message ID = 9)
This sub command can be used to request the TQD001 or TPA101 status bits. The message
only has a request/ get part.
REQUEST:
Command structure (6 bytes):
0
1
71
08
2
3
4
header only
09
00
d
5
s
TX 71, 08, 09, 00, 50, 01,
GET:
Status update messages are received with the following format:Response structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
72
08
2
3
header
06
00
4
5
6
7
d|
s
SubMsgID
8
Data
9
10
11
StatusBits
Data Structure:
field
description
MsgID
The message ID (0900) of the message containing the
parameters
StatusBits
The individual bits (flags) of the 32 bit integer value are
described in the following table.
format
word
dword
TQD001 or TPA101 controller
Hex Value
0x00000001
0x00000002
0x00000004
0x00000008
Example
Bit Number
1
2
3
4 to 32
Description
Position Monitoring Mode (1 - enabled, 0 - disabled).
Open Loop Operating Mode (1 - enabled, 0 – disabled)
Closed Loop Operating Mode (1 - enabled, 0 – disabled)
For Future Use
RX 72, 08, 06, 00, D0, 50, 09, 00, 2B, 00, 00, 00
Header: 02, 08, 06, 00, D0, 50: Quad_Get_Params, 06 byte data packet, Generic USB Device.
MsgID: 09, 00: Get Status Bits
StatusBits: 04,00,00,00, i.e. 100 Closed Loop operating mode is enabled.
Page 217 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Set/Request/Get Quad Display Settings (sub-message ID = 0B)
This message can be used to adjust or read the front panel LED display brightness and the
display units.
SET:
Command structure (14 bytes)
6 byte header followed by 8 byte data packet as follows:
0
1
70
08
2
3
header
08
00
4
5
6
7
d|
s
SubMsgID
8
9
10
11
Data
DispIntensity
Unused
12
13
Unused
Data Structure:
field
MsgID
description
The message ID (i.e. 0B00) of the message containing the
parameters
The intensity is set as a value from 0 (Off) to 255 (brightest).
N/A
N/A
DispIntensity
Reserved
Reserved
Example:
format
word
word
word
word
Set the display to max brightness:
TX 70, 08, 08, 00, D0, 01, 0B, 00, FF, 00, 00, 00, 00, 00
Header: 70, 08, 08, 00, D0, 01: Quad_SetParams, 08 byte data packet, Generic USB Device.
SubMsgID:
0B, 00: Set Display Settings
DispIntensity: FF, 00: Sets the display brightness to 255 (100%)
REQ:
Command structure (6 bytes):
0
1
71
08
2
3
4
header only
0B
00
d
Example:
5
s
TX 71, 08, 0B, 00, 50, 01
GET:
Command structure (14 bytes)
6 byte header followed by 8 byte data packet as follows:
0
1
72
08
2
3
header
08
00
4
5
6
7
d|
s
SubMsgID
8
9
10
11
Data
DispIntensity
Unused
12
13
Unused
See SET for data structure.
Page 218 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Set/Request/Get Quad_PositionOutputs (sub-message ID = 0D)
This sub message can be used to set and get the position demand signals (on the XDIFF,
YDIFF connectors).
When the quad detector unit is used with a beam steering device (e.g. a piezo mirror via
piezo drivers), this message allows the beam to be positioned by entering a value (-10 V to
+10V) in the XPos and YPos parameters.
SET:
Status update messages are received with the following format:Response structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
70
08
2
3
header
06
00
4
5
6
7
d|
s
SubMsgID
8
Data
XPos
9
10
11
YPos
Data Structure:
field
description
MsgID
The message ID (i.e. 0D00) of the message containing the
parameters
XPos
The X axis position output value -10 V to 10 V (i.e. -32768 to 32767)
YPos
The Y axis position output value -10 V to 10 V (i.e. -32768 to 32767)
format
word
short
short
Example Set the XPos and YPos signals to be -10 V and 10V respectively.
TX 70, 08, 06, 00, D0, 01, 0D, 00, 01, 80, FF, 7F
Header: 70, 08, 06, 00, D0, 01: Quad_Get_Params, 06 byte data packet, Generic USB Device.
MsgID: 0D, 00: Get Quad_PositionOutputs
XPos:. 01, 80: 0x8001 (-32767 decimal), i.e. -10 V.
YPos: FF, 7F: 0x7FFF (32767 decimal), i.e. 10 V.
REQUEST:
Command structure (6 bytes):
0
1
71
08
2
3
4
header only
0D
00
d
5
s
TX 71, 08, 0D, 00, 50, 01,
GET:
Status update messages are received with the following format:Response structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
72
08
2
3
header
06
00
4
5
6
7
d|
s
SubMsgID
8
Data
XPos
9
10
11
YPos
Page 219 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Set/Request/Get Quad_LoopParams2 (sub-message ID = 0E)
This sub-message is applicable only to the TPA101 unit.
Used to set the proportional, integration and differential feedback loop constants and also
to set the derivative cut off frequency and the notch filter center frequency.
PID Constants: The PID constants apply when the unit is operated in closed loop mode, and
position demand signals are generated at the rear panel SMA connectors by the feedback
loops. These position demand voltages act to move the beam steering elements (e.g. a piezo
driven mirror) in order to centralize a beam at the centre of the PSD head.
When operating in closed loop mode, the proportional, integral and differential (PID)
constants can be used to fine tune the behaviour of the dual feedback loops to adjust the
response of the position demand output voltages. The feedback loop parameters need to be
adjusted to suit the different types of sensor that can be connected to the system. The
default values have been optimized for the PDQ80A sensor.
Derivative Filter: The output of the derivative (differential) part of the PID controller can be
passed through a tuneable low pass filter. Whilst the derivative component of the PID loop
often improves stability (as it acts as a retaining force against abrupt changes in the system),
it is prone to amplifying noise present in the system, as the derivative component is
sensitive to changes between adjacent samples. To reduce this effect, a low pass filter can
be applied to the samples. As noise often tends to contain predominantly high frequency
components, the low pass filter can significantly decrease their contribution, often without
diminishing the beneficial, stabilizing effect of the derivative action. In some applications
enabling this filter can improve the overall closed loop performance.
Notch Filter: Due to their construction, most actuators are prone to mechanical resonance at
well-defined frequencies. The underlying reason is that all spring-mass systems are natural
harmonic oscillators. This proneness to resonance can be a problem in closed loop systems
because, coupled with the effect of the feedback, it can result in oscillations. With some
actuators (for example the ASM003), the resonance peak is either weak enough or at a high
enough frequency for the resonance not to be troublesome. With other actuators (for
example the PGM100) the resonance peak is very significant and needs to be eliminated for
operation in a stable closed loop system. The notch filter is an adjustable electronic antiresonance that can be used to counteract the natural resonance of the mechanical system.
As the resonance frequency of actuators varies with load in addition to the minor variations
from product to product, the notch filter is tuneable so that its characteristics can be
adjusted to match those of the actuator. In addition to its centre frequency, the bandwidth
of the notch (or the equivalent quality factor, often referred to as the Q-factor) can also be
adjusted. In simple terms, the Q factor is the centre frequency/bandwidth, and defines how
wide the notch is, a higher Q factor defining a narrower ("higher quality") notch. Optimizing
the Q factor requires some experimentation but in general a value of 5 to 10 is in most cases
a good starting point.
Page 220 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Page 221 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
SET:
Command structure (36 bytes)
6 byte header followed by 30 byte data packet as follows:
0
1
4
5
6
08
2
3
header
1E
00
70
14
d|
s
SubMsgID
15
16
18
19
PIDConstsI
28
29
17
PIDConstsD
30
FilterQ
31
32
33
Data
NotchFilterOn
7
8
20
21
22
Data
PIDConstsDFc
34
9
10
Data
PIDConstsP
11
23
25
24
12
13
PIDConstsI
26
27
FilterFc
34
PIDDerivFilterOn
Data Structure:
field
SubMsgID
description
The message ID (i.e. 0E,00) of the message containing the
parameters
PIDConstsP
The proportional gain. This term provides the force used
to drive the piezo to the demand position, reducing the
positional error. Together with the Integral and
Differential, these terms determine the system response
characteristics and accept values in the range 0 to 10000.
PIDConstsI
The integral gain. This term provides the ‘restoring’ force
that grows with time, ensuring that the positional error is
eventually reduced to zero. Together with the
Proportional and Differential, these terms determine the
system response characteristics and accept values in the
range 0 to 10000.
PIDConstsD
The differential gain. This term provides the ‘damping’
force proportional to the rate of change of the position.
Together with the Proportional and Integral, these terms
determine the system response characteristics and accept
values in the range 0 to 10000.
PIDConstsDFc
The cut off frequency of the Derivative Low Pass Filter, in
the range 0 to 10,000
FilterFc
The Notch Filter center frequency, in the range 0 to
10,000
FilterQ
The Notch Filter Q factor, in the range 0.1 to 100
NotchFilterOn
Turns the notch filter on (set to 1) and off (set to 2)
PIDDerivFilterOn Turns the derivative filter on (set to 1) and off (set to 2)
format
word
float
float
float
float
float
float
word
word
Page 222 of 265
Thorlabs APT Controllers
Example:
Host-Controller Communications Protocol
Issue 15
Set the PID parameters for TPA101 as follows:
Proportional: 65.7
Integral: 80.3
Differential: 60.9
Derivative LP Cutoff: 500 Hz
Notch Filter Center Freq: 500Hz
Q Factor: 5.0
Notch Filter ON
Derivative Filter ON
TX 70, 08, 1E, 00, D0, 01, 0E, 00, 66, 66, 83, 42, 9A, 99, A0, 42, 9A, 99, 73, 42, 00, 00, FA, 43,
00, 00, FA, 43, 00, 00, A0, 40, 01, 00, 01, 00
Header: 70, 08, 1E, 00, D0, 01: Quad_SetParams, 30 byte data packet, Generic USB Device.
SubMsgID: 0E, 00 SetQuadControlLoopParams2)
Prop: 66, 66, 83, 42: Set the proportional term to 65.7
Int: 9A, 99, A0, 42: Set the integral term to 80.3
Deriv: 9A, 99, 73, 42: Set the differential term to 60.9
Derivative LP Cut Off: 00, 00, FA, 43: Set the low pass cut off frequency to 500 Hz
Notch Filter Center: 00, 00, FA, 43: Set the notch filter center frequency to 500 Hz
Q Factor: 00, 00, A0, 40: Set the Q factor to 5.0
Notch Filter ON: 01, 00: Set the notch filter ON
Derivative Filter ON: 01, 00: Set the low pas filter ON.
REQUEST:
Command structure (6 bytes):
0
1
71
08
2
3
4
header only
01
00
d
5
s
GET:
6 byte header followed by 30 byte data packet as follows:
0
1
4
5
6
08
2
3
header
1E
00
72
14
d|
s
SubMsgID
15
16
18
19
PIDConstsI
28
29
17
PIDConstsD
30
FilterQ
31
32
33
Data
NotchFilterOn
7
8
20
21
22
Data
PIDConstsDFc
34
9
10
Data
PIDConstsP
11
23
25
24
12
13
PIDConstsI
26
27
FilterFc
35
PIDDerivFilterOn
For structure see Set message above.
Page 223 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_QUAD_REQ_STATUSUPDATE
MGMSG_ QUAD_GET_STATUSUPDATE
Function:
0x0880
0x0881
This function is used in applications where spontaneous status
messages (i.e. messages sent using the START_STATUSUPDATES
command) must be avoided.
Status update messages contain information about the position and
status of the controller (for example position and O/P voltage). The
response will be sent by the controller each time the function is
requested.
REQUEST:
Command structure (6 bytes):
0
1
80
08
2
3
4
header only
00
00
d
5
s
GET:
Status update messages are received with the following format:Response structure (20 bytes)
6 byte header followed by 14 byte data packet as follows:
0
1
81
08
14
15
YPos
2
3
header
0E
00
4
5
d|
s
16
17
18
header only
Status Bits
6
7
XDiff
8
9
YDiff
10
Data
11
12
Sum
13
XPos
19
Data Structure:
field
description
XDiff
The present X axis difference (XDIFF) signal from the
detector head. (-10V to 10V in the range -32768 to 32767)
YDiff
The present Y axis difference (XDIFF) signal from the
detector head. (-10V to 10V in the range -32768 to 32767)
Sum
The present Sum signal value from the detector head
(0V to 10V in the range 0 to 65535)
XPos
The X axis position output value -10 V to 10 V (i.e. -32768 to
32767)
YPos
The Y axis position output value -10 V to 10 V (i.e. -32768 to
32767)
StatusBits
The individual bits (flags) of the 32 bit integer value are
described in the following table
format
short
short
word
short
short
dword
Page 224 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
TQD001 or TPA101 controller Status Bits
Hex Value
0x00000001
0x00000002
0x00000004
0x00000008
Bit Number
1
2
3
4 to 32
Description
Position Monitoring Mode (1 - enabled, 0 - disabled).
Open Loop Operating Mode (1 - enabled, 0 – disabled)
Closed Loop Operating Mode (1 - enabled, 0 – disabled)
For Future Use
Example
RX 81, 08, 0E, 00, 81, 50, FF, 3F, FF, 3F, FF, 7F, 00, 00, 00, 00
Header: 81, 08, 0E, 00, 81, 50: QUAD_Get_StatusUpdate, 14 byte data packet, Generic USB
Device.
XDiff:.FF, 3F: 0x3FFF (16383 decimal), i.e. 5 V.
YDiff:. FF, 3F: 0x3FFF (16383 decimal), i.e. 5 V.
Sum: FF, FF: (65535 decimal), i.e. 10 V.
XPos: 00, 00 i.e. Zero
YPos: 00, 00 i.e. Zero
StatusBits: 04,00,00,00, i.e. 100 Closed Loop operating mode is enabled.
MGMSG_QUAD_ACK_STATUSUPDATE
0x0882
Only Applicable If Using USB COMMS. Does not apply to RS-232 COMMS
Function:
If using the USB port, this message called “server alive” must be sent
by the server to the controller at least once a second or the
controller will stop responding after ~50 commands.
The controller keeps track of the number of "status update" type of
messages (e.g.move complete message) and it if has sent 50 of
these without the server sending a "server alive" message, it will
stop sending any more "status update" messages.
This function is used by the controller to check that the PC/Server
has not crashed or switched off. There is no response.
Structure (6 bytes):
0
1
82
08
2
3
4
header only
00
00
d
5
s
TX 82, 08, 00, 00, 21, 01
Page 225 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_QUAD_SET_EEPROMPARAMS
Function:
Issue 15
0x0875
Used to save the parameter settings for the TQD001 or TPA101 unit.
These settings may have been altered either through the various
method calls or through user interaction with the GUI (specifically,
by clicking on the ‘Settings’ button found in the lower right hand
corner of the user interface).
SET:
Command structure (8 bytes)
6 byte header followed by 2 byte data packet as follows:
0
1
75
08
2
3
header
02
00
4
5
d|
s
6
7
Data
SubMsgID
Data Structure:
field
SubMsgID
description
For future use
format
word
Example:
TX 75, 08, 02, 00, D0, 01, 00, 00,
Header: E7, 07, 04, 00, D0, 01: Set_EEPROMPARAMS, 02 byte data packet, Generic USB
Device.
Page 226 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
TEC Control Messages
Introduction
The ActiveX functionality for the TEC Controller is accessed via the APTTEC Control Object,
and provides the functionality required for a client application to control a number of TCube TEC Controller units.
Every hardware unit is factory programmed with a unique 8-digit serial number. This serial
number is key to operation of the APT Server software and is used by the Server to
enumerate and communicate independently with multiple hardware units connected on the
same USB bus.
The serial number must be allocated using the HWSerialNum property, before an ActiveX
control can communicate with the hardware unit. This can be done at design time or at run
time.
The methods of the T-Cube TEC Controller can then be used to perform activities such as
switching between display modes, reading the present TEC element temperature, and
setting the LED display intensity.
For details on the use of the TEC T-Cube Controller, refer to the handbook supplied for the
unit.
Page 227 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_TEC_SET_PARAMS
MGMSG_TEC_REQ_PARAMS
MGMSG_TEC_GET_PARAMS
Function:
Issue 15
0x0840
0x0841
0x0842
This generic parameter set/request message is used to control the
functionality of the TEC001. The specific parameters to control are
identified by the use of sub-messages. These sub messages comply
with the general format of the APT message protocol but rather
than having a unique first and second byte in the header carrying
the “message identifier” information, the first and second byte
remain the same.
Instead, for the SET and GET messages, the message identifier is
carried in the first two bytes in the data packet part of the message,
whilst for the REQ message it is encoded as the third byte of the
header.
Likewise, when the TEC001 responds, the first two bytes of the
response remain the same and the first two bytes of the data packet
identify the sub-message to which the information returned in the
remaining part of the data packet relates.
The following sub messages are applicable to the TEC001:
Set/Request/Get TEC_TempSetPoint (sub-message ID = 01)
Request/Get_TEC_Readings (sub-message ID = 03)
Set/Request/Get_IOSettings (sub-message ID = 05)
Request/Get_TEC_StatusBits (sub-message ID = 07)
Set/Request/Get_TEC_LoopParams (sub-message ID = 09)
Set/Request/Get TEC_Disp_Settings (sub-message ID = 0B)
To explain the principle, the following examples describe these messages in more detail.
Set/Request/Get TEC_TempSetPoint (sub-message ID = 01)
Used to set the target temperature of the TEC element associated with the ActiveX control
instance.
SET:
Command structure (10 bytes)
6 byte header followed by 4 byte data packet as follows:
0
1
40
08
Data Structure:
field
SubMsgID
TSet
2
3
header
04
00
4
5
6
7
d|
s
SubMsgID
Data
8
9
TSet
description
The message ID (i.e. 0100) of the message containing the
parameters
Used to set the target temperature of the TEC element
associated with the ActiveX control instance.
Note. The units in which the temperature is returned are
format
word
word
Page 228 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
dependent upon the ‘Sensor Type’ selected (via the Settings
panel or by calling the SetTempSetPoint submessage). If an
IC type sensor is selected, the set point temperature is
displayed in °C in the range -4500 to 14500 (45.0° to 145.0°).
For a 20 kΩ.thermistor sensor, the set point is displayed in
kΩ in the range 0 to 2000 (0 to 20 kΩ). For a 200 kΩ. sensor
the range is 0 to20000 (0 to 200 kΩ.).
Example:
Set the Temperature Setpoint for TEC001 as follows:
TSet: 65 °C
TX 40, 08, 04, 00, D0, 01, 01, 00, 64, 19
Header: 70, 08, 08, 00, D0, 01: TEC_SetTempSetPoint, 4 byte data packet, Generic USB
Device.
SubMsgID: 01, 00 SetTempSetPoint
TSet: 64, 19 ,(6500): Set the set point to 65 °C
REQUEST:
Command structure (6 bytes):
0
1
41
08
2
3
4
header only
01
00
d
5
s
GET:
6 byte header followed by 8 byte data packet as follows:
0
1
42
08
2
3
header
04
00
4
5
6
7
d|
s
SubMsgID
Data
8
9
TSet
For structure see Set message above.
Page 229 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Request/Get TEC_Readings (sub-message ID = 3)
This message returns the present readings of the TEC unit as follows:
ITec
The TEC output current in mA. (0 to 2000mA in the range -0 to 2000)
TAct The actual temperature of the TEC element associated with the ActiveX control
instance.
Note. The units in which the temperature is returned are dependent upon the ‘Sensor Type’
selected (via the Settings panel or by calling the SetTempSetPoint submessage). If an IC type
sensor is selected, the set point temperature is displayed in °C in the range -4500 to 14500
(45.0° to 145.0°). For a 20 kΩ.thermistor sensor, the set point is displayed in kΩ in the range
0 to 2000 (0 to 20 kΩ For a 200 kΩ sensor the range is 0 to20000 (0 to 200 kΩ).
TSet
The temperature setpoint of the TEC element associated with the ActiveX control
instance.
Note. The units in which the setpoint is returned are dependent upon the ‘Sensor Type’
selected (via the Settings panel or by calling the SetTempSetPoint submessage). If an IC type
sensor is selected, the set point temperature is displayed in °C in the range -4500 to 14500
(45.0° to 145.0°). For a 20 kΩ thermistor sensor, the set point is displayed in kΩ in the range
0 to 2000 (0 to 20 kΩ For a 200 kΩ sensor the range is 0 to20000 (0 to 200 kΩ).
REQUEST:
Command structure (6 bytes):
0
1
41
08
2
3
4
header only
03
00
d
5
s
TX 41, 08, 03, 00, 50, 01,
GET:
Command structure (14 bytes)
6 byte header followed by 8 byte data packet as follows:
0
1
42
08
2
3
header
08
00
4
5
6
7
d|
s
SubMsgID
8
9
ITec
Data
10
11
12
TAct
13
TSet
Data Structure:
field
SubMsgID
ITec
TAct
description
format
The message ID (i.e. 0300) of the message containing the
word
parameters
Returns the TEC output current in mA. (0 to 2000mA in the
short
range -0 to 2000)
Returns the present temperature of the TEC element
short
associated with the ActiveX control instance.
Note. The units in which the temperature is returned are
dependent upon the ‘Sensor Type’ selected (via the Settings
panel or by calling the SetTempSetPoint submessage). If an
IC type sensor is selected, the set point temperature is
displayed in °C in the range -4500 to 14500 (45.0° to 145.0°).
For a 20 kΩ.thermistor sensor, the set point is displayed in
kΩ in the range 0 to 2000 (0 to 20 kΩ). For a 200 kΩ. sensor
the range is 0 to20000 (0 to 200 kΩ.).
Page 230 of 265
Thorlabs APT Controllers
TSet
Example:
Host-Controller Communications Protocol
Issue 15
Returns the target temperature of the TEC element
word
associated with the ActiveX control instance.
Note. The units in which the temperature is returned are
dependent upon the ‘Sensor Type’ selected (via the Settings
panel or by calling the SetTempSetPoint submessage). If an
IC type sensor is selected, the set point temperature is
displayed in °C in the range -4500 to 14500 (45.0° to 145.0°).
For a 20 kΩ.thermistor sensor, the set point is displayed in
kΩ in the range 0 to 2000 (0 to 20 kΩ). For a 200 kΩ. sensor
the range is 0 to20000 (0 to 200 kΩ.).
Get the Quad Detector T-Cube readings (T-Cube in open loop mode)
RX 42, 08, 08, 00, D0, 01, 03, 00, E8, 03, DC, 05, 40, 1F,
Header: 42, 08, 08, 00, D0, 01: TEC_GetPARAMS, 8 byte data packet, Generic USB Device.
MsgID: 03, 00: Get Quad Readings
ITec:.E8, 03: 0x03E8 (1000 decimal), i.e. 1 V.
TAct:. DC, 05: 0x05DC (1500 decimal), i.e. 1.5 V.
TSet: 40, 1F: 0x1F40 (8000 decimal), i.e. 80 °C.
Page 231 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Set/Request/Get IOSettings (sub-message ID = 5)
This message sets the type of TEC element associated with the ActiveX control instance.
If an AD59x transducer is selected, the temperature is set and displayed in °C.
If a 20kOhm or 200kOhm thermistor is selected, the temperature is set and displayed in
kOhms.
SET:
Command structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
40
08
2
3
header
06
00
4
5
6
7
d|
s
SubMsgID
8
9
Data
wSensor
10
11
sILim
Data Structure:
field
SubMsgID
wSensor
sILim
description
The message ID (i.e. 0500) of the message containing
the parameters
This parameter contains constants that specify the
type of TEC element controlled by the unit.
format
word
word
0 SENSOR_IC_AD59X TEC element is a AD59x IC
type transducer.
1 SENSOR_THERM20KOHM TEC element is a
20kOhm thermistor.
2
SENSOR_THERM200KOHM TEC element is a
200kOhm thermistor.
This parameter returns the maximum current that
short
the TEC controller associated with the ActiveX control
instance can source into the TEC element. Values are
set in the range 0 to 2000 (0 to 2000 mA).
Page 232 of 265
Thorlabs APT Controllers
Example:
Host-Controller Communications Protocol
Issue 15
Set the TEC IO Settings as follows
RX 40, 08, 0C, 00, D0, 01, 05, 00, 01, 00, 01, 80
Header: 42, 08, 0C, 00, D0, 01: TEC_SetPARAMS, 6 byte data packet, Generic USB Device.
SubMsgID: 05, 00: Set TEC_IOSettings
wSensor:.01, 00: 0x0001 i.e. AD59x IC type transducer.
sILim:. E8, 03: 0x03E8 (10000 decimal), i.e. 1A.
REQUEST:
Command structure (6 bytes):
0
1
41
08
2
3
4
header only
05
00
d
5
s
TX 41, 08, 05, 00, 50, 01,
GET:
Command structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
42
08
2
3
header
06
00
4
5
6
7
d|
s
SubMsgID
8
9
Data
wSensor
10
11
sILim
See Set message for structure
Page 233 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Request/Get TEC_Status Bits (sub-message ID = 7)
This sub command can be used to request the TEC001 status bits. The message only has a
request/ get part.
REQUEST:
Command structure (6 bytes):
0
1
41
08
2
3
4
header only
07
00
d
5
s
TX 41, 08, 07, 00, 50, 01,
GET:
Status update messages are received with the following format:Response structure (12 bytes)
6 byte header followed by 6 byte data packet as follows:
0
1
42
08
2
3
header
06
00
4
5
6
7
d|
s
SubMsgID
8
Data
9
10
11
StatusBits
Data Structure:
field
description
MsgID
The message ID (0700) of the message containing the
parameters
StatusBits
The individual bits (flags) of the 32 bit integer value are
described in the following table.
format
word
dword
TEC controller Status Bits
Hex Value
0x00000001
0x00000010
0x00000020
0x00000040
0x00000080
0x40000000
0x80000000
Bit Number
1
2 to 4
5
6
7
8
9 to 30
31
32
Description
TEC output enabled state (1 - enabled, 0 - disabled).
For Future Use
Display mode (1 – TAct, 0 - else).
Display mode (1 – TSet, 0 - else).
Display mode (1 – TDelta, 0 - else).
Display mode (1 – ITec, 0 - else).
For Future Use
Error
For Future Use
Example
RX 42, 08, 06, 00, 81, 50, E8, 03, DC, 05, 40, 1F, 11, 00, 00, 00
Header: 42, 08, 06, 00, 81, 50: TEC_SetParams, 6 byte data packet, Generic USB Device.
SubMsgID: 07, 00: Set TEC_StatusBits
StatusBits: 11,00,00,00, 0X00000011 (17 decimal) i.e. TEC is enabled with Tact display mode
selected. No errors.
Page 234 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Set/Request/Get TEC_LoopParams (sub-message ID = 9)
Used to set the proportional, integration and differential feedback loop constants to the
value specified in the PGain, IGain and DGain parameters respectively. They apply when the
TEC unit is operated in closed loop mode, and demand signals are generated at the rear
panel connectors by the feedback loops. These demand signals act to drive the heating
element to the temperature required.
When operating in closed loop mode, the proportional, integral and differential (PID)
constants can be used to fine tune the behaviour of the dual feedback loops to adjust the
response of the temperature demand output current. The feedback loop parameters need
to be adjusted to suit the different types of sensor that can be connected to the system.
SET:
Command structure (14 bytes)
6 byte header followed by 8 byte data packet as follows:
0
1
70
08
Data Structure:
field
SubMsgID
PGain
IGain
DGain
Example:
2
3
header
08
00
4
5
6
7
d|
s
SubMsgID
8
9
PGain
Data
10
11
IGain
12
13
DGain
description
The message ID (i.e. 09,00) of the message containing the
parameters
The proportional gain. This term provides the force used to
drive the output to the demand set point, reducing the
positional error. Together with the Integral and Differential,
these terms determine the system response characteristics
and accept values in the range 1 to 32767 (i.e. 1 to 100 in
APT User GUI).
The integral gain. This term provides the ‘restoring’ force
that grows with time, ensuring that the set point error is
eventually reduced to zero. Together with the Proportional
and Differential, these terms determine the system
response characteristics and accept values in the range 0 to
32767 (i.e. 0 to 100 in APT User GUI).
The differential gain. This term provides the ‘damping’ force
proportional to the rate of change of the temperature.
Together with the Proportional and Integral, these terms
determine the system response characteristics and accept
values in the range 0 to 32767 (i.e. 0 to 100 in APT User
GUI).
format
word
word
word
word
Set the PID parameters for TEC001 as follows:
Proportional: 65
Integral: 80
Differential: 60
TX 40, 08, 08, 00, D0, 01, 09, 00, 41, 00, 50, 00, 3C, 00,
Header: 40, 08, 08, 00, D0, 01: TEC_SetParams, 8 byte data packet, Generic USB Device.
Page 235 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
SubMsgID: 09, 00 Set_TECLoopParams)
PGain: 32, 53,(32767x65/100): Set the proportional term to 65
IGain: 65, 66, (32767x80/100): Set the integral term to 80
DGain: CC, 4C, (32767x60/100): Set the differential term to 60
REQUEST:
Command structure (6 bytes):
0
1
41
08
2
3
4
header only
09
00
d
5
s
GET:
6 byte header followed by 8 byte data packet as follows:
0
1
72
08
2
3
header
08
00
4
5
6
7
d|
s
SubMsgID
8
9
PGain
Data
10
11
IGain
12
13
DGain
For structure see Set message above.
Page 236 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Set/Request/Get TEC Display Settings (sub-message ID = 0B)
This message can be used to adjust or read the front panel LED display brightness and the
display units.
SET:
Command structure (14 bytes)
6 byte header followed by 8 byte data packet as follows:
0
1
40
08
2
3
header
08
00
4
5
6
7
d|
s
SubMsgID
8
9
10
11
Data
DispIntensity
DispMode
12
Unused
Data Structure:
field
MsgID
DispIntensity
DispMode
Reserved
Example:
description
The message ID (i.e. 0B00) of the message containing the
parameters
The intensity is set as a value from 0 (Off) to 255 (brightest).
The LED display window on the front of the unit can be set
to display four different values; the actual temperature of
the TEC element (TAct), the difference between the actual
temperature and the set point (TDelta), the applied current
(ITec), or the demanded set point value (TSet).
format
word
word
word
0
DISPMODE_TACT the display shows the actual
temperature of the TEC element
1
DISPMODE_TSET the display shows the demanded set
point value.
2
DISPMODE_DELTA the display shows the difference
between the actual temperature (TAct) and the set point
temperature (TSet)..
3
DISPMODE_ITEC the display shows the current (in
Amps) sourced into the TEC element by the controller.
N/A
word
Set the display to max brightness and the display mode to TAct
TX 40, 08, 08, 00, D0, 01, 0B, 00, FF, 00, 01, 00, 00, 00
Header: 40, 08, 08, 00, D0, 01: TEC_SetParams, 08 byte data packet, Generic USB Device.
SubMsgID:
0B, 00: Set Display Settings
DispIntensity: FF, 00: Sets the display brightness to 255 (100%)
DispMode:
01, 00 Sets the display to show the actual temperature of the TEC element.
REQ:
Command structure (6 bytes):
0
1
41
08
2
3
4
header only
0B
00
d
13
5
s
Page 237 of 265
Thorlabs APT Controllers
Example:
Host-Controller Communications Protocol
Issue 15
TX 41, 08, 0B, 00, 50, 01
GET:
Command structure (14 bytes)
6 byte header followed by 8 byte data packet as follows:
0
1
42
08
2
3
header
08
00
4
5
6
7
d|
s
SubMsgID
8
9
10
11
Data
DispIntensity
DispMode
12
13
Unused
See SET for data structure.
Page 238 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_TEC_SET_EEPROMPARAMS
Function:
Issue 15
0x0850
Used to save the parameter settings for the TEC001 unit. These
settings may have been altered either through the various method
calls or through user interaction with the GUI (specifically, by
clicking on the ‘Settings’ button found in the lower right hand corner
of the user interface).
SET:
Command structure (8 bytes)
6 byte header followed by 2 byte data packet as follows:
0
1
50
08
2
3
header
02
00
4
5
d|
s
6
7
Data
SubMsgID
Data Structure:
field
SubMsgID
description
For future use
format
word
Example:
TX 75, 08, 02, 00, D0, 01, 00, 00,
Header: E7, 07, 04, 00, D0, 01: Set_EEPROMPARAMS, 02 byte data packet, Generic USB
Device.
Page 239 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
MGMSG_TEC_REQ_STATUSUPDATE
MGMSG_ TEC_GET_STATUSUPDATE
Function:
0x0860
0x0861
This function is used in applications where spontaneous status
messages (i.e. messages sent using the START_STATUSUPDATES
command) must be avoided.
Status update messages contain information about the output
current and actual temperature of the transducer. The response will
be sent by the controller each time the function is requested.
REQUEST:
Command structure (6 bytes):
0
1
60
08
2
3
4
header only
00
00
d
5
s
GET:
Status update messages are received with the following format:Response structure (16 bytes)
6 byte header followed by 10 byte data packet as follows:
0
1
2
3
header
0E
00
61
08
12
13
14
header only
Status Bits
4
5
d|
s
6
7
ITec
8
Data
TAct
9
10
11
TSet
15
Data Structure:
field
description
format
ITec
The TEC output current in mA. (0 to 2000mA in the range -0 short
to 2000)
TAct
The actual temperature of the TEC element associated with short
the ActiveX control instance.
Note. The units in which the temperature is returned are
dependent upon the ‘Sensor Type’ selected (via the Settings
panel or by calling the SetTempSetPoint submessage). If an
IC type sensor is selected, the set point temperature is
displayed in °C in the range -4500 to 14500 (45.0° to 145.0°).
For a 20 kΩ.thermistor sensor, the set point is displayed in
kΩ in the range 0 to 2000 (0 to 20 kΩ). For a 200 kΩ. sensor
the range is 0 to20000 (0 to 200 k Ω.).
TSet
The temperature setpoint of the TEC element associated
word
with the ActiveX control instance.
Note. The units in which the setpoint is returned are
dependent upon the ‘Sensor Type’ selected (via the Settings
panel or by calling the SetTempSetPoint submessage). If an
IC type sensor is selected, the set point temperature is
displayed in °C in the range -4500 to 14500 (45.0° to 145.0°).
Page 240 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
For a 20 kΩ.thermistor sensor, the set point is displayed in
kΩ in the range 0 to 2000 (0 to 20 kΩ). For a 200 kΩ. sensor
the range is 0 to20000 (0 to 200 k Ω.).
The individual bits (flags) of the 32 bit integer value are
described in the following table
StatusBits
dword
TEC controller Status Bits
Hex Value
0x00000001
Bit Number
1
2 to 4
5
6
7
8
9 to 30
31
32
0x00000010
0x00000020
0x00000040
0x00000080
0x40000000
0x80000000
Description
TEC output enabled state (1 - enabled, 0 - disabled).
For Future Use
Display mode (1 – TAct, 0 - else).
Display mode (1 – TSet, 0 - else).
Display mode (1 – TDelta, 0 - else).
Display mode (1 – ITec, 0 - else).
For Future Use
Error
For Future Use
Example
RX 61, 08, 0A, 00, 81, 50, E8, 03, DC, 05, 40, 1F, 11, 00, 00, 00
Header: 61, 08, 0A, 00, 81, 50: TEC_Get_StatusUpdate, 10 byte data packet, Generic USB
Device.
ITec:.E8, 03: 0x03E8 (1000 decimal), i.e. 1 V.
TAct:. DC, 05: 0x05DC (1500 decimal), i.e. 1.5 V.
TSet: 40, 1F: 0x1F40 (8000 decimal), i.e. 80 °C.
StatusBits: 11,00,00,00, 0X00000011 (17 decimal) i.e. TEC is enabled with Tact display mode
selected. No errors.
MGMSG_TEC_ACK_STATUSUPDATE
0x0862
Only Applicable If Using USB COMMS. Does not apply to RS-232 COMMS
Function:
If using the USB port, this message called “server alive” must be sent
by the server to the controller at least once a second or the
controller will stop responding after ~50 commands.
The controller keeps track of the number of "status update" type of
messages (e.g.move complete message) and it if has sent 50 of
these without the server sending a "server alive" message, it will
stop sending any more "status update" messages.
This function is used by the controller to check that the PC/Server
has not crashed or switched off. There is no response.
Structure (6 bytes):
0
1
2
3
4
5
Page 241 of 265
Thorlabs APT Controllers
82
08
header only
00
00
d
Host-Controller Communications Protocol
Issue 15
s
TX 62, 08, 00, 00, 21, 01
Page 242 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Message Cross Reference by Unit Part Number
This section lists the messages applicable to each controller part number
Page 243 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Messages Applicable to BPC20x Series
MGMSG_MOD_IDENTIFY
MGMSG_MOD_SET_CHANENABLESTATE
MGMSG_MOD_REQ_CHANENABLESTATE
MGMSG_MOD_GET_CHANENABLESTATE
MGMSG_HW_DISCONNECT
MGMSG_HW_RESPONSE
MGMSG_HW_RICHRESPONSE
MGMSG_HW_START_UPDATEMSGS
MGMSG_HW_STOP_UPDATEMSGS
MGMSG_HW_REQ_INFO
MGMSG_HW_GET_INFO
MGMSG_RACK_REQ_BAYUSED
MGMSG_RACK_GET_BAYUSED
MGMSG_RACK_REQ_STATUSBITS
MGMSG_RACK_GET_STATUSBITS
MGMSG_RACK_SET_DIGOUTPUTS
MGMSG_RACK_REQ_DIGOUTPUTS
MGMSG_RACK_GET_DIGOUTPUTS
MGMSG_PZ_SET_POSCONTROLMODE
MGMSG_PZ_REQ_POSCONTROLMODE
MGMSG_PZ_GET_POSCONTROLMODE
MGMSG_PZ_SET_OUTPUTVOLTS
MGMSG_PZ_REQ_OUTPUTVOLTS
MGMSG_PZ_GET_OUTPUTVOLTS
MGMSG_PZ_SET_OUTPUTPOS
MGMSG_PZ_REQ_OUTPUTPOS
MGMSG_PZ_GET_OUTPUTPOS
MGMSG_PZ_SET_INPUTVOLTSSRC
MGMSG_PZ_REQ_INPUTVOLTSSRC
MGMSG_PZ_GET_INPUTVOLTSSRC
MGMSG_PZ_SET_PICONSTS
MGMSG_PZ_REQ_PICONSTS
MGMSG_PZ_GET_PICONSTS
MGMSG_PZ_REQ_PZSTATUSBITS
MGMSG_PZ_GET_PZSTATUSBITS
MGMSG_PZ_GET_PZSTATUSUPDATE
MGMSG_PZ_SET_OUTPUTLUT
MGMSG_PZ_REQ_OUTPUTLUT
MGMSG_PZ_GET_OUTPUTLUT
MGMSG_PZ_SET_OUTPUTLUTPARAMS
MGMSG_PZ_REQ_OUTPUTLUTPARAMS
MGMSG_PZ_GET_OUTPUTLUTPARAMS
MGMSG_PZ_START_LUTOUTPUT
MGMSG_PZ_STOP_LUTOUTPUT
MGMSG_PZ_SET_ZERO
MGMSG_PZ_REQ_MAXTRAVEL
MGMSG_PZ_GET_MAXTRAVEL
MGMSG_PZ_SET_OUTPUTMAXVOLTS
MGMSG_PZ_REQ_OUTPUTMAXVOLTS
MGMSG_PZ_GET_OUTPUTMAXVOLTS
0x0223
0x0210
0x0211
0x0212
0x0002
0x0080
0x0081
0x0011
0x0012
0x0005
0x0006
0x0060
0x0061
0x0226
0x0227
0x0228
0x0229
0x0230
0x0640
0x0641
0x0642
0x0643
0x0644
0x0645
0x0646
0x0647
0x0648
0x0652
0x0653
0x0654
0x0655
0x0656
0x0657
0x065B
0x065C
0x0661
0x0700
0x0701
0x0702
0x0703
0x0704
0x0705
0x0706
0x0707
0x0658
0x0650
0x0651
0x0680
0x0681
0x0682
20
21
21
21
23
23
24
25
25
26
26
28
28
30
30
31
31
31
120
120
120
122
122
122
123
123
123
124
124
124
126
126
126
127
127
129
132
132
132
134
134
134
138
138
143
144
144
147
147
147
Page 244 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Messages Applicable to BPC30x Series
MGMSG_MOD_IDENTIFY
MGMSG_MOD_SET_CHANENABLESTATE
MGMSG_MOD_REQ_CHANENABLESTATE
MGMSG_MOD_GET_CHANENABLESTATE
MGMSG_HW_DISCONNECT
MGMSG_HW_RESPONSE
MGMSG_HW_RICHRESPONSE
MGMSG_HW_START_UPDATEMSGS
MGMSG_HW_STOP_UPDATEMSGS
MGMSG_HW_REQ_INFO
MGMSG_HW_GET_INFO
MGMSG_RACK_REQ_BAYUSED
MGMSG_RACK_GET_BAYUSED
MGMSG_RACK_REQ_STATUSBITS
MGMSG_RACK_GET_STATUSBITS
MGMSG_RACK_SET_DIGOUTPUTS
MGMSG_RACK_REQ_DIGOUTPUTS
MGMSG_RACK_GET_DIGOUTPUTS
MGMSG_PZ_SET_POSCONTROLMODE
MGMSG_PZ_REQ_POSCONTROLMODE
MGMSG_PZ_GET_POSCONTROLMODE
MGMSG_PZ_SET_OUTPUTVOLTS
MGMSG_PZ_REQ_OUTPUTVOLTS
MGMSG_PZ_GET_OUTPUTVOLTS
MGMSG_PZ_SET_OUTPUTPOS
MGMSG_PZ_REQ_OUTPUTPOS
MGMSG_PZ_GET_OUTPUTPOS
MGMSG_PZ_SET_INPUTVOLTSSRC
MGMSG_PZ_REQ_INPUTVOLTSSRC
MGMSG_PZ_GET_INPUTVOLTSSRC
MGMSG_PZ_SET_PICONSTS
MGMSG_PZ_REQ_PICONSTS
MGMSG_PZ_GET_PICONSTS
MGMSG_PZ_REQ_PZSTATUSBITS
MGMSG_PZ_GET_PZSTATUSBITS
MGMSG_PZ_GET_PZSTATUSUPDATE
MGMSG_PZ_ACK_PZSTATUSUPDATE
MGMSG_PZ_SET_OUTPUTLUT
MGMSG_PZ_REQ_OUTPUTLUT
MGMSG_PZ_GET_OUTPUTLUT
MGMSG_PZ_SET_OUTPUTLUTPARAMS
MGMSG_PZ_REQ_OUTPUTLUTPARAMS
MGMSG_PZ_GET_OUTPUTLUTPARAMS
MGMSG_PZ_START_LUTOUTPUT
MGMSG_PZ_STOP_LUTOUTPUT
MGMSG_PZ_SET_ZERO
MGMSG_PZ_SET_OUTPUTMAXVOLTS
MGMSG_PZ_REQ_OUTPUTMAXVOLTS
MGMSG_PZ_GET_OUTPUTMAXVOLTS
MGMSG_PZ_SET_SLEWRATES
MGMSG_PZ_REQ_SLEWRATES
MGMSG_PZ_GET_SLEWRATES
MGMSG_MOT_SET_PZSTAGEPARAMDEFAULTS
0x0223
0x0210
0x0211
0x0212
0x0002
0x0080
0x0081
0x0011
0x0012
0x0005
0x0006
0x0060
0x0061
0x0226
0x0227
0x0228
0x0229
0x0230
0x0640
0x0641
0x0642
0x0643
0x0644
0x0645
0x0646
0x0647
0x0648
0x0652
0x0653
0x0654
0x0655
0x0656
0x0657
0x065B
0x065C
0x0661
0x0662
0x0700
0x0701
0x0702
0x0703
0x0704
0x0705
0x0706
0x0707
0x0658
0x0680
0x0681
0x0682
0x0683
0x0684
0x0685
0x0686
20
21
21
21
23
23
24
25
25
26
26
28
28
30
30
31
31
31
120
120
120
122
122
122
123
123
123
124
124
124
126
126
126
127
127
129
131
132
132
132
134
134
134
138
138
143
147
147
147
149
149
149
151
Page 245 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Messages Applicable to TPZ001
MGMSG_MOD_IDENTIFY
MGMSG_MOD_SET_CHANENABLESTATE
MGMSG_MOD_REQ_CHANENABLESTATE
MGMSG_MOD_GET_CHANENABLESTATE
MGMSG_HW_DISCONNECT
MGMSG_HW_RESPONSE
MGMSG_HW_RICHRESPONSE
MGMSG_HW_START_UPDATEMSGS
MGMSG_HW_STOP_UPDATEMSGS
MGMSG_HW_REQ_INFO
MGMSG_HW_GET_INFO
MGMSG_PZ_SET_POSCONTROLMODE
MGMSG_PZ_REQ_POSCONTROLMODE
MGMSG_PZ_GET_POSCONTROLMODE
MGMSG_PZ_SET_OUTPUTVOLTS
MGMSG_PZ_REQ_OUTPUTVOLTS
MGMSG_PZ_GET_OUTPUTVOLTS
MGMSG_PZ_SET_OUTPUTPOS
MGMSG_PZ_REQ_OUTPUTPOS
MGMSG_PZ_GET_OUTPUTPOS
MGMSG_PZ_SET_INPUTVOLTSSRC
MGMSG_PZ_REQ_INPUTVOLTSSRC
MGMSG_PZ_GET_INPUTVOLTSSRC
MGMSG_PZ_SET_PICONSTS
MGMSG_PZ_REQ_PICONSTS
MGMSG_PZ_GET_PICONSTS
MGMSG_PZ_GET_PZSTATUSUPDATE
MGMSG_PZ_SET_OUTPUTLUT
MGMSG_PZ_SET_OUTPUTLUTPARAMS
MGMSG_PZ_REQ_OUTPUTLUTPARAMS
MGMSG_PZ_GET_OUTPUTLUTPARAMS
MGMSG_PZ_START_LUTOUTPUT
MGMSG_PZ_STOP_LUTOUTPUT
MGMSG_PZ_SET_EEPROMPARAMS:
MGMSG_PZ_SET_TPZ_DISPSETTINGS:
MGMSG_PZ_REQ_TPZ_DISPSETTINGS:
MGMSG_PZ_GET_TPZ_DISPSETTINGS;
MGMSG_PZ_SET_TPZ_IOSETTINGS:
MGMSG_PZ_REQ_TPZ_IOSETTINGS:
MGMSG_PZ_GET_TPZ_IOSETTINGS;
0x0223
0x0210
0x0211
0x0212
0x0002
0x0080
0x0081
0x0011
0x0012
0x0005
0x0006
0x0640
0x0641
0x0642
0x0643
0x0644
0x0645
0x0646
0x0647
0x0648
0x0652
0x0653
0x0654
0x0655
0x0656
0x0657
0x0661
0x0700
0x0703
0x0704
0x0705
0x0706
0x0707
0x07D0
0x07D1
0x07D2
0x07D3
0x07D4
0x07D5
0x07D6
20
21
21
21
23
23
24
25
25
26
26
120
120
120
122
122
122
123
123
123
124
124
124
126
126
126
129
132
134
134
134
138
138
139
140
140
140
141
141
141
Page 246 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Messages Applicable to TSG001
MGMSG_MOD_IDENTIFY
MGMSG_MOD_SET_CHANENABLESTATE
MGMSG_MOD_REQ_CHANENABLESTATE
MGMSG_MOD_GET_CHANENABLESTATE
MGMSG_HW_DISCONNECT
MGMSG_HW_RESPONSE
MGMSG_HW_RICHRESPONSE
MGMSG_HW_START_UPDATEMSGS
MGMSG_HW_STOP_UPDATEMSGS
MGMSG_HW_REQ_INFO
MGMSG_HW_GET_INFO
MGMSG_HUB_REQ_BAYUSED
MGMSG_HUB_GET_BAYUSED
MGMSG_PZ_GET_PZSTATUSUPDATE
MGMSG_PZ_ACK_PZSTATUSUPDATE
MGMSG_PZ_SET_EEPROMPARAMS:
MGMSG_PZ_SET_TPZ_DISPSETTINGS:
MGMSG_PZ_REQ_TPZ_DISPSETTINGS:
MGMSG_PZ_GET_TPZ_DISPSETTINGS;
MGMSG_PZ_SET_ZERO
MGMSG_PZ_REQ_MAXTRAVEL
MGMSG_PZ_GET_MAXTRAVEL
MGMSG_PZ_SET_TSG_IOSETTINGS
MGMSG_PZ_REQ_TSG_IOSETTINGS
MGMSG_PZ_GET_TSG_IOSETTINGS
MGMSG_PZ_REQ_TSG_READING
MGMSG_PZ_GET_TSG_READING
0x0223
0x0210
0x0211
0x0212
0x0002
0x0080
0x0081
0x0011
0x0012
0x0005
0x0006
0x0065
0x0066
0x0661
0x0662
0x07D0
0x07D1
0x07D2
0x07D3
0x0658
0x0650
0x0651
0x07DA
0x07DB
0x07DC
0x07DD
0x07DE
20
21
21
21
23
23
24
25
25
26
26
29
29
129
131
139
140
140
140
143
144
144
153
153
153
155
155
Page 247 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Messages Applicable to MPZ601
MGMSG_MOD_IDENTIFY
MGMSG_MOD_SET_CHANENABLESTATE
MGMSG_MOD_REQ_CHANENABLESTATE
MGMSG_MOD_GET_CHANENABLESTATE
MGMSG_HW_RESPONSE
MGMSG_HW_RICHRESPONSE
MGMSG_HW_START_UPDATEMSGS
MGMSG_HW_STOP_UPDATEMSGS
MGMSG_HW_REQ_INFO
MGMSG_HW_GET_INFO
MGMSG_RACK_REQ_BAYUSED
MGMSG_RACK_GET_BAYUSED
MGMSG_RACK_SET_DIGOUTPUTS
MGMSG_RACK_REQ_DIGOUTPUTS
MGMSG_RACK_GET_DIGOUTPUTS
MGMSG_PZ_SET_POSCONTROLMODE
MGMSG_PZ_REQ_POSCONTROLMODE
MGMSG_PZ_GET_POSCONTROLMODE
MGMSG_PZ_SET_OUTPUTVOLTS
MGMSG_PZ_REQ_OUTPUTVOLTS
MGMSG_PZ_GET_OUTPUTVOLTS
MGMSG_PZ_SET_OUTPUTPOS
MGMSG_PZ_REQ_OUTPUTPOS
MGMSG_PZ_GET_OUTPUTPOS
MGMSG_PZ_SET_INPUTVOLTSSRC
MGMSG_PZ_REQ_INPUTVOLTSSRC
MGMSG_PZ_GET_INPUTVOLTSSRC
MGMSG_PZ_SET_PICONSTS
MGMSG_PZ_REQ_PICONSTS
MGMSG_PZ_GET_PICONSTS
MGMSG_PZ_REQ_PZSTATUSBITS
MGMSG_PZ_GET_PZSTATUSBITS
MGMSG_PZ_GET_PZSTATUSUPDATE
MGMSG_PZ_ACK_PZSTATUSUPDATE
MGMSG_PZ_SET_OUTPUTLUT
MGMSG_PZ_REQ_OUTPUTLUT
MGMSG_PZ_GET_OUTPUTLUT
MGMSG_PZ_SET_OUTPUTLUTPARAMS
MGMSG_PZ_REQ_OUTPUTLUTPARAMS
MGMSG_PZ_GET_OUTPUTLUTPARAMS
MGMSG_PZ_START_LUTOUTPUT
MGMSG_PZ_STOP_LUTOUTPUT
MGMSG_PZ_SET_ZERO
MGMSG_PZ_REQ_MAXTRAVEL
MGMSG_PZ_GET_MAXTRAVEL
MGMSG_PZ_SET_IOSETTINGS:
MGMSG_PZ_REQ_IOSETTINGS:
MGMSG_PZ_GET_IOSETTINGS:
MGMSG_PZ_SET_LUTVALUETYPE:
0x0223
0x0210
0x0211
0x0212
0x0080
0x0081
0x0011
0x0012
0x0005
0x0006
0x0060
0x0061
0x0228
0x0229
0x0230
0x0640
0x0641
0x0642
0x0643
0x0644
0x0645
0x0646
0x0647
0x0648
0x0652
0x0653
0x0654
0x0655
0x0656
0x0657
0x065B
0x065C
0x0661
0x0662
0x0700
0x0701
0x0702
0x0703
0x0704
0x0705
0x0706
0x0707
0x0658
0x0650
0x0651
0x0670
0x0671
0x0672
0x0708
20
21
21
21
23
24
25
25
26
26
28
28
31
31
31
120
120
120
122
122
122
123
123
123
124
124
124
126
126
126
127
127
129
131
132
132
132
134
134
134
138
138
143
144
144
145
145
145
152
Page 248 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Messages Applicable to TDC001
MGMSG_MOD_IDENTIFY
MGMSG_MOD_SET_CHANENABLESTATE
MGMSG_MOD_REQ_CHANENABLESTATE
MGMSG_MOD_GET_CHANENABLESTATE
MGMSG_HW_DISCONNECT
MGMSG_HW_RESPONSE
MGMSG_HW_RICHRESPONSE
MGMSG_HW_START_UPDATEMSGS
MGMSG_HW_STOP_UPDATEMSGS
MGMSG_HW_REQ_INFO
MGMSG_HW_GET_INFO
MGMSG_HUB_REQ_BAYUSED
MGMSG_HUB_GET_BAYUSED
MGMSG_MOT_SET_POSCOUNTER
MGMSG_MOT_REQ_POSCOUNTER
MGMSG_MOT_GET_POSCOUNTER
MGMSG_MOT_SET_ENCCOUNTER
MGMSG_MOT_REQ_ENCCOUNTER
MGMSG_MOT_GET_ENCCOUNTER
MGMSG_MOT_SET_VELPARAMS
MGMSG_MOT_REQ_VELPARAMS
MGMSG_MOT_GET_VELPARAMS
MGMSG_MOT_SET_JOGPARAMS
MGMSG_MOT_REQ_JOGPARAMS
MGMSG_MOT_GET_JOGPARAMS
MGMSG_MOT_SET_GENMOVEPARAMS
MGMSG_MOT_REQ_GENMOVEPARAMS
MGMSG_MOT_GET_GENMOVEPARAMS
MGMSG_MOT_SET_MOVERELPARAMS
MGMSG_MOT_REQ_MOVERELPARAMS
MGMSG_MOT_GET_MOVERELPARAMS
MGMSG_MOT_SET_MOVEABSPARAMS
MGMSG_MOT_REQ_MOVEABSPARAMS
MGMSG_MOT_GET_MOVEABSPARAMS
MGMSG_MOT_SET_HOMEPARAMS
MGMSG_MOT_REQ_HOMEPARAMS
MGMSG_MOT_GET_HOMEPARAMS
MGMSG_MOT_SET_LIMSWITCHPARAMS
MGMSG_MOT_REQ_LIMSWITCHPARAMS
MGMSG_MOT_GET_LIMSWITCHPARAMS
MGMSG_MOT_MOVE_HOME
MGMSG_MOT_MOVE_HOMED
MGMSG_MOT_MOVE_RELATIVE
MGMSG_MOT_MOVE_COMPLETED
MGMSG_MOT_MOVE_ABSOLUTE
MGMSG_MOT_MOVE_JOG
MGMSG_MOT_MOVE_VELOCITY
MGMSG_MOT_MOVE_STOP
MGMSG_MOT_MOVE_STOPPED
MGMSG_MOT_SET_DCPIDPARAMS
MGMSG_MOT_REQ_DCPIDPARAMS
MGMSG_MOT_GET_DCPIDPARAMS
MGMSG_MOT_SET_AVMODES
MGMSG_MOT_REQ_AVMODES
MGMSG_MOT_GET_AVMODES
0x0223
0x0210
0x0211
0x0212
0x0002
0x0080
0x0081
0x0011
0x0012
0x0005
0x0006
0x0065
0x0066
0x0410
0x0411
0x0412
0x0409
0x040A
0x040B
0x0413
0x0414
0x0415
0x0416
0x0417
0x0418
0x043A
0x043B
0x043C
0x0445
0x0446
0x0447
0x0450
0x0451
0x0452
0x0440
0x0441
0x0442
0x0423
0x0424
0x0425
0x0443
0x0444
0x0448
0x0464
0x0453
0x046A
0x0457
0x0465
0x0466
0x04A0
0x04A1
0x04A2
0x04B3
0x04B4
0x04B5
20
21
21
21
23
23
24
25
25
26
26
29
29
36
36
36
37
37
37
39
39
39
41
41
41
46
46
46
47
47
47
48
48
48
49
49
49
51
51
51
53
53
54
56
57
59
60
61
62
66
66
66
68
68
68
Page 249 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_MOT_SET_POTPARAMS
MGMSG_MOT_REQ_POTPARAMS
MGMSG_MOT_GET_POTPARAMS
MGMSG_MOT_SET_BUTTONPARAMS
MGMSG_MOT_REQ_BUTTONPARAMS
MGMSG_MOT_GET_BUTTONPARAMS
MGMSG_MOT_SET_EEPROMPARAMS
MGMSG_MOT_REQ_DCSTATUSUPDATE
MGMSG_MOT_GET_DCSTATUSUPDATE
MGMSG_MOT_ACK_DCSTATUSUPDATE
MGMSG_MOT_REQ_STATUSBITS
MGMSG_MOT_GET_STATUSBITS
MGMSG_MOT_SUSPEND_ENDOFMOVEMSGS
MGMSG_MOT_RESUME_ENDOFMOVEMSGS
Issue 15
0x04B0
0x04B1
0x04B2
0x04B6
0x04B7
0x04B8
0x04B9
0x0490
0x0491
0x0492
0x0429
0x042A
0x046B
0x046C
70
70
70
73
73
73
75
98
97
98
99
99
100
101
Page 250 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Messages Applicable to TSC001
MGMSG_MOD_IDENTIFY
MGMSG_MOD_SET_CHANENABLESTATE
MGMSG_MOD_REQ_CHANENABLESTATE
MGMSG_MOD_GET_CHANENABLESTATE
MGMSG_HW_DISCONNECT
MGMSG_HW_RESPONSE
MGMSG_HW_RICHRESPONSE
MGMSG_HW_START_UPDATEMSGS
MGMSG_HW_STOP_UPDATEMSGS
MGMSG_HW_REQ_INFO
MGMSG_HW_GET_INFO
MGMSG_HUB_REQ_BAYUSED
MGMSG_HUB_GET_BAYUSED
MGMSG_MOT_MOVE_COMPLETED
MGMSG_MOT_MOVE_ABSOLUTE
MGMSG_MOT_MOVE_STOP
MGMSG_MOT_SET_AVMODES
MGMSG_MOT_REQ_AVMODES
MGMSG_MOT_GET_AVMODES
MGMSG_MOT_SET_BUTTONPARAMS
MGMSG_MOT_REQ_BUTTONPARAMS
MGMSG_MOT_GET_BUTTONPARAMS
MGMSG_MOT_SET_EEPROMPARAMS:
MGMSG_MOT_GET_STATUSUPDATE
MGMSG_MOT_SET_SOL_OPERATINGMODE
MGMSG_MOT_REQ_SOL_OPERATINGMODE
MGMSG_MOT_GET_SOL_OPERATINGMODE
MGMSG_MOT_SET_SOL_CYCLEPARAMS
MGMSG_MOT_REQ_SOL_CYCLEPARAMS
MGMSG_MOT_GET_SOL_CYCLEPARAMS
MGMSG_MOT_SET_SOL_INTERLOCKMODE
MGMSG_MOT_REQ_SOL_INTERLOCKMODE
MGMSG_MOT_GET_SOL_INTERLOCKMODE
MGMSG_MOT_SET_SOL_STATE
MGMSG_MOT_REQ_SOL_STATE
MGMSG_MOT_GET_SOL_STATE
0x0223
0x0210
0x0211
0x0212
0x0002
0x0080
0x0081
0x0011
0x0012
0x0005
0x0006
0x0065
0x0066
0x0464
0x0453
0x0465
0x04B3
0x04B4
0x04B5
0x04B6
0x04B7
0x04B8
0x04B9
0x0481
0x04C0
0x04C1
0x04C2
0x04C3
0x04C4
0x04C5
0x04C6
0x04C7
0x04C8
0x04CB
0x04CC
0x04CD
20
21
21
21
23
23
24
25
25
26
26
29
29
56
57
61
68
68
68
73
73
73
75
94
111
111
111
113
113
113
115
115
115
117
117
117
Page 251 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Messages Applicable to TST001 and TST101
MGMSG_MOD_IDENTIFY
MGMSG_MOD_SET_CHANENABLESTATE
MGMSG_MOD_REQ_CHANENABLESTATE
MGMSG_MOD_GET_CHANENABLESTATE
MGMSG_HW_START_UPDATEMSGS
MGMSG_HW_STOP_UPDATEMSGS
MGMSG_HW_REQ_INFO
MGMSG_HW_GET_INFO
MGMSG_MOT_SET_POSCOUNTER
MGMSG_MOT_REQ_POSCOUNTER
MGMSG_MOT_GET_POSCOUNTER
MGMSG_MOT_SET_ENCCOUNTER
MGMSG_MOT_REQ_ENCCOUNTER
MGMSG_MOT_GET_ENCCOUNTER
MGMSG_MOT_SET_VELPARAMS
MGMSG_MOT_REQ_VELPARAMS
MGMSG_MOT_GET_VELPARAMS
MGMSG_MOT_SET_JOGPARAMS
MGMSG_MOT_REQ_JOGPARAMS
MGMSG_MOT_GET_JOGPARAMS
MGMSG_MOT_SET_POWERPARAMS
MGMSG_MOT_REQ_POWERPARAMS
MGMSG_MOT_GET_POWERPARAMS
MGMSG_MOT_SET_GENMOVEPARAMS
MGMSG_MOT_REQ_GENMOVEPARAMS
MGMSG_MOT_GET_GENMOVEPARAMS
MGMSG_MOT_SET_MOVERELPARAMS
MGMSG_MOT_REQ_MOVERELPARAMS
MGMSG_MOT_GET_MOVERELPARAMS
MGMSG_MOT_SET_MOVEABSPARAMS
MGMSG_MOT_REQ_MOVEABSPARAMS
MGMSG_MOT_GET_MOVEABSPARAMS
MGMSG_MOT_SET_HOMEPARAMS
MGMSG_MOT_REQ_HOMEPARAMS
MGMSG_MOT_GET_HOMEPARAMS
MGMSG_MOT_SET_LIMSWITCHPARAMS
MGMSG_MOT_REQ_LIMSWITCHPARAMS
MGMSG_MOT_GET_LIMSWITCHPARAMS
MGMSG_MOT_MOVE_HOME
MGMSG_MOT_MOVE_HOMED
MGMSG_MOT_MOVE_RELATIVE
MGMSG_MOT_MOVE_COMPLETED
MGMSG_MOT_MOVE_ABSOLUTE
MGMSG_MOT_MOVE_JOG
MGMSG_MOT_MOVE_VELOCITY
MGMSG_MOT_MOVE_STOP
MGMSG_MOT_MOVE_STOPPED
MGMSG_MOT_SET_AVMODES
MGMSG_MOT_REQ_AVMODES
MGMSG_MOT_GET_AVMODES
MGMSG_MOT_SET_POTPARAMS
MGMSG_MOT_REQ_POTPARAMS
MGMSG_MOT_GET_POTPARAMS
MGMSG_MOT_SET_BUTTONPARAMS
MGMSG_MOT_REQ_BUTTONPARAMS
0x0223
0x0210
0x0211
0x0212
0x0011
0x0012
0x0005
0x0006
0x0410
0x0411
0x0412
0x0409
0x040A
0x040B
0x0413
0x0414
0x0415
0x0416
0x0417
0x0418
0x0426
0x0427
0x0428
0x043A
0x043B
0x043C
0x0445
0x0446
0x0447
0x0450
0x0451
0x0452
0x0440
0x0441
0x0442
0x0423
0x0424
0x0425
0x0443
0x0444
0x0448
0x0464
0x0453
0x046A
0x0457
0x0465
0x0466
0x04B3
0x04B4
0x04B5
0x04B0
0x04B1
0x04B2
0x04B6
0x04B7
20
21
21
21
25
25
26
26
36
36
36
37
37
37
39
39
39
41
41
41
43
44
44
46
46
46
47
47
47
48
48
48
49
49
49
51
51
51
53
53
54
56
57
59
60
61
62
68
68
68
70
70
70
73
73
Page 252 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_MOT_GET_BUTTONPARAMS
MGMSG_MOT_SET_EEPROMPARAMS
MGMSG_MOT_REQ_STATUSBITS
MGMSG_MOT_GET_STATUSBITS
Issue 15
0x04B8
0x04B9
0x0429
0x042A
73
75
99
99
0x04FE
94
Messages Applicable to TST101
MGMSG_MOT_SET_TSTACTUATORTYPE
Page 253 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Messages Applicable to BSC10x and BSC20x
MGMSG_MOD_IDENTIFY
MGMSG_MOD_SET_CHANENABLESTATE
MGMSG_MOD_REQ_CHANENABLESTATE
MGMSG_MOD_GET_CHANENABLESTATE
MGMSG_HW_DISCONNECT
MGMSG_HW_RESPONSE
MGMSG_HW_RICHRESPONSE
MGMSG_HW_START_UPDATEMSGS
MGMSG_HW_STOP_UPDATEMSGS
MGMSG_HW_REQ_INFO
MGMSG_HW_GET_INFO
MGMSG_RACK_REQ_BAYUSED
MGMSG_RACK_GET_BAYUSED
MGMSG_MOD_SET_DIGOUTPUTS
MGMSG_MOD_REQ_DIGOUTPUTS
MGMSG_MOD_GET_DIGOUTPUTS
MGMSG_MOT_SET_POSCOUNTER
MGMSG_MOT_REQ_POSCOUNTER
MGMSG_MOT_GET_POSCOUNTER
MGMSG_MOT_SET_ENCCOUNTER
MGMSG_MOT_REQ_ENCCOUNTER
MGMSG_MOT_GET_ENCCOUNTER
MGMSG_MOT_SET_VELPARAMS
MGMSG_MOT_REQ_VELPARAMS
MGMSG_MOT_GET_VELPARAMS
MGMSG_MOT_SET_JOGPARAMS
MGMSG_MOT_REQ_JOGPARAMS
MGMSG_MOT_GET_JOGPARAMS
MGMSG_MOT_REQ_ADCINPUTS
MGMSG_MOT_GET_ADCINPUTS
MGMSG_MOT_SET_POWERPARAMS
MGMSG_MOT_REQ_POWERPARAMS
MGMSG_MOT_GET_POWERPARAMS
MGMSG_MOT_SET_GENMOVEPARAMS
MGMSG_MOT_REQ_GENMOVEPARAMS
MGMSG_MOT_GET_GENMOVEPARAMS
MGMSG_MOT_SET_MOVERELPARAMS
MGMSG_MOT_REQ_MOVERELPARAMS
MGMSG_MOT_GET_MOVERELPARAMS
MGMSG_MOT_SET_MOVEABSPARAMS
MGMSG_MOT_REQ_MOVEABSPARAMS
MGMSG_MOT_GET_MOVEABSPARAMS
MGMSG_MOT_SET_HOMEPARAMS
MGMSG_MOT_REQ_HOMEPARAMS
MGMSG_MOT_GET_HOMEPARAMS
MGMSG_MOT_SET_LIMSWITCHPARAMS
MGMSG_MOT_REQ_LIMSWITCHPARAMS
MGMSG_MOT_GET_LIMSWITCHPARAMS
MGMSG_MOT_MOVE_HOME
MGMSG_MOT_MOVE_HOMED
MGMSG_MOT_MOVE_RELATIVE
MGMSG_MOT_MOVE_COMPLETED
MGMSG_MOT_MOVE_ABSOLUTE
MGMSG_MOT_MOVE_JOG
MGMSG_MOT_MOVE_VELOCITY
0x0223
0x0210
0x0211
0x0212
0x0002
0x0080
0x0081
0x0011
0x0012
0x0005
0x0006
0x0060
0x0061
0x0213
0x0214
0x0215
0x0410
0x0411
0x0412
0x0409
0x040A
0x040B
0x0413
0x0414
0x0415
0x0416
0x0417
0x0418
0x042B
0x042C
0x0426
0x0427
0x0428
0x043A
0x043B
0x043C
0x0445
0x0446
0x0447
0x0450
0x0451
0x0452
0x0440
0x0441
0x0442
0x0423
0x0424
0x0425
0x0443
0x0444
0x0448
0x0464
0x0453
0x046A
0x0457
20
21
21
21
23
23
24
25
25
26
26
28
28
32
32
32
36
36
36
37
37
37
39
39
39
41
41
41
43
43
44
44
44
46
46
46
47
47
47
48
48
48
49
49
49
51
51
51
53
53
54
56
57
59
60
Page 254 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_MOT_MOVE_STOP
MGMSG_MOT_MOVE_STOPPED
MGMSG_MOT_SET_EEPROMPARAMS
MGMSG_MOT_GET_STATUSUPDATE
MGMSG_MOT_REQ_STATUSUPDATE
MGMSG_MOT_REQ_STATUSBITS
MGMSG_MOT_GET_STATUSBITS
MGMSG_MOT_SET_TRIGGER
MGMSG_MOT_REQ_TRIGGER
MGMSG_MOT_GET_TRIGGER
Issue 15
0x0465
0x0466
0x04B9
0x0481
0x0480
0x0429
0x042A
0x0500
0x0501
0x0502
61
62
75
94
96
99
99
102
102
102
Page 255 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Messages Applicable to LTS150 and LTS300
MGMSG_MOD_IDENTIFY
MGMSG_MOD_SET_CHANENABLESTATE
MGMSG_MOD_REQ_CHANENABLESTATE
MGMSG_MOD_GET_CHANENABLESTATE
MGMSG_HW_START_UPDATEMSGS
MGMSG_HW_STOP_UPDATEMSGS
MGMSG_HW_REQ_INFO
MGMSG_HW_GET_INFO
MGMSG_MOT_SET_POSCOUNTER
MGMSG_MOT_REQ_POSCOUNTER
MGMSG_MOT_GET_POSCOUNTER
MGMSG_MOT_SET_VELPARAMS
MGMSG_MOT_REQ_VELPARAMS
MGMSG_MOT_GET_VELPARAMS
MGMSG_MOT_SET_JOGPARAMS
MGMSG_MOT_REQ_JOGPARAMS
MGMSG_MOT_GET_JOGPARAMS
MGMSG_MOT_SET_GENMOVEPARAMS
MGMSG_MOT_REQ_GENMOVEPARAMS
MGMSG_MOT_GET_GENMOVEPARAMS
MGMSG_MOT_SET_MOVERELPARAMS
MGMSG_MOT_REQ_MOVERELPARAMS
MGMSG_MOT_GET_MOVERELPARAMS
MGMSG_MOT_SET_MOVEABSPARAMS
MGMSG_MOT_REQ_MOVEABSPARAMS
MGMSG_MOT_GET_MOVEABSPARAMS
MGMSG_MOT_SET_HOMEPARAMS
MGMSG_MOT_REQ_HOMEPARAMS
MGMSG_MOT_GET_HOMEPARAMS
MGMSG_MOT_SET_LIMSWITCHPARAMS
MGMSG_MOT_REQ_LIMSWITCHPARAMS
MGMSG_MOT_GET_LIMSWITCHPARAMS
MGMSG_MOT_MOVE_HOME
MGMSG_MOT_MOVE_HOMED
MGMSG_MOT_MOVE_RELATIVE
MGMSG_MOT_MOVE_COMPLETED
MGMSG_MOT_MOVE_ABSOLUTE
MGMSG_MOT_MOVE_JOG
MGMSG_MOT_MOVE_VELOCITY
MGMSG_MOT_MOVE_STOP
MGMSG_MOT_MOVE_STOPPED
MGMSG_MOT_SET_BOWINDEX
MGMSG_MOT_REQ_BOWINDEX
MGMSG_MOT_GET_BOWINDEX
MGMSG_MOT_SET_EEPROMPARAMS
MGMSG_MOT_GET_STATUSUPDATE
MGMSG_MOT_REQ_STATUSUPDATE
MGMSG_MOT_REQ_STATUSBITS
MGMSG_MOT_GET_STATUSBITS
0x0223
0x0210
0x0211
0x0212
0x0011
0x0012
0x0005
0x0006
0x0410
0x0411
0x0412
0x0413
0x0414
0x0415
0x0416
0x0417
0x0418
0x043A
0x043B
0x043C
0x0445
0x0446
0x0447
0x0450
0x0451
0x0452
0x0440
0x0441
0x0442
0x0423
0x0424
0x0425
0x0443
0x0444
0x0448
0x0464
0x0453
0x046A
0x0457
0x0465
0x0466
0x0450
0x0451
0x0452
0x04B9
0x0481
0x0480
0x0429
0x042A
20
21
21
21
25
25
26
26
36
36
36
39
39
39
41
41
41
46
46
46
47
47
47
48
48
48
49
49
49
51
51
51
53
53
54
56
57
59
60
61
62
63
63
63
75
94
96
99
99
Page 256 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Messages Applicable to MLJ050
MGMSG_MOD_IDENTIFY
MGMSG_MOD_SET_CHANENABLESTATE
MGMSG_HW_START_UPDATEMSGS
MGMSG_HW_STOP_UPDATEMSGS
MGMSG_HW_REQ_INFO
MGMSG_HW_GET_INFO
MGMSG_MOT_SET_POSCOUNTER
MGMSG_MOT_REQ_POSCOUNTER
MGMSG_MOT_GET_POSCOUNTER
MGMSG_MOT_SET_VELPARAMS
MGMSG_MOT_REQ_VELPARAMS
MGMSG_MOT_GET_VELPARAMS
MGMSG_MOT_SET_JOGPARAMS
MGMSG_MOT_REQ_JOGPARAMS
MGMSG_MOT_GET_JOGPARAMS
MGMSG_MOT_SET_GENMOVEPARAMS
MGMSG_MOT_REQ_GENMOVEPARAMS
MGMSG_MOT_GET_GENMOVEPARAMS
MGMSG_MOT_SET_MOVERELPARAMS
MGMSG_MOT_REQ_MOVERELPARAMS
MGMSG_MOT_GET_MOVERELPARAMS
MGMSG_MOT_SET_MOVEABSPARAMS
MGMSG_MOT_REQ_MOVEABSPARAMS
MGMSG_MOT_GET_MOVEABSPARAMS
MGMSG_MOT_SET_HOMEPARAMS
MGMSG_MOT_REQ_HOMEPARAMS
MGMSG_MOT_GET_HOMEPARAMS
MGMSG_MOT_SET_LIMSWITCHPARAMS
MGMSG_MOT_REQ_LIMSWITCHPARAMS
MGMSG_MOT_GET_LIMSWITCHPARAMS
MGMSG_MOT_MOVE_HOME
MGMSG_MOT_MOVE_HOMED
MGMSG_MOT_MOVE_RELATIVE
MGMSG_MOT_MOVE_COMPLETED
MGMSG_MOT_MOVE_ABSOLUTE
MGMSG_MOT_MOVE_JOG
MGMSG_MOT_MOVE_VELOCITY
MGMSG_MOT_MOVE_STOP
MGMSG_MOT_MOVE_STOPPED
MGMSG_MOT_SET_BOWINDEX
MGMSG_MOT_REQ_BOWINDEX
MGMSG_MOT_GET_BOWINDEX
MGMSG_MOT_SET_EEPROMPARAMS
MGMSG_MOT_GET_STATUSUPDATE
MGMSG_MOT_REQ_STATUSUPDATE
MGMSG_MOT_REQ_STATUSBITS
MGMSG_MOT_GET_STATUSBITS
0x0223
0x0210
0x0011
0x0012
0x0005
0x0006
0x0410
0x0411
0x0412
0x0413
0x0414
0x0415
0x0416
0x0417
0x0418
0x043A
0x043B
0x043C
0x0445
0x0446
0x0447
0x0450
0x0451
0x0452
0x0440
0x0441
0x0442
0x0423
0x0424
0x0425
0x0443
0x0444
0x0448
0x0464
0x0453
0x046A
0x0457
0x0465
0x0466
0x0450
0x0451
0x0452
0x04B9
0x0481
0x0480
0x0429
0x042A
20
21
25
25
26
26
36
36
36
39
39
39
41
41
41
46
46
46
47
47
47
48
48
48
49
49
49
51
51
51
53
53
54
56
57
59
60
61
62
63
63
63
75
94
96
99
99
Page 257 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Messages Applicable to MFF101 and MFF102
MGMSG_MOD_IDENTIFY
MGMSG_HW_START_UPDATEMSGS
MGMSG_HW_STOP_UPDATEMSGS
MGMSG_HW_REQ_INFO
MGMSG_HW_GET_INFO
MGMSG_MOT_MOVE_JOG
MGMSG_MOT_SET_EEPROMPARAMS
MGMSG_MOT_REQ_STATUSBITS
MGMSG_MOT_GET_STATUSBITS
MGMSG_MOT_SET_MFF_OPERPARAMS
MGMSG_MOT_REQ_MFF_OPERPARAMS
MGMSG_MOT_GET_MFF_OPERPARAMS
0x0223
0x0011
0x0012
0x0005
0x0006
0x046A
0x04B9
0x0429
0x042A
0x0510
0x0511
0x0512
20
25
25
26
26
59
75
99
99
106
106
106
Page 258 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Messages Applicable to BBD10x, BBD20x and TBD001
MGMSG_MOD_IDENTIFY
MGMSG_MOD_SET_CHANENABLESTATE
MGMSG_MOD_REQ_CHANENABLESTATE
MGMSG_MOD_GET_CHANENABLESTATE
MGMSG_HW_DISCONNECT
MGMSG_HW_RESPONSE
MGMSG_HW_RICHRESPONSE
MGMSG_HW_START_UPDATEMSGS
MGMSG_HW_STOP_UPDATEMSGS
MGMSG_HW_REQ_INFO
MGMSG_HW_GET_INFO
MGMSG_RACK_REQ_BAYUSED
MGMSG_RACK_GET_BAYUSED
MGMSG_MOD_SET_DIGOUTPUTS
MGMSG_MOD_REQ_DIGOUTPUTS
MGMSG_MOD_GET_DIGOUTPUTS
MGMSG_MOT_SET_POSCOUNTER
MGMSG_MOT_REQ_POSCOUNTER
MGMSG_MOT_GET_POSCOUNTER
MGMSG_MOT_SET_ENCCOUNTER
MGMSG_MOT_REQ_ENCCOUNTER
MGMSG_MOT_GET_ENCCOUNTER
MGMSG_MOT_SET_VELPARAMS
MGMSG_MOT_REQ_VELPARAMS
MGMSG_MOT_GET_VELPARAMS
MGMSG_MOT_SET_JOGPARAMS
MGMSG_MOT_REQ_JOGPARAMS
MGMSG_MOT_GET_JOGPARAMS
MGMSG_MOT_SET_GENMOVEPARAMS
MGMSG_MOT_REQ_GENMOVEPARAMS
MGMSG_MOT_GET_GENMOVEPARAMS
MGMSG_MOT_SET_MOVERELPARAMS
MGMSG_MOT_REQ_MOVERELPARAMS
MGMSG_MOT_GET_MOVERELPARAMS
MGMSG_MOT_SET_MOVEABSPARAMS
MGMSG_MOT_REQ_MOVEABSPARAMS
MGMSG_MOT_GET_MOVEABSPARAMS
MGMSG_MOT_SET_HOMEPARAMS
MGMSG_MOT_REQ_HOMEPARAMS
MGMSG_MOT_GET_HOMEPARAMS
MGMSG_MOT_SET_LIMSWITCHPARAMS
MGMSG_MOT_REQ_LIMSWITCHPARAMS
MGMSG_MOT_GET_LIMSWITCHPARAMS
MGMSG_MOT_MOVE_HOME
MGMSG_MOT_MOVE_HOMED
MGMSG_MOT_MOVE_RELATIVE
MGMSG_MOT_MOVE_COMPLETED
MGMSG_MOT_MOVE_ABSOLUTE
MGMSG_MOT_MOVE_JOG
MGMSG_MOT_MOVE_VELOCITY
MGMSG_MOT_MOVE_STOP
MGMSG_MOT_MOVE_STOPPED
MGMSG_MOT_SET_EEPROMPARAMS
0x0223
0x0210
0x0211
0x0212
0x0002
0x0080
0x0081
0x0011
0x0012
0x0005
0x0006
0x0060
0x0061
0x0213
0x0214
0x0215
0x0410
0x0411
0x0412
0x0409
0x040A
0x040B
0x0413
0x0414
0x0415
0x0416
0x0417
0x0418
0x043A
0x043B
0x043C
0x0445
0x0446
0x0447
0x0450
0x0451
0x0452
0x0440
0x0441
0x0442
0x0423
0x0424
0x0425
0x0443
0x0444
0x0448
0x0464
0x0453
0x046A
0x0457
0x0465
0x0466
0x04B9
20
21
21
21
23
23
24
25
25
26
26
28
28
32
32
32
36
36
36
37
37
37
39
39
39
41
41
41
46
46
46
47
47
47
48
48
48
49
49
49
51
51
51
53
53
54
56
57
59
60
61
62
75
Page 259 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_MOT_SET_PMDPOSITIONLOOPPARAMS
MGMSG_MOT_REQ_PMDPOSITIONLOOPPARAMS
MGMSG_MOT_GET_PMDPOSITIONLOOPPARAMS
MGMSG_MOT_SET_PMDMOTOROUTPUTPARAMS
MGMSG_MOT_REQ_PMDMOTOROUTPUTPARAMS
MGMSG_MOT_GET_PMDMOTOROUTPUTPARAMS
MGMSG_MOT_SET_PMDTRACKSETTLEPARAMS
MGMSG_MOT_REQ_PMDTRACKSETTLEPARAMS
MGMSG_MOT_GET_PMDTRACKSETTLEPARAMS
MGMSG_MOT_SET_PMDPROFILEMODEPARAMS
MGMSG_MOT_REQ_PMDPROFILEMODEPARAMS
MGMSG_MOT_GET_PMDPROFILEMODEPARAMS
MGMSG_MOT_SET_PMDJOYSTICKPPARAMS
MGMSG_MOT_REQ_PMDJOYSTICKPPARAMS
MGMSG_MOT_GET_PMDJOYSTICKPPARAMS
MGMSG_MOT_SET_PMDCURRENTLOOPPARAMS
MGMSG_MOT_REQ_PMDCURRENTLOOPPARAMS
MGMSG_MOT_GET_PMDCURRENTLOOPPARAMS
MGMSG_MOT_SET_PMDSETTLEDCURRENTLOOPPARAMS
MGMSG_MOT_REQ_PMDSETTLEDCURRENTLOOPPARAMS
MGMSG_MOT_GET_PMDSETTLEDCURRENTLOOPPARAMS
MGMSG_MOT_SET_PMDSTAGEAXISPARAMS
MGMSG_MOT_REQ_PMDSTAGEAXISPARAMS
MGMSG_MOT_GET_PMDSTAGEAXISPARAMS
MGMSG_MOT_GET_DCSTATUSUPDATE
MGMSG_MOT_REQ_DCSTATUSUPDATE
MGMSG_MOT_ACK_DCSTATUSUPDATE
MGMSG_MOT_REQ_STATUSBITS
MGMSG_MOT_SUSPEND_ENDOFMOVEMSGS
MGMSG_MOT_RESUME_ENDOFMOVEMSGS
MGMSG_MOT_SET_TRIGGER
MGMSG_MOT_REQ_TRIGGER
MGMSG_MOT_GET_TRIGGER
Issue 15
0x04D7
0x04D8
0x04D9
0x04DA
0x04DB
0x04DC
0x04E0
0x04E1
0x04E2
0x04E3
0x04E4
0x04E5
0x04E6
0x04E7
0x04E8
0x04D4
0x04D5
0x04D6
0x04E9
0x04EA
0x04EB
0x04F0
0x04F1
0x04F2
0x0491
0x0490
0x0492
0x0429
0x046B
0x046C
0x0500
0x0501
0x0502
76
76
76
79
79
79
81
81
81
84
84
84
86
86
86
88
88
88
90
90
90
92
92
92
97
98
98
99
100
101
102
102
102
Page 260 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Messages Applicable to BNT001, MNA601 and TNA001
MGMSG_MOD_IDENTIFY
MGMSG_HW_DISCONNECT
MGMSG_HW_RESPONSE
MGMSG_HW_RICHRESPONSE
MGMSG_HW_START_UPDATEMSGS
MGMSG_HW_STOP_UPDATEMSGS
MGMSG_HW_REQ_INFO
MGMSG_HW_GET_INFO
MGMSG_HUB_REQ_BAYUSED
MGMSG_HUB_GET_BAYUSED
MGMSG_PZ_SET_NTMODE
MGMSG_PZ_REQ_NTMODE
MGMSG_PZ_GET_NTMODE
MGMSG_PZ_SET_NTTRACKTHRESHOLD
MGMSG_PZ_REQ_NTTRACKTHRESHOLD
MGMSG_PZ_GET_NTTRACKTHRESHOLD
MGMSG_PZ_SET_NTCIRCHOMEPOS
MGMSG_PZ_REQ_NTCIRCHOMEPOS
MGMSG_PZ_GET_NTCIRCHOMEPOS
MGMSG_PZ_MOVE_NTCIRCTOHOMEPOS
MGMSG_PZ_REQ_NTCIRCCENTREPOS
MGMSG_PZ_GET_NTCIRCCENTREPOS
MGMSG_PZ_SET_NTCIRCPARAMS
MGMSG_PZ_REQ_NTCIRCPARAMS
MGMSG_PZ_GET_NTCIRCPARAMS
MGMSG_PZ_SET_NTCIRCDIA
MGMSG_PZ_SET_NTCIRCDIALUT
MGMSG_PZ_REQ_NTCIRCDIALUT
MGMSG_PZ_GET_NTCIRCDIALUT
MGMSG_PZ_SET_NTPHASECOMPPARAMS
MGMSG_PZ_REQ_NTPHASECOMPPARAMS
MGMSG_PZ_GET_NTPHASECOMPPARAMS
MGMSG_PZ_SET_NTTIARANGEPARAMS
MGMSG_PZ_REQ_NTTIARANGEPARAMS
MGMSG_PZ_GET_NTTIARANGEPARAMS
MGMSG_PZ_SET_NTGAINPARAMS
MGMSG_PZ_REQ_NTGAINPARAMS
MGMSG_PZ_GET_NTGAINPARAMS
MGMSG_PZ_SET_NTTIALPFILTERPARAMS
MGMSG_PZ_REQ_NTTIALPFILTERPARAMS
MGMSG_PZ_GET_NTTIALPFILTERPARAMS
MGMSG_PZ_REQ_NTTIAREADING
MGMSG_PZ_GET_NTTIAREADING
MGMSG_PZ_SET_NTFEEDBACKSRC
MGMSG_PZ_REQ_NTFEEDBACKSRC
MGMSG_PZ_GET_NTFEEDBACKSRC
MGMSG_PZ_REQ_NTSTATUSBITS
MGMSG_PZ_GET_NTSTATUSBITS
MGMSG_PZ_REQ_NTSTATUSUPDATE
MGMSG_PZ_GET_NTSTATUSUPDATE
MGMSG_PZ_ACK_NTSTATUSUPDATE
MGMSG_NT_SET_EEPROMPARAMS
MGMSG_NT_SET_TNA_DISPSETTINGS
MGMSG_NT_REQ_TNA_DISPSETTINGS
MGMSG_NT_GET_TNA_DISPSETTINGS
0x0223
0x0002
0x0080
0x0081
0x0011
0x0012
0x0005
0x0006
0x0065
0x0066
0x0603
0x0604
0x0605
0x0606
0x0607
0x0608
0x0609
0x0610
0x0611
0x0612
0x0613
0x0614
0x0618
0x0619
0x0620
0x061A
0x0621
0x0622
0x0623
0x0626
0x0627
0x0628
0x0630
0x0631
0x0632
0x0633
0x0634
0x0635
0x0636
0x0637
0x0638
0x0639
0x063A
0x063B
0x063C
0x063D
0x063E
0x063F
0x0664
0x0665
0x0666
0x07E7
0x07E8
0x07E9
0x07EA
20
23
23
24
25
25
26
26
29
29
157
158
158
159
159
159
160
160
160
161
162
162
164
164
164
167
168
168
168
170
170
170
172
172
172
175
175
175
176
176
176
178
178
180
180
180
182
182
184
184
188
189
190
190
190
Page 261 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_NT_SET_TNA_IOSETTINGS
MGMSG_NT_REQ_TNA_IOSETTINGS
MGMSG_NT_GET_TNA_IOSETTINGS
Issue 15
0x07EB
0x07EC
0x07ED
191
191
191
Page 262 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Messages Applicable to TLS001
MGMSG_MOD_IDENTIFY
MGMSG_HW_DISCONNECT
MGMSG_HW_START_UPDATEMSGS
MGMSG_HW_STOP_UPDATEMSGS
MGMSG_HW_REQ_INFO
MGMSG_HW_GET_INFO
MGMSG_LA_SET_PARAMS
MGMSG_LA_REQ_PARAMS
MGMSG_LA_GET_PARAMS
MGMSG_LA_ENABLEOUTPUT
MGMSG_LA_DISABLEOUTPUT
MGMSG_LA_SET_EEPROMPARAMS
MGMSG_LA_REQ_STATUSUPDATE
MGMSG_LA_GET_STATUSUPDATE
MGMSG_LA_ACK_STATUSUPDATE
0x0223
0x0002
0x0011
0x0012
0x0005
0x0006
0x0800
0x0801
0x0802
0x0811
0x0812
0x0810
0x0820
0x0821
0x0822
20
23
25
25
26
26
194
194
194
202
202
201
203
203
205
Page 263 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
Issue 15
Messages Applicable to TQD001 and TPA101
MGMSG_MOD_IDENTIFY
MGMSG_HW_DISCONNECT
MGMSG_HW_START_UPDATEMSGS
MGMSG_HW_STOP_UPDATEMSGS
MGMSG_HW_REQ_INFO
MGMSG_HW_GET_INFO
MGMSG_QUAD_SET_PARAMS
MGMSG_QUAD_REQ_PARAMS
MGMSG_QUAD_GET_PARAMS
0x0223
0x0002
0x0011
0x0012
0x0005
0x0006
0x0870
0x0871
0x0872
20
23
25
25
26
26
207
207
207
0x0880
0x0881
0x0875
220
224
226
0x0882
224
0x0223
0x0002
0x0011
0x0012
0x0005
0x0006
0x0840
0x0841
0x0842
20
23
25
25
26
26
228
228
228
QUAD_PARAM Sub-Messages
Set/Request/Get Quad_LoopParams (sub-message ID = 01)
Request/Get Quad_Readings (sub-message ID = 03)
Set/Request/Get Quad Position Demand Params (sub-message ID = 05)
Set/Request/Get Quad Operating Mode (sub-message ID = 07)
Request/Get Quad Status Bits (sub-message ID = 09)
Set/Request/Get Quad Display Settings (sub-message ID = 0B)
Set/Request/Get Quad Position Demand Outputs (sub-message ID = 0D)
MGMSG_QUAD_REQ_STATUSUPDATE
MGMSG_ QUAD_GET_STATUSUPDATE
MGMSG_QUAD_SET_EEPROMPARAMS
Messages Applicable to TPA101 Only
QUAD_PARAM Sub-Messages
Set/Request/Get Quad_LoopParams2 (sub-message ID = 0E)
MGMSG_QUAD_ACK_STATUSUPDATE
Messages Applicable to TTC001
MGMSG_MOD_IDENTIFY
MGMSG_HW_DISCONNECT
MGMSG_HW_START_UPDATEMSGS
MGMSG_HW_STOP_UPDATEMSGS
MGMSG_HW_REQ_INFO
MGMSG_HW_GET_INFO
MGMSG_TEC_SET_PARAMS
MGMSG_TEC_REQ_PARAMS
MGMSG_TEC_GET_PARAMS
TEC_PARAM Sub-Messages
Set/Request/Get TEC_TempSetPoint (sub-message ID = 01)
Request/Get_TEC_Readings (sub-message ID = 03)
Set/Request/Get_IOSettings (sub-message ID = 05)
Request/Get_TEC_StatusBits (sub-message ID = 07)
Set/Request/Get_TEC_LoopParams (sub-message ID = 09)
Set/Request/Get TEC_Disp_Settings (sub-message ID = 0B)
Page 264 of 265
Thorlabs APT Controllers
Host-Controller Communications Protocol
MGMSG_TEC_SET_EEPROMPARAMS
MGMSG_TEC_REQ_STATUSUPDATE
MGMSG_TEC_ACK_STATUSUPDATE
Issue 15
0x0850
0x0860
0x0862
239
240
241
Page 265 of 265