Używamy plików cookies (tzw. ciasteczka) by spersonalizować treść i ogłoszenia oraz by analizować ruch na stronie.  W sposób automatyczny dzielimy się informacjami o Twoim użyciu tego portalu z dostawcami ogłoszeń, którzy mogą połączyć te informacje z informacjami, które im udzieliłaś/łeś lub, które sami zebrali. Korzystanie z witryny bez zmiany ustawień dotyczących cookies oznacza, że będą one zamieszczane w Państwa urządzeniu końcowym.  Możecie Państwo dokonać w każdym czasie zmiany ustawień dotyczących cookies zmieniając opcje przeglądarki.

Skrypty SSI - wprowadzenie

Sterownik WAGO 750-841 obsługuje skrypty SSI (server side includes).  Udało mi się znaleźć jakąś japońską  broszurkę, w której było kilka przykładów.  Po wielu próbach stworzyłem małą stronkę, która wygląda, jak poniżej, która jest obsługiwana przez każdą przeglądarkę www i która, co do zasady, może sterować wszystkim.

A teraz szczegóły techniczne:

W komunikacji SSI ze sterownikiem 750-841 dostępne są  następujące polecenia:
- READPI (parametry: ADR, FORMAT, przykładowo: <!--READPI ADR=IW0&FORMAT=%d-->)
- WRITEPI (parametry ADR, VAUE, FORMAT j.w., przykładowo: <!--WRITEPI ADR1=MW0&VALUE1=1234&FORMAT1=%d-->)
- GETTIMEDATE (parametry: FORMAT, przykładowo <!--GETTIMEDATE FORMAT=%d.%m.%y %H:%M:%S-->)
- AUTHUSR (parametry: USR, PWD, RT, przykładowo <!--AUTHUSR USR1=ja&PWD1=nic&RT1=R-->)

Jeśli więc w kodzie strony umieścimy zapis <!--READPI ADR=QX0&FORMAT=%d-->) serwer sterownika wykonując skrypt, zwróci wartość fizycznego wyjścia nr 1.

Tyle formalności.  Oto, jak wyglądać może najprostszy plik test.ssi (rozszerzenie ssi, jest, zdaje się konieczne, by serwer wykonał skrypty)

<HTML>
<BODY>
    Wyjscie 93 (5.12): 
    Wejscie 3 (8.2): 
    Tag 1 (MB0): 
    Czas: 
</BODY>
</HTML>

Voila!  Po wgraniu pliku do katalogu “webserv” i otwarciu w go przeglądarce (np. 192.168.1.1/test.ssi) otrzymamy informacje odczytane prosto ze sterownika.

Do zapisywanie danych można wykorzystać formularz:

<form action="/WRITEPI" method="POST">
<input type="text" name="ADR1" value="MB0">
<input type="text" name="VALUE1" value="<!--#READPI ADR=MB0&FORMAT=%d-->" >
<input type="text" name="FORMAT1" value="%d" >
<input type="SUBMIT" value="ZAPISZ">

Po naciśnięciu przycisku ‘Zapisz’, wartość zmiennej przechowywanej pod adresem MB0 zostanie zastąpiona wartością z pola VALUE1.

Moja aplikacja wygląda następująco:
W procesie PLC_PRG w części definiowania zmiennych umieściłem:

VIS_GARDEN1 AT %MB0 :BOOL;
VIS_GARDEN2 AT %MB1 :BOOL;

(…)

GARDEN1, GARDEN2 (…) :Fb_LatchingRelay;

Zmienne o przedrostku VIS_ wykorzystuję do sterowania przez wizualizację.

Do Zmiennych GARDEN… przypisałem bloki funkcyjne Fb_LatchingRelay z biblioteki buliding_common.lib firmy WAGO

W części programowej:

GARDEN1(xSwitch:=VIS_GARDEN1, xCentON:=Timers.Garden1_OnTrig.Q, xCentOFF:=Timers.Garden1_OffTrig.Q);
OUT93:=GARDEN1.xActuator;

Zmienne Garden1_OnTrig i Garden1_OffTrig pochodzą z odrębnego procesu (Timers), w którym umieściłem wszystkie zegary, w tym momencie jest to kwestia nieistotna)

Przykładowy skrypt z omówieniem znajduje się na kolejnej stronie.

AKTUALIZACJA (05.01.2015)

Udało mi się znaleźć całą paczkę przykładów wykorzystania skryptów SSI przygotowaną (chyba) przez WAGO.  Oto link