前のセクションでプログラムされたバルブの動作は...非論理的です。「開く」または「閉じる」ボタンをクリックするためのハンドラーで、Positionという要素の値を直接設定します。DPT自体には、すでに「開く」と「閉じる」というコマンドがあります。
, - , , , . 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- . - .
コントロールマネージャ自体は、起動時に独自の個別のプロセスを作成します。その主な機能は別のスレッド(スレッド)で実行されます。コールバック関数(この場合はOnOpen_CB)も別のスレッドで実行されます。実行後、main関数は機能を停止しますが、コールバックは引き続きPCメモリ(独自のスレッド)にあり、「signed」変数が変更されると呼び出されます。