Perilaku katup yang diprogram di bagian sebelumnya ... tidak logis. Di handler untuk mengklik tombol "Buka" atau "Tutup", kami langsung menetapkan nilai elemen yang disebut Posisi. Mengingat di DPT sendiri, kita sudah memiliki perintah “Open” dan “Close”.
, - , , , . 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- . - .
Manajer kontrol itu sendiri membuat proses terpisahnya sendiri saat memulai. Fungsi utamanya dijalankan dalam utas terpisah (utas). Fungsi panggilan balik (dalam kasus kami OnOpen_CB) juga diluncurkan di utas terpisah. Setelah eksekusi, fungsi utama berhenti bekerja, tetapi callback terus berada di memori PC (di utasnya sendiri) dan dipanggil saat variabel "bertanda" berubah.