Master i Slave w jednej aplikacji

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
honda
Posty: 210
Rejestracja: 18 lis 2008 14:13
Wersja środowiska: LabVIEW 8.6
Kontakt:

Master i Slave w jednej aplikacji

Post autor: honda »

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
Jamal79
Posty: 289
Rejestracja: 01 maja 2012 14:14
Wersja środowiska: LabVIEW 2012
Lokalizacja: Farum

Master i Slave w jednej aplikacji

Post autor: Jamal79 »

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??
Jamal79
Posty: 289
Rejestracja: 01 maja 2012 14:14
Wersja środowiska: LabVIEW 2012
Lokalizacja: Farum

Master i Slave w jednej aplikacji

Post autor: Jamal79 »

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...)
honda
Posty: 210
Rejestracja: 18 lis 2008 14:13
Wersja środowiska: LabVIEW 8.6
Kontakt:

Re: Master i Slave w jednej aplikacji

Post autor: honda »

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
Garreth
Posty: 74
Rejestracja: 28 gru 2011 14:13
Wersja środowiska: LabVIEW 2011

Master i Slave w jednej aplikacji

Post autor: Garreth »

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:)
Awatar użytkownika
czab
Posty: 54
Rejestracja: 26 cze 2011 14:59
Wersja środowiska: LabVIEW 2011

Re: Master i Slave w jednej aplikacji

Post autor: czab »

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.
Obrazek
honda
Posty: 210
Rejestracja: 18 lis 2008 14:13
Wersja środowiska: LabVIEW 8.6
Kontakt:

Re: Master i Slave w jednej aplikacji

Post autor: honda »

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
1125
Posty: 37
Rejestracja: 25 cze 2011 09:28
Wersja środowiska: LabVIEW 2011

Master i Slave w jednej aplikacji

Post autor: 1125 »

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
ODPOWIEDZ