Komunikacja z Siemens S7 1500

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
Paw Saw
Posty: 37
Rejestracja: 12 maja 2016 16:02
Wersja środowiska: LabVIEW 2017

Komunikacja z Siemens S7 1500

Post autor: Paw Saw »

Witam,

Mam za zadanie stworzyć aplikację, która będzie komunikować się z PLC Siemens S7 1500 po ethernecie. Niestety nigdy wcześniej niczego podobnego nie robiłem i szczerze mówiąc nie mam pojęcia, z której strony to ugryźć.
Szukałem w labview bloczków, dzięki którym mógłbym połączyć się z PLC, jednak nie znalazłem nic ciekawego. Stąd moje pytanie - czy istnieją jakieś dodatkowe biblioteki do komunikacji przez ethernet? Jeśli tak, to skąd je
wziąć?

Z góry dziękuje za wszelką pomoc,
pozdrawiam
Obrazek
Zyga
Posty: 86
Rejestracja: 26 sty 2012 23:36
Wersja środowiska: LabVIEW 2011

Komunikacja z Siemens S7 1500

Post autor: Zyga »

Są natywne funkcje do komunikacji po ethernecie. Data Communication >> Protocols >> TCP.
Paw Saw
Posty: 37
Rejestracja: 12 maja 2016 16:02
Wersja środowiska: LabVIEW 2017

Re: Komunikacja z Siemens S7 1500

Post autor: Paw Saw »

Dzięki Zyga za odpowiedź.

Ostatnio próbowałem komunikować się z drugim komputerem (chciałem mieć pewność, że wszystko działa, zanim będę komunikował się z PLC). W tym celu przygotowałem aplikacje do
wysyłania i odczytywania danych:

Obrazek komputer 1
Obrazek komputer 2

Na pierwszym komputerze wpisuję adres komputera, do którego chcę wysłać wiadomość, numer portu oraz samą wiadomość. Natomiast na drugim wpisuję adres komputera, z którego chcę
otrzymać wiadomość oraz ten sam numer portu. Najwidoczniej coś robię źle, ponieważ wiadomość wysłana z jednego komputera, nie dociera do drugiego.
Proszę o porady, co robię nie tak i co powinienem zrobić, aby było OK? Pozdrawiam.
Obrazek
Awatar użytkownika
cyjan1
Posty: 63
Rejestracja: 08 paź 2012 11:55
Wersja środowiska: LabVIEW 2017
Lokalizacja: podkarpacie

Re: Komunikacja z Siemens S7 1500

Post autor: cyjan1 »

Próbujesz 'skontaktować' ze sobą dwóch klientów...
W połączeniu z PLC zazwyczaj sterownik jest serwerem, aplikacja LabVIEW zaś klientem.

Jeśli chcesz przetestować działanie TCP, spróbuj zrobić programiki ze strony
http://www.ni.com/white-paper/2710/en/
albo otwórz przykłady TCP dostarczone razem z LabVIEW.
Pozdrawiam
Zenek
Paw Saw
Posty: 37
Rejestracja: 12 maja 2016 16:02
Wersja środowiska: LabVIEW 2017

Re: Komunikacja z Siemens S7 1500

Post autor: Paw Saw »

Udało mi się w końcu przesłać wiadomość, jednak podczas wysyłania występuje błąd.

Obrazek

Dodałem w Machine Access adres drugiego komputera

Obrazek

lecz to w niczym nie pomogło. Błąd w dalszym ciągu występuje.
Jakieś pomysły, jak można mu zapobiec?
Obrazek
Awatar użytkownika
cyjan1
Posty: 63
Rejestracja: 08 paź 2012 11:55
Wersja środowiska: LabVIEW 2017
Lokalizacja: podkarpacie

Re: Komunikacja z Siemens S7 1500

Post autor: cyjan1 »

Błąd prawdopodobnie pojawia się, ponieważ zamykasz połączenie po stronie serwera zaraz po wysłaniu wiadomości. Dla potwierdzenia daj jakiegoś waita (między wysłaniem a zamknięciem połączenia TCP).
Pozdrawiam
Zenek
Paw Saw
Posty: 37
Rejestracja: 12 maja 2016 16:02
Wersja środowiska: LabVIEW 2017

Re: Komunikacja z Siemens S7 1500

Post autor: Paw Saw »

Dodałem waita, jednak błąd w dalszym ciągu występuje.

Obrazek
Obrazek
Awatar użytkownika
cyjan1
Posty: 63
Rejestracja: 08 paź 2012 11:55
Wersja środowiska: LabVIEW 2017
Lokalizacja: podkarpacie

Re: Komunikacja z Siemens S7 1500

Post autor: cyjan1 »

Teraz jeszcze widzę, że w kliencie miałeś 'włączoną żarówkę' - Highlight exectuion. Jeśli tak, to 1000 ms może nie wystarczyć. Wyłącz podświetlanie to albo zwiększ czas w wait.
Pozdrawiam
Zenek
Paw Saw
Posty: 37
Rejestracja: 12 maja 2016 16:02
Wersja środowiska: LabVIEW 2017

Re: Komunikacja z Siemens S7 1500

Post autor: Paw Saw »

Bez żarówki również nie działa... Jeszcze jakieś pomysły?
Obrazek
Awatar użytkownika
cyjan1
Posty: 63
Rejestracja: 08 paź 2012 11:55
Wersja środowiska: LabVIEW 2017
Lokalizacja: podkarpacie

Re: Komunikacja z Siemens S7 1500

Post autor: cyjan1 »

W bloczku TCP Read klienta masz ustawione że spodziewasz się 100 bajtów i czekasz na nie przez 25000 ms. Dlatego odczyt masz prawidłowy ale funkcja zwraca błąd zamknięcia połączenia przez serwer.
Dlatego albo ustaw że czekasz na mniejszą liczbę bajtów, albo zmień wejście Mode na CRLF - klient będzie czytał aż napotka znak powrót karetki (CR) i znak nowej linii (LF).
Te same 2 znaki (bloczek End of Line Constant) wyślij na końcu wiadomości w funkcji TCP Write serwera.
Pozdrawiam
Zenek
Paw Saw
Posty: 37
Rejestracja: 12 maja 2016 16:02
Wersja środowiska: LabVIEW 2017

Re: Komunikacja z Siemens S7 1500

Post autor: Paw Saw »

Dzięki cyjan1, problem rozwiązany ;)
Obrazek
ODPOWIEDZ