Twincat Eventlogger 的多语言 'source' 名称的可能性

Possibility of a multilanguage 'source' name with Twincat Eventlogger

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 确实支持多语言报警名称(定义时),但源未定义,而是动态生成的。

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

如果我正确理解你的问题,那么能够使用问题来源的信息来参数化事件文本应该会帮助你解决问题。

如果您将事件文本定义为 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. 使用标签来标记源设备,因为标签可以是语言不变的。这不是最用户友好的方法,但它可能适合您。它会变成类似:“Cylinder 'AA.1123' 没有及时缩回。”。 'AA.1123' 作为标签必须作为字符串存储在您的 PLC 代码中。您必须相信您的操作员可以将标签关联回实际来源。

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