El comportamiento de la válvula programado en la sección anterior ... es ilógico. En el controlador para hacer clic en el botón "Abrir" o "Cerrar", establecemos directamente el valor del elemento llamado Posición. Dado que en el propio DPT, ya tenemos los comandos "Abrir" y "Cerrar".
, - , , , . 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- . - .
El propio administrador de control crea su propio proceso independiente al inicio. Su función principal se ejecuta en un hilo (hilo) separado. La función de devolución de llamada (en nuestro caso OnOpen_CB) también se lanza en un hilo separado. Después de la ejecución, la función principal deja de funcionar, pero la devolución de llamada continúa en la memoria de la PC (en su propio hilo) y se llama cuando cambia la variable "firmada".