99网
您的当前位置:首页Intouch函数及语句介绍

Intouch函数及语句介绍

来源:99网
 Intouch函数及语句介绍

R

1: RecipeDelete() 从指定配方模板文件中删除配方名。

句法 RecipeDelete(“Filename”,“RecipeName”);

参数 描述

FileName 被函数所作用的配方模板文件。实际字符串或消息标记名。

RecipeName 在将被函数删除的指定配方模板文件中的特定配方。RecipeLoad()、RecipeSave() 和 RecipeDelete() 函数需用户提供 RecipeName 参数。RecipeSelectRecipe() 函数返回此参数的值。实际字符串或消息标记名。

实例

下面的语句将配方“Recipel”从 recfile.csv 文件中删除:

RecipeDelete(\"c:\\recipe\\recfile.csv\

2: RecipeGetMessage() 写给模拟标记名某一错误代码同时写给消息标记名相应的错误代码消息。

句法 RecipeGetMessage(Analog_Tag,Message_Tag,Number);

第页 1 共162

参数 描述

Analog_Tag 不带引号或常数的实际整型或实型标记名。

Message_Tag 不带引号或常数的实际整型或实型标记名。

Number 该参数设置返回给 Message_Tag 的最大字符串长度。InTouch,消息标记名有 131 字符的最大长度。除非你减小在 InTouch 标记名称典中的 Message_Tag 的最大字符串长度,该参数值为 131。该参数可以是常数或包含一个数值的整型标记名。

实例

在“InTouch 数据更改脚本”中使用 RecipeGetMessage() 函数,相应的错误代码可以被写到一个模拟标记名,并且关联的错误代码消息可以被写到一个消息标记名中。

Data Change Script Tagname[.field]:ErrorCode

Script body:RecipeGetMessage(ErrorCode, ErrorMessage,131);

当模拟标记名 ErrorCode 的值发生变化时,将自动执行此脚本。当此脚本执行时,RecipeGetMessage()

函数将读取标记名 ErrorCode 的当前数字值,并且返回与此数字值关联的消息到标记名 ErrorMessage。

ErrorCode = RecipeLoad (\"c:\\App\\recipe.csv\

第页 2 共162

RecipeGetMessage(ErrorCode, ErrorMessage, 131);

3: RecipeLoad() 将指定的配方加载到指定的标记名单元中。

句法 RecipeLoad(“Filename”,“UnitName”,“RecipeName”);

参数 描述

Filename 此函数所作用的配方模板文件的名称。FileName 可以是字符串常数或含有配方模板文件的消息标记名。

UnitName 此函数使用的指定配方模板文件中指定的单元。RecipeLoad()函数需用户提供 UnitName。RecipeSelectUuit() 函数返回此参数的值。UnitName 可以是字符常数或含有该单元名称的消息标记名。

RecipeName 此函数使用的指定配方模板文件中指定的配方。RecipeLoad()、RecipeSave() 和 RecipeDelete() 函数需用户提供 RecipeName。RecipeSelectRecipe() 函数返回此参数的值。RecipeName 可以是字符常数或含有该配方名称的消息标记名。

实例

下面的语句将使为配方 Recipe1 (在 recfile.csv 文件中)定义的值加载到由 Unit 定义的一组标记名中:

RecipeLoad(\"c:\\recipe\\recfile.csv\

第页 3 共162

4: RecipeSave() 将最新创建的配方或现有配方的更改保存到指定的配方模板文件。

句法 RecipeSave(“Filename”,“UnitName”,“RecipeName”);

参数 描述

FileName 此函数所作用的配方模板文件的名称。FileName 可以是字符串常数或含有配方模板文件的消息标记名。

UnitName 此函数使用的指定配方模板文件中指定的单元。RecipeLoad()函数需用户提供 UnitName。RecipeSelectUuit() 函数返回此参数的值。UnitName 可以是字符常数或含有该单元名称的消息标记名。

RecipeName 此函数使用的指定配方模板文件中指定的配方。RecipeLoad(),RecipeSave() 和 RecipeDelete() 函数需用户提供 RecipeName。RecipeSelectRecipe() 函数返回此参数的值。配方名可以是字符常数或含有该配方名称的消息标记名。

实例

下列例子将保存对 recfile.csv 文件中的配方“Recipe3”的改变。如果 Recipe3 在 recfile.csv 文件中不存在,它将会被生成。数值将用于设定定义在 Unit2 中的标记名的值。

RecipeSave(\"c:\\recipe\\recfile.csv\

5: RecipeSelectNextRecipe() 选择当前定义在配方模板文件中的下一个配方。

第页 4 共162

句法 RecipeSelectNextRecipe(“Filename”,“RecipeName”,“Number”);

参数 描述

FileName 此函数所作用的配方模板文件的名称。实际消息标记名。

RecipeName 此函数使用的指定配方模板文件中指定的配方。RecipeLoad()、RecipeSave() 和 RecipeDelete() 函数需用户提供 RecipeName。RecipeSelectRecipe() 函数返回此参数的值。没有引号或字符串文字的实际消息标记名。

Number 如果某一函数需要字符为参数,该域设置返回该参数的最大字符串长度。在 InTouch

中,字符串(消息)标记名的最大长度可达 131 个字符。除非你减小了 InTouch 标记名的最大字符串长度。数或整型标记名,此参数一般设为 131。

实例

下面的语句使系统读出 RecipeName 标记名的当前值前且返回文件中的下一个配方。若 RecipeName

的值为空或不能找到,将返回文件的第一个配方。若 RecipeName 包含的是文件的最后一个配方,则返此配方。(配方按创建时的顺序保存。)

RecipeSelectNextRecipe(\"c:\\recipe\\recfile.csv\

第页 5 共162

6: RecipeSelectPreviousRecipe() 选择当前配方模板文件中定义的前一个配方。

句法 RecipeSelectPreviousRecipe(“Filename”,“RecipeName”,“Number”);

参数 描述

FileName 此函数所作用的配方模板文件的名称。实际消息标记名。

RecipeName 此函数使用的指定配方模板文件中指定的配方。RecipeLoad()、RecipeSave() 和 RecipeDelete() 函数需用户提供 RecipeName。RecipeSelectRecipe() 函数返回此参数的值。没有引号或字符串文字的实际消息标记名。

Number 如果一个函数需要字符参数,该域设置返回到参数的最大字符串长度。在 InTouch

中,字符串消息标记名的最大长度是 131 个字符。除非你减小了 InTouch 标记名的最大字符串长度,此参数一般设为 131。数字或整型标记名。

实例

下面的语句使系统读出 RecipeName 标记名的当前值且返回文件中的前一个配方。此返回的字符串将被储存在 RecipeName 中并覆盖当前值。若 RecipeName 的值为空白或不能找到,将返回文件的最后一个配方。若 RecipeName 当前包含的是文件的第一个配方,则返回此配方。(配方按创建时的顺序保存。)

第页 6 共162

RecipeSelectPreviousRecipe(\"c:\\recipe\\recfile.csv\,131);

7: RecipeSelectRecipe() 选择当前在配方模板文件中定义的一个配方。

句法 RecipeSelectRecipe(“Filename”,“RecipeName”,“Number”);

参数 描述

FileName 此函数所作用的配方模板文件的名称。实际消息标记名。

RecipeName 此函数使用的指定配方模板文件中指定的配方。RecipeLoad()、RecipeSave() 和 RecipeDelete() 函数需用户提供 RecipeName。RecipeSelectRecipe() 函数返回此参数的值。没有引号或字符文字的实际消息标记名。

Number 如果一个函数必须填充字符参数,该域设置返回到参数的最大字符串长度。在 InTouch 中,字符串消息标记名的最大长度是 131 个字符除非你减小了 InTouch 标记名的最大字符串长度,此参数一般设为 131。数字或整型标记名。

实例

下面的语句打开“选择一个配方”对话框。

RecipeSelectRecipe(\"c:\\recipe\\recfile.csv\ RecipeName , 131);

当在对话框中选定一个配方后,它的名称返回到 RecipeName 标记名中。

第页 7 共162

8: RecipeSelectUnit() 选择将被加载当前配方值的标记名单元。

句法 RecipeSelectUnit(“Filename”,“UnitName”,“Number”);

参数 描述

FileName 此函数所作用的配方模板文件的名称。实际消息标记名。

UnitName 此函数使用的指定配方模板文件中指定的单元。RecipeLoad()函数需用户提供 UnitName。RecipeSelectUuit() 函数返回此参数的值。没有引号或字符文字的实际消息标记名。

Number 如果函数的参数需用字符串来填充,此参数设置返回到参数的最大字符串长度。在 InTouch 中,字符串(消息)标记名的最大长度可达 131 个字符。除非你减小了 InTouch 标记名的最大字符串长度,此参数一般设为 131。数字或整型标记名。

实例

下面的语句打开“选择一个单元”对话框。

RecipeSelectUnit(\"c:\\recipe\\recfile.csv\

一旦选定了某个单元,单元的名称将返回给 UnitName 标记名。

注意

第页 8 共162

RecipeSelectRecipe() 和 RecipeSelectUnit() 函数都与 RecipeLoad() 函数结合使用。

& 有关连接函数更详尽的消息,请参看配方管理器用户指南中“组合配方函数”一节。

9: RestartWindowViewer; 允许用户控制关闭和重启 WindowViewer。

句法 RestartWindowViewer;

说明 此函数将关闭然后自动重新启动 WindowViewer。在未用自动更新网络应用程序开发(NAD)功能时,可以用此函数来更新应用程序。此函数可和“$ApplicationChanged”配合使用以判断何时发生 NAD 的更新,然后提供自定义关闭。但使用 NAD 选项,通知操作员,操作员可能必须延迟到较晚时间再更新,或者此函数可被放置在一个按钮动作脚本中,因此当方便的时候一个操作员可进行自动关闭和重新启动 WindowViewer。

10: Round() 按指定精度来近似一个实数。

句法 RealResult=Round(Number,Precision);

参数 描述

Number 任何数字,实型或整型标记名。

Precision 设定数字将要被近似到的精度。数字,实型或整形标记名。

第页 9 共162

说明 “Precision”设置了“Number”将被近似的精度。

实例

Round(4.3, 1) 将返回 4

Round(4.3, .01) 将返回 4.30

Round(4.5, 1) 将返回 5

Round(-4.5, 1) 将返回 -5

Round(106, 5) 将返回 105

Round(43.7, .5) 将返回 43.5

A

Abs() 返回一个指定数的绝对值(无符号等价值)。

句法 Result=Abs(Number);

参数 描述

数字 任何数字,实型或整型标记名。

第页 10 共162

说明 “Number”的绝对值被计算并返回给“Result”。

实例

Abs(14) 将返回 14

Abs(-7.5) 将返回 7.5

Ack() 确认任何不确认的 InTouch 报警。

句法 Ack Tagname;

参数 描述

Tagname 任何 InTouch 标记名,报警组,或组变量。

说明 此函数可用于一标记名、报警组或组变量。(组变量为一标记名,它具有分配给它的报警组名称。)

实例

以下语句可用于一按钮,来确认任一未确认的报警:

Ack $System; (所有的报警)

Ack Tagname;

11 第页 共162

Ack GroupName;

Ack GroupVariable;

ActivateApp()

激活另一个正在运行的 Windows 应用程序

句法 ActivateApp TaskName;

参数 描述

TaskName 这个函数将激活的任务。

说明 TaskName 是准确的文本字符串,包括出现在任务栏或任务管理器中的空格(在 Windows NT 中通过右单击任务栏,然后单击任务管理器或 Ctrl+Alt+Delete 来 访问)。

实例

以下例子检查是否命令 提示符正在运行。 如果正在运行,将使它出现在前景并给予聚焦。否则,启动一个命令提示符并启动命令提示符中的 DOS 程序 edit.com 。

IF InfoAppActive( InfoAppTitle(\"cmd\")) == 1 THEN

ActiveApp InfoAppTitle(\"cmd\");

第页 12 共162

ELSE

StartApp \"cmd /c edit\";

ENDIF;

almAckAll() 确认所有当前查询中的报警,包括那些在当前报警显示中未显示的报警。

句法 [Result=]almAckAll(ObjectName,Comment);

参数 描述

ObjectName 报警对象的名称。如,AlmObj_1。

Comment 报警确认注释。

实例

MessageTag = “Acknowledge All by” + $Operator;

AlmAckAll(揂lmObj_1? MessageTag);

almAckDisplay() 只确认当前报警显示对象中可见的报警。

句法 [Result=]almAckDisplay(ObjectName,Comment);

第页 13 共162

参数 描述

ObjectName 报警对象的名称。如,AlmObj_1。

Comment 报警确认注释。

实例

almAckDisplay(“AlmObj_1”, “Display Acknowledge”);

almAckRecent() 确认最近发生的报警

句法 [Result=]almAckRecent(ObjectName,Comment);

参数 描述

ObjectName 报警对象的名称。如,AlmObj_1。

Comment 报警确认注释。

说明 有关一个错误号列表,见附录 A。

实例

almAckRecent(“AlmObj_1”, $DateString);

第页 14 共162

almAckSelect() 只确认报警显示中选定的报警。

句法 [Result=]almAckSelect(ObjectName,Comment);

参数 描述

ObjectName 报警对象的名称。如,AlmObj_1。

Comment 报警确认注释。

实例

IF ($Hour > 0 and $Hour < 8) THEN

AckTag = “NightShift”;

ELSE

AckTag = “Day Shift”;

ENDIF;

AlmAckSelect (“AlmObj_1”,AckTag);

almDefQuery() 执行一个查询,用缺省属性更新报警对象。

第页 15 共162

法句 [Result=]almDefQuery(ObjectName);

参数 描述

ObjectName 报警对象的名称。如,AlmObj_1。

说明 缺省查询属性是在开发时指定的。

实例

almDefQuery(“AlmObj_1”);

almMoveWindow() 滚动报警显示对象窗口。

句法 [Result=]almMoveWindow(ObjectName,Option,Repeat);

参数 描述

ObjectName 报警对象的名称。如,AlmObj_1。

Option 执行的报警确认类型:

类型 描述

LineDn 下一行。

第页 16 共162

LineUp 上一行。

PageDn 下一页。

PageUp 上一页。

Top 列表顶部。

Bottom 列表底部。

PageRt 右边的一页。

PageLf 左边的一页。

Right 列表的结尾(右侧)。

Left 列表的开始(左侧)。

重复 这一操作将被重复的次数。

$ 有关错误号的更多信息,参见附录 A,“Windows 控制和分布式报警脚本函数错误消息”。

实例

almMoveWindow(“AlmObj_1”, ”Bottom”, 0);

第页 17 共162

almMoveWindow(“AlmObj_1”, ”LineDn”, 3);

almMoveWindow(“AlmObj_1”, ”PageUp”, 0);

almQuery() 执行一个查询来更新报警显示对象。

句法 [Result=]almQuery(ObjectName,AlarmList,FromPri,

ToPri,State,Type);

参数 描述

ObjectName 报警对象的名称。如,AlmObj_1。

AlarmList 设置报警组/组列表来对,如“MyGroup” 或消息标记名执行查询。

FromPri 要显示的报警的启动优先权。如,100 或整型标记名。

ToPri 要显示的报警的结束优先权。如, 900 或整型标记名。

State 指定要显示的报警的类型。如,“UnAck” 或消息标记名。有效的状态为“All”,“UnAck”或“Ack”。

Type 指定查询的类型,如,“Hist“ (历史报警) 或“Summ” (摘要报警)。

$ 有关错误号的更多信息,参见附录 A,“窗口控制和分布式报警脚本函数错误消息”。

第页 18 共162

实例

此语句检索所有在“MyGroup”中指定的优先级在 500 到 600 之间的历史报警,这些报警将分布报警显示“Alarm1”。

AlmQuery(\"AlmObj_1\

almSelectAll() 在报警显示对象中,切换所有报警的选择。

句法 [Result=]almSelectAll(ObjectName);

参数 描述

ObjectName 报警对象的名称。如,AlmObj_1。

实例

If $AccessLevel > 8000 THEN

almSelectAll(“AlmObj_1”);

almAckSelect(“AlmObj_1”, “Ack Selected by a Manager”);

ENDIF;

Text() 使消息类型标记名根据指定的 Format_Text 格式显示一个模拟(整型或实

第页 19 共162

型)标记名的值。

句法 MessageResult=Text(Analog_Tag,\"Format_Text\");

参数 描述

Analog_Tag 要转换的数字,实型或整型标记名。

Format_Text 在转换中要使用的格式。实际字符串或消息标记名。

实例

MessageTag=Text(66,\"#.00\");

MessageTag 是一个消息类型标记名,66 为一个整型或实型的标记名。 “#0.00”代表显示格式:

If Analog_Tag=66, then MessageTag=\"66.00\".

If Analog_Tag=22.269, then MessageTag=\"22.27\".

If Analog_Tag=9.999, then MessageTag=\"10.00\".

LogMessage(\"The current value of FreeserRoomTemp is:\"+ Text

(FreezerRoomTemp, \"#.#\"));

第页 20 共162

在下列例子中,消息标记将被设定为\"One=1 Two=2\".

MessageTag = \"One + \" + Text(1,\"#\") + StringChar(32) + \"Two +\" + Text(2,\"#\");

S

SelSPCConSampln1SDMsg

DDE 类型 消息

访问 RO

描述 “连续样本在一个标准偏差内”的报警消息标记。

SendKeys

发送键给应用程序。对接收应用程序来说,这些键就好象是从键盘上键入的。此项功能可用来给应用程序输入数据或给应用程序发送命令。大部分键盘上的键可以用在 SendKeys 语句中。每个键可用一个或多个字符表示,例如“A”表示字母“A”或{ENTER}表示回车键。

句法 SendKeys KeySequence;

参数 描述

KeySequence 任何键顺序或消息类型标记名。

第页 21 共162

说明 若要指定一个以上的键,则需将每个字符的代码连接起来。如,要指定一个后面跟着一个(b)的美元符号($)键,输入 b。下面列出了一个唯一键盘键的有效发送键:

键 代码 键 代码

BACKSPACE {BACKSPACE} or {BS} HOME {HOME}

BREAK {BREAK} INSERT {INSERT}

CAPSLOCK {CAPSLOCK} LEFT} LEFT}

DELETE {DELETE} or {DEL} NUMLOCK {NUMLOCK}

DOWN {DOWN} PAGE DOWN {PGDN}

END {END} PAGE UP {PGUP}

ENTER {ENTER} or ~ (tilde) PRTSC {PRTSC}

ESCAPE {ESCAPE} or {ESC} RIGHT {RIGHT}

F1 {F1}* TAB {TAB}

UP {UP}

* 所有功能键也可以以同样的方式输入。

第页 22 共162

特殊字符 (SHIFT,CTRL 和 ALT)有它们自己的键码:

键 代码

SHIFT + (plus)

CTRL ^ (caret)

ALT % (percent)

SetPropertyD() 指定运行期间要写的属性的离散值。

句法 [ErrorNumberDiscreteTag);

字=]SetPropertyD(\"ControlName.Property\

参数 描述

ControlName 窗口控制名称。如,ChkBox_1 或报警对象名。如,AlmObj_1。

.Property 窗口控制或报警对象属性。

DiscreteTag 当该函数执行时,一个保存要写入值的离散值或离散标记名。典型用法:

0 = 控制失效

1 = 控制被激活

第页 23 共162

SetPropertyI() 指定运行期间要写的属性的整型值。

句法 [ErrorNumber字=]SetPropertyI(\"ControlName.Property\

参数 描述

ControlName 窗口控制名称。如,ChkBox_1 或报警对象名。如,AlmObj_1。

.Property 窗口控制或报警对象属性。

Integer 一个数字或整型标记名。

SetPropertyM() 指定运行期间要写的属性的消息值。

句法 [ErrorNumber\"MessageTag\");

字=]SetPropertyM(\"ControlName.Property\

参数 描述

ControlName 窗口控制名称。如,ChkBox_1 或报警对象名。如,AlmObj_1。

.Property 窗口控制或报警对象属性。

MessageTag 被写给 ControlName 的属性的字符串。实际字符串或消息标记名。

Sgn() 判别一个数值的符号(正、零或负)

第页 24 共162

句法 RealResult=Sgn(Number);

参数 描述

Number 任何数字,实型或整型标记名。

说明 若输入的数为正的,则结果为 1。负数将返回 -1,0 将返回 0。

例子

Sgn(425) 将返回 1

Sgn(0) 返回 0

Sgn(-37.3) 返回 –1

Show 显示指定的窗口。(窗口名称必须在引号内。)

句法 Show“Window”;

参数 描述

Window 被显示窗口的名称。实际字符串或消息标记名。

说明 “Window”必须和现存的窗口或要创建的窗口的名称相匹配。在运行期间,若窗口不存在,

第页 25 共162

WindowViewer 将此语句忽略。若窗口的名称改变了,则它在脚本中必须改变。

实例

Show“Alarm Summary Window”;

注意

如果脚本仅仅在隐藏或显示窗口,我们建议使用“Show Window”或“Hide Window”链接被使用。若使用上述函数并且窗口名改变了,InTouch 将自动作出变化。

ShowAt() 显示窗口时,指定其水平和垂直方向的像素位置。

句法 ShowAt(“Window”,Horiz,Vert);

参数 描述

Window 窗口的名称。实际字符串或消息标记名。

Horiz 水平像素位置。数字或整型标记名。

Vert 垂直像素位置。数字或整型标记名。

说明 当窗口打开时,它将位于水平和垂直座标的中心。若它的边界超出了屏幕,那它就不会被居中。对那条边的最佳拟合将被执行。

第页 26 共162

实例

下面的语句中,100 代表水平像素的位置,200 代表垂直像素的位置:

ShowAt(\"Window Name\

模拟输入对象也能被创建并与内存标记名(如 TagHoriz 和 TagVert)相链接,以在运行期间动态地改变窗口的位置。在此情况下,语句应输入为:

ShowAt(\"Boiler Room 7 Details\

下面的语句判别对象的像素位置,内部标记名 $ObjHor 和 $ObjVer 可分配给用以显示当前选定对象的位置的模拟量输出链。通过使用链接到对象或按钮的脚本中的 $ObjHor 和 $ObjVer 标记名,可在此对象或按钮的顶端居中位置显示窗口。

ShowAt(\"Window Name\

ShowAt() 显示窗口时,指定其水平和垂直方向的像素位置。

句法 ShowAt(“Window”,Horiz,Vert);

参数 描述

Window 窗口的名称。实际字符串或消息标记名。

Horiz 水平像素位置。数字或整型标记名。

第页 27 共162

Vert 垂直像素位置。数字或整型标记名。

说明 当窗口打开时,它将位于水平和垂直座标的中心。若它的边界超出了屏幕,那它就不会被居中。对那条边的最佳拟合将被执行。

实例

下面的语句中,100 代表水平像素的位置,200 代表垂直像素的位置:

ShowAt(\"Window Name\

模拟输入对象也能被创建并与内存标记名(如 TagHoriz 和 TagVert)相链接,以在运行期间动态地改变窗口的位置。在此情况下,语句应输入为:

ShowAt(\"Boiler Room 7 Details\

下面的语句判别对象的像素位置,内部标记名 $ObjHor 和 $ObjVer 可分配给用以显示当前选定对象的位置的模拟量输出链。通过使用链接到对象或按钮的脚本中的 $ObjHor 和 $ObjVer 标记名,可在此对象或按钮的顶端居中位置显示窗口。

ShowAt(\"Window Name\

ShowHome;

显示“起始”窗口。起始窗口为那些你所选的,WindowViewer 启动时自动打开的窗口。(起始窗口可通过“WindowViewer

第页 28 共162

属性 - 起始窗口”属性页来选择。)

句法 ShowHome;

Sin() 返回以度数表示的角的正弦值。

句法 Result=Sin(AngleNumber);

参数 描述

AngleNumber 以度为单位的角度。任何数字,实型或整型标记名。

说明 “Number”的正弦值被计算并返回到“Result”。

实例

Sin(90) 将返回 1

Sin(0) 返回 0

wave = 100 * sin (6 * $second);

ShowTopLeftAt() 窗口显示时,指定其左上角的水平和垂直像素位置。

句法 ShowTopLeftAt(\"Window\

第页 29 共162

参数 描述

Window 窗口的名称。实际字符串或消息标记名。

Horiz 水平像素位置。数字或整型标记名。

Vert 垂直像素位置。数字或整型标记名

说明 当窗口打开时,它的左上角将位于水平和垂直座标相交处。(屏幕的最左上角的像素位置是 0,0。)除了是控制要显示的窗口的左上角的位置外,此函数的工作原理与 ShowAt() 函数相同。

W

wcAddItem()

将提供的字符串加入到列表框或组合框。若列表框或组合框创建时未排序,则字符串添加到列表的末尾。否则字符串被插入到列表中,并且列表被排序。

句法 [ErrorNumber=]wcAddItem(\"ControlName\

参数 描述

ControlName 窗口控制对象的名称。如,ListBox_1。 实际字符串或消息标记名。

MessageTag 将被显示的消息字符串。实际字符串或消息标记名。

第页 30 共162

应用于 列表框和组合框

实例

当窗口(使用显示时窗口脚本)包含的列表框被打开时,下面的语句将消息字符串的内容添加到列表框中:

wcAddItem(\"ListBox_1\

wcAddItem(\"ListBox_1\

wcAddItem(\"ListBox_1\

wcClear() 删除列表框或组合框中的所有项。

句法 [ErrorNumber=]wcClear(\"ControlName\");

参数 描述

ControlName 窗口控制对象的名称。如,ListBox_1。 实际字符串或消息标记名。

应用于 列表框和组合框

实例

当按下按钮(动作脚本),下面的语句将删除组合框中所有的项:

第页 31 共162

wcClear(\"ListBox_1\");

wcDeleteItem() 删除列表框或组合框中与项索引参数关联的项。

句法 [ErrorNumber=]wcDeleteItem(\"ControlName\

参数 描述

ControlName 窗口控制对象的名称。如,ListBox_1。 实际字符串或消息标记名。

ItemIndex 与该项目的位置对应的一个数字。数字或整型标记名。

应用于 列表框和组合框

实例

当按下按钮(动作脚本),下面的语句将删除一列表中的第三个项目:

wcDeleteItem(\"ListBox_1\

wcDeleteSelection() 从列表中删除当前选定的项。

句法 [ErrorNumber =]wcDeleteSelection(\"ControlName\");

参数 描述

第页 32 共162

ControlName 窗口控制对象的名称。如,ListBox_1。 实际字符串或消息标记名。

应用于 列表框和组合框

实例

当按下按钮(动作脚本)时,下面的语句将删除一个组合框列表中当前所选定的项:

wcDeleteSelection(\"ListBox_1\");

wcErrorMessage() 返回一个描述该错误的消息字符串。

句法 ErrorMessage=wcErrorMessage(ErrorNumber);

参数 描述

ErrorMessage 消息标记名。

ErrorNumber字 被所有窗口控制函数返回的数字。数字或整型标记名。

应用于 列表框,文本框,组合框,复选框和单选按钮。

实例

若在加载列表时发生错误,则在消息标记名 ErrorDescription 中显示描述错误的文本。在此例中,一个字符串值输出动画链接被赋予标记名 ErrorDescription 来显示错误

第页 33 共162

消息。

显示时窗口脚本:

ErrorNumber=wcLoadList(\"ListBox_1\

ErrorDescription=wcErrorMessage(errorNumber);

此函数也可以与各种窗口控制函数使用来显示错误消息:

ErrorNumber=wcAddItem(\"ListBox_1\

ErrorMsg=wcErrorMessage(ErrorNumber);

wcFindItem() 决定列表框或组合框中与消息字符串匹配的第一个项所对应的索引。

句法 [ErrorNumber=]wcFindItem

(\"ControlName\

参数 描述

ControlName 窗口控制对象的名称。如,ListBox_1。 实际字符串或消息标记名。

MessageTag 将被比较的消息字符串。实际字符串或消息标记名。

DiscreteTag 决定字符串比较的类型。可赋予下列离散值之一:

第页 34 共162

0 = 大小写不敏感

1 = 大小写敏感

Tagname 实际整型标记名名称。

应用于 列表框和组合框

wcGetItem() 返回在列表框或组合框中与对应的 ItemIndex 相关联的项目字符串的值的属性。

句法 [ErrorNumber=]wcGetItem(\"ControlName\

参数 描述

ControlName 窗口控制对象的名称。如,ListBox_1。。实际字符串或消息标记名。

ItemIndex 与该项目的位置对应的一个数字。数字或整型标记名。

Tagname 实际实型或整型标记名名称。wcGetItem 函数将与项目相应的数值放入

从该函数返回的标记名。

应用于 列表框和组合框

实例

第页 35 共162

当按下按钮(动作脚本)时,下面的语句将把一个组合框中第10个项目的字符串值返回给消息标记名 ListSelection:

wcGetItem(\"combobox_1\

若列表中的第10项是“Vanilla”,则 ListSelection 将包含字符串“Vanilla”。

wcGetItemData() 决定由参数 ItemIndex 识别的列表项相关的整型值。

[ErrorNumber=]wcGetItemData(\"ControlName\

参数 描述

ControlName 窗口控制对象的名称。如,ListBox_1。 实际字符串或消息标记名。

ItemIndex 与该项目的位置对应的一个数字。数字或整型标记名。

Tagname 实际实型或整型标记名名称。wcGetItemData 函数将与项目相应的数值

放入从该函数返回的标记名。

应用于 列表框和组合框

实例

当按下按钮(动作脚本)时,下面的语句检索与列表框中第5个项相关的数字值,并

第页 36 共162

将其返回给标记名 ItemValue:

wcGetItemData(\"ListBox_1\

若列表中的第5个项目被赋予整型值 4500,则标记名 ItemValue 将包含 4500。

wcInsertItem()

将 Message 字符串插入列表中。ItemIndex 是要插入的列表索引位置。与 wcAddItem() 不同,wcInsertItem() 函数将不对列表进行排序,即使它是一个有序列表框或组合框。

[ErrorNumber=]wcInsertItem(\"ControlName\

参数 描述

ControlName 窗口控制对象的名称。如,ListBox_1。 实际字符串或消息标记名。

ItemIndex 对应于被添加项位置的数字。若此参数为-1,则字符串将被添加到列表末尾。数字或整型标记名。

MessageTag 息标记名。

包含要在被 ItemIndex 所指示位置插入的字符串。.实际字符串或消

应用于 列表框和组合框

第页 37 共162

例实

当按下按钮(动作脚本)时,下面的语句将一名为“Blueberry”的新项目插入到列表框从上到下第 4 个位置处。

wcInsertItem(\"ListBox_1\

wcLoadList() 用包含于 FileName 的项目来替换列表框或组合框的内容。

句法 [ErrorNumber=]wcLoadList(\"ControlName\

参数 描述

ControlName 窗口控制对象的名称。如,ListBox_1。 实际字符串或消息标记名。

Filename 包含纯 ASCII 格式的文件名称。如果没有提供完整的路径名作为消息参

数,则此函数将在应用程序目录查找消息文件。实际字符串或消息标记名。

应用于 列表框和组合框

实例

当包含组合框的窗口 (显示时窗口脚本) 被打开时,下面的语句加载一个正确格式的列表 (位于 C:\\InTouch\\recipe.txt”)

到此组合框中:

第页 38 共162

wcLoadList(\"Combobox_1\ouch.32\\wclist.txt\");

wcLoadText() 以 FileName 的内容替换文本框的内容。

句法 [ErrorNumber=]wcLoadText(\"ControlName\

参数 描述

ControlName 窗口控制对象的名称。如,ListBox_1。 实际字符串或消息标记名。

Filename 包含纯 ASCII 格式的文件名称。如果没有提供完整的路径名作为消息参

数,则此函数将在应用程序目录查找消息文件。实际字符串或消息标记名。

说明 wcLoadText() 函数只支持纯 ASCII 文本格式文件,诸如那些用 Microsoft 记事本程序创建的文件。窗口控制的错误号列在附录 A 中。

& 有关高级文件浏览能力,参见 Factory Suite 的“生产率包”的文档浏览器。

应用于 文本框

实例

当包含文本框的窗口 (显示时窗口脚本) 打开时,下面的语句加载一个记事本文本文件 (c:\\InTouch\\readme.txt”) 到一个文本框中:

wcLoadText(\"Textbox_1\ouch\\readme.txt\");

第页 39 共162

wcSaveList() 以列表框或组合框对象中所列项目替换 FileName 的内容。

句法 [ErrorNumber=]wcSaveList(\"ControlName\

参数 描述

ControlName 窗口控制对象的名称。如,ListBox_1。 实际字符串或消息标记名。

Filename 包含纯 ASCII 形式的文件名称。如果文件不存在,则将被创建。使用

wcLoadList() 函数,这些项目能被相继加载到列表对象中。实际字符串或消息标记名。

应用于 列表框和组合框

实例

当按下按钮(动作脚本)时,下面的语句将当前列表框中的项存到一文件中 (c:\\InTouch\\newList.txt”):

wcSaveList(\"ListBox_1\

注意

如果外部 ASCII 文件被用来填充列表框和组合框,则它们必须遵照特定的格式并且包含特定的消息。格式如下所示:

ControlType, ListCount

第页 40 共162

ListItem, ItemData

ListItem, ItemData

ListItem, ItemData

例如:一个要被加载到一个组合框中的列表文件,它包含三个供选择的项,并且这些项没有被赋予项数据。(有关项数据的更多信息,参见 wcSetItemData() 函数)。

文件的格式如下所示:

ComboBOX, 3

ComboBOX, 3

Vanilla, 0

Strawberry, 0

描述:COMBOBOX 是控制类型。Chocolate,Vanilla,和 Starwberry 的 ListCount 为 3 ,代表其三个项目。Chocolate 则被列为第一个列表项目或索引1。Vanilla 作为索引2,而最后 Strawberry 作为 3。每一个索引项目都有一个 0 数据值。

wcSaveText()

将包含于文本框中的文本保存到 FileName。如果此文件不存在,它将被创建;如果

第页 41 共162

它存在,则其必须是可读/写的。

句法 [ErrorNumber=]wcSaveText(\"ControlName\

参数 描述

ControlName 窗口控制对象的名称。如,ListBox_1。 实际字符串或消息标记名。

Filename 包含纯 ASCII 格式的文件的名称。如果没有提供完整的路径名,则此函

数将保存在应用程序目录下。如果文件不存在,则将被创建。使用 wcLoadList() 函数,这些项目能相继被加载到列表对象中。实际字符串或消息标记名。

应用于 文本框

实例

当按下按钮(动作脚本)时,下面的语句将文本框的当前信息存入文件 c:\\InTouch\\newtext.txt 中:

wcSaveText(\"Textbox_1\ouch\\newtext.txt\");

注意

同 Microsoft 记事本创建的文件一样,wcSaveText() 函数仅仅以纯 ASCII 文本格式保存文件。

第页 42 共162

参见 wcLoadList()

wcSetItemData()

将项目(Number)的一个整型值赋予列表中由 ItemIndex 指定的项。该函数允许将一个数字赋予一个字符串。

句法 [ErrorNumber=]wcSetItemData(\"ControlName\

参数 描述

ControlName 窗口控制对象的名称。如,ListBox_1。 实际字符串或消息标记名。

ItemIndex 指定请求项目显示顺序的整型值。数字或整型标记名。

Number 代表项目数据的一个整型值。数字或整型标记名。

说明 含有这些项的完整列表能由外部创建(如记事本),并且能通过调用一个函数进行加载。该列表必须按 wcSaveList() 函数所描述的那样被正确地格式化。

实例

有一含有三种成分的配方:面粉、糖和盐。面粉为 4500 克,糖为 1500 克,盐为 325 克。通过“数据更改脚本”将这些值分配给列表框中的每一项,该“数据更改脚本”由所选定 的配方(标记名,配方名)触发:

第页 43 共162

wcSetItemData(\"ListBox_1\ {设定列表中第 1 项

(面粉)=4500}

wcSetItemData(\"ListBox_1\ {设定列表中第 2 项

(糖)=1500}

wcSetItemData(\"ListBox_1\ {设定列表中第 3 项

(盐)=325}

wcGetItemData() 函数被用来返回与列表项目相关联的值(项目数据)。参数 Tagname 包含被返回的数值。这个参数可以是一个直接写入真实设备的 DDE 整型标记名。

WWControl() 允许你从 InTouch 恢复,最小化,最大化, 或关闭一个应用程序。

句法 WWControl(\"AppTitle\

参数 描述

AppTitle 将被控制的应用程序标题名。一个特定应用程序的标题可以通过 InfoAppTitle() 函数来决定。实际字符串或消息标记名。

ControlType 决定按下列何种方式控制应用程序 (这些动作等价于单击此应用程序

第页 44 共162

控制菜单中它们所对应选项):实际字符串或消息标记名。

类型 描述

\"恢复\" 激活并显示应用程序的窗口。

\"最小值\" 激活一个窗口并且以一个图标显示它。

\"最大值\" 激活并显示应用程序的窗口。

\"关闭\" 关闭一个应用程序。

实例

WWControl(\"Calculator\

WWControl(\"Microsoft Excel\

WWControl(InfoAppTitle(\"View\"), \"Close\");

F

FactoryFocus

FactoryFocus 是一个仅在 InTouch 运行时版本下的视图。它允许监管人员能在实时情况下查看 HMI 应用程序进程。由于没有数据可以被改变,查看是其仅有的功能,因而

第页 45 共162

系统安全性相应增加。要使用 InTouch FactoryFocus,您不必改变您的 InTouch 应用程序。

InTouch FactoryFocus 仅作为一个客户。运用 DDE 或 SuiteLink 既没有写入数据,也没有插入数据到类似 Excel 的程序中。报警可以被查看但不能被确认。 FactoryFocus 不能象 I/O 服务器那样请求客户。一些象动画链接,标记名,实时和历史趋势的特性只能被查看。

FileCopy() 复制 SourceFile 至 DestFile,与 DOS 的复制命令或 Windows 文件的复制功能相似。

句法 FileCopy(SourceFile,DestFile,DoneTag);

参数 描述

SourceFile 源文件名(包括完整路径)。

DestFile 目标文件(包括完整的路径)或目录名(参见下面的例子)。

DoneFile FileCopy() 函数用于报告拷贝过程进展 的标记名的名称。此参数必须是一个表明标记名名称的字符串(而非实际的标记名本身)。所以若你的完成标记为 Monitor,你就应提供“Monitor”或 Monitor.name,而不能仅仅是 Monitor 。

说明 当使用 FileCopy()函数时,若成功地启动了此过程,它立即返回 1。若另一过程在运行中(此新过程不能被启动)它将返回 0,或在出错时,返回 -1。使用此返回值可以监视 FileCopy() 函数的启动:

第页 46 共162

Status=FileCopy(\"C:\\*.TXT\

Status 是一个为 1,-1,0 的整型标记名。FileCopy() 函数在后台执行,这样它不会干扰 InTouch 的运行。DoneTag 允许应用程序或用户监视此复制操作的进展。用这种方法,用户可以被提醒在过程启动后可能发生的任何错误。这与上述返回的 Status 不同,Status 表明的是复制过程是否被成功启动。

一旦复制过程已成功启动,DoneTag 就会被赋值。此过程尚在进行中时它被置为 0。当此过程成功结束后,它被置为 1,或在此过程结束前发生错误,它被置为 -1。

SourceFile 和 DestFile 一般为文件名。不过,用 FileCopy() 函数复制单一文件时,目标可以是一个目录:

FileCopy(\"C:\\DATA.TXT\

这将把文件“DATA.TXT”复制到“C:\\”驱动器上一个叫做“BACKUP”的目录下。标记 Monitor 在复制完成后被置为 1。

不过,若 SourceFile 包含任何通配符的话,DestFile 必须是一个目录(而非文件名),否则此函数将返回一个错误代码:

FileCopy(\"C:\\*.TXT\

这将从C:\\ 根目录拷贝所有的 .TXT 文件到C:\\BACKUP目录下。标记 Monitor 在复制完成后被置为 1。

第页 47 共162

FileDelete() 删除不需要或不想要的文件。

句法 FileDelete(Filename);

参数 描述

Filename 要删除的文件名。

说明 若找到要删除的文件,并成功地删除,此函数将返回 1,否则此函数返回 0。

实例

Status=FileDelete(\"C:\\DATA.TXT\");

若在 C:\\root下找到“DATA.TXT”文件,则 Status 等于 1,未找到该文件则为 0。

FileMove() 与 FileCopy() 函数相似,除了它将文件从一个位置转移到另一个位置,而不是复制。

句法 FileMove(SourceFile,DestFile,DoneTag);

参数 描述

SourceFile 源文件名(包括完整路径)。

DestFile 目标文件名(包括完整路径)。

第页 48 共162

DoneTag FileMove() 函数用来报告转移过程进展情况的标记名称。此参数必须是

一个表明标记名名称的字符串(而非实际的标记名本身)。所以,若你的完成标记叫做 Monitor,你就得提供“Monitor”或 Monitor.name 而不是 Monitor 而已。

说明 当使用 FileMove() 函数时,若成功地启动了此过程,它立即返回 1。若另一过程在运行中(此新过程不能启动),它将返回 0,或者出错时返回 -1,使用此返回值,可以监视 FileMove() 函数的启动。

Status=FileMove(\"C:\\DATA.TXT\

Status=FileMove(\"C:\\DATA.TXT\

Status是一个为 1,-1,0 的整型标记。FileMove() 函数在后台执行,这样它不会干扰 InTouch 的运行。使用 DoneTag 是为了允许应用程序或用户监视转移操作的进展。用这种方法,可提醒用户在转移过程启动后可能发生的任何错误。这与上述返回的 Status 不同,Status指示的是转移过程是否已成功被启动。

一旦转移过程已成功启动,DoneTag 就会被赋值。此过程尚在运行中时它被置为 0。当此过程成功结束后,它被置为 1,或此过程结束前发生错误,它被置为 -1。

若 SourceFile 和 DestFile 位于同一驱动器上,此函数可以简单地更改此文件的目录参考(计算机在此参考中保存磁盘上的文件名称和位置),而不用实际转移任何数据。在这种情况下,不管此文件的大小,转移操作将会很快。若 SourceFile 和 DestFile 位于不同的驱动器,转移操作所费的时间将随文件的大小不同而不同。这是因为数据必须由一个物理磁盘传送到另一物理磁盘上。

第页 49 共162

实例

FileMove (\"C:\\DATA.TXT\

这将把名为“DATA.TXT”的文件从驱动盘“C”根目录中转移到名为“BACKUP”的目录下。标记Monitor 在其完成后被置为 1。

注意

此函数也可用于文件更名,只要 SourceFile 和 DestFile 指定了相同的目录,但不同的文件名。

FileMove (\"C:\\DATA.TXT\

这将把 C:\\root 目录下文件“DATA.TXT”更名为“DATA.BAK”。标记 Monitor 在其完成后被置为 1。

FileMove()

与 FileCopy() 函数相似,除了它将文件从一个位置转移到另一个位置,而不是复制。

句法 FileMove(SourceFile,DestFile,DoneTag);

参数 描述

SourceFile 源文件名(包括完整路径)。

第页 50 共162

DestFile 目标文件名(包括完整路径)。

DoneTag FileMove() 函数用来报告转移过程进展情况的标记名称。此参数必须是

一个表明标记名名称的字符串(而非实际的标记名本身)。所以,若你的完成标记叫做 Monitor,你就得提供“Monitor”或 Monitor.name 而不是 Monitor 而已。

说明 当使用 FileMove() 函数时,若成功地启动了此过程,它立即返回 1。若另一过程在运行中(此新过程不能启动),它将返回 0,或者出错时返回 -1,使用此返回值,可以监视 FileMove() 函数的启动。

Status=FileMove(\"C:\\DATA.TXT\

Status=FileMove(\"C:\\DATA.TXT\

Status是一个为 1,-1,0 的整型标记。FileMove() 函数在后台执行,这样它不会干扰 InTouch 的运行。使用 DoneTag 是为了允许应用程序或用户监视转移操作的进展。用这种方法,可提醒用户在转移过程启动后可能发生的任何错误。这与上述返回的 Status 不同,Status指示的是转移过程是否已成功被启动。

一旦转移过程已成功启动,DoneTag 就会被赋值。此过程尚在运行中时它被置为 0。当此过程成功结束后,它被置为 1,或此过程结束前发生错误,它被置为 -1。

若 SourceFile 和 DestFile 位于同一驱动器上,此函数可以简单地更改此文件的目录参考(计算机在此参考中保存磁盘上的文件名称和位置),而不用实际转移任何数据。在这种情况下,不管此文件的大小,转移操作将会很快。若 SourceFile 和 DestFile 位于

第页 51 共162

不同的驱动器,转移操作所费的时间将随文件的大小不同而不同。这是因为数据必须由一个物理磁盘传送到另一物理磁盘上。

实例

FileMove (\"C:\\DATA.TXT\

这将把名为“DATA.TXT”的文件从驱动盘“C”根目录中转移到名为“BACKUP”的目录下。标记Monitor 在其完成后被置为 1。

注意

此函数也可用于文件更名,只要 SourceFile 和 DestFile 指定了相同的目录,但不同的文件名。

FileMove (\"C:\\DATA.TXT\

这将把 C:\\root 目录下文件“DATA.TXT”更名为“DATA.BAK”。标记 Monitor 在其完成后被置为 1。

FileReadFields() 从一个指定文件中读出 CSV(逗点分离变量)记录。

句法 FileReadFields(Filename,FileOffset,StartTag,NumberOfFields);

参数 描述

第页 52 共162

Filename 指定要读取的文件。

FileOffset 指定文件中开始读取的位置。

StartTag 指定一个第一个数据项目将被写入的 InTouch 标记名的名称。此标记名必须以一个数字结尾(如 MyTag1

)。此参数必须是一个指示标记名的字符串(而非实际的标记本身)。所以,如果你的标记名称为 MyTag 1,你就得提供“MyTag1”或 MyTag1.name,而非仅仅 MyTag1 而已。

NumberOfFields 指定要读的域数目(此文件的每个记录中以逗号分离的域的数目)。

说明 若 StartTag 为“MyTag1”而 NumberOfFields 为 3,则有 3 个域从文件中读出并保存在 MyTag1、MyTag2 和 MyTag3 中。这些具有连续名称的标记必须先在 InTouch 中创建,并可以属于不同的类型(整型,消息等等)。

实例

如果 C:\\DATA\\FILE.CSV 的第一行是:

This is text, 3.1416, 5

则下面的脚本将读出此行,并把“This is text”保存在 MyTag1 中,3.1416 保存在 MyTag2中,5 保存在 MyTag3 中:

第页 53 共162

BytePosition=FileReadFields (\"C:\\DATA\\FILE.CSV\

此函数在读出之后返回新的字节位置。你可以在下次读时使用此返回值作为 FileOffset 的值。

FileReadFields (\"C:\\DATA\\FILE.CSV\

注意

InTouch 中的消息标记最大可以储存 131 个字符。

FileReadMessage() 从指定文件中读出一指定数目的字节(或一整行)。

句法 FileReadMessage(Filename,FileOffset,Message_Tag,CharsToRead);

参数 描述

Filename 指定要读取的文件。

FileOffset 指定文件中开始读取的位置。

Message_Tag 指定存放从文件中读取的数据的位置。最多可存储 131 个字符。

CharsToRead 指定从文件内读多少字节。为运行文本文件,CharsToRead 可以被设为 0。函数将一直读到文件中的下一个 LF(换行),或一直读到 131 个字符。

第页 54 共162

实例

FileWriteMessage (\"C:\\DATA\\FILE.TXT\

文件“C:\\DATA\\FILE.TXT”的第一行将被读出并保存到 MsgTag 中。此函数在读出之后返回新的字节位置。你可以在下次读时使用此返回值作为 FileOffset 的值。

FileWriteFields() 写入逗号分离变量(CSV)记录到指定文件。

句法 FileWriteFields(Filename,FileOffset,StartTag,NumberOfFields);

参数 描述

Filename 指定要写入的文件。若文件不存在,它将被创建。

FileOffset 指定文件中开始写入的位置。若 FileOffset 为 -1,此函数将写到文件末尾。

StartTag 指定一个第一个数据项目的 InTouch 标记名的名称。此标记名必须以一个数字结尾(如 MyTag1)。此参数必须是一个指示标记名的字符串(而非实际的标记名本身)。所以,若你的标记叫做 MyTag 1,你就得提供“MyTag1”或 MyTag1.name,而非仅仅 MyTag1 而已。

NumberOfFields 指定要写的域数目(此文件的每个记录中以逗号分离的域数目)。

说明 若 StartTag 为“MyTag1”,而 NumberOfFields 为 3,则有 3 个域被写入

第页 55 共162

文件中(写入的是 MyTag1,MyTag2

和 MyTag3)。这些具有连续名称的标记必须预先在 InTouch 中创建,并可以是不同的类型(整型,消息等等)。

下列脚本将写入行“This is text,3.1416, 5” 到 C:\\DATA\\FILE.CSV 的第一行。“This is text” 是当前 MyTag1 中的值,3.1416 在 MyTag2 中,而 5 在 MyTag3 中 :

FileWriteFields (\"C:\\DATA\\FILE.CSV\

此函数在写入之后返回新的字节位置。你可以在下次写时使用此返回值作为 FileOffset 值。

下面的脚本将把文本字符串 MyTag1 写到 C:\\DATA\\FILE.CSV 的结尾:

FileWriteFields (\"C:\\DATA\\FILE.CSV\

FileWriteMessage() 往指定文件写入一指定数目的字节(或一整行)。

句法 FileWriteMessage(Filename,FileOffset,Message_Tag, LineFeed);

参数 描述

Filename 指定要写入的文件。若文件不存在,则创建它。

FileOffset 指定在文件内开始写的位置。若 FileOffset 为 -1,此函数将写到文件

第页 56 共162

末尾。

Message_Tag 指定要写到文件中的字符。

LineFeed 1。

指定在写完操作之后是否加一行。当写一个文本文件时,设 LineFeed 为

说明 此函数在写入之后返回新的字节位置。你可以在下次写时使用此返回值作为FileOffset()。

实例

下列指令写入一个叫 MsgTag 的消息标记名到 C:\\DATA\\FILE.TXT 文件的结尾:

FileWriteMessage (\"C:\\DATA\\FILE.TXT\

.

.Ack 监视和/或控制本地报警的报警确认状态。

监视和/或控制本地报警的报警确认状态。

用法 Tagname.Ack=1

参数 描述

第页 57 共162

Tagname 任何离散,整型或实型标记名类型,间接模拟或组变量。

说明 设置这个点域值为 1 来确认任何与指定标记名/组有关的未确认的报警。当指定标记名是“组变量”类型或是一个报警组,所有与指定组内标记关联的未确认报警被确认。当指定标记是任何除组变量以外的类型,只有与此标记关联的未确认报警被确认。设置此点域为 1 以外的值将无意义,结果没有定义。

数据类型 离散(读/写)

有效值 1

实例

以下语句确认一个与名称为“Tag1”的标记名有关的报警。

Tag1.Ack=1;

下个例子被用来确认所有在名称为 PumpStation 的报警组内的没被确认的报警。

PumpStation.Ack=1;

一个间接报警组(用组变量)可用来确认报警。如,用如下赋值:

StationAlarms.Name = \"PumpStation\";

其中,StationAlarms 被定义为组变量类型标记名并与 PumpStation 有关。这样下

第页 58 共162

面的语句与上面的例子类似,除非它被用来确认 PumpStation 报警组内的没被确认的当前与名称为 StationAlarms 的组变量标记有关的报警。

StationAlarms.Ack=1;

注意

Ack 有一个相反的域叫 .Unack。当一个未确认报警发生时,.Unack 将被置为 1,.Unack 还可用于动画链接或“条件脚本”中为未确认报警触发电铃。

.Alarm 当指定标记名的报警条件存在时等于 1。

用法 Tagname.Alarm

参数 描述

Tagname 任何离散,整型或实型标记名类型,间接模拟或组变量。

说明 这个只读点域通常等于 0。当指定标记的报警条件存在时它被系统置为 1。在报警解除以前,它将一直等于 1。如果指定标记是组变量类型或是报警组名称,而且该组中任何一个标记处于报警状态,则 .Alarm 域被置为 1。.Alarm 有一个相反的点域 .Normal。

数据类型 离散(只读)

有效值 0 或 1(离散)

第页 59 共162

实例

下面语句检查是否“Tag1”有一个与之相关联的活性报警:

IF (Tag1.Alarm == 1) THEN

如果在名为“PumStation”的报警组中有活性报警,则这个 IF-THEN 语句的主体将被执行

IF (PumpStation.Alarm == 1) THEN

MyAlarmMessage=\"The pumping station currently has an ALARM!\";

ENDIF;

该点域没有链接到 .Ack 或 .Unack 点域。所以,即使一个活性报警已被确认,该点域仍然等于 1。

.AlarmDevDeadband 监视和/或控制副偏差报警和主偏差报警的偏差百分比死区。

用法 Tagname.AlarmDevDeadband

参数 描述

Tagname 任何整型,间接模拟标记类型的实数

第页 60 共162

说明 在标记名目录中检查保留参数,将在 WindowViewer 中自动保存通过动画或脚本对该域所做的改变。

数据类型 模拟(读/写)

有效值 0到100(整型)

实例

下一语句改变偏差死区百分比为25%:

Tagname.AlarmDevDeadband=25;

.AlarmEnabled 取消和/或激活某一标记名的事件和报警。

用法 Tagname.AlarmEnabled

参数 描述

Tagname 任何离散,整型,实型,间接模拟或组变量。

说明 当 .AlarmEnabled 设为 0 时,所有事件和报警都被忽略。它们不被存储在缓冲区,也不被写到磁盘上。尽可能重新激活事件/报警以避免数据丢失。

数据类型 离散(读/写)

第页 61 共162

有效值 0 = 取消报警和事件

1 = 激活报警和事件(缺省)

实例

下面语句取消与标记“Tag1”相关联的所有事件和报警。

Tag1.AlarmEnabled=0;

如果名为“PumpStation”的报警组的事件和报警被激活,下面 IF-THEN 语句的主体被执行。

IF (PumpStation.AlarmEnabled == 1) THEN

MyAlarmMessage=\"The Events and Alarms for the Pump

Station are enabled”

ENDIF;

.AlarmGroup 包含一个分布式报警显示的当前查询列表。

用法 [ErrorNumber=]GetPropertyM(“ObjectName.AlarmGroup”,Tagname);

第页 62 共162

参数 描述

ObjectName 报警对象的名称,如, AlmObj_1。

Tagname 当函数被处理时,用来保留属性值的消息标记名。

说明 该只读点域包含命名的分布式报警显示所用的当前报警查询。该查询可能是报警组或直接报警供应器参考列表。

数据类型 消息(只读)

实例 此语句将显示对象“AlmObj_1”的当前报警查询返回到消息标记名“CurrentQuery”:

GetPropertyM(\"AlmObj_1。AlarmGroup\

.AlarmValDeadband 监视和/或控制一个报警死区的值。

用法 Tagname.AlarmValDeadband

参数 描述

Tagname 任何整型,实型或间接模拟标记名类型。

说明 在标记名目录中检查保留参数,将在 WindowViewer 保存通过动画或脚本对该域所做的改变。

第页 63 共162

数据类型 模拟(读/写)

有效值 必须在为指定标记名所配置的值范围内。

实例

下面语句改变名为“Tag1”的标记的死区值为 25:

Tag1.AlarmValDeadband=25;

.Caption 决定复选框显示的“消息”。

用法 [ErrorNumber=]GetPropertyM (\"ControlName.Caption\

[ErrorNumber=]SetPropertyM (\"ControlName.Caption\

参数 描述

ControlName 窗口控制的名称,如,ChkBox_4。

Tagname 一个保留所请求的属性的消息标记名。

“Message” 引号内的一个消息字符串。

说明 该属性在开发时和运行时都是读/写。

第页 共162

数据类型 消息(读/写)

应用于 复选框。

实例

此语句设置复选框对象“CheckBox_1”的标题为“Blue Paint Option”。

SetPropertyM( \"CheckBox_1.Caption\

.ChartLength 控制一个历史趋势图表中显示的时间长度(以秒为单位的跨度)。

用法 Tagname.ChartLength

参数 描述

Tagname 任何历史趋势标记名类型

说明 此读/写点域用来设置(或检查)历史趋势图表的图表长度值。图表长度以秒来表示。长度定义为当前历史趋势图表显示的时间数量。进一步说,用来从历史趋势图表中检索图表长度的计算为:

ChartLength=(Date/Time Stamp on Right-Hand Side of Chart) -

(Date/Time Stamp on Left-Hand Side of Chart);

第页 65 共162

由于日期/时间标记自70年1月1日午夜开始并以秒表示,所以计算结果为“图表左右端之间显示的时间的秒数差”。

每当从 ChartLength 加或减时,重要的是记住你在使用秒。所以,你若想从当前“图表长度”减去“2

小时”,你必须在计算前将“2 小时”转化为秒,即:(2 小时) * (60 分钟/小时) * (60 秒/分钟) = 7200 秒。

数据类型 整型(读/写)

有效值 任何正整型

实例

下一语句强制图表跨度为一小时:

HtTagname.ChartLength=3600 {60 minutes * 60 seconds/minute};

下面语句使图表向左滚动一半:

HtTagname.ChartStart=HtTagname.ChartStart -

HtTagname.ChartLength / 2;

下面语句使图表向左滚动 10%:

第页 66 共162

HtTagname.ChartStart=HtTagname.ChartStart

HtTagname.ChartLength);

- (.10 *

.ChartStart 控制一个历史趋势图表的开始日期/时间标签。

用法 Tagname.ChartStart

参数 描述

Tagname 任何历史趋势标记名类型

说明 此读/写点域用来设置(或检查)一个历史趋势图表中开始(左边)日期/时间标签值。.ChartStart 域以自 70 年 1 月 1 日凌晨 0 时开始的秒数表示,“Start”定义为历史趋势图表左边的第一个日期/时间标签。

数据类型 整型(读/写)

有效值 任何正整型

实例

下面语句使图表向右滚动 1 分钟:

HtTagname.ChartStart=HtTagname.ChartStart + 60;

.Comment 包含为标记名称典中的标记输入的注释域的值。

第页 67 共162

用法 Tagname.Comment

参数 描述

Tagname 任何标记名

说明 当该域在 WindowMaker 中仅是被读时,该值可以在视图中(仅限内存)改变。一旦视图被关闭和重新启动,注释域的旧值被使用。该域用于分布报警系统的报警注释。

数据类型 消息(只读)

有效值 包含 0 到 15 个字符的任何字符串。有关字符串请见以下注意。

注意

标记的注释域只能在标记名称典内改变。在 WindowViewer 中给.Comment 域输入值,将不会写入标记名数据库。虽然在标记名数据库中标记注释允许 131 个字符,运行时数据库强加了50 个字符的。

实例

下一语句用包含标记名名称和标记名注释域的方法组装字符串(一个消息标记名的内容)。

OperatorMessage=MyTag.Name + \" has a comment of: \" +

第页 68 共162

MyTag.Comment;

注意

该域写到运行时数据库。它不被保存在标记名数据库中。

.DevTarget 监视和/或控制副偏差报警和主偏差报警的目标。

用法 Tagname.DevTarget

参数 描述

Tagname 任何整型,实型或间接模拟标记名类型。

说明 在标记名目录中检查保留参数,将在 WindowViewer 中保存通过动画或脚本对该域所做的改变。

数据类型 模拟(读/写)

有效值 必须在为指定标记名所配置的值范围内。

实例

下一语句给名称为“MyTag”的标记设置偏差目标的值为 500。

MyTag.DevTarget=500;

第页 69 共162

.DisplayMode 决定在趋势上显示值的方法。

用法 Tagname.DisplayMode

参数 描述

Tagname 任何历史趋势标记名类型

说明 无

数据类型 模拟(读/写)

有效值 1= 显示每一采样周期(缺省值)的最小/最大。

2 = 在“散点”图中显示每个采样周期平均值。

3 = 在“条形图表”图中显示每个采样周期平均值。

实例

以下语句指示与“MyHistTrendTag”有关的历史趋势来显示一个条形图。

MyHistTrendTag.DisplayMode=3;

.Enabled 决定控制对象能否对用户生成的事件响应。

第页 70 共162

用法 [ErrorNumber=] GetPropertyD(\"ControlName.Enabled\

[ErrorNumber=] SetPropertyD(\"ControlName.Enabled\

参数 描述

ControlName 窗口控制的名称,如,ChkBox_4。

Tagname 一个保留所请求属性的离散标记名。

Discrete 一个离散值:

0=控制失效

1=控制生效

-或-

储存当函数运行时要写入值的离散标记名。

说明 该属性在开发时和运行时都是读/写。

数据类型 离散(读/写)

应用于 文本框,列表框,组合框,复选框和单选按钮。

第页 71 共162

实例

以下语句使名为“ListBox_1”的表框对象失效。

SetPropertyD( \"ListBox_1.Enabled\

参见 GetPropertyD(), SetPropertyD()

.EngUnits 工程单位域允许用户访问在标记名称典中指定的模拟标记名的工程单位。

用法 Tagname.EngUnits

参数 描述

Tagname 任何整型,实型或间接模拟标记名类型。

说明 该域为文本域,它不影响比例,转换,或标记名值的格式。

数据类型 消息(读/写)

有效值 包含 0 到 31 个字符的任何字符串。

实例

IF Temperature.EngUnits == \"Celsius\" THEN

第页 72 共162

CALL TempConvert(Temperature);{可用来将华氏转为摄氏的快速函数}

ENDIF;

.HiHiLimit 监视和/或控制值报警检查的 HiHi 限。

用法 Tagname.HiHiLimit

参数 描述

Tagname 任何整型,实型或间接模拟标记名类型。

说明 在标记名目录中检查保留参数,将在 WindowViewer 中保存通过动画或脚本对该域所做的改变。

数据类型 模拟(读/写)

有效值 必须在为指定标记名配置的值范围内。

实例

下面语句在名为“MyTag”的标记的 HiHiLimit(报警极限)上增加 5:

MyTag.HiHiLimit=MyTag.HiHiLimit + 5;

.HiHiStatus 决定是否存在一个 HiHi 限报警。

第页 73 共162

用法 Tagname.HiHiStatus

参数 描述

Tagname 任何整型,实型或间接模拟标记名类型。

说明 此只读点域通常等于 0。当对指定标记存在一个 HiHi 值报警条件时,此点域被系统设为 1,此点域将保持为1,直到报警条件不再存在。此点域常与 .Alarm 和 .Ack 的结合使用以决定系统内特定标记名报警状态的确切性质。

数据类型 离散(只读)

有效值 0 = 指定报警条件不存在

1 = 指定报警条件存在

实例

下面 IF-THEN 语句只有在标记“MyTag”的 .HiHiStatus (“上-上报警”) 等于 1 时被执行,当 MyTag 进入上上报警时,

IF-THEN 的主体将执行:

IF (MyTag.HiHiStatus == 1) THEN

OperatorMessage=\"MyTag has gone into High-High Alarm\";

第页 74 共162

ENDIF;

.HiLimit 监视和/或控制值报警检查的上限。

用法 Tagname.HiLimit

参数 描述

Tagname 任何整型,实型或间接模拟标记名类型。

说明 在标记名目录中检查保留参数,将在 WindowViewer 中保存通过动画或脚本对该域所做的改变。

数据类型 模拟(读/写)

有效值 必须在为指定标记名配置的值范围内。

实例

Temperature.HiLimit = 212;

.HiStatus 决定是否存在一个上限报警。

用法 Tagname.HiStatus

参数 描述

第页 75 共162

Tagname 任何整型,实型或间接模拟标记名类型。

说明 此只读点域通常等于 0。当对指定标记存在一个上限值报警条件时,此点域被系统设为 1,此点域将保持为1,直到报警条件不再存在。此点域常与 .Alarm 和 .Ack 的结合使用以决定系统内特殊标记报警状态的确切性质。

数据类型 离散(只读)

有效值 0 = 指定报警条件不存在

1 = 指定报警条件存在

实例

IF (MotorAmps.HiStatus == 1) THEN

CALL PumpShutdown( ); {可用来清除泵发动机输出的快速函数}

ENDIF;

.ListCount 决定列表框或组合框中的项目。

用法 [ErrorNumber=]GetPropertyI(“ControlName.ListCount”,Tagname);

参数 描述

第页 76 共162

ControlName 窗口控制的名称,如,ListBox_4。

Tagname 一个包含列表中项目整型计数的有效标记名。

说明 该属性只在运行时可用。

数据类型 整型(只读)

应用于 列表框和组合框。

实例

下面语句检索名为“ListBox_1”的列表框中的项目数,然后将此值放入名为“MyListBoxCount”的内存整型标记名中。

GetPropertyI( \"ListBox_1.ListCount\

.ListIndex 决定列表中当前选定项的相应索引(标记名或数字)。索引是一个指定列表中某一项的数字。当应用列表框时,索引 -1

指示目前没有项目被选定。当应用组合框时,索引 -1 指示用户已输入新文本到控制的文本输入域。

用法 [ErrorNumber=]GetPropertyI(“ControlName.ListIndex”,Tagname);

[ErrorNumber=]SetPropertyI(“ControlName.ListIndex”,Number);

第页 77 共162

参数 描述

ControlName 窗口控制的名称,如,ListBox_4。

Tagname 一个包含列表内项目整型计数的有效标记名。

Number 在列表内定义一个指定项目的索引号。

说明 该属性只在运行时可用。

数据类型 整型(读/写)

应用于 列表框和组合框。

实例

此语句检索名为“Listbox_1”的列表框中当前选定项的索引,然后将此值放入名为“MyListBoxIndex”的内存整型标记中。

GetPropertyI( \"ListBox_1.ListIndex\

.LoLimit 监视和/或控制值报警检查的下限。

用法 Tagname.LoLimit

参数 描述

第页 78 共162

Tagname 任何整型,实型或间接模拟标记名类型。

说明 在标记名目录中检查保留参数,将在 WindowViewer 中保存通过动画或脚本对该域所做的改变。

数据类型 模拟(读/写)

有效值 必须在为指定标记名配置的值范围内。

实例

此语句使名为“MyTag”的标记下限减去 10:

MyTag.LoLimit=MyTag.LoLimit - 10;

.LoLoLimit 监视和/或控制值报警检查的 LoLo 限。

用法 Tagname.LoLoLimit

参数 描述

Tagname 任何整型,实型或间接模拟标记名类型。

说明 在标记名目录中检查保留参数,将在 WindowViewer 中保存通过动画或脚本对该域所做的改变。

第页 79 共162

数据类型 模拟(读/写)

有效值 必须在为指定标记名配置的值范围内。

实例

该语句将名称为“MyTag”的标记的 LoLo 限(报警)减去 10。

MyTag.LoLoLimit=MyTag.LoLoLimit - 10;

.LoLoStatus 确认是否存在一个 LoLo 限报警。

用法 Tagname.LoLoStatus

参数 描述

Tagname 任何整型,实型或间接模拟标记名类型。

说明 此只读点域通常等于 0。当对指定标记存在一个 LoLo 值报警条件时,此点域被系统设为 1,此点域将保持为1,直到报警条件不再存在。此点域常与 .Alarm 和 .Ack 的结合使用以决定系统内特定标记报警状态的确切性质。

数据类型 离散(只读)

有效值 0 = 指定的报警状态不存在

第页 80 共162

1 = 指定报警条件存在

实例

下面的 IF-THEN 语句只有当名为“MyTag”的标记的 .LoLoStatus (\"下下报警\")等于 1 时被执行,当 MyTag 进入下下报警时,

IF-THEN 的主体将执行:

IF (MyTag.LoLoStatus == 1) THEN

OperatorMessage=\"MyTag has gone into Low-Low Alarm\";

ENDIF;

.LoStatus 决定一个下限报警是否存在。

用法 Tagname.LoStatus

参数 描述

Tagname 任何整型,实型或间接模拟标记名类型。

说明 此只读点域通常等于0。当对指定标记存在一个下限值报警条件时,此点域被系统设为 1,此点域将保持为1,直到报警条件不再存在。此点域常与 .Alarm 和 .Ack 的结合使用以决定系统内特定标记报警状态的确切性质。

第页 81 共162

数据类型 离散(只读)

有效值 0 = 指定的报警状态不存在

1 = 指定报警条件存在

实例

IF (WaterLevelTank1.LoStatus == 1) THEN

PumpShutdown = 1;

WaterFillValue = 1;

ENDIF;

.MajorDevPct 监视和/或控制报警检查的主偏差百分比数。

用法 Tagname.MajorDevPct

参数 描述

Tagname 任何整型,实型或间接模拟标记名类型。

说明 在标记名目录中检查保留参数,将在 WindowViewer 中保存通过动画或脚本对该域所做的改变。

第页 82 共162

数据类型 整型(读/写)

有效值 0 到 100%

实例

下面语句将名为“MyTag”的标记的主偏差极限属性设置为 25%:

MyTag.MajorDevPct=25;

.MajorDevStatus 决定指定标记名是否存在主偏差报警。

用法 Tagname.MajorDevStatus

参数 描述

Tagname 任何整型,实型或间接模拟标记名类型。

说明 此只读点域通常等于0。当对指定标记存在一个报警条件时,此点域被系统设为 1,此点域将保持为1,直到报警条件不再存在。

数据类型 离散(只读)

有效值 0 = 指定的报警状态不存在

1 = 指定报警条件存在

第页 83 共162

实例

下面的 IF-THEN 语句只有当名为“MyTag”的 .MajorDevStatus (“主偏差报警“)等于 1 时被执行,换句话说,当 MyTag 进入主偏差报警时 IF-THEN 主体将执行:

IF (MyTag.MajorDevStatus == 1) THEN

OperatorMessage=“MyTag has gone into a Major Deviation Alarm”;

ENDIF;

说明 此点域常与 .Alarm 和 .Ack 的结合使用以决定系统内特定标记报警状态的确切性质。

.MaxEU 指定标记名的最大值(以工程单位)。

用法 Tagname.MaxEU

参数 描述

Tagname 任何整型,实型或间接模拟标记名类型。

说明 当它首次到达 WindowViewer 时,来自服务器的值被认为是“原始值”。这些原始值可能需要放大或缩小。.MinEU 和 .MaxEU 是被用来放大或缩小“原始值”的。作为一个典型例子,假设域中的程序化逻辑控制器正在读水平尺。水平发送器送回范围在 4 到 20mA 之间的信号。域中的 PLC 将信号转换为 0

第页 84 共162

到 4096 之间的整型值(通过数字到模拟的转换器)。该值被读入成为“TankTwoLevel”的标记。

显示这一“原始值”(在 0 到 4096 之间)将不提供有用数据给操作员。所以必须将该值放大或缩小到适当的工程范围。为了实现这一点,必须正确设置最小工程单位和最大工程单位域。在我们的实例中,如果原始值 0(4mA) 转换成“0 加仑”并且值 4096(20mA)转换成“100 加仑”,要在屏幕上显示正确值需要下列设置:

最小原始值=0, 最大原始值= 4096

最小工程单位=0,最大工程单位=100

用这些设置,当原始值为 4096 时,显示在屏幕上的值将为 100。

数据类型 实型(只读)

有效值 根据指定的标记名类型。

实例

由于此点域是只读,故不能给它赋值。显示 .MinEU 和 .MaxEU 或在计算中使用它们是很有用的,并且能够通过在屏幕上提供的基本计算,使操作员能更好地理解。

DialogValueEntry (\"IO_Point_717\IO_Point_717.MinEU, IO_Point_717.MaxEU, \"Pleae Enter a New Value:\");

第页 85 共162

.MaxRange 代表应为被跟踪标记名显示的标记名工程单位范围的百分数。

用法 Tagname.MaxRange

参数 描述

Tagname 任何历史趋势标记名类型。

说明 由于许多不同标记可以在任何同一时刻显示在历史趋势上,且每个标记能够有完全不同的工程范围,所以以工程单位指定 .MinRange 和 .MaxRange 将是不可能的。所以,最小和最大以每一标记名工程范围的百分数来表示。这样,无论标记名真正工程范围如何,历史趋势将只显示相对于该标记名特定的工程范围的百分数。

数据类型 实型(读/写)

有效值 .MaxRange 和 .MinRange 的极限为 0 到 100。.MinRange 和 .MaxRange 以百分数表示。.MinRange 必须小于 .MaxRange。如果这些域被赋于小于 0 或大于 100 的值,这些值将定为 0 或 100。如果 .MinRange 等于或大于 .MaxRange,趋势将不显示任何数值。

实例

以下语句设置与名称为“MyHistTrendTag”的历史趋势标记相关联的历史趋势的最大范围百分数为 25%。

MyHistTrendTag.MaxRange=25;

第页 86 共162

.MaxRaw 为 WindowViewer 作为客户从某一 I/O 服务器接收的实际原始值所设的高钳位值。.MaxRaw 域值来自于指定 I/O 标记名的标记名数据库的最大原始值域。任何超出该设置的原始值将被钳位为此值。

用法 Tagname.MaxRaw

参数 描述

Tagname 任何 I/O 整型,内存实型,或间接模拟,标记名类型。

说明 该只读点域是被用来显示最大原始值钳位设置的。

数据类型 实型或整型(只读)

有效值 任何模拟值

实例

以下可被用来判别标记名是否超出正常操作范围以及其值是否因此而被钳位。

IF ((Temp01.RawValue > Temp01.MaxRaw) OR (Temp01.RawValue Temp01.MinRaw))THEN

Show“Instrument Failure Window”;

ENDIF;

第页 87 共162

< .MinEU 指定标记名的最小值(以工程单位)。

用法 Tagname.MinEU

参数 描述

Tagname 任何整型,实型或间接模拟标记名类型。

说明 当它首次到达 WindowViewer 时,来自服务器的值被认为是“原始值”。这些原始值可能需要放大或缩小。.MinEU 和 .MaxEU 是被用来放大或缩小“原始值”的。作为一个典型例子,假设域中的程序化逻辑控制器正在读水平尺。水平发送器送回范围在4 到 20mA之间的信号。域中的 PLC 将信号转换为 0

到 4096 之间的整型值(通过数字到模拟的转换器)。该值被读入成为“TankTwoLevel”的标记。

显示这一“原始值”(在0和4096之间)将不提供有用数据给算符。所以必须将该值放大或缩小到适当的工程范围。为了实现这一点,必须正确设置最小工程单位和最大工程单位域。在我们的实例中,如果原始值 0(4 mA) 转换成“0 加仑”并且值4096(20 mA)转换成“100 加仑”,要在屏幕上显示正确值,需要下面的设置:

最小原始值=0,最大原始值= 4096

最小工程单位=0,最大工程单位=100

用这些设置,当原始值为 4096 时,显示在屏幕上的值将为100。

第页 88 共162

数据类型 实型(只读)

有效值 有赖于指定的标记名类型。

实例

AbsoluteTagRange = (Tag.MaxEU - Tag.MinEU);

.MinorDevPct 监视和/或控制报警检查副偏差的百分比。

用法 Tagname.MinorDevPct

参数 描述

Tagname 任何整型,实型或间接模拟标记名类型。

说明 在标记名目录中检查保留参数,将在 WindowViewer 中保存通过动画或脚本对该域所做的改变。

数据类型 整型(读/写)

有效值 0 到 100%

实例

下面语句设置名为“MyTag”的标记的副偏差极限属性为 25%:

第页 共162

MyTag.MinorDevPct=25;

.MinorDevStatus 决定指定标记名是否存在副偏差报警。

用法 Tagname.MinorDevStatus

参数 描述

Tagname 任何整型,实型或间接模拟标记名类型。

说明 此只读点域通常等于 0。当对指定标记存在一个 报警条件时,此点域被系统设为 1,此点域将保持为1

,直到报警条件不再存在。

数据类型 离散(只读)

有效值 0 = 指定报警条件不存在

1 = 指定报警条件存在

实例

下面的 IF-THEN 语句只有当名为“MyTag”的标记的 .MinorDevStatus (“副偏差报警”)等于 1 时被执行,换言之,当 MyTag

第页 90 共162

进入副偏差报警时,IF-THEN 的主体将执行。

IF (MyTag.MinorDevStatus == 1) THEN

OperatorMessage=“MyTag has gone into Minor Deviation Alarm“;

ENDIF;

说明 此点域常与 .Alarm 和 .Ack 的结合使用以决定系统内特定标记报警状态的确切性质。

.MinRange 代表应为每一被趋势标记名显示的历史趋势范围百分比。

用法 Tagname.MinRange

参数 描述

Tagname 任何历史趋势标记名类型

说明 由于许多不同标记可以在任何同一时刻显示在历史趋势上,且每个标记能够有完全不同的工程范围,所以以工程单位指定 .MinRange 和 .MaxRange 将是不可能的。所以,最小和最大以每一标记名工程范围的百分数来表示。这样,无论标记名真正工程范围如何,历史趋势将只显示相对于该标记名特定的工程范围的百分数。

数据类型 实型(读/写)

第页 91 共162

有效值 .MaxRange 和 .MinRange 的极限为 0 到 100。.MinRange 和 .MaxRange 以百分数表示。.MinRange 必须小于 .MaxRange。如果这些域被赋于小于 0 或大于 100 的值,这些值将定为 0 或 100。如果 .MinRange 等于或大于 .MaxRange,趋势将不显示任何数值。

实例

TotalChartHeight=MyHistTrendTag.MaxRange - MyHistTrendTag.MinRange;

.MinRaw 为 WindowViewer 作为客户从某一I/O 服务器接收的实际原始值所设的低钳位值。.MinRaw 域值来自于指定 I/O 标记名的标记名数据库的最小原始值域。任何低于该设置的原始值将被钳位为该值。

用法 Tagname.MinRaw

参数 描述

Tagname 任何 I/O 整型,内存实型,或间接模拟标记名类型。

说明 该只读点域是用来显示最小原始数据的钳位值设置的。

数据类型 实型或整型(只读)

有效值 任何模拟值

实例

第页 92 共162

以下可被用来判别标记名是否超出正常操作范围以及其值是否因此而被钳位。

IF ((Temp01.RawValue > Temp01.MaxRaw) OR (Temp01.RawValue < Temp01.MinRaw))THEN

Show“Instrument Failure Window”;

ENDIF;

.Name 包含“字符串”形式的指定标记名名称。

用法 Tagname.Name

参数 描述

Tagname 任何标记名类型。

数据类型 消息(读/写)

有效值 赋值只能作用于包括组变量和标记 ID 在内的间接类型标记的 .Name 域。当给该域赋值时,赋值字符串的格式必须遵从标记名命名规则,例如什么是适当的符号以及第一个字符必须总是字母。

说明 该域对以下标记名类型为只读:

历史趋势,任何内存类型,任何 I/O 类型

第页 93 共162

此域对下列标记名类型是可读/写的:

组变量,标记 ID,任何间接类型

在只读操作中,该域的用途在于不用引号就可以来指定标记名,如,MyTag.Name 与 “MyTag”相同。这对于选择 WindowMaker 中“特殊”菜单上的“更新使用计数”或用交叉引用来扫描标记名用法来说非常有用的,如果在引号内,标记名是看不到的。所以,如果标记名的唯一用法是在引号内指定,而你执行“更新使用计数”,然后是“特殊”,“删除无用标记”,该标记名将被清除,因为它被当作无用标记。“”可被用来清除一个间接标记名的引用,因此使以前的赋值无效。

在读/写的操作中,此域更有用。它允许你修改指定间接标记名的身份。当间接标记名的 .Name 域被赋给另一标记名时,假定两标记为同一类型,间接标记名实际上变为另一标记名,它可在 InTouch

中用于任何原始标记名可使用的地方。类似地,你可以改变组变量类型标记名正在模仿的报警组。

实例

以下 .Name 串联只读语句是用来为操作员建立消息:

MyMessageTag=“The tag named” + MyTag.Name + “has a comment of”

MyTag.Comment;

第页 94 共162

下面读/写语句改变名为“MyGroupVarTag”组变量类型标记引用的报警组:

MyGroupVarTag.Name=\"SomeAlarmGroup\";

方案:你开发一个图形窗口来显示有关油井的三个重要统计,但你有100口油井。下面的数据更改脚本可用来更新单个图形窗口而不管操作员选择哪口油井。数据改变动作脚本的标记名是OilWellNumber。

IndOilWellPump.Name = \"OilWellPump\" + Text(OilWellNumber, \"#\");

IndOilWellTEP.Name = \"OilWellTemp\" + Text(OilWellNumber, \"#\");

IndOilWellPressure.Name = \"OilWellPressure\" + Text(OilWellNumber, \"#\");

用标记名域中的 OilwellNumber,使用一个有触动输入模拟链接按钮来强迫脚本执行。在运行时,每当操作员单击按钮并输入油井号码,该脚本就会执行。

.NewIndex 返回通过 wcAddItem( ) 或 wcInsertItem( ) 函数,最后添加到列表框或组合框的项目的相应整型索引(标记名)。

用法 [ErrorNumber=]GetPropertyI(\"ControlName.NewIndex\

参数 描述

ControlName 窗口控制的名称,如,ListBox_4。

第页 95 共162

Tagname 包含最后添加到列表框或组合框中项目的整型索引的标记名。对空白列

表,返回值为-1。

说明 该属性只在运行时可用。

数据类型 整型(只读)。

应用于 列表框和组合框。

实例

下面语句检索名为“Listbox_1”的列表框中最新添加项目的索引并且把此值放进名为“NewItemIndex”的内存整型标记中。

GetPropertyI(\"ListBox_1.NewIndex\

.NextPage 当此属性从 1 转变到 0 时,报警显示向下滚动一页(一整屏的报警)。

用法 [ErrorNumber=]GetPropertyD(“ObjectName.NextPage”,Tagname);

[ErrorNumber=]SetPropertyD(“ObjectName.NextPage”,Value);

参数 描述

ObjectName 报警对象的名称,如,AlmObj1。

第页 96 共162

Tagname 的离散标记名。

当函数用作“Tagname”或“Tagname.Name”来运行时,保留属性值

Value 一个离散值。或为当函数被处理时存放被写入值的离散 InTouch 标记名。

说明 当此值从 1 转到 0 时,报警显示将显示小下一页。一旦下一页被显示,变量自动设为 1,除非达到列表顶端,在这种情况下,此值保持为 0。

数据类型 离散(读/写)

.Normal 当指定标记名没有报警时,.Normal 等于 1。

用法 Tagname.Normal

参数 描述

Tagname 任何离散,整型,实型,间接模拟和组变量标记名类型。

说明 此点域用在脚本或显示链接中指示指定的标记名处于“正常”状态(无活性报警)。如果对于指定标记有一个或多个活性报警,此点域被置为 0。

数据类型 离散(只读)

有效值 0 = 一个或多个指定标记名的活性报警

1 = 指定标记名没有活性报警(缺省值)

第页 97 共162

实例

当没有任何报警与标记“Tag1”相关联时,下面的 IF-THEN 语句的“THEN”主体将执行。当对“Tag1”有一个或更多个活性报警时,“ELSE”主体将执行:

IF (Tag1.Normal==1) THEN

MyOperatorMessage=\"Tag1 is OK - No alarms associated with it\";

ELSE

MyOperatorMessage=\"Tag1 has one or more alarms active!\";

ENDIF;

.NumAlarms 包含一个报警对象内的报警数目。

用法 [ErrorNumber=]GetPropertyI(“ObjectName.NumAlarms”,Tagname);

参数 描述

ObjectName 报警对象的名称,如, AlmObj_1。

Tagname 一个在函数运行时保留属性值的整型类型标记名。

说明 该只读点域包含当前在已命名的分布式报警显示中注册的报警的数目。不只包括

第页 98 共162

被显示的报警,所有注册的报警都包括在内。

数据类型 整型(只读)

实例

下面语句返回显示对象“AlmObj_1”所用的报警的当前数目到整型标记名“AlarmCount”:

GetPropertyI(\"AlmObj_1。NumAlarms\

.OffMsg .OffMsg 域允许用户如同在标记名称典指定的一样,访问一个离散标记名的关闭消息。

用法 Tagname.OffMsg

参数 描述

Tagname 任何间接标记名类型。

数据类型 消息 (读/写)

有效值 包括 0 到 15 个字符的任何字符串。

实例

第页 99 共162

如果 MyDiscrete 的值为 0, 下面的脚本把 MyDiscrete 标记名数据库中的 OffMsg 字符串赋值给标记名 StateMessage。

StateMessage=Dtext (MyDiscrete, MyDiscrete.OnMsg, MyDiscrete.OffMsg);

.OnMsg .OnMsg 域允许用户如同在标记名称典中指定的那样,访问离散标记名的启动消息。

用法 Tagname.OnMsg

参数 描述

Tagname 任何间接标记名类型。

数据类型 消息(读/写)

有效值 包括 0 到 15 个字符的任何字符串。

实例

IF IndAnalog.OnMsg == “Running” THEN

TypeOfTag = “IndAnalog was assigned a Motor Starter”;

ENDIF

第页 100 共162

.PageNum 包含显示在报警对象中的当前页码。

用法 [ErrorNumber=]GetPropertyI(“ObjectName.PageNum”,Tagname);

参数 描述

ObjectName 报警对象的名称,如, AlmObj_1。

Tagname 一个在函数运行时保留属性值的整型类型标记名。

说明 此只读点域包含在命名的分布式报警中显示的当前页数。

数据类型 整型(只读)

实例

下面语句返回显示对象“AlmObj_1”的当前页数到整型标记名“Alarm Page“:

GetPropertyI(\"AlmObj_1。PageNum\

.Pen1-.Pen8 控制被每支笔历史趋势的标记名。

用法 Tagname{.Pen1 | .Pen2 | .Pen3 | .Pen4 | .Pen5 | .Pen6 | .Pen7 | .Pen8};

参数 描述

第页 101 共162

Tagname 任何历史趋势标记名类型。

说明 由于使用 .PenX 域的复杂性,建议尽可能使用 HTSetPenName 和 HTGetPenName 函数。

注意

只有本地标记可赋给一个 .PenX 域。不能用“provider.tag”表示法。“provider.tag“仅能用在 HTSetPenName 中。

学习这些点域函数如何成为屏幕上的历史趋势向导和分解的最佳参考。这里将显示点域是如何被使用的。

数据类型 TagID(读/写)

有效值 这个点域是 .TagID 类型。这意味着一个标记的句柄可以赋予此点域。你不能给此域赋予标记名的名称。你必须给这个点域赋予与一个标记名相关连的 .TagID 点域。你可能需要参考 .TagID 点域的描述以更清楚理解里的解释。通常说来, 一个 TagID 型标记名只能与另一个 TagID 标记名等同。它不能与其它标记名类型混用,除非 .TagID 域扩展被添加到其它标记名。

尽管此点域被认为是读/写的,但它的值不能直接显示在屏幕上。

实例

下面语句用来将一个新标记名赋于名为“MyHistTrendTag”的历史趋势类型标记名

第页 102 共162

相关联的历史趋势 Pen1。通过执行下面与“MyHistTrendTag”相关联的历史趋势脚本 Pen1 中的语句,将开始为名为“MyLoggedTag”的标记显示历史记录数据。注意为了赋予它到 Pen1,我们须如何附加 .TagID 点域到“MyLoggedTag”名称中。这是因为“Pen1”点域是“TagID”类型,并且因为当执行赋值时,你必须使类型匹配(例如:DiscreteTag = DiscreteTag,是可被接受的, 而DiscreteTag = MessageTag 是非法而且没有意义的!),我们必须赋值一个 TagID 类型对象到那个点域。

MyHistTrendTag.Pen1=MyLoggedTag.TagID;

继续上面的例子,如果我们要显示刚赋值到“MyHistTrendTag.Pen1”的标记名名称,结果怎样? 这对操作员来说是非常重要的一个消息。此外,标记名的名称显示在历史趋势附近的图例中,以供参考是很好的。为了完成这些,在消息显示链接中显示“MyHistTrendTag.Pen1”看来是很自然的,但是当你试着这么做时,你将发现它不工作。为什么呢?.Pen1

域的实际值是一个代表 WindowViewer 中内存位置的整数,对显示的目的并不特别有用。为了避开这一点,我们必须小心做一下练习。首先,创建一个 TagID 类型的新标记名;称为“Pen01”。放置以下语句到前一例子中的语句下面:

Pen01=MyHistTrendTag.Pen1;

在第一个例子中,我们将标记“MyLoggedTag”赋予“MyHistTrendTag”的 Pen1。在此例中我们进一步给“MyHistTrendTag”的 Pen1 赋值,现在是“MyLoggedTag”的 TagID 赋予标记 Pen01。为什么这样做? 原因是我们需要一个到达 .Name 点域的方法。我们不能简单地在屏幕上显示“MyHistTrendTag.Name”,因为它总是要在屏幕上

第页 103 共162

显示“MyHistTrendTag”。如果我们试图在屏幕上显示“MyHistTrendTag.Pen1”,链接编辑器不允许我们这样做,因为 Pen1 是 TagID 类型,它不能被显示。因此我们需要一个辅助标记来沟通显示系统和历史系统。通过将“MyHistTrendTag.Pen1”的值赋给 TagID 类型标记名“Pen01”,我们基本上将“MyLoggedTag”赋予“Pen01”。实际上,我们可以用以下程序来完成上面所做的任务。它们在功能上是相同的:

Pen01=MyLoggedTag.TagID;

那么,为什么我们选第一个语句而不是第二个?因为第一个更通用。另外,你可以简单地将 “MyHistTrendTag.Pen1”作为“标记名”放在数据更改脚本中并且将 Pen01 = MyHistTrendTag.Pen1 放在主体中。这样,不用知道刚把哪个标记名赋予 Pen1,你可以把那同一个标记名赋给 Pen01。这允许你经常在屏幕上显示赋予历史趋势的 Pen1 的标记名名称,即使当有人通过正常用户接口(在视图中单击趋势)或通过系统中的某一脚本改变了标记名。

进一步看这个例子,你可能在某一点希望显示被趋势的特殊标记的最小与最大工程单位。历史趋势向导在这方面做了很好的工作。我们建议你用一点时间将历史趋势向导置于屏幕上,分解它并观察它是如何被构筑的。这将使你更好地理解点域是如何作用的。

因为像“Pen01”这样的 TagID 类型标记通常没有工程单位或一般可用于其它标记的点域,我们不能用它来显示赋予它的标记名的工程单位。如,我们不能显示“Pen01.MaxEU”,因为链接编辑器将认为 .MaxEU 不是 TagID 类型的 Pen01 的有效点域。

为避免这样, 我们仅仅需要一个帮助标记名来处理 TagID 类型与显示系统之间的转

第页 104 共162

换。首先, 创建一个间接模拟类型的标记名为例,“IndirectAnalogPen1”。在与例 2 相同的数据更改脚本中放入下面语句:

IndirectAnalogPen1.Name=Pen01.Name;

Pen01 的名称(在我们的实例中它应该等于“MyLoggedTag”)被赋予间接标记名“IndirectAnalogpen1”。做完这个,我们可来访问所有我们通常可以使用的,与模拟标记名(在这里是名为“MyLoggedTag”的整型标记名)有关的点域。因此我们现在能把模拟显示链接和下面语句放在屏幕上:

IndirectAnalogPen1.MaxEU

这将显示当前赋予标记名“IndirectAnalogPen1”标记名的最大工程单位。由于在以上数据更改脚本中我们将 Pen01.Name

赋给它,我们可以肯定它将显示当前赋给“MyHistTrendTag”的 Pen1 的标记名的最大工程单位。

.PrevPage 当此属性从 1 转变到 0 时,报警显示向上滚动一页(一整屏的报警)。

用法 [ErrorNumber=]GetPropertyD(“ObjectName.PrevPage”,Tagname);

[ErrorNumber=]SetPropertyD(“ObjectName.PrevPage”,Value);

参数 描述

第页 105 共162

ObjectName 报警对象的名称,如, AlmObj_1。

Tagname 一个在函数运行时保留属性值的(将返回同样类型的)标记名。

Value 一个离散值。或为当函数执行时存放被写入值的离散 InTouch 标记名。

说明 一旦这个值由 1 转换为 0 时,报警显示将显示前一页。一旦前一页被显示,变量自动设为 1,除非达到列表顶端,在这种情况下,此值保持为 0。

数据类型 离散(读/写)

.PriFrom 包含当前查询优先级的低过滤值。

用法 [ErrorNumber=]GetPropertyI(“ObjectName.PriFrom”,Tagname);

参数 描述

ObjectName 报警对象的名称,如, AlmObj_1。

Tagname 一个当函数运行时保留属性值的整型标记名。

说明 此只读点域包含用于指定分布式报警显示中查询报警的最小优先级。

数据类型 整型(只读)

实例

第页 106 共162

下面语句返回显示对象“AlmObj_1”所用查询的最小优先级值到整型标记“MinPri“:

GetPropertyI(\"AlmObj_1。PriFrom\

.PriTo 包含当前查询优先级的高过滤值。

用法 [ErrorNumber=]GetPropertyI(“ObjectName.PriTo”,Tagname);

参数 描述

ObjectName 报警对象的名称,如, AlmObj_1。

Tagname 一个当函数运行时保留属性值的整型标记名。

说明 此只读点域包含用于指定分布式报警显示查询报警的最大优先级值。

数据类型 整型(只读)

实例

下面语句返回显示对象“AlmObj_1”所用查询的最大优先级值到整型标记“MaxPri“:

GetPropertyI(\"AlmObj_1.PriTo\

第页 107 共162

.ProviderReq 包含当前查询所需报警供应器数目。

用法 [ErrorNumber=]GetPropertyI(“ObjectName.ProviderReq”,Tagname);

参数 描述

ObjectName 报警对象的名称,如, AlmObj_1。

Tagname 一个当函数运行时保留属性值的整型标记名。

说明 此只读点域包含用于指定分布式报警显示所用的当前查询需要的报警供应器的数目。

数据类型 整型(只读)

实例

以下语句返回显示对象“AlmObj_1”所用的当前查询所需的报警供应器的数目。该值被写入整型标记名“TotalProv”:

GetPropertyI(\"AlmObj_1.ProviderReq\

.ProviderRet 包含成功返回其查询结果的报警供应器数目。

用法 [ErrorNumber=]GetPropertyI(\"ObjectName.ProviderRet\

第页 108 共162

参数 描述

ObjectName 报警对象的名称,如, AlmObj_1。

Tagname 一个当函数运行时保留属性值的整型标记名。

说明 此只读点域包含用于指定分布式报警显示所用的当前查询返回的报警供应器数目。

数据类型 整型(只读)

实例

以下语句返回已成功地将报警返回给显示对象“AlmObj_1”的报警提供器数目。该值被写入整型标记名“RetProv”:

GetPropertyI(\"AlmObj_1.ProviderRet\

.Quality

要完全理解 Wonderware 所用的质量点域,提出了质量标准的简短定义。Wonderware 数据质量标准是基于过程控制(OPC)提议质量的 OLE 的,它又反过来基于域总线数据质量规定。

质量标帜代表某一项目数据值的质量状态。该设计能使服务器和客户应用程序较简单地来判定它们要完成多少功能。

第页 109 共162

质量标帜的下 8 位(最不重要字节)当前以三位域的格式定义;定义,次状态和极限状态排列如下:

QQSSSSLL

质量域允许用户如同 I/O 服务器所提供的一样来访问某一 I/O 标记名的质量。

注意

如果 I/O 连接失效,质量点域自动恢复位为初值零。.ReferenceComplete 标帜也同时设为零。

用法 Tagname.Quality

参数 描述

Tagname 任何离散,整型,实型,间接模拟,或消息标记名类型。

数据类型 消息(读/写)

有效值 值可以是 0 到 255

实例

IF I0Tag.Quality <> 192 THEN

第页 110 共162

LogMessage(“The data is not good!”);

ENDIF;

Wonderware I/O 服务器可报告送回客户机的数据质量的六(6)个互异状态。它们是:

OPC QualityBytes

OPC QualityBytes .QualityStatus

MSByte LSByte .QualitySubStatus

Hex值 XXXXXXXX QQSSSSLL .QualiyLimit

1. 好 0x00C0 00000000 00000000 Q=3 S=0 L=0

2. 上截断 0x0056 00000000 00000000 Q=1 S=5 L=2

3. 下截断 0x0055 00000000 00000000 Q=1 S=5 L=1

4. 不能转换 0x0040 00000000 00000000 Q=1 S=0 L=0

5. 不能访问点 0x0004 00000000 00000000 Q=0 S=1 L=0

6. 通讯失败 0x0018 00000000 00000000

第页 111 共162

Q=0 S=6 L=0

当客户应用程序不能与服务器通讯时,QualityStatus 为 0。

0x0000 00000000 00000000 Q=0 S=0 L=0

报告每个质量状态的条件如下:

1. 好

2. 好 上截断

3. 好 下截断 >main

4. 好 不能转换

5. 好 不能访问点

6. 好 通讯失败

.QualityLimit

当 I/O 连接有效时,用来显示 I/O 服务器提供的一个 I/O 值质量限的整数。

用法 Tagname.QualityLimit

参数 描述

第页 112 共162

Tagname 任何离散,整型,实型,间接模拟,或消息标记名类型。

数据类型 整型(只读)

有效值 (LLL)

0 没有

.QualityLimitString 当 I/O 连接有效时,用来显示 I/O 服务器提供的 I/O 值质量限的字符串。

用法 Tagname.QualityLimitString

参数 描述

Tagname 任何离散,整型,实型,间接模拟,或消息标记名类型。

数据类型 消息(只读)

.QualityStatus 当 I/O 连接有效时,用来显示 I/O 服务器提供的 I/O 值质量状态的整数。

用法 Tagname.QualityStatus

参数 描述

第页 113 共162

Tagname 任何离散,整型,实型,间接模拟,或消息标记名类型。

说明 次状态位-域(SSSS)取决于质量域(QQSSSSLL)的值。

数据类型 整型(只读)

有效值 (SSSS)

0 坏

1 不决定

3 好

.QueryState 代表当前报警状态查询过滤器。

用法 [ErrorNumber=]GetPropertyI(“ObjectName.QueryState”,Tagname);

参数 描述

ObjectName 报警对象的名称,如, AlmObj_1。

Tagname 一个当函数运行时保留属性值的整型标记名。

说明 此只读点域包含指定分布式报警显示所用的当前查询过滤器。

第页 114 共162

数据类型 整型(只读)

有效值 0 = 全部

1 = 未确认

2 = 确认

实例

下面语句返回显示对象“AlmObj_1”的当前查询过滤器到整型标记名“AlmQueryState”:

GetPropertyI(\"AlmObj_1.QueryState\

.RawValue WindowViewer 作为客户从 I/O 服务器获得的实际值。原始值域允许用户在 InTouch 应用缩放前访问某一 I/O 标记名值。

用法 Tagname.RawValue

参数 描述

Tagname 任何 I/O 离散,间接离散,I/O 整型,内存实型,间接模拟,I/O 消息

和间接消息标记名类型。

说明 该只读点域被用来显示 InTouch 应用缩放前的实际离散或模拟 I/O 值。

第页 115 共162

数据类型 整型(只读)

有效值 任何离散,实型,间接,模拟,或整型标记类型。

实例 以下可用来判别标记名是否超出正常操作范围。

IF ((IOtag.RawValue > IOtag.MaxRaw) OR (IOTag.RawValue <

IOTag.MinRaw))THEN

AlarmMessage = \"Sensor is out of calibration or requires replacement.\";

ENDIF;

.ReadOnly 决定文本框内容是只读或只写。

用法 [ErrorNumber=]GetPropertyD(\"ControlName.ReadOnly\

参数 描述

ControlName 窗口控制的名称,如,Textbox_1。

Tagname 一个当函数运行时保留属性值的离散标记名。

说明 该属性在开发时和运行时都可用。

数据类型 离散(只读)

第页 116 共162

有效值 0 = 文本框的内容是读/写

1 = 文本框内容为只读

应用于 文本框。

实例

以下语句检索名为“TextBox_1”的文本框的只读状态:

GetPropertyD( \"TextBox_1.ReadOnly\

.Reference 允许操作员在运行中动态改变访问名和/或项名。

用法 Tagname.Reference

参数 描述

Tagname 任何 I/O 离散,间接离散,I/O 整型,I/O 实型,间接模拟,I/O 消息

和间接消息标记名类型。

说明 该点域提供动态改变访问名和/或某一标记名的项目的简便方法。

数据类型 消息(读/写)

有效值 任何包括访问名和/或项目的字符串。

第页 117 共162

实例

下面语句将一个 I/O 整型项目域设置为一个文本函数生成的项目名称,并且由内存整型值来决定。这将用在条件脚本中,根据 .ReferenceComplete 在标记序列循环:

MyTag.Reference=\"R\" + Text( MyIndex, “#” );

{ If MyIndex=40001,ITEM 将为: R40001}

.ReferenceComplete 当 .Reference 项目标记名改变时返回一个确认,接受项目请求,并且更新反映在该标记名的 .Value 域中。

用法 Tagname.ReferenceComplete;

参数 描述

Tagname 任何 I/O 离散,间接离散,I/O 整型,I/O 实型,间接模拟,I/O 消息

和间接消息标记名类型。

说明 当使用 .Reference 域时,此点域非常有用。.ReferenceComplete 表示项和/或访问名已经被改变,更重要的是,一个新值已经从新数据源中接收到。即使新数据源的值与前一数据源相同,当在新数据源中发生第一次更新时,此点域设为 1。

在实际更新过程中,从 .Reference 被修改到新数据源中的第一次更新到达前,这个点域的值将被系统设置为 1。

第页 118 共162

数据类型 I/O 离散(只读)

.ROCPct 监视和/或控制报警检查的变化率。

用法 Tagname.ROCPct

参数 描述

Tagname 任何整型,实型和间接模拟标记名类型。

说明 此点域以百分数表示。点域直接对应于标记名称典的报警部分内配置的同一域。用户可以显示该点域或将它用于某一脚本。另外,该值可在运行时改变来适应所监视过程的改变。

数据类型 整型(读/写)

有效值 0 到 100%

实例

下面的语句设置名为“MyTag”的标记的变化率百分比属性为 25%:

MyTag.ROCPct=25;

.ROCStatus 决定指定标记名是否存在一个变化绿报警。

第页 119 共162

用法 Tagname.ROCStatus

参数 描述

Tagname 任何整型,实型和间接模拟标记名类型。

说明 此只读点域通常等于 0,当对于指定标记名存在变化率报警条件时,此点域被系统设为 1。此点域将保持为 1,直到报警条件不再存在。

数据类型 离散(只读)

有效值 0 = 指定的报警状态不存在

1 = 指定报警条件存在

实例

只有当名为“MyTag”的标记的 .ROCStatus (“变化率报警”)等于 1 时,下面的 IF-THEN 语句主体才被执行。换言之,当 MyTag 进入变化率报警时,IF-THEN 主体将执行。

IF (MyTag.ROCStatus == 1) THEN

OperatorMessage=\"MyTag has gone into a Rate-Of-Change-Alarm\";

ENDIF;

第页 120 共162

说明 此点域常与 .Alarm 和 .Ack 的结合使用以决定系统内特定标记报警状态的确切性质。

.ScooterLockLeft 设置此点域值为1(真)将不允许右指示器移到左指示器的位置左边(占有)。

用法 Tagname.ScooterLockLeft

参数 描述

Tagname 任何历史趋势标记名类型。

说明 一般说来,禁止用户移动右指示器到左指示器当前位置左边是有好处的。当左指示器不锁定时,在右指示器在左指示器左边时,右指示器将迫使左指示器位置等于右指示器位置。

数据类型 离散(读/写)

有效值 0 = 假 = 右指示器可占有左指示器左边的位置

1 = 真 = 右指示器不能占有左指示器左边的位置

实例

此语句一旦执行,将设置与名为“MyHistTrendTag”的历史趋势标记关联的右指示器,使它将不能移到左指示器当前位置的左边。

第页 121 共162

MyHistTrendTag.ScooterLockLeft=1;

.ScooterLockRight 设置此点域值为1(真)将不允许左指示器移到右指示器的位置右边(占有)。

用法 标记名。ScooterLockRight

参数 描述

Tagname 任何历史趋势标记名类型。

说明 一般说来,禁止用户移动左指示器到右指示器当前位置右边是有好处的。当右指示器未锁定时,在左指示器在右指示器右边时,左指示器将迫使右指示器位置等于左指示器位置。

数据类型 离散(读/写)

有效值 0 = 假 = 左指示器可占有右指示器右边的位置

1 = 真 = 左指示器不能占有右指示器右边的位置

实例

此语句一旦执行,将设置与名为“MyHistTrendTag”的历史趋势标记关联的左指示器,使它将不能移到右指示器当前位置的右边。

第页 122 共162

MyHistTrendTag.ScooterLockRight=1;

.ScooterPosLeft 监视和/或控制左指示器的位置。

用法 Tagname.ScooterPosLeft

参数 描述

Tagname 任何历史趋势标记名类型。

说明 此读/写点域动态控制左指示器的位置。用户可在脚本函数中用这个域检索左指示器的当前位置,或者用户可能赋予一个值到该域来调整左指示器位置到趋势上另一位置。

该域常与 HTGetValue() 函数集合一起使用。必须告诉这些函数所查询的历史趋势,以及趋势指示器的当前位置。参见以下例子。

数据类型 实型(读/写)

有效值 0.0 到 1.0,其中 0 是历史趋势图表的最左边,1.0 是历史趋势图表最右边。

实例

以下语句赋予左指示器一个新位置。左指示器将被移到历史趋势图表的距其最左边为图表全长 34% 的位置,该图表当前与名为“MyHistTrendTag”历史趋势标记相关联。

MyHistTrendTag.ScooterPosLeft=.34;

第页 123 共162

在下面语句中,脚本函数 HTGetValueAtScooter() 被用来检索在左指示器当前位置的 Pen1 的值。由于函数的参数列表中任何变量改变都会造成函数被重新计算,每次左指示器的位置改变时,此语句将被重新计算。

MyRealTag=HTGetValueAtScooter( MyHistTrendTag,

MyHistTrendTag.UpdateCount,1,

MyHistTrendTag.ScooterPosLeft,1,\"PenValue\");

.ScooterPosRight 监视和/或控制右指示器的位置。

用法 Tagname.ScooterPosRight

参数 描述

Tagname 任何历史趋势标记名类型。

说明 此读/写点域动态控制右指示器的位置。用户可在脚本函数中用这个域获得右指示器的当前位置,或者用户可能赋予一个值到该域来调整右指示器位置到趋势上另一位置。

该域常与 HTGetValue() 函数集合一起使用。必须告诉这些函数所查询的历史趋势,以及趋势指示器的当前位置。参见以下例子。

数据类型 实型(读/写)

第页 124 共162

有效值 0.0 到 1.0,其中 0 是历史趋势图表的最右边,1.0 是历史趋势图表最左边。

实例

以下语句赋予右指示器一个新位置。右指示器将被移到历史趋势图表的距其最右边为图表全长 34% 的位置,该图表当前与名为“MyHistTrendTag”历史趋势标记相关联。

MyHistTrendTag.ScooterPosRight=.34;

在下面语句中,脚本函数 HTGetValueAtScooter() 被用来获得在右指示器当前位置的 Pen1 的值。由于函数的参数列表中任何变量的变化都会造成函数被重新计算,每次左指示器的位置改变时,此语句将被重新计算。

MyRealTag=HTGetValueAtScooter( MyHistTrendTag,

MyHistTrendTag.UpdateCount,2,

MyHistTrendTag.ScooterPosRight,1,\"PenValue\");

.SPCStatus 决定指定的标记名是否存在一个 SPC 报警。

注意

此点域只有当 SPC 程序安装后才能使用。

用法 Tagname.SPCStatus

第页 125 共162

参数 描述

Tagname 任何整型,实型和间接模拟标记名类型。

数据类型 离散(只读)

有效值 0 = SPC 报警条件不存在

1 = SPC 报警条件存在

说明 此只读点域通常等于 0。当对指定标记存在一个 SPC 报警条件时,此点域被系统设为 1,此点域将保持为 1,直到报警条件不再存在。

实例

下面的 IF-THEN 语句主体只有当名为\"MyTag\"的标记的 .SPCStatus(“统计过程控制报警”)等于 1 时才被处理,换言之,当 MyTag 进入 SPC 报警时,IF-THEN 主体将执行。

IF (MyTag.SPCStatus == 1) THEN

OperatorMessage=\"MyTag has gone into an SPC-Alarm\";

ENDIF;

.Successful 代表当前查询是否成功。

第页 126 共162

用法 [ErrorNumber=]GetPropertyD(“ObjectName.Successful”,Tagname);

参数 描述

ObjectName 报警对象的名称,如, AlmObj_1。

Tagname 一个当函数运行时保留属性值的离散标记名。

说明 此只读点域包含指定分布式报警显示所用的最后查询的状态。

数据类型 离散(只读)

有效值 0 = 查询出错

1 = 查询成功

实例

下面语句返回显示对象“AlmObj_1”的最后查询的状态到离散标记名“AlmFlag”:

GetPropertyD(\"AlmObj_1.Successful\

.TagID 与历史趋势 .Pen1-.Pen2 TagID标记名一起使用,来监视和/或控制被一支笔所趋势的标记名。

用法 Tagname.TagID

第页 127 共162

参数 描述

Tagname 任何离散,整型,实型,间接离散和间接模拟标记名类型。

说明 .TagID 提供标记名句柄并主要用于指定标记到一个历史趋势笔的上下文中。

数据类型 TagID(只读)

实例

MyHistTrendTag.Pen6=SomeAnalogTag.TagID;

.TimeDate 整型“Tagname.field”用来显示当 I/O 连接有效时,自 I/O 服务器提供 I/O 值开始的全部日期数。

用法 Tagname.TimeDate

参数 描述

Tagname 任何离散,整型,实型,间接模拟和消息标记名类型。

数据类型 整型(只读)

.TimeDateString 字符串用来显示与 WIN.INI 文件所设格式表示的日期。

用法 Tagname.TimeDateString

第页 128 共162

参数 描述

Tagname 任何离散,整型,实型,间接模拟和消息标记名类型。

数据类型 消息(只读)

.TimeDateTime 实型“Tagname.field”被用于显示当 I/O 连接有效时,从 I/O 服务器提供 I/O 值开始所经过的部分日期。

用法 Tagname.TimeDateTime

参数 描述

Tagname 任何离散,整型,实型,间接模拟和消息标记名类型。

数据类型 消息(只读)

.TimeDay 整型“Tagname.field”被用于显示当 I/O 连接有效时,I/O 服务器提供 I/O 值的那一天。

用法 Tagname.TimeDay

参数 描述

Tagname 任何离散,整型,实型,间接模拟和消息标记名类型。

第页 129 共162

数据类型 整型(只读)

有效值 值可以是 1 - 31。

.TimeHour 整型“Tagname.field”将用于显示当 I/O 连接有效时,I/O 服务器提供 I/O 值的该天内的小时。

用法 Tagname.TimeHour

参数 描述

Tagname 任何离散,整型,实型,间接模拟和消息标记名类型。

数据类型 整型(只读)

有效值 值可以是 0 - 23。

.TimeMinute 整型“Tagname.field”用来显示当 I/O 连接有效时,I/O 服务器提供 I/O 值的分钟。

用法 Tagname.TimeMinute

参数 描述

Tagname 任何离散,整型,实型,间接模拟和消息标记名类型。

第页 130 共162

数据类型 整型(只读)

有效值 值可以是 0 - 59。

.TimeMonth 整型“Tagname.field”被用于显示当 I/O 连接有效时,I/O 服务器提供 I/O 值的月份。

用法 Tagname.TimeMonth

参数 描述

Tagname 任何离散,整型,实型,间接模拟和消息标记名类型。

数据类型 整型(只读)

有效值 值可以是 1 - 12。

.TimeMsec 整型“Tagname.field”被用来显示当 I/O 连接有效时,I/O 服务器提供 I/O 值的毫秒时间。

用法 Tagname.TimeMsec

参数 描述

Tagname 任何离散,整型,实型,间接模拟和消息标记名类型。

第页 131 共162

数据类型 整型(只读)

有效值 值可以是 0 - 999。

.TimeSecond 整型“Tagname.field”被用来显示当 I/O 连接有效时,I/O 服务器提供 I/O 值的以秒表示的时间。

用法 Tagname.TimeSecond

参数 描述

Tagname 任何离散,整型,实型,间接模拟和消息标记名类型。

数据类型 整型(只读)

有效值 值可以是 0 - 59。

.TimeTime 整型“Tagname.field”用来显示当 I/O 连接有效时,I/O 服务器提供 I/O 值的毫秒时间(从午夜起)。

用法 Tagname.TimeTime

参数 描述

Tagname 任何离散,整型,实型,间接模拟和消息标记名类型。

第页 132 共162

数据类型 整型(只读)

有效值 值可以是 0 - 86399999。

.TimeTimeString 消息“Tagname.field”用来显示当 I/O 连接有效时,I/O 服务器提供 I/O 值的时间和日期。

用法 Tagname.TimeTimeString

参数 描述

Tagname 任何离散,整型,实型,间接模拟和消息标记名类型。

数据类型 消息(只读)

.TimeYear 实型“Tagname.field”用来显示当 I/O 连接有效时,I/O 服务器提供 I/O 值的以四位数表示的年份。

用法 Tagname.TimeYear

参数 描述

Tagname 任何离散,整型,实型,间接模拟和消息标记名类型。

数据类型 整型(只读)

第页 133 共162

有效值 任何以 #### 格式表示的年份。例如 1998。

.TopIndex 决定列表框中最顶端项目的相应整型索引。

用法 [ErrorNumber=]GetPropertyI(“ControlName.TopIndex”,Tagname);

[ErrorNumber=]SetPropertyI(“ControlName.TopIndex”,Number);

参数 描述

ControlName 窗口控制的名称,如,Listbox_1。

Tagname 一个当函数运行时保留属性值的整型标记名。

Number 定义列表框中最顶端项的索引号。

说明 该属性只在运行时可用。

数据类型 整型(读/写)

应用于 列表框。

实例

下面语句设置列表框对象“Listbox_1”的 TopIndex 为 14:

第页 134 共162

SetPropertyI( \"ListBox_1.TopIndex\

.TotalPages 包含报警对象中总页数(一整屏报警)。

用法 [ErrorNumber=]GetPropertyI(“ObjectName.TotalPages”,Tagname);

参数 描述

ObjectName 报警对象的名称,如, AlmObj_1。

Tagname 一个当函数运行时保留属性值的整型标记名。

说明 此只读点域包含指定分布式报警显示中报警总页数。

数据类型 整型(只读)

实例

下面语句返回显示对象“AlmObj_1”中的报警总页数到整型标记名“AlmTotalPage”:

GetPropertyI(\"AlmObj_1.TotalPages\

.Unack 控制本地报警的报警未确认状态。

用法 Tagname.Unack=1

第页 135 共162

参数 描述

Tagname 任何离散,整型,实型间接和组变量的标记名类型。

说明 设置这个点域为值 1 来取消确认可能与指定标记名/组相关联的任何报警。当指定标记名是“组变量”类型或是一个报警组,所有与指定组内标记相关联的未确认报警被确认。当指定标记名是任何除组变量以外的类型,只有与此标记名相关联的未确认报警被确认。设置此点域为 1 以外的值将无意义,结果没有定义。

数据类型 离散(读/写)

有效值 1

实例

以下语句取消确认与标记名“Tag1”有关的报警。

Tag1.Unack=1;

此语句用来确认名为“PumpStation”的报警组中所有未被确认的报警。

PumpStation.Unack = 1;

此语句类似于上面语句,除了它是用来取消确认与名为“StationAlarms”的组变量标记相关联的报警组中的任何已确认的报警。

第页 136 共162

注意

.Ack 有一个相反的域为 .Unack。当发生一个已确认的报警,.Ack 将被置为 1。

.UpdateCount 每次关联趋势出现更新时被递增。

用法 Tagname.UpdateCount

参数 描述

Tagname 任何历史趋势标记名类型。

说明 此点域直接链接到历史检索子系统。请求与指定历史趋势标记相关联的历史趋势新数据时,历史检索子系统必须去磁盘检索指定数据。一旦完成检索过程,此点域值增加 1。.UpdateCount

用在许多与历史数据趋势有关的函数调用中作为一种触发函数再计算的方式。

数据类型 整型(只读)

有效值 任何正整型

实例

在下面语句中,脚本函数 HTGetValueAtScooter() 被用来检索在右指示器当前位置的 Pen1 的值。由于函数参数列表内任何变量的改变都会使该函数被再评估,每完成一次

第页 137 共162

检索(更新),并且 .UpdateCount 的值被递增,该语句将被重估。

MyRealTag=HTGetValueAtScooter( MyHistTrendTag,

MyHistTrendTag.UpdateCount,2,

MyHistTrendTag.ScooterPosRight,1,\"PenValue\");

.UpdateInProgress 如果历史检索正在运行中,则等于 1,否则等于 0。

用法 Tagname.UpdateInProgress

参数 描述

Tagname 任何历史趋势标记名类型。

说明 此点域直接链接到历史检索子系统。请求与指定历史趋势标记相关联的历史趋势新数据时,历史检索子系统必须去磁盘检索指定数据。在检索过程中此点域设为 1,一旦此过程被完成,

.UpdateInProgress 复位为 0,.UpdateInProgress 用在许多与历史数据趋势有关的函数调用中。

大多数历史趋势屏幕有一种机制,通过它操作员能在趋势上“滚动”数据。当操作员操纵屏幕控制时,历史子系统必须确认屏幕上的数据是当前的。如果操作员将趋势滚动至当前没有显示或存储于内存的时间段,子系统将去磁盘检索所需数据。由于该过程需要一

第页 138 共162

些时间,该系统给历史趋势屏幕设计者提供了一个来使操作员意识到所需数据当前正在被请求的方法。没有这种反馈,操作员可能没意识到系统正在执行请求的任务。

数据类型 离散(只读)

数值值 0 = 没有更新在进行中

1 = 更新在进行中

实例

下面语句一般用做历史趋势“滚动”按钮上或其附近的文本对象上的“可见性”链接表达式。当历史子系统正在检索请求数据,此表达式值为 1,否则如果趋势已更新,表达式值为 0。

MyHistTrendTag.UpdateInProgress

.UpdateTrend 导致一个历史趋势图表用所有当前值来更新。

用法 Tagname.UpdateTrend

参数 描述

Tagname 任何历史趋势标记名类型。

说明 历史趋势不自动更新其自身。必须对图表起始或图表长度作改变才会使图表更新

第页 139 共162

和显示指定标记名的当前值。在动作按钮脚本中使用此点域将允许操作员在运行时任何必要的时候更新图表。

如果其它有关历史趋势的点域要改变,它还能被用在一个脚本内。这将确保最新的显示出现在历史趋势图上。

设置此点域为 1 以外的值将无意义,结果没有定义。

数据类型 离散(只写)

有效值 1

实例

以下语句引起与历史趋势标记“MyHistTrendTag”有关的历史趋势以所有参数的当前值来更新。

MyHistTrendTag.UpdateTrend=1;

.Visible 决定窗口控制在窗口中是否可见

用法 [ErrorNumber=]GetPropertyD(“ControlName.Visible”, Tagname);

[ErrorNumber=]SetPropertyD(“ControlName.Visible”,Number);

参数 描述

第页 140 共162

ControlName 窗口控制的名称,如,Listbox_1。

Tagname 一个在函数运行时将保留属性值的(将返回同样类型的)标记名。

Number 一个离散值。或为当函数执行时存放被写入值的离散 InTouch 标记名。

说明 该属性在开发时和运行时都是读/写。

数据类型 离散(读/写)

有效值 0 = 控制不可见

1 = 控制可见

应用于 文本框,列表框,组合框,复选框和单选按钮。

实例

下面语句创建一个名为“TextBox_1”的不可见文本框:

SetPropertyD( \"TextBox_1.Visible\

$

$AccessLevel 定义当前登录用户的访问级别。

第页 141 共162

用法 $AccessLevel

说明 这是一种只读标记。其值决定于分配给 InTouch 中当前已登录用户的轮廓的访问级别。该轮廓可通过选择 WindowViewer 的“配置用户”菜单来访问。

对 WindowViewer 来说,$AccessLevel 的实际数值没有任何意义。任何所需的“安全”必须由你,设计者来创建。通过使用 $AccessLevel,系统内的许多工作可设置成安全允许状态。

数据类型 整型(只读)

有效值 0 到 9999

实例

以下语句用于创建一个对象的可见性链接,可见性基于登录用户的访问级别:

$AccessLevel >= 2000;

借助基于 $AccessLevel 的表达式,对象可有一个“使无效”链接。

$AccessLevel < 5411;

IF $AccessLevel <=500 THEN

show“Access Denied”;{弹出窗口拒绝访问}

第页 142 共162

ELSE

show“Access Granted”;{弹出窗口接受访问}

ENDIF;

$AlarmLogging 在运行时重新初始化报警记录和打印。该标记等同于 WindowViewer“特殊”菜单上的“重新启动报警日志”命令。

用法 $AlarmLogging = 1;

说明 在运行时设置此值为 1,以重新初始化报警记录和打印。

注意

$AlarmLogging 不能被用于关闭报警记录或打印。它应严格应用于 WindowViewer“特殊”菜单中的“重新启动报警日志”。如果你显示 $AlarmLogging 的值,即使记录正在发生,它也将总显示 0 (关闭)。设置 $AlarmLogging 不等于 1 的值是无意义的,其结果未定义。

数据类型 离散(只写)

有效值 1

实例 该语句与选择 WindowViewer“特殊”菜单中的“重新开始报警日志”执行同样的动作。

第页 143 共162

$AlarmLogging = 1;

$AlarmPrinterError 报警打印机错。

用法 $AlarmPrinterError

说明 如报警打印机有打印错误,则包含值 1。

数据类型 离散(只读)

有效值 0 = 报警打印机无错误

1 = 报警打印机有错误

实例

本语句如用作模拟显示链接中的表达式,在报警打印机有错误时将显示 1;否则,它将显示 0。

$AlarmPrinterError

IF $AlarmPrinterError == 1 THEN

DisplayMessageTag = \"Error on alarm printer\";

ELSE

第页 144 共162

DisplayMessageTag = \"No error on alarm printer\";

ENDIF;

$AlarmPrinterNoPaper 报警打印机缺纸。

用法 $AlarmPrinterNoPaper

说明 如报警打印机缺纸,则包含值 1。

数据类型 离散(只读)

有效值 0 = 报警打印机有纸

1 = 报警打印机缺纸

实例

本语句如用作模拟显示链接中的表达式,在报警打印机缺纸时将显示 1;否则,它将显示 0。

$AlarmPrinterNoPaper

用于一个为真时动作脚本:

条件:

第页 145 共162

$AlarmPrinterOffline == 1

脚本:

show“window”;

playsound(\"c:\\winnt\\system32\\alarm.wav\

$AlarmPrinterOffline 报警打印机脱机。

用法 $AlarmPrinterOffline

说明 如报警打印机脱机,则包含值 1。

数据类型 离散(只读)

有效值 0 = 报警打印机联机

1 = 报警打印机脱机

实例

本语句如用作模拟显示链接中的表达式,在报警打印机脱机时将显示 1;否则,它将显示 0。

$AlarmPrinterOffline

第页 146 共162

IF $AlarmPrinterOffline == 1 THEN

Call PLCHorn( ); {一个在工厂车间打开听觉报警的快速函数}

ENDIF;

$AlarmPrinterOverflow 报警打印机缓冲区溢出:$AlarmPrinterOverflow

用法 $AlarmPrinterOverflow

说明 如报警打印机缓冲区溢出,则包含值 1(过多字符送到打印机)。

数据类型 离散(只读)

有效值 0 = 报警打印机缓冲区未满

1 = 报警打印机缓冲区已满并溢出

实例

本语句如用作模拟显示链接中的表达式,在报警打印机缓冲区溢出时将显示 1;否则,它将显示 0。

$AlarmPrinterOverflow 报警打印机缓冲区溢出:$AlarmPrinterOverflow

用法 $AlarmPrinterOverflow

第页 147 共162

说明 如报警打印机缓冲区溢出,则包含值 1(过多字符送到打印机)。

数据类型 离散(只读)

有效值 0 = 报警打印机缓冲区未满

1 = 报警打印机缓冲区已满并溢出

实例

本语句如用作模拟显示链接中的表达式,在报警打印机缓冲区溢出时将显示 1;否则,它将显示 0。

$AlarmPrinterOverflow

$ApplicationChanged 表示在网络应用程序开发(NAD)结构中,主应用程序已改变。

用法 $ApplicationChanged

说明 每当通过选择 WindowViewer“特殊”菜单中的“通知客户”而生成一个更新信号时,此标记会递增。当应用程序被更新时,它被复位为 0。它用于分布式应用程序维护。

数据类型 实型(只读)

第页 148 共162

实例

以下语句,如果用于数据更改脚本标记名域,会使该脚本执行。这个脚本将显示一个窗口来通知用户重新启动WindowViewer,以使改变生效。

$ConfigureUsers 显示通用“配置用户”对话框。等于选择“安全”,然后在 WindowViewer“特殊”菜单上的“改变口令”。

用法 $ConfigureUsers

说明 设置值为 1 来显示“配置用户“对话框。一旦此对话框被关闭,InTouch 自动地复位此值为 0。 用户必须有一个 > 9000 的 $AccessLevel 来显示这个对话框。设置该系统标记为不等于 1 的值是无意义的,其结果没有定义。

数据类型 离散(只写)

有效值 1

实例

创建一个离散按钮,可允许用户显示“配置用户”对话框。这按钮应该附着有一个离散按钮链接,所期望的动作是“设置”。按下时,按钮将设置系统标记 $ConfigureUsers(使等于 1),导致对话框出现。

$Date 包含从1970年1月1日起的整型天数。

第页 149 共162

用法 $Date

说明 无

数据类型 整型(只读)

实例

StringFromTime(($Date*800)+($Time/1000),3); {返回当前时间}

$DateString 包含以文件 WIN.INI 中设置的格式表示的日期。

用法 $DateString

说明 日期格式通过Windows 控制面板或双击任务栏右边的系统槽内的时钟来设置。

数据类型 内存消息型(只读)

实例

If StringRight($DateString,2)== \"00\" THEN

LogMessage(\"The Year 2000!\");

ENDIF;

第页 150 共162

$DateTime 包含从1970年1月1日起的部分天数。

用法 $DateTime

说明 无

数据类型 实型(只读)

实例

If StringFromTime($DateTime,4)== \"Fri\" THEN

DisplayMessageTag = \"It’s Friday!\";

ENDIF;

$Day 包含本月的当天日期。

用法 $Day

说明 包含一个 1 到 31 之间的值。

数据类型 整型(只读)

实例

第页 151 共162

If $Day == 15 THEN

Show“Mid-Month Washdown Window”;

ENDIF;

$HistoricalLogging 监视和/或控制历史记录的启动和停止。与选择 WindowViewer 的“特殊”菜单中的“重新启动历史记录”,或“停止历史记录相同”。

用法 $HistoricalLogging

说明 设置此系统标记为 0 以停止历史记录。设置此值为 1 以重新启动历史记录。你不能通过 $HistoricalLogging 来“启动”历史记录,除非记录以前已通过选择 WindowViewer“特殊”菜单中的“

配置”,然后“历史记录”被激活并已停止。

数据类型 离散(读/写)

实例

IF (InfoDisk(\"C\如果自由空间少于 50 MB,则关闭历史记录}

$HistoricalLogging = 0;

第页 152 共162

ENDIF;

$Hour 包含当天中的当前小时。

用法 $Hour

说明 包含一个 0 到 23 之间的值。

数据类型 整型(只读)

实例

为真时条件动作脚本:

$Hour == 20 AND $Second == 30

PrintWindow(\"Day Batch Summary\

$InactivityTimeout 表示配置的用户自动注销的超时已过。

用法 $InactivityTimeout

说明 当自动注销超时已过时包含值 1。要配置标记名时间,在“特殊”菜单,指向“配置”然后,单击“WindowViewer”或,在应用程序浏览器的“配置”,双击“WindowViewer”。“WindowViewer 属性”对话框出现并激活“通用”属性页。在“无操作”组输入以秒为单位的时间值

第页 153 共162

数据类型 离散(只读)

实例

为真时条件动作脚本:

>$InactivityTimeout == 1

脚本:

Show“You have been logged off window”;

$InactivityWarning 表示配置的用户注销警告的时间已过。

用法 $InactivityWarning

说明 当将要注销时包含值 1。无操作计时器仅可通过单击鼠标或键盘操作复位。要配置标记名时间,在“特殊”菜单,指向“配置”,然后单击“WindowViewer”,或在应用程序浏览器的“配置”中,双击“WindowViewer”。“WindowViewer 属性”对话框出现并激活“通用”属性页。在“无操作”组输入以秒为单位的时间。

数据类型 离散(只读)

实例

If $InactivityWarning == 1 THEN

第页 154 共162

Show“You are about to be logged off-window”;

ENDIF;

$LogicRunning 监视和/或控制脚本的运行。与选择 WindowViewer 的“逻辑”菜单中的“启动逻辑”,或“中止逻辑”相同。

注意

正在执行的用户定义的异步函数脚本不能被停止。但是,你可以阻止执行新脚本。

用法 $LogicRunning

说明 设置值为 1来启动脚本逻辑。设置值为 0来停止脚本逻辑。

数据类型 离散(读/写)

$Minute 包含当前小时的当前分钟。

用法 $Minute

说明 包含一个 0 到 59 之间的值。

数据类型 整型(只读)

实例

第页 155 共162

在一个动画链接值输出字符串表达式域类型中:

IF InfoFile(\"C:\\InTouch.32\\WIZ.INI\

LogMessage(\"The File Exists!\");

ENDIF;

$Month 包含本年的当前月份。

用法 $Month

说明 包含一个 1 到 12 之间的值。

数据类型 整型(只读)

实例

IF $Month==10 THEN

CurrentMonthName = \"October\";

ENDIF;

$Msec 包含当前毫秒值。该系统标记的更新速率通过改变刻度间隔和更新时间变量设置来递增。在“特殊”菜单,指向“配置”,然后,单击“WindowViewer”或,在应

第页 156 共162

用程序浏览器上的“配置”下,双击“

WindowViewer”。“WindowViewer 属性”对话框出现并激活“通用”属性页。

用法 $Msec

说明 包含一个 0 到 999 之间的值。

数据类型 整型(只读)

$NewAlarm 表示一个新的报警已发生。

用法 $NewAlarm

说明 当一个新报警发生时包含值 1。此值仅在一个新的本地报警发生时被设置。它不能为远程报警设置。

数据类型 离散(读/写)

实例

这个标记名可连接到 PlaySound 逻辑函数产生一个有声报警。可创建一个确认按钮以复位此值为0并确认这个报警。

$Operator 控制用户执行指定功能的能力。

第页 157 共162

用法 $Operator

说明 包含当前登录的用户名。

数据类型 消息(只读)

实例

访问一个指定窗口可通过输入下述脚本来控制:

IF $Operator == \"DayShift\" THEN

Show\"Control Panel Window\";

ELSE Show \"Wrong Operator\";

ENDIF;

$OperatorEntered 用于输入一个有效的用户名。

用法 $OperatorEntered

说明 创建一个自定义的登录窗口。可将触敏输入对象和/或脚本链接到这个标记名,来为用户设置“用户名”。

注意

第页 158 共162

当 $OperatorEntered 有效时,$AccessLevel 和 $Operator 将被设置成其预定义值。

数据类型 消息(读/写)

$PasswordEntered 用于输入一个有效的口令。

用法 $PasswordEntered

说明 这个标记总是作为一个空字符串读回。与 $PasswordEntered 的显示链接将总为空。因为这个标记总是返回空字符串,数据更改脚本将永不触发 $PasswordEntered。可用于创建一个自定义的登录窗口。触敏输入对象和/或脚本可以被链接到这个标记名,来为用户设置“口令”。

注意

若 $PasswordEntered 有效,$AccessLevel 和 $Operator 将被设置为其预定义值。

数据类型 消息(只写)

$Second 包含当前时间秒值。

用法 $Second

说明 包含一个 0 到 59 之间的值。

第页 159 共162

数据类型 整型(只读)

实例

Wave=100*Sin(6*$Second);

$StartDdeConversations 在运行期间,当“特殊”菜单无效时,用于启动未初始化的对话。与选择 WindowViewer 的“特殊”菜单中的“启动未初始化对话”相同。

用法 $StartDdeConversations

说明 设置值 1 来开始未初始化的 DDE 对话

数据类型 离散(读/写)

$System 缺省报警组。

用法 $System

说明 如果一个标记名未被分配到一个指定的报警组名,缺省时,它被自动分配至这个根组。所有定义的报警组都是 $System 的子组。

数据类型 系统报警组(只读)

实例

第页 160 共162

$System.Ack = 1;{确认所有报警}

$Time 包含从午夜起以毫秒为单位的时间。

用法 $Time

说明 无

数据类型 整型(只读)

实例

Sec_Midnight = $Time/1000;{自午夜以来的秒数}

$TimeString 包含以与 WIN.INI 文件中所设置的格式表示的时间。

用法 $TimeString

说明 该时间格式通过 Windows 控制面板来设置或通过双击在任务栏右下角的系统槽中的时钟来设置。

数据类型 字符串(只读)

实例 BatchStartString = $TimeString;

$Year 包含四位数的当前年份。

第页 161 共162

用法 $Year

说明 包含以下格式的年份:

1990

数据类型 整型(只读)

实例

CurrentYear = $Year;

NoYrsTill2000 = 2000 - CurrentYear;

第页 162 共162

因篇幅问题不能全部显示,请点此查看更多更全内容