Приложения можно отлаживать несколькими способами. Самые простые из них — использование встроенного в среду Codesys симулятора и работа с Soft PLC. Эти способы имеют существенные ограничения. Используя симулятор, можно отлаживать только алгоритмы без доступа к реальной периферии ПК. Программный ПЛК (Soft PLC) получает доступ к окружению ОС, но имеет зависимость от её устройства.
Если ваш целевой ПЛК работает на операционной системе Linux, то будут некоторые отличия в том как ведут себя библиотечные функции Codesys. Это касается, к примеру, работы с последовательными портами, разделяемой памятью, файловой системой. Ниже я приведу несколько советов, которые помогут в поиске причин неправильной или неочевидной работы Soft PLC.
Вопрос: Как управлять Soft PLC?
Ответ: Прежде чем начать нужно кое-что знать о том, как управлять Soft PLC. Программный ПЛК реализован как сервис и режим его работы может быть установлен из списка служб Windows.
Доступ к управлению службами можно получить несколькими способами:
- нажать сочетание клавиш [Win] + [R] и выполнить команду services.msc в появившемся окне;
- через меню Пуск: Пуск — Панель управления — Администрирование — Службы
Если у вас установлено несколько версий Codesys 3.5, то каждая из них по умолчанию устанавливает свою версию компонента Codesys Control Win V3.
Разница по большому счёту только в их разрядности. Доступ к службам нужен, чтобы настроить запуск необходимых вам компонентов. К примеру, если я использую в проекте 32-разрядные библиотеки, то и ПЛК выбираю 32-разрядный, переведя его службу в ручной режим управления. Этот режим необходим при отладке, чтобы при старте Soft PLC не начал выполнять программу из папки PlcLogic, которая может работать с ошибками и нагрузить ваш ПК.
Остальные службы с таким же названием, но другой версией можно также перевести в ручной режим или вообще отключить. Лучше отключить, т.к. они будут конфликтовать друг с другом при запуске.
Существует и стандартный способ управления Soft PLC через иконку в системном трее (лотке). Если ПЛК остановлен (в стоп режиме), то иконка будет серая, если он запущен, то станет цветной. На 64-разрядной версии будет нарисована соответствующая цифра.
Если среда разработки Codesys перестаёт реагировать при отладке или загрузке приложения в ПЛК, то нужно посмотреть на его состояние в системном трее. Далее либо запустить его, либо сначала остановить и потом запустить снова (перезагрузить).
Вопрос: Где взять 32-разрядную версию Codesys Control Win V3?
Ответ: Можно загрузить из store.codesys.com нужный вам 32-разрядный дистрибутив. При установке можно выбрать только компонент Codesys Control Win V3, не устанавливая саму среду разработки.
Вопрос: У меня уже установлен 32-разрядный Soft PLC, но в текущем проекте используется другая версия. Что делать?
Ответ: Можно обновить устройство в проекте, поставив галочку для выбора из всего списка доступных ПЛК. Также среда разработки при загрузке проекта в ПЛК может задать дополнительный вопрос о совместимости версий и можно ли использовать имеющуюся. Отвечаем, что попробуем. Как правило, это тоже работает.
Вопрос: Где находится папка с проектом?
Ответ: Обычно здесь: C:\Program Files (x86)\3S CODESYS\GatewayPLC\PlcLogic
Вопрос: Как правильно очистить проект в ПЛК?
Ответ: Есть два способа:
- Используя контекстное меню при нажатии ПКМ на устройстве. Там снизу будет пункт «Reset origin device«. При этом устройство в дереве проекта подсветится зелёным на время операции очистки.
- Не менее гарантировано можно сделать это вручную, удалив содержимое папки: C:\Program Files (x86)\3S CODESYS\GatewayPLC\PlcLogic. Только делать это при остановленном ПЛК.
Вопрос: Как правильно отлаживать проект, работающий с последовательным портом?
Ответ: Если у вас используется последовательный порт, то обычно вы открываете его для работы, но не закрываете при выходе из режима отладки. Программный ПЛК, как обычная программа, захватывает дескриптор устройства и не освобождает его. В результате при следующей попытке открыть порт вы не сможете этого сделать и получите INVALID_HANDLE в качестве результата. Чтобы этого не происходило нужно каждый раз останавливать ПЛК, полностью удалять проект и снова запустить ПЛК. Удалять проект нужно, т.к. после остановки службы освобождённый порт будет снова захвачен сохранённой программой при запуске ПЛК. Вероятно это можно как-то автоматизировать.
То же происходит и в Linux, где можно заметить, что дескриптор получаемого устройства при постоянном входе в режим отладки инкрементируется, т.е. не освобождается с предыдущего сеанса. Но Linux не на столько жесток к обычным пользователям. Доступ к порту вы получите.
Вопрос: Как нумеруются порты в Windows?
Ответ: Если для доступа к последовательному порту используется библиотека SysCom, то в функции открытия вы можете использовать свои константы типа: COM1: byte := 1, COM2: byte := 2 и т.д.
Вопрос: Поддерживаются ли нестандартные скорости при работе с последовательным портом?
Ответ: Да, поддерживаются, но из типового их перечня. Вы можете определить свою, например так: SYS_BR_2400: dword := 2400.
Вопрос: По какому пути находится включаемый в проект произвольный файл?
Ответ: Для Soft PLC после загрузки он должен находиться рядом с приложением. При доступе к файлу можно использовать такой путь: ‘.\Application\[имя_файла]’
Комментарии: