2015-01-20 в 15:41, admin , рубрики: бесполезности, плк, Промышленное программирование
Однажды на моём рабочем столе оказались usb-джойстик и ПЛК (программируемый логический контроллер) фирмы ОВЕН — ПЛК100, при этом на компьютере была запущена среда LabVIEW. Я подумал, что всё это — хотя бы забавы ради — можно объединить, организовав управление ПЛК (его выходами) с помощью кнопок джойстика (позже я решил использовать не просто кнопки, а их комбинации — ВНИЗ, ВПЕРЁД, Y, например).
Итак, как всё это работает. LabVIEW обрабатывает нажатие клавиши джойстика и передаёт информацию о нажатой клавише в ПЛК100 (в данном случае — через серийный порт); ПЛК100, в соответствии с загруженной в него программой, реагирует на определённые комбинации клавиш включением/отключением своих выходов.
Программирование ОВЕН ПЛК110. Часть 1. Создание первого проекта в CODESYS v2.3
Часть LabVIEW
Программа, обрабатывающая нажатия кнопок джойстика и передающая информацию о них в ПЛК100, в общем виде выглядит так:
Теперь более подробно.
1 — Инициализация джойстика. Можно найти в Function Palette в разделе Connectivity->Input Device Control. Если к компьютеру подключен один джойстик, как в моём случае, параметр Device Index рекомендуется приравнивать к 0.
2 — Получение данных с устройства ввода. Данные о кнопках и направлениях осей (крестике) хранятся в кластерах, которые с помощью функции Unbundle нужно разбить на элементы, чтобы в последующем их как-то обрабатывать. «Кнопочный» кластер 3 (на рисунке он уже разбит на элементы) состоит из булевых элементов; при нажатой кнопке соответствующий элемент кластера принимает значение TRUE. С «осевым» кластером 4 дело обстоит немного иначе: он состоит из целочисленных элементов, и при нажатой клавише ВВЕРХ первый элемент кластера — X axis — принимает значение -32768, клавише ВНИЗ соответствует значение 32767. Со вторым элементом кластера — Y axis — всё примерно так же: НАЗАД = -32768, ВПЕРЁД = 32767.
5 — Формирование строки. Функция Format Into String формирует (или же возвращает) строку из элементов разных типов данных. В моём случае это булевы элементы и их всего 8, поэтому на выходе будет строка из 8 символов.
Здесь требуется пояснение: если ни одна кнопка не нажата, строка имеет вид «00000000»; если же, к примеру, нажата кнопка 1, то строка будет такой «1000000», если кнопка 2, то такой «01000000» и т.д. В зависимости от значения это строки в серийный порт будет записываться определённое число, которое уже и будет обрабатывать ПЛК100. Кстати, параметр «format string» функции Format Into String задан так «%d%d%d%d%d%d%d%d», чтобы преобразовывать входные булевы FALSE и TRUE в нули и единицы и в итоге получать строку вида, например, «10000000», а не «TRUEFALSEFALSEFALSE. ». Вот так. Можно проще? Можно, но в другой раз.
6 — Конфигурирование и открытие серийного порта. Я оставил все параметры по умолчанию, добавив только управляющий элемент для выбора номера порта. Для работы с COM-портом должна быть установлена NI-VISA (здесь www.ni.com/download/ni-visa-5.4.1/4626/en/).
7 — Структура Case. В зависимости от значения строки, сформированной функцией Format Into String, пишет в серийный порт число (11, например, соответствует кнопке 1, 12 — кнопке 2 и т.д.). Это число предварительно конвертируется функцией Number To Decimal String — на рисунке цифра 8 (без этого блока ПЛК100 по непонятным причинам читал из порта какие-то кракозябры).
Программа ПЛК
Немного о портах ПЛК100. Целых три разъёма могут работать в качестве COM-порта: это Debug-232 на лицевой панели, RS-232 и RS-485 внизу. При открытии порта нужно будет указать его номер: для Debug-232 это 4, для RS-232 — 1, для RS-485 — 0. Я использовал RS-485, подключив ПЛК к компьютеру через дешёвый китайский переходник RS-485->USB (на фото), соответственно, в программе в качестве номера порта стоит 0.
ПЛК100 программируется в среде Codesys 2.3. Кроме того, понадобится так называемый таргет — что-то вроде файла с описанием конфигурации программируемого устройства. Для инициализации и открытия порта я использовал библиотеку ComService.lib (библиотеку и пример к ней можно скачать здесь www.owen.ru/forum/showthread.php?t=551 она уже объявлена в библиотеке ComService (если быть точным, то в библиотеке SysComLib, которая входит в состав ComService). Настройки достаточно стандартные, стоит только обратить на set.Port = 0 — это RS-485, о котором было сказано выше.
Функциональный блок COM_SERVICE имеет два параметра: первый это имя структуры COMSETTINGS, второй — тип операции, где 0 соответствует настройке и открытию.
Далее при помощи функции SysComRead, входящей в библиотеку SysLibCom, читаем данные из порта. Параметр dwHandle это номер порта (RS-485 в данном случае), dwBufferAddress — указатель на переменную, куда будут читаться данные, dwBytesToRead — количество читаемых байт (в моём случае это 2), dwTimeout — время в мс, после которого функция обязана завершиться; если поставить слишком мало, то функция просто ничего не прочитает.
Далее идёт конвертация строки, считанной из порта, в целое число и сравнение этого числа: если оно, к примеру, равно 10, то ни одна кнопка не нажата, если 11 — то нажата X и т.д.
Для обработки комбинаций клавиш я запрограммировал 6 функциональных блоков — 3 для включения первых трёх релейных выходов ПЛК (думаю, трёх выходов будет для начала достаточно) и 3 для их отключения; четыре комбинации из 3-х клавиш и две из 4-х. Внутри эти блоки выглядят вот так:
В итоге программа у меня выглядела так (пропускаю место с открытием порта):
На видео видно, как на ПЛК загораются светодиоды, говорящие о том, что выход активен. Для наглядности хотелось бы в качестве нагрузки подключить к выходам хотя бы лампочку или пускатель, но на момент записи видео под руками оказался лишь компьютерный кулер.
Надо сказать, что на быстрые нажатия вся эта система (говорю «система», потому как не знаю, в каком именно месте был «затор») реагировала довольно неохотно, если вообще реагировала; неспешные нажатия (как на видео) немного улучшают ситуацию, но всё же иногда реакция на них отсутствовала. Но ведь у ПЛК100 есть ещё и разъём Ethernet. Так что в следующий раз я попытаюсь сделать хотя бы небольшое улучшение, привязав ПЛК к LabVIEW через OPC-сервер по Ethernet.
Источник: www.pvsm.ru
Изучаем ПЛК. Часть 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».
Для примера я через конфигурацию ПЛК включил три выхода.
Источник: www.drive2.ru
Программируемый логический контроллер ПЛК100
Программируемый логический контроллер ОВЕН ПЛК 100 предназначен
- Для создания систем управления малыми и средними объектами
- Построение систем диспетчеризации
- Построение системы управления и диспетчеризации на базе ОВЕН ПЛК возможно как с помощью проводных средств – используя встроенные интерфейсы Ethernet, RS-232, RS-485, так и с помощью беспроводных средств – использую радио, GSM, ADSL модемы
Конструктивные особенности ОВЕН ПЛК 100
- Контроллер выполнен в компактном DIN-реечном корпусе
- Расширение количества точек вводавывода осуществляется путем подключения внешних модулей вводавывода по любому из встроенных интерфейсов
- Два варианта питания 220В и 24В постоянного
Вычислительные ресурсы ОВЕН ПЛК 100
В контроллере изначально заложены мощные вычислительные ресурсы при отсутствии операционной системы:
- высокопроизводительный процессор RISC архитектуры ARM9, с частотой 180МГц компании Atmel;
- большой объем оперативной памяти – 8МБ;
- большой объем постоянной памяти – Flash память, 4МБ;
- объем энергонезависимой памяти, для хранения значений переменных – до 16КБ.
Конкурентные преимущества ОВЕН ПЛК 100
- Отсутствие ОС, что повышает надежность работы контроллеров
- Скорость работы дискретных входов – до 10КГц при использовании подмодулей счетчика
- Большое количество интерфейсов на борту: Ethernet, 3 последовательных порта, USB Device для программирования контроллера, работающих независимо друг от друга
- Расширенный температурный диапазон работы: от минус 20 до плюс 70 градусов Цельсия
- Широкие возможности самодиагностики контроллера
- Встроенный аккумулятор, позволяющий «пережидать» пропадани питания – выполнять программу при пропадании питания, и переводить выходные элементы в «безопасное состояние»
- Встроенные часы реального времени
- Возможность создавать и сохранять архивы на Flash контроллера
- Возможность работы по любому нестандартному протоколу по любому из портов, что позволяет подключать устройства с нестандартным протоколом (электро-, газо-, водосчетчики, считыватели штрих — кодов и т.д.)
- Набор готовых программных модулей, предоставляемых бесплатно
Программирование контроллеров
Создание программ для контроллеров ОВЕН ПЛК100, и их конфигурирование осуществляется профессиональной системой программирования CoDeSys v.2.3.6.1 и старше.
Система программирования CoDeSys для покупателей контроллеров ОВЕН совершенно бесплатна, и записывается на диски, идущие в комплекте с контроллерами.
Общие сведения
Унифицированный корпус для крепления на DIN-рейку (ширина 35 мм), длина 105 мм (6U), шаг клемм 7,5 мм
Степень защиты корпуса
18. 29 В постоянного тока (номинальное напряжение 24 В)
90. 264 В переменного тока (номинальное напряжение 220 В) частотой 47. 63 Гц
Потребляемая мощность, не более
Индикация передней панели
1 индикатор питания
8 индикаторов входов
12 индикаторов выходов
Ресурсы
32-х разрядный RISC-процессор 200 МГц на базе ядра АRМ9
Объем оперативной памяти
Объем энергонезависимой памяти хранения ядра СоDеSуs, программ и архивов
Время выполнения цикла ПЛК
Минимальное 250 мкс (нефиксированное), типовое от 1 мс
Дискретные входы
Количество дискретных входов
Гальваническая развязка дискретных входов
Электрическая прочность изоляции дискретных входов
Максимальная частота сигнала, подаваемого на дискретный вход
1 кГц при программной обработке
10 кГц при применении аппаратного счетчика и обработчика энкодера
Дискретные выходы
Количество дискретных выходов в:
ПЛК100-24.Р и ПЛК100-220.Р
6 сдвоенных транзисторных ключей (всего 12 выходных сигналов)
Гальваническая развязка дискретных выходов Электрическая прочность изоляции дискретных выходов
Интерфейсы связи
Ethernet 100 Ваsе-Т
RS-232 — 2 канала
Скорость обмена по интерфейсам RS
от 4800 до 115200 bps
GateWay (протокол СоDеSуs)
Программирование
СоDеSуs 2.3.8.1 (и старше)
Интерфейс для программирования и отладки
Источник: owennw.ru