Maszyna stanow sie wysypuje

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
Jamal79
Posty: 289
Rejestracja: 01 maja 2012 14:14
Wersja środowiska: LabVIEW 2012
Lokalizacja: Farum

Maszyna stanow sie wysypuje

Post autor: Jamal79 »

Witam
Mam maszyne stanow, wszystko dziala sprawnie ale po pewnym czasie sie wysypuje.
Jak najprosciej sprawdzic gdzie??
Probowalem pomijac poszczegolne stany ale to tylko nieznacznie wydluzylo czas dzialania. Maxymalny zarejestrowany czas to 2 godzinki. :(
Moge wstawic snagita, ale mam kilka subviai i odczytuje dane z serwera poprzez datasocketa...
Jamal79
Posty: 289
Rejestracja: 01 maja 2012 14:14
Wersja środowiska: LabVIEW 2012
Lokalizacja: Farum

Maszyna stanow sie wysypuje

Post autor: Jamal79 »

Oczywiscie mialem na mysli snippeta a nie snagita...
W poszukiwaniu przyczyny pomieszalem troche w kolejnosci i probowalem poprzerabiac troche kod. Sorry za bajzel i brak opisow....
Załączniki
effect.png
Jamal79
Posty: 289
Rejestracja: 01 maja 2012 14:14
Wersja środowiska: LabVIEW 2012
Lokalizacja: Farum

Maszyna stanow sie wysypuje

Post autor: Jamal79 »

Krotki opis programu.
Program ma za zadanie kontrolowac pomiar mocy np. paneli wodnych, wymmiennikow ciepla itd. Bardzo prosty program, oblicza dT na wejsciu i wyjsciu, kontroluje przeplyw wody poprzez dwa zawory regulujace. Do tego jeszcze kilka innych temperatur...
Calosc pomiarow pobiera z DS (DataServera, akurat taki system istnieje). Calosc ma przedstawic na Chartcie w postaci osobnych wykresow reprezentujacych poszczegolne wartosci. Plus ewentualnie ma porownywac z danymi np. producenta... % wartosci...
No niby banal.

W stanie buttons, planuje wstawic obsluge eventa dla wiekszosci guzikow...
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

Maszyna stanow sie wysypuje

Post autor: Mikrobi »

Krótki komentarz programu:
Bałagan. Posprzątaj.
Ctrl+U albo przycisk z ikoną miotły.
pozdrawiam
Mikrobi

LabVIEW Champion, CLD, CPI
Jamal79
Posty: 289
Rejestracja: 01 maja 2012 14:14
Wersja środowiska: LabVIEW 2012
Lokalizacja: Farum

Maszyna stanow sie wysypuje

Post autor: Jamal79 »

Tak jak pisalem, jest balagan... osobiscie uwazam ze Ctrl+U czesto bardziej miesza niz sprzata...

Dokladnie wysypuje mi sie po 1:20,
Glowny loop wykonuje sie 28672 razy. :(
Jamal79
Posty: 289
Rejestracja: 01 maja 2012 14:14
Wersja środowiska: LabVIEW 2012
Lokalizacja: Farum

Maszyna stanow sie wysypuje

Post autor: Jamal79 »

Po wrzuceniu DS_close do wnetrza petli przyspieszylo dzialanie ale nie rozwiazalo problemu...

30min
56105 interakcji...

jutro, napozniej w pn. puszcze jeszcze raz w celu potwierdzenia...
Awatar użytkownika
Pitol
Moderator
Posty: 982
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Re: Maszyna stanow sie wysypuje

Post autor: Pitol »

1. Co to znaczy, że się wysypuje? Jakieś szczegóły podaj.
2. Diagram jest, jak pisał Mikrobi, niefajny. Nie możesz tego trochę posprzątać? Nie mówię już o Ctrl-U, ale o własnej inicjatywie.
3. Co do sprawdzenia gdzie się wysypuje to najprościej jest zapiąć rejestr przesuwny ze stringiem i po każdej funkcji dodawać do tego stringa informację co się wydarzyło + nr iteracji.
4. Jeszcze raz napiszesz trzy posty pod rząd a usunę cały wątek. Jest narzędzie, nazywa się EDYTUJ.
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
Jamal79
Posty: 289
Rejestracja: 01 maja 2012 14:14
Wersja środowiska: LabVIEW 2012
Lokalizacja: Farum

Maszyna stanow sie wysypuje

Post autor: Jamal79 »

1. Mozliwe ze zle sie wyrazilem. Nie odpowiada. Jedyna opcja jest wymuszone zamkniecie LV. W momencie zatrzymania wskazniki zuzycia procka i ramu sa ponizej 50%. Wszystko inne smiga oprocz LV.
2. Poprawilem diagram. Wszystko co podejrzewalem wrzucilem do Case Structure z F jako constant lub jego stan pominelem w maszynie
3. Sprawdze z tym rejestrem i sttringiem.
4. Mialem szczescie, napisalem tylko dwa :)

Moze robie jakis podstawowy blad? Moze wystarczy wstawic jakies opoznienie, co spowoduje wolniejsze zapelnienie sie bufora, albo dodatkowa petle ktora czysci ten bufor (niewiem czy wogole jest taka opcja)
Szybkosc pomiarow niejest tutaj najwazniejsza. reakcja termometrow jest dosc wolna no i ich odczyt nieczestrzy jak 10 sec.

PS. sry za wprowadzone zamieszanie... wszystkie komenty sie licza, nawet te glupie. A najwazniejsze sa te z konstruktywna krytyka.
Załączniki
effect2.png
Awatar użytkownika
Pitol
Moderator
Posty: 982
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Maszyna stanow sie wysypuje

Post autor: Pitol »

Ciężko powiedzieć, co może nie działać. Spróbuj tak jak mówiłem tej opcji ze stringiem. Ale skoro się LV wysypuje, to radziłbym, jeśli w ogóle to wchodzi w grę, po każdej instrukcji/funkcji/subVI wrzucać status do pliku, żeby się informacja nie zgubiła. Zapis zabierze trochę czasu ale nie widzę, żeby Twój kod "latał" z jakąś kosmiczną prędkością więc powinno się dać to tam wrzucić.

Sprawdzałeś może czy pamięć w trakcie działania programu rośnie/maleje/stoi w miejscu?
Z tego co zauważyłem w programie w jednym z przypadków w strukturze case masz otwieranie->odczyt->zapis->zamknięcie DataSocket'u. Może lepiej by było otworzyć DS przed pętlą, a zamykać po pętli? Wykona się to tylko raz a referencja będzie krążyć w pętli. Może to otwieranie/zamykanie ma jakiś wpływ na stabilność programu... Ciężko powiedzieć.

Poćwicz i daj znać czy coś się udało osiągnąć.
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
Awatar użytkownika
czab
Posty: 54
Rejestracja: 26 cze 2011 14:59
Wersja środowiska: LabVIEW 2011

Re: Maszyna stanow sie wysypuje

Post autor: czab »

Pozostaje zgodzic sie z Pitolem - faktycznie niewiele tu widac i raczej mozna sie bawic we wrozenie typu szamanskiego niz debugging ;) Niemniej jednak, moja uwage przykuly referencje. Oprocz tego, otwierasz/zamykasz plik za kazdym razem w kazdej iteracji, to jeszcze nie we wszystkich case'ach prowadzisz dobra referencje do zamkniecia. Nie zdziwilbym sie gdyby ilosc naotwieranych referencji w pamieci w koncu zapchala LV na tyle ze sie posypie. Proponuje przeprowadzic drut do close file w kazdym case i sprawdzic czy to pomoze.
Obrazek
Jamal79
Posty: 289
Rejestracja: 01 maja 2012 14:14
Wersja środowiska: LabVIEW 2012
Lokalizacja: Farum

Maszyna stanow sie wysypuje

Post autor: Jamal79 »

Dzieki za podpowiedzi. Wlasnie robie maly test. Wrzucilem wszsytko do jednego clustra ktory jest inicjowany przed loopem z maszyna.
W kazdym stanie za pomoca bundle/unbundle by name bede wyciagal/zapisywal potrzebne mi dane i/lub nowe setpunkty.
Jak juz bede mial jakikolwiek rezultat to zaprezentuje go na forum...

PS. Ma ktos podobny kod, na ktorym moglbym sie posilkowac??
Ostatnio zmieniony 01 paź 2012 11:46 przez Jamal79, łącznie zmieniany 1 raz.
Jamal79
Posty: 289
Rejestracja: 01 maja 2012 14:14
Wersja środowiska: LabVIEW 2012
Lokalizacja: Farum

Maszyna stanow sie wysypuje

Post autor: Jamal79 »

MOj problem znikl wraz z zainstalowaniem LV12. Skorzystalem z jednego z gotowych szablonow :). Jestem w trakcie dodawania nowych funkcji. Niestety czasowo sie nie wyrabiam. Mam nawal innej pracy. Jak juz zrobie to wstawie snagita.
ODPOWIEDZ