|
There are no translations available.
Meine Arbeitslisten (jobs) sind neben der Objektbasiertheit DAS wesentliche Element meiner Software. Sie haben mit dem Bildschirm interaktiv einen Ablauf Schritt für Schritt definiert und dieser steht dann für einen automatischen Lauf zur Verfügung.
Die Prozesse sind in mehrere Arbeitslisten aufgeteilt. Alles was doppelt gemacht werden soll, ist eine Arbeistliste, die von einer anderen aufgerufen werden kann.
Es folgt ein Beispiel zum Start der Massenspektrometer-Datenaufnahme an der Karbonatanlage. Sie läuft in einer Endlosschleife und immer, wenn der Karbo-Prozess eine Probe bereit hat, signalisiert er dies dieser Arbeitsliste (Schritt: Handler doGetRemoteStatus "","","1") Minütlich wird von diesem Unterprogramm (doGetRemoteStatus) mit der Karbonatanlage kommuniziert und synchronisiert.
Und der Punkt (Job 251_Karbo_Datenaufnahme 365 14679) ruft die Arbeitsliste für die Massenspektrometermessung auf. Die Karbonatanlage präpariert inzwischen die nächste Probe.
Das Schlüsselwort Handler ist der Aufruf eines in Hypertalk/Transscript geschriebenen Programms. So können beliebige eigene "lower-level" Routinen von Ihnen eingebunden werden.
Anmerkung: mein Webeditor löscht mir immer die von meinem Programm gemachten Einrückungen ind den IFs ind REPEATs
hier ein Pfad zu einigen gelisteten AL
Start_251_Karbo 366 14679 23.04.2008 8:32 -- Beginn eines Meßvorgangs myWaitDoReset = 1 put eventStop Handler doRemoteProgramInit Job 251_SyS_SetVars 478 14679 myRwValue = 8 myRefPulsTime = 5 myDoSecRef = 0 myRemoteDevice = "nn" -- myRefTime = 21600 myTemp = time_of_ReferenceInlet -- check for new refgas myDoRef = 1 IF myTemp > myRefTime ask ,es müsste wieder ReferenzGas eingelassen werden? -- nein myDoRef = 0 end ask -- einlassen IF myDoRef = 1 Handler doFortschritt "start zero","Referenzgas-Einlass", Job 251_Sys_AL_Refgas_Inlet 382 14679 END IF END IF REPEAT Handler doFortschritt "start zero","Messung fertig, Abfrage der Anlagen nach Probengas!", Handler doLockLoop Handler doRemoteSet warte Handler doGetRemoteStatus "","","1" IF myRemoteDevice = "HyperCarbo" Handler doRemoteSet select REPEAT Handler doFortschritt "","Probe im Kühlfinger, warte auf freien anderen Kühlfinger", Handler doGetRemoteStatus "6","","" IF myR_Karbo = "go" EXIT repeat END IF WAIT 2 seconds IF mySampleInWork < 25 CLOSE C-KF_L1 Kapi,400 ELSE CLOSE C-KF_L2 Kapi,402 END IF WAIT 2 seconds END repeat IF myRemoteDevice = "HyperCarbo" Handler doRemoteSet "carbo" Job 251_Karbo_Datenaufnahme 365 14679 myRemoteDevice = 1 END IF END IF Handler doCompact IF myDoSecRef = 1 Job 251_Ref-Ext 464 14679 myDoSecRef = 0 END IF Job 251_Systemtest 364 14679 -- IF myRemoteDevice = 1 -- myRemoteDevice = nn -- Job SYS_MS_Check 458 14679 -- END IF Handler doFortschritt "","Messung fertig, warte 15 Sekunden bis zur nächsten Proben-Abfrage", Handler doRemoteSet warte myWaitSeconds = 15 -- Job SYS_DE_wait 452 14679 Handler doFortschritt "end","", -- myVar = ( line 63 of fld id 102 ) Handler put doCheckVar ("myVar",line 63 of fld id 102,"") into myDummy IF myVar > 650 Handler doDisplayError "Die Referenz-Gas-Masse 40 (Luft) ist zu hoch = myVar mV","",red END IF IF myVar > 5000 ask ,Die Referenz-Gas-Masse 40 = Luft = myVar mV ist zu groß! STOP END IF END repeat
es folgt die AL zur Probenübernahme:
251_Karbo_Datenaufnahme 365 14679 08.05.2007 13:37 -- misst gas myDoShowErr = 0 myTO1 to zero myTO2 to zero myTO3 to zero myTO4 to zero Job 251_Systemtest 364 14679 -- Handler doKarboValveStatus "","","399 446 286 274 448 401" Handler doCalculateKarboVolt Handler doFortSchritt "", "gerechneter Probendruck = myCalcVolt [V]" myWaitSeconds = theSystem14 myTemp = 0 myKf1ExFaktor = 5 myKf2ExFaktor = 3.7 myKf1ExGFaktor = 3.5 myKf2ExGFaktor = 4.1 myKFStayTime = 180 myMaxVolt = 6.5 myExpMarker = 0.95 OPEN V11 Sa,21 WAIT 5 seconds Handler doGetCupBellow SA myTO1 = myCupValue OPEN V21 Ref,19 IF mySampleInWork < 25 myKfFaktor = 0.88 IF myCalcVolt > myMaxVolt myCalcVolt = ( myCalcVolt / myKf1ExFaktor ) Handler doFortSchritt "", "kleine Expansion = myCalcVolt [V]" CLOSE C-Expansion L1,287 REPEAT OPEN C-KF_L1 Exp.,447 WAIT 5 seconds CLOSE C-KF_L1 Exp.,447 WAIT 5 seconds myTemp INCR 1 IF myTemp > 7 EXIT repeat END IF END repeat myExpMarker = 1.02 OPEN C-KF_L1 Exp.,447 Handler put K into line 217 of fld id 102 Job SYS_DE_wait 452 14679 IF myCalcVolt > myMaxVolt Handler put G into line 217 of fld id 102 CLOSE C-KF_L1 Exp.,447 myExpMarker = 0.99 myCalcVolt = ( myCalcVolt / myKf1ExGFaktor ) Handler doFortSchritt "", "große Expansion = myCalcVolt [V]" IF myCalcVolt > 6 myCalcVolt = ( myMaxVolt * 0.9 ) END IF END IF END IF ELSE myKfFaktor = 0.96 IF myCalcVolt > myMaxVolt myCalcVolt = ( myCalcVolt / myKf2ExFaktor ) Handler doFortSchritt "", "kleine Expansion = myCalcVolt [V]" CLOSE C-Expansion L2,275 Handler put K into line 217 of fld id 102 REPEAT OPEN C-KF_L2 Exp,449 WAIT 5 seconds CLOSE C-KF_L2 Exp,449 WAIT 5 seconds myTemp INCR 1 IF myTemp > 7 EXIT repeat END IF END repeat myExpMarker = 1.02 OPEN C-KF_L2 Exp,449 Job SYS_DE_wait 452 14679 IF myCalcVolt > myMaxVolt Handler put G into line 217 of fld id 102 CLOSE C-KF_L2 Exp,449 myExpMarker = 0.99 myCalcVolt = ( myCalcVolt / myKf2ExGFaktor ) Handler doFortSchritt "", "große Expansion = myCalcVolt [V]" IF myCalcVolt > 6 myCalcVolt = ( myMaxVolt * 0.9) END IF END IF END IF END IF OPEN V11 Sa,21 WAIT 5 seconds Handler doGetCupBellow SA myTO2 = myCupValue OPEN V21 Ref,19 Handler doFortSchritt "", "Errechne Ref-Gas Position myCalcVolt [V]" myKfFaktor = ( myKfFaktor * myExpMarker ) mySollVolt = ( myKfFaktor * myCalcVolt ) Handler doGetPercent mySollVolt IF myKarboAdjust < 17 Handler doFortSchritt "", "RefGasMenge wird nicht reichen = myKarboAdjust [%]" myVolValue = 90 Job 251_Vol_Handling 312 14679 END IF OPEN V11 Sa,21 WAIT 5 seconds Handler doGetCupBellow SA myTO3 = myCupValue OPEN V21 Ref,19 IF myKarboAdjust > 90 Handler doFortSchritt "", "RefGasMenge ist zu groß = myKarboAdjust [%]" myVolValue = 5 Job 251_Vol_Handling 312 14679 END IF OPEN V11 Sa,21 WAIT 5 seconds Handler doGetCupBellow SA myTO4 = myCupValue OPEN V21 Ref,19 Handler doGetPercent mySollVolt do VOLUME myKarboAdjust % myWaitSeconds = 120 Job SYS_DE_wait 452 14679 myWaitSeconds = theSystem14 REPEAT myTemp = time_of_WarmKf IF myTemp > myKFStayTime EXIT repeat END IF WAIT 2 seconds END repeat OPEN V11 Sa,21 CLOSE KF-ST_evac,245 WAIT 2 seconds IF myTO1 > .2 myDoShowErr = 1 END IF IF myTO2 > .2 myDoShowErr = 1 END IF IF myTO3 > .2 myDoShowErr = 1 END IF IF myTO4 > .2 myDoShowErr = 1 END IF Handler doGetCupBellow SA IF myCupValue > .2 myTO5 = myCupValue myDoShowErr = 1 END IF IF myDoShowErr = 1 -- Handler doDisplayError "Druck schon da T1: myTO1 T2: myTO2 T3: myTO3 T4: myTO4 end: myCupValue ","","" END IF OPEN KF-Line ST,243 Handler doMarkTimes Handler doFortSchritt "", "RefRefGasVentil wird geöffnet" IF mySampleInWork < 25 OPEN C-KF_L1 Kapi,400 -- myKfFaktor = 0.88 ELSE OPEN C-KF_L2 Kapi,402 -- myKfFaktor = 0.98 END IF -- myKfFaktor = ( myKfFaktor * myExpMarker ) Handler doFortSchritt "", "Sample-GasVentil wird geöffnet" -- Handler doMarkTimes myWaitSeconds = theSystem14 Job SYS_DE_wait 452 14679 -- Handler doGetPerTick Handler doGetCupBellow SA Handler doFortSchritt "", "Probe hat myCupValue [V]" Handler put myCupValue into line 219 of fld id 102 Handler doHandleKarboKFParams 1 IF myCupValue > myMaxVolt IF mySampleInWork < 25 CLOSE C-KF_L1 Exp.,447 ELSE CLOSE C-KF_L2 Exp,449 END IF REPEAT Handler doGetCupBellow SA Handler doFortSchritt "", "Die Gasmenge ist zu groß! Warte bis myMaxVolt Volt jetzt: myCupValue V" IF myCupValue < myMaxVolt EXIT repeat END IF IF myCupValue > 7 myWaitSeconds = 120 ELSE myWaitSeconds = theSystem14 END IF CLOSE V11 Sa,21 Job SYS_DE_wait 452 14679 OPEN V11 Sa,21 WAIT 5 seconds END repeat Handler doGetCupBellow SA END IF Handler doMarkTimes SPa Handler doGetCupBellow SA myTemp = myKarboAdjust mySollNew = ( myCupValue * myKfFaktor ) OPEN V21 Ref,19 Job SYS_DE_wait 452 14679 Handler doGetCupBellow Ref Handler doGetPercent mySollNew ,"1" IF mySampleInWork < 25 mySollTwo = ( mySollNew * .95) ELSE mySollTwo = ( mySollNew * .97) END IF Handler doGetPercent mySollTwo myDoAdjust = 0 myAdOffset = ( mySollNew * .09 ) -- Handler doGetPercent mySollNew ,"1" -- Handler doDisplayError "%-te ist: myTemP % = myCupValue V -- neu: myKarboAdjust % mySollNew V","warn","red" IF myCupValue > mySollNew myDoAdjust = 1 END IF IF myCupValue < ( mySollNew - myAdOffset ) myDoAdjust = 1 END IF IF myDoAdjust > 0 OPEN KF-Line ST,243 -- myTempN = ( mySollNew * .95 ) -- Handler doGetPercent myTempN -- Handler doDisplayError "Kein Druckabgleich beim 1. Mal. ist: myCupValue bei myTemp % -- Soll: mySollNew bei myKarboAdjust %","warn","red" IF myKarboAdjust < 6 myKarboAdjust = 5 END IF do VOLUME myKarboAdjust % -- Job SYS_DE_wait 452 14679 -- IF myBellow > myKarboAdjust myBellowDiff = ( myKarboAdjust - myBellow ) -- ELSE -- myWaitSeconds = ( myKarboAdjust - myBellow ) -- END IF -- myWaitSeconds = ( myWaitSeconds * 250 / myBellow ) -- IF myWaitSeconds > 45 myWaitSeconds = 10 -- END IF -- IF myWaitSeconds < 5 -- myWaitSeconds = 5 -- END IF Handler doFortSchritt "", "mache einige Zyklen nach Feineinstellung" Job SYS_DE_wait 452 14679 OPEN V11 Sa,21 Job SYS_DE_wait 452 14679 OPEN V21 Ref,19 Job SYS_DE_wait 452 14679 OPEN V11 Sa,21 Job SYS_DE_wait 452 14679 OPEN V21 Ref,19 Job SYS_DE_wait 452 14679 Handler put " myBellowDiff " after line 4 of fld id 102 END IF IF myDoShowErr = 1 Handler put " myTO1 myTO2 myTO3 myTO4 myTO5 " after line 4 of fld id 102 END IF myWaitSeconds = theSystem14 -- Handler doGetPercent mySollNew ,"1" OPEN V11 Sa,21 Job SYS_DE_wait 452 14679 myTemp = 0 Handler doGetCupBellow SAmple CLOSE KF-Line ST,243 IF mySampleInWork < 25 CLOSE C-KF_L1 Exp.,447 ELSE CLOSE C-KF_L2 Exp,449 END IF Handler doFortSchritt "", "Die Messung beginnt" OPEN V21 Ref,19 Job SYS_DE_wait 452 14679 Handler doMarkTimes EPa Job 251_doGetData 383 14679 OPEN V21 Ref,19 Handler doFortSchritt "", "Deltamessung beendet! Daten sichern und abgleichen" Handler doUpDate print 251 Karbo z1 324 save doSaveAllPrintValues Handler doGetCupBellow "Ref" Handler doEndMsRemote IF myCupValue > 1 Handler doJumpMass "ex","","B" Handler doNoteCalibration "44","2","","","","251" END IF CLOSE KF-Line ST,243 WAIT 1 seconds OPEN KF-ST_evac,245 Handler doFortSchritt "end", "Daten sind gedruckt und gesichert. Kf wird evakuiert." -- Handler doEndMsRemote OPEN V21 Ref,19 -- Handler doKarboValveStatus "","","399 446 286 274 448 401"
und auch noch die zur Datenaufnahme:
251_doGetData 383 14679 29.04.2005 12:34 -- Datenaufnahme über Arbeitsliste -- Druckabgleich erfolgt -- Handler doMarkTimes SCo myWaitSeconds = ( theSystem14 - 1 ) myWaitDoReset = 1 Handler doFortSchritt "zero", "Datenaufnahme der Rohdaten, Probenspannung herstellen" myStopAcq = "Start" Handler doFortSchritt "", "Info-Felder aktualisieren" Handler doUpDateInfoField Handler doGetCupBellow SA Handler doMarkTimes SCo IF myCupValue < .8 Handler doInitALAcq Handler doFortSchritt "", "Vor Beginn der Rohdatenaufnahme noch einige Wechsel" Handler doSetLowVoltCondition myWaitSeconds = theSystem14 IF myCupValue < .4 Handler doSetLowVoltCondition "1" myWaitSeconds = theSystem14 END IF ELSE Handler doInitALAcq END IF myCounter = 0 -- REPEAT -- OPEN V11 Sa,21 -- Job SYS_DE_wait 452 14679 -- Handler doGetCupBellow SA -- OPEN V21 Ref,19 -- Job SYS_DE_wait 452 14679 -- Handler doGetCupBellow Ref -- myCounter INCR 1 -- IF myCounter = 2 -- EXIT repeat -- END IF -- END repeat Handler doGetBackGround "","","18","R" Handler doFortSchritt "", "Die" && myCycles && "Zyklen beginnen" Job SYS_DE_wait 452 14679 Handler doTigerAcq "R" REPEAT Handler doBringMeTofront Job SYS_DE_wait 452 14679 Handler doTigerAcq IF myStopAcq = "end" EXIT repeat END IF myCycles DECR .5 Handler doFortSchritt "", "Noch" && myCycles && "Zyklen nach" END repeat Handler doFortSchritt "", "Alle Zyklen durch!" Job SYS_DE_wait 452 14679 Handler doTigerAcq Handler doGetBackGround OPEN V11 Sa,21 Handler doMarkTimes ECo -- Job SYS_DE_wait 452 14679 Handler doFortSchritt "", "Rohdatenaufnahme beendet" CLOSE KF-Line ST,243 UPDATE Raumtemperatur,216 -- OPEN KF-ST_evac,245 Handler doStopAcq
|