ФОРУМ КУПИТЬ

Последние статьи

ВСЕ СТАТЬИ

Beckhoff. Общие сведения

01/09/2011 18:12:34

Откликнувшись на на призыв хозяина сайта делиться своим опытом по обучению своих домов уму-разуму, открываю тему с рассказом о моем личном опыте внедрения элементов "умного дома" своими руками на базе Beckhoff. Также как и у хозяина форума, у меня процесс внедрения - это некий перманентный процесс поиска и воплощения в жизнь идей, которые хотелось бы видеть у себя дома (а некоторые может быть и не хотелось бы видеть, но просто интересен сам процесс). Поэтому надеюсь мое повествование будет интересно, если я поделюсь своими успехами и ошибками. Свою историю буду скидывать отдельными сообщениями, по мере того как будет позволять время, но надеюсь не буду умолкать надолго...

PS. Данная серия статей не является рекламой какой-либо технологии или оборудования. Автор является таким же энтузиастом, как многие посетители данного сайта. Получив в славном СССР техническое образование, но зарабатывая на жизнь вещами, далекими от техники, внедрение элементов умного дома своими руками - это хобби для борьбы с ностальгией по студенческим временам. Все описанное ниже делается на свой страх и риск, за собственные деньги. Не повторять - опасно для жизни!! (шутка) :)

Коротко о целях и задачах

Скопив мешочек денег, мы решили с женой, что и для нас и для детей будет куда приятнее и полезнее жить за городом. Достаточно быстро мы подобрали участок недалеко от города и спланировали застройку на два домика - для гостевой домик с баней и побольше для нас любимых. Быстро сказка сказывается, да не быстро стройка строиться. Но гостевой домик готов и мы там уже живем, большой пока достраивается. Так что план по внедрению умного дома был прост - отыграться на гостевом и уже набив шишек все по уму сделать в основном. Установка умного дома в строящемся доме с одной стороны проще, так как можно проложить и заложить проводов сколько душе угодно, с другой стороны после заселения обычно начинаешь понимать, что нужно что-то перенести или передвинуть для большего удобства, поэтому приходиться закладываться на "будующие расширения".

Когда я обдумывал концепцию моего умного дома, то задача естественным образом разложилась на несколько блоков. Первый блок это мониторинг ( температура, снятие показаний счетчиков, погода за бортом). Для решения этих задач по-моему мнению 1-wire вне конкуренции - дешевая , надежная, проста в развертывании, наличие SDK и готовых программных комплексов, которые позволяют сделать любой каприз. Собственно этот сайт об этом и рассказывает. Второй блок - управление освещением и электроприборами. Здесь по моему мнению 1-wire не так хорош. Во-первых, шина 1-wire не настолько быстрая, во вторых, и для меня в главных - я не нашел для себя 1-wire модулей для управления электрической нагрузкой, которой я мог бы довериться. Все они в большинстве случаев являются самоделками которую ты ставишь на свой страх и риск. Поэтому встал вопрос, а кто, если не 1-wire?

Почему BECKHOFF?

Требования к системе управления освещением собственно у меня были такие же как я перечислил вначале. Дешевая, надежная, проста в развертывании, наличие гибкого sdk для управления и интегрирования с системой мониторинга на базе 1-wire. Скажу сразу что по поводу дешевизны я сразу не питал иллюзий. Мне нужно было готовое решение, ничего паять или писать на уровне ассемблера я не хотел. Я готов бы выложить больше денег, но чтобы система в моих глаза была надежна, легко интегрируема и я не думал каждый день, не подпалит ли ли мой умный дом свою деревянную оболочку.

Пока неторопливо шла стройка я занимался поисками. Как всегда бывает - систем много, а выбрать не из чего. В основном проблемой было отсутствие sdk к системам. Разработчики в основном запрещают лезть внутрь , чтобы не отдавать свой хлеб. На систему beckhoff я набрел практически сразу, однако прочитав мнение внедренцев самого же beckhoff что это очень дорогая и сложная система доступная немногим, я ее откинул и вернулся к ней только через полгода поиска. При детальном ознакомлении мне их система очень понравилась. Она полностью удовлетворяла моим представлениям о том что я хочу видеть у себя дома. Дороговизна и сложность системы оказалась не совсем правдой. Вернее если вы позвоните в офис beckhoff в Москве и попросите посчитать что либо, то вы абсолютно точно больше туда звонить не будете. Однако есть eBay. На немецком ebay можно найти НОВЫЕ компоненты за очень приемлимые деньги.

Подробнее о BECKHOFF

Компания beckhoff больше известна в области промышленной автоматизации. В 1995 году они совместно с другой немецкой компанией Wago объединились для создания контроллера с распределенной системой входов-выходов. Beckhoff паяла электронику, а Wago разрабатывал конструктив. В результате beckhoff выпустил контроллеры серии BC/BX (а Wago серию 750) и систему модулей ввода вывода к ним. В 2000 году контракт закончился и компании развивают это направления самостоятельно. У beckhoff последняя линейка контроллеров CX под управлением WinCE или WinXP Embedded. У Wago это последние модификации 750 серии под Linux.

Для своей системы я выбрал контроллер серии BC. Он считается самым "старым" и маломощным, но этой маломощности по моему мнению хватает с лихвой для управления электрикой умного дома. Но, впрочем по порядку о системе распределенного ввода вывода Beckhoff.

1. Три источника, три составные части

Распределенная система Beckhoff можно разбить на три основные части:
- Bus Terminal Controller - микрокомпьютер, который управляет системой, согласно записанной в него программы. Программы пишутся на любом языке программирования микроконтроллеров стандарта МЭК 61131-3. За интерпретацию и исполнение этих программ отвечает встроенное в микроконтроллер программное ядро TwinCat. В принципе в качестве контроллера может выступать и обычный ПК, но на него надо инсталлировать ядро TwinCat (что не бесплатно). Среда разработки и отладки программ для микроконтроллера предоставляется бесплатно. Контроллер умеет общаться с внешним миром с помошью стандартных шин и протоколов. Я использую контроллер BC9000, который подключается к Ethernet и общается по стандарному TCP/IP протоколу. К контроллеру подключаются терминалы ввода-вывода.
- Bus Terminal Coupler- микрокомпьютер, который выглядит точно так же как и контроллер, но который не умеет исполнять программы. К каплеру также подключаются терминалы ввода-вывода, и его основная задача предоставить к ним доступ контроллеру в распределенной системе. Доступ дается через стандартные шины и протоколы. Для Ethernet к BC9000 идет парный каплер BK9000.
- Bus Terminals - модули ввода-вывода. Beckhoff предлагает очень широкую линейку модулей ввода вывода, которые деляться у него на следующие группы: дискретные входы-выходы, аналоговые входы-выходы, коммуникационные модули (шлюзы в различные протоколы передачи данных), системные модули (модули, необходимые для фунционирования системы). Контроллер BC9000 поддерживает модули серии KL****. Модули серии EL**** предназначены для самых современных контроллеров с шиной EtherCAT (нам это не нужно). Ширина модуля на рейке - 12 мм.

Как я уже говорил, модули ввода-вывода подключаются к контроллеру (или каплеру). Самым последним всегда ставится системный модуль-заглушка KL9010. Общение контроллера и модулей идет через внутреннюю шину K-BUS к которой каждый модуль автоматически подключается после подсоединения в контроллеру с помошью специальных контактов. Контроллер (или каплер) централизованно питает все модули 24V DC. В случае, если питания от контроллера не хватает, или мы используем например модули которые надо запитывать уже к 220V AC, то используются системные модули для разделения потенциала.

2. Контроллер BC9000

К контроллеру BC9000 можно подключить до 64 модулей, что для наших задач достаточно с избытком (легко посчитать, чтобы разместить сосиску из 64 модулей нужна дин-рейка длиной не менее 80 см). Для программы выделяется 64 кб памяти, столько же под данные. Есть область 'энергонезависимой памяти размером 4 кб. Питание 24V.
Контроллер подключается к с обычной сети через Ethernet. C помошью программы конфигурации ему присваивается свой IP адрес в сети. Каждый модуль, который присоединен к контроллеру - это по сути микроконтроллер, который исполняет свою задачу, а именно либо считывает данные со входа и записывает в ячейку своей памяти, либо устанавливает выход в зависимости от установленного значения в своей памяти. Причем beckhoff продает различные модули с различной скоростью считывания, в зависимости от задачи. Контроллер циклически через шину K-BUS считывает все данные из ячеек модулей в свою память для дальнейшей обработки программой (о циклах контроллера читай ниже).

3. Программирование контроллера. Beckhoff TwinCat.

Как и в других логических контроллерах у контроллера BC9000 существует понятие "цикла исполнения". Контроллер производит циклические действия, которые состоят из двух фаз - время исполнения программы (programm running time) и коммуникационное время (background time).

Врямя исполнения программы - это четко заданные промежуток времени в течение которого происходят следующие действия - контроллер считывает все данные с модулей памяти по шине K-BUS, запускает нашу программу, которая на основании состояния входов меняет значения состояния выходов в памяти контроллера, после чего контроллер по шине K-BUS записывает данные в модули выходов, чтобы те в свою очередь произвели соответствующие действия. Если мы управились быстрее времени, чем нам выделено, то оставшееся время добавляется в background time. А вот если наша программа не успела все сделать за назначенное время, то срабатывает watchdog, который обычно перезагружает контроллер.
Коммуникационное время (background time) выделяется контроллером для осуществления обмена данными между контроллером и внешним миром через Ethernet.
По умолчанию в BC9000 время исполнения составляет 5 ms, а коммуникационное время 1 ms, но через программу настройки эти значения можно менять, в зависимости от наших задач.
Для написания, отладки и заливки программы в контроллер Beckhoff предоставляет бесплатный инструментарий под названием TwinCat. По сути это более известная разработчикам ПЛК система CoDeSys, только в профиль... Программирование контроллера может вестись на любом из 5 языков программирования из стандарта 61131-3. Причем в рамках одной программы разные ее модули могут быть написаны на разных языках. Так как я до этого не занимался программированием контроллеров, то пока выбрал для работы язык SF - это паскале-подобный язык программирования, в котором мне проще работать... Дальше будет видно..
Также хочется отметить, что после опыта написания программ для ПК надо немного привыкнуть к программированию контроллеров, что по сути является программированием дискретных автоматов. Нужно привыкнуть к тому, что цикл опроса WHILE (1) ... DO за тебя уже сделали. Нужно привыкнуть к тому, что контроллер входит в каждый цикл, как первый раз в жизни, поэтому надо все состояния хранить в переменных. Нужно привыкнуть к тому, что сигнал дикретного входа определяется не как "IF MyInput=1 Then" а надо "ловить фронты". Вообщем надо мозг чуть-чуть повернуть... На пару градусов...

4. Подключение к контроллеру через Ethernet. Протокол ADS.

Для обмена данными между контроллером и компьютером у Beckhoff разработан протокол ADS, который является надстройкой над TCP/IP. Инструментарий для работы с этим протоколом предоставляется бесплатно в виде файлов библиотек и поддерживает DLL, OCX, VB Script, J Script, .NET, Java для Windows, а также есть open source проект для реализации этого протокола под Linux. Наличие этих библиотек позволяют делать две очень важные для нас вещи. Первое - это чтение данных с контроллера о состоянии входов-выходов для отображения на интерфейсе пользователя, либо для сохранения в базе данных. Второе - с помощью этих библиотек мы имеем возможность напрямую управлять выходами, а также мы получаем доступ ко всем переменным программы контроллера, то есть можем управлять ходом действия программы изменяя значения этих переменных. Одним словом, это очень важный функционал для интеграции этого блока управления "Умным домом" в единую систему.
Также в контроллер BC9000 встроена поддержка ModbusTCP, но я не пользоался пока этой возможностью.

5. И немного о ценах.

Так как программируемые контроллеры за последние годы шагнули вперед, то "устаревшие" модели типа BC9000 можно поймать на немецком e-bay где то за 100 евро. Мне обошелся с доставкой 110 евро. Также учитывая что Beckhoff сейчас вовсю переходит на модули с новой шиной e-bus (стандарт EtherCAT), то "старые" модули под K-BUS с кодировкой KL**** можно купить сейчас дешево. Дискретные модули ввода-вывода на 2 или 4 канала продаются где то за 10 евро, на 8 каналов за 15 евро. Естественно, выгоднее покупать на 8 выходов. Я купил 8-канальные дискретные входы и выходы по 17 евро с доставкой. То есть по 2,125 евро за канал ( по тому курсу получилось по 80 рублей за канал, что меня вполне устраивает). Аналоговые входы-выходы стоят дороже - от 20 до 50 евро на 2 канала (надо ловить), но их и меньше требуется. Коммуникационные самые дорогие - от 50 до 100. Я их пока не покупал, так как пока не возникло у меня необходимости в этом.
 

Автор: Али
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.



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

(необязательно, не отображается на сайте)


Сортировка комментариев: Последние сверху | Первые сверху

2020-01-06 21:19:58 | ringer
Может имеется ввиду не язык SF, a язык ST (Structured Text/структурированный текст ) согласно стандарта 61131-3


2012-05-15 15:35:15 | Али
Да, можно с контроллером общаться по ModbusTCP. По реализации протокола ADS для Linux можно посмотреть по след ссылкам
https:/github.com/gass/libads
/visual.sourceforge.net/


2012-05-15 12:58:38 | Илюха
Очень понравился контроллер, нашел статью по поддержке протокола ModbusTCP на PHP /bogovic.narod.ru/linux/modbus_tcpip__php/


2012-05-13 08:59:14 | Али
Макс2, да, вы правы. Такой сценарий возможен и я думал об этом. Надумал я следующее - так как цена на модули сейчас разумная (По факту получается 11 евро за 8 каналов входа и 16 евро за 8 выходов), и частный дом это не производство и количество модулей несравненно меньше я просто купил запас себе 6 модулей входов и 5 выходов. И контроллер еще один купил, только уже CX1000 за 300 евро Итого бюджет дублирования получается 300 евро + 611 + 516 = 446 евро или около 19000 рублей. Это не такая огромная сумма а свое спокойствие. Плюс я имею тестовый стенд, плюс к CX1000 можно подключить и новые модули серии EL.


2012-05-13 08:22:08 | Макс2
Скажите, а Вы выясняли сроки поддержки данного оборудования фирмой-производителем?
Не может в дальнейшем возникнуть проблем с запчастями, если используемая линейка будет снята с производства. На производстве, где я работал в свое время использовалась система автоматизации Симатик S5, так после прекращения поддержки фирмой Сименс цены на модули стали просто фантастическими (до этого правда тоже были не маленькие).
По моему опыту (контроллеры Сименс Симатик) за 10 лет непрерывной работы вышло из строя 3 аналоговых входа и 2 цифровых в системе состоящей из порядка 500 входов/выходов, из 5 ЦПУ за этот же срок сгорело 2. Поэтому в стоимость системы надо заложить сразу стоимость запчастей на планируемый срок службы, т.к цена на них скорее всего существенно вырастет, а достать будет трудно.


2012-05-11 10:47:41 | Али
Артем, вы немного не поняли. У меня нет постоянной связи компьютера с контроллером. Контроллер самодостаточен. Он живет своей жизнью без компьютера. Компьютер необходим в первую очередь чтобы прочитать у контроллера что у него в данный момент включено, чтобы показать мне например эти данные в вэб-интерфесе или с помошью вэб-интрефейса удаленно выключить лампочку. Но еще раз повторю - в штатном режиме контроллер работатет самостоятельно. Компьютер ему не нужен.

По поводу ваших сценариев - как говорят программисты "да как два байта переслать!" :) Такие алгоритмы решаются элементарно и контроллер в состоянии решать и более сложные и замороченные алгоритмы.


2012-05-11 10:10:16 | артем
Понимаю.

Свое решение я планирую для 2-комнатной квартирки. У меня задача заметно проще Вашей. В Вашем подходе меня смущает необходимость реализовать и поддерживать постоянную 2-стороннюю связь контроллер-компьютер.

Позволяет ли Ваша система динамически изменять логику поведения электроприборов в зависимости от показаний датчиков, без Вашего непосредственного участия?
напр. такой сценарий: "обесточить все розетки кроме холодильника, если в течении 40 не зафиксировано показаний ни с одного датчика движения"
или такой "при падении температуры ниже 20 подать напряжение на розетку с обогревателем"


2012-05-11 09:13:08 | Али
Артем, я пошел по такому пути, так как мне так было проще. Несомненно, можно все решить одним контроллером. У бекхофф есть модули под термометры Pt100- Pt1000. Если подключить их будет супернадежное решение. Единственно, от каждого датчика температуры нужно тащить свой отдельный провод к контроллеру, и если датчиков хочется много, то это уже недешевое решение. У 1-wire и топология попроще и датчики копеешные.

Теперь по поводу компьютера. Мне его все равно надо было ставить, так как это у меня и файл сервер для личных нужд, и вэб-сервер, чтобы управлять и смотреть извне. Также надо не забывать, что у меня есть котел отопления и вентиляция, которые работают по своим протоколам и подключить их к контроллеру не представляется возможным ( или очень сложно = ненадежно). Поэтому для частного дома отдельный компьютер нужен. Я купил простенький двухядерный Атом компактный с рук за 5000 руб. Этого достаточно. И энергии не жрет.


2012-05-11 01:08:14 | артем
Вы сказали, что, для обработки данных с датчиков, вы использовали аппаратную базу 1-wire. На сколько я понимаю, обычно, в таких случаях на rj-11 в общей шине вешаются все датчики и через мастер-ключ подключаются к компьютеру. Получается, что для функционирования Вашей системы Вам приходится держать постоянно запущенными и скоммутированными 2 устройства: компьютер(с 1-wire) и контроллер BC9000.

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