Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wczytywanie zmiennej ze sterownika przemysłowego w javascript
tomaszmarcin
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 1.03.2014

Ostrzeżenie: (0%)
-----


Witam,

Jestem automatykiem więc z góry przepraszam za używanie niepoprawnych webmasterowych pojęć.

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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
owca_82
post
Post #2





Grupa: Zarejestrowani
Postów: 77
Pomógł: 8
Dołączył: 22.04.2012

Ostrzeżenie: (0%)
-----


A w jaki sposób wyświetlasz wartość tej zmiennej w Html ?

Musisz w jakiś sposób przekazać te dane (ze strony serwera do przeglądarki) i przypisać ją zmiennej js np. tak. var = <?php echo $zmienna ?>;

i potem już z górki => http://jsfiddle.net/AFN4Q/17/
Go to the top of the page
+Quote Post
destroyerr
post
Post #3





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

Ostrzeżenie: (0%)
-----


Czy kod js na pewno umieściłeś w tagu script?
Druga sprawa to taka, że nie masz nigdzie w js przypisanej wartości odczytywanej ze sterownika. Powinno być coś takiego:
Kod
var PIE_O_OPTI = ":="PIE_O_OPTI":";

Ewntualnie zmienić nazwę zmiennej na tą właściwą, którą sterownik ma Ci wstawić. Kolejna sprawa to format w jakim ta liczba będzie wstawiana. Przy pojedynczej lampce nie miałeś problemu bo bit był reprezentowany 0 i 1. W przypadku liczby jest większy problem bo mogą być różne sposoby reprezentacji, ja założyłem, że jest standardowy ("16#0000").
Trzeba to przekonwertować na int:
Kod
PIE_O_OPTI = parseInt(PIE_O_OPTI.split('#')[1], 16);


Zobacz źródło strony jaka została wygenerowana przez sterownik. Załącz sobie też konsole javascript w Twojej przeglądarce, dowiesz się wtedy o ewentualnych błędach.
Go to the top of the page
+Quote Post
aniolekx
post
Post #4





Grupa: Zarejestrowani
Postów: 340
Pomógł: 46
Dołączył: 31.07.2009
Skąd: A

Ostrzeżenie: (0%)
-----


Ok to moze zacznijmy od podstaw.

Obrazki maja nazwy: lampa00.jpg lub lampa01.jpg

Biorac pod uwage kod: <img src="Images/lampa0:="PIE_O_SCH_KIN_ST":.jpg"/>

Wioskuje ze zmienna PIE_O_SCH_KIN_ST przyjmuje wartosci 1 lub 0

HTML nie obsluguje zmiennch i pierwszy raz widze takie znaczniki :="jakas_zmienna":
Powiedziales ze sterownik obluguje wbudowany serwer www, jaki jezyk jest po stronie tego serwera?


Podejrzewam ze taka konstrukacja: var PIE_O_OPTI; nie da ci dostepu do zmiennej ze sterownika

Raczej powinno byc: var PIE_O_OPTI = :="PIE_O_OPTI":

mozesz wykorzystac funkcje alert(PIE_O_OPTI) aby sprawdzic czy przechwyciles wartosc tej zmiennej.

Mam nadzieje ze to pomoze.

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 12:23