Моя проблема:
Я создавал проекты с использованием Codesys в течение последних 6 месяцев или около того, и хотя я многое узнал о среде программирования, мне еще предстоит найти способ отображать пользовательские сообщения во время выполнения в журнале сообщений консоли.
Что я хочу:
Для отображения сообщения в окне сообщений Codesys IDE во время выполнения или отладки.
Что я пробовал:
Я использовал счетчики, чтобы отслеживать, когда происходят определенные экземпляры моих программ, однако становится утомительным постоянно следить за ними, особенно по мере того, как мои проекты становятся больше или точно знаю, где в моей программе возник счетчик.
Недавно я обнаружил то, что Codesys называет «прагмами», и хотя они кажутся именно тем, что я ищу, мне еще предстоит увидеть какие-либо результаты или результаты использования прагмы, и поэтому я не уверен, для чего они нужны или что они делают.
Чтобы показать, как выглядят мои прагмы, во многих случаях у меня будет строка, которая выглядит так:
{info <'Ручной режим запущен!'>} или {warning <'Ручной режим завершен!'>}
Эти строки не вызывают ошибок, но, насколько я могу судить, они ничего не делают.
Я зашел так далеко, что создал свою собственную систему обмена сообщениями. Эта функция использует пользовательскую функцию, которая добавляет сообщения в массив, а затем отображает их в визуализации. Функция позволяет мне делать это из любой точки моей программы и по существу работает как оператор печати. Но тот факт, что он требует визуализации, делает его неудобным для использования, особенно для небольших проектов или проектов с несколькими визуализациями.
Я ценю любые предложения - если то, о чем я прошу, невозможно, то я, по крайней мере, хотел бы знать.
Вам нужны библиотеки 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);
Журнал появится на вкладке Журнал внутри работающего контроллера.
Codesys 3.5 я полагаю? Это позволяет вам создать диспетчер тревог?