'Inteligenty' dom ze sterownikiem PLC

 Language:
Szukanie zaawansowane  

Aktualności:

Powrót do strony głównej: www.edom-plc.pl

Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.

Wiadomości - mkochniarczyk

Strony: [1]
1
Tematy ogólne / Odp: Dwa odczyty z jednego 1-wire
« dnia: Marca 29, 2019, 06:46:03 am »
Nie można odczytywać tych samych czujników 1-wire z dwóch różnych urządzeń. Natomiast można podłączyć czujnik równolegle (jeden kanał) lecz trzeba sprawdzić czy  urządzenie odczytujące ma taką możliwość.

2
Programowanie / Odp: Zmienne persistent
« dnia: Czerwca 12, 2018, 04:06:24 pm »
Jak próbowałem implementować biblioteki Oscat do obsługi rolet napotkałem parę problemów których ni jak nie mogłem zrozumieć.
Gdzieś później wyczytałem że biblioteka idealnie pasuje do żaluzji (nie rolet) gdzie zaciemnienie polega na przekręceniu każdej lamelki o jakiś kąt. Wiem że autor forum korzysta z tej biblioteki ale nie znalazłem nigdzie wniosków po uruchomieniu.

3
Programowanie / Odp: Zmienne persistent
« dnia: Czerwca 04, 2018, 04:34:16 pm »
Też walczyłem z tymi wbudowanymi funkcjami z bibliotek. Niestety żadna nie działała tak jakbym chciał... w końcu napisałem swoją funkcję.
Nacisnę dłużej = zamyka lub otwiera do końca.
Nacisnę dwa razy = pozycja uchylona
Zatrzymanie = krótkie naciśnięcie

FUNCTION_BLOCK BLIND
VAR_INPUT

   key_up,key_down : BOOL;

END_VAR

VAR_IN_OUT
   param :  type_param_blinds;
END_VAR

VAR_OUTPUT
   engine_up, engine_down : BOOL;
END_VAR
VAR

   _click_up , _click_down :CLICK_MODE;
   k_long_up , k_single_up , k_double_up : BOOL;
   k_long_down , k_single_down , k_double_down : BOOL;

   shadow   :BOOL := FALSE;

   start_pulse_up,start_pulse_down, start_pulse_shadow : BOOL;
   pulse_up, pulse_down,pulse_shadow :BOOL;
   g_puls_up,  g_puls_down,g_puls_shadow : GEN_PULSE;
   r_puls_up, r_puls_down,  r_puls_shadow : R_TRIG;

END_VAR


_click_up(
   IN:= key_up ,
   T_LONG:= _T_LONG ,
   SINGLE=> k_single_up,
   DOUBLE=> k_double_up,
   LONG=> k_long_up ,
   TP_LONG=> );

_click_down(
   IN:= key_down ,
   T_LONG:= _T_LONG ,
   SINGLE=> k_single_down,
   DOUBLE=> k_double_down,
   LONG=> k_long_down ,
   TP_LONG=> );



(*generatory impulsow do licznika CV*)
g_puls_up (ENQ := engine_up, PTH := DWORD_TO_TIME(param.time_up*5  )  , PTL := DWORD_TO_TIME(param.time_up*5 ) , Q => pulse_up);
g_puls_down (ENQ := engine_down, PTH := DWORD_TO_TIME(param.time_down*5), PTL := DWORD_TO_TIME(param.time_down*5) , Q => pulse_down);
g_puls_shadow (ENQ := engine_up OR engine_down, PTH := DWORD_TO_TIME(param.time_slot*5), PTL :=DWORD_TO_TIME(param.time_slot*5) , Q => pulse_shadow);


(*wykrywanie impulsow *)
r_puls_up(CLK := pulse_up);
r_puls_down(CLK := pulse_down);
r_puls_shadow (CLK := pulse_shadow);

(*modyfikacja CV zgodnie z wykrytymi impulsami*)
IF(r_puls_up.Q AND param.CV_S =100  AND   param.CV < 100 )          THEN    param.CV := param.CV + 1;END_IF;
IF(r_puls_down.Q  AND  param.CV > 0 )                               THEN   param.CV := param.CV - 1;END_IF;
IF(r_puls_shadow.Q) THEN
    IF(engine_up  AND  param.CV_S < 100 )                         THEN   param.CV_S := param.CV_S + 1;
   ELSIF(engine_down AND param.CV =0  AND param.CV_S > 0)       THEN param.CV_S := param.CV_S -1;
   END_IF;
END_IF;


(*ZATRZYMANIE SILNIKÓW*)
IF(engine_down OR engine_up) THEN
   IF(k_single_down OR k_single_up OR param.open_close > 0) THEN
      param.POS :=0;  param.open_close:=0;   engine_up := FALSE; engine_down := FALSE; shadow := FALSE;
   END_IF;
END_IF;
(*jezeli pozycja auto nie ustalona*)
IF (param.POS = 0) THEN
   (*jezeli roleta jest na dole*)
   IF(param.CV  = 0 ) THEN
      IF(shadow AND param.CV_S = 100) THEN  shadow := FALSE; engine_up := FALSE; engine_down := FALSE;
      ELSIF(engine_down AND param.CV_S = 0) THEN engine_up := FALSE; engine_down := FALSE;
      END_IF;
   (*jezeli jest juz na gorze*)
   ELSIF (param.CV = 100 AND engine_up) THEN  engine_up := FALSE; engine_down := FALSE;
   END_IF;
(*jezeli osiagniela zadana pozycje*)
ELSE IF(param.POS = param.CV)  THEN param.POS := 0;  engine_up := FALSE; engine_down := FALSE;    END_IF;
END_IF;

(*URUCHOMIENIE SILNIKOW*)
IF(key_up OR key_down) THEN param.POS := 0 ; END_IF;
IF((k_long_up OR k_double_up)  AND engine_down = FALSE)  THEN
   IF(k_double_up AND param.CV = 0) THEN shadow:= TRUE; END_IF;
   engine_up := TRUE;
END_IF;
IF((k_long_down OR k_double_down)  AND engine_up = FALSE)  THEN
   IF(k_double_down AND param.CV > 0) THEN shadow:= TRUE; END_IF;
   engine_down := TRUE;

 END_IF;

IF(param.open_close > 0) THEN
   IF (param.open_close = 1) THEN engine_up := TRUE;
   ELSIF (param.open_close = 2) THEN engine_down := TRUE;
   END_IF;
   param.open_close := 0;
END_IF;

IF(param.POS > 0) THEN
   IF(param.POS > param.CV) THEN engine_up := TRUE;
   ELSIF (param.POS < param.CV) THEN engine_down := TRUE;
   ELSE param.POS := 0;
   END_IF;
END_IF;



{attribute 'pack_mode' := '2'}
TYPE type_param_blinds :
STRUCT
   time_up       : BYTE ;      res1: BYTE ;
   time_down    :BYTE ;         res2:BYTE;
   time_slot       :BYTE;         res3 :BYTE ;
   res4          :BYTE ;      res5:BYTE;
   POS         :BYTE := 0;      res6:BYTE;
   open_close   :BYTE := 0;      res7:BYTE;
   CV            : BYTE := 0;   res8:BYTE;
   CV_S          :BYTE;         res9:BYTE;

END_STRUCT
END_TYPE


K_BLIND (
   key_up := K_K_ROL_UP,
   key_down := K_K_ROL_DOWN,
   engine_down => K_ROL_ENGINE_DOWN,
   engine_up => K_ROL_ENGINE_UP,
   param := _RETAIN.param_blinds[ K ],
);

4
Tematy ogólne / Odp: Logo!8
« dnia: Kwietnia 14, 2018, 08:09:26 am »
Tak, widzę że zaimplementowali w Logo Modbus TCP/IP.

5
Tematy ogólne / Odp: Logo!8
« dnia: Kwietnia 13, 2018, 09:27:58 pm »
Logo 8 został stworzony do lokalnego sterowania (kotłownia,rolety, światła, bramy). Ale jako główny sterownik się nie nadaje.

6
Tematy ogólne / Odp: Logo!8
« dnia: Kwietnia 13, 2018, 04:27:48 pm »
Dla mnie Logo!8 to "zabawka". Obsłuży tylko 25 wejść i 20 wyjść. Ja do samych rolet potrzebowałem 28 wyjść :)

7
Programowanie / Odp: WebVisu - czas reakcji
« dnia: Marca 30, 2018, 06:34:03 pm »
webvisu.html odpowiada średnio w czasie 85ms
A odświeżenie całej strony?

8
Jeżeli zostawisz skrętkę możesz w szafie po prostu zamontować zwykłe przekaźniki uruchamiane z kontaktów. Możesz obok skrętki ułożyć do kontaktów dodatkowy kabel YKY i połączyć to wszystko w szafie. Koszty dodatkowe .... chyba podobne (dodatkowy kabel vs przekaźniki).

9
Programowanie / Odp: WebVisu - czas reakcji
« dnia: Marca 25, 2018, 07:24:14 pm »
Panowie a jakie macie czasy odpowiedzi przy takim połączeniu z PLC ?

10
Jeżeli podjąłeś decyzję że sterowanie zrobisz na PLC WAGO to każde inne rozwiązane będzie bardziej skomplikowane. Uwierz w siebie, naprawdę żeby uruchomić pierwszy prosty program napisanym w  Codesys to dla początkującego kilka godzin (trochę chęci, znajomości angielskiego i dużo "googlowania"). Dodatkowo tutoriale admina są napisane bardzo przejrzyście.

11
Tematy ogólne / Odp: Sklejanie przekaźnika z zasilaczem do listwy LED.
« dnia: Marca 02, 2018, 07:40:53 pm »
Cytuj
Czy da się usprawnić ten zasilacz który mam dodając jakieś zabezpieczenie?
Można w szereg dać opornik aby ograniczyć duże prądy rozruchowe... lecz nie wiadomo jak zareaguje na dłuższą metę sam zasilacz.
Cytuj
Czy może wymienić na inny zasilacz?
Podejrzewam że wszystkie "elektroniczne" będą miały podobne parametry przy włączaniu.
Cytuj
Czy jednak przemeblować rozdzielnicę i użyć grubego przekaźnika?
To rozwiązanie będzie najpewniejsze.

12
(Pod)Systemy i Funkcje / Odp: Czujnik ruchu tylko do oświetlenia.
« dnia: Lutego 23, 2018, 07:25:55 pm »
Schemat trywialnie prosty. Można użyć jakiegokolwiek tranzystora NMOS, oraz małej przetwornicy DC-DC. Cały układ pobiera ~2,5mA przy zasilaniu 24VDC.

13
(Pod)Systemy i Funkcje / Odp: Czujnik ruchu tylko do oświetlenia.
« dnia: Lutego 17, 2018, 09:13:08 am »
Mam takie zamontowane. Zasilany jest z "przetworniczki" 24->5V (allegro za 4zł) + tranzystor NMOS na wyjście.

14
Na początek podziękowania dla autora za wkład włożonej pracy oraz udostępnienie plików panelu administracyjnego.
Dzięki edom-plc.pl zdecydowałem się na wykonanie centralnego sterowania na PLC 750-881 w połączeniu z raspberry-pi. Po uruchomieniu systemu próbowałem sterowanie wykonać na Domoticz.... niestety porażka :(... potem OpenHab.... też porażka :(.
Po ściągnięciu bootstrap'a okazało się że to całkiem przyjazny i prosty do wdrożenia przykład. Po kilku dniach udało mi się zaimplementować komunikację po MODBUS ze sterownikami PLC (jeden siedzi w kotłowni). Komunikacja po MODBUS działa zdecydowanie szybciej. Strona odświeża się w parę ms. Chętne służę pomocą przy implementacji. Jak dokończę projekt pokażę wyniki  :).

15
Tematy ogólne / Odp: Modbus Wago->RPi->Reku
« dnia: Listopada 24, 2017, 08:23:32 pm »
Temat trochę stary ale może info się komuś przyda.
Ja wykorzystałem port serwisowy. Potrzebny jest tylko konwerter TTL na RS485. Mam podpięty pod niego własnej roboty czujnik temperatur DS18B20 -> MODBUS RTU.

Strony: [1]