in data 06-28-2012 04:10 AM
Buongiorno,
in un sistema di acquisizione dati, ho messo alcuni Create channel in parallelo, il cui task out entra nei Daqmx read successivi.
Non so però dove fare convergere tutti i task out dei read. Se fosse uno solo lo metterei in ingresso nel task in del Clear task, appena fuoiri dal loop... ma quando sono due o più non è possibile (credo). Come dovrei fare?
Grazie mille a tutti,
Davide
in data 06-28-2012 05:16 AM
Due alternative:
1. Usare un unico Create Channel con tutti i canali in ingresso che ti servono. I canali possono essere scelti interattivamente oppure puoi creare una stringa tipo "Dev1/Ai0÷2" se sono consecutivi oppure "Dev1/Ai0,Dev1/Ai3" nel caso opposto
2. Mettere i Create Channel in serie, il task out del primo nel task in del secondo e così via: se i canali non sono duplicati fra i vari create non hai errori in compilazione (però non posso provare se funziona se non con schede virtuali: a te la prova sul campo)
In ogni caso dovrai dopo usare l'opportuna istanza del Read considerando che usi più canali.
Puoi cercare negli esempi di acquisizione dei vi già pronti.
in data 06-28-2012 05:30 AM
Ciao e grazie,
ma non mi è chiaro: io ho read diversi , uno per ogni canale.. in alcuni casi si tratta di acquisizioni di temperature, in altri di segnali digitali ecc. Come posso mettere un unico read dopo i vari create channel in serie (soluzione 2) ?
Grazie
Davide
in data 06-28-2012 05:43 AM
Non puoi comunque mischiare fra loro misure analogiche e digitali, mentre puoi acquisire temperature, tensioni ecc ecc nello stesso task.
Per leggere i digitali devi creare un task diverso e sincronizzare i due task.
in data 06-28-2012 05:47 AM
Infatti.. poi come posso gestire i task out paralleli?? devo per forza cablarli o li lascio float? è possibile usare più clear task?
Grazie
Davide
in data 06-28-2012 08:06 AM
Non avevo capito che il problema erano i segnali non omogenei. Ogni task deve aprirsi e chiudersi: metti un clear per ogni task che crei nel programma.
in data 06-28-2012 10:26 AM
Ok Roberto, grazie mille. Come vedi dagli allegati, ho messo un clear task per ogni channel/read.
Adesso però devo gestire error in-out. Meglio la soluzione in serie, oppure il parallelo (come credo) ?
Grazie,
Davide
06-29-2012 10:23 AM - modificato 06-29-2012 10:24 AM
Dunque, per prima cosa come puoi vedere aprendo il Clear.vi il task viene arrestato comunque che è la cosa più importante (=non è uno di quei vi che se c'è un errore in ingresso non fanno nulla).
Rimane da vedere cosa succede in caso di errore: il merge errors restituisce il primo errore trovato, mettendoli in serie ti viene segnalato l'ultimo.
In ogni caso se c'è un solo errore la segnalazione ce l'hai comunque, se ce n'è più d'uno ne hai solamente una: quale opzione preferisci? A te la scelta