Działania matematyczne na waveform'ach

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
MeeHow
Posty: 15
Rejestracja: 19 maja 2011 23:42
Wersja środowiska: LabVIEW 2010

Działania matematyczne na waveform'ach

Post autor: MeeHow »

Witam Wszystkich
Jest to mój pierwszy post także w razie błędów proszę o wyrozumiałość.
Z LabView do czynienia mam od niedawna i od razu zostałem rzucony na głęboką wodę no ale się nie poddaje - do sedna:
Chcę wykorzystywać wpisywalną formułę matematyczną do przebiegów sygnałów. O co chodzi? Powiedzmy że jako sygnały dane są: prąd i napięcie, więc poprzez wpisanie c3=c1*c2, otrzymam moc i taką uproszczoną wersję udało mi się zrobić (Załączniki) ale działa to tylko wtedy jeśli podam właśnie formułę tak zapisaną tzn. dwie linijki(tzn np w jednej linii c3=c1, a w drugiej c3=c2) już nie przejdą, tak samo próba przypisania jakiejś wartości do c1 lub c2 (w sumie logiczne bo są to tylko zmienne wejściowe no ale chciałbym aby była taka możliwość). Dodatkowo fajnie by było gdyby dało się wybrać fragment przebiegu np poprzez taki zapis c1(50:500. I teraz moje pytanie - czy da się coś takiego zrobić? Zaznaczam że nie chcę na sztywno przypisywać, że np c1 to napięcie, c2 to prąd, a c3 to moc itd, stąd właśnie konieczność innego rozwiązania. Ja bazowałem na eval formula node, ale i tak coś pokręciłem z rozmiarami tablic, nie mniej jednak działa tylko, że chciałbym to usprawnić i rozszerzyć możliwości
Załączniki
math formula.vi
vi w wersji 8.6
(182.29 KiB) Pobrany 368 razy
math formula.vi
to samo tylko, że w wersji której używam -2010
(165.32 KiB) Pobrany 333 razy
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Działania matematyczne na waveform'ach

Post autor: PiDi »

Witam
W załączniku przykłady użycia bloczków do formuł. O tej porze niewiele więcej mogę zaoferować, ale może to naprowadzi na coś. Co do użycia tablic, to zerknij na inne vijaje z palety Mathematics->Scripts And Formulas->1D & 2D Evaluation. Coś z tablicami tam jest, ale sam jeszcze nie korzystałem z nich.

Pozdrawiam i życzę udanej przygody z forum! :)
Załączniki
formula.vi
(12.82 KiB) Pobrany 308 razy
ObrazekObrazekObrazekObrazek
MeeHow
Posty: 15
Rejestracja: 19 maja 2011 23:42
Wersja środowiska: LabVIEW 2010

Działania matematyczne na waveform'ach

Post autor: MeeHow »

Dziękuję bardzo, faktycznie coś już można zrobić, ale czy jest jakiś sposób żeby móc się do tablicy odwoływać wektorowo? tak jak np w formula node mogę wpisać Y i to przejdzie a przez eval parsed formula node/string już się nie da;/ można to jakoś obejść?
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Działania matematyczne na waveform'ach

Post autor: PiDi »

Obejść się da na pewno w taki sposób, jak w załączniku - wybrać zakres tablicy przed obliczeniami. Na pewno można też spróbować obudować to we własny parser, który będzie z wyrażeń typu "x(5:500)" sam w podany w załączniku sposób wydzielał odpowiednią część tablicy. Nie powinno to być bardzo trudne.
Załączniki
formula_tablice.vi
(9.86 KiB) Pobrany 343 razy
ObrazekObrazekObrazekObrazek
MeeHow
Posty: 15
Rejestracja: 19 maja 2011 23:42
Wersja środowiska: LabVIEW 2010

Działania matematyczne na waveform'ach

Post autor: MeeHow »

hmmm ale w jaki sposób można takie coś zrobić? Rozumiem o co Ci chodzi i to by rozwiązało cały problem ale nawet nie rozumiem stwierdzenia
obudować to we własny parser
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Działania matematyczne na waveform'ach

Post autor: PiDi »

W załączniku prosty parser. Może trochę strasznie na pierwszy rzut oka wyglądać, ale polecam prześledzenie działania krok po kroku i podglądanie zawartości drutów. Trzeba tam trochę popracować nad wykrywaniem i obsługą błędów.
Załączniki
parser.vi
(40.1 KiB) Pobrany 346 razy
ObrazekObrazekObrazekObrazek
MeeHow
Posty: 15
Rejestracja: 19 maja 2011 23:42
Wersja środowiska: LabVIEW 2010

Działania matematyczne na waveform'ach

Post autor: MeeHow »

wow...faktycznie wygląda na bardzo skomplikowane, ale komentarze są baaardzo pomocne! dziękuję ślicznie:)
Jesteś wielki!
a jakbym chciał zrobić podmienianie wartości np. x (1:3)=0, czyli przypisze wartość 0 do tych elementów to na tej samej zasadzie tak? tzn wyszuka string ze znakiem równości i podmieni poprzez replace array subset tak? tylko, że w sumie to się mija z celem bo nie zmienię tych początkowych tablic?

aaa i jeszcze mam pytanie: dlaczego wysypuje się kiedy podam tylko jedną zmienną? tzn formuła będzie taka: x (1:3) , ewentualnie wcale nie podam nawiasu?
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Działania matematyczne na waveform'ach

Post autor: PiDi »

Nie traktuj tego kodu absolutnie jako gotowca do użycia, a raczej jako sugestię, co można zrobić i jakie bloczki wykorzystać ;) Jak powiedziałem, trzeba tam popracować nad obsługą błędów. Na przykład wpisanie "x (1:3)" (ze spacją) wysypie program, bo założyłem, że nazwa zmiennej leży zaraz przed nawiasem. Tak samo wpisanie samego "x" powoduje, że X Values jest opróżniane. Sprawdź też sobie, jak się zachowuje ten program, gdy wpiszesz "x(1:3) + y(1:2)", czyli różne długości tablic - to kolejna rzecz do upilnowania.

Możesz dodawać do tego dowolne operacje, jakie tylko wymyślisz. Tylko będzie to prowadzić do rozrastania się kodu, dlatego zastanów się dobrze, co Ci jest potrzebne i postaraj się, żeby ten kod nie stracił całkowicie czytelności (wydzielenie subVi, które będą szukały konkretnych operatorów w formule to podstawowa rzecz jaką możesz zrobić).
ODPOWIEDZ