Codesys обучение. Примеры простейших программ для CoDeSyS. Необходимое программное обеспечение и оборудование

Курс по программному обеспечению CoDeSys предназначен для сетевых интеграторов, пусконаладчиков, инженеров, конструкторов, производителей оборудования и программистов. В процессе занятий слушатели приобретут навыки использования программируемого логического контроллера языками стандарта МЭК: IL, SFC, FBD, LD, ST, - интерфейсом CoDeSys, стандартными и пользовательскими библиотечными объектами, приемами работы с визуализатором, DDE-компонентом, в удаленном режиме.

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

Программная среда CoDeSys

CodeSys - один самых развитых и полнофункциональных инструментов для программирования логических контроллеров на языках стандарта МЭК. Программируемые логические контроллеры (ПЛК) - устройства, автоматизирующие работу промышленных и бытовых приборов или производственных комплексов. ПЛК на физическом уровне являются устройствами, имеющими несколько дискретных и аналоговых входов и выходов, тогда как логика их работы закладывается программно в микрокомпьютерном ядре.

Название CodeSys является сокращением от «Controller Development System». Программный комплекс производится и распространяется немецкой фирмой 3S-Smart Software Solutions.

Несколько сот производителей устройств выпускают устройства автоматики с поддержкой программного интерфейса CoDeSys.

Для программирования доступны все стандартные МЭК языки: IL (Instruction List) ? ассемблеро-подобный язык, ST (Structured Text) ? Pascal-подобный язык, LD (Ladder Diagram) ? язык релейных схем, FBD (Function Block Diagram) ? язык функциональных блоков, SFC (Sequential Function Chart) ? язык диаграмм состояний.

В качестве расширения стандарта МЭК в CoDeSys реализована поддержка объектно-ориентированного программирования, а также язык CFC (Continuous Function Chart), являющийся модифицированным.

Описание готового проекта хранится в одном единственном файле. Компилятор CoDeSys генерирует на основе проекта исполняемый машинный код, обеспечивая максимально возможное быстродействие прикладных программ. Поддерживаются различные процессоры известных марок. CoDeSys работает на всех 32х разрядных Windows. CoDeSys и контроллер взаимодействуют через промежуточное приложение Gateway-сервер. Он может работать как локально, так и удаленно через TCP/IP. Контроллеры подключаются к Gateway-серверу по протоколам RS232, TCP/IP или CAN.

Комплекс CoDeSys распространяется без лицензии и может быть установлен на нескольких рабочих местах.

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

контроллер «ОВЕН ПЛК 100»; группа предприятий «ВяткаСтройДеталь» в Кирове изготавливает и устанавливает оборудование для производства плит из пенопласта; первая автоматизированная блок-форма с пультом управления на базе ОВЕН ПЛК 100 установлена в г. Альметьевске в Татарстане; контроллер ОВЕН ПЛК100 установлен с 2 модулями расширения; программа для ПЛК была создана в CoDeSys на языках SFC и CFC; контроллер осуществляет анализ входных сигналов от различных датчиков, затем формирует выходной сигнал на управление пневмораспределителями и магнитными пускателями; визуализацию и человеко-машинный интерфейс обеспечивает панель «ОВЕН ИП320»;

модульный ПЛК Moeller XC100-FC; Enercon GmbH, крупнейший в Германии производитель ветряных электростанций, в системе управления генераторов использует ПЛК XC100-FC, программируемый в среде CoDeSys; ПЛК XC100-FC контролирует параметры сети и состояние аккумуляторов источника резервного питания, управляет процессом кондиционирования воздуха, включая нагрев и охлаждение, контролирует работу световых сигналов;

мобильный ПЛК SMA «Enduro»; установлен в контейнерных кранах Liebherr, управляет движением стрелы крана и консоли с кабиной оператора; одновременно управляет приводами и электроавтоматикой;

контроллер Berghof Dialog Controller DC1005; для транспортировки при покраске кузовов автомобилей компания EISENMANN разработала программируемые челноки «Vario-Shuttle», позволяющие задавать оптимальные траектории входа и выхода кузовов из ванн, а также решать проблему образования пузырьков и подтеков на поверхностях при нанесении грунта; каждый челнок программируется индивидуально; для диагностики и подстройки каждый челнок оснащен дисплеем, интегрированным с управляющим контроллером; все действия запрограммированы при помощи инструмента CoDeSys;

система Wago I/O; поддерживает все стандартные типы полевых шин; система включает базовый контроллер и набор модулей ввода-вывода; дискретные модули ввода-вывода работают с сигналами от 5 до 250 В и могут иметь функцию диагностики; аналоговые модули поддерживают все стандартные виды сигналов: 0(4) -20мА, 0-10В, ±10В, термопары, термометры сопротивления.

Также видоизмененный CoDeSys, известный под названием GX9100 и FX Builder, используется для программирования логики контроллеров Johnson Ctrls, соответственно, семейств DX и FX. Языком программирования является видоизмененный FBD.

Цели и задачи курса

Цель курса: в простой и краткой форме подготовить специалистов по автоматике зданий к программированию промышленных контроллеров с помощью программной среды CoDeSys.

По окончании курса слушатель будет уметь :

  • Составлять спецификацию для системы Wago I/O
  • Программировать внутреннюю логику ПЛК на различных МЭК-языках с помощью CoDeSys;
  • Тестировать созданные программы с помощью встроенного симулятора CoDeSys и на реальном оборудовании
  • Осуществлять визуализацию работы ПЛК с помощью CoDeSys
  • Встраивать систему Wago I/O в сеть LonWorks.

Выдаваемые сертификаты

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

Код курса Период проведения
CDS-201 09.04
CDS-201 17.05
CDS-201 07.06
CDS-201 08.07
CDS-201 19.08
CDS-201 21.10

1.Введение. Знакомство с ПЛК и средой CoDeSys

  • История создания программного комплекса CoDeSys
  • Понятие ПЛК. Принципы работы ПЛК. Примеры ПЛК
  • Архитектура ПЛК
  • Условия и режим работы ПЛК
  • Терминология: время реакции, цикл сканирования, сторожевой таймер, системное программное обеспечение, полевая шина
  • Требования к промышленным шинам.

2. Обзор МЭК языков и среды CoDeSys

  • Открытый и закрытый подход к программированию ПЛК
  • Сравнение различных программных комплексов
  • Обзор языков МЭК: особенности и сходства, достоинства и недостатки
  • Типы данных
  • Компоненты организации программ: программы, функции, функциональные блоки
  • Входные и выходные параметры. Переменные. Распределение памяти переменных
  • Структура ПО CoDeSys. Обзор меню и ярлыков
  • Текстовые и графические редакторы
  • Создание простейших проектов в среде CoDeSys
  • Запуск на исполнение и отладка проектов

3. Язык LD

  • Контакты и реле. Последовательное и параллельное соединение контактов
  • Нормально замкнутые и разомкнутые контакты. Реле с самофиксацией
  • Порядок выполнения цепей. Метки и переходы
  • Расширение с помощью функциональных блоков
  • Работа с цепями в режиме исполнения

4. Язык ST

  • Основные принципы программирования
  • Синтаксис выражений, операторы присвоения
  • Приоритет операций
  • Операторы выбора
  • Операторы цикла
  • Прерывания
  • Комментарии

5. Язык IL

  • Основные принципы программирования
  • Инструкции и их формат
  • Аккумуляторы
  • Метки
  • Скобки
  • Модификаторы
  • Операторы
  • Вызов компонентов организации программ
  • Комментарии
  • Работа с кодом в режиме исполнения

6. Язык FBD

  • Основные принципы программирования
  • Компоненты диаграмм
  • Линии связи. Порядок исполнения
  • Инверсия логических сигналов
  • Соединители и обратные связи
  • Метки, переходы и возврат
  • Вставка выражений на языке ST

7. Язык SFC

  • Основные принципы программирования
  • Шаги и переходы
  • Идентификатор и условие перехода
  • Начальный шаг
  • Параллельные и альтернативные ветви. Прыжки
  • Упрощенный и стандартный SFC
  • Входные и выходные действия
  • Управление шагами
  • Классификаторы действий
  • Внутренние переменные
  • Отладка и режим исполнения

8. Язык CFC

  • Основные принципы программирования
  • Компоненты диаграмм. Линии связи. Расположение элементов на диаграмме
  • Порядок исполнения
  • Инверсия логических сигналов
  • Соединители и обратные связи
  • Метки, переходы и возврат
  • Функциональные блоки для управления промышленными процессами
  • Работа с диаграммами в режиме исполнения

9. Дополнительные возможности CoDeSys

  • Создание мнемосхемы
  • Добавление фигур для анимации. Настройка поведения фигур
  • Вкладка с ресурсами
  • Конфигурирование тревог
  • Конфигурирование задач
  • Ведение журнала
  • Управление библиотеками
  • Отслеживание значений переменных
  • Импортирование и экспортирование проекта
  • Сравнение проектов. Слияние проектов. Документирование проектов
  • Настройка прав доступа

10. Архитектура ПЛК Wago. Интеграция ПЛК в сеть LonWorks

  • Краткие сведения о продукции фирмы Wago. Примеры использования на реальных объектах. Обзор ПО, используемого с Wago-контроллерами. Программируемые и непрограммируемые контроллеры Wago. Протоколы, поддерживаемые Wago. Архитектура и технические характеристики Wago-контроллеров.
  • Утилита Wago-IO-Check. Установка. Поключение ПК к контроллеру. Мониторинг и управление работой модулей ввода-вывода.
  • Краткий обзор возможностей технологии LonWorks. Краткий обзор ПО LonMaker Turbo. Создание простейшей сети LonWorks с помощью ПО LonMaker Turbo, ее ввод в эксплуатацию и тестирование
  • Структура памяти контроллера Wago. Синтаксис при объявлении экспортируемых точек. Объявление конфигурационных свойств LonWorks как переменных в энергонезависимой памяти
  • Установка и запуск ПО Wago-TOPLON. Получение сведений об экспортируемых переменных из файла. Организация и настройка сетевых переменных и конфигурационных свойств LonWorks на основе экспортируемых переменных.
  • Ввод устройства в эксплуатацию и просмотр сетевых переменных и конфигурационных свойств с помощью ПО LonMaker Turbo.
  • Создание сети LonWorks с помощью ПО LonMaker Turbo, включающей контроллер Wago

Методика проведения обучения

  • В начале курса слушателю предоставляется учебное пособие на русском языке
  • Основную концепцию преподаватель представляет в виде слайдов с подробными комментариями
  • В процессе обучения проводятся обсуждения и опросы слушателей по каждому разделу курса.
  • Не менее половины учебного времени курса отводится под практические занятия на специализированном учебном стенде
  • По окончании каждого блока программы курса и демонстраций слушатели выполняют лабораторные работы
  • В процессе обучения проводятся обсуждения результатов самостоятельных работ и опросы слушателей по каждому разделу курса
  • Аттестация слушателей осуществляется по результатам выполнения лабораторных работ.

Организация и регламент обучения:

  • Обучение проходит в специально оборудованном классе
  • Учащимся предоставляется персональный компьютер с программным обеспечением и мобильный учебный комплект
  • Занятия проходят в один день, без разбиения
  • Начало занятий в 10.00, окончание - 18.00
  • В течение учебного процесса предусмотрено 4 перерыва по 15 минут и обеденный перерыв продолжительностью 45 минут
  • В перерывах между занятиями слушателям предлагается кофе и чай
  • Автоматизация особо опасных, технически сложных и уникальных объектов . Курс повышения квалификации с получением сертификата LON. Учебных дней:5. Аудиторных часов:40.
  • Проектирование инженерного оборудования особо опасных, технически сложных и уникальных зданий и сооружений . В Интернет не выгружается. Учебных дней:4. Аудиторных часов:16.
  • Автоматизация особо опасных, технически сложных и уникальных объектов, сокращенный курс . Для имеющих сертификаты LON, KNX или CoDeSys.
  • Программирование контроллеров на CoDeSys . Очная форма обучения. Учебных дней:2. Аудиторных часов:16.
  • Программирование контроллеров семейства FX и систем диспетчеризации на их основе . Организация сетей, прогаммирование контроллеров, SCADA.
  • Работа с аппаратными серверами NxE (NAE) системы диспетчеризации MetaSys system extended architecture (MSEA) . Работа с аппаратными серверами NxE. Учебных дней:2. Аудиторных часов:16.
  • Программирование и эксплуатация контроллеров семейства FEC/FAC и систем диспетчеризации на их основе . Новая серия контроллеров Johnson Controls. Учебных дней:3. Аудиторных часов:24.
  • Программирование и эксплуатация контроллеров семейства DX . Специализированный курс для служб эксплуатации и обслуживания оборудования предыдущих поколений Johnson Controls. Учебных дней:3. Аудиторных часов:24.
  • Программирование и эксплуатация контроллеров семейства DX, FX и систем диспетчеризации . Расширенный курс, включающий основы всех элементов сети JC прежних серий.

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

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

Вебинар ОВЕН. Обзор контроллеров ОВЕН ПЛК1хх, ОВЕН ПЛК110:

Наиболее популярные языки программирования ПЛК:

Урок 1. Почему работать с ОВЕН ПЛК просто, или «мы не боимся CODESYS».

Просмотрев данный ролик, Вы будете уметь произвести все предварительные настройки, чтобы начать создавать свой проект: Что такое Target файлы, и зачем они нужны. Насколько просто начать создавать проект под свой новый контроллер в CODESYS.

Урок 2. Конфигурация входов и выходов.

От теории к практике - или как в своей программе задействовать физические входы и выходы контроллера. Знакомимся с конфигуратором ПЛК. Учимся, как в программе обращаться к физическим входам и выходам.

Урок 3. Входы и выходы здорово, а как же программа?

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

Урок 4. Вы полагаете, все это будет работать?

Важный урок, где мы не только учимся запускать и проверять работу нашей программы. Главное - мы учимся как нам подключить наш контроллер к системе программирования на компьютере по интерфейсу Ethernet.

Урок 5. Я Вам ни какой-то «сис. админ»…

Подключаем контроллер к ПЛК через стандартный COM порт. Для обладателей современных ноутбуков - через стандартный USB порт.

Урок 6. Даешь сигналов, больше и разных.

Подключаем к ОВЕН ПЛК110 модули расширения Мх110 по интерфейсу RS-485, используя протокол ModBus RTU. Считываем значение аналоговых входов с модуля МВ110-2А. Считываем значение дискретных входов, и управляем дискретными выходами на модуле МК110-8Д.4Р.

Урок 7. А как же визуализация тех. процесса?

Первая серия триллера по сопряжению контроллера ОВЕН ПЛК110 и панельного контроллера ОВЕН СПК107, под названием: «Это скучно… это мы уже умеем». Начинаем настраивать обмен между устройствами с конфигурирования (заметьте - никакого программирования) контроллера ПЛК110 в CODESYS v.2. Все как обычно, но в данном случае настраиваем ПЛК110 как Slave устройство.

Урок 8. Она же вторая часть урока 7.

Вторая серия триллера по сопряжению контроллера ОВЕН ПЛК110 и панельного контроллера ОВЕН СПК107, под названием: Не так страшен CODESYS v.2, как не страшен CODESYS v.3. Легкий экскурс в особенности CODESYS v.3 (подробнее работа с панельными контроллерами ОВЕН СПК освящается в отдельных инструкциях и видео-уроках). Настраиваем обмен по протоколу RS-485. Связываем устройства. Управляем выходами контроллера ПЛК110 непосредственно с дисплея СПК107.

Урок 9. И все-таки он вертится…

Управляем вращением двигателя, с использованием частотного преобразователя из программы контроллера ОВЕН ПЛК110 по интерфейсу RS. До сегодняшнего урока подключение ОВЕН ПЧВ по RS-485 к ПЛК казалось сложным.

Теперь мы знаем, что это не так. Все стандартно. Конфигуратор ПЛК, настраиваем обмен по сети, указываем параметры обмена между ОВЕН ПЛК110 и ОВЕН ПЧВ. Настраиваем частотный привод. Управляем двигателем с помощью ПЧВ непосредственно из управляющей программы контроллера.

Урок 10. ОВЕН ПЛК110. Ну, наконец-то энкодер.

Когда нам необходима быстрая реакция контроллера на внешние воздействия мы используем в контроллерах ОВЕН ПЛК110 конфигуратор задач. Создаем новую программу. Настраиваем вызов данной программы не в основном цикле, а по прерыванию программного таймера. Для примера работы с быстрыми входами ПЛК110 подключаем к контроллеру энкодер. Измеряем на столе длину листа бумаги А4.

Урок 11. А как же начальство, или передаем данные в SCADA систему.

Интегрировать контроллеры ОВЕН ПЛК110 в SCADA системы неожиданно просто. Делаем два паса мышкой в CODESYS. Важно не забыть произвести все приведенные манипуляции, и именно в этом порядке. В OPC сервере нам требуется настроить только лишь канал связи, по которому ОВЕН ПЛК110 будет подключаться к Вашей SCADA системе. Вуаля. Все готово. Можно использовать переменные в своем проекте в SCADA системе.

Урок 12. А давайте позвоним на ОВЕН ПЛК.

Часто встречается задача удаленного обновления пользовательского проекта в ОВЕН ПЛК. Один из вариантов представлен в этом видео-уроке. Самый простой и легко реализуемый вариант, при котором Вам не нужно с ужасом вспоминать страшные слова GPRS, Static IP, VPN, DDNS и прочее. Подключаем стандартный GSM модем ОВЕН ПМ01 к ПК с установленным CODESYS с одной стороны, и ОВЕН ПЛК110 с подключенным модемом ПМ01 с другой. Все что нам необходимо сделать - настроить модемы, и записать в контроллер несколько созданных на компьютере файлов.

Урок 13. Напиши мне, напиши…

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

Настраиваем подключение модема ОВЕН ПМ01 к контроллеру ОВЕН ПЛК110. Подключаем специальную библиотеку для работы с смс. Определяем необходимое количество смс, и текст, который они будут нести.

15 09.2016

Перед тем, как программировать ПЛК в среде разработки CoDeSyS 2.3 новички часто задаются вопросом: А какие системы требуется установить для корректной работы с аппаратом?? А как конфигурировать входы и выходы контроллера?? А каким образом связать устройство с ПК?? И снова, а как, а как?? Все мы с вами понимаем, устройства сложные и алгоритмы объёмные, и на изучение потребуется время. Я вот думаю, может написать небольшую книжку и назвать codesys для чайников? А вы согласны?

Из этой статьи вы узнаете:

Здравствуйте уважаемые коллеги и гости. Пишет вам автор блога сайт, Гридин Семён, и в этой статье я вам расскажу, как правильно программировать контроллер. Тема достаточно актуальная, я надеюсь после прочтения статьи, некоторые вопросы отпадут самим собой. =)

Как работает ПЛК?

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

Вычисления в устройстве выполняются циклически. То есть одни и те же действия выполнения программы выполняются в короткий промежуток времени.

В один цикл осуществляемый прибором выполняются следующие операции:

  1. Начало цикла;
  2. Чтение состояния входа;
  3. Выполнение кода пользователя;
  4. Запись состояния выходов;
  5. Обслуживание аппаратных ресурсов;
  6. Монитор системы исполнения;
  7. Контроль времени цикла;
  8. Переход на начало цикла;

Не буду больше разглагольствовать по теории. Давайте сразу перейдём к практике.

Из чего состоит программный комплекс для полноценной работы с ПЛК

Конечно вам поначалу покажется, что слишком много нужно знать, чтобы связать друг с другом основное приложение и утилитки, а потом соединить устройство. Я хочу вам сказать, что ничего сложного в процессе установки и связей — нет. В этом поможет моя статья.

Для начала нам нужно установить основной дистрибутив CoDeSyS 2.3 c официального сайта ОВЕН . А, я предлагаю во многих постах, касающихся программирования, использовать устройство ОВЕН ПЛК63 . Так как это универсальное устройство с экраном. У него на борту есть и дискретные входы, и аналоговые входы, и релейные выходы.

Итак, скачиваем программу:

Затем следует стандартная процедура установки. Указываем путь и все время жмём “Далее”, “Далее”.

Следующим этапом будет установка таргетов для плк. Таргет — это некое описание о конфигурации ПЛК. Инструкция подсказывает CoDeSyS 2.3, какое количество и какие входы/выходы имеет устройство.
Скачиваем также с сайта ОВЕН . Рекомендую установить все таргеты, которые там есть. Чтобы потом не искать и не думать об этом, если придется писать алгоритм на другой ПЛК.

Запускаем автоматический установщик, устанавливаем инструкции. Всё, половину пути мы с вами уже сделали в этой работе! После этих всех процедур можно устанавливать библиотеки, но о них позже. Переходим к следующему пункту.

Рабочее окно программы

Дистрибутив мы с вами установили, таргеты тоже. Давайте мы с вами рассмотрим рабочее окно среды разработки, элементы меню и основные вкладки.

Основное поле на рисунке выше делится на три области:

  1. Редактор переменных и их типов;
  2. Дерево объектов;
  3. Редактор основного алгоритма программы;

Редактор переменных — здесь мы с вами вводим переменные и присваиваем им типы данных. Для тех, кто не знает, переменная — это имя, к которому будет обращаться программа и возвращать результат. А тип данных определяет род информации, диапазон представления чисел и множество других операций.

Дерево объектов — в этом окне располагаются такие объекты, как функции, функциональные блоки, подпрограммы, конфигурация ПЛК, библиотеки. Об этом я расскажу позже.

Редактор программы — тут мы с вами описываем основной алгоритм программы работы контроллера. Пишется на любом языке стандарта МЭК. Более подробно, можете статью .

Простой пример на ST

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

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

Код codesys2.3

PROGRAM PLC_PRG VAR T1:TON; ("таймер") Timer_Ust:WORD:=5; ("уставка таймера") Time_tekuch:TIME; ("текущее время") END_VAR T1(IN:=Start , PT:=DWORD_TO_TIME(Timer_Ust*1000)); Time_tekuch:=T1.ET; IF T1.Q THEN Out:= 1; ELSE Out:=0; END_IF;

PROGRAM PLC_PRG

T1 : TON ; ("таймер" )

Timer_Ust : WORD : = 5 ; ("уставка таймера" )

Time_tekuch : TIME ; ("текущее время" )

END_VAR

T1 (IN : = Start , PT : = DWORD_TO_TIME (Timer_Ust * 1000 ) ) ;

Time_tekuch : = T1 . ET ;

IF T1 . Q THEN Out : = 1 ; ELSE Out : = 0 ;

END_IF ;

Запускаем наш дистрибутив, создаём новый проект, указываем нужный нам таргет. Не забудьте предварительно проверить, что у вас установлены драйвера на преобразователь USB-COM, он нам понадобится для связи.

В листинге присутствуют две глобальные переменные Start и Out. Они связаны с физическими входами и выходами. Настройки все мы осуществляем во вкладке конфигурация ПЛК.

Компилируем проект (проверяем его на актуальность кода, чтобы не было ошибок). Можно нажать кнопку F11.

Вводим нужные настройки связи, как на картинке.

Собираем нашу схему логического программируемого контроллера. Подключаем интерфейс RS-232 с одной стороны и USB с другой. Жмём “подключение”. Ощущаем радость от процесса. =)) Если произошла ошибка связи , то проверьте ещё раз все подключения и параметры. Часто бывает, что провод преобразователя оборван.

Весь процесс я записал на видео, если будет что-то непонятно.

В следующей статье я напишу о , не пропустите. Будет интересно.

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

С уважением, Гридин Семён.

Советы конкретные и философские. С примерами и скриншотами. Буду дополнять.

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

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

Настройка среды CODESYS 2.3
Некоторые настройки "по умолчанию" в CODESYS удивляют. Например, эта среда - единственная из виденных мной, в которой шрифт не моноширинный, т.е. символы в нем имеют разную ширину. Сразу же после установки среды заходите в Проект > Опции > Редактор > Шрифт и выбирайте Consolas (код на всех скриншотах) или хотя бы Courier New.

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

В настройках "Рабочего стола" уберите лишние галочки и уменьшите таймауты связи до 1000 мс - это сильно упростит вам жизнь, поверьте.

Чтобы перепроверить правильность кода - после каждого изменения жмите клавишу F11 для компиляции кода. После нажатия в нижней части экрана высветятся сообщения о текущих ошибках или их отсутствии. Чтобы скрыть лишнюю плашку с этими сообщениями - нажмите SHIFT+ESC.

Не стремитесь использовать чужой код
Вторичное использование чужого кода в классическом программировании - норма и необходимость, обусловленная множеством причин. В АСУ ТП же, по моему мнению, почти нет необходимости использовать сторонний код.

Я не считаю себя профессионалом и не писал особо сложных программ, но для тех что писал мне вполне хватало стандартных библиотек Util.lib и Standart.lib . Те же библиотеки Oscat (скачать + мануалы на англ) шикарны и всеохватывающи, но в них нет ничего сверхестественного и, мне кажется, лучше самому писать аналогичные функции. А на тот код, который обычно выкладывают на форумах, лучше вообще не смотреть. Даже с тем, что я выкладываю в блоге лучше просто ознакамливаться, а не использовать. Пишите свои алгоритмы и как можно больше)

Примеры правильного кода внутри библиотек
Чтобы понять как должен выглядеть грамотный код и узнать некоторые программистские приёмчки не нужно далеко ходить. Открывайте Кодесисом библиотеки Util.lib и Oscat.lib как обычные проекты и впитывайте мудрость строк.

NB Может я и негодяй, но с помощью этой проги вы можете взломать запароленные библиотеки.

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

Вызов справки по "F1" работает по большинству служебных слов и элементам библиотек Util.lib и Standart.lib . Иногда в CODESYS 2.3 вызов по "F1" не срабатывает, например для  SEL и ARRAY , поэтому вручную открывайте справку и ищите нужный идентификатор во вкладке "Поиск"

Не повторяйте код
Это самый распространенный косяк у неопытных программистов независимо от платформы и языка программирования. Видите дублированный код - выносите его в отдельную функцию или функциональный блок, и/или же переводите переменные в элементы массивов и прогоняйте в цикле. Предыдущее предложение вам может быть непонятно, но подробности можно загуглить .

На скриншоте код, обрабатывающий данные с  частотных преобразователей  Danfoss. Переменные типа CWS1_FREQ созданы в в разделе . Слева представлена первая версия кода где каждый ПЧ представлен отдельным куском из восьми строк; код в каждом куске различается только данными, а логика одинакова.
Справа оптимизированная версия - логика вынесена в отдельную функцию GET_PUMP (с адресацией и указателями, о которых расскажу ниже), а код для конкретного ПЧ теперь занимает одну строчку. Если бы в Конфигурации можно было задавать переменные как элементы массива (типа FREQ_CWS), то код обработки любого количества ПЧ свелся к одной строке, вложенных в два цикла (см. совет ниже).

кликните на скриншот чтобы увеличить его

Плюсы языка ST - массивы и циклы
Язык ST я использую из-за того, что моё знакомство с программированием началось с C/C++. В некоторых случаях удобно использовать CFC или что похуже, но в целом ST более ёмок, лаконичен и чёток. Но, чем действительно он отличается от других языков так это возможностью нормального использования массивов и циклов, которые мне сильно облегчают жизнь и увеличивают читабельность кода.

Не злоупотребляйте циклами
При том, что циклы FOR бывают крайне удобны, всегда помните, что код в ПЛК выполняется в суперцикле и часто можно обойтись простым инкрементированием с обнулением (см. скриншот ниже). Также большие циклы FOR и тем более WHILE могут сильно "затормозить" суперцикл ПЛК вплоть до срабатывания сторожевого таймера (об этом в следующем совете) . Иногда, конечно, нужно сделать перебор в текущем суперцикле и тут уж лучше использовать FOR .

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

Сброс по watchdog"у отличается от любого сброса через среду CODESYS. Этим можно пользоваться. В моей практике сторожевой таймер применяется в контроллерах ОВЕН. В этих ПЛК иногда происходит неприятный момент - созданный в Конфигурации модуль ModBus (Master) перестает вести опрос Слейвов (обычно это возникает после перезаливки программы). Поначалу это решали сбросом питания, но тут возникали трудности при удаленной закачке через интернет.

Позже я обнаружил, что проблему решает искусственное заведение программы в бесконечный цикл. Я вывел сброс на кнопку в визуализации. Или же можно анализировать изменение переменной "Опрашиваемый адрес " в ModBus (Master) - если Slave-устройств больше одного, то она должна меняться каждый цикл.

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

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

Иногда SEL удобнее IF
В случае когда при каком-то условии переменная должна изменить своё значение, а в противном - иметь другое значение, применение IF может быть не лучшем решением. Если условие применимо только к этой единственной переменной - используйте функцию-селектор SEL . Она работает с переменными любого типа.

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

Наглядная работа с булями
Мне очень часто для сокращения кода приходится использовать явные преобразования BOOL в целое число, например, в формулах. Для этого приходится использовать функцию приведения типов в её стандартном неуклюжем виде BOOL_TO_BYTE(). Но как-то раз наткнулся на блог Егора Петрова, где он придумал более простое и изящное решение - по сути переименовать эту функцию в более читаемую - WHEN(). Теперь пользуюсь, пользуйтесь и вы.

В этом посте представляю несколько простых программ для контроллеров, заточенных под CoDeSyS 2.3 и CoDeSyS 3.5. По максимуму представлены несколько вариантов языков программирования стандарта МЭК — ST, CFC, LD и др. Примеры программ CoDeSyS помогут вам в реализации той или иной задачи по автоматизации.

Из этой статьи вы узнаете:

Всем привет, дорогие друзья, на связи Гридин Семён. Я двигаюсь к своей цели, изучая робототехнике. Я читаю очень много информации по различным механическим узлам, по языкам программирования и одноплатным компьютерам.

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

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

Кстати, я сделал небольшой раздел электротехнических онлайн расчётов, если интересно, .

Необходимое программное обеспечение и оборудование

В принципе я чаще всего применяю контроллеры компании ОВЕН — ПЛК100/150/154, ПЛК63/73, ПЛК110/160.

Насколько я помню, CoDeSyS применяют WAGO, Emko, Raspberry PI, и по-моему некоторые контроллеры ABB.

Итак, что нам нужно, чтобы начать работать:

  1. Среда программирования CoDeSyS;
  2. Необходимые библиотеки для среды программирования;
  3. Target-файл под ваше оборудование.

Более развернутый список контроллеров на CoDeSyS.

Отечественные ПЛК:

  1. Овен ПЛК
  2. Фаствел Fastwel IO
  3. СКБ ПСИС CP6000 (psisCON™)
  4. НИЛ АП NLcon-CE
  5. Раскат S-7188 microPLC, модуль 4S-PLCcore
  6. ПРОЛОГ МСТС
  7. ЭРГОС ТРС (Робот)
  8. АРКТУР КЭП-1
  9. ОАО Автоматика УЗС-К

Зарубежные ПЛК, применяемые в России:

  1. Beckoff
  2. Kontron
  3. WagoIO
  4. Moeller, система программирования Xsoft
  5. Festo
  6. Панельные ПЛК Berghof
  7. Mitsubishi топ модель System Q
  8. HollySyS

Примеры программ для CoDeSyS

Для помощи вам в разработке ПО для ПЛК прикрепляю небольшой перечень различных примеров.