您可以在运行时显示 Codesys 消息 window 中的消息吗?如果是这样怎么办?

Can you display messages in the Codesys message window during runtime? If so how?

我的问题:

在过去 6 个月左右的时间里,我一直在使用 Codesys 创建项目,虽然我已经了解了很多关于编程环境的知识,但我还没有发现一种在运行时将自定义消息显示到控制台消息日志的方法。

我想要的:

在运行时或调试期间,在 Codesys IDE 的消息 window 中显示一条消息。

我试过的:

我使用计数器来帮助跟踪我的程序的某些实例何时发生,但是不断地监视它们变得乏味,尤其是当我的项目变得更大或确切地知道计数器在我的程序中的何处起源时。

我最近发现了 Codesys 调用的东西 'pragmas' 虽然它们似乎正是我正在寻找的东西 - 我还没有看到使用 pragma 的任何结果或输出,所以我不确定它们到底是什么是为了还是做。

为了展示我的 pragma 是什么样子,在很多情况下我会有一行看起来像:

{信息 <'Manual mode started!'>} 或{警告 <'Manual mode terminated!'>}

这些行不会导致错误,但据我所知它们似乎没有做任何事情。

我已经创建了自己的自定义消息传递系统。该功能使用自定义函数将消息添加到数组,然后显示在可视化上。该函数允许我在我的程序中的任何地方执行此操作,并且基本上用作打印语句。但由于需要可视化,使用起来不方便,尤其是小项目或多可视化项目。


我很感激任何建议 - 如果我所要求的是不可能的,那么我至少想知道。

您需要的是 CmpLogComponentManager 库。我的用法示例:

result: SysExcept.SysTypes.RTS_IEC_RESULT;
componentID: UDINT;
name: STRING := "myLogComponentName";
message: STRING := "my message";

// Execute this once and cache "componentID" in a global variable.
Component_Manager.CMAddComponent2(pszComponent := name, udiVersion := 1, udiCmpId := ADR(componentID), pResult := ADR(result));

// Use the cached "componentID".
CmpLog.LogAdd2(hLogger := CmpLog.LogConstants.LOG_STD_LOGGER, udiCmpID := componentID, udiClassID := CmpLog.LogClass.LOG_DEBUG, 1, 1, pszInfo := message);

日志将出现在 运行 控制器内的“日志”选项卡中。