status = system.tag.readBlocking('[default]RECIPE/TRIG START PROCESS')[0].value
if status == 0:
if system.gui.confirm("Are you sure you want to start a new process run?", "User Acknowledgement"):
layer = system.gui.inputBox("Enter starting layer number:", "")
system.tag.writeBlocking('[default]RECIPE/START LAYER', layer)
system.tag.writeBlocking('[default]RECIPE/CURRENT LAYER', layer)
if layer != None:
txt = system.gui.inputBox("Enter run number:", "")
if txt != None:
date = system.date.now()
system.tag.writeBlocking('[default]RECIPE/START LAYER', layer)
system.tag.writeBlocking('[default]RECIPE/TRIG ABORT PROCESS', 0)
system.tag.writeBlocking('[default]Internal/Trending/Stop Process Trends', 0)
system.tag.writeBlocking('[default]Internal/TimeStamp2', date)
system.tag.writeBlocking('[default]RECIPE/TRIG PROCESS RUN NUMBER', txt)
#set constants
hmi_ActiveProcess= system.tag.readBlocking("[default]Internal/ActiveProcessRecipe")[0].value
system.tag.writeBlocking('[default]RECIPE/TRIG PROCESS NAME', hmi_ActiveProcess)
hmi_ActiveLayer = system.tag.readBlocking('[default]RECIPE/START LAYER')[0].value
activeheatrecipe = system.tag.readBlocking('[default]Internal/PairedHeatRecipe')[0].value
#rowcount
parameter = {"hmi_ActiveProcess" : hmi_ActiveProcess}
rowCount = system.db.runNamedQuery("PROCESS NQ/GET_ROWCOUNT", parameter)
system.tag.writeBlocking('[default]RECIPE/PROCESS/ROW COUNT', rowCount[0][0])
#layername
parameters = {"hmi_ActiveProcess" : hmi_ActiveProcess, "hmi_ActiveLayer" : hmi_ActiveLayer}
layerName = system.db.runNamedQuery('PROCESS NQ/GET LAYER', parameters)
hmi_ActiveMaterial = layerName[0][0]
system.tag.writeBlocking('[default]RECIPE/PROCESS/LAYER NAME', layerName[0][0])
#layer rate
layerRate = system.db.runNamedQuery("PROCESS NQ/GET LAYER RATE", parameters)
system.tag.writeBlocking('[default]RECIPE/PROCESS/LAYER RATE', layerRate[0][0])
#layer thickness
layerThickness = system.db.runNamedQuery("PROCESS NQ/GET LAYER THICKNESS", parameters)
system.tag.writeBlocking('[default]RECIPE/PROCESS/LAYER THICKNESS', layerThickness[0][0])
#layer codep
layerCoDep = system.db.runNamedQuery("PROCESS NQ/GET LAYER CODEP", parameters)
system.tag.writeBlocking('[default]RECIPE/PROCESS/LAYER CODEP', layerCoDep[0][0])
#layer assist
layerAssist = system.db.runNamedQuery("PROCESS NQ/GET LAYER ASSIST", parameters)
system.tag.writeBlocking('[default]RECIPE/PROCESS/LAYER ASSIST', layerAssist[0][0])
assistTrue = layerAssist[0][0]
#layer assist recipe
assistRecipe = system.db.runNamedQuery("PROCESS NQ/GET LAYER ASSIST NAME", parameters)
system.tag.writeBlocking('[default]RECIPE/PROCESS/LAYER ASSIST NAME', assistRecipe[0][0])
assistName = assistRecipe[0][0]
#layer apc
layerAPC = system.db.runNamedQuery("PROCESS NQ/GET LAYER APC", parameters)
system.tag.writeBlocking('[default]RECIPE/PROCESS/LAYER APC', layerAPC[0][0])
#layer pause
pause = system.db.runNamedQuery("PROCESS NQ/GET LAYER PAUSE", parameters)
system.tag.writeBlocking('[default]RECIPE/PROCESS/LAYER PAUSE', pause[0][0])
matparam = {"hmi_ActiveMaterial" : hmi_ActiveMaterial}
#material source
matSource = system.db.runNamedQuery("PROCESS NQ/GET MAT SOURCE", matparam)
system.tag.writeBlocking('[default]RECIPE/MATERIAL/SOURCE', matSource[0][0])
#material pocket
matPocket = system.db.runNamedQuery("PROCESS NQ/GET MAT POCKET", matparam)
system.tag.writeBlocking('[default]RECIPE/MATERIAL/POCKET', matPocket[0][0])
#material sweep
matSweep = system.db.runNamedQuery("PROCESS NQ/GET MAT SWEEP", matparam)
system.tag.writeBlocking('[default]RECIPE/MATERIAL/SWEEP', matSweep[0][0])
#material voltage
matVoltage = system.db.runNamedQuery("PROCESS NQ/GET MAT VOLTAGE", matparam)
system.tag.writeBlocking('[default]RECIPE/MATERIAL/VOLTAGE', matVoltage[0][0])
#material oxygen
matOxygen = system.db.runNamedQuery("PROCESS NQ/GET MAT OXYGEN", matparam)
system.tag.writeBlocking('[default]RECIPE/MATERIAL/OXYGEN', matOxygen[0][0])
#material xtal
matXtal = system.db.runNamedQuery("PROCESS NQ/GET MAT XTAL", matparam)
system.tag.writeBlocking('[default]RECIPE/MATERIAL/XTAL', matXtal[0][0])
if assistTrue == 1 :
assist = {"hmi_ActiveAssist" : assistName}
assistBC = system.db.runNamedQuery("PROCESS NQ/GET ASSIST BIAS C", assist)
system.tag.writeBlocking('[default]RECIPE/ASSIST/BIAS CURRENT', assistBC[0][0])
assistEC = system.db.runNamedQuery("PROCESS NQ/GET ASSIST EMISSION C", assist)
system.tag.writeBlocking('[default]RECIPE/ASSIST/EMISSION CURRENT', assistEC[0][0])
assistDC = system.db.runNamedQuery("PROCESS NQ/GET ASSIST DISCHARGE C", assist)
system.tag.writeBlocking('[default]RECIPE/ASSIST/DISCHARGE CURRENT', assistDC[0][0])
assistDV = system.db.runNamedQuery("PROCESS NQ/GET ASSIST DISCHARGE V", assist)
system.tag.writeBlocking('[default]RECIPE/ASSIST/DISCHARGE VOLTAGE', assistDV[0][0])
tag = {"hmiActiveHeat" : activeheatrecipe}
#p1
P1HOURS = system.db.runNamedQuery('PROCESS NQ/HEAT/STEP1 HOURS POPULATE',tag)
adjP1Hours = P1HOURS[0][0]
system.tag.writeBlocking('[default]RECIPE/HEAT/P1 RAMP UP HOURS', adjP1Hours)
P1MINUTES = system.db.runNamedQuery('PROCESS NQ/HEAT/STEP1 MINS POPULATE',tag)
adjP1Minutes = P1MINUTES[0][0]
system.tag.writeBlocking('[default]RECIPE/HEAT/P1 RAMP UP MINUTES', adjP1Minutes)
P1SETPOINT = system.db.runNamedQuery('PROCESS NQ/HEAT/STEP1 TARGET POPULATE', tag)
adjP1Setpoint = P1SETPOINT[0][0]
system.tag.writeBlocking('[default]RECIPE/HEAT/P1 RAMP UP SETPOINT', adjP1Setpoint)
P1STEP = system.db.runNamedQuery('PROCESS NQ/HEAT/STEP1 STEP POPULATE', tag)
system.tag.writeBlocking('[default]RECIPE/HEAT/P1 RAMP UP STEP', P1STEP)
#p2
P2HOURS = system.db.runNamedQuery('PROCESS NQ/HEAT/STEP2 HOURS POPULATE',tag)
adjP2Hours = P2HOURS[0][0]
system.tag.writeBlocking('[default]RECIPE/HEAT/P2 PREPROCESS HOURS', adjP2Hours)
P2MINUTES = system.db.runNamedQuery('PROCESS NQ/HEAT/STEP2 MINS POPULATE',tag)
adjP2Minutes = P2MINUTES[0][0]
system.tag.writeBlocking('[default]RECIPE/HEAT/P2 PREPROCESS MINUTES', adjP2Minutes)
P2SETPOINT = system.db.runNamedQuery('PROCESS NQ/HEAT/STEP2 TARGET POPULATE', tag)
adjP2Setpoint = P2SETPOINT[0][0]
system.tag.writeBlocking('[default]RECIPE/HEAT/P2 PREPROCESS SETPOINT', adjP2Setpoint)
P2STEP = system.db.runNamedQuery('PROCESS NQ/HEAT/STEP2 STEP POPULATE', tag)
system.tag.writeBlocking('[default]RECIPE/HEAT/P2 PREPROCESS STEP', P2STEP)
#p3
P3DEVIATION = system.db.runNamedQuery('PROCESS NQ/HEAT/STEP3 DEVIATION POPULATE',tag)
adjP3Deviation = P3DEVIATION[0][0]
system.tag.writeBlocking('[default]RECIPE/HEAT/P3 PROCESS DEVIATION', adjP3Deviation)
P3OFFSET = system.db.runNamedQuery('PROCESS NQ/HEAT/STEP3 OFFSET POPULATE',tag)
adjP3Offset = P3OFFSET[0][0]
system.tag.writeBlocking('[default]RECIPE/HEAT/P3 PROCESS SETPOINT OFFSET', adjP3Offset)
P3SETPOINT = system.db.runNamedQuery('PROCESS NQ/HEAT/STEP3 TARGET POPULATE', tag)
adjP3Setpoint = P3SETPOINT[0][0]
system.tag.writeBlocking('[default]RECIPE/HEAT/P3 PROCESS SETPOINT', adjP3Setpoint)
P3STEP = system.db.runNamedQuery('PROCESS NQ/HEAT/STEP3 STEP POPULATE', tag)
system.tag.writeBlocking('[default]RECIPE/HEAT/P3 PROCESS STEP', P3STEP)
#p4
P4HOURS = system.db.runNamedQuery('PROCESS NQ/HEAT/STEP4 HOURS POPULATE',tag)
adjP4Hours = P4HOURS[0][0]
system.tag.writeBlocking('[default]RECIPE/HEAT/P4 POSTPROCESS HOURS', adjP4Hours)
P4MINUTES = system.db.runNamedQuery('PROCESS NQ/HEAT/STEP4 MINS POPULATE',tag)
adjP4Minutes = P4MINUTES[0][0]
system.tag.writeBlocking('[default]RECIPE/HEAT/P4 POSTPROCESS MINUTES', adjP4Minutes)
P4SETPOINT = system.db.runNamedQuery('PROCESS NQ/HEAT/STEP4 TARGET POPULATE', tag)
adjP4Setpoint = P4SETPOINT[0][0]
system.tag.writeBlocking('[default]RECIPE/HEAT/P4 POSTPROCESS SETPOINT', adjP4Setpoint)
P4STEP = system.db.runNamedQuery('PROCESS NQ/HEAT/STEP4 STEP POPULATE', tag)
system.tag.writeBlocking('[default]RECIPE/HEAT/P4 POSTPROCESS STEP', P4STEP)
#p5
P5HOURS = system.db.runNamedQuery('PROCESS NQ/HEAT/STEP5 HOURS POPULATE',tag)
adjP5Hours = P5HOURS[0][0]
system.tag.writeBlocking('[default]RECIPE/HEAT/P5 RAMP DOWN HOURS', adjP5Hours)
P5MINUTES = system.db.runNamedQuery('PROCESS NQ/HEAT/STEP5 MINS POPULATE',tag)
adjP5Minutes = P5MINUTES[0][0]
system.tag.writeBlocking('[default]RECIPE/HEAT/P5 RAMP DOWN MINUTES', adjP5Minutes)
P5SETPOINT = system.db.runNamedQuery('PROCESS NQ/HEAT/STEP5 TARGET POPULATE', tag)
adjP5Setpoint = P5SETPOINT[0][0]
system.tag.writeBlocking('[default]RECIPE/HEAT/P5 RAMP DOWN SETPOINT', adjP5Setpoint)
P5STEP = system.db.runNamedQuery('PROCESS NQ/HEAT/STEP5 STEP POPULATE', tag)
system.tag.writeBlocking('[default]RECIPE/HEAT/P5 RAMP DOWN STEP', P5STEP)
system.tag.writeBlocking('[default]RECIPE/TRIG START PROCESS', 1)
else :
system.tag.writeBlocking('[default]RECIPE/START LAYER', 1)
else :
system.tag.writeBlocking('[default]RECIPE/START LAYER', 1)
if status == 1:
system.gui.warningBox("Process is actively running.", "User Alert")
In the above code, I have a host of named queries running which are pulling recipe data relevant to the user-defined process. In total, there are roughly 5 different SQL tables that these are reading from, and each table might have 5-10 tags assigned to it. This is a manual transfer of data from the SQL tables into OPC tags for process control.
I figure there has to be a better way of doing this because I occasionally get unresponsive moments on my client. I’m assuming this is because of the amount of querying that’s going on? I’m looking for a way to group these queries by SQL table and shrink my total system.db.runNamedQuery to a handful. I figure this would help speed up my data transfer and not cause client issues.