如何自定义函数或局部脚本

描述

使用系统函数和运行系统脚本

运行系统脚本 (Panels, RT Advanced, RT Professional)

运行系统脚本

指代用户自定义函数和局部脚本中所有活动的通用术语。

函数

指代系统函数和用户自定义函数的通用术语。

系统函数

系统函数是所有随 WinCC 一同提供的函数。系统函数可应用在函数列表、用户自定义函数或局部脚本中。

用户自定义函数

用户自定义函数是指在“脚本”编辑器中编写的函数。为了更准确的加以说明,本文档中使用术语“用户自定义 VB 函数”和“用户自定义 C 函数”。

局部脚本

局部脚本是指在使用的位置直接创建的脚本(例如对象属性),并且具有周期性或非周期性触发器。为了更准确的加以说明,本文档中使用术语“局部 VB 脚本”和“局部 C 脚本”。

VBS/VBScript

Visual Basic Script 的缩写形式

应用运行系统脚本

下图可作为应对编程任务的决策指南:

触发器

WinCC RT Advanced 和面板不支持局部脚本。

自定义函数或局部脚本?

使用用户自定义的函数或者使用局部脚本完成编程任务,这取决于应用目的并最终取决于用户自定义函数或局部脚本的数量。

局部脚本可用于各种后台活动,例如日常打印或记录、变量的监视或者计算的执行。

通过自定义函数,只需创建一次就可以在项目中重复使用代码。需要时,只需调用相应的自定义函数即可,而无需多次输入代码。这样代码将更加清晰并易于维护。

触发器

系统函数

● 函数列表

发生特定事件时,可通过函数列表来执行组态的系统函数。      

● 用户自定义函数

如果 HMI 设备支持用户自定义函数,可以将系统函数与用户自定义函数代码中的指令和条件结合使用。这样,便可以根据特定的系统状态来执行自定义函数。此外,还可以计算系统函数的返回值。利用返回值可以执行测试函数,继而影响函数流。

● 函数列表

组态函数列表时,从按类别排序的选择列表中选择系统函数:

触发器

● 用户自定义函数

如果在用户自定义函数中使用系统函数,可以在选择列表中进行选择。要打开选择列表,请使用快捷键或单击触发器  。

触发器

用户定义的函数 (Panels, RT Advanced, RT Professional)

自定义函数可用于以下情况:

● 组态函数列表

在自定义函数中,自定义函数和系统函数可以按一定的条件来执行,还可以重复执

行。然后将该用户自定义函数添加到函数列表中。

● 编写新函数

自定义函数仅在定义它们的项目中有效。对于用户自定义函数,可定义传送参数和返回

值以实现数值的转换。

在函数列表中只能使用属于同一种编程语言的用户自定义函数。选择的首个用户自定义函

数将决定随后在该函数列表中可选择的是 VB 函数还是 C 函数。

自定义函数的组织

通过“脚本”编辑器创建自定义函数。更多信息,请参见““脚本”编辑器 (页 7082)”。自定义函数保存在项目中。要保护用户自定义函数,请设置专有技术保护。

● 项目树

用户自定义函数显示在项目树的“VB 脚本”(VB scripts) 或“C 脚本”(C scripts) 下。

触发器

● 函数列表

用户自定义函数显示在函数列表的“VB 函数”(VB functions) 或“C 函数”(C functions) 下。

● 用户自定义函数

如果在用户自定义函数中使用系统函数,可以在选择列表中进行选择。要打开选择列

表,请使用快捷键或单击触发器  。

局部脚本 (RT Professional)

可将局部脚本用于以下操作:

● 动态化对象

可使用局部脚本确定运行系统中某对象属性的值。例如,通过此方法可根据变量值更改

颜色。

● 在任意时间点执行任务。

可使用局部脚本规划工作,例如在每天换班交接时打印输出日志。

局部脚本的属性

在使用的位置直接创建局部脚本。局部脚本具有以下属性:

● 预定义名称

● 预定义参数

● 预定义返回值(可选)

● 只能在使用的位置进行更改

● 不具有触发器

● 调用自定义函数、系统函数

触发器

在运行系统中执行局部脚本时需要使用触发器。触发器可以在创建局部脚本时自动确定,也可以由项目经理指定。

WinCC 支持以下触发器:

● 非周期性触发器,例如,规划单次终止运行系统以进行维护工作。

● 周期性触发器,例如,规划一项启动日常日志打印的作业。

● 事件,例如,单击按钮时。

下表列出了不同类型的触发器:

触发器

触发器可用于以下编辑器:

● 调度程序

首先需要在调度程序中组态触发器。然后将该触发器连接到局部脚本或函数列表。

● 画面

要对对象属性做动态化处理,首先应在相应画面的属性列表中组态局部脚本。

在创建局部脚本时会自动确定触发器。可更改该触发器,例如可更改为变量触发器。

关于函数列表的基础知识

原理

针对对象(例如画面对象或任务等)的事件来组态函数列表。可以将函数列表精确地组态到每个事件上。可用事件取决于所选择的对象和HMI设备。

触发器

组态函数列表

通过从下拉列表中选择系统函数和自定义函数来组态函数列表。系统函数根据类别排列在选择列表中。

在函数列表中只能使用属于同一种编程语言的自定义函数。选择的首个用户自定义函数将决定随后在该函数列表中可选择的是用户自定义 VB 函数还是用户自定义 C 函数。哪些编程语言可用取决于所选的 HMI 设备。

步骤

要组态函数列表,请按如下步骤进行操作:

1. 打开对象所在的编辑器。

2. 选择对象。

3. 在巡视窗口中单击“属性 > 事件”(Properties> Events)。选择要对其组态函数列表的事件。

4. 在巡视窗口的下拉列表中标记“<添加函数>”() 条目。

5. 从选择列表中选择所需的系统函数或用户自定义函数。也可输入该系统函数或用户自定义函数的名称。

触发器

系统函数或自定义函数已输入到函数列表中。

6. 如果该系统函数或自定义函数具有参数,则为参数选择合适的值。

触发器7. 如果要向函数列表中添加其它系统函数或用户自定义函数,请重复步骤 4) 到步骤 6)。

函数列表组态已经完成。除了组态的事件,函数列表的状态也显示在巡视窗口中。在运行系统中发生组态的事件时,函数列表从上至下执行一遍。

更改系统函数或自定义函数的顺序

1. 在函数列表中选择所需的系统函数或自定义函数。

2. 然后在巡视窗口中单击相应的方向箭头,直到该系统函数或自定义函数移动到所需位置。

触发器

“脚本”编辑器 (Panels, RT Advanced, RT Professional)  

“脚本”编辑器具有诸如自动完成和语法突出显示等功能,有助于用户自定义函数的创建。

可以使用“指令”(Instructions) 任务卡插入频繁使用的指令的代码模板。

触发器

访问 HMI 变量 (Panels, RT Advanced, RT Professional)

通过 VBS 或 C,可访问项目中已创建的 HMI 变量。可在运行系统中通过用户自定义函数更改或读取 HMI 变量的值。

还可创建局部变量,作为计数器或缓冲器。每个局部变量都必须经过初始化,以防止由于错误写入局部变量而导致的错误。

HMI 变量

● WinCC Runtime Advanced 和面板

在变量映像中创建的变量值将保存在用户自定义函数中。然后,会将变量值更新为设置周期时间。用户自定义函数首先会访问上一个周期中读取的变量值。

如果变量名称与项目中 VBS 的命名约定匹配,则可按如下方式在用户自定义函数中使用该变量。

'VBS_Example_03

 If BeltDriveOilTemperature > 100 Then [instruction]

如果项目中的变量名称与 VBS 命名约定不匹配,则必须通过“SmartTags”列表引用该变量。在以下示例中,变量名称包含“&”字符,其不符合 VBS 的命名约定。

'VBS_Example_04

SmartTags("Test&Trial")= 2005

● WinCC Runtime Professional

访问功能与在 HMI 设备中使用 WinCC Runtime Advanced 和面板进行访问相同。还可以以异步方式访问变量值。PLC 中的变量值以异步访问方式直接访问。在局部脚本或用户自定义 C 函数中按如下方式访问变量值:

– SmartTags 列表 (VBS)

– 带有 Read-/Write 方法的 Tags 列表 (VBS)

– GetTag 函数 (C)

– SetTag 函数 (C)

当调用方法或用户自定义函数时,立即读取 PLC 中的变量值。变量值并不定期更新,这与从变量映像中读取的情况不同。

触发器

触发器

运行系统脚本

PLC 数组元素的索引可以任何数字开头。但在 WinCC 中,始终从 0 开始索引。例如,PLC 变量“Array [1..3] of Int”映射到 WinCC 中的“Array [0..2] of Int”。在脚本中访问数组时,须注意正确的索引顺序。     

访问带有动态名称的 HMI 变量(WinCC Runtime Advanced 和面板)

用户自定义 VB 函数通过变量名称访问变量值。可以以这样一种方式来指定变量名称,即变量名称在用户自定义函数运行时构成。

如果只是在画面中调用用户自定义 VB 函数且其中的 HMI 变量还用在其它位置,例如,在 I/O 字段中使用,则出于性能方面的原因,应将该 HMI 变量组态为“操作时循环”采集模式。

如果访问用户自定义 VB 函数且当前显示的画面中未使用 HMI 变量,则将 HMI 变量组态为“循环连续”采集模式。这样可确保该变量的当前值始终可用。

示例:更换在 HMI 设备上当前显示的操作模式。

在本示例中,使用系统函数“SetDeviceMode”在 HMI 设备上切换“在线”和“离线”模式。也可在 HMI 设备上显示当前设置的操作模式。

已经创建一个画面。 

在该示例中需要一个 HMI 变量和一个文本列表以及下列设置:

HMI 变量:

OperatingMode 无 Bool

文本列表:

ShowOperatingMode Bit (0/1) 1: 操作模式:“在线”0: 操作模式:“离线”

步骤

1.创建上面所示的“OperatingMode”HMI 变量。

触发器

2.创建上面所示的“ShowOperatingMode”文本列表。

触发器

3. 打开画面并插入一个可将操作模式改为“在线”的按钮。

4. 在巡视窗口中单击“属性 > 事件”(Properties> Events)。选择“按下”事件。

5. 对“按下”事件组态系统函数“SetDeviceMode”。该系统函数可在“设置”下的选择列表中找到。

6. 为“模式”参数选择“在线”条目。

7. 对“按下”事件组态系统函数“SetBit”。该系统函数可在“位处理”下的选择列表中找到。

8. 从选择列表中为参数“变量”选择 HMI 变量“操作模式”。

触发器

9. 在过程画面中添加一个可将操作模式改为“离线”的按钮。

10.重复步骤 4 至 7。为“模式”参数选择“离线”条目。组态系统函数“ResetBit”代替系统函数“SetBit”。

触发器

中间结果

在运行系统中可使用这两个按钮切换 HMI 设备的操作模式。

想要在 HMI 设备的输出域中显示当前设置的操作模式。

步骤

1. 在过程映像中创建“符号 I/O 域”。在巡视窗口中单击“属性 > 属性”(Properties>

Properties)。

2. 在“常规”(General) 组中进行如下设置:

– 选择“输出”作为“模式”。

– 选择文本列表“显示操作模式”作为“文本列表”。

– 选择“操作模式”作为“变量”。

触发器

结果

使用按钮更改操作模式时,始终显示 HMI 设备上当前设置的操作模式。

  
      审核编辑:彭静
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分