'Inteligenty' dom ze sterownikiem PLC

Główna => (Pod)Systemy i Funkcje => Wątek zaczęty przez: DZIKI_2005 w Lutego 28, 2011, 04:19:07 pm

Tytuł: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: DZIKI_2005 w Lutego 28, 2011, 04:19:07 pm
Czy i w jaki sposób połączyłeś PLC z SATELEm czy za pomocą RS232 bądź każde wyjście w SATELu jest odczytywane przez wejście w PLC? ja mam INTEGRE 128-WRL.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: admin w Marca 04, 2011, 08:54:34 am
Integracja z Satelem ogranicza się w moim przypadku do sygnalizowania naruszenia czujek i przekazywania impulsów uzbrajających instalację.  Technicznie - wyjścia Satela poprzez rozszerzenie z przekaźnikami połączone są z wejściami sterownika PLC.

Nie chciałem angażować się w moduł komunikacyjny INT-RS i interfejs szeregowy do sterownika. Wymagają one umiejętności programowania... Zapewne nic arcytrudnego, ale zdecydowałem sie na proste przekazywanie impulsów... Pewnie gdybym robił instalację od nowa i planował wykorzystać interfejs RS do innych rzeczy, jak chociażby mierzenie temperatury jakimś zewnętrznym modułem - wtedy koszt portu szeregowego dałoby się uzasadnić.

Pozdrawiam,
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: lanwan w Października 20, 2011, 10:42:06 am
WITAM
Dołączę się z pytaniem
Czy ten zakres integracji (w Twoim projekcie ) z Satelem wystarcza do np. wykorzystania czujek Satela do sterowania oświetleniem w pomieszczeniach załączanie lub wyłączanie ?
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: admin w Października 21, 2011, 07:08:19 pm
Witam,

to, co zrobiłem, w zupełności wystarcza.  W korytarzach/schodach i pomieszczeniach bez okien światło zapala się automatycznie (z np. dodatkowym warunkiem 'po zmroku').  Więcej jednak wykorzystuję czujki do wyłączania światła przy długim braku obecności.

Trzeba jednak pamiętać, że czujki alarmu mają swoją 'logikę', która jest odpowiednia do alarmu właśnie.  Jedną z rzeczy która mnie zaskoczyła - czujka sygnalizuje tylko początek ruchu, jeśli więc jest on ciągły, do sterownika wysyłany jest tylko 1 impuls (na początku).  Oznacza to np., że w pokoju dzieci, które bez przerwy skaczą może po 10 minutach zgasnąć światło...

Pozdrawiam,
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: admin w Lipca 11, 2012, 03:19:46 pm
Witam,

ostatecznie jednak zdecydowałem się spróbowac połączyć Integre z PLC za pomocą RS232: 

http://www.edom-plc.pl/index.php?option=com_content&view=article&id=86%3Ars232integra64&catid=29%3Apodsystemy&Itemid=54&lang=pl

Pozdrawiam,
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: nismo w Lutego 18, 2013, 10:55:14 pm
Witam.
Udalo mi sie kupic modul 750-650. Mam takze modul rs w satelu. Chcialem skorzystac z Panskiego kodu do odczytu stanu czujek. Niestety, pomimo, ze program jest poprawny,  ie dochodzi do wymiany danych. Czy ma Pan jakis pomysl, co moze byc przyczyna? Dodam, ze moj modul 750-650 ma na stale przypisany baudrate = 9600, nie moge takze ustawic flow control na wartosc 0. Czy moze to miec jakies znaczenie?

Pozdrawiam
Marcin
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: admin w Lutego 21, 2013, 05:56:00 pm
Witam,

konfiguracja portu RS232 po stronie INT-RS Satela, to 4800/8/1/N dla Funkcji 1 i 19200/8/1/N dla Funkcji 2.  Poszukałbym więc sposobu zmiany ustawień modułu 750-650.  Zacząłbym od podpytania Panów z Wago, czy mają jakieś pomysły.

Pozdrawiam,
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: nismo w Marca 07, 2013, 01:57:58 pm
Witam,


wszystko już wiem, a przynajmniej tak mi się wydaje.  Moduł jest niestety "nieprzestawialny". Zamiast kupować kolejny moduł za ładnych parę stówek, poszedłem po rozum do głowy i chcę zrobić coś, co powinienem zrobić od razu.

Sterownik 750-881 ma wbudowany port RS232 (gniazdo serwisowe) i to z niego zamierzam skorzystać. Obecnie czekam na odpowiedni kabel.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: nismo w Marca 19, 2013, 10:34:47 am
Witam,

mam kabelek, podłączyłem się do satela poprzez gniazdo serwisowe w sterowniku. Program RS232 (skopiowany z Pańskiej strony i zmieniony jedynie numer portu) dodałem do PLC_PRG. Niestety program nie działa poprawnie. W tabeli "new states" pojawiają się wartości true , ale program nic z nimi nie robi. Zmienna Send po chwili ma wartość false. Tak jakby program się gdzieś zawieszał. Gdy wymuszę (force values) wartość true dla zmiennej Send, pierwszy z wpisów w tabeli "new states" zmienia wartość na false i tyle. W tabeli "sensors" nic się nie dzieje.

Czy ma Pan pomysł co może być przyczyną? Czy jest jakiś sposób na sprawdzenie czy w ogóle jest komunikacja z Satel'em? Ja mam co prawda centralkę Satel 128, ale w programie nie ma żadnego odwołania do konkretnego modelu, więc to chyba nie ma większego znaczenia.

Czy u Pana program również jest po prostu dodany do PLC_PRG? Czy może uruchamiany jako event? Gdy spróbowałem tak zrobić, sterownik zawiesił się.

Będę wdzięczny za wszelkie wskazówki.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: admin w Marca 19, 2013, 11:09:30 am
Witam,

ciężko będzie tak 'ogólnie' podpowiedzieć. Opis na stronie to inspiracja a nie recepta.  Trzeba poszukać samemu.

Po pierwsze, komunikacja z Satelem powinna wg mnie odbywać się w odrębnym procesie.  Tak naprawdę potrzeba stworzyć 1 proces i 2 funkcje zgodnie z rysunkiem:
(http://www.edom-plc.pl/images/stories/e-dom/RS232.gif)

Po drugie proponuję zrobić prostą wizualizację, która pozwoli kontrolować przebieg komunikacji, czyli np:
- przycisk 'Togglujący' zmienną RS232.Send
- pola wyświetlające wartość kluczowych zmiennych

Klikać, sprawdzać, testować... czy w ogóle Satel odpowiada (RS232.RMessage)...  W swoim programie dodałem też zmienną ManualReset : BOOL i w ostatniej części programu:

IF StopWaiting.Q OR FrameComplete OR ManualReset  THEN
 
  (*reset all the variables*)
  WaitForData:=FALSE;
  RMessage.Index:=0;
  (...)
END_IF;

...aby móc resetować komunikację, jeśli wystąpiłby problem.

Good luck!
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: nismo w Maja 23, 2013, 08:05:05 pm
Witam,

po paru tygodniach bezowocnych prób, zdecydowałem się na zakup modułu 750-650/0003. Program opublikowany przez autora strony "zatrybił" od razu. Praktycznie bez żadnych poprawek.

Port wbudowany w sterownik niestety nie nadaje się do komunikacji z Satelem.


Dziękuję Panie Admin!

Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: admin w Maja 24, 2013, 01:30:35 pm
Witam,


Cieszę się że wszystko działa.  Pozdrowienia!
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: kofcio w Września 04, 2013, 07:36:06 pm
Witam,
jestem w trakcie zabierania się za układanie kabli w domu pod instalację którą chcę sterować za pomocą sterownika Wago. Mam do Was parę pytań odnośnie instalacji alarmowej:
1. Pisze Pan o tym, że czujki ruchu reagują za pierwszym razem. Czy to jest przypadłość wszystkich czujek czy tylko tych które są w Pańskiej instalacji?
2. Planuję montaż w paru miejscach takich czytników http://allegro.pl/zamek-kodowy-z-czytnikiem-rfid-10-kart-dostep-i3517074676.html i zastanawiam się czy jest sens kupna dodatkowej centralki alarmowej jeśli wszystkie wejścia wchodzą do sterownika Wago i teoretycznie powinno dać się zaprogramować jakąś prostą funkcjonalność alarmu za pomocą sterownika. Wystarczyłoby tylko dokupić jakieś zapasowe zasilanie na wypadek braku prądu. Proszę o Wasze opinie czy to ma sens czy może o czymś nie pomyślałem.

Pozdrawiam
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: witek w Września 07, 2013, 02:02:36 pm
Witam serdecznie wszystkich uczestników forum.
Zainteresował mnie temat współpracy centralki Satel ze sterownikiem PLC. Mam centralkę Integra 128 wersja firmware najnowsza dostępna czyli 1.11 z podłączonymi czujkami na liniach parametrycznych 2EOL/NC. Postanowiłem zrobić doświadczenie i spróbować połączyć się z centralką za pomocą nabytego drogą kupna modułu INT-RS. Wykonałem następujące czynności:
- ustawienie INT-RS w tryb integracji,
- rozpoznanie przez centralkę nowych urządzeń,
- ustawienie w parametrach centralki opcji monitoring ETHM-1,
- podłączenie INT-RS do PC,
- uruchomienie programu monitorowania portu szeregowego, żeby mieć pewność, czy wszystko przebiega tak jak powinno
- uruchomienie programu terminala
- przesłanie paru rozkazów 0x00 w celu synchronizacji (jak zalecają w opisie INT-RS)
Zgodnie z algorytmem (tablica Message7F) wielokrotnie wysyłam polecenie 0x7F:
FE FE 7F D8 61 FE 0D
i nie otrzymuję z centralki żadnej odpowiedzi. Wysłanie bezpośredniego zapytania o stan alarmów czyli polecenia 0x00, 0x01 czy 0x02 zwraca poprawną ramkę z ustawionymi bitami odpowiadającymi alarmom (tak długo jak mam zwarty przekaźnik w czujce tak długo odpowiedni bit jest ustawiony). Czyli komunikacja działa poprawnie, natomiast nie mogę dojść do tego, dlaczego nie działają polecenia kontroli zmiany stanu centralki poleceniem 0x7F. Podobnie nie otrzymuję odpowiedzi na zapytanie o wersję oprogramowania centralki poleceniem 0x7E.
Podejrzewam, że nie ustawiłem wszystkich niezbędnych parametrów w centralce.
Zwracam się o pomoc w rozwiązaniu tego problemu. Skoro napisany program na sterownik PLC działa prawidłowo, to błąd jest na pewno po mojej stronie ale nie jestem w stanie zorientować się kiedy go popełniam. Zadałem już sporo pytań wujkowi Google ale nie udzielił mi żadnych przydatnych odpowiedzi.
Pozdrawiam
Witek
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: raph w Września 12, 2013, 11:39:13 am
Hej,

Nie wiem czy już było ale moduł ETHM-1 ma opcję integracji (od wersji 1.06) po sieci ethernet.
Jest to opisane w tym samym dokumencie co opis komunikacji dla INT-RS.

Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: admin w Września 14, 2013, 12:49:52 pm
Cześć,

cenowo wygląda bardzo atrakcyjnie, bo można znaleźć za 410 PLN przy INT-RS kosztującym 250 PLN.  Co do działania - trzeba potestować...

Co do pytania Witka - skontaktuj się z Satelem.  Gdy pisałem kod ich centrum techniczne było bardzo pomocne.  Jeśli się uda rozwiązać problem, daj znać.

Pozdrawiam,
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: kamiKAC w Października 20, 2013, 09:42:05 pm
Hej,

Nie wiem czy już było ale moduł ETHM-1 ma opcję integracji (od wersji 1.06) po sieci ethernet.
Jest to opisane w tym samym dokumencie co opis komunikacji dla INT-RS.

Raczej nie było. Montowałem ostatnio Integrę u siebie na budowie i się zdziwiłem, bo kupiłem INT-RS (do integracji) i ETHM-1 (do podglądu stanu przez sieć) i po lekturze instrukcji okazało się, że oba dają możliwość integracji. Jak oprogramuję komunikację z Satelem przez Ethernet to moduł RS do WAGO nie będzie mi już potrzebny, podobnie jak INT-RS.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: hexal w Lutego 23, 2014, 01:54:10 am
Jak oprogramuję komunikację z Satelem przez Ethernet to moduł RS do WAGO nie będzie mi już potrzebny, podobnie jak INT-RS.

Witam. Zastanawiałem się nad zakupem INT-RS + moduł RS232 (cenowa masakra kompletu) ale z tego co widzę po wpisach ETHM-1 załatwił by mi komunikację Satel <-> 750-841. Udało się oprogramować komunikację? Słyszałem że Wago czasem bywa oporne jeżeli chodzi o komunikację IP i połączenie RS232 jest stabilniejsze. Jakieś wnioski po przejściu z RS232 na Etherner? Będę wdzięczny.

Pozdrawiam.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: kamiKAC w Lutego 25, 2014, 11:49:25 pm
Witam

Ja już mam problem integracji rozwiązany przez ETHM-1, działa całkiem sprawnie. Mój blok funkcyjny zwraca stany czujek i stan uzbrojenia stref, ale łatwo można go rozbudować o inne dane. Jak tylko uporządkuję kod umieszczę go na forum, ale nie mam za wiele czasu, bo finiszujemy z budową - właśnie robimy zabudowę kominka ;-)

Pozdrawiam
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: kamiKAC w Lutego 28, 2014, 09:35:50 pm
W delegacji miałem chwilę czasu i poprawiłem i uporządkowałem kod.

Blok komunikacji SatelEthernet oparłem o notę dotycząca biblioteki Ethernet.lib (stąd angielskie komentarze) i uzupełniłem o 2 funkcje: SatelCRC obliczającą CRC dla wybranego fragmentu ramki (nie mogłem rozkminić kodu Admina, więc napisałem funkcję po swojemu ;) )oraz IP_ADDRESS "pożyczoną" z noty serwisowej, która zamienia adres IP w znanej nam notacji na postać 32-bitową, której oczekuje biblioteka Ethernet.lib

SatelEthernet (FB)
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..128] OF BOOL; (* tablica zawierajaca stany czujek od 1 do 128, TRUE - czujka aktywna *)
strefy: ARRAY [1..32] OF BOOL; (* tablica zawierajaca stany stref od 1 do 32, TRUE - strefa uzbrojona *)
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 *)
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 *)
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;
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 *)
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

SatelCRC (FUN)

FUNCTION SatelCRC : WORD
VAR_INPUT
pt: POINTER TO ARRAY [1..1500] OF BYTE;
start_pos: INT;
end_pos: INT;
END_VAR
VAR
i: INT :=0;
END_VAR


SatelCRC:= 16#147A;
FOR i:=start_pos TO end_pos DO
SatelCRC:= ROL(SatelCRC,1);
SatelCRC:= SatelCRC XOR 16#FFFF;
SatelCRC:= SatelCRC + SHR(SatelCRC,8) + pt^[i];
END_FOR

IP_ADDRESS (FUN) (by WAGO)

FUNCTION IP_ADDRESS : DWORD
VAR_INPUT
IP_ADR : STRING;
END_VAR
VAR
Address : DWORD;
Value : WORD;
DecimalPos : INT;
Rest : STRING;
END_VAR


Address := STRING_TO_WORD(IP_ADR);
IF (Address <= 255) AND (Address >= 0) THEN
DecimalPos := FIND(IP_ADR,'.');
IF DecimalPos <> 0 THEN
Rest := RIGHT(IP_ADR,LEN(IP_ADR) - DecimalPos);
Value := STRING_TO_WORD(Rest);
IF (Value <= 255) AND (Value >= 0) THEN
Address := (Address * 16#0100) + Value;

DecimalPos := FIND(Rest,'.');
IF DecimalPos <> 0 THEN
Rest := RIGHT(IP_ADR,LEN(Rest) - DecimalPos);
Value := STRING_TO_WORD(Rest);
IF (Value <= 255) AND (Value >= 0) THEN
Address := (Address * 16#0100) + Value;

DecimalPos := FIND(Rest,'.');
IF DecimalPos <> 0 THEN
Rest := RIGHT(IP_ADR,LEN(Rest) - DecimalPos);
Value := STRING_TO_WORD(Rest);
IF (Value <= 255) AND (Value >= 0) THEN
Address := (Address * 16#0100) + Value;
ELSE
Address := 0;
END_IF
ELSE
Address := 0;
END_IF
ELSE
Address := 0;
END_IF
ELSE
Address := 0;
END_IF
ELSE
Address := 0;
END_IF
ELSE
Address := 0;
END_IF
ELSE
Address := 0;
END_IF
IP_ADDRESS := Address;


W załączniku "sposób użycia".
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: Horhe w Marca 22, 2014, 02:09:23 pm
Witam serdecznie.
Jestem tu całkiem nowy, aczkolwiek stronę i forum przeczytałem już kilka razy ;). Jestem pełen uznania dla Admina po pierwsze za dobrą robotę, ale przede wszystkim za udostępnienie tego światu. To dzięki tej stronie podjąłem decyzję o rozpoczęciu przygody z automatyką domową. Dziękuję wszystkim chcącym się dzielić wiedzą.

Tyle słowem wstępu. Bardzo interesuje mnie temat tego wątku, a szczególnie ostatnie rozwiązanie podane przez kolegę @kamiKAC. Niestety podany kod nie działa. Błąd znajduje się w bloku funkcyjnym SatelEthernet (FB) w części deklaracji zmiennych, a dokładnie w ostatniej linijce :

"Timeout:   TOF_1 := (PT:=T#2s, IN:=TRUE, RST:= FALSE); (* maksymalny czas oczekiwania na odpowiedz ze sterownika *)"

Myślę, że raczej powinno być tak:

"Timeout:   TOF := (PT:=T#2s, IN:=TRUE); (* maksymalny czas oczekiwania na odpowiedz ze sterownika *)"

Po tej zmianie nie ma już błędów kompilacji, natomiast komunikacja z Satelem  nie zachodzi. Jest połączenie z centralą, ale zmienna Status zatrzymuje się na wartości 20 - oczekiwanie na odbiór danych. Wychodzi na to, że Satel nic nie wysyła. Walczę od wczoraj ale nie udaje mi się znaleźć rozwiązania.

Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: admin w Marca 22, 2014, 03:53:41 pm
Cześć,

dzięki za dobre słowa :)  TOF_1 pachnie mi funkcją z biblioteki OSCAT i... zamiana jej na TOF nie może działać :)  Tak więc chyba trzeba przymierzyć się do dodania oscat_basic_xxx.lib do programu. 

Pozdrawiam,

Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: Horhe w Marca 22, 2014, 06:40:15 pm
Oczywiście masz rację ;). Po dodaniu biblioteki oscat_basic_333.lib, program kompiluje się już bezbłędnie, jednak różnicy w działaniu nie widzę. Co dwie sekundy zgodnie z Timeoutem zmienna Status zmienia się przez jeden cykl na  10 - "wysyłanie danych do serwera", po czym przez dwie sekundy przyjmuje wartość 20 - "oczekiwanie na odbiór danych". I tak w kółko.
Widać, że Satel nie odpowiada. Adres IP i port jest ustawiony poprawnie, zresztą zmienna xCLIENT_OPEN jest True czyli połączenie poprawne. Nie mam pomysłów co z tym zrobić.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: kamiKAC w Marca 28, 2014, 10:40:04 pm
Oczywiście masz rację ;). Po dodaniu biblioteki oscat_basic_333.lib, program kompiluje się już bezbłędnie, jednak różnicy w działaniu nie widzę. Co dwie sekundy zgodnie z Timeoutem zmienna Status zmienia się przez jeden cykl na  10 - "wysyłanie danych do serwera", po czym przez dwie sekundy przyjmuje wartość 20 - "oczekiwanie na odbiór danych". I tak w kółko.
Widać, że Satel nie odpowiada. Adres IP i port jest ustawiony poprawnie, zresztą zmienna xCLIENT_OPEN jest True czyli połączenie poprawne. Nie mam pomysłów co z tym zrobić.

A nie masz czasem włączonego kodowania integracji w module ETHM-1?

Może nie ten nr portu? Na pewno włączyłeś integrację i łączysz się na port integracji?

U mnie w sterowniku działa poprawnie, więc mogłem tylko strzelićü byka przy kopiowaniu kodu na forum.

Jeśli się łączy to jest otwarty port, ale jak nie ma odpowiedzi to albo nie ten port albo błędna ramka.  A właściwie jaki masz sterownik?

Pozdrawiam
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: Horhe w Marca 31, 2014, 08:23:54 am
Mój sterownik to 750-880.

Cytuj
A nie masz czasem włączonego kodowania integracji w module ETHM-1?
Nie jestem tego pewien, wieczorem to sprawdzę. Mam nadzieję że to jest to, bo innych pomysłów brak.

Integracja w ETHM-1 jest włączona na 100% i port też jest poprawny.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: Horhe w Marca 31, 2014, 06:16:23 pm
DZIAŁA!!! :D:D:D

Miałeś rację, miałem włączone kodowanie integracji w ETHM-1, po wyłączeniu śmiga aż miło :). Stokrotne dzięki :).

A przy okazji, Waszym zdaniem komunikacja przez Ethernet jest w miarę bezpieczna? Od razu zaznaczam, że nie mam nic konkretnego na myśli ;), i chodzi mi ogólnie o możliwość wejścia z zewnątrz i poprzełączania światełek. Jaka jest szansa na takie włamanie, ewentualnie co zrobić żeby się przed tym zabezpieczyć? Wybaczcie mi lamerskie pytanie :).
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: kamiKAC w Kwietnia 01, 2014, 09:26:49 pm
Nie znam algorytmu kodowania Satela, trzebaby napisać do Satela, może udostępnią algorytm.

Co do zabezpieczenia, to sam się nad tym zastanawiam. Nie wiem, czy sterownik posiada jakiekolwiek zabezpieczenia (typu zabezpieczenie hasłem, czy kodowanie). Myślę, że można wrzucić wifi w domu do oddzielnej podsieci, a dostęp do sieci przewodowej, gdzie podłączony sterownik zrobić przez VPN (PPtP lub OpenVPN). Rozwiązałoby to 2 kwestie bezpieczeństwa: dostęp z wifi i z internetu do sterownika.

Co do alarmu, to dopóki nie będzie dostępu do portu integracji z wifi lub nie damy możliwości uzbrojenia/rozbrojenia z poziomu integracji to jesteśmy bezpieczni.

Może doradzi ktoś, kto już temat przerabiał?

Pozdrawiam
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: gojac w Kwietnia 02, 2014, 07:29:06 am
Być może to coś pomoże: http://www.elektroda.pl/rtvforum/topic2091518.html (http://www.elektroda.pl/rtvforum/topic2091518.html)
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: kamiKAC w Kwietnia 06, 2014, 03:54:29 pm
Implementacja AES na sterowniku? Brzmi ciekawie, niestety nie mam aktualnie na to czasu, ale w przyszłości - kto wie?

Co do zabezpieczenia dostępu do sterownika. Przypuszczam, że obsługa sterowania przez edomApp działa przez Modbus/TCP, który nie posiada żadnych mechanizmów zabezpieczających przed niepowołanym dostępem. Włączanie sterownika do tej samej podsieci, w której mamy WiFi jest potencjalnie bardzo niebezpieczne i może się skończyć przejęciem kontroli nad naszym sterownikiem przez osoby niepowołane.
Najlepszym wyjściem byłby VPN lub przekierowanie portu na żądanie po wcześniejszym uwierzytelnieniu użytkownika np w routerze.

Co do portu integracji w Satelu, to jestem nieco spokojniejszy, bo operacje uzbrojenia/rozbrojenia wymagają podania kodu.

Pozdrawiam
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: krwi w Września 14, 2014, 09:21:32 am
kamiKAC dzięki za zamieszczenie kodu, u mnie działa bardzo dobrze. Natomiast mam pytanie czy wiesz jak rozbudować go o pobieranie informacji o aktywnym alarmie?

Pozdrawiam.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: krwi w 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
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: mordorr w 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
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: mordorr w 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.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: Horhe w 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.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: mordorr w 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.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: kamiKAC w 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.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: Horhe w 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.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: kamiKAC w 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.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: krwi w 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.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: mordorr w 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
2. naruszam strefę, odliczanie czasu na rozbrojenie alarmu => wpisanie kodu, alarm rozbrojony arrStrefy

ale niestety u mnie tak nie jest :) u mnie naruszenie strefy zmienia od razu arrStrefy
a moze byc jeszcze ciekawiej ... wystarczy wlaczyc alarm, zeby podniosly sie rolety :)

Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: mordorr w 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

Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: kamiKAC w 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 *)
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: mordorr w 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....


Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: zim w 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.

Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: cougarek w 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.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: mordorr w 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 :)
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: krwi w 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.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: Neptun w 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
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: sklark w 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
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: plinard w 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
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: sklark w Stycznia 15, 2017, 03:58:12 pm
Dzięki
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: sklark w Stycznia 23, 2017, 12:37:35 pm
Coś nie tak jest z tym bloczkiem:
(http://oi68.tinypic.com/2qs3ybo.jpg)
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: mordorr w 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
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: sklark w 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.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: sklark w Stycznia 26, 2017, 12:23:37 pm
Nie ma szans żeby ktoś się podzielił wiedzą?
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: zim w 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
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: sklark w 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?

(http://oi68.tinypic.com/14x1253.jpg)
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: plinard w 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.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: radnet w Czerwca 30, 2017, 08:17:47 pm
Mam jeden błąd: Error 3704:Data recursion: SATEL ->SATELETHRNET ->SATEL.
Nie mogę namierzyć o co chodzi.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: radnet w Lipca 01, 2017, 08:26:35 pm
Teraz takie błędy.

(https://www.galerieallegro.pl/views/9702841/1.jpg)
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: admin w Lipca 01, 2017, 08:31:10 pm
Masz błąd w funkcji IP_ADDRESS, SatelCRC i bloku SatelEthernet.

Pokaż, jak one wyglądają...
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: radnet w Lipca 01, 2017, 08:44:04 pm
Skopiowałem je z posta KamiKAC.

Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: radnet w Lipca 01, 2017, 11:51:18 pm
Skopiowałem je z posta KamiKAC.



Już wiem, nie rozdzieliłem kodu od zmiennych.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: radnet w Lipca 02, 2017, 01:59:18 pm
Gdzie wpisać ten adres IP i Port?

Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: radnet w Lipca 02, 2017, 10:30:34 pm
Kompiluje się już poprawnie, ale komunikacji niema. Nie wiem co jeszcze trzeba zmienić.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: lukaszdebiec w Lipca 02, 2017, 11:34:28 pm
Hej
A co to za port komunikacji masz ustawiony?
Domyślny satela to 7094.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: radnet w Lipca 03, 2017, 07:18:08 am
Port na Dloadx mam 25593 i na takim się łącze z Dloadx przez ETHM. Myślę ze to nie wina nr portu tylko mojej struktury programu codesys. Nie wiem gdzie wpisać nr IP czy tam gdzie jest komentarz (* adres IP  modulu ETHM-1 *) czy w bloku, i co jeszcze trzeba przestawić, zamienić.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: radnet w Lipca 03, 2017, 10:18:52 pm
Zmieniłem port na domyślny w satelu i w codesys ale nic sie nie zmieniło. Jeżeli program jest uruchomiony to tylko na SATEL.PRG mam widoczne np. niebieskie TRUE czy czarne FALSE a na innych czyli IP_address, CRC, SatelEthernet wszędzie znaki zapytania. Może źle wybrałem język programowania, chodzi o te LD, CFC, itd.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: radnet w Lipca 04, 2017, 09:13:07 pm
Nie wiem co nie gra. Kopiowałem wszystko od nowa z 5 razy, przeinstalowałem codesys i nic to nie pomogło. Jeszcze jedno mi przyszło do głowy, może to wersja ETHM bo mam 1.07.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: lukaszdebiec w Lipca 04, 2017, 10:47:14 pm
Masz uruchomioną integracje w module ETHM-1 ? W sumie nigdy nie testowałem komunikacji z modułem ETHM-1, zawsze był ETHM-1 plus. Korzystasz z aplikacji mobilnych do satela? Działają Ci?
Pamiętaj że nie możesz mieć zaznaczonej opcji kodowania integracji.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: radnet w Lipca 04, 2017, 10:54:46 pm
Mam zaznaczoną integracje w ETHM. Aplikacja INTEGRA CONTROL działa bez problemu. Opcja kodowania wyłączona. Wydaje mi sie że, ja źle to wszystko składam w codesys.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: kamiKAC w Lipca 24, 2017, 11:20:22 pm
Cześć

Czy udało się uruchomić komunikację z Satelem? Aktualnie mam urlop i mogę pomóc.

Pozdrawiam
kamiKAC
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: lukasz_gostyn w Sierpnia 08, 2017, 08:38:20 am
Witam wszystkich uczestników forum.
Zwracam się do Was - ekspertów w sprawie komunikacji Satel-PLC.
Zacznę od tego że jestem totalnym laikiem w tematach programowania.
Moja sytuacja wygląda następująco:
Posiadam System alarmowy firmy Satel (tj. Integra 32+INT-RS) oraz sterownik PLC Wago ( Sterownik 750-8202+moduł 750-650)
Chciałbym odpytywać po RS232 wejścia Satela.
W programie w Codesysie korzystam z kodu ze strony:
http://edom-plc.pl/index.php/pl/component/content/article?id=86:rs232integra64
Program skompilował się od razu, ale wg mnie coś w nim nie działa, np, nie liczy sumy CRC - wszędzie zera.
Czy jest szansa aby ktoś podesłał działający program z Codesysa 2.3, na którym mógłbym sprawdzić swój kod.

Podrawiam Łukasz.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: DZIKI_2005 w Lipca 22, 2018, 10:35:11 pm
Witam, czy może ktoś mi przesłać działający program na komunikację SATELA z WAGO po ethernecie.
lukasz.klinger@vp.pl
z góry dziękuje
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: abdenago w Lipca 25, 2018, 11:12:26 am
Cześć,

W tym wątku jest taki program, sam z niego korzystam i działa.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: Karol w Września 24, 2018, 10:13:55 am
Cześć,

W tym wątku jest taki program, sam z niego korzystam i działa.

Witam,
Czy komuś udało się odpalić program na nowych sterownikach pod e!COCKPIT?
Po dodaniu oscat mam konflikt z wago standard.
Kompilacja wywala się na Protocol : SEL_PROTOCOL       := IPPROTO_TCP;

Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: luk511 w Września 30, 2018, 10:42:01 pm
Witam wszystkich szanownych kolegów,

Mam pytanie czy udało się komuś uruchomić integracje satela ( po ethm ) z codesys 3,5 ???

Niestety nie używam sterownika wago a kod z tego wątku używa biblioteki wago ethernet.lib której w 3.5 nie mam jak użyć

Jak któryś z Kolegów czuje się na siłach chętnie zlecę napisanie takiego bloczku

Pozdrawiam
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: DZIKI_2005 w Października 02, 2018, 05:49:13 pm
Cześć,

W tym wątku jest taki program, sam z niego korzystam i działa.

Witam,
Czy komuś udało się odpalić program na nowych sterownikach pod e!COCKPIT?
Po dodaniu oscat mam konflikt z wago standard.
Kompilacja wywala się na Protocol : SEL_PROTOCOL       := IPPROTO_TCP;

Podłączam się o prośbę z kodem pod eCockpit
lukasz.klinger@vp.pl
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: g6pl w Października 21, 2018, 10:45:39 am
Skopiowałem je z posta KamiKAC.



Już wiem, nie rozdzieliłem kodu od zmiennych.

Hej
Jak rozdzieliłeś kod od zmiennych...bo z tym samym walcze i mam te same błędy..
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: kamiKAC w Października 22, 2018, 11:11:14 pm
Czołem

Jeśli pytanie dotyczy eCockpit, to nie pomogę, bo nie mam. W Codesys 3.2 jest tak, że w górnej części okna deklaruje się zmienne a w dolnej wpisuje kod (program) operujący na tych zmiennych. radnet wkleił wszystko w jedno okno i program się nie kompilował.

Znajomy właśnie zakupił zestaw z eCockpitem, ale on jeszcze do integracji z Satelem nie doszedł :)

Pozdrawiam
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: g6pl w Października 23, 2018, 03:05:52 pm
Witam
Dziękuję za informację.
Mam Codesys 2.3.5, lecz nie wiem gdzie to wpisać...
U mnie wyglada to tak:
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: g6pl w Października 24, 2018, 10:02:53 am
Witam
Ehh...trzeba było wybrać język programowania ST, a ja miałem wszędzie CFC i dlatego nie miałem tego dodatkowego okna...brak doświadczenia!
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: mbed01 w Lutego 10, 2019, 01:04:00 pm
Witam,

Czy udało się komuś uruchomić komunikację na sterowniku Beckhoffa??
Program kompiluje się, jednak wyrzuca warnings:
(http://i67.tinypic.com/bits2o.jpg)
Chyba coś z biblioteką Ethernet.lib, ma ktoś działającą na Twincat 3??
Używam Twincat 3.

Pozdrawiam
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: kur4kwdz w Października 17, 2019, 08:00:45 am
Witam kolegów.

Czy komuś udało się połączyć CA ze sterownikiem WAGO pod e!cockpit? Jeśli tak, to czy mógłbym uśmiechnąć się o jakieś źródła?

Pozdrawiam.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: shockmp w Listopada 07, 2019, 07:04:40 pm
Podłączam się do prośby. Na 750-880 działało, teraz mam PFC200 i chciałbym uruchomić komunikację z Satelem ale chyba jestem za cienki :'(
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: kur4kwdz w Listopada 19, 2019, 03:09:39 pm
Witam w złączeniu moja próba integracji sterownika PFC200 z centralką Satel INTEGRA128 stworzona na podstawie kodu @KamilKAC. Niestety ze względu na awarię płyty centrali nie jestem w stanie sprawdzićdziałania, chociaż symulowanie transmisji przy pomocy programu Hercules wygląda obiecująco.

Kolego @Schockimp sprawdzisz czy lata u Ciebie?

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..128] OF BOOL; (* tablica zawierajaca stany czujek od 1 do 128, TRUE - czujka aktywna *)
strefy: ARRAY [1..32] OF BOOL; (* tablica zawierajaca stany stref od 1 do 32, TRUE - strefa uzbrojona *)
xCLIENT_OPEN: BOOL; (* polaczenie do modulu ETHM-1 aktywne *)
wSocketState: WORD; (* numer wtyczki *)
END_VAR
VAR
pingSatel : FbPing_base;
pingState : WagoTypes.eResultCode;

socketSatel : FbSocketClient;
socketState : WagoSysErrorBase.FbResult;
socketOpenState : WagoTypes.eResultCode;
socketWriteState : WagoTypes.eResultCode;
socketReadState : WagoTypes.eResultCode;

Read00 : BOOL := TRUE; (* zadanie wyslania polecenia 00 - odczyt stanu czujek*)
Read0A : BOOL := TRUE; (*zadanie wyslania polecenia 0A - odczyt stanu uzbrojenia alarmu *)

fi : INT; (* pierwszy  indeks ramki *)
fin : INT; (* drugi indeks ramki *)
buf_len : INT; (* 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 *)
rcv_len : UDINT;
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 *)

tonTimeOut : Standard.TON := (PT:=T#2s);
socketSatel(oStatus => socketState);
pingSatel(xAbort:=FALSE);

IF xOpen_Client THEN
CASE Status OF
0:(*Initialize functionblocks*)
Read00 := TRUE;
Read0A := TRUE;
buf_len := 0;
socketSatel.Initialize();
xCLIENT_OPEN:=FALSE;
status:=1;

1:
pingSatel.Start(
sAddress := IP,
tPingTimeout := T#20MS,
udiNumber := 5);

IF (pingState=0) AND (NOT socketSatel.xBusy) THEN
status := 5;
ELSE
Status := 0;
END_IF

5:(*open connection*)
socketSatel.OpenAndConnect(
sAddress := IP,
uiPort := Port,
eType := TCP,
xAllowBroadcast := FALSE,
sOwnInterface := '',
tTimeout := T#5S,
pWriteBuffer := 0,
udiWriteBufferSize := 0,
pReadBuffer := 0,
udiReadBufferSize := 0,
OpenAndConnect => socketOpenState);

IF  socketSatel.State = eSocketOpState.connected THEN
Status  := 10;
xCLIENT_OPEN:=TRUE;
ELSIF socketSatel.State = eSocketOpState.connecting THEN
Status := 5;
ELSE
Status := 0;
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 *)
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;

IF socketSatel.IsReadyForWrite THEN
socketSatel.Write(
pTxBuffer:=ADR(frame_snd),
udiTxNBytes:=7,
write => socketWriteState);
END_IF

  IF  (socketWriteState <> 0) THEN
  Status:=0;
ELSE
Status := 40;
  END_IF

// socketSatel.CancelWrite();
status:=20;

20:
socketSatel.Read(
pRxBuffer:=ADR(frame_rcv),
udiRxBufferSize:= SIZEOF(frame_rcv),
udiRxNBytes => rcv_len,
Read => socketReadState);
tonTimeOut(IN := TRUE);
IF buf_len <> 0 THEN
tonTimeOut(IN := FALSE);
Status:=30;
ELSIF tonTimeOut.Q THEN
tonTimeOut(IN := FALSE);
Status:=10;
END_IF

30:
buf_len := UDINT_TO_INT(rcv_len);
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;
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 *)
END_IF;
END_IF;
Status:=10; (* przejdz do wysylania danych *)
40:
socketSatel.Finish();
socketSatel.Close();
status := 0;
END_CASE
ELSE
socketSatel.Finish();
socketSatel.Close();
END_IF

Do Poprawnego działania potrzeba biblioteki WagoAppSocket
Funkcja SatelCRC zgodna z kodem kolegi @KamilKac
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: shockmp w Listopada 20, 2019, 08:41:18 pm
Wkleiłem, skompilowałem, uruchomiłem i nie chciało czytać.
Znalazłem drobny błąd, wniosłem małe poprawki i działa aż miło.
Jakoś specjalnie nie wdawałem się w analizę i chyba nie będę - dopóki działa.
Dzięki @kur4kwdz

Sprawdzone na PFC200 e!COCKPIT
socketSatel(oStatus => socketState);
pingSatel(xAbort:=FALSE);

IF xOpen_Client THEN
CASE Status OF
0:(*Initialize functionblocks*)
Read00 := TRUE;
Read0A := TRUE;
buf_len := 0;
socketSatel.Initialize();
xCLIENT_OPEN:=FALSE;
status:=1;

1:
pingSatel.Start(
sAddress := IP,
tPingTimeout := T#20MS,
udiNumber := 5);

IF (pingState=0) AND (NOT socketSatel.xBusy) THEN
status := 5;
ELSE
Status := 0;
END_IF

5:(*open connection*)
socketSatel.OpenAndConnect(
sAddress := IP,
uiPort := Port,
eType := TCP,
xAllowBroadcast := FALSE,
sOwnInterface := '',
tTimeout := T#5S,
pWriteBuffer := 0,
udiWriteBufferSize := 0,
pReadBuffer := 0,
udiReadBufferSize := 0,
OpenAndConnect => socketOpenState);

IF  socketSatel.State = eSocketOpState.connected THEN
Status  := 10;
xCLIENT_OPEN:=TRUE;
ELSIF socketSatel.State = eSocketOpState.connecting THEN
Status := 5;
ELSE
Status := 0;
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 *)
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;

IF socketSatel.IsReadyForWrite THEN
socketSatel.Write(
pTxBuffer:=ADR(frame_snd),
udiTxNBytes:=7,
write => socketWriteState);
END_IF

  IF  (socketWriteState <> 0) THEN
  Status:=0;
ELSE
Status := 20; //było 40
  END_IF

// socketSatel.CancelWrite();

20:
socketSatel.Read(
pRxBuffer:=ADR(frame_rcv),
udiRxBufferSize:= SIZEOF(frame_rcv),
udiRxNBytes => rcv_len,
Read => socketReadState);
tonTimeOut(IN := TRUE);
IF rcv_len <> 0 THEN   //było buf_len <> 0
tonTimeOut(IN := FALSE);
Status:=30;
ELSIF tonTimeOut.Q THEN
tonTimeOut(IN := FALSE);
Status:=10;
END_IF

30:
buf_len := UDINT_TO_INT(rcv_len);
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;
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 *)
END_IF;
END_IF;
Status:=10; (* przejdz do wysylania danych *)
40:
socketSatel.Finish();
socketSatel.Close();
status := 0;
END_CASE
ELSE
socketSatel.Finish();
socketSatel.Close();
END_IF
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: Kris w Stycznia 13, 2020, 05:59:05 pm
Witam uruchomiłem integrację w e-cockpit na sterowniku PFC200 i działa, ale odczytuje stany czujek do numeru 26 i koniec.
Centrala to Integra 256 i używanych jest więcej wejść.
Prośba o pomoc w rozwiązaniu problemu, poniżej wklejam zdjęcie z e-cockpit.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: Kris w Stycznia 16, 2020, 06:55:47 am
Witam problem sam się rozwiązał okazało się że jest błąd w e-cockpit.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: szerszen w Marca 07, 2020, 10:55:36 am
Cześć,
Użyłem kodu uwspólnionego przez KamiKac. Program kompiluje się  bez błędów i bez ostrzeżeń.  Trzykrotnie sprawdziłem ustawiania po stronie SATELa wydają się być ok IP 192.168.2.222 port 7094 . Telnet na ten port pokazuje, że port jest otwarty i przyjmuje połączenia.
Jednak problem dla mnie jest po stronie WAGO (750-881) 192.168.2.5 - funkcja SatelEthernet nie przebija się poza krok ze statusem 5.
 
MyEthernetOpen.ERROR przyjmuje wartość 0x8016 co zgodnie z dokumentacją biblioteki oznacza "Socket is not connected". Spędzam nad tym kolejną noc i już dawno skończyły się sensowne pomysły.  W moim przypadku program nawet nie rozpoczyna budowy ramki i komunikacji. GetConfig pobiera właściwe dane, IP, Maska poprawne.Od stony sieci WAGO komunikuje się z RPi bez zastrzeżeń, a SATEL z PC (DLOADX). Może Wam wpadnie jakiś pomysł.

Pomożecie?


Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: szerszen w Marca 08, 2020, 11:57:18 am
!!!DZIAŁA!!!  ;D ;D

Reset zarządzanego switcha do ustawień fabrycznych załatwił sprawę. Jedynym sensownym wytłumaczeniem jest zablokowanie komunikacji z SATELem  na wszystkich portach switcha poza jednym. Pewnie w mojej głowie w przeszłości zrodziłą się właśnie taka idea zabezpieczenia. Cóż nie pamiętałem o niej, a efekty jej działania zablokowały komunikację z WAGO.

Nie a tego złego, zawsze to nowe doświadczenia.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: piotrek tryska w Maja 13, 2020, 12:10:46 pm
Cześć,
połączenie wago->integra działało do czasu dopóki nie zabrałem się za rozbudowę kodu:) Teraz mam taki objaw jak na zdjęciu tzn pokazuje, że socketSatel.xBusy = true i nie chce przejść na 5 kroku(na zmianę 0 i 1). Zastanawiam się czy wina nie leży po stronie satel, ale restarty centrali nie pomogły;( Łączycie się z centralą po ETHM i w tym samym czasie nie ma kłopotów z odczytem po stronie wago?
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: g6pl w Września 27, 2020, 12:18:08 pm
Witam
Pytanko...
Po resecie INTEGRY, muszę od nowa uruchamiać WAGO (RESET WARM), żeby odczytywać dane z satela...
Jaką kontrolkę należy zresetoweać w programie, aby ponownie nawiązywał połączenie...??
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: kamiKAC w Stycznia 11, 2021, 04:23:59 pm
xOpen_Client:=FALSE powinno rozłączać.
Dziwne, bo u mnie to chodzi tygodniami i nawet jak prąd wyłączą, to wszystko wstaje i po prostu działa.
Na jakim statusie Ci się blokuje(Zmienna Status bloczka SatelEthernet)?
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: g6pl w Stycznia 12, 2021, 03:54:25 pm
xOpen_Client:=FALSE powinno rozłączać.
Dziwne, bo u mnie to chodzi tygodniami i nawet jak prąd wyłączą, to wszystko wstaje i po prostu działa.
Na jakim statusie Ci się blokuje(Zmienna Status bloczka SatelEthernet)?

A możesz mi podesłać, albo tutaj umieścić swój kod?
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: kamiKAC w Stycznia 12, 2021, 05:06:40 pm
Mój kod jest na początku tego wątku.

P.S. Przyznam się, że 10 minut temu obserwowałem działanie programu i zastanowiło mnie, czemu tak często odpytuje o stan wejść i wyjść i znalazłem byka :)
W najbliższym czasie wrzucę ostatnią wersję kodu na githuba (z zapisem i odczytem wyjść centrali).
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: kamiKAC w Stycznia 13, 2021, 12:42:16 pm
Aktualna wersja programu z opisem znajduje się na githubie:
https://github.com/kamiKAC/wago-satel-ethernet/
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: g6pl w Stycznia 19, 2021, 09:55:39 am
A macie sprawdzonego gotowca pod e!COCKPIT Wago?
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: kamiKAC w Stycznia 20, 2021, 10:24:06 pm
Wcześniej ktoś udostępniał mój kod (starszą wersję) przerobiony pod PFC200 w tym wątku, proponuję przekopiować i spróbować. Ja mam 750-880 i Codesys 2.3, nie pomogę.
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: kempa007 w Lutego 06, 2021, 09:18:43 pm
Witam uruchomiłem integrację w e-cockpit na sterowniku PFC200 i działa, ale odczytuje stany czujek do numeru 26 i koniec.
Centrala to Integra 256 i używanych jest więcej wejść.

Mam pytanko do kolegi, bo tez walczę ze swoim PFC200. Jaką bibliotekę zainstalowałeś, żeby bloczek funkcyjny ruszył? Bo u siebie w repozytorium nie widzę nic takiego jak ethernet.lib. W Google jak wpisuję to na stronie Wago wyświetla tylko bibliotekę Mail.lib korzystającą z ethernet.lib...
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: cerberek w Marca 22, 2021, 08:28:16 pm
Dobry wieczór.

Używam PFC200 z Codesys 2.3. Mam problem z biblioteką Ethernet.lib, która przy kompilacji zachowuje się niby poprawnie, ale przy próbie wgrania na sterownik dostaję info o błędzie, jak w załączeniu. Czy ktoś się z tym spotkał?

Pozdrawiam,
Andrzej Kowalczyk
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: matmal w Sierpnia 31, 2021, 09:22:38 pm
Hej, może troszkę się spóźniłem z pisaniem na temat komunikacji SATEL-WAGO (eCockpit). Czy ktoś z Was ma ostatnia bibliotekę z GitHuba kamiKAC wgrana w sterowcu? Czy wszystko Wam działa? Ja ostatnio zauważyłem, ze zapętla się 10/20 zaś zwrotnie dostaje informacje EBADF - może ktoś ma podpowiedz, co jest grane. Oczywiście integracja na Satelu uruchomiona, używam standardowego portu integracji. Cala reszta wydaje się działać/niedzialac :-). Pozdrawiam
Tytuł: Odp: Integracja PLC z systemem alarmowym SATEL INTEGRA
Wiadomość wysłana przez: korper w Października 06, 2023, 11:27:50 am
Szukam konsultanta/projektanta smart. Urządzam mieszkanie 83m2, chciałabym zastosować kilka rozwiązań smart, ale kompletnie się ma tym nie znam. Nie mam czasu ani ochoty sama się dokształcać w tym temacie i chętnie zapłacę komuś, kto doradzi mi, co można zastosować, jaki produkt wybrać i jak to wszystko spiąć, żeby działało.