Witam serdecznie.
Mam problem z przesyłaniem danych poprzez zmienne sieciowe w DSC.
Postaram się go jak najdokłasniej opisać i proszę o pomoc.
Mam jeden serwer który zbiera dużą liczbę danych i przepisuje je na zmienne sieciowe (głównie klastry). Jest również stanowisko wizualizacyjne z programem który czy ta te zmienne sieciowe i pokazuje je w kontrolkach i na wykresach. Problem pojawił się w momencie gdy liczba danych przesyłanych do wizualizacji wzrosła ponad 10Mbit/s co przekroczyło możliwości łącza i wynikiem tego było zawieszenie sie DSC ( tagsrv.exe kończył działanie). Problem wziął się stąd, że kontrolki w wizualizacji "zbindowane" do zmiennych sieciowych na serwerze są zawsze czytane bez względu na to czy kod programu je wykorzystuje czy też nie. Np. weźmy jedną zmienną czytaną z serwera i zamknijmy ją w case structure uzależniony od stanu button-a, bez względu na to czy case jest true czy false dana jest czytana przez sieć. Moje pytanie jest następujące: czy istnieje jakaś właściwość zmiennych zbindowanych do zmiennych sieciowych która wymusza czytanie danych tylko i wyłącznie jeżeli kod programu tego wymaga.
Z góry dziękuję za pomoc. Witam serdecznie.
Doszedłem do rozwiązania... albo bardziej do odpowiedzi na pytanie. Gdyby ktoś był zainteresowany to opisze jak sie ma sprawa z DSC.
Aplikacja klienta która miałaby czytać dane z serwera DSC przed uruchomieniem tworzy bufor wymiany danych który jest aktualizowany ciągle bez względu na to czy zmienna jest używana w programie czy tez nie bufor ciągle pobiera tą daną. Dałoby się to obejść przez zamknięcie kontrolek zbindowanych w osobnych vi i otwieranie ich w celu pobrania danej i zamknięciu vi aby usunąć zmienną z bufora.
DSC lv8.6 i przepustowość łącza
DSC lv8.6 i przepustowość łącza
Ostatnio zmieniony 16 lut 2009 14:05 przez walaszek, łącznie zmieniany 1 raz.
Re: DSC lv8.6 i przepustowość łącza
Witam,
Nie wiem czy jest to dobry dział, zaryzykuję i opiszę swój problem.
Piszę pracę w której mam monitorować stan (tj rejestry, wejścia, wyjścia) sterownia GE Fanuc Versamax64. Przygotowałem aplikację w Labview 2009 z dodatkiem DSC. W projekcie skonfigurowałem I/O Server na Modbus RTU (19200, 8bitów danych wszystko wg katalogu).
Mój problem pojawia się gdy, zapisuję 6 holding registers, czytam te same 6 holding registers oraz wyjścia cyfrowe w jednej pętli while, wtedy to czas wykonania nie dosyć , że jest zmienny to jeszcze nie krótszy niż 300ms.
W związku z powyższym, pragnę spytać:
1. czy jest to wina samego RS232 (transmisja do 20kb/s) lub też sterownika ?
2. czy da się przyspieszyć komunikację w DSC ze sterownikiem i wycisnąć z RS'a jeszcze parę ms (być może coś źle ustawiam) ?
Nie wiem czy jest to dobry dział, zaryzykuję i opiszę swój problem.
Piszę pracę w której mam monitorować stan (tj rejestry, wejścia, wyjścia) sterownia GE Fanuc Versamax64. Przygotowałem aplikację w Labview 2009 z dodatkiem DSC. W projekcie skonfigurowałem I/O Server na Modbus RTU (19200, 8bitów danych wszystko wg katalogu).
Mój problem pojawia się gdy, zapisuję 6 holding registers, czytam te same 6 holding registers oraz wyjścia cyfrowe w jednej pętli while, wtedy to czas wykonania nie dosyć , że jest zmienny to jeszcze nie krótszy niż 300ms.
W związku z powyższym, pragnę spytać:
1. czy jest to wina samego RS232 (transmisja do 20kb/s) lub też sterownika ?
2. czy da się przyspieszyć komunikację w DSC ze sterownikiem i wycisnąć z RS'a jeszcze parę ms (być może coś źle ustawiam) ?