Программирование ПЛК ОВЕН – первый старт в автоматизации
В любой автоматизации главным «мозгом» системы является программируемый логический контроллер. В него можно заложить некоторое слабое подобие искусственного интеллекта (ИИ). Пускай хоть и примитивного. Система может чувствовать с помощью своих сенсоров и датчиков, и реагировать на различные изменения, как живой организм. Может собирать данные или клепать вам продукцию. С помощью какого ПЛК лучше всего делать? Всё зависит от задачи и требований. Конкретно эта статья будет нацелена на программирование ПЛК ОВЕН.
Из этой статьи вы узнаете:
Меня зовут ОВЕН ПЛК
Первые шаги по программированию ПЛК
Приветствую друзья, на связи автор блога, Гридин Семён. Я всегда рад тому, что всё больше и больше людей посещают блог. Это говорит о том, что тема востребованная и интересная. На самом деле у меня очень много материала, который хочется выложить на страницы блога. Медленно и верно решаю поставленную задачу.
Знаете, я в последнее время всё чаще и чаще встречаю в интернете материалы крутых ребят из Boston Dynamics. Их продукция реально впечатляет. Это реальный прогресс в области робототехники. Боюсь даже представить что будет дальше. И интересно и страшно.
Вот кстати одно из интересных решений. Робот пытается открыть дверь, несмотря на то, что человек мешает ему:
А мы приступим к нашей новой статье.
Меня зовут ОВЕН ПЛК
Среди множества промышленных контроллеров, как отечественных, так и зарубежных, оборудование ОВЕН является самым приемлемым, доступным и качественным.
Первое преимущество, которое бросается на глаза — это конечно цена.
Допустим стандартные и наиболее популярные контроллеры ПЛК100 и ПЛК150 вмещаются в цену в 15 т.р. При этом у них сразу на борту есть входы и выходы.
К ним не нужно добавлять дополнительно модули ввода/вывода по внутренней шине. К девайсам с внутренней шиной как раз относятся WAGO, Berghof, ABB. Их ценник просто зашкаливает в размере от 25 т.р. К сожалению в любом проекте внедрить их будет не так то просто.
Второе преимущество, качество и надёжность. Фирма ОВЕН со временем всё больше и больше набирает обороты. Их продукция с каждым годом всё качественнее и качественнее. Как бы народ не ругался. Все ошибки и баги со временем исправляют.
Так вот. Все ПЛК поддерживают среду разработки CoDeSyS версии 2.3. У вас есть возможность ознакомиться на сайте. Можете посмотреть примеры и применить их на практике. Есть отдельная статья с видеоуроками.
На сайте ОВЕН у вас всегда есть возможность получить кучу информации, кучу дополнительных примеров, круглосуточную и доброжелательную тех. поддержку. Вообщем рекомендую.
Из их продукции мне очень нравится работать с ПЛК63/73, ПЛК100 и ПЛК160. Эти контроллеры наиболее надёжные и стабильные. НО… Как и у любого другого оборудования, у них есть куча нюансов. Это нужно понимать.
Во всех статьях, включая и эту, все примеры я буду писать под ОВЕН ПЛК63. Так как у этого контроллера есть буквально ВСЁ, что нам необходимо для локальной автоматики.
У него есть и дискретные входы и дискретные выходы. Есть 8 универсальных аналоговых входов и 2 аналоговых выхода (Всё зависит от модификации). На аналоговые входы можно посадить различные датчики, начиная от термопары и заканчивая датчиком размера (4-20 мА либо 0-10 В). есть два интерфейса RS232 и RS485.
Минусы тоже есть. Один из этих минусов порт интерфейса 232. Порт не очень хороший, может периодически терять связь с компьютером, когда мониторится программа. А если рядом срабатывают контакторы, вообще труба.
Скорость опроса АЦП маленькая, в пределах 50-80 мс. В некоторых процессах может сыграть отрицательно. Лучше всего использовать для измерений температур, давлений и влажности в медленных процессах.
Для того, чтобы связаться с модулями ввода/вывода, нужно писать специальные библиотеки для опроса, простого конфигуратора в таргете ПЛК63 нет.
Такой контроллер лучше всего использовать для отопления, приточной вентиляции, умного дома или как сборщик информации, который скидывает показания в базу данных.
Есть ещё не плохой контроллер, но он будет подороже и побольше, только без экрана. Это ПЛК160.
Скорость опроса аналогового входа составляет около 20 мс (это включая все фильтры, скорость обработки операции и т.д.)
Ну это, как вариант.
Первые шаги по программированию ПЛК
Какие у нас будут следующие действия?
Сначала устанавливаем среду разработки CoDeSyS 2.3, необходимые библиотеки и таргет контроллера ПЛК63. После этого мы можем связываться с оборудованием и писать простенькую программку.
Давайте придумаем какую-нибудь задачу — выведем на экран контроллера наше стандартное «Привет мир!» и при включённом питании будет включать и выключать свой выход в течении определённого времени.
Для простоты понимания напишу программу на графическом языке CFC. Так как он наиболее наглядный и удобный.
Для того чтобы вывести на экран приветствие «Привет мир!» нужно установить специальные библиотеки Ind_Mode и Work_Mode и написать небольшой код:
Давайте обозначим состояние 1 выхода, и зададим время включения и выключения:
Вот что получилось на экране прибора:
В принципе, ничего супер сложного нет.
Если будут вопросы, пишите в комментариях, пишите письма, всегда рад общению. До встречи в новых статьях. Всего доброго, счастья вам.
С уважением, Гридин Семён
kip-world.ru
ПЛК ОВЕН 110: Программируем на CodeSys на CS-CS.Net: Лаборатория Электрошамана
Тестовый стенд для ОВЕН ПЛК 110
Ну что? Я продолжаю рассказывать базовые понятия ПЛК и то, как их программировать. Сегодня я расскажу про свои дальнейшние приключения с ОВЕНом и тем, как я его программировал. Как я уже говорил, программирование ПЛК — это совсем другая религия! Это вам не схемки или кубики в логическом реле двигать! Тут всё значительно мудрее и очень важен грамотный выбор железа, грамотное физическое подключение линий IO и внешних модулей.
Для ПЛК обычно есть два варианта сред разработки: CodeSys и собственные. CodeSys — это бесплатная среда разработки, которая делится на компилятор и ядро. Ядро CodeSys производители ПЛК загружают в него при производстве. И всё, что надо для программирования такого ПЛК — скачать CodeSys и специальные файлы, которые описывают конкретную модель ПЛК.
Второй вариант — это собственное ядро и собственная среда разработки. Тут уже каждый производитель извращается как нравится. Я вот хотел повозиться с Сименсами, но мне рассказали, что их среда разработки требует очень мощный комп и жрёт много ресурсов. Мне это не нравится, и я лучше подберу что-нибудь такое что работает с CodeSys, потому что мне проще поставить один раз хорошую среду, вылизать её настройки и заниматься только программированием.
ПЛК, который заказчик купил под свой щит работает на ядре CodeSys v2. Сейчас везде используется ядро CodeSys v3, а вторая версия ядра является устаревшей. Но так как принципы программирования всё равно одинаковые, то этот пост будет полезен всем начинающим. Да и мне охота поделиться информацией, которую я собирал по крупицам, неделю обложившись документацией. Блин! Мне кажется, что мне уже надо или учебные курсы вести, или посты продавать, гыгы =)
Первое, с чего начинается работа по программированию — это создание тестового стенда. У меня валялись кнопки на DIN-рейку от ABB, и я собрал из них четыре линии ввода: три на бортовом IO ПЛК, а одну — на внешнем модуле для того, чтобы проверить как работает опрос модулей по ModBus.
Кнопки для подачи сигналов на входы ПЛК
Настройка внешних модулей и ModBus
Первое, с чего начинается наше программирование — это с конфигурации железа. Любой внешний модуль имеет на шине RS-485 свой адрес. А ещё модулю надо указать правильные настройки обмена: скорость, чётность и тип протокола обмена.
Каждый модуль или внешнее устройство настраивается по своему. У кого-то надо будет зайти в меню и поменять там цифирки. У кого-то поставить перемычки. А у других устройств для их настройки предусмотрена специальная программа-конфигуратор. У ОВЕНа сделано именно так.
Их модули подключаются штатно под RS-485 к компьютеру и настраиваются при помощи программы. Для того, чтобы подключить RS-485 к компьютеру, понадобится любой преобразователь интерфейсов. Их на рынке навалом и можно использовать любой. Если хочется — можно RS-485 завернуть даже в обычный Ethernet и общаться с модулями или нашей системой по сетке.
Так как вокруг меня был ОВЕН, то я для личных целей купил преобразователь ОВЕН АС-4. Он у них сделан в корпусе на DIN-рейку, питается от самого же порта USB. Из фич — то, что перемычками можно подключать и изменять сопротивление резисторов-терминаторов шины RS-485.
Мы подаём на модуль питание и подключаем его к преобразователю:
Преобразователь ОВЕН АС-4 и настройка модуля IO
Дальше запускаем программу «Конфигуратор М110». Первым делом программа предложит нам задать настройки для подключения к модулю. Если мы только что купили модуль — то можно смело тыкать кнопку «Заводские сетевые настройки». А если модуль уже настроен на какой-то адрес и другие параметры протокола, то нам надо их знать заранее и ввести в программу:
Подключение к модулю IO в программе
Если по какой-то причине мы забыли все настройки модуля (например нам подарили БУшный модуль), то можно запустить сканирование сети. Программа найдёт всё, что может и предложит подключиться к указанному модулю. Ну а если мы совсем ничего не можем — то сам модуль ввода-вывода можно жёстко сброить на заводские установки, если установить одну из перемычек, которые находятся на нём под крышкой. Это описано в инструкции на модуль.
После того, как мы подключились к модулю, программа выдаёт нам все его настройки, которые можно прочитать и записать в модуль. Нас интересуют настройки сети: скорость обмена, сетевой адрес и всякие таймауты. Напоминаю, что у модулей есть фишка: если его не опрашивали по RS-485 указанное время, то он считает что связь оборвалась и выставляет на выходах аварийные значения, чтобы оборудование не натворило дел (сам не поехал лифт или не включились насосы и прочее). В нашем случае модуль управляет лампочками, поэтому мы выставляем все аварийные значения на ноль.
Настройки модуля релейных выходов МУ110-16Р
А некоторые модули ввода-вывода ещё и могут общаться по разным протоколам. Да и даже у самого ModBus есть парочка модификаций: RTU (устройства обмениваются двоичными даными) и ASCII (все данные гоняются в текстовом виде). Мы будем использовать более быстрый протокол ModBus-RTU.
Настройки модуля входов МВ110-16Д
Обратите внимание, что для модулей ввода есть программный фильтр дребегза контактов. Его мы тоже включаем.
Ещё у этой программы есть возможность контролировать состояние входов-выходов. С помощью этого можно отдельно протестировать каждый модуль на работоспособность.
Изучаем CodeSys
Итак, с помощью программы мы настроили все модули на одинаковые параметры связи и дали им адреса. Теперь их можно физически подключить к ПЛК, а сам ПЛК воткнуть в сетку. ПЛК ОВЕН 110 можно программировать тремя способами: через USB, через RS-232 и по сетке. Самый лучший способ из этого — программировать ПЛК по сетке, потому что в этом случае он не перезапускается, а программа заливается туда в горячем режиме. То-есть написали, загрузили, проверили. Что-то исправили? Сразу же загрузили и проверили. Если же программировать ПЛК по USB — то там надо вынимать USB-кабель после заливки программы, что адски неудобно.
Связь с ПЛК 110 по Ethernet
И теперь начинаем разбираться с CodeSys. Я скачал её прямо с сайта ОВЕНа, где она есть в русском варианте. Вообще я не люблю русские переводы специального софта, потому что переводят его те, кто ни фига не понимает в технике. Например, самый адский перевод был у AutoCad: «Вырезать, Обрезать, Растянуть, Расчленить, Взорвать». Или у P-CAD, где Net (соединение) перевели как «Сеть». Но в случае с CodeSys русский перевод мне помог разобраться в терминологии и в том, где что находится. После этого русский перевод мне уже не нужен, и я могу ориентироваться в английской среде свободно.
Сама среда состоит из дерева проекта, где несколько вкладок и элементов дерева. В них отображается как структура программы, так и всякие злобные параметры ПЛК и его внешние ресурсы. Все элементы дерева открываются кучей дочерних окон со своими настройками.
Среда разработки CodeSys v2 для ПЛК 110
Сама CodeSys поддерживает много языков программирования. В том числе и тех, на которых удобно программировать логические реле. Например, можно программировать при помощи блок-схем (CFC). Это как нам в школе алгоритмы учили рисовать в стиле «Начало => Ввод данных => Если .. то => иначе => Конец». Тут это рисуется при помощи блоков:
Пример последовательных логических схем (CFC)
А можно програмировать функциональными блоками (FBD), как на логических реле. В этом случае схема исполняется не последовательно как в CFC, а по сигналам, как в обычной цифровой логике на микросхемах:
Пример разработки на функциональных блоках (FBD)
Для тех, кто переходит с обычных релюшек и автоматики есть возможность писать всё в релейной логике LD, LAD. Тогда всякие сигналы описываются контактами, которые включают или выключают реле:
Пример разработки на релейно-контактной схеме (LD)
А ещё есть язык инструкций IL. Он подойдёт тем, кто любит суровый ассемблер. Смотрите, как он похож на него же:
Пример разработки на языке инструкций (IL)
А на мой взгляд самый удобный язык для сложных задач — это обычный текст ST, который похож на смесь СИ и Pascal одновременно:
Пример разработки на редакторе кода (ST)
Тут тебе есть и комментарии, и возможность написать любые условия.
Внутри CodeSys можно совмещать все эти языки и создавать свои функциональные блоки. Например, вы можете на ST написать сложный блок, который чего-нибудь вычисляет и выдаёт на выходе логическое значение 1 или 0. А потом взять язык FBD и из этих блоков составить «простую» логическую схемку.
Распределяем ресурсы ПЛК
Наше программирование, конечно же, тесно связано с железом. И наша среда CodeSys должна знать то, какие железо мы сейчас используем. Это конечно же понятно: в разных ПЛК есть разное количество памяти, портов ввода-вывода и прочих штуковин.
Поэтому новый проект всегда начинается с выбора платформы. На английском это называется Target. Сама среда никогда не будет знать о всяких ОВЕНах и других ПЛК. Изначально она знает только о некоем абстрактном ядре «3S CodeSys». Чтобы она узнала про наши ПЛК, нам надо пойти на сайт разработчика и скачать оттуда Target-файлы для наших ПЛК.
После этого Target’ы загружаются в CodeSys (на версии 2 этот процесс адски мутный, неочевидный и противный), и мы наконец-то можем творить. Выбираем нужный вариант нашего ПЛК:
Выбор железа для разработки программы под ПЛК
Теперь мы сразу вспоминаем то, что ПЛК — это многозадачная система, внутри которой крутятся задачи — программы, которые что-нибудь делают. Задач может быть несколько, но для работы ПЛК нужна хотя бы одна. В CodeSys она обязана называться «PLC_PROG», и именно её нам сразу предлагают создать после выбора платформы ПЛК.
Сразу же при её создании надо выбрать язык, на котором вы будете писать код. Если вы вдруг ошиблись с названием языка (я постоянно путаю IL и ST), то можно просто удалить эту задачу и создать новую с тем же именем.
Создание основной программы по умолчанию
После этого наш проект создан и среда от нас отстала. Если мы пишем на ST, то в коде PLC_PROG достаточно поставить «;» и программа откомпилируется. Но работать ничего не будет. Почему? А потому что ПЛК не знает, как к его ресурсам обращаться и чего у него вообще есть.
И вот чтобы его этому научить — надо аккуратно и внимательно разобраться с его ресурсами и с тем, как туда прописывать внешние модули ввода-вывода. Всё это кажется лёгким только тогда, когда сам всё понял. А когда смотришь на конфигурацию ПЛК в самый первый раз, то от неё взрывается голова. Я разбирался с этим дней пять, потому что ещё и инструкция по работе с CodeSys на сайте ОВЕНа говорит «Сделайте это и то», но не говорит ПОЧЕМУ так надо делать. Я этот недостаток хочу исправить и потом пошлю ОВЕНу ссылку на эти посты.
Для того, чтобы CodeSys знала про все-все ресурсы и ввод-вывод всей системы на базе ПЛК, это всё надо прописать руками. То-есть, вся конфигурация системы прописывается в том же программном коде жёстко. И поэтому когда вы выбираете всякие модули ввода-вывода, назначаете им параметры связи и адреса, вы должны понимать, что это останется навсегда. А если надо будет поменять адрес устройства — то вам надо будет перекомпилировать проект.
Общий концепт ресурсов и обращения к ним сделан при помощи неких адресов. Адреса эти вычисляет сама среда по нашей конфигурации ПЛК. На скриншоте ниже эти адреса начинаются со знаков «AT %». Чтобы программист не мучился с этими адресами, он может создать обычные программные переменные, которые будут использовать вместо адресов понятные имена типа «WaterPump», которая на самом деле будет говорить о внешнем выходе по адресу типа «%QW6.3.0.0».
Поэтому первой нашей задачей будет изучить окошко «Конфигурация ПЛК» и то, что там можно делать. Давайте на него посмотрим:
Конфигурация ПЛК и его ресурсов
Слева у нас есть дерево, в котором будет показываться вся-вся конфигурация нашей системы. А справа от дерева появляются разные параметры, которые можно настраивать. Там же можно задать для самих себя понятные имена и названия всех объектов системы, чтобы не путаться.
Слева у меня сейчас развёрнута конфигурация самого ПЛК. Чего у нас тут есть? Есть два быстрых входа, 16 обычных входоы (в сумме — 18). Так же есть четыре быстрых выхода и 10 обычных — в сумме 14. Это соотвествует тому, что у этого ПЛК действительно есть. Дополнительно есть Special Input — это кнопка «F1» на самом ПЛК и Special Output — это пищалка ПЛК. Если туда записать «1», то пищалка будет пищать и привлекать наше внимание к системе.
Около этих ресурсов есть обозначение «[FIX]» или «[SLOT]». Если написано «SLOT», то это означает что программно можно заставить среду воспринимать эти входы или выходы не как дискретные 1..0, а например как энкодер или ШИМ-регулятор. Это сделано для того, чтобы облегчить программирование с заставить ПЛК максимально автоматически обрабатывать данные с IO, не нагружая этим программиста. Соотвественно те ресурсы, которые «FIX» изменять нельзя и они всегда будут теми, какие они и есть.
Около каждого ресурса как раз и указан его адрес, по которому к нему можно обращаться. Вот если мы хотим программно включить быстрый выход 2, то нам нужен адрес «%QX2.0». Про то, как назначать адреса переменным, я расскажу позже.
Для каждого ресурса есть свой набор настроек. Вот например для выходов можно точно так же настроить безопасные значения, как и для внешних модулей ввода-вывода:
Настройка безопасных значений выходов ПЛК
Идём дальше! Это-то мы изучали внутренние ресурсы, которые есть на борту ПЛК. А как же нам добраться до внешних ресурсов? Вот у нас есть аж три модуля ввода-вывода. Но где же они?
А нигде! Их надо добавить ручками. Логика тут простая и технарская: то, что у тебя есть физически должно быть и в программе. Давайте вспомним, чего у нас есть физически? Модули? Неа! У нас есть протокол ModBus!
Поэтому мы кликаем на самом ПЛК и выбираем из меню этот самый ModBus (Master) вот так, как показано ниже. Master — потому что главный у нас в сети ПЛК, и именно он будет управлять всеми другими модулями. Так же там есть ещё и другие протоколы обмена для разных вариантов сети. Например можно было вообще взять собственный протокол «ОВЕН» и построить сетку на нём.
Добавляем внешний интерфейс связи
Обратите внимание, что этот протокол сейчас не привязан к физическим проводам ПЛК! После того, как мы добавим наш ModBus, система просто будет знать что есть некий абстрактный протокол, по которому гоняются байтики. Но через какой порт ПЛК это будет работать — она пока ещё не знает!
Что же делать? Придётся научить нашу систему нужному порту. Для этого мы разворачиваем дерево под нашим ModBus’ом и видим искомое. По умолчанию система подставила самый первый попавшийся интерфейс ПЛК — «Debug RS-232». Мы видим около него волшебную надпись «SLOT». Кликаем по ней правой кнопкой мыши и — вуаля! Мы можем заменить его на нужный на RS-485.
Выбираем тип интерфейса RS-485
Причём список замены будет только из тех вариантов, которые действительно есть в именно этом ПЛК. Например в некоторых ПЛК бывает аж два интерфейса RS-485, на которых можно построить две разные сетки ModBus.
И вот только теперь мы дошли до физического уровня: собственно самого RS-485. Для него у нас есть настройки протокола обмена и параметров связи. Если вы помните, то мы все модули конфигурировали на ModBus RTU и скорость обмена 9600. Теперь вставим эти же настройки в нашем ПЛК:
Настраиваем параметры протокола интерфейса
ПЛК сам следит за работой этого протокола и этого интерфейса. Нам не надо программно включать или отключать опрос модулей: он будет делаться автоматически, если есть хоть один внешний модуль, который надо опрашивать.
Вот сейчас мы как раз и добавим наши внешние модули. Сам ОВЕН рекомендует добавлять свои модули как «Unversal ModBus Device» — некое абстрактное устройство. Сделаем так:
Добавляем устройство ModBus
Теперь у нас появился некий внешний модуль, который подключен на нашу шину RS-485 и будет работать по ModBus. Но напоминаю вам то, что протокол ModBus — это просто способ читать и записывать байты в и из устройств. И более ничего. А вот что значит каждый байт и та область памяти, куда его надо записать/прочитать — знает разработчик модуля и разработчик системы на базе ПЛК.
Для каждого модуля надо будет задать параметры связи. Для нас это адрес модуля (ModuleSlaveAddress) и время опроса его контроллером. Контроллер будет автоматически общаться с модулем раз в столько миллисекунд, сколько мы укажем.
Настраиваем параметры устройства
Время опроса позволяет снизить нагрузку на шину связи. Например если модуль управляет лампочками освещения, то его можно опрашивать реже, отдавая время шины каким-нибудь более быстрым модулям аналогового регулирования.
Ну добавили мы модуль, и чего? А как система узнает как рулить его входами или выходами? Вообще, откуда она узнает, где они у него находятся? А узнает она это через человека, который достанет и прочитает инструкцию на модуль. Для любого устройства с протоколом ModBus производитель даёт таблицу, в которой указаны все адреса его регистров. Выглядит эта таблица вот таким образом, например:
Пример регистров устройства из документации
Тут нас интересует два момента. Так как это модуль ввода, то нам надо получать значения его входов. Производитель, чтобы не гонять по сети тьму байтов, упаковал все 16 входов в 16 бит — в два байта, в тип WORD. Значит, нас интересует регистр номер 51, который надо будет читать из модуля. Следующий момент, который нам важен — это проверить команду, которая используется для записи-чтения данных в этот модуль. Иногда они могут отличаться от стандартных.
Отлично! Вот теперь мы всё знаем, чтобы добавить это в наш ПЛК. Тыкаем менюшкой на нашем модуле и выбираем, что добавить. типы в CodeSys называются так:
- 8 Bit — BYTE, байт
- Register — INT, WORD — два байта
- 32 Bit — DWORD, четыре байта
Так как в документации видно что мы читаем двухбайтовое слово — то нам нужен тип «Register input»:
Добавляем регистр устройства в конфигурацию
Теперь задаём параметры именно для этого кусочка: адрес регистра, который читаем и команду, которой читаем.
Настраиваем адрес регистра и способ его опроса
Вот теперь (см. скриншот сверху) ПЛК знает что у нас есть протокол MoBus-RTU на основе интерфейса RS-485, на котором висит устройство с адресом «1», из которого мы читаем два байта из ячейки «51».
А вот как выглядит конфигурация ПЛК для моей системы. У меня стоит один модуль ввода на 16 входов и модуль вывода на 16 выходов. И на будущее для диммирования света стоит модуль аналогого вывода.
Полный список внешних устройств и внешних регистров
Назначение переменных в ПЛК
Вот теперь у нас есть все-все адреса наших ресурсов. Чтобы нам было удобно ими пользоваться, мы заведём для них программные переменные. Это тоже ручная работа, в которой требуется внимательность. А ещё её в CodeSys v2 делать не очень удобно, потому что в табличке для ввода переменных не меняется ширина колонок.
Посмотрим на конфигурацию ПЛК и выцепим оттуда адреса всех наших входов и выходов. Я их подчеркнул красным:
Адреса переменных внутреннего ввода-вывода
А теперь создадим переменные для них. Для этого мы идём в раздел «Глобальные переменные» и начинаем заполнять табличку примерно так:
Создаём переменные внутреннего ввода-вывода
Видите? Мы указываем название переменной и прописываем её адрес и тип. И теперь чтобы включить внутренний выход 1, нам надо написать «MOuts0_1 := TRUE;».
Проделаем то же самое с внешними устройствами. Тут адреса становятся длиннее:
Адреса переменных внешнего ввода-вывода
И редактировать их не совсем удобно. Заполняем переменные:
Создаём переменные внешнего ввода-вывода
Кроме переменных, которые красиво связывают адреса ресурсов и код, можно насоздавать своих собственных переменных для любых задач. Всё эти переменные будут глобальными: они будут доступны из любого места любой программы.
Ну и если теперь залить эту пустую программу (в коде мы ничего не написали) в ПЛК, то он сразу же примется опрашивать наши модули. На фотке ниже я случайно заснял момент, когда ПЛК опрашивает один из модулей.
После запуска ПЛК начинает опрашивать все внешние устройства
Программируем
А дальше начинается колдунство. Мне надо было на тот момент вообще научиться работать с CodeSys. Я тогда не разобратся, можно ли адресовать отдельные биты переменных и написал простые участки кода, которые приводили все переменные внешних ресурсов в удобоваримый для меня код.
Видите, я просто беру значение бита нужной мне переменной (от входа) и заношу его в глобальную переменную, которая уже обозначает конкретную кнопку управления светом.
Код преобразования входных переменных к типу BOOL
То же самое я проделал с выходами:
Код преобразования выходных переменных из типа BOOL
Теперь можно кодить. Для теста я сделал самое простое: нажимаем кнопку — срабатывает выход. То-есть мы просто присваиваем выход входу и наслаждаемся работой мощного ПЛК 😉
Кусочек прошивки для управления освещением на ПЛК
Ещё я нашёл в Сети пример того, как сделать на CodeSys импульсное реле и тоже его протестировал. Кстати, пример лежит на форуме ОВЕНа.
На форуме у них не совсем приятно. Там тусуются ушлые товарищи (не из ОВЕНа), которые в личке каждому новому пользователю сразу предлагают услуги по разработке и поддержке решений на ПЛК. Мне один такой тоже написал. Я ради прикола послал его нафиг и расспросил, почему он это сделал. Ответ был типично маркетологовский: «Ну так если ты тут зарегался, значит ты можешь быть моим клиентом».
В итоге товарищ был послан далеко и надолго. Особенно после того, как стал угрожать мне завалить мой блог за посыл нахуй. М-да. Страшно, в общем, на форуме ОВЕНа.
Задачи
Кратко покажу, чего есть из задач и чего с ними можно делать. Напоминаю: задача — это кусок программы, который ПЛК будет выполнять через указанное время. Есть системные события, которые показаны ниже (запуск ПЛК, остановка ПЛК, перед и после сброса):
Настройка задач в ПЛК
А мы хотим навесить на ПЛК свои собственные задачи. Вот у меня их получилось две штуки. Одна считает импульсы со счётчиков воды, а другая обслуживает управление освещением.
Для каждой задачи задаётся время её исполнения. Оно может измеряться в миллисекундах, часах и даже днях.
Конфигурация задачи в ПЛК
Ну а для самой задачи задаётся то, что будет выполняться:
Настройка вызова подпрограммы в задаче
Связь с ПЛК и заливка программы
Ну и теперь нам осталось только залить нашу программу в ПЛК. Для этого мы идём в меню «Онлайн -> Параметры связи» и создаём там подключение по сетке через протокол TCP.
Настройка связи с ПЛК по протоколу IP
После этого достаточно выбрать команду подключения к ПЛК:
Начинаем подключение к ПЛК
CodeSys устанавливает связь с ПЛК и спрашивает нас о том, что нам надо сделать с программой. Если ПЛК только с завода и там нет никакой программы — то CodeSys предложит загрузить новую программу в ПЛК. А если программа в ПЛК уже была, то система предложит загрузить новую или перезаписать программу полностью:
Запрос среды разработки о загрузке программы в ПЛК
У ПЛК и здесь всё отличается от логических реле. В логическом реле программа загружается навсегда и будет работать после выключения и включения питания реле. А у ПЛК программа загружается просто в память и работает только для момента выключения питания ПЛК. Это сделано специально, чтобы можно было отлаживать программу и не испортить рабочую систему и программу. Скажем, можно поиграться с другой версией программы, а потом передёрнуть питание — и ПЛК будет работать по старому.
Если же мы хотим записать нашу программу в ПЛК навсегда (чтобы она работала при следующих включениях питания), то нам надо выбрать пункт «Создание загрузочного проекта». В этом случае программа без запросов записывается в ПЛК и будет выполняться при следующем включении его питания.
Создание загрузочного проекта в ПЛК
Из дополнительных возможностей можно загрузить в ПЛК исходники проекта или любой файл (размером несколько мегабайт). Это полезно, если мы хотим оставить внутри ПЛК архив документации по всему проекту.
При подключенной связи с ПЛК можно наблюдать как и чего работает и производить отладку программы. Вот как выглядит это на нашей:
Работа среды CodeSys в режиме отладки программы
Собственно по программированию всё. Если сказать всё сжато, то для того чтобы начать работать с ПЛК, надо занести в него все его ресурсы и внешние модули. После этого можно назначить переменные по адресам и писать обычный программный код.
Библиотеки
А ещё под CodeSys есть много библиотек с готовыми функцями. Самая известная среди них — библиотека OSCAT. Я её скачал и нашёл там много интересного. Например вот модуль CLICK, который может определять одинарное, двойное и тройное нажатие на кнопку. При помощи него можно делать например так, чтобы если мы погасили весь свет одной кнопкой, то при двойном нажатии на неё весь свет включился там же, где и был включен.
Пример из библиотеки OSCAT: Определение количества нажатий
А вот навороченный диммер с кучей предустановок и возможностей. Сигнал с диммера можно направить на модуль аналогового вывода или на диммер, который управляется по Modbus напрямую и управлять освещением.
Пример из библиотеки OSCAT: Многофункциональный диммер
Ну а я же сделал для заказчика простую программу включения и выключения света и реализацию функции защиты от протечек. Про это я расскажу позже в третьей части статьи.
cs-cs.net
ОВЕН ПЛК100 | Лучшие публикации о ПЛК и умном доме / PLController
Программируемый логический контроллер ОВЕН ПЛК100 предназначен для создания систем автоматизированного управления технологическим оборудованием в энергетике, на ж/д транспорте, в различных областях промышленности, жилищно-коммунального и сельского хозяйства, на опасных производственных объектах (например Котлонадзора), подконтрольных органам Ростехнадзора.
Назначение контроллера ОВЕН ПЛК100
- Создание систем управления малыми и средними объектами.
- Построение систем диспетчеризации.
Особенности ОВЕН ПЛК100
- Компактный DIN-реечный корпус.
- Дискретные входы/выходы на борту.
- Наличие последовательных портов (RS-485, RS-232) и Ethernet.
- Расширение количества точек ввода/вывода осуществляется путем подключения внешних модулей ввода/вывода по любому из встроенных интерфейсов.
- Два варианта питания: 220 В переменного тока и 24 В постоянного тока.
Конкурентные преимущества ОВЕН ПЛК100
- Отсутствие ОС, что повышает надежность работы контроллеров.
- Скорость работы дискретных входов – до 10 КГц при использовании подмодулей счетчика.
- Большое количество интерфейсов на борту, работающих независимо друг от друга: Ethernet, 3 последовательных порта, USB Device для программирования контроллера.
- Расширенный температурный диапазон работы: от –20 до +70 С.
- Встроенный аккумулятор, позволяющий «пережидать» пропадание питания: выполнение программы при пропадании питания и перевод выходных элементов в «безопасное состояние».
- Встроенные часы реального времени.
- Контроллер поддерживает работу с нестандартными протоколами по любому из портов, что позволяет подключать такие устройства как электро-, газо-, водосчетчики, считыватели штрих-кодов и т.п.
Программирование контроллеров ОВЕН ПЛК100
Программирование контроллеров ОВЕН ПЛК100 осуществляется профессиональной системой программирования CODESYS v.2. Система программирования CODESYS для покупателей контроллеров ОВЕН предоставляется бесплатно. Получить более подробную информацию по системе программирования CODESYS и скачать её можно с нашего сайта или с сайта производителя www.3s-software.ru.
Сервисное программное обеспечение ОВЕН ПЛК100
Программа обновления прошивки (внутреннее ПО) контроллера ОВЕН ПЛК100 и таргет-файлы можно скачать в разделе «Сервисное ПО контроллеров ОВЕН ПЛК100».
Дополнительные утилиты
Для удобства пользователей специалистами компании ОВЕН созданы дополнительные утилиты:
- EasyWorkPLC – утилита для технолога, позволяющая изменять значения параметров, не изменяя при этом программу контроллера. Работает без CODESYS.
- PLC_IO – утилита для работы с файловой системой контроллера, например, запись/считывание файлов с ПЛК. Работает без CODESYS.
Подробнее узнать про утилиты и скачать их можно на странице Утилиты EasyWorkPLC и PLC_IO. Ознакомиться с сертификатами можно скачать на странице сертификатов к приборам.
Функциональная схема
Поддерживаемые интерфейсы и протоколы
ОВЕН | RS-232 RS-485 | Поддержка модулей ввода/вывода линейки ОВЕН Мх110 Работа в сетях ОВЕН совместно с ТРМ2хх |
Modbus RTU Modbus ASCII | RS-232 RS-485 | Поддержка модулей ввода/вывода ОВЕН Мх110 и операторских панелей (ОВЕН СП307/СП310), связь со SCADA-системами. |
Modbus TCP | Ethernet 10/100 Mbps | Передача данных на верхний уровень (в SCADA-системы). |
DCON | RS-232 RS-485 | Поддержка модулей ввода/вывода ICP DAS I-7ххх, АDAM-4хххх |
GateWay (протокол СODESYS) | RS-232 Ethernet 10/100 Mbps USB-Device | Программирование контроллера, отладка пользовательской программы. Работа с OPC-сервером СODESYS GateWayСвязь с контроллерами других производителей на базе СODESYS. |
Контроллеры ОВЕН ПЛК позволяют организовать шлюз между приборами с протоколом ОВЕН (RS-485) и промышленными сетями с протоколами Modbus, Modbus TCP, DCON.
Пользователь имеет возможность реализовать в среде программирования СODESYS собственный протокол, не поддерживаемый ОВЕН ПЛК. В этом случае он может воспользоваться специальной библиотекой, которая открывает низкоуровневый доступ к последовательным портам ОВЕН ПЛК (библиотека входит в комплект поставки контроллера).
Модификации
Лицензионное ограничение области памяти ввода/вывода
Контроллеры ОВЕН ПЛК выпускаются в двух модификациях по лицензионному ограничению размера области памяти ввода/вывода (т.н. области %I+%Q+%M или области отображения процесса):
- ОВЕН ПЛК-Х.Х-M – контроллеры с ограничением объема области памяти ввода/вывода до 25 Кбайт;
- ОВЕН ПЛК-Х.Х-L – контроллеры с лицензионным ограничением объема области памяти ввода/вывода до 360 байт.
Контроллеры ОВЕН ПЛК-Х.Х-L имеют более низкую цену.
ВНИМАНИЕ! Лицензионное ограничение распространяется только на область памяти ввода/вывода (область отображения процесса). Максимальное количество внутренних переменных программы ПЛК не зависит от лицензионного ограничения и определяется только размером доступной оперативной памяти.
Выбор типа лицензии ОВЕН ПЛК
Для выбора типа лицензии ОВЕН ПЛК необходимо подсчитать объем доступной памяти ввода/вывода для организации сетевого обмена со всеми внешними устройствами. Скачать алгоритм расчета.
Удобным способом, который позволяет точно проверить, хватит ли доступного объема памяти ввода/вывода, является способ создания проекта. Не приобретая контроллер, но установив на компьютере CoDeSys и Target-файл, вы можете создать проект и в окне PLC_Configuration подключить все необходимые модули. Если памяти достаточно, компиляция проекта пройдет успешно, если же нет – CoDeSys выдаст ошибку. При компиляции будут учтены все особенности, в том числе требования по выравниванию переменных. Для осуществления подобной проверки собственно программу контроллера писать не требуется.
Элементы управления
Светодиодная индикация: – наличия питания; | |
Кнопка «Старт/Стоп» предназначена для запуска и остановки программы в контроллере. | |
Скрытая кнопка «Сброс» предназначена для перезагрузки контроллера (нажимается тонким заостренным предметом). |
Габаритные размеры
Схема подключения
Схема подключения ОВЕН ПЛК100-24.К
Схема подключения ОВЕН ПЛК100-24.Р
Схема подключения ОВЕН ПЛК100-220.Р
Схема подключения дискретных входов ПЛК100
Схемы подключения к ПЛК100 дискретных датчиков с полупроводниковым выходным каскадом
Примечание
Для подключения к ПЛК100-24 датчиков n-p-n по схеме «с общим минусом» рекомендуется использовать дополнительно устройство ОВЕН ПДИМ-8
Кабели
КС1 | Применяется для прошивки и программирования контроллеров: — ПЛК100 (порт RS-232 DEBUG) | 1,5 2,7 | |
КС2 | Применяется для соединения контроллеров ПЛК100 (порт RS-232 DEBUG) с панелями оператора ИП320 (порт RS-232), СП270, СП307, СП310 (порт PLC, RS-232) | 1,5 2,7 | |
КС3 | Применяется для соединения контроллеров ПЛК100 (порт RS-232 DEBUG) с модемом ПМ01[M02] (порт RS-232, соединитель Х2) | 1,5 |
Схемы работы ОВЕН ПЛК100 в сети
Возможная схема работы контроллера ОВЕН ПЛК100 в промышленной сети
plcontroller.ru
Учебный центр ОВЕН
г. Москва, офис компании ОВЕН Тел.: (495) 64-111-56, [email protected]
Курс посвящен вопросам реализации интерфейса взаимодействия пользователя с контроллером. Или, проще говоря, созданию и настройкам мнемосхем и экранов для вывода на сенсорный дисплей СПК. На курсе полноценно разбираются свойства основных графических элементов CODESYS V3.5, включая таблицы, тренды, различные индикаторы. | Подробнее |
Если вы планируете использовать ПЛК1хх и хотите лучше ознакомиться с возможностями котроллеров ОВЕН. Если вам нужно разобраться с CODESYS 2.3. И быстро! Если нет времени и дорого ехать на базовый курс в Москву. Если нужно удаленное обучение через интернет в удобное для вас время. Если вы не программист, и самостоятельное освоение CODESYS для вас затруднительно. Тогда мы приглашаем вас принять участие в интернет-курсе «Программирование ОВЕН ПЛК1хх в среде CODESYS 2.3». | Подробнее |
«ПР200: базовый курс» освещает вопросы, связанные с настройкой и первым опытом создания пользовательских алгоритмов для программируемых реле ОВЕН ПР200 и ПР1хх. Задача курса – помочь освоить основные приемы создания алгоритмов, настройки экрана и подключения внешних модулей ввода-вывода. В процессе обучения даются необходимые базовые навыки работы со средой программирования OWEN Logic. | Подробнее |
Базовый курс – это первое знакомство с программированием контроллеров ОВЕН в среде CODESYS 2.3. Курс не требует специальной подготовки, только уверенное общение с компьютером. После освоения материалов курса участники готовы делать первые полноценные алгоритмы работы с контроллерами ПЛК1хх, модулями ввода-вывода Мх110 и операторскими панелями ИП320. | Подробнее |
Базовый курс СПК – это первое знакомство с программированием контроллеров в среде CODESYS 3. Основная задача курса – показать и научить использовать максимально простые и понятные способы работы с системой программирования. После прохождения курса участники готовы делать первые алгоритмы для панельных контроллеров СПК, а также пробовать свои силы в программировании ПЛК3хх и МОДУС. | Подробнее |
Курс адресован тем специалистам, кто планирует связывать оборудование АСУ ТП в информационную сеть для отображения информации на операторских панелях.Мы постарались организовать обучение так, чтобы участвовать в нем могли специалисты, пока не имеющие опыта использования панелей оператора.Для тех, кто хорошо изучил возможности панелей оператора ОВЕН, например ИП320, данный курс также будет полезен с точки зрения новых расширенных возможностей СП3хх, которые не были реализованы в предыдущих версиях оборудования ОВЕН. | Подробнее |
Курс посвящен взаимодействию устройств в системах c ПЛК1хх, построенный на передаче информации по проводным интерфейсам (RS485, RS232, Ethernet). Курс необходим специалистам, которые в своих задачах часто используют модули ввода-вывода Мх110, операторские панели и вывод информации в SCADA системы, архивацию значительного числа параметров. Курс ModBus доступен для участников, прошедших базовый курс. | Подробнее |
Продвинутый курс – это следующая ступень в освоении CODESYS 2.3. Он практически целиком посвящен вопросам программирования. Полноценно разбираются основные языки, работа с пользовательскими библиотеками, визуализацией. Продвинутый курс предназначен для повышения квалификации специалистов с опытом работы с ПЛК, прошедших базовый курс. | Подробнее |
Курс посвящен созданию алгоритмов для ПЛК110 в новой версии среды MasterSCADA. Разбираются принципы работы со средой программирования, стандартные функции и функциональные блоки, загрузка проекта в ПЛК. Большое внимание уделено созданию и настройке визуализации проекта. | Подробнее |
owen.ru
ПЛК ОВЕН 110: Обзор железа и базовые принципы работы на CS-CS.Net: Лаборатория Электрошамана
ПЛК ОВЕН 110 и модули ввода-вывода для него
А теперь после простых логических реле погрузимся в мир суровых ПЛК! Попался мне тут в горячие руки адский отечественный ПЛК для одного щита, про который я уже упоминал, когда ругался на размер места в щитах. Щит я успешно собрал и сдал под конец 2015 года, и теперь сделаю небольшой цикл постов про ПЛК и то, с чем их едят.
Так получилось, что ПЛК оказался фирмы ОВЕН (http://www.owen.ru/). Можно сказать, что я провёл тестирование этого ПЛК и вообще познакомился с их продукцией и имею своё мнение на их счёт. Контора мне понравилась тем, что у них за небольшие деньги можно найти хорошие решения для всяких сфер автоматизации. Например вы можете купить контроллер с сенсорным дисплеем примерно за 16-17 тыр, навесить на него периферии и получить более-менее рабочую систему. У ОВЕНа есть своя линейка модулей ввода-вывода, которые управляются по Modbus и работают с другими системами… в общем, ребята они молодцы, но особенности работы их продукции надо знать и учитывать!
Ну а мы возвращаемся к миру ПЛК. Как обычно, напоминаю теорию. ПЛК — это фактически настоящий полноценный компьютер, только со своей собственной операционной системой, средой разработки и компилятором. Внутри ПЛК крутится наша программа, которая состоит из нескольких задач — подпрограмм. В этих задачах мы можем опрашивать сигналы, чего-нибудь вычислять и чем-нибудь управлять. Сам ПЛК знает (мы это описываем в программе) о подключенных внешних устройствах и занимается опросом их по ModBus, считывая с них разные данные и передавая их нам в программу.
Особенностями ПЛК является то, что на них можно навесить очень много линий ввода-вывода, но эти линии будут слабенькие по мощности. И если мы захотим заменить кучку импульсных реле на один ПЛК, то нам надо будет считать деньги и обвешивать ПЛК контакторами или мощными промежуточными релюшками.
В мою суровую мастерскую (которая пока ещё находится у меня на дому) попал ПЛК ОВЕН 110-32. Я погрузился в то, как думали его разработчики и расмотрел его со всех сторон. Этот ПЛК из старой 110-ой серии, которая работает на ядре Codesys v2. Сейчас ОВЕН обновляет эту линейку на Codesys v3.
У этого ПЛК есть 18 входов и 14 релейных выходов. Из интерфейсов тут есть RS-232, RS-485, USB и Ethernet. На передней панели есть кнопка для запуска или остановки программы ПЛК и кнопка «F1», которую можно запрограммировать под любую нужную нам функцию — в программе она видится как обычный цифровой вход.
Основной блок контроллера ОВЕН ПЛК-110/32
Разъём сетки они поставили сбоку ПЛК и взяли его с индикацией обмена данными. Это здорово, потому что сразу можно видеть — работает сетка или не работает.
Клеммные блоки для подключения сигналов к контроллеру
Обратите внимание, какой БОЛЬШОЙ этот ПЛК! Хоть в его документации и указано, что он крепится на DIN-рейку, но его размеры гораздо больше размеров обычного автомата и пластроном щита он не закроется. В мире ПЛК это вполне себе нормально и естественно.
Клеммы для подключения проводов у ПЛК сделаны быстросъёмные, а контакты посеребрёнными. Для того чтобы скинуть клеммный блок, надо открутить парочку винтов и поддеть его отвёрткой. Клеммы и снимутся сразу все:
Блоки контактов снимаются для быстрой замены ПЛК
А в реале это выглядит таким образом:
Пример снятия блока контактов на живом щите
Но разработчики хоть и позаботились о быстрой замене ПЛК, но не учли парочку моментов, которые следовало бы доработать. Первый момент — это то, что на клеммном блоке нет нормальных пазов для поддевания его отвёрткой. Я пока пытался понять, куда отвёртку надо запихивать, пару раз чуть корпус не отломал =). А второй момент — это винты, которые фиксируют клеммный блок. Их надо было сделать невыпадающими! А то так откроешь шкаф, открутишь — и привет винтам!
Я залез во внутренности ПЛК и разобрал его до нитки. Конструкция ПЛК очень удобная для сборки и изготовления. ПЛК внутри представляет собой стопочку из плат, которые фиксируются в пазах корпуса и стоят друг на друге. На самом верху стоит процессорная плата, ниже плата с IO, а в самом низу — блок питания.
Внутренности ПЛК ОВЕН 110
И тут я кое-чего вспомнил и рассмеялся. Чегой-то мне эта конструкция напоминает? А напоминает она уже устаревшие контроллеры Siemens Simatic S-200, конструкция которых точно такая же: пластиковый корпус на защёлках и платы стопочкой. Так что можно стебаться, что ПЛК ОВЕН — это русский Simatic S-200 =)
Внутренности ПЛК Simatic S-200
Сам ПЛК построен на базе процессоров ARM, как я понимаю. Компоновка придумана хорошо — собрать всю низковольтную фигню и внешние интерфейсы на процессорной плате. На этой же плате находится кучка светодиодов, которые показывают состояние входов и выходов и звуковой динамик, который может пищать, привлекая внимание к ПЛК (правда только одним тоном звука).
Основная плата контроллера с CPU
Сзади стоит небольшой аккумулятор, который может поддерживать работу ПЛК при пропадании питания и поддерживает работу часов реального времени. Это тоже интересная фишка. Если питание ПЛК кратковременно пропадает, то он отключает нафиг все выходы, но продолжает выполнять программу. Если питание появляется в течение нескольких секунд (до 30 — настраивается в конфигурации), то ПЛК не перезагружается, а продолжает работать дальше, снова подключая выходы.
Задняя сторона платы контроллера с резервным аккумулятором
Ввод-вывод на ПЛК сделан на отдельной плате. В качестве входных элементов тут используются низковольтные дискретные входы (+24 вольта) на оптопарах. У всех входов есть один общий контакт «SS». Его можно подключить к одному полюсу питания, а второй полюс питания подавать на сами входы. Причём полярность не важна: можно сделать входы, которые надо соединять с GND или входы, которые надо соединять с +24V.
Плата входов и выходов (IO) с реле
Выходы ПЛК сделаны на реле. Снова обращаю внимание на то, что ПЛК не предназначен для того, чтобы рулить мощными нагрузками. Тут стоят реле всего на 5А активной нагрузки, которые надо защищать автоматом мелкого номинала! Так что если мы хотим управлять при помощи ПЛК даже освещением — нам надо будет ставить внешние релюшки.
Реле крупным планом
Блок питания ПЛК. Это импульсный блок питания, но выполнен он хреново. Во-первых «штатная» фишка ОВЕНов — это то, что их блоки питания свистят (этим грешили старые блоки питания у D-Link) из-за плохой пропитки трансформаторов. А во-вторых, они достаточно ощутимо греются, так что около контроллера в шкафу надо оставлять свободное место для его лучшего охлаждения.
Плата импульсного блока питания ПЛК
Провода от блока питания припаяны и залиты термоклеем, чтобы пайка не оторвалась. Это хорошее решение!
Пайка проводов от блока питания к основной плате
Модули ввода-вывода
Также ОВЕН делает свои собственные модули ввода-вывода, которые работают по протоколу ModBus. Эти модули можно использовать и в любых других системах, или с контроллерами ОВЕН. Модули есть для дискретных входов, дискретных выходов, дискретных входов и выходов и для аналоговых входов и выходов. Вот именно этими модулями как раз и можно наращивать линии IO в любом количестве.
Модуль ввода-вывода ОВЕН МВ110-16Д
Модули имеют универсальное питание от 24 до 230 вольт сети и по конструкции такие же, как и сам ПЛК: со съёмными клеммами и в таком же форм-факторе. Настройки модуля (сетевой адрес, параметры связи) конфигурируются специальной программой (мы рассмотрим это в следущей части поста).
У модулей есть ещё одна классная фишка — таймаут связи и безопасное состояние выходов. Когда ПЛК управляет какими-нибудь приводами или вообще чем-нибудь, от чего зависит безопасность людей, то очень важно чтобы при сбое программы вся техника останавливалась (приводы — например, кабина лифта) или наоборот включалась (вентиляция в каком-нибудь тоннеле для того, чтобы там всегда был свежий воздух).
В настройках модулей можно задать время таймаута. Если к модулю не обращались по RS-485 в течение этого времени, то модуль считает что связь потеряна, ПЛК заглючил и устанавливает заданные (тоже настраиваются) безопасные состояния выходов. А когда связь восстанавливается — то ПЛК сам автоматически загрузит в него нужные значения выходов или входов.
Второе западло, которое нас ждёт с модулями — это разные способы подключения сигналов IO к ним. Выше я писал, что у ПЛК все входы имели один общий контакт и можно было сделать так, чтобы он был или общим плюсом или общим минусом. А вот у модулей IO есть только общий минус, один на все.
Поэтому при разработке решений на ПЛК надо всё это учитывать, чтобы не получилось что одна половина сигналов с устройства приходит на сам ПЛК и подключается по одной схеме, а другая — на модуль IO по другой схеме. Именно поэтому некоторые ПЛК и выпускают без IO на борту: проще набрать внешних модулей IO и собрать на них всё IO в едином стиле, чем возиться с разными способами подключения IO к ПЛК и к внешним модулям.
Что касается выходов, то у этих модулей они собраны в группы по три-четыре выхода и на все эти выходы есть один общий контакт (один для каждой группы). Поэтому нам снова придётся грамотно проектировать схему так, чтобы один общий сигнал обслуживал у нас, скажем +24 вольт, а другой — +12.
Я заглянул в один из модулей (дискретного ввода). Его конструкция аналогичная конструкции у ПЛК.
Процессорная плата модуля
Вот сами оптопары входов:
Плата входов (оптопар) модуля МВ110-16Д
А вот и блок питания. Он выполнен как-то хитро так, что обслуживает сразу два напряжения: низковольтное +24 и сетевое переменное 230.
Блок питания модуля МВ110-16Д
В этот раз в модуле почему-то никто провода термоклеем не закреплял. И качество блока питания в модулях IO хуже, чем в ПЛК. Если ПЛК слега посвистывал, то модуль аналогового вывода конкретно так свистел, а модуль релейного вывода пошуршивал тем сильнее, чем больше релюшек включено.
Неаккуратная пайка проводов между платами модуля
С этим модулем ввода тоже повезло: один из каналов ввода оказался дохлым сразу с завода. Причём видно, что на печатной плате (первая фотка открытого модуля) один из светодиодов обведён кружочком. Дохлым является соседний вход от этого обведённого светодиода. Может быть этот модуль с ремонта или с заводским браком? Шут его знает!
Но это был повод пообщаться с круглосуточной техподдержкой ОВЕНа. Техподдержка мне понравилась тем, что она в первую очередь заботится о том, чтобы скорее запустить систему на базе ПЛК. То есть, там не расспрашивают что сдохло, а общаются примерно так: «Конфигуратор модуля видит работу входа? Нет? Ща мы вышлем вам заводскую прошивку! Если после этого не увидит — тащите, заменим».
Прошивка не помогла, и глюк оказался аппаратным. Так что сам заказчик уже без меня этот модуль заменил и заодно заценил, насколько удобно вынимать модуль из готового щита с этими быстросъёмными клеммами.
Ну а я сам после того, как всё отфоткал для блога, собрал себе тестовый стенд и стал разбираться с тем, как этот ПЛК программируется.
Общая система: ПЛК и модули ввода-вывода
Об этом я расскажу вам в следующей части поста. Программирование ПЛК — это совсем другая религия, нежели программирование логического реле!
cs-cs.net
1 | Задержка включения реле по срабатыванию дискретного входа. Работа с таймером TON и обработка фронтов тригерами R_TRIG и F_TRIG | Скачать | ||||||||
2 | Работа с входами/выходами контроллера и таймерами TON и TOF | Скачать | ||||||||
3 | Реализация высокоскоростного таймера Counter 16 Bit | Скачать | ||||||||
4 | Задание ШИМ на выходе ПЛК | Скачать | ||||||||
5 | Работа с библиотекой SysLibTime. Получение реального времени из ПЛК. Задание даты и времени в ПЛК | Скачать | ||||||||
6 | Подсчет времени наработки станка с помощью библиотеки SysLibTime | Скачать | ||||||||
7 | Работа с модулем Archiver. Создание архива в памяти ПЛК | Скачать | ||||||||
8 | Работа с SysLibFiles. Создание файловых архивов. Анализ свободного места в ПЛК. Перезапись старых архивов | Скачать | ||||||||
9 | Использование менеджера задач для вызова POU | Скачать | ||||||||
10 | Вызов различных POU на различных языках | Скачать | ||||||||
11 | Реализация ПИД регулятора с АНР | Скачать | ||||||||
12 | Реализация простого ПИД регулятора | Скачать | ||||||||
13 | Реализация импульсного ПИД регулятора с ручным управлением | Скачать | ||||||||
14 | Реализация алгоритмов САУ-МП | Скачать | ||||||||
15 | Реализация графиков уставки | Скачать | ||||||||
16 | Работа с быстрыми входами/выходами по прерыванию высокочастотного таймера | Скачать | ||||||||
17 | Библиотека ПИД регулятора. Испытана на таких параметрах как: разрежение в топке котла, уровень в барабане котла, соотношение топливо-воздух, нагрузка | Скачать | ||||||||
18 | Получение заводских параметров ПЛК: заводской номер, дата выпуска и д.р (ПЛК1хх [М02]) | Скачать | ||||||||
19 | Получение статуса и параметров интерфейсов Ethernet и PPP (ПЛК1хх [М02]) | Скачать | ||||||||
20 | Получение данных о проекте: имя, автор, дата последнего изменения и д.р | Скачать | ||||||||
21 | Реализация команды ping на ПЛК (ПЛК1хх [М02]) | Скачать | ||||||||
22 | Пример архивации на USB накопитель (ПЛК1хх [М02]) | Скачать |
owen.ru
ПЛК160 [М02] контроллер для средних систем автоматизации с DI/DO/AI/AO (обновленный)
ОВЕН ПЛК160 [М02] – линейка программируемых моноблочных контроллеров с дискретными и аналоговыми входами/выходами на борту для автоматизации средних систем.
Оптимальны для построения систем автоматизации среднего уровня и распределенных систем управления.
Рекомендации к применению
Для построения распределенных систем управления и диспетчеризации с использованием как проводных, так и беспроводных технологий:
- В системах HVAC
- В сфере ЖКХ (ИТП, ЦТП)
- АСУ водоканалов
- линии по дерево- и металлообработке (распил, намотка и т.д.)
- Для управления пищеперерабатывающими и упаковочными аппаратами
- Для управления климатическим оборудованием
- Для автоматизации торгового оборудования
- В сфере производства строительных материалов
- Для управления малыми станками и механизмами
Преимущества ОВЕН ПЛК160 [М02]
- Наличие встроенных дискретных и аналоговых входов/выходов на борту.
- Скоростные входы для обработки энкодеров.
- Ведение архива работы оборудования или работа по заранее оговоренным сценариям при подключении к контроллеру USB-накопителей.
- Простое и удобное программирование в системе CODESYS V.2 через порты USB Device, Ethernet, RS-232 Debug.
- Передача данных на верхний уровень через Ethernet или GSM-сети (GPRS).
- 3 последовательных порта (RS-232, RS-485):
- увеличение количества входов-выходов;
- управление частотными преобразователями;
- подключение панелей операторов, GSM-модемов, считывателей штрих-кодов и т.д.
- Наличие двух исполнений по питанию (220 В и 24 В).
Схема применения ПЛК160 [M02]
Сравнительная таблица ПЛК160 и ПЛК160 [М02]
Вычислительные ресурсы | ||
Центральный процессор | RISC-процессор на базе ядра ARM-9, 32 разряда | RISC-процессор Texas Instruments Sitara AM1808 |
Частота процессора | 180 МГц | 400 МГц |
Объем энергонезависимой памяти | 4 Мб (Flash) | 6 Мб (Flash) |
Объем Retain-памяти | до 16 кБайт (SDRAM) | 16 кБайт (MRAM) |
Число циклов перезаписи | 50 000 | не ограничено |
Внешние интерфейсы | ||
USB-Host (подключение переферии и архивация на флеш-накопители) | Отсутствует | Есть |
Питание +5 В в RS-232 | Отсутствует | Есть |
Работа в мобильных сетях1 | SMS, CSD | SMS, CSD, GPRS |
Быстродействующие дискретные входы | ||
Максимальная частота входного сигнала | до 10 кГц | до 100 кГц |
Клеммник | ||
Тип клеммника | Съёмный | Съёмный с невыпадающими винтами |
Батарея/Аккумулятор | ||
Источник питания для часов реального времени | Аккумулятор LIR2466 | Батарея CR2032 |
Источник питания для Retain-памяти | Не требуется, используется MRAM | |
Способ замены | Требуется перепайка | Простая замена, без перепайки |
Условия эксплуатации | ||
Диапазон рабочих температур | -10…+55 °С | -40…+55 °С |
ПО, Библиотеки и пр. | ||
Механизм записи Retain-памяти | По событию (отключение питания) |
|
USB-драйвер для подключения ПЛК к CODESYS | Windows XP | Windows 7/8/10 |
Работа с быстрыми входами из прерывания высокочастотного таймера | Не поддерживается | Поддерживается |
Функциональная схема
owen.ru