Программный комплекс 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 привлекательным для изготовителей ПЛК.
Технические преимущества: