codesys с чего начать

Как программировать на codesys 2.3 новичку? Легко

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Codesys с чего начать

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

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

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

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

Источник

Примеры простейших программ для CoDeSyS

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

Читайте также:  ippon back power pro 500 для чего нужен

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

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

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

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

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

Ну что, друзья, поехали дальше.

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

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

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

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

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

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

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

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

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

Источник

CoDeSys | Обучение

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

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

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

Возможности среды разработки CoDeSys. Языки программирования контроллеров. Операторы. Типы данных. Стандартные библиотеки.

CoDeSys. v3.5. ЧаВо. FAQ. Руководство. ОВЕН. Pdf. 2018

Сборник часто задаваемых вопросов, возникающих во время работы с контроллерами ОВЕН, программируемых в среде CODESYS V3.5, и ответов на них. В некоторых случаях вопросы охватывают слишком большую предметную область – тогда вместо ответа приводится ссылка на документ, посвященный затронутой теме.

CoDeSys. v3.5. Форум. Owen.ru. ОВЕН

Вопросы и ответы. Настройка обмена с другими устройствами (Modbus, ОВЕН, OPC и др.). Визуализация. Архивация. Онлайн-FAQ. История обновлений Шаблоны модулей Mx110 для CODESYS V3.5. Библиотеки: ModemOwenLib, библиотеки для опроса электросчётчиков и тепловычислителей, библиотека OwenStringUtils.

CoDeSys. v3.5. Таргет-файлы. ПЛК ОВЕН. Руководство. ОВЕН. Pdf. 2018

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

CoDeSys. v3.5. Старт. Руководство. ОВЕН. Pdf. 2018

Вводная информация для работы с контроллерами ОВЕН в среде CODESYS V3.5. Установка ПО. Настройка связи между контроллером и компьютером. Интерфейс CODESYS. Подключение к контроллеру модулей ввода-вывода и их конфигурирование. Создание и запуск демонстрационного проекта.

CoDeSys. v3.5. Справка-онлайн. Официал.сайт. Ru. 2017

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

CoDeSys. v3.5. Связь, обмен данными. Сокеты. Руководство. ОВЕН. Pdf. 2018

Связь по интерфейсу Ethernet и протоколам на стеке TCP/IP – Modbus TCP, KNX, MQTT, SNMP и др. Передача данных в OPC-серверы и SCADA-системы, передача файлов (по FTP), синхронизации с серверами точного времени (NTP), рассылка сообщений по электронной почте (SMTP/POP3) и т. д. Работа с сетевыми сокетами в CODESYS V3.5 позволяет программисту реализовать свой протокол обмена поверх стандартных UDP и TCP.

CoDeSys. v3.5. Связь, обмен данными. Протокол. Нестандартный. Руководство. ОВЕН. Pdf. 2018

В основном обмен данными происходит по последовательным интерфейсам RS-232/485 и стандартным промышленным протоколам (например, Modbus RTU). Но иногда необходим обмен с устройством поддерживающим только свой специфичный протокол, например тепло- и электросчетчики, весовые индикаторы, модули ввода-вывода и т.д. Поддержку этого протокола в контроллере можно организовать с помощью системных библиотек, которые позволяют работать с последовательным портом напрямую.

CoDeSys. v3.5. Связь, обмен данными. Протокол. OWEN. Руководство. ОВЕН. Pdf. 2018

Обмен данными с использованием протокола ОВЕН для контроллеров ОВЕН, программируемых в среде CODESYS V3.5. Протокол ОВЕН поддерживается такими устройствами, как ТРМ, СИ, модули Mx110 и др. Работа с протоколом в CODESYS реализована в библиотеке OwenNet. Описание библиотеки и пример ее использования для опроса ТРМ212 (на языках CFC и ST).

Читайте также:  blowback что это жаргон

CoDeSys. v3.5. Связь, обмен данными. Протокол. Modbus. ПЛК ОВЕН. Руководство. ОВЕН. Pdf. 2018

Обмен данными между контроллерами, программируемыми в CODESYS V3.5 и CoDeSys V2.3 по протоколу Modbus. Контроллеры могут работать как в режиме Master, так и в режиме Slave.

CoDeSys. v3.5. Связь, обмен данными. Протокол. Modbus. Контроллер СПК. Руководство. ОВЕН. Pdf. 2016

Обмен данными по протоколу Modbus для панельных контроллеров ОВЕН СПК в среде CODESYS V3.5. Способы организации связи: шаблоны модулей, стандартные средства конфигурирования CODESYS, библиотека ModulsOwenLib, библиотеки Modbus и ModbusSlave.

CoDeSys. v3.5. Связь, обмен данными. Верхний уровень. Руководство. ОВЕН. Pdf. 2018

Web-визуализация, VPN вместо сложной SCADA. Обмен данными между контроллерами в локальной сети при помощи сетевых переменных. Передача данных в SCADA с помощью OPC-сервера. Передача данных в облачный сервис типа OwenCloud.

CoDeSys. v3.5. Проект. Адаптация. Руководство. ОВЕН. Pdf. 2018

Перенос проектов CODESYS из предыдущих версий среды в новую. Перенос проектов, созданных в CODESYS V3.5 SP5 Patch 5 и CoDeSys V2.3, в CODESYS V3.5 SP11 Patch 5.

CoDeSys. v3.5. Визуализация. Руководство. ОВЕН. Pdf. 2018

Cоздание экранов визуализации для контроллеров, программируемых в среде CODESYS V3.5, с подробным описанием характеристик и настроек всех графических примитивов, а также примерами работы с ними.

CoDeSys. v3.5. Версии ПО и документации. Руководство. ОВЕН. Pdf. 2019

Определение версии: встроенного ПО (прошивки) прибора, таргет-файла, компонента, библиотеки, документа (руководства).

CoDeSys. v3.5. Библиотеки. OwenStringUtils. Руководство. ОВЕН. Pdf. 2018

Библиотека OwenStringUtils предоставляющая программисту дополнительный функционал для работы со строками – функции конвертации строк ASCII в строки Unicode и Unicode в ASCII.

CoDeSys. v3.5. Библиотеки. CmpSysExec. Руководство. ОВЕН. Pdf. 2018

Библиотека CmpSysExec позволяет организовать доступ к терминалу ОС Linux из программы контроллера. Реализация библиотеки находится в Linux (библиотека CODESYS представляет только интерфейс), поэтому может меняться в зависимости от версии прошивки контроллера.

CoDeSys. v3.5. Архивация. Руководство. ОВЕН. Pdf. 2018

Контроллеры ОВЕН могут архивировать данные во внутреннюю память или на внешний носитель (USB- или SD-накопитель). Для этого могут использоваться компонент OwenArchiver или библиотека CAA File.

CoDeSys. v2.3. Форум. Owen.ru

Форум компании ОВЕН по Codesys версии 2.3. Вопросы, обсуждения, полезности, примеры.

CoDeSys. Среда программирования ПЛК. Обучение: видеокурсы, уроки, документация, книги, для чайников, статьи.

Источник

Таймеры и триггеры CODESYS. Еще один шаг Arduino к классическому ПЛК

Случается программировать контроллеры (ПЛК) в среде CODESYS. Все, кто имел дело с этой системой, знают, что в любом проекте присутствует библиотека Standard.lib, в которой реализованы базовые таймеры, триггеры, счетчики и некоторое кол-во других функций и функциональных блоков. Многие из этих блоков постоянно используются в программах для ПЛК. А сама библиотека, как и языки программирования CODESYS, является воплощением стандарта IEC 61131-3, т.е. призвана помочь при программировании классических ПЛК задач.

Одна из особенностей программ для ПЛК в том, что основной цикл программы должен выполняться без существенных задержек, в нем не должно быть внутренних циклов с неопределенным временем выхода или синхронных вызовов «задумчивых» функций, особенно это касается коммуникаций по медленным каналам. Обновление входных и выходным образов процесса происходит только на границе основного цикла, и чем дольше мы будем «сидеть» внутри одной итерации цикла, тем меньше мы будет знать о реальном состоянии объекта управления, в конечном итоге сработает watchdog переполнения времени выполнения цикла. Многие могут мне возразить, сказав, что современные ПЛК многозначны, есть с поддержкой аппаратных прерываний. Согласен, но разговор о таких системах не входит в мои планы, я же хочу поговорить о (квази, псевдо — выбирайте) ПЛК однозадачной реализации (без прерываний) на базе микропроцессорной платформы Arduino, в котором есть только один основной цикл. Кстати, не лишним будет сказать, что на написание данной заметки меня сподвигла статья Ардуино-совместимый ПЛК CONTROLLINO, часть 1 о попытке аппаратного воплощения Arduino в пром. ПЛК.

Несколько слов об Arduino. С точки зрения программиста ПЛК, Arduino — это типичный контроллер с одним очень быстрым или, наоборот, очень медленным циклом loop(). На время выполнения цикла не накладывается никаких ограничений, и он может отработать и один, и бесконечное кол-во раз — по замыслу программиста. Когда программа проста и сводится к выполнению последовательных операций, регуляторов, без параллельных событий, то достаточно чередовать операции бесконечными вложенными циклами проверки условий и синхронными задержками типа delay(). Последовательные шаги такой программы будут выполняться буквально построчно, просто и логично. Но, как только возникает необходимость в программировании параллельных операций, необходимо менять парадигму программы.

Читайте также:  Что значит фамилия имя отчество

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

А теперь давайте вспомним ту самую Standard.lib из CODESYS. В ней как раз реализованы МЭК-овские неблокирующие таймеры. Я взял ее за основу и портировал функции таймеров и триггеров в библиотечный код Arduino (С++). Т.е. попытался приблизить Arduino к классическому ПЛК.

Ниже я приведу краткое описание портированных функциональных блоков (FB) CODESYS и их аналоги в моей библиотеке plcStandardLib, все временные диаграммы верны для новой библиотеки Arduino. Подробнее описание исходных блоков можно посмотреть, например, в русскоязычной справке по CODESYS.

TON — функциональный блок «таймер с задержкой включения»

Входы IN и PT типов BOOL и TIME соответственно. Выходы Q и ET аналогично типов BOOL и TIME. Пока IN равен FALSE, выход Q = FALSE, выход ET = 0. Как только IN становится TRUE, начинается отсчет времени (в миллисекундах) на выходе ET до значения, равного PT. Далее счетчик не увеличивается. Q равен TRUE, когда IN равен TRUE, а ET равен PT, иначе FALSE. Таким
образом, выход Q устанавливается с задержкой PT от фронта входа IN.

В Arduino IDE:

Временная диаграмма работы TON:

TOF — функциональный блок «таймер с задержкой выключения»

Входы IN и PT типов BOOL и TIME соответственно. Выходы Q и ET аналогично типов BOOL и TIME. Если IN равен TRUE, то выход Q = TRUE и выход ET = 0. Как только IN переходит в FALSE, начинается отсчет времени (в миллисекундах) на выходе ET. При достижении заданной длительности отсчет останавливается. Выход Q равен FALSE, если IN равен FALSE и ET равен PT, иначе — TRUE. Таким образом, выход Q сбрасывается с задержкой PT от спада входа IN.

В Arduino IDE:

Очень похоже на TON, для краткости:

Временная диаграмма работы TOF:

TP — функциональный блок «импульс-таймер»

Входы IN и PT типов BOOL и TIME соответственно. Выходы Q и ET аналогично типов BOOL и TIME. Пока IN равен FALSE, выход Q = FALSE, выход ET = 0. При переходе IN в TRUE выход Q устанавливается в TRUE и таймер начинает отсчет времени (в миллисекундах) на выходе ET до достижения длительности, заданной PT. Далее счетчик не увеличивается. Таким образом, выход Q генерирует импульс длительностью PT по фронту входа IN.

В Arduino IDE:

Очень похоже на TON, для краткости:

Временная диаграмма работы TP:

R_TRIG — функциональный блок «дeтектор фронта»

Функциональный блок R_TRIG генерирует импульс по переднему фронту входного сигнала. Выход Q равен FALSE до тех пор, пока вход CLK равен FALSE. Как только CLK получает значение TRUE, Q устанавливается в TRUE. При следующем вызове функционального блока выход сбрасывается в FALSE. Таким образом, блок выдает единичный импульс при каждом переходе CLK из FALSE в TRUE.

Пример CODEDESYS на языке ST:

В Arduino IDE:

F_TRIG — функциональный блок «дeтектор спада»

Функциональный блок F_TRIG генерирует импульс по заднему фронту входного сигнала.
Выход Q равен FALSE до тех пор, пока вход CLK равен TRUE. Как только CLK получает значение FALSE, Q устанавливается в TRUE. При следующем вызове функционального блока выход сбрасывается в FALSE. Таким образом, блок выдает единичный импульс при каждом переходе CLK из TRUE в FALSE.

В Arduino IDE:

RS_TRIG — функциональный блок RS-триггер / SR_TRIG — функциональный блок SR-триггер

Переключатель с доминантой выключения, RS-триггер:

Переключатель с доминантой включения:

Входные переменные SET и RESET1 — как и выходная переменная Q1 типа BOOL.

Источник

Сказочный портал