Вложений: 3
DEBUG#07. В чем причина ошибки "Processor load watchdog of all IEC-tasks detected"?
Вопрос: в процессе работы контроллера иногда возникает ошибка "Processor load watchdog of all IEC-tasks detected". В чем причина ее появления?
Вложение 50794 Вложение 50795
Ответ: данная ошибка означает, что сработал сторожевой таймер, который контролирует загрузку CPU и генерирует исключение, если она в течение нескольких секунд превышает 99%.
Этот механизм, в частности, используется для детектирования возникновения бесконечного цикла в программе пользователя.
В редких случаях превышение загрузки ЦПУ может быть вызвано внешними факторами - например, сетевым штормом.
В подобных ситуациях остановка работы контроллера может быть нежелательной (если допускается остановка выполнения программы на ограниченный интервал времени).
Для отключения генерации исключения в подобных ситуациях - нужно подключиться к контроллеру через утилиту WinSCP и отредактировать файл CODESYSControl.cfg, который расположен в рабочей директории контроллера (пути к рабочей директории для разных контроллеров см. в документе CODESYS V3.5. FAQ). В файле в секции [CmpSchedule] следует присвоить параметру ProcessorLoad.Maximum значение 0 и перезапустить CODESYS (в web-конфигураторе: ПЛК - Настройки - Перезапустить CODESYS).
Вложение 50796
Вложений: 3
COM12. Проблемы с опросом Modbus Serial Slave устройств через МКОН
Вопрос: контроллер настроен в режиме Modbus TCP Master. Необходимо реализовать опрос устройств на шине RS-485, подключенных к контроллеру через конвертер протоколов МКОН. Для каждого slave-устройства в проект добавлен компонент Modbus TCP Slave. Во всех компонентах указан и один и тот же IP-адрес и порт, и разные Unit ID, соответствующие адресам слэйвов на шине RS-485. Проблема в том, что в CODESYS каждый компонент Modbus TCP Slave создает отдельное подключение, а МКОН поддерживает только два одновременных подключения, то есть опросить больше двух слэйвов таким образом невозможно. Как можно решить эту проблему?
Вложение 50820
Ответ: при работе с преобразователями протоколов Modbus TCP/Modbus RTU необходимо добавлять в проект только один компонент Modbus TCP Slave, а уже в него - нужное количество компонентов Modbus Slave COM Port. В этом случае контроллер установит с конвертером протоколов только одно соединение.
Вложение 50821
См. видеопример.
Обратите внимание: в текущих версиях CODESYS присутствует баг, из-за которого при возникновении любой ошибки обмена с устройством Modbus Slave COM Port, добавленным в компонент Modbus TCP Slave, его опрос больше не производится.
Для решения проблемы необходимо реализовать сброс ошибок в коде:
Код:
PROGRAM PLC_PRG
VAR
fbConfirmError: R_TRIG;
fbConfirmError1: R_TRIG;
fbConfirmError2: R_TRIG;
END_VAR
// Modbus_Slave_COM_Port, Modbus_Slave_COM_Port_1, Modbus_Slave_COM_Port_2 - имена компонентов из дерева проекта (см. скриншот выше)
fbConfirmError(CLK := Modbus_Slave_COM_Port.xError, Q => Modbus_Slave_COM_Port.xConfirmError);
fbConfirmError1(CLK := Modbus_Slave_COM_Port_1.xError, Q => Modbus_Slave_COM_Port_1.xConfirmError);
fbConfirmError2(CLK := Modbus_Slave_COM_Port_2.xError, Q => Modbus_Slave_COM_Port_2.xConfirmError);
Ошибка исправлена в CODESYS V3.5 SP17.
Вложение 56833
COM13. Как интегрировать контроллер с Telegram-ботом?
Вопрос: как интегрировать контроллер с Telegram-ботом?
Ответ: см. пример.
В нем демонстрируется:
- отправка сообщений от контроллера боту;
- отправка файлов от контроллера боту;
- чтение последнего сообщения, отправленного пользователем в чат с ботом.
Требуемая версия прошивки контроллера: 1.2.07xx.xxxx или выше
В примере демонстрируется использование утилит curl и jq, вызываемых через ФБ библиотеки CmpSysExec.
В примере используются библиотеки OwenStringUtils и VisuKeyboard_En-ru (библиотека русскоязычной клавиатуры).
https://owen.ru/product/codesys_v3/libraries
Пользователь может доработать пример под конкретную задачу, используя документацию о Telegram API.
Вложений: 1
PRG#22. Как считать серийный номер USB-накопителя, подключенного к контроллеру?
Вопрос: как считать серийный номер USB-накопителя, подключенного к контроллеру?
Ответ: см. пример.
Вложение 51143
Если накопитель не подключен, то будет выведена информация о flash-памяти контроллера.
Вложений: 1
VISU#22. Как сделать так, чтобы диалог открывался рядом с кнопкой его вызова?
Вопрос: при выборе диалога можно настроить его открытие либо по центру экрана, либо по заданным координатам.
Требуется настроить диалоги в проекте так, чтобы они открывались рядом с кнопками, нажатием на которые они вызываются.
Это можно сделать через вариант с заданными координатами, но потребуется вручную вычислять координаты для каждой кнопки.
Можно ли как-то избежать этого?
Ответ: в данном случае в качестве координат открытия диалога можно указать системные переменные ptMouse.iX и ptMouse.iY - они соответствуют координатам последнего нажатия в визуализации.
При этом в настройках визуализации должен быть установлен режим масштабирования Фиксировано.
Вложение 51532
Вложений: 3
COM#14. Почему при работе с шаблонами настройки Mx210 сбрасываются на заводские?
Вопрос: в проекте используются шаблоны модулей Mx210. Настройки модулей задаются через ОВЕН Конфигуратор.
Но при подключении модулей к контроллеру настройки их входов/выходов сбрасываются на заводские. В чем может быть проблема?
Ответ: при использовании шаблонов Mx210 не надо настраивать входы/выходы модулей через ОВЕН Конфигуратор - нужно делать это прямо в CODESYS в настройках шаблона на вкладке Конфигурация.
Вложение 51937
Настройки будут записываться:
- при загрузке проекта из CODESYS;
- при запуске контроллера;
- в случае потери и восстановления связи.
Для шаблона МВ210-101 запись настроек можно отключить - это требуется, чтобы изменять настройки входов в процессе работы контроллера с помощью каналов вкладки Соотнесение входов-выходов.
Вложение 51938 Вложение 51939
Вложений: 2
COM#15. Почему значения в каналах Modbus отображаются серым?
Вопрос: при настройке обмена по Modbus в дереве проекта не отображается ошибок (горят зеленые кружочки), но сами значения в каналах являются нулевыми и отображаются серым.
В чем может быть проблема?
Вложение 52146
Ответ: так происходит, если к каналам не привязаны переменные или привязанные переменные не использюутся в программе.
Самый простой способ избежать таких ситуаций - для параметра Всегда обновлять переменные установить значение Вкл. 2 (Всегда в задаче цикла шины).
В этом случае значения в каналах всегда будут "активными".
Вложение 52147
OTHER#09. Можно ли использовать для ПЛК ОВЕН платные компоненты из CODESYS Store?
Вопрос: можно ли при работе с контроллерами ОВЕН использовать дополнительные платные компоненты и библиотеки из CODESYS Store, которые требуют программного (Soft Container) или аппаратного (WIBU key) лицензирования?
Ответ: в настоящий момент такая возможность отсутствует.
Поддержка Soft Container запланирована в одной из следующих прошивок.
COM#16. Как работать с OwenCloud через API?
Вопрос: есть ПЛК, который подключен к сети с доступом в интернет, и другое устройство, которое находится на удаленном объекте.
У ПЛК нет доступа к сети этого объекта (или сеть там вообще отсутствует), но устройство подключено к облачному сервису OwenCloud.
Возможно ли как-то с ПЛК считывать/записывать параметры этого устройства?
Ответ: да, это возможно с помощью API OwenCloud. См. пример и видео.
При переносе примера на ПЛК2xx в ФБ WRITE_PARAMATER потребуется изменить значение константы c_sPathToFile на:
Код:
c_sPathToFile: STRING := '/root/CODESYS/send_data.json';
Документация на API:
https://api.owencloud.ru/
OTHER#10. Как организовать удаленный доступ к ПЛК из CODESYS для загрузки проектов?
Вопрос: можно ли организовать удаленный доступ к ПЛК из CODESYS для загрузки проектов?
Ответ: да, это возможно. См. более подробную информацию и данные для доступа к демонстрационному ПЛК в этом посте.