Mnożenie na podstawie tablicy

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
v93
Posty: 7
Rejestracja: 15 sie 2016 10:34
Wersja środowiska: LabVIEW 2014

Mnożenie na podstawie tablicy

Post autor: v93 » 22 sie 2016 12:00

Witam,
Korzystam z LabVIEW do pobierania napięcia z miernika, jednak docelową wartością powinna być temperatura. Czy jest możliwość wprowadzenia tablicy na podstawie której program sam będzie mnożył napięcie przez odpowiednią wartość?

Obrazek

Awatar użytkownika
aaddaas
Posty: 182
Rejestracja: 26 cze 2013 20:42
Wersja środowiska: LabVIEW 2015

Mnożenie na podstawie tablicy

Post autor: aaddaas » 22 sie 2016 13:03

Czyli chcesz przeprowadzać zwykle skalowanie?
Czy współczynnik skalowania zmienia się w zależności od przedziału napięcia? Bo jeśli jest stały, to wystarczy pomnożyć zmierzone napięcie przez współczynnik skalowania.
Jak jest w Twoim przypadku?
Obrazek

v93
Posty: 7
Rejestracja: 15 sie 2016 10:34
Wersja środowiska: LabVIEW 2014

Re: Mnożenie na podstawie tablicy

Post autor: v93 » 22 sie 2016 15:04

Jest zmienny, w zasadzie zmienia się liniowo i mógłbym opisać go jedną funkcją, ale nie wiem czy byłoby to wystarczająco precyzyjne.

Jeżeli chciałbym użyć funkcji y=ax+b to, w którym miejscu powinienem to wstawić?
Załączniki
1xx.png

Awatar użytkownika
aaddaas
Posty: 182
Rejestracja: 26 cze 2013 20:42
Wersja środowiska: LabVIEW 2015

Mnożenie na podstawie tablicy

Post autor: aaddaas » 22 sie 2016 15:47

Skoro możesz opisać go funkcją y=ax+b (T=aU+b), to te dane które odczytujesz (i wpisujesz do Data Chart) po prostu mnożysz przez a, oraz dodajesz b (zwykłymi działaniami z podstawowej palety - działają też na tablice)
Obrazek

v93
Posty: 7
Rejestracja: 15 sie 2016 10:34
Wersja środowiska: LabVIEW 2014

Re: Mnożenie na podstawie tablicy

Post autor: v93 » 22 sie 2016 16:04

Jeszcze mam taki problem, że bloczek "Spreadsheet To Array" skraca wynik do 6 cyfr po przecinku (w zależności od wersji programu), przykładowo: wartość 1.63689622e-04 zapisuje mi jako:

LabVIEW 13: 1.636896
LabVIEW 15: 0.000163

Czy jest jakaś możliwość zapisania pełnej wartości pomiaru?

Awatar użytkownika
aaddaas
Posty: 182
Rejestracja: 26 cze 2013 20:42
Wersja środowiska: LabVIEW 2015

Mnożenie na podstawie tablicy

Post autor: aaddaas » 22 sie 2016 16:27

Do tego bloczku wprowadzasz format danych %f
Jeśli chcesz określić dokładność to zastosuj zapis wzorując się na tym %5.1f (The 5 in the Format String section specifies a width of 5, and the 1 specifies the number of digits to the right of the decimal, or precision.) - więcej informacji możesz znaleźć w helpie
W twoim przypadku, jeśli byś chciał mieć wynik z dokładnością do np 10 miejsca po przecinku, to zapisujesz %.10f
Obrazek

v93
Posty: 7
Rejestracja: 15 sie 2016 10:34
Wersja środowiska: LabVIEW 2014

Re: Mnożenie na podstawie tablicy

Post autor: v93 » 22 sie 2016 16:47

Ok, dziękuję. Próbowałem tego sposobu ale wpisywałem %10f bez kropki. Jutro zobaczę czy działa.

v93
Posty: 7
Rejestracja: 15 sie 2016 10:34
Wersja środowiska: LabVIEW 2014

Re: Mnożenie na podstawie tablicy

Post autor: v93 » 23 sie 2016 12:12

Problem z ograniczoną ilością cyfr po przecinku dotyczył jednak już samego zapisu, pozbyłem się go mnożąc wynik przez 1000. Ale jeżeli chodzi o główny problem, którym rozpocząłem temat. Nie jestem pewien czy jedna funkcja to dobry pomysł. Czy da się w jakiś sposób tworzyć warunki w stylu:
Jeżeli wynik mieści się w przedziale od X do Y to pomnóż przez Z, jeżeli wynik mieści się przedziale od A do B pomnóż przez C.

Awatar użytkownika
aaddaas
Posty: 182
Rejestracja: 26 cze 2013 20:42
Wersja środowiska: LabVIEW 2015

Re: Mnożenie na podstawie tablicy

Post autor: aaddaas » 23 sie 2016 12:51

Wydaje mi się, że jeśli jest dostępna funkcja liniowa, to lepiej jej użyć.
Ale jeśli koniecznie chcesz robić zakresami, to wymyśliłem na szybko taki sposób:
Zakresy.png
Zakresy definiujesz w tej dolnej tabeli, zaś mnożnik w górnej.
Bloczek "In range and coerce" należy kliknąć PPM i zaznaczyć by zawierało górny/dolny zakres, jeśli nas to interesuje.
Wyjście z wewnętrznej pętli jest wyjściem "Last Value" z opcją "Conditional terminal"
W razie pytań jestem do dyspozycji
Obrazek

Awatar użytkownika
micard
Posty: 175
Rejestracja: 30 wrz 2011 11:28
Wersja środowiska: LabVIEW 2016
Has thanked: 6 times
Been thanked: 6 times
Kontakt:

Re: Mnożenie na podstawie tablicy

Post autor: micard » 24 sie 2016 01:07

Tutaj nie ma co kombinować, tylko użyć istniejącego bloczka: interpolate 1D.vi
Dzięki niemu można stworzyć charakterystykę liniową na przedziałach pomiędzy zadanymi punktami.

dokładny opis jest dostępny tutaj:
https://zone.ni.com/reference/en-XX/hel ... polate_1d/

v93
Posty: 7
Rejestracja: 15 sie 2016 10:34
Wersja środowiska: LabVIEW 2014

Re: Mnożenie na podstawie tablicy

Post autor: v93 » 24 sie 2016 17:17

Czy wykonanie z załącznika jest poprawnie zrealizowane? Czyli w tym przypadku dla xi=1,5 yi będzie równało się 15?

Jeszcze mam takie pytanie. Jeżeli chcę dla każdego z 5 wierszy użyć takich samych przedziałów, to czy da się jakoś skopiować pierwszy, czy trzeba wpisywać każdy na nowo?
Załączniki
1x.png
1x.png (8.39 KiB) Przejrzano 2819 razy

Awatar użytkownika
micard
Posty: 175
Rejestracja: 30 wrz 2011 11:28
Wersja środowiska: LabVIEW 2016
Has thanked: 6 times
Been thanked: 6 times
Kontakt:

u

Post autor: micard » 25 sie 2016 11:06

Na oko powinno zadziałać dokładnie jak piszesz - wyjście powinno wynosić 15.
Nie do końca rozumiem co masz na myśli pisząc "każdego z 5 wierszy" wierszami są kolejne stringi z których odczytujesz dane?
Interesują Cię, te same przedziały ale inne wartości charakterystyki, czy dokładnie ta sama charakterystyka?
Poza tym - takie pytanko - jakiego przetwornika używasz? Może łatwiej/lepiej będzie użyć właściwego równania (np dla NTC lub Termopary) a odpowiednimi parametrami, zamiast aproksymować przedziałami liniową funkcją

v93
Posty: 7
Rejestracja: 15 sie 2016 10:34
Wersja środowiska: LabVIEW 2014

Re: Mnożenie na podstawie tablicy

Post autor: v93 » 25 sie 2016 14:53

Już nie istotne. Wszystko działa.
Dziękuje za pomoc.

ODPOWIEDZ