'Inteligenty' dom ze sterownikiem PLC

 Language:
Szukanie zaawansowane  

Aktualności:

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

Autor Wątek: Integracja PLC z systemem alarmowym SATEL INTEGRA  (Przeczytany 86144 razy)

krwi

  • Newbie
  • *
  • Wiadomości: 47
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #30 dnia: Września 20, 2014, 12:36:59 pm »

Rozbudowałem nieco kod zamieszczony przez kamiKAC o pobieranie danych o stanie wyjść centrali. Dzięki temu można np w oparaciu o aktywne wyjście alarmowe zapalić wybrane obwodu itp. Poniżej zamieszczam zmodyfikowany kod funkcji SatelEthernet, może komuś się przyda (tablice czujki i wyjścia mam w rozmiarze 64 gdyż posiadam Integrę 64).
FUNCTION_BLOCK SatelEthernet
VAR_INPUT
xOpen_Client: BOOL; (* uaktywnij polaczenie do modulu ETHM-1 *)
IP: STRING; (* adres IP  modulu ETHM-1 *)
Port: WORD; (* port integracji modulu ETHM-1 *)
END_VAR
VAR_OUTPUT
czujki: ARRAY [1..64] OF BOOL; (* tablica zawierajaca stany czujek od 1 do 64, TRUE - czujka aktywna *)
strefy: ARRAY [1..32] OF BOOL; (* tablica zawierajaca stany stref od 1 do 32, TRUE - strefa uzbrojona *)
wyjscia: ARRAY [1..64] OF BOOL; (* tablica zawierajaca stany wyjsc od 1 do 64, TRUE - wyjscie aktywne *)
xCLIENT_OPEN: BOOL; (* polaczenie do modulu ETHM-1 aktywne *)
wSOCKET: WORD; (* numer wtyczki *)
END_VAR
VAR
Protocol : SEL_PROTOCOL := IPPROTO_TCP; (* wybrany protokol transmisji - TCP *)
ProtocolType : SEL_TYPE := SOCK_STREAM; (* wybrany typ trasmisji - stream *)
MyEthernetOpen : ETHERNET_CLIENT_OPEN;
MyEthernetClose : ETHERNET_CLIENT_CLOSE;
MyEthernetWrite : ETHERNET_WRITE;
MyEthernetRead : ETHERNET_READ;
Read00 : BOOL := TRUE; (* zadanie wyslania polecenia 00 - odczyt stanu czujek*)
Read0A : BOOL := TRUE; (*zadanie wyslania polecenia 0A - odczyt stanu uzbrojenia alarmu *)
Read17 : BOOL := TRUE; (* zadanie wyslania polecenia 00 - odczyt stanu wyjsc*)
fi: INT; (* pierwszy  indeks ramki *)
fin: INT; (* drugi indeks ramki *)
buf_len: WORD; (* dlugosc danych w buforze *)
znacznik: BYTE := 1; (* znacznik uzywany do operacji bitowych *)
pt: POINTER TO ARRAY [1..1500] OF BYTE; (* wskaznik do tablicy - uzywany przy przkazywaniu tablicy do funkcji *)
frame_rcv: ARRAY [1..1500] OF BYTE; (* tablica danych odebranych *)
frame_snd: ARRAY [1..1500] OF BYTE; (* tablica danych wysylanych *)
Status: WORD := 0; (* status transmisji: 0 - inicjalizacja, 1 - sprawdzenie stosu TCP/IP 4 - inicjalizacja otwarcia polaczenia, 5 - oczekiwanie na otwarcie polaczenia, 10 -wyslanie danych do serwera, 20 - oczekiwanie na odbior danych, 30 - interpretacja otrzymanych danych, 40 - zamykanie polaczenia *)
GetConfig: ETHERNET_GET_NETWORK_CONFIG;
utERROR: ETH_ERROR;
closeState: INT; (* status zamykania polaczenia *)
Timeout: TOF_1 := (PT:=T#2s, IN:=TRUE, RST:= FALSE); (* maksymalny czas oczekiwania na odpowiedz ze sterownika *)
END_VAR

IF xOpen_Client THEN

CASE Status OF
0:(*Initialize functionblocks*)
GetConfig(EN:=FALSE );
GetConfig(EN:=TRUE );
status:=1;
utERROR:=0;
wSocket:=0;
closeState:=0;
xCLIENT_OPEN:=FALSE;


1:(*check ethernet stack*)
GetConfig(EN:=TRUE );
IF GetConfig.ENO THEN
IF GetConfig.IP_ADR<>0 THEN
status:=4;(*stack initialized*)
ELSE
status:=0;(*try again*)
END_IF
END_IF


4:(*open connection*)
MyEthernetRead( EN:= 0, SOCKET:=0 ,  DATA:=frame_rcv );
MyEthernetClose(EN:= 0);
MyEthernetOpen(EN:=0);

MyEthernetOpen(EN:=1 , TYP:=ProtocolType , PROTO:=Protocol , IP_ADR:= IP_ADDRESS(IP), PORT:=Port );
status:=5;

5:(*wait for server response according to client  request to open the connection*)

MyEthernetOpen(EN:=1, TYP:=ProtocolType, PROTO:=Protocol, IP_ADR:= IP_ADDRESS(IP), PORT:=Port );
IF  MyEthernetOpen.ENO = 1 THEN
IF MyEthernetOpen.ERROR = 0 THEN
Status  := 10; (*socket available*)
xCLIENT_OPEN:=TRUE;
wSOCKET :=MyEthernetOpen.socket;
MyEthernetWrite( EN:= 0 , DATA:=frame_snd );
ELSE
Status := 0; (*no socket available, try it again *)
END_IF;
utERROR:=MyEthernetOpen.ERROR;
END_IF


10:(* Write data to server*)

frame_snd[1]:=16#FE;
frame_snd[2]:=16#FE;
IF Read00 THEN
frame_snd[3]:=16#00; (* zapytanie o stan czujek *)
ELSIF Read0A THEN
frame_snd[3]:=16#0A; (* zapytanie o stan uzbrojenia alarmu *)
ELSIF Read17 THEN
frame_snd[3]:=16#17; (* zapytanie o stan wyjsc *)
ELSE
frame_snd[3]:=16#7F; (* zapytanie o zmiane stanu *)
END_IF
pt:=ADR(frame_snd);
frame_snd[4]:=WORD_TO_BYTE(SHR(SatelCRC(pt,3,3),8)); (* obliczenie CRC.H *)
frame_snd[5]:=WORD_TO_BYTE(SatelCRC(pt,3,3)); (* obliczenie CRC.L *)
frame_snd[6]:=16#FE;
frame_snd[7]:=16#0D;
MyEthernetWrite(EN:= 1,SOCKET:= MyEthernetOpen.SOCKET, LEN_IN:=7,DATA:=frame_snd); (* wyslanie ramki *)
IF MyEthernetWrite.eno THEN
IF(MyEthernetWrite.ERROR <>0) THEN
Status:=40; (* Error writing to the socket, close it *)
ELSE
Status:=20; (* Write complete, read data *)
END_IF;
utERROR:=MyEthernetWrite.ERROR;
END_IF
Timeout (IN := FALSE);


20: (* Read data*)

MyEthernetRead( EN:= 1, SOCKET:=MyEthernetOpen.SOCKET ,  DATA:=frame_rcv );
MyEthernetRead( EN:= 0, SOCKET:=0 ,  DATA:=frame_rcv );

Timeout (IN := FALSE);
utERROR:=MyEthernetREAD.ERROR;
IF(MyEthernetRead.ERROR<>0) THEN (* Error reading the socket, close it *)
Status:=40;
ELSIF (MyEthernetRead.LEN_OUT <> 0) THEN  (* Process the data received via the ethernet port *)
Timeout(IN := TRUE);
Status:=30;
ELSIF NOT Timeout.Q THEN
Timeout(IN := TRUE);
Status:=10; (* uplynal czas oczeiwania na odpowiedz, zerowanie licznika i ponowne wyslanie zapytania *)
END_IF

30: (* Process received data *)

buf_len:=MyEthernetRead.LEN_OUT;
FOR fi:=3 TO buf_len-4 DO (* sprawdzenie, czy bajt odebranej ramki nie zawiera kombinacji FE F0; w takim przypadku wyrzuc F0 i skroc odebrane dane *)
IF frame_rcv[fi]=16#FE THEN
IF frame_rcv [fi+1]=16#F0 THEN
FOR fin:=fi+1 TO buf_len-2 DO
frame_rcv[fin]:= frame_rcv[fin+1];
END_FOR
buf_len:=buf_len-1;
END_IF;
END_IF;
END_FOR;
pt:=ADR(frame_rcv); (* przekazanie adresu znacznika danych odebranych - potrzebne do przekazania danych do obliczenia CRC *)
IF frame_rcv[buf_len-3]=WORD_TO_BYTE(SHR(SatelCRC(pt,3,buf_len-4),8)) AND frame_rcv[buf_len-2]=WORD_TO_BYTE(SatelCRC(pt,3,buf_len-4)) THEN (* sprawdzenie poprawnosci CRC otrzymanych danych *)
IF frame_rcv[3]=16#7F THEN (* jesli otrzymano ramke zapytania o zmiane stanu *)
(*Com7FReceived:=Com7FReceived+1;*)
IF (frame_rcv[4] AND znacznik) >0 THEN (* sprawdzenie czy bit 0 pierwszego bajtu danych jest 1, czyli stan czujek ulegl zmianie *)
Read00:=TRUE; (* jesli tak, nastepnym razem zapytaj o stan czujek *)
END_IF;
IF (frame_rcv[5] AND ROL(znacznik,2)) >0 THEN (* sprawdzenie czy bit 2 drugiego bajtu danych jest 1, czyli stan stref ulegl zmianie *)
Read0A:=TRUE; (* jesli tak, nastepnym razem zapytaj o stan stref*)
END_IF;
IF (frame_rcv[6] AND ROL(znacznik,7)) >0 THEN (* sprawdzenie czy bit 7 trzeciego bajtu danych jest 1, czyli stan wyjsc ulegl zmianie *)
Read17:=TRUE; (* jesli tak, nastepnym razem zapytaj o stan wyjsc*)
END_IF;
ELSIF frame_rcv[3] = 16#00 THEN (* jesli otrzymano ramke stanu czujek *)
(*Com00Received:=Com00Received+1;*)
znacznik:=1;
FOR fi:=4 TO buf_len-5 DO (* dla kazdego bajtu danych *)
FOR fin:=0 TO 7 DO (* dla kazdego bitu *)
IF (SHL(znacznik,fin) AND frame_rcv[fi]) >0 THEN (* sprawdz czy bit jest 1 *)
czujki[(fi-4)*8+fin+1]:=TRUE; (* jesli tak stan czujki = TRUE - aktywna *)
ELSE
czujki[(fi-4)*8+fin+1]:=FALSE; (* jesli nie = FALSE - nieaktywna *)
END_IF;
END_FOR;
END_FOR;
(*AktCzujek := TRUE;*)
Read00 := FALSE;; (* nastepnym razem nie pytaj o czujki *)
ELSIF frame_rcv[3] = 16#0A THEN
FOR fi:=4 TO buf_len-5 DO (* dla kazdego bajtu danych *)
FOR fin:=0 TO 7 DO (* dla kazdego bitu *)
IF (SHL(znacznik,fin) AND frame_rcv[fi]) >0 THEN (* sprawdz czy bit jest 1 *)
strefy[(fi-4)*8+fin+1]:=TRUE; (* jesli tak stan strefy = TRUE - uzbrojona *)
ELSE
strefy[(fi-4)*8+fin+1]:=FALSE; (* jesli nie = FALSE - rozbrojona *)
END_IF;
END_FOR;
END_FOR;
Read0A := FALSE; (* nastepnym razem nie pyatj o strefy *)
ELSIF frame_rcv[3] =16#17 THEN
FOR fi:=4 TO buf_len-5 DO (* dla kazdego bajtu danych *)
FOR fin:=0 TO 7 DO (* dla kazdego bitu *)
IF (SHL(znacznik,fin) AND frame_rcv[fi]) >0 THEN (* sprawdz czy bit jest 1 *)
wyjscia[(fi-4)*8+fin+1]:=TRUE; (* jesli tak stan wyjscia = TRUE - aktywne *)
ELSE
wyjscia[(fi-4)*8+fin+1]:=FALSE; (* jesli nie = FALSE - nieaktywne *)
END_IF;
END_FOR;
END_FOR;
Read17 := FALSE; (* nastepnym razem nie pyatj o wyjscia *)
END_IF;
END_IF;
Status:=10; (* przejdz do wysylania danych *)
MyEthernetWrite( EN:= 0 , DATA:=frame_snd ); (* przygotuj nadajnik do nadawania *)

40: (* Close the client *)

MyEthernetClose(EN:= 1, SOCKET:= MyEthernetOpen.SOCKET);
IF MyEthernetClose.eno THEN
MyEthernetClose(EN:= 0);
xCLIENT_OPEN:=FALSE;
Status := 0; (* Try to open the server again *)
END_IF

END_CASE;
ELSE
CASE CloseState OF
0:
MyEthernetClose(EN:= 0);
MyEthernetClose(EN:= 1, SOCKET:= MyEthernetOpen.SOCKET);
CloseState:=1;
1:
MyEthernetClose(EN:= 1, SOCKET:= MyEthernetOpen.SOCKET);
IF MyEthernetClose.eno THEN
MyEthernetClose(EN:= 0);
CloseState:=2;
END_IF
2:
Status := 0;
utERROR:=0;
xCLIENT_OPEN:=FALSE;
END_CASE
END_IF
Zapisane

mordorr

  • Full Member
  • ***
  • Wiadomości: 156
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #31 dnia: Listopada 22, 2014, 09:10:49 pm »

Witam,


jestem w tej chwili na etapie wyboru interfejsu komunikayjnego PLC<->SATEL i mam przy okazji dwa pytania ....
1. czy od strony SATELa oba interfejsy są równoważne i zapewniają taki sam poziomo obsługi??

2. powyższe funckje zapewniają odczyt stanów alarmu i czujek, a czy można (czy SATEL na to pozwoli) również alarm uzbroić ?? rozbrajanie z poziomu PLC nie wchodzi w ogóle w rachubę :)

no i na koniec pytanie premium:) czy szybkość odczytów LAN i RS jest porównywalna, lub różnica nie wpływa znacząco na jakość działania ? (np lag przy zapalniu swiatła sygnałem czujnika ruchu z SATELa).


Centralka SATEL Integra, PLC WAGO 750-8xx (jeszcze nie zdecydowałem który)

Z góry dziękuję za wskazówki

Jacek
Zapisane

mordorr

  • Full Member
  • ***
  • Wiadomości: 156
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #32 dnia: Listopada 22, 2014, 10:00:53 pm »

Ponieważ nei potrafię edytować to napiszę w nowym poscie.

Wygląda na to, że można uzbroić SATELa po LANie:
Part 2 - INTEGRA control:
0x80 arm in mode 0: + 8 bytes - user code (with prefix, if required by INTEGRA), e.g.:
if code is '1234', no prefixes: 0x12, 0x34, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
if code is '1234', prefix is '97': 0x97, 0x12, 0x34, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
+ 4 bytes - partition list, e.g.:
if partition 1, 2, and 29 have to be armed: 0x03, 0x00, 0x00, 0x10
If function is accepted, function result can be checked by observe the system state
0x81 arm in mode 1 data structure as above
If function is accepted, function result can be checked by observe the system state
0x82 arm in mode 2 data structure as above
If function is accepted, function result can be checked by observe the system state
0x83 arm in mode 3 data structure as above
If function is accepted, function result can be checked by observe the system state
0x84 disarm data structure as above
If function is accepted, function result can be checked by observe the system state


pytanie, czy mozna zablokować wewnątrz SATELa rozbrojenie z LANu ? dobrze by było :)
w programie będzie trzeba umieścić kod, więc będzie on dość słabo chroniony w sterowniku :( przydałoby sie haszowanie i blokada odblokowania via LAN.
Zapisane

Horhe

  • Newbie
  • *
  • Wiadomości: 16
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #33 dnia: Listopada 23, 2014, 12:04:19 pm »

Zmontowałem to u siebie na biurku (Wago i Satel połączone przez LAN) i wszystko działa bez żadnych lagów. Światełka zapalają się natychmiast, ale jeśli chodzi Ci o milisekundy, to nie odpowiem bo nie wiem.

Sterowanie Satelem za pomocą Wago jak np uzbrajanie, rozbrajanie (lepiej nie) itp, można zrobić normalnie po kabelkach, bo nie będzie tego dużo.

Co do ostatniego pytania, to rozumiem, że boisz się, że intruz przejmie kontrolę nad Wago i rozbroi alarm. To dość karkołomne zadanie: musiałby napisać program w Wago, który wyłącza alarm, wgrać go i uruchomić zdalnie oraz ustawić wejścia w Satelu, żeby odpowiednio reagowały na sygnały z Wago. To już prościej połączyć się z DloadX i wejść bezpośrednio do Satela wcześniej zdobywając hasło (lub łamiąc, ale nie wiem jak). Trzeba odpowiednio zabezpieczyć sieć LAN i raczej tylko na tym trzeba się skupić. Warto porozmawiać jak można to zrobić dobrze, bo odłączanie urządzenia od sieci daje co prawda 100% bezpieczeństwa, ale traci się na funkcjonalności.
Zapisane

mordorr

  • Full Member
  • ***
  • Wiadomości: 156
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #34 dnia: Listopada 23, 2014, 08:27:51 pm »

Dzięki za odpowiedź!

kupiłem juz co prawda SATELowskiego INT-RSa, ale mam nadzieje, ze mogę go jeszce wymienić na LANa.
oczywiscie - zabezpieczenie swojego internetu to podstawa... loguję sobie w swojej sieci próby wywołań SSH i codziennie przynajmniej 3-4 strzały z Azji :)
raczej bym się nie obawiał lokalnych złodziejaszków... z drugiej strony to miałem w ogole nie montowac alarmu, bo mam zwierzaczki (psa i kota) i alarm z czujnikami ruchu bylby raczje klopotem niz zabezpieczeniem, ale instalator przekonal mnie, ze podczas budowy bedzie sporo wartosciowych rzeczy "do wzięcia", a zlodziej bedzie mial spokojną nockę do pracy...

a jak juz bedzie alarm na czas budowy - to jzu zostanie ze mna na zawsze :) jedynie do normalnego działania nie bede wykorzystywal czujnikow ruchu. zamiast nich będę bronił dostępu kontaktronami wpuszczanymi w okna i drzwi.
Zapisane

kamiKAC

  • Jr. Member
  • **
  • Wiadomości: 78
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #35 dnia: Grudnia 08, 2014, 12:24:53 am »

Witam

Można rozbudować kod integracji o zapis wyjść (zdaje się, że protokół to umożliwia),  a potem zaprogramować Integrę, że ma uzbrajać się po aktywacji wyjścia.

Pozdrawiam

P.S. Lag przy wejściu do pomieszczenia, gdzie jest czujka jest spory (ok.1s), ale myślę, że to kwestia czujki oraz opóźnienia ustawionego w Integrze, a nie sposobu odczytywania danych.
Zapisane

Horhe

  • Newbie
  • *
  • Wiadomości: 16
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #36 dnia: Grudnia 10, 2014, 01:11:26 pm »

Ten lag jest od czujki i jest ściśle związany z jej budową. Po prostu czujki alarmowe tak działają, że aktywują się ze zwłoką i raczej nie można tego zmienić w ustawieniach. Jak wspomniałem, sama komunikacja między Satelem a Wago jest bez żadnych lagów.
Zapisane

kamiKAC

  • Jr. Member
  • **
  • Wiadomości: 78
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #37 dnia: Grudnia 10, 2014, 11:16:50 pm »

z drugiej strony to miałem w ogole nie montowac alarmu, bo mam zwierzaczki (psa i kota) i alarm z czujnikami ruchu bylby raczje klopotem niz zabezpieczeniem, ale instalator przekonal mnie, ze podczas budowy bedzie sporo wartosciowych rzeczy "do wzięcia", a zlodziej bedzie mial spokojną nockę do pracy...

a jak juz bedzie alarm na czas budowy - to jzu zostanie ze mna na zawsze :) jedynie do normalnego działania nie bede wykorzystywal czujnikow ruchu. zamiast nich będę bronił dostępu kontaktronami wpuszczanymi w okna i drzwi.

Są czujki PIR odporne na małe zwierzęta (ja mam takie do 12kg, chociaż zwierzaków nie mam). Słabo reagują na obecność trzyletniej córki :-) Zależy też jak duży jest piesek - odporność na wagę do 60kg nie ma sensu , bo amator cudzej własności może wazyć mniej.
Zapisane

krwi

  • Newbie
  • *
  • Wiadomości: 47
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #38 dnia: Stycznia 06, 2015, 04:05:01 pm »

Ten lag jest od czujki i jest ściśle związany z jej budową. Po prostu czujki alarmowe tak działają, że aktywują się ze zwłoką i raczej nie można tego zmienić w ustawieniach. Jak wspomniałem, sama komunikacja między Satelem a Wago jest bez żadnych lagów.

To prawda ale zauważyłem, że zależy to od czujki. Zwykle im droższa i bardziej zaawansowana tym lag większy, natomiast u mnie najlepiej spisują się Satel Aqua Plus i Pro ustawione na wysoką czułość. Natomiast zupełną porażką były Satel Amber (a szkoda bo to małe czujki i się tak nie rzucają). W ustawieniach centrali można jeszcze zmniejszyć czułość, Integra ma domyślnie 320 ms.
Zapisane

mordorr

  • Full Member
  • ***
  • Wiadomości: 156
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #39 dnia: Sierpnia 24, 2015, 08:51:39 pm »

Hej,

Pytanko o interfejs integracji satela.
w programach powyżej jedna z tabli przechowuje stan stref (uzbrojona = true)
i byloby to idealne, gdyby :
1. uzbrajam alarm, odliczanie czasu na wyjscie ze strefy => po czasie alarm uzbrojony - arrStrefy
  • =true

2. naruszam strefę, odliczanie czasu na rozbrojenie alarmu => wpisanie kodu, alarm rozbrojony arrStrefy
  • =false


ale niestety u mnie tak nie jest :) u mnie naruszenie strefy zmienia od razu arrStrefy
  • na false. czy to tak ma być ? w efekcie rolety zaczynaja mi się podnosić zanim rozbroje alarm :)

a moze byc jeszcze ciekawiej ... wystarczy wlaczyc alarm, zeby podniosly sie rolety :)

Zapisane

mordorr

  • Full Member
  • ***
  • Wiadomości: 156
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #40 dnia: Września 03, 2015, 12:18:39 am »

mam mały problem z "gadaniem" z integrą przez ethernet....
niby wszystko jest OK, ale po jakimś czasie (czasem dwa dni, czasem pare godzin) wago przestaje odczytywać dane z Satela.
w tej czesci kodu:


      20:   (* Read data*)

          MyEthernetRead(   EN:= 1, SOCKET:=MyEthernetOpen.SOCKET ,  DATA:=frame_rcv );
         MyEthernetRead(   EN:= 0, SOCKET:=0 ,  DATA:=frame_rcv );

         Timeout (IN := FALSE);
         utERROR:=MyEthernetREAD.ERROR;
         IF(MyEthernetRead.ERROR<>0) THEN                        (* Error reading the socket, close it *)
            Status:=40;
         ELSIF (MyEthernetRead.LEN_OUT <> 0) THEN                    (* Process the data received via the ethernet port *)
            Timeout(IN := TRUE);
            Status:=30;
         ELSIF NOT Timeout.Q THEN
            Timeout(IN := TRUE);
            Status:=10;                                          (* uplynal czas oczeiwania na odpowiedz, zerowanie licznika i ponowne wyslanie zapytania *)
         END_IF

len_out jest równe 0 i program dalej jest w pętli status 10 i 20.
pomaga restet sterownika - i wszystko wraca do normy (czyli ponowne nawiazanie komunikacji)

mial ktos taki przypadek ??
zastanawiam sie, czy nie dodac liniczka timeoutow, albo moze nawet po kazdym timeoucie zamykac polaczenie i inicjalizowac od nowa...
dodam tylko, ze w czasie kiedy wago nie gada z satelem mogę podłączyć się przez DLOADXa. sam sterownik tez działa prawidlowo.
bede wdzięczny za wskazówki

Zapisane

kamiKAC

  • Jr. Member
  • **
  • Wiadomości: 78
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #41 dnia: Września 04, 2015, 06:03:34 pm »

Witam

U mnie działa bez zarzutu. Być może za często komunikujesz się z Satelem i PLC lub ETHM-1 "dostaje zadyszki".
Używasz wersji z odczytem wyjść (modyfikowaną przez krwi), czy moją orginalną wersję?
Jak wywołujesz komunikację z Satelem? Pierwotnie wywoływałem bloczek jako Task co 100-150ms.
Teraz wiekszość tasków mam w jednej pętli (łacznie z komunikacją z Satalem, ale dodałem kolejną zmienną LastStatusRead oraz stałą StatusReadInterval, które kontrolują, żeby nie odpytywał za często.


10:(* Write data to server*)

IF  Read0A OR Read00 OR CUR_TIME > LastStatusRead + StatusReadInterval THEN
frame_snd[1]:=16#FE;
frame_snd[2]:=16#FE;
[...]

30: (* Process received data *)
[...]
IF (frame_rcv[4] AND znacznik) >0 THEN (* sprawdzenie czy bit 0 pierwszego bajtu danych jest 1, czyli stan czujek ulegl zmianie *)
Read00:=TRUE; (* jesli tak, nastepnym razem zapytaj o stan czujek *)
END_IF;
IF (frame_rcv[5] AND ROL(znacznik,2)) >0 THEN (* sprawdzenie czy bit 2 drugiego bajtu danych jest 1, czyli stan stref ulegl zmianie *)
Read0A:=TRUE; (* jesli tak, nastepnym razem zapytaj o stan stref*)
END_IF;
LastStatusRead := CUR_TIME;
ELSIF frame_rcv[3] = 16#00 THEN (* jesli otrzymano ramke stanu czujek *)
Zapisane

mordorr

  • Full Member
  • ***
  • Wiadomości: 156
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #42 dnia: Września 04, 2015, 11:09:27 pm »

Probowalem roznie -
raz jako task freewheeling,
raz wlaczylem go jako FB do PLC_PRG - zawsze to samo - zwiecha komunikacji
teraz zmienilem zachowanie przy timeoucie na Status:=40 zamiast status:=10  i dodalem licznik "resetow". od tamtego czasu wszystko dziala jak nalezy i .... licznik pokazuje 0 timeoutów :)
magia :)

jak teraz beda problemy to dodam zadanie jako task z odczytem co 150ms.
podejrzewam, ze cos nie tak jest z ETHM-1, ale ciezko bedzie to wykazac, bo w koncu dloadx dziala....


Zapisane

zim

  • Jr. Member
  • **
  • Wiadomości: 54
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #43 dnia: Września 06, 2015, 05:17:42 pm »

Witajcie,

Zabieram się za testy komunikacji i dzięki waszym wpisom poszło jak z płatka,

Natomiast zastanawia mnie czy ktoś z Was próbował wysyłania sygnałów z Wago do Satela ?

Chodzi mi po głowie wykorzystanie przekaźników Abax'a do pominiętych miejsc w trakcie okablowywania domu.

Zapisane

cougarek

  • Newbie
  • *
  • Wiadomości: 1
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #44 dnia: Września 09, 2015, 07:57:09 pm »

Cześć,
Czy miał ktoś z Was do czynienia z modułem ETHM-1 Plus?
ETHM-1 widnieje już na stronie Satela jako produkt archiwalny.
Zapisane

mordorr

  • Full Member
  • ***
  • Wiadomości: 156
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #45 dnia: Września 09, 2015, 08:37:59 pm »

Ja mam plusa. dziala tak samo. roznica zdaje sie jest taka, ze jak masz centralkę z plusem to masz powiadomienie e-mail. no i grade3, ale nie wiem czy to wazne w naszych zastosowaniach :)
Zapisane

krwi

  • Newbie
  • *
  • Wiadomości: 47
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #46 dnia: Września 13, 2015, 08:47:35 am »

mial ktos taki przypadek ??
Miałem podobny problem, pomogła wymiana switcha, tzn wpiąłem kabel od Satela bezpośrednio w switch Wago. Wcześniej używałem jakiegoś taniego Dlinka i miałem podobne objawy.
Zapisane

Neptun

  • Newbie
  • *
  • Wiadomości: 11
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #47 dnia: Listopada 03, 2016, 05:56:33 pm »

Odgrzeję trochę temat :)

Odnośnie zabezpieczenia sieci
a mianowicie aby zabezpieczyć komunikację Satel <-> WAGO(w skrócie W i S :) ) można wykorzystać:

a) zarządzalny switch porty do których są podpiete W i S spiąć VLAN-em + dodać jakiś port z którego będziemy programować tyle że tracimy dostęp z innych urządzeń i ze świata.

jeśli chcemy mieć dostęp z "z zewnątrz" do WAGO/Satel lub z dowolnego urządzenia/kompa to najlepszym rozwiązaniem jest:

b) użycie zamiast switcha lub standardowego routera urządzenia z Mikrotikiem(lub czymś podobnym) i skonfigurowanie tego w następny sposób
- dwa porty do których zapięte będą Satel i WAGO usuwamy z ogólnego bridge'a
- dodajemy nowy bridge i do niego 2 interfejsy te do których podpięte są W i S
- W i S nadajemy adresy z innej podsieci(jakiejś wymyślnej np 10.101.102.x czy cos w tym stylu jeden z adresów przypisujemy do bridge'a stworzonego w poprzednim punkcie)
- na Mikrotiku odpalamy server PPTP(VPN) z szyfrowaniem i tworzymy konto by można się było zalogować via VPN
- do konta przypisujemy REMOTE adres IP który NIE należy do podsieci W i S i NIE należy do podsieci lokalnej
 czyli jeśli router ma adres np.: 192.168.1.1/24 możemy przypisać do konta np.: 192.168.100.1
- w firewall'u dodajemy odpowiednie wpisy tak by tylko z adresu przypisanego do w/w konta można było się połączyć z W i S
- zablokowanie dostępu dla W i S do internetu

mamy zabezpieczony dostęp do W i S nawet przy otwartej sieci WiFi + mamy dostęp do  W i S choćby z Chin tak jakbyśmy siedzieli w pokoju obok :)

- swoją drogą należy zabezpieczyć Mikrotika podstawą jest zablokowanie połączeń przychodzących poza nawiązanymi ze środka i tymi skierowanymi na PPTP(pomijam DMZ),
- wyłączenie od strony świata wszystkich usług www/telnet/ftp/winbox/ssh(tu lepszym sposobem jest blokowanie IP po 3 nieudanych próbach zalogowania na jakiś czas u mnie np 4tyg + zmiana portu na jakis wysoki np 60022(zmiana portu załatwia  99% prób :) ), ssh zawsze się przydaje)
do reszty i tak mamy dostęp via VPN

Pozdrawiam
Marcin S
Zapisane

sklark

  • Newbie
  • *
  • Wiadomości: 7
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #48 dnia: Stycznia 15, 2017, 02:30:16 pm »

Witam
Mam prośbę do was,
mógłby ktoś pomóc rozbudować kod o możliwość odczytywania stanu wyjść z satela.
Tak żeby wago czerpał info np. o alarmie z out 1
Zapisane

plinard

  • Newbie
  • *
  • Wiadomości: 4
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #49 dnia: Stycznia 15, 2017, 03:41:21 pm »

Witam
Mam prośbę do was,
mógłby ktoś pomóc rozbudować kod o możliwość odczytywania stanu wyjść z satela.
Tak żeby wago czerpał info np. o alarmie z out 1

Masz opisane stronę wcześniej
Zapisane

sklark

  • Newbie
  • *
  • Wiadomości: 7
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #50 dnia: Stycznia 15, 2017, 03:58:12 pm »

Dzięki
Zapisane

sklark

  • Newbie
  • *
  • Wiadomości: 7
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #51 dnia: Stycznia 23, 2017, 12:37:35 pm »

Coś nie tak jest z tym bloczkiem:
Zapisane

mordorr

  • Full Member
  • ***
  • Wiadomości: 156
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #52 dnia: Stycznia 23, 2017, 11:57:50 pm »

Tof_1 to element biblioteki oscat. Przypuszczam, że pozostałe również, lub są zdefiniowane w oddzielnym obiekcie
Zapisane

sklark

  • Newbie
  • *
  • Wiadomości: 7
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #53 dnia: Stycznia 24, 2017, 09:34:00 am »

Mam bibliotekę oscat_basic_333.lib
ale co dodać to już nie napisano.
Może ktoś opisać dokładnie "How To Use" żeby było jasne dla wszystkich.
Zapisane

sklark

  • Newbie
  • *
  • Wiadomości: 7
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #54 dnia: Stycznia 26, 2017, 12:23:37 pm »

Nie ma szans żeby ktoś się podzielił wiedzą?
Zapisane

zim

  • Jr. Member
  • **
  • Wiadomości: 54
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #55 dnia: Stycznia 26, 2017, 08:27:14 pm »

Witaj,

Pochwal się jakie masz biblioteki, stawiam że coś nie halo z wagolibethernet.lib lub ethernet.lib

Pzd
Zapisane

sklark

  • Newbie
  • *
  • Wiadomości: 7
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #56 dnia: Stycznia 27, 2017, 10:22:09 am »

Śliczne dzięki, nie miałem biblioteki ethernet.lib
pozostał ostatni błąd "oczekuje na wyrażenie"
I pytanie, jaki wpisać nr portu? W ethm-1 mam dla dloadx 7090 a dla guardx 7091
i czy nie trzeba ustanowić hasła?

« Ostatnia zmiana: Stycznia 27, 2017, 10:23:40 am wysłana przez sklark »
Zapisane

plinard

  • Newbie
  • *
  • Wiadomości: 4
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #57 dnia: Stycznia 27, 2017, 01:33:27 pm »

Wpisujesz port taki jak dla Dloadx. Musisz mieć wyłączone szyfrowanie. Co do błędów, to wynika że masz jakąś nóżkę w bloku która nie jest podłączona i "wisi w powietrzu", być może wyjście czujki w bloku Satel Ethernet, oraz coś z EN w tym samym bloku.
Zapisane

radnet

  • Newbie
  • *
  • Wiadomości: 21
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #58 dnia: Czerwca 30, 2017, 08:17:47 pm »

Mam jeden błąd: Error 3704:Data recursion: SATEL ->SATELETHRNET ->SATEL.
Nie mogę namierzyć o co chodzi.
Zapisane

radnet

  • Newbie
  • *
  • Wiadomości: 21
    • Zobacz profil
Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
« Odpowiedź #59 dnia: Lipca 01, 2017, 08:26:35 pm »

Teraz takie błędy.


Zapisane