Последние статьи
- Твердотельный датчик направления и скорости ветра. Эксперимент
- iPhone на стене в качестве панели управления домом
- MegaD-16M-XT - подсветка выключателей и не только
- Переделка выключателей в кнопки и мини-обзор текущего рынка
- RadSens - модульный счетчик Гейгера с интерфейсом I2C
- "U" - значит универсальный. Обзор модуля MegaD-16U-XT
- SCD4x - современная альтернатива для измерения концентрации CO2
- HTU31D - новый датчик температуры и влажности с нагревательным элементом
- Измерение коэффициента пульсации ламп с помощью MegaD-2561
- Использование солнечных панелей в качестве датчика освещенности
- Согласование датчиков с выходом типа TTL со стандартными входами контроллера
- DPS368 - датчик атмосферного давления индустриального класса повышенной точности
- DS18B20 Waterpoof - импортзамещение
- TMP117 - высокоточный датчик температуры с интерфейсом I2C
- MegaD-16R-XT - расширитель на 16 релейных выходов
- MegaD-2561-RTC V3 - больше портов, зуммер и ИОН
Beckhoff. Программируем контроллер
03/09/2011 16:32:55
В этой статье я возьму самый простой пример, чтобы показать как это делается и какое программное обеспечение используется. Дальше уже будем погружаться в разные алгоритмы реальной автоматизации освещения. Также я не буду сильно вдаваться в детали - если кого заинтересует - читайте документацию или пишите письма, что знаю - расскажу.
1. Достаем контроллер из коробки
Перво-наперво, подключаем контроллер к питанию. Для этого находим в закромах блок питания на 24VDC и подключаем провода к клеммам питания. Так как конструктив от WAGO, то все соединения исполнены зажимными клеммами, ничего завинчивать не надо. Одножильные провода можно вставлять в клеммы так, многожильные следуя правилам хорошего тона, лучше обжать гильзой. В документации к контроллеру написано, как расчитать требуемую мощность блока питания в зависимости от количества подключенных модулей. Для экспериментов подойдет любой. В рабочий шкаф я воткнул блок питания на дин-рейку на 2А.
У контроллера два разделенных ввода на 24VDC. Первый - питание самого контроллера и всех подключенных к нему модулей. Второй - питание контактов входа/выхода у модулей. Подаем 24 и туда и туда.
Контроллер подключен и радостно мигает огоньками. С помощью шаманских заклинаний, описанных в документации сбрасываем все настройки контроллера на "заводские". После этого контроллер получает IP адрес сети 172.16.17.*. Последнее число адреса узла мы задаем с помощью восьми джамперов на передней панели.
2. Конфигурирование контроллера
Все, IP адрес есть. Подключаем контроллер в сеть, проверяем, что он благополучно пингуется и подключаемся к контроллеру с компьютера. Для этого используем программу KS2000 от Beckhoff. После загрузки программы создаем новое подключение, вводим IP адрес контроллера и нажимаем кнопку CONNECT. В считанные доли секунды программа находит контроллер и выдает нам такую картинку:
Мы видим на экране конфигурацию, в точности повторяющий нашу сборку. То есть программа определяет тип контроллера и все модули, которые к нему подцеплены. Причем программа отслеживает состояние всех входов и выходов и отображает их на картинке. С помошью мышки можно пощелкать на выходы и они будут менять свое состояние. Полюбовавшись картинкой и поигравшись выходами идем дальше.
Обращаем внимание на запись с номером прошивки (Firmware version). Прошивку можно перепрошивать. Я написал запрос в саппорт компании BECKHOFF в России и они в тот же день прислали мне самую свежую прошивку. Перепрошивается контроллер с помощью той же программы KS2000.
Идем в настойки контроллера и меняем его IP адрес на тот, который нам нужен. Введя номер узла программа нам подсказывает как установить джамперы.
У контроллера есть куча настроек. Пока мы используем заводские, так как во-первых этого для начала нам достаточно, а во-вторых, во многих настройках я пока даже и не разбирался :)
3. Пишем первую программу
Для того чтобы писать программы для контроллера скачиваем с сайта BECKHOFF систему TwinCat. Установка ее не предствляет какого-либо труда, так как при инсталляции единственно что она спросит - лицензионный номер для установки TwinCat runtime на локальном компьютере. Он нам не нужен, так как использовать компьютер в качестве контроллера мы не хотим (не доверяем), а данный runtime зашит в нашем контроллере. Среда разработки поставляется абсолютно бесплатно.
Запускаем программу PLC CONTROL - это и есть наша среда разработки. Создаем новый проект. При создании нас спросят под какой контроллер желаете. Выбираем BC9000. На каком языке программирования хотите? На ST, других пока не знаем.
И перед нами тот чистый лист, с которого все как обычно и начинается. Сверху окно объявления переменных, снизу окно для кода, сбоку слева навигатор. Запутаться невозможно.
Объявляем глобальные переменные для наших входов и выходов. Это можно сделать автоматически с помошью не очень дружелюбных утилит. Но мы не поленимся и сделаем все ручками. Переходим в раздел глобальных переменных и пишем следующее.
VAR_GLOBAL IN_H2_R1 AT %IX0.0: BOOL; (*ГОСТЕВОЙ ДОМ - ВЫКЛЮЧАТЕЛЬ - СПАЛЬНЯ*) IN_H2_R2 AT %IX0.1: BOOL; (*ГОСТЕВОЙ ДОМ - ВЫКЛЮЧАТЕЛЬ - ВАННАЯ*) OUT_H2_R1_L AT %QX0.0: BOOL; (*ГОСТЕВОЙ ДОМ - ЛАМПА - СПАЛЬНЯ*) OUT_H2_R2_L AT %QX0.1: BOOL; (*ГОСТЕВОЙ ДОМ - ЛАМПА - ВАННАЯ*) OUT_H2_R2_M AT %QX0.2: BOOL; (*ГОСТЕВОЙ ДОМ - ВЕНТИЛЯТОР - ВАННАЯ*) END_VAR
Как я уже писал ранее, информация о состоянии всех входов и выходов хранится в памяти контроллера в строго отведенной области памяти. Все дискретные значения, где мы имеем всего два состояния 0 и 1, для экономии места пакуются в байты.
Сначала мы объявляем два дискретных входа как логические переменные и привязываем их к области памяти, где у контроллера хранится состояние входов. Конструкция %IX0.0 означает, что мы привязываем переменную к области памяти входов к самому первому дискретному входу (байт 0, бит 0). Все тоже самое и для выходов, только область памяти для выходов обозначается контрукцией %QX0.0. Таким образом мы имеем два выключателя из спальни и из ванной комнаты, подключенные соотвественно к первому и второму входу, а также два светильника и мотор вентилятора, подключенные к трем первым выходам.
Теперь напишем простейшую программу
OUT_H2_R1_L := IN_H2_R1; OUT_H2_R2_L := IN_H2_R2; OUT_H2_R2_M := IN_H2_R2;
Все предельно просто - выключатель включился=лампочка зажглась. В случае с ванной комнатой при включении выключателя у меня запускается и моторчик вентилятора.
Все!! На первый раз хватит. выбираем в меню пункт компиляции проекта. Ошибок нет!
Теперь с помошью меню ONLINE подключаемся к контроллеру. После подключения система говорит, что проект у нас на компьютере отличается от того что есть в контроллере и предлагает заменить. Не противимся. Опять таки через меню активируем выполнение программы на контроллере и наслаждаемся нашей нетленкой - при включении выключателя загорается лампочка! Все то что можно сделать без контроллера у нас теперь АВТОМАТИЗИРОВАНО!!
Понятно, что не ради этого мы тратили деньги на покупку контроллера, но об этом в следущей статье.
Автор: Али
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.
Добавить комментарий:
Сортировка комментариев: Последние сверху | Первые сверху
2019-07-03 00:40:06 | Henek
Повторю вопрос
Подскажите пожалуйста как в ks2000 ввести ip адрес. Расскажите подробней.
Не получается сделать комуникацию
2018-12-30 08:29:51 | Иван
Подскажите пожалуйста как в ks2000 ввести ip адрес
2014-12-12 22:56:14 | Pagan
засада...звездочка затирается... в конце %Q или %I ставьте звездочку... shift+8.
2014-12-12 22:50:51 | Pagan
извините:) - вот так %Q и %I
2014-12-12 22:48:47 | Pagan
Добрый день.
Хотел немного инфы добавить т.к. все мы тут учимся и ищем новое может кому пригодится. Можно сократить время и снизить вероятность ошибок при написании программы используя вместо %IX0.0 или %QX0.0. вот такой вариант - %I и %Q
2013-06-07 12:09:54 | Али
Запитано от одного источника питания. Для небольших домов 1-2 этажа это не критично. Проблем никаких нет.
2013-06-07 01:44:52 | Миша
Али, скажите, у вас шина и нагрузка запитаны от одного источника? Или раздельно? Насколько это критично в боевых/тестовых условиях?