'Inteligenty' dom ze sterownikiem PLC
Główna => Sterowanie i Wizualizacje => Wątek zaczęty przez: primary1 w Marca 28, 2014, 07:08:58 pm
-
Witam.
Ostatnio dość intensywnie zajmuje się kwestią zarządzania systemem inteligentnego budynku opartego na sterowniku PLC.
Trafiłem na bardzo ciekawy projekt - openHAB - i wygląda na to, że wykorzystam go do sterowania z tabletów (w formie panelu operatorskiego na ścianie) i ze smartfonów z androidem.
Każdy kto ma jakiś serwer spięty z PLC, albo jest w stanie uruchomić Raspberry Pi może pomyśleć nad takim rozwiązaniem.
Nie będę się za bardzo rozpisywać o openHAB i odsyłam do strony projektu: http://www.openhab.org
Tak na szybko: oprogramowanie instalujemy na komputerze/minikomputerze i konfigurujemy do współpracy z urządzeniami, sterownikami itp. Od reki wspieranych jest dużo protokołów komunikacyjnych, w tym oczywiście modbus. Oprogramowanie może posłużyć do zarządzania, zbierania danych (wykresy) a nawet i sterowania urządzeniami wraz z zaawansowanymi regułami automatyki. Interfejs jest dostępny z przeglądarki i aplikacji na urządzenia mobilne. Poza tym zarządzać możemy przez e-mail, komunikator, terminal itp...
Pisałem już o tym na innym forum, ale pomyślałem, że może Was coś takiego zainteresuje, dlatego postanowiłem napisać również tu.
Pozdrawiam.
-
Używam w domu OpenHABa postawionego na BananaPi. Pracuje stabilnie.
Bardzo obiecujący system z olbrzymim potencjałem. W projekcie jest duża aktywność, powstaje dużo rozszerzeń do znanych urządzań. Np. co mnie ucieszyło, to kilka dni temu dodany został np. "binding" do Satela napisany przez rodaka. Podstawowy interfejs nie powala jeszcze na kolana, ale zupełnie wystarczy no i są rozszerzenia, które są całkiem eleganckie. Jedynym problemem jest dla mnie dokumentacja, często napisana bardzo słabo i chaotycznie. Trudno też znaleźć przykłady. Natomiast jest w miarę dobre wsparcie od autorów, programistów i użytkowników. Projekt jest młody ale bardzo dynamicznie sie rozwija.
-
Chciałem przetestować openHAB ale mam problem z poprawnym odczytem stanów wyjść. Czysta instalacja openHAB, wgrany jedynie wago binding, połączenie się nawiązuje natomiast w logu dostaję ciągle "MySwitch1 state updated to OFF" dla wszystkich skonfigurowanych itemów niezależnie czy wyjście jest aktywne czy nie.
Dopiero poznaję openHAB więc może coś źle zrozumiałem ale nie mogę z tym ruszyć do przodu, czy szanowni koledzy mogli by wkleić przykładową konfigurację?
-
Na to wygląda że binding Wago jest uwalony (albo ja nie umiem go skonfigurować) przełączyłem się na binding ModBus i zaczął poprawnie sczytywać statusy.
-
Witam
Jestem początkujący z Openhab mógłbym prosić o przykład zmiany stanu wyjścia sterownika i konfiguracji biblioteki binding ModBus.
-
Je też dopiero zacząłem z OpenHab (jeszcze nie wiem czy będę to wykorzystywał) ale żeby się połączyć i odczytywać co 10 sek stany 74 wyjść wystarczyło:
w opnhab.cfg:
modbus:poll=10000
modbus:tcp.slave2.connection=192.168.0.1:502:rtu
modbus:tcp.slave2.id=1
modbus:tcp.slave2.type=coil
modbus:tcp.slave2.start=512
modbus:tcp.slave2.length=74
w .items:
Group ALL
Switch MySwitch0 "My Modbus Switch0" (ALL) {modbus="slave2:0"}
Switch MySwitch1 "My Modbus Switch1" (ALL) {modbus="slave2:1"}
Switch MySwitch2 "My Modbus Switch2" (ALL) {modbus="slave2:2"}
Switch MySwitch3 "My Modbus Switch3" (ALL) {modbus="slave2:3"}
...
-
Witaj,
Czy udało Ci sie sterować wyjściami Wago poprzez openHab ?
Mogę odczytywać stany ale niestety nie mogę dojść czy da się nimi sterować ?
-
Niestety napotkałem ten sam problem ale myślałem, że to coś u mnie sknocone. Nie udało mi się tego rozwiązać, na razie porzuciłem OpenHAB i przymierzam się do napisania własnej wizualizacji.
-
Ok czyli jesteśmy na tym samym etapie,
Ja się jeszcze nie poddaje, musi być możliwość sterowania.
Pozdrawiam,
-
Witam.
Ja używam co prawda po tcp i tego slave2 mam dla włączników:
modbus:tcp.slave2.connection=x.x.x.x:502
modbus:tcp.slave2.type=coil
modbus:tcp.slave2.id=1
modbus:tcp.slave2.start=12288
modbus:tcp.slave2.length=48
a w items:
Switch MyS1 "Test Switch" (Intern) { modbus="slave2:>0:<1" }
-
Witaj,
Czy przy takiej konfiguracji możesz sterować wyjściami wago z OpenHab ?
Mi przy tej konfiguracji (wysokiego adresu) nie podaje nawet stanu wyjść.
-
Wyjściami steruje poprzez NOVRAM (12288... 24575, %MW0... %MW12287) oraz Fb_LatchingRelay sprawdzając bit w pamięci do którego może pisać openhab poprzez modbusa oraz wejścia fizyczne i na podstawie tego ustawiam wyjście oraz drugą zmienną w pamięci którą openhab czyta.
Jakoś nie miałem "mądrzejszego" pomysłu.
-
Mógł byś mi bardziej łopatologicznie to opisać. Najlepiej z przykładem :D
-
Mógłbym:
VAR
LIGHT1: Fb_LatchingRelay;
VIS_LIGHT1 AT %MX0.0 : BOOL;
VIS_LIGHT2 AT %MX0.1 : BOOL;
END_VAR
LIGHT1(xSwitch:=IN1 OR VIS_LIGHT1); OUT1:=LIGHT1.xActuator; VIS_LIGHT2:=OUT1; VIS_LIGHT1:=FALSE;
-
DZIAŁA :-)
Dzięki wielkie.
-
Marek,
Jeszcze jedno pytanie udało Ci sie przejąć kontrole nad roletami poprzez openhab ?
-
Jeszcze nie posiadam rolet :)
Z tego co pamiętam rollershutter nie ma zaimplementowanej obsługi modbus'a, więc trzeba stworzyć przełączniki obsługujące poszczególne funkcje poszczególnych rolet i potem w rules zdefiniować ich obsługę.
-
Ok czyli jednak ta droga, ktoś na forum openhab chwalił się że napisał obsługę ale nie odpisuje na PM
-
U siebie do rolet używam typu Number i Selection item. Stan rolety wybieram z listy od 0 do 100% co 10%.
Wcześniej używałem Rollershutter. W starych kopiach znalazłem obsługę po Modbus:
items:
Rollershutter Roleta_Parter_Salon_TylP "Tył prawa [%d %%]" (Rolety, Rolety_Parter, Rolety_Salon, Rolety_SalonG)
Number Roleta_Parter_Salon_TylP_M {modbus="slave2:19"}
rules:
rule "Roleta_Parter_Salon_TylP zapis"
when
System started
or
Item Roleta_Parter_Salon_TylP received command
then
var State = Roleta_Parter_Salon_TylP.state as DecimalType
var Pos = State.toBigDecimal.toBigInteger.intValue
sendCommand(Roleta_Parter_Salon_TylP_M, Pos)
end
rule "Roleta_Parter_Salon_TylP odczyt"
when
Item Roleta_Parter_Salon_TylP_M changed
then
var State = Roleta_Parter_Salon_TylP_M.state as DecimalType
var Pos = State.toBigDecimal.toBigInteger.intValue
Roleta_Parter_Salon_TylP.state = new PercentType(Pos)
end
Nie jestem pewny czy to działająca konfiguracja, ale można się na tym wzorować.
-
Witaj,
Dzięki za przykład niestety u mnie nie działa...
Możesz podesłać "aktualny" sposób ?
-
Będę miał chwilę to podeślę jeszcze przykład ze sterowaniem przez "markery" odpowiadające akcjom góra, dół i stop.
-
Witam,
Rasperry łączy się z integrą
01:32:36.276 INFO o.o.c.s.AbstractActiveService[:169] - Satel Refresh Service has been started
01:32:36.287 INFO o.o.b.s.i.protocol.Ethm1Module[:65] - Connecting to ETHM-1 module at 192.168.10.201:7094
01:32:36.305 INFO o.o.b.s.i.protocol.Ethm1Module[:70] - ETHM-1 module connected successfuly
ale nie przekazuje żadnych rozkazów, mam włączoną integrację na ethm. Czy mógłby ktoś podesłać mi swoje pliki konfiguracyjne ? items, rules, sitemap, script, próbuję ogarnąć temat ale nie działa.
Podstawy jakie mnie interesują to:
podnoszenie, opuszczanie rolet, (pojedyńczo i grupowo)
sterowanie wyjściami (garaż itp.)
uzbrajanie alarmu
kasowanie alarmów
Dodatkowo chcę to ogarnąć na tablet z androidem, coś ala
https://github.com/smar000/openhab-dashboard/blob/master/tmp/image.jpg
Oczywiście dogadamy się $
-
Wyjściami steruje poprzez NOVRAM (12288... 24575, %MW0... %MW12287) oraz Fb_LatchingRelay sprawdzając bit w pamięci do którego może pisać openhab poprzez modbusa oraz wejścia fizyczne i na podstawie tego ustawiam wyjście oraz drugą zmienną w pamięci którą openhab czyta.
Jakoś nie miałem "mądrzejszego" pomysłu.
Mógłbym:
VAR
LIGHT1: Fb_LatchingRelay;
VIS_LIGHT1 AT %MX0.0 : BOOL;
VIS_LIGHT2 AT %MX0.1 : BOOL;
END_VAR
LIGHT1(xSwitch:=IN1 OR VIS_LIGHT1); OUT1:=LIGHT1.xActuator; VIS_LIGHT2:=OUT1; VIS_LIGHT1:=FALSE;
Witam,
ja analogicznie steruję światłem przez Fb_LatchingRelay i żeby nie przerabiać zbytnio kodu na PLC uzupełniłem jedynie deklarację zmiennych o %MX tj. np. VIS_K01 AT %MX0.8: BOOL; VIS_K02 AT %MX0.9: BOOL;VIS_K19 AT %MX1.10: BOOL; itd. - wtedy wiem gdzie szukać ich przy komunikacji przez modbus w openhab.
W samym openhab mam:
cfg
modbus:tcp.slave2.connection=x.x.x.x:502
modbus:tcp.slave2.type=coil
modbus:tcp.slave2.id=1
modbus:tcp.slave2.start=12288
modbus:tcp.slave2.length=100
.item
Switch cewka_VIS_K19 "PLC_PRG.VIS_K19" (ALL) {autoupdate="false",modbus="slave2:26"}
.sitemap
Switch item=cewka_VIS_K19 label="VIS_K19_kominek" mappings=[ON="ON"]
.rule
rule "Automatically switch off switch"
when
Item cewka_VIS_K19 received command ON
then
createTimer(now.plusSeconds(1))[|
cewka_VIS_K19.sendCommand(OFF)
]
end
Wtedy po wciśnięciu lampy (VIS_K19_kominek) na ON zmienna %MX1.10 przyjmuje wartość 1 a po jednej sekundzie dzięki zapisom w .rules automatycznie przyjmuje wartość 0. Nie trzeba angażować dodatkowych zmiennych i działa :)
Teraz walczę żeby z danych wyciągniętych z plc_visu.xml odszyfrować adresy zmiennych innych niż stany 0/1 tj. zapisane w PLC zmienne przechowujące czas, datę zdarzeń i statystyki załączeń światła bo jakoś tego nie widzę.
-
Witam serdecznie.
Mam problem z sterowaniem przez openhab. To znaczy tak - zdeklarowałem zmienne globalne w codesy ,dodałem adres TEST %MW3.11:BOOL
Po skompilowaniu projektu i załadowaniu go do sterownika wciskając switch w openhab widzę w zmiennych globalnych zmianę z FALSE na TRUE i odwrotnie ale nie może to wysterować Fb_LatchingRelay. W samym bloku również mam na xSwitch IN27 OR TEST. Gdy wciskam przycisk podłączony do wejścia IN27 również widzę to w Openhab.
Proszę podpowiedzcie mi co żle robie?