Можно ли отображать сообщения в окне сообщений Codesys во время выполнения? Если да, то как?

Моя проблема:

Я создавал проекты с использованием Codesys в течение последних 6 месяцев или около того, и хотя я многое узнал о среде программирования, мне еще предстоит найти способ отображать пользовательские сообщения во время выполнения в журнале сообщений консоли.

Что я хочу:

Для отображения сообщения в окне сообщений Codesys IDE во время выполнения или отладки.

Что я пробовал:

  • Счетчики:

Я использовал счетчики, чтобы отслеживать, когда происходят определенные экземпляры моих программ, однако становится утомительным постоянно следить за ними, особенно по мере того, как мои проекты становятся больше или точно знаю, где в моей программе возник счетчик.

  • Прагмы

Недавно я обнаружил то, что Codesys называет «прагмами», и хотя они кажутся именно тем, что я ищу, мне еще предстоит увидеть какие-либо результаты или результаты использования прагмы, и поэтому я не уверен, для чего они нужны или что они делают.

Чтобы показать, как выглядят мои прагмы, во многих случаях у меня будет строка, которая выглядит так:

{info <'Ручной режим запущен!'>} или {warning <'Ручной режим завершен!'>}

Эти строки не вызывают ошибок, но, насколько я могу судить, они ничего не делают.

  • Пользовательские сообщения:

Я зашел так далеко, что создал свою собственную систему обмена сообщениями. Эта функция использует пользовательскую функцию, которая добавляет сообщения в массив, а затем отображает их в визуализации. Функция позволяет мне делать это из любой точки моей программы и по существу работает как оператор печати. Но тот факт, что он требует визуализации, делает его неудобным для использования, особенно для небольших проектов или проектов с несколькими визуализациями.


Я ценю любые предложения - если то, о чем я прошу, невозможно, то я, по крайней мере, хотел бы знать.

Codesys 3.5 я полагаю? Это позволяет вам создать диспетчер тревог?

Sergey Romanov 17.05.2022 06:51
forge.codesys.com/u/ingo/blog/2019/05/add-own-log-messages Это то, что я нашел в Google, это поможет?
Quirzo 17.05.2022 07:33
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
2
33
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужны библиотеки CmpLog и ComponentManager. Пример моего использования:

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);

Журнал появится на вкладке Журнал внутри работающего контроллера.

Другие вопросы по теме