1 2 3 4 5 6 7 8 9 10 10/10 10,00оценок: 5

OpenHAB - обмен опытом, совместное изучение и т. п

Тема в разделе "Умный дом", создана пользователем Anton66, 15.03.14.

  1. 100xanoff
    Регистрация:
    06.03.15
    Сообщения:
    43
    Благодарности:
    5

    100xanoff

    Участник

    100xanoff

    Участник

    Регистрация:
    06.03.15
    Сообщения:
    43
    Благодарности:
    5
    Насколько я знаю, вы указали
    type=input, а input это только чтение. Вам нужно holding
     
  2. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    747

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    747
    Адрес:
    Россия
    Все верно. Но я пытался для начала просто считать float.
    Не получилось.
     
  3. kosmas
    Регистрация:
    22.07.11
    Сообщения:
    89
    Благодарности:
    7

    kosmas

    Живу здесь

    kosmas

    Живу здесь

    Регистрация:
    22.07.11
    Сообщения:
    89
    Благодарности:
    7
    Адрес:
    Питер
    Братцы, подскажите, а есть способ опенхабом разложить 2байта на биты? Т. е. по модбасу от ОВЕНА прилетает 2 байта, а я читаю и пишу отдельные биты типа UNPACK или PUTBIT с EXTRACTом?
     
  4. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    747

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    747
    Адрес:
    Россия
    Считывайте OH coil. т. е. читайте и пишите биты
     
  5. kosmas
    Регистрация:
    22.07.11
    Сообщения:
    89
    Благодарности:
    7

    kosmas

    Живу здесь

    kosmas

    Живу здесь

    Регистрация:
    22.07.11
    Сообщения:
    89
    Благодарности:
    7
    Адрес:
    Питер
    Это неспортивно! :)
    Ну, если в общем, то конструкция такая:
    Ардуина, куда прицеплены через SPI 16 релюх через 595 регистры, кроме релюх там еще датчики температуры, влажности и пр., но с ними проблем нет.
    Ардуина через RS485 по модбасу будет цепляться к OWEN PLC110-60. Ну, а мордой дома является OpenHAB.
    Т. е. основной элемент - это ПЛК110-60 - там вся логика. Опенхаб в основном для видимости, что происходит и ручного управления при необходимости. Т. е. без опенхаба дом будет жить, как ни в чем не бывало. :)
    Так вот о реле.
    Эти 16 релюх дабы не расписывать 16 coils, все равно управляются с ПЛК110, я пишу как uint16_t:
    Код:
      void write_releys(){
        byte registerOne = highByte(rele_out);
        byte registerTwo = lowByte(rele_out);   
        digitalWrite(pinSelect, LOW);
        SPI.transfer(registerOne);
        SPI.transfer(registerTwo);
        digitalWrite(pinSelect, HIGH);
      }
    т. е. в SPI тупо шлю 2 байта.
    Соответственно в ПЛК110 в настройках модбаса это дело у меня передается как "Register output module", что как раз составляет 2 байта.
    В программе ПЛК для начала создал ФБ
    Код:
    FUNCTION_BLOCK Regul_TP
    VAR_INPUT
        Temperature_current : WORD; (* Температура в помещении *)
        Mod_Ustavka: WORD; (* Уставка *)
    END_VAR
    VAR_OUTPUT
        Status_circuit: BOOL; (* Контур ТП - ВКЛ-ВЫКЛ *)
    END_VAR
    VAR
    END_VAR
    
    IF (Temperature_current < Mod_Ustavka) THEN
        Status_circuit := TRUE;
    ELSIF (Temperature_current >= Mod_Ustavka) THEN
        Status_circuit := FALSE;
    END_IF
    
    В PLC_PRG это дело вызывается как
    Код:
    TP_Kitchen: Regul_TP;
     
    TP_Kitchen( Temperature_current := REAL_TO_WORD(T01), Mod_Ustavka := 24);
    D_Relays:=PUTBIT(D_Relays,14,TP_Kitchen.Status_circuit);
    Relays_TP := DWORD_TO_WORD(D_Relays);
    
    (Кстати, кто-нибудь пробовал прикручивать ПИД для управления ТП? Там инертность адская.)

    Вот этот самый Relays_TP - я даю ардуине. Хотел и его же пихать в опенхаб, дабы не плодить сущности.
    Можно, конечно, нагенерить койлов и писать в них что-то вроде
    Код:
    Rele_OpenHAB_01:=EXTRACT(X:=D_Relays, N:=14); 
    Но я очень надеялся перенести задачи опенхаба на опенхаб. :)

    Чорд. Что-то много букв получилось... :)
     
  6. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    747

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    747
    Адрес:
    Россия
    Посмотрите мой проект в соседней теме. Я как раз подобную систему реализовал. Вся логика на ПЛК110, а OH для визуализации и ручного управления (наряду с некоторыми физическими кнопками).
    То как Вы цепляете ардуинку и ПЛК - не важно.
    На ПЛК Вы создаете Modbus Slave (TCP). Я создал 2 слейва. Один для real значений (4-х байтовые) и один для дискретных (bool, int, word)
    Со стороны ПЛК не важно как Вы будете заполнять регистры слейва. Хоть dword все пишите. А со стороны OH делайте запрос как coil. И на OH Вы сделайте несколько слейвов. Один так же для real, другой для bit, третий можно для int.

    Со стороны ПЛК обращаться к биту любого слова можно просто указав его позицию. Например:

    VAR
    i: INT;
    b0,b1,b2: BOOL;
    END_VAR

    i := 2;

    b0 := i. 0; (* b0 = false *)
    b1 := i. 1; (* b1 = true *)
    b2 := i. 2; (* b2 = false *)

    А на стороне OH в любом случае к этим реле обращаться отдельно нужно так и считываете coil

    И еще в пользу coil.
    В некоторых случая в один байт можно упаковать несколько счетчиков. Допустим 3 бита на режим работы узла 1 (8 вариантов), 3 бита на режим работы узла 2 (8 вариантов) и 2 бита на режим работы узла 3 (4 варианта).
    Со стороны OH считав эти coil (items: b0, b1, ... b7) получаем режим работы:

    Unit1_Mode, Unit2_Mode, Unit3_Mode - определяем как number в *.items

    rule "Unit2_Mode" when
    Item b3 changed or
    Item b4 changed or
    Item b5 changed
    then
    var int bit0 = 0
    var int bit1 = 0
    var int bit2 = 0
    if (b3.state = ON) { bit0 = 1 }
    if (b4.state = ON) { bit1 = 1 }
    if (b5.state = ON) { bit2 = 1 }
    var int id = bit0 + bit1 * 2 + bit2 * 4
    postUpdate (Unit2_Mode, id)
    end

    на стороне ПЛК еще проще

    Unit2_Mode.0 := b3;
    Unit2_Mode.1 := b4;
    Unit2_Mode.2 := b5;

    Если на ПЛК вы определили переменную dwMode: DWORD (т.е. не отдельными битами) то:
    Unit2_Mode.0 := dwMode. 3;
    Unit2_Mode.1 := dwMode. 4;
    Unit2_Mode.2 := dwMode. 5;

    Немного грубовато, но зато работает.
     
  7. kosmas
    Регистрация:
    22.07.11
    Сообщения:
    89
    Благодарности:
    7

    kosmas

    Живу здесь

    kosmas

    Живу здесь

    Регистрация:
    22.07.11
    Сообщения:
    89
    Благодарности:
    7
    Адрес:
    Питер
    @Smith2007 спасибо, буду пробовать.
     
  8. kam711
    Регистрация:
    26.04.09
    Сообщения:
    20.412
    Благодарности:
    43.042

    kam711

    Строю дом...

    kam711

    Строю дом...

    Регистрация:
    26.04.09
    Сообщения:
    20.412
    Благодарности:
    43.042
    Адрес:
    Москва
    Хотелось побаловаться с умным домом, но все не могу остановиться на чем-то конкретном. Поскольку не понятно в какую сторону процесс по УД устаканиться - решил провода от выключателей и исполнителей стянуть в два места, причем с некоторым запасом. Лапша сейчас висит знатная. Только на втором этаже сейчас порядка 50 проводов 3х1.5 и 5х1.5. На розетки 3х2.5 отдельно.

    Сначала думал на z-wave, но din модули кубино стоят 65 евро/канал там. А коммутировать на двухканальных фибаро - не слишком удобно, они всетаки для подрозетников. Хотя купил vera edge и попробовал вариации с империхоум. Настраивается на редкость просто и удобно. Для квартиры наверное самое оно.

    Потом появилась мысль сделать на loxone + овен modbus. Ввели в сомнения тут. Плюс так и не понял - заработала связка или не очень.

    Ну последняя - попробовать OH+овен. Нужно порядка 25-30 исполнителей на этаж, управляющих выводов чуть больше. Но можно закоммутировать. Из плюсов относительно дешево и можно быстро заменить, если что-то выгорит. С локсоном такой вариант не прокатит - будешь сидеть без света несколько недель в лучшем случае. Из минусов все-таки центральный контроллер. В этом случае распределенные knx и z-wave выглядят устойчивее.

    Какие будут мысли-комментарии по этому варианту с учетом уже накопленного постояльцами опыта? Может какие-то еще варианты?

    На чем лучше поставить OH? у меня на работе есть несколько интелевых компов с пассинвным охлаждением, брали давненько для кассовых терминалов. Но всяко производительнее малинки будет. Только есть вопрос rs485, скорее всего там его нет.
     

    Вложения:

    • IMG_20160806_175932.jpg
  9. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    747

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    747
    Адрес:
    Россия
    Смотря для чего Вы планируете его использовать.
    Если всю логику управления вывести на контроллер с RS485 и eth интерфейсом, а на OH возложить только визуализацию и управление (кнопки, переключатели и пр) то вполне подойдет малинка. Тем более для малинки сейчас уже имеются корпуса на DIN рейку.
    Если планируете управление алгоритмами работы системы то тут хотя бы на базе intel atom девайс иметь.

    зы. Шкафчик коммутационный Вам нужен будет очень приличных размеров.
    Просчитайте заранее сколько проводов будете коммутировать, сколько контактов на модулях ввода-вывода будет и заложите еще запас 10-15%
     
  10. kam711
    Регистрация:
    26.04.09
    Сообщения:
    20.412
    Благодарности:
    43.042

    kam711

    Строю дом...

    kam711

    Строю дом...

    Регистрация:
    26.04.09
    Сообщения:
    20.412
    Благодарности:
    43.042
    Адрес:
    Москва
    планировал в основном для освещения

    почитал про потенциальные задержки и наверное попробую уложиться в ПЛК110-60 по одному на этаж. Иначе управление светом будет явно нервировать. А ОН тогда только для визуалаизации.

    А не подскажите - вариант плк110+модули расширения 110 нормально будет работать или задержки гарантированы?

    Еще вопрос - по внутренним реле на овене, полагаю придется ставить допником нормальные реле?
     
  11. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    747

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    747
    Адрес:
    Россия
    Это для чего так усложнять? ПЛК одного хватит. Добавьте просто модули ввода-вывода. Есть на 32 канала и ввод и вывод.
    Зависит от предполагаемой нагрузки. Смотрите характеристики ваших светильников.
    На уличное освещение я сделал через промежуточный контактор. Но там нагрузка предполагается высокая.

    Задержки можно сделать очень маленькими если установить цикличность работы программы скажем 100 мс. или еще меньше.
     
  12. kam711
    Регистрация:
    26.04.09
    Сообщения:
    20.412
    Благодарности:
    43.042

    kam711

    Строю дом...

    kam711

    Строю дом...

    Регистрация:
    26.04.09
    Сообщения:
    20.412
    Благодарности:
    43.042
    Адрес:
    Москва
    а может тогда нет смысла ставить ПЛК, а всем управлять модулями расширения через ОН. Просто взять комп помощнее и 485 в него добавить?
     
  13. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    747

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    747
    Адрес:
    Россия
    Теоретически можно.
    Но смысл задействовать целый комп в простейших алгоритмах управления?
    Для ПЛК есть хорошая среда программирования, которую ну ни как нельзя сравнить с xTend, что OH использует. Можно конечно и микроскопом гвозди заколачивать, но он быстро сломается в отличии от нормального молотка. :)
    ПЛК зарекомендовали себя как надежные, отказоустойчивые устройства. Чего не скажешь о компах.
    Мне кажется более рациональным использовать ПЛК в качестве центрального устройста, на котором вся логика работы систем устроена, а OH - средство визуализации и управления разными режимами (переключатели, димеры и пр). И при всем при этом жизненно важные элементы (отопление, водоснабжение. электрика) должны иметь ручное управление. Т. е. упал OH - лишились красивости. Упал ПЛК - перешли на ручное управление.

    ПЛК все же гораздо лучше "заточен" для этих целей.
    Посмотрите видеоуроки по Codesys и через неделю станете самостоятельно программировать свой ПЛК.
     
  14. lingvo
    Регистрация:
    25.11.15
    Сообщения:
    1.416
    Благодарности:
    458

    lingvo

    Живу здесь

    lingvo

    Живу здесь

    Регистрация:
    25.11.15
    Сообщения:
    1.416
    Благодарности:
    458
    Вы можете спокойно реализовать все алгоритмы на OpenHAB. В том числе используя графические среды программирования. Например я всю логику делаю в Node-RED:
    upload_2016-11-27_9-25-18.png
    Мощности даже RPi 2 или 3 для этого хватит с головой. А если не хватит - сможете легко перелезть на любое железо помощнее. Основное отличие данного подхода от ПЛК - программа исполняется не циклически, а по событиям - например вы нажали на кнопку, появилось событие, которое сразу же отработалось алгоритмом и сразу создало события исполнителям. В итоге задержки получаются меньше 100мс, и мощный компьютер не надо. Проблема в том, что теоретически все события могут произойти одновременно и тогда данный подход может привести к большим задержкам, чем в ПЛК, так как события будут обрабатываться по очереди. Для производственных процессов это катастрофа, поэтому ПЛК и работают по циклическим программам, чтобы гарантировать свои 100мс вне зависимости от количества событий. Но для дома это далеко не критично - вы не щелкаете светом в 10 помещениях одновременно.
    Проблема будет в RS485. Из стандартных протоколов для него есть только Modbus, который опять же приведет к задержкам из-за поллинга, как ни крути. В вашем случае я бы сделал какой-нибудь IP шлюз на тот же KNX, а дальше бы уже в шкафу разместил все I/O модули.
     
    Последнее редактирование: 27.11.16
  15. kam711
    Регистрация:
    26.04.09
    Сообщения:
    20.412
    Благодарности:
    43.042

    kam711

    Строю дом...

    kam711

    Строю дом...

    Регистрация:
    26.04.09
    Сообщения:
    20.412
    Благодарности:
    43.042
    Адрес:
    Москва
    Хороший вопрос. Согласен - в двух вариантах есть свои плюсы и минусы. С одной стороны в рамках одной железки включения-выключения будут идти однозначно быстрее, чем через ОН и модбас. Но потенциально тормоза возможно даже в пределах родного железа (если подключать доп модули).

    ну Вы же сами говорите
    именно этого я опасаюсь, поэтому была мысль с двумя поэтажными ПЛК. А так все выгляит чудесно - воткнул еще пришлепку с z-wave и управляешь всем в рамках ОН.
    такой вариант предлагали. но есть пару моментов - ценники и доступность в московии. Овен в этом отношении в разы дешевле и доступнее. С учетом, что рассматриваю как временное решение, пока не устаканятся вариации с УД - вкладываться на 200 тыр в динозавра индустрии УД не слишком хочется.