I have Numeric Label “TempSP” with its value bound to:
lookup({Root Container.R1P1.Chart.TempSP}, {Root Container.R1P1.Calc_CurrentStep}, 0, 'StepNumber', 'Temperature')
I also have Numberic Label “CurrentStep” with its value bound to:
{Root Container.R1P1.Calc_CurrentStep}
In the Property Change Event for “CurrentStep” I have the following action script:
if event.propertyName == "value":
#Log SerialNumber, StepNumber, TempSP, TempACT to BarrelRecipeHistory
SerialNumber = event.source.parent.getComponent('SerialNumber').text
StepNumber = event.source.value
TempSetpoint = event.source.parent.getComponent('TempSP').value
#TempActual = event.source.parent.getComponent('TempACT').value
TempActual = TempSetpoint + 3
query = "INSERT INTO BarrelRecipeHistory (SerialNumber, StepNumber, TempSetpoint, TempActual, TimeStamp) VALUES ('%s', %d, %d, %d, Current_TimeStamp)" %(SerialNumber, StepNumber, TempSetpoint, TempActual)
fpmi.db.runUpdateQuery(query, "ENG_TEMP")
fpmi.db.refresh(event.source.parent.getComponent('Chart'), "TempActual")
#Stop Timer if 5 Minutes Past End of Profile
if (event.source.value > (event.source.parent.getComponent('NumSteps').value) + 30):
event.source.parent.Running = 0
I am having a problem where “TempSP” does not update before the action script in “CurrentStep” is ran. This used to work.
Travis suggested that I use the fpmi.system.invokeLater(function). I have not been able to add that to my script without getting errors?
My attempt is shown below, but I get the error: (NameError: TempSetpoint)
if event.propertyName == "value":
#Stop Timer if 5 Minutes Past End of Profile
if (event.source.value > (event.source.parent.getComponent('NumSteps').value) + 30):
event.source.parent.Running = 0
def LogTemperature(SerialNumber = event.source.parent.getComponent('SerialNumber').text, TempSetpoint = event.source.parent.getComponent('TempSP').value, StepNumber = event.source.value, TempActual = TempSetpoint + 3):
query = "INSERT INTO BarrelRecipeHistory (SerialNumber, StepNumber, TempSetpoint, TempActual, TimeStamp) VALUES ('%s', %d, %d, %d, Current_TimeStamp)" %(SerialNumber, StepNumber, TempSetpoint, TempActual)
fpmi.db.runUpdateQuery(query, "ENG_TEMP")
fpmi.db.refresh(event.source.parent.getComponent('Chart'), "TempActual")
fpmi.system.invokeLater(LogTemperature)
Thank you for your help.
Jake