Как добавить плк в codesys
Перейти к содержимому

Как добавить плк в codesys

  • автор:

Establish the Connection to the PLC

Controllers must never under any circumstances be accessible from the Internet or from untrusted networks. In particular, the programming ports of the controller must never be accessible from the Internet without security protection (mostly UDP ports 1740..1743 and TCP ports 1217 + 11740 or the controller-specific ports). If access from the Internet still has to be granted, then it is imperative that a secure method be selected to connect to the controller (example: VPN).

Starting the gateway server:

By default, the GatewaySysTray program is also installed with CODESYS . You can use this program to communicate with the Gateway Server. The Gateway Server is started automatically as a service when the system starts. Check that the Windows taskbar contains the _cds_icon_gateway_running.pngprogram icon. When the gateway server is not running, the icon looks like this: icon_gateway_stopped.png. In this case, you can click the icon to open the gateway menu and click Start Gateway .

Starting the PLC:

By default, the CODESYS ControlSysTray program is also installed with CODESYS . You can use this program to communicate with the CODESYS Control Service. In CODESYS V3.5 SP2 and higher, the control service is no longer started automatically when the system starts. Start the PLC as follows: In the Windows taskbar, click _cds_icon_plc_stopped.pngto open the PLC menu, and then click Start PLC . When the PLC is running, the icon changes to _cds_icon_plc_running.png. A dialog that appears at startup indicates that the started PLC allows programming access. Pay attention to the security notice above.

In the very first communication configuration: Adding the gateway

  • In the Devices view, double-click the Device ( CODESYS Control Win V3 ) entry.

The Communication Settings tab opens in the Device editor.

Tip

If this is your first communication configuration with CODESYS , then now you have to define the local gateway server. If you have already defined the gateway server, then it will be shown on the Communication Settings tab. In this case, you can now continue with the Defining the communication channel step.

The gateway server is provided with the CODESYS installation.

  1. Click Gateway → Add New Gateway .

The Gateway dialog opens.

_cds_img_main_tutorial_add_gateway.png

The gateway is entered on the Communication Settings tab (1) of the device editor. When the gateway is running correctly, a filled green circle appears on the graphic of the gateway:

_cds_img_main_tutorial_gateway_added.png

Defining the communication channel

Now define the communication channel to the device, which is then used via the set Gateway. To do this, double-click Device in the device tree to open the Communication Settings tab of the device editor.

  1. Click Scan Network to search the local network for all available devices.

The Select Device dialog (1) appears with a list of all devices with which you can establish a connection.

_cds_img_main_tutorial_select_device.png

The channel is now active and the associated information appears below the device graphic on the Communication Settings tab.

A dialog prompt is displayed with the notice that a user management is required for the device, but it is not enabled yet. You are prompted to enable the user management if you want. The notice is displayed that in this case you have to create a new administrator account and then log in as this user.

The Add Device User dialog opens to create an initial device administrator.
The Device User Logon dialog opens.
The connection path for the PLC is set.

Tip

All communication actions now refer exactly to this channel. Remember this later when you have multiple communication channels in the project.

CS-CS.Net: Лаборатория Электрошамана

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Опубликован
на 25 января 2016, 22:28
Число просмотров: 65 932

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

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

Тестовый стенд для ОВЕН ПЛК 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

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

Дальше запускаем программу «Конфигуратор М110». Первым делом программа предложит нам задать настройки для подключения к модулю. Если мы только что купили модуль — то можно смело тыкать кнопку «Заводские сетевые настройки». А если модуль уже настроен на какой-то адрес и другие параметры протокола, то нам надо их знать заранее и ввести в программу:

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

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

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

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

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

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

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

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

Изучаем CodeSys

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

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

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

И теперь начинаем разбираться с CodeSys. Я скачал её прямо с сайта ОВЕНа, где она есть в русском варианте. Вообще я не люблю русские переводы специального софта, потому что переводят его те, кто ни фига не понимает в технике. Например, самый адский перевод был у AutoCad: «Вырезать, Обрезать, Растянуть, Расчленить, Взорвать». Или у P-CAD, где Net (соединение) перевели как «Сеть». Но в случае с CodeSys русский перевод мне помог разобраться в терминологии и в том, где что находится. После этого русский перевод мне уже не нужен, и я могу ориентироваться в английской среде свободно.

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

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

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

Пример проекта на 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_PRG», и именно её нам сразу предлагают создать после выбора платформы ПЛК.

ОШИБКА: Правильно она должна называться PLC_PRG — только тогда не надо создавать задачи, и программа будет работать сразу! Позже я исправлю этот пост (дурак был в 2016)!!

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

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

После этого наш проект создан и среда от нас отстала. Если мы пишем на ST, то в коде PLC_PRG достаточно поставить «;» и программа откомпилируется. Но работать ничего не будет. Почему? А потому что ПЛК не знает, как к его ресурсам обращаться и чего у него вообще есть.

И вот чтобы его этому научить — надо аккуратно и внимательно разобраться с его ресурсами и с тем, как туда прописывать внешние модули ввода-вывода. Всё это кажется лёгким только тогда, когда сам всё понял. А когда смотришь на конфигурацию ПЛК в самый первый раз, то от неё взрывается голова. Я разбирался с этим дней пять, потому что ещё и инструкция по работе с 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: Многофункциональный диммер

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

Как добавить плк в codesys

CODESYS v.2

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

Установка CODESYS

Установка CODESYS

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

Установка CODESYS

Для читателей, не знакомых с языком Шекспира и Черчилля, можно кратко сказать, что те самые демонстрационные версии требуют покупки лицензий для полнофункционального использования. Однако нас с Вами это никак не касается. Сама система программирования CoDeSys 2.3 в отличие от дополнительных компонентов устанавливается на ваш компьютер без ограничений абсолютно бесплатно. Именно она нам с Вами и нужна. Так что можно смело нажать на кнопку «ОК» и забыть об этом сообщении.

После окончания установки на рабочем столе вашего компьютера появится ярлык с

тремя разноцветными шестиугольниками для запуска CoDeSys. Можно воспользоваться им или выбрать в меню «Пуск» следующий путь «Все программы — 3S Software — CoDeSys 2.3». Если ярлык на вашем рабочем столе не появился, создайте его для удобства запуска системы программирования. После запуска CoDeSys появится серое окно со строчкой меню сверху. Мы создадим новый проект и с его помощью познакомимся с внешним видом системы программирования. Если CoDeSys уже установлен на вашем компьютере, и Вы пробовали свои силы в программировании, то при новом запуске системы она может загрузить предыдущий проект, над которым Вы работали до этого. Вы можете нажать кнопку отмены загрузки или дождаться ее окончания. После этого можно следовать инструкциям, изложенным ниже.

В меню «Файл» необходимо выбрать пункт «Создать», либо немного ниже

Создать

Конфигурация

найти иконку

В следующем окне система программирования предлагает выбрать нам язык реализации. Можно выбрать язык функциональных блоков CFC согласно рисунку и нажать «ОК».

Программа

После этих операций CoDeSys открывает основную рабочую область . Главное меню в верхней части содержит пункты «Файл», «Правка» и т.д.

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

После инсталляции ПО CoDeSys следует выполнить инсталляцию Target-файлов.

2. Инсталляция Target-файлов

В Target-файлах содержится информация о ресурсах программируемых контроллеров, с которыми работает CoDeSys. Target-файл поставляется производителем контроллера.

Архив (если файл заархивирован) скачиваем на свой диск, распаковываем и запоминаем путь где он лежит.

1) Способ. В полученной при этом папке мы запускаем файл InstallTarget.bat. После этого на экране на короткое время появится окно загрузки. Затем процедура установки будет завершена, необходимый файл будет установлен в соответствующие директории.

2) Способ. В папке также содержится файл InstallTarget.exe

CODESYS target file

Запускаем установку «InstallTarget.exe».

В появившемся окне указываем путь до файла «Installation directory»,который мы предварительно запомнили, с расширением .tnf, в нашем случае это plc.tnf.

CODESYS target file

Жмем на кнопку «Install».

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

Для каждой модификации необходим свой target-файл. Скачать их вы можете с сайта компании.

С чего начинается программный проект?

Прежде всего нужно дать проекту новое имя, оно же послужит и названием файла проекта.

Первый программный компонент (POU — Program Organization Unit) помещается в новый проект автоматически и получает название PLC_PRG. Именно с него и начинается выполнение процесса (по аналогии с функцией main в языке С), из него будут вызываться другие программные блоки (программы, функции и функциональные блоки).

Нет необходимости писать вручную текст для PLC_PRG, поскольку конфигурация задачи определяется на вкладке проекта Task Configuration. Подробнее это будет описано в главе, посвященной Task Configuration.

Проект содержит ряд разнородных объектов POU, данных разных типов, элементов визуализации и ресурсов.

Организатор объектов (Object Organizer) управляет списком всех объектов Вашего проекта.

Как создать собственный проект?

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

Затем вы создаете программные компоненты, необходимые для решения проблемы.

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

Сразу после завершения программирования, вы компилируете проект и исправляете ошибки, если они есть.

Как проверить проект?

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

Включите флажок эмуляция (simulation) и «подключитесь» к контроллеру. Теперь вы в режиме Online.

Первые шаги с CoDeSys скачать

Руководство пользователя по программированию ПЛК в CoDeSys скачать

Дополнение к руководству пользователя по программированию ПЛК в CoDeSys скачать

Конфигурирование области ввода/вывода ПЛК.

Руководство пользователя для v2.0 скачать

Конфигурирование области ввода/вывода ПЛК.

Статья создана на основе книги Кирилла Гайнутдинова «Простое и понятное программирование в CODESYS».

Изучение интерфейса CoDeSys. Установка связи с контроллером. Загрузка в контроллер пользовательских программ.

Возможности стенда позволяют отлаживать программы на программируемых контроллерах «ОВЕН ПЛК-150» и «LOGO!» фимы SIEMENS. Можно использовать контроллеры по отдельности или совместно. Входы контроллеров подключены к кнопкам и датчикам, находящимся в левой части стенда, а выходы к светодиодам в правой части стенда. Для смены задачи, отлаживаемой на стенде, необходимо заменить мнемосхему технологического процесса..

Установка Target-файлов для ПЛК.

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

Порядок инсталляции Target_файлов:

1) В открывшемся при запуске утилиты InstallTarget окне – нажать кнопку Open и указать путь доступа к инсталлируемому Target-файлу (имеющему расширение *.tnf, Target Information File). Target-файлы контроллеров ОВЕН ПЛК100 находятся на компакт-диске, поставляемом с контроллером, в папке «Target» или могут быть скачаны с сайта www.owen.ru.

2) После открытия требуемого файла в области «Possible Targets» окна отобразится папка «Owen».

3) Открыв папку «Owen» и выделив находящуюся там строку, нажать кнопку Install. В области «Installed Targets» окна отобразится список инсталлированных Target-файлов.

Запуск среды CoDeSys

Произведем первый запуск среды CoDeSys. В окне Target Settings напротив строки Configuration выбираем тип логического контроллера PLC 150., поскольку в нашем случае мы остановились именно на нем, и нажмем ОК.

В появившемся окне New POU (рис. 1.4-1.5) выбираем тип POU Program (Программа) и язык, на котором будет осуществляться написание программы — LD. Имя программы оставляем без изменения. Подтверждаем выбор нажатием на кнопку ОК.

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

Главное окно среды CoDeSys

Меню находится в верхней части главного окна. Оно содержит все команды CoDeSys.

Организатор объектов, имеющий вкладки POU, Data types, Visualizations и Resources.

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

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

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

При желании панель инструментов можно отключить (Проект – Опции… — Рабочий стол).

Организатор объектов всегда находится в левой части главного окна CoDeSys . В нижней части организатора объектов на¬ходятся вкладки POUs, Data types (Типы данных), Visualizations (Визуализации) и Resources (Ресурсы). Переключаться между соответствующими объектами можно с помощью мышки, нажимая на нужную вкладку.

Разделитель экрана

Разделить экрана — это граница между двумя непересекающи¬мися окнами. В CoDeSys есть следующие разделители: между ор¬ганизатором объектов и рабочей областью, между разделом объяв¬лений и разделом кода POU, между рабочей областью и окном со¬общений. Вы можете перемещать разделители с помощью мышки, нажав ее левую кнопку.

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

Рабочая область находится в правой части главного окна CoDeSys. Все редакторы, а также менеджер библиотек открываются именно в этой области. Имя открытого объекта находится в заголовке окна.

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

При двойном щелчке левой клавишей мыши или при нажатии клавиши Enter на сообщении будет открыт объект, к которому от¬носится данное сообщение. С помощью команд «Правка» «Следующая ошибка» и «Правка» «Предыдущая ошибка» можно быстро перемещаться между сообщениями об ошибках.

Статусная строка

Статусная строка находится в нижней части главного окна CoDeSys и предоставляет информацию о проекте и командах при выборе пункта меню его описание появляется в левой части строки статуса.

Если работаете в режиме Онлайн, то надпись ОНЛАЙН в строке статуса выделяется черным цветом (рисунок 1.9). В ином случае надпись серая. С помощью статусной строки в режиме Онлайн можно определить, в каком состоянии находится программа: ЭМУЛ. — в режиме эмуля¬ции, ЗАПУЩЕНО — программа запущена, ТО — установлена точка останова, ФИКС — происходит фиксация переменных.

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

Строка статуса при работе в текстовом редакторе

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

Статусную строку можно убрать либо включить.

Последовательность установки связи с контроллером

1 Настроить параметры связи для последовательного порта RS 232

2 Подключить ПЛК к компьютеру с помощью кабеля связи по интерфейсу RS 232;

3 Создать управляющую программу, или открыть готовый проект;

2 Выполнить команды Онлайн – подключение; Онлайн – старт (при этом в ПЛК будет загружен код программы);

Если вы все сделали правильно, то на передней панели ПЛК загорится зеленый светодиод (индикатор установки связи), а затем и красный светодиод (индикатор работы программы).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Дистрибутив с сайта

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

Инсталл

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

Таргеты

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

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

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

Рабочее окно

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

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

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

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

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

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

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

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

Изучаем ПЛК. Часть 2. Подключение компьютера к ПЛК.

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

Программы для ПЛК Овен пишутся в CodeSys 2.3, поэтому нужно заранее ее установить. Также нужно установить драйвер USB для самого ПЛК. И то и то можно скачать с официального сайта Овен.

Запускаем CodeSys и создаем новый проект. Программа попросит нас выбрать платформу. Выбираем наш ПЛК 110-30М.

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

Так как сейчас мы никакую программу писать не будем, нужно, чтобы хоть что-то выполнялось. Для этого создаем переменную. Для этого нажимаем SHIFT+F2. Вводим имя переменной «a» и задаем тип «BOOL».

В программу вписываем «a;»

Подключаем ПЛК. Заходим в диспетчер устройств Windows и смотрим, на какой порт подключается наш ПЛК.

Как видим внутри ПЛК находится тупо преобразователь USBUART. Заходим в CodeSys, нажимаем «Онлайн».

Нажимаем «Параметры связи…».

Нажимаем «New…». Вводим имя «USB», тип устройства выбираем «Serial (RS232)». Нажимаем «Ок».

Теперь щелкаем на порт, и стрелками вверх/вниз выбираем нужный нам порт. В моем случае это COM3. Таким же способом изменяем скорость на 115200.

Теперь все готово для подключения к ПЛК. Нажимаем «Онлайн», убеждаемся что не стоит галочка на «Режим симуляции», и нажимаем подключить. Если в ПЛК нет программы, программа предложит записать новую программу. Пока у нас нет программы, поэтому нажимать «Старт» нет необходимости. Снизу окна увидим наше подключение, «ОНЛАЙН: USB».

Похожие публикации:

  1. Gu10 c что означает
  2. Wago с пастой для чего
  3. Винипласт что это за материал
  4. Зарядное устройство для батареек как пользоваться

Как добавить плк в codesys

  • Панели оператора
    • Weintek
    • Samkoon

    • Безэкранные панели оператора

    • Контроллеры (ПЛК, PLC)

    • Модули ввода-вывода Weintek

    • Панельные компьютеры с Windows
      • IFC
      • Aplex

      • Панельные компьютеры с Android

      • Панельные компьютеры с Windows CE

      • Промышленные компьютеры full IP65

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

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