Skip to content

Connecting / Getting Started

Enabling the remote server

Remote communication must be activated in SENTIO's configuration file:

C:\ProgramData\MPI Corporation\Sentio\config\config.xml

The server configuration lives in the node Configuration / Main / RemoteServer, which has these attributes:

Attribute Description
Type One of "TCPIP", "RS232", or "GPIB"
Config A type-specific configuration string (see below)
Terminator (optional) Line-termination symbol used by SENTIO: "LF" (Line Feed), "CR" (Carriage Return), or "CRLF" (Carriage Return + Line Feed). If omitted, "LF" is used.

Only one communication channel (TCP/IP, GPIB, or RS232) can be active at a time.

TCP/IP setup

Set Type="TCPIP" and supply an IP address and port in Config. Example — a server listening on port 35555 of the localhost:

<RemoteServer Type="TCPIP" Config="127.0.0.1:35555" Terminator="LF"/>

If the connection fails, try turning off the Windows Firewall.

GPIB setup

SENTIO supports GPIB communication over either an NI or an ADLINK GPIB card. Set Type="GPIB". The Config string has the form:

$BOARD_NAME$:$BOARD_ADDRESS$:$VENDOR_CODE$
Field Description
Board Name Set by the card driver tools (e.g. "GPIB0"). Use the vendor's tools to determine the board name.
Board Address Device address, integer 1–31. Must be unique on the GPIB network.
Vendor Code Either "NI" or "ADLINK".

Example — GPIB card "GPIB0" (National Instruments), device address 11:

<RemoteServer Type="GPIB" Config="GPIB0:11:NI" />

RS232 setup

Set Type="RS232". The Config string has colon-separated fields:

Field Description
COM Port Name of the COM port, e.g. "COM1"
Baud Rate One of 9600, 19200, 38400, 57600, 115200
Parity One of "NONE", "ODD", "EVEN"
Handshake One of "OFF", "NONE", "XON_XOFF", "XONXOFF"

Example — COM1, 9600 baud, no parity, no handshake:

<RemoteServer Type="RS232" Config="COM1:9600:NONE:OFF"/>

RS232 communication requires the terminator CRLF (0D 0A hex) at the end of every command string, e.g. after move_chuck_contact.

Communication protocol

Sending commands

  • The command string starts with the command name (case sensitive).
  • If parameters are present, they are separated from the command name by at least one space.
  • Multiple parameters are separated from each other by commas (case sensitive unless stated otherwise).
  • Neither the command name nor parameters are quoted.

Receiving commands (response format)

After a command executes, SENTIO returns a response string containing a comma-separated parameter list:

Command:   status:get_machine_status
Response:  0, 0, Ready, IsMeasuring
# Field Description
1 Result code An integer combining an error code (bits 1–10) and status code (bits 11–12). See the error code table below.
2 Command ID Used for asynchronous remote commands; always 0 for synchronous commands.
3…n Response Command-dependent — see each command's description in the reference below.

The first return value encodes both error and status information; a nonzero value does not necessarily indicate an error. To isolate the error code, mask off the lowest 10 bits:

errc = return_value & ~1023

Status bits can be queried independently (stepping status only):

lastDie      = (return_value & 1024) != 0   # Bit 11
lastSubsite  = (return_value & 2048) != 0   # Bit 12

Result / error codes (lower 10 bits of the first response value):

Code Meaning
0 NoError
1 InternalError
2 ExecutionError
3 CommandHandlerNotFound
4 InvalidCommand
5 InvalidCommandFormat
6 InvalidParameter
7 InvalidNumberOfParameters
8 ArgumentOutOfBounds
9 FileNotFound
10 InvalidFileFormat
11 EndOfRoute
12 InvalidOperation
13 NotSupported
14 SubsiteNotRoutable
15 ProjectRequired
16 SteppingCompensationParameterFailed
17 PrealignmentFailed
18 HomePositionNotSet
19 Timeout
Pattern error codes
20 PatternNotTrained
21 PatternNotFound
22 TooManyPatternsFound
23 ContactHeightNotSet
24 AutoFocusFailed
25 TipFocusFailed
26 TipNotFound
27 OffsetOverTolerance
Command error codes
30 CommandPending
31 AsyncCommandAborted
32 UnknownCommandId
Camera error codes
35 CameraNotCalibrated
36 CameraDoesNotExist
37 AlignAccuracyBad (> 10 µm)
System error codes
60 FrontDoorOpen
61 LoaderDoorOpen
62 FrontDoorLockFail
63 LoaderDoorLockFail
64 SlotOrStationOccupied
65 SlotOrStationEmpty
66 ProbeBackDoorOpen
67 ProbeSideDoorOpen
68 VacuumFailed
69 TrayDoorOpen
Loader error codes
80 CassetteDoesNotExist
81 SlotNumberError
83 PreAlignerAlignAngleError
85 NoWaferOnPrealigner
86 NoWaferOnChuck
87 NoWaferAtSlotOrTray
88 NoWaferOnRobot
90 NoIdReader
91 ReadIdFail
92 TransferWaferFail
100 ProbeNotInitialized (also used as Probe error code, see below)
101 ProbeServoOnOffFail (also used as Probe error code, see below)
120 OvertravelOutOfAxisLimit
121 MissingTopographyTable
122 IndexerDeviceIsNotExisting
150 WaferOnFork
151 WaferSlideOutCassette
152 NoWaferOnFork
153 WaferTrackerReceivedTimeout
154 WaferIsOblique
155 CassetteWithoutScan
156 PrealignerSensorSwitchSizeTimeOut
157 CassetteDoorBarOpenTimeout
158 CassetteDoorBarCloseTimeout
159 WaferIsCrossOver
160 WaferOnChuck
161 PrealignCalOffsetTooLarge
162 PrealignFailedTooMuchTime
163 ConnectPrealignerFailed
164 WaferOnTray
165 CassetteMappingLagCountTooMuch
166 TransferSoakingTimeOut
167 UpdateMappingDataFail
168 TrayDoorLockTimeout
169 WaferOnPrealigner
Probe error codes
100 PositionerNotInitialized
101 PositionerServoOnOffFail
Setting error codes
120 OverTravelOverLimit
121 MissingTopographyTable
SiPH error codes
300 SiPhMoveHoverFail
301 SiPhMoveSeparationFail
302 SiPhGradientSearchFail
303 SiPhFastAlignFail
304 SiPhPowerMeasurementFail
QAlibria error codes
450 QaChuckNotWorkingPosition
451 QaSubstrateNotSet
452 QaRemoteModeNotSet
453 QaStandardsEmpty
Status codes (stepping only)
1024 (Bit 11) Last die
2048 (Bit 12) Last subsite

[table/diagram in source — verify against original PDF: several numeric error codes (e.g. 100, 101, 120, 121) are reused across different error-code categories (Loader vs. Probe vs. Setting); the source PDF layout implies the category context disambiguates the code, but the extracted text could not fully confirm the visual grouping.]

Asynchronous commands

Commands marked [asynchronous] execute in the background while other operations (including other remote commands) continue. Procedure:

  1. Send the command.
  2. It returns immediately with 0,cid,OK, where cid is the command ID assigned by SENTIO.
  3. Retrieve the result, either by:
  4. Polling with query_command_status cid — while the command is still executing, the result code is 30 (CommandPending); once finished, the actual command response is returned.
  5. Or sending wait_complete cid — blocks until the command finishes and returns its response directly.
  6. Once the response has been retrieved, the command is cleared and cid becomes invalid. A subsequent query_command_status cid then returns result 32 (UnknownCommandId) and response "Command id not found!".

It is required to retrieve the response of every asynchronous command by one of the methods in step 3 — otherwise responses accumulate in memory.

Example:

Command:   status:start_show_message "There is a Situation! Continue?", YesNo, "Question"
Response:  0,1,OK                 (command returns immediately)

...                                (do something else while it executes)

Command:   wait_complete 2         (wait until a button is pressed)
Response:  0,0,Yes                 ("Yes" button was pressed)