Sunday, 27 May 2018
Home SecsToTool.Net (Host)

SECS/GEM driver for Host/Fab


SecsToTool.Net is a SECS/GEM driver which enables you to build complex and high performance Host (controller) application that interfaces with the semiconductor equipment within the shortest time.

Supported SEMI Standards:

  • SEMI E5 - Equipment Communication Standard II Message Content (SECS-II)
  • SEMI E30 - Generic Model for Communication and Control of Manufacturing Equipment (GEM)
  • SEMI E37 - High Speed SECS Message Services (HSMS)
  • SEMI E39 - Object Services Standard

Easy Configuration with Model Builder

Model Builder is a configurator tool that allows you to configuire, model and define the equipment SECS/GEM data item definitions.

With Model Builder, the following elements can configured:

  • HSMS Communication Settings
  • Remote Command (S2F21, S2F41, S2F49)
  • Status Variables (SVID)
  • Equipment Constants (ECID)
  • Data Variables (DVID)
  • Report Collections (RPTID)
  • Event Collections (CEID)
  • Alarms (ALID)

Send/Receive Message Synchronously/Asynchronously

One of the important feature SecsToTool.Net offers is the ability to send message and receive the reply synchronously or asynchronously. The following code shows how to send message synchronously and wait for the reply within the same thread.

// This will construct the S2F21 message
SECsMessage messageToSend = hostController.ControlDiagnostic.RemoteCommand("START");
// Send message and wait for reply
SECsMessage messageReply = this.hostController.SendAndWait(messageToSend);
// Retrieve the CMDA (command acknowledge code) in the messageReply
int cmda = messageReply.DataItem["CMDA"].ToInt();

It is also possible to handle the reply (secondary message) asynchronously.

// This will construct the S2F21 message
SECsMessage messageToSend = hostController.ControlDiagnostic.RemoteCommand("START");
// Send message asynchronously

The reply will be notified in the SecondaryMessageIn event

Built-In SECS-II Messages

In SecsToTool.Net, the SECS-II messages are built-in within the framework and arranged in the same way as the streams and functions in the SEMI E5 standard conventions. For example if you want to send S1F3 (Selected Equipment Status)

SECsMessage S1F3Message = hostController.EquipmentStatus.SelectedEquipmentStatus();

Built-In Initialization Process

Initialization Initialization is a standard process performed upon connection is established. With SecsToTool.Net, these steps are performed automatically (in a sequential manner) and configurable:
  • S1F13 - Establish Communication
  • S2F37 - Disable All Events
  • S2F33 - Undefined Reports
  • S2F35 - Unlink Event Report
  • S2F33 - Define Reports (based on tool model definition)
  • S2F35 - Link Event Report (based on tool model definition)
  • S2F37 - Enable All Events (based on tool model definition)
  • S5F3 - Disable All Alarms
  • S5F3 - Enable All Alarms (based on tool model definition)

Built-In Logging Management

Logging is a very important and essential feature built within the SecsToTool.Net which include:

  • SML and SECS low level messages
  • LogLevel let you set the verbosity of the messages to be logged into the file
  • rolloverOnSize let you configure the maximum size of the file to roll over to new file. (This is important to maintain the optimum performance)

Custom SECS Message

Create any structure of SECS messages with the CustomMessage service. See the following code snippet:

SECsMessage customMessage = ServiceManager.CustomMessage.CreateMessage(64, 101, true);

// This will add a LIST data type to the  collection

// Add OperatorBatchId item to the root LIST collection
customMessage.DataItem[0].Add("OperatorBatchId", "B1002", SECsFormat.Ascii);

// Add OperatorBatchId item to the root LIST collection
customMessage.DataItem[0].Add("OperatorName", "Dave Hunter", SECsFormat.Ascii);

// Add OperationId to the root LIST collection 
customMessage.DataItem[0].Add("OperationId", 3001, SECsFormat.U4); 

// Add LIST item to the root LIST collection

// Add the Temperature 
customMessage.DataItem[0][3].Add("Temperature", 1.02, SECsFormat.F4); 

// Add the Action Id 
customMessage.DataItem[0][3].Add("ActionId", "242", SECsFormat.U4); 

// Add the Action Description 
customMessage.DataItem[0][3].Add("ActionDescription", "Replenish Material", SECsFormat.Ascii); 

// Send custom message