WinCC OA教程。第3部分。全局脚本(控制脚本)

上一节中编程的阀门行为是不合逻辑的。在用于单击“打开”或“关闭”按钮的处理程序中,我们直接设置名为Position的元素的值。尽管在DPT本身中,我们已经具有“打开”和“关闭”命令。

数据点类型“襟翼”
数据点类型“襟翼”

, - , , , . workshop , .

«» «».

按下“打开”按钮的脚本
«Open»

main(mapping event)
{
  dpSet("System1:Flap1.Commands.Open", 1, "System1:Flap1.Commands.Close", 0);
}
“打开”按钮的修改脚本
«Open»

, DPE, , , . «» «», « » (, , , ).

«Close»

, Para

按下“打开”按钮
«Open»
按下“关闭”按钮
«Close»

, , . open close .

gedi Scripts, Add New CTRL Script

, Model

. . - WinCC OA, dpConnect, . .

  1. dpConnect . , , .

  2. 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». , . :

阀门仿真的控制管理器属性
Control

Manager Start ( ). , 2.

模拟脚本成功启动

.

通过按下“打开”按钮,可以看到开口
Open
关闭按钮呈现关闭状态
Close

, Control Manager (, main) . main() callback , , dpConnect ( ). , , control- . - .

控制管理器本身在启动时会创建自己的单独流程。其主要功能在单独的线程(线程)中执行。回调函数(在我们的示例中为OnOpen_CB)也运行在单独的线程中。执行后,主函数停止工作,但回调仍在PC内存中(在其自己的线程中),并在“ signed”变量更改时被调用。




All Articles