Codesys что это. CoDeSys: мощный инструмент программирования ПЛК

Что такое CoDeSys и для чего он используется. Какие возможности предоставляет CoDeSys для программирования ПЛК. Какие компоненты входят в состав CoDeSys. Чем CoDeSys отличается от других средств программирования ПЛК.

Содержание

Что такое CoDeSys и его основное назначение

CoDeSys (Controller Development System) — это мощный программный комплекс для разработки приложений для программируемых логических контроллеров (ПЛК). Он является самым популярным в мире аппаратно-независимым инструментом для программирования ПЛК и встраиваемых контроллеров.

Основные особенности CoDeSys:

  • Поддержка всех 5 языков стандарта МЭК 61131-3 для программирования ПЛК
  • Независимость от аппаратной платформы — подходит для контроллеров разных производителей
  • Мощная среда разработки с удобными инструментами отладки
  • Генерация эффективного машинного кода для различных процессорных архитектур
  • Обширные библиотеки готовых компонентов и функций

CoDeSys позволяет создавать сложные системы автоматизации на базе ПЛК быстро и эффективно. Он используется в самых разных отраслях промышленности — от автомобилестроения до нефтегазовой отрасли.


Ключевые возможности CoDeSys для программирования ПЛК

CoDeSys предоставляет разработчикам следующие важные возможности:

  • Программирование на языках стандарта МЭК 61131-3: IL, ST, LD, FBD, SFC
  • Объектно-ориентированное программирование
  • Мощные средства отладки, включая режим онлайн отладки
  • Встроенная система визуализации для создания HMI
  • Поддержка технологии SoftMotion для управления движением
  • Средства для обеспечения функциональной безопасности (Safety)
  • Инструменты для работы с распределенными системами управления

Благодаря этим возможностям CoDeSys позволяет создавать как простые, так и сложные системы автоматизации с минимальными затратами времени.

Основные компоненты комплекса CoDeSys

В состав CoDeSys входят следующие ключевые компоненты:

  1. Среда программирования — основной инструмент разработчика с редакторами языков, отладчиком и др.
  2. Система исполнения (runtime) — устанавливается в контроллер для выполнения созданных программ
  3. Конфигураторы оборудования и сетей
  4. Система визуализации для создания человеко-машинного интерфейса
  5. Инструменты для работы с движением (SoftMotion)
  6. Средства обеспечения функциональной безопасности
  7. Инструменты для создания распределенных систем

Такой набор компонентов позволяет комплексно решать задачи промышленной автоматизации на базе ПЛК.


Преимущества CoDeSys перед другими средствами программирования ПЛК

CoDeSys имеет ряд важных преимуществ по сравнению с другими инструментами для ПЛК:

  • Независимость от аппаратной платформы — работает с контроллерами разных производителей
  • Полная поддержка стандарта МЭК 61131-3
  • Широкие возможности по созданию распределенных систем управления
  • Мощные средства визуализации и человеко-машинного интерфейса
  • Инструменты для программирования систем управления движением
  • Встроенные средства обеспечения функциональной безопасности
  • Генерация эффективного машинного кода для разных процессоров

Эти преимущества делают CoDeSys одним из лучших инструментов для современной промышленной автоматизации на базе ПЛК.

Применение CoDeSys в различных отраслях промышленности

CoDeSys нашел широкое применение в самых разных отраслях:

  • Машиностроение и робототехника
  • Автомобильная промышленность
  • Нефтегазовая отрасль
  • Энергетика
  • Пищевая промышленность
  • Фармацевтика
  • Судостроение
  • Металлургия

Универсальность CoDeSys позволяет использовать его для автоматизации как дискретных, так и непрерывных технологических процессов. Он одинаково эффективен как для небольших локальных систем, так и для крупных распределенных комплексов.


Поддержка стандарта МЭК 61131-3 в CoDeSys

CoDeSys полностью поддерживает стандарт МЭК 61131-3, предоставляя разработчикам следующие языки программирования ПЛК:

  • IL (Instruction List) — ассемблероподобный язык
  • ST (Structured Text) — паскалеподобный язык
  • LD (Ladder Diagram) — язык релейно-контактных схем
  • FBD (Function Block Diagram) — язык функциональных блоков
  • SFC (Sequential Function Chart) — язык последовательных функциональных схем

Это позволяет разработчикам выбирать наиболее подходящий язык для конкретной задачи. Кроме того, CoDeSys поддерживает объектно-ориентированное программирование, что расширяет возможности стандартных языков МЭК.

Система визуализации в CoDeSys

CoDeSys включает мощную встроенную систему визуализации, которая позволяет создавать человеко-машинный интерфейс (HMI) без использования сторонних инструментов. Основные возможности системы визуализации:

  • Создание многоуровневых графических экранов
  • Широкий набор готовых графических элементов
  • Анимация объектов
  • Тренды реального времени и исторические
  • Система сообщений и тревог
  • Разграничение прав доступа

Система визуализации тесно интегрирована со средой разработки, что упрощает создание HMI и его привязку к программе ПЛК. Это позволяет быстро разрабатывать комплексные решения по автоматизации.


Заключение

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


CoDeSys – повседневный инструмент программиста ПЛК | Издательский Дом «ИнфоАвтоматизация»

Представлены архитектура, основные особенности и возможности многофункционального программного комплекса, предназначенного для решения задач промышленной автоматизации, CoDeSys V3, названы наиболее важные и новые его компоненты.

На сегодняшний день CoDeSys (Controller Development System) — это самый популярный в мире аппаратно независимый комплекс для прикладного программирования ПЛК и встраиваемых контроллеров. Основным его компонентом является среда программирования на языках стандарта МЭК 61131-3. Комплекс работает на компьютере. Программы компилируются в машинный код и загружаются в контроллер. Любую задачу, которая имеет решение в виде программы, можно реализовать в CoDeSys.

Назначение и области применения CoDeSys

Изначально CoDeSys был нацелен на задачи, требующие автономности, надежности и предельного быстродействия при минимизации аппаратных средств. Благодаря этому он вышел далеко за рамки традиционных для МЭК 61131-3 систем ПЛК. Сегодня автомобили, краны, экскаваторы, самосвалы, яхты, печатные машины, деревообрабатывающие станки, литейные и прокатные машины, сборочные автоматы крупнейших мировых брендов включают один или группу встроенных контроллеров с CoDeSys. Компанией ITQ GmbH в 2011 г. было проведено исследование характеристик и распространенности программных инструментов в областях машиностроения и мобильных применений в Европе [1]. По его результатам, CoDeSys и инструменты на его базе (Bosh Rexroth IndraWorks, Beckhoff TwinCAT и др) используют 36% компаний. Конкурирующие с CoDeSys универсальные инструменты совместно составили 7%.

На сегодняшний день CoDeSys успешно применяется во всех без исключения областях промышленности. В мире более 350 компаний, изготавливают контроллеры с CoDeSys в качестве штатного инструмента программирования. За 2011 г. продано 500 тыс. лицензий на различные устройства с CoDeSys. Все конкурирующие системы отстают в разы, что позволяет доказательно говорить о мировом лидерстве.

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

Среда программирования — это та часть, с которой непосредственно имеет дело пользователь (рис.1). Она функционирует на ПК и является основным компонентом комплекса. Она включает редакторы для девяти языков программирования ПЛК, в том числе стандартные языки МЭК 61131-3. Пользователь может выбрать один из них и программировать простыми средствами либо задействовать всю мощь новейших инструментов CoDeSys. На выходе CoDeSys непосредственно дает быстрый машинный код. Поддержаны все распространенные семейства микропроцессоров от 16 до 64-разрядных.

Рис. 1. Редактирование FBD диаграммы в CoDeSys

Среда программирования CoDeSys включает набор инструментов для подготовки и отладки программ, компиляторы, конфигураторы, редакторы визуализации и т.д. При необходимости функциональность системы дополняется опциональными компонентами. Проект CoDeSys можно хранить не только на диске ПК, но и в контроллере, если он имеет достаточный объем памяти, что позволяет избежать потери исходных текстов или путаницы в проектах. Для больших проектов предусмотрено использование системы контроля версий (SVN).

Для отладки пользователю не нужно открывать специальных отладочных окон или составлять каких-либо списков переменных. При подключении к ПЛК редакторы ввода программ «оживают». Непосредственно в них отображаются значения всех видимых на экране переменных. Причем в сложных выражениях видны все промежуточные результаты.

В CoDeSys V3 впервые в мире была реализована поддержка объектно-ориентированного программирования (ООП) в языках стандарта МЭК 61131-3. Разработка концепции была начата в 2005 г. [2]. Введен ряд новых ключевых слов для определения методов, свойств, интерфейсов и наследования, позволивших эволюционно развить в объект привычный функциональный блок. Пользователь может по своему усмотрению писать программы привычным образом или использовать объекты. Такой подход не создает лишних проблем «старым» прикладным программистам. В тоже время молодые специалисты, изучившие ООП в вузе и уже не представляющие себе серьезную работу без данной технологии, смогут реализовать свой потенциал. Предложенные расширения ООП прошли проверку временем в CoDeSys, получили широкое одобрение и будут включены в стандарт.

Из новшеств CoDeSys, добавленных за последний год, следует отметить странично-ориентированный FBD и поддержку языка Python для автоматизации работы в среде программирования. Обычно для таких целей используются пакетные файлы. Они удобны для примитивных задач, но не позволяют выполнять разные действия по условиям, разобрать XML файл, обработать результаты и отправить их по электронной почте. Использование Python снимает все мыслимые ограничения.
CoDeSys включает конфигураторы ввода/вывода с поддержкой полевых сетей Modbus, PROFIBUS, PROFINET, DeviceNet, CANopen, J1939, EtherCAT, SERCOS III, Ethernet IP и большое число сервисных модулей.

CoDeSys поставляется бесплатно. С сайта 3S-Smart Software Solutions доступен для загрузки полнофункциональный дистрибутив. В него входит интерфейс и интерактивная документация на русском языке.

CoDeSys Automation Platform

В CoDeSys V3 впервые в мире реализована сквозная платформа автоматизации. Не только система исполнения собирается из компонентов с фиксированными интерфейсами, но и среда программирования. Она основана на технологии Microsoft .NET. Automation Platform позволяет разобрать CoDeSys на отдельные компоненты и собрать требуемым образом, добавив собственные компоненты. Это позволяет изготовителям ПЛК прозрачно интегрировать собственные программные инструменты и технологию CoDeSys.

Типовые области применения CoDeSys Automation Platform:

расширение функциональности CoDeSys: возможность добавления в среду программирования нового редактора программ, инструмента конфигурирования специализированной полевой сети, автоматизация некоторых типовых операций (мастера) и др.;

замена составных компонентов (plug-in) CoDeSys: если штатный компонент среды программирования не удовлетворяет требованиям пользователей, то возможно заменить его, например, изменить форму отображения программ, вид окон и др.;

создание собственного программного комплекса на базе CoDeSys. Известными примерами могут служить системы SoMachine от Schneider Electric и TwinCAT 3 от Beckhoff.

Система исполнения CoDeSys Control

CoDeSys Control — это часть, которая должна быть встроена ПЛК. Нередко возникает вопрос: «Если CoDeSys даёт на выходе машинный код, то зачем вообще нужна система исполнения?» Ответ кроется в стержневой идее технологии ПЛК. Программируя ПЛК, пользователь должен думать исключительно о сути прикладной задачи. Его не должны волновать организация памяти, процедуры опроса модулей ввода/вывода, способы синхронизации данных, функции сетевого обмена и связи с верхним уровнем, вызовы циклических и событийных задач, организация фиксации выходов при отладке на оборудовании и т. п. Так, для получения значения входа в своей программе, прикладной программист ПЛК выбирает переменную и задает в диалоговом окне единицы измерения, параметры фильтрации и другие параметры. Всю черновую работу за него должна выполнить система исполнения. Если программисту приходится думать о передаче байтов или вызове библиотечных функций для работы с вводом/выводом, то это не ПЛК? и говорить об удобстве и надежности прикладного программирования не приходится.

В общей сложности CoDeSys Control включает более 200 компонентов. Каждая «сборка» под конкретную модель ПЛК будет отличаться. Ее состав определяется возможностями аппаратуры и типом ПЛК. Включение абсолютно всех компонентов, на всякий случай, привело бы к неоправданному росту аппаратных ресурсов и стоимости. Например, включение функции «горячей» правки кода без остановки ПЛК удваивает требования к ОЗУ. Некоторые компоненты представлены в нескольких вариантах. Например, компонент «менеджер задач». Самый дешевый ПЛК может иметь единственный аппаратный таймер, «тикающий» каждые 10 мс, и не иметь ОС. Для него подойдет простой планировщик циклических задач без вытеснения. С ним не смогут работать некоторые другие компоненты, например, ЧПУ или стек CANopen, но они и не требуются в ПЛК такого уровня. Для ПЛК с мощным 32- или 64-битным процессором и ОС РВ разумно включить наиболее совершенный «менеджер задач» с поддержкой событий, реального времени и нескольких приложений в одном устройстве. С каждым таким приложением можно работать как с независимым ПЛК: загружать, запускать, останавливать и отлаживать программы, не влияя на работу других приложений.

CoDeSys Control может функционировать под управлением любой ОС или даже без нее. Наиболее часто используют ОС VxWorks, Windows CE и Linux. Имеются адаптации под RT-OS32 (RTKernel), QNX, Nucleus, pSOS, OS9, TenAsys INtime. Изготовитель оборудования может самостоятельно адаптировать CoDeSys Control под другую ОС.

В некоторых случаях адаптация CoDeSys Control в свое оборудование может быть проблематична. Ограничением может стать отсутствие технических специалистов, соответствующего уровня или экономические условия. В таких случаях целесообразно использовать готовые процессорные модули (PLCcore) с уже адаптированным и установленным CoDeSys Control. Популярным PLCcore для CoDeSys является Beck IPC@CHIP.

CoDeSys Control непрерывно развивается. Добавляются принципиально новые компоненты, совершенствуются и «мелкие детали». Например, для современных быстрых ПЛК c CoDeSys пришлось вводить новый тип данных для работы с наносекундными интервалами времени. Обычному пользователю CoDeSys не нужно заботиться об устройстве системы исполнения. Ему достаточно только периодически загружать и устанавливать бесплатные обновления в соответствии с рекомендациями изготовителя ПЛК.

SoftPLC CoDeSys SP RTE

CoDeSys SP RTE представляет собой специальную систему исполнения для ОС семейства Windows со встроенным ядром жесткого реального времени. Она позволяет превратить обычный компьютер в быстродействующий ПЛК. Ввод/вывод подключается через полевые сети. SP RTE обеспечивает стабильность рабочего цикла МЭК программ в диапазоне микросекунд и работу контроллера при зависании ОС.

CoDeSys визуализация

Среда CoDeSys оснащена встроенной системой визуализации и операторского управления. Непосредственно в CoDeSys можно построить графический интерфейс оператора или модели объекта, без использования внешних инструментов. Для интеграции с программой достаточно прописать в свойствах элементов соответствующие переменные. Не требуется создавать символьные файлы, настраивать связь или выполнять иные рутинные операции. Если работает CoDeSys, то работают и средства визуализации.

CoDeSys HMI часто называют SCADA-системой. Это не верно. Она не имеет столь мощных графических средств, не использует OPC, не имеет средств ведения суточных архивов и интеграции с БД, а также функций программирования. Но она обеспечивает управление в реальном времени и на порядок менее требователена к ресурсам. Весь интеллект системы сосредоточен в ПЛК, а HMI выполняет роль тонкого клиента отображения. Ее типичные применения — это встроенные пульты управления станками, погрузчиками, кранами, трамваями и подобными системами, где нужна быстрая гарантированная реакция и стоимость оборудования критична.
Сервер данных (Data Server) позволяет собирать данные от нескольких контроллеров. При этом не обязательно, чтобы все они программировались в CoDeSys. Сервер данных является частью системы исполнения.

Визуализация CoDeSys может параллельно работать на нескольких устройствах:

CoDeSys WebVisu позволяет контролировать работу своей системы из любого места и в любое время через Internet. Web-сервер является компонентом системы исполнения.

CoDeSys HMI — это отдельная утилита, предназначенная для операторского управления с отдельного компьютера локальной сети.

CoDeSys TargetVisu — интегрированный компонент системы исполнения, предназначенный для создания панельных ПЛК. Применяется в локальных пультах управления.

Из последних новшеств визуализации CoDeSys выделяется пакет библиотек элементов визуализации для различных прикладных областей с современным графическим представлением [См. рис 2.]. Наиболее впечатляющим элементом можно назвать 3D редактор движений для SoftMotion.

Рис.2. Визуализация панели автомобиля

CoDeSys SoftMotion

CoDeSys SoftMotion — это встроенный в среду программирования и систему исполнения CoDeSys функциональный набор средств управления движением: от простых перемещений по одной оси до многоосевых ЧПУ. Поддерживается движение по лекалам (ECAM) и интерпретация программ в G-кодах (Рис.3). В среду программирования встроен текстовый и графический 3D редактор для задания траекторий и набор элементов визуализации стандартных узлов мехатроники. Установить SoftMotion можно на 32-битный ПЛК с математическим сопроцессором.

Рис. 3. G-код движения в CoDeSys и его визуальное представление

CoDeSys V3 Safety

Комплекс Safety ориентирован на обеспечение безопасности там, где присутствует человек. CoDeSys Safety представляет собой комплекс инструментов, который позволяет разрабатывать контроллеры, удовлетворяющие требованиям стандарта IEC 61508 для оборудования систем безопасности Safety Integrity Levels 3 (SIL3). Он включает безопасную систему исполнения, безопасный компилятор, конфигураторы безопасных сетей, библиотеки PLCopen Safety и набор документов, включающий методику тестирования и сертификации. Эта технология существенно сложнее обычных ПЛК систем. Так, например, до запуска кода выполняется целый ряд специальных проверок. После загрузки машинного кода в контроллер и создания загрузочного образа код скачивается обратно в среду разработки, производится его декомпиляция и сравнение с исходным текстом. Безопасные контроллеры уровня SIL3 должны проходить обязательную сертификацию. Это весьма сложный и дорогостоящий процесс. Применение CoDeSys Safety позволяет существенно упростить его.

Выше упоминалась технология PLCcore, позволяющая радикально упростить создание контроллеров с CoDeSys. Похожая идея воплощена и для безопасных контроллеров. Ее основой служит сертифицированный модуль TwinSafe EL6900 компании Beckhoff. Встроив это в устройство, имеющее поддержку CoDeSys и EtherCAT Master, получаем собственный SIL3 контроллер.

Для систем уровня SIL2 все гораздо проще. CoDeSys сертифицирована как надежная система, имеющая боле 1 млн. применений. Для SIL2 используются все стандартные редакторы МЭК языков, компактная система исполнения с определенным набором компонентов, сертифицированные библиотеки элементов и безопасный ввод/вывод.

CoDeSys redundancy

В противоположность безопасным (Safety), надежные системы (Redundancy) чаще необходимы в местах, куда человеку трудно добраться, либо там, где остановка работы оборудования недопустима по технологическим или финансовым критериям. Например, 5 мин простоя линии разгрузки крупного морского порта обходятся дороже стоимости всего электронного оборудования.

CoDeSys Redundancy представляет собой специальный плагин для среды программирования и набор компонентов системы исполнения, обеспечивающий синхронизацию, диагностику и переключение основного и дублирующего контроллеров.

CoDeSys Professional Developer Edition

CoDeSys Professional Developer Edition — новый продукт комплекса CoDeSys. Он ориентирован на растущую группу пользователей, имеющих высшее образование и опыт работы с современными профессиональными системами программирования на языках высокого уровня для компьютеров. Его область — создание крупных, либо новых уникальных проектов, не имеющих аналогов. Профессиональная редакция среды разработки CoDeSys включает следующие компоненты: систему управления версиями проекта на базе Subversion (SVN), графические редакторы UML (диаграммы классов, состояний и деятельности) и статический анализатор кода. Все эти компоненты устанавливаются и интегрируются в среду программирования. Система контроля версий необходима в больших проектах над которыми работает группа людей. При сохранении изменений в обычном файле проекта CoDeSys, они записываются поверх старой информации. Она теряется бесследно. При использовании SVN сохраняется вся история исправлений с указанием кто исправлял, когда и с какой целью. Если правка вызвала сбои, то всегда есть возможность вернуться к проверенной версии на любую дату. Кроме того, один проект могут открыть несколько людей со своих рабочих мест. Каждый человек может править параллельно ‘свои’ части. Контроль версий естественным образом интегрируется в среду программирования. Так, для всех языков программирования, включая графические предусмотрены визуальные средства сравнения версий.

Интеграция UML стала следующим логическим шагом после реализации в CoDeSys ООП. Диаграмма классов дает визуальное представление зависимостей функциональных блоков, методов и интерфейсов, которые теперь могут редактироваться графически. Диаграммы состояний и диаграммы активности представляют собой новые языки для разработки прикладных проектов. Они позволяют описывать состояния и переходы сложных процессов. Оба высокоуровневых языка призваны упростить совместную работу программистов и инженеров технологов, ускорить построение структуры приложения и собственно программирование.

Статический анализатор кода осуществляет проверку исходного кода МЭК программ на соблюдение более чем 50 адаптивных правил. Он выявляет потенциально опасные места, способные вызвать ошибки и устранить их сразу, еще до фазы отладки и тестирования проекта. Это улучшает качество кода, ускоряет работу и позволяет избежать ошибок с самого начала работы.

Комплект инструментов профессионального разработчика продолжает расширяться. В настоящее время в разработке находятся: профилировщик кода и генератор тестов.

CoDeSys Application Composer

CoDeSys Application Composer напротив, ориентирован не на сложные научные проекты, а на повседневные прикладные задачи. В них решающими являются время создания проекта, простота процесса программирования и надежность итогового кода. При выполнении работ по автоматизации однотипных объектов, например умных домов или типографских машин, Application Composer позволит повысить производительность труда на два порядка.

Составление прикладного проекта выполняется на основе заранее подготовленных наборов прикладных программных модулей. Такой модуль может обслуживать определенную часть машины или системы. Например, это может быть пневматический цилиндр, автооператор, терморегулятор, либо программный блок управления доступом или конфигуратор сети. Каждый модуль включает программный код, конфигурацию входов/выходов, параметры и графическое представление для визуализации. Пользователь строит структуру своей системы управления, используя необходимые модули. Он определяет их настройки и связи в специальных редакторах. Затем интегрированные генераторы кода автоматически создают законченное, хорошо структурированное программное приложение на языках стандарта МЭК61131-3. Одновременно генерируется соответствующая визуализация. Программы компилируются и загружаются в контроллер. Пользователь может просматривать и корректировать полученный код при необходимости.

Рис. 4. Проект управления перекладчиком в Application Composer

Такой подход позволяет перейти от рутинного программирования к модульному проектированию прикладных проектов. Он открывает двери пользователям, хорошо знающим устройство машин, технологию соответствующего производства, но не владеющих программированием.

Заключение

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

Разработчик CoDeSys — компания 3S-Smart Software Solutions GmbH (Германия) никогда не ставила приоритетной задачи «бюджетного внедрения» и распространения CoDeSys путем удешевленной либо упрощенной установки на любые типы контроллеров любых компаний. Для запуска CoDeSys Control достаточно 1 дня, но выпуск нового ПЛК с CoDeSys — это всегда серьезная работа, требующая грамотной организации, наличия квалифицированных специалистов и строгого выполнения ряда этапов, от сборки до выходного тестирования изделия в целом.

В мае 2012 г. в г. Смоленске проходила ежегодная конференция пользователей CoDeSys, на которой главный инженер Европейского отделения компании Hitachi господин Kenji Shimoda рассказал о переводе новых контролеров Hitachi с фирменного ПО на CoDeSys, занявшего немногим более 1 года. Это небольшой срок для разработки нового ПЛК с CoDeSys. Перевод включал собственно адаптацию, интеграцию с собственным ПО, тесты всего функционала на опытных ПЛК, написание руководства по применению и стартовых примеров, обучение дистрибьюторов. Типичный для некоторых конкурирующих МЭК систем подход ускоренной бюджетной установки с переносом части затрат и технических сложностей на плечи пользователей в CoDeSys принципиально не применим. Вы не встретите CoDeSys в ПЛК, собранных «на коленке». Это всегда будут продукты компаний, твердо стоящих на ногах и имеющих достаточно ресурсов на грамотный маркетинг, качественную разработку и сопровождение.

Простота и удобство именно для конечного пользователя — это стержневая идея CoDeSys. Компания 3S-Smart Software Solutions с немецкой целеустремленностью придерживается ее многие годы. Состав компонентов CoDeSys измеряется уже сотнями и продолжает расти. Но, каждый новый компонент нацелен на упрощение решения нового круга прикладных задач. Своим непрерывным развитием и огромной популярностью CoDeSys обязан исключительно конечным пользователям.

Литература

1. Jorn Linke. Der SPS-Benchmark: Das Ergebnis. Computer Automation. 2011. 9.

2. Дитер Хесс. Объектно-ориентированные расширения МЭК 61131-3 // Современные технологии автоматизации. 2006. №2.

Петров Игорь Викторович — директор ООО «ПК Пролог».

Контактный телефон (481-2) 38-29-31.

www.prolog-plc.ru

Блог об АСУ ТП и КИПиА. Блоки CoDeSys

Вечерком по заказу разработал простой блок для автоматического перехода между тремя насосами по таймеру и авариям. Также я снабдил его функцией принудительного перехода, функцией выбора первого насоса и возможностью после пропадания питания начинать работу с последнего насоса и того времени, на котором остановился таймер. Блок не содержит энергонезависимых переменных (т.е. сам не является энергонезависимым), поэтому переключение между насосами происходит не по наименьшей наработке, а просто через равные промежутки времени.
Блок подходит для управления как тремя, так и двумя насосами, а также максимально просто расширяется до любого необходимого числа насосов, т.к. сам алгоритм переключения привязан не к конкретному числу, а к переменной N.
При возникновении аварии насос блокируется до принудительного сброса аварии. 

Входы:
EN (BOOL) — запуск управлением насосами. По умолчанию = TRUE.
SW (BOOL) — принудительное переключение на следующий насос. Происходит по фронту сигнала.
PT (TIME) — период переключения насосов.
ET0 (TIME) — начальное время счета таймера. Необходимо для реализации энергонезависимого таймера.
MAIN (BYTE) — номер запускаемого после включения ПЛК насоса. По умолчанию = 1. Также может служить для энергонезависимой работы. 
ALx (BOOL) — аварийный сигнал с насоса №x. Стоит таймер с задержкой активации в 0,5 секунды.
RSx (BOOL) — сигнал сброса аварии с насоса №x.

Выходы:
Px (BOOL) — запуск насоса №x.
ERRx (BOOL) — насос №x в аварийном состоянии. Либо имеется текущая авария, либо не сброшена старая.
CUR (BYTE) — номер текущего работающего насоса. Может использоваться для организации энергонезависимой работы.
ET (TIME) — отсчитанное на текущий момент таймером время.

Применения: энергонезависимая работа
Всё необходимое для такой работы реализовано в алгоритме. Для работы необходимо лишь задать пару RETAIN-переменных, либо в программе, где объявлен функциональный блок «PUMPS» (например в PLC_PRG), либо в области глобальных переменных, либо даже в области конфигурации Modbus (Slave). Это переменные i (номер текущего насоса) и et0 (время отсчитанное таймером):

Их необходимо привязать ко входам MAIN и ET0, и выходам CUR и ET соответственно (см. скриншот в начале поста). Таким образом, во время работы блока каждый цикл в наши энергонезависимые переменные будут записываться актуальные значения, и они сохраняться даже после пропадания питания. А в момент подачи питания в самом первом цикле они будут считаны функциональным блоком и работа возобновиться с работающего на момент сброса питания насоса и таймер будет считать с того же места, на котором остановился.

Применения: два насоса
Для работы только с двумя насосами необходимо просто-напросто оставить вход AL3 пустым. Функциональный блок при этом будет «думать», что третий насос находится всё время в аварии.

Применения: у меня не три, а N насосов
Для изменения числа насосов необходимо:
  •  добавить нужное количество входов и выходов ALRSи ERR,
  • заменить в области объявления цифру «3» на нужное число,
  • добавить строчек в действия INPUT и OUTPUT функционального блока.
Заключение и исходный код
Также, если в работе останется только один насос (два других в аварии), то таймер прекратит отсчет и сбросится, но автоматически начнет отсчет после сброса аварии одного из насосов. Если нужно будет запустить выведенный из аварии насос — подайте TRUE на вход switch.

Исходный код функционального блока написан на ST, довольно прост и занимает меньше 30 строк. В программе для автоматизированных тепловых пунктов используются гораздо более сложные алгоритмы, в частности с управлением частотными преобразователями по интерфейсу RS-485.

Прикладываю простенькую программу с использованием блока и сам блок в виде экспортированного файла:
PUMPS.PRO
PUMPS.EXP

Программирование ПЛК ОВЕН. Языки МЭК61131-3. Среда CoDeSys. Основы. Alex IA. Видеокурс. 2017

Проект, переменные, навигация

Интерфейс программы Codesys 2.3. Создание проекта. Типы переменных.

Инструменты CFC, операторы, макросы

Панель инструментов языка CFC. Основные операторы. Создание макроса.

Блоки стандартной библиотеки standart.lib

Разбираем блоки из стандартной библиотеки standart.lib.

Преобразование типов данных

Способы преобразования типов данных. Отличия явного и неявного преобразований.

Программа управления светом и визуализация

Простая программа управления освещением на 9 действий с визуализацией в CodeSys.

Назначение входов и выходов. Массивы

Назначение входов и выходов ПЛК и ошибки связанные с этим. Тип данных массив.

Блок плавного разгона и остановки двигателя

Создаем блок плавного разгона и плавной остановки для двигателя.

Библиотеки. Util.lib. Пользовательская

Понятие — библиотека. Cтандартная библиотека util. Собствтенные библиотеки. Подключение и удаление библиотек.

Перенос проекта. ПЛК150.А-М. БУСТ2

Перенос проекта из одного файла в другой. Обзор ПЛК150.А-М. Модификация управления БУСТ2.

Энергонезависимые переменная и память

Энергонезависимая переменная. Изменение кол-ва э/н памяти. Аккумулятор ПЛК.

Язык ST. Оператор IF. Код на CFC в ST

Язык ST. Оператор IF. Блок наработки времени написанный на CFC переводим в ST.

Библиотека Syslibtime. Дата, время

Библиотека Syslibtime. Учимся брать дату и время и задавать новые значения.

Время. Блок записи данных. Массив архива

Системное время. Бок записи данных и массив архива. Блок наработки часов в блок фиксации длительности сигнала.

Время. STRING. Библиотека SysLibFile

Cтроковые переменные STRING. Библиотека создания архивных данных SysLibFile.

Библиотека для строковых переменных

Библиотека для работы со строковыми переменными. Объединение переменных STRING. Запись данных в архив.

OPC сервер. SCADA система

Соединение с OPC сервером и SCADA. Конфигурирование OPC. Пример в SCADA системе.

Глобальные переменные. Суммирование на ST

Понятие «Глобальные переменные». Пишем простую программу суммирования на ST.

Описание курса: Возможности среды CoDeSys. Языки программирования ПЛК. Библиотеки. Типы данных, операторы. Примеры.

Пойду-ка я поучусь ( CODESYS 3.5)

CODESYS 3.5

В том, что моих знаний не хватает, я во очередной раз убедился несколько дней назад, когда программировал сценарии для магазина, продающего автоматизацию дома. Простые сценарии делаю легко, а вот сложные (для меня сложные),  многоходовые, с этим плохо, очень. Вот к примеру, хотел я создать два демонстрационных сценария, первый попроще, второй достаточно сложный:

  1. При открывании входной двери в первый раз за день, и при срабатывании геркона, после ввода пароля в систему охранной сигнализации, система должна включить стартовое освещение и поприветствовать хозяина. Что-то типа «Здравствуй, хозяин. Я к твоим услугам. Что бы ты хотел?», естественно приятным женским голосом 🙂 И после голосовой команды, например: «включи освещение витрины с Овеном» система должна это сделать. И быть все время в ожидании исполнить следующую команду, например: включи вентиляцию (по этой команде должен включиться Тион О2 и открыться клапан естественной вытяжки.
  2. При подаче команды «Дискотека» (допустим радиоканальным выключателем), система должна оценить состояние нагрева дымогенератора. Если дымогенератор не готов к работе (не нагрет), оповестить пользователя, что начат нагрев и надо на это, например, 3 минуты. Можно раз в минуту сообщать, что осталась еще, например, минута. Если и когда дымогенератор готов, то оценить освещенность помещения, при необходимости опустить шторы, выпустить «дым» из дымогенератора и выпускать с периодичностью, например, 30 сек.,  поставить вентиляцию на минимум, включить музыку и световое лазерное оборудование, проиграть композицию, затем выключить музыку, открыть шторы, при необходимости включить свет, включить вентиляцию на полную мощность и очистить помещение от дымов.

В общем ничего у меня с моими скудными познаниями не получилось. Не смог ничего запрограммировать. Поэтому, помятуя выражение «высшее образование не дает знаний, оно дает умение найти необходимую информацию, изучить ее и воспользоваться», я недолго думая иду на обучение програмированию ПЛК в среде CODESYS 3.5.

Что такое ПЛК? Программи́руемый логи́ческий контро́ллер (сокр. ПЛК; англ. programmable logic controller, сокр. PLC; более точный перевод на русский — контроллер с программируемой логикой), программируемый контроллер — электронная составляющая промышленного контроллера, специализированного (компьютеризированного) устройства, используемого для автоматизации технологических процессов. В качестве основного режима работы ПЛК выступает его длительное автономное использование, зачастую в неблагоприятных условиях окружающей среды, без серьёзного обслуживания и практически без вмешательства человека.

Что такое CoDeSys? На сегодняшний день CoDeSys (Controller Development System) — это самый популярный в мире аппаратно независимый комплекс для прикладного программирования ПЛК и встраиваемых контроллеров. Основным его компонентом является среда программирования на языках стандарта МЭК 61131-3. Комплекс работает на компьютере. Программы компилируются в машинный код и загружаются в контроллер. Любую задачу, которая имеет решение в виде программы, можно реализовать в CoDeSys.

Что такое CODESYS 3.5? Если упрощенно, то это язык программирования с визуализацией. Визуализаций как для программиста, так и для пользователя, через сенсорные ПЛК (читай панели) ОВЕН.

ПЛК (программируемые логические контроллеры) Овен вполне себе приличное оборудование, да еще и нашего производства. Поэтому я все чаще применяю именно их, но знания необходимо очень сильно подтянуть.

Настройка обмена по протоколу Modbus в CODESY…

Среда программирования CODESYS v3.5

Компания 3S-Smart Software Solutions GmbH выпустила новую версию среды программирования CODESYS v3, построенную по концептуально новому принципу: разработчики взяли за основу объектно-ориентированное программирование (ООП). В третьей версии появилась возможность создания программ процедурным методом либо на принципах стандартного ООП. Языки программирования дополнены новыми типами.

Третья версия создана в новом дизайне. Используется новый метод построения конфигурации контроллера, введена версионность библиотек, Target-файлов и других компонентов. Эти возможности обеспечиваются репозиторием устройств и библиотек.

Обновлена визуализация: добавлено множество компонентов, таких как таблицы, списки, тексты с поддержкой форматирования. Появилась возможность использования различных стилей визуализации с применением собственных методов заливки с градиентами. Введена поддержка векторной графики в формате SVG.

Создание нового проекта в среде CODESYS v3.5

В первую очередь обращаем внимание на особенности создания нового проекта. Для этих целей в среде CODESYS v2.3 использовалась вкладка Конфигурация ПЛК, в CODESYS v3.5 настройка осуществляется на вкладке Устройства (в английской версии соответственно Devices).

Контроллер, интерфейс, протокол, модуль с точки зрения CODESYS v3.5 являются программными устройствами (Devices). Любое устройство, созданное в CODESYS v3.5, имеет конкретную версию. При добавлении в проект устройств CODESYS по умолчанию использует самую старшую версию. ВЕРСИИ УСТРОЙСТВ, ИСПОЛЬЗУЮЩИЕСЯ В ПРОЕКТЕ, ДОЛЖНЫ СТРОГО СООТВЕТСТВОВАТЬ ВЕРСИИ TARGETФАЙЛА КОНТРОЛЛЕРА ИЛИ БЫТЬ МЛАДШЕ.

Рис. 1. Последовательность настройки интерфейсов

Если это условие не выполнено хотя бы для одного устройства, то возникают множественные ошибки компиляции.

Далее будет подробно рассмотрено, каким образом выбираются версии устройства и Target-файла.

Среда программирования CODESYS v3.5 и Target-файлы находятся на сайте: http://www.owen.ru/catalog/25605006 в свободном доступе.

 

Режимы работы в CODESYS v3.5 по протоколу Modbus

Если сравнивать режимы, которые реализованы в CODESYS v2.3 и v3.5, то в новой версии имеется ряд ограничений, которые ввела компания 3S Software. CODESYS v3.5 поддерживает режимы Modbus Master RTU/TCP и Slave RTU/ TCP, но не поддерживает Modbus ASCII. Режим ASCII реализован в библиотеке Modbus ОВЕН.

Поддерживаемые скорости обмена в CODESYS v3.5:

  • 4800
  • 9600
  • 19200
  • 38400
  • 57600
  • 115200

Не поддерживаемые скорости обмена[1] в CODESYS v3.5:

Нумерация портов в CODESYS v3.5

При настройке интерфейсов RS-232/485 необходимо указывать номера портов. Номер порта в CODESYS v3.5 не соответствует номеру, указанному на корпусе прибора. Соотношение номеров портов на корпусе и в CODESYS v3.5 находятся в руководстве по эксплуатации, входящем в комплект поставки оборудования. В табл. 1 приведены номера портов для панельных контроллеров серии СПК.

Номер порта на корпусе прибора

Нумерация портов в среде программирования CODESYS

СПК105[2]

СПК107

СПК110

СПК207

СПК210

COM1

2 (RS-232)

3 (RS-485)

2

COM2

 

3

COM3

4

 

Общая методика конфигурирования интерфейсов в CODESYS v3.5

Контроллеры ОВЕН оснащены универсальными интерфейсами RS-232/485. Настройка интерфейсов в CODESYS v3.5 имеет строго определенную последовательность (рис. 1).

Во-первых, необходимо выбрать интерфейс (232 или 485) и установить режим работы порта – Master или Slave. Если порт настраивается для режима Slave, то достаточно указать перечень регистров, которые будут участвовать в обмене; если в режиме Master, то необходимо описать опрашиваемые устройства и указать регистры каждого из них.

Настройка интерфейсов

Для добавления в проект интерфейса необходимо перейти на вкладку Устройства (рис. 2). В дереве объектов выбрать настраиваемый контроллер, например, СПК107 с Target-файлом 3.5.2.0. Правой кнопкой выбрать пункт и в открывшемся меню – пункт Добавить устройство (рис. 2).

Откроется диалоговое окно (рис. 3) с перечнем устройств, поддерживаемых CODESYS. Чтобы выбрать необходимую версию устройства, нужно выставить флаг на пункте . Для добавления COM-порта нужно нажать на «+» возле пункта Modbus. В меню (рис. 4) следует выделить пункт (версия 3.4.0.0 меньше версии Target-файла 3.5.2.0) и добавить устройство, в данном случае – Modbus COM. Дерево объектов имеет вид, показанный на рис. 5.

Зададим настройки COM-порта. Если дважды нажать на , откроются его настройки (рис. 5). На вкладке Конфигурация последовательного порта Modbus следует указать номер порта, скорость передачи данных и другие параметры. Для контроллеров серии СПК2хх обмен можно реализовать через Ethernet. Он добавляется аналогично COM-порту: выбирается устройство , в открывшемся меню из списка Ethernet-адаптер добавляется устройство Ethernet (рис. 6). В контроллерах СПК207-03-CS-WEB использовался Target-файл версии 3.5.0.40. Вкладка порта Ethernet не имеет активных настроек, так как используются системные настройки.

Настройка мастера сети

После добавления интерфейсов необходимо установить режимы работы устройств (Master или Slave). Настройка режимов Modbus Master или Modbus Slave для разных интерфейсов практически одинакова. Сначала следует выбрать соответствующий интерфейс (например, Ethernet, рис. 7), правой кнопкой мыши вызвать окно Добавить устройство.

Диалоговое окно порта Ethernet показано на рис. 8. Диалоговое окно COM-порта показано на рис. 9. В зависимости от выбранного порта настраивается режим мастера сети. В данном примере используется ОВЕН СПК207 версии 3.5.0.40, поэтому версию мастера для COM-порта и Ethernet можно выбрать 3.4.3.х или 3.5.0.0.

Для порта Ethernet:

 

Для порта COM:

 

После добавления режима Master (RTU, TCP) необходимо его настроить. Для этого в дереве объектов нужно дважды выбрать добавленного мастера. Откроется окно настроек, где необходимо открыть вкладку . На рис. 10 показаны настройки для Ethernet: Таймаут ответа – время ожидания мастером ответа от Slave-устройства. Если за установленное время Slave не отвечает, Master начинает опрос следующего Slave-модуля. Выбранное значение (1000, рис. 10) будет по умолчанию использоваться для всех Slave-устройств. Для каждого модуля можно задавать свое время ожидания на вкладке Конфигурация Slave. Таймаут сокета – максимальное время ожидания мастером входящих пакетов TCP/IP.

Настройка для COM-порта аналогична Ethernet, только вместо таймаут сокета используется параметр: время между фреймами – интервал между ответом (или окончанием ожидания) и следующим запросом. Этот параметр может использоваться для увеличения скорости передачи.

Настройка Slave-устройств

После добавления мастера необходимо добавить Slaveустройства. Для этого на вкладке Устройства выбирается мастер и правой кнопкой добавляются Slave-устройства (рис. 11).

В данном примере используется СПК207 с Target-файлом 3.5.0.40.

Добавление Slave-устройства для мастера Ethernet-порта: . Добавление Slave-устройства для мастера COM-порта: . После проведенных операций дерево объектов имеет вид, показанный на рис. 12. Для удобства порты можно переименовывать, на рис. 12 показано, что порт Modbus COM переименован в COM1.

Конфигурирование Slave-устройств

После добавления Slave-устройств переходим к их конфигурированию. Для этого в дереве объектов следует выбрать Slave-устройство и двойным кликом открыть окно настроек. Slave-устройство, подключенное к мастеру Ethernet-порта (рис. 13), имеет следующие настройки: IP Адрес Slave – IP адрес устройства, которое опрашивает мастер сети.

Unit — ID – сетевой адрес устройства, который может принимать значения от 1 до 247, и используется для идентификации узла в сети.

Таймаут ответа устанавливается для каждого Slave-модуля и имеет приоритет по отношению к соответствующему параметру Master.

Порт – номер порта для Slave-модуля. Slave-устройство, подключенное к мастеру COM-порта, имеет аналогичные настройки.

Добавление каналов

Дальнейшая настройка независимо от типа интерфейса сводится к заданию канало[3]в (одного или нескольких регистров) и указанию режима работы канала – чтение или запись с последующей привязкой к переменным конфигурации.

Для добавления каналов следует перейти на вкладку Канал Modbus Slave соответствующего Slave-устройства и нажать на кнопку Добавить канал (рис. 14). Откроется диалоговое окно (рис. 15) с параметрами, приведенными в табл. 2.

После того как Slave-устройству будут заданы каналы и режимы работы, следует выполнить привязку читаемых или задаваемых регистров к переменным проекта на вкладке Соотнесение входов/выходов. Для этого необходимо выбрать канал, два раза кликнув по полю с названием «Переменная» (рис. 16). После этого поле станет

Таблица 2. Параметры каналов

Группа параметров «Канал»

Имя

Название канала

Тип доступа

Чтение регистра хранения (код функции 03) Чтение входных регистров (код 04) Запись в один регистр (код 06) Запись в несколько регистров (код 16) Запись/чтение регистров (код 23)

Триггер

CYCLIC: запрос выполняется периодически RISING_EDGE: запрос выполняется по переднему фронту логической переменной (для запуска сервисов Modbus из приложения в любое время необходимо установить триггер в RISING_EDGE)

Время цикла

Если триггер имеет значение CYCLIC: интервал между опросами в мс (должен быть равен или кратным времени цикла приложения)

Комментарий

Краткое описание реального смысла данных

Группа параметров «Регистр READ»

Сдвиг

Номер регистра для чтения (0-65535)

Длина

Количество регистров (=слов), которые будут прочитаны

Обработка ошибок

Обработка данных в случае возникновения ошибок соединения: «Set to ZERO» устанавливает все значения в 0. Keep last Value сохраняет предыдущее значение.

Группа параметров «Регистр WRITE»

Сдвиг

Номер регистра для записи (0-65535)

Длина

Количество регистров (=слов), которые будут записаны

 

активным для редактирования, и появится кнопка . Если на нее нажать, то произойдет вызов диалога «Ассистент ввода», с помощью которого можно связать регистр с переменной проекта (рис. 17).

Если регистры привязаны к переменным, то при запуске программы на вкладке Соотнесение входов/выходов отображаются опрашиваемые значения. Если регистры к переменным не привязаны, но эти данные необходимо просмотреть, то следует выставить галочку в окне .

Если мастер сети опрашивает несколько устройств в сети, то по описанной выше методике добавляются и настраиваются очередные Slave-устройства. На рис. 18 приведен пример дерева объектов с задействованным портом Ethernet и двумя serial-портами. Все три порта настроены в режиме Master, и каждый из них опрашивает по четыре Slave-устройства.

У Slave-устройства есть вкладка Modbus Slave Init, которая предназначена для предварительной инициализации данных, например, если перед началом обмена устройству необходимо задать настройки (например, указать тип датчика). Методика добавления регистров для инициализации аналогична методике добавления каналов, есть только еще один пункт – значение инициализации.

Настройка устройства в режиме Slave

Если устройство нужно настроить на работу в режиме Slave, то после добавления интерфейсов необходимо добавить Slave-устройства. Для этого на вкладке Устройства выбирается интерфейс и правой кнопкой добавляется режим Slave: для порта Ethernet (рис. 19), для COM-порта (рис. 20).

После настройки режима Slave необходимо задать основные настройки устройств для Modbus Slave TCP (рис. 21), для Modbus Slave RTU (рис. 22).

Таймаут: время ожидания (мс) кратное 500 мс.

Slave-порт: номер порта для Slave-модуля.

ID элемента: сетевой адрес устройства Modbus.

Регистры временного хранения: число регистров, доступных только для чтения функцией 04. Входные регистры: число регистров, доступных для чтения функцией 03 и записи функцией 16.

После задания основных настроек регистры можно связать с переменными программы на вкладке «Соотнесение входов/выходов».

На рис. 23 показан пример дерева объектов для СПК207, порт Ethernet и порты COM2 и COM3 настроены на режим работы Slave.

После выполнения описанных операций необходимо подключить настраиваемое оборудование к СПК и убедиться в корректности обмена. Таким образом, настройка СПК по протоколу Modbus завершена.

 


[1] На этих скоростях контроллеры ОВЕН поддерживают работу в ОС Linux, но возможность работы непосредственно в среде программирования отсутствует.

[2] В СПК105 интерфейсы RS-485 и RS-232 выведены на один порт COM1, что обеспечивает возможность одновременной работы и по RS-485, и по RS-232 в отличие от остальных контроллеров серии СПК.

[3] Канал – это группа адресов, расположенных последовательно друг за другом и опрашиваемых одной функцией.

Защита программного обеспечения ПЛК с помощью CoDeSys V3.5 и CodeMeter: Wibu-Systems

Защита программного обеспечения относится не только к программному обеспечению ПК. Есть также важные причины для защиты программного обеспечения ПЛК: машины и установки, а также ноу-хау встроенного в них программного обеспечения должны быть защищены от обратного проектирования. Это также позволяет внедрять новые бизнес-модели и гарантирует целостность системы. Оливер Винзенрид, исполнительный директор Wibu-Systems, объясняет, что возможно сегодня.

Сделал ли инцидент со Stuxnet более осведомленным производителей и пользователей об опасностях, которые представляют вирусы и т. Д., и предприняли ли они необходимые шаги, чтобы защитить себя?

Пользователи и проектировщики машин теперь лучше осведомлены о необходимости обеспечения безопасности в автоматизации и встроенных системах, чем до инцидента со Stuxnet. Многие правительства начали программы и создали «центры киберзащиты» для защиты критически важной инфраструктуры, такой как системы управления дорожным движением или предприятия энергетики и водоснабжения, которые должны быть защищены от атак как со стороны террористов, так и хакеров. В выпуске воскресной газеты «Frankfurter Allgemeinen» от 23 октября 2011 г. Михаэль Ханг, президент Федерального управления информационной безопасности Германии, BSI, призвал промышленность сообщать об атаках червя Duqu.Symantec впервые предупредила об этом черве, который во многом похож на червя Stuxnet.
В то же время несанкционированные манипуляции становятся все более серьезной проблемой. Пример: производители ветряных электростанций стремятся помешать операторам настраивать свои ветряные турбины для выработки большего количества энергии, чем указано. Это увеличит износ деталей, все еще находящихся под гарантией, которые затем производитель должен будет заменить.

Как можно эффективно защитить системы автоматизации от манипуляций?

Системы технической защиты затрудняют перепроектирование оборудования, систем управления и машин.Встроенное программное обеспечение эффективно защищено, если программный код зашифрован. Ключ шифрования надежно хранится либо в ключе, либо в программном обеспечении, которое затем активирует и привязывает ключ к определенному устройству или системе управления.

Защита от реверс-инжиниринга достигается за счет хранения программного кода в целевой системе в зашифрованном формате, так как это не позволяет дизассемблеру статически анализировать его. Существуют также механизмы для обнаружения «атаки», которая немедленно приводит к блокировке лицензии и, следовательно, останавливает декодирование большего количества программного обеспечения.

Производитель подписывает программный код цифровой подписью, чтобы предотвратить манипулирование или изменение без разрешения. Механизм защиты в целевой системе позволяет загружать и выполнять только правильно подписанные программные компоненты. Или, по-другому: управляемая программа не запускается.

Wibu-Systems и 3S-Smart Software Solutions работают вместе с 2010 года над интеграцией технологии CodeMeter в систему программирования и выполнения CoDeSys PLC. Какая сейчас ситуация?

3S выпускает версию 3.5 CoDeSys на SPS / IPC / Drives в этом году. Технология CodeMeter, известная здесь как CoDeSys Security Key, полностью интегрирована в эту версию. Вам нужно только установить соответствующий флажок, чтобы сгенерировать защищенный код из среды разработки. Затем код может быть выполнен, когда ключ безопасности CoDeSys подключен к целевой системе.

Новая концепция безопасности помогает предотвратить копирование или передачу ценных ноу-хау в другие системы управления. Другие функции безопасности, такие как «подписанное приложение» и «шифрованная связь» между ПК для программирования и ПЛК, удовлетворят потребность в защите целостности.Интегрированное управление пользователями, которое защищает доступ к проектам или исходному коду, эффективно предотвращает сторонние манипуляции с системами управления.

Разве раньше такое не было возможно?

До сих пор в системе разработки CoDeSys была только защита паролем. Программы PLC в целевых системах не были защищены. Использовать CmDongles было невозможно, поскольку им требовалось исполняемое программное обеспечение, которого не было. Новое в версии CoDeSys 3.5: с помощью правильного ключа теперь можно защитить программный код на любой платформе.

Глубокий уровень интеграции в CoDeSys открывает новые возможности. Отдельные программные компоненты больше не нужно лицензировать немедленно. Эта функция, известная как Feature-on-Demand, означает, что функции, присутствующие в программном обеспечении, могут быть «включены» по мере необходимости. Их можно включить через Интернет или офлайн через файл лицензии после распространения программного обеспечения. Таким образом, производитель станков может использовать Feature-on-Demand для индивидуальной продажи функций своих станков как до, так и после отгрузки.Например, он может предложить дешевую стартовую модель, чтобы конкурировать с дешевыми иностранными поставщиками, и дорогую модель с множеством дополнительных услуг.

Поставщики систем управления могут продавать фиксированное количество лицензий для целевых систем с оплатой по факту использования. Затем инженер по установке или установке может активировать лицензии в своих системах управления по мере необходимости. Производитель также может использовать механизмы оплаты по факту использования, чтобы сдавать свои машины в аренду и выставлять счета клиентам в зависимости от использования. Это гарантирует, что ему заплатят!

И, наконец, что не менее важно, этот метод также может быть использован инженером-технологом для защиты своего исходного кода.Он может выбрать, какие части могут видеть и изменять его клиенты (конечный пользователь), а какие части отображаются в виде черного ящика, т.е.они могут использоваться, но не могут быть изменены.

Как управляются все эти функции или возможности?

Управление лицензиями интегрировано в процесс продаж, т.е. лицензиям присваиваются «номера деталей», как и механическим компонентам машины. Номер появляется в списках деталей системы ERP. Система ERP, например SAP, подключена к License Central через веб-интерфейс, поэтому лицензии могут генерироваться автоматически.Они передаются в систему управления машиной либо онлайн, либо офлайн с помощью файла.

Всегда ли в CoDeSys доступны описанные выше функции безопасности?

Да, они будут, но для их использования вам понадобится ключ безопасности CoDeSys. Ключ можно приобрести в компании 3S. Подобные типы ключей безопасности также доступны для целевых платформ. Все варианты оборудования CodeMeter могут использоваться в качестве ключей безопасности, например, USB CmStick / M или CmCard в формате MicroSD, SD или CF-карты.Они только стоят немного дороже, чем обычные промышленные карты памяти.

Помимо сотрудничества с 3S, есть ли подобное сотрудничество, например, с производителями систем управления?

3S проделала новаторскую работу по глубокой интеграции CodeMeter в CoDeSys. Это первый поставщик в индустрии ПЛК, предлагающий такое решение. Исследовательский центр информационных технологий (FZI) в Карлсруэ в настоящее время разрабатывает профиль защиты и оценивает функции безопасности.Профиль защиты — это своего рода каталог критериев, который можно использовать для объективного тестирования того, какие из наших продуктов предлагают защиту от каких атак. Проект частично финансируется BMWi (Федеральное министерство экономики и технологий Германии).

Мы также ведем переговоры с другими поставщиками в Европе, США и Азии. В частности, я хотел бы упомянуть здесь одно сотрудничество: Wibu-Systems является сертифицированным партнером Wind River, 100% дочерней компании Intel. VxWorks сделала Wind River одним из ведущих мировых поставщиков операционных систем реального времени.Наша CodeMeter Compact Runtime была интегрирована в VxWorks, что означает, что компоненты RTP (Real Time Process) и DKM (Downloadable Kernel Module) могут быть безопасно загружены, а программный код защищен. Полная интеграция со средой разработки VxWorks Workbench на основе Eclipse находится в процессе.

Безопасность также является основным условием соблюдения требований безопасности. Что это значит?

Стандарты и меры безопасности гарантируют, что машины и установки не представляют опасности для людей, окружающей среды или имущества.Однако это может быть гарантировано только в том случае, если манипулирование критически важными для безопасности системами станет невозможным. Соответствующие решения безопасности защищают решения безопасности от атак извне, например, от несанкционированного выполнения программного кода или несанкционированных модификаций.
Безопасность может быть достигнута только с помощью безопасности.

Дитер Хесс
Генеральный директор 3S-Smart Software Solutions GmbH

«CoDeSys Security позволяет инженерам по автоматизации эффективно защищать свои приложения.Он основан на проверенной временем технологии CodeMeter. Поскольку эта технология полностью интегрирована в CoDeSys, для активации защиты требуется всего несколько щелчков мыши. Нет необходимости знакомиться с технологией. В настоящее время такой концепции нет ни в одной другой системе программирования ПЛК ».

Настройка CODESYS OPC DA — Factory I / O

перейти к содержанию 

Введите, чтобы начать поиск

    • Добро пожаловать
    • Установка
    • Начиная Начиная
      • Обзор
      • 1.Навигация
      • 2. Открытие сцены
      • 3. Создание сцены
      • 4. Ручное управление сценой
      • 5. Управление с помощью ПЛК
    • Руководство Руководство
      • Обзор
      • Пользовательский интерфейс
      • Параметры
      • Навигация
      • Редактировать и запускать
      • Теги
      • Инъекция отказов
      • Сцены Сцены
        • Обзор
        • 1.От а до б
        • 2. От A до B (установка и сброс)
        • 3. Заправочный бак (таймеры)
        • 4. Очередь товаров (счетчики)
        • Ассемблер
        • Ассемблер (аналоговый)
        • Автоматизированный склад
        • Буферная станция
        • Конвергентная станция
        • Лифт (базовый)
        • Лифт (Продвинутый)
        • Контроль уровня
        • Паллетайзер
        • Pick & Place (базовый)
        • Выбрать и разместить XYZ
        • Конвейер
        • Разделительная станция
        • Сортировка по высоте (базовая)
        • Сортировка по высоте (Дополнительно)
        • Сортировка по весу
        • Сортировочная станция
      • Запчасти Запчасти
        • Обзор
        • Эмиттер
        • Съемник
        • Предметы
        • Детали для тяжелых грузов
        • Детали с малой нагрузкой
        • Датчики
        • Операторы
        • Станции

    Использование Codesys soft PLC — документация p-net

    Мы запускаем среду выполнения Codesys («COntroller DEvelopment SYStem») на Raspberry Pi, и настройка выполняется с помощью программного обеспечения на базе Windows (Codesys Development Система).

    Загрузка и установка Codesys Development System на ПК с Windows

    Программу можно скачать с https://store.codesys.com/codesys.html Доступна пробная версия. Требуется регистрация.

    Загрузить «CODESYS Development System V3». Файл называется например «CODESYS 64 3.5.15.30.exe». Установите его на машину с Windows, дважды щелкнув значок.

    Также загрузите «CODESYS Control для Raspberry Pi SL». Установите его, дважды щелкнув файл .пакет файл.

    После установки перезапустите программу.

    Если вы используете пробную версию, вам необходимо перезапустить среду выполнения Codesys на Raspberry Pi каждые два часа.

    Просканируйте сеть, чтобы найти Raspberry Pi, и установите на него среду выполнения Codesys

    Убедитесь, что ваш компьютер с Windows и Raspberry Pi подключены к та же локальная сеть.

    В Codesys в Windows используйте меню Инструменты -> «Обновить Raspberry Pi». Нажмите «Сканировать», чтобы найти IP-адрес.

    Нажмите «Установить» для пакета Codesys Runtime. Используйте стандартную среду выполнения во всплывающем окне.

    Создайте проект в Codesys

    На машине Windows сначала создайте подходящую область проекта на жестком диске. водить машину. Например Documents / Codesys / Democontroller.

    В меню Codesys создайте новый проект. Используйте недавно созданный справочник и «Стандартный проект». Назовите его «Демоконтроллер». Выберите устройство «Codesys Control для Raspberry Pi SL» и выберите для программирования в «Структурированный текст (СТ)»

    Важно, чтобы вы выбрали ту же версию среды выполнения (одно ядро ​​= «SL» или multicore = «SL MC») как во время выполнения, так и в проекте, в противном случае контроллер не будет найден, когда вы попытаетесь его использовать.

    Убедитесь, что «Устройство» в левом меню отображается как «Codesys Control for Raspberry Pi SL ». Дважды щелкните «Устройство». Перейдите на вкладку «Сканировать сеть», и выберите Raspberry Pi. Маркер на изображении должен стать зеленым. Использовать вкладки «Устройство» и «Отправить эхо-сервис» для проверки связи.

    В меню «Инструменты» Codesys выберите «Репозиторий устройства». Нажмите «Установить» и выберите файл GSDML на жестком диске.

    • На левой панели «Устройство (CODESY Control для Raspberry Pi SL)» щелкните правой кнопкой мыши и выберите «Добавить устройство».Используйте «Ethernet».

    • В «Ethernet» щелкните правой кнопкой мыши и выберите «Добавить устройство». Используйте «Profinet IO master».

    • На «PN_Controller» щелкните правой кнопкой мыши и выберите «Добавить устройство». Воспользуйтесь «ДЕМО-устройством rt-labs».

    • На «rt_labs_DEMO_device» щелкните правой кнопкой мыши и выберите «Добавить устройство». Используйте «8 бит I 8 бит 0».

    Дважды щелкните узел «Ethernet» в левом меню. Выберите интерфейс «eth0». IP-адрес будет соответственно обновлен.

    Дважды щелкните узел «PN_controller» в левом меню. Отрегулируйте диапазон IP используя «Первый IP» и «Последний IP», чтобы иметь существующий IP-адрес вашего IO-устройство (например, ноутбук с Linux или встроенная плата Linux с sample_app).

    Дважды щелкните узел «rt_labs_DEMO_device» в левом меню. Установить IP-адрес на существующий адрес вашего IO-устройства.

    Язык программирования структурированного текста для ПЛК

    Structured Text (ST) — это текстовый язык программирования для ПЛК.Об этом читайте на https://en.wikipedia.org/wiki/Structured_text

    .

    Учебное пособие можно найти здесь: https://www.plcacademy.com/structured-text-tutorial/

    Создать приложение контроллера

    Введите программу в «PLC_PRG».

    Раздел переменных:

     ПРОГРАММА PLC_PRG
    VAR
        in_pin_button_LED: BOOL;
        out_pin_LED: BOOL;
    
        in_pin_button_LED_previous: BOOL;
        мигает: BOOL;
        состояние_осциллятора: BOOL: = FALSE;
        осциллятор_циклы: UINT: = 0;
    END_VAR
     

    Раздел программы:

     осциллятор_циклов: = осциллятор_циклы + 1;
    ЕСЛИ осциллятор_циклов> 200 ТО
        осциллятор_циклы: = 0;
        состояние_ осциллятора: = НЕ состояние_ осциллятора;
    END_IF
    
    ЕСЛИ in_pin_button_LED = ИСТИНА, ТО
        ЕСЛИ in_pin_button_LED_previous = ЛОЖЬ, ТО
            мигает: = НЕ мигает;
        END_IF
        out_pin_LED: = ИСТИНА;
    ELSIF мигает = ИСТИНА ЗАТЕМ
        out_pin_LED: = состояние_ осциллятора;
    ELSE
        out_pin_LED: = ЛОЖЬ;
    END_IF
    in_pin_button_LED_previous: = in_pin_button_LED;
     

    На узле «_8_bits_I_8_bits_O» щелкните правой кнопкой мыши и выберите «Редактировать сопоставление ввода-вывода».Дважды щелкните строку, которую вы хотите изменить. Сопоставьте «Входной бит 7» с «in_pin_button_LED» и «Выходной бит 7» с «out_pin_LED»

    В «Application -> MainTask» выберите «Cyclic» с 4 мс.

    В «Приложение -> Profinet_CommunicationTask» выберите «Циклический» с 10 мс. Используйте приоритет 30.

    Перенести приложение контроллера на (контроллер) Raspberry Pi

    • В верхнем меню выберите Build -> Build.

    • Перенесите приложение на Raspberry Pi с помощью верхнего меню Онлайн -> Войти.Во всплывающем окне нажмите «Да».

    • В верхнем меню используйте Debug -> Start

    Вы можете следить за журналом контроллера, используя главное меню Инструменты -> «Обновить». Raspberry Pi». Нажмите кнопку «Информация о системе» и посмотрите «Информация о времени выполнения». текстовое окно. Он покажет сообщение об ошибке, если не сможет найти IO-устройство на сеть.

    Используйте Wireshark, чтобы убедиться, что контроллер отправляет пакеты LLDP каждые 5 секунд. Каждые 15 секунд он будет отправлять ARP-пакет, чтобы запросить (первое?) IO-устройство. IP-адрес и пакет PN-DCP для запроса IO-устройства с именем «RT-labs-dev».

    Запуск приложения

    См. Страницу «Учебное пособие».

    После настройки Codesys softplc, работающего на Raspberry Pi, вы можете выключить персональный компьютер (запустив настольное приложение Codesys) используется для его настройки. Помните, что вам нужно выключать и снова включать Raspberry Pi, запускающий softplc, каждые два часа, если используется пробная версия.

    Остающийся текст на этой странице посвящен расширенным темам и не является обязательным. для запуска примера приложения в учебнике.

    Настройка параметров синхронизации ПЛК

    Можно настроить время цикла, которое использует IO-контроллер (PLC). для циклической передачи данных с IO-устройством.

    В левом меню дважды щелкните «rt_labs_DEMO_device» и откройте «Общие» таб. В разделе «Связь» показаны часы отправки в миллисекундах, как считано. из файла GSDML. Используя «коэффициент уменьшения», вы можете замедлить связи, умножив время цикла на коэффициент, указанный в падать.

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

    В случае возникновения проблем, значительно увеличьте значение коэффициента уменьшения (и тайм-аута), а затем постепенно уменьшайте его, чтобы найти наименьшее полезное значение.

    Запись и чтение параметров IO-устройства

    Параметры для различных субмодулей записываются как часть обычного запуска.

    Чтобы вручную запустить отправку параметров через Codesys, дважды щелкните значок _8_bits_I_8_bits_O устройство в левом меню. Используйте вкладку Общие, а Часть страницы настроек. Щелкните правой кнопкой мыши параметр, который вы хотите отправить, и выберите «Записать на устройство».

    Аналогичным образом можно прочитать параметр.

    При нажатии значка «Записать все значения» отправляется один запрос записи на параметр.

    Чтобы изменить значение параметра в графическом интерфейсе Codesys, вам необходимо сначала перейти не в сети.

    Установка статуса производителя вывода (IOPS)

    Обычно Codesys устанавливает выходной PS на ХОРОШО (0x80 = 128) во время работы. Установка флажка «Выходной PS» на вкладке «IOxS» на устройстве ввода-вывода Profinet. устанавливает значение ПЛОХО (0).

    Отображение ошибок

    Щелкните IO-устройство в древовидной структуре в левой части экрана. Используйте вкладку «Журнал» для отображения ошибок.

    Отображение аварийных сигналов, отправленных с устройства ввода-вывода

    Входящие технологические и диагностические сигналы тревоги появляются во многих местах настольного приложения Codesys.

    • Codesys Raspberry Pi: на вкладке «Журнал» отображаются аварийные сигналы процесса и диагностики.

    • PN_Controller: на вкладке «Журнал» отображаются аварийные сигналы процесса и диагностики.

    • Устройство ввода-вывода: на вкладке «Журнал» отображаются аварийные сигналы процесса и диагностики. На вкладке «Статус» отображаются аварийные сигналы, относящиеся к встроенным (DAP) модулям.

    • Вставлен модуль в IO-устройство: аварийные сигналы процесса и диагностики отображаются на вкладке «Состояние».

    Состояние подключения

    Перейдите на страницу устройства ввода-вывода Profinet и просмотрите вкладку «Объекты PNIO IEC».Развернуть самый верхний ряд. Показаны состояния этих логических полей:

    • xRunning: Периодические данные отправляются

    • xBusy: Контроллер пытается подключиться к IO-устройству

    • xError: Ошибка подключения к IO-устройству

    Если соединение с IO-устройством вообще отсутствует, состояние изменится на xBusy из xError каждые 5 секунд.

    Изменить IP-адрес IO-устройства

    Измените IP-адрес, дважды щелкнув узел «rt_labs_DEMO_device» в левом меню на вкладке «Общие».Установите новое значение IP-адреса.

    IO-контроллер отправит новый IP-адрес в сообщении «DCP Set» на IO-устройство с заданным именем станции. Затем он будет использовать сообщения ARP для IO-устройство, чтобы найти его MAC-адрес и обнаружить конфликты IP-адресов.

    Поиск устройств, присвоение IP-адреса, сброс устройств и изменение имени станции

    В левом боковом меню щелкните правой кнопкой мыши PN_Controller и выберите «Сканировать устройств ». Появятся работающие IO-устройства, и можно будет увидеть, какие модули вставлены в какой слот.

    Это реализовано в Codesys путем отправки DCP «Запрос идентификации, все». сообщение от IO-контроллера. Это работает также, если в левом иерархическом меню нет загруженных устройств ввода-вывода. Устройство ввода-вывода ответит DCP-сообщением «Ident OK». Затем IO-контроллер выполнит «неявный запрос чтения» для «APIData», на котором устройство ввода-вывода отвечает поддерживаемыми API. Аналогичный запрос на «RealIdentificationData для одного API» выполняется IO-контроллером, на котором IO-устройство отвечает, какие модули (и субмодули) в какие слоты вставлены (и подслоты).

    Чтобы восстановить заводские настройки устройства, выберите его в списке просканированных устройств и нажмите кнопку «сброс».

    При сбросе настроек к заводским настройкам IO-контроллер отправляет сообщение DCP «Установить запрос». с подопцией «Сбросить заводские настройки». После отправки ответа IO-устройство выполнит сброс настроек, а также отправит сообщение LLDP с новые ценности. Затем IO-контроллер отправляет «Идентификационный запрос, все», на который IO-устройство отвечает.

    Чтобы изменить имя станции или IP-адрес, измените соответствующие поля. в списке просканированных устройств и нажмите «Установить имя и IP-адрес».

    IO-контроллер отправляет сообщение DCP «Установить запрос». с подопциями «Имя станции» и «Параметр IP». После отправки ответ, IO-устройство изменит IP-адрес и имя станции. Так и будет также отправьте сообщение LLDP с новыми значениями. Тогда IO-контроллер отправляет «запрос идентификации, все», на который IO-устройство отвечает.

    Есть возможность мигать светодиодом на IO-устройстве. Выберите свое устройство в список просканированных устройств и нажмите кнопку «Мигающий светодиод». Кнопка остается активным, пока вы не нажмете его снова.

    Мигание светодиода осуществляется путем отправки DCP-сообщения «Установить запрос» с подопцией «Сигнал» раз в 5 секунд, пока соответствующая кнопка активна.

    Для считывания данных идентификации и обслуживания (I&M) устройство должно присутствовать как IO-устройство, подключенное к IO-контроллеру в левом меню. Выберите устройство в списке просканированных устройств и нажмите кнопку «I&M».

    Чтение данных I&M выполняется контроллером ввода-вывода путем отправки четырех сообщений «Неявное чтение» запросить сообщения DCP, по одному для каждого из I & M0 — I & M3.

    .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *