Подключение к плк110 по usb

Обновлено: 07.07.2024

Овен ПЛК110 Page 1

но при необ ход имост и может б ыть у стано влено и д руг ое.

− Net Mode (Реж им раб оты в сети) – з начения выбир аются из списка

(«TCP» и «Serial »), значен ие по умолчанию – «TCP». Вариант « TCP» –

подчи ненное устрой ств о работает по прот околу T CP используется инте р-

фейс Ether net, опраш иваемое внешн ее устройс тво иденти фи циру ется по

IP - адре су . Вариант « Serial» – подчи ненное устройс тво осущест вляет о б-

мен данн ыми че рез последовател ьный интерфейс, опраш ива емое вн е ш-

нее ус тройство идент ифи циру ется по адр есу в сети.

− Module S la ve Address (Адрес подчиненного устройства ) – диап азон

значени й от 1 д о 247, знач ение по у молч анию – 1.

Вни ман ие ! Значение «0» – спец ифичн о и использу ется для широковещ а-

тельны х сооб щений . Наприме р, при работ е через шлюз.

− Work mode (Р ежим работы) – задает режим рабо ты моду ля ModBus

(Maste r) при опросе внешних устройств может иметь нескольк о значений

By Poll time – «по времени» – контрол ируем ые устройства опраши ваются

с периоди чность ю, заданной в парамет ре Polling time (Перио д опроса

By Va lue cha nge – «по изменению значени я переменных » – модуль Mo d-

Bus (Maste r) генерир ует запрос к соответс твую щему Sl ave устр ойству

при измен ении зн ачен ий вых одных перем енных модул я;

Прим ечани е. Выходн ые перемен ные – зн ачения , которы е мод ул ь

ModBus ( Mast er) пер едает (за писывает) в S lave - у стройства; вход ные

перемен ные – пара метры , значение которых Мастер запрашивает у

Both – «оба варианта» – опрос параметр а производи тся с временным и н-

тервалом , заданным в пара метре « Polling tim e» и тог да, когд а изм е-

няются знач ения выходных переменных (в соответств ии с значение м

By Command – «по команд е» – произв оди тся однократная пос ылка запро-

са, когда в командн ый канал «Comm and» перемен ной запис ываетс я

Вни ман ие ! Для переменных с командным каналом при работе в реж и-

ме By Command (По команде) управлен ие осущ ествл яется следу ю-

щим образом : первая посылка значен ия 0x00F F в командный канал

включ ает функци онировани е этой перемен ной, повторн ая посыл ка

значения 0x00FF иниц ииру ет проведен ие опр оса. Ан алогич но опр ос

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

гих режимах. При посыл ке в командн ый канал значения 0x00FE пер е-

− A moun t Repe at (Число повторов) – определя ет число повторов чте-

ни я/записи пе ремен ных при неудач ном сеан се св язи . В реж име «По вр е-

мени » (Polling time) значен ие этого параметра не использ уется. Рекоме н-

ду емый диап азон зна чений от 0 до 5, зн ачен ие по у молчани ю – 0.

− Byte Se quence (Порядок передачи байтов посыл ки) – значения выб и-

раются из списка: « Native » (поряд ок б айтов, исп ользу емый в ПЛК) и

« T race _ mode » (порядок байтов, испол ьзу емый в программе Tra cemod e ).

Значен ие по у молчан ию – « Trace _ mode». Парамет р определ яет, в ка ком

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

Щит с автоматикой IPM для коттеджа (Поварово)

Щит с автоматикой IPM для коттеджа (Поварово)

Автоматика моего санузла на логическом реле ABB CL

Автоматика моего санузла на логическом реле ABB CL

Щиты TwinLine в Долгопрудный (таунхаус) и Солнечногорск

Щиты TwinLine в Долгопрудный (таунхаус) и Солнечногорск

Щит для котельной на базе сенсорного ПЛК ОВЕН (Папушево)

Щит для котельной на базе сенсорного ПЛК ОВЕН (Папушево)

Щиты с IPM (сеть, генератор, UPS) в Ядромино и Победа-2

Щиты с IPM (сеть, генератор, UPS) в Ядромино и Победа-2

Щит в ЖК Монэ на ПЛК ОВЕН со сценарным управлением светом

Щит в ЖК Монэ на ПЛК ОВЕН со сценарным управлением светом

Силовой щит в Весёлово (Тула): Простой трёхфазный

Силовой щит в Весёлово (Тула): Простой трёхфазный

Щит для квартиры в Митино на ПЛК ОВЕН (свет, отопление)

Щит для квартиры в Митино на ПЛК ОВЕН (свет, отопление)

ПЛК ОВЕН 110: Программируем на CodeSys v2.3

ВНИМАНИЕ! Мне не хотелось бы, чтобы этот пост был опубликован на других ресурсах (репост). Я хочу сохранить за собой право на его уникальность. Публикация поста возможна на определённых условиях.

Тестовый стенд для ОВЕН ПЛК 110

Тестовый стенд для ОВЕН ПЛК 110

ПЛК, который заказчик купил под свой щит работает на ядре CodeSys v2. Сейчас везде используется ядро CodeSys v3, а вторая версия ядра является устаревшей. Но так как принципы программирования всё равно одинаковые, то этот пост будет полезен всем начинающим. Да и мне охота поделиться информацией, которую я собирал по крупицам, неделю обложившись документацией. Блин! Мне кажется, что мне уже надо или учебные курсы вести, или посты продавать, гыгы =)

Кнопки для подачи сигналов на входы ПЛК

Кнопки для подачи сигналов на входы ПЛК

Настройка внешних модулей и ModBus

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

Мы подаём на модуль питание и подключаем его к преобразователю:

Преобразователь ОВЕН АС-4 и настройка модуля IO

Преобразователь ОВЕН АС-4 и настройка модуля IO

Подключение к модулю IO в программе

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

Настройки модуля релейных выходов МУ110-16Р

А некоторые модули ввода-вывода ещё и могут общаться по разным протоколам. Да и даже у самого ModBus есть парочка модификаций: RTU (устройства обмениваются двоичными даными) и ASCII (все данные гоняются в текстовом виде). Мы будем использовать более быстрый протокол ModBus-RTU.

Настройки модуля входов МВ110-16Д

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

Ещё у этой программы есть возможность контролировать состояние входов-выходов. С помощью этого можно отдельно протестировать каждый модуль на работоспособность.

Изучаем CodeSys

Связь с ПЛК 110 по Ethernet

Связь с ПЛК 110 по Ethernet

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

Среда разработки CodeSys v2 для ПЛК 110

Сама CodeSys поддерживает много языков программирования. В том числе и тех, на которых удобно программировать логические реле.

Пример проекта на CodeSys на нескольких языках одновременно

Пример последовательных логических схем (CFC)

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

Пример разработки на функциональных блоках (FBD)

Для тех, кто переходит с обычных релюшек и автоматики есть возможность писать всё в релейной логике LD, LAD. Тогда всякие сигналы описываются контактами, которые включают или выключают реле:

Пример разработки на релейно-контактной схеме (LD)

А ещё есть язык инструкций IL. Он подойдёт тем, кто любит суровый ассемблер. Смотрите, как он похож на него же:

Пример разработки на языке инструкций (IL)

Пример разработки на редакторе кода (ST)

Тут тебе есть и комментарии, и возможность написать любые условия.

Распределяем ресурсы ПЛК

Наше программирование, конечно же, тесно связано с железом. И наша среда CodeSys должна знать то, какие железо мы сейчас используем. Это конечно же понятно: в разных ПЛК есть разное количество памяти, портов ввода-вывода и прочих штуковин.

Выбор железа для разработки программы под ПЛК

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

Создание основной программы по умолчанию

Конфигурация ПЛК и его ресурсов

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

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

Настройка безопасных значений выходов ПЛК

Идём дальше! Это-то мы изучали внутренние ресурсы, которые есть на борту ПЛК. А как же нам добраться до внешних ресурсов? Вот у нас есть аж три модуля ввода-вывода. Но где же они?

А нигде! Их надо добавить ручками. Логика тут простая и технарская: то, что у тебя есть физически должно быть и в программе. Давайте вспомним, чего у нас есть физически? Модули? Неа! У нас есть протокол ModBus!

Добавляем внешний интерфейс связи

Выбираем тип интерфейса RS-485

Причём список замены будет только из тех вариантов, которые действительно есть в именно этом ПЛК. Например в некоторых ПЛК бывает аж два интерфейса RS-485, на которых можно построить две разные сетки ModBus.

И вот только теперь мы дошли до физического уровня: собственно самого RS-485. Для него у нас есть настройки протокола обмена и параметров связи. Если вы помните, то мы все модули конфигурировали на ModBus RTU и скорость обмена 9600. Теперь вставим эти же настройки в нашем ПЛК:

Настраиваем параметры протокола интерфейса

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

Добавляем устройство ModBus

Для каждого модуля надо будет задать параметры связи. Для нас это адрес модуля (ModuleSlaveAddress) и время опроса его контроллером. Контроллер будет автоматически общаться с модулем раз в столько миллисекунд, сколько мы укажем.

Настраиваем параметры устройства

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

Ну добавили мы модуль, и чего? А как система узнает как рулить его входами или выходами? Вообще, откуда она узнает, где они у него находятся? А узнает она это через человека, который достанет и прочитает инструкцию на модуль. Для любого устройства с протоколом ModBus производитель даёт таблицу, в которой указаны все адреса его регистров. Выглядит эта таблица вот таким образом, например:

Пример регистров устройства из документации

Отлично! Вот теперь мы всё знаем, чтобы добавить это в наш ПЛК. Тыкаем менюшкой на нашем модуле и выбираем, что добавить. типы в CodeSys называются так:

Добавляем регистр устройства в конфигурацию

Теперь задаём параметры именно для этого кусочка: адрес регистра, который читаем и команду, которой читаем.

Настраиваем адрес регистра и способ его опроса

А вот как выглядит конфигурация ПЛК для моей системы. У меня стоит один модуль ввода на 16 входов и модуль вывода на 16 выходов. И на будущее для диммирования света стоит модуль аналогого вывода.

Полный список внешних устройств и внешних регистров

Назначение переменных в ПЛК

Вот теперь у нас есть все-все адреса наших ресурсов. Чтобы нам было удобно ими пользоваться, мы заведём для них программные переменные. Это тоже ручная работа, в которой требуется внимательность. А ещё её в CodeSys v2 делать не очень удобно, потому что в табличке для ввода переменных не меняется ширина колонок.

Посмотрим на конфигурацию ПЛК и выцепим оттуда адреса всех наших входов и выходов. Я их подчеркнул красным:

Адреса переменных внутреннего ввода-вывода

Создаём переменные внутреннего ввода-вывода

Проделаем то же самое с внешними устройствами. Тут адреса становятся длиннее:

Адреса переменных внешнего ввода-вывода

И редактировать их не совсем удобно. Заполняем переменные:

Создаём переменные внешнего ввода-вывода

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

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

После запуска ПЛК начинает опрашивать все внешние устройства

После запуска ПЛК начинает опрашивать все внешние устройства

Программируем

А дальше начинается колдунство. Мне надо было на тот момент вообще научиться работать с CodeSys. Я тогда не разобратся, можно ли адресовать отдельные биты переменных и написал простые участки кода, которые приводили все переменные внешних ресурсов в удобоваримый для меня код.

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

Код преобразования входных переменных к типу BOOL

То же самое я проделал с выходами:

Код преобразования выходных переменных из типа BOOL

Кусочек прошивки для управления освещением на ПЛК

Ещё я нашёл в Сети пример того, как сделать на CodeSys импульсное реле и тоже его протестировал. Кстати, пример лежит на форуме ОВЕНа.

Задачи

Настройка задач в ПЛК

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

Для каждой задачи задаётся время её исполнения. Оно может измеряться в миллисекундах, часах и даже днях.

Конфигурация задачи в ПЛК

Ну а для самой задачи задаётся то, что будет выполняться:

Настройка вызова подпрограммы в задаче

Связь с ПЛК и заливка программы

Настройка связи с ПЛК по протоколу IP

После этого достаточно выбрать команду подключения к ПЛК:

Начинаем подключение к ПЛК

Запрос среды разработки о загрузке программы в ПЛК

Создание загрузочного проекта в ПЛК

Из дополнительных возможностей можно загрузить в ПЛК исходники проекта или любой файл (размером несколько мегабайт). Это полезно, если мы хотим оставить внутри ПЛК архив документации по всему проекту.

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

Работа среды CodeSys в режиме отладки программы

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

Библиотеки

Пример из библиотеки OSCAT: Определение количества нажатий

Пример из библиотеки OSCAT: Многофункциональный диммер

Ну а я же сделал для заказчика простую программу включения и выключения света и реализацию функции защиты от протечек. Про это я расскажу позже в третьей части статьи.

Читайте также: