# open socket_server name=tool proto=secs logging=2 local_name="./sockets/s.tool" options="baud=9600 t1=2 t2=2 t3=45 t4=45 rbit=1 retry=3"

#open socket_server name=tool proto=secs logging=2 host=127.0.0.1 service=5000 options="t1=10 t2=10 t3=45 t4=45 rbit=1 retry=3 timeout_msg=TIMEOUT"

open socket_server name=tool proto=hsms logging=2 host=172.19.9.14 service=5000 options="hsms_logging=off t3=60 t6=10 t7=10 t8=10 hsms_logging=on timeout_msg=TIMEOUT"

 

define Model           = "et300 "

define SoftwareVersion = "E1.851"

 

define_xref vid =  952, ControlState

define_xref vid = 1511, AccessMode1

define_xref vid = 1512, AccessMode2

define_xref vid = 1513, AccessMode3

define_xref vid = 1514, AccessMode4

define_xref vid = 1551, CarrierID1

define_xref vid = 1552, CarrierID2

define_xref vid = 1553, CarrierID3

define_xref vid = 1554, CarrierID4

define_xref vid = 1539, PortTransferListState

define_xref vid = 1529, PortAssociationStateList

define_xref vid = 1589, CarrierLocationMatrix

define_xref vid =  920, QueueAvailSpace

 

# Events

 

define_xref event = MaterialReceived,                14

define_xref event = MaterialRemoved,                 15   

define_xref event = CID_NoState2WaitForHost,         3030003

define_xref event = CID_WaitForHost2VerificationOK,  3030304

define_xref event = CASM_InAccess,                   3031011

define_xref event = CASM_Complete,                   3031112

define_xref event = COSM_CarrierDestroyed,           3030100   

define_xref event = LPCASM_NotAssociated2Associated, 3090102

define_xref event = LPCASM_Associated2NotAssociated, 3090201

define_xref event = CarrierLocationChange,           73

define_xref event = CtrlJobQueued,                   3250001

define_xref event = CtrlJobSelected,                 3250103

define_xref event = CtrlJobSelected2Executing,       3250305  

define_xref event = CtrlJobCompleted,                3250507

define_xref event = CtrlJobDestroy,                  3250700

define_xref event = PrJobQueued,                     3240001

define_xref event = PrJobSetUp,                      3240102    

define_xref event = PrJobSetUp2Processing,           3240204   

define_xref event = PrJobProcessComplete,            3240405 

define_xref event = PrJobCompleted,                  3240500

define_xref event = SM_NotRead2WaitForHost,          3030607

define_xref event = SM_WaitForHost2VerificationFAIL, 3030709

define_xref event = SM_NotRead2VerificationOK,       3030608

define_xref event = ProcessProgramChanged,           1

define_xref event = SubstProc_InProcess2ProcessingComplete, 3270203

 

let dataid      = 1

let PortID      = 1

let CarrierID   = EF200249

 

let rptid_E40    = 1

let rptid_E87_1  = 2

let rptid_E87_2  = 3

let rptid_E87_3  = 4

let rptid_E87_4  = 5

let rptid_E90_2  = 8

let rptid_E94    = 9

let rptid_recipe = 10

 

define_xref CtlJobCmd = 1, "CJStart"

define_xref CtlJobCmd = 2, "CJPause"

define_xref CtlJobCmd = 3, "CJResume"

define_xref CtlJobCmd = 4, "CJCancel"

define_xref CtlJobCmd = 5, "CJDeselect"

define_xref CtlJobCmd = 6, "CJStop"

define_xref CtlJobCmd = 7, "CJAbort"

define_xref CtlJobCmd = 8, "CJHOQ"

 

 

 

 

 

after tool

    let sxfy = get_tmp_var(SXFY)

    print "Got secs msg <" . $sxfy . ">"

    let client = get_client(tool)

    goto $sxfy

 

 

 

 

# Reply messages

 

label S1F1

    send_reply name=tool S1F2 0

        <L

            <A $Model>

            <A $SoftwareVersion>

        >.

 

label S1F13

    send_reply name=tool S1F14 0

        <L

            <B 00>

            <L

                <A $Model>

                <A $SoftwareVersion>

            >

        >.

 

label S1F3

    #print "Got s1f3 " . get_tmp_var("")

    let x = get_tmp_var("S1F3.1")

    for i=1 to $x

        let n = "S1F3.1." . $i

        let ivid = get_tmp_var($n)

        print "Status query for <" . $ivid . "> <" . $vid[$ivid] . ">"

    next i

    let ivid = get_tmp_var("S1F3.1.1")

    let first_vid = $vid[$ivid]

    goto S1F3_$first_vid

 

label S1F3_ControlState

    send_reply name=tool S1F4 0

        <L

            <U1 5>

        >.

 

label S1F3_QueueAvailSpace

    send_reply name=tool S1F4 0

        <L

            <U1 100>

        > .

 

label S1F3_AccessMode1

    send_reply name=tool S1F4 0

        <L

            <U4 0>          

            <U4 0>         

            <U4 0>         

            <A 'Carrier1'> 

            <A 'Carrier2'> 

            <A 'Carrier3'> 

            <L             

                <U1 1>    

                <U1 1>    

                <U1 1>    

            >              

            <L            

                <U1 1>    

                <U1 1>    

                <U1 1>   

            >

            <L        

                <L

                    <A 'Location1'>

                    <A 'Carrier1'>

                >

                <L

                    <A 'Location2'>

                    <A 'Carrier2'>

                >

                <L

                    <A 'Location3'>

                    <A 'Carrier3'>

                >

            >

        >.

        goto Do_MaterialReceived

 

label S1F17

    send_reply name=tool S1F18 0

        <B 00>.

 

label S2F15

    send_reply name=tool S2F16 0

        <B 00> .

 

label S2F31

    send_reply name=tool S2F32 0

        <B 00> .

 

label S2F33

    let x = get_tmp_var(S2F33.1.2)

    #print get_tmp_var()

    send_reply name=tool S2F34 0

        <B 00> .

 

    if ($x == 0)  # Empty list, delete all reports

        if (is_var(rptid_offset))

            let rptid_offset = $rptid_offset + 10

        else

            let rptid_offset = 0  # First time

        end_if

    end_if

 

label S2F35

    send_reply name=tool S2F36 0

        <B 00> .

 

label S2F37

    send_reply name=tool S2F38 0

        <B 00> .

 

label S2F43

    send_reply name=tool S2F44 0

        <L

            <B 00>

            <L

                <L

                    <U1 2>

                    <B 01>

                    <L

                        <U1 5>

                    >

                >

                <L

                    <U1 7>

                    <B 01>

                    <L

                        <U1 3>

                        <U1 5>

                    >

                >

            >

        >.

 

 

 

 

# Carrier Action Request

 

label S3F17

    let x = get_tmp_var(S3F17.1.5)  # Get number of elements in list

    let CarrierAction = get_tmp_var(S3F17.1.2)

    let CarrierAction = toupper($CarrierAction)

    send_reply name=tool S3F18 0

        <L

            <U1 0>

            <L

                <L

                >

                <L

                >

            >

        >.

 

    if ($CarrierAction eq CANCELCARRIER)

        print "**************************"

        print "* Received CancelCarrier *"

        print "**************************"

        break

    end_if

 

    # Tool Based

    if ($x)

        goto ToolBasedSlotMapVerification

 

    end_if

 

    # Host Based

    if ($x == 0)

        if ($SM_State eq NotRead)

            goto SM_NotRead2WaitForHost

        end_if

        if ($SM_State eq WaitForHost)

            goto SM_WaitForHost2VerificationOK

        end_if

    end_if

 

 

 

 

label S3F27

    send_reply name=tool S3F28 0

        <L

        <U1 4>

        <L>

    >.

 

 

label S5F3

    send_reply name=tool S5F4 0

        <B 00> .

 

label S6F23

    send_reply name=tool S6F24 0

        <B 00> .

 

 

 

# Start of Create EA Job

 

label S7F19

    send_reply name=tool S7F20 0

        <L

            <A "Recipe01">

            <A "Recipe02">

            <A "Recipe03">

            <A "Recipe04">

            <A "Recipe05">

            <A "Recipe06">

            <A "Recipe07">

            <A "Recipe08">

            <A "Recipe09">

            <A "Recipe10">

            <A "Recipe11">

            <A "Recipe12">

            <A "Recipe13">

            <A "Recipe14">

            <A "Recipe15">

            <A "Recipe16">

            <A "Recipe17">

            <A "Recipe18">

            <A "Recipe19">

            <A "Recipe20">

            <A "Recipe21">

            <A "Recipe22">

            <A "Recipe23">

            <A "Recipe24">

            <A "Recipe25">

            <A "bakeme">

            <A "DRY_RUN.cas">

            <A "MECH_ALL_CHAMBER">

            > .

 

label S16F21

    send_reply name=tool S16F22 0

        <U2 100>.

 

label S16F15

    let PRJobID = get_tmp_var("S16F15.1.2.1.1")

    send_reply name=tool S16F16 0

        <L

            <L

                <A $PRJobID>              # PRJobID

            >

            <L

                <BOOLEAN T>

                #<BOOLEAN F>  # Failure

                <L>

            >

        >.

 

label S16F27

    let CtrlJobID = get_tmp_var("S16F27.1.1")

    let CtlJobCmd = get_tmp_var("S16F27.1.2")

    print "*************************************"

    print "* CtlJobCmd <" . $CtlJobCmd[$CtlJobCmd] . ">"

    print "*************************************"

       

    send_reply name=tool S16F28 0

        <L

            <BOOLEAN T>

            <L>

        >.

 

    if ($CtlJobCmd == 1)  # Start

        goto Do_Start

    end_if

 

label S14F1

    send_reply name=tool S14F2 0

        <L

            <L>

            <L

                <U1 0>     

                <L>

            >

        >.

 

label S14F9

    let ObjSpec     = get_tmp_var("S14F9.1.1")

    let ObjType     = get_tmp_var("S14F9.1.2")

    let ObjID       = get_tmp_var("S14F9.1.3.1.2")

    let CtrlJobID   = $ObjID

    let StartMethod = get_tmp_var("S14F9.1.3.6.2")

    #print get_tmp_var()

    send_reply name=tool S14F10 0

        <L

            <A $ObjSpec>

            <L

                <L

                    <A 'ObjType'>

                    <A $ObjType>

                >

                <L

                    <A 'objID'>

                    <A $ObjID>

                >

                <L

                    <A 'CarrierInputSpec'>

                    <L

                        <A $CarrierID>

                    >

                >

                <L

                    <A 'CurrentPRJob'>

                    <L

                    >

                >

                <L

                    <A 'MtrlOutByStatus'>

                    <L

                    >

                >

                <L

                    <A 'MtrlOutSpec'>

                    <L

                    >

                >

                <L

                    <A 'ProcessingCtrlSpec'>

                    <L

                        <L

                            <A $ObjID>

                            <L

                            >

                            <L

                            >

                        >

                    >

                >

                <L

                    <A 'ProcessOrderMgmt'>

                    <U1 3>

                >

                <L

                    <A 'StartMethod'>

                    <BOOLEAN T>

                >

                <L

                    <A 'State'>

                    <U1 0>

                >

            >

            <L

                <U1 0>  # Success

                # <U1 1>  Error objack

                <L

                >

            >

        >.

 

    if ($StartMethod == 1)  # True

        # Start the tool running

        goto Do_Start

 

    else

        print "************************"

        print "* Waiting for Start... *"

        print "************************"

    end_if

 

 

 

# Material arrive scenario

 

label Do_MaterialReceived

    let SM_State = NotRead

    let event = MaterialReceived

    gosub send_report_E87_1

 

    let event = CID_NoState2WaitForHost

    gosub send_report_E87_1

 

    let event = LPCASM_NotAssociated2Associated

    gosub send_report_E87_1

 

    print "*************************************"

    print "* Waiting for ProceedWithCarrier... *"

    print "*************************************"

 

 

 

 

# Tool based slot map verification

 

label ToolBasedSlotMapVerification

    #let event = LPCASM_Associated2Associated

    #gosub send_report_E87_1

 

    let event = CID_WaitForHost2VerificationOK

    gosub send_report_E87_1

 

    let event = CarrierLocationChange

    let LocationID  = "Load Port 1 - Docked"

    gosub send_report_E87_4

 

    #let event = CASM_InAccess

    #gosub send_report_E87_1

 

    let event = SM_NotRead2VerificationOK

    let reason = 0

    gosub send_report_E87_2

 

    print "******************************"

    print "* Waiting for CreateEAJob... *"

    print "******************************"

 

 

 

 

label SM_WaitForHost2VerificationOK

    let event = SM_WaitForHost2VerificationOK

    let reason = 0

    gosub send_report_E87_2

   

    print "******************************"

    print "* Waiting for CreateEAJob... *"

    print "******************************"

 

 

 

 

label SM_WaitForHost2VerificationFAIL

    let event = SM_WaitForHost2VerificationFAIL

    let reason = 1

    gosub send_report_E87_2

    print "********************************"

    print "* Slot map verification failed *"

    print "********************************"

 

 

 

 

label SM_NotRead2WaitForHost

    let SM_State = WaitForHost

    let event = SM_NotRead2WaitForHost

    let reason = 0

    gosub send_report_E87_2

    print "*************************************"

    print "* Waiting for ProceedWithCarrier... *"

    print "*   or CancelCarrier...             *"

    print "*************************************"

 

 

 

 

label Do_Start

    let event = PrJobQueued

    let PRJobState = 0

    gosub send_report_E40

 

    let event = CtrlJobQueued

    gosub send_report_E94

 

    let event = CtrlJobSelected

    gosub send_report_E94

 

    #let event = AM_Manual2Auto

    #let AccessMode = 0

    #gosub send_report_E87_3

 

    #let event = ProcessProgramSelected

    #let PPChangeName = "Cleaner only.job"

    #let PPChangeStatus = 2

    #let PPExecName = "Transfer test no NOVA"

    #gosub send_report_recipe

 

    let event = CtrlJobSelected2Executing

    gosub send_report_E94

 

    let event = CASM_InAccess

    gosub send_report_E87_1

 

    let event = PrJobSetUp

    let PRJobState = 1

    gosub send_report_E40

 

    let event = PrJobSetUp2Processing

    let PRJobState = 3

    gosub send_report_E40

 

    let event = ProcessProgramChanged

    let PPChangeName = "MECH_ALL_CHAMGER"

    let PPChangeStatus = 1

    let PPExecName = ""

    gosub send_report_recipe

 

    let event = SubstProc_InProcess2ProcessingComplete

    let Substrate = "Lot1"

    gosub send_report_E90_2

 

    let event = SubstProc_InProcess2ProcessingComplete

    let Substrate = "Lot2"

    gosub send_report_E90_2

 

    let event = SubstProc_InProcess2ProcessingComplete

    let Substrate = "Lot3"

    gosub send_report_E90_2

 

    let event = SubstProc_InProcess2ProcessingComplete

    let Substrate = "Lot4"

    gosub send_report_E90_2

 

    let event = PrJobProcessComplete

    let PRJobState = 4

    gosub send_report_E40

 

    let event = PrJobCompleted

    let PRJobState = 4

    gosub send_report_E40

 

    let event = CtrlJobCompleted

    gosub send_report_E94

 

    let event = CASM_Complete

    gosub send_report_E94

 

    let event = CarrierLocationChange

    let LocationID = "Load Port 1 - Undocked"

    gosub send_report_E87_4

 

    let event = CtrlJobDestroy

    gosub send_report_E94

 

    let event = MaterialRemoved

    gosub send_report_E87_1

 

    let event = LPCASM_Associated2NotAssociated

    gosub send_report_E87_1

 

    let event = COSM_CarrierDestroyed

    gosub send_report_E87_1

 

    #let event = AM_Auto2Manual

    #let AccessMode = 1

    #gosub send_report_E87_3

 

    #let event = CarrierLocationChange

    #let LocationID = Port1Load

    #gosub send_report_E87_4

 

    print "********"

    print "* Done *"

    print "********"

 

 

 

 

# Sending reports events

 

label send_report_E87_1

    sleep 3

    let dataid = $dataid + 1

    let ceid = $event[$event]

    let rpt = $rptid_E87_1 + $rptid_offset             

 

    if ($event eq MaterialReceived)

        let tmp = ""

    else

        let tmp = $CarrierID

    end_if

    print "*********************************"

    print "* Sending event <" . $event . ">"

    print "*********************************"

    send name=tool client=$client S6F11 0 W

        <L

            <U1  $dataid>

            <U4  $ceid>

            <L

                <L

                    <U2 $rpt>            

                    <L

                        <U1 $PortID>   # PortID

                        <A $tmp> # CarrierID

                    >

                >

            >

        >.

    return

 

label send_report_E94

    sleep 3

    let dataid = $dataid + 1

    let ceid = $event[$event]

    let rpt = $rptid_E94 + $rptid_offset            

    print "*********************************"

    print "* Sending event <" . $event . ">"

    print "*********************************"

    send name=tool client=$client S6F11 0 W

        <L

            <U1  $dataid>

            <U4  $ceid>

            <L

                <L

                    <U2 $rpt>            

                    <L

                        <A $CtrlJobID>               

                    >

                >

            >

        >.

    return

 

label send_report_E87_2

    sleep 3

    let dataid = $dataid + 1

    let ceid = $event[$event]

    let rpt = $rptid_E87_2 + $rptid_offset            

    print "*********************************"

    print "* Sending event <" . $event . ">"

    print "*********************************"

    send name=tool client=$client S6F11 0 W

        <L

            <U1  $dataid>

            <U4  $ceid>

            <L

                <L

                    <U2 $rpt>             

                    <L

                        <U1 $PortID>                  # PortID

                        <A $CarrierID>                # CarrierID

                        <L

                            <U1 3>                    # Set to 1 to simulate a host based slot map failure

                            <U1 3>                    # Set to 1 to simulate a host based slot map failure

                            <U1 3>

                            <U1 3>

                            <U1 3>

                            <U1 3>

                            <U1 3>

                            <U1 3>

                            <U1 3>

                            <U1 3>

                            <U1 3>

                            <U1 3>

                            <U1 3>

                            <U1 3>

                            <U1 3>

                            <U1 3>

                            <U1 3>

                            <U1 3>

                            <U1 3>

                            <U1 3>

                            <U1 3>

                            <U1 3>

                            <U1 3>

                            <U1 3>

                            <U1 3>

                        >

                        <U1 $reason>  # Reason 0=OK, 2=Fail

                    >

                >

            >

        >.

    return

 

label send_report_E87_3

    sleep 3

    let dataid = $dataid + 1

    let ceid = $event[$event]

    let rpt = $rptid_E87_3 + $rptid_offset            

    print "*********************************"

    print "* Sending event <" . $event . ">"

    print "*********************************"

    send name=tool client=$client S6F11 0 W

        <L

            <U1  $dataid>

            <U4  $ceid>

            <L

                <L

                    <U2 $rpt>            

                    <L

                        <A $PortID> 

                        <A $AccessMode>

                    >

                >

            >

        >.

    return

 

label send_report_E87_4

    sleep 3

    let dataid = $dataid + 1

    let ceid = $event[$event]

    let rpt = $rptid_E87_4 + $rptid_offset            

    print "*********************************"