mnl100 Interface Manual
mnl100 Interface Manual
MNL 100
released 01.07.2009
November 2018
content 1
3.3.3 Laser Operating Parameters 32
3.3.3.1 SetFrequency (1017H) 32
3.3.3.2 SetQuantity (1018H) 32
3.3.3.3 IncHV (1033H) 33
3.3.3.4 DecHV (1034H) 33
3.3.3.5 SetHV (1035H) 33
3.3.3.6 Energy_Calwindow (1039H) (optional) 34
3.3.3.7 ResetPemError (1032H) (optional) 34
3.3.3.8 OpenShutter (103CH) (optional) 35
3.3.3.9 CloseShutter (103DH) (optional) 35
3.3.3.10 AttenuatorInit (1855H) (optional) 36
3.3.3.11 AttenuatorSetRatio (1851H) (optional) 36
3.3.3.12 AttenuatorSetEnergy (1852H) (optional) 36
3.3.3.13 AttenuatorSetPos (1850H) (optional) 37
3.4 Messages 38
content 2
1 Interface description for MNL 100 lasers
This manual gives an overview about the two possibilities for using an interface to
integrate the laser into other computer-run systems.
One possibility is to use the interface software DLL for Windows and the other one is
the use of the serial bus protocol of the laser's internal controller.
The software is also used for different types of lasers (MSG, MINEX, LTX, OPTEX,
MNL). Therefore, there are functions, which just refer to a certain laser type (and
don’t make sense in your application)
SA : Source-Address (1 byte)
The Source-Address SA characterises the address of the communication partner
from whom the data is sent (e.g. PC). The Source-Address can assume a value
between 20H and 0FFH. For the operation of a single laser a value of ’@’ or 40H is
designated.
EC : Endcharacter (1 byte)
The Endcharacter characterises the end of a telegram.
Its value is a ’CR’ or 0DH.
EC
’(cr)’ HEX:(0DH)
ACK is transmitted in reply to the Request telegram, when there are no further data
requests. Its value is 0DH (CR).
The Error telegram is sent as a reply, if the Request telegram is recognised as being
faulty or if the laser determines that at present it cannot carry out the programmed
function correctly.
e.g.: Set ’REPETITION ON’ during laser is off
After receiving a telegram, the telegram will be checked and forwarded for execution
or an error telegram will be sent. The response telegram is sent back after max. five
milliseconds.
RS232 Timing
max. 5 ms
new command
PC => Laser
Laser => PC EC
In principle, it is possible to send multiple telegrams successively, but there is the risk
that the transmitter queue overflows, especially in the case of using the
"GetEnergyValues" command. In this case, no further command will be processed
until a minimal space in the queue becomes available.
It therefore makes more sense to send a new telegram only, if the return (End-
character) of a preceding command has been received.
If there is no communication between the laser and the computer for more than 30
seconds, the laser will be switched into the standby mode.
Note: It is important to pay special attention to the capital letters when using the
commands.
These commands are answered by a Reply telegram. They serve to determine the
laser status and can also be transmitted in Off line. The Request telegram only has
one byte (command byte) in the Request-Data-Unit (RDU). The Destination Address
(DA) of the Reply telegram is filled with that of the sender from the Request
telegram. Correspondingly the DA of the Request telegram can be found in the
Source Address (SA) of the Reply telegram. In the Reply telegram, the first character
in the Response-Data-Unit (RSU) is the command byte. On reception, this enables
the simple identification of the individual messages. The incorrect receipt of a
Request telegram is registered with an Error telegram.
2.1.2.1 GetShortStatus
(since Version 2.58)
RDU = ’W’
Reply:
RSU = Waa
aa - StatusFlagbyte :
RDU = ’UT’
Reply:
RSU = UTaabbooeeeeffiimmzz
e.g.:
HEX: 0x23,0x21,0x40,0x55,0x54,0x32,0x44,0x0D
ASCII: #!@UT2D(CR)
an answer from Laser could be:
<@!UT040003000A14320000000088 (CR)
2.1.2.3 GetStat 8
RDU = ’UU’
Reply:
RSU = UUppqqgghhnnkkkkxxxxyyyyyyyy
e.g.:
HEX: 0x23,0x21,0x40,0x55,0x55,0x32,0x45,0x0D
ASCII: #!@UU2E(CR)
an answer from Laser could be:
<@!UU0000002222000000000001154C4D (CR)
aa - Flagbyte1:
bb - Flagbyte 2:
oo - Flagbyte 3:
qq - Flagbyte 5:
RDU = ’V3’
Reply:
RSU = Vuuvvääööwwwwwwwwnnüü….üüü
GETVER
( older command, use GETVER3 instead )
GETVER2
( older command, use GETVER3 instead )
GETVERTXT
( older command, use GETVER3 instead )
vv - Release byte:
ää type 1
The bus protocol 14
Bit Name Meaning
2/1/0 Pressure unused
measuring range
5/4/3 Energy 000 - Energy[mJ]=kkkk/10*2
measuring range 001 - Energy[mJ]=kkkk/10
100 - Energy[µJ]=kkkk / 64000 * 250 (MNL100)
101 - Energy[µJ]=kkkk / 64000 * 500
6/7 Not in use
öö type 2
2.1.2.6 GetSernum
RDU = ’US’
Reply:
RSU = USxxxxxxxxyyyy
Reply:
RSU = UVaabbbbccccdd
aa Steppermode
bit0 – Stepper is initialized
bit1 – Stepper is in InitMode
bit2 – higher current level is active
bit7 – Stepper error ( index not found)
bbbb set point of stepper position
cccc actual stepper position
dd actual transmission in % = dd / 2
the output energy can be calculated with the attenuation
and the energy value from GESTAT8
e.g.:
HEX: 0x23,0x21,0x40,0x55,0x56,0x32,0x46,0x0D
ASCII: #!@UV2F(CR)
an answer from Laser could be:
<@!UV0100000000018A(CR)
2.1.2.8 GetEnergyValues
(since Version 2.58)
RDU = ’P’
Reply:
RSU = Paannxxxxyyyy….zzzz
The last measured Energy values are held in a FIFO - buffer with a size for 100
values. The buffer can be read out with this command. After read out, the read
values will be removed from buffer. If the buffer is full, the oldest values will be
overwritten. Not more than 35 values will be sent in one telegram. To prevent any
loss of measured values, the buffer must be read cyclically. The parameter ‘aa’ can
be used to calculate the exact point of time for measuring the first transferred value.
This chapter gives some fundamental information about the interface software.
The MNL laser is controlled through an internal controller. An external controller (e.g.
system controller, PC, Laptop or Notebook) is used for the input of instructions and
the display of messages, values and operating states. The external controller and the
internal controller communicate via the serial interface. More information about the
communication between the external and internal controller are given in the bus
protocol description. The interface software is used to create laser control programs
(application programs) for a PC. It is stored on the PC and works between the
application program and the serial interface to the MNL laser device. The interface
software controls the communication via the interface. It checks the current laser
state and provides this information on a certain storage area on the PC. Application
programs, which communicate with the interface software, are able to retrieve the
information and to send commands to the interface software. This user commands
are translated into laser control commands and sent to the laser device via the serial
interface.
MESSAGE
MESSAGE LASER
App 32 (1) RS232
CALL Laser
EXCIMER32.EXE
EXCIM32.DLL firmware
CALL 32bit
CALL
App 32 (n)
shared memory
MESSAGE MESSAGE
App 64 (1)
CALL
EXCIM64.DLL
App 64 (n) CALL PC
Using the interface software DLL, there are six call functions available:
– function registerapplication(han:thandle):longint;
– function releasedll(han:thandle):longint;
– function getmessagenumber:word;
– function getstatuspointer:pointer;
– function putcommand(prec:pointer):longint;
Every application, which wants to communicate with the DLL, has to register with the
DLL. Messages will only be sent to registered applications. The first ever call from
Registerapplication automatically loads the EXCIMER32.EXE program into the
memory. The communication with the laser device via the serial interface is able to
begin.
When calling the function, the application Handle must be given to the DLL. The DLL
then transmits the individual messages to this Handle in future.
THANDLE is a 32 bit value for the 32 bit DLL and a 64 bit value for the 64 bit DLL. In
reply, the function returns a 32 bit value. If the function was successful, the value is
0. Otherwise, one of the error codes indicated below is returned:
3.2.2 Releasedll
Using this function, an application is released from the DLL. When calling this
function, the registered Handle (see above) has to be entered. After this call, no
more messages will be sent to the Handle.
If there are no more registered applications, the EXCIMER.EXE program will be
erased automatically from the memory.
THANDLE is a 32 bit value for the 32 bit DLL and a 64 bit value for the 64 bit DLL. In
reply, the function returns a 32 bit value. If the function was successful, the value is
0. Otherwise, one of the error codes indicated below is returned:
This function designates the type of a message sent from the DLL to the
applications, as a 32 bit value. The number is valid for the total duration of the
session, i.e. until the EXCIMER32.EXE program is closed.
3.2.4 Getstatuspointer
This function returns a 32 bit or 64 bit pointer to the STATUS data structure
(Tstatusrec). This data structure is only readable. The pointer is valid for the total
duration of the application.
In the excimxx- DLL, every application is using its own copy of the data structure
(local memory). These local data structures are only updated when calling the
Getstatuspointer function. In that way, parallel data access can be synchronized.
Sequence, set up and contents of the data structure (Tstatusrec) are described
below. The data structure is a packed structure. „packed“ means that the fields in the
structure are not aligned on word or double-word boundaries.
The field excimer (TExcimerStatus) contains the data to characterize the laser device
status. This structure was used in prior laser versions. It can be used for MNL100-
laser, but is impractical. For MNL100, it is recommended to use the LaserStatus2
– structure. The Pointer paf_LaserStatus2 points to this structure. Both structures
are described on the next pages.
The ExcimerStatus and LaserStatus2 can only be used, if anzapp32 >1. A value
of 0 or 1 for anzapp32 can occur, if the initialization of excimer.exe is not finished at
the program start.
Data types:
Using this function, a command is transmitted to the DLL and added to their queue.
The DLL then sends a message to the EXCIMER.EXE program. This clears the DLL
command queue and adds the commands to the EXCIMER command queue. The
calling application will be informed of this with an event_command_queued-
message.
From the EXCIMER queue, the commands are transferred to the COM-interface
driver and finally transmitted to the laser device. If a command cannot be transmitted
an event_error_command_fail-message will be sent to the calling application. (e.g.
transmission of a „Watchmode“ command without preceding “LASOn” command).
The laser device acknowledges every command either with an OK or error. This
message (event_Rx_OK-message or event_Rx_Error-message) is sent to the calling
application too.
The queue can receive up to 100 commands. When the filling level
(STATUS.QUEUEFILL) reaches 80, no further commands are accepted and an
event_error_command_queue message will be sent to the calling application
instead. Commands that are not to be transmitted to the laser (system commands)
are not added to the queue. These commands are carried out immediately and an
event_syscommand_OK-message to the calling application confirms its effect.
In reply, the Putcommand function returns a 32 bit value. If the function was
successful, the value is 0. Otherwise, one of the error codes indicated below is
returned:
Together with the Putcommand function, a 32 bit pointer, which points to command
message structure (see below) is to be transferred to the DLL:
with:
with:
Attention: in 64 bit applications the ApId-parameter is only 32 bit long. Use the
truncated 32 bit value of the 64 bit application handle instead !
The following commands (commandIDs) can be sent to the DLL using the
PutCommand function:
CommandID hex-digits
excom_Set_comport $1000
excom_LASER_ON $1012
excom_LASER_OFF $1013
excom_BURST $1014
excom_REPETITION $1015
excom_EXTTRIG $1022
excom_OFF $1016
excom_SetFrequency $1017
excom_SetQuantity $1018
excom_INC_HV $1033
excom_DEC_HV $1034
excom_SET_HV $1035
excom_RESET_PEM_ERROR $1032
excom_Energy_Calwindow $1039
excom_CloseShutter $103D
excom_OpenShutter $103C
excom_AttenuatorInit $1855
excom_AttenuatorSetRatio $1851
excom_AttenuatorSetEnergy $1852
excom_AttenuatorSetPos $1850
Commands are sent to the DLL using the function Putcommand described above.
This command selects the COM-port for the communication with the laser device. In
response, two messages (both event_set_comport and event_get_system_status)
will be sent to all registered applications. The EXCIMER.INI file pre-sets the COM-
port.
The current COM-port is shown with STATUS.EXCIMER.COMPORT. The command
message structure is shown below:
This command switches the HV power supply of the laser device on, to enable laser
operation and set in Stand by.
If the laser is ready for operation, the command will be transmitted to the laser. After
transmitting this command, the laser device is unable to receive any command for 5
sec.
This command switches the HV power supply of the laser device off and therefore
laser operation.
This command starts laser operation in Burst mode with a preset pulse number
(QUANTITY) and frequency (repetition rate). It is added to the command queue.
Only if the HV power supply is switched on, the command will be transmitted to the
laser.
This command starts laser operation in the Repetition mode with a preset frequency
(repetition rate).
Only if the HV power supply is switched on, the command will be transmitted to the
laser.
This command starts laser operation in External Trigger mode. In this mode, laser
pulses are emitted in accordance with signals received from an external trigger
generator via the optical trigger gate.
Only if the HV power supply is switched on, the command will be transmitted to the
laser.
This command disables the HV power supply to interrupt laser operation in Burst,
Repetition or External Trigger mode (STOP). The command message structure is
shown below:
This command enters the repetition rate for laser operation. Only values of up to the
maximum repetition rate are accepted.
This command enters the Quantity value (max. 65,000 pulses). In Burst mode, this
set number of laser pulses will be emitted.
Every generated laser pulse is registered and the counter will count down to zero.
The counter is decremented with each laser pulse.
This command resets an energy measuring error. An energy measuring error occurs
when no laser pulse is detected by the energy monitor after triggering. An energy
measuring error is always indicated when the internal energy monitor has been
removed or disconnected.
This command starts the initialization for the attenuator unit. The attenuator is
searching his index point and then going to the set point. This command is
automatically started by power on.
NOTE: This command is only valid, if the attenuator unit is supported by the laser
firmware.
This command enters the transmission ratio of the attenuator unit. Only values
between 0 and 100 are permitted.
NOTE: This command is only valid, if the attenuator unit is supported by the laser
firmware.
This command enters the desired output energy of the laser. From this the laser
firmware is calculating and adjusting a corresponding ratio of the attenuator unit.
NOTE: This command is only valid, if the attenuator unit is supported by the laser
firmware.
This command enters directly the set point for the stepper motor position of the
attenuator unit. Only values between 0 and 400 are permitted.
NOTE: This command is only valid, if the attenuator unit is supported by the laser
firmware.
On request you can obtain a sample and test program (Borland-Delphi source
code) that runs independently.