Please ensure Javascript is enabled for purposes of website accessibility
Powered by Zoomin Software. For more details please contactZoomin

AVEVA™ InTouch HMI

添加 UDT 脚本

  • Last UpdatedJun 29, 2026
  • 3 minute read
  1. 用户定义类型窗格中,右键单击数据类型,从上下文菜单中选择新建,然后选择脚本

    Create Script Option

    或者

    在工具栏中选择新建成员 Script Icon

    或者

    使用快捷键 Ctrl+Shift+R

    新脚本 Script001 将在脚本编辑器中创建并打开。要重命名脚本,右键单击脚本,然后选择重命名。在下面的示例中,脚本被重命名为 UpdateSetpoint。

    Add scrip

    该脚本方法的默认签名已创建。下图展示了 C# 脚本的默认签名。

    NewScript

    下图展示了 Python 脚本的默认签名。

    Python Default

    方法名称必须与脚本名称一致。如果不匹配,将显示错误消息。例如,如果名为“UpdateSetpoint”的脚本中不包含名为“UpdateSetpoint”的公共方法,则会显示以下消息。

  2. 属性网格上,可以查看所选脚本的属性。它包括:

    • 名称:脚本的名称。

    • 注释:任何注释(如果要输入)。

    • 语言:选择要编写脚本的语言。首次创建脚本时,默认选择 C#。如果您想使用 Python 脚本,则应手动将其更改为 Python。在创建新脚本时,系统将保留之前选定的脚本语言。例如,如果您创建并保存了一个 Python 脚本,任何新脚本都将默认使用 Python。若要使用 C#,必须手动更改脚本语言。

      注意:开始编写脚本后,无法更改脚本语言。要选择其他语言,请删除现有脚本内容或创建新脚本。

      示例:

      Properties Example

      注意:如果您的计算机上未安装 32 位 Python,但您将其选为语言,系统将显示一条错误消息,提示您安装 Python 以启用该功能。如需 Python 安装步骤,请参阅安装 Python

  3. 以您在属性网格中选择的语言输入脚本。使用工具栏选项执行不同的编辑操作。您还可以在 UDT 脚本中使用本机 InTouch 标记。 使用以下语法:

    • 对于独立 InTouch 应用程序:

      <udtinstanceName>.<udtmembers>\ me.<udtmembers>\ <InTouch Tags>;

      或者

      InTouch.<udtinstanceName>.<udtmembers> \ InTouch.me.<udtmembers>\ <InTouch Tags>;

      示例:

      • Furnace_1.TemperatureSetPoint = Furnace_1.TemperatureSetPoint + 5;

      • me.TemperatureSetPoint = me.TemperatureSetPoint + 5;

    • 对于托管 InTouch 应用程序:

      InTouch.<udtinstanceName>.<udtmembers> \ InTouch.me.<members>\ <InTouch Tags>;

      示例:

      • InTouch.Furnace_1.TemperatureSetPoint = InTouch.Furnace_1.TemperatureSetPoint + 5;

      • InTouch.me.TemperatureSetPoint = InTouch.me.TemperatureSetPoint + 5;

  4. 使用验证 validate icon 可验证脚本。

    如果有任何错误,它将显示在脚本编辑器底部的错误列表部分中。

  5. 修复所有错误后,选择工具栏上的保存图标。

    注意:UDT 脚本文件存储在应用程序文件夹下的 scripts 文件夹中。

重要信息

  • 引用命名空间(例如 InTouch 或 Galaxy)时,请使用点符号 (.) 代替冒号 (:)。C# 和 Python 不支持基于冒号的引用。

  • Python UDT 脚本不支持调试。此外,Python 脚本的引用验证仅在运行时进行。因此,在编辑或保存脚本时,脚本编辑器不会提示被引用的对象或命名空间是否存在。只有在脚本运行时才会检测到无效或缺失的引用,编辑器在编写脚本期间不会对此类问题发出警告。

  • 最多允许六个嵌套 UDT 级别。例如“Datatype1.Datatype2.Datatype3.Datatype4.Datatype5.Datatype6.String1”。如需详细信息请参阅 UDT 规范。

  • UDT Real 数据类型的成员在内部被保存为 Float 数据类型。

  • 执行 UDT 脚本需要访问 Suite Link 与 WindowViewer 进程之间安全通信所使用的证书。出于安全考虑,默认情况下,交互式用户和低权限用户无法访问这些证书。因此,对于以下 WindowViewer 场景,管理员必须将启动 View 的用户显式添加到 ASB Web 托管组 (ArchestraWebHosting) 中。

    • 无 Web 客户端的交互式 view.exe 会话(工作站模式)

    • 带 Web 客户端的交互式 view.exe 会话(工作站模式)

      若未授予此访问权限,当 UDT 脚本执行尝试通过 WindowViewer 读写标记时,将导致通信失败。

  • 在 Configurator 中,在 InTouchHMI 插件下为脚本服务配置系统管理服务器身份管理器注册管理器。配置成功完成后,请重启 InTouchServiceMgr 服务。如果 InTouchServiceMgr 处于已停止状态,则必须重启计算机。

    Required Configurator options for UDT Scripting

工具栏选项

选项

名称

描述

保存

保存脚本

Undo icon

撤消

撤消先前在脚本编辑器中执行的操作。

Redo icon

恢复

在脚本编辑器中重做撤消操作。

Select all

全选

选择所有文本

Cut icon

剪切

剪切所选文本

Copy icon

复制

复制所选文本

Paste icon

粘贴

粘贴复制的文本

search icon

搜索

查找文档中的文本

Replace icon

替换

将文本替换为指定的文本。选择替换图标。在查找内容字段中,输入需要被替换的文本。在替换为字段中,输入要替换的文本。

Go to icon

转到

允许您跳转到特定行

zoom icon

放大 缩小

放大显示,以获得文本的特写视图。

缩小显示,以更小的尺寸查看更多页面内容。

多脚本标签页支持

  • 用户可以在单独的标签页中创建和启动脚本,从而能够同时管理多个脚本,且在标签页之间切换时不会丢失数据或上下文。

  • 在脚本标签页之间切换时,会保留每个脚本的当前状态和上下文,确保导航过程中不会丢失任何信息。

  • 每个标签页都会显示 IRT(信息资源树)和工具提示详细信息,为用户提供所选脚本的相关信息。

  • 当从注册级别的派生或成员模板启动脚本时,脚本将从其父模板打开,从而保持原始上下文。

  • 关闭脚本标签页时,树视图中会突出显示先前处于活动状态的脚本,并显示其属性以便于参考。

示例

以下脚本通过向当前对象的 TemperatureSetPoint 添加给定值来更新该属性。例如,如果当前设定点为 100,且您传入 3,则新设定点变为 103。

使用 C# 的脚本

public async Task UpdateSetPoint1(float value)

{

me.TemperaturesetPoint = me.TemperaturesetPoint + value;

}

C# example

使用 Python 的脚本

def UpdateSetPoint(value):

me.TemperaturesetPoint = me.TemperaturesetPoint + value

Python example

在这两个脚本中,InTouch.me 是相对引用,TemperatureSetPoint 是 UDT 的成员

此处的操作流程:

  • 读取当前的 TemperatureSetPoint

  • 将其与 value 相加

  • 将更新后的结果写回 TemperatureSetPoint

您还可以在脚本中调用保存在 Credential Manager 中的凭据。

示例:

public async Task namedcrededential()

{

me.username = SecurityManager.GetUserName(me.CredentialName);

me.password = SecurityManager.GetPassword(me.CredentialName);

me.domain = SecurityManager.GetDomain(me.CredentialName);

me.accesstoken = SecurityManager.GetAccessToken();

}

此处 CredentialName 是保存在 CredentialManager 中的凭据名称。

In This Topic
Related Links