如何访问 TwinCAT 3 HMI Engineering 中的 REFERENCE-TO-X 成员

问题描述 投票:0回答:1

这个问题是关于倍福产品TE2000 | TwinCAT 3 HMI 工程。 (使用v1.12.760.48)

在 HMI 项目中,我希望能够从 PLC 项目中的实例访问变量,该实例公开为 REFERENCE TO X。假设为 REFERENCE TO MyFB。

根据 Beckhoff 的说法,自 v1.12.748.0 以来,可以在 TwinCAT HMI 中解析引用(我使用的是 1.12.760.48):

1.12.748.0版本,引用、指针和接口指针 可以在HMI中解决。这使得可以访问 通过指针或引用指向的原始变量。这 通过指针或引用访问时可以读写。 已解析的指针或引用照常在下面列出 TwinCAT HMI 配置窗口中的变量

(来源:https://infosys.beckhoff.com/english.php?content=../content/1033/te2000_tc3_hmi_engineering/10740011531.html&id=

鉴于上面的解释,我怀疑 REFERENCE TO X 类型的变量会出现在 HMI 配置窗口中,并且可以访问 X 的成员。

然而,观察发现这只是部分情况。引用的变量正在显示,但我无法访问其成员,如下图所示:

  1. 原始实例
  2. 通过接口指针(IMyFB)暴露的实例
  3. 通过 POINTER TO MyFB 公开的实例
  4. 通过引用 MyFB 公开的实例

只有接口指针似乎可以按预期工作,其中原始实例的成员可见(当然只有属性)

在查看 REFERENCE-TO-MyFB 的数据类型模式时,我注意到有一个属性

allowImplicitAccess
设置为 false。这很奇怪,因为我希望这是真的。

{
  "allOf": [
    {
      "allowImplicitAccess": false
    },
    {
      "$ref": "tchmi:server#/definitions/PLC1.MyFB"
    }
  ],
  "id": "tchmi:server#/definitions/PLC1.REFERENCE-TO-MyFB"
}

我尝试通过手动调整此文件来将此属性设置为 false:

{solutionFolder}{hmiProjectFolder}\Server\TcHmiSrv\TcHmiSrv.Config.default.json
(因为我找不到其他方法来调整架构。)

将其设置为 true 没有帮助,但删除该属性确实有效:

"PLC1.REFERENCE-TO-MyFB": {
     "allOf": [
         {
                 "$ref": "#/definitions/PLC1.MyFB"
         }
     ]
}

引用的变量现在显示如我所料:

但是有一些烦恼:

  • 取消映射和重新映射将导致“AllowImplicitAccess”重新出现,因此您必须这样做 又是这个
  • 删除AllowImplicitAccess时,您将收到有关映射符号的警告,表明链接符号的架构与类型不同。这有点烦人,但到目前为止我还没有发现真正的问题。
  • 这感觉不是解决此问题的正确方法。

我的问题是:是否需要启用一项设置才能允许成员访问 REFERENCE-TO-X 类型,或者是否有更好的解决方案来解决此问题?(同样适用于 POINTER-TO-X)为什么是默认情况下不允许访问这些成员,还是这是一个错误?

一些补充说明:

  • 所有使用的属性都具有 {attribute 'monitoring' := 'call'} 属性
  • 映射符号的所有权限均处于活动状态

任何有关解决此问题的指导或见解将不胜感激。

pointers reference twincat twincat-hmi
1个回答
0
投票

我在这个问题上也遇到了困难。我所做的只是访问控件属性上的引用符号,并将其他符号名称放在属性框上的引用后面。

但缺点是变量不能用作双向访问。为了实现两种方式,我只需创建一个结构体,其中包含所有符号作为成员的引用。

© www.soinside.com 2019 - 2024. All rights reserved.