logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Optymalizacja ładowania danych na stronie HTML dla S7-1200 z JavaScript

tomaszmarcin 01 Mar 2014 19:26 1845 1
  • #1 13359374
    tomaszmarcin
    Poziom 9  
    Posty: 14
    Ocena: 3
    Witam,

    Mam sterownik przemysłowy (takie urządzenie do sterowania w przemyśle) siemensa serii s7-1200.
    Sterownik ten posiada wbudowany server www.

    Działa to tak że tworzę strone w HTML i wgrywam ją na sterownik.
    Następnie poprzez wpisanie w przegladarce numeru IP tego sterownika dostaję się na tą stronę.
    Na takiej stronie mam możliwość sterowania urządzeniami podłączonymi do tego sterownika - np pompami, zaworami itp. oraz odczytywania ich stanów.

    Wszystko działa jeśli stronę mam zrobioną w HTML'u.
    Jednak takie rozwiązanie powoduje wolne ładowanie się strony przy wyświetlaniu większej ilości danych ze sterownika na stronie.
    Dzieje się tak dlatego że każda dana jest pobierana osobno.
    Dla wyświetlania stanu na przykład lampy używam takiej konstrukcji (PIE_O_SCH_KIN_ST jest to nazwa zmiennej w sterowniku; strona wyświetla obrazek lampa00.jpg lub lampa01.jpg w zależności od wartości zmiennej)
    <td align="left" WIDTH="100px" HEIGHT="72px" VALIGN="middle">
    <img src="Images/lampa0:="PIE_O_SCH_KIN_ST":.jpg"/> <cr>
    </td>


    Wedle producenta mogę na mojej stronie stosować skrypty java script.
    Chciałbym więc zakodować stany 16'tu urządzeń w jednej zmiennej 16 bitowej i następnie w skrypcie "wyciągać" te stany i wyświetlać na stronie obrazki je ilustrujące.
    I tutaj mam problem gdyż nie wiem w jaki sposób odwołać się do zmiennej ze sterownika.

    Próbowałem tak:

    var wynik;
    var PIE_O_OPTI; // zmienna 16'to bitowa ze sterownika

    wynik = PIE_O_OPTI & 1; // iloczyn bitowy, maska nałożona na pierwszy bit w zmiennej ze sterownika
    if (wynik == 0)
    document.getElementById('PIE_O_SCH_PKT').src = "Images/lampa00.jpg";
    else
    document.getElementById('PIE_O_SCH_PKT').src = "Images/lampa01.jpg";

    wynik = PIE_O_OPTI & 2; // iloczyn bitowy, maska nałożona na pierwszy bit w zmiennej ze sterownika
    if (wynik == 0)
    document.getElementById('PIE_O_SCH_KIN').src = "Images/lampa00.jpg";
    else
    document.getElementById('PIE_O_SCH_KIN').src = "Images/lampa01.jpg";


    i niestety to nie działa.
    Wydaje mi się że moja zmienna PIE_O_OPTI nie jest poprawnie wczytywania do skryptu (w sterowniku jest ona ustawiana prawidłowo i poprzez HTML mogę wyświetlić jej wartość bez problemu).

    Prosiłbym o jakieś pomysły co może być źle i jak to powinno wyglądać.

    Dziękuję z góry i pozdrawiam
    tomek
  • #2 13361787
    Pocieszny
    Poziom 38  
    Posty: 5220
    Pomógł: 229
    Ocena: 263
    Może się mylę, ale wydaje mi się, że to może być wina tego, że kod JavaScript jest wykonywany dopiero w przeglądarce, a nie na sterowniku.
REKLAMA