Generowanie cyfrowego sygnału sterującego linijką CCD

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.
Procek
Posty: 3
Rejestracja: 03 sty 2011 00:31
Wersja środowiska: LabVIEW 8.6
Lokalizacja: Koszalin

Generowanie cyfrowego sygnału sterującego linijką CCD

Post autor: Procek »

Witam wszystkich.

Jest to mój pierwszy post na tym forum, więc z góry przepraszam jeżeli umieściłem go w złym dziale.
Od pewnego czasu próbuje napisać program do sterowania linijką CCD za pomocą LabVIEW. Mam już mały szkielet takiego programu, ależe dopiero zacząłem się uczyć języka to pojawiły się pierwsze problemy, ale do rzeczy.

Program wygląda tak:
http://www.picshot.pl/public/view/full/19213
Komunikacja programu z urządzeniem będzie odbywała się za pomocą karty NI PCI-6251. Niestety nie mam zbyt dużego dostępu do niej, więc próbuje narazie symulacji za pomocą "Measurement & Automation Explorer". Symuluję kartę w "Devices and Interfaces" i taski w "Data Neighborhood". Jednakże po uruchomieniu programu wyskakuje mi błąd:
http://www.picshot.pl/public/view/full/19219

Z powyższego błędu rozumiem, że były to problemy z taskiem. Pomyślałem, więc, że może jest on w ogóle nie potrzebny i usunąłem go z programu. W tym wypadku także program odmówił posłuszeństwo. Błąd pojawił się dopiero po bloczku DAQmx Write, a nie jak poprzednio na początku, i wyglądał następująco:
http://www.picshot.pl/public/view/full/19220

Rozumiem z tego, że potrzebuje zewnętrznego zegara, ale czy jest możliwość jego symulacji, czy wogóle można jakoś inaczej rozwiązać ten błąd???

Proszę o korzystanie z opcji Dodaj załącznik przy edycji postów. Korzystanie z zewnętrznych serwerów powoduje, że z czasem obrazy mogą stać się niedostępne (usunięte z tych serwerów) co utrudni innym poszukiwania rozwiązań. Pitol
"Does the flap of a butterfly’s wings in Brazil set off a tornado in Texas?"
Awatar użytkownika
Nowszy
Posty: 504
Rejestracja: 30 maja 2008 08:33
Wersja środowiska: LabVIEW 2011
Lokalizacja: Katowice
Kontakt:

Generowanie cyfrowego sygnału sterującego linijką CCD

Post autor: Nowszy »

Witaj

Pierwszy z błędów o których wspominasz wskazuje na to, że próbujesz dodać do tasku DigIn linie cyfrowe skonfigurowane jako wyjścia cyfrowe. Taski mogą być tylko 1. typu - więc jeśli typ tasku to wejście cyfrowe, wszystkie linie muszą być wejściem. Jak wyjście - wszystkie wyjściem. Twój VI wygląda na pierwszy rzut oka ok, ale nie wiem jak stworzyłeś task w MAXie. Pokaż zrzut ekranu jak skonfigurowałeś task i drugi - co wpisujesz w kontrolkę Lines na panelu czołowym
Pozdrawiam, Maciek Antonik
Edu4Industry
Procek
Posty: 3
Rejestracja: 03 sty 2011 00:31
Wersja środowiska: LabVIEW 8.6
Lokalizacja: Koszalin

Re: Generowanie cyfrowego sygnału sterującego linijką CCD

Post autor: Procek »

Dzięki za szybką odpowiedź.
Próbuje właśnie różnych kombinacji z taskami w MAXie i LabVIEW. Oto zrzut z konfiguracji tasku w MAXie przy której mi wyskakuje te błąd:
http://www.picshot.pl/public/view/full/19282
Task ten był ustawiony jako Acquire Signals -> Digital Input -> Port Input i wybieram Dev1 -> port0
Przy tej konfiguracji mam takie ustawienia na panelu w LabVIEW:
http://www.picshot.pl/public/view/full/19283
Teraz spróbowałem też takiego ustawieniu w MAXie (Generate Signals -> Digital Output -> Port Output i dalej wybrałem Dev1 -> port0). Tu jest zrzut z MAXa z tym taskiem:
http://www.picshot.pl/public/view/full/19284
Po takiej konfiguracji w moim programie wyskakuje po uruchomieniu taki błąd zaraz po pierwszym bloczku:
http://www.picshot.pl/public/view/full/19285
Pewnie czegoś jeszcze nie robię podczas tworzenia tasków, chociaż instrukcja VIDEO na stronie National Instruments jest raczej wyczerpująca.
"Does the flap of a butterfly’s wings in Brazil set off a tornado in Texas?"
Awatar użytkownika
Nowszy
Posty: 504
Rejestracja: 30 maja 2008 08:33
Wersja środowiska: LabVIEW 2011
Lokalizacja: Katowice
Kontakt:

Generowanie cyfrowego sygnału sterującego linijką CCD

Post autor: Nowszy »

Aaa, no to już chyba wszystko rozumiem. Tak żeby ci wszystko wytłumaczyć po kolei:
- tworzenie tasków z MAXa jest możliwe, ale nie jest konieczne. Można tworzyć taski z samego VIa (służy do tego DAQmx Create Task, z którego zresztą korzystasz)
- w twoim przypadku otwierasz istniejący task, który zawiera już jakiś kanał i próbujesz dodać do niego kolejne kanały (dokładnie te same - port 0).

I właśnie stąd pojawiają ci się błędy. Nie mam teraz DAQmx żeby ci dać przykłady, ale spróbuj kilku rzeczy:
- zupełnie skasuj kontrolkę DAQmx task name podpiętą na wejście pierwszego VIa LUB
- skasuj wejście Lines tego samego VIa i najlepiej usuń też w ogóle DAQmx Sample Clock (bo parametry czasowe już i tak ustaliłeś w tasku)

Zobacz też do Help>>Example Finder i tam Hardware Input and Output>> DAQmx>> Generating Signals>> Digital output (piszę z pamięci, więc może być niedokładnie :p )

Daj znać jak poszło.
Pozdrawiam, Maciek Antonik
Edu4Industry
Procek
Posty: 3
Rejestracja: 03 sty 2011 00:31
Wersja środowiska: LabVIEW 8.6
Lokalizacja: Koszalin

Re: Generowanie cyfrowego sygnału sterującego linijką CCD

Post autor: Procek »

Cóż zrobiłem tak jak napisałeś. :) Program nie wyrzuca żadnych błędów. :ymapplause: Na razie jednak jest to dopiero początek. Została mi jeszcze tylko pomyśleć nad odbieraniem danych, ich wizualizacji i synchronizacją tego wszystkiego. Dziękuję Ci za pomoc. Bieżący program wstawiam w załączniku. Póki co śmiga. Na początku przyszłego tygodnia mam zamiar podpiąć to wszystko do karty i spróbować na żywej linijce CCD. Mam nadzieję, że będzie działało. Finalną wersję programu też chciałbym zamieścić na forum, choćby dla celów edukacyjnych.
Załączniki
CCD.vi
Program
(18.89 KiB) Pobrany 229 razy
Diagram programu
Diagram programu
Panel sterujący
Panel sterujący
"Does the flap of a butterfly’s wings in Brazil set off a tornado in Texas?"
Awatar użytkownika
Nowszy
Posty: 504
Rejestracja: 30 maja 2008 08:33
Wersja środowiska: LabVIEW 2011
Lokalizacja: Katowice
Kontakt:

Generowanie cyfrowego sygnału sterującego linijką CCD

Post autor: Nowszy »

Jedna uwaga - nie potrzebujesz DAQmx Start Task, jeśli masz podpięte True na wejście Autostart, poza tym Task masz skonfigurowany jako '1 channel for all lines', więc przy zapisie możesz korzystać z 1 channel zamiast N channels.
Pozdrawiam, Maciek Antonik
Edu4Industry
ODPOWIEDZ