Professional Documents
Culture Documents
• Your name,
• your company,
• the telephone number where you can be reached,
• the reason for your call
• serial and article number of your laser systems.
1. Version history
Version 1.0
- Initial Version
Version 1.1
- Additional Commands
Version 1.2
- Additional Commands
Version 1.3
- Additional Commands
Version 1.4
- Encoding
Version 1.5
- Additional Commands
o GetGlobalCounter
o GetMarkingCounter
o GetProductCounter
o SetLotSize
o GetLotCounter
o RunXMLCommand
- Rework of internal communication
- Logging
- Extension
- ErrorCodes
Version 1.6.2
- Bugfixing
Version 1.6.3
- Bugfixing TCL-71
Version 1.6.4
- Bugfixing TCL-74
Version 1.6.5
- Bugfixing TCL-75
Version 1.6.6
- Enhanced Logging
Version 1.6.7
- Version for Multicore Board (CMark 4.x)
- Explicit conversion to UTF8 Encoding (bugfix for multibyte characters)
- Optimization of connection and detection of disconnect
- Optimization in “getstatuscode”
- Bugfixing for template preview (gettemplategraphic)
CR/LF as svg delimiters are no longer removed for this command
Version 1.7
- Escaping special characters in reg expressions when used as delimiter
- Replaced hard coded delimiter through variables in function AddBufferData
- Additional commands:
o SaveDatabase
o ActivateTCS
o DeactivateTCS
- Additional error code 43905 / AB81
- Ignore double trigger “LaserStatusMarking” from multicore board
- UDP support for single and multicore boards (used for AllprintBasic)
- Ignore laser messages “BoardTemperature”, “CIInput” and “CIOutput” to relieve the command queue
- Updated the ExtensionDefault.tcl
- Deleted parameter “sendAnswer”
1. Requirements
Laser with software versions minimum QMark 8.x.x or CMark 2.3.x to maximum CMark 3.4
with MMC/SD card
2. File Transfer
Switch off the laser. Remove the MMC/SD card from it. Put the MMC/SD card into a suitable
card reader which is properly connected to your PC. Copy all files and sub-folders into the
appropriate folder on MMC/SD card. Replace existing files if necessary. Do not change the
folder naming or structure.
On QMark (ACC3) based systems with QMark copy the “startup.sh” file and the “tcl” folder
including all files and subfolders to [MMC]/smarties/customer and overwrite existing files
On CMark (Chameleon) based systems, copy the “tcl” folder including all files and subfolders
to [SD]/smarties/customer and overwrite existing files
Afterwards don't forget to “safely remove” the SD/MMC by Windows. Insert the MMC/SD card
into the laser controller. Switch on the laser.
1. Requirements
Laser with software version minimum CMark 4.5 without MMC/SD card
Select the TCL *.zip file and upload it to the laser. Make sure, that the data structure in the
*.zip file must look like this:
The qty of folders and *.tcl files can vary from script to script.
If the process went well, this message would appear. Time to restart the laser.
Open the file “Setup.txt” with any file editor, e.g. notepad++. Configure the interface accordingly by
changing the values:
Encoding UTF-8
Parameter Delimiter is Semicolon (0x3B)
End Delimiter is Carriage Return [CR] and Line Feed [LF] (0x0D, 0x0A)
Returns Acknowledged [ACK] or NotAcknowledged [NAK] (0x06, 0x15)
RS232
BaudRate 9600
Databits 8
Stopbits 1
Parity None
Handshaking Off
TCP/IP
Server/Client Application
Server: Laser
Client: Customer Network Device
Listen Port 20001
Event Port 20003
6. Datastring
Command: Command;Arguments;<CR><LF>
Result: [ACK];ResultCode;Arguments;<CR><LF>
Result: [NAK];ResultCode;<CR><LF>
Example:
SetVars;Var1;abc\;123;<CR><LF> writes “abc;123”
Command arguments:
None
Result arguments:
Ultimate Version
Extension Version
Limitation:
None
Timing hints:
None
Example:
Send GetVersion;<CR><LF>
Receive <ACK>;0000;Ultimate1.6;ExtensionSample1.0;<CR><LF>
Command arguments:
None
Result arguments:
None
Limitation:
None
Timing hints:
None
Example:
Send Start;<CR><LF>
Receive <ACK>;0000;<CR><LF>
3. Stop;
Stops the laser process
Command arguments:
None
Result arguments:
None
Limitation:
None
Timing hints:
None
Example:
Send Stop;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
None
Result arguments:
Laser Status
Laser Status:
LaserStatusStandby
LaserStatusReady
LaserStatusMarking
LaserStatusWaitForTrigger
LaserStatusWaitForTriggerDelay
LaserStatusPause
LaserStatusPrepareForMarking
LaserStatusWaitForPause
LaserStatusStartUp
LaserStatusKeySwitchOpen
LaserStatusInterlockOpen
LaserStatusShutterlockOpen
LaserStatusProtectedServiceMode
LaserStatusServiceMode
LaserStatusError1
LaserStatusError2
LaserStatusFatalError
Limitation:
None
Timing hints:
None
Example:
Send GetStatus;<CR><LF>
Receive <ACK>;0000;LaserStatusMarking;<CR><LF>
Command arguments:
None
Result arguments:
Code 0
LaserStatusStandby
LaserStatusReady
Code 1
LaserStatusMarking
LaserStatusWaitForTrigger
LaserStatusWaitForTriggerDelay
LaserStatusPause
LaserStatusPrepareForMarking
LaserStatusWaitForPause
Code -1
LaserStatusStartUp
LaserStatusKeySwitchOpen
LaserStatusInterlockOpen
LaserStatusShutterlockOpen
LaserStatusProtectedServiceMode
LaserStatusServiceMode
LaserStatusError1
LaserStatusError2
LaserStatusFatalError
Limitation:
None
Timing hints:
None
Example:
Send GetStatusCode;<CR><LF>
Receive <ACK>;0000;1;<CR><LF>
Command arguments:
None
Result arguments:
Varname1;Varname2;…;VarnameX
Limitation
Applicable for External Text (Prompt), SerialNumbers, Date and Time
Shiftcodes are ignored
Timing hints:
None
Example:
Send GetVarNames;<CR><LF>
Receive <ACK>;0000;Var1;Var2;Date1;Ser1;<CR><LF>
7. GetVars;
Returns all variables and their values [of the given variable names] in the active template
Command arguments:
Varname1;Varname2;…;VarnameX will return the values of given variable names
Leaving it blank will return all available variables
Result arguments:
Varname1=Varvalue1;Varname2=Varvalue2;…;VarnameX=VarvalueX
Limitation:
Applicable for External Text (Prompt), SerialNumbers, Date and Time
Shiftcodes are ignored
Timing hints:
None
Example:
Send GetVars;<CR><LF>
Receive <ACK>;0000;Var1=abc;Var2=123;Ser1=001;<CR><LF>
Command arguments:
Varname1;Varvalue1;Varname2;Varvalue2;…;VarnameX;VarvalueX
Result arguments:
None
Limitation:
Applicable for External Text (Prompt), SerialNumbers
Variables within a TemplateList, TemplateSequence or TemplateBatch cannot be addressed globally
Each variable has to have a different name
Timing hints:
SetVars will handle each variable one by one.
Example:
Send SetVars;Var1;abc;Var2;123;Ser1;001;<CR><LF>
Receive <ACK>;0000;<CR><LF>
9. SetVarsSimple;
Set the values of variables without explicit variable names in the active template
Variable names expected are “Var1” for the first argument, “Var2” for the second etc. (case sensitive)
Command arguments:
Varvalue1;Varvalue2;…;VarvalueX
Result arguments:
None
Limitation:
Applicable for External Text (Prompt), SerialNumbers
Variables within a TemplateList, TemplateSequence or TemplateBatch cannot be addressed globally
Each variable has to have a different name
Timing hints:
SetVarsSimple will handle each variable at once.
Example:
Send SetVarsSimple;abc;123;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
Varname1;Varvalue1;Varname2;Varvalue2;…;VarnameX;VarvalueX;
Result arguments:
None
Limitation:
Applicable for External Text (Prompt), SerialNumbers
Variables within a TemplateList, TemplateSequence or TemplateBatch cannot be addressed globally
Each variable has to have a different name
Timing hints:
None
Example:
Send SetVarsAsync;Var1;abc;Var2;123;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Event Event;ValueSet;Var1;0;<CR><LF>
Event;ValueSet;Var2;0;<CR><LF>
11. ResetSerialnumber;
Resets the given serialnumbers to their startvalues
Command arguments:
Serialnumber1;Serialnumber2;…;SerialnumberX
Result arguments:
None
Limitation:
Applicable for SerialNumbers only
Other types of variables are ignored
Timing hints:
None
Example:
Send ResetSerialnumber;Ser1;Ser2;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
Varname1;Varname2;…;VarnameX;
Result arguments:
Varname1;X1;Y1;Varname2;X2;Y2;…;VarnameX;X;Y;
Limitation:
None
Timing hints:
None
Example:
Send GetVarPosition;Var1;Var2;<CR><LF>
Receive <ACK>;0000;Var1;0.7;20.5;Var2;10.43;0.0;<CR><LF>
13. SetVarPosition;
Set the X and Y position of named variables
Command arguments:
Varname1;X1;Y1;Varname2;X2;Y2;…;VarnameX;X;Y
X: Data Type Float
Y: Data Type Float
Result arguments:
None
Limitation:
Use “.” To enter point numbers. “,” is not supported
Timing hints:
None
Example:
Send SetVarPosition;Var1;0.7;20.5;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
SerialNumber1;…;SerialNumberX;
Result arguments:
Serialnumber1;RepeatValue1;…;SerialnumberX;RepeatValueX;
Limitation:
Applicable for SerialNumbers only
Timing hints:
None
Example:
Send GetRepeat;Ser1;Ser2;<CR><LF>
Receive <ACK>;0000;Ser1;1;Ser2;4;<CR><LF>
Command arguments:
SerialNumber1; Repetition1;…;SerialNumberX; RepetitionX
Result arguments:
None
Limitation:
Applicable for SerialNumbers only
Timing hints:
SetRepeat will send data in single commands for each Variable
Each command is handled as a single change
Changes on template force the Laser to update all vectors
Timing depends on the template content
Example:
Send SetRepeat;Ser1;1;Ser2;4;<CR><LF>
Receive <ACK>;0000;<CR><LF>
16. SetRepeatSimple;
Set the repetition of SerialNumbers without explicit variable names in the active template
Variable names expected are “Ser1” for the first argument, “Ser2” for the second etc.
Command arguments:
Repetition1; Repetition2;…;SerialNumberX; RepetitionX
Result arguments:
None
Limitation:
Applicable for SerialNumbers only
Timing hints:
SetRepeatSimple will send all Variable changes in one stack of commands.
A command stack is handled as one change.
Changes on template force the Laser to update all vectors
Timing depends on the template content
Example:
Send SetRepeatSimple;1;4;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
SerialNumber1;…;SerialNumberX;
Result arguments:
Serialnumber1;Increment1;…;SerialnumberX;IncrementX;
Limitation:
Applicable for SerialNumbers only
Timing hints:
None
Example:
Send GetIncrement;Ser1;Ser2;<CR><LF>
Receive <ACK>;0000;Ser1;1;Ser2;4;<CR><LF>
Command arguments:
SerialNumber1;Increment1;…;SerialNumberX;IncrementX
Result arguments:
None
Limitation:
Applicable for SerialNumbers only
Timing hints:
SetIncrement will send data in single commands for each Variable
Each command is handled as a single change
Changes on template force the Laser to update all vectors
Timing depends on the template content
Example:
Send SetIncrement;Ser1;1;Ser2;4;<CR><LF>
Receive <ACK>;0000;<CR><LF>
19. SetIncrementSimple;
Set the increment step range of SerialNumbers without explicit variable names in the active template
Variable names expected are “Ser1” for the first argument, “Ser2” for the second etc.
Command arguments:
Increment1;Increment2;…;SerialNumberX;IncrementX
Result arguments:
None
Limitation:
Applicable for SerialNumbers only
Timing hints:
SetIncrementSimple will send all Variable changes in one stack of commands.
A command stack is handled as one change.
Changes on template force the Laser to update all vectors
Timing depends on the template content
Example:
Send SetIncrementSimple;1;4;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
Date1;Date2;…;DateX;
Result arguments:
Date1;DateOffset1;Date2;DateOffset2;…;DateX;DateOffsetX
Limitation:
Applicable for Dates only
Timing hints:
None
Example:
Send GetDateOffset;Date1;Date2;<CR><LF>
Receive <ACK>;0000;Date1;10;Date2;40;<CR><LF>
Command arguments:
Date1;DateOffset1;…;DateX;DateOffsetX
Result arguments:
None
Limitation:
Applicable for Dates only
Timing hints:
SetDateOffset will send data in single commands for each Variable
Each command is handled as a single change
Changes on template force the Laser to update all vectors
Timing depends on the template content
Example:
Send SetDateOffset;Date1;10;Date2;40;<CR><LF>
Receive <ACK>;0000;<CR><LF>
22. SetDateOffsetSimple;
Set the date offset of Date Variables without explicit variable names in the active template
Variable names expected are “Date1” for the first argument, “Date2” for the second etc.
Command arguments:
Date1;DateOffset1;…; DateX;DateOffsetX
Result arguments:
None
Limitation:
Applicable for Dates only
Timing hints:
SetDateOffsetSimple will send all Variable changes in one stack of commands.
A command stack is handled as one change.
Changes on template force the Laser to update all vectors
Timing depends on the template content
Example:
Send SetDateOffsetSimple;10;40;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
Date1;Date2;…;DateX;
Result arguments:
Date1;DateUnit1;Date2;DateUnit2;…;DateX;DateUnitX
Limitation:
Applicable for Dates only
Timing hints:
None
Example:
Send GetDateUnit;Date1;Date2;<CR><LF>
Receive <ACK>;0000;Date1;Days;Date2;Years;<CR><LF>
Command arguments:
Date1;DateUnit1;…;DateX;DateUnitX
Result arguments:
None
Limitation:
Applicable for Dates only
When changing from format Day to Week, the DateOffset value is multiplied by 7, the format will be kept
as Day.
Multiple calls will increase the DateOffset.
Not supported on all QMark
Timing hints:
SetDateUnit will send data in single commands for each Variable
Each command is handled as a single change
Changes on template force the Laser to update all vectors
Timing depends on the template content
Example:
Send SetDateUnit;Date1;Days;Date2;Years;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
DateUnit1; DateUnit2;…;DateUnitX
Result arguments:
None
Limitation:
Applicable for Dates only
When changing from format Day to Week, the DateOffset value is multiplied by 7, the format will be kept
as Day.
Multiple calls will increase the DateOffset.
Not supported on all QMark
Timing hints:
SetDateUnitSimple will send all Variable changes in one stack of commands.
A command stack is handled as one change.
Changes on template force the Laser to update all vectors
Timing depends on the template content
Example:
Send SetDateUnitSimple;Days;Years;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
Date1;Date2;…;DateX;
Result arguments:
Date1;DateChange1;Date2;DateChange2;…;DateUnitX
Limitation:
Applicable for Dates only
Timing hints:
None
Example:
Send GetDateChange;Date1;Date2;<CR><LF>
Receive <ACK>;0000;Date1;0;Date2;7;<CR><LF>
Command arguments:
Date1;DateChange1;Date2;DateChange2;…;DateX;DateChangeX;
Result arguments:
None
Limitation:
Applicable for Dates only
Timing hints:
None
Example:
Send SetDateChange;Date1;0;Date2;7;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
None
Result arguments:
Template1;Template2;...;TemplateX
Limitation:
TemplateLists, TemplateSequences and TemplateBatches are ignored
Timing hints:
None
Example:
Send GetJobnames;<CR><LF>
Receive <ACK>;0000;Template1;Template2;Template3;<CR><LF>
29. GetTemplateListNames;
Returns the names of the templatelists stored in the database
Command arguments:
None
Result arguments:
TemplateList1;TemplateList2;...;TemplateListX
Limitation:
Templates, TemplateSequences and TemplateBatches are ignored
Timing hints:
None
Example:
Send GetTemplateListnames;<CR><LF>
Receive <ACK>;0000;TemplateList1;TemplateList2;TemplateList3;<CR><LF>
Command arguments:
None
Result arguments:
TemplateSequence1;TemplateSequence2;...;TemplateSequenceX
Limitation:
Templates, TemplateLists and TemplateBatches are ignored
Timing hints:
None
Example:
Send GetTemplateSequenceNames;<CR><LF>
Receive <ACK>;0000;TemplateSequence1;TemplateSequence2;<CR><LF>
31. GetTemplateBatchNames;
Returns the names of the templatebatches stored in the database
Command arguments:
None
Result arguments:
TemplateBatch1;TemplateBatch2;...;TemplateBatchX
Limitation:
Templates, TemplateLists and TemplateSequences are ignored
Timing hints:
None
Example:
Send GetTemplateBatchNames;<CR><LF>
Receive <ACK>;0000;TemplateBatch1;TemplateBatch2;<CR><LF>
Command arguments:
None
Result arguments:
Template:
TemplateName
TemplateList:
TL:TemplatesWithinTemplateList
TemplateBatch:
TB:TemplatesWithinTemplateBatch
TemplateSequence:
TS:TemplatesWithinTemplateSequence
Limitation:
None
Timing hints:
None
Example:
Send GetJob;<CR><LF>
Receive <ACK>;0000;Template1;<CR><LF>
Send GetJob;<CR><LF>
Receive <ACK>;0000;TL:Template1;Template2;<CR><LF>
Command arguments:
Jobname
Result arguments:
None
Limitation:
Limited to TemplateLists, TemplateSequences and TemplateBatches themselves – no access to member
templates
Timing hints:
None
Example:
Send SetJob;Template1;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Send SetJob;TemplateList1;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Event Event;TemplateChanged;<CR><LF>
34. SetJobVars;
Set the current template, TemplateLists, TemplateSequences or TemplateBatches and sets variable
values
Command arguments:
Jobname;Varname1;Value1;Varname2;Value2;…;VarnameX;ValueX;
Result arguments:
None
Limitation:
Limited to TemplateLists, TemplateSequences and TemplateBatches themselves – no access to member
templates
Applicable for External Text (Prompt), SerialNumbers
Variables within a TemplateList, TemplateSequence or TemplateBatch cannot be addressed globally
Each variable has to have a different name
Timing hints:
None
Example:
Send SetJobVars;Template1;Var1;abc;Var2;123;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Event Event;TemplateChanged;<CR><LF>
Command arguments:
None
Result arguments:
ProductRegistration1;ProductRegistration2;…;ProductRegistrationX;
Limitation:
None
Timing hints:
None
Example:
Send GetProductRegistrationNames;<CR><LF>
Receive <ACK>;0000;once;continuous 2000 ms;<CR><LF>
36. GetProductRegistration;
Returns the ProductRegistration assigned to the active template
Command arguments:
None
Result arguments:
ProductRegistration
Limitation:
None
Timing hints:
None
Example:
Send GetProductRegistration;<CR><LF>
Receive <ACK>;0000;once;<CR><LF>
Command arguments:
ProductRegistration
Result arguments:
None
Limitation:
Changes to Templates can only be processed if marking is stopped
Timing hints:
None
Example:
Send SetProductRegistration;once;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
None
Result arguments:
ParameterSet1;ParameterSet2;…;ParameterSetX;
Limitation:
None
Timing hints:
None
Example:
Send GetParameterSetNames;<CR><LF>
Receive <ACK>;0000;Carton;Black Paper;<CR><LF>
39. GetParameterSet;
Returns the ParameterSet assigned to the active template
Command arguments:
None
Result arguments:
ParameterSet
Limitation:
None
Timing hints:
None
Example:
Send Receive
GetParameterSet;<CR><LF> <ACK>;0000;Black Paper;<CR><LF>
Send GetParameterSet;<CR><LF>
Receive <ACK>;0000;Black Paper;<CR><LF>
Command arguments:
ParameterSet
Result arguments:
None
Limitation:
Changes to templates can only be processed if marking is stopped
Timing hints:
None
Example:
Send SetParameterSet;Black Paper;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
None
Result arguments:
X, Y
Data Type Integer
Value 10000 equals Offset 1 mm
Limitation:
None
Timing hints:
None
Example:
Send GetLayoutPosition;<CR><LF>
Receive <ACK>;0000;10000;20000;<CR><LF>
42. SetLayoutPosition;
Sets the position of the layout
Command arguments:
X, Y
Data Type Integer
Value 10000 equals Offset 1 mm
Result arguments:
None
Limitation:
None
Timing hints:
None
Example:
Send SetLayoutPosition;10000;20000;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
None
Result arguments:
Rotation
Data Type Double
Value 45.0 equals Rotation 45.0°
Limitation:
None
Timing hints:
None
Example:
Send GetRotation;<CR><LF>
Receive <ACK>;0000;45.00000;<CR><LF>
44. SetRotation;
Sets the rotation of the layout
Command arguments:
Rotation
Data Type Double
Value 45.0 equals Rotation 45.0°
Result arguments:
None
Limitation:
None
Timing hints:
None
Example:
Send SetRotation;45.0;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
None
Result arguments:
3000;5000;…;6000
Limitation:
None
Timing hints:
None
Example:
Send GetMessageID;<CR><LF>
Receive <ACK>;0000;19508;19506;<CR><LF>
46. GetMessages;
Returns the list of ErrorTexts of un-acknowledged Messages
Command arguments:
None
Result arguments:
ErrorText1;ErrorText2;…;ErrorTextX
Limitation:
None
Timing hints:
None
Example:
Send GetMessages;<CR><LF>
Receive <ACK>;0000;The front panel stop button was pressed;<CR><LF>
Send GetMessages;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
None
Result arguments:
None
Limitation:
None
Timing hints:
The more messages (even already acknowledged ones) exist, the more time does it take to handle this
request
Example:
Send ConfirmMessages;<CR><LF>
Receive <ACK>;0000;<CR><LF>
48. DeleteMessages;
Deletes all Messages
Command arguments:
None
Result arguments:
None
Limitation:
None
Timing hints:
The more messages exist, the more time does it take to handle this request
Example:
Send DeleteMessages;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
None
Result arguments:
RTC
Format: YYYY-MM-DDTHH:MM:SS
Limitation:
None
Timing hints:
None
Example:
Send GetRTC;<CR><LF>
Receive <ACK>;0000;2016-01-11T19:20:14;<CR><LF>
50. SetRTC;
Set the current Real Time Clock Value
Command arguments:
RTC
Format: YYYY-MM-DDTHH:MM:SS
Result arguments:
None
Limitation:
QMark systems without RTC fix:
Irregular high amount of usage may cause defect of System Database
Timing hints:
Writing the system time affects time critical internal software processes. Recommended is to use that
command in any idle state: “Ready”, “Standby”, “Keyswitch open” etc. Allow the system updating internal
structures, so it is not recommended to change the actual template right after SetRTC command was sent.
Example:
Send SetRTC;2016-01-11T19:20:14;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
None
Result arguments:
BOTH_LASER
PILOT_LASER
MARKING_LASER
Limitation:
None
Timing hints:
None
Example:
Send GetEmissionSource;<CR><LF>
Receive <ACK>;0000;MARKING_LASER;<CR><LF>
52. SetEmissionSource;
Selects the emission source for the laser process
Command arguments:
BOTH_LASER
PILOT_LASER
MARKING_LASER
Result arguments:
None (runs in Error 9C40 if no pilot laser is installed)
Limitation:
Changes to Emission Source can only be processed if marking is stopped
Timing hints:
None
Example:
Send SetEmissionSource;PILOT_LASER;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
Layername1;Layername2;…;LayernameX;
Result arguments:
Layername1;LayerMarking1;Layername2;LayerMarking2;…;LayernameX;LayerMarkingX;
Limitation:
None
Timing hints:
None
Example:
Send GetLayerMarking;Default Layer;<CR><LF>
Receive <ACK>;0000;Default Layer;1;<CR><LF>
54. SetLayerMarking;
Sets the amount of marking repetitions of the given layer
Command arguments:
Layername1;LayerMarking1;Layername2;LayerMarking2;…;LayernameX;LayerMarkingX;
Result arguments:
None
Limitation:
Changes to Templates can only be processed if marking is stopped
Timing hints:
None
Example:
Send SetLayerMarking;Default Layer;2;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
None
Result arguments:
Intensity1;Intensity2;…;IntensityX
Intensity: Data Type Float
Value 0 equals 0% Marking Intensity
Limitation:
Value Range: 0.0 – 100.0
Timing hints:
None
Example:
Send GetIntensity;<CR><LF>
Receive <ACK>;0000;100.0;<CR><LF>
Send GetIntensity;<CR><LF>
Receive <ACK>;0000;25.4;50.8;<CR><LF>
56. SetIntensity;
Sets the marking intensity of the active Parameter Set
Index names expected are “Index1” for the first argument, “Index2” for the second etc.
Command arguments:
Intensity1;Intensity2;…;IntensityX
Intensity: Data Type Float
Value 0 equals 0% Marking Intensity
Result arguments:
None
Limitation:
Changes to Parameter Set can only be processed if marking is stopped
Value Range: 0.0 – 100.0
Timing hints:
Changes to Parameter Set will force the Laser to update every Template using the same Parameter Set
Example:
Send SetIntensity;100.0;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Send SetIntensity;25.4;50.8;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
None
Result arguments:
Speed1;Speed2;…;SpeedX;
Limitation:
None
Timing hints:
None
Example:
Send GetMarkSpeed;<CR><LF>
Receive <ACK>;0000;1000;<CR><LF>
Send GetMarkSpeed;<CR><LF>
Receive <ACK>;0000;1000;20000;50000;<CR><LF>
58. SetMarkSpeed;
Sets the marking speed for each Index of the active Parameter Set
Index names expected are “Index1” for the first argument, “Index2” for the second etc.
Command arguments:
Speed1;Speed2;…;SpeedX;
Result arguments:
None
Limitation:
Changes to Parameter Set can only be processed if marking is stopped
Timing hints:
Changes to Parameter Set will force the Laser to update every Template using the same Parameter Set
Example:
Send SetMarkSpeed;1000;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Send SetMarkSpeed;1000;20000;50000<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
None
Result arguments:
Delay
Data Type: Integer
Value 1000 equals 1 ms
Value 1000 equals 1 mm
Limitation:
None
Timing hints:
None
Example:
Send GetStartTriggerDelay;<CR><LF>
Receive <ACK>;0000;1000;<CR><LF>
60. GetConsecutiveTriggerDelay;
Returns the ConsecutiveTrigger Delay of the active Configuration (ProductRegistration)
Command arguments:
None
Result arguments:
Delay
Data Type: Integer
Value 1000 equals 1 ms
Value 1000 equals 1 mm
Limitation:
None
Timing hints:
None
Example:
Send GetConsecutiveTriggerDelay;<CR><LF>
Receive <ACK>;0000;1000;<CR><LF>
Command arguments:
None
Result arguments:
Delay
Data Type: Integer
Value 1000 equals 1 ms
Value 1000 equals 1 mm
Limitation:
None
Timing hints:
None
Example:
Send GetStopTriggerDelay;<CR><LF>
Receive <ACK>;0000;1000;<CR><LF>
Command arguments:
Delay
Data Type: Integer
Value 1000 equals 1 ms
Value 1000 equals 1 mm
Result arguments:
None
Limitation:
Changes to Configurations can only be processed if marking is stopped
Timing hints:
Changes to Configurations will force the Laser to update every Template using the same Configuration
Example:
Send SetStartTriggerDelay;1000;<CR><LF>
Receive <ACK>;0000;<CR><LF>
63. SetConsecutiveTriggerDelay;
Sets the ConsecutiveTrigger Delay of the active Configuration (ProductRegistration)
Command arguments:
Delay
Data Type: Integer
Value 1000 equals 1 ms
Value 1000 equals 1 mm
Result arguments:
None
Limitation:
Changes to Configurations can only be processed if marking is stopped
Timing hints:
Changes to Configurations will force the Laser to update every Template using the same Configuration
Example:
Send SetConsecutiveTriggerDelay;1000;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
Delay
Data Type: Integer
Value 1000 = 1 ms
Value 1000 = 1 mm
Result arguments:
None
Limitation:
Changes to Configurations can only be processed if marking is stopped
Timing hints:
Changes to Configurations will force the Laser to update every Template using the same Configuration
Example:
Send SetStopTriggerDelay;1000;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
None
Result arguments:
TriggerMode
Limitation:
None
Timing hints:
None
Example:
Send GetStartTriggerMode;<CR><LF>
Receive <ACK>;0000;auto;<CR><LF>
66. GetConsecutiveTriggerMode;
Returns the ConsecutiveTrigger Mode of the active Configuration (ProductRegistration)
Command arguments:
None
Result arguments:
TriggerMode
Limitation:
None
Timing hints:
None
Example:
Send GetConsecutiveTriggerMode;<CR><LF>
Receive <ACK>;0000;none;<CR><LF>
Command arguments:
None
Result arguments:
TriggerMode
Limitation:
None
Timing hints:
None
Example:
Send GetStopTriggerMode;<CR><LF>
Receive <ACK>;0000;trigger1fall;<CR><LF>
Command arguments:
TriggerMode
Result arguments:
None
Limitation:
Changes to Configurations can only be processed if marking is stopped
Timing hints:
Changes to Configurations will force the Laser to update every Template using the same Configuration
Example:
Send SetStartTriggerMode;auto;<CR><LF>
Receive <ACK>;0000;<CR><LF>
69. SetConsecutiveTriggerMode;
Sets the ConsecutiveTrigger Mode of the active Configuration (ProductRegistration)
Command arguments:
TriggerMode
Result arguments:
None
Limitation:
Changes to Configurations can only be processed if marking is stopped
Timing hints:
Changes to Configurations will force the Laser to update every Template using the same Configuration
Example:
Send SetConsecutiveTriggerMode;trigger1raise;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
TriggerMode
Result arguments:
None
Limitation:
Changes to Configurations can only be processed if marking is stopped
Timing hints:
Changes to Configurations will force the Laser to update every Template using the same Configuration
Example:
Send SetStopTriggerMode;none;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
None
Result arguments:
Mode
Limitation:
None
Timing hints:
None
Example:
Send GetProductRegistrationMode;<CR><LF>
Receive <ACK>;0000;FixedSpeed;<CR><LF>
72. SetProductRegistrationMode;
Sets the mode of product movement of the active Configuration (ProductRegistration)
Command arguments:
Mode
Result arguments:
None
Limitation:
Changes to Configurations can only be processed if marking is stopped
Timing hints:
Changes to Configurations will force the Laser to update every Template using the same Configuration
Example:
Send SetProductRegistrationMode;Encoder;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
None
Result arguments:
Speed
Limitation:
None
Timing hints:
None
Example:
Send GetFixedSpeed;<CR><LF>
Receive <ACK>;0000;10000;<CR><LF>
74. SetFixedSpeed;
Sets the movement value for “Fixed Speed” setup
Command arguments:
Speed
Result arguments:
None
Limitation:
Changes to ProductRegistration can only be processed if marking is stopped
Timing hints:
None
Example:
Send SetFixedSpeed;10000;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
None
Result arguments:
Angle
Limitation:
None
Timing hints:
None
Example:
Send GetMovementAngle;<CR><LF>
Receive <ACK>;0000;50;<CR><LF>
76. SetMovementAngle;
Sets the angle between laser and direction of product movement
Command arguments:
Angle
Result arguments:
None
Limitation:
Change to ProductRegistration can only be processed if marking is stopped
Timing hints:
None
Example:
Send SetMovementAngle;50;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
None
Result arguments:
Countervalue
Data Type Integer
Limitation:
None
Timing hints:
None
Example:
Send GetGlobalCounter;<CR><LF>
Receive <ACK>;0000;1534932;<CR><LF>
78. GetMarkingCounter;
Returns the Marking Counter
Command arguments:
None
Result arguments:
Countervalue
Data Type Integer
Limitation:
None
Timing hints:
None
Example:
Send GetMarkingCounter;<CR><LF>
Receive <ACK>;0000;50;<CR><LF>
Command arguments:
None
Result arguments:
Countervalue
Data Type Integer
Limitation:
None
Timing hints:
None
Example:
Send GetProductCounter;<CR><LF>
Receive <ACK>;0000;50;<CR><LF>
Command arguments:
None
Result arguments:
None
Limitation:
None
Timing hints:
None
Example:
Send ResetMarkingCounter;<CR><LF>
Receive <ACK>;0000;<CR><LF>
81. ResetProductCounter;
Resets the Product Counter to 0
Command arguments:
None
Result arguments:
None
Limitation:
None
Timing hints:
None
Example:
Send ResetProductCounter;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
None
Result arguments:
Lot
Data Type Integer
Limitation:
Value Range 0- 999999999
Timing hints:
None
Example:
Send GetLotSize;<CR><LF>
Receive <ACK>;0000;50;<CR><LF>
83. SetLotSize;
Sets the size of lot
Once amount of lot is processed, the lasers stops
Command arguments:
Lot
Data Type Integer
Result arguments:
None
Limitation:
Value Range 0- 999999999
Timing hints:
None
Example:
Send SetLotSize;50;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
None
Result arguments:
LotCounter
Data Type Integer
Limitation:
Value Range 0- 999999999
Timing hints:
None
Example:
Send GetLotCounter;<CR><LF>
Receive <ACK>;0000;30;<CR><LF>
Command arguments:
Variable1;Value1;Value2;…ValueX;<TAB>Variable2;Value1;Value2;…;ValueX;
Result arguments:
None
Limitation:
Applicable for External Text (Prompt)
CMark version > 4.5 = marking will run in error when buffer runs empty
Timing hints:
It is recommended to send 100 values each variable within 1 command.
The more values are in the buffer, the more time does it take to process.
There is no benefit if amount of buffer values is less than 20 - use SetVars or SetVarsAsync instead
Example:
Send AddBufferData;Var1;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;<CR><LF>
Receive <ACK>;0000;<CR><LF>
86. ClearBufferData;
Removes all values from the buffer and disables the ValueQueue-feature for the given variable or, if no
command arguments are defined, for every external Text variable within the template
Command arguments:
Varname
Result arguments:
None
Limitation:
Applicable for External Text (Prompt)
Timing hints:
The more values are in the buffer, the more time does it take to process.
Example:
Send ClearBufferData;Var1;Var2;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Send ClearBufferData;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
Varname
Result arguments:
Amount
Limitation:
Applicable for External Text (Prompt)
QMark all version
CMark lower version 4.9
Timing hints:
The more values are in the buffer, the more time does it take to process.
Example:
Send GetRemainingBufferAmount;Var1;<CR><LF>
Receive <ACK>;0000;240;<CR><LF>
88. SaveDatabase;
When performed, the actual with Ultimate commands modified database configuration will be stored.
Normally when the commands from Ultimate are used to change e.g. the intensity, changes will be
discarded after restarting the laser system
Command arguments:
none
Result arguments:
none
Limitation:
none
Timing hints:
Example:
Send SaveDatabase;<CR><LF>
Receive <ACK>;0000;<CR><LF>
Command arguments:
none
Result arguments:
none
Limitation:
none
Timing hints:
none
Example:
Send ActivateTCS;<CR><LF>
Receive <ACK>;0000;<CR><LF>
90. DeactivateTCS;
Deactivates the TCS service. FobaGo won´t be available anymore, till it´s activated again. A reboot won´t
activate it. The command ActivateTCS must be send.
Command arguments:
none
Result arguments:
none
Limitation:
none
Timing hints:
none
Example:
Send DeactivateTCS;<CR><LF>
Receive <ACK>;0000;<CR><LF>
1. Template Changed
Notification is sent once another template is selected
DataString:
Event;TemplateChanged;<CR><LF>
Example:
Event;TemplateChanged;<CR><LF>
2. Status Changed
Notification is sent once the laser status changed
DataString:
Event;StatusChanged;[LaserStatus];[LaserStatusCode];<CR><LF>
Example:
Event;StatusChanged;LaserStatusReady;0;<CR><LF>
Data String:
Event;ValueSet;[Varname];[Value];[ResultCode];<CR><LF>
Example:
Event;ValueSet;Var1;abc;0000;<CR><LF>
Data String:
Event;ProductCounterChanged;[ProductCounter];<CR><LF>
Example:
Event;ProductCounterChanged;200;<CR><LF>
Data String:
Event;MarkingCounterChanged;[MarkingCounter];<CR><LF>
Example:
Event;MarkingCounterChanged;100;<CR><LF>
Data String:
Event;MarkResult;[Result];<CR><LF>
Example:
Event;MarkResult;Good;<CR><LF>
Event;MarkResult;Bad;<CR><LF>
1. General Errors
2. Database Errors
4. TCL Errors
5. XPath Errors
Initialization of Ultimate-TCP-Client:
Connecting Ultimate-TCP-Client:
Sending Command:
Receive Answer:
Front-End:
<Window x:Class="UltimateSample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="20"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="20"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="20"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Label Content="Variable Name" Margin="3"></Label>
<TextBox Grid.Column="1" Name="tbVarname" Margin="3"></TextBox>
<Label Content="Variable Content" Grid.Row="1" Margin="3"></Label>
<TextBox Grid.Column="1" Grid.Row="1" Name="tbVarvalue" Margin="3"></TextBox>
<Button Name="btSetVarValue" Grid.Row="1" Grid.Column="2" Content="SetVarValue" Margin="3"
Click="btSetVarValue_Click"></Button>
</Grid>
</StackPanel>
</Grid>
</Window>
namespace UltimateSample
{
/// <summary>
/// Interaktionslogik für MainWindow.xaml
/// </summary>
public partial class MainWindow : Window, INotifyPropertyChanged
{
private TcpClient _ultimateInterface;
public MainWindow()
{
InitializeComponent();
}
SendCommand("GetStatus;\r\n");
ReadResult();
}
_ultimateInterface.GetStream().Write(commandBytes, 0, commandBytes.Length);
}
tbResultCode.Text = resultData;
}
try
{
_ultimateInterface.Connect(new IPEndPoint
(IPAddress.Parse(textBoxIPAddress.Text), int.Parse(textBoxPort.Text)));
}
catch
{
_ultimateInterface = null;
}
NotifyPropertyChanged("Connected");
NotifyPropertyChanged("CanConnect");
}
#endregion
}
}