Programowanie
LabView PDF Drukuj Email
Wpisany przez Krzysztof Dobek   
wtorek, 30 sierpnia 2016 08:38

Arrays in Formula Node may store local values during subsequent executions.

 

Recently, I found a LabView feature that looks like a bug, which however can be used by an aware of it programmer. Take a look at the diagram shown below:

 

There are two While loops with Formula nodes within. Both loops are stopped by the same Stop button set to "Swith When Released" mechanical action. Within Formula nodes there are two variables, "z" whose value is always given outside of the Formula node, and "y" which is a single element array. The only difference between both While loops is that in the one on the right side "y" array is declared as an output of the Formula node. Execution of the code increments the "z" indicator value, while set "z 2" indicator value to 1. It means the "y" array acts as a Shift Register, unless you "reinitialize" it to 0 at each loop iteration only by declaring it as an output! It turned out that stopping the VI and starting it again does not reinitializes "y" array in the loop on the left side. However, if you change anything within the Formula node code the variable will be set to 0. Obviously, closing the VI and loading again reintializes tha variable as well.

 

How to create a VI that accumulates values passed to it

LabView offers many VIs that accumulate single values in an array and perform calculations on these accumulated values (see XXX PtByPt VIs). A simple way to achieve such functionality of a VI (subVI in fact) is to use single iteration loops with a non-initialized shift register as shown below. To make the example below fully functional you have to pass as connectors of the VI the RESET boolean control, the New Value control and as output connector the result of the calculation. The RESET control is used to clear the array (buffer).

 

When a latch button supposed to return to false value reacts as a switch button (LabView 2012)

Depending on the position of the button control in your code, it can act as a button of latch or switch type. Even if set previously as a latch one.

The code on the top will make OK Button of switch type, whatever you set in the editor. The code below will work as you expect.

Poprawiony: poniedziałek, 16 lipca 2018 19:23
 
Delphi PDF Drukuj Email
Wpisany przez Krzysztof Dobek   
poniedziałek, 03 lutego 2014 14:28

W Delphi (niegdyś produkt firmy Borland, następnie Inprise, obecnie Embercadero) programuję od 18 lat. Obok LabView, Delphi jest środowiskiem, w którym czuję się najbardziej kompetentnym, choć nadal daleko mi do zawodowych programistów. W tym środowiksu powstały też najważniejsze aplikacje służące analizie danych pomiarowych zbieranych przy użyciu spektrofotometru służącym do skorelowanego w czasie zliczania pojedynczych fotonów. Układ ten, będący narzędziem CBUSL, służy do pomiarów zaików fluorscencji z rozdzielczością pikosekundową. Dane, przy jego użyciu, są zbierane za pomocą oprogramowania dostarczonego przez producenta modułów detekcji układu tj. Edinburgh Instruments.

Program "Konwersja", którego slajd pokazano na rysunku 1, jest narzędziem służącym do konwersji danych zapisanych w różnych formatach Edinburgh Instruments, do formatu ascii, jaki był używany przez Edinburgh Instruments w wersji swego oprogramowania pracujacego w systemie GEM.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Rysunek 1. Apliakcja służąca konwersji danych.

"Konwersja" umożliwia:

  • zamianę plików w formacie GEM na pliki ascii,
  • wprowadzenie dowolnego czasu życia do wybranych plików (binarnych lub ascii),
  • konwersję nowego typu pliku ascii aplikacji FL900 na stary typ (GEM),
  • obrót danych w pliku,
  • wykonanie wybranej operacji na dowolnej liczbie plików za jednym razem.

Następną i najważniejszą aplikacją powstałą w Delphi na potrzeby CBSUL jest "MMF" (od Multi Model Fit), program stworzony przeze mnie i dr. Dariusza Komara. Program ten jest podstawowym narzędziem służącym nam od 2001 do analizy wyników czasowo-rozdzielczych pomiarów fluorescencji. W ogólności dowolny sygnał wueloeksponencjalny może zostać zanalizowany przy użyciu MMFa.

MMF był wielkrotnie testowany, a wyniki uzyskane przy jego użyciu zostały opublikowane w ponad 55 publikacjach. Program umożliwia dopsowanie cztero-eksponencjalnej funkcji zaniku do danych eksperymentalnych. Dwa algorytmy minimalizacji funkcji (Levenberga-Marquardta i sympleksów) pozwalając znaleźć kompromis między krókim czasem analizy, a jej precyzją. Trzy metody dekonwolucji funkcji aparaturowej (ściślej uzwględnienia jej konwolucji z sygnałem zaniku) pozwalają uzyskać wiarygodne wyniki dopasowania dla czasów zaniku rzędu od kilkunastu pikosekund do setek nanosekund. Zaawansowany raport poziomu dopasowania umożliwia wnikliwą analizę odstęstw między funkcją modelową. a danymi doświadczalnymi.

 

Rysunek 2. "MMF" zawiera szereg zaawansowanych narzędzi prezentacji danych.

Rysunek 3. Zaawansowany system raportowania poziomu wykonanego dopasowania.

 

Najważniejsze cechy "MMF" to:

  • dopasowanie zaników cztero-eksponencjalnych (lub mniej),
  • dwa algorytmy minimalizacji funkcji,
  • trzy algorytmy rekonwolucji funkcji odpowiedzi aparatury,
  • dowolna konfiguracja parametrów dopasowania, dopasowania krokowe dla zmiennych wartości początkowych parametrów,
  • możliwość dopasowania przesunięcia (tzw. shiftu),
  • pełna kontrola nad algorytmami minimalizacji,
  • wygodny interfejs użytkownika.
Poprawiony: czwartek, 08 września 2016 08:17