Применение интегрированного комплекса МЭК 61131-3 программирования CoDeSys для ПЛК собственного производства

Программный комплекс CoDeSys разработан компанией 3S-Smart Software Solutions GmbH (3S). Основным его назначением является программирование ПЛК и промышленных компьютеров в стандарте МЭК 61131-3. Ряд неординарных решений 3S, иногда наперекор сложившимся на рынке традициям и желанию получения быстрой прибыли, привел к тому, что CoDeSys стал штатным инструментом программирования ПЛК ведущих европейских изготовителей: ABB, Beckhoff, Beck IPC, Berger Lahr, Bosch Rexroth, ifm, Keb, Kontron, Lenze, Moeller, WAGO, Fastwel и др. Некоторые из них используют CoDeSys как базовое ядро собственных систем программирования, известных под собственными торговыми марками.

Несмотря на очевидно наметившееся развитие CoDeSys в сторону обеспечения требований ПЛК высшего класса, комплекс можно применять и с недорогими моделями контроллеров. Специализированные встроенные компиляторы машинного кода и гибко адаптируемая система исполнения позволяют "выжать" максимум из ограниченных аппаратных ресурсов.

Как средство программирования ПЛК CoDeSys можно разделить на 2 части: среду программирования и систему исполнения. Среда программирования функционирует на персональном компьютере в среде Windows:

Поскольку CoDeSys дает машинный код, поддержка его исполнения достаточно проста и по минимуму сводится к набору функций поддержки ввода-вывода и отладки. Система исполнения функционирует в ПЛК и обеспечивает загрузку код прикладной программы, "горячее" обновление кода, отладку, управление задачами и ряд сервисных функций. Система исполнения поставляется 3S изготовителям ПЛК (OEM) в виде исходных текстов. Это позволяет максимально эффективно реализовать поддержку аппаратных средств, без каких либо промежуточных механизмов. Изготовителю оборудования требуется, дописать аппаратно-зависимые функции ввода-вывода, возможно, отредактировать функции поддержки канала связи на физическом уровне (через API при наличии ОС) и функции записи кода прикладной программы в ППЗУ (Flash, диск и др.). Далее он компилирует готовую систему исполнения и помещает ее код в ПЗУ (или на загрузочный диск) своего ПЛК. Теперь ПЛК готов для поставки заказчикам.

Естественно OEM может добавить в систему исполнения собственные функции и поддержку нестандартной аппаратуры. Например, если контроллер имеет достаточно сложный программно-аппаратный счетчик, мы можем полностью встроить его в систему исполнения. Пользователю же будут "видны" только переменные, содержащие готовые результаты. Поддержка нестандартного оборудования или сети, реализуется, таким образом, прозрачно для пользователя.

Одна интересная возможность для OEM в CoDeSys это внешние библиотеки. Допустим, вы уже имеете значительные наработки собственного ПО на языке С. Возникает вопрос, не придется ли все это выбросить при переходе к CoDeSys? Нет. Вы можете написать в CoDeSys интерфейсы (объявления) ваших функций (или функциональных блоков) и сохранить их как внешнюю библиотеку. Сам код реализации функций вы создаете внешним С компилятором и включаете его либо в TSP (см. ниже) в виде obj файла или "прячете" в систему исполнения. Конечно, пользователь не может редактировать эти функции, но он использует их абсолютно свободно наравне со стандартными компонентами.

Конечно, можно написать библиотеки и в самом CoDeSys (внутренние библиотеки). Менеджер лицензий позволяет защитить их от изменения и просмотра, либо даже сделать их платными. После оплаты вам за использование вспомогательной библиотеки, пользователь просто активирует полученную лицензию. Этот метод часто используется и самой компанией 3S при поставке их библиотек CANopen, Modbus и SoftMotion.

С целью унификации системных расширений, часто предлагаемых изготовителями контролеров, 3S разработаны 24 внешних системных библиотеки (SysLib…). В их состав включены функции поддержки работы конечного пользователя с системным таймером, аппаратными часами реального времени, файловой системой контроллера, реализации обработчиков аппаратных прерываний в МЭК функциях, обработки системных событий, синхронизации задач, управления работой ПЛК и планировщиком задач системы исполнения, работы с последовательными портами, сокетами и др. (подробнее см. SysLibs_Overview_RU.pdf). Какие из данных возможностей необходимо поддержать и соответственно, какие системные библиотеки включить пакет поддержки ПЛК, решает изготовитель.

Интересно, что сверх всех 22х стандартных элементарных типов данных МЭК 61131-3 CoDeSys поддерживает работу с указателями. Это дает возможность писать низкоуровневые аппаратные функции непосредственно на языках МЭК. Кроме того, опытные пользователи имеют механизм для эффективной работы с объемными данными и файлами. Учитывая то что, языки МЭК относятся к языкам со строгой типизацией, количество поддерживаемых средой программирования типов данных очень важно. Их перечень служит первейшим индикатором класса системы МЭК программирования.

Общение системы программирования и системы исполнения происходит через так называемый Gateway server. Обычно сверху, со средой программирования он соединяется по TCP/IP, с системой исполнения по последовательному каналу или fieldbus. Среда программирования и Gateway server не обязательно должны функционировать на одной машине. Интерфейсы сервера и сверху и снизу открыты. То есть OEM может применить для связи среды программирования с контроллером собственный протокол, либо написать дополнительные программы, использующие протокол CoDeSys. Через тот же Gateway server работают и входящие в комплект (бесплатно) OPC и DDE серверы.

Еще один специфичный для оборудования компонент CoDeSys это ПЛК-браузер. Для пользователя это окно текстового терминала, оснащенного набором команд уникальных для данного ПЛК. Команды передаются контроллеру и выполняются там, так как это реализовал OEM. Это дает возможность посмотреть версию системного ПО, дамп памяти, выполнить тесты оборудования, настроить определенные параметры и др.

Из отладочных функций CoDeSys интересен инструмент графической трассировки значений переменных. С его помощью можно проводить отладку не только ПО, но и оборудования, причем без написания программы. Весьма удобно и наличие встроенной системы визуализации, функционирующей как в инструментальной среде, так и в ПЛК (имеющем дисплей) и Web. На практике, пользователи выполняют достаточно сложные проекты автоматизации в CoDeSys без необходимости приобретения SCADA:

Система исполнения CoDeSys может работать как поверх операционной системы, так и на "голом железе". Естественно во втором случае адаптация несколько сложнее, поскольку приходится писать собственный начальный загрузчик, системные тесты, обработчик таймера, т.е. типовую минимальную поддержку аппаратуры. Но на 8 и 16 разрядных платформах это дает существенный выигрыш по быстродействию и необходимым ресурсам. Всего существует 4 разновидности систем исполнения CoDeSys: CSP8, CSP16, CSP32E и CSP32F. Они предназначены для 8-и, 16-и, 32-х разрядных процессоров без ОС, соответственно. Система CSP32F ориентирована на 32х разрядные платформы с ОС РВ. Она опирается на механизмы вытесняющей многозадачности ОС, первые 3 включают собственный монитор многозадачности (без вытеснения). Пользователь может создавать многозадачные проекты даже в ПЛК, построенном на 8051.

В настоящее время CoDeSys поддерживает семейства: Intel 8051, Intel 80x86 / 80186/ Pentium, семейство ARM, MIPS, Motorola MC68000 / MC68332/ ColdFire, PowerPC, Hitachi SH 2/3/4, H8, Infineon C16x, Infineon TriCore и Texas Instruments TMS32028x.

Особняком стоит система исполнения CoDeSys SP RTE для Windows XP/NT/2000. Она включает собственное ядро жесткого реального времени, функционирующее под Windows. Эта система не требует адаптации. Связь с оборудованием происходит через драйверы. SDK включен в комплект поставки.

Все это может показаться сложным. Но конечный пользователь всегда получает ПЛК, оснащенный готовой и настроенной системой программирования. Ему необходимо только установить на своем компьютере среду программирования CoDeSys и так называемые файлы поддержки целевой платформы (TSP). Благодаря которым CoDeSys получает информацию о типе процессора, распределении памяти, наименованиях и конфигурации модулей ввода-вывода, сети и т.д. Причем все основные настройки уже заданы изготовителем. То есть задача пользователя просто выбрать нужный ПЛК в списке. TSP может включать описания поддерживаемых в системе модулей, таким образом, пользователь получает возможность конфигурирования модульных систем, включая распределенные. Специфичные для оборудования файлы справочной системы также интегрируются в CoDeSys. В итоге пользователь работает в среде программирования так, как будто она специально написана для используемого им ПЛК:

Среда программирования CoDeSys поставляется бесплатно. Предметом лицензирования является только система исполнения. Но это опять же проблема изготовителя. Как правило, OEM приобретает лицензии оптом, также как и комплектацию для сборки аппаратуры. Пользователь же получает готовый комплекс программирования в одной коробке с ПЛК. Он не должен ни чего докупать, лицензировать, возиться с аппаратными ключами, счетчиками установок и др. Без всяких ограничений он может загрузить с сайта 3S новейшую версию CoDeSys и использовать ее на любом числе компьютеров. В отличие от конкурирующих систем программирования, бизнес модель 3S полностью ориентирована на удобство применения именно конечным пользователем.

Обобщив сказанное, выделим основные моменты, делающие CoDeSys привлекательным для изготовителей ПЛК.

  • Среда программирования поставляется бесплатно (включая DDE, OPC). Ее можно расширять и поставлять как собственный продукт.
  • Бизнес модель 3S ориентирована на конечного пользователя. Он имеет дело только с поставщиком контроллеров, не должен ничего покупать у 3S. Актуальные обновления CoDeSys всегда доступны бесплатно.
  • Поддержка CoDeSys означает совместимость вашего оборудования с большим числом новейших ПЛК высшего класса. Участие в CoDeSys Automation Alliance открывает вашей продукции доступ на Европейский рынок.

Технические преимущества:

  • Рекордное быстродействие прикладных МЭК программам. Встроенный компилятор непосредственно формирует машинный код для целевого микропроцессора. Пользователь может писать даже обработчики аппаратных прерываний на МЭК языках (если это разрешено изготовителем ПЛК) и синхронизировать параллельные процессы с микросекундной точностью.
  • Для создания библиотек быстрых функций не обязательно использовать внешние средства (C компилятор). Как результат переносимость и нормальная работа в режиме эмуляции.
  • Возможность включения собственных программных расширений наравне со стандартными, включая встроенную систему подсказки.
  • Доступны исходные тексты системы исполнения.
  • Полная и даже расширенная реализация стандарта МЭК 61131-3.
  • Упрощенный SFC, CFC.
  • Интегрированные средства эмуляции и визуального моделирования.
  • Встроенные конфигураторы модульных систем и распределенных fieldbus систем (CANopen, DeviceNet, Profibus и др.).
  • 3 механизма создания распределенных приложений: высокоуровневое связывание переменных (network variables), объектная master - slave модель (аналогично PDO в CANopen), библиотеки нестандартных сетей или распределенный ввод/вывод (реализуется изготовителем ПЛК).
  • Встроенная, целевая и web визуализация.
  • Ряд дополнительных возможностей (библиотеки CANopen, Modbus, система управления версиями ENI. SoftMotion).
  • CoDeSys заслуженно называют стандартом реализации и развития МЭК инструментов программирования. Концепт-версия 3.0 включает более 100 оригинальных новшеств, включая революционные (ООП, контроль версий компонентов, программирование безопасных систем и др.). Подробнее см. текст презентации И.В. Петров «Перспективы развития языков МЭК 61131-3 в новом поколении комплекса CoDeSys».
И.В. Петров, ПК "Пролог" из выступления на конференции “ПРОМЫШЛЕННЫЕ КОНТРОЛЛЕРЫ: от А до Я” Москва, ДК МАИ 1 ноября 2005г.