【问题标题】:Possibility of a multilanguage 'source' name with Twincat Eventlogger使用 Twincat Eventlogger 的多语言“源”名称的可能性
【发布时间】:2021-03-06 00:18:46
【问题描述】:

Roald 为 Twincat Eventlogger 编写了出色的指南。

https://roald87.github.io/twincat/2020/11/03/twincat-eventlogger-plc-part.html https://roald87.github.io/twincat/2021/01/20/twincat-eventlogger-hmi-part.html

对我们来说,这正是我们想要的,但是还有一件事我还没有弄清楚。如何在人机界面中获取多种语言的报警源名称。 params::sourceName 给出软件中的路径(例如:MAIN.fbConveyor1.Cylinder1) 该路径可以在初始化警报时自定义(如 Roald 所示)。这在我的情况下不起作用,因为我想定义一个多次实例化的通用警报(例如:“Cilinder 未在最长时间内收回”)。

我正在考虑使用源作为向操作员显示警报发生位置的一种方式。我们已经使用这种方式(路径)来保存机器设置等。我们制造的机器安装在世界各地,所以多语言是必须的。

Beckhoff 确实支持多语言警报名称(如果已定义),但源未定义,而是动态生成的。

有人知道如何解决这个问题吗?

【问题讨论】:

    标签: plc twincat


    【解决方案1】:

    如果我正确理解了您的问题,那么能够使用问题根源信息参数化事件文本应该会对您有所帮助。

    如果您将事件文本定义为Cylinder {0} has not retracted in time.,那么您可以在运行时添加该文本的参数。

    IF bRaiseAlarm THEN
        bRaiseAlarm := FALSE;
        fbAlarm.ipArguments.Clear().AddString('Alice');
        fbAlarm.Raise(0);
    END_IF
    

    但是,由于您提到的文章中也说明了这一点,因此我不确定这是否可以解决您的问题。

    在这个例子中,'Alice' 很难本地化。我想到了以下选项。

    1. 字符串可以基于 ENUM。枚举可以支持文本列表,所以如果你在那里添加翻译,那应该允许多语言输出。但是...这确实需要大量设置,在代码中放置翻译,并确保 PLC 应用程序知道参数应该使用的语言。

    2. 使用标签来标记源设备,因为标签可以是语言不变的。这不是最用户友好的方法,但它可以为您工作。它会变成这样:“气缸'AA.1123'没有及时缩回。”。 'AA.1123' 作为标签必须作为字符串存储在您的 PLC 代码中。您必须相信您的运营商可以将标签与实际来源相关联。

    希望这会有所帮助,否则请帮助我更好地理解问题。

    【讨论】:

    • 感谢您提供的两个选项。我真的想不出另一种方法来解决它。本质上,我想向操作员展示“传送带 1 - 气缸 1”没有及时缩回。如果在其他地方使用了相同的气缸功能块,则可能是“传送带 2 - 左侧推杆”没有及时缩回(例如)。
    • 如果我们有多个客户端,每个客户端都使用不同的语言,则 ENUM / texlist 方式可能不起作用。代码将发出警报,并以特定语言将参数放入其中。我猜标签方式是最简单的解决方案,但这可能很难在我们的机器上实现......
    • 好酷。我也不喜欢 ENUM 方法。您始终可以从父 FB 请求标签作为输入参数。但是是的.. 命名像“向左推”这样的对象会变得很困难。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 2012-01-21
    相关资源
    最近更新 更多