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
Generowanie cyfrowego sygnału sterującego linijką CCD
Generowanie cyfrowego sygnału sterującego linijką CCD
"Does the flap of a butterfly’s wings in Brazil set off a tornado in Texas?"
- Nowszy
- Posty: 504
- Rejestracja: 30 maja 2008 08:33
- Wersja środowiska: LabVIEW 2011
- Lokalizacja: Katowice
- Kontakt:
Generowanie cyfrowego sygnału sterującego linijką CCD
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
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
Edu4Industry
Re: Generowanie cyfrowego sygnału sterującego linijką CCD
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.
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?"
- Nowszy
- Posty: 504
- Rejestracja: 30 maja 2008 08:33
- Wersja środowiska: LabVIEW 2011
- Lokalizacja: Katowice
- Kontakt:
Generowanie cyfrowego sygnału sterującego linijką CCD
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
)
Daj znać jak poszło.
- 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

Daj znać jak poszło.
Pozdrawiam, Maciek Antonik
Edu4Industry
Edu4Industry
Re: Generowanie cyfrowego sygnału sterującego linijką CCD
Cóż zrobiłem tak jak napisałeś.
Program nie wyrzuca żadnych błędów.
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
"Does the flap of a butterfly’s wings in Brazil set off a tornado in Texas?"
- Nowszy
- Posty: 504
- Rejestracja: 30 maja 2008 08:33
- Wersja środowiska: LabVIEW 2011
- Lokalizacja: Katowice
- Kontakt:
Generowanie cyfrowego sygnału sterującego linijką CCD
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
Edu4Industry