Próbujesz podpiąć z tego co widzę pod jedną wartość logiczną tablicę wartości logicznych.
Musisz tablicę zamienić na liczbę: Boolean Array To Number i podpiąć ją do DAQa (lepiej pod DAQmx Write), ale skonfigurowanego jako Digital Out>Port.
Czy czasem nie przerabialiśmy tego w innym poście?
PS. Nie polecam Daq-a.
jesli skonfiguruje wyjscia jako port, czy w takim przypadku zadziałają wartosci logiczne które wczesniej byly podawane na konkretne linie? do konkretnych linii na karcie (w tym samym porcie) podłączałem również akwizycję sygnału. nie skłóci się jedno z drugim? no i podstawowy problem. Moja karta ma 2 porty a musi obsłużyć 4 casy. Nie bardzo wiem jak to zrealizować..
Jeśłi masz na tym samym porcie to rzeczywiście będzie konflikt. Jeśli wykorzystujesz tylko np. 4 wyjścia (a reszta to wejścia) to w DAQAssistancie po prostu wybierz tylko te, czyli Digital Line Output (i np. port 0.0, 0.1, 0.2 i 0.3), jeśli tablica też będzie miała 4 wartości logiczne to powinno działać i nie wyrzucać błędów (u mnie na symulowanej karcie działa).
Jak zrezygnujesz z DAQ Assistanta i użyjesz nieekspresowych funkcji to w ikonie Write wybierasz opcję Digital>Single Channel>Single Sample>N lines, wcześniej oczywiście Create Channel, gdzie wybierasz interesujące Cię linie cyfrowe.
To samo możesz zrobić w przypadku odczytu (odczyt tylko z kilku linii).
Załączniki
3 wyjscia.JPG (10.41 KiB) Przejrzano 7775 razy
Ostatnio zmieniony 01 lip 2011 00:30 przez smiglo, łącznie zmieniany 1 raz.
Twoj sposob juz testowalem wczesniej i faktycznie jesli podlacze DAQassistanta do jednego case'a wszystko dziala. problem tkwi jednak w tym, że chciałbym podłączyć DAQassistanta do każdego z 4ech casow (jak na obrazku wyzej). Dodatkowo w każdym rezerwuje te same wejścia (od 0.0 do 0.2). wtedy wyrzuca mi błąd o tym ze wejscia są już zarezerwowane w innym miejscu i tak w kółko. Próbowałem już dawać bloki DAQassistant dla kazdego case oddzielnie na zewntątrz oraz w środku (powinny działać jeśli jeden z case bylby prawdziwy, program jest tak skonstruowany ze tylko jeden sposród 4 case moze byc w danym czasie true). Ciagle jednak wyswietla sie ten sam błąd i nie mam pojecia jak to obejść. Wzoruje się troche na programie sterowania windą z tej strony : http://www.scribd.com/doc/7072695/Eleva ... bVIEW-2003 (nie wiem do czego służą białe bloczki przy wejsciach i wyjsciach. to jakies starsze wersje write? )
Te białe to klasyczne DAQ (teraz są DAQmx).
W swoim programie nie musisz używać aż tylu Case-ów.
Niepotrzebnie porównujesz otrzymaną wartość kolejno z cyframi 0,1,2 i 3. Od razu podaj tą wartość na Case (zaokrągli do liczby całkowitej). A tam w zależności od tego co to będzie podawaj odpowiednią kombinację logiczną na swoje wyjścia. Poza Case jeden DAQ Assistant. I będzie działać.
Nie bardzo rozumiem tego, że wyrzuca Ci błąd, że już coś jest zarezerowane jak masz tylko jednego DAQ-a...ale może pora późna.