На простом примере установим связь по ModBus между SP WinPLC V3 и Slave-устройством, в качестве которого я использовал ПЛК 100 от фирмы ОВЕН.
Настройка Slave-устройства на примере ПЛК 100 в сети ModBus TCP подробно описана тут (в первой части мануала): http://www.kipshop.ru/Documentation/lectus/bistriy_start_tcp.zip
По аналогии точно также можно настроить на ModBus через RS232 (либо другие доступные интерфейсы).
Запрограммируем ПЛК 100 аналогично примеру по ссылке выше, но с одним отличием. Одна переменная, предназначенная для передачи, будет инкрементироваться, вторая декрементироваться. Это для того чтобы были видны отличия в сети этих переменных.
Будем считать Slave-устройство настроенным и уже работающим в сети (в нашем случае в обычном Ethernet). Если все же возникли какие-то вопросы по этой части повествования, задавайте их в этой теме, разберем.
Запускаем CoDeSys V3.x и создаем стандартный проект. В качестве целевого устройства выбираем CoDeSys SP Win V3 и язык исполнения ST.
Программирование ОВЕН ПЛК110. Часть 1. Создание первого проекта в CODESYS v2.3
После создания заготовки проекта настраиваем связь с WinPLC в Communication Settings, куда можно попасть двойным щелчком мышки на строке Device в дереве устройств во вкладке Devices слева (рис 1.)
Рис. 1
Затем двойным щелчком на PLC_PRG переходим в редактор ST где пишем программу x:=x+1;
И так, мы имеет софт-контроллер с простейшей программой. Наша задача считать данные из Slave-устройства, о котором известно, что оно вещает, а вернее выдает по запросу, две переменные по протоколу ModBus TCP/IP.
Добавим ветку в проект от Device, устройство Ethernet от этого устройства добавим ModBus master и в свою очередь от этого устройства ModBus Slave.
Для этого щелкаем правой клавишей мышки на строке Device и выбираем Add Device или Add Object в этом случае результат будет одинаковый. В появившемся окне устройств выбираем Ethernet Adapter -> Ethernet и щелкаем на него дважды. Закрывать окно Add Device не обязательно.
Видим, что в дереве устройств в окне на заднем плане появилось устройство Ethernet по ветке от Device. Не закрывая окна Add Device, щелкаем на уже добавленный Ethernet в дереве устройств главного окна (то что на заднем фоне) и замечаем, что содержимое окна Add Device изменилось. В Add Device выбираем Modbus TCP Master -> Modbus TCP Master дважды на нем щелкаем. В дереве устройств на заднем фоне в ветке Ethernet появляется Modbus_TCP_Master.Не закрывая окна Add Device, выбираем только что добавленное устройство Modbus_TCP_Master. В окне Add Device выбираем Modbus TCP Slave -> Modbus TCP Slave и щелкаем на нем дважды (Рис 2).
Если на каком-либо этапе Вы закрыли окно Add Device, его всегда можно открыть правой клавишей мышки на ветке (устройстве), в которую нужно вставить новое устройство (см. прилагаемый видеоролик).
Программирование в среде OWEN Logic. Урок 1.
Рис. 2
Закрываем окно Add Device и переходим к настройке добавленного Ethernet двойным щелчком мышки на оном.
В появившейся закладке Ethernet Configuration для наших целей достаточно изменить только Interface Name и Network Name на любые, лишь бы не выдавался значок предупреждения справа.
Так же двойным щелчком переходим в настройки Modbus_TCP_Slave. Тут потребуется указать Slave IP Address того устройства, с которого нужно прочитать данные. В моем случае это ПЛК 100 с адресом 192.168.0.114 (Рис. 3)
Рис. 3
Если настройка Slave устройства проводилась по инструкции приведенной выше, и ничего специально не менялось, то в поле Unit-ID указываем 1, а поле Port оставляем без изменений.
В этом же окне переходим во вкладку Modbus Slave Channel и нажимаем кнопку Add Channel в нижней части экрана. Этим самым мы попадаем в диалог добавления считываемых регистров.
Устанавливаем Access Type как Read Holding Registers (Function Code 03) и после этого обращаем внимание на Offset ниже. Это поле по умолчанию стоит 0x0000. Оставляем его так и нажимаем на ОК (Рис. 4).
Если настройка Slave устройства проводилась по инструкции, приведенной выше, и ничего специально не менялось, то в поле Unit-ID указываем 1, а поле Port оставляем без изменений.
В этом же окне переходим во вкладку Modbus Slave Channel и нажимаем кнопку Add Channel в нижней части экрана. Этим самым мы попадаем в диалог добавления считываемых регистров.
Устанавливаем Access Type как Read Holding Registers (Function Code 03) и после этого обращаем внимание на Offset ниже. Это поле по умолчанию стоит 0x0000. Оставляем его так и нажимаем на ОК (Рис. 4).
Рис. 4
После этого действия в активной вкладке Modbus Slave Channel появляется новый канал получения данных.
Забегая вперед, скажу, что также новая строчка появилась во вкладке ModbusTCPSlave I/O Mapping, но туда мы пойдем позже.
Созданный канал будет считывать циклически (Trigger CYCLIC на рис 4) только одну переменную регистр со смещением 0х0000. А нам требуется читать обе переменные.
Добавляем новый канал кнопочкой Add Channel и проводим те же процедуры, как выше, только Offset устанавливаем в 0х0001.
Таким образом, создался второй канал, чем сделал текущую вкладку нам безинтересной.
Далее мы перенесем свое внимание во вкладку ModbusTCPSlave I/O Mapping, где и будет происходить самое интересное.
В этой вкладке требуется установить галочку Always update variables и после этого можно подключаться к контроллеру, загружать в него проект и запускать на выполнение (Рис. 5).
Рис. 5
Если все сделано правильно, в столбце Current Value побегут значения обоих переменных, считываемых из Slave-устройства по Modbus TCP.
Тут же в столбце Variable (в оффлайн режиме) можно замапить (назначить) существующие в проекте переменные, куда будут считываться данные.
Если же по какой-либо ошибке Modbus не запустился и возле Modbus_TCP_Slave повиснет аварийный значек (как сейчас на рисунке 5 возле Ethernet), то данные считываться не будут, о чем будет извещено желтым значком предупреждения. В этом случае после исправления настроек выполните команду Build->Clean All, иначе исправленные настройки могут не подействовать.
На этом все. Наш пример чудом заработал, и если понадобится подключиться по ModBus через COM, сделать это можно по аналогии с приведенным примером (рис. 6).
Рис. 6
Ниже выложен видеоролик, где создается вышеприведенный пример с некоторыми отличиями. Отличия заключаются в считывании второй переменной по переднему фронту флага (переменная z). Этот флаг объявляется глобальным (глобальность, кстати, не обязательна) и меняется отдельной программой по отдельной задаче раз в полсекунды.
Источник: prolog-plc.ru
Тема: Примеры программ для ПЛК100/150/154/110/160
Примеры программ для ПЛК100/150/154/110/160
Примеры программ для
ПЛК100/150/154 — ПЛК110/160
Для CoDeSys v.2.3
- Среда программирования CoDeSys v 2.3
- Библиотеки для среды программирования
- Target-файлы + прошивка для ПЛК100/150/154
- Target-файлы + прошивка для ПЛК110/160
Примеры программ
- Пример задержки включения реле по срабатыванию дискретного входа.
Работа с таймером TON и обработка фронтов тригерами R_TRIG и F_TRIG.
Скачать (7 Кб) - Пример работы с входами/выходами контроллера.
Работы с таймерами TON и TOF для реализации задержки выключения.
Скачать (7 Кб) - Результаты тестирования быстродействия дискретных входов ПЛК.
Скачать (9 Кб) - Пример реализации высокоскоростного таймера Counter 16 Bit.
Скачать (11 Кб) - Пример задания ШИМ на выходе ПЛК.
Скачать (11 Кб) - Пример работы с библиотекой SysLibTime.
Получение реального времени из ПЛК. Задание даты и времени в ПЛК.
Скачать (7 Кб) - Пример использования SysLibTime. Подсчет времени наработки станка.
Скачать (14 Кб) - Пример работы с модулем Archiver — создание архива в памяти ПЛК.
Скачать (8 Кб) - Пример работы с SysLibFiles. Создание файловых архивов.
Анализ свободного места в ПЛК. Перезапись старых архивов.
Скачать (9 Кб) - Пример использования менеджера задач для вызова POU.
Скачать (7 Кб) - Пример вызова различных POU на различных языках.
Скачать (12 Кб) - Пример реализации ПИД регулятора с АНР.
Скачать (16 Кб) - Пример реализации простого ПИД регулятора.
Скачать (12 Кб) - Пример ПИД-Регулятора импульсного с ручным управлением.
Скачать (274 Кб) - Примеры реализации алгоритмов САУ-МП (алгоритмы 11, 14 и16).
Скачать (61 Кб) - Примеры реализации графиков уставки.
Скачать (10 Кб) - Пример работы с быстрыми входами и выходами
из прерывания высокочастотного таймера (Только для ПЛК110).
Скачать (1,4 Мб) - Пример PID регулятора. Испытан на практике на таких параметрах как:
разрежение в топке котла, уровень в барабане котла, соотношение топливо-воздух, нагрузка.
Работает хорошо и предсказуемо. Спасибо, CEkip.
Скачать (136 Кб)
Примеры сетевого обмена
- Руководство по подключению устройств на интерфейс RS-485.
Скачать (258 Кб) - Пример обмена по протоколу Modbus TCP через порт Ethernet.
Скачать (15 Кб) - Пример сетевого обмена по протоколу UDP через Ethernet.
Скачать (485 Кб) - Руководство по подключению OPC CoDeSys.
Скачать (901 Кб) - Пример реализации WEB сервера.
Скачать (30 Кб) - Пример реализации обмена через библиотеки Modbus.Lib и OwenNet.Lib.
Скачать (151 Кб)
Последний раз редактировалось Andrey V; 08.11.2021 в 10:57 .
« Предыдущая тема | Следующая тема »
Похожие темы
примеры программ и полезности
от Николаев Андрей в разделе ПЛК (среда CoDeSys V2.3)
Ответов: 78
Последнее сообщение: 06.04.2018, 06:01
Примеры программ для ПЛК63/73 (CoDeSys v.2.3)
от Александр Приходько в разделе ПЛК (среда CoDeSys V2.3)
Последнее сообщение: 16.10.2012, 04:28
Оптимальность в написании программ
от ksn33 в разделе ПЛК1хх
Источник: owen.ru
ПЛК100 контроллер для малых систем автоматизации с DI/DO ОВЕН
Лицензионное ограничение области памяти ввода/вывода
Контроллеры ОВЕН ПЛК выпускаются в двух модификациях по лицензионному ограничению размера области памяти ввода/вывода (т.н. области %I+%Q+%M или области отображения процесса):
- ОВЕН ПЛК-Х.Х-M – контроллеры без лицензионного ограничения объема области памяти ввода/вывода;
- ОВЕН ПЛК-Х.Х-L – контроллеры с лицензионным ограничением объема области памяти ввода/вывода до 360 байт.
Контроллеры ОВЕН ПЛК-Х.Х-L имеют более низкую цену.