Das im vorherigen Abschnitt programmierte Ventilverhalten ... ist unlogisch. Im Handler zum Klicken auf die Schaltfläche "Öffnen" oder "Schließen" legen wir direkt den Wert des Elements "Position" fest. Da wir im DPT selbst bereits die Befehle "Öffnen" und "Schließen" haben.
, - , , , . workshop , .
«» «».
main(mapping event)
{
dpSet("System1:Flap1.Commands.Open", 1, "System1:Flap1.Commands.Close", 0);
}, DPE, , , . «» «», « » (, , , ).
«Close»
, Para
, , . open close .
gedi Scripts, Add New CTRL Script
, Model
. . - WinCC OA, dpConnect, . .
dpConnect . , , .
callback .
WinCC OA. «» dpGet , , .
, dpConnect . — callback- ( OnOpen_CB), — , . , , - main Model :
main()
{
dpConnect("OnOpen_CB", "System1:Flap1.Commands.Open");
}callback-. — ( string) «» ( «» ). .
void OnOpen_CB(string dp1, bool bNewValue)
{
;
}, . «» «», , 90. «», — 0.
void OnOpen_CB(string dp1, bool bNewValue)
{
if (bNewValue) {
dpSet("System1:Flap1.Inputs.Position", 90);
} else {
dpSet("System1:Flap1.Inputs.Position", 0);
}
}- . «» Control Manager. , (Control), . Control. . , , ?
WinCC OA Append new manager, Control. (Start mode) (manual), . . 2. 2? 1 . . . , ui 1 ctrl 1, ui ( ctrl) . «-num 2». , . :
Manager Start ( ). , 2.
.
, Control Manager (, main) . main() callback , , dpConnect ( ). , , control- . - .
Der Steuerungsmanager selbst erstellt beim Start einen eigenen separaten Prozess. Seine Hauptfunktion wird in einem separaten Thread (Thread) ausgeführt. Die Rückruffunktion (in unserem Fall OnOpen_CB) wird ebenfalls in einem separaten Thread gestartet. Nach der Ausführung funktioniert die Hauptfunktion nicht mehr, aber der Rückruf befindet sich weiterhin im PC-Speicher (in einem eigenen Thread) und wird aufgerufen, wenn sich die "signierte" Variable ändert.