Temperaturregelung instanziieren und initiieren
Für bestimmte Applikationen soll aus dem Umfang der TwinCAT 3 Plastic Application nur die Temperaturregelung verwendet werden. In diesem, aber auch im normalen Anwendungsfall muss hierfür der Temperaturregler einzeln instanziiert und initiiert werden können. Im folgenden Beispiel wird dieser Prozess Schritt für Schritt durchlaufen.
- 1. Legen Sie eine neue Task mit einer Zykluszeit von 25 ms an. Dies ist nicht zwingend notwendig, wird aber - basierend auf Erfahrungswerten - empfohlen.
- 2. Erzeugen Sie eine Instanz des
FB_Temperature
und desFB_TemperatureHmi
und ordnen Sie das Mapping der neu angelegten Task zu.
{attribute “qualified_only”}
VAR_GLOBAL
{attribute “TcHmiSymbol.Hide”}
{attribute “TcContextName”:=”TempTask”}
fbTemperature: FB_Temperature;
fbTemperatureHmi: FB_ TemperatureHmi;
END_VAR
- 3. Initialisieren Sie die Temperature-Klassen. Hierfür stehend folgende Möglichkeiten zur Verfügung:
- Wir empfehlen die Verwendung der FB_BaseRuntime. Mithilfe dieser werden die Initialisierungsschritte automatisiert durchlaufen. Hierfür müssen Sie lediglich eine Instanz der Runtime erzeugen (sofern noch nicht vorhanden), die Zyklusaufrufe definieren und die Temperaturklassen der Runtime übergeben.
VAR_GLOBAL
fbRuntime: FB_BaseRuntime;
END_VAR
// Program with its task call referenced to PlcTask
PROGRAM PlcMain
// Build list of classes that should be called cyclically by the runtime
_Build();
// Standard call of Cyclic
fbRuntime.Cyclic();
// Program with its task call referenced to TempTask
PROGRAM TempMain
// Slow call for Temperature
fbRuntime.TemperatureCyclic()
// Method to define the runtime objects
METHOD _Build
VAR_INST
bBuild: BOOL; // Latch the Build only gets executed once
END_VAR
IF NOT bBuild THEN
bBuild := TRUE;
// Append temperature classes to be initialized and called by the runtime
fbRuntime.Append(fbTemperature, fbTemperatureHmi);
// Further objects to append
fbRuntime.Append(fbOtherObject, fbOtherObjectHmi);
END_IF
- Alternativ können Sie die Objekte auch manuell verbinden und initialisieren. Rufen Sie hierfüre die
SetHMI()
undInit()
Methode desFB_Temperature
auf und überprüfen Sie den Rückgabewert auf erfolgreiche Ausführung. Wenn dies der Fall ist, können Sie dieParamInit()
Methode zur Parameterinitialisierung und die Zyklusmethode aufrufen.
VAR
bInit: BOOL;
bInitFailed: BOOL;
bParamInit: BOOL;
hr: HRESULT;
END_VAR
IF NOT bInit AND NOT bInitFailed THEN
hr := fbTempCtrl.SetHMI(fbTempCtrlHmi);
hr := fbTempCtrl.Init();
IF SUCCEEDED(hr) THEN
bInit := TRUE;
ELSE
bInitFailed := TRUE;
END_IF
ELSIF bInit THEN
IF NOT bParamInit THEN
hr := fbTempCtrl.ParamInit();
IF SUCCEEDED(hr) THEN
bParamInit := TRUE;
END_IF
END_IF
fbTempCtrl.Cyclic();
END_IF