# 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
"*********************************"