Master i Slave w jednej aplikacji
Master i Slave w jednej aplikacji
Witam
mam do zrobienia aplikację która z jednej strony będzie działała jako Master - odpytywanie kilku urządzeń (jak to zrobić ?) po RS z protokołem Modbus. Z drugiej jako Slave będę maił za zadanie odpowiadać pakietem danych odczytanych z urządzeń (jako Master) na pytanie inego Mastera.
Podpowiedzcie proszę jak się za to zabrać ? Jaką strukturę zastosować ?
pozdro
mam do zrobienia aplikację która z jednej strony będzie działała jako Master - odpytywanie kilku urządzeń (jak to zrobić ?) po RS z protokołem Modbus. Z drugiej jako Slave będę maił za zadanie odpowiadać pakietem danych odczytanych z urządzeń (jako Master) na pytanie inego Mastera.
Podpowiedzcie proszę jak się za to zabrać ? Jaką strukturę zastosować ?
pozdro
-
- Posty: 289
- Rejestracja: 01 maja 2012 14:14
- Wersja środowiska: LabVIEW 2012
- Lokalizacja: Farum
Master i Slave w jednej aplikacji
Masz na mysli to, ze musisz miec universalny program, ktory w zaleznosci od potrzeb bedzie na kilku maszynach i masz miec mozliwosc zmiany pomiedzy masterem a slavem??
-
- Posty: 289
- Rejestracja: 01 maja 2012 14:14
- Wersja środowiska: LabVIEW 2012
- Lokalizacja: Farum
Master i Slave w jednej aplikacji
Jak tak to zastanow sie nad np TabControl.
Widzialem kiedys fajne zastosowanie DataSocketa w podobnym przypadku. tzn tworzysz DBLa i za pomaca indeksow odczytujesz badz zapisujesz wartosci.
http://www.ni.com/white-paper/3224/en
Ja w pracy go wykorzystuje, daje sporo mozliwosci.
Za pomoca DSTP okreslam mastera i slava. mozna tez zrobic kolejke i zapisywac nowe wartosci z kilku adresow i czekac na wyniki z niezaleznymi wartosciami atrybutow. (Jesli mamy jeden miernik...)
Widzialem kiedys fajne zastosowanie DataSocketa w podobnym przypadku. tzn tworzysz DBLa i za pomaca indeksow odczytujesz badz zapisujesz wartosci.
http://www.ni.com/white-paper/3224/en
Ja w pracy go wykorzystuje, daje sporo mozliwosci.
Za pomoca DSTP okreslam mastera i slava. mozna tez zrobic kolejke i zapisywac nowe wartosci z kilku adresow i czekac na wyniki z niezaleznymi wartosciami atrybutow. (Jesli mamy jeden miernik...)
Re: Master i Slave w jednej aplikacji
Czesc
Dzieki za odpowiedz. Chodzi mi o to, że bede miał dwa RS do obsługi. Na jednym z nich będę pracował jako master odpytujacy kilka urzadzeń. Nastepnie dane ktore otrzymam z tych urzadzen mam przekazac drugim RS do urzadzenia nadrzednego. Nie wiem bardzo jak to ugryzc.
pozdro
Dzieki za odpowiedz. Chodzi mi o to, że bede miał dwa RS do obsługi. Na jednym z nich będę pracował jako master odpytujacy kilka urzadzeń. Nastepnie dane ktore otrzymam z tych urzadzen mam przekazac drugim RS do urzadzenia nadrzednego. Nie wiem bardzo jak to ugryzc.
pozdro
Master i Slave w jednej aplikacji
Zacznij od stworzenia podstawowej struktury programu (maszyna stanu, ewentualnie jeżeli ma być UI to w strukturze producer/consumer) - ostatnio dyskutowaliśmy o czymś takim tutaj: http://labview.pl/viewtopic.php?f=3&t=4147
Następnie przemyśl stany jakie będziesz potrzebować, zakładam, że jeden będzie do odbioru danych po RS-232, drugi do nadawania oraz stany do wysyłania żądań do slave'ów (Zaznaczam, że jest to wyłącznie sugestia, którą możesz zmodyfikować na własne potrzeby. Oczywiście jakieś inne stany pomocnicze tez będą potrzebne).
O samym RS-232 było tez już sporo na forum, ustawiasz parametry portu, otwierasz go, czekasz aż coś na porcie się pojawi i to odczytujesz.
Zacznij od jednego urządzenia, a później wykorzystując zalety maszyny stanu rozszerzaj funkcjonalność na pozostałe.
Przy podanych informacjach nie wiem jak bardziej mógłbym pomóc:)
Następnie przemyśl stany jakie będziesz potrzebować, zakładam, że jeden będzie do odbioru danych po RS-232, drugi do nadawania oraz stany do wysyłania żądań do slave'ów (Zaznaczam, że jest to wyłącznie sugestia, którą możesz zmodyfikować na własne potrzeby. Oczywiście jakieś inne stany pomocnicze tez będą potrzebne).
O samym RS-232 było tez już sporo na forum, ustawiasz parametry portu, otwierasz go, czekasz aż coś na porcie się pojawi i to odczytujesz.
Zacznij od jednego urządzenia, a później wykorzystując zalety maszyny stanu rozszerzaj funkcjonalność na pozostałe.
Przy podanych informacjach nie wiem jak bardziej mógłbym pomóc:)
Re: Master i Slave w jednej aplikacji
Hej.
Jesli masz dwa niezalezne polaczenia, to kazde mozesz sobie skonfigurowac zupelnie dowolnie, pojecia mastera i slave'a odnosi sie raczej do polaczenia a nie do aplikacji - w aplikacji mozesz miec pelno najrozniejszych protokolow ;)
Ja zabralbym sie za to tak: napisalbym sobie petle "mastera", ktora cyklicznie odpytuje urzadzenia korzystajac z Modbusa i dobrze sprawidzil, czy dziala. Potem, najlepiej w innym pliku, napisalbym sobie ladna petle "slave'a", wysylajac do odpytujacego mastera jakis absolutnie dowolny kontrolny string - i znowu sprawdzil, czy na tym etapie dziala. Ostatnia rzecza jest jakas obsluga wymiany danych pomiedzy tymi dwoma petlami - sensownymi rozwiazaniami wydaja mi sie Funtional Global Variable czy kolejki, pewnie kilka innych struktur tez sie nada. Na koniec obie petle wystarczy upchac w jednej aplikacji - czy to jako subVi, czy kopiujac/wklejajac - o podzielenie aplikacji na watki i oblugiwanie obu polaczen rownolegle zadba samo LabView.
Jesli masz dwa niezalezne polaczenia, to kazde mozesz sobie skonfigurowac zupelnie dowolnie, pojecia mastera i slave'a odnosi sie raczej do polaczenia a nie do aplikacji - w aplikacji mozesz miec pelno najrozniejszych protokolow ;)
Ja zabralbym sie za to tak: napisalbym sobie petle "mastera", ktora cyklicznie odpytuje urzadzenia korzystajac z Modbusa i dobrze sprawidzil, czy dziala. Potem, najlepiej w innym pliku, napisalbym sobie ladna petle "slave'a", wysylajac do odpytujacego mastera jakis absolutnie dowolny kontrolny string - i znowu sprawdzil, czy na tym etapie dziala. Ostatnia rzecza jest jakas obsluga wymiany danych pomiedzy tymi dwoma petlami - sensownymi rozwiazaniami wydaja mi sie Funtional Global Variable czy kolejki, pewnie kilka innych struktur tez sie nada. Na koniec obie petle wystarczy upchac w jednej aplikacji - czy to jako subVi, czy kopiujac/wklejajac - o podzielenie aplikacji na watki i oblugiwanie obu polaczen rownolegle zadba samo LabView.
Re: Master i Slave w jednej aplikacji
Czesc,
dzieki za odpowiedzi i zainteresowanie. Moze ktos z Was robil cos podobnego ? Zawsze na przykladzie duzo latwiej sie uczyć. Gdyby ktos mial jakis przyklad to byloby fajnie.
pozdro
dzieki za odpowiedzi i zainteresowanie. Moze ktos z Was robil cos podobnego ? Zawsze na przykladzie duzo latwiej sie uczyć. Gdyby ktos mial jakis przyklad to byloby fajnie.
pozdro
Master i Slave w jednej aplikacji
Witam,
Robiłem coś podobnego, użyłem sekwencji do ustalenia kolejności jaka mi odpowiada, odczyt danych po RS485 z 5 przetworników jeden po drugim w "case" (plus jeszcze jeden RS485 na innym COM w kompie, tutaj miałem problem żeby różne urządzenia podłączyć po jednym COM-e i zastosowałem dwa kable 485/USB) w kolejnym oknie "sekwencji" zrobiłem wykresy, zapis do pliku itd. itp. a następnie odebrane dane możesz przesłać ponownie gdzie chcesz. Pamiętaj o zamykaniu portów bo inaczej będą problemy. Kodu nie mogę podesłać ale jakbyś miał konkretne pytania to na ile będę mógł to pomogę. A może nawet w trakcie uzyskamy coś lepszego niż zrobiłem.
Pozdrawiam
Krzysiek
Robiłem coś podobnego, użyłem sekwencji do ustalenia kolejności jaka mi odpowiada, odczyt danych po RS485 z 5 przetworników jeden po drugim w "case" (plus jeszcze jeden RS485 na innym COM w kompie, tutaj miałem problem żeby różne urządzenia podłączyć po jednym COM-e i zastosowałem dwa kable 485/USB) w kolejnym oknie "sekwencji" zrobiłem wykresy, zapis do pliku itd. itp. a następnie odebrane dane możesz przesłać ponownie gdzie chcesz. Pamiętaj o zamykaniu portów bo inaczej będą problemy. Kodu nie mogę podesłać ale jakbyś miał konkretne pytania to na ile będę mógł to pomogę. A może nawet w trakcie uzyskamy coś lepszego niż zrobiłem.
Pozdrawiam
Krzysiek