Saturday, April 29, 2017

Tutorial: SECS-II Message definition in the XSML file.


Overview

To communication with the semiconductor equipment, you have to use the E5 SEMI standard (SECS-II). We can define the SECS-II message in the file, and the SecsDriver can process it.

With the host controler, we have to kind of messages. One called the solicited message, and the other is unsolicited messages.

Solicited message 

That means, you know exactly the sending primary message and the receiving secondary message, with the structure and data type also.
Example:
1. S1F1 ARE YOU THERE
**************************************************
** On Line Data
**************************************************
S1F1 = S1F1_AREYOUTHERE w output
    <L[2]
        <A 'Test eqp'>          = mdln
        <A 'SecsDriver-1.0'>    = softrev
    >.
S1F2 = S1F2_R input
    <L>.
S6F11
<L[3]
    <U[4] 1>
    <U[4] 22>
    <L[0]>
>.
In this example, the SecsDriver know the sending message S1F1, and expected to receiving S1F2 with the empty LIST datatype.
To send this message, in the SecsDriver supported the API, named SendRecvMessage
SendRecvMessage ("S1F1_AREYOUTHERE");
Before sending, we can set data by calling the API
SetValue( "S1F1_AREYOUTHERE", "mdln", "VARIAN_KESTREL" );
SetValue( "S1F1_AREYOUTHERE", "softrev", "Version1" );
The completed script code:
-- set value to mdln variable
SetValue( "S1F1_AREYOUTHERE", "mdln", "VARIAN_KESTREL" );
-- set value to softrev variable
SetValue( "S1F1_AREYOUTHERE", "softrev", "Version1" );
-- send S1F1 and wait for the S1F2
SendRecvMessage ("S1F1_AREYOUTHERE");
-- End
One more example with the Remote Command S2F41
**************************************************
* Host Command Send
**************************************************
s2f41 = S2F41_F42_GO_REMOTE_COMMAND w output
    <L[2]
        <A 'GO_REMOTE'>
        <L[0]>
    >.            
s2f41 = S2F41_F42_CLAMP_COMMAND w output
    <L[2]
        <A 'CLAMP'>
        <L[1]
            <L[2]
                <A 'LOC'>
                <b[1]>              = loc         
            >
        >        
    >.                
s2f41 = S2F41_F42_CANCEL_JOB_COMMAND w output
   <L[2]
        <A 'CANCEL_JOB'>
        <L[1]
            <L[2]
                <A 'MID'>
                <a[22]>             = mid1
            >
        >            
    >.        
s2f42 = S2F42_R input
    <L[2]
        <B[1]>                          = hcack
        <L[max 10 index i] 
            <L[2]
                <A[10]>                 = cpnames[i]
                <B[1]>                  = cpacks[i]
            >
        >    count n_params
    >.
In this case, the message
- S2F41_F42_GO_REMOTE_COMMAND this don't have any paparameter.
S2F41_F42_CLAMP_COMMAND have the parameter named loc.
If you want to lock the LOAD port 1, should be sent the message with value 01.
-- Set the load port 01
SetValue( "S2F41_F42_CLAMP_COMMAND", "loc", "1" );
-- Send the remote command
SendRecvMessage ("S2F41_F42_CLAMP_COMMAND");

Is this easy ? :D


0 comments:

Post a Comment

About Me

Work as the developer. c++, cpp, java, c#...
vuzzan@gmail.com

Popular Posts

Search This Blog