This is an old revision of the document!
GEM300 Scripts
GEM300 standards consist of state models. This Intel transcript provides an overview. As you move product, or carriers through your tool the control system must update the current state to ensure that the host can correctly manage tool operation.
In all the TransSECS GEM300 implementations there are two, fundamental part.
- “Callback” interface - this is how you are notified of the host's requests
- “Service Wrapper” - this is how you indicate that changes at the tool.
Individual standards have other components, E40 Process Jobs, E87 Carriers, E90 Substrates, E94 Control Jobs, etc.
Note: You do not need to implement, or parse SECS messages. This is all done for you within the interface. Do not add GEM300 messages to the TransSECS interface.
E39
E39 is a required standard to support GEM300, however the implementation and operation of E39 is completely transparent to the TransSECS GEM300 operation. You need only initiailize the interface.
E40
Provides a model of the process state within the tool, primarily through the management of “Process Jobs”. A Process Job is created by the host, or on rare occasions by the tool. In a simple example, the process job may go through the following steps:
Allocated - state transition 2 - the Process Job is removed from the queue in preparation for execution - processJob.allocated(); Material Arrived - no state transition - indicate that the material for the Process Job is at the tool - processJob.materialArrived(); Start the Job - state transition 4 - start execution of the Process Job - processJob.readyToStart(); (Note: If the process job is not set to start automatically a “Start” command will be required from the host - see below). Processing Complete - state transition 6 - The material processing is complete - processJob.complete(); Material Departed - state transition 7 - The material has been removed from the tool. The process job is complete and will be deleted - processJob.materialDeparted();
The E40 Service Wrapper provides access to the individual Process Jobs.
A listing of all process jobs is provided by:
E40ServiceWrapper.getInstance().getAllPRJobs();
A particular process job can be obtained by the job id:
E40ServiceWrapper.getInstance().getPRJob(jobID)
while ( processJob.getPrJobState() == ProcessJobStates.WAITINGFORSTART.getStateId() ) { wait500(); } wait500(); try { <note important>
The “getParameterName()” and “setParameterName(xxx)” methods for a message are case sensitive. If you define your message with a parameter name “command”, use getcommand() and not getCommand() to get this value from the incoming message. </note>