================================================================================
compilare o rendere invisibile codice a terzi
================================================================================
AUTORE: 2235
DATA :03/01/2011 - 12:03:13
----------------------------------------
buongiorno e buon anno a tutti
scusate ma avrei un problema. Ho un programma scritto in labview 8.2 organizzato con un main in cui inserisco dei subvi per rendere
leggibile e gestibile il progetto. Ora ho la necessità di passare l'applicazione ossia main+suvi a un terzo per far fare dei test ma non voglio che questo veda il codice copiandolo. Pensavo di compilarlo ma non so se è la via migliore. Esiste un compilatore free o un modo per poter passare i file oscurati senza far vedere il codice?
Se lo compilo, cliccando come posso accedere ai suvi che prima aprivo durante il run cliccando sopra la icona del subvi?
Si può usare senza problemi un compilatore per versione labview superiore alla labview 8.2?
Grazie molte
----------------------------------------
AUTORE: 1165
DATA :05/01/2011 - 19:34:23
----------------------------------------
Puoi sempre compilare separatamente i tuoi SubVI e farne delle DLL che poi richiami (sempre separtamente) dal tuo Main, ma forse per lo scopo che ti prefiggi tu mi sembra più semplice che ti salvi i tuoi SubVI con l'opzione di cancellazione del Block Diagram (è una della opzioni di salvataggio). Se decidi di usare questa strada stai MOLTO attento a salvarti prima a parte una copia originale dei tuoi SubVI per non perdere definitivamente tutti i tuoi Diagram Panel, visto che una volta salvato un VI senza Diagram Panel non torni più indietro (io ci ho perso dei lavori così). Forse altri hanno soluzioni migliori. Ciao e buon anno.
----------------------------------------
AUTORE: 43
DATA :09/01/2011 - 22:16:40
----------------------------------------
[quote="cromax":3j8sf1l3]buongiorno e buon anno a tutti
scusate ma avrei un problema. Ho un programma scritto in labview 8.2 organizzato con un main in cui inserisco dei subvi per rendere
leggibile e gestibile il progetto. Ora ho la necessità di passare l'applicazione ossia [b:3j8sf1l3]main+suvi a un terzo per far fare dei test [/b:3j8sf1l3]ma non voglio che questo veda il codice copiandolo. Pensavo di compilarlo ma non so se è la via migliore. Esiste un compilatore free o un modo per poter passare i file oscurati senza far vedere il codice?
Se lo compilo, cliccando come posso accedere ai suvi che prima aprivo durante il run cliccando sopra la icona del subvi?
Si può usare senza problemi un compilatore per versione labview superiore alla labview 8.2?
Grazie molte[/quote:3j8sf1l3]
Ecche sono tutti 'sti segreti!!!!
Ecchessaràmmai 'sto codice che hai scritto!!!!
Adesso faccio così: smetto di scrivere in questo Forum così tutte le cose che conosco le tengo per me ed evito che altri possano sfruttarle...
Ragionamenti come i tuoi sono quelli che mi fanno venire voglia di chiudermi definitivamente su me stesso e non dare retta agli altri, dimenticando che dagli altri si impara, quindi per bilanciare lo "scambio" bisogna insegnare ad altri se possibile senza farsi troppe menate.
E se qualcuno "carpisce " o impara qualcosa segretamente, da quello che hai scritto Tu, pazienza!!
Terminato il pistolotto bisogna capire questo tizio, collega o di un'altra azienda, che cosa deve testare e in caso di problemi fino a che dettaglio deve indagare.
Se dispone di una licenza labview, puoi passargli una copia dei VI salvati senza diagramma, oppure metti la password per accedere al diagramma ad un numero esiguo di VI, solo quelli + importanti.
Se vuoi che non siano accessibili neanche i FrontPanel dei VI che non hanno interfaccia visibile allora la cosa migliore è crearti un unico file eseguibile, ma devi disporre di una licenza per poterlo fare, e non ci sono che io sappia compilatori alternativi a quallo di NI. Per inteso: il "compilatore" non è un "compilatore"che faccia granchè: dentro al file .VI c'è già il codice compilato ed eseguibile, il compilatore non fa altro che creare una specie di libreria di VI (.llb) dandogli un "punto di entrata" (il VI principale) in modo che labview RunTime possa eseguire il tuo codice su un PC nel quale non è installato l'ambiente di sviluppo.
Se disponi di licenza per ambiente LabVIEW e compilatore di una versione superiore (per es. LV8.5) i tuoi VI verranno convertiti in quella versione e una volta convertiti verrà generato l'eseguibile.
Ti consiglio di verificare il perfetto funzionamento del Tuo SW prima di passarlo ad altri, specialmente se di esso generi un .exe o cmq ne "arrangi" una versione modificata.
bye
----------------------------------------
================================================================================
Documentazione DSC module
================================================================================
AUTORE: 3422
DATA :05/01/2011 - 10:21:21
----------------------------------------
Salve,
qualcuno sa dove è possibile reperire informazioni esaustive su come funziona in dettaglio il DSC?
Qualcosa che chiarisca concetti come item, channel, BVE refnum, I/O points, e robe del genere...
Grazie.
----------------------------------------
AUTORE: 43
DATA :09/01/2011 - 23:05:14
----------------------------------------
[quote="sassos":1et4vl51]Salve,
qualcuno sa dove è possibile reperire informazioni esaustive su come funziona in dettaglio il DSC?
Qualcosa che chiarisca concetti come item, channel, BVE refnum, I/O points, e robe del genere...
Grazie.[/quote:1et4vl51]
Innanzitutto :
DSC = Datalogging and Supervisory Control
è il modulo per LabVIEW che consente di sviluppare degli SCADA.
SCADA ="Supervisory Control And Data Acquisition"
cioè tutti questi sistemi dove un PC con un SW supervisore controlla o semplicemente monitora un impianto.
Per una spiegazione sommaria di cos'è uno SCADA usa pure Wikipedia.
Item è un elemento generico di solito appartenente ad un elenco o lista.
Channel è letteralmente IL CANALE attraverso cui passano delle informazioni: possono essere dei canali fisici (linee di comunicazioni seriali e non, segnali analogici e digitali), o semplicemente degli identificativi logici che mappano risorse fisiche o virtuali.
Non so cosa sia il BVE refnum, forse si tratta di un (VI refnum?), ma in generale per refnum si intende un "puntatore" a qualcosa (chi programma in C language lo capisce).
Il Refnum è un numero di riferimento (REFerence NUMber) che solitamente indica un'area di memoria nella quale sono contenute le informazioni di una risorsa "aperta", in uso (un file oppure un canale) ed è l'identificativo unico tramite il quale si può accedere a quella risorsa.
I\O points (punti di ingresso/uscita) sono le grandezze che tu devi acquisire o pilotare/generare e sono costituiti da segnali analogici o digitali
bye
----------------------------------------
AUTORE: 3422
DATA :10/01/2011 - 09:11:02
----------------------------------------
[quote="paracarro":7r2ylm30][quote="sassos":7r2ylm30]Salve,
qualcuno sa dove è possibile reperire informazioni esaustive su come funziona in dettaglio il DSC?
Qualcosa che chiarisca concetti come item, channel, BVE refnum, I/O points, e robe del genere...
Grazie.[/quote:7r2ylm30]
Innanzitutto :
DSC = Datalogging and Supervisory Control
è il modulo per LabVIEW che consente di sviluppare degli SCADA.
SCADA ="Supervisory Control And Data Acquisition"
cioè tutti questi sistemi dove un PC con un SW supervisore controlla o semplicemente monitora un impianto.
Per una spiegazione sommaria di cos'è uno SCADA usa pure Wikipedia.
Item è un elemento generico di solito appartenente ad un elenco o lista.
Channel è letteralmente IL CANALE attraverso cui passano delle informazioni: possono essere dei canali fisici (linee di comunicazioni seriali e non, segnali analogici e digitali), o semplicemente degli identificativi logici che mappano risorse fisiche o virtuali.
Non so cosa sia il BVE refnum, forse si tratta di un (VI refnum?), ma in generale per refnum si intende un "puntatore" a qualcosa (chi programma in C language lo capisce).
Il Refnum è un numero di riferimento (REFerence NUMber) che solitamente indica un'area di memoria nella quale sono contenute le informazioni di una risorsa "aperta", in uso (un file oppure un canale) ed è l'identificativo unico tramite il quale si può accedere a quella risorsa.
I\O points (punti di ingresso/uscita) sono le grandezze che tu devi acquisire o pilotare/generare e sono costituiti da segnali analogici o digitali
bye[/quote:7r2ylm30]
Capisco che la mia domanda potesse essere un po' "generica", ma...dicevo: "...reperire informazioni [b:7r2ylm30]esaustive[/b:7r2ylm30] su come funziona in [b:7r2ylm30]dettaglio[/b:7r2ylm30] il DSC"
Grazie comunque per il contributo.
----------------------------------------
AUTORE: 43
DATA :10/01/2011 - 10:00:11
----------------------------------------
dovresti partire da
[url=http://digital.ni.com/manuals.nsf/websearch/E23BE1480E5C62738625770D00287B1D:1ah7b56g]Getting Started with the LabVIEW Datalogging and Supervisory Control Module[/url:1ah7b56g]
[url=http://digital.ni.com/manuals.nsf/websearch/6A31EA4E87C655038625772800122E43:1ah7b56g]LabVIEW 2010 Datalogging and Supervisory Control Module Help[/url:1ah7b56g]
e poi anche
[url=http://www.ni.com/labview/labviewdsc/faq.htm:1ah7b56g]LabVIEW Datalogging and Supervisory Control Module FAQ[/url:1ah7b56g]
Da una prima ricerca sommaria:
[url=http://zone.ni.com/devzone/cda/tut/p/id/3273:1ah7b56g]Developing Monitoring Applications with the LabVIEW DSC Module for Control Systems[/url:1ah7b56g]
[url=http://zone.ni.com/devzone/cda/tut/p/id/4189:1ah7b56g]Support Files to Include when Building a LabVIEW DSC Module Application[/url:1ah7b56g]
[url=http://zone.ni.com/devzone/cda/tut/p/id/6579:1ah7b56g]Logging Data with National Instruments Citadel[/url:1ah7b56g]
[url=http://www.shimmer-research.com/wp-content/uploads/2010/02/Shimmer_Documentation.pdf:1ah7b56g]un esempio di integrazione di sensore in DSC[/url:1ah7b56g]
[url=http://sine.ni.com/cs/app/doc/p/id/cs-10478:1ah7b56g]NI LabVIEW Datalogging and Supervisory Control Toolset per la didattica dei sistemi SCADA/HMI[/url:1ah7b56g]
Cmq sia l'approccio tipico del fruitore di LabVIEW è diretto alla scrittura di codice a partire da esempi.
La lettura di manuali senza uso pratico del prodotto, in questo caso LabVIEW DSC, lasciano cmq il tempo che trovano.
Se non si è in grado o non si vuole capire i termini usati nei manuali, allora meglio lasciar stare e cercarsi un altro mestiere.
bye
----------------------------------------
AUTORE: 3422
DATA :10/01/2011 - 17:09:25
----------------------------------------
[quote="paracarro":9soaozdy]
Se non si è in grado o non si vuole capire i termini usati nei manuali, allora meglio lasciar stare e cercarsi un altro mestiere.
bye[/quote:9soaozdy]
...la mia non era una polemica. Volevo solo dire che le informazioni di cui avevo bisogno erano di tipo più approfondito rispetto a definizioni che conoscevo già, ma che sono di poco aiuto se non si sa come certi oggetti sono legati gli uni con gli altri.
Sono vincolato a Labview 7.1 e la documentazione sul DSC Module mi pare scarsa.
Grazie per i link: leggerò quelli che non conosco con attenzione.
----------------------------------------
AUTORE: 482
DATA :11/01/2011 - 07:14:46
----------------------------------------
Tieni presente che molta documentazione tecnica sui tool di NI è volutamente scarsa, perchè NI tiene dei corsi specifici ad esempio su DSC che costano non poco e con i quali ti danno la tua bella documentazione.
Morale...se ti do la docuemntazione gratis, chi ci viene piu' a fare i corsi?
Poi i corsi sono strutturati bene, molto pratici e immediati, nulla da togliere, pero' ovviamente la questione commerciale fa la sua parte.
----------------------------------------
================================================================================
inserire scalari in excell tramite labview
================================================================================
AUTORE: 3091
DATA :07/01/2011 - 14:36:08
----------------------------------------
Ciao a tutti, non sono molto pratico di labview, vorrei inserire dei dati scalari, tramite dei controlli numerici in un file .xls. Come posso fare? La funzione write to spreadsheet file mi permette di scrivere dei vettori o sbaglio?
Grazie a tutti in anticipo.
----------------------------------------
AUTORE: 927
DATA :10/01/2011 - 08:23:15
----------------------------------------
Con spreadsheet file intende un file di testo semplice, con i campi separati da virgola, tab, ecc. Comunque Excel può aprire anche file di questo tipo. Se però devi scrivere su un vero file Excel (binario) già esistente, la faccenda è più complicata
----------------------------------------
AUTORE: 3091
DATA :10/01/2011 - 14:35:40
----------------------------------------
Ciao e grazie per l'interessamento, in effetti quello che vorrei fare io è di esportare dati da un pannello labview ad un foglio excell gia formattato con formule varie. Mi sto già documentando in merito con del materiale tecnico, ma se puoi darmi qualche dritta te ne sarei grato.
Saluti, Massimo.
----------------------------------------
AUTORE: 927
DATA :10/01/2011 - 14:57:00
----------------------------------------
Il Report Generation Toolkit (non compreso nel Labview base, credo) ha delle funzioni specifiche per Excel. In giro si trovano altre librerie gratuite, ad es. http://zone.ni.com/devzone/cda/epd/p/id/2974, basta cercare un "labview Excel toolkit". Tutte comunque utilizzano le funzioni ActiveX
----------------------------------------
AUTORE: 3091
DATA :10/01/2011 - 14:58:25
----------------------------------------
Grazie di tutto, ci do subito uno sguardo.
----------------------------------------
================================================================================
Conteggio impulsi in funzione del tempo
================================================================================
AUTORE: 3446
DATA :07/01/2011 - 14:38:10
----------------------------------------
Buongiorno a tutti.
Come spesso accade "approdo a voi" in cerca di aiuto.
Al momento sto usando LabView in modalità evaluation, per cercare di capire se sarò in grado di eseguire quanto mi è stato richiesto. Quindi non ho schede di acquisizione, ma solo simulazione di segnali con i blocchi di LabView.
Quello che vorrei fare (simulare per ora) è l'acquisizione di un segnale analogico e di un tachimetro. Fin qui ci riesco (sempre e solo simulando). I dati finiscono in un file binario.
In un secondo tempo vorrei leggere il file (ci riesco) e disegnare su grafico l'andamento del segnale analogico in funzione non del tempo, ma dei metri percorsi che dovrei ricavare dal tachimetro.
Per far questo ho provato con gli eventi sul grafico: ogni volta che sposto il mouse, conteggio gli impulsi dall'istante zero a quello ricavato dal grafico, ma va bene con pochi punti campionati. Quando sono 100'000 è lento.
Avevo in mente di "costruire" appena letto il file un array di lunghezza pari ai dati in ingresso in cui processo il segnale del tachimetro e memorizzo nell'array il corrispettivo in metri, ma non ci sto riuscendo.
In pratica passo ad un For Loop l'array del segnale tachimetro e estraggo ogni volta il segnale tra gli indici 0 e i, conteggio gli impulsi, li trasformo in metri e salvo in un array. Però anche qui va bene con pochi punti campionati.
Avete suggerimenti su come poter fare qualcosa del genere?
Grazie.
----------------------------------------
AUTORE: 43
DATA :09/01/2011 - 22:29:55
----------------------------------------
Devi leggerti qualche User manual per farti un'idea di come acquisire i dati usando buffer circolari.
Tutto dipende dalla Tua freq di campionamento.
Nel grafico non puoi mettere tutti i punti che acquisirai.
faccio un esempio: una scheda che acquisisce 100000 samples (campioni) al secondo su due canali, non è una "scheda oscilloscopio" ma produce in pochi secondi uan quantità di dati che fisicamente NON PUO' STARE NELLA RAM del tuo PC.
ed i PC di oggi dispongono di Gb di RAM.
Quindi bisogna scegliere cosa si vuole vedere.
I dati acquisiti possono essere mediati, decimati, oppure si possono acq. in funzione di un trigger, come per gli oscilloscopi.
Dipende cosa si vuol fare.
Parliamo prima di freq. di acquisizione e cosa vuoi vedere nei grafici.
Meglio sarebbe capire qual'è il problema per scegliere un approccio.
bye
----------------------------------------
AUTORE: 3446
DATA :17/01/2011 - 12:00:54
----------------------------------------
Il segnale in uscita dalla tachimetrica avrà una frequenza massima, in questo caso, di 25Hz.
Io sto simulando un'onda quadra a 25Hz, campionata a 1000Hz e 8192 punti.
La scrittura su file non mi crea problemi (sempre con il segnale simulato).
E adesso per il conteggio degli impulsi ho fatto io un piccolo schema per il trigger dei valori che mi processa un array di più di 4 milioni di valori in pochi secondi, invece delle decine di secondi impiegati usando il VI Trigger & Gate.
Grazie della risposta,
sto leggendo molta documentazione, anche perchè avendo esperienze di programmazione in linguaggio C e C++ sto cercando di "trasportare" le soluzione che mi vengono in mente in quei linguaggi, a LV.
----------------------------------------
================================================================================
Aiuto nuovo progetto... Acquisizione dati..
================================================================================
AUTORE: 2918
DATA :10/01/2011 - 07:41:51
----------------------------------------
Ciao a tutti, mi sto cimentando per la prima volta in LabView, con la versione 2010.
La mia intenzione è quella di realizzare un software che registri/visualizzi le misure importanti di un impianto fotovoltaico collegandomi all'inverter tramite protocollo Modbus RTU.
Sono riuscito a collegarmi e scaricare i dati tramite convertitore rs232-rs485.
Il software attualmente è così realizzato:
Grafico chart per la visualizzazione della potenza istantanea
Indicatore potenza istantanea (quello con la lancetta tricolore.. piuttosto, posso scambiare i colori? Per me la zona rossa sarebbe quella iniziale..)
Grafico chart per la visualizzazione della tensione degli ultimi minuti
Altri rilevamenti...
Salvataggio su file dei dati... (salva i valori tensione e potenza ogni secondo in 2 colonne.... non posso mettere una terza colonna con l'ora?)
Ora sono bloccato su un punto cruciale..
Questo software dovrei tenerlo sempre avviato, dovrebbe monitorarmi la produzione istantanea, quella giornaliera, quella mensile e su richiesta quella annuale (sotto forma di grafici..)
Come posso fare per far partire la registrazione ogni mattina, interromperla ogni sera, salvare i dati e visualizzarli su un altro grafico in un secondo momento?
Altra cosa, sul grafico non riesco a mettere l'orario corrente, ne impostando su real time ne su absolute time... mi prende un'ora diversa da quella attuale..
Un altra cosa che dovrei riuscire a fare è scartare i valori "0" che vengono rilevati quando l'inverter è spento.
Spero mi possiate dare una dritta.. grazie!
----------------------------------------
AUTORE: 482
DATA :10/01/2011 - 12:39:37
----------------------------------------
Io ti consiglierei di appoggiarti ad un database per salvare i dati per avere uno storico completo e poter poi richiamare vari grafici in funzione del periodo.
Alternativamente potresti:
1) Ogni giorno alle 00:00 apri un nuovo file col nome della data corrente e magari qualche prefisso o suffisso.
2) Ogni giorno alle 23:59 chiudi il file suddetto.
3) Ogni 1° del mese crei una cartella nel qale salvare i file giornalieri del mese corrente
4) QUesti file te li gestisci come voi per fare le tue statistiche.
Nel file dati ci puoi mettere quello che vuoi, compresi i risultati di eventuali statistiche giornaliere.
Basta decidere prima la struttura che vuoi dare al file cosi' che poi non incappi in incongruenze di dati.
Per quanto riguarda i valori "0", basta usare n case structure, se i valori non sono "0", scrivi sul file, altrimenti non fai nulla.
Per quantorigarda le date e gli orari devi giocare un po' con i tipi di dati e guardare l'help dei vari blocchetti per la manipolazione dei formati data/ora.
----------------------------------------
AUTORE: 2918
DATA :10/01/2011 - 18:48:33
----------------------------------------
Grazie mille per la risposta... è gia una dritta..
Penso sarebbe il top appoggiarsi ad un database, primo perchè ho conoscenze in merito a SQL, secondo perchè sarebbe molto più maneggevole di un lungo file di testo, che richiede comunque operazioni impegnative...
Allego il progetto in questione, se qualcuno vuole visionare e segnalarmi eventuali errori concettuali
Attualmente ho un timer solo, che scandisce l'acquisizione dei dati e il loro relativo salvataggio... Se utilizzassi un database, preferirei salvare i dati ogni 10 secondi tanto per iniziare, e rappresentare su ogni punto del grafico la media del 10 minuti. Mi servirebbero quindi 2 timer... ma come assegno un timer a un'operazione specifica?
Altra cosa.. per leggere i registri, parto da uno e ne leggo tot.
Se voglio leggere il 1600 e il 1850 , devo per forza fare oltre 250 interrogazioni per poi scegliere l'indice dell'array che mi interessa oppure posso fare 2 interrogazioni specifiche ad ogni campionatura? Anche perchè con 250 registri mi va in timeout anche impostandolo a 10 secondi..
Grazie ancora
----------------------------------------
AUTORE: 482
DATA :11/01/2011 - 07:15:49
----------------------------------------
..ma ciao!
dovresti salvare l'allegato in versione precedente, senno' non posso leggerlo.
P.S. per registri intendi array?
----------------------------------------
AUTORE: 2918
DATA :11/01/2011 - 09:10:46
----------------------------------------
per registri intendo la quelli del client modbus...
Prova così
----------------------------------------
AUTORE: 482
DATA :11/01/2011 - 12:58:51
----------------------------------------
Vedo che hai usato un express vi, quindi ne deduco che tu sia una vittima della politica scellerata di NI del "labview fa tutto all'istante senza sbattimenti".
Detto questo, se vuoicontinuare ad usare quell'express VI per salvare i dati, puoisemplicemente trascinare il blocchetto merge signal verso l'alto o ilbasso e vedrai che si espande, cosi' che puoi collegargli quanti segnali vuoi.
In alternativa, vai nella palette dei file e guardati gli esempi a disposizione e troverai mille altri modi per salvare dati su file.
La cosa del database se sei un neofita che ha fretta la lascerei stare, oppure dai un occhiata anche li agli esempi.
Per quanto riguarda il far girare il software continuamente, innanzitutto devi rinchiudere tutto il codice in un ciclo while all'interno del quale, dopo X tempo fai salvare i dati su file.
Tutto quello che vuoi fare, si puo' fare abbastanza facilmente, non te lo faremo noi del forum perchè non è il nostro ocmpito, ma possiamo darti una mano se hai qualche dubbio.
Il sistema migliore e piu' usato per procedere è dare un occhiata agli esempi e farti un idea di come funziona labview.
----------------------------------------
AUTORE: 2918
DATA :11/01/2011 - 22:12:47
----------------------------------------
Grazie gepponline, più di tanta fretta non ho, è per monitorare il mio impianto ed è solo "uno sfizio" (si fa per dire... è molto interessante per controllare l'effettivo funzionamento dell'impianto).
Conosco visual basic, c, java, sql, ma Labview non l'ho mai studiato, l'ho visto per caso e ho capito che forse sarebbe stato il miglior programma per il mio progetto.
Grazie del consiglio "while", ho sempre pensato servisse un while, ma in labview sono proprio spaesato... adesso collego quanto visto sull'"inquadrare"
Per quanto riguarda la "lettura" dell'ora del pc con che oggetto posso ricavarla?
Grazie, non voglio abusare della vostra cortesia, non sto cercando di "farmi fare i compiti", ma di qualche dritta su cui lavorare
----------------------------------------
AUTORE: 482
DATA :12/01/2011 - 07:48:11
----------------------------------------
Per quanto riguarda l'ora, apri il diagramma e cerca nella palette Programming, la voce Timing.
Li trovi tutti i blocchetti che riguardano la gestione degli orari.
----------------------------------------
AUTORE: 2918
DATA :14/01/2011 - 02:34:12
----------------------------------------
Sto procedendo con il progetto, sono "quasi" ad un buon punto..
Non riesco proprio ad uscirne su 2 cose:
- Come faccio ad utilizzare il web publishing? Ho fatto tutto e vedo la pagina solo sul pc in locale.. ovviamente vorrei vederlo in rete...
- Come faccio ad assegnare il valore a una costante, poi impedire che venga modificato fino al giorno dopo MA continuare a utilizzare questo valore?
Ho fatto un case, vado a leggere un valore quando sono le ore 00:00:00 e funziona.
Poi però non come non posso + scrivere sulla costante, non posso nemmeno leggere, la rende quindi inutilizzabile..
Questo per visualizzare il parziale della corrente prodotta...
Pensavo di leggere a mezzanotte il valore assoluto, poi continuare a confrontarlo con il valore nuovo (che man mano aumenta)... solo ke non riesco a farlo..
Altra cosuccia.. è possibile avere tipo 4 schermate che si alternano per far visualizzare i vari grafici? Invece di mettere tutto in 1?
Grazie ancora
----------------------------------------
AUTORE: 2918
DATA :16/01/2011 - 23:32:51
----------------------------------------
Upp :S
Non so se mi sono spiegato male... non riesco a capire come salvare l'ultimo valore rilevato fino mezzanotte per dire ed utilizzarlo il giorno successivo per una sottrazione...
----------------------------------------
AUTORE: 482
DATA :17/01/2011 - 07:28:50
----------------------------------------
Per la questione dell'ultimo valore è solo una questione di programmazione.
Qualche case qua e la e vedrai che ce la fai.
Prima devi capire la logica da seguire, ade esempio:
SE il tempo che manca a mezzanotte E' MINORE UGUALE A 1 secondo, ALLORA quel valore, oltre a salvarlo, mettilo da qualche parte che mi serve dopo.
Detto questo:
1) una volta pubblicato il VI col web publishing, se lo vedi in locale, per vederlo da remoto, ovviamente come indirizzo, non dovrai piu' dargli localhost ecc ecc ma al posto di localhost, mettere l'IP della macchian dove è pubblicato il VI. Ah, ovviamente il vi deve essere in memoria nella macchina che lo pubblica.
2) è la cosa che ti ho spiegato all'inizio giusto? ma tu parli di COSTANTE. Tu se vuoi scrivere un valore programmaticamente, vuol dire che quella non è una costante ma una variabile.Una costante in labview è un oggetto a cui tu dai un valore quando realizzi il VI e il cui valore non puo' essere modificato tramite operazioni di programmazione.
Quindi tu dovrai scrivere quel valore in un INDICATORE oppure in una VARIABILE in scrittura.
----------------------------------------
AUTORE: 2918
DATA :17/01/2011 - 11:13:21
----------------------------------------
per il case... mi scervello ancora... vediamo se esce qualcosa.
Per la costante ho sbagliato io a scrivere, intendevo appunto una variabile disponibile, in scrittura in un solo istante, mentre in lettura sempre..
Ovvero, nel blocca case, come faccio ad avere la stessa variabile sia in true che in false?
Per il web publishing funziona in locale ma, all'interno della stessa rete (quindi escludendo problemi di nat) non riesco a raggiungere l'indirizzo tramite indirizzo e porta della macchina che fa da server...
Grazie
----------------------------------------
AUTORE: 2918
DATA :17/01/2011 - 11:26:27
----------------------------------------
altra cosuccia... c'è un modo per fare il "clear chart" da codice?
----------------------------------------
AUTORE: 2918
DATA :17/01/2011 - 14:31:08
----------------------------------------
Allora.. intanto aggiorno la situazione..
Per la pubblicazione risolto, provato su un sistema "pulito" e funziona..
se volete provare il link è questo:
[url:2hogkxdp]http://nuvoloso.dyndns.tv:8000/Lettura1.0.1.html[/url:2hogkxdp]
----------------------------------------
AUTORE: 482
DATA :17/01/2011 - 15:05:36
----------------------------------------
Bene bene, procediamo
Si, c'e' modo di fare il clear chart programmaticamente.
Devi creare un property node del chart, richiemare la proprità History data e collegargli un array vuoto.
Pe quanto riguard ala variabile "sia in true che in flase" (che immagino voglia dire lettura e scrittura
), basta che dallo stesso controllo/indicatore crei due variabili e su una delle due ci clikki col destro e fai change to read, trasformandola cosi' in una variabile in lettura. Poi la collegherai dove ti serve.
----------------------------------------
AUTORE: 2918
DATA :18/01/2011 - 00:05:40
----------------------------------------
Ancora grazie dei preziosi consigli.....
Sono riuscito quindi sia a salvarmi i dati giornalieri per poi estrarli dal file e calcolare le differenze, sia a "svuotare" il grafico...
Ora per terminare gran parte del lavoro volevo esportare automaticamente il grafico, usando Export Image dal Chart...
Come target mi accetta la parola File nell'enum, mentre alla voce "Type" proprio non gli va giu niente.. ho provato a mettere .emf, .bmp e .eps, in vario ordine, con asterischi davanti, senza punti.. ma niente... mi dice enum conflict...
per questa notte non ne vado fuori ;(
----------------------------------------
AUTORE: 482
DATA :18/01/2011 - 08:12:07
----------------------------------------
vai sul terminale del Type con il puntatore del mouse, clikki col destro e fai CREATE CONSTANT, cosi' sei sicuro che ti crea una costante giusta e dalla quale puoi selezionare solo valori validi.
----------------------------------------
AUTORE: 2918
DATA :23/01/2011 - 12:59:30
----------------------------------------
Grazie ancora dei consigli, come sempre sono stati preziosi
Finalmente questa notte sono riuscito a lavorarci ancora su apportando qualche necessaria modifica.. Rendendo (quasi) tutto immune da black-out (lavorando tutto su file..) a questo punto credo sarebbe stato più veloce utilizzare un database, ma finchè il pc ce la fa a farlo girare senza problemi.. (pII 450Mhz - windows xp))
Dico "quasi" immune perchè se si spegne improvvisamente il pc si ripristinano tutte le letture ad eccezione del grafico che parte da 0...
se volete darci un'occhiata l'indirizzo è questo:
http://nuvoloso.dyndns.tv:8000/SolarTony.html
Per il salvataggio automatico del grafico proprio non gli va.. mi restituisce sempre un errore...
Ora vorrei passare a qualcosa di più legato al funzionamento di labview.. Se io volessi creare un eseguibile (cosa che riesco a fare), come posso fare in modo che il web server parta automaticamente??
L'eseguibile richiede LabView installato o racchiude tutto ciò che gli serve?
Ipotizzando di cambiare pc per l'acquisizione in futuro, è possibile che una volta lanciato il file .exe la prima volta mi chieda la cartella di destinazione dei file??
Concludendo quest'altra domanda... non ho la più pallida idea di come far "cambiare" diverse pagine di labview ad un tempo stabilito... ad esempio 5 secondi mi mostra il grafico di oggi, 5 quello degli ultimi 7 giorni, 5 quello del mese... etc...
E visto che la mia sete di "miglioramento" non basta, mi ero imbattuto in questo contatore:
http://cgi.ebay.it/Contatore-elettrico- ... 888wt_1141
Vorrei fare una cosa simile alla produzione con il consumo, questo contatore mi da in uscita un impulso di circa 20v ogni 0,5wh consumati, posso leggere tramite seriale quell'impulso? O devo implementare magari con un pic (16f84) un contatore? Se riuscissi a beccare l'impulso da rs232 sarebbe un'ottima cosa...
Grazie ancora
Antonio
----------------------------------------
AUTORE: 482
DATA :24/01/2011 - 07:17:14
----------------------------------------
20V sulla seriale te la friggono!
Detto questo, non tisembra di esagerare con le domande??
Per quanto riguard al'eseguibile, sul pc dove lo metterai serve il LabVIEW Run-time Engine, che si puo' scaricare dal sito di NI oppur einglobarlo nell'eseguibile in fase di creazione.
Per il grafico che si resetta, dovresti dal file ricostruire l'array di dati e a inizio programma dare in pasto l'array alla proprietà History del grafico.
Per le pagine, usa un Tab Control e con un timer fai cambiare valore al tab ogni TOT secondi.
----------------------------------------
AUTORE: 2918
DATA :24/01/2011 - 10:13:34
----------------------------------------
Chiedere è lecito... no?
Non esigo risposte, accetto volentieri spunti o consigli... poi uno risp a quello che vuole se vuole.. no?
Cmq i 20v posso portarli a 5, ma si riesce solo con la seriale a interpretare un solo segnale?
----------------------------------------
AUTORE: 482
DATA :24/01/2011 - 12:31:40
----------------------------------------
Anche con adattatori USB seriali eventualmente oppure anche con la parallela.
Il consiglio pero' è di NON COLLEGARE NESSUN TIPO DI TENSIONE AI PIN DELLA SERIALE O DELLA PARALLELA, io ne ho fritte diverse
Limitati ad usare i vari canali come contatti aperti o chiusi.
Tipo, se il segnale è 20V allora cortocircuiti il pin 4 e il pin 7 o robe simili.
cmq di fianco alle "troppe domande" che dicevo prima ci andava una faccina ma mi son dimenticato
----------------------------------------
AUTORE: 2918
DATA :06/04/2011 - 09:56:48
----------------------------------------
Finalmente il mio progetto ha preso piede grazie anche al vostro importante aiuto... Ora ho un bel monitor in salotto con il grafico giornaliero e la rappresentazione istantanea della produzione.
Per concludere il progetto però ho ancora questa necessità: se 'salta' la corrente per un tempo superiore alla capacità dell'UPS parta automaticamente il programma in modalità ciclica, cosa che ad ora mi tocca fare manualmente.
Le soluzioni a questo punto provando sono queste:
1- Mettere tutto il programma in un loop infinito per far si che dopo l'avvio normale non si fermi
2- Creare l'exe in modo da lanciarlo automaticamente all'avvio del pc (che si riaccende gia da solo)
La soluzione a queste 2 cose l'avrei già applicata ma....
Se applico l'ipotesi (1) la rilevazione dei dati istantanei via seriale funziona senza problemi, ma non funziona più nessuna lettura da file (che sono nelle varie sottodirectory di c:\fotovoltaico).
Se applico l'ipotesi (2) funziona la lettura dei dati memorizzati nei vari file ma NON funziona la lettura via seriale istantanea...
Il motivo ovviamente non l'ho ancora capito :S
Inoltre il server web non parte mai automaticamente, ma quello è un problema successivo
Grazie infinite ancora a tutti voi
----------------------------------------
AUTORE: 2918
DATA :12/04/2011 - 16:59:34
----------------------------------------
Uppy..
----------------------------------------
AUTORE: 645
DATA :15/04/2011 - 08:10:01
----------------------------------------
[quote="fisch88":387yrxt4]
1- Mettere tutto il programma in un loop infinito per far si che dopo l'avvio normale non si fermi
Se applico l'ipotesi (1) la rilevazione dei dati istantanei via seriale funziona senza problemi, ma non funziona più nessuna lettura da file (che sono nelle varie sottodirectory di c:\fotovoltaico).
[/quote:387yrxt4]
Mmhh... Hai temporizzato il ciclo?
Non usare mai cicli non temporizzati altrimenti rubi tutte le risorse di sistema e non permetti al pc di lavorare su più attività diverse.
Bisognerebbe vedere come hai implementato la lettura da file: se cerchi di caricare i dati più velocemente di quanto il pc riesca a fare il programma non funziona correttamente.
[quote="fisch88":387yrxt4]
2- Creare l'exe in modo da lanciarlo automaticamente all'avvio del pc (che si riaccende gia da solo)
Se applico l'ipotesi (2) funziona la lettura dei dati memorizzati nei vari file ma NON funziona la lettura via seriale istantanea...
[/quote:387yrxt4]
Usi il blocco per l'inizializzazione della seriale? Imposti la porta seriale in automatico o lasci la possibilità all'utente di impostarla all'inizio del VI?
Lascia la possibilità di impostazione manuale: così facendo puoi provare a modificare le impostazioni mentre il VI è in esecuzione per cercare di risolvere i problemi.
----------------------------------------
================================================================================
Conrollare access con labview
================================================================================
AUTORE: 3091
DATA :11/01/2011 - 15:31:44
----------------------------------------
Allora, ho dato uno sguardo alle discussioni precedeti (2004) ma non è che si capisca molto! e ho scaricato del materiale in pdf di nicola bavarone ma anche lì...
Lo so che ancora sono alle prime armi, ma qualcuno mi sa indicare un modo per accedere ad un db in access tramite labview? So anche che esiste un'applicazione a pagamento della ni ma adesso non ho risorse per acquistarlo.
----------------------------------------
AUTORE: 1078
DATA :12/01/2011 - 07:47:34
----------------------------------------
Ciao Massimo,
Purtroppo non è molto semplice rispondere alla tua domanda. La connessione hai database presuppone che tu abbia nozioni avanzate in LV e conoscenze abbastanza approfondite di cosa sono gli DSN e gli ODBC. Hai queste nozioni?
In parole povere gli ODBC sono dei driver che ti permettono di accedere ai file di database e che devi configurare prima di poter accedere al file Access. Dopo aver creato tramite questi driver la connessione al file Access avrai a disposizione in LV la connessione e tramite Linguaggio SQL potrari accedere a tutte le informazioni contenute nel DB...
Per aiutarti maggiormente ti consiglio guardare questo tutorial:
[url:3cagc99i]http://zone.ni.com/wv/app/doc/p/id/wv-159[/url:3cagc99i]
buon lavoro...
----------------------------------------
AUTORE: 482
DATA :12/01/2011 - 07:50:01
----------------------------------------
QUesto non è necessariamente vero.
Credo che si possa accedere ad Access anche tramite ActiveX...pero' è un po' laborioso.
Il consiglio è sempre quello di affidarti al caro google o al sito di NI e cercare con le parole "labview microsoft access" e vedrai che troverai degli esempi a cui fare riferimento.
----------------------------------------
AUTORE: 3091
DATA :12/01/2011 - 08:29:06
----------------------------------------
Grazie per l'interessamento, è vero non sono molto avanti come programmatore di lv, cmq sono rius cito a configurare OBDC e DSN.
Inoltre sono riuscito a creare il file connection tramite activeX/property node. Anche se non sono ancora riuscito ad impostare "open databse", nel vi connection. Grazie ancora anche del link della ni vedrò subito il materiale. Se cmq qualcuno potrà darmi dritte sarò ben lieto. Labview è un programma veramente affascinante.
----------------------------------------
AUTORE: 3091
DATA :12/01/2011 - 10:17:25
----------------------------------------
Ragazzi sono in dirittura di arrivo. Mi manca l'ultimo elemento cioè il cluster che mi da error out. In fatti come potete vedere dall'allegato mi segnala che non và qualcosa. Just your notice nel command text inserirò il codice sql. Qualcuno mi sa dire cosa c'è che non va nel cluster. Se ci riesco faccio un salto e arrivo tre metri sopra l'universo. Massimo
----------------------------------------
AUTORE: 482
DATA :12/01/2011 - 10:33:19
----------------------------------------
Cos'e' quel cluster??
Cancellalo e poi vai sul terminale e col tasto destro fai Create indicator.
Ti da errore perchè il terminale vuole un Indicator di tipo error cluster, invece tu gli hai collegato un Control di tipo cluster.
----------------------------------------
AUTORE: 3091
DATA :12/01/2011 - 11:19:05
----------------------------------------
Sei un grande!! Tutto ok. Adesso proverò a dargli qualche comando sql e vedrò cosa succede alla "mia creatura".
----------------------------------------
AUTORE: 3091
DATA :12/01/2011 - 11:57:57
----------------------------------------
Ho effettuato il collaudo, ma nonostante non mi dia nessun errore, non visualizzo nulla. Forse manca un vi che mi mkostri il risultato della query.
Gepponline o chiunque voglia aiutarmi, ti allego il file zippato se puotresti controllare se ci manca qlcosa che mi dia l'output della qry. Per intenderci nn vedo il risultato della qry sia in access sia in lv.
Grazie cmq, massimo
----------------------------------------
AUTORE: 482
DATA :12/01/2011 - 13:34:06
----------------------------------------
La voce records affected non fa niente?
converti il dato variant in stringa e prova se funziona.
Prova a dare senno' un occhiata a questo:
http://performancemicrowave.com/sql_LV.html
----------------------------------------
AUTORE: 3091
DATA :13/01/2011 - 11:05:12
----------------------------------------
Ciao Geppo, scusa se approfitto ancora della tua pazienza, ma perchè diavolo nn funziona questo vi?
----------------------------------------
AUTORE: 482
DATA :13/01/2011 - 11:30:49
----------------------------------------
Ci pososno essere svariati motivi per cui non funziona, ad esempio:
1) La query che fai è sbagliata;
2) Affected string non è il parametro che restituisce i record della query.
Prova a salvare nelle due stringhe "connection string" e "command text" il valore che gli passi perchè a me arrivano due stringhe bianche ovviamente.
Per farlo o trasformi i controlli in costanti, oppure col tasto destro sul controllo dopo avergli messo il valore, scegli "Data Operation->make current value default".
Meglio ancora se hai la struttura del dataase da allegare, cosi' evito di simularlo
----------------------------------------
AUTORE: 482
DATA :13/01/2011 - 11:32:36
----------------------------------------
Guarda qui!
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Recordsetaffected non è quello che cerchi ed è un numerico.
Tu hai bisogno il reference ai dati!
----------------------------------------
AUTORE: 3091
DATA :13/01/2011 - 14:23:00
----------------------------------------
Geppo grazie per i tuoi prziosi consigli, il db te lo allegherei volentieri ma ci sono dei dati riservati se puoi dammi un mail tua e ti spedisco il tutto. Intanto do uno sgurdo all'utimo link che mi hai segnalato. Massimo
----------------------------------------
AUTORE: 482
DATA :13/01/2011 - 15:56:26
----------------------------------------
no, niente mail e niente dati, volevo solo capire come era strutturato il database cmq dai un occhio a quel link e da li prova a cercare quello che ti interessa
----------------------------------------
================================================================================
prestazioni
================================================================================
AUTORE: 3461
DATA :14/01/2011 - 11:21:29
----------------------------------------
Buongiorno a tutti
sono nuovo del forum volevo chiedervi un aiuto
devo preparare una macchina con 6 testate di riconoscimento (6 telecamere firewire
che volevo far controllare ad un unico PC molto potente pensavo un 8 core -64 bit con 16 G-RAM
ho parlato un pò con national e mi dicono di aggiornare labview con il 2010 e l'ultimo vision
secondo voi riuscirò a sfruttare le prestazioni della macchina
e mi date qualche consiglio sul sistema operativo
grazie in anticipo Luigi
----------------------------------------
AUTORE: 482
DATA :14/01/2011 - 11:27:14
----------------------------------------
Sei sicuro che ci sia bisogno di tutta sta potenza per 6 telecamere?
Che tipo di controllo/analisi devi fare sulle immagini? a che velocità?
----------------------------------------
AUTORE: 3461
DATA :14/01/2011 - 13:36:43
----------------------------------------
Ciao grazie per la risposta
Sulle immagini vengono fatte varie analisi tra cui trasformata di Fourier dei Filtri ecc..
Sicuramente l'hardware che ho proposto è più che sufficiente per ottenere le prestazioni
però io cerco di capire con quale configurazione hardware/software posso ottenere il massimo delle prestazioni
----------------------------------------
AUTORE: 482
DATA :14/01/2011 - 13:48:08
----------------------------------------
Infatti la mia er apiu' una curiosità al contrario, nel senso che secondo ma hai già delle risorse eccessive per quello che vuoi fare.
Pero' appunto, dipende dalla velocità di eleaborazione che necessiti.
Se mi dici che vuoi fare 10 analisi al secondo è un conto, se vuoi fare 100 analisi al secondo è un altro.
Sicuramente potrai sfruttare il multicore assegnando ad ognuno, l'analisi della singola telecamera, pero' bisogna vedere anche il firewire come gestisce le 6 telecamere e che velocità hanno queste telecamere.
Per dire, io con un pentium 4 2.6 gestisco tranquillamente 2 telecamere Gigaethernet con 15 analisi al secondo facendo delle analisi dimensionali, le telecamere sono da 25 fps.
Pero' appunto, se tu di ste 6 telecamere devi fare 1 analisi al secondo, ti basta anche un pentium 3 con 512 mega di ram per farla.
Tieni presente che a rallentare un sacco i processi ci si mette di mezzo windows e la sua gestioen della grafica, quindi tutto quello che puoi evitare di visualizzare a monitor, evitalo se hai visogno di velocità.
----------------------------------------
AUTORE: 3461
DATA :14/01/2011 - 14:24:56
----------------------------------------
ciao
praticamente le linee lavorano in modo indipendente e ognuna deve fare un riconoscimento al secondo
il mio dubbio è prorio il sistema operativo io ho sempre usato windows XP sicuramente dovrò passare a seven
ma ci sono anche i windows embedded hai qualche esperienza con questi sistemi operativi?
sai se con Labview hanno problemi ? Danno veramente qualcosa in più?
cc grazie per la risposta
----------------------------------------
AUTORE: 482
DATA :14/01/2011 - 15:26:17
----------------------------------------
Xp non ha nessunissimo problema, il seven penso neanche , tranne il fatto che è piu' avido di risorse.
L'embedded semplicemente ha dalla sua che evita di caricare software e servizi non necessari. Questo pero' implica che tu debba essere sicuro che tutte le librerie di win che servono a Labview ci siano.
Per come la vedo io, puoi tranquillamente utilizzare XP e un pc meno performante di quello che hai detto per raggiungere il tuo scopo.
----------------------------------------
================================================================================
Connessione ethernet stampante?
================================================================================
AUTORE: 3428
DATA :16/01/2011 - 17:51:34
----------------------------------------
Salve devo creare in labview una connessione ethernet tra pc e stampante invece che in seriale RS-232.
Apro la connessione (solitamente in localhost) passando appunto IP localhost e la port al "TCP open connection" poi entro un case structure, che in caso di errore uscirà perchè la connessione non è stata stabilita, e in caso di successo, senza errore, riesca a prendere dei dati da un form ed inviarli alla stampante formattati all'interno di un template.
Qualche idea? Grazie
----------------------------------------
AUTORE: 3428
DATA :17/01/2011 - 14:12:22
----------------------------------------
ho scaricato le librerie "Modbus". Come posso utilizzarle, se secondo voi fanno al caso mio?
----------------------------------------
AUTORE: 482
DATA :17/01/2011 - 15:07:17
----------------------------------------
Che c'entra il protocollo modbus con la comunicazioen ethernet tra stampante e PC?
O meglio è una libreria che serve solo nel caso in cui la tua stampante utilizzi un protocollo di comunicazione Modbus, senno' bastano i blocchetti TC-IP già presenti in LabVIEW, pero' devi conoscee il protocollo che usa la stampante.
----------------------------------------
AUTORE: 927
DATA :17/01/2011 - 15:26:09
----------------------------------------
Di solito non si gestisce la comunicazione a basso livello tra programma e stampante, ethernet o seriale che sia. Ci pensa il S.O., tu installi la stampante e lei ti compare tra le stampanti disponibili, e qualunque programma può usarla in modo trasparente. In Labview per stampare puoi usare le funzioni Report Generation, oppure gli Invoke node "Print" della classe VI...
----------------------------------------
AUTORE: 43
DATA :17/01/2011 - 16:13:03
----------------------------------------
[quote="renaso":16x8cjud]Salve devo creare in labview una connessione ethernet tra pc e stampante invece che in seriale RS-232.
Apro la connessione (solitamente in localhost) passando appunto IP localhost e la port al "TCP open connection" poi entro un case structure, che in caso di errore uscirà perchè la connessione non è stata stabilita, e in caso di successo, senza errore, riesca a prendere dei dati da un form ed inviarli alla stampante formattati all'interno di un template.
Qualche idea? Grazie[/quote:16x8cjud]
che stampante è? che modello? usi sequenze di escape particolari?
Sarà una stampante ad aghi che usa i moduli di carta continua, bucherellati sui lati e trascinati dal "trattore"...
per connettere qualla stampante via ethernet devi disporre di un aggeggio "Ethernet to Rs232" o no?
bye
----------------------------------------
AUTORE: 3428
DATA :17/01/2011 - 16:30:24
----------------------------------------
Stampante per etichette adesive, produttore "intermec" modello "PF4i".
La stampante dispone del rs232 ma non ne ho una libera nel pc. Devo trasferire i file dal pc alla stampante via ethernet.
Non è una normale stampante, ho installato i driver per windows, collegata al pc tramite ip e porta, me la riconosce ma anche dal pannello "stampanti e fax" di windows provando a lanciare la stampa di prova non mi funziona, o meglio non stampa ma si vede benissimo che l'ethernet scambia dati dalle spie.
Il protocollo modbus l'ho trovato girando in rete.. ed ho solo chiesto..
Con i blocchetti tcp di labview esistono degli esempi, oltre all'help, che possano aiutarmi o meglio avvicinarmi verso quello che devo fare?
Prima il pc deve aprire la connessione alla stampante poi tramite le info prese dal front panel (compilato dall'utente) lei stamperà secondo un preciso template (fornito tramite un semplice sfoglia/browse) l'etichetta e poi chiude la connessione...
intanto sto andando avanti..
----------------------------------------
AUTORE: 482
DATA :18/01/2011 - 08:21:45
----------------------------------------
Per quanto riguarda l'RS232, puoi usare un convertitore USB/seriale e comunicarci come se fosse in 232 senza problemi.
----------------------------------------
AUTORE: 3428
DATA :18/01/2011 - 16:17:52
----------------------------------------
ho solo l'ethernet libera...
----------------------------------------
================================================================================
Problema con sistema REALTIME
================================================================================
AUTORE: 3464
DATA :17/01/2011 - 08:52:48
----------------------------------------
Salve a tutti,
sono diversi mesi che seguo la vostra comunità e ora mi trovo a dover attingere al sapere dei molti qui presenti.
Ho un sistema real time che viene usato per gestire un macchinario.
Ogni volta che avvio il software devo avviare manualmente anche il VI che deve essere inviato al sistema real time.
Esiste un modo con cui io avvio solo il software principale e il software principale si occupa di inviare il VI al sistema realtime?
Finora l'unica soluzione che ho trovato è compilare il VI e metterlo in avvio automatico sulla macchina realtime ma è una soluzione che vorrei evitare e far sì che avvenga l'auto delivery del file ogni volta visto che devo costantemente modificare il software per esigenze aziendali
ciao
Andrea
----------------------------------------
AUTORE: 645
DATA :18/01/2011 - 13:35:43
----------------------------------------
Cosa intendi esattamente con "inviare il VI al Real Time"?
Perchè tramite VI Server è possibile richiamare VI secondari a partire da un VI principale.
----------------------------------------
AUTORE: 3464
DATA :18/01/2011 - 14:48:16
----------------------------------------
Grazie per la risposta
Allora ho un sistema realtime,
Per far funzionare il software normalmente dal project manager devo prima dare RUN al programma che deve essere inviato al sistema real time.... LabView invia tutti i dati e manda in esecuzione il software sul sistema realtime.
Dopodiche devo avviare il programma nel computer principale che andrà a interfacciarsi tramite network variable all'engine che ho avviato sul sistema realtime.
Io vorrei far si che il programma che avvio sul computer principale faccia in automatico il deploy e il run del programma che deve girare sul sistema RT ma non riesco a trovare un modo per farlo.
----------------------------------------
AUTORE: 645
DATA :19/01/2011 - 13:51:51
----------------------------------------
Non so se si può fare; i programmi per hardware RealTime sono pensati, solitamente, per funzionamento continuo (eventualmente con fermi dovuti allo spegnimento dell'hardware).
La soluzione di creare un VI a parte incaricato di interfacciarsi con il VI operante sul sistema RealTime serve proprio per lasciare il più leggero possibile il VI sul sistema RealTime che lavorerà in continuo.
----------------------------------------
AUTORE: 927
DATA :21/01/2011 - 09:43:49
----------------------------------------
Una cosa che puoi fare è inviare via FTP una nuova versione dell'eseguibile o di eventuali subVI non inclusi nell'eseguibile. Lo puoi fare anche mentre il RT è in esecuzione; poi basta riavviarlo e riparte con la nuova versione. Non c'è bisogno del deploy (purchè l'exe mantenga lo stesso percorso!), però la compilazione si
----------------------------------------
AUTORE: 1078
DATA :26/01/2011 - 09:52:57
----------------------------------------
[quote="Snamprogetti":22fv1o7i]Una cosa che puoi fare è inviare via FTP una nuova versione dell'eseguibile o di eventuali subVI non inclusi nell'eseguibile. Lo puoi fare anche mentre il RT è in esecuzione; poi basta riavviarlo e riparte con la nuova versione. Non c'è bisogno del deploy (purchè l'exe mantenga lo stesso percorso!), però la compilazione si[/quote:22fv1o7i]
Anch'io farei così, oltreutto potresti prepararti un file bacth con i comandi FTP che ti servono a scaricare l'applicazione sul tuo sistema RT, avviare una VI con sessione COMMAND-DOS e richiamare quel file batch... Ti rimarrebbe solo il restart del device, non so se questo si possa fare via VI... ma potrebbe! L'applicazione però dovrebbe essere compilata per RT.
----------------------------------------
AUTORE: 927
DATA :26/01/2011 - 09:57:12
----------------------------------------
Certo che si può, esiste "RT restart target.vi"
----------------------------------------
================================================================================
COME CREARE PANNELLO MULTISCHEDA
================================================================================
AUTORE: 3465
DATA :17/01/2011 - 22:35:42
----------------------------------------
Salve a tutti,
qualcuno di voi sa come si può fare in LV un pannello multischeda?un po' come quando in mozilla si aprono più pagine ma in schede differenti?
Grazie in anticipo
----------------------------------------
AUTORE: 2933
DATA :18/01/2011 - 06:48:53
----------------------------------------
Hai provato con il tab control?
Ciao.
----------------------------------------
AUTORE: 3465
DATA :18/01/2011 - 07:04:02
----------------------------------------
Esatto proprio quello intendevo usare ma nella versione 8 non riesco a trovarlo...è sempre nella control palette?
----------------------------------------
AUTORE: 43
DATA :18/01/2011 - 08:31:15
----------------------------------------
[quote="daniroma83":2w0cru55]Esatto proprio quello intendevo usare ma nella versione 8 non riesco a trovarlo...è sempre nella control palette?[/quote:2w0cru55]
lo trovi in "Modern", "System" e "Classic" palette nel gruppo dei "Containers". Si chiama "Tab Control".
----------------------------------------
AUTORE: 3465
DATA :18/01/2011 - 19:09:14
----------------------------------------
Ti ringrazio, trovato e risolto!
----------------------------------------
================================================================================
Chiamate dinamiche nel 2010
================================================================================
AUTORE: 301
DATA :18/01/2011 - 06:27:41
----------------------------------------
Ciao a tutti e buon anno!
Sono rimasto un po in dietro con i tempi, e sono passato a LV 2010 da poco....
Mi spiegate come viene organizzato l'exe con il 2010?!?Perchè non riesco piu ad aprire un reference ai miei bei vi sotto la radice dell'exe?!?!?!?
Grazie!
----------------------------------------
AUTORE: 487
DATA :18/01/2011 - 07:08:05
----------------------------------------
Ciao,
da quello che ne so' io non è cambiato niente dalla versione 2009 alla 2010.
----------------------------------------
AUTORE: 301
DATA :18/01/2011 - 07:18:42
----------------------------------------
Si, si.....il problema è che sono passato dalla 8.5 alla 2010.....
Scusate ragazzi, ho risolto.
Avevo avuto questo problema poi non ci ho speso più di tanto (causa impegni).
L'unico cambiamento è che ora vengono mantenute anche le folder nella struttura interna dell'exe.....
Scusate, grazie ancora!
----------------------------------------
AUTORE: 1078
DATA :18/01/2011 - 08:01:57
----------------------------------------
Ciao Aris,
Se ho capito bene quello che intendi fare, anch'io tempo fa ho avuto il tuo stesso problema con la versione 2009 di labview. Ti consigli di leggere un mio post nel forum NI con una risposta ufficiale sull'argomento. La tecnica di chiamare e controllare dinamicamente altri exe realizzati con LV è risultata instabile e poco funzionale.
[url:8q8xpkd4]http://forums.ni.com/t5/Forum-Italiano-sui-Prodotti-NI/controllare-da-esterno-file-eseguibile/m-p/1170159#M3095[/url:8q8xpkd4]
Buon lavoro....
----------------------------------------
AUTORE: 482
DATA :18/01/2011 - 08:19:20
----------------------------------------
Non credo fosse quello il problema ma quello di controllare dei vi dinamicamente all'interno di uno stesso exe.
----------------------------------------
AUTORE: 301
DATA :18/01/2011 - 08:32:33
----------------------------------------
Giusto Geppo, problema molto piu "scemo"......mea culpa....
Grazie mille a tutti!
----------------------------------------
================================================================================
Come fare per visualizzare un file in notepad
================================================================================
AUTORE: 3465
DATA :18/01/2011 - 19:18:59
----------------------------------------
Salve a tutti,
devo, da pannello, aprire un file di configurazione e visualizzarlo con blocco note. C'è un modo per farlo in Labview? Ve lo chiedo in quanto sono riuscito solo a leggere o a scrivere alcune voci del file senza però riuscirlo a visualizzare con notepad. C'è un comando o un blocchetto per fare ciò?
grazie
----------------------------------------
AUTORE: 43
DATA :19/01/2011 - 00:09:37
----------------------------------------
bye
----------------------------------------
================================================================================
Perkin Elmer 1700- Difficoltà di interfacciamento
================================================================================
AUTORE: 3476
DATA :20/01/2011 - 14:28:35
----------------------------------------
Salve a tutti!
Dovrei interfacciare uno Spettrometro della Perkin Elmer (modello 1750), ma non risponde in maniera adeguata. Ho cercato di seguire le istruzioni riportate sul manuale, ma probabilmente o sbaglio io ad inserire le stringhe di comando oppure c'è un modo particolare di comunicare. Sto provando da Measurement&Automation perchè non abbiamo a disposizione il software dello strumento per dare un'occhiata (PE GEM o IR Data Manager che non riesco a trovare da nessuna parte). Qualcuno può aiutarmi?
Grazie mile
----------------------------------------
AUTORE: 2514
DATA :21/01/2011 - 13:53:58
----------------------------------------
In che modo comunichi con lo strumento (interfaccia seriale, parallela, quale baudrate)? Hai qualche informazione sul protocollo di comunicazione?
----------------------------------------
AUTORE: 3476
DATA :31/01/2011 - 15:27:10
----------------------------------------
Ciao! Il controller prevede sia GPIB sia RS232. Il mio obiettivo sarebbe quello di utilizzare la prima!
Lo strumento viene visto dal pc, ma non riesco a trovare la chiave giusta per comunicare
Grazie mille!
----------------------------------------
================================================================================
Database Labview e fetching da un recordset
================================================================================
AUTORE: 2514
DATA :21/01/2011 - 13:38:13
----------------------------------------
Ciao a tutti, ho un problema da porvi.
Utilizzo il toolkit database di Labview. Ho sviluppato un'applicazione che si interfaccia con un database mdb. Diciamo che all'interno di questo database ho qualche migliaio di record composti da una ventina di campi. Eseguo una query su questo database (query non complessa, una select di campi con un paio di clausole where e una order by su due campi) e, come mi aspetto, la query viene eseguita in circa un secondo, un tempo accettabile. Il risultato della query, sottoforma di recordset reference, lo passo ad un blocco di fetch_all, che produrrà un array-2D contenente il recordset vero e proprio.
Questa operazione (misurata mettendo dei timer spia nel codice) dura circa 11 secondi (!!).
Se passo invece il recordset reference ad un blocco di save_recordset_to_file viene prodotto, in meno di un secondo, un file di 1,4MB contenente i dati di cui sopra.
Qualcuno di voi è in grado di suggerirmi un sistema meno macchinoso (e più veloce) per gestire i dati che mi escono dalla query?
Grazie mille!
----------------------------------------
AUTORE: 927
DATA :26/01/2011 - 08:58:25
----------------------------------------
Non so, prova a usare "DB tools select data" (anche se al suo interno non fa altro che richiamare una fetch all). Io non ho avuto problemi, anche per query molto grandi. Prova se facendo la query direttamente da Access dà lo stesso problema
----------------------------------------
================================================================================
Gestione mappe geografiche in labview
================================================================================
AUTORE: 3465
DATA :23/01/2011 - 21:16:59
----------------------------------------
Ciao a tutti,
c'è un modo per visualizzare su una mappa, opportunamente caricata, un punto di cui l'utente inserisce i dati di latitudine e longitudine da pannello?
grazie
----------------------------------------
AUTORE: 1078
DATA :24/01/2011 - 07:43:45
----------------------------------------
Ciao daniroma83,
prova a guardare questo post di nicola, potrebbe darti una mano.
[url:3fn7u46j]http://ilvg.it/forum/viewtopic.php?f=32&t=2068&hilit=map+browser[/url:3fn7u46j]
Comunque secondo me il miglior approccio è quello di caricare la mappa in una picture box 2D, poi dovresti studiare un'algoritmo che ti permetta di trasformare le coordinate della mappa in coordinate X, Y per l'immagine.
Proverò anch'io a smanettare un pochino sull'argomento e se mi esce qualcosa di interessante ti farò sapere....
Intanto, buon lavoro.
----------------------------------------
AUTORE: 3465
DATA :24/01/2011 - 23:02:57
----------------------------------------
Ti ringrazio per il suggerimento, proverò a vedere. L'unico mio problema è che non dispongo della connessione ad internet come faceva nicola....
Ma c'è proprio un blocchetto per fare la 2d picture box?non riesco a trovarlo nella versione 7.1
----------------------------------------
AUTORE: 1078
DATA :26/01/2011 - 07:09:11
----------------------------------------
In realtà la 2D picturebox è un controllo, quindi devi cercare nelli controlli per disegnarla nel FP (Dovresti trovarlo nella palete dei controlli dove ci sono i grafici). In tutte le versioni di LV dalla 7 in poi c'è una palete (tra le funzioni grafiche) che ti espone alcune funzioni di conversione delle varie immagini che devi usare opportunamente per caricare un immagine da un file e visualizzarla in una picture-box.
Per vedere come funzionano queste funzioni, ti consiglio di cercare tra gli esempi di LV (Help --> Find Exemple), inserisci nella casella search la parola picture e ti si aprirà un mondo.
Se poi hai qualche problema pratico ti consiglio di postare la parte di codice che ti dà problemi (preferibilmente come immagine, tanti sul forum sono già passati almeno alla versione LV8.2) e ovviamente cercheremo di darti una mano!
Buon lavoro.
----------------------------------------
================================================================================
Unboundle cluster in un ciclo for?
================================================================================
AUTORE: 3428
DATA :28/01/2011 - 11:42:57
----------------------------------------
Buongiorno, vi spiego il mio problema.
Ho un megacluster che contiene sia stringhe che path.
All'inizio del programma passo il path del mio file .ini di configurazione, lo apro e leggo i vari campi da inserire all'interno del mio cluster tramite la funzione "Read Key" messa in for per i vari campi da leggere. Al termine di tutte le letture chiudo il file .ini
Ora ho il mio cluster con i campi riempiti da quello che ha letto nel file.
Quello che devo fare è far in modo che io possa, in esecuzione, cambiare i campi appena letti e messi nel cluster in modo che poi cliccando su un pulsante Save il programma mi scriverà sempre sullo stesso file .ini le modifiche. Questo in modo non debba scrivere ogni volta un nuovo file ini bensì all'apertura avrò sempre gli ultimi campi modificati.
Come faccio 1° a modificare i campi a runtime?
2° a prendere tutti i campi del cluster (uno ad uno con l'unbundle o c'è una scorciatoia scrivendoli tramite un ciclo for?)
Grazie se non mi sono spiegato chiedete pure..
----------------------------------------
AUTORE: 1078
DATA :28/01/2011 - 14:10:32
----------------------------------------
Ciao renaso,
prova a vedere se questo esempietto ti da una mano...
Dopo aver modificato i valori nel controllo Cluster, te li ritrovi a disposizione per il salvataggio. Io ho inserito nel primo controllo path la path del file ini a cui dovrai puntare per fare il salvataggio della configurazione. I controlli all'interno del clusture li puoi discrimare per il loro tipo e anche per la loro label. Sapendo come hai chiamato i vari campi del cluster avrai un controllo più selettivo di quello che ho fatto io. Ti ricordo che se non vuoi fare vedere i cluster all'utente puoi nasconderlo con la funzione "hide control" da pannello frontale o con il property node Visible impostato a false.
buon lavoro.
----------------------------------------
AUTORE: 3428
DATA :28/01/2011 - 16:42:21
----------------------------------------
Grazie Ricky, ancora non l'ho visto perchè penso di esserci riuscito..
Ora non posso, domani mattina provo
Grazie ancora
----------------------------------------
================================================================================
Adattare vi a schermi con risoluzioni diverse
================================================================================
AUTORE: 3465
DATA :30/01/2011 - 22:17:52
----------------------------------------
Passando un progetto da un pc ad un altro, il front panel risulta completamente disallineato rispetto a ciò che avevo fatto sul primo pc poichè i due schermi hanno diversa risoluzione. Ho provato anche a settare il resize automatico da file--->vi properties--->windows size senza però ottenere un risultato soddisfacente. C'è un modo per evitare questo problema quando si passa un progetto da un pc ad un altro?
Vi ringrazio in anticipo.
----------------------------------------
AUTORE: 482
DATA :31/01/2011 - 07:19:34
----------------------------------------
SIccome l'autosize porta con se un sacco di magagne e quasi mai funziona come si vorrebbe, io ho risolto forzando la risoluzione del PC tramite la user32.dll di windows.
Particamenet quando lancio il programma, prima vado a modificare la risoluzione del pc, poi apro il main.
----------------------------------------
AUTORE: 1050
DATA :31/01/2011 - 09:01:17
----------------------------------------
Ciao,
una "scappatoia" è rendere fissa la size (VI properties/window size/minimum window size seleziona "set to current panel siza") del tuo pannello: in tal modo se cambiano risoluzione il tuo pannello si vedrà + piccolo o + grande ma sarà sempre navigabile, mentre con il resize rischi che cambino comunque le proporzioni.
In pratica non c'è una soluzione: conviene segnalare all'utente la risoluzione ottimale.
----------------------------------------
AUTORE: 43
DATA :31/01/2011 - 15:06:06
----------------------------------------
[quote="daniroma83":1ifwrqb7]Passando un progetto da un pc ad un altro, il front panel risulta completamente disallineato rispetto a ciò che avevo fatto sul primo pc poichè i due schermi hanno diversa risoluzione. Ho provato anche a settare il resize automatico da file--->vi properties--->windows size senza però ottenere un risultato soddisfacente. C'è un modo per evitare questo problema quando si passa un progetto da un pc ad un altro?
Vi ringrazio in anticipo.[/quote:1ifwrqb7]
Capiamoci riguardo cosa significa "disallineato".
1)La posizione delle finestre per le quali è previsto il "disegno" dei bordi. Ogni PC può avere per le finestre bordi arrotondati o squadrati o di diverso spessore... Se la tua applicazione prevede che le finestre vengano "accostate" le une alle altre, allora è meglio ripensare alla tua applicazione con un unico VI, il cui FP accolga i FP accostati utilizzando i controlli "subpanel".
2) La risoluzione. inutile far "scalare" il ridisegno dei controlli in funzione dello schermo (funzionalità inutile e pessima). L'applicazione è meglio che sia pensata con una risoluzione fissa. Se usassi una finestra ridimensionabile, ci deve essere almeno "una parte" ridimensionabile (utilizza gli splitter) ed un'altra fissa. Il controllo sul ridimensionamento deve essere fatto alla perfezione xkè non si potrà scendere sotto un certo limite.
3)le font e i controlli che si auto ridimensionano. Evitare di usare font "Application", "Dialog" e "System". Queste font sono prese dai default di windows che possono essere diversi da PC a PC. Cmq sia è possibile utilizzare le stesse Font usate sul PC originale forzando LabVIEW a non usare le font di default di WIN ma impostandole dalle Opzioni di LabVIEW stesso. Lo stesso può valere per l'eseguibile creato: i nomi delle entry da forzare in LabVIEW.ini sono:(vedi http://labviewwiki.org/LabVIEW_configuration_file/Fonts)
appFont, dialogFont, systemFont.
4) NON usare controlli di tipo "system", o della palette system. Sono poco customizzabili e dipendono dalla installazione e configurazione di Win.
bye
----------------------------------------
AUTORE: 3962
DATA :28/08/2012 - 09:31:08
----------------------------------------
[quote="gepponline":15jsn5td]SIccome l'autosize porta con se un sacco di magagne e quasi mai funziona come si vorrebbe, io ho risolto forzando la risoluzione del PC tramite la user32.dll di windows.
Particamenet quando lancio il programma, prima vado a modificare la risoluzione del pc, poi apro il main.[/quote:15jsn5td]
Ciao Gepponline, volevo chiederti come si fa a fare questa modifica ci sono dei comandi in labview?
Grazie
----------------------------------------
AUTORE: 482
DATA :28/08/2012 - 13:12:30
----------------------------------------
Mi ero confuso con un altra funzione.
Per fare questo non ho ustao la user32.dll ma delel funzioni VB.
Dai un occhio a questi due link:
http://zone.ni.com/devzone/cda/epd/p/id/1429
http://zone.ni.com/devzone/cda/epd/p/id/1440
----------------------------------------
================================================================================
scrittura concorrente su DB SQLite
================================================================================
AUTORE: 482
DATA :31/01/2011 - 10:08:14
----------------------------------------
...ma ciao!
ho 3 applicazioni che al momento salvano ognuna su un database sqlite locale.
Adesso il tutto sta per essere messo in rete e quindi sto valutando di utilizzare un database unico su server per salvare tutti i dati.
Il dubbio che ho è che il salvataggio concorrente mi possa causare perdite di dati.
Avevo per questo pensato di creare un applicazione lato server che mi creasse una coda di query, in modo da non avere piu' interrogazioni o scritture simultanee.
DIte che serve questa cosa o SQLite dovrebbe già gestirsi le concorrenze per i fatti suoi?
Avete qualche suggerimento sulla struttura da usare?
----------------------------------------
AUTORE: 927
DATA :07/02/2011 - 09:32:38
----------------------------------------
Se è un database degno di questo nome non perde dati solo perchè ci sono più client connessi... Poi dipende da cosa devono fare
----------------------------------------
AUTORE: 43
DATA :07/02/2011 - 10:15:29
----------------------------------------
[quote="Snamprogetti":2ictsqp3]Se è un database degno di questo nome non perde dati solo perchè ci sono più client connessi... [/quote:2ictsqp3]
Concordo totalmente.
bye
----------------------------------------
AUTORE: 482
DATA :07/02/2011 - 10:43:30
----------------------------------------
e' questa questione dei "client connessi" che mi turba....
nel senso che SQLite è un database su file non ci sono connessioni da gestire, si prende e si scrive su file che è strutturato come un database...pero' essendo io ignorante in materia, non capisco se la dll che gestisc eil file in questione si occupa dei processi concorrenti...
----------------------------------------
AUTORE: 482
DATA :07/02/2011 - 10:50:20
----------------------------------------
Ok sembrerebbe, dal sito ufficiale, che sia tutto gestito come si deve lockando il database quando qualcuno sta scrivendo.
----------------------------------------
AUTORE: 43
DATA :07/02/2011 - 11:04:29
----------------------------------------
[quote="gepponline":1lwepb3f]Ok sembrerebbe, dal sito ufficiale, che sia tutto gestito come si deve lockando il database quando qualcuno sta scrivendo.
[/quote:1lwepb3f]
Ma i "problemi" dei DB sono legati al fatto che si possono rompere gli HD e lo spegnimento improvviso dei medesimi durante la scrittura.
I dati nei DB sono spesso compressi e può essere problematico ricostruire un DB rovinato. Basterebbe chiedere a coloro che usano LabVIEW DSC... (DBMS=Citadel)
Ad ogni problema corrisponde una contromisura:
Il primo problema si tampona usando dischi in RAID .. + o - costosi, + o - performanti.
Il secondo problema si tampona con delle "batterie" UPS.
bye
----------------------------------------
AUTORE: 482
DATA :07/02/2011 - 12:40:53
----------------------------------------
si i, nel mio caso non cisono problemi perchè il database risiederebbe su un server aziendale strasolido e backuppato costantemente
E cmq è un applicazione abbastanza spannometrica, pero' diciamo che perdere una spanna in caso di guasto mi sta bene, perdere una spanna piu' volte al giorno perchè scelgo una procedura di salvataggio sbagliata no.
----------------------------------------
AUTORE: 4
DATA :08/02/2011 - 11:10:57
----------------------------------------
http://www.sqlite.org/faq.html#q5
----------------------------------------
AUTORE: 482
DATA :15/02/2011 - 08:02:51
----------------------------------------
Ho fatto tutte le prove del caso.
E' vero, il sistema di lock è già implementato in SQLite, tuttavia, coem dice anche la sezione FAQ, su sistemi windows e NFS puo' are problemi, INFATTI, ho fatto diverse scritture in automatico, quando mi dava il lock rifacevo la scrittura, ma in alcuni casi, pur non arrivando nessun segnale di errore, i record venivano persi.
Per questo si suggerisce di non usare questi filesystem, oppure di implementare un sistema di locking esterno.
Ovviamente la terza soluzione sarebbe non usare sqlite ma un sistema di DB diverso.
Scartando questa ultima opzione, accetto suggerimenti su come implementare un sistema di locking esterno.
Io stavo valutando una soluzione che comporterebbe l'installazioen del runtime di labview sul server e la realzzazione di un vi di gestione delle query.
Nella pratica, ogni client genera dei file con una certa estensione per ogni query.
Il VI sul server andrebbe a verificare se ci sono questi file ed effettuare le query contenute in questi file.
Per ogni query un file diverso per evitare che il vi sul server vada a leggere le query mentre il client le sta scrivendo.
Mi piacerebbe implementare pero' un sistema che non vada ad installare nulla sul server se non il file del DB.
Solo che ho un po' di incertezze sulla logica da seguire.
Va tenuto conto che i client lavorano in parallelo ma non è detto che tutti siano avviati.
chi mi aiuta?
----------------------------------------
AUTORE: 4
DATA :16/02/2011 - 19:12:33
----------------------------------------
ci avrei scommesso che i lock di windows non funzionavano.
1 se puoi installare sul server la cosa è semplioce fai un ricevitore di query che poi le esegue una alla volta
2 se non puoi installare devi fare arbitrare i client tra peer, loro si "vedono" in rete tra di loro?
se si potresti implementare una sorta di semaforo via rete... già reimplenetare quelli LV funzionano solo dentro una specifica istanza LV e magheggi con VI server li ho già provati e non va quindi devi farlo a mano, non è semplice ma si fa
Ciao
----------------------------------------
AUTORE: 482
DATA :17/02/2011 - 08:07:15
----------------------------------------
Per il momento ho risolto con la soluzione che dicevo:
Ogni client salva un file per ogni query (i file hanno un nome numerico che incrementa di volta in volta)
Il vi sul server apre i file ed esegue le query contenute, dopodichè cancella i file.
In questo modo evito che ci siano sovrapposizioni di letture e scritture di qualsiasi tipo.
Ora ho una piccola curiosità:
Il VI sul server ha un ciclo while con una wait di 5 sec.
Stavo valutando se potesse essere piu' efficiente un event structure con un timeout di 5 sec.
avete informazioni in merito?
----------------------------------------
AUTORE: 927
DATA :17/02/2011 - 08:20:57
----------------------------------------
La wait aspetta sempre 5 secondi, mentre l'event aspetta solo il tempo necessario, con un massimo di 5 secondi... ma non esiste il tipo di evento "c'è un nuovo file". A proposito, spero che tu abbia tenuto conto che due client potrebbero scrivere contemporaneamente due file con lo stesso nome numerico
----------------------------------------
AUTORE: 4
DATA :17/02/2011 - 08:33:54
----------------------------------------
infatti quoto, fare handshake con i file mi fa sempre paura
----------------------------------------
AUTORE: 43
DATA :17/02/2011 - 08:48:21
----------------------------------------
Ci sono alternative...
Si può pensare ad una 'server application' (scritta magari in LabVIEW) che sfrutta la connessione TCP per ricevere le query dai clients ed inoltrare le rispettive risposte, facendosi carico di essere l'unico attore a poter interagire con il DB SQLite.
Lato client, le query si inoltrano su una connessione TCP al server e si attende la risposta sul medesimo canale...
Oppure, dato che si parla di ambiente WINZOZZ xkè non usare le API di winzozz stesso?
[url=http://msdn.microsoft.com/en-us/library/ms686360(v=VS.85).aspx:29lw3vpu]MSDN Library.Windows Development.System Services.Synchronization.Synchronization Reference.Synchronization Functions[/url:29lw3vpu]
bye
----------------------------------------
AUTORE: 482
DATA :17/02/2011 - 09:16:12
----------------------------------------
ehi ehi, calmi, vi state complicando la vita.
Ogni client salva un file che ha un nome si numerico, ma con un identificativo del client e un estensioen definita:
Esempio:
client 1 scrive file come questo:
alfa1.query
alfa2.query
alfa3.query
alfa4.query
client 2 scrive file come questo:
beta1.query
beta2.query
beta3.query
beta4.query
beta5.query
Cosi' nessuno mai andrà a scrivere sullo stesso file.
I client, per sapere il numero da associare al nome file, verificano qual'e' il numero piu' alto con il loro identificativo e gli aggiungono 1. Se non esistono file, automaticamente sarà 1.
L'unico accorgimento da tenere sarà quello di inserire tra le configurazioni di ogni client l'identificativo (che cmq c'e' già perchè ogni client è associato ad una macchina di produzioen diversa)
Per quanto rigarda la event structure invece, so che la wait aspetta sempre mentre la event no (o meglio si perchè non farebbe altro) volevo capire se a livello di occupazione di processore o memoria, le due strutture, seppur funzionalmente uguali, avevano qualche differenza.
Ipotesi:
la wait si mette a contare 1,2,3,4,5 fino a 5000, la event dice non fare niente finche non ti arriverà un segnale di sveglia (che guardacaso arriva dopo 5000).
----------------------------------------
AUTORE: 43
DATA :17/02/2011 - 09:27:18
----------------------------------------
[quote="gepponline":10kp8jq1]ehi ehi, calmi, vi state complicando la vita.
Ogni client salva un file che ha un nome si numerico, ma con un identificativo del client e un estensioen definita:
Esempio:
client 1 scrive file come questo:
alfa1.query
alfa2.query
alfa3.query
alfa4.query
client 2 scrive file come questo:
beta1.query
beta2.query
beta3.query
beta4.query
beta5.query
Cosi' nessuno mai andrà a scrivere sullo stesso file.
I client, per sapere il numero da associare al nome file, verificano qual'e' il numero piu' alto con il loro identificativo e gli aggiungono 1. Se non esistono file, automaticamente sarà 1.
L'unico accorgimento da tenere sarà quello di inserire tra le configurazioni di ogni client l'identificativo (che cmq c'e' già perchè ogni client è associato ad una macchina di produzioen diversa)
Per quanto rigarda la event structure invece, so che la wait aspetta sempre mentre la event no (o meglio si perchè non farebbe altro) volevo capire se a livello di occupazione di processore o memoria, le due strutture, seppur funzionalmente uguali, avevano qualche differenza.
Ipotesi:
la wait si mette a contare 1,2,3,4,5 fino a 5000, la event dice non fare niente finche non ti arriverà un segnale di sveglia (che guardacaso arriva dopo 5000).[/quote:10kp8jq1]
Geppo, è tutto OK!!
La syncronizzazione usando file l'ho sperimentata anch'io, + volte, e so bene che funziona.
Evitare la lettura/scrittura di file ha il solo scopo di aumentare le prestazioni nello scambio di informazioni fra client e server, nel nostro caso fra applicazioni concorrenti e DB
se il nome SQLite avesse il significato di essere "leggero", utilizzare letture/scrittura file di query lo renderebbe sicuramente + pesante...
E' tutto un problema di scelte, un po' filosofiche. Tu cmq farai come meglio credi e ritieni opportuno, no?
Tutto questo è solo "pour parler"
bye
----------------------------------------
AUTORE: 482
DATA :17/02/2011 - 09:34:30
----------------------------------------
sisi è che mi era preso il panico sentendo parlare di tcp, canali, API ecc
...diciamo che SQLite per me ha piu' il significato di FREE e "copia e incolla" visto che non ho esigenze prestazionali particolarmente critiche
----------------------------------------
AUTORE: 645
DATA :02/03/2011 - 11:49:11
----------------------------------------
Riguardo SQLite ho trovato http://sine.ni.com/nips/cds/view/p/lang/en/nid/209317
----------------------------------------
AUTORE: 482
DATA :03/03/2011 - 07:30:49
----------------------------------------
Io uso questo toolkit.
Un progetto partito sul forum di LAVAG.org.
http://www.labview-tools.com/software/sqlite-api/
----------------------------------------
================================================================================
Labview PID
================================================================================
AUTORE: 1853
DATA :01/02/2011 - 11:06:37
----------------------------------------
Ciao a tutti,
è veramente da tanto che non scrivo su questo forum, e spero che possiate aiutarmi con un problema direi alquanto banale.
Ho in uso nel mio laboratorio Labview 2009 ma non riesco in nessun modo ad installare "LabVIEW 2009 PID and Fuzzy Logic Toolkit". Sapete dirmi dove posso trovarlo? ho cercato in entrambi i DVD di installazione e in device & drivers...ma nulla...
grazie
Luigi
----------------------------------------
AUTORE: 1853
DATA :02/02/2011 - 14:06:01
----------------------------------------
nessuno ha idee a riguardo?
----------------------------------------
AUTORE: 482
DATA :03/02/2011 - 07:15:58
----------------------------------------
Se possiedi la versione professional di Labview, dovrebbe essere nella lista di cose da installare.
Mi sorge il dubbio che potrebbe essere stato associato alla sezione Motion o robe simili...
----------------------------------------
AUTORE: 645
DATA :16/02/2011 - 00:01:24
----------------------------------------
Fa parte del modulo Control; trovi i PID e la logica Fuzzy nei moduli dedicati al controllo e alla simulazione.
Non mi riferisco al CIT (Control Interface Toolkit) ma al Control Design and Simulation.
----------------------------------------
AUTORE: 301
DATA :25/02/2011 - 14:10:15
----------------------------------------
Credo che dalla versione 2009 l'attivazione dei toolkits venga gestita dalla licenza rilasciata, ergo il PID è installato ma la licenza non l'ha attivato.
----------------------------------------
================================================================================
lettura/scrittura su file .ini
================================================================================
AUTORE: 3428
DATA :02/02/2011 - 09:19:23
----------------------------------------
Salve, devo leggere e scrivere su un file di configurazione .ini
Ho un cluster composto da molti elementi che nel front non è altro che una form con molti campi (impostato come control). Ho creato 2 subvi, uno per la lettura e l'altro per la scrittura.
All'avvio del vi main la prima cosa che fa è sfruttare il subvi di lettura in una stacked per aggiornare i valori del cluster con i valori che legge nel .ini in modo che all'inizializzazione non ci siano valori di dafault o vuoti bensì gli ultimi utilizzati/salvati nel file di configurazione.
Dopo averli letti e quindi aggiornato ogni campo del cluster (questo funziona) entro in un ciclo while dove ho 2 bottoni e 2 case. Aggiorna e Salva sono i bottoni.
-Nel caso in cui clicco su aggiorna, l'esecuzione non fa altro che entrare nel case del bottone e rieseguire la lettura scrivendo il tutto nella variabile locale del cluster messa in scrittura (utile nel caso in cui voglia editare un campo accorgendomi poi che invece è il campo sbagliato, tramite questo bottone riaggiorno tutti i campi al file di configurazione).
-Nel caso in cui clicchi su salva, l'esecuzione entra nel case del bottone dove all'interno trova il subvi di salvataggio, che prende in input la variabile locale del cluster controllo messa in lettura e riscrive quello che trova in ogni campo nel file ini sempre tramite le section e le key del file di conf.
Il salvataggio non funziona! Qualche idea sul tipo di errore che potrebbe esserci? il debug mi fa vedere che funziona tutto alla perfezione, non escono errori ma in scrittura non scrive!
Ogni subvi apre e chiude il file al suo interno prendendo in input solamente il path (che è sempre lo stesso ovviamente) quinidi non è un problema di refnum.
Quindi dopo la prima lettura di inizializzazione l'esecuzione attende che io prema aggiorna o salva e non esce mai dal ciclo while (ovviamente se non clicco stop, il controllo associato)
Grazie dell'aiuto
Qualche idea del perchè non vada la scrittura su file?
----------------------------------------
AUTORE: 660
DATA :02/02/2011 - 13:14:00
----------------------------------------
non è che il file è di sola lettura?
hai collegato il terminale error out? E non fornisce indicazioni in merito?
se alleghi un vi di esempio penso che qualcuno possa aiutarti anche meglio di così.
ciao
Max
----------------------------------------
AUTORE: 3428
DATA :02/02/2011 - 15:03:55
----------------------------------------
Risolto, non funzionava con i vi creati da me... con quelli creati tramite edit->create sub VI si... gioco di riferimenti ecc.. ecco perchè non funzionava.. ora tutto ok.
per la cronaca: il file non è di sola lettura e il cluster di errore l'avevo collegato ma non mi dava nessun errore...
Grazie comunque Max
----------------------------------------
================================================================================
sviluppo applicazioni e SO
================================================================================
AUTORE: 3504
DATA :02/02/2011 - 21:37:13
----------------------------------------
Buonasera a tutti, sono un nuovo iscritto che vorrebbe provare LabView per sviluppare applicazioni per gestione strumenti di test. Vorrei quindi approfittare della vostra esperienza per avere qualche informazione per me essenziale. Innazi tutto, vorrei capire se è possibile, ad esempio, sviluppare in windows per poi installare in Linux. Che mi dite?
Grazie
----------------------------------------
AUTORE: 482
DATA :03/02/2011 - 07:20:11
----------------------------------------
..ma ciao!
ti dico subito che non è possibile. O MEGLIO:
I sorgenti che svilupperai saranno compatibili tra i due S.O. a meno che tu non utilizzi qualche addon o toolkit che esiste solo per windows, tuttavia, quando avrai bisogno di un eseguibile per windows, dovrai crearlo in windows e quando l'avrai bisogno per linux, dovrai crearlo in linux.
Se invece non devi creare eseguibili ma lavorerai sempre da ambiente di sviluppo, il problema non sussiste.
Diciamo che i grossi inconvenienti sono:
1) Per linux, molte cose non sono state sviluppate, come ad esempio le librerie vision,motion ecc ecc
2) La gestioen dell'hardware non è semplice come in windows perchè non c'e' il MAX
3) Se vuoi operare su due S.O. diversi, dovrai avere due differenti licenze.
----------------------------------------
================================================================================
Creazione tabella e inserimento in colonne da file
================================================================================
AUTORE: 3428
DATA :03/02/2011 - 11:05:08
----------------------------------------
Salve, devo visualizzare e quindi anche creare una tabella partendo da dei file txt.
Devo prendere un file dal pc, leggerne il nome, non il contenuto, dividere il nome in 3 parti. La prima parte è quella che viene prima di un certo carattere, la seconda quella che viene dopo il certo carattere o prima del secondo carattere e l'ultima parte sarà la parte finale del nome.
Per esempio il nome del file è "000+111-222.txt" dovrei dividerlo in 3 parti di cui la prima deve tirarmi fuori dal nome 000 e metterlo in una colonna A, la seconda deve prendermi 111 e metterlo nella colonna B e l'ultima mi deve tirar fuori solo 222 e metterlo in C.
1) Dovrei fare questo per tutti i file che si trovano in una cartella e nelle relative subcartelle senza conoscerne il numero. Come faccio a selezionarli tutti a prescindere?
2) Come leggo solo il nome del file e come lo spezzo?
3) Come creo la tabella?
Lo so, non è piccola come richiesta, ma mi sto avvicinando ora a labview. Ogni consiglio è benaccetto!
Grazie
----------------------------------------
AUTORE: 2550
DATA :03/02/2011 - 11:31:09
----------------------------------------
Ciao.
Per avere una lista dei file presenti in una cartella, puoi usare il blocco Recursive file list che trovi nella palette Programming->File I/O->Advanced File function palette.
Ti restituisce in uscita un arrai contenente i percorsi completi di tutti i file. Per estrarre solo il nome del file puoi usare la funzione strip path (Programming->File I/O) che accetta in ingresso il percorso del file e in uscita ti fornisce una stringa contenente il solo nome con l'estensione. Sulla stringa puoi lavorare con la funzione Match Pattern (Programming->String) per separare i vari valori dal nome del file.
----------------------------------------
AUTORE: 3428
DATA :03/02/2011 - 13:06:46
----------------------------------------
Grazie mille, mi metto subito a lavoro!
Per la creazione della tabella con le relative colonne?
----------------------------------------
AUTORE: 2550
DATA :03/02/2011 - 15:37:02
----------------------------------------
Ti ho realizzato un piccolo esempio.
Se ho capito bene quello di cui hai bisogno questo piccolo Vi dovrebbe fare al caso tuo.
La spiegazione dettagliata è nel block diagram.
Ciao
DVD
----------------------------------------
AUTORE: 3428
DATA :03/02/2011 - 16:29:42
----------------------------------------
Grazie ancora una volta, l'esempio è perfetto... peccato che l'avevo già fatto, grazie alla tua prima risposta!!!
Il mio problema nella creazione della tabella non è nell'inserire i dati, bensi nell'inserne ognuno nel suo posto, o meglio colonna, ovviamente nella stessa riga...
Non l'ho mai fatto e ora sto provando mille modi diversi ma senza ancora riuscirci...
Per ora ho creato un cluster con 3 stringhe vuote da usare come cluster di ingresso e all'interno del ciclo for faccio il boundle by name di ogni pezzo che mi tiro fuori tramite il math pattern. Le tre stringhe indicatori sono chiamate rispettivamente A per la prima parte, B per la seconda e C per l'ultima.
Faccio uscire il cluster dal ciclo for e lo metto in un build array che ovviamente mi crea un array di cluster con ognuno il mio nome del file diviso in 3.
Ora arrivo alla parte dove mi sono bloccato da un pezzo. Mettere ogni cluster all'interno della tabella, dove ogni riga deve essere lo stesso file. Ogni riga e spezzata in 3 dove le 3 colonne sono A, B e C. Credo che con il boundle stia andando meglio ma ancora sono fermo..
Ora sto provando a creare una tabella all'interno del cluster per poi rifare l'unboundle... ma non ci spero
comunque grazie mille, dovresti fare il prof!
----------------------------------------
AUTORE: 2550
DATA :03/02/2011 - 16:40:16
----------------------------------------
Non so se ho ben capito cosa tu stia facendo.
Comunque la tabella non è nient'altro che un array bidimensionale nel quale puoi aggiungere e sostiuire i dati nelle celle utilizzando il blocchetto Inserto into array e o il replace array subset. Basta dargli come indice le coordinate di destinazione (riga e colonna). Potresti semplicemente fare l'unbundle del cluster e inserire i 3 elementi nell'array.
Se posti il tuo vi ti posso essere più di aiuto!
Ciao
DVD
----------------------------------------
AUTORE: 3428
DATA :03/02/2011 - 16:55:49
----------------------------------------
ti mando un Messaggio privato
----------------------------------------
================================================================================
problema sincronismo comunicazione seriale labview
================================================================================
AUTORE: 3506
DATA :04/02/2011 - 20:46:54
----------------------------------------
ciao a tutti..sono nuovo del forum e sto iniziando da qualche tempo a programmare con labview...ma purtroppo incontro già i primi intoppi..
VI semplice..in fondo alla pagina allego tutto..
ho rilevato la posizione di un potenziometro e visualizzato su un grafico...tutto funziona ma ho un problema: ogni tot cicli di lettura labview mi salta di solito il primo decimale della stringa..ho provato a lavorare su buffer, controllo flusso e tempi di ritardo ma nulla...come hardware utilizzo arduino e il codice sorgente è il seguente:
void setup() {
Serial.begin(150000);
}
void loop() {
int sensorValue = analogRead(A0);
Serial.println(sensorValue, DEC);
delay(10);
}
ho cambiato sia il rate baud sia il delay del loop manon si risolve...
dove sbaglio?
vi ringrazio in anticipo
[url:3sgp1tnr]http://rapidshare.com/files/446215445/probl.1.bmp[/url:3sgp1tnr]
[url:3sgp1tnr]http://rapidshare.com/files/446215464/probl.bd.bmp[/url:3sgp1tnr]
----------------------------------------
AUTORE: 482
DATA :07/02/2011 - 07:23:51
----------------------------------------
Non sarebbe meglio implementare un protocollo che preveda una richiesta e magari faccia un controllo che tutti i dati siano stati ricevuti?
tu cosi' ogni 10 ms scrivi sulla seriale il tuo valore decimale giusto?
il parametro 150000 del serial.begin cosa rappresenta?
Con labview leggi il valore svuoando il buffer da quello che c'e' scritto. Ma se nello stesso momento, arduino sta scrivendo qualcosa, si creano problemi.
quindi proverei per tentativi.
Innanzitutto con labview a leggere una volta ogni TANTO tempo per vedere s etutti i dati sono completi.
Poi una volta verificato questo proverei, come ti dicevo, a fare in modo che Arduino non scriva nel buffer finchè non gli viene chiesto.
----------------------------------------
AUTORE: 43
DATA :07/02/2011 - 08:53:46
----------------------------------------
[quote="Samuele":1tn9qo9k]...VI semplice..in fondo alla pagina allego tutto..
ho rilevato la posizione di un potenziometro e visualizzato su un grafico...tutto funziona ma ho un problema: ogni tot cicli di lettura labview mi salta di solito il primo decimale della stringa..ho provato a lavorare su buffer, controllo flusso e tempi di ritardo ma nulla...come hardware utilizzo arduino e il codice sorgente è il seguente:
void setup() {
Serial.begin(150000);
}
void loop() {
int sensorValue = analogRead(A0);
Serial.println(sensorValue, DEC);
delay(10);
}
ho cambiato sia il rate baud sia il delay del loop manon si risolve...
dove sbaglio?
vi ringrazio in anticipo[/quote:1tn9qo9k]
Non si programma così.
il codice visualizzato è fatto per una sola acquisizione (non ci sono loop) e dall' immagine del FP (Front Panel) si nota che è stato premuto il tasto "Run Continuosly"
Ad ogni lettura viene re-inizializzata la porta seriale e dimensionato il buffer. Poi viene fatta una sola lettura.
Si deve inizializzare una sola volta la seriale (non serve inizializzare i buffer, va bene il default) e mettere in un loop la lettura da seriale.
La lettura può essere fatta + lentamente dell'invio dei dati (ogni 10 msec) per cui ad ogni lettura si deve "parsare" la stringa cercando inizio e fine dato, lasciato un po' di tempo all'interfaccia HMI, xkè nel loop dovrà essere rilevata (polling) la pressione di un tasto booleano da posizionare nel FP che permetta l'uscita dal loop e la chiusura della porta seriale. Porta seriale che è una risorsa da rilasciare al S.O.
bye
----------------------------------------
================================================================================
Recuperare vecchi VIs ?
================================================================================
AUTORE: 3507
DATA :06/02/2011 - 23:48:23
----------------------------------------
Salve a tutti.
C'è qualche speranza di recuperare/convertire vecchi VIs realizzati con la versione LabView 2.0 ?
...lo so che stiamo parlando di quasi-preistoria (1996!) ma era un lavoro interessante (controllo impianto riciclaggio plastiche) che ha funzionato ininterrottamente per 4 anni e che mi dispiacerebbe perdere.
Grazie per ogni consiglio.
----------------------------------------
AUTORE: 482
DATA :07/02/2011 - 07:31:31
----------------------------------------
Hai provato a chiedere in National?
----------------------------------------
AUTORE: 43
DATA :07/02/2011 - 08:10:44
----------------------------------------
http://zone.ni.com/devzone/cda/tut/p/id/8387
bye
----------------------------------------
AUTORE: 3507
DATA :07/02/2011 - 11:31:26
----------------------------------------
Grazie delle risposte.
L'unico problema è che non riesco a trovare sul sito NI dove scaricare od acquistare il "LabVIEW conversion kit" ...
sentirò cosa mi dicono in NI.
----------------------------------------
AUTORE: 3507
DATA :07/02/2011 - 11:41:35
----------------------------------------
Scusate, mi era sfuggita la parte che dice che non è disponibile online.
----------------------------------------
================================================================================
Con windows7 non funziona...
================================================================================
AUTORE: 2435
DATA :07/02/2011 - 11:21:09
----------------------------------------
Ciao a tutti
il seguente comando funzionanete con xp non va in windows 7.
avete una soluzione?
Grazie e ciao
----------------------------------------
AUTORE: 927
DATA :08/02/2011 - 08:47:12
----------------------------------------
Per aprire un file non è necessario "call", basta cmd /c nomefile. Su XP è indifferente, ma prova a toglierlo, non si sa mai...
----------------------------------------
AUTORE: 2435
DATA :11/02/2011 - 11:19:58
----------------------------------------
ok,grazie farò una prova appena possibile
----------------------------------------
================================================================================
Selezionare parti di tabella
================================================================================
AUTORE: 3428
DATA :07/02/2011 - 11:40:38
----------------------------------------
Salve, ho una tabella con dei valori.
Ad ogni riga è associato un file di testo del pc diviso in 4 informazioni, messe nelle colonne.
Non l'ho mai fatto, mi servirebbe un metodo per poter selezionare un'intera riga e cliccando su un bottone mi deve far uscire le informazioni del relativo file selezionato.
Questo come prima opzione, come seconda devo poter selezionare più righe, anche non contigue, tenendo premuto il solito ctrl per più selezioni. Cliccando il pulsante le informazioni dei file mi escono e poi le gestirò io... Come ultimo metodo, essendo una delle informazioni contenute nelle colonne, dovrei poter, tramite una form di inserimento, inserire una data e far uscire tutte le info relative a tutti i file la quale data è inferiore a quella immessa.
Questo solo a scopo informativo.
Quello che vorrei sapere in primis è come poter selezionare e far uscire informazioni dalle parti selezionate alla pressione del bottone (quindi sarebbe meglio che al click del mouse in una riga questa venga selezionata interamente, tutte e 4 le colonne e non solo la cella che seleziono come mi succede ora). Qualsiasi dritta è benaccetta!! (credo che dovrò usare i property node giusto?)
Grazie
----------------------------------------
AUTORE: 2550
DATA :07/02/2011 - 17:34:09
----------------------------------------
Ciao!
Facciamo una cosa per volta.
Per selezionare un gruppo di celle devi il property node Selection Start, con cui indichi la cella da cui parte la selezione, e il property Selection Size per definirne la dimensione. Puoi anche colorare lo sfondo delle celle selezionate per renderle più evidenti utilizzando la property Active cell -> Cell background color dopo aver attivato la cella con la property active cell->active cell.
Per estrarre poi le informazione lo fai con il blocco index array, a cui passi la tabella e l'indice della cella selezionata per farti restituire il valore.
ciao
DVD
----------------------------------------
AUTORE: 3428
DATA :08/02/2011 - 07:35:38
----------------------------------------
ok mi metto all'opera provando quello che mi hai appena consigliato.
Come al solito grazie dvd.. per qualsiasi cosa riaggiorno il post
----------------------------------------
================================================================================
Mandare segnali TTL da 5V
================================================================================
AUTORE: 3051
DATA :08/02/2011 - 15:51:07
----------------------------------------
Salve a tutti,
spero che quello che sto per chiedere sia pertinente...
Avrei intenzione di acquistare un portalente motorizzato, pe inserire e togliere una lente dall'esperimento automaticamente. Sui datasheet del montaggio è scritto che i trigger per far muovere il montaggio è un segnale da 5V in logica TTL.
Ora la domanda: quale sarebbe il modo più semplice (ed economico possibile) per implementare questa funzione?
Intendo sia a livello software, nel senso che vorrei che tutto fosse comandato da LABVIEW, sia hardware, perchè al momento io avrei un pc e questo montaggio che deve ricevere il segnale, ma non so cosa deve entrare nel mezzo (immagino un qualche tipo di power supply
)..
Grazie a tutti
Ciao
----------------------------------------
AUTORE: 3051
DATA :08/02/2011 - 16:37:56
----------------------------------------
Dopo aver chiesto in giro ho scoperto che si può fare direttamente da un aporta parallela, e con questa informazione in più ho trovato dei topic che ne parlano in questo stesso forum.
----------------------------------------
AUTORE: 482
DATA :09/02/2011 - 07:15:45
----------------------------------------
Se il segnale è uno solo, lo puoi fare anche con la porta seriale.
Ti dico questo erchè la parallela è piu' difficile da trovare se hai un notebook.
In piu' i singoli pin di una seriale possono essere pilotati anche se si tratta di un adattatore USB/SERIALE, mentre se haio un adattatore USB/PARALLELA difficilmente potrai farlo.
----------------------------------------
================================================================================
Aprire e modificare file da un pc all'altro
================================================================================
AUTORE: 3465
DATA :09/02/2011 - 22:00:56
----------------------------------------
Ciao,
dovrei creare un vi (residente su un pc) che apra e/o modifichi un file (di configurazione) che si trova su un altro pc. Entrambi i pc sono collegati via LAN. Secondo voi qual è il modo più intelligente per fare ciò?
P.S: sul pc dove si trova il file da modificare non c'è labview quindi niente web server o pannelli remoti.
Grazie per i suggerimenti.
----------------------------------------
AUTORE: 482
DATA :10/02/2011 - 07:15:49
----------------------------------------
Risorse condivise.
Condividi la cartella tra i due pc e poi dai il percorso mappato del file.
----------------------------------------
================================================================================
EthernetIP NI Labs Release 1.0.6
================================================================================
AUTORE: 314
DATA :09/02/2011 - 22:13:26
----------------------------------------
Salve a tutti,
ho scaricato i driver : EthernetIP NI Labs Release 1.0.6 al seguente link : http://decibel.ni.com/content/docs/DOC-4065
Ho labview 8.0 e ho installato i driver lanciando il file di setup. Installazione completata con successo
Il problema è che nella barra degli strumenti non riesco a trovare i vi tag read etcc che compaioni nel link di sopra.
Qualcuno sa dirmi come devo fare? Se devo installare o fare altro perchè non riesco a trovare i vi in questione.
Grazie mille
----------------------------------------
================================================================================
Strumento non riconosce i comandi numerici
================================================================================
AUTORE: 3051
DATA :10/02/2011 - 16:16:42
----------------------------------------
Salve a tutti,
ho un nuovo problema con un generatore di tensione che vorrei controllare in remoto tramite labview.
Vi dico subito che è collegato al pc tramite cavo USB e per ho dovuto installare i VCP drivers per un FT2232C (non ho quasi idea di cosa significhi l'ultima cosa che ho scritto, ma magari per qualcuno può avere senso...abbiate pazienza...).
I possibili comandi che si possono inviare al generatore sono composti da una lettera + eventualmente un parametro numerico.
Esempio: Tornare al controllo locale: "D"
Spegnere/accendere l'illuminazione dello schermo LCD: "B0" o "B1"
Il problema specifico sta nel fatto che dal pc, tramite una routine labview mutuata da un altro strumento in cui invio comandi sotto forma di stringhe di testo tramite VISA, riesco ad inviare i comandi che non prevedono numeri, mentre non riconosce i numeri. La risposta dello strumento può essere VA=valid argument (tutto ok), BA=bad argument (comando ok ma parametro errato) o BC=bad command (tutto sbagliato).
Continuando l'esempio, nel mio programma Labview "D" l'accetta e lo esegue, con "B0" e "B1" risponde BA e con "B 0", "B01", etcetc risponde BC...
Morale della favola: pare che stia fraintendendo i numeri.
Quelli della Hamamatsu interpellati mi hanno risposto questa cosa un po' sibillina:
"According to your message, cust is misunderstanding the input of figure
following control command.
LCD contract:
When inputting C9, the control command should be "C"+Chr(9)+Chr(13).
Since "*" means character string. when inputting "C9", the computer
recognize it as "C"+ Chr(57) or Chr(&H39).
And Chr(13) is Carriage Return(delimiter)."
Credo di aver più o meno compreso il problema, ma non ho capito quale sarebbe la soluzione...qualcuno ha un'idea?
Grazie e scusate se sono stato così prolisso...
P.S. Mi ero dimenticato di dire che il produttore fornisce un programmino EXE per il controllo in remoto da un interfaccia grafica, e funziona perfettamente. Solo che non credo di poter integrare quello in una routine Labview, no?
----------------------------------------
AUTORE: 482
DATA :11/02/2011 - 07:32:34
----------------------------------------
S enon ho capito male, ci sono due problemi in quello che invii allo strumento:
1) Alla fine del comando deve esserci un carriage return (numero 13 nella tabella ascii). C'e' la costante equivalente in labview, oppure premi un invio alla fine della stringa.
2) Non ho capito bene quella cosa dell'asterisco, ma sembra che lo strumento interpreti non il numero inteso come carattere ma come numero equivalente della tabella ascii, quindi il carattere 9, corrisponde al 57 nella tabella ascii.
Quindi tu per dare il comando B0, dovrestiscrivere B, poi premere alt+0 (lo zero del tastierino numerico), poi invio
----------------------------------------
AUTORE: 43
DATA :11/02/2011 - 09:45:31
----------------------------------------
[attachment=0:heo75pt0]stringahex.JPG[/attachment:heo75pt0]bye
----------------------------------------
AUTORE: 3051
DATA :11/02/2011 - 11:58:55
----------------------------------------
Intanto vi ringrazio per l'interessamento....
Per quanto riguarda il Carriage Return l'avevo già messo, infatti i comandi che non prevedono numeri li accetta.
Per quanto riguarda il modo di scrivere i numeri non ho capito in realtà cosa dovrei fare. Ho guardato il jpg e ho capito che una stringa si può rappresentare in più modi (ora so una cosa nuova!!
) ma in realtà non sono sicuro di aver capito come dovrei usare questa funzione: ho provato a cambiare il tipo di stringa e poi inviare lo stesso comando e non l'ha mai riconosciuta...
Vi vorrei allegare il programma LABVIEW, così magari si capisce meglio...tenete presente che era il programma nato per comunicare via RS232 con un altro strumento, e io l'ho appena riadattato per lo strumento attuale, togliendo qualcosina che era specifico per lo strumento originario.
----------------------------------------
AUTORE: 3051
DATA :15/02/2011 - 17:58:20
----------------------------------------
Scusate se insisto ma...ho fatto una domanda veramente ridicola o nessuno ha un'idea della soluzione?
----------------------------------------
AUTORE: 482
DATA :16/02/2011 - 07:22:24
----------------------------------------
non è che devi cambiare il tipo di stringa!
Deviscrivere una stringa diversa.
il comando C9, non corrisponde alla scritta
"C9"
ma alla scritta
"Câ—‹
"
dove quel simbolo di fianco alla C è il carattere N° 9 della tabella ascii (lo ottieni premendo contemporaneamente alt e 9 sul tastierino numerico)
Visto in codice "\" equivale a:
C\09\
----------------------------------------
AUTORE: 3051
DATA :17/02/2011 - 10:09:04
----------------------------------------
Scusa se insisto ma ancora non ho capito PERCHE' in questo caso il carattere "9" dovrebbe venir interpretato come il carattere ascii il cui codice è 9...
Ho visto che la funzione "TO UPPERCASE" analizza quello che c'è in una stringa e (dice...) che i numeri vengono interpretati come codici ascii; ma anche levando la funzione la comunicazione continua a non funzionare!
E se invece di c9 io scrivo c57 (57 è il codice ascii del "9") mi risponde BAD ARGUMENT, immagino perchè ho messo troppe cifre nel paramentro numerico che deve essere compreso fra 0 e 9.
Oltretutto se metto un indicatore di stringa per VEDERE cosa sto componendo, mi restituisce la stringa corretta che vorrei inviare.
Morale: non ho capito in che punto si potrebbe generare questo errore e soprattutto come fare a risolverlo!!!
----------------------------------------
AUTORE: 482
DATA :17/02/2011 - 11:23:50
----------------------------------------
TU NON STAI ASCOLTANDO (LEGGENDO)!!!!
"c" e "C" non sono la stessa cosa.
cosi' come
\09 non è uguale a 9
9 è uguale a \57 ma non a 57.
quando metto la "\" davanti, intendo visualizzato in modalità \.
Il tuo strumento vuole che gli venga mandato un comando ad es B9 che è:
B= la lettera B maiuscola che equivale a B (in formato standard e in formato \) oppure a chr &h42 (esadecimale) o a chr 66 (tabella ascii).
HORIZONTAL TAB= chr 09 (tabella ascii e esadecimale).
CARRIAGE RETURN= chr13 (tabella ascii) o \
(formato \) o chr 0D (esadecimale)
Quidni per comodità, scegli un modo di visualizzare questi caratteri e tieni sempre quelli, senno' farai confusione tra le cifre e le loro rappresenazioni.
per riprodurlo in ascii dovrai fare:
(alt+66)+(alt+9)+(alt+13) (non so se si possa fare in labview
in formato \:
B\t\
in formato esadecimale:
4209 0D
Guardati questa tabella: http://www.google.it/url?source=imgres& ... yZIehHPc6w
----------------------------------------
AUTORE: 3051
DATA :17/02/2011 - 14:16:26
----------------------------------------
Oddìo...funziona!!!!!!!!
Non avevo capito per niente: lo strumento vuole come input il carattere ascii IL CUI CODICE corrisponde al numero che io voglio inserire!!!
Però scusa, almeno sei d'accordo che è un sistema da pazzi per comunicare???
Mi sembra che resti qualche piccola bega su alcuni caratteri (primo fra tutti quello che ha come codice lo zero...mi pare sia una casella vuota!!!) cmq ora cerco info in rete se c'è qualche modo di convertire automaticamente in Labview i numeri in input nei corrispondenti caratteri ascii.
Grazie mille per l'aiuto!!!
----------------------------------------
================================================================================
Benedetto .lsb file!
================================================================================
AUTORE: 3511
DATA :14/02/2011 - 14:52:19
----------------------------------------
Salve a tutti. Sono nuovo del forum. Premetto che prima di aprire questa discussione ho fatto ricerche in rete di ogni tipo, ma non sono venuto a capo del seguente problema:
In laboratorio all'università, il professore mi ha chiesto di capire(e ovviamente di mettere in pratica) come poter utilizzare codice esterno C/C++ all'interno di un VI di LabView. La versione di LabView che sto utilizzando è quella del 2009. Girovagando nel web, mi pare di aver capito che il blocco da usare è CIN(Code Interface Node).
Ovviamente voi saprete che però per caricare il codice esterno dentro questo blocco, LabView accetta in ingresso solo file con estensione lsb. Allorchè ho cercato su internet come creare questo tipo di file. Ho trovato alcune guide/esempi tipo:
[url:zw8xdobd]http://zone.ni.com/devzone/cda/tut/p/id/3172#toc3[/url:zw8xdobd]
oppure
[url:zw8xdobd]http://zone.ni.com/devzone/cda/tut/p/id/4161[/url:zw8xdobd]
Ho cercato di seguirle passo passo, ma non ho concluso niente.
Utilizzo Microsoft Visual Studio 2008. Il sistema operativo è windows XP.
Giusto per prova mi sarei accontentato di far girare nel mio vi un semplice programma scritto in c++ che svolge la somma di due numeri inseriti da tastiera. Ma non riesco proprio a farlo. Qualcuno di voi sarebbe così gentile da illuminarmi?
Grazie a chi ha la pazienza di spiegarmi un attimino dove sbaglio.
----------------------------------------
================================================================================
Modulzione PPM su segnale sinusoidale
================================================================================
AUTORE: 3522
DATA :15/02/2011 - 12:35:53
----------------------------------------
Salve, devo modulare un treno di Impulsi attraverso un segnale sinusoidale (partendo da un VI vuoto). E' da un mese che ci perdo il sonno sopra, se potete aiutatemi
Vi allego la traccia del progetto
Progettare in LabVIEW un VI che implementi un modulatore PPM (Pulse Position Modulation). Lo schema concettuale è raffigurato in Fig. 1: la “portante†è costituita da un treno di impulsi rettangolari di durata "tao", ampiezza V0 e periodicità T (un impulso ogni T secondi); l’ampiezza del segnale modulante definisce la posizione degli impulsi del treno “modulatoâ€. I valori del segnale modulante m(t) che alterano il treno di impulsi sono valutati in corrispondenza degli istanti kT, k=0, 1, …
La posizione di “riposo†del generico impulso corrisponde al valore 0 dell’input (valore m(kT) del segnale modulante), mentre i valori positivi dell’input corrispondono a spostamenti dell’impulso verso destra (rispetto alla posizione a riposo), i valori negativi a spostamenti verso sinistra. Si assuma che lo spostamento massimo (corrispondente al valore massimo dell’input) del punto di inizio dell’impulso sia pari a +-T/2.
IMMAGINE ALLEGATA "PPM.jpg"
Fig. 1. Modulazione PPM.
Sul VI saranno visibili:
a) Un indicator di tipo grafico che visualizza il segnale modulante, la portante non modulata e la portante modulata.
b) Dei controls che permettano la selezione dei parametri progettuali entro gli intervalli definiti nel testo.
I parametri progettuali siano i seguenti:
"tao" = da 0.1 ms a 1 ms, selezionabili dall’utente
T = da 5 ms a 20 ms, selezionabili dall’utente
V0 = da 1 a 5 V, selezionabili dall’utente
Il segnale modulante sia un segnale sinusoidale a frequenza selezionabile dall’utente, nell’intervallo [1, 25 Hz], e ad ampiezza massima selezionabile dall’utente (tra 1 e 5 V).
Sul VI saranno visualizzati i primi 5 cicli del segnale modulante, ed i corrispondenti treni di impulsi non modulati e modulati.
----------------------------------------
================================================================================
Aiuto conversione da LV09 a LV8.0
================================================================================
AUTORE: 314
DATA :15/02/2011 - 20:32:52
----------------------------------------
Qualcuno può aiutarmi a convertire i seguenti vi e libreria da Labview 2009 a Lbaview 8.0?
Basta aprirlo con Lv2009 e slavarlo come versione 8.0 come si dice qui : http://zone.ni.com/devzone/cda/tut/p/id/8387
Spero che qualcuno possa aiutarmi visto che non esistono tool di conversione se non possedere la versione 2009
----------------------------------------
AUTORE: 1078
DATA :18/02/2011 - 10:54:17
----------------------------------------
Ciao paolo_80,
Ecco i file convertiti in LV80. Durante la conversione i VI richiedevano dei driver che dovresti avere installati nella <vilib>, attento che siano convertiti anche quelli in LV80.
Nella libreria c'è un VI polimorfico a cui non ho potuto cambiare nome, solo il nome è rimasto come LV2009 basta rinominarlo.
Buon lavoro.
----------------------------------------
AUTORE: 314
DATA :24/02/2011 - 19:50:56
----------------------------------------
Grazie mille!!
----------------------------------------
================================================================================
Leggere un barcode ed interpetarlo
================================================================================
AUTORE: 3428
DATA :16/02/2011 - 14:38:53
----------------------------------------
Salve, dovrei sviluppare una vi che mi legga dei codici a barre tramite un lettore di codici. Non sono molto esperto di LV quindi vi prego di scusarmi in anticipo se pongo domande troppo banali.
Il lettore sarà collegato al pc in seriale RS-232.
Vorrei sapere come stabilire il collegamento. Ho già visto degli esempi di collegamento in seriale tramite VISA ma la cosa importante è capire come riuscirò ad interpretare il codice a barre e tirarne fuori una stringa per essere poi confrontata con un'altra lista di stringhe.
Partendo dall'inizio per ora vorrei creare almeno la connessione del lettore al pc. Qualche dritta?
in seguito per l'interpretazione del codice letto?
Grazie
----------------------------------------
AUTORE: 4
DATA :16/02/2011 - 19:08:23
----------------------------------------
ciao 99.9999999% il lettore di codici a barre fa già il lavoro di decodifica e ti torna già una stringa sulla seriale. qullo che ti basta fare è riceverla, parti dagli esempi di labview cercando "serial" e usa quelli per fare i primi test.
Ciao
----------------------------------------
AUTORE: 3428
DATA :17/02/2011 - 08:19:18
----------------------------------------
ok ti ringrazio, nel corso della progettazione aggiorno il thread.
----------------------------------------
AUTORE: 3428
DATA :17/02/2011 - 11:49:11
----------------------------------------
Come hai detto tu ale, mi ritorna una stringa nella seriale. Basta che leggo dalla seriale e ho la mia stringa
Ora dovrei utilizzare questa stringa per fare un confronto all'interno di un database. Non ho mai usato le connessioni con i DB e non credo di fare casini perchè saranno accessi "read only".
Ho il database in un file .mdf di sqlserver. Ancora non ho capito come riesco ad aprire, e vedere i record, con SQL server managment studio (ma ci riuscirò
) comunque quello che mi interessa è come riuscire a creare una query con labview.
-quello che vorrei sapere è come creare la connessione al DB (dandogli la tabella che deve leggere e le relative colonne che mi servono);
-impostare sola lettura ad ogni accesso (ovviamente se ci sono comandi del tipo read o write non mi servirà perchè utilizzerò solo il read);
-creare la query che mi serve;
Grazie, nel frattempo guardo gli esempi di lv
----------------------------------------
AUTORE: 4
DATA :17/02/2011 - 19:45:35
----------------------------------------
Ciao, sono contento che ti funzioni il BCR.
per quanto riguarda il DB ti consiglio di fare una bella ricerca qui su ILVG.it, se ne è parlato tante volte, se non trovi apri una nuova discussione apposta.
Ciao
----------------------------------------
AUTORE: 3428
DATA :18/02/2011 - 09:29:25
----------------------------------------
Grazie, facendo un giro nel forum ho trovato diverse cosette.. ho sfruttato il DB toolkit di LV che ho dovuto installare e grazie ai suoi comandi ho fatto tutto.
Ho fatto la stessa cosa in 2 modi:
In entrambe apro la connessione con il DB tool open connection poi
-nel 1°metodo provato ho inserito poi un DB list table che mi restuisce tutte le tabelle del db in un array, tramite un index array mi prendo quella su cui devo effettuare la query e la inserisco in un DB list columns che mi restituisce anche lui un array e grazie all'index array mi prendo le colonne che mi servono come risultati.
Passo tutto dentro un DB tool select data che vuole in ingresso le colonne (messe in array) e la tabella. Mi restituisce un 2D array di variant.
Purtroppo non so se è un errore mio o c'è qualcosa da modificare all'interno di lv ma come risultato mi restituisce invece del solo campo (ammettiamo ci sia scritto "pippo") la stringa "Value -> pippo" quindi m'è toccato buttare tutto dentro un for che mi elimina la stringa value ecc. facendo rimanere solo quello che mi interessa.
-nel secondo metodo dopo l'apertura della connessione passo direttamente dentro al DB tool execute query che vuole in ingresso una stringa di SQL query (SELECT .... FROM.. WHERE ecc.) che mi restituisce solo un recordset reference che passato ad un DB tool fetch recordset data mi restiuisce come sopra un 2Darray di variant poi mi tocca sempre fare la solfa per togliere il value ->.
Secondo voi qual'è il metodo migliore? Secondo me il secondo perchè a me cambia ad ogni lettura solamente l'ultima parte della query dove di default metterò tutta la query e poi la concatenerò con il risultato che mi arriva dalla lettura.
La query è simile a :
SELECT A.MATRICOLA, A.DIPARTIMENTO
FROM ATTUALE
WHERE ATTUALE.CODICE = XXXXX
io devo sempre ad ogni accesso tirarmi fuori queste cose e l'unica cosa che cambia è quel XXXXX che come ho detto passerò tramite concatenate strings..
Può andare? intanto lo provo
----------------------------------------
================================================================================
Forzare reset porta seriale
================================================================================
AUTORE: 1168
DATA :16/02/2011 - 16:14:45
----------------------------------------
Buonasera a tutti.
Sto sviluppando un programmino di monitor di un prototipo che comunica tramite RS232. A volte succede qualcosa (ancora non so cosa, ma lo scoprirò) che manda in crash sia il prototipo, sia la "bontà e continuità della comunicazione".
Siccome non ho ancora implementato tutti i controlli, devo anche chiudere LV col pulsantone rosso... solo che dopo qualche riavvio, la seriale mi si arrabbia all'inizializzazione.
C'è un modo per resettare di forza bruta?
Grazie e buona serata a tutti.
----------------------------------------
AUTORE: 482
DATA :17/02/2011 - 08:02:30
----------------------------------------
...prova a metterci un close prima di tutto.
Perchè puo' essere che quando chiudi il VI col pulsante rosso, la ocmunicazione sia aperta e quindi resti aperta e quindi la porta risulta occupata.
----------------------------------------
AUTORE: 1168
DATA :17/02/2011 - 08:13:26
----------------------------------------
Sinceramente ci avevo pensato, ma non l'ho provata perchgè non ho una reference valida... Non so bene come funzionino le reference, ma secondo me, la stessa porta viene associata ad un identificativo pseudo-random ad ogni inizializzazione.
Oggi problemi informatici sul pc di sviluppo...appena posso comunque provo!
----------------------------------------
AUTORE: 645
DATA :17/02/2011 - 12:07:23
----------------------------------------
Per lavorare con la porta seriale inizializzi la comunicazione all'inizio del VI (configuri la porta seriale con il blocchetto apposta), poi entri in un ciclo all'interno del quale fai tutte le operazioni (lettura, scrittura, comandi vari) e al termine del VI esci dal ciclo e chiudi la porta seriale.
Hai utilizzato questo schema?
----------------------------------------
AUTORE: 1168
DATA :17/02/2011 - 12:38:43
----------------------------------------
Ciao Magic!
Yes fatto così... il problema è che a volte non ci passo dalla chiusura della porta perchè devo buttar giù con la forza labview...
----------------------------------------
AUTORE: 1078
DATA :18/02/2011 - 10:36:18
----------------------------------------
[quote="Pio":3w14nmrq]Ciao Magic!
Yes fatto così... il problema è che a volte non ci passo dalla chiusura della porta perchè devo buttar giù con la forza labview...[/quote:3w14nmrq]
Ciao Pio, prova a verificare che tra le opzioni di labview Tools-->Option-->Enviroment sia selezionata la voce [b:3w14nmrq]Automatically close VISA session[/b:3w14nmrq] di default è deselezionata e labview mantiene aperti i riferimenti alle porte fino a che non li chiudi esplicitamente (anche quando va in cresh). Se abiliti quella funzione non si dovrebbe presentare più il problema!
Buona giornata e buon lavoro.
----------------------------------------
AUTORE: 645
DATA :20/02/2011 - 21:29:35
----------------------------------------
Ma come mai ogni tanto non passi dalla chiusura della porta seriale? Significa che il VI si impianta nel ciclo dopo qualche comando... Hai controllato quale comando blocca la comunicazione?
Magari cerchi un dato che è già stato scaricato dallo strumento e quindi la periferica non sa cosa risponderti...
Oppure entri in un loop infinito perchè lo strumento non riesce ad interpretare il comando inviato dal VI.
----------------------------------------
AUTORE: 43
DATA :21/02/2011 - 09:29:13
----------------------------------------
[quote="Pio":17ycl4hm]Ciao Magic!
Yes fatto così... il problema è che a volte non ci passo dalla chiusura della porta perchè devo buttar giù con la forza labview...[/quote:17ycl4hm]
Se le VISA sono installate correttamente, è probabile che si tratti di un baco.
Fatti dare una mano da qualcun altro. A me è capitato spesso. Avevo il baco lì davanti e non lo vedevo. Bisogna avere l'umiltà e la pazienza giusta per venirne fuori.
bye
----------------------------------------
AUTORE: 1168
DATA :21/02/2011 - 10:50:25
----------------------------------------
Trovato. Era un problemino dovuto al fatto che invertivo il senso di rotazione di un motore alimentato a batteria (di quelle da macchina) e anche la scheda era alimentata dalla stessa fonte...
Da 12 V a 4 V in una manciata di millisecondi!:-) e mi si resettava la scheda a microcontrollore povera.
----------------------------------------
AUTORE: 43
DATA :21/02/2011 - 11:58:19
----------------------------------------
[quote="Pio":czgtis71]Trovato. Era un problemino dovuto al fatto che invertivo il senso di rotazione di un motore alimentato a batteria (di quelle da macchina) e anche la scheda era alimentata dalla stessa fonte...
Da 12 V a 4 V in una manciata di millisecondi!:-) e mi si resettava la scheda a microcontrollore povera.
[/quote:czgtis71]
lo "spunto" ti ha fregato... hai semplicemente separato le alimentazioni?
----------------------------------------
AUTORE: 1168
DATA :21/02/2011 - 12:08:00
----------------------------------------
No, ho chiesto una modifica all'hardware.
L'oggetto deve essere alimentato dalla stessa fonte del carico. Lo stadio di alimentazione deve rimanermi vivo per 300 ms.
Condensatorone e via!
----------------------------------------
================================================================================
Pulire un Waveform Chart
================================================================================
AUTORE: 3531
DATA :20/02/2011 - 12:25:38
----------------------------------------
Ciao a tutti;
sono nuovo del forum, avrei una domandina per voi....
Sto facendo delle prove con labview ed un compact daq, acquisisco un segnale analogico e lo mostro in trend attraverso un Waveform Chart, il mio problema è diciamo fare un clear del grafico, o meglio io acquisisco per 10 secondi...per esempio, quando ripeto l'acquisizione vorrei che il chart si "pulisca", per non avere ancora il trend precedente....
Grazie a tutti spero di esser stato chiaro.....
----------------------------------------
AUTORE: 3531
DATA :20/02/2011 - 12:30:39
----------------------------------------
Scusatemi ho gia trovato risposta all mio post in questa discussione....
[url:37lx737x]http://www.ilvg.it/forum/viewtopic.php?f=1&t=4866[/url:37lx737x]
Grazie!!!!
----------------------------------------
================================================================================
Generazione VI per sviluppo in serie di Fourier
================================================================================
AUTORE: 3530
DATA :20/02/2011 - 13:46:38
----------------------------------------
Ciao a tutti, sono nuovo del forum e vorrei chiedervi dei chiarimenti su alcuni punti del mio progetto.
La funzione da sviluppare è: [b:31ywcunh]f(x)= |cos x|[/b:31ywcunh]
Il suo sviluppo è: http://img18.imageshack.us/img18/8673/s ... nserie.jpg
Le funzioni sinusoidali cos(2nx) si chiamano armoniche (di ordine 2n=2, 4, 6, 8,…). La funzione (1) ammette uno sviluppo in serie di Fourier di sole armoniche pari.
Sul VI devono essere presenti:
1. Un waveform graph che visualizzi 5 periodi della funzione (1), come in Fig. 1 --> http://img268.imageshack.us/img268/9064/fig1c.jpg
2. Un control che permetta all’utente di selezionare il numero di armoniche da utilizzare per il calcolo dello sviluppo (2), fino ad un massimo di n=100, cioè fino all’armonica di ordine 200;
3. Un graph che visualizzi la funzione ottenuta dallo sviluppo (2);
4. Un diagramma a barre che visualizzi il valore dei coefficienti delle armoniche selezionate, coefficienti che hanno la forma 4/[(2n+1)(2n-1)ï°].
Dopo aver generato una finestra temporale (tenendo conto anche del teorema di shannon sul campionamento), ho creato attraverso un generatore di onda sinusoidale un grafico come in figura 1.
Fatto ciò ho ricreato lo sviluppo in serie in un ciclo FOR LOOP, ma questo funziona solo se l'argomento del cos presenta un 4 al posto del 2 e solo se lo SHIFT REGISTER è inizializzato con -1.
infine il problema più grande è il punto 4. relativo al diagramma a barre, che non so proprio come risolvere.
Scusate se sono stato un pò lungo...spero possiate aiutarmi a completare questo progetto.
Se occorre posso postare immagini del VI o anche il file *.VI
Grazie a tutti per la disponibilità!
----------------------------------------
AUTORE: 3530
DATA :24/02/2011 - 09:38:34
----------------------------------------
up
----------------------------------------
AUTORE: 1078
DATA :25/02/2011 - 13:08:43
----------------------------------------
Prova a postare il tuo VI....
Per il diagramma a barre, non è nient'altro che una rappresentazione diversa di un Graph. Per cambiare la visualizzazione dei valori in barre devi cliccare con il tasto destro sull'immagine plot del graph: nel menu [b:16kib4qp]common plot[/b:16kib4qp] devi selezionare quello a barre, mentre il menu [b:16kib4qp]bar plot[/b:16kib4qp]ti permette di selezionare che tipo di barre usare.
Come ti ho scritto sopra, per verificare il tuo codice e il perchè il cos ti accetta solo valori multipli di 4, sarebbe meglio se postassi il tuo VI indicando possibilmente in che versione LV è fatto.
----------------------------------------
AUTORE: 1078
DATA :25/02/2011 - 13:45:30
----------------------------------------
Ti ho fatto uno sviluppo della serie come da te richiesto.... vedi se va bene, confrontalo magari con il tuo VI!
[attachment=0:13ieqkgu]Serie.gif[/attachment:13ieqkgu]
----------------------------------------
AUTORE: 3530
DATA :25/02/2011 - 18:55:58
----------------------------------------
Ciao Ricky e grazie mille per le risposte!
Ieri dopo un'intera giornata al pc sono riuscito a risolvere sia il problema del 4 nell'argomento del cos, sia l'inizializzazione dello SHIFT REGISTER...ed oggi tu mi hai risolto il diagramma a barre.
Ancora GRAZIE!!!
Ti invio comunque in allegato il mio VI (l'ho dovuto comprimere perchè non lo caricava altrimenti), così gli dai un' occhiata
(la versione di Lb è la 2009).
Saluti e buona serata!
----------------------------------------
================================================================================
Ordinare tabella
================================================================================
AUTORE: 3428
DATA :20/02/2011 - 15:40:50
----------------------------------------
Salve a tutti.
Allora ho una tabella formata da sole 2 colonne nelle quali vengono inseriti i dati che arrivano da un array bidimensionale (ovviamente anche la tabella è un semplice array bidimensionale, la semplice table di LV).
Esiste qualche utility o VI scaricabile che mi faccia abilitare i 2 header per far in modo che se clicchi su uno di essi la colonna sottostante mi venga ordinata e l'altra di conseguenza?
Grazie
----------------------------------------
AUTORE: 3428
DATA :23/02/2011 - 08:39:15
----------------------------------------
Non avendo trovato nulla mi sono ho fatto a modo mio.
Cliccando sugli header non ci sono riuscito, anche perchè molto probabilmente non potrei usare una semplice table ma una multicolunm list box.
Comunque mi sono creato 2 bottoni che girano in un ciclo while con ritardo e che se true entrano ognuno nel proprio case e ordinano la tabella.
A chi servisse, lo posto.
ps questo ordina in base al primo elemento della tabella cioè se nel primo index array mettessi prima 1 poi 0 mi ordinerebbe il tutto in base alla seconda colonna.
----------------------------------------
================================================================================
Connessione Profibus Labview
================================================================================
AUTORE: 3428
DATA :21/02/2011 - 08:30:37
----------------------------------------
Salve dovrei creare il driver per un motore.
Il protocollo di connessione deve essere il profibus in seriale, senza scheda.
Esiste qualche documento, qualche esempio in LV di questo tipo di connessione per farmi una visione generica di quello che dovrò sviluppare?
Grazie
----------------------------------------
AUTORE: 43
DATA :21/02/2011 - 09:18:54
----------------------------------------
[quote="renaso":sdso09cy],,,
Il protocollo di connessione deve essere il profibus in seriale, senza scheda.
...[/quote:sdso09cy]
Cosa vuol dire?
anche USB , SATA, sono "seriali" e direi pure Ethernet, CAN.
GPIB è l'unica inferfaccia di comunicazione parallela che conosca oltre alla connessione della vecchia porta parallela che spesso è usata come una seriale...
non è per caso una connessione Wifi?
esistono dei "Gateway" come questi
http://www.comsoft.de/html/icpe/profibu ... fAodWSZOdA
http://www.prosoft-technology.com/conte ... /full/7441
http://www.anybus.it/products/profibus.shtml
che possono fare da "ponte", per esempio, fra Profibus e seriale RS232.
In quei casi bisogna leggere il manuale allegato all'Hardware...
bye
----------------------------------------
AUTORE: 3428
DATA :21/02/2011 - 09:43:30
----------------------------------------
Si scusa mi sono spiegato male. Connessione in seriale RS-232 profibus senza l'utilizzo dei gateway.
----------------------------------------
AUTORE: 43
DATA :21/02/2011 - 09:47:35
----------------------------------------
[quote="renaso":9rt87ube]Si scusa mi sono spiegato male. Connessione in seriale RS-232 profibus senza l'utilizzo dei gateway.[/quote:9rt87ube]
Non mi risulta sia possibile farlo.
Manda qualche link, xkè non ci credo...
bye
----------------------------------------
AUTORE: 2855
DATA :21/02/2011 - 10:16:52
----------------------------------------
Ciao quello che devi fare è usare l'OPCServer per dialogare tramite una RS-232 (RS422 oppure RS485 oppure USB che sono soltanto dei collegamenti, quindi tutti validi).
Creare una connessione con il protocollo che vuoi: Modbus o come il tuo caso Profibus (sappi che ne esistono vari tipi ProfibusDP, ProfibusFMS o L2).
Sta di fatto che devi lavorare tramite OPCServer.
A disposizione
Ciao
----------------------------------------
AUTORE: 3428
DATA :21/02/2011 - 10:20:16
----------------------------------------
No no.. è quello che chiedevo io...
1° se era possibile;
2° se c'erano degli esempi;
Ok ora che mi dici che non è possibile, dove posso trovare esempi di connessione profibus in RS232 con gateway?
edit: @ rolop
Ecco forse quello che cercavo.. Esempi? Nel frattempo cerco nel forum
----------------------------------------
AUTORE: 2855
DATA :21/02/2011 - 10:51:55
----------------------------------------
[quote="renaso":1ngvc6i8]No no.. è quello che chiedevo io...
1° se era possibile;
2° se c'erano degli esempi;
Ok ora che mi dici che non è possibile, dove posso trovare esempi di connessione profibus in RS232 con gateway?
edit: @ rolop
Ecco forse quello che cercavo.. Esempi? Nel frattempo cerco nel forum[/quote:1ngvc6i8]
Spero di non aver capito male ma non è quello che ho detto, anzi è possibile devi solo usare il toolkit OPCServer.
Per gli esempi non so come aiutarti, prova in rete o nel forum
Ciao
----------------------------------------
AUTORE: 3428
DATA :21/02/2011 - 11:09:40
----------------------------------------
ho capito rolop, era solo in risposta a paracarro poi è arrivata la tua risposta mentre inviavo la mia e il forum me lo ha precisato così ho inserito l'edit.
----------------------------------------
AUTORE: 43
DATA :21/02/2011 - 11:56:12
----------------------------------------
[quote="rolop":2yanfinc]...
Spero di non aver capito male ma non è quello che ho detto, anzi è possibile devi solo usare il toolkit OPCServer.
...[/quote:2yanfinc]
Che esista un driver OPC per le comunicazioni Profibus lo trovo assolutamente normale.
Mi suona cmq strana la connessione HW fra Profibus e RS232, anche xkè Profibus è un BUS come CAN o come RS485.
Mentre RS232 è concepita per collegare solo 2 dispositivi fra loro con ricezione e trasmissione indipendenti fra loro...
Nel caso tu riesca nell'impresa , posta in questo Forum la soluzione!!! mi raccomando!!!!
bye
----------------------------------------
AUTORE: 1124
DATA :21/02/2011 - 12:42:19
----------------------------------------
Ciao
anche a me sembra strano che si riesca a dialogare con modalità seriale tra un pc e , immagino, l'inverter di un motore collegato in profibus senza alcun dispositivo hardware.
E' possibile che l'inverter sia dotato di convertitore profibus /seriale, ma se è effettivamente collegato su bus profibus non saprei come utilizzarlo se non mediante un 'adattatore'.
Se esiste il sistema pubblicate qualche informazione, perchè ciò potrebbe permettere probabilmente un risparmio economico non indifferente.
Stefano
----------------------------------------
AUTORE: 2855
DATA :21/02/2011 - 13:04:27
----------------------------------------
Vorrei fare un pò di chiarezza, almeno spero.
Intanto l'OPCServer NOn è un driver bensi un "traduttore" che prepara la stringa di comando in base al protocollo prescelto (ModBus, Profibus, etc,etc).
Quando questa stringa è pronta ,viene inviata alla strumento sul Hardware prescelto dal produttore (RS232-RS422-RS485) . Io ho lavorato con controllori di temperatura che avevano RS485 e con altri che avevano RS232(la scelta è del produttore e dipende dallla possibilita di avere 1COM= 1 strumento RS232 oppure 1COM = +strumenti RS422/485 e dai costi di produzione).
Se i comandi dell'inverter sono (per esempio) Profibus con seriale RS232 saranno identici del Profibus con RS485, poichè sarà l'OPCServer a gestire la trasmissione.
Naturalmente tutto questo è scavalcabile ma bisogna ricostruire la stringa da inviare allo strumento tramite LV, e con i Visa è possibile inviarli. La costruzione della suddetta stringa è il protocollo prescelto (ModBus, Profibus,,,,,,) e, solo a titolo di esempio, è costruita tipo codice fiscale, cioè con dei caratteri di controllo che sono definiti da un calcolo.
Io ho scritto dei VI per il protocollo Modbus e se vi interessano sono a vs disposizione.
Nella speranza di essere stato chiaro.
saluti
----------------------------------------
AUTORE: 1124
DATA :21/02/2011 - 13:15:42
----------------------------------------
Ciao di nuovo.
Non sono convinto che sia oltretutto necessario passare per forza attraverso un opc server.
Per esempio ho 'collegato' un programma labview ad una rete di plc in profibus mediante una scheda hardware dedicata e utilizzando il suo driver.
Mi permetto una divagazione sperando di non scrivere grandi fesserie: tenete conto che non ho una grande esperienza in merito alla questione.
La necessità di usare una interfaccia hardware credo che derivi non tanto dalla differenza di livello fisico tra una scheda seriale profibus dp e una seriale 485, ma dalla complessità di gestione delle informazioni disponibili nel bus che pertanto necessita di un hardware dedicato.
Non escludo che si possano anche implementare, e magari qualcuno lo ha fatto, le routines di gestione delle informazioni presenti sul bus e farle girare all'interno di un programma su pc, ma significherebbe appesantire il carico di lavoro sulla cpu con sensibili cali di prestazione.
----------------------------------------
AUTORE: 43
DATA :21/02/2011 - 14:18:59
----------------------------------------
Chiedo scusa in anticipo non vorrei essere noioso come al solito...
[quote="rolop":2nn81omt]Vorrei fare un pò di chiarezza, almeno spero.
Intanto l'OPCServer NOn è un driver bensi un "traduttore" che prepara la stringa di comando in base al protocollo prescelto (ModBus, Profibus, etc,etc).[/quote:2nn81omt]
Che sia un "traduttore" poco importa. xkè:
[url=http://en.wikipedia.org/wiki/Opc_server:2nn81omt]An OPC Server is often referred to as an OPC Driver.The two terms are synonymous.[/url:2nn81omt]
Non l'ho scritto io, davvero!!
In generale, scrivere una libreria di funzioni per accedere ad un tipo di risorsa attraverso un certo "canale" può essere considerata (la libreria, intendo) un "driver" che pilota una certa risorsa...
Se per "driver" intendiamo un driver di "basso livello" al di sotto del quale si trova solo l'HW o FW, allora un OPC server non è un "driver" ma lo si può definire "driver di alto livello" perchè ricopre interamente i layers sottostanti
[quote="rolop":2nn81omt]Quando questa stringa è pronta ,viene inviata alla strumento sul Hardware prescelto dal produttore (RS232-RS422-RS485) . Io ho lavorato con controllori di temperatura che avevano RS485 e con altri che avevano RS232(la scelta è del produttore e dipende dallla possibilita di avere 1COM= 1 strumento RS232 oppure 1COM = +strumenti RS422/485 e dai costi di produzione).
Se i comandi dell'inverter sono (per esempio) Profibus con seriale RS232 saranno identici del Profibus con RS485, poichè sarà l'OPCServer a gestire la trasmissione.
Naturalmente tutto questo è scavalcabile ma bisogna ricostruire la stringa da inviare allo strumento tramite LV, e con i Visa è possibile inviarli. La costruzione della suddetta stringa è il protocollo prescelto (ModBus, Profibus,,,,,,) e, solo a titolo di esempio, è costruita tipo codice fiscale, cioè con dei caratteri di controllo che sono definiti da un calcolo.
Io ho scritto dei VI per il protocollo Modbus e se vi interessano sono a vs disposizione.
Nella speranza di essere stato chiaro.
saluti[/quote:2nn81omt]
Purtroppo Modbus NON è Profibus.
Sono molto diversi tra loro . Mentre Modbus richiede una architettura seriale di tipo RS232/422/485, la architettura Profibus richiede un HW particolare che fa parte dello standard Profibus stesso.
http://www.kuebler.com/PDFs/Feldbus_Mul ... ion_DP.pdf
Nulla toglie però che sia possibile implementare il protocollo Profibus su rs232: per es., su Ethernet è possibile implementare più protocolli, non solo TCP/IP...
In questo caso i dispositivi devono avere entrambi un collegamento "HW compatibile" ed avere dei driver per quell'HW che implementa la parte dello "standard Profibus" che attiene alla composizione e scambio di dati escludendo il layer "fisico".
Ricordo però che gli standard di "BUS" come il CAN bus oppure ethernet per intenderci, prevedono la gestione della "collisione" di pacchetti (non sono sicuro che sia prevista per il Modbus) e che di solito questi problemi sono gestiti a livello HW elettrico...
bye
----------------------------------------
AUTORE: 645
DATA :21/02/2011 - 14:52:37
----------------------------------------
Ne approfitto per una domandina... Esattamente come funziona OPC Server di LabView?
Non l'ho mai usato (almeno non consapevolmente)... Per quali scopi torna utile?
Vi segnalo la pagina http://digital.ni.com/public.nsf/allkb/ ... 240064DF09
----------------------------------------
AUTORE: 2855
DATA :21/02/2011 - 15:18:49
----------------------------------------
quoto paracarro:
"Purtroppo Modbus NON è Profibus."
Scusa ma non mi pare di aver detto che sono la stessa cosa, ho detto che OPCServer li gestisce nello stesso modo.
E' ovvio che il profibus è un protocollo migliore, +stabile e con maggiori informazioni del modbus. Sono due cose diverse
Io parlo di seriale perchè mi e parso nella domanda iniziale di renaso si parlasse "protocollo di connessione deve essere il profibus in seriale".Quindi immagino che nel motore vi sia un interfaccia seriale.
Mi scuso se non sono stato chiaro.
Ti ringrazio delle precisazioni è sempre molto interessante scambiare delle info
bye
----------------------------------------
================================================================================
LabView e Scilab
================================================================================
AUTORE: 645
DATA :22/02/2011 - 08:16:50
----------------------------------------
Può essere un'interazione interessante!
http://decibel.ni.com/content/docs/DOC-2043
----------------------------------------
================================================================================
Reference a DB MySQL
================================================================================
AUTORE: 724
DATA :22/02/2011 - 13:10:15
----------------------------------------
Ciao,
Lo scenario è:
Apro una connessione al database e inizializzo la functional global che contiene il reference alla connessione aperta (ADODB_connection).
Uso la functional global come riferimento su cui operare le query.
Chiudo il reference alla connessione.
Se in un unica vi di prova metto tutte e tre i passi elecati sopra tutto funziona correttamente.
Se per debug avvio manualmente i singoli passi la query mi restituisce un errore come se
la functional global non fosse inizializzata. Ottengo medesimo comportamento se al posto
della functional global uso una globale tradizionale.
Con functional global non di reference ma di stringhe, interi, ecc. il debug ha sempre funzionato.
Con i reference cosa cambia?
Grazie,
Cesare
----------------------------------------
AUTORE: 1078
DATA :25/02/2011 - 12:59:34
----------------------------------------
Ciao ghianda,
[quote="ghianda":3dustnv9]Con functional global non di reference ma di stringhe, interi, ecc. il debug ha sempre funzionato.
Con i reference cosa cambia?[/quote:3dustnv9]
In teoria non dovrebbe cambiare nulla, probabilmente l'errore che commetti, che è abbastanza comune, è quello di chiudere involontariamente la reference al DB.
Prova a postare il VI che utilizzi... o un'esempio rappresentativo, guardando il codice potremmo aiutarti meglio!
Ciao e buon lavoro.
----------------------------------------
AUTORE: 43
DATA :03/03/2011 - 09:18:17
----------------------------------------
Devo smentire Ricky e dire che Ghianda ha ragione.
Però non ha ragione quando dice che il problema è la variabile globale.
Oggi non ho tempo per cercare link e dare spiegazioni precise, ma il problema sta, probabilmete, nel fatto che il reference in oggetto si riferisce all'istanza di un ActiveX che l'activeX gira nel thread di interfaccia (UI) e che probabilmente non si tratta di una risorsa che rimane "staticamente aperta" per cui terminato il run di un VI che apre la risorsa, il reference che se ne ricava non è + valido.
Quindi la variabile Globale trattiene il valore del reference originale come ci si attende , ma il reference stesso non è + valido (un po' come usare il reference di un file già chiuso...)
bye
----------------------------------------
================================================================================
misu+
================================================================================
AUTORE: 3540
DATA :23/02/2011 - 08:55:47
----------------------------------------
Siamo un gruppo di studenti dell' ipsia Lino Zanussi di PN. Dal circuito allegato non riusciamo a separare i segnali di corrente e tensione per ricavare il segnale di potenza. Potreste aiutarci?
----------------------------------------
AUTORE: 2550
DATA :23/02/2011 - 17:06:07
----------------------------------------
Ciao!
In uscita dal blocco daqmx read avete un array bidimensionale. per estrarre singolarmente gli array di valori dei singoli canali, potete usare il blocco Index Array.
lo trovate nella palette Programming->Array.
Il blocchetto è ampliabile quindi allargatelo fino a far comparire 2 uscite e collegate agli ingressi index(row) il numero di canale della scheda di acquisizione.
In uscita otterrete 2 array 1D con il valori dei canali separati.
Buono Studio!
DVD
----------------------------------------
================================================================================
Tab Control
================================================================================
AUTORE: 3531
DATA :24/02/2011 - 10:40:12
----------------------------------------
Ciao a tutti!!;
la mia domanda è la seguente...è possibile mostrare solo alcune schede del Tab Control e magari delle altre all'inserimento di una password o roba simile???
in questo modo realizzerei una tab con delle impostazioni riservate....
Grazie grazie ciao ciao
----------------------------------------
AUTORE: 43
DATA :24/02/2011 - 11:26:01
----------------------------------------
[quote="vezzo":3e9nygc3]Ciao a tutti!!;
la mia domanda è la seguente...è possibile mostrare solo alcune schede del Tab Control e magari delle altre all'inserimento di una password o roba simile???
in questo modo realizzerei una tab con delle impostazioni riservate....
Grazie grazie ciao ciao[/quote:3e9nygc3]
Sì. Si può fare programmaticamente.
Io preferirei disabilitarle, rendendole "grigie". L'utente senza privilegi conosce l'esistenza di quella pagina ma sa che non può accedervi.
Dal controllo tipo tab crea un attributo/proprietà in 2 possibili modi:
- FP tasto dx del mouse sull'area di selezione/cambio tab del controllo tipo tab e poi Create --> Property Node--> Pages
- FP tasto dx del mouse sull'area di selezione/cambio tab del controllo tipo tab e poi Create --> Reference e poi da diagramma aggiungi tasto dx del mouse b Functions --> Application control -> Property node collega il reference creato e seleziona Pages.
Io preferisco il secondo metodo anche se + lungo.
A questo punto otterrai un array di reference delle "pagine", che dovrai chiudere al termine del loro utilizzo.
l'array corrisponde a tutte le possibili pagine del tab, e per ognuna di esse puoi decidere lo stato di visibilità "Page Visible" e abilitazione "Page Enable State"
Bye
----------------------------------------
AUTORE: 3531
DATA :24/02/2011 - 13:01:30
----------------------------------------
Super chiarissimissio!!!!!
Grazie 1000!!!!
----------------------------------------
================================================================================
Gestire e personalizzare gli errori all'uscita
================================================================================
AUTORE: 3428
DATA :24/02/2011 - 14:57:01
----------------------------------------
Buonasera,
ho una vi che può andare in errore diverse volte e in diversi casi.
Ogni volta che c'è un errore (e non un semplice warning) vorrei che mi uscisse un messaggio di errore a schermo. Ho inserito un property node che mi mette invisibile il cluster di errore perchè non devo visualizzarlo ed ho messo un simple error handler nel filo prima di arrivare al cluster di errore.
Ok in caso di errore mi viene visualizzato e la vi non si ferma (così come voglio io) ma vorrei gestire gli errori scrivendo almeno, nella barra del titolo della finestra che lv mi apre, la causa dell'errore. Mi spiego se mi arriva un errore dalla lettura del DB mi basterebbe scrivere "errore nel DB" oppure se c'è un errore nella connessione al DB scriverò "errore nel'apertura della connessione al DB" ecc.. Questo ovviamente mettendo un simple o un general (ditemi voi) subito dopo ogni errore che esce da un blocco che può far nascere un errore.
Come dicevo, quelli gestiti da lv sono sì errori, ma uno inesperto non ci capirebbe nulla se legge:
[i:gt7669pr]Error -2147217900 occurred at NI_Database_API.lvlib:Conn Execute.vi->DB_connection.vi->MAIN.vi
Possible reason(s):
ADO Error: 0x80040E14[/i:gt7669pr]
e ci credo! Io vorrei scritto tutto questo ma sopra, nella barra blul della finestra (che al momento è sempre vuota), vorrei scrivere qualcosa io gestendo ogni errore con un minimo di personalizzazione ad esempio scrivendo "Errore emesso dal database", solo per far capire in breve la causa, tutto quà.
è possibile? Qualche altro consiglio o dritta senza usare il simple o general error handler?
Grazie
----------------------------------------
AUTORE: 1078
DATA :25/02/2011 - 12:04:24
----------------------------------------
Ciao Renaso,
[quote="renaso":3hwn9zwc]Ok in caso di errore mi viene visualizzato e la vi non si ferma (così come voglio io) ma vorrei gestire gli errori scrivendo almeno, nella barra del titolo della finestra che lv mi apre, la causa dell'errore. Mi spiego se mi arriva un errore dalla lettura del DB mi basterebbe scrivere "errore nel DB" oppure se c'è un errore nella connessione al DB scriverò "errore nel'apertura della connessione al DB" ecc.. Questo ovviamente mettendo un simple o un general (ditemi voi) subito dopo ogni errore che esce da un blocco che può far nascere un errore.[/quote:3hwn9zwc]
per fare quello che vuoi fare tu devi crearti un VI di tipo dialog, che visualizzi i messaggi che modifichi il "title" della VI con l'indicazione che devi dare all'utente. Anche la funzione General Error Hendler che mette a disposizione LV non permette la modifica del title della VI.
Non ne sono sicuro ma se cerchi nel forum qualcuno di noi ha già implementato un VI per comunicare con dialog box dei messaggi all'utente. Potresti utilizzarlo per comunicare gli errori.
Ciao e buon lavoro.
----------------------------------------
================================================================================
Estrarre segnali campionati da array in uscita da DAQmx read
================================================================================
AUTORE: 3541
DATA :26/02/2011 - 10:40:49
----------------------------------------
Siamo un gruppo di studenti dell’IPSIA Zanussi di PN (settore elettrico) e stiamo sviluppando un applicativo in ambiente LabVIEW per il monitoraggio delle grandezze di una rete elettrica monofase. La scheda di acquisizione dati a disposizione è una USB6008. L'idea è di acquisire i segnali di corrente (tramite TA)
e di tensione (tramite TV), condizionarli e ricavare i valori efficaci (V e I) tramite "Basic Avaraged DC-RMS.vi" (libreria Signal processing).
Riusciamo ad acquisire correttamente i due segnali utilizzando due canali analogici in modalità differenziale e riusciamo a visualizzari contemporaneamente sul GRAPH.
Riusciamo a determinare correttamente il valore RMS di tensione o di corrente ma non riusciamo a farlo contemporaneamente su entrambi : il problema è di estrarre dall'array in uscita dal DAQmx read i dati relativi alla corrente e alla tensione separatamente.
Ciò permetterebbe, oltre a ricavare i valori RMS di tensione (V) e corrente (I), di moltiplicare fra loro le waveform v(t) e i(t) per ricavare p(t) e, tramite il "Basic Avaraged DC-RMS.vi", il valore della potenza attiva P.
Riassumendo : come si possono separare i campioni di corrente e tensione presenti nell’array in uscita dal DAQmx read ?
Alleghiamo il VI per maggiore chiarezza e un pdf con i primi risultati.
Grazie per l’aiuto.
----------------------------------------
AUTORE: 1078
DATA :28/02/2011 - 08:41:30
----------------------------------------
Ho modificato il Vs VI, per non avere linee interrotte ho dovuto inizializzare il Task con due canali simulati. Voi dovrete collegare il VS task. Estratte le informazioni dovrete eseguire i calcoli. 100ms sono comunque pochini, per elaborare tutti i mille valori, dovrete verificare le tempistiche di esecuzione.
Se serve altro siamo a disposizione.
Buon lavoro.
----------------------------------------
================================================================================
Pannello LabVIEW che comanda un altro pannello
================================================================================
AUTORE: 3465
DATA :26/02/2011 - 11:55:51
----------------------------------------
Ciao a tutti,
voglio creare un pannello che si trova su un PC A che riesca a comandare un altro pannello che si trova su un PC B. I due PC comunicano su LAN mediante uno switch.
Qual è il modo più intelligente per fare ciò?
Grazie per i consigli.
----------------------------------------
AUTORE: 1078
DATA :28/02/2011 - 08:20:01
----------------------------------------
Esistono diversi metodi per fare quello che vuoi fare tu. Il più pratico è l'utlizzo delle Shared Variable ([url:12ozuqxa]http://zone.ni.com/devzone/cda/tut/p/id/12176[/url:12ozuqxa] e [url:12ozuqxa]http://zone.ni.com/devzone/cda/tut/p/id/4679[/url:12ozuqxa]) però è anche il più dispendioso in termini di prestazioni. Un'altro metodo è quello di gestire la comunicazione con data-socket ([url:12ozuqxa]http://zone.ni.com/devzone/cda/tut/p/id/3224[/url:12ozuqxa] e [url:12ozuqxa]http://zone.ni.com/devzone/cda/tut/p/id/3060[/url:12ozuqxa]). Questo tipo di comunicazione è alla fine una comunicazione seriale. In termini prestazionali il metodo migliore è quello di gestire il traffico dati e la comunicazione con il TCP ([url:12ozuqxa]http://zone.ni.com/devzone/cda/tut/p/id/2710[/url:12ozuqxa] e [url:12ozuqxa]http://zone.ni.com/devzone/cda/tut/p/id/4433[/url:12ozuqxa]) messo a disposizione da Labview.
----------------------------------------
AUTORE: 3465
DATA :10/03/2011 - 18:53:55
----------------------------------------
Ti ringrazio, ho risolto tutto tramite datasocket! Metodo molto semplice ed efficace!
----------------------------------------
================================================================================
Sorgente Two Wheeled Balancing
================================================================================
AUTORE: 3552
DATA :27/02/2011 - 19:24:39
----------------------------------------
Ciao a tutti, cerco il sorgente in labview dello strepitoso progetto HOT-V e LOT-V , presentato dall'università Rensselaer Polytechnic Institute.
Ora contattare l'università è impossibile perchè non rispondono.
Quelli della National Istrument non potrebbero dare una mano a reperire i sorgenti del progetto?
Vedo che anche in america c'è un grande interesse a capire come hanno strutturato il progetto in labview e sta anche nell'interesse di NI mostrare per studio e tutorial il sorgente!
Mi riferisco a questo:
http://zone.ni.com/devzone/cda/tut/p/id/4386
----------------------------------------
AUTORE: 1078
DATA :28/02/2011 - 07:50:30
----------------------------------------
Sei un pochino OT!
[quote="salviador":27i9iy1s]cerco il sorgente in labview dello strepitoso progetto HOT-V e LOT-V , presentato dall'università Rensselaer Polytechnic Institute.[/quote:27i9iy1s]
Non credo sia gratuito, quindi non credo che sarà facile reperire i sorgenti. Penso comunque che per qualunque informazione dovresti contattare direttamente l'università o chi ha sviluppato il progetto. Sono sicuro che la NI sia in grado di fornirti i nominativi delle persone a cui fare riferimento.
Ciao e buon lavoro!
----------------------------------------
================================================================================
salvare in html
================================================================================
AUTORE: 3286
DATA :01/03/2011 - 09:27:00
----------------------------------------
scusate la domanda... ma come si fa a salvare la struttura interna di un programma labview in html????
----------------------------------------
AUTORE: 660
DATA :01/03/2011 - 14:40:53
----------------------------------------
se intendi salvare il front panel ed il block diagram associato basta che segui la procedura di stampa ed alla fine anzichè mandare l'output sulla stampante lo invii ad un file html.
Max
----------------------------------------
AUTORE: 482
DATA :01/03/2011 - 15:41:12
----------------------------------------
se invece intendi creare una pagina internet da un programma labview, scordati l'HTML.
----------------------------------------
AUTORE: 3286
DATA :01/03/2011 - 15:50:32
----------------------------------------
La risposta di machyaer è proprio quella che mi serviva!! grazie mille
----------------------------------------
AUTORE: 3286
DATA :01/03/2011 - 16:04:21
----------------------------------------
Scusate ma non sono riuscito... praticamente sono andato in print windows e ho selezionato stampa su file, e quando mi chiede il file di output gli ho messo nome.html ma aprendolo il browser non lo riesce a leggere...
Una volta ero riuscito a farlo ma purtroppo, scusatemi, non mi ricordo come avevo fatto....
Cioè praticamente mi aveva creato una cartella con tutte le immagini e le visualizzavo tramite un file html che mi aveva creato in automatico
----------------------------------------
AUTORE: 660
DATA :01/03/2011 - 21:22:21
----------------------------------------
non mi è ben chiaro il tuo problema
dai una scorsa al file che ti allego e guarda se hai fatto tutto correttamente.
Ciao
Max[attachment=0:k4c4so5x]istruzioni HTML.pdf[/attachment:k4c4so5x]
----------------------------------------
================================================================================
Application builder e files dati di configurazione
================================================================================
AUTORE: 2279
DATA :02/03/2011 - 19:39:21
----------------------------------------
Ciao a tutti...
Ho recentemente comprato l'app builder per LV2010 e mi sto accingendo a fare il mio primo eseguibile (e possibilmente metterlo in un installer).
Il progetto da cui parto è abbastanza complesso, avente una VI "entry point" e varie subvi in diverse sottocartelle.
Il mio programma utilizza un file "settings.cfg" (il quale posso leggere e scrivere durante l'esecuzione del programma in vari punti).
La mia scelta è stata quella di mantenere il file (con un nome fisso) nella stessa carta della vi principale, in quanto per recuperarne il path faccio così:
dalla VI principale, uso "current vi path", e con "strip path", "build path" e una semplice stringa col nome del file, sono in grado di ottenere un percorso che salvo in una variabile globale e utilizzarlo nei vari punti del programma.
Fin qui tutto ok.
Utilizzando invece l'exe, le cose cambiano, in quanto nel "current vi path" appare una directory in più, ad esempio:
...\MyRoot\Myexe.exe\Myexe.vi
invece che
...\MyRoot\Myexe.vi
E questo mi scombina le carte, in quanto, anche se copio il file dati nella cartella dell'eseguibile questo non viene più trovato.
Ovviamente la soluzione sarebbe quella di aggiungere un blocco "strip path" e il gioco è fatto. In tal caso però, se volessi runnare direttamente la vi e non l'exe, non funzionerebbe. Insomma, in questo modo andrebbe o l'exe o il vi.
Qualcuno conosce un modo affinchè sia possibile farli funzionare entrambi?
Grazie mille, e spero di essermi spiegato
----------------------------------------
AUTORE: 482
DATA :03/03/2011 - 07:27:12
----------------------------------------
come hai detto tu, la soluzione è uno strip path in piu' e volendo, metti nel vi un case che se è un eseguibile fa lo strip in piu', se è in ambiente labview non lo fa.
Per fare questo usa l'allegato. Nel mio caso collegato al confronto c'e' un exit (perchè io questo blocco lo uso solitamente per i programmi che hanno un pulsante di uscita in modo da uscire da labview solo con l'eseguibile), nel tuo caso ci collegherai il case con lo strip path in piu'.
----------------------------------------
AUTORE: 43
DATA :03/03/2011 - 08:56:52
----------------------------------------
x Geppo:
argomento già ampiamente trattato. Un esempio su tutti.
viewtopic.php?f=1&t=4237&p=18940
Testare se la main app è LabvIEW.exe oppure no, non è il meglio visto che esiste un attributo che indica in quale ambiente sta girando l'applicazione
x Alle:
Trovo pessima la scelta di mettere dati e codice LabVIEW insieme, nella stessa cartella.
Immagina di avere un'applicazione "veramente" complessa dove il SW si deve caricare info di configurazione o dati in genere da molti file, magari dislocati in + cartelle...
Ovvio che lo stesso principio vale per il salvataggio dei file di dati, i log, e i cambi di configurazione: è buona pratica mettere tutti quei file fuori da ogni cartella che contenga file LabVIEW, come .VI, .ctl, classi, file di progetto ecc.
vedi l'esempio sotto
[attachment=0:2n25q26o]configfilepath.vi[/attachment:2n25q26o]
----------------------------------------
AUTORE: 2279
DATA :03/03/2011 - 11:11:13
----------------------------------------
Carissimi Paracarro e Geppo,
vi devo ringraziare infinitamente delle risposte
. siete stati chiarissimi... il fatto è che non ero a conoscenza dell'attributo dell'applicazione.
A questo punto il gioco è fatto...
Come giustamente diceva paracarro, la soluzione migliore è quella di utilizzare una cartella dedicata alle risorse, come file dati, di config, o nel mio caso anche immagini che vengono caricate dinamicamente, ma avevo scelto la stessa cartella nel tentare di far funzionare il tutto.
Grazie ancora!!!
----------------------------------------
AUTORE: 482
DATA :11/03/2011 - 10:10:27
----------------------------------------
Notavo ora che tra le costanti nella palette file, c'e' Application path, che restituisce già il percorso dove si trova l'applicazione, senza bisogno di strip path aggiuntivi.
----------------------------------------
================================================================================
property text selection e font color
================================================================================
AUTORE: 3297
DATA :03/03/2011 - 08:37:26
----------------------------------------
Io ho un indicatore string che è composto da una serie di stringhe, ognuna su una riga diversa. Ho la necessità di colorare
solo alcune di queste stringhe di colori diversi rispetto alle altre. Usando le property node "text selection start" e "text selection end"
e successivamente "text font color" riesco a farlo ma dato che l'indicatore ognitanto viene aggiornato con nuove stringhe,
succede che non appena ne aggiungo una nuova, mi colora tutte le stringhe dell'indicatore con lo stesso colore. Sembra quasi che modificando l'indicatore vengano inibite le property text selection e font color precedentemente utilizzate. La prima soluzione che ho adottato è di ricolorare tutte le stringhe ogni volta che viene aggiornato l'indicatore, ma dato che la sua dimensione con il passare del tempo è destinata ad aumentare, si arriva a un punto che l'esecuzione del sofware diventa troppo lenta.
Allego un vi di esempio.
----------------------------------------
AUTORE: 3297
DATA :03/03/2011 - 08:52:32
----------------------------------------
Dimenticavo, uso labview versione 7.1
Ho trovato questo vecchio post in cui se ne parlava ma non ho ben capito la soluzione proposta
[/url]http://ilvg.it/forum/viewtopic.php?f=1&t=4328&start=0&hilit=font+color
----------------------------------------
AUTORE: 1078
DATA :03/03/2011 - 09:54:06
----------------------------------------
Ciao nicolab,
ho dato un'occhiata al tuo VI e commetti un errore banale. Quando aggiungi una riga al controllo riassegni l'intero valore stringa del controllo cancellando il suo valore precedente, quindi la visualizzazione del testo prenderà il colore dell'ultimo colore assegnato alla proprietà text.color. Per risolvere il tuo problema ti sarà sufficiente ripetere il codice che utilizzi per inizializzare il controllo, quello del case 0 nella sequence case per intenderci, inserendolo nel case true che sarà eseguito dopo la pressione del tasto "aggiungi". Un consiglio che posso darti è quello di creare una SubVI con il codice che sarà ripetuto in modo da avere una manutenibilità e una scalabilità migliore.
Purtroppo non riesco a salvarti il VI modifica in una versione LV antecedente alla versione 8.0.
Spero sia chiara la spiegazione....
Se dovessi avere ancora bisogno vedremo come fare.....
Buon lavoro!
----------------------------------------
AUTORE: 1078
DATA :03/03/2011 - 09:58:23
----------------------------------------
Ti allego un'immagine.... ho dovuto comprimerla, spero non avrai difficoltà.
Nel post precedente mi sono dimenticato di dirti di temporizzare i cilci, altrimenti avrai grossi problemi di utilizzo della CPU...
----------------------------------------
AUTORE: 3297
DATA :03/03/2011 - 11:43:58
----------------------------------------
Grazie per la celere risposta.
Infatti il problema momentaneamente l'ho risolto proprio così, cioè rifacendo le istruzioni del case 0 ogni volta che aggiungo una nuova riga. Il vi che ho allegato era solo un esempio. Però purtroppo questa non è una soluzione ottimale in quanto se l'indicatore è composto da qualche decina di stringhe va tutto bene, ma se ne ha qualche centinaia o migliaia, il software diventa troppo lento.
Mi chiedevo se esistesse un sistema di aggiungere una nuova stringa senza modificare i vari cambiamenti al font color già effettuati.
Attualmente utilizzo il 7.1 per alcune esigenze ma comunque dispongo anche della versione 8.0.
----------------------------------------
AUTORE: 1078
DATA :04/03/2011 - 10:14:06
----------------------------------------
Perchè non provi ad usare la ReachTextBox, che trovi nella palet .NET, che dovrebbe mantere la formattazione del testo anche quando aggiungi testo. La tua procedura del resto dovrebbe andare bene.... Non ricordo però se con 7.1 puoi usare i controlli .NET!
----------------------------------------
AUTORE: 3297
DATA :07/03/2011 - 08:30:13
----------------------------------------
Ho trovato questo esempio ma è salvato in 8.5. Riusciresti a convertirlo in 8.0
----------------------------------------
AUTORE: 1078
DATA :10/03/2011 - 07:54:18
----------------------------------------
[quote="nicolab":1h1up00k]Ho trovato questo esempio ma è salvato in 8.5. Riusciresti a convertirlo in 8.0[/quote:1h1up00k]
Ecco il tuo esempio trasformato in LV 8.0.
Gli ho dato un'occhiata e non fa molto di più di quello che fai tu. Mi sono anche documentato un pochino di più e il problema che ahi quando inserisci una nuova linea persiste. Anche in questo caso quando scrivi la proprietà Text dell RTB sovrascrivi la formattazione precedente e quindi ti troveresti a dover rifare l'analisi di tutto il testo e a riformattarlo. La cosa che potresti verificare e che io non ho avuto il tempo di fare è: verificare se nelle proprietà della RTB ce nè una che ti permette di recuperare il testo e la sua formattazione, al valore stringa recuperato dovrai aggiungere la stringa che devi aggiungere. Poi recuperi la posizione di inizio e fine e ne evidenzi il testo ma solo della stringa aggiunta. Per avere maggiori informazioni su come funziona una RTB dovresti guardare sul sito microsoft.
Buon lavoro.
----------------------------------------
AUTORE: 3297
DATA :15/03/2011 - 16:58:31
----------------------------------------
Utilizzando la funzione RichTextBox ci sono riuscito in questo modo: ogni volta che inserisco una nuova stringa utilizzo il metodo "Append Text", successivamente eseguo un controllo per decidere se devo colorare la stringa appena inserita, poi salvo la richtextbox in un file .rtf utilizzando il metodo "Save File". In questo modo salvo sia le stringhe che la formattazione del testo. Quando ricevo una nuova stringa da salvare rieseguo di nuovo questa sequenza.
Ti ringrazio per l'aiuto. Mi rimane da risolvere un ultimo particolare: il metodo "Append Text" mi permette di inserire del testo solo in coda a quello che c'è già, mentre nel mio caso dovrei riuscire ad inserire ogni nuova stringa all'inizio del file.
Allego il vi di esempio.
----------------------------------------
================================================================================
Il modulo LabVIEW 8.5 DSC è compatibile con Windows 7?
================================================================================
AUTORE: 822
DATA :07/03/2011 - 14:19:05
----------------------------------------
Ciao a tutti, ho già scritto anche sul forum national ma provo a postare la domanda anche qui, magari qualcuno di voi ha avuto lo stesso problema.
Non riesco ad installare il modulo DSC, mi dice che il software non è compatibile, ma non capisco se è legato a windows 7 oppure ad altro..
voi sapete se è compatibile co windows 7?
Grazie
Giuseppe
----------------------------------------
AUTORE: 43
DATA :07/03/2011 - 14:43:10
----------------------------------------
http://digital.natinst.com/public.nsf/$ ... e_DSC.html
La versione 8.5.1 del dicembre 2007 supporta Vista ma non Windows 7.
Come è evidente nel Read Me al paragrafo "Supported Platforms"
bye
----------------------------------------
AUTORE: 822
DATA :07/03/2011 - 16:06:42
----------------------------------------
grazie mille, avevo letto anche io quella info, ma essendo windows 7 più recente speravo non fosse aggiornata..
----------------------------------------
================================================================================
Messaggio all'utente con barra di attesa
================================================================================
AUTORE: 3465
DATA :10/03/2011 - 18:57:40
----------------------------------------
Salve a tutti,
premendo un bottone da un pannello parte una procedura su un secondo pannello che restituisce un risultato al primo dopo tot secondi. Mentre si è in attesa del risultato sul primo pannello appare un messaggio con su scritto "please wait". Esiste un modo semplice per far lampeggiare il message box (non solo il testo!) e inserire una progress bar sotto?
Grazie mille
----------------------------------------
AUTORE: 927
DATA :11/03/2011 - 09:42:28
----------------------------------------
Esiste il controllo "progress bar", sta sotto "Numeric". Non si muove da solo ma deve controllarlo il programma, passandogli periodicamente un valore numerico proporzionale al progresso.
Con message box cosa intendi esattamente? Se è un controllo sul frontpanel, puoi dargli la proprietà "blinking" con un Property node
----------------------------------------
AUTORE: 3465
DATA :12/03/2011 - 11:04:33
----------------------------------------
Vorrei fare la seguente cosa:
Quando l'utente clicca un apposito bottone (che fa partire una procedura che dura circa 1 minuto) deve apparire un rettangolo al centro dello schermo con la scritta "Procedura in progress...." che magari lampeggia e sotto c'è una barra che indica il progresso. Al termine della procedura sia la barra che il rettangolo con la scritta devono sparire.
----------------------------------------
AUTORE: 482
DATA :14/03/2011 - 07:16:51
----------------------------------------
Tutto fattibilissimo, non c'e' pero' niente di già fatto.
un esempio di come fare potrebbe essere:
Crei un cluster con la scritta e la progress bar e lo piazzi in mezzo allo schermo, sopra a tutto.
A inizio programa setti la proprietà Visible di quel cluster a FALSE.
Quando premi il pulsante, cambi la proprietà a TRUE e da qualche parte nel programma fai fare i calcoli che fanno incrementare la progress bar.
Quando ha caricato tutto, settiancora la proprietà a false.
----------------------------------------
AUTORE: 645
DATA :14/03/2011 - 14:37:05
----------------------------------------
Io usavo un popup, un VI secondario nel quale posizionavo solo una progress bar con valori tra 0 e 100; passi alla progress bar un numero (tra 0 e 100) a seconda del tempo trascorso oppure, come facevo io, un numero proporzionale alla quantità di dati caricati da un database.
Al termine chiudi il popup (puoi usare il VI Server per aprire un VI e bloccare il funzionamento del VI principale fino al termine del caricamento dati per impedire all'utente di interrompere il programma).
----------------------------------------
================================================================================
Re: Dritte per sito
================================================================================
AUTORE: 482
DATA :14/03/2011 - 07:18:27
----------------------------------------
ponendo di avere un sito che parla di programmazione labview E ARGOMENTI INERENTI, quali sono le caratteristiche che un topic deve avere per avere il diritto di restare in quel forum?
----------------------------------------
================================================================================
resettare un led
================================================================================
AUTORE: 1308
DATA :14/03/2011 - 13:50:27
----------------------------------------
ciao a tutti, rieccomi...
oggi mi trovo di fronte ad un problema che dovrebbe essere tra i piu semplici ma sembra non essere cosi...
sto acq 2 AI e ho impostato tramite condizioni boleane che quando un segnale è compreso in un range e il secondo nello stesso momento è compreso in un altro range definito mi si deve accendere un segnale TRUE.
il mio problema è che la condizione ,quando si verifica, è talmente veloce che fatico a vedere il led che si accende e poi si rispegne.
per tentare di risolvere il problema ho messo il led in un loop count e il tutto dentro in un case structure comandando il T/F con il valore boleano che esce dalla condizione. questo permette di mantenere acceso il led ma poi come lo posso rispegnere o resettare ?
grazie a chi mi prestera un minuto
----------------------------------------
AUTORE: 1050
DATA :14/03/2011 - 14:26:19
----------------------------------------
Ciao,
se devi monitorare variazioni così veloci invece di usare un led potresti usare p.es. un chart: aggiungi un valore 0 al chart ad ogni acquisizione non in range, valore 1 quando è in range. In tal modo dal grafico il fenomeno si osserverebbe meglio e ti permetterebbe anche di risalire al tempo in cui si è verificato (asse X).
----------------------------------------
AUTORE: 1308
DATA :14/03/2011 - 14:30:52
----------------------------------------
bella idea, tra le 1000 cose a cui sto pensando a questa proprio non ci sarei mai arrivato. pero questa idea la tengo nel cassetto perche al momento il capo vuole un segnale luminoso....
grazie cmq
----------------------------------------
AUTORE: 1308
DATA :14/03/2011 - 14:32:51
----------------------------------------
forse la soluzione sarebbe in un timed structure ma io non li so usare
----------------------------------------
AUTORE: 645
DATA :14/03/2011 - 15:39:35
----------------------------------------
Puoi lavorare in diversi modi:
a) lasci acceso il led per un po' di tempo, intanto il programma principale continua a funzionare e "ignori" il programma principale fino al termine del tempo di accensione... Poi ricominci a gestire il led collegato al VI principale;
b) come la soluzione a) ma interrompi il programma principale evitando la gestione di quello che succede mentre fai funzionare il led;
c) al posto del led usi un contatore e la segnalazione led scatta ogni tot di volte contate.
----------------------------------------
AUTORE: 1308
DATA :15/03/2011 - 07:28:27
----------------------------------------
buongiorno a tutti, la notte ha portato consiglio anche se non ho dormito benissimo..
ho risolto in questo modo.
l'impulso dell' evento cercato mi fa accendere il led e a fine prova per riazzerare il tutto lo resetto col pulsante
----------------------------------------
================================================================================
richiamare funzione in un evento di event case
================================================================================
AUTORE: 3598
DATA :18/03/2011 - 11:38:58
----------------------------------------
ciao, ho labview 2009 sp1 e volevo chiedere una cosa: ho un event case con due eventi ed ho necessità di richiamare la funzione dentro uno dei due dall'altro evento. Come si può fare?
Grazie!!!
----------------------------------------
AUTORE: 43
DATA :20/03/2011 - 08:18:52
----------------------------------------
[quote="dxmann":1fb3bp7y]ciao, ho labview 2009 sp1 e volevo chiedere una cosa: ho un event case con due eventi ed ho necessità di richiamare la funzione dentro uno dei due dall'altro evento. Come si può fare?
Grazie!!![/quote:1fb3bp7y]
Crea un subvi e richiamalo in entrambi i case. Se il VI modifica controlli e indicatori del Front-Panel, passa i ref. di tali controlli/indicatori al subvi.
Per creare il subVi partendo dal codice già scritto:
Seleziona il codice (seleziona clickando la diagonale del rettangolo che contiene il codice nel case) poi da menu Edit--> Create SubVI
Oppure
Crea un semplice case fuori dall'event case e mettici dentro il codice che devi eseguire in entrambi i casi. Fai in modo che il case selector sia un booleano in modo che venga eseguito solo al termine dell'esecuzione dell'event case e solo per i case che avranno quel valore posto a True[attachment=0:1fb3bp7y]CaseEventCase.JPG[/attachment:1fb3bp7y]Va da se che se la esecuzione di quella parte di codice va fatta in anticipo rispetto al contenuto dell'event case, questa soluzione non è applicabile
bye
----------------------------------------
AUTORE: 3598
DATA :22/03/2011 - 07:53:31
----------------------------------------
Ciao, scusa il ritardo, comunque mi piace di più la seconda, dato che la prima è proprio quella che volevo evitare
.
Una cosa: se ho capito bene la struttura case la metto nel while che circonda la struttura event; e comunque non è possibile richiamare quell'evento con la manipolazione della coda degli eventi, vero?
----------------------------------------
AUTORE: 43
DATA :22/03/2011 - 09:00:18
----------------------------------------
[quote="dxmann":2833w8qg]Ciao, scusa il ritardo, comunque mi piace di più la seconda, dato che la prima è proprio quella che volevo evitare
.
Una cosa: se ho capito bene la struttura case la metto nel while che circonda la struttura event; e comunque non è possibile richiamare quell'evento con la manipolazione della coda degli eventi, vero?[/quote:2833w8qg]
Questo argomento è ampiamente trattato nel forum.
Esistono 2 modi per generare programmaticamente eventi validi per il thread che gestisce l'interfaccia HMI, cioè gli eventi del FrontPanel:
- per ogni controllo o indicatore esistono 2 proprietà simili: "Value" e "Value (Signaling). La prima è una proprietà valida in lettura e scrittura e costituisce il valore inteso come contenuto della variabile associata al controllo/indicatore grafico visibile nel FP. La seconda è una proprietà Write Only e scrive esattamente nella stessa variabile (area di memoria). Oltre alla scrittura della variabile viene generato un evento di "Value changed" associato a quel controllo. Cmq sia, basta leggere l'Help di LabVIEW, può bastare anche il "Context Help"
- il secondo metodo consiste nel generare eventi "User defined"
Ti giro un vecchio esempio già postato non so dove...[attachment=0:2833w8qg]userEvent.vi[/attachment:2833w8qg]
Confermo che la struttura case devi metterla, ovviamente, dentro il while che circonda la struttura event.
bye
----------------------------------------
AUTORE: 3598
DATA :22/03/2011 - 09:23:08
----------------------------------------
Grazie!!! avevo già visto questa proprietà ma non ricordavo proprio dove!!! Grazie!
Comunque vedrò di cercare meglio le prossime volte...
----------------------------------------
================================================================================
lanciare un VI eseguibile
================================================================================
AUTORE: 3558
DATA :18/03/2011 - 15:39:08
----------------------------------------
Ciao a tutti,
ho un programma che mi ricerca un determinato file, un .exe; col mio programmino lo trovo e mi tiro fuori il path che mi serve. Come posso lanciarlo in automatico??
(per capirci: ho una cartella sul disco rigido contenente centinaia di eseguibili, tutti in cartelle diverse... una volta che il mio programmino mi dice dov'è quello che cerco, vorrei poterlo lanciare...)
qualcuno mi sa aiutare??
THANKS A LOT...
----------------------------------------
AUTORE: 43
DATA :20/03/2011 - 08:35:01
----------------------------------------
[quote="lucdalm":1uh42c1y]Ciao a tutti,
ho un programma che mi ricerca un determinato file, un .exe; col mio programmino lo trovo e mi tiro fuori il path che mi serve. Come posso lanciarlo in automatico??
(per capirci: ho una cartella sul disco rigido contenente centinaia di eseguibili, tutti in cartelle diverse... una volta che il mio programmino mi dice dov'è quello che cerco, vorrei poterlo lanciare...)
qualcuno mi sa aiutare??
THANKS A LOT...[/quote:1uh42c1y]
Devi eseguire una Shell
Ci sono un bel po' di esempi in questo Forum di chiamate al VI "System exec.vi".
Questo è il percorso per richiamare la funzione dalla Function Palette:
[attachment=0:1uh42c1y]SystemExec.JPG[/attachment:1uh42c1y]
puoi chiamare il tuo eseguibile specificando il percorso completo come da cmd line, oppure, se preferisci scrivi la stessa stringa dentro un file .bat e poi richiami lo stesso VI conpassando il path completo al file .bat
Consulta l'Help di LabVIEw per capire meglio come funziona System Exec.vi
bye
----------------------------------------
================================================================================
collegamento pc-strumento tramite porta USB
================================================================================
AUTORE: 3599
DATA :18/03/2011 - 16:35:05
----------------------------------------
Salve a tutti
prima di tutto volevo farvi i complimenti x il forum...lo trovo veramente utile
poi volevo porvi questa domanda:
mi trovo a dover elaborare un programma in labview x il controllo remoto dell'analizzatore di spettro Rohde&Schwartz FSH6(qualcuno lo conosce???)
Il mio problema è che il collegamento tramite pc nn è cn porta seriale ma cn una porta USB....qualcuno sa darmi qualche dritta su come muovermi???
Grazie a tutti e buon pomeriggio
----------------------------------------
AUTORE: 43
DATA :20/03/2011 - 08:50:15
----------------------------------------
[quote="raffy":1vav4iv4]Salve a tutti
prima di tutto volevo farvi i complimenti x il forum...lo trovo veramente utile
poi volevo porvi questa domanda:
mi trovo a dover elaborare un programma in labview x il controllo remoto dell'analizzatore di spettro Rohde&Schwartz FSH6(qualcuno lo conosce???)
Il mio problema è che il collegamento tramite pc nn è cn porta seriale ma cn una porta USB....qualcuno sa darmi qualche dritta su come muovermi???
Grazie a tutti e buon pomeriggio
[/quote:1vav4iv4]
Non conosco lo strumento
Non ci sono driver sul sito del produttore? [url=http://www.rohde-schwarz.it/it/service_and_support/Downloads/download_search/?searchtype=1&_view=&pgroup=&downloadtype=all&download_b=210:1vav4iv4]Clicka Qui[/url:1vav4iv4]
Potrebbe anche essere che quel collegamento USB simuli un collegamento RS232... hai verificato dalle risorse di sistema se, collegando al PC il cavetto USB dello strumento, appare una nuova porta seriale? ricordiamoci che ormai di connettori 9 poli classici seriali, sui PC, se ne vedono sempre meno... stanno facendo la stessa fine dell'interfaccia parallela...
bye
----------------------------------------
================================================================================
da double ad intero senza perdita dati
================================================================================
AUTORE: 3428
DATA :21/03/2011 - 15:31:19
----------------------------------------
Salve, ho un piccolo problema, forse risolvibile in pochi passi..
Allora devo poter immettere un valore (un double) in una form del mio front panel per poi rileggerlo all'interno di una vi. L'ho già fatto per altri valori ma ora il mio double vale meno di 1, quindi non è un intero e tramite lo "split number" (che vuole in ingresso solo interi) lo splittavo per avere i miei 2 byte che formeranno la word finale che mi servirà.
Ora dovrei inserire diversi valori compresi tra 0 e 1 e ovviamente appena trasformo il double in intero mi restituisce uno 0...
Spero ci sia la soluzione e sia solo una mia ignoranza informatica binaria... in allegato un es.
Come posso fare? Floating point?
Grazie
----------------------------------------
AUTORE: 43
DATA :21/03/2011 - 16:49:39
----------------------------------------
[quote="renaso":2yjo29z7]... tramite lo "split number" (che vuole in ingresso solo interi) lo splittavo per avere i miei 2 byte che formeranno la word finale che mi servirà....[/quote:2yjo29z7]
ahhhh!
Se lo dici Tu
Ti interessa la "word finale", maddechè?!?!?.
Cosa ci devi fare? devi scrivere numeri dentro un file?
Passarli ad una applicazione scrittain VB (...form...), come?
Prima chiarisci cosa vuoi e poi Ti diamo una mano...
bye
----------------------------------------
AUTORE: 3428
DATA :21/03/2011 - 17:03:23
----------------------------------------
scusate il vago..
Io scirvo ad esempio uno 0,22 lui tramite quella vi me lo mette in massimo 16 bit, quindi una word che saranno interpretati tramite il profibus da un motore.
In sostanza quello che mi servirebbe sarebbe qualcosa per trasformare un double nei 16 bit in binario che mi servono, quindi ammettiamo passassi il numero in floating point, queslto è possibile con soli 16 bit?
Oppure mi era venuta in mente forse l'idea più stupida del mondo cioè separare il num in ingresso dalla parte prima la vigola e quella dopo. Poi applicare il metodo delle divisioni successive per l'intera e delle moltiplicazioni successive per la decimale... non so come fare ma sicuramente il risultato sarebbe quello che voglio io...
----------------------------------------
AUTORE: 43
DATA :21/03/2011 - 20:45:27
----------------------------------------
[quote="renaso":11h58nze]scusate il vago..
Io scirvo ad esempio uno 0,22 lui tramite quella vi me lo mette in massimo 16 bit, quindi una word che saranno interpretati tramite il profibus da un motore.
In sostanza quello che mi servirebbe sarebbe qualcosa per trasformare un double nei 16 bit in binario che mi servono, quindi ammettiamo passassi il numero in floating point, queslto è possibile con soli 16 bit?
Oppure mi era venuta in mente forse l'idea più stupida del mondo cioè separare il num in ingresso dalla parte prima la vigola e quella dopo. Poi applicare il metodo delle divisioni successive per l'intera e delle moltiplicazioni successive per la decimale... non so come fare ma sicuramente il risultato sarebbe quello che voglio io...[/quote:11h58nze]
Si comincia a vedere luce in fondo al tunnel...
c'è un azionamento o un inverter che pilota un motore.
Con l'azionamento si comunica tramite Profibus
... mmmmm
ma c'è un manuale di riferimento?
nel senso che ogni grandezza dell'inverter che viene letta o scritta viene espressa secondo una unità di misura ingegneristica.
Mi è capitato di dover comunicare con un controllori che spesso sono dotati di miseri display in grado visualizzare solo poche cifre a sette segmenti...
Spesso capita che uno dei parametri da impostare sia proprio il numero di decimali, cioè la posizione del punto rispetto al numero intero che viene passato.
Una volta scoperto il meccanismo, invece di impostare un parametro per es espresso in m (metri) sapendo che le cifre decimali attese sono 2 , si dovranno passare cm (centimetri)
Perciò il numero in virgola mobile va moltiplicato per un multiplo di 10 (x100= 2 cifre decimali, x1000=3 cifre decimali) e va arrotondato all'intero + vicino prima di essere spedito via profibus all'azionamento.
bye
----------------------------------------
AUTORE: 3428
DATA :22/03/2011 - 07:41:56
----------------------------------------
Ok grazie, è anche il consiglio che mi è stato dato stamane.. Provo a moltiplicare e vedere a come viene interpretato dall'azionamento..
Grazie
----------------------------------------
================================================================================
Accumulazione dati con array e cluster
================================================================================
AUTORE: 3051
DATA :22/03/2011 - 15:00:17
----------------------------------------
Scusate la domanda ma non ci sto cavando le gambe. Oltretutto non so come porre la domanda in "LABVIEWese" quindi cerco di descrivere il problema e magari qualche volenteroso riesce a tradurmi la soluzione...
Se c'è qualche addetto ai lavori, sto cercando di fare spettroscopia accumulando più spettri e poi mediandoli fra loro.
In pratica sto cercando di creare una routine che ripeta la stessa misura n volte, e poi mi faccia la media sulle n ripetizioni. Il problema è che ogni misura è composta da a sua volta da una serie di punti misurati di diversa natura (con luce di diversi colori, diciamo 10 punti) e quindi ripetendo l'intera misura mi troverei con una serie di n vettori di 10 elementi ciascuno. Quello che interesserebbe a me a questo punto è la media delle n misure del colore di indice 0, la media delle n misure del colore di indice 1, etc etc fino al 10: alla fine avrei un vettore unico di 10 elementi ognuno dei quali sarebbe la media dei corrispondenti punti delle n ripetizioni.
Il mio problema è che non ho ben compreso la meccanica di array, cluster etc per immagazzinare e trattare i dati e sto facendo un gran casino.
Provo ad allegare un miniVI in cui cercavo di capire come si potesse risolvere il problema: sostanzialmente cerco di generare 5 serie di 10 numeri casuali ciascuna, e vorrei alla fine un unico vettore di 10 elementi, ognuno dei quali media dei 5 corrispondenti valori di ogni serie. (In realtà non capito neanche come si fa a creare semplicemente un array di numeri con n righe e m colonne!!
)
P.S. Qualcuno magari mi suggerirebbe di invertire le misure, prendendo n volte ogni valore e poi mediandolo, però per ragioni mie preferirei cercare di procedere in questo modo. Se ci riesco...
Grazie
----------------------------------------
AUTORE: 43
DATA :23/03/2011 - 08:38:58
----------------------------------------
una possibile soluzione
[attachment=0:7ncf220a]MediaArray.vi[/attachment:7ncf220a]
bye
----------------------------------------
AUTORE: 3051
DATA :24/03/2011 - 12:25:24
----------------------------------------
Grazie mille...penso con questo di aver risolto.
Fondamentalmente mi pare che il mio problema fosse di non aver capito l'ordine in cui organizza i dati nell'array. Infatti non avrei mai pensato di aggiungere il "TRASPOSE ARRAY". Ma scusa poi, ma quello parla di TRASPOSE 2D ARRAY...io mica gli mando un array 2D...mah...
Grazie ancora
----------------------------------------
AUTORE: 43
DATA :24/03/2011 - 14:16:55
----------------------------------------
[quote="jankafi":kikpk4dq]Grazie mille...penso con questo di aver risolto.
Fondamentalmente mi pare che il mio problema fosse di non aver capito l'ordine in cui organizza i dati nell'array. Infatti non avrei mai pensato di aggiungere il "TRASPOSE ARRAY". Ma scusa poi, ma quello parla di TRASPOSE 2D ARRAY...io mica gli mando un array 2D...mah...
Grazie ancora[/quote:kikpk4dq]
Mah! a me il mio VI sembrava chiaro:
Ad ogni acquisizione si ottiene un array di valori. Nel mio esempio array di 20 elementi.
Raccolte un certo numero di acquisizioni (nel mio esempio 6 acquisizioni) si "accostano" fino a formare una matrice:
ogni "riga" costituisce una acquisizione e nel contempo costituisce una traccia da visualizzare nel grafico.
Per ottenere il valor medio per ogni indice dell'array di una singola acquisizione (l'array dei valori medi deve essere di 20 elementi) bisogna calcolare i valor medi di ogni colonna della martrice, come ben visibile del mio esempio.
Usando la funzione di "autoindexing" degli array in ingresso ad un ciclo for di LaBVIEW, otterremmo nuovamente ad ogni passaggio del ciclo, ogni acquisizione presa singolarmente, cioè una riga per volta.
Sfruttando questa caratteristica si crea la "trasposta" della "matrice di acquisizioni": in questo modo il 'ciclo for' calcolerà i 20 valor medi a prescindere dal numero di acqusizioni "impacchettate".
Aggiungendo in fondo alla matrice NON TRASPOSTA , come ultima riga, l'array dei valori medi, si otterrà una matrice che potrà essere graficata in un sol colpo.
considerando che per ogni numero in virgola mobile vengono occupati 8(Double) o 4(float) byte, se non si costruiscono matrici esageratamente grandi in RAM, il tuo programmino potrà girare senza problemi...
bye
bye
----------------------------------------
================================================================================
Treno di impulsi
================================================================================
AUTORE: 3522
DATA :22/03/2011 - 18:11:57
----------------------------------------
Ciao a tutti, dovrei creare un treno di impulsi in labview 7.1, le caratteristiche di tale treno sono variabili dall'utente e sono:
Durata = 0.1;1 ms
Ampiezza = 1;5 V
Periodicità = 5;20 ms (un impulso ogni 5-20 ms) ciò equivale a dire Frequenza = 200Hz per periodicità = 5ms oppure Frequenza = 50Hz per periodicità = 20ms .
Allego un'immagine per rendere meglio l'idea.
[attachment=0:18gywahp]treno impulsi.jpg[/attachment:18gywahp]
Questo treno mi serve per poi implementare una modulazione PPM.
Spero che qualcuno tra voi possa aiutarmi.
Grazie in anticipo.
----------------------------------------
AUTORE: 43
DATA :23/03/2011 - 08:56:55
----------------------------------------
Capisco la specifica dell' "output" atteso.
Ma qualche specifica sugli "input" non ce l'hai?
Per es.:
Hai a tua disposizione già del materiale o devi scegliere l'HW ?
Se hai già "qualcosa"...
Di quale scheda per la generazione degli impulsi disponi?
bye
----------------------------------------
AUTORE: 3522
DATA :23/03/2011 - 09:50:36
----------------------------------------
Ciao paracarro, grazie per la tua disponibilità, non devo usare alcun hardware ma solo simulare graficamente un treno di impulsi creando i controlli che ne modificano le caratteristiche per poi modularlo ppm, si tratta di una traccia di un progetto che devo fare per l'università e che al momento mi sta impedendo di laurearmi, premetto che studio ingegneria aerospaziele, non elettronica quindi potrei essere impreciso su molte cose oltre a non essere ferrato in programmazion con labview.
In ogni caso già postai la traccia molto tempo fa: [url:3v77v5zh]http://www.ilvg.it/forum/viewtopic.php?f=1&t=5001[/url:3v77v5zh] così magari puoi renderti conto meglio del probelma.
Grazie ancora per il tuo interessamento.
----------------------------------------
AUTORE: 2550
DATA :28/04/2011 - 11:49:08
----------------------------------------
Ciao!
Forse per una semplice generazione di impulsi potrebbe andarti bene questo piccolo esempio.
Te lo allego.
Ciao
----------------------------------------
================================================================================
volume mixer di windows
================================================================================
AUTORE: 3297
DATA :24/03/2011 - 09:14:30
----------------------------------------
Mi servirebbe una funzione che mi permetta di conoscere il livello del volume della scheda audio. Ho trovato varie funzioni che servono per impostare i volumi, un'altra che mi restituisce il livello del canale wave, ma nessuna che mi restituisca il livello generale (per capirci il primo slide del mixer di windows chiamato semplicemente "controllo volume"). Da quello che ho visto, i vi che ho trovato e che allego utilizzano le librerie winmm.dll e kernel32.dll. Ho fatto dei tentativi utilizzando le funzioni contenute in questi file ma senza successo.
----------------------------------------
AUTORE: 3532
DATA :03/05/2011 - 21:09:45
----------------------------------------
Ciao,
il vi MixerControl della LLB Manager, che hai allegato, sembra che faccia quello che chiedi, ti permette di operare sul master del mixer.
Bye
Fabio
----------------------------------------
AUTORE: 3532
DATA :03/05/2011 - 21:12:29
----------------------------------------
Scusa, la libreria è "Volume Control 1.llb"
----------------------------------------
================================================================================
Da File ad Array e quindi a ComboBox
================================================================================
AUTORE: 3612
DATA :24/03/2011 - 16:56:08
----------------------------------------
Buongiorna a tutti,
sono un nuovo utente del forum e spero di poter risolvere un problemino ke mi "attanaglia" con LabView...
In pratica io ho un file .ini in cui, con un precisa formattazione, ho dei valori (stringhe) separati da un TAB, su diverse righe (in pratica una tabella)
[b:ziqyn80k]Il mio scopo è quello di visualizzare in 2 ComboBox diverse il valore della 1ª colonna, in base al valore della 2ª colonna[/b:ziqyn80k],
(tipo combo box 1 - maschi, 2 - femmine)...
C'è qualcuno ke è in grado di aiutarmi?
Io, per ora, sono riuscito ad estrarre tutti i valori della prima colonna e posizionarli prima in un array e quindi in una unica ComboBox, ma non ho trovato un modo di separali (in base al valore della seconda colonna) in 2 combo box distinte...
Grazie in anticipo
----------------------------------------
AUTORE: 482
DATA :25/03/2011 - 07:33:11
----------------------------------------
Se sei già riuscito a mettere il tutto nella combo box, direi che hai le capacità per fare quello che vuoi fare.
Si tratta di pura programmazione labview, dei case e un po' di manipolazione di array.
tipo:
se il valore della seconda colonna è X, allora:
nascondo la seconda combo box
nella prima combo box metto tutti gli elementi della prima colonna.
se il valore della seconda colonna è Y, allora:
visualizzo tutte e due lecombo box, una con i valori da 0 a 10 e laltra con i valori da 11 a 20.
Importante è sapere che non puoi CREARE i controlli programmaticamente. Le due combo box devono già esistere a priori, tu devi solo usare la proprietà visible per visualizzarle o nasconderle.
----------------------------------------
AUTORE: 1078
DATA :25/03/2011 - 10:49:31
----------------------------------------
[quote="fales77":h5m0sn8o]In pratica io ho un file .ini in cui, con un precisa formattazione, ho dei valori (stringhe) separati da un TAB, su diverse righe (in pratica una tabella)[/quote:h5m0sn8o]
Perchè un file .ini?
Se non ho capito male tu hai un file (ini) che presenta una struttura di questo tipo:
dato colonna 1 <TAB> dato colonna 2 <CRLF>
dato colonna 1 <TAB> dato colonna 2 <CRLF>
dato colonna 1 <TAB> dato colonna 2 <CRLF>
....
è corretto?
Se è così, il primo errore che fai è usare i file INI. Al posto di usare il file INI, ti consiglio di usare un file txt. Labview ha poi una funzione che si chiama [i:h5m0sn8o][b:h5m0sn8o]read from spreadsheet file[/b:h5m0sn8o][/i:h5m0sn8o] che ti separa automaticamente i valori in un array bidimensionale, a questo punto puoi tranquillamente usare le funzioni degli array, in particolare la [b:h5m0sn8o]array subset [/b:h5m0sn8o]o la [b:h5m0sn8o]index array [/b:h5m0sn8o]che ti permetteranno di recuperare solo le colonne a cui sei interessato.
Giusto una nota.
I file INI sono speciali file di configurazione, non file di data sourcing.
Ciao e buon lavoro.
----------------------------------------
AUTORE: 3612
DATA :25/03/2011 - 18:22:32
----------------------------------------
Grazie 1000 x i suggerimenti...
Uso un file .ini xkè in azienda da me sono abituati ad usare questa estensione x i fili di configurazione, ho provato ad usare i file .txt e va bene lo stesso...
Invece x quanto riguarda le funzioni ARRAY... adesso ho trovato una soluzione con array subset, xò questo implica ke all'interno del file i record (le righe), devono essere già ordinate secondo il dato della colonna 2 (nel mio caso)... e così in effetti funziona! ho le mie 2 ComboBox valorizzate con i dati della colonna 1...
Grazie ancora...
Ciao
----------------------------------------
================================================================================
datasocket server
================================================================================
AUTORE: 3465
DATA :28/03/2011 - 07:04:20
----------------------------------------
Salve a tutti,
ho realizzato dei pannelli utilizzando la funzionalità datasocket. Volevo sapere se esiste un modo automatico di aprire il datasocket server solamente quando vengono aperti dei pannelli che ne fanno uso senza doverlo ogni volta farlo a mano io.
Grazie
----------------------------------------
AUTORE: 482
DATA :28/03/2011 - 07:13:43
----------------------------------------
bata che lanci l'eseguibile tramite la funzione "system exec" ogni volta che apri il vi.
----------------------------------------
AUTORE: 43
DATA :28/03/2011 - 10:27:28
----------------------------------------
[quote="daniroma83":3n0m3ge4]Salve a tutti,
ho realizzato dei pannelli utilizzando la funzionalità datasocket. Volevo sapere se esiste un modo automatico di aprire il datasocket server solamente quando vengono aperti dei pannelli che ne fanno uso senza doverlo ogni volta farlo a mano io.
Grazie[/quote:3n0m3ge4]
Non so che versione di LabVIEW usi ma, con questo VI:
<LabVIEW DIR>\vi.lib\Platform\dataskt.llb\DataSocket Server Control.vi
puoi lanciare programmaticamente il Datasocket server, rederlo "invisibile"/"visibile" e chiuderelo all'uscita dall'applicazione...
bye
----------------------------------------
================================================================================
Salvare a caricare valori di default
================================================================================
AUTORE: 1168
DATA :28/03/2011 - 07:48:38
----------------------------------------
Buongiorno a tutti.
spesso, per definire delle configurazioni ricorro all'uso di file .ini tanto comodi.
Solo che ora mi trovo davanti a un pannello con un tab control che contiene un centinaio di controlli!
Esiste un modo furbo per fare in modo che LV scorra tutti i controlli e automaticamente ne legga il label e il valore? Scrivo in metacodice:
for i=1 to "Ncontrolli sul pannello"
NomeChiave= labelcontrollo
ValoreChiave= valorecontrollo
ScriviFileIni (NomeChiave, ValoreChiave)
next i
Potrebbe essere comodo sempre...
----------------------------------------
AUTORE: 1050
DATA :29/03/2011 - 08:47:33
----------------------------------------
Ciao,
non ho ben capito se la tua è una richiesta di un esempio o una considerazione.
Comunque se può servire ecco un esempio (in labview 2009).
ciao
----------------------------------------
AUTORE: 1168
DATA :29/03/2011 - 10:28:46
----------------------------------------
Yessss... grazie mille!
----------------------------------------
================================================================================
Producer Consumer "customizzato"
================================================================================
AUTORE: 2279
DATA :28/03/2011 - 19:12:32
----------------------------------------
Ciao A tutti,
vorrei sfruttare la vostra disponibilità per effettuare la seguente domanda:
sto creando un programma per il controllo di un diciamo così "frigorifero": tramite un compact daq acquisisco delle temperature, pressioni, giri del compressore etc etc, con una cadenza di 1 campione al secondo.
Tali valori saranno processati da un algoritmo di controllo il quale calcola la velocità a cui far girare le ventole dello scambiatore, il compressore e altre cose (con una velocità di aggiornamento di 1hz anche in questo caso).
La mia idea era quella di cercare di suddividere in loop separati i seguenti task:
acquisizione (semplificando un po diciamo che sono soltanto letture su daq di valori analogici)
processing (ovvero calcolo dei "set point", tramite un controllo di qualche natura)
comando (ovvero la "scrittura" su daq, cioè la generazione dei valori di comando, tutti analogici)
gestione interfaccia utente (ovvero visualizzazione dei vari valori e eventuale gestione di eventi generati dall'utente).
per far ciò avevo scelto il pattern producer-consumer: il producer è l'acquisizione, che fungerà anche da timing (1Hz), mentre gli altri sarebbero tutti una sorta di consumer... il problema è che avendo più di un consumer tutte le mie congetture non sono valide, in quanto ogni loop toglierebbe elementi alla coda. Ho provato anche a utilizzare la funzione "preview queue element" la quale non elimina l'oggetto dalla coda, ma a quel punto ci sarebbero notevoli problemi di sincronizzazione tra i vari loop.
Qualcuno per caso conosce l'esistenza di un qualche design pattern adatto ai miei scopi??
----------------------------------------
AUTORE: 482
DATA :29/03/2011 - 07:14:15
----------------------------------------
perchè non usi semplicemente le variabili shared,locali o globali che siano invece delle code?
Non mi sembra che ci siano processi critici nella tua applicazione no?
----------------------------------------
AUTORE: 43
DATA :29/03/2011 - 08:57:17
----------------------------------------
[quote="Alle":33n6ql68]Ciao A tutti,
vorrei sfruttare la vostra disponibilità per effettuare la seguente domanda:
sto creando un programma per il controllo di un diciamo così "frigorifero": tramite un compact daq acquisisco delle temperature, pressioni, giri del compressore etc etc, con una cadenza di 1 campione al secondo.
Tali valori saranno processati da un algoritmo di controllo il quale calcola la velocità a cui far girare le ventole dello scambiatore, il compressore e altre cose (con una velocità di aggiornamento di 1hz anche in questo caso).
La mia idea era quella di cercare di suddividere in loop separati i seguenti task:
acquisizione (semplificando un po diciamo che sono soltanto letture su daq di valori analogici)
processing (ovvero calcolo dei "set point", tramite un controllo di qualche natura)
comando (ovvero la "scrittura" su daq, cioè la generazione dei valori di comando, tutti analogici)
gestione interfaccia utente (ovvero visualizzazione dei vari valori e eventuale gestione di eventi generati dall'utente).
per far ciò avevo scelto il pattern producer-consumer: il producer è l'acquisizione, che fungerà anche da timing (1Hz), mentre gli altri sarebbero tutti una sorta di consumer... il problema è che avendo più di un consumer tutte le mie congetture non sono valide, in quanto ogni loop toglierebbe elementi alla coda. Ho provato anche a utilizzare la funzione "preview queue element" la quale non elimina l'oggetto dalla coda, ma a quel punto ci sarebbero notevoli problemi di sincronizzazione tra i vari loop.
Qualcuno per caso conosce l'esistenza di un qualche design pattern adatto ai miei scopi??[/quote:33n6ql68]
Non saprei quale design pattern architetturale possa calzare , ma io farei così:
-Acquisirei se possibile ad una freq. maggiore di un Hz (per es. un sample ogni 700msec., cioè 1,428Hz)
-il loop di processing potrebbe fondersi con quello di scrittura in modo che sia perfettamente sincrono: ad ogni processamento corrisponde anche l' uscita dei datielaborati, nello stesso thread.
- l'acq. + veloce garantisce un "refresh" dell'ultimo dato disponibile in ingresso: senza usare code l'ultimo dato disponibile potrebbe essere messo in un cluster, in modo che tutti i valori utili potessero essere letti/scritti con un unica operazione.
Il log di dati in ingresso e uscita dovrebbero essere fatto coerentemente con il loop di processing e scrittura
bye
----------------------------------------
AUTORE: 2279
DATA :29/03/2011 - 15:16:18
----------------------------------------
Innanzitutto grazie delle risposte...
La soluzione di acquisire ad una frequenza superiore non mi sembra molto indicata, in quanto tale frequenza è di fondamentale importanza anche per il controllo, ovvero per il processing dei dati.
Per fare un esempio se devo utilizzare dei controlli PID la frequenza di campionamento influisce sui parametri del regolatore.
L'utilizzo di variabili shared mi sembra invece più ragionevole.
Avevo scelto l'architettura prod/consumer per il seguente motivo:
semplificando le cose, dimentichiamoci dell'interfaccia utente, ed inoltre mettiamo processing e output dei dati nello stesso loop.
Considerando che il processing impieghi un tempo quasi nullo (cosa che è vera in realtà), questa architettura mi sembrava la più elegante: ho una subvi che si occupa di effettuare una acquisizione continua e ad ogni giro butta i dati (clusterizzati) in una coda.
Ho un'altra subvi che pesca tali dati, li elabora e setta gli output.
La mia idea era quella di creare 4 subvi principali ognuna con un compito ben chiaro (tenete conto che ho un elevato numero di ingressi uscite, quindi la chiarezza del codice diventa di fondamentale importanza):
-acquisizione
-processing
-output
-gui
l'acquisizione diventerebbe quindi il mio "master", ovvero quella che sincronizza il tutto. Appena ogni giro di acquisizione è concluso tali dati dovrebbero essere passati al processing, e l'uscita di ques'ultimo all'output. La gui prenderebbe i dati dell'acquisizione e li visualizzerebbe diciamo così a "best effort", ovvero con requisiti sul ritardo o su perdite di dati veramente laschi..
Comunque ... studio un po ed eventualmente vi posto la soluzione che (spero) troverò.
Grazie mille!!!
Alessandro
----------------------------------------
AUTORE: 2279
DATA :29/03/2011 - 16:12:55
----------------------------------------
Allora:
ho trovato una soluzione che mi garba:
per adesso ho tralasciato la subvi di output (ma può essere inserita facilmente. Per facilità l'acquisizione è simulata da dei bei numeri random e da un wait 1000 ms.
Ho fatto così: struttura prod/cons per acquisizione e processing (il processing è semplicemente la somma di due valori).
oltre alla queue del main, ho utilizzato anche un notifier.
il processing, oltre a svuotare gli elementi della coda, genera delle notifications inserendo i cluster che ha appena letto dalla coda. Tali notifiche sono lette dalla GUI. Premendo stop nella GUI, vengono distrutti notifier e queue, e di conseguenza si fermano anche acquisizione e processing.
Per facilità ho messo che tutte e tre le subvi sono "show front panel when called", ma in realtà solo la gui sarà visibile.
L'unica cosa che ancora non mi soddisfa a pieno è che acquisizione e processing si stoppano con un po di ritardo (ovvero il tempo che ci mettono ad accorgersi che la coda è stata distrutta).
Spero di essere stato chiaro.
Ovviamente questa soluzione è ancora work in progress, ma se qualcuno è interessato potrò aggiornarvi su ulteriori sviluppi. Tenete presente che la cosa che mi sta più a cuore di tutto è quella di mantenere le 3 subvi più "pulite possibile" per concentrarmi in ogni subvi sul task che deve eseguire.
CIAAAAOOOOO
----------------------------------------
================================================================================
Importare in un pannello una schermata di MAX
================================================================================
AUTORE: 3465
DATA :30/03/2011 - 07:05:08
----------------------------------------
Salve,
è possibile importare in un pannello labview una schermata di MAX (measurement automation explorer)? In particolare si tratta di un grafico in tempo reale sulle performance di un hw connesso al pc.
grazie
----------------------------------------
AUTORE: 482
DATA :30/03/2011 - 07:27:25
----------------------------------------
Cosa intendi per performance? che tipo di performance puoi vedere in MAX che non puoi fare il LabVIEW?
----------------------------------------
AUTORE: 3465
DATA :30/03/2011 - 22:39:58
----------------------------------------
Si tratta della funzionalità della scheda. In particolare mi servirebbe di visualizzare un grafico così come è mostrato in MAX. Si può fare in qualche modo?
----------------------------------------
AUTORE: 482
DATA :31/03/2011 - 07:43:56
----------------------------------------
ribadisco che non capisco.
E'un grafico nel senso un immagine o un grafico in tempo reale?
Se è un grafico in tempo reale, quello che fa max, puo' essere fatto in labview, quindi devi riprodurre quella cosa in labview e non prenderla da MAX.
----------------------------------------
AUTORE: 3465
DATA :31/03/2011 - 18:33:57
----------------------------------------
Si scusa è un grafico in tempo reale.
Quindi tu dici che è più semplice farlo direttamente in labview, magari dall'NI scope?
----------------------------------------
================================================================================
Passaggio valori a un cluster
================================================================================
AUTORE: 3465
DATA :29/03/2011 - 22:22:27
----------------------------------------
ok grazie!
Un'altra domanda: ho bisogno di settare su di un pannello dei valori di un cluster da un altro pannello (cioè mediante un controllo modifico dei valore di un cluster sul pannello A e queste modifiche si devono ripercuotere su un cluster identico sul pannello B). Per fare ciò ho provato a collegare i due cluster mediante datasocket (come ho fatto per controlli e indicatori semplici) ma con i cluster i valori sul pannello B non si aggiornano...sbaglio qualcosa?
----------------------------------------
AUTORE: 482
DATA :30/03/2011 - 07:30:14
----------------------------------------
La risposta è SI.
Sicuramenet sbagli qualcosa, ma decisamente dai troppi pochi riferimenti per poter dire cosa.
Per fare quello che vuoi fare tu, usa le variabili globali o i connection terminal dei subvi.
----------------------------------------
AUTORE: 3465
DATA :30/03/2011 - 22:46:38
----------------------------------------
Mi sono dimenticato di specificare che non ho usato le variabili globali ma datasocket in quanto i due pannelli risiedono su 2 pc differenti connessi tramite LAN.
Ho semplicemente aperto sul PC dove risiede il pannello B il datasocket server e ho collegato tra di loro i 2 cluster (uno in scrittura e l'altro in lettura) specificando come indirizzo dstp://indirizzo_dove_ho_aperto_datasocket/pippo
Il datasocket led mi appare verde su entrambi i pannelli (segno che la connessione è fatta bene) ma il cluster in lettura non si aggiorna quando modifico quello in scrittura.
P.S: ma è indifferente su quale PC faccio partire il datasoscket server?o c'è un criterio ben preciso?
grazie mille
----------------------------------------
AUTORE: 482
DATA :31/03/2011 - 07:42:31
----------------------------------------
si è indifferente dove gira il server.
Per quanto riguard al'errore specifico, ti suggerirei di ridurre il tutto all'osso e vedere se funziona.
----------------------------------------
AUTORE: 3465
DATA :31/03/2011 - 18:42:03
----------------------------------------
Te l'ho chiesto perchè ho notato una cosa veramente strana. In un mio vecchio progetto ho fatto partire il datasocket server su uno dei due pc (la scelta l'ho fatta secondo un mio criterio di comodità). Ora sto facendo un altro progetto che utilizza sempre datasocket. Tuttavia affinchè il tutto funzioni (ovvero che i datasocket led siano tutti verdi) devo per forza far partire il datasocket server su entrambi i pc e settare il data binding in questo modo:
- agli indicatori e/o controlli che sono settati su "write only" devo assegnare l'indirizzo ip del pc su cui si trovano
- agli indicatori e/o controlli che sono settati su "read only" devo assegnare l'indirizzo ip dell'altro pc
Se non faccio così alcuni datasocket led rimangono rossi e il tutto non funziona ma non riesco a capirne il perchè!
Hai idea di cosa possa sbagliare?
----------------------------------------
AUTORE: 645
DATA :31/03/2011 - 22:19:26
----------------------------------------
Puoi postare un'immagine del VI?
Non uso i Datasocket da un po' di tempo ma se non ricordo male io avviavo il Server in tutti i pc che dovevano comunicare e poi leggevo o scrivevo i dati da/verso un indirizzo inventato (per esempio "pippo") con inizio "dstp".
In questo modo veniva a crearsi una sorta di "spazio virtuale" utilizzato da tutti i pc (con Datasocket Server avviato) per comunicare.
----------------------------------------
AUTORE: 482
DATA :01/04/2011 - 07:38:32
----------------------------------------
ehm...secondo me quello che tu dici funzionare è invece una finta.
Il datasocket server puo' funzionare in due modi:
1) crei il databinding a un controllo e il datasocket crea quella risorsa automaticamente
2) Con il datasocket manager dichiari tutte le variabili che vorrai usare e poi ti ci colleghi col databinding.
Se ti colleghi da remoto ad un ip con datasocket server avviato, devi collegarti ad una variabile già allocata, senno' dara' errore.
Ad ogni variabile bisogna associare i permessi di scrittura, senno' non viene permessa la scrittura multipla su una stessa variabile e l'ultimo che si collega darà errore.
avviando il datasocket da tutte e due le parti rischi che i led siano tutti verdi perchè ogni server si e' creato la sua variabile.
Per essere sicuro di evitare questi inconvenienti ti consiglio di:
1) stabilire a priori dove girera' il server.
2) Valuta se utilizzare il datasocket server manager per creare a priori tutte le variabili (da il vantaggio che la lisa è esportabile)
3) tutti i data binding punteranno a quell'indirizzo ip quindi l'indirizzo sarà del tipo: dstp://xxx.xxx.xxx/nome_variabile dove le varie x rappresentano l'ip del computer dove gira il server.
Eventualmente il databinding delle variabili puo' essere modificato programmaticamente tramite i property node, quindi puoi salvarti un file con l'indirizzo IP dove avvierai il server di volta in volta e con quello associare i vari databindings.
----------------------------------------
AUTORE: 3465
DATA :03/04/2011 - 15:10:51
----------------------------------------
grazie geppo ma io non voglio creare la lista da esportare con il datasocket server manager. Quindi dici che devo impostare la scrittura multipla su tutte le variabili ? è questo che sbaglio? e questa cosa la faccio dalle impostazione del datasocket server?
----------------------------------------
AUTORE: 482
DATA :04/04/2011 - 07:23:46
----------------------------------------
Puo' essere che il problema sia quello, il fatto è che se usi il datasocket server manager c'e' uno chaeck box da spuntare per dirgli "allow multiple writers", s einvece gliele fai creare in automatico, questo settaggio non c'e', probabilmente lo devi settare con i property nodes...
----------------------------------------
AUTORE: 3465
DATA :05/04/2011 - 06:45:56
----------------------------------------
Ho risolto! dal datasocket manager dovevo impostare come "everyhost" sia i writers che i readers.
Grazie gepponline!
----------------------------------------
================================================================================
Array e tempi
================================================================================
AUTORE: 3420
DATA :30/03/2011 - 18:24:13
----------------------------------------
Salve a tutti.
Avrei bisogno di un consiglio e qualche indicazione.
Ho un segnale periodico ad onda quadra e di questo segnale devo calcolare il tempo tra un fronte di salita e quello sucessivo. Conservare questo tempo per poi farne la differenza ed altre operazioni con un altro tempo su un altro segnale ad onda quadra ma con frequenza diversa (quindi con tempo diverso, ovviamente.)
Per calcolare il tempo uso i blocchi contenuti nella libreria REAL TIME. Uso il blocco ELAPSED TIME per calcolare il tempo, lo inserisco all'interno del blocco Collect Numeric Array, e poi all'interno di un Array normale.
All'arrivo del primo fronte di salita inizia il conteggio del tempo. All'arrivo del secondo fronte c'è il reset dell'ELAPSED TIME . Al terzo fronte di salita di nuovo si resetta il conteggio del tempo.
Questo perchè ho la necessità di controllare la velocità di rotazione di un disco tramite un encoder che mi fornisce l'onda quadra in maniera continua.
A questo punto volevo chiedere:
- è possibile cancellare tutto l'array (1 riga e n colonne) in un colpo solo? Praticamente svuotarlo. In modo da poterlo riempire nuovamente subito dopo aver resettato.
- non c'è la possibilità di poter fare un conteggio del tempo con una unità di misura inferiore al milli-secondo? Andando a grosse velocità mi servirebbe una misura piu precisa e veloce possibile.
Grazie a tutti
-
----------------------------------------
AUTORE: 482
DATA :31/03/2011 - 07:50:21
----------------------------------------
[quote="March":13inj52h]- è possibile cancellare tutto l'array (1 riga e n colonne) in un colpo solo? Praticamente svuotarlo. In modo da poterlo riempire nuovamente subito dopo aver resettato.
- non c'è la possibilità di poter fare un conteggio del tempo con una unità di misura inferiore al milli-secondo? Andando a grosse velocità mi servirebbe una misura piu precisa e veloce possibile.[/quote:13inj52h]
Per quanto riguarda la prima domanda, basta passare all'array una costante array vuota.
Per il conteggio, se non sei in ambiente real time, non credo tu possa scendere sotto al ms.
Pero' mi sorge una curiosità, con che hardware aquisisci? perchè il calcolo del periodo. la generazione di trigger ecc, possa essere fatta direttamente via harware, senza andare a scansionare l'onda ogni ms per riprodurla.
Mi spiego.
Se l'hardware puo' acquisire a 100Khz, tu non è che fai l'acquisizione puntuale a velocità massima, ma imposti la scheda per leggere ad esempio 100000 campioni ogni secondo. cosi' tu la lettura software la fai solo una volta al secondo, ma i dati ti arrivano con un campione per ogni usec.
----------------------------------------
AUTORE: 3420
DATA :31/03/2011 - 23:37:48
----------------------------------------
L'hardware è un CompactRIO e utilizzo la libreria Realt Time di LabVIEW. (forse dovevo già dirlo prima, scusate la dimenticanza)
Per quel che riguarda la tempistica ho fatto quella domanda in quanto il blocco della libreria Real Time ( nelle sue opzioni interne ), non mi da tempi sotto al millisecondo
----------------------------------------
================================================================================
Event case non rimane aggiornato
================================================================================
AUTORE: 3428
DATA :31/03/2011 - 08:35:26
----------------------------------------
Salve, ho un while con all'interno un event case.
All'immissione di un path e quindi la selezione di un file excel si scatena l'evento "change value" del control path che mi fa avviare un tot di istruzioni (legge il file excel e aggiorna alcuni parametri) per poi tornare in timeout. Funziona tutto solo che il mio attuale problema è che quando faccio scatenare l'evento scegliendo un path, mi si aggiornano i parametri scrivendoci per un attimo quelli che legge dall'excel per poi tornare subito tutto vuoto (perchè torna in timeout). Sicuramente sarà una mia disattenzione.. Come risolvo?
----------------------------------------
AUTORE: 43
DATA :31/03/2011 - 08:39:19
----------------------------------------
[quote="renaso":2b2nhxgv]Salve, ho un while con all'interno un event case.
All'immissione di un path e quindi la selezione di un file excel si scatena l'evento "change value" del control path che mi fa avviare un tot di istruzioni (legge il file excel e aggiorna alcuni parametri) per poi tornare in timeout. Funziona tutto solo che il mio attuale problema è che quando faccio scatenare l'evento scegliendo un path, mi si aggiornano i parametri scrivendoci per un attimo quelli che legge dall'excel per poi tornare subito tutto vuoto (perchè torna in timeout). Sicuramente sarà una mia disattenzione.. Come risolvo?[/quote:2b2nhxgv]
risolvi postando il VI con il Tuo baco all'interno.
Così lo becchiamo.
io posso aprire VI scritti in LV 8.6.1
bye
----------------------------------------
AUTORE: 3428
DATA :31/03/2011 - 09:07:43
----------------------------------------
era una mia disattenzione come detto.. mi scuso per aver addirittura aperto un thread.. il baco era una sciocchezza che mi vergogno di scrivere (e non servirebbe a nessuno nel forum)
----------------------------------------
================================================================================
acquisire un counter
================================================================================
AUTORE: 482
DATA :31/03/2011 - 10:00:37
----------------------------------------
...ma ciao!
devo acquisire un segnale da un sensore reed con una scheda USB 6008.
Ho pensato di utilizzare l'ingresso counter ma c'e' un problema.
Il counter è un ingresso che è di default allo stato alto e va mandato a livello basso per effettuare il conteggio e legge sul fronte di discesa.
Il problema è che ad ogni impulso del mio sensore, corrispondono 4 o 5 conteggi (varia di volta in volta) anzichè 1 solo.
Ho collegato allora il segnale all'ingresso analogico della scheda e ho visto che:
Quando io mi aspetto un segnale basso, non ho uno zero ma uno 1,36 volts un pelo oscillante e credo che questo sia il motivo del conteggio multiplo.
Come posso fare per fare in modo che il segnale passi a zero?
In alternativa, c'e' un modo semplice per misurare la frequenza di un onda quadra sull'ingresso analogico?
----------------------------------------
AUTORE: 482
DATA :31/03/2011 - 11:17:06
----------------------------------------
[quote="gepponline":1p76tt5a]In alternativa, c'e' un modo semplice per misurare la frequenza di un onda quadra sull'ingresso analogico?[/quote:1p76tt5a]
Occhei, questo sistema l'ho già testato con la comoda funzioncina Pulse Measurements.
Pero' vorrei capire come mai e se c'e' soluzione al fatto che mi legga 4/5 impulsi per ogni impulso reale...
P.S. ho provato a dare in pasto al counter un segnale digitale generato con un uscita digitale della scheda e tutto funziona correttamente....
----------------------------------------
AUTORE: 43
DATA :31/03/2011 - 13:39:19
----------------------------------------
[quote="gepponline":1grwlkzc]...
Come posso fare per fare in modo che il segnale passi a zero?
...[/quote:1grwlkzc]
non sono un elettronico, ma..
una resistenza di pulldown non basta?
http://it.wikipedia.org/wiki/Resistenza_pull-up
http://www.electro-tech-online.com/gene ... istor.html
bye
----------------------------------------
AUTORE: 482
DATA :01/04/2011 - 07:51:51
----------------------------------------
eh ci avevo pensato, ma non essendo un segnale alimentato non saprei dove piazzare sta resistenza.
Cioè, io non collegando niente a sto sensore, ho cmq una differenza di potenziale di circa 1,5 v tra i capi del sensore rispetto al GND della mia scheda.nonostante i vari comuni siano collegati insieme.
Ora, se leggo il segnale riferito a GND leggo:
1,5V se APERTO
0V se CHIUSO
se lo leggo in differenziale:
1,5V se APERTO
4V se CHIUSO
Lo schema elettrico di questo sensore è un contatto puro.
non capisco dove cacchio vad aa prendere sti valori di tensione...mah...
----------------------------------------
AUTORE: 301
DATA :01/04/2011 - 08:01:34
----------------------------------------
Piazza una resistenza (anche da 10K ) tra il tuo ingresso e il GND della scheda, vedrai che si risolve.....(ammesso che tu abbia collegato il D-GND allo 0v dell'alimentazione del reed).
Aris
----------------------------------------
AUTORE: 482
DATA :01/04/2011 - 10:42:52
----------------------------------------
eh..il fatto è che il sensore reed non è alimentato o meglio,l'alimentazione è lo stesso ingresso.
IN COUNTER (+5V) ___________________/_____________GND
dove ovviamente la barra è il mio sensore.
l'ingresso counter conta sui fronti di discesa, ovvero quando il sensore chiude.
Dove dovrei piazzarla sta resistenza?
----------------------------------------
AUTORE: 301
DATA :01/04/2011 - 10:52:59
----------------------------------------
HA HA!
Domanda stupida.
Immagino che la scheda fornisca la 5v su un qualche pin (non sono andato a vedere il datasheet), non potresti usare quello per "alimentare" il sensore?
----------------------------------------
AUTORE: 482
DATA :01/04/2011 - 11:10:16
----------------------------------------
QUello che dicevo è che il sensore proprio non ha alimentazione. E' un contatto puro.
E il counter conta SOLO quando lo metti a GND.
QUindi se anzichè ilcounter, collego un +5V dalla scheda e al posto di GND collego il counter, non conterebbe mai.
----------------------------------------
AUTORE: 1124
DATA :01/04/2011 - 13:02:41
----------------------------------------
Ciao
non è che leggi più fronti di discesa perchè il contatto reed 'rimbalza'?
----------------------------------------
AUTORE: 482
DATA :01/04/2011 - 13:08:58
----------------------------------------
no, acquisendo il segnale dall'ingresso analogico, ho una bella onda quadra pulita, rimbalza, ma nell'ordine delle decine di millivolt sui livelli stabili. per questo ho ipotizzato che il problema sia il fatto che lo zero non è zero ma 1,5 V
----------------------------------------
AUTORE: 482
DATA :01/04/2011 - 14:02:35
----------------------------------------
ho riprovato mettendo in parallelo il counter e l'ingresso analogico pe rmonitorare il counter.
A quanto pare quel famoso 1,4V non c'e' sul counter, passa da 0,1 a 4,93 V regolarmente, senza nessun tipo di rimbalzo, eppure mi conta a volte 4 e a volte 5 conteggi. Ho provato a fare la stessa cosa su un altra scheda simile e da lo stesso risultato..mi sa che devo sentire NI...
----------------------------------------
AUTORE: 301
DATA :01/04/2011 - 14:06:09
----------------------------------------
a pagina 21 del manuale è egnato esattamente come collegarlo.....
http://www.ni.com/pdf/manuals/371303l.pdf
di solito puoi indicare lo stato dell'ingresso ed il fronte che deve monitorare (in salita o in discesa)
----------------------------------------
AUTORE: 482
DATA :01/04/2011 - 14:18:40
----------------------------------------
in questa scheda non si puo' fare niente.
Il fronte legge solo quello di discesa e conta solo in avanti, se la configuro diversamente in labview mi da errore, nel MAX invece non mi da neanche la possibilita' di farlo.
E alla pagina che dici non ho trovato niente riguardo al counter che invece è descritto a pag.23
----------------------------------------
AUTORE: 301
DATA :04/04/2011 - 06:06:10
----------------------------------------
hai ragione (purtroppo), infatti nello schema di collegamento il segnale in ingresso viene fatto passare per un invertitore.....(era questo che intendevo)
Sorry
----------------------------------------
================================================================================
gestire più event structure alternativamente
================================================================================
AUTORE: 3598
DATA :31/03/2011 - 16:51:47
----------------------------------------
[attachment=0:3q8wueyy]event case multipli su più tab.vi[/attachment:3q8wueyy]ciao a tutti, ho un tab gestitio tramite una case structure. In ogni case structure c'è un ciclo while ed una event structure all'interno che gestisce gli eventi degli elementi inseriti in quella tab. il problema è il seguente: come posso gestire più event structure alternativamente, cioè se sto una tab lavoro con quella ev. structure; quando clicco su un'altra tab abbandono questa event structure e passo a quella della tab appropriata, ecc.
se questo non è il modo migliore potete suggerirmi un altro modo per gestire più eventi virtualmente (da me) suddivisi in diverse categorie?
aggiungo la VI d'esempio [attachment=0:3q8wueyy]event case multipli su più tab.vi[/attachment:3q8wueyy]
----------------------------------------
AUTORE: 645
DATA :31/03/2011 - 22:23:00
----------------------------------------
Io credo che sia meglio una Event Structure unica all'interno della quale inserisci tutti i casi e i relativi comandi (o eventi scatenanti). La suddivisione in Pannelli presente nel Front Panel garantisce la divisione dei pulsanti e degli eventi scatenanti.
----------------------------------------
AUTORE: 3598
DATA :01/04/2011 - 06:59:24
----------------------------------------
si, ci avevo pensato, soltanto è che, oltre a quello postato che è solo un esempio, ho un'altra vi con lo stesso metodo ed ad essere gestite sono più di 15 eventi diversi....non sarebbe il massimo imschiarli.
----------------------------------------
AUTORE: 482
DATA :01/04/2011 - 07:26:44
----------------------------------------
Considera che la event structure è appunto una struttura per gli eventi generati perlopiu' dall'utente.
L'utente ha un solo mouse e un solo puntatore, quindi non puo' generare piu' eventi in contemporanea.
Per questo solitamente si usa un ciclo while parallelo con all'interno una event structure che gestisce TUTTI gli eventi generati dall'utente su un pannello, siano essi 2 o 2000. Poi se ci sono eventi che fanno la stessa cosa, ogni case puo' contenere l'evento generato da diverse fonti.
----------------------------------------
AUTORE: 3598
DATA :01/04/2011 - 14:11:07
----------------------------------------
cioè uso un case dentro l'event structure? scusa se sono duro di comprendonio, ma non ho molta esperienza con labview...
----------------------------------------
AUTORE: 482
DATA :01/04/2011 - 14:23:11
----------------------------------------
no, i vari eventi gestiti dalla event structure, si chiamano event case.
clikkando sul bordo dell'event structure, fai ADD event Case e aggiungi alla event structure un nuovo evento da gestire.
Questo case potrà contenere diversi eventi e li puoi aggiungere dalla colonna event specifiers.
----------------------------------------
AUTORE: 645
DATA :05/04/2011 - 14:30:58
----------------------------------------
Se gli eventi sono di tipo diverso puoi comunque usare un'unica Event Structure per gestirli (uno alla volta... Quando si scatena un evento il VI entra nel Case corrispondente) e all'interno del Case puoi inserire cicli paralleli (o serie di operazioni) per gestire azioni diverse, eventualmente in contemporanea (cicli paralleli).
----------------------------------------
================================================================================
query SQL su foglio excel
================================================================================
AUTORE: 3428
DATA :01/04/2011 - 08:11:47
----------------------------------------
Salve devo fare una query su un foglio excel dal mio programma in labview.
Ora la mia query è così formata:
SELECT * FROM [impiegati$] WHERE totale >= 0;
dove impiegati è il nome del foglio all'interno del file excel (il file contiene 8 fogli) e totale è la prima colonna. Vorrei che mi tirasse fuori solo le righe che nella colonna totale hanno un valore, e siccome questo valore può essere solo intero positivo... maggiore uguale a zero.
Invece mi da l'errore:
Exception occured in Microsoft OLE DB Provider for ODBC Drivers: [Microsoft][Driver ODBC Excel] Tipi di dati non corrispondenti nell'espressione criterio. in ADO Connection Execute.vi->SQL Execute.vi->Read_Cycle_prms.vi->MAIN.vi
Se invece metto la query così:
SELECT * FROM [impiegati$];
mi tira giù tutto, quindi la struttura di connessione funziona.. cioè tutte e 300 le righe tra cui le prime 3 sono quelle che mi interessano (con totale >=0) e le altre invece in totale non hanno alcun valore quindi mi tira giù anche le righe vuote che a me non servono...
Mi è stato consigliato di eliminare dalla query le righe dove totale non ha valore modificandola in questo modo:
SELECT * FROM [impiegati$] WHERE Totale <>"";
Ma non funziona ugualmente e mi da l'errore:
Exception occured in Microsoft OLE DB Provider for ODBC Drivers: [Microsoft][Driver ODBC Excel] Parametri insufficienti. Previsto 2. in ADO Connection Execute.vi->SQL Execute.vi->Read_Cycle_prms.vi->MAIN.vi
Secondo voi come devo fare?
Grazie
----------------------------------------
AUTORE: 301
DATA :01/04/2011 - 08:31:42
----------------------------------------
SELECT * FROM [impiegati$]
WHERE (totale >= 0);
prova....credo sia solo un problema di parentesi....o punteggiatura...
----------------------------------------
AUTORE: 3428
DATA :01/04/2011 - 09:36:40
----------------------------------------
SELECT * FROM [impiegati$] WHERE (totale >= 0);
Errore:
Exception occured in Microsoft OLE DB Provider for ODBC Drivers: [Microsoft][Driver ODBC Excel] Parametri insufficienti. Previsto 1. in ADO Connection Execute.vi->SQL Execute.vi->Read_Cycle_prms.vi->MAIN.vi
il fatto è che creando un nuovo file excel con solo un foglio e con dei dati all'interno con la colonna "totale" e creando una vi per leggerli con quella stessa query, senza parentesi mi tira giù quello che desidero, cioè le sole righe dove totale è >= 0...
Come è possibile!!??
----------------------------------------
AUTORE: 301
DATA :01/04/2011 - 10:04:54
----------------------------------------
prova a postare il vi con il file di excel....
----------------------------------------
AUTORE: 3428
DATA :01/04/2011 - 10:28:03
----------------------------------------
purtroppo non posso postare... info private...
----------------------------------------
AUTORE: 301
DATA :01/04/2011 - 10:31:10
----------------------------------------
basta solo il vi che si connette e fa la query ed un foglio di excel con i campi farlocchi....immagino siano infi private.
----------------------------------------
AUTORE: 482
DATA :01/04/2011 - 10:49:35
----------------------------------------
hai provatoa mettere lo 0 tra apici?
magari lo interpreta come testo e non come numerico e quindi vuole gli apici.
----------------------------------------
AUTORE: 3428
DATA :01/04/2011 - 11:02:27
----------------------------------------
fatto al volo, spero di non essermi scordato nulla.. ora però non funziona più, mentre prima si.. forse mi sono dimenticato qualcosa..
----------------------------------------
AUTORE: 3428
DATA :01/04/2011 - 11:05:36
----------------------------------------
era troppo grande... si scarica da quì... ci sono 2 versioni una per LV10 e un'altra per l'8
http://www.adrive.com/public/97d9c9b380 ... 9e161.html
----------------------------------------
AUTORE: 301
DATA :01/04/2011 - 13:47:16
----------------------------------------
ho dovuto rifare perchè non mi girava ( ho solo 2003 qui al lavoro).
Prova a vedere se va (a me gira.)
SELECT * FROM [DADaten$]
WHERE Total >= 0;
----------------------------------------
AUTORE: 3428
DATA :01/04/2011 - 14:08:41
----------------------------------------
si funziona, non vorrei che il problema siano i miei ADO contro i tuoi DB tools... ora provo
grazie
----------------------------------------
AUTORE: 301
DATA :01/04/2011 - 14:34:13
----------------------------------------
o la versione di excel.....
nin zò, in ogni caso, sper che sia risolta!
Buon lavoro!
----------------------------------------
AUTORE: 3428
DATA :01/04/2011 - 15:27:32
----------------------------------------
Grazie, era proprio la conneessione, ora funziona tutto perfettamente..
----------------------------------------
AUTORE: 3428
DATA :04/04/2011 - 13:19:54
----------------------------------------
Andava tutto bene fino a venerdì scorso... Non ho toccato nulla e non mi dava errori.
Ora con la stessa query e con la stessa struttura non si presentano errori fin quando vado a chiudere la connessione con il file excel tramite il "DB tool close connection" di labview che mi restituisce il seguente errore ma non capisco il perchè!
Error: 0x000001F8
Open recordset object.
Debuggando la vi close connection ho notato che "recordset object" mi da un 4 e "command object" 0.
è proprio questo 4 che mi fa andare in errore il tutto.. la mia vi funziona ugualmente ma non mi piace il fatto che debba fregarmene di un errore....
come posso risolvere?
----------------------------------------
================================================================================
Pannello che apre un altro pannello
================================================================================
AUTORE: 3465
DATA :03/04/2011 - 15:20:28
----------------------------------------
Salve a tutti,
volevo chiedere qual è il modo più efficiente in termini di risorse per far sì che premendo un pulsante su un pannello si apra il front panel di un altro pannello (che viene usato dal primo pannello come sub-vi).
grazie
----------------------------------------
AUTORE: 645
DATA :05/04/2011 - 14:32:28
----------------------------------------
Io userei una Event Structure con il tempo impostato (100 o 200 ms) per non occupare interamente le risorse del sistema (cosa che avviene con cicli non temporizzati o Event Structure non temporizzate) e il VI Server per comunicare con un secondo VI.
----------------------------------------
AUTORE: 3465
DATA :05/04/2011 - 18:40:28
----------------------------------------
Grazie, un vi reference occupa più risorse?
----------------------------------------
================================================================================
Selezione di un elemento di un'array
================================================================================
AUTORE: 822
DATA :04/04/2011 - 16:10:03
----------------------------------------
Ciao,
c'è un modo per selezionare l'elemento di un'array cliccando direttamente sopra l'elemento interessato e non selezionandolo dall'index display?
Supponendo che l'array sia una array di Picture, vorrei, una volta cliccato sopra l'immagine, aprire un pop up con la grandezza originale dell'immagine, è possibile?
Grazie,
Giuseppe
----------------------------------------
AUTORE: 927
DATA :06/04/2011 - 10:21:16
----------------------------------------
Puoi usare una event structure con evento "mouse down" sull'array. Però devi fare un po' di calcoli per risalire da "Coords" (posizione in pixel del mouse, relativa al VI) all'indice dell'array. Se fosse un controllo Table sarebbe semplice perchè esiste un Invoke node "Point to Row Column", ma non mi risulta che ci sia un equivalente per gli array
----------------------------------------
AUTORE: 822
DATA :06/04/2011 - 10:38:25
----------------------------------------
..e se il controllo fosse un Tree?
grazie
----------------------------------------
AUTORE: 927
DATA :06/04/2011 - 10:43:47
----------------------------------------
Meglio ancora, anche il Tree ha il "Point to Row Column"
----------------------------------------
AUTORE: 3989
DATA :29/11/2011 - 09:35:56
----------------------------------------
Provalo..
----------------------------------------
================================================================================
Migliorare grafica pannello
================================================================================
AUTORE: 3465
DATA :05/04/2011 - 06:47:39
----------------------------------------
Ragazzi esiste un sito o una guida o semplicemente degli esempi per migliorare la grafica del pannello per renderla più bella? (ad esempio aggiungendo dei controlli e/o indicatori non presenti in labview e che si possono importare)
----------------------------------------
AUTORE: 3428
DATA :05/04/2011 - 09:28:40
----------------------------------------
Interessante, io non conosco nessun sito o modo per farlo.
L'unica cosa che ho modificato è l'edit icon delle VI per abbllire le icone delle subvi nel codice e basta importare piccole immagini nella cartella:
Documenti\LabVIEW Data\Glyphs
e poi sceglierne una e incollarci l'immagine in png per poi ritrovarsela come utilizzabile all'interno dell'edit icon..
La tua richiesta è molto più interessante
----------------------------------------
AUTORE: 43
DATA :05/04/2011 - 10:52:24
----------------------------------------
[quote="daniroma83":gfj085t7]Ragazzi esiste un sito o una guida o semplicemente degli esempi per migliorare la grafica del pannello per renderla più bella? (ad esempio aggiungendo dei controlli e/o indicatori non presenti in labview e che si possono importare)[/quote:gfj085t7]
Da suicidio...
Invece di sfruttare al meglio controlli ed indicatori che già esistono, e rendendoli + graziosi con bitmap customizzate, si vogliono usare controlli esterni (activeX?) così, non per necessità , ma solo per estetica...
Uno dei vantaggi che rendono portabili le interfacce di LabVIEW è proprio quello di avere controlli ed indicatori "embeddati" in LabVIEW RunTime...
Infatti, dal punto di vista del porting della UI di LabVIEW da e per Linux, controlli e indicatori sono importati/esportati correttamente ad eccezione delle Font e dei default ereditati dal sistema in cui gira...
bye
----------------------------------------
AUTORE: 482
DATA :05/04/2011 - 11:16:28
----------------------------------------
QUi trovi dei nuovi controlli da poter aggiungere ai tuoi pannelli:
http://sine.ni.com/nips/cds/view/p/lang/it/nid/209119
http://sine.ni.com/nips/cds/view/p/lang/it/nid/209118
http://sine.ni.com/nips/cds/view/p/lang/it/nid/209120
----------------------------------------
================================================================================
Forzare USB
================================================================================
AUTORE: 1124
DATA :08/04/2011 - 07:58:26
----------------------------------------
Ciao
tramite Labview vorrei 'forzare' in modo arbitrario almeno uno dei segnali Data presenti su una generica porta USB.
Non devo collegare strumenti o dispositivi, ma solo generare un segnale 0-5V TTL.
Forse questo argomento è già stato affrontato in questo forum, ma non riesco a trovare niente: qualcuno potrebbe darmi una dritta? Grazie
Stefano
----------------------------------------
AUTORE: 2604
DATA :20/09/2011 - 15:15:49
----------------------------------------
Ciao,
Dovrei fare la stessa cosa ... tu ci sei riuscito in qualche modo?
Grazie
----------------------------------------
AUTORE: 645
DATA :22/09/2011 - 13:25:29
----------------------------------------
Partite dalla paletta "Advanced - Port I/O - In e Out Port".
Dovrebbero essere comandi fatti apposta per comunicare con singoli pin di una porta.
Non so bene come ricavare l'indirizzo della porta... forse guardando sotto la proprietà di Windows.
----------------------------------------
================================================================================
Richiesta favore. Da 8.6 a 7.1
================================================================================
AUTORE: 1168
DATA :08/04/2011 - 14:01:18
----------------------------------------
Buongiorno a tutti.
Ho sviluppato un semplice programma, ma devo riconvertirlo indietro alla versione 7.1
Purtroppo con le versioni che son riuscito a recuperare, posso indietreggiare fino all'8.6
C'è qualche anima pia che mi convertirebbe indietro?
Buona domenica
Pietro
----------------------------------------
AUTORE: 1078
DATA :22/04/2011 - 14:45:55
----------------------------------------
Ciao Pio,
Io ho gli strumenti necessari, ma dovresti postare il software.... Se ti serve ancora!
----------------------------------------
AUTORE: 1168
DATA :26/04/2011 - 07:13:13
----------------------------------------
Grazie Ricky, per ora risolto con una versione trial dell'8.6
alla scadenza vedremo se è ancora necessario o si sono completati i collaudi.
Nel caso ti disturbo!
Buona giornata
----------------------------------------
AUTORE: 1078
DATA :27/04/2011 - 07:18:16
----------------------------------------
Ok, quando vuoi... a disposizione!
----------------------------------------
================================================================================
trovare il numero di ripetizioni di un onda
================================================================================
AUTORE: 482
DATA :08/04/2011 - 15:24:24
----------------------------------------
...ma ciao!
non riuscendo a contare un segnale counter con un ingresso counter, ho optato per lacquisizione dellostesso tramite ingresso analogico.
Per calcolare la frequenza degli impulsi ho usato il vi Pulse Measurement della palette "waveform measurement".
Questo pero' mi vincola ad avere un intervallo di campionamento abbastanza altro per poter rilevare frequenze basse.
Nella pratica analizzo 1500 campioni ad una frequenza di 1000sample/sec.
Un secondo e mezzo per ogni analisi.
Vorrei fare in modo che all'aumentare della frequenza dei miei impulsi, io vada a diminuire il nuemro di campioni esaminati. per poter velocizzare tutte le analisi.
Quindi pensavo:
"conto quanti impulsi ci sono, se sono piu' di 4 allora dimezzo, altrimenti no". Tutto questo fissando un range di massimo e minimo come numero di campioni da analizzare.
La mia domanda finale è:
C'e' un subvi già fatto che conti il numero di high level o low level in un segnale analogico?
----------------------------------------
AUTORE: 301
DATA :14/04/2011 - 16:01:12
----------------------------------------
forse....
Signal processing -> waveform measurement -> waveform monitoring -> peak detection.....
credo di averlo usato una volta per qualcosa di simile....
----------------------------------------
================================================================================
Comunicare con Power meter yokogawa
================================================================================
AUTORE: 3428
DATA :08/04/2011 - 15:29:27
----------------------------------------
Devo comunicare con un power meter della yokogawa, più precisamente con il modello WT210.
Ancora non ho lo strumento ma vorrei avvantaggiarmi ed ho trovato in rete
[url:2xrl3zyh]https://y-link.yokogawa.com/YL008.po?V_ope_type=Show&Download_id=DL00000807&Language_id=EN[/url:2xrl3zyh]
i driver per labview. (ce ne sono per 3 versioni di LV; per la 6 la 7 e la
Devo comunicarci con la seriale RS232.
Secondo voi posso tranquillamente iniziare dalla vi [b:2xrl3zyh]YKWT200 Getting Started.vi[/b:2xrl3zyh] che si trova nella [b:2xrl3zyh]Ykwt200.llb[/b:2xrl3zyh]?
----------------------------------------
AUTORE: 3532
DATA :09/04/2011 - 09:30:57
----------------------------------------
Si, installi la libreria nella giusta directory(instr.lib) e puoi iniziare a studiare/vedere sia la getting started che gli application example.
Nel VI tree trovi l'elenco dei sub VI che puoi utilizzare nello sviluppo della tua applicazione.
Ciao
----------------------------------------
AUTORE: 3428
DATA :12/04/2011 - 08:28:15
----------------------------------------
Salve, vi allego il mio test per la connessione tramite rs232.
Non capisco perchè debuggando la vi ho in scrittura 7 bytes ma quando passo nel property node "bytes at port" mi restituisce uno zero quindi in read ho uno zero...
I parametri di connessione sono impostati correttamente anche sullo strumento, o meglio identici a quelli della vi, cioè 9600 B.rate, flow control, stop bit ecc..
Sbaglio qualcosa? Sicuramente si ma non capisco dove!!!
----------------------------------------
AUTORE: 3428
DATA :12/04/2011 - 08:29:10
----------------------------------------
allegato dimenticato ...
----------------------------------------
AUTORE: 3428
DATA :12/04/2011 - 09:02:23
----------------------------------------
ah dimenticavo di dirvi che nella vi allegata non mi restituisce errori.
Invece se provo ad avviare il "getting started" contenuto nel "Ykwt200.llb" del primo post mi restituisce subito l'errore "-1073807339" dopo il primo tentativo di lettura, che nel caso è l'identificazione dello strumento tramite *IDN.
----------------------------------------
================================================================================
Eseguibili, per forza Application Builder?
================================================================================
AUTORE: 3465
DATA :10/04/2011 - 16:13:30
----------------------------------------
Salve a tutti,
se io creo da un vi un eseguibile per poterlo far girare su un pc su cui non è installato labview occorre per forza che questo pc abbia almeno installato l'application builder? o c'è qualche modo per bypassare questa restrizione?
----------------------------------------
AUTORE: 3532
DATA :10/04/2011 - 16:41:39
----------------------------------------
Non ti serve l'application builder, ma solo il labView run-time engine (circa 100MB).
La soluzione migliore è realizzare un pacchetto di distribuzione.
----------------------------------------
AUTORE: 3465
DATA :10/04/2011 - 20:52:27
----------------------------------------
si scusa intendevo dire il run-time engine. Io volevo sapere se esiste un modo affinchè l'eseguibile generato possa girare su un altro pc senza che su questo occorra installare alcunchè. Se si può fare mi illustrereste cortesemente come?
Grazie
----------------------------------------
AUTORE: 645
DATA :11/04/2011 - 10:28:22
----------------------------------------
Credo proprio che il RunTime sia indispensabile... Puoi includerlo nell'Installer se non sbalio.
----------------------------------------
AUTORE: 3532
DATA :11/04/2011 - 20:24:46
----------------------------------------
Si è fondamentale, non ne puoi fare a meno. E in più deve essere della stessa versione dell'ambiente di sviluppo, per esempio non puoi lanciare una applicazioni sviluppate con labview 2009 in una macchina in cui c'è il 2010 o 2011, devi istallare il run-time per la versione 2009.
E' una delle più grandi limitazioni di labview
, anche se oggi sono molti i linguaggi che richiedono il run-time per l'esecuzione del codice compilato....
----------------------------------------
================================================================================
delay audio con microfono pc
================================================================================
AUTORE: 3677
DATA :11/04/2011 - 08:34:13
----------------------------------------
ciao a tutti
tempo fa ho utlizzato labview ma ora non ricordo praticamente piu nulla.
dovrei implementare un programmino che mi permetta di ricevere l'audio tramite microfono del pc e me lo ritardi di un tot tempo.
praticamente un ritardatore audio (o delay).
il primo problema che ho è proprio quello di individuare il file di input dal microfon.
come faccio a fare riconoscere il microfono del pc ?
grazie
p.s. ho la versione 7.1
----------------------------------------
AUTORE: 3532
DATA :11/04/2011 - 20:57:16
----------------------------------------
Ciao,
per la 2010 puoi utilizzare i subVI presenti nella palette "Graphics & Sound VIs".
Per la 7.1 è possibile che esista una palette analoga.
Hai provato cmq a fare una ricerca su google?
----------------------------------------
AUTORE: 3677
DATA :13/04/2011 - 10:00:38
----------------------------------------
si ma non ho trovato nulla ancora
----------------------------------------
AUTORE: 3677
DATA :13/04/2011 - 11:33:45
----------------------------------------
ho troovato questo esempio di suono simultaneo I/O
vorrei modificarlo per il mio programmino di ritardatore audio
non so dove inserire il loop di delay I/O per ritardare il suono di input
qualcuno può aiutarmi?
[img:1mnk0orr]http://img853.imageshack.us/f/senzaolo3.jpg/[/img:1mnk0orr]
----------------------------------------
AUTORE: 3677
DATA :13/04/2011 - 11:38:12
----------------------------------------
http://img853.imageshack.us/i/senzaolo3.jpg/
----------------------------------------
================================================================================
invertire le variabili di una funzione
================================================================================
AUTORE: 3598
DATA :11/04/2011 - 17:15:07
----------------------------------------
ciao a tutti! volevo porvi il seguente quesito: ho una funzione y=f(x) immessa tramite stringa ed ho necessità di ricavare l'inversa x=f(y). come si fa in labview?
----------------------------------------
AUTORE: 927
DATA :12/04/2011 - 13:36:27
----------------------------------------
Non mi risulta che sia possibile. Non è possibile proprio a livello di matematica; molte funzioni inverse non sono esprimibili con una formula
----------------------------------------
AUTORE: 3598
DATA :13/04/2011 - 09:27:56
----------------------------------------
risolto! posto la .vi realizzata da me ed un mio amico:
il passaggio è il seguente: eseguo un campionamento della y=f(x) (esempio 100 campioni), in modo da ottenere una tabella composta da n coppie (es. 100) x;y. L'inversa viene individuata geometricamente, sempre con una serie di coordinate x;y.
Il procedimento teorico lo si può trovare in [url:348m9tav]http://it.wikipedia.org/wiki/Funzione_inversa#Grafico[/url:348m9tav].
[attachment=0:348m9tav]funz_to_tab.vi[/attachment:348m9tav]
----------------------------------------
================================================================================
Avviare da remoto un altro pannello
================================================================================
AUTORE: 3465
DATA :12/04/2011 - 18:45:41
----------------------------------------
Salve a tutti,
c'è un modo per far sì che da un pc remoto (pc A) possa forzare l'apertura e l'avvio di un pannello che risiede su un altro pc (pc B)? I due pc sono connessi tramite LAN. Ho provato a condividere il file tra i due pc e a lanciarlo da un pannello che risiede sul pc A (open vi reference) ma il pannello mi si apre sul pc A mentre io vorrei che mi partisse sul pc B.
In sostanza, quello che vorrei fare è creare un pannello sul PC A che abbia un tasto "open" che se cliccato mi apre e mi fa girare un altro pannello sul pc B.
Grazie per i suggerimenti
----------------------------------------
AUTORE: 927
DATA :13/04/2011 - 10:21:10
----------------------------------------
Ti serve un qualche programma che sia già in esecuzione sul pc B, e quando riceve un certo comando dal pc A apre il pannello.
Puoi usare il "VI server" (vedi http://zone.ni.com/reference/en-XX/help ... vi_server/) oppure un qualunque altro metodo di comunicazione tra 2 programmi remoti
----------------------------------------
================================================================================
microfono come input
================================================================================
AUTORE: 3677
DATA :12/04/2011 - 19:34:08
----------------------------------------
ciao a tutti
uso labview 7.1
come posso fare per dare in input la voce tramite microfono del pc
che strumenti devo utilizzare?
grazie
----------------------------------------
AUTORE: 927
DATA :13/04/2011 - 09:44:04
----------------------------------------
Le versioni più recenti hanno delle funzioni apposite: Graphics & sound -> Sound -> Input
Mi pare che ci fossero anche nella 7.1
----------------------------------------
AUTORE: 3677
DATA :13/04/2011 - 10:08:10
----------------------------------------
si ok. trovato
grazie
----------------------------------------
================================================================================
Datasocket lento
================================================================================
AUTORE: 3465
DATA :13/04/2011 - 11:00:27
----------------------------------------
Salve a tutti,
ho due vi (disposti su due pc diversi connessi tramite lan). I due pannelli parlano correttamente tramite datasocket: in particolare quando sul primo pannello premo un tasto succede qualcosa sul secondo pannello.
Tuttavia mi sono accorto che per i controlli booleani (ad esempio per l'ok button) si innesca un certo ritardo. In particolare se sul primo pannello premo il tasto ok, sul secondo pannello a volte il corrispondente tasto ok non si aggiorna con il valore logico che dovrebbe andare a leggere tramite datasocket. Per evitare questo problema sono costretto a tener premuto a lungo il tasto sul primo pannello (in sostanza i "click veloci" non li prende).
C'è un modo per risolvere questo problema?
grazie
----------------------------------------
AUTORE: 645
DATA :15/04/2011 - 08:01:10
----------------------------------------
Sembrerebbe essere un problema di temporizzazione del ciclo.
Hai usato una Event Structure per decidere cosa fare in base alla pressione del pulsante? Che temporizzazione hai inserito?
----------------------------------------
AUTORE: 3465
DATA :16/04/2011 - 19:10:35
----------------------------------------
no non ho usato una event structure. Ho semplicemente ragionato così:
quando sul pc A premo un push button esso va a scrivere mediante protocollo dstp il valore true su una variabile pippo. Sul pannello B un led legge sempre lo stesso protocollo il valore true dalla varibile pippo e quindi si accende. Bene, questo succede solo se esercito una pressione più prolungata sul push button. Se eseguo dei click molto veloci invece il led non si accende
----------------------------------------
AUTORE: 482
DATA :18/04/2011 - 07:11:43
----------------------------------------
hai settato bene le prorpieta' del datasocket?
Di default sono tutti e due in modalita' read/write, quindi puo' succedere che nello stesso momento vadano a scrivere sulla stessa variabile e magari quello che dovrebbe essere l'indicatore scrive un false dopo che tu hai premuto il bottone...
----------------------------------------
================================================================================
Come chiudere un vi senza chiudere tutto labview
================================================================================
AUTORE: 3465
DATA :13/04/2011 - 11:01:33
----------------------------------------
Salve a tutti,
volevo sapere se in labview c'è una funzione già implementata che consente, una volta premuto un tasto, di chiudere il vi in esecuzione (e solo quello!) senza dover usare il blocchetto "quit labview" che invece chiude tutti i vi in esecuzione. Io ne voglio chiudere solo uno.
Grazie
----------------------------------------
AUTORE: 3532
DATA :13/04/2011 - 18:24:08
----------------------------------------
Ciao,
hai provato ad utilizzare un property node con la proprietà: "Kind Property" che pilota un select case. E il quit labview nel case: "Run Time System"?
----------------------------------------
AUTORE: 301
DATA :14/04/2011 - 07:00:26
----------------------------------------
Aprei un reference al vi e setti front panel ->close.
Meglio settare questo metodo dopo che hai terminato gli eventuali cicli che stanno girando nel vi.
----------------------------------------
AUTORE: 3465
DATA :14/04/2011 - 19:22:50
----------------------------------------
grazie, la soluzione che cercavo è quella illustrta da aris
----------------------------------------
AUTORE: 482
DATA :15/04/2011 - 07:24:48
----------------------------------------
ma stavo pensando...se il tuo e' un subvi e non un vi principale, puoi anche settare nelle proprieta' del VI che venga chiuso alla fine dell'esecuzione.
In questo modo se premi un pulsante di stop che fa finire tutte le operazioni nel subVI, automaticamente si chiude.
Questa proprieta' la trovi clikkando col tasto destro sull'icona in alto a destra dei vi e selezionando VI properties->Window appearance->customize->close afterwards if originally close
----------------------------------------
AUTORE: 645
DATA :15/04/2011 - 07:59:57
----------------------------------------
Anche io mi associo a Geppo... se hai bisogno di chiudere un VI ma non tutto l'ambiente LabView probabilmente stai lavorando con un SubVI.
Potresti utilizzare un VI principale che ha il solo scopo di permettere la selezione del VI (secondario) da avviare.
Poi tratti questo VI secondario attraverso il VI Server con il quale puoi controllare una serie di opzioni tra le quali la chiusura al termine delle operazioni.
In pratica lasci aperto solo il VI principale e apri e chiudi di volta in volta il VI che ti serve.
----------------------------------------
AUTORE: 3465
DATA :16/04/2011 - 19:12:38
----------------------------------------
no ragazzi ho più vi (indipendenti) in esecuzione sullo stesso pc ed ho bisogno di chiuderne uno solo di essi. IL quit labview me li chiude tutti.
----------------------------------------
AUTORE: 645
DATA :18/04/2011 - 09:59:33
----------------------------------------
Potresti usare il nodo STOP e chiudere il Front Panel del VI.
Prova a guardare http://www.ni.com/pdf/manuals/321526b.pdf per un elenco di funzioni.
----------------------------------------
================================================================================
Tree control
================================================================================
AUTORE: 301
DATA :14/04/2011 - 07:05:34
----------------------------------------
Ciao ragazzi,
sapete che sia possibile o come fare ad aggiornare il text in un indicatore tree?
Cerco di spiegarmi meglio,
sto usando un tree come indicatore per visualizzare lo stato di un processo che una macchina esegue, vorrei aggiornare (nel tree) il tempo della fase in esecuzione (che fa parte del child text).
Credete che l'unico modo sia fare ogni volta la copia del tree nel tree aggiornado solo il valore che mi interessa?
Grazie a tutti
----------------------------------------
AUTORE: 1078
DATA :22/04/2011 - 12:03:01
----------------------------------------
Hi già provato con le proprietà ActiveCell e ActiveItem?
la logica è : Prima attivi l'item dalla proprietà ActiveItem.tag e poi ti sposti tra le celle con la proprietà ActiveCell.ColumnNumber, selezionata la cella che ti interessa setti la proprietà ActiveCell.string.
Dovrebbe funzionare, io purtroppo non ho sufficiente tempo per provare....
----------------------------------------
AUTORE: 1078
DATA :22/04/2011 - 13:49:30
----------------------------------------
Ho verificata e funziona come ti ho descritto nel post precedente. Ti allego un VI di esempio, ovviamente perdonami qualche errore e un po' di disordine, sono veramente a corto di tempo!
La logica del VI che allego è: Cancello tutto se presente qualcosa, popolo la tree con i padri, gli aggiungo i figli e nell'ultimo for (quello più interessante per te) modifico il testo delle celle figlio.
Spero ti sia chiaro, se non dovesse esserlo ti aiuto dopo Pasqua...
Ciao ciao e buona Pasqua!
----------------------------------------
AUTORE: 301
DATA :22/04/2011 - 15:52:56
----------------------------------------
Riky,
sei semplicemente il top!
Grazie infinite e buona Pasqua a Te e tutti gli amici di Ilvg!
----------------------------------------
================================================================================
Consiglio acquisizione da webcam
================================================================================
AUTORE: 3465
DATA :16/04/2011 - 19:14:42
----------------------------------------
Salve a tutti,
vorrei poter inserire in un pannello una finestra che mi mostri le immagini provenienti da una webcam. Poichè il mio sistema è collegato tramite lan stavo pensando a una ip-webcam
sapete consigliarmi un modello di webcam adatto al mio scopo?
E successivamente c'è già qualcosa di implementato a livello di blocchetti labview per l'acquisizione delle immagini?
grazie
----------------------------------------
AUTORE: 482
DATA :18/04/2011 - 07:12:58
----------------------------------------
C'e' tutto il tool vision che ti permette di acquisire immagini.
Per quanto riguarda le webcam, i driver IMAQdx di national, permettono di acquisire tutte le webcam compatibili con directshow.
Ovviamente il tool vision e' a pagamento. Pero' s esi parla solo di acquisizione e non di elaborazione, forse la parte di IMAQ e' free.
----------------------------------------
================================================================================
Blocchetto Get Ip address?
================================================================================
AUTORE: 3465
DATA :17/04/2011 - 16:50:42
----------------------------------------
Salve a tutti,
volevo sapere se esiste un modo da labview per ottenere l'indirizzo ip della macchina su cui sta girando il mio applicativo. Per ora lo faccio mediante il blocchetto system execution--->ipconfig ma voglio che l'indirizzo ip sia disponibile come output di un blocchetto già predefinito.
Grazie
----------------------------------------
AUTORE: 927
DATA :19/04/2011 - 10:27:49
----------------------------------------
"String to IP", senza ingressi, dà l'IP della macchina come numero.
Se lo vuoi in formato x.x.x.x usa "IP to string" in cascata
----------------------------------------
================================================================================
Dove trovare info su acquisizione?
================================================================================
AUTORE: 3428
DATA :18/04/2011 - 09:59:01
----------------------------------------
Salve, tempo fa avevo trovato questo ducumento sul forum mi sembra.. molto interessante.
Ne asistono degli altri? Anche non riguardanti acquisizione?
Mi servirebbe un corso accellerato di acquisizione dati tramite le vi DAQ, come funzionano posso vederlo anche da HELP ma come utilizzarle ancora non so.. Mai acquisito nulla se non in seriale...
Qualsiasi info, grazie
http://www.box.net/shared/2y646tpvmn
Ho messo il link perchè come allegato era troppo grande.
----------------------------------------
AUTORE: 1078
DATA :22/04/2011 - 11:35:12
----------------------------------------
Ciao Renaso,
prova a guardare questi tutorials, dovreti riuscire a trovare quello che fa per te.
[url:3c3atyhw]http://search.ni.com/nisearch/app/main/p/bot/no/ap/tech/lang/it/pg/1/sn/catnav:tu,ssnav:dzn/q/cdaq/scope/en%2Cit/[/url:3c3atyhw]
----------------------------------------
================================================================================
Funzioni varie in LabView
================================================================================
AUTORE: 645
DATA :18/04/2011 - 10:00:39
----------------------------------------
Ho trovato il documento http://www.ni.com/pdf/manuals/321526b.pdf
contenente le funzioni disponibili in LabView.
Può essere utile!
----------------------------------------
AUTORE: 927
DATA :19/04/2011 - 10:34:48
----------------------------------------
Non tanto... è datato gennaio 1998
----------------------------------------
AUTORE: 645
DATA :20/04/2011 - 08:12:15
----------------------------------------
Ehm... eh già!
Me ne sono accorto dopo...
----------------------------------------
================================================================================
Aggiungere expiration time (tipo trial 30 giorni)
================================================================================
AUTORE: 2600
DATA :19/04/2011 - 16:39:55
----------------------------------------
Ciao,
c'è per caso un modo per inserire un "expiration time" come i programmi trial che dopo 30gg non funzionano più ?
magari basato su un qualche cosa di diverso che guardare la data.perchè l'utente x potrebbe tirare indietro l'orologio di
windows
grazie
Spectre
estremi: labview2009 f2
----------------------------------------
AUTORE: 482
DATA :20/04/2011 - 08:08:23
----------------------------------------
beh i 30gg o guardi la data o non hai modo di sapere come sono passati 30gg.
Un alternativa potrebbe essere vincolare il software a TOT numero di utilizzi.
Ogni volta che apri il software, vai ad aggiornare un file nascosto da qualche parte e dopo ad esempio 30 aperture lo blocchi.
----------------------------------------
AUTORE: 1168
DATA :27/04/2011 - 13:48:13
----------------------------------------
Se il PC è un pc aziendale che è sempre connesso ad internet, potresti cercare di farti restituire la data da un server o da un sito ... non so come poterlo fare però!
Altrimenti potresti concedere un po' di più... nel senso che il trial potrebbe essere di 15 giorni effettivi... per cui misuri il tempo tra l'apertura e la chiusura del programma e ne tieni nota in un file nascosto.
Dipende poi dal livello di utenti che ti trovi di fronte... se uno è appena appena sgamato, ti becca il file che vai a modificare e lo sovrascrive con uno non "scaduto". Se hai la possibilità di salvare configurazioni, potrebbe essere furbo salvare questa data in quel file, in modo che se sovrascrive si perde anche tutte le configurazioni modificate dopo.
Ciaooo
----------------------------------------
AUTORE: 43
DATA :27/04/2011 - 16:00:59
----------------------------------------
[quote="gepponline":11fw0ep0]beh i 30gg o guardi la data o non hai modo di sapere come sono passati 30gg.
Un alternativa potrebbe essere vincolare il software a TOT numero di utilizzi.
Ogni volta che apri il software, vai ad aggiornare un file nascosto da qualche parte e dopo ad esempio 30 aperture lo blocchi.[/quote:11fw0ep0]
Il punto non è contare il numero di utilizzi, testare una "durata di utilizzo" o una data di scadenza....
Il punto è che bisogna memorizzare "qualcosa" da "qualche parte" che non venga mai "disinstallata", se non tramite rimozione "manuale".
Per windows è tipico mettere qualche porcheria nei registri per Linux si tratta di creare un file da qualche parte nascondendolo opportunamente...
io opterei per una versione diversa del programma:
- una versione che non è "full functional" cioè limitata funzionalmente.
- una versione che si chiude con una temporizzazzione (dopo mezz'ora il sw si chiude sempre) ma è full functional
bye
----------------------------------------
================================================================================
PID senza utilizzare il PID toolkit
================================================================================
AUTORE: 2279
DATA :21/04/2011 - 11:17:45
----------------------------------------
Ciao a tutti,
mi sto trovando a lavorare ad un sistema di controllo e acquisizione nel quale sono intenzionato ad utilizzare dei controlli PID.
Di fatto il codice che implementa il PID è relativamente semplice, basta utilizzare qualche shift register all'interno del loop principale di acquisizione per tener conto del contributo integrale dell'errore e dell'ultimo valore misurato per calcolare la derivata.
L'unico problema è che in questo modo, nel caso in cui vi siano un numero di controllori PID elevato (anche solo 2 o 3, il numero di fili in giro per il block diagram diventa veramente fastidioso.
La cosa che mi piacerebbe fare è creare una subVI che gestisca il tutto in autonomia, prendendo come ingresso il valore acquisito e le 3 costanti PID, e in uscita mi fornisca il valore di controllo, senza la necessità di ulteriori shift register (in modo simile al blocco PDI fornito dal toolkit). Una finzione del genere potrebbe essere molto comoda per chi il toolkit non ce l'ha.
Nell'implementare tale funzione, ho pensato ad utilizzare variabili globali per tener in memoria gli stati interni, ma questo rende molto poco flessibile lo "strumento" che vorrei creare....
Se qualcuno ha idee a proposito, sono bene accette... Se mai arriverò a una soluzione ragionevolmente "elegante" mi piacerebbe metterla a disposizione di tutti sul forum.
In allegato trovate un esempio di come vorrei che la mia subVi funzionasse (non fate caso al timing dell'acquisizione.. ).
----------------------------------------
AUTORE: 43
DATA :21/04/2011 - 16:03:21
----------------------------------------
Usare VI "rientranti".
Questa è la parola magica.
Lo stato precedente lo lasci negli shift register ed eviti quella schifezza delle globali
Io li uso spessissimo. Ovviamente a ragion veduta, non a casaccio...
Informati
bye
P.S.: puoi salvare i tuoi VI in versione 8.x così posto la mia soluzione....
----------------------------------------
AUTORE: 1078
DATA :22/04/2011 - 07:35:52
----------------------------------------
Io concordo con Paracarro, anch'io uso pochissimo le variabili globali che appesantiscono molto il codice. Preferisco le functional global e se necessario marcate come reentrant.
----------------------------------------
AUTORE: 2279
DATA :22/04/2011 - 14:23:19
----------------------------------------
[quote="paracarro":2jtk6fh9]Usare VI "rientranti".
Questa è la parola magica.
Lo stato precedente lo lasci negli shift register ed eviti quella schifezza delle globali
Io li uso spessissimo. Ovviamente a ragion veduta, non a casaccio...
Informati[/quote:2jtk6fh9]
hai ragione paracarro, ho uploadato la versione per 8.0.
L'unica cosa che mi sfugge, è che non capisco perchè tu consigli l'uso di VI rientranti.
Poniamo che lo stato interno di un controllore PID sia dato da 2 valori (integrale e valore precedente per calòcolare il contributo derivativo).
Il mio problema non è quello di avere l'esecuzione in sequenza dei vari subvi invece che in parallelo (all'interno della subvi ci sono soltanto 2 o 3 moltiplicazioni e addizioni).
Il mio problema è piuttosto quello di evitare gli shift register nella VI principale. Io vorrei che gli stati interni del pid fossero "immagazzinati" all'interno del subvi PID stesso, e che rimangano in memoria da una esecuzione all'altra. non so se mi sono spiegato...
----------------------------------------
================================================================================
Salvare dati in TDMS
================================================================================
AUTORE: 3428
DATA :21/04/2011 - 13:11:56
----------------------------------------
Salve a tutti.
Premetto che non li ho mai usati ma ora ho la necessità di salvare dati acquisiti in dei file TDMS o TDM (non so neanche la differenza...)
Dove posso trovare esempi, o meglio un generatore di dati casuale per vedere come si forma un file di questo genere e poi analizzarlo?
Avete qualcosa di pronto per provare...
Al volo ho provato a fare questo ma ovviamente non funziona!
----------------------------------------
AUTORE: 3428
DATA :21/04/2011 - 13:17:02
----------------------------------------
ah dimenticavo di dire che al momento non ho dati da acquisire ma vorrei solo provare a capire come funzionano questi file e come vengono salvati i dati... appunto mi servirebbe un generatore di dati casuale
----------------------------------------
AUTORE: 1078
DATA :22/04/2011 - 13:27:16
----------------------------------------
Intanto ti consiglio di capire come sono strutturati:
[url:b975m80j]http://zone.ni.com/devzone/cda/tut/p/id/5696[/url:b975m80j]
poi per il generatore di file random, ti invio un esempietto che ho fatto al volo, spero basti!
Ciao e buon lavoro.
----------------------------------------
AUTORE: 3428
DATA :26/04/2011 - 09:07:41
----------------------------------------
grazie mille ricky, ma è possibile che abbia sempre e solo una sola riga di valori e soprattutto senza nessun numero (credo che il report debba dare come risultato una serie di numeri mentre io nel tdms ho solo il nome del canale, la lunghezza, il tipo di dati e il wf_start_time) poi nulla.. il tutto in due linee, segmenti. Uno per il channel 1 e l'altro per il 2, con il tuo vi allegato
ah riesco ad aprire il tdms con excel importer (doppio click sul file mi consiglia di aprirlo con questo sw...)
----------------------------------------
AUTORE: 1078
DATA :27/04/2011 - 07:17:16
----------------------------------------
[quote="renaso":1baif81d]grazie mille ricky, ma è possibile che abbia sempre e solo una sola riga di valori e soprattutto senza nessun numero (credo che il report debba dare come risultato una serie di numeri mentre io nel tdms ho solo il nome del canale, la lunghezza, il tipo di dati e il wf_start_time) poi nulla.. il tutto in due linee, segmenti. Uno per il channel 1 e l'altro per il 2, con il tuo vi allegato
ah riesco ad aprire il tdms con excel importer (doppio click sul file mi consiglia di aprirlo con questo sw...)[/quote:1baif81d]
Ciao Renaso,
è corretto aprire il file TDMS creato dal mio esempio con il "Excel importer", dovresti però guardare meglio com'è fatto il file excel che viene creato in automatico. Nel primo foglio (i file excel sono cartelle di lavoro divise in fogli, i fogli si vedono nella barra in basso) denominato <nome file>(root) troverai le indicazioni di carattere generale (le due righe che guardi) e nel secondo foglio denominato "Current_Measures_Group" (che è assegnato dal mio VI) troverai tutte le misure effettuate separate in Channel_1 nella prima colonna, Channel_2 nella seconda colonna e se ci fossero stati altri canali, Channl_N nella colonna ennesima.
Spero di aver chiarito il dilemma....!!!!
Ciao e buon lavoro.
----------------------------------------
AUTORE: 3428
DATA :27/04/2011 - 07:45:12
----------------------------------------
Grazie ricky, ora ho capito perfettamente...
e chi ci aveva pensato che excel ha la gestione di più fogli...
Grazie mille, nel caso avessi altri problemi continuo la discussione
Buon lavoro a tutti
----------------------------------------
AUTORE: 3428
DATA :14/06/2011 - 13:55:23
----------------------------------------
Salve ragazzi,
torno a chiedere info sui file TDMS.
Quando ne genero uno e aprendolo con excel importer, vedo che nella prima scheda trovo le voci:
RootName: con il nome del file
Title: vuoto
Authot: vuoto
Date\Time: vuoto
Description: vuoto
Come posso inserire valori all'interno?
Grazie
----------------------------------------
================================================================================
Limiti di memoria superati. Quale VI?
================================================================================
AUTORE: 1168
DATA :27/04/2011 - 13:28:21
----------------------------------------
Buongiorno a tutti.
Ho un programma che gestisce un collaudo a fatica di qualche migliaia di cicli e che dura qualche giorno.
Un cliente mi dice che gli si è presentato un errore "limiti di memoria superati" (non sempre allo stesso numero di cicli, ma comunque dopo qualche decina di migliaia).
Ora... il codice è abbastanza impelagato perchè al solito sono state richieste continue modifiche.
C'è un modo facile di capire quale VI sta scrivendo in memoria e quale array sto gestendo male (perchè penso sia un array che cresce...)?
Grazie e ciao!
----------------------------------------
AUTORE: 1078
DATA :27/04/2011 - 14:08:36
----------------------------------------
Penso che il [b:29vwcl6y]Profile Performance and Memory[/b:29vwcl6y] faccia al caso tuo. lo trovi nel menu [b:29vwcl6y]Tools-->Profile[/b:29vwcl6y]. Le istruzioni di come si usa le trovi qui:
[url:29vwcl6y]http://decibel.ni.com/content/docs/DOC-11981[/url:29vwcl6y]
qualche informazione in più invece la trovi qui:
[url:29vwcl6y]http://decibel.ni.com/content/docs/DOC-15425[/url:29vwcl6y]
buon divertimento....!!!
----------------------------------------
================================================================================
Frequency Sweep with Arbitrary Waveform Generator
================================================================================
AUTORE: 3751
DATA :27/04/2011 - 15:49:13
----------------------------------------
Ciao a tutti, è la prima volta che scrivo nel forum.
Sto sviluppando un ambiente in Labview per la tesi di laurea; quello che dovrei fare è comandare un AWG dell'Agilent in modo da ottenere uno sweep in frequenza.
Ho trovato nel forum questo link:
ftp://ftp.ni.com/pub/devzone/epd/nifgen ... weepex.zip
ma sinceramente non riesco ad aprirlo, come se il link fosse sparito.
Qualcuno per caso riesce a vedere il progetto?? oppure è riuscito a ad ottenere una sweep in frequenza controllando un generatore di forme d'onda??
Grazie
Nicola
----------------------------------------
AUTORE: 43
DATA :27/04/2011 - 16:26:54
----------------------------------------
[quote="nigeltorque":11n6low9]Ciao a tutti, è la prima volta che scrivo nel forum.
Sto sviluppando un ambiente in Labview per la tesi di laurea; quello che dovrei fare è comandare un AWG dell'Agilent in modo da ottenere uno sweep in frequenza.
Ho trovato nel forum questo link:
ftp://ftp.ni.com/pub/devzone/epd/nifgen ... weepex.zip
ma sinceramente non riesco ad aprirlo, come se il link fosse sparito.
Qualcuno per caso riesce a vedere il progetto?? oppure è riuscito a ad ottenere una sweep in frequenza controllando un generatore di forme d'onda??
Grazie
Nicola[/quote:11n6low9]
non c'è nessun progetto.
Nello zip c'è una banalissima libreria .llb il cui VI principale è
niFgen_Arb_Frequency_Sweep_Example.vi
Il tutto si basa sulla libreria di National Instrument (ni) niFgen che puoi scaricare direttamente dal sito ni.com (1.5Gb circa)
in effetti pensavo che niFgen supportasse solo roba della National, però...
http://www.ferret.com.au/c/Agilent-Tech ... WG-n679794
bye
----------------------------------------
AUTORE: 3532
DATA :28/04/2011 - 20:37:37
----------------------------------------
Ciao Nicola,
puoi iniziare a scaricare e studiare i driver x il tuo waveform generator. e' possibile che all'interno trovi qualche esempio che faccia a caso tuo.
Il tuo strumento è in grado di realizzare ciò che ti serve?
Tu riesci a farlo manualmente?
Bye
Rosario
----------------------------------------
================================================================================
Operators Vision
================================================================================
AUTORE: 2701
DATA :27/04/2011 - 16:51:12
----------------------------------------
Ciao
Sto lavorando con i pacchetti della national per la visione non capisco a cosa serva la Vi IMAQ MulDiv
C'è qualcuno che mi può aiutare? Magari con un esempio
GRazie
r
----------------------------------------
================================================================================
uso della case structure
================================================================================
AUTORE: 3599
DATA :28/04/2011 - 10:56:10
----------------------------------------
Salve ragazzi;sto scrivendo i driver per l'analizzatore di spettro Rohde&Swarthz.
Ho però un problema:
quando vado a selezionare la Video Bandwidth (VBW) questa deve essere vincolata alla Resolution Bandwidth (RBW) secondo questa regola:
o VBW minore uguale di 0,1xRBW
o VBW maggiore uguale di RBW
quindi devo creare un programma che mi confronti i valori; e nel caso il confronto nn verificasse la regola devo fare in modo che se voglio una VBW maggiore-uguale alla RBW e quella immessa è minore;il mio programma deve riportarmi la VBW al primo valore maggiore-uguale della RBW...
insomma spero di essermi spiegata bene
poiche ho un array di valori da confronatare pensavo di utilizzare una case structure in cui analizzare ogni singolo caso...pensate vada bene????
Qui sotto allego il VI che sto creando.
Mi date una mano o un consiglio su come fare?????
Grazie mille!!!
----------------------------------------
AUTORE: 1078
DATA :29/04/2011 - 07:25:05
----------------------------------------
Ciao Raffy,
se non ho capito il confronto che devi fare è abbastanza banale, ma nel tuo VI ha messo un selettore di non capiscasco il funzionamento. Vediamo se ho capito cosa devi fare, devi confrontare un valore selezionato dall'utente (o passato da un'altra funznione, il valore possibile deve essere uno tra quelli dell'array VBW?) con i valore contenuti in uno dei due arrai (penso il VBW) trovato il valore che soddisfa la tua regola.... e qui mi sono perso cosa devi fare dopo?
----------------------------------------
AUTORE: 3599
DATA :29/04/2011 - 15:25:34
----------------------------------------
Ciao
...hai ragione il programma dovrebbe essere abbastanza banale
ma è la prima volta che utilizzo labview xchè devo creare i driver dell'analizzatore per la tesi e senza quest'ultimo step sn bloccata
...ti spiego il problema
praticamente i valori della Video bandwidth e della Resolution bandwidth dell'analizzatore sn legate tra loro (dalla regola che ho scritto
)
e ho 2 casi :
1)Se scelgo di lavorare cn i [b:21kaykwu]Modulated Signa[/b:21kaykwu] devo avere una VBW maggiore uguale della RBW
2)Se scelgo di lavorare cn i [b:21kaykwu]Kept free of noise[/b:21kaykwu] devo avere una VBW minore o uguale di 0,1xRBW
Quello che devo creare è un programma che prima di tutto mi permetta di selezionare i segnali cn cui voler lavorare ([b:21kaykwu]Modulated Signal[/b:21kaykwu] o [b:21kaykwu]Kept free of noise[/b:21kaykwu])
A seconda della scelta deve andare a fare le sue [b:21kaykwu]verifiche[/b:21kaykwu]...
se decido di lavorare cn [b:21kaykwu]Modulated signal[/b:21kaykwu] la VBW deve essere maggiore o uguale alla RBW;
quindi il mio prog deve prendere il valore immesso della VBW dall'utente e va a confrontarlo cn la RBW(già selezionata)...
se verifica il maggiore o uguale lascia tutto com'è...
altrimenti deve andare a settare la VBW al primo valore immediatamente superiore o uguale a quello della RBW(....posso anche porre direttamente VBW=RBW)
i valori della RBW e della VBW sono quelli degli array...spero di essere riuscita a farmi capire...grazie mille!!!!
se riuscissi a darmi una mano te ne sarei veramente grata
))))
----------------------------------------
AUTORE: 1078
DATA :29/04/2011 - 16:45:34
----------------------------------------
[quote="raffy":2hffxo5q]1)Se scelgo di lavorare cn i Modulated Signa devo avere una VBW maggiore uguale della RBW
2)Se scelgo di lavorare cn i Kept free of noise devo avere una VBW minore o uguale di 0,1xRBW[/quote:2hffxo5q]
Questo lo risolvi connettendo il selettore che hai messo nel tuo VI al "?" della case structure. Poi cambi il nome del case da auto a true e aggiungi un case che in automatico ti verrà chiamato False.
Per il confronto devi inserire due controlli che permettano all'utente di selezionare i valori delle due bande, VBW e RBW, infine devi inserire nel case selector le logiche di controllo e verifica del valore selzionato.
Sto modificando il tuo VI per cercare di darti una mano con il tuo esempio... però oggi sono out of process... ne riparliamo lunedì, adesso vado a casa!
Ciao e buon weekend!
----------------------------------------
AUTORE: 3599
DATA :29/04/2011 - 23:18:48
----------------------------------------
grazie mille!!!!sei veramente gentilissimo
ho provato a farlo in quest'altro modo...vedi se ti convince
grazie ancora
))))) buon week end
----------------------------------------
AUTORE: 1078
DATA :02/05/2011 - 08:34:25
----------------------------------------
Ciao Raffy,
direi che così è un po' più chiaro il funzionamento del tuo software. Premesso che non conosco il resto del contesto in cui sarà inserito il tuo VI, direi che funziona.
----------------------------------------
AUTORE: 43
DATA :02/05/2011 - 10:13:05
----------------------------------------
usalo come subVI[attachment=0:3qcltngz]RBW-VBW.vi[/attachment:3qcltngz]bye
----------------------------------------
AUTORE: 3599
DATA :02/05/2011 - 13:00:30
----------------------------------------
Grazie mille paracarro!!!!...ti sarò grata a vita!!!!!
..l'unico problema è che quando faccio partire il tuo vi mi si blocca alla event structure collegata alla condizione del ciclo while...inoltre la rbw è associata ad un altro array di valori...quello sono riuscita a modificarlo
..ma x quanto riguarda la prima parte nn sn riuscita a risolvere niente :S....mi puoi dare un'altra piccolissima mano
?!?!
grazie grazie grazie!!!!buona giornata!!!
----------------------------------------
AUTORE: 43
DATA :02/05/2011 - 13:42:31
----------------------------------------
Con il main di esempio penso si possa capire l'uso che se ne deve fare...[attachment=0:2vt3qf3l]rbw-vbw.zip[/attachment:2vt3qf3l]bye
----------------------------------------
AUTORE: 1078
DATA :03/05/2011 - 07:46:18
----------------------------------------
Ciao Raffy,
la soluzione suggerita da paracarro è molto valida se la tua intenzione è quella di visualizzare all'utente un VI che gli consenta di fare delle selezioni a manina. Se la tua VI deve essere integrata in un contesto diverso dalla selezione utente e il suo scopo è quello di far tornare dei risultati da input in ingresso che non siano selezioni dell'utente o che queste selezioni siano già state fatte in un altro punto del programma, ti sconsiglio di usare una SubVI che utilizzi le Event structure. Nello scenario da me immaginato sono più efficenti e performanti le SubVI senza interfaccia utente; implementando meglio il tuo VI potresti ottenere un'efficenza migliore senza complicarti la vita.
Purtroppo non ho molto tempo per implementarti la soluzione come la penso io, anche se non sei molto lontana dal farlo da sola, oltretutto è un'ottimo esercizio!
Buon lavoro.
----------------------------------------
AUTORE: 43
DATA :03/05/2011 - 09:02:05
----------------------------------------
Vediamo se questo può andare bene a Ricky...[attachment=0:1wea4xg4]rbw-vbw.zip[/attachment:1wea4xg4]bye
----------------------------------------
AUTORE: 1078
DATA :03/05/2011 - 14:00:41
----------------------------------------
Bravo @paracarro....
addirittura la doppia possibilità!
Come al solito sei estremamente professionale.
@Raffy:
Adesso hai proprio tutto quello che ti serve!
Buon lavoro.
----------------------------------------
AUTORE: 3599
DATA :05/05/2011 - 18:33:17
----------------------------------------
...grazie mille ragazzi
...purtroppo ho avuto problemi di connessione...e ho potuto vedere solo adesso i programmi...
cosa dire...siete stati gentilissimi
...domani associo il programma all'analizzatore e vi faccio sapere come è andata!!!!...
grazie grazie grazie!!!!Buona serata
)))))))))))))))))))
----------------------------------------
================================================================================
While temporizzati
================================================================================
AUTORE: 3428
DATA :29/04/2011 - 09:30:07
----------------------------------------
Salve a tutti,
nuovo progetto, nuova corsa...
Devo poter far delle acquisizioni per un determinato tempo, deciso da me, cambiare i valori di alcuni parametri a fine tempo e ricominciare da capo. Tutto gestito tramite file .ini con dei parametri da far caricare al vi tra cui il tempo di acquisizione e i parametri di acquisizione (canali, campioni ecc.)
Ho diviso il file ini in diverse sezioni che rappresentano i miei passi dell'intero ciclo, quindi nominati 1, 2, 3 ecc. con all'interno chiavi che rappresentano i parametri, per ogni sezione sempre uguali ma ovviamente i loro valori cambiano tra i passi.
Ricapitolando, forse non mi spiego. Devo fare 3 tipi di acquisizioni che ovviamente staranno dentro while.
Dall'ini sezione 1 mi carico i valori, faccio quello che devo fare finchè non mi scade il tempo (scritto tra i parametri dell'1) poi esco dal ciclo e ci rientro passando i valori che leggo dal 2 e via dicendo..
Quello che vi chiedo è quale è il modo migliore di implementare tale sw
Non ho mai usato i timed loop ma potrebbe essere un'idea... nel finesettimana li guardo, oppure?
Grazie a tutti e buon weekend
----------------------------------------
AUTORE: 1078
DATA :29/04/2011 - 11:26:39
----------------------------------------
I timed loop sono ottimi quando sono utilizzati con sistemi Real-Time, sotto windows perdono il loro significato in quanto demandano comunque allo scheduler di windows la loro esecuzione. Per fare quello che chiedi io mi orienterei sulle state machine La sequenza sarà --> Carico dati 1 --> eseguo dati 1 --> Carico dati 2 --> eseguo dati 2 --> carico dati n --> eseguo dati n --> Esco e termino
Trovi informazioni sulle state machine qui:
[url:wrklta4p]http://search.ni.com/nisearch/app/main/p/bot/no/ap/tech/lang/it/pg/1/sn/ssnav:dzn/q/state%20machine/[/url:wrklta4p]
Se serve altro.... a disposizione.
----------------------------------------
AUTORE: 3428
DATA :29/04/2011 - 12:52:08
----------------------------------------
si, girerà sotto windows, quindi come mi hai consigliato meglio lasciare da parte i timed loop.
Il fatto è che dovrò usare i parametri dei vari passi sempre nelle stesso programma, o meglio sulla stessa parte di programma...
Mai usata la state machine, ora controllo e vedo se è fattibile, grazie
----------------------------------------
AUTORE: 645
DATA :30/04/2011 - 19:37:23
----------------------------------------
La State Machine è una soluzione molto comoda per realizzare il VI che ti serve.
Per avere strutture più semplici puoi usare le sequenze, caricare i dati ed entrare in un ciclo per il tempo stabilito nel file.
Quando il tempo è passato (e il ciclo è finito) passi alla sequenza successiva.
Ps: prova a postare il Vi man mano che lo realizzi: in questo modo sarà più facile confrontarsi.
----------------------------------------
AUTORE: 3428
DATA :02/05/2011 - 12:02:22
----------------------------------------
Vi posto la mia idea...
Grazie
----------------------------------------
AUTORE: 3428
DATA :04/05/2011 - 15:01:00
----------------------------------------
in generale, anche se non ho avuto vostre risposte, il mio sw gira ma non mi soddisfa pienamente..
Quello che non mi soddisfa è che facendo come ho proposto, le partenze dei cicli in cascata non sono sincronizzate.
Vorrei che partissero tutte allo stesso millesimo di secondo, o comunque il più precise possibile..
Anche quando faccio la differenza del tempo di ciclo con quello iniziale i tempi non sono uguali... io vorrei che fossero il più vicini a quello impostato da me...
Posso usare solo il "Tick count" per fare quello che mi serve?
Vi riallego...
----------------------------------------
AUTORE: 482
DATA :05/05/2011 - 08:05:21
----------------------------------------
hai provato con gli eventi?
----------------------------------------
AUTORE: 3428
DATA :05/05/2011 - 08:25:38
----------------------------------------
Cioè mettere tutti i while in cascata dentro un unico evento scatenato da qualcosa (un value change di un bottone mi andrebbe bene...)
Altro dubbio: vorrei utilizzare un subpanel per visualizzare diverse VI sempre nello stesso spazio del fornt panel;
ho realizzato questo esempio ma non riesco a togliere le scollbar che mi si presentano al memento che carico la prima vi... e comunque sarebbe solo un piccolo problema visto che non riesco a caricare le altre!!!
----------------------------------------
AUTORE: 3428
DATA :05/05/2011 - 08:26:20
----------------------------------------
la VI
----------------------------------------
AUTORE: 482
DATA :05/05/2011 - 12:33:31
----------------------------------------
Quando dico di provare con gli eventi, intendo, mettere tutti i cicli while in attesa di un evento e poi generare l'evento. In questo modo sai che tutti i vi partiranno insieme.
Se invece li metti semplicemente paralleli c'e' sempre la possibilità che qualcuno parta dopo e qualcuno parta prima.
----------------------------------------
AUTORE: 3428
DATA :05/05/2011 - 12:56:34
----------------------------------------
ah ok ora ho capito...
Per quanto riguarda invece il subpanel?
----------------------------------------
AUTORE: 645
DATA :08/05/2011 - 08:09:01
----------------------------------------
Due osservazioni sui tempi di esecuzione: per loro natura i programmi NON Real-Time non sono precisissimi.
Garantiscono precisione elevata ma se vuoi tempi perfetti devi ricorrere a soluzioni Real-Time (programmate in maniera adeguata altrimenti i vantaggi hardware svaniscono a causa degli errori software).
Per quanto riguarda i cicli potresti provare ad usare i Timed-Loop che dovrebbero già essere ottimizzati per l'esecuzione; c'è un blocchetto apposta per la sincronizzazione dello start dei cicli (almeno nella versione 2010) ma non so come si usa.
Aggiungo: guarda http://zone.ni.com/reference/en-XX/help ... /#examples e gli esempi nella cartella LabView alla voce General - Timedloop. Ne trovi uno dedicato alla sincronizzazione fatto bene.
----------------------------------------
================================================================================
ricostruire stringa frammentata temporalmente
================================================================================
AUTORE: 3401
DATA :29/04/2011 - 11:00:28
----------------------------------------
Ciao a tutti, sono settimane che sbatto la testa su un problema che sembra semplice da risolvere ma non mi riesce. Espongo la cosa:
devo ricevere da seriale una stringa lunga 40 caratteri che contiene 5 dati numerici, ogni dato numerico è identificato dalla sequenza #01, #02 ecc fino a #05, per cui non è difficile estrapolare ognuno dei 5 numeri e graficarli. Il problema però è questo: la stringa non arriva completa ma arriva in pezzi (a volte 2 a volte 3) intervallati da frazioni di secondo, per cui ogni volta che faccio tracciare i punti sul grafico, il primo numero viene sicuramente tracciato, mentre gli altri a seconda che arrivino contemporaneamente o meno a volte vengono graficati col loro valore e altre invece il punto sul grafico va a zero. N.B. non posso far attendere il programma che arrivino tutti i 40 caratteri da seriale perchè questa non è l'unica operazione che deve eseguire il sistema, altre volte ho comandi che richiedono un numero diverso di caratteri in risposta per cui se così facessi il ciclo while rimarrebbe bloccato in attesa.
In definitiva devo fare in modo di ricostruire la stringa che arrivi intera e istantanea alla routine del grafico, ho provato con concatenate string, ma il problema è che le stringhe si sommano tutte insieme in una unica che cresce man mano che arrivano dalla seriale, bisognerebbe cancellare la stringa non appena viene ricostruita completamente.
Scusate la lungaggine ma spero di essermi spiegato.
Grazie
----------------------------------------
AUTORE: 1078
DATA :29/04/2011 - 11:19:32
----------------------------------------
Secondo me la chiave di volta è iterare un ciclo (functional global - singol step) con uno shift register (non inizializzato (meglio se inizializzato a comando) che concatena la stringa, una volta ottenuta tutta la string la separi facilemnte, io aggiungerei un carattere di CRLF ogni volta che concateni poi con lo spreed sheet string otterrei un double array da cui ricaverei la prima riga che contiene sicuramente i valori in un array e su questo lavorerei per ottenere i dati da graficare...
Spero di averti messo sulla strada giusta!
Buon lavoro.
----------------------------------------
AUTORE: 3401
DATA :29/04/2011 - 11:37:33
----------------------------------------
Eh! Anch'io ho avuto delle dritte da un amico che mi ha suggerito di usare uno shift register, il fatto è che lo shift register non lo so utilizzare! Tantomeno so come si inizializza, per quanto riguarda il secondo suggerimento non so cosa siano i caratteri di CRLF.
Ti ringrazio comunque per averci provato
è solo che avendo impartato un po' da solo Labview non sono ferrato su argomentazioni più tecniche come quelle che hai descritto tu.
----------------------------------------
AUTORE: 3401
DATA :29/04/2011 - 11:48:10
----------------------------------------
Se c'è la possibilità di condividere dei .vi ti posto la parte di programma incriminata...così magari me lo puoi completare tu con il ciclo di cui mi parlavi?
----------------------------------------
AUTORE: 645
DATA :30/04/2011 - 19:42:55
----------------------------------------
Potresti provare con una soluzione di questo tipo: aspetti un tot di tempo o un certo numero di caratteri ricevuti.
Se entro il tempo non sono arrivati i caratteri non stampi nulla e aspetti il giro successivo.
Se prima del tempo sono comunque arrivati i caratteri stampi nel grafico il valore e cancelli la parte di stringa appena stampata.
Così facendo potrebbe succedere che qualche volta non stampi un punto e la volta successiva stampi due punti contemporaneamente ma non avrai problemi di punti a zero. In pratica crei una specie di buffer che si svuota solo quando i dati sono presenti o dopo un tot di tempo.
Bisogna realizzare qualcosa che nel caso di tempo trascorso e caratteri non arrivati non stampa subito ma aspetta il doppio dei caratteri e poi stampa.
Un po' di confusione non guasta mai!
----------------------------------------
================================================================================
Controllo della Temperuatura in Multi-Step
================================================================================
AUTORE: 3684
DATA :01/05/2011 - 14:50:14
----------------------------------------
Ciao a Tutti entro in punta dei piedi in questo forum, sto cercando di imparare ad usare questo programma (abbiate pazienza), come prima applicazione sto cercando di fare un programma che mi controlli la temperatura in vari step impostando le soglie e la durata degli stessi step.
Il programma raggiunta la soglia di temperatura del primo step dovrebbe mantenerla (con l'apertura ON/OFF di una valvola) fino all'raggiungimento dei minuti preimpostati, quando il countdown sarà a 0 passerà allo step successivo che si comporterà alla stessa maniera del primo.
Vi allego l'inizio del mio progetto ho fatto un po di collage di esempi, ma mi sono bloccato, non riesco a fare il passaggio dal primo al secondo step, non so neanche se è una strada che mi puo puortare da qualche parte.
(Per il l'acquisizione della temperatura sarà utilizzato il componente DS18B20 tramite seriale e per il comando delle valvole sarà utilizzata la parallela).
Ciao spero di essere stato chiaro e grazie a tutti per l'aiuto.
----------------------------------------
AUTORE: 3684
DATA :01/05/2011 - 14:53:09
----------------------------------------
Scusate ecco l'allegato
----------------------------------------
AUTORE: 1078
DATA :20/05/2011 - 10:50:39
----------------------------------------
Ciao Charlie,
la soluzione migliore (anche suggerita da NI) per un problema come il tuo è quella dell'utilizzo delle State Machine. Trovi diversi esempi su queste strutture sul sito della NI e forse anche in questo forum. Penso che un'esempio che ti possa dare un'ide di come realizzare il tuo sistema, che possa inoltre indirizzarti inoltre su una buona tecnica di programmazione è l'esempio che è documentazione di studio per conseguire l'esame di certificazione CLD.
Puoi scaricarlo da qui:
[url:aobs6frb]https://decibel.ni.com/content/docs/DOC-14716[/url:aobs6frb]
Spero ti sia utile.
----------------------------------------
AUTORE: 3684
DATA :24/05/2011 - 08:23:30
----------------------------------------
Grazie mille, mi serviva un punto di partenza, ora mi studio un po di esempi e provo.
----------------------------------------
AUTORE: 645
DATA :27/05/2011 - 10:13:32
----------------------------------------
Se la State Machine dovesse essere troppo rigida per iniziare, puoi anche preparare una struttura CASE con qualche variabile che identifica lo stato in cui ti trovi (per esempio una serie di LED che si accendono a seconda della parte di programma raggiunta). In base allo stato (quindi in base al LED True) entri nel case corrispondente ed esegui il passaggio voluto.
----------------------------------------
================================================================================
Subpanel
================================================================================
AUTORE: 3428
DATA :06/05/2011 - 17:01:23
----------------------------------------
Salve a tutti e buon finesettimana.
Vorrei creare un'interfaccia tramite subpanel che nello stesso frame mi possa caricare più VIs, o meglio una per volta, alla pressione di un apposito bottone (ad esempio 3 bottoni VI1, VI2 e VI3)
Ho provato ma non ci riesco, mi compare solo la prima VI e poi non mi carica più nulla se clicco ad esempio su VI2 o su VI3...
Riporto un esempio di quello che ho fatto, e come path ho messo delle VI che ho...
Spero risolviate il mio problema... Il tutto per non usare una struttura TAB e far girare tutto contemporaneamente, ma runnare quello che voglio solo quando mi serve, cioè alla pressione del bottone VI1, 2 ecc.
Grazie, ogni consiglio è d'oro.
----------------------------------------
AUTORE: 3532
DATA :06/05/2011 - 18:15:34
----------------------------------------
Ciao,
puoi modificare il tuo vi come l'esempio "New Event Handler"
che trovi tra gli esempi di labview nella dir:" ....\LabVIEW 2010\examples\general\uievents.llb\New Event Handler.vi".
----------------------------------------
AUTORE: 1078
DATA :10/05/2011 - 07:19:31
----------------------------------------
Abbiamo già affrontato un'argomento di questo tipo. Prova a dare un'occhiata alle soluzioni che sono state suggerite:
[url:k4wq1yaq]http://ilvg.it/forum/viewtopic.php?f=1&t=3934&p=17358&hilit=subpanel#p17358[/url:k4wq1yaq]
----------------------------------------
AUTORE: 645
DATA :27/05/2011 - 10:05:49
----------------------------------------
Di solito si passa dal VI Server per fare una cosa del genere. Un VI principale che contiene i blocchi di VI Server per richiamare i VI secondari.
Puoi anche decidere se il VI principale deve rimanere bloccato (cioè privo di interazione con l'utente) durante l'esecuzione dei VI secondari o se invece tutti i VI mantengono l'interattività con l'utente.
----------------------------------------
================================================================================
Funzione di Trasferimento
================================================================================
AUTORE: 3751
DATA :09/05/2011 - 16:55:38
----------------------------------------
ciao a tutti, affacciandomi per la prima volta al programma labview non riesco a venir fuori dal seguente problema:
quello che dovrei fare è cercare di ottenere la funzione di trasferimento di un amplificatore a cui mando dei segnali e ne registro l'uscita; ho trovato in Labview un VI chiamato "Transfer Function Point by Point" che presi in ingresso due segnali mi da in uscita la risposta in frequenza nel dominio del tempo e della fase; il punto è: come posso a partire da queste informazioni trovare la FORMULA della funzione di trasferimento?? Cio che cerco è proprio la funzione matematica vera e propria, qualcuno è già ruscito, magari usando un altro metodo??
Grazie in anticipo
Nicola
----------------------------------------
AUTORE: 927
DATA :12/05/2011 - 09:50:19
----------------------------------------
Devi sapere perlomeno che tipo di funzione stai cercando (lineare, polinomio, logaritmica...). Sotto Mathematics -> Fitting ci sono parecchie possibilità, però richiedono il Full Development System
----------------------------------------
AUTORE: 3751
DATA :14/06/2011 - 14:30:59
----------------------------------------
Grazie per aver risposto...
Premetto che anche io sono di Fano!!
In realtà mi era stato detto di provare con una funzione a un polo, o a due poli, senza specificarne il tipo... sto cercando la funzione di trasferimento che poi mi permetterà di studiare le non linearità dell amplificatore sotto esame!!
----------------------------------------
AUTORE: 645
DATA :15/06/2011 - 23:53:13
----------------------------------------
Ma tu conosci la funzione di trasferimento e vuoi implementarla in LabView o devi trovarla?
Se devi trovarla puoi fare i calcoli a mano (se si tratta di un sistema che non cambia) o puoi usare il Toolbox System Identification (aggiunta a LabView... se ce l'hai, altrimenti è un costo) per ricavarla in base ai dati (bisogna però conoscere qualcosa di System ID).
Poi ci sono i blocchi per l'utilizzo della funzione di trasferimento (serve il Toolbox Simulation & Control): con questo tool aggiuntivo puoi usare le funzioni di trasferimento nello stesso modo in cui vengono usate in MatLab e Simulink (solitamente più familiari a chi progetta controlli).
----------------------------------------
AUTORE: 3751
DATA :16/06/2011 - 09:11:40
----------------------------------------
La funzione di trasferimento devo trovarla...
Praticamente da Labview controllo un generatore di forme d'onda della Agilent; i segnali generati vanno in ingresso ad un amplificatore autocostruito ed io, misurando le risposte del mio sistema (ampli) devo ricavare la FUNZIONE DI TRASFERIMENTO / RISPOSTA IN FREQUENZA dell' ampli..
Ho visto che il VI "Fit Express" dovrebbe essere in grado di dare in uscita la funzione matematica vera e propria, e il valore dei coefficienti del polinomio che descrive la funzione matematica...
Se qualcuno conosce qualche metodo alternativo... si accettano suggerimenti!!
----------------------------------------
AUTORE: 3751
DATA :21/10/2011 - 14:47:06
----------------------------------------
Finalmente sono riuscito a trovare la funzione di trasferimento; l'ho trovata facendo il fit di una curva e invertendo il suo valore, ora è nella forma 1/( ao + a1x + a2 x^2 + ..); l'unica cosa che devo fare ora è implementarla in labview.
Con "discrete transfer function" del pacchetto "Control e Design" ho visto che è possibile inserire nel .vi un segnale di ingresso, la funzione di trasferimento che si ha a disposizione e ricavare il segnale di uscita. è esattamente quello che ho cercato di fare nel mio progetto, ma non riesco poi a visualizzare un segnale in uscita dal suddetto .vi;
allego il mio progetto (a destra è ben visibile il suddetto .vi con in ingresso input e TF); se qualcuno ha suggerimenti o consigli sono bene accetti, grazie..
P.S. segnale di ingresso e di uscita del dispositivo di cui ricavo la TF sono "simulati" con un generatore di forme d'onda e lo stesso segnale filtrato..
Grazie
----------------------------------------
AUTORE: 3751
DATA :21/10/2011 - 14:49:54
----------------------------------------
Ho dimenticato di allegare il progetto...
----------------------------------------
AUTORE: 3751
DATA :02/11/2011 - 09:52:07
----------------------------------------
Nessuno ha dato un occhiata al progetto allegato??
Grazie
----------------------------------------
================================================================================
Differenze tra Lossy Queue e RT FIFO?
================================================================================
AUTORE: 3805
DATA :10/05/2011 - 20:17:08
----------------------------------------
Salve a tutt,
Qualcuno può aiutarmi a capire la diffrenza tra Lossy Queue e RT FIFO nell'acquisizione bufferizzata?
Grazie mille.
Ciao
----------------------------------------
AUTORE: 43
DATA :11/05/2011 - 09:00:45
----------------------------------------
[quote="iemai":2c7u5vzt]Salve a tutt,
Qualcuno può aiutarmi a capire la diffrenza tra Lossy Queue e RT FIFO nell'acquisizione bufferizzata?
Grazie mille.
Ciao[/quote:2c7u5vzt]
Finalmente qualche domanda interessante!
innanzitutto gli acronimi:
RT FIFO sta per Real Time First In First Out.
La struttura FIFO si contrappone alla LIFO (Last In First Out). Entrambe sono dei buffer, cioè un area di immagazzinamento dei dati accessibile attraverso 2 operazioni:
Metti nel buffer
togli dal buffer
Ovviamente data la diversa specificazione la struttura dati LIFO è meglio nota come "Stack" in italiano "pila"
Esempio pratico di stack è una "pila" di piatti: si aggiungono piatti sempre in cima alla pila, e quando si prendono, si prendono dalla cima. Quindi i primi piatti ad essere presi sono gli ultimi (+ recenti) aggiunti.
In informatica lo "stack" è essenziale , indispensabile direi tanto che ne è prevista una gestione a bassissimo livello che ha la principale funzione di "ricordare" tutti i "punti" di rientro delle chiamate a funzioni.
La struttura FIFO è meglio nota con il nome di "Queue" in italiano "coda"
Esempio pratico di queue è la "coda" di gente che attende di essere servita ad uno sportello: la prima persona che arriva è la prima che se ne va via dopo essere stata servita. Se la coda non è all'"italiana" l'ordine in cui le persone arrivano è lo stesso di quando se ne vanno.
-----
Tornando a noi la RT FIFO è una coda Real Time
http://zone.ni.com/devzone/cda/tut/p/id/3934
Leggendo il documento si evince che a differenza delle code "standard" implementate da LabVIEW che possono addirittura avere dimensione "indefinita", le code RT (RT FIFO) sono sempre di dimensione fissata (allocate staticamente)ed hanno la caratteristica di essere "Lossy" cioè con "perdita di dati".
http://zone.ni.com/reference/en-XX/help ... ueue_elem/
La perdita si verifica quando si inserisce un elemento in una RT FIFO piena: l'elemento + vecchio (quello in cima alla coda che attende di essere servito) viene scartato per fare spazio al nuovo aggiunto.
Normalmente se la coda ha dimensione fissata, la funzione di accodamento "Enqueue" non aggiunge elementi se la coda è piena. Può attendere un certo tempo (specificato al momento della chiamata della Enqueue) che si liberi uno spazio nella coda. Nel caso non si liberi uno spazio nel tempo prefissato non viene eseguito l'inserimento ed la funzione restituisce un errore.
per concludere:
la coda di LabVIEW chiamata "RT FIFO" è una "Lossy Queue"
bye
----------------------------------------
AUTORE: 1078
DATA :11/05/2011 - 11:36:18
----------------------------------------
Bella spiegazione @paracarro... Complimenti!
----------------------------------------
AUTORE: 3805
DATA :11/05/2011 - 19:30:28
----------------------------------------
Innanzitutto, grazie per la pronta e chiara risposta.
Ho letto le pagine linkate ed ho capito quanto segue:
le funzioni del gruppo "RT FIFO" servono a creare e gestire code all'interno di un VI, ma anche a passare code tra VI;
le funzioni del gruppo "Queue Operations" servono a creare e gestire code all'interno di un VI, senza la possibilità di passare le code tra VI diversi;
è corretto?
Ed a livello di prestazioni (velocità d'esecuzione, ottimizzazione delle risorse di memorie, etc.) potete darmi delucidazioni?
Ancora grazie.
Ciao
----------------------------------------
AUTORE: 43
DATA :12/05/2011 - 09:10:11
----------------------------------------
Ieri notte avevo scritto una risposta ma per qualche mio errore non l'ho postata per cui cercherò di dare una risposta sintetica
[quote="iemai":2mnx3ida]...le funzioni del gruppo "RT FIFO" servono a creare e gestire code all'interno di un VI, ma anche a passare code tra VI;[/quote:2mnx3ida]
Risposta corretta, ma imprecisa e lacunosa.
le code RT FIFO hanno senso ed sono disponibili solo con LabVIEW RT.
Come scritto al [url=http://zone.ni.com/devzone/cda/tut/p/id/3934:2mnx3ida]link[/url:2mnx3ida] che hai visto e letto, le RT FIFO si applicano in tutti quei casi in cuisi vogliono passare da e per dati a loop che sono "time critical" nell'ambiente RT (Real Time) che richiede "determinismo".
Non dispongo di LabVIEW RT e quindi vado a sensazione, ma mi sembra che una peculiarità di queste code sia quella di poter permettere lo scambio di dati fra software labVIEW RT che è scaricato e gira su HW dedicato e VI di LabVIEW Standard che girano sul PC che interagisce con quell'HW dedicato.
Siccome il canale di comunicazione fra LabVIEW e labVIEW RT sembra sia un canale virtuale TCP IP (non riesco a trovare il link che lo spiega) queste code possono essere lette anche da remoto.
Il funzionamento della RT FIFO ricalca perfettamente l'uso del "circular buffer"
http://zone.ni.com/devzone/cda/tut/p/id/7188
implementato da NI per l'acquiszione continua di grandezze analogiche...
[quote="iemai":2mnx3ida]le funzioni del gruppo "Queue Operations" servono a creare e gestire code all'interno di un VI, senza la possibilità di passare le code tra VI diversi;
è corretto?;[/quote:2mnx3ida]
No. Le code di LV standard consentono di poter scambiare dati fra VI diversi,con la limitazione di poterli scambiare fra VI appartenenti alla stessa applicazione (solo dentro lo stesso eseguibile.
Non commettere bl'errore di far girare VI in ambiente di sviluppo labVIEW che normalmente apparterrebbero ad eseguibili diversi: in ambiente di sviluppo la comunicazione fra code da VI appartenenti a diversi applicativi sarebbe possibile , ma non se almeno uno deidue applicativi viene compilato.
[quote="iemai":2mnx3ida]Ed a livello di prestazioni (velocità d'esecuzione, ottimizzazione delle risorse di memorie, etc.) potete darmi delucidazioni?[/quote:2mnx3ida]
ovviamente le code RT FIFO sono fatte per lo scambio in ambiente "Real Time"- "deterministico" per cui sono "più performanti" ad hanno le seguenti limitazioni rispetto allecode tradizionali di LabVIEW:
- Le code RT devono essere pre-allocabili, per cui:
1) l'elemento base di una coda può essere solo uno scalare o un cluster contenente elementi scalari. Se l'elemento della coda fosse un array, deve essere fissata la dimensione dell'array
Le code tradizionali accettano come elemento base le stringhe o cluster contenenti stringhe o array di lunghezza non prefissata.
2) la code deve avere una dimensione massima fissata.
Le code tradizionali possono non avere lunghezza prefissata (anche se non è buona norma farlo...)
-se il sistema RT mette nella coda, per es., a cadenza regolare , deterministica i dati che produce, deve poter sovrascrivere i dati + vecchi (buffer overrrun)se il consumatore "non riesce ad elaborarli e la coda risulta piena"
3) le code RT devono essere obbligatoriamente "lossy" perchè la cadenza nella scrittura dei dati nella coda è prioritaria rispetto all'attesa che il consumatore processi i dati con la coda piena.
Nelle code tradizionali sono a disposizione più funzionalità rispetto alle code RT. Per es.è la possibile inserire un elemento non solo in fondo alla coda ma anche in cima...
bye
----------------------------------------
AUTORE: 3805
DATA :17/05/2011 - 21:56:00
----------------------------------------
ok, molto più chiaro.
grazie dell'aiuto!
----------------------------------------
================================================================================
Lista item di un Tree
================================================================================
AUTORE: 2550
DATA :16/05/2011 - 13:21:55
----------------------------------------
Ciao a tutti!
Devo realizzare un programma che permetta all'utente di generare un "programma" da inviare ad un'apparecchiatura.
Il programma utente è diviso in step e per ogni step è possibile scegliere il tipo di funzione, limiti ecc. Ogni funzione ha a sua volta dei parametri di controllo.
Ho iniziato a realizzare tutto cio con un tree. In questo modo l'utente ha una struttura ad albero con i vari step in cui le funzioni sono dei figli e i parametri delle funzioni sono figli alle stesse.
Quello che ora non riesco capire è come fare per sfogliare il tree da programma per estrapolare la sequenza di passi programmata.
Esiste qualche metodo o proprieta che mi restituisca in array la lista di tutte le item presenti nel tree? Avevo pensato ai metodi della sezione Navigate tree, ma non so come risalire al primo elemento dell'albero. Qualche suggerimento?
Grazie fin da ora per la vostra disponibilità
DVD
----------------------------------------
AUTORE: 1078
DATA :17/05/2011 - 15:54:49
----------------------------------------
la proprietà Value del controllo tree ti restituisce il tag selezionato dall'utento. La proprietà "ALL Tags" ti restituisce invece tutti i tag presenti nella tree. Se utilizzi gli invoke node "navigate" riesci attraverso il tag selezionato a risalire a tutti i "parents" (Get Parent o la funzione Get Path) dell'albero....
Spero sia sufficiente!
Buon lavoro.
----------------------------------------
AUTORE: 2550
DATA :18/05/2011 - 09:34:09
----------------------------------------
Grazie Ricky! La proprietà "All tags" è proprio quella che fa al caso mio!
----------------------------------------
================================================================================
Apertura calcolatrice di windows
================================================================================
AUTORE: 3428
DATA :16/05/2011 - 14:26:23
----------------------------------------
Salve,
vorrei chiedervi una cosa forse banale, ma non so come realizzarla.
Vorrei che nel mio sw ci sia un pulsante che se premuto mi apra la calcolatrice di windows, possa calcolare quello che mi serve e poi tornare sul mio sw, sempre in esecuzione.
Si può fare?
Grazie
----------------------------------------
AUTORE: 43
DATA :16/05/2011 - 18:30:29
----------------------------------------
[quote="renaso":1kc32j4p]Salve,
vorrei chiedervi una cosa forse banale, ma non so come realizzarla.
Vorrei che nel mio sw ci sia un pulsante che se premuto mi apra la calcolatrice di windows, possa calcolare quello che mi serve e poi tornare sul mio sw, sempre in esecuzione.
Si può fare?
Grazie[/quote:1kc32j4p]
viewtopic.php?f=1&t=4855
viewtopic.php?f=1&t=5055
bye
----------------------------------------
AUTORE: 3428
DATA :18/05/2011 - 09:18:42
----------------------------------------
ho letto la risposta ora, risolto in 2 secondi..
graize paracarro, grazie ilvg
----------------------------------------
================================================================================
Acquisire ed elaborare contemporaneamente
================================================================================
AUTORE: 1670
DATA :19/05/2011 - 09:38:18
----------------------------------------
Buon giorno a tutti.
Sono alle prese con un vi che mi deve acquisire 32 canali analogici ad un rate max abbastanza alto, intorno 5000 /sec (cioè in totale 5000*32 al secondo), lo stesso vi mi deve anche elaborare i dati e visualizzarmi il grafico su uno a scelta dei 32 canali. Guarando il vostro forum ho trovato una possibile soluzione con le queue che, da quello che ho capito funzionano come delle FIFO. Impostato il Vi con le queue il tutto funziona ma, il programma non risulta per niente veloce e mi rimangono diverse migliaia di dati in coda prima che possano essere elaborati, con ritardo anche di decine di minuti. La mia senzazione è che il sistema queue è molto comodo per fare questi giochetti ma, si prende anche il suo tempo. Qualcuno sa se ci sono sistemi più veloci oppure se si può implementare con una local variable. A titolo informativo uso LabVIEW 2010, su sistema xp con un pc dual core e 3 GByte di ram.L'acquisizione viene eseguita via USB da un hardware CAEN attraverso la libreria lv rilasciata dalla stessa CAEN.
Ringrazio anticipamente dell'attenzione
Buona giornata
----------------------------------------
AUTORE: 482
DATA :19/05/2011 - 10:53:36
----------------------------------------
Cos'e' che devi graficare? Certo che se vuoi visualizzare un dato alla volta alal frequenza di 5Ks/sec non ce la farai mai.
Solitamente in quetsio casi si riempie un buffer di dati e poi lo si butta su grafico o cmq lo si analizza.
Pero' il buffer di solito è gestito direttamente dai driver dell'hardware.
Tu per cosa le usi le queue? e perchè?
----------------------------------------
AUTORE: 1670
DATA :19/05/2011 - 17:00:23
----------------------------------------
Grazie dell'interesse gepponline,
in sostanza devo vedere un istogramma di un canale, selezionabile da front panel: in pratica inserisco in ascissa il valore della conversione analogica ed in ordinata il numero di volte che si è verificato propio quel valore.
Be le queue le uso per comodità perchè uso praticamente una variabile array di array che posso scrivere e leggere contemporaneamente senza rischiare di andare a leggere più volte lo stesso dato e senza rischiare di sovrascrivere dati non ancora letti. Il mio vi è molto semplice: in un loop acquisisco i dati (array di 32 valori ), li salvo su disco attraverso un buffer di 100 array (come dati grezzi per eventuali elaborazioni off-line) e li inserisco all'inizio della coda; nel secondo loop prelevo i dati alla fine della coda compongo l'array per l'istogramma e lo vizuallizzo.
Probabilmente come dici tu con un rate di 5Ks/s non è possibile fare tutto questo, ma visto che non faccio elaborazioni molto pesanti pensavo che la cosa in qualche modo potesse essere risolta, magari salvando su disco con buffer più grande. Resto del parere che a prima impressione le queue (è la prima volta che le uso) sono comodissime e di facile uso però mi sembrano pesanti come prestazione e mi chiedevo se c'è qualche sistema più veloce.
Grazie mille
----------------------------------------
AUTORE: 43
DATA :19/05/2011 - 17:17:59
----------------------------------------
[quote="Cromosoma":13r6irvu]...di 100 array (come dati grezzi per eventuali elaborazioni off-line) e li inserisco all'inizio della coda;...[/quote:13r6irvu]
Direi che 100 x32 samples alla volta E' UN PO' TROPPO POCO.
Qualunque sia la freq. di acq., predisponi un buffer circolare di 2-3 secondi almeno (nel tuo caso 15000 S x 32 channels) ed elebora i dati prendendoli 1/2 sec. x volta ( nel tuo caso leggi 2500 sample x 32 channel alla volta).
Regola Aurea.
Il loop di acq., fallo girare con una temporizzazione di 250 msec. e controlla lo scanbacklog: quando il valore supera 2500 leggi ed elabora 2500 samples.
Estrai dalla matrice di dati la colonna relativa al canale in uso
bye
----------------------------------------
AUTORE: 1078
DATA :20/05/2011 - 10:05:57
----------------------------------------
[quote="Cromosoma":2toh8f9r]Il mio vi è molto semplice: in un loop acquisisco i dati (array di 32 valori ), li salvo su disco attraverso un buffer di 100 array (come dati grezzi per eventuali elaborazioni off-line) e li inserisco all'inizio della coda; nel secondo loop prelevo i dati alla fine della coda compongo l'array per l'istogramma e lo vizuallizzo. [/quote:2toh8f9r]
A naso, se prima di accodare attendi di aver scritto tutti i dati su disco potrebbe essere questo il tuo collo di bottiglia. Crea una seconda coda che si occuperà del salvataggio su disco dei dati, con una lenza un po' più lunga del resto e fai lavorare le due code in parallelo. Quando accodi i dati non mettere in sequenza le due funzioni di accodamento ma fai lavorare anche loro in parallelo.
Buona giornata!
----------------------------------------
AUTORE: 3428
DATA :23/05/2011 - 09:15:27
----------------------------------------
Molto interessante, non ho mai lavorato con le code e molto probabilmente questa soluzione potrebbe servirmi fra poco per un esigenza di acquisizione e salvataggio in contemporanea anche a me...
Quando qualcuno di voi ha 5 min mi potrebbe postare un esempio di come implementare quello che ha fatto [i:15d2mzj5]cremosoma[/i:15d2mzj5]? una piccola VI solo per capire come impostare il programma...
Grazie
----------------------------------------
AUTORE: 43
DATA :23/05/2011 - 11:14:40
----------------------------------------
[quote="renaso":2d3umvar]Molto interessante, non ho mai lavorato con le code e molto probabilmente questa soluzione potrebbe servirmi fra poco per un esigenza di acquisizione e salvataggio in contemporanea anche a me...
Quando qualcuno di voi ha 5 min mi potrebbe postare un esempio di come implementare quello che ha fatto [i:2d3umvar]cremosoma[/i:2d3umvar]? una piccola VI solo per capire come impostare il programma...
Grazie[/quote:2d3umvar]
Prima di chiedere agli altri di postare esempi (non ti bastano quelli già presenti in LabVIEW?) e prima di pensare a passare i dati acquisiti ad altri processi paralleli attraverso l'uso di code, devi gestire al meglio la coda primaria, il buffer circolare di acquisizione.
Se il tuo buffer fosse una vasca ed i dati acquisiti fossero acqua, devi tenere presente che:
-c'è un rubinetto che immette nella vasca 5000 campioni al sec.
-la Tua "vasca" deve avere la capienza di 2-3 sec. di acq. (15000 campioni)
-non puoi permetterti di svuotare la vasca con un cucchiaio (100 campioni alla volta), devi usare un contenitore di capacità superiore.
Ciò ti deve dare il tempo per fare tutte le elaborazioni che vuoi a patto che anche Tu svuoti la vasca con la stessa velocità con cui viene riempita.
chiaro?
bye
----------------------------------------
AUTORE: 1670
DATA :24/05/2011 - 17:21:17
----------------------------------------
Ok mi sembra tutto abbastanza chiaro, guardando un po' le cose che mi avete scritto ho verificato che il mio collo di bottiglia in realtà è il buffer di acquisizione che è di 1024 campioni e che purtroppo non posso modificare perchè è legato all'elettronica di acquisizione che non è una scheda national (sistema Caen).
Comunque ricostruendo solo una frazione dei mie dati , riesco comunque ad avere, on line, l'informazione sufficiente sul mio istogramma (anche se parziale) e mi riservo di ricostruire tutti i dati solo off line per eventuali elaborazioni.
Ringrazio tutti dell' aiuto.
Per Renaso: non riesco ad inserirti l'esempio che chiedi però lo puoi trovare facilmente sugli esempi di labVIEW : si chiama Queue Basics.vi.
Buon lavoro a tutti
----------------------------------------
================================================================================
Inserimento da tastierino numerico USB
================================================================================
AUTORE: 3881
DATA :27/05/2011 - 15:59:56
----------------------------------------
Ciao, sono nuovo del Forum e avrei bisogno di un consiglio riguardo un programma che sto sviluppando per la gestione di una competizione sportiva.
A questo programma devono accedere 3 giudici chiamati E1, E2 e D. Il giudice D inserisce il suo punteggio direttamente dalla tastiera del portatile su cui è in esecuzione il programma; vorrei invece che i due giudici E potessero inserire ognuno il suo punteggio nel rispettivo controllo E1 ed E2 tramite i due tastierini numerici USB loro affidati.
Spero di essere stato chiaro nello spiegare il mio problema..c'è qulacuno nel forum che ha idea di come si possa implementare questo passaggio?
Grazie anticipatamente a tutti!!!
----------------------------------------
AUTORE: 1078
DATA :30/05/2011 - 08:52:50
----------------------------------------
Innanzitutto dovresti campire come vengono riconosciuti i due tastierini USB dal sistema operativo. Normalmente ad ogni utenza usb viene dato un'indirizzo univoco a cui si può puntare direttamente, lo dovresti trovare nelle proprietà dell'ardware sotto il sistema operativo. Una volta trovato l'indirizzo dei tastierini, puoi intercettare la loro comunicazione (che sarà sicuramente monodirezionale) attraverso i driver VISA messi a disposizione da LV. L'indirizzo della porta è quello USB.
Ovviamente se il tuo dispositivo dovesse utilizzare un protocollo seriale proprietario, devi conoscere il protocollo per poter interpretare correttamente i dati che ti arrivano. Non credo sia il tuo caso.
Trovi qualche informazione in più qui:
[url:1c1a7ejf]http://zone.ni.com/devzone/cda/tut/p/id/4478[/url:1c1a7ejf]
Spero sia sufficiente!
Buon lavoro.
----------------------------------------
AUTORE: 1078
DATA :31/05/2011 - 07:58:02
----------------------------------------
Ciao,
Oltre a quanto ti ho suggerito ieri ti consiglio di dare un'occhiata alle funzionalità che labview ti mette a disposizione nella palet "Connetivity/Input Device" penso tu possa trovare qualcosa di già pronto che faccia al caso tuo!
----------------------------------------
AUTORE: 3881
DATA :31/05/2011 - 10:11:02
----------------------------------------
Ciao Ricky!Intanto grazie mille per l'aiuto.
Dopo aver smanettato un po' con i comandi che mi hai consigliato, credo che il problema sia che i tastierini non vengono riconosciuti come USB Device, e infatti non appaiono nell'elenco dei device sul NI-MAX.
Ho provato anche con la procedura di creazione del file .INF cui fa riferimento il link che mi hai allegato, ma...nulla.
Tra l'altro, utilizzando la funzione "Query input devices" mi viene individuata una sola tastiera (quella del portatile) e dei due tastierini collegati nemmeno l'ombra.
Qualche altra idea per caso?!
Di nuovo grazie!!
----------------------------------------
AUTORE: 482
DATA :31/05/2011 - 10:29:50
----------------------------------------
Gli USB devices non li vedi nel MAX.
Nel max vedi solo le porte seriali e le eventuali schede riconosciute dal MAX.
Un tastierino USB probabilmente avrà il suo driver e il suo protocollo di comunicazione.
Se si riesce a comunicarci in seriale tramite i visa BENE, senno' l'alternativa è passare tramite le dll proprietarie dei tastierini...e allora AUGURI
----------------------------------------
AUTORE: 1078
DATA :31/05/2011 - 13:46:00
----------------------------------------
Concordo con quello detto da geppo.
Per usare direttamente le DLL che il fornitore dei tastierini ti deve aver dato e che tu dovresti aver installato, devi utilizzare la [b:2y0vfm45]call by library function [/b:2y0vfm45]di labview. I dettagli di come parlare con queste librerie dovrebbero essere forniti dal fornitore dei tastierini!
----------------------------------------
AUTORE: 43
DATA :31/05/2011 - 17:54:45
----------------------------------------
[quote="b0b01985":2wykhcja]Ciao Ricky!Intanto grazie mille per l'aiuto.
Dopo aver smanettato un po' con i comandi che mi hai consigliato, credo che il problema sia che i tastierini non vengono riconosciuti come USB Device, e infatti non appaiono nell'elenco dei device sul NI-MAX.
Ho provato anche con la procedura di creazione del file .INF cui fa riferimento il link che mi hai allegato, ma...nulla.
Tra l'altro, utilizzando la funzione "Query input devices" mi viene individuata una sola tastiera (quella del portatile) e dei due tastierini collegati nemmeno l'ombra.
Qualche altra idea per caso?!
Di nuovo grazie!![/quote:2wykhcja]
Nessuna Idea. Diciamo che se i tastierini non sono "Programmabili", sei fregato!!!
Non ho fatto il test ma immagino che collegare 2 tastiere contemporaneamente sullo stesso pc sia possibile come pure collagare 2 mouse:
entrambi funzionano ma non vengono distinti.
Tipico esempio: su un PC portatile mouse e touchpad possono funzionare contemporaneamente creando un gran casino con il cursore.
Tra l'altro la cosa vale per tutti i Sistemi Operativi.
Se i Tastierini sono "programmabili" puoi far restituire ad ognuno di essi valori diversi e così potrai distinguere ogni pressione di tasto.
Cmq sia dicci Marca e modello di 'sti tastierini...
bye
----------------------------------------
AUTORE: 3881
DATA :31/05/2011 - 22:09:25
----------------------------------------
Si, esattamente..è proprio come dici tu: funziona tutto ciò che è collegato al pc senza però alcuna distinzione!
I tastierini non sono programmabili..o almeno, quello cui ho optato per i test non lo è (si tratta di un Manatthan IDATA KP-10C).
Eventualmente però, se è così un casino, si potrebbe pensare anche a dei piccoli palmari, sempre che in questo modo l'operazione sia davvero più semplice e fermo restando che la spesa non sia esagerata (considera che il programma girerà su 6 pc in contemporanea, ovvero 12 tastierini/palmari).
Ciao!!
----------------------------------------
AUTORE: 43
DATA :01/06/2011 - 11:33:54
----------------------------------------
[quote="b0b01985":o9i2i2yz]Si, esattamente..è proprio come dici tu: funziona tutto ciò che è collegato al pc senza però alcuna distinzione!
I tastierini non sono programmabili..o almeno, quello cui ho optato per i test non lo è (si tratta di un Manatthan IDATA KP-10C).
Eventualmente però, se è così un casino, si potrebbe pensare anche a dei piccoli palmari, sempre che in questo modo l'operazione sia davvero più semplice e fermo restando che la spesa non sia esagerata (considera che il programma girerà su 6 pc in contemporanea, ovvero 12 tastierini/palmari).
Ciao!![/quote:o9i2i2yz]
Secondo me conviene rivolgersi direttamente a chi fa le tasitere tipo questi
http://www.rafi-italy.it/Cataloghi%20PDF%20Frame.htm
Non li conosco, ma guardando i loro cataloghi c'è veramente di tutto.
Prova a contattarli : magari esiste già un prodotto a listino che fa x Te!
Se sei + vicino a Torino secondo me anche questi vanno bene
http://www.k-tronic.it/inglese/index.htm
Entrambe le aziende sono frutto della ricerca con google di "tastiere custom"
Facci sapere gli sviluppi!
bye
----------------------------------------
================================================================================
build array con differenti rappresentazioni
================================================================================
AUTORE: 3805
DATA :30/05/2011 - 18:56:41
----------------------------------------
Salve a tutti,
l'inghippo è il seguente:
prendo il blocchetto "build array" e do in ingresso un "I8", un "U16" ed un "I16".
Ho pensato che per avere tutta la dinamica leggibile in uscita avrei dovuto mettere un "I32" come indicatore. Ma così facendo il vi tratta tutti gli ingressi come numeri senza segno (ad es. -1 in "I8" all'uscita del "build array" risulta essere 65535.
Perchè???
Ho provato a sostituire l'ingresso "U16" con "U32" e funziona... qual'è la logica di ciò?
Grazie dell'aiuto.
Ciao
----------------------------------------
AUTORE: 3805
DATA :30/05/2011 - 19:09:02
----------------------------------------
allego l'immagine del codice, così spero sia più chiaro...
saluti
----------------------------------------
AUTORE: 43
DATA :31/05/2011 - 11:06:39
----------------------------------------
Perchè per una regola (non so dove è scritta , ma è scritta)
Cercando nell'help on-line di LabVIEW la parola "Numeric Conversion" si ottiene, nella lista, una pagina intitolata proprio "Numeric Conversion" data come appartenente alla sezione "How to"
Riporto quanto scritto e sottolineo la parte interessata.
[quote="Help di LabVIEW":qhuazcf1][b:qhuazcf1]Numeric Conversion [/b:qhuazcf1]
If you wire an output to a destination that has a different numeric representation, LabVIEW converts the data according to the following rules:
- [b:qhuazcf1]Signed or unsigned integer to floating-point number[/b:qhuazcf1]—LabVIEW converts the data to the nearest value possible. This conversion is exact when the floating-point number is more precise than the integer. If the integer is more precise than the floating-point number, LabVIEW maintains as much precision as possible in the conversion.
- [b:qhuazcf1]Floating-point number to signed or unsigned integer[/b:qhuazcf1]—LabVIEW coerces out-of-range values to the minimum or maximum value of the integer. For example, if you convert a negative floating-point number to an unsigned integer, the result is 0.
- [b:qhuazcf1]LabVIEW treats enums as unsigned integers[/b:qhuazcf1]—For example, if you convert –1, a floating-point number, to an unsigned integer, LabVIEW coerces the value into the range of the enum. If the range of the enum is 0 to 25, and you convert –1 to an enum, LabVIEW converts the value to 25, which is the largest value in the range of the enum.
- [b:qhuazcf1]Integer to integer[/b:qhuazcf1]—LabVIEW does not coerce out-of-range values to the minimum or maximum value of an integer. If the source is smaller than the destination, LabVIEW extends the sign of a signed source and places zeros in the extra bits of an unsigned source. If the source is larger than the destination, LabVIEW copies only the least significant bits of the value.
-[b:qhuazcf1] Integer, floating-point, or fixed-point number to fixed-point number[/b:qhuazcf1]—LabVIEW coerces values outside the desired range for the fixed-point number to within the fixed-point number's maximum and minimum values.
[u:qhuazcf1][b:qhuazcf1]If you wire two different numeric data types to a numeric function that expects the inputs to be the same data type, LabVIEW converts one of the terminals to the same representation as the other terminal. LabVIEW chooses the representation that uses more bits. If the number of bits is the same, LabVIEW chooses unsigned over signed. [/b:qhuazcf1][/u:qhuazcf1]
Coercion dots appear on block diagram nodes to alert you that you wired two different numeric data types together. The dot means that LabVIEW converted the value passed into the node to a different representation. Coercion dots also appear when LabVIEW discards bits of a fixed-point number. Coercion dots can cause a VI to use more memory and increase its run time. Try to keep data types consistent in the VIs you create.
Tip To use memory more efficiently, eliminate coercion dots at numeric terminals. <Control>-click the input value on the block diagram and select Representation from the shortcut menu to change the representation of the input value to the representation of the terminal.
[/quote:qhuazcf1]
In base a quanto sctitto se devo costruire un array di interi e devo unire elementi di 8 e 16 bit, alla fine otterrò elementi a 16 bit. Inoltre l'U16 prevale sull'I16 e si ottiene un array di U16.
Nel tuo caso, infatti, i "coertion dots"(conversioni implicite evidenziate da punti rossi) sono sul primo ingresso I8 e l'ultimo (I16) mentre non è presente sull'elemento centrale U16.
Da notare che nel caso in cui ci fossero stati U8, I16, I16, cmq avrebbe prevalso la I (numeri in complemento a 2) sulla U perchè non ci sarebbero stati elementi di maggior peso senza segno...
Da notare inoltre che se ci fossero stati in ingresso venti numeri a 8bit e 1 solo a 32 bit , l'array ottenuto sarebbe stato a 32 bit, nonostante la gran parte degli elementi della stessa dimensione. Lo stesso sarebbe valso anche per numeri con segno o senza segno:il senza segno (U) prevale sempre anche se la maggior parte dei numeri sono con il segno (I).
A questo punto resta da chiarire come sono fatte le conversioni dei numeri con segno:
quando vengono scalati a maggior dimensione, sia che il nuovo numero abbia il segno o meno, vengono aggiunti bytes nella parte + significativa. Tutti i bit aggiunti sono degli 1 se il numero è negativo e sono degli 0 se il numero è positivo.
Ricordo che i numeri in comp. a 2 hanno nel bit + significativo, del byte + significativo il segno del numero.
bye
----------------------------------------
AUTORE: 3805
DATA :31/05/2011 - 13:37:41
----------------------------------------
ok, mille grazie!
----------------------------------------
================================================================================
elevazione a potenza
================================================================================
AUTORE: 3599
DATA :01/06/2011 - 14:01:17
----------------------------------------
ragazzi...vi scrivo per farvi una domanda stupida...ma nn riesco a fare l'elevazione a potenza di un numero...
quale blocchetto labview devo usare????? grazie
----------------------------------------
AUTORE: 3599
DATA :01/06/2011 - 14:47:46
----------------------------------------
risolto
----------------------------------------
AUTORE: 43
DATA :01/06/2011 - 14:50:18
----------------------------------------
[attachment=0:2sy4pg2z]Power2ThePeople.JPG[/attachment:2sy4pg2z]
bye
----------------------------------------
================================================================================
variazione dinamica LV-Link e controllo forza (feedback)
================================================================================
AUTORE: 3902
DATA :04/06/2011 - 19:57:13
----------------------------------------
Salve a tutti,
sono nuovo (disperato) utilizzatore di labview.
Sto svolgendo la mia tesi ad hannover e come detto uso LV da praticamente 1 settimana e sono abbastanza abbandonato a me stesso.
Il mio sistema di acquisizione comprende un modulo KUSB-3116 (DT9834-BNC) della Keithley e per acquisire uso le librerie LV-Link.
Ora, la prima domanda è:
come faccio a variare i parametri del canale output durante l'esecuzione del VI?
Per evitare di scrivere mille parole vi allego il mio VI.
Quello che vorrei cambiare sono, per esempio, l'ampiezza e la frequenza del segnale di output...ho provato a trascinare i relativi controlli nel while ma non funziona. Immagino perchè nel while dovrebbe andare anche il blocco OLWaveformGenerate, però così non funziona proprio.
La seconda domanda è:
vorrei creare un controllo di forza; devo eccitare una struttura in step sine, per studiare la relativa risposta in frequenza, e vorrei acquisire a forza costante.
Qualcuno conosce il modo?
Ho cercato molto in rete esempi ma senza trovare nulla...o forse qualcosa ho trovato, ma data la mia attuale ignoranza non devo averlo riconosciuto.
Spero mi possiate aiutare.
Un saluto,
Guido
----------------------------------------
================================================================================
Help me su acquisizione segnale analogico con cRIO 9004
================================================================================
AUTORE: 3903
DATA :06/06/2011 - 13:57:09
----------------------------------------
Salve a tutti, sono uno studenti di Ing. Elettrica della magistrale e dovrei cercare di capire come funziona il Labview insieme al cRIO. Io dovrei acquisire un segnale analogico e confrontarlo con un'onda triangolare, per avere un generatore PWM. Non so come acquisire il segnale e come effettuare la visualizzazione al display o anche stesso tramite oscilloscopio. Come modulo di ingresso analogico ho NI 9215 e come modulo che potrei utilizzare come output per la visualizzazione all'oscilloscopio ho un modulo NI 9401.Non necessariamente devo visualizzare tramite detto modulo, mi basterebbe anche sul display in labview.
Datemi le più info possibili, vi ringrazio anticipatamente e mi scuso se ho sbagliato qualcosa nello scrivere in questa sezione del forum o altro. purtroppo ho poco tempo e questo lo devo realizzare nel giro di un paio di giorni.
Grazie
Ing. Alfredo Campo
----------------------------------------
AUTORE: 3903
DATA :06/06/2011 - 22:13:47
----------------------------------------
spero che il problema non sia perchà sono in ingegneria elettrica e magari qui provenite da altri corsi di studio...ho veramente bisogno..capire qualcosa in più..devo fare una materia ma non ho la più pallida idea di come muovermi
----------------------------------------
AUTORE: 927
DATA :07/06/2011 - 09:02:03
----------------------------------------
Non credo che il corso di studio cambi qualcosa; l'unica differenza tra te e gli esperti è che hanno speso del tempo a leggere manuali e fare prove. Per cominciare potresti andare su Help -> Find examples, guardare l'esempio Toolkits and modules -> FPGA -> CompactRIO -> Basic IO -> Analog input. Spiegarti tutto l'argomento cRIO da zero è chiedere un po' troppo, questo è un forum non un servizio di formazione...
----------------------------------------
AUTORE: 3903
DATA :07/06/2011 - 15:25:40
----------------------------------------
infatti mi scuso...io sono disposto a studiare da manuali, ma se potete indirizzarmi...non trovo niente!qualche link qualcosa..grazie!e scusatemi tanto!riconosco la mia ignoranza, purtroppo il professore ci obbliga a fare queste cose anche se non sappiamo nulla di progettazione hardware, niente di elettronica...infatti mi sento rovinato! Spero di trovare qualche aiuto ad essere indirizzato sulla giusta strada, per trovare almeno il materiale su cui leggere qualche info.Grazie e scusatemi
----------------------------------------
AUTORE: 645
DATA :10/06/2011 - 21:44:47
----------------------------------------
Hai già smanettato un po' per conoscere il CompactRIO?
Non è uno strumentino immediato... se vuoi nella sezione Articoli (http://sandbox.ilvg.it/?p=90#more-90) trovi una breve introduzione all'utilizzo del CompactRIO scritta da me che può servire come punto di inizio.
Poi devi capire come funziona la scheda 9215: ci sono canali di acquisizione che puoi utilizzare (ti vengono segnalati da LabView durante la programmazione del CompactRIO e, se ne se in possesso, trovi indicazioni anche sul foglio che è stato consegnato insieme alla scheda di acquisizione).
Ps: il corso di studi non è un vincolo... anzi! E anche io sono Ing. Elettrico
----------------------------------------
AUTORE: 3903
DATA :11/06/2011 - 19:41:05
----------------------------------------
Grazie tante per la risposta, molto utile la tua guida. Fino a pagina 22 cioè fino alla compilazione sono arrivato, anche se ho fatto tutto per tentativi. ma da li in avanti non so come procedere e onestamente ho capito per via teorica come fare dalla tua guida ma non so se mi sarà sufficiente. Lunedi tornando in laboratorio proverò, in caso ti faccio sapere! Grazie. Ma la conversione in bit non è necessaria?Hai esempi su come effettuare un progetto?un semplice progetto?io dovrei creare un segnale pwm da inviare sul modulo output digitale..
----------------------------------------
================================================================================
Impedire esecuzione sub-VI
================================================================================
AUTORE: 1168
DATA :09/06/2011 - 10:35:59
----------------------------------------
Salve a tutti.
Nella nostra test room, i programmi di test girano tranquillamente senza essere compilati perchè non ci sono dinamiche che richiedono tempistiche esagerate e soprattutto sono modificati spesso.
Solo che non tutti sono "sgamati" e quindi a volte usano dei sub-VI, che generalmente sono chiamati da un test manager, così come sono.
Pecato che il test manager si occupa di fare un po' di configurazioni... e inizializzare dei controlli.... "ma che ci vuole, lo faccio io a mano". Risultati catastrofici ovviamente...
E' possibile capire se i VI sono eseguiti stand-alone o chiamati? al livello dei miei colleghi, non mi importa capire se il chiamante è quello giusto o un VI vuoto che chiama.
Così poi ci metto una password in modo che all'avvio del sub-VI esce un pop-up "per poter eseguire questo VI, inserire la password o lanciare il programma principale".
Grazie e buona giornata,
Pietro
----------------------------------------
AUTORE: 43
DATA :09/06/2011 - 11:39:12
----------------------------------------
[quote="Pio":24221v2b]Salve a tutti.
Nella nostra test room, i programmi di test girano tranquillamente senza essere compilati perchè non ci sono dinamiche che richiedono tempistiche esagerate e soprattutto sono modificati spesso.
Solo che non tutti sono "sgamati" e quindi a volte usano dei sub-VI, che generalmente sono chiamati da un test manager, così come sono.
Pecato che il test manager si occupa di fare un po' di configurazioni... e inizializzare dei controlli.... "ma che ci vuole, lo faccio io a mano". Risultati catastrofici ovviamente...
E' possibile capire se i VI sono eseguiti stand-alone o chiamati? al livello dei miei colleghi, non mi importa capire se il chiamante è quello giusto o un VI vuoto che chiama.
Così poi ci metto una password in modo che all'avvio del sub-VI esce un pop-up "per poter eseguire questo VI, inserire la password o lanciare il programma principale".
Grazie e buona giornata,
Pietro[/quote:24221v2b]
[attachment=0:24221v2b]callchain.JPG[/attachment:24221v2b]
bye
----------------------------------------
AUTORE: 1168
DATA :09/06/2011 - 12:58:22
----------------------------------------
Many grazie!
----------------------------------------
================================================================================
aggiungere data ora ad un waveform graph
================================================================================
AUTORE: 3907
DATA :10/06/2011 - 17:27:48
----------------------------------------
vorrei visualizzare sull asse x l ora/data in cui viene aggiunto il dato y all interno del mio grafico. usando un chart non ho problemi, con un waveform graph non riesco
ecco nell allegato come appare il mio grafico... pare ci sia qualcosa di strano
----------------------------------------
AUTORE: 927
DATA :13/06/2011 - 11:33:17
----------------------------------------
Nelle proprietà del grafico devi impostare "Offset" (la data iniziale) e "Multiplier" (l'intervallo tra un campione e l'altro). Entrambi sono misurati in secondi. L'offset è il numero di secondi dal 1904, ti conviene ottenerlo convertendo un timestamp in numero con il blocco "To double precision float"
----------------------------------------
AUTORE: 3907
DATA :13/06/2011 - 13:21:50
----------------------------------------
perfetto!! funziona
DD grazie mille
----------------------------------------
================================================================================
un aiuto per importare una dll
================================================================================
AUTORE: 3910
DATA :13/06/2011 - 19:06:26
----------------------------------------
Buongiorno a tutti,
Sono Cristian, appassionato di elettronica e domotica.
Avrei bisogno del vostro aiuto: ho acqistato una scheda I/O usb che gestisce 16 ingressi e 16 uscite digitali e 3 ingressi analogici. La scheda è basata su un pic che gestisce direttamente la porta usb.
Chi mi ha venduto la scheda, mi ha fornito programma in visual basic per gestirla. Avrei la necessità di far funzionare la scheda sotto lv.
Non lo conosco ancora, mi sto avvicinando solo ora, fortunatamente ho un collega al lavoro che mi da supporto. Purtroppo anche lui non è in grado di importare correttamente questa dll, non vorrei nemmeno abusare della sua gentilezza visto che mi supporterebbe già nella programmazione. C'è qualcuno che gentilmente tra voi potrebbe/vorrebbe darmi una mano? Potrei gitare la dll e il sorgente in vb6. Se lo sforzo fosse troppo potrei anche pagare il disturbo (nel limite delle mie possibilità)
Ringrazio anticipatamente.
Cris
----------------------------------------
AUTORE: 43
DATA :13/06/2011 - 20:07:23
----------------------------------------
[quote="khriss75":1uqvk658]... C'è qualcuno che gentilmente tra voi potrebbe/vorrebbe darmi una mano? Potrei gitare la dll e il sorgente in vb6. Se lo sforzo fosse troppo[u:1uqvk658][b:1uqvk658] potrei anche pagare il disturbo[/b:1uqvk658][/u:1uqvk658] (nel limite delle mie possibilità)
Ringrazio anticipatamente.
Cris[/quote:1uqvk658]
INCREDIBILE!!!
Comincia a postare dll e sorgente in vb6 e poi vediamo
bye
----------------------------------------
AUTORE: 3910
DATA :14/06/2011 - 07:49:03
----------------------------------------
Ciao Paracarro,
grazie per la risposta.
Credimi, dopo aver riletto quanto hai quotato volevo cancellarlo, in effetti non suona bene.
Ho fatto questo ragionamento: ho bisogno di aiuto, altrimenti sono fermo con il mio progetto (con la scheda dovrei gestire on off del sistema d'allarme e una elettrovalvola per chiudere il generale dell'acqua in caso di allagamento (abito all'ultimo piano!)).
Faccio tutto ciò per passione; come ho detto sto imparando piano piano LV.
Le ipotesi erano 2: o abbandono la scheda e di conseguenza il divertimento oppure chiedo aiuto/supporto eventualmente ricompensando.
Ecco il link per il download dei file:
http://www.megaupload.com/?d=EK2JBPCF
Allego anche la prova di importazione della dll che però mi manda in crash LV!!!
Ringrazio ancora per il supporto!
Ah a chi piace bere posso eventualmente contraccambiare con la birra che faccio artigianalmente (altra passione
)
----------------------------------------
AUTORE: 43
DATA :14/06/2011 - 12:03:54
----------------------------------------
[quote="khriss75":36x4c2tb]Ciao Paracarro,
grazie per la risposta.
Credimi, dopo aver riletto quanto hai quotato volevo cancellarlo, in effetti non suona bene.
Ho fatto questo ragionamento: ho bisogno di aiuto, altrimenti sono fermo con il mio progetto (con la scheda dovrei gestire on off del sistema d'allarme e una elettrovalvola per chiudere il generale dell'acqua in caso di allagamento (abito all'ultimo piano!)).
Faccio tutto ciò per passione; come ho detto sto imparando piano piano LV.
Le ipotesi erano 2: o abbandono la scheda e di conseguenza il divertimento oppure chiedo aiuto/supporto eventualmente ricompensando.
Ecco il link per il download dei file:
http://www.megaupload.com/?d=EK2JBPCF
Allego anche la prova di importazione della dll che però mi manda in crash LV!!!
Ringrazio ancora per il supporto!
Ah a chi piace bere posso eventualmente contraccambiare con la birra che faccio artigianalmente (altra passione
)[/quote:36x4c2tb]
il link che hai indicato mostra visi di signorine + o - avvenenti ed il messaggio:
<Il file al quale si sta tentando di accedere è temporaneamente non disponibile. Riprova più tardi.>
Non puoi zippare tutto e postare un unico file? Non dovrebbe essere tanta roba.
(mi raccomando i sorgenti in VB, altrimenti non si conoscono i "parametri" delle funzioni).
Al limite manda un link del sito che vende la scheda, se non è troppo "amatoriale" (la scheda).
In aggiunta cita la versione di LabVIEW che vuoi utilizzare
bye
----------------------------------------
AUTORE: 3910
DATA :14/06/2011 - 12:14:28
----------------------------------------
Provo ad inviare direttamente su forum, eventualmente se serve altro lo invio.
Credo che megaupload abbia bisogno di un pò di tempo per rendere disponibile quanto ho uppato.
Ancora grazie
----------------------------------------
AUTORE: 3910
DATA :14/06/2011 - 12:18:54
----------------------------------------
dimenticavo... il file vb
----------------------------------------
AUTORE: 482
DATA :14/06/2011 - 12:33:09
----------------------------------------
seocodno me sarebbe buona cosa anche che tu scrivessi modello esatto della scheda che usi.
Eventualmente ci sono schede con le stesse caratteristiche a con già i driver per labview.
----------------------------------------
AUTORE: 482
DATA :14/06/2011 - 12:41:35
----------------------------------------
Io non ho il visual basic, quindi ti chiedo, invece che farmi andare ad interpretare le varie DLL, non c'e' un manuale in formato digitale con la descrizione delle varie funzioni della dll?
----------------------------------------
AUTORE: 43
DATA :14/06/2011 - 14:21:42
----------------------------------------
[quote="khriss75":3jaakxyj]dimenticavo... il file vb[/quote:3jaakxyj]
E' dura...
innanzi tutto ti linko una discussione rimasta aperta
http://www.ilvg.it/forum/viewtopic.php?f=1&t=4115
significato HID e definizione standard
http://en.wikipedia.org/wiki/Human_interface_device
Dall'esempio cmq si evince che si deve passare attraverso la gestione eventi di Windows perchè la periferica è USB e si deve ricevere l'evento di connessione e disconnessione, tanto per gradire...
Poi ho notato dal tuo esempio che è scritto in LabVIEW 6.0.2. Immagino che nessuno o quasi nel forum è in grado di supportare quella versione.
Io attualmente uso LV 8.6.1 che è già roba vecchia, ma quella è roba antica!!
Cmq sia ti consiglio di usare almeno LV 7.1 che è sicuramente meglio di LV 6i
Si può fare ma è complicato. Passo la palla xkè non ho voglia di dedicarti tutto quel tempo...
bye
----------------------------------------
AUTORE: 3910
DATA :15/06/2011 - 15:54:58
----------------------------------------
Grazie a tutti!
La scheda è stata realizzata amatorialmente e acquistata su ebay, chi l'ha venduta non conosce LV.
Io continuo ad approfondire, ho trovato una persona che mi sta dando altre imboccate.
Grazie di cuore per l'interessamento!
Cris
----------------------------------------
AUTORE: 43
DATA :15/06/2011 - 17:34:46
----------------------------------------
[quote="khriss75":3ugetgz0]Grazie a tutti!
La scheda è stata realizzata amatorialmente e acquistata su ebay, chi l'ha venduta non conosce LV.
Io continuo ad approfondire, ho trovato una persona che mi sta dando altre imboccate.
Grazie di cuore per l'interessamento!
Cris[/quote:3ugetgz0]
Beh le imbeccate diamole a tutti.
Questa è la risposta di Filippo Persia di NI. Da non considerare.
http://forums.ni.com/t5/LabVIEW/comunic ... d-p/570123
fuffa che può servire a chiarire cose
http://forums.ni.com/t5/LabVIEW/Confusi ... d-p/475976
Questo è ciò che interessa
http://forums.ni.com/t5/LabVIEW/Microch ... d-p/908138
Questo è l'essenziale
http://zone.ni.com/devzone/cda/tut/p/id/4478
Concetto base:
il dispositivo deve essere visto come dispositivo VISA.
Poi si usano le funzioni di libreria (VISA) e si dimenticano le dll
Dato che si devono usare almeno le VISA 3.0, ti ri-consiglio di cambiare versione di LabVIEW (almeno la 7.1).
bye
----------------------------------------
AUTORE: 3910
DATA :17/06/2011 - 15:21:40
----------------------------------------
Sto scaricando dal sito NI l'ultima versione.
L'utente a cui facevo riferimento, è membro di questo forum (Strady77) e mi consigliava di fare solo chiamate alla dll senza doverla importare!
Ciao
Cris
P.S.: grazie per i link, per me sono una miniera di informazioni!
----------------------------------------
================================================================================
Visualizzazione array 2-D sul front panel
================================================================================
AUTORE: 3912
DATA :14/06/2011 - 14:01:33
----------------------------------------
Salve a tutti,
volevo sapere se esiste un modo per far si' che, quando si va con il muouse su un elemento di un array 2-D, compaiano da qualche parte
le sue coordinate (cioe' gli indici che indicano la sua posizione nell'array) oppure se si possa "orlare" l'array con una riga ed una colonna
contententi le coordinate stesse.
Grazie,
CM
----------------------------------------
AUTORE: 43
DATA :14/06/2011 - 14:30:04
----------------------------------------
[quote="claumelo":2w47hcyp]Salve a tutti,
volevo sapere se esiste un modo per far si' che, quando si va con il muouse su un elemento di un array 2-D, compaiano da qualche parte
le sue coordinate (cioe' gli indici che indicano la sua posizione nell'array) oppure se si possa "orlare" l'array con una riga ed una colonna
contententi le coordinate stesse.
Grazie,
CM[/quote:2w47hcyp]
si può fare.
Colora lo sfondo della matrice e lo sfondo di una singola cella con il colore trasparente "T"
Poi, dietro l'array/matrice mettiun array/matrice equivalente di booleani che cambiaraisolo in corrispondenza del movimento del cursore.
Con un semplice calcolo aritmetico, converti le coordinate che otterrai dall'evento applicabile relative al controllo rilevante ed il giuoco è fatto.
Buon lavoro!
bye
----------------------------------------
AUTORE: 3912
DATA :14/06/2011 - 16:36:44
----------------------------------------
Grazie del consiglio.
Non so pero' come si fa a creare l'arrey di boleani che cambiano in presenza del movimento del cursore...
Inoltre la mia matrice e' gia' una matrice di boleani che rappresento come quadratini verdi o rossi e quindi non possono essere trasparenti e devono rimanere modificabili (cioe' la matrice e' in input).
Grazie in anticipo,
CM
----------------------------------------
AUTORE: 43
DATA :14/06/2011 - 18:55:16
----------------------------------------
[quote="claumelo":nspkiiar]Grazie del consiglio.
Non so pero' come si fa a creare l'arrey di boleani che cambiano in presenza del movimento del cursore...
Inoltre la mia matrice e' gia' una matrice di boleani che rappresento come quadratini verdi o rossi e quindi non possono essere trasparenti e devono rimanere modificabili (cioe' la matrice e' in input).
Grazie in anticipo,
CM[/quote:nspkiiar]
[attachment=0:nspkiiar]EvidMatrixBool_plus.vi[/attachment:nspkiiar]
Fattelo bastare xkè non ti risponderò ulteriormente.
bye
----------------------------------------
AUTORE: 3912
DATA :16/06/2011 - 10:19:53
----------------------------------------
Mi confermate che e' necessario avere il Full Development System per fare quanto voglio?
Al momento posseggo solo la licenza base.
Ci sono altri modi per farlo?
Grazie,
CM
----------------------------------------
AUTORE: 1078
DATA :16/06/2011 - 15:54:38
----------------------------------------
Prova questa. Questo VI restituisce l'indice dell'elemento selzionato partendo dalla posizione del mouse al momento del click. Io la uso negli eventi MouseDown o MouseUP.
----------------------------------------
AUTORE: 3912
DATA :17/06/2011 - 10:01:23
----------------------------------------
[quote="Ricky":2zwmqvly]Prova questa. Questo VI restituisce l'indice dell'elemento selzionato partendo dalla posizione del mouse al momento del click. Io la uso negli eventi MouseDown o MouseUP.[/quote:2zwmqvly]
Grazie!!
Stavo facendo qualcosa di analogo.
Questo mi aiuta soprattutto perche' mi dice quanti pixel sono le distanze tra gli elementi e i bordi...
Quando ho finito di produrre postero' il risultato (comunque molto simile alla funzione che mi hai girato!).
Grazie ancora,
CM
----------------------------------------
AUTORE: 3912
DATA :17/06/2011 - 14:44:44
----------------------------------------
Ho realizzato questo VI. [attachment=0:2ie6703a]Modify_Array_TF_Matrix_MOUSE.vi[/attachment:2ie6703a]
Data una matrice, le cui coordinate sono calcolate tramite il cluster lobo,
quando il mouse va sugli elementi della matrice stessa,
vengono stampate le coordinate dell'elemento su cui si trova il mouse.
Questo e' esattamente quello che volevo.
C'e' pero' un nuovo problema.
Purtroppo quando clicco sul pulsante STOP per fermare il VI, LabView mi si inchioda e ci mette qualche minuto a ritornare operativo.
Il resto del Pc continua a girare correttamente (sembra che LabView arrivato in questa fase usi solo il 50% del processore...).
Consigli per risolvere il problema?
----------------------------------------
================================================================================
Implementare funzione matematica per generare forma d'onda
================================================================================
AUTORE: 3751
DATA :16/06/2011 - 16:20:40
----------------------------------------
Ciao a tutti..
quello che sto cercando di fare e creare una forma d'onda arbitraria (sine sweep esponenziale) che poi invierò al mio AWG in modo che possa memorizzarla.
Per mandargli questo tipo di dati devo usare il VI "Create Arbitrary Waveform" che in ingresso prende un array di dati che riguardano la forma d'onda e riesce a farla generare al AWG.
Ora: nota la formula matematica del segnale che voglio generare come posso "trasformarla" in un array da mandare in ingresso al mio VI ??
Se qualcuno avesse dei suggerimenti ne sarei molto grato.
Grazie
----------------------------------------
AUTORE: 3751
DATA :16/06/2011 - 17:50:45
----------------------------------------
Credo che procederò in questo modo...
realizzo un ciclo temporizzato dentro al quale scrivo la funzione matematica; per ogni istante del ciclo la funzione x(t) mi da un risultato che memorizzo nell array e quell'array va poi in ingresso al VI citato...
----------------------------------------
================================================================================
Array
================================================================================
AUTORE: 3913
DATA :16/06/2011 - 17:45:09
----------------------------------------
Buon giorno,
sono alla mia prima applicazione LabView e trovo alcune difficoltà. Devo inserire in un array-2D i dati acquisiti senza cancellare i precedenti. Usando la funzione "Replace Array Subset" mi vengono cancellati, mentre la funzione "Insert" non riesco ad utilizzarla. Come posso fare?
Grazie
----------------------------------------
AUTORE: 482
DATA :17/06/2011 - 08:39:14
----------------------------------------
La funzione replace RIMPIAZZA degli elementi
La funzione Insert inserisce elementi in un area dell'array. Se gli dici di inserirli in coda dandogli come indirizzo l'ultimo, lui rileva che l'array è finito e quindi non inserisce niente.
Se vuoi aggiungere elementi alla fine di un array, devi usare il build array.
Stai attento all'opzione concatenate inputs.
----------------------------------------
AUTORE: 3913
DATA :20/06/2011 - 10:20:23
----------------------------------------
Grazie. Ora ci provo!
----------------------------------------
================================================================================
Controllo ActiveX per Excel
================================================================================
AUTORE: 487
DATA :17/06/2011 - 08:22:36
----------------------------------------
Ciao a tutti,
ho sviluppato un programmino in Labview 2010SP1 che trasferisce alcuni dati in excel. Sulla macchina dove ho l'ambiente di sviluppo è installato office 2003 e tutto funziona egregiamente. Il problema è che sulla macchina dove tale programma deve girare è installato office 2000 e il programma va in crash. Credo che il problema sia il diverso controllo activex messo a disposizione dalle due differenti versioni di office. La mia domanda, un po' da ignorante in materia, è la seguente: mi sapreste indicare quali sono i nomi dei file activex utilizzati dalle 2 versioni di office? Grazie.
----------------------------------------
AUTORE: 1078
DATA :17/06/2011 - 10:45:18
----------------------------------------
Come si chiama il controllo ActiveX di office che stai utilizzando?
----------------------------------------
AUTORE: 487
DATA :17/06/2011 - 12:50:01
----------------------------------------
Bella domanda! E' quì che mi dò da solo dell'ignorante! Non sono riuscito a scoprire qual'è il controllo utilizzato: l'unica cosa che ti posso dire è il nome della type library, ossia "Microsoft Excel 11.0 Object Library version 1.5". Se mi sai dire come fare per risalire all'activex utilizzato te ne sarei grato.
----------------------------------------
AUTORE: 482
DATA :17/06/2011 - 14:48:33
----------------------------------------
dovrebbe essere scritto sul nodo
----------------------------------------
AUTORE: 482
DATA :17/06/2011 - 14:49:45
----------------------------------------
ma con il tuo programma vai a compilare un template con una grafica già organizzata o riempi solo una tabella?
----------------------------------------
AUTORE: 487
DATA :20/06/2011 - 07:36:53
----------------------------------------
[quote="gepponline":281ud7ow]ma con il tuo programma vai a compilare un template con una grafica già organizzata o riempi solo una tabella?[/quote:281ud7ow]
Il programma legge delle tabelle dati da diversi file e, dopo alcuni calcoli, crea una nuova tabella dati: niente di complicato.
[quote="gepponline":281ud7ow]dovrebbe essere scritto sul nodo[/quote:281ud7ow]
proprio non riesco a risalire al nome del controllo, comunque posto la parte di codice che effettua l'apertura del file excel, giusto per vedere se può servire per aiutarmi a risolvere il problema.
----------------------------------------
AUTORE: 1078
DATA :20/06/2011 - 07:59:55
----------------------------------------
Ok, ho capito...
Correttamente ti appoggi alla Exel.Application, ma mi domandavo, che cosa ti frega di sapere dove è installato l'ActiveX? Secondo me risolvi il tuo problema se, dal property node dove rendi visibile l'applicazione estra (con la proprietà Version) la versione dell'excell installato e da lì con una case structure decidi come comportarti di conseguenza!
Il problema che riscontri dovrebbe risiedere nella proprietà "value" delle celle del foglio di lavoro, dalla versione 2003 è stata sostituita con la proprietà text!
Spero sia sufficiente, altrimenti siamo qui..!!
----------------------------------------
AUTORE: 487
DATA :20/06/2011 - 09:05:02
----------------------------------------
Ricky hai ragione, posso verificare la versione di excel installata, ma il sistema và in crash subito dopo l'apertura di excel e prima dell'apertura del file: è come se nel controllo activex della versione 2000 di excel non sia disponibile la proprietà "workbooks"; è per questo che volevo risalire al controllo corretto.
----------------------------------------
AUTORE: 482
DATA :20/06/2011 - 11:09:17
----------------------------------------
Ma se ti limiti a creare dlele tabelle, perchè non le crei su file di testo formattati con estensione .xls senza andare a scomodare excel?
Poi li puoi comunque aprire con excel, ma non saresti legato alla versione.
Tutto questo ovviamente cadi s einvece usi delle funzioni specifiche di excel.
----------------------------------------
AUTORE: 1078
DATA :20/06/2011 - 12:00:34
----------------------------------------
Ma Excell funziona correttamente? Mi suona alquanto strano che il sistema ti creschi all'apertura di Excell. Hai provato a non visualizzarlo subito, potresti creare il file excell senza visualizzare l'applicativo, se necessario puoi farlo aprire all'utente una volta finita la creazione del file!
----------------------------------------
AUTORE: 487
DATA :20/06/2011 - 12:42:35
----------------------------------------
[quote="gepponline":23s9tenh]Ma se ti limiti a creare dlele tabelle, perchè non le crei su file di testo formattati con estensione .xls senza andare a scomodare excel?
Poi li puoi comunque aprire con excel, ma non saresti legato alla versione.
Tutto questo ovviamente cadi s einvece usi delle funzioni specifiche di excel.[/quote:23s9tenh]
Il problema è che comunque devo aprire excel per poter leggere dei dati, perciò tantovale che restituisca i dati in excel.
[quote="Ricky":23s9tenh]Ma Excell funziona correttamente? Mi suona alquanto strano che il sistema ti creschi all'apertura di Excell. [/quote:23s9tenh]
Excel funziona perfettamente. Tralaltro ho fatto le medesime prove su diverse macchine ottenendo sempre lo stesso risultato: con office 2003 tutto ok e con office 2000 non funziona niente.
[quote="Ricky":23s9tenh]Hai provato a non visualizzarlo subito, potresti creare il file excell senza visualizzare l'applicativo, se necessario puoi farlo aprire all'utente una volta finita la creazione del file![/quote:23s9tenh]
In realtà il programma che ho fatto funziona proprio così. Ho abilitato la visualizzazione solo per fare delle prove, ma il risultato è il medesimo.
----------------------------------------
AUTORE: 482
DATA :20/06/2011 - 13:17:35
----------------------------------------
[quote="coma":3vyl8vca][quote="gepponline":3vyl8vca]Ma se ti limiti a creare dlele tabelle, perchè non le crei su file di testo formattati con estensione .xls senza andare a scomodare excel?
Poi li puoi comunque aprire con excel, ma non saresti legato alla versione.
Tutto questo ovviamente cadi s einvece usi delle funzioni specifiche di excel.[/quote:3vyl8vca]
Il problema è che comunque devo aprire excel per poter leggere dei dati, perciò tantovale che restituisca i dati in excel.[/quote:3vyl8vca]
..beh "TANTOVALE" non direi proprio.
Se scrivi su un file formattato ci metti molto meno ed è motlo meno complicato.
Basta che prendi il tuo array e fai Write to spreadsheet file e dai al file un estansione .xls, dopodichè lanci il comando excel con il nome del file e ti siaprirà excel con il file appena slavato.
Cosi' facendo non ti complichi la vita con gli activeX che cambiano di versione in versione.
----------------------------------------
AUTORE: 1078
DATA :20/06/2011 - 14:29:55
----------------------------------------
Il motore VBA è stato installato nella versione 2000? Attento che è importante, fai subito una prova, creando da Excell una macro con VBA!
----------------------------------------
AUTORE: 487
DATA :20/06/2011 - 14:54:54
----------------------------------------
[quote="gepponline":1uz53wtd]Se scrivi su un file formattato ci metti molto meno ed è motlo meno complicato.[/quote:1uz53wtd]
Non ho problemi di tempo o di codice complicato. Comunque hai ragione ed in linea generale preferisco anch'io usare gli spreadsheet file, però il programma dev'essere usato da chi non vuole fare molto fatica e siccome deve fare delle elaborazioni di dati preferisce avere i risultati direttamente in excel.
[quote="gepponline":1uz53wtd]Cosi' facendo non ti complichi la vita con gli activeX che cambiano di versione in versione.[/quote:1uz53wtd]
E per leggere i dati dai diversi fogli e diversi file di excel come faccio??
[quote="Ricky":1uz53wtd]Il motore VBA è stato installato nella versione 2000? Attento che è importante, fai subito una prova, creando da Excell una macro con VBA![/quote:1uz53wtd]
La versione di visual basic è la 6.3 sul pc dove ho excel 2003 e 6.0 sui pc dov'è installato excel 2000
----------------------------------------
AUTORE: 1078
DATA :20/06/2011 - 15:41:00
----------------------------------------
Hai provato a verificare se l'esecuzione delle macre è abilitata su Excell 2000?
----------------------------------------
AUTORE: 1078
DATA :20/06/2011 - 15:46:19
----------------------------------------
Sembra sia più un problema di Excell che di LV. L'architettura delle DLL Excell non è molto importante in questo caso, in quanto richiami "l'Application" dal file EXE". Visto che hai questo problema su diverse macchine che hanno installato excell 2000, io proverei a reinstallare su una di quelle macchine il pacchetto office per verificare che non ci siano stati problemi durante l'installazione del pacchetto. Un'ultima cosa, che risorse di memoria hai a disposizione? L'operazione che vuoi fare è un'operazione che richiede un grosso dispendio di risorse, labview è già "pesante" di suo, caricando e lavorando con un'altro divoratore di risorse qual'è Excell potrebbe farti crachare il sistema.
----------------------------------------
AUTORE: 482
DATA :20/06/2011 - 15:52:36
----------------------------------------
[quote="coma":2j3rdubl]Comunque hai ragione ed in linea generale preferisco anch'io usare gli spreadsheet file, però il programma dev'essere usato da chi non vuole fare molto fatica e siccome deve fare delle elaborazioni di dati preferisce avere i risultati direttamente in excel.
E per leggere i dati dai diversi fogli e diversi file di excel come faccio??[/quote:2j3rdubl]
Per la questione di avere i dati direttamente in excel, come ti dicevo, il problema non c'e'. Tu crei il file e poi lanci excel dicendogli di aprire quel file da riga di comando.
Per legegre diversi file, basta dirgli che file aprire.
Invece per quanto riguarda la questione dei fogli..beh qui casca l'asino.
Se hai dei file con piu' fogli, a questo punto subentrano le peculiarità di excel e quindi non è piu' valida la strategia degli spreadsheet file.
----------------------------------------
AUTORE: 487
DATA :20/06/2011 - 15:58:51
----------------------------------------
Su una macchina che uso in laboratorio avevo già fatto un programma che si interfacciava con excel, ma allora avevo la stessa versione di office anche sulla macchina con l'ambiente di sviluppo. Se però mi dici che non dovrebbe essere un problema di versione di excel, allora mi viene il sospetto che ci sia qualcosa sulla mia macchina che fa girare il tutto e che manca sulle altre macchine: può essere? Faccio delle nuove prove e poi vi farò sapere. Per il momento grazie tanto del tempo che avete perso per aiutarmi.
----------------------------------------
AUTORE: 482
DATA :21/06/2011 - 07:16:42
----------------------------------------
La versione di excel secondo me è assolutamente fondamentale.
La struttura degli activeX è cambiata molto, soprattutto dalla versione '97 alla 2000.
Magari una stessa funzione è stata annidata sotto ad altre, quindi la funzione c'e' ancora ma la struttura con cui si andava a richiamarla è diversa.
Questa cosa mi ha fatto sudare un sacco quando andavo a creare dei report in excel col toolkit di labview per office.
Se non c'era la stessa versione di office sul pc di sviluppo e sul target, non funzionava niente e la stessa National mi aveva detto che era cosi' e non ci si poteva fare niente.
Per questo poi ero passato a realizzare dei report in html.
----------------------------------------
AUTORE: 487
DATA :27/06/2011 - 07:36:47
----------------------------------------
[quote="gepponline":147st4kv]La versione di excel secondo me è assolutamente fondamentale.
La struttura degli activeX è cambiata molto[/quote:147st4kv]
Perfettamente d'accordo.
Dopo svariati tentativi senza alcun apprezzabile risultato, getto la spugna!!
Il problema lo risolvo facendo installare la versione 2003 sulle macchine target, anche se ciò comporterà il costo per l'acquisto di nuove licenze!
Però mi rode il fatto di non essere riuscito a rendere compatibile la mia applicazione anche con Excel 2000: non è detto che non ci ritornerò sopra quando avrò un po' di tempo a disposizione.
Comunque, come sempre, grazie a tutti per l'aiuto.
----------------------------------------
AUTORE: 1078
DATA :27/06/2011 - 14:48:38
----------------------------------------
Torno a ripetere che secondo me il problema è dato da un'istallazione corrotta di excell sulla macchina che cresha...
Avviando ActiveX Excell.Application e verificando la proprietà Version si è in grado di costruire un software che inserisca i dati in entrabe le versioni di Excell (che ovviamente devono essere installate entrambe sulla macchina di sviluppo). Tra le due versioni la cosa che è cambiata appunto, come dicevo nel post precedente, la proprietà di riferimento che in Excell 2003 è la proprietà vlaue mentre in excell 2010 è la proprietà Text. Potresti anche utilizzare la proprietà value 2 che è rimasta invariata per entrambe le versioni.
Ovviamente avendo installata sulla macchina una versione corrotta di Excell e richiamandolo da LV si va ad utilizzare le funzini di Excell nei suoi estremi e quidni si generano facilmente crash non voluti!
Un'ultima domanda: sulla macchina di sviluppo hai installato entrambe le versioni?
----------------------------------------
AUTORE: 482
DATA :27/06/2011 - 15:58:38
----------------------------------------
Il problema pero' gli si ripresenterebbe pari pari non appena arriverà una nuova versione di excel.
Per questo il mio consiglio resta quello di trovare una soluzione alternativa agli activex.
----------------------------------------
AUTORE: 487
DATA :28/06/2011 - 13:12:04
----------------------------------------
[quote="Ricky":3jqbj2vg]Un'ultima domanda: sulla macchina di sviluppo hai installato entrambe le versioni?[/quote:3jqbj2vg]
Confermo: sulla macchina di sviluppo sono presenti entrambe le versioni
[quote="Ricky":3jqbj2vg]Avviando ActiveX Excell.Application e verificando la proprietà Version si è in grado di costruire un software che inserisca i dati in entrabe le versioni di Excell [/quote:3jqbj2vg]
Piccolo problema: con la versione 2000 di excell (activex excell.application version 9.0) non riesco a fargli aprire un file esistente di excell ed in generale tutte le funzioni presenti nell'activex excell.application version 11.0 sono da ricercare sparse per il mondo nella versione precedente
[quote="gepponline":3jqbj2vg]Il problema pero' gli si ripresenterebbe pari pari non appena arriverà una nuova versione di excel.[/quote:3jqbj2vg]
Perfettamente d'accordo. Tra l'altro, in azienda sono già presenti macchine con installato Office 2010!!
----------------------------------------
================================================================================
aiuto sistemare ora in un grafico
================================================================================
AUTORE: 3907
DATA :19/06/2011 - 14:42:24
----------------------------------------
devo costruire un grafico il quale ospita un nuovi dati ad intervalli di 15minuti.
premettendo di aver fissato l offset con l ora in cui viene aggiunto il primo dato e il multiplier=900 secondi dopo un paio di acquisizioni mi ritrovo la mia asse temporale spostata in avanti; ciò vuol dire che l ultimo dato inserito anzichè riportare la sua reale ora di acquisizione esso riporta un orario che deve ancora trascorrere nella realtà
allego l immagine di un esempio offset:15:33 multiplier:180sec
il primo dato è stato inserito alle 15:33... di conseguenza il secondo sarebbe dovuto "entrare" alle 15:36... ho allegato un immagine la quale rappresenta l acquisizione di due soli dati; sufficiente ad illustrare il problema "temporale"
(anche l orario della prima acquisizione è cambiato)
----------------------------------------
AUTORE: 1078
DATA :20/06/2011 - 07:33:35
----------------------------------------
Ciao Barabba,
Scusa ma non ho capito, hai un problema d'acquisizione o di visualizzazione dei dati acquisiti?
----------------------------------------
AUTORE: 1078
DATA :20/06/2011 - 14:40:11
----------------------------------------
Ciao,
ho fatto qualche prova (giusto per non dirti minch..te) allora secondo me è meglio se crei la forma d'onda e poi la visualizzi. Tieni le impostazioni di default del grafico, l'unica impostazione cui devi prestare attenzione è quella dell'asse dei tempi che deve essere impostata su Relative time dal menu proprietà del grafico e con tasto destro devi deselezionare la proprietà [b:3vpz35ea]Ignore Times tamp[/b:3vpz35ea] poi tutto dovrebbe funzionare correttamente.
Ti posto il mio esempio!
----------------------------------------
AUTORE: 3907
DATA :20/06/2011 - 18:46:08
----------------------------------------
grazie per avere risposto... e forse ho anche capito dove stava l errore nel mio vi iniziale: al mio grafico gli arrivava l intero array ogni dt tempo e di conseguenza l ora t0 del grafico continuava a variare; di conseguenza ogni dato aggiuntivo incrementava l asse temporale ad orari che non ancora erano trascorsi (vedi allegato "problema ora.png" ora corrente 15:36-orario in cui effettivamente ha reinserito l array portando poi il dato aggiuntivo alle 15:39(+dt rispetto all orario corrente)).
il tuo esempio infatti invia la serie di dati solo una volta che l ha completata, mostrandomi il grafico nella sua interezza. a me servirebbe qualcosa che lavorasse in tempo reale sui singoli elementi dell array e che quindi costruisse il grafico man mano vengano aggiunti elementi all array, visualizzando sull asse x l orario in cui viene aggiunto il singolo-nuovo dato al grafico (e di conseguenza all array). in altre parole un metodo per trasferire il singolo dato invece dell array. Tutto questo come ho già detto mi deve far vedere una creazione del grafico in tempo reale con l acquisizione dei dati (nel mio caso particolare i dati arrivano da una centralina implementata in un quadro elettrico ad intervalli di 15minuti).
allego il mio esempio pur essendo sbagliato infatti passa l intero array al mio grafico con l aggiunta di un nuovo dato creando problemi con l asse temporale.
----------------------------------------
AUTORE: 482
DATA :21/06/2011 - 07:10:32
----------------------------------------
prova con un Chart anzichè un graph se proprio vuoi mandargli solo l'ultimo dato.
----------------------------------------
AUTORE: 3907
DATA :21/06/2011 - 15:56:03
----------------------------------------
il problema continua a verificarsi; mi ritrovo sempre dei dati "spostati in avanti nel tempo"
----------------------------------------
AUTORE: 487
DATA :22/06/2011 - 07:43:59
----------------------------------------
Ciao Barabba,
vedi un po' se così ti va bene
----------------------------------------
AUTORE: 3907
DATA :23/06/2011 - 13:25:22
----------------------------------------
Ciao coma,
potrei dire decisamente SI! E' quello che cercavo
grazieeeee
----------------------------------------
================================================================================
Variabli shared e cRIO
================================================================================
AUTORE: 3919
DATA :29/06/2011 - 12:30:53
----------------------------------------
Salve a tutti, ho un problema con una libreria di variabili shared che utilizzo per far comunicare l'applicazione RT che gira su cRIO9074 e un applicazione windows che funge da sola interfaccia grafica.
Allora ho messo la libreria sotto target RT, disabilitato l'autodeploy e se mando in run da ambiente di sviluppo il VI su target RT e da un altro PC il VI sotto windows tutto funziona a perfezione.
Se invece compilo il VI su target e lo lo metto in Run as startup mi aspetterei lo stesso comportamento, invece il VI sotto win mostra solo dei valori fissi delle shared, sia abilitando il deploy all'avvio dell'applicazione sia non abilitandolo.
Sono abbastanza disperato.....
Labview 2009 - NI-Rio 3.4
----------------------------------------
AUTORE: 927
DATA :30/06/2011 - 09:38:12
----------------------------------------
L'host delle variabili, cioè la macchina dove viene fatto il deploy della libreria, è il PC o il cRIO?
Il programma su cRIO ha un sistema di registrazione degli errori, in particolare quando scrive lo shared variable node? (se funziona nell'ambiente di sviluppo non è detto che funzioni come eseguibile, e non puoi vedere a video gli errori dell'eseguibile)
----------------------------------------
AUTORE: 645
DATA :02/07/2011 - 14:33:09
----------------------------------------
Guarda http://digital.ni.com/public.nsf/allkb/ ... D900674570
Prova eventualmente a non disattivare l'autodeploy.
Da quello che scrivi sembra che le librerie per le variabili Shared non vengano caricate dal CRIO ma solo dal pc durante la fase di test.
----------------------------------------
AUTORE: 3919
DATA :21/07/2011 - 16:33:24
----------------------------------------
RISOLTO!!!!!
raga tenete d'occhio il file .alias che sta sul cRio. Quando si usa l'ambiente di sviluppo viene creato un link tra il cRIO e LabVIEW e le shared vengono pubblicate solo se si fa partire il VI sotto RT dall'ambiente di sviluppo. Poi una volta fatto l'eseguibile e deployato sul target va cancellato e le variabili shared cominciano ad essere pubblicate perfettamente.
Considerate che ad ogni riavvio del cRIO quel file viene ricreato
----------------------------------------
================================================================================
Tecnologia MPPT per pannelli fotovoltaici
================================================================================
AUTORE: 3903
DATA :30/06/2011 - 10:56:19
----------------------------------------
Ciao per caso qualcuno di voi ha implementato un algoritmo in labview che implementi la tecnologia MPPT?grazie in anticipo
----------------------------------------
================================================================================
primo utilizzo labview
================================================================================
AUTORE: 3921
DATA :30/06/2011 - 12:09:52
----------------------------------------
salve a tutti sono un neoutilizzatore di labview, dovrei simulare delle misure di un circuito rc serie, tramite un oscilloscopio digitale, e un generatore di segnale.
qualcuno potrebbe aiutarmi?
grazie in anticipo
----------------------------------------
AUTORE: 1124
DATA :01/07/2011 - 13:55:54
----------------------------------------
Ciao e benvenuto.
La prima cosa che mi viene in mente e' di usare Multisim anziche' Labview. Puoi scaricare la versione di prova dal sito NI ed e' fatto apposta per le simulazioni di circuiti elettronici, oltre ad altre features.
Stefano
----------------------------------------
AUTORE: 1124
DATA :01/07/2011 - 13:59:25
----------------------------------------
Ho trovato questo documento> non parla di simulazione di circuiti RC, ma potrebbe darti qualche idea. ciao
http://multimechatronics.com/images/upl ... 0Motor.pdf
----------------------------------------
AUTORE: 1124
DATA :01/07/2011 - 14:02:04
----------------------------------------
prova anche qui: http://utenti.multimania.it/elony/labview.htm
----------------------------------------
================================================================================
Modificato elemento del menù FPGA
================================================================================
AUTORE: 3903
DATA :30/06/2011 - 16:55:40
----------------------------------------
Salve a tutti, sul mio programma labview lavorando sotto FPGA, ho a disposizione degli elementi.Uno di questi si chiama unit delay che per sbaglio ho modificato. Mi sapreste dire o inviare la configurazione del foglio vi di tale elemento?grazie
----------------------------------------
AUTORE: 927
DATA :04/07/2011 - 09:34:49
----------------------------------------
Con elementi intendi i VI di sistema, ovvero questo [url:3py9qo8c]http://zone.ni.com/reference/en-XX/help/371599E-01/lvfpga/unit_delay/[/url:3py9qo8c]? A me non permette nemmeno di aprirlo... Forse hai fatto "convert to subVI" e modificato una copia. Cancellalo e rimettici l'originale dalla palette
----------------------------------------
================================================================================
Led con 3 valori
================================================================================
AUTORE: 3465
DATA :01/07/2011 - 11:10:17
----------------------------------------
Salve a tutti,
volevo sapere qual è il modo più semplice per realizzare un led (simile a quelli booleani) che assuma 3 colori diversi a seconda di 3 valori diversi senza usare i property node.
Grazie
----------------------------------------
AUTORE: 301
DATA :01/07/2011 - 11:21:57
----------------------------------------
Potresti usare una color box, ma è un numerico.
Per poter utilizzare 3 colori in un booleano devi per forza usare un property node (ma ti sta antipatico?), dato che i valori che puo assumere sono solo 2 (è un booleano appunto).
Aris
----------------------------------------
AUTORE: 3465
DATA :01/07/2011 - 13:22:10
----------------------------------------
No non mi sta antipatico, era solo una curiosità mia.
Comunque grazie mille!
----------------------------------------
AUTORE: 482
DATA :01/07/2011 - 13:33:37
----------------------------------------
credo che il sistema piu' semplice sia il picture ring in cui metti 3 immagini dello stesso led ma di colori diversi.
----------------------------------------
================================================================================
array of xy-graph references
================================================================================
AUTORE: 1537
DATA :02/07/2011 - 18:51:38
----------------------------------------
Ciao a tutti,
ho un problema che non riesco a risolvere da diversi giorni, e non ho trovato niente che mi aiuti a capire dove sbaglio, ne su questo forum ne su internet in general.
Ho un sub-VI che esegue alcune azioni su dei grafici XY presenti sul VI principale. Nello specifico, visualizza o meno certi plot sui grafici XY, ma non credo che questo abbia molta importanza.
Pensavo di passare al sub-VI un array contenente tutte le references dei grafici XY del VI principale. Purtroppo c'e qualcosa che non va con le reference perche' il programma ritorna questo errore:
The error I get is:
Error 1055 occurred at Property Node in make_trg_vis2.vi->main10.vi
Possible reason(s):
LabVIEW: Object reference is invalid.
Gli ingressi del "build array" hanno tutti i coercion dots, il che mi fa pensare che il problema sia li'. Oltretutto, il codice funziona se non uso il sub-VI ma tengo tutto nel VI principale.
----------------------------------------
AUTORE: 1537
DATA :02/07/2011 - 21:30:17
----------------------------------------
Risolto, disattenzioni banali nel sub-VI... Scusate per aver preso spazio inutilmente.
----------------------------------------
================================================================================
Confronto tempi Labview
================================================================================
AUTORE: 3923
DATA :05/07/2011 - 19:43:26
----------------------------------------
Salve,
avrei un problema riguardo un banale algoritmo creato personalmente in labview.
In pratica spiego brevemente: Ho in input 2 oggetti (un timer che parte da 0 e un input numerico) entrambi espressi in ore-minuti e secondi. Quello che sostanzialmente dovrebbe fare il programma è innanzitutto convertire entrambi gli input in secondi e poi effettuare un controllo di uguaglianza (avvalendomi quindi di un funzione "=" e di un led/booleano di uscita).
Ho già creato tutto il programma però se inserisco intenzionalmente due input uguali, l'uguaglianza (dei secondi) non viene verificata.
Allego un'immagine cosi da rendervi chiara la struttura del programma.
[url:3mmuwk4r]http://www.flickr.com/photos/64854541@N02/5906043800/[/url:3mmuwk4r]
Ecco come il mio programma dovrebbe agire:
Input: 00:01:30 conversione in sec. 90sec verifica uguaglianza verificata, quindi bool true (led acceso)
Timer: 00:01:30 // // 90sec
Grazie anticipatamente
----------------------------------------
AUTORE: 43
DATA :06/07/2011 - 05:16:31
----------------------------------------
[quote="Flavio7":2mpw8g0x]Salve,
avrei un problema riguardo un banale algoritmo creato personalmente in labview.
In pratica spiego brevemente: Ho in input 2 oggetti (un timer che parte da 0 e un input numerico) entrambi espressi in ore-minuti e secondi. Quello che sostanzialmente dovrebbe fare il programma è innanzitutto convertire entrambi gli input in secondi e poi effettuare un controllo di uguaglianza (avvalendomi quindi di un funzione "=" e di un led/booleano di uscita).
Ho già creato tutto il programma però se inserisco intenzionalmente due input uguali, l'uguaglianza (dei secondi) non viene verificata.
Allego un'immagine cosi da rendervi chiara la struttura del programma.
[url:2mpw8g0x]http://www.flickr.com/photos/64854541@N02/5906043800/[/url:2mpw8g0x]
Ecco come il mio programma dovrebbe agire:
Input: 00:01:30 conversione in sec. 90sec verifica uguaglianza verificata, quindi bool true (led acceso)
Timer: 00:01:30 // // 90sec
Grazie anticipatamente[/quote:2mpw8g0x]
La risposta è banale e lo si capisce subito guardando il tipo di dati messi a confronto: un numero in virgola mobile con un timestamp.
Entrambi hanno una parte decimale che probabilmente è diversa da 0 o diversa cmq fra loro.
Per fare un confronto fra numeri di cui si vuole confrontare solo la parte intera, basta troncare /arrotondare all'unità + vicina. Nel tuo caso i numeri devono essere troncati/arrotondati al sec.
bye
----------------------------------------
AUTORE: 3923
DATA :06/07/2011 - 06:37:23
----------------------------------------
Non si tratta della virgola. Ho già provveduto nell'output della conversione in secondi a impostare le cifre in interi.
Ovvero su entrambi gli output della conversione in secondi, sono andato nelle proprietà/display format, da li ho selezionato "advanced editing mode" e nel format string ho inserito questa stringa: "%<%S>t". Che sta a significare visualizzami l'output solo nel formato secondi.
----------------------------------------
AUTORE: 680
DATA :06/07/2011 - 18:31:39
----------------------------------------
Ciao
facendo così:
"Ovvero su entrambi gli output della conversione in secondi, sono andato nelle proprietà/display format, da li ho selezionato "advanced editing mode" e nel format string ho inserito questa stringa: "%<%S>t". Che sta a significare visualizzami l'output solo nel formato secondi."
solo la visualizzazione dell'indicatore è modificata ma il dato a tutti gli effetti è ancora in virgola mobile! (prova a metterci un probe)
devi arrotondare all'unità più vicina (Round to nearest)
----------------------------------------
AUTORE: 43
DATA :06/07/2011 - 18:39:05
----------------------------------------
[quote="Flavio7":ief67tjx]Non si tratta della virgola. Ho già provveduto nell'output della conversione in secondi a impostare le cifre in interi.
Ovvero su entrambi gli output della conversione in secondi, sono andato nelle proprietà/display format, da li ho selezionato "advanced editing mode" e nel format string ho inserito questa stringa: "%<%S>t". Che sta a significare visualizzami l'output solo nel formato secondi.[/quote:ief67tjx]
Ma come si fa a confondere il Formato di visualizzqzione con il numero in memoria....
Beata ignoranza!
facciamo un esempio banele così ci arrivi:
apri un VI nuovo.
crea un controllo numerico in virgola mobile di tipo DBL
ci scrivi dentro 1.2 (o 1,2 se usi la pessima notazione all'italiana)
poi cambi il display Format mettendo a 0 (zero) i "precision Digits"
Otterrai di vedere solo il valore 1 ma in realta quallo è il formato di visualizzazione che è appunto di visualizzazione non c'entra nulla con il valore espresso dal controllo
Nel diagramma decrementi il valore del controllo di 1 ed il risulotato lo metti in un indicatore.
cosa ottieni?
[attachment=0:ief67tjx]QuandoMancanoLeBasi.JPG[/attachment:ief67tjx]
contento?
bye
----------------------------------------
================================================================================
Dimensione carattere stringa
================================================================================
AUTORE: 2550
DATA :05/07/2011 - 23:50:09
----------------------------------------
Ciao a tutti.
Ho un unico indicatore stringa sul front panel di VI che dovrà essere ridimensionato a tutto schermo.
il testo in esso contenuto dovrà essere scalato in base alla dimensione dell'indicatore e al numero di righe e caratteri per riga impostati dall'utente.
Avevo pensato di utilizzare un carattere a spaziatura fissa calcolando il rapporto tra la dimensione del font e la grandezza in pixel dell'indicatore, ma se questo può andare bene per la larghezza, non so se sia la soluzione migliore per gestione del numero di righe.
Qualcuno di voi mi può suggerire una soluzione migliore?
Grazie
DVD
----------------------------------------
AUTORE: 43
DATA :06/07/2011 - 05:34:53
----------------------------------------
[quote="dvd14986":1yxreuh0]Ciao a tutti.
Ho un unico indicatore stringa sul front panel di VI che dovrà essere ridimensionato a tutto schermo.
il testo in esso contenuto dovrà essere scalato in base alla dimensione dell'indicatore e al numero di righe e caratteri per riga impostati dall'utente.
Avevo pensato di utilizzare un carattere a spaziatura fissa calcolando il rapporto tra la dimensione del font e la grandezza in pixel dell'indicatore, ma se questo può andare bene per la larghezza, non so se sia la soluzione migliore per gestione del numero di righe.
Qualcuno di voi mi può suggerire una soluzione migliore?
Grazie
DVD[/quote:1yxreuh0]
Secondo me il testo [b:1yxreuh0][u:1yxreuh0]non[/u:1yxreuh0][/b:1yxreuh0] va scalato, a meno che non si tratti di un controllo per la scelta di font.
Da sempre con LabVIEW ci sono problemi di:
- porting fra win e Linux legato a font
- gestione testi multilingue,
- gestione testi all'interno dei quali cambiano dinamicamente gli attributi (colore, grassetto, font...)
- gestione attributi testo dentro tabelle
- gestione font unicode e lingue orientali in genere (cirillico, arabo, cinese-giap-coreano)
A me sembra che ti voglia tirare inutilmente la zappa sui piedi...
bye
----------------------------------------
AUTORE: 2550
DATA :06/07/2011 - 07:53:03
----------------------------------------
Ciao paracarro. Purtroppo è una richiesta esplicita del cliente, quindi devo farlo per forza.
Grazie
DVD
----------------------------------------
AUTORE: 43
DATA :06/07/2011 - 18:46:53
----------------------------------------
[quote="dvd14986":1c34fg6q]Ciao paracarro. Purtroppo è una richiesta esplicita del cliente, quindi devo farlo per forza.
Grazie
DVD[/quote:1c34fg6q]
se il cliente ha problemi di vista, digli di comprarsi degli occhiali oppure usi per tutti i testi dei Front Panel, una dimensione Font maggiore di quella che usi ora.
Aggiungi scrollbar dove serve.
Se proprio vuoi farlo, metti un tastino con le classiche "A" maiuscola piccola e grande per switchare fra 2 dimensioni diverse di font.
Scalare font in funzione della scalatura fatta a mano della finestra non serve ad una mazza in ogni caso.
bye
----------------------------------------
AUTORE: 482
DATA :07/07/2011 - 07:15:42
----------------------------------------
mammamia paracarro ma che hai in sti giorni?
Se il cliente gliela chiede lasciagliela chiedere no?
C'e' una funzione tra le picture function che permette di avere la dimensione di un rettangolo contenente una certa stringa con un certo font. Sichiama "Get Text rect".
Dalle dimensioni che ricevi da questo blocco, potresti lavorare sul dimensionamento del font e dell'indicatore stringa.
COncordo con paracarro che non è una genialata in generale, pero' se lo devi fare...
----------------------------------------
AUTORE: 43
DATA :07/07/2011 - 08:27:27
----------------------------------------
[quote="gepponline":31jpkeoh]mammamia paracarro ma che hai in sti giorni?
Se il cliente gliela chiede lasciagliela chiedere no?
C'e' una funzione tra le picture function che permette di avere la dimensione di un rettangolo contenente una certa stringa con un certo font. Sichiama "Get Text rect".
Dalle dimensioni che ricevi da questo blocco, potresti lavorare sul dimensionamento del font e dell'indicatore stringa.
COncordo con paracarro che non è una genialata in generale, pero' se lo devi fare...[/quote:31jpkeoh]
Geppo, so di essere un po' scorbutico,mi sforzerò di essere un po' + gentile, anche se la vedo dura,...
Cmq il mio umore è molto influenzato e influenzabile dagli ambienti nei quali vivo x cui chiedo scusa per la mia antipatia.
Dopo aver sottolineato che trovo giusta la Tua dritta, devo ricordarTi, caro Geppo, che purtroppo so come funzionano queste cose:
scalare la Font è un "fronzolo" e ci vuole poco a far capire al cliente che è una cosa totalmente inutile.
A meno che questa esigenza di scalatura non sia una vera richiesta del cliente, ma piuttosto una imposizione di un superiore che per convincere gli altri del suo modo di vedere, spaccia la sua personale richiesta come richiesta dal cliente.
Lo sappiamo tutti cosa vuole veramente un cliente: un programma semplice ( anche quando è complicato) con un'interfaccia semplice e soprattutto 0 problemi: zero bachi, zero problemi di compatibilità HW /SW ecc.
bye
bye
----------------------------------------
================================================================================
Divisione labview
================================================================================
AUTORE: 3925
DATA :06/07/2011 - 20:09:30
----------------------------------------
Ciao a tutti,
premetto che sono nuovo di questo forum e del linguaggio labview. Ho iniziato a creare dei semplici programmini per prendere familiarità con l'ambiente. Volevo chiedere a voi esperti, esiste in labview una funzione che presi da input due numeri faccia la divisione e verifichi se il resto è zero? Sono riuscito a rintracciare nel tool funzioni aritmetiche l'oggetto "divisione", l'ho collegato con con i due input, però mi manca la verifica del resto.
grazie a tutti voi
----------------------------------------
AUTORE: 301
DATA :07/07/2011 - 05:59:14
----------------------------------------
ciao,
certo che esiste, è la funzione "Quotient & Reminder" tra le funzioni matematiche.
----------------------------------------
AUTORE: 1124
DATA :07/07/2011 - 12:55:43
----------------------------------------
Ciao
come suggerito da Aris la funzione restituisce il resto che deve essere confrontato come nell'esempio allegato.
----------------------------------------
================================================================================
macchina a stati con annessi cicli di acquisizione
================================================================================
AUTORE: 3926
DATA :11/07/2011 - 17:18:34
----------------------------------------
Salve a tutti,
sono un nuovo iscritto e con questo post colgo l'occasione per presentarmi e fare i complimenti a tutto il forum.
Premetto di non essere un esperto di LabVIEW, ho iniziato a lavorarci da qualche mese, ma comunque posso dire di aver acquisito una certa dimestichezza e manualità. Venendo al problema, sto riscontrando alcune difficoltà riguardanti la realizzazione di una macchina a stati finiti: in particolare per quello che riguarda la gestione degli stati (cicli) di acquisizione. Mi spiego meglio: la macchina che ho realizzato, tra gli stati che la compongono, ne presenta due di acquisizione (uno analogico e l'altro digitale) con i relativi cicli while (interni e temporizzati diversamente). Il mio problema vero e proprio consiste nel rendere disponibile questi dati acquisiti fuori dai rispettivi cicli ad ogni iterazione, volta x volta, cioè vorrei ottenere dati aggiornati costantemente da questi stati/cicli per poi poterli a buon bisogno processare in tempo reale negli altri stati; normalmente, come noto, tali dati sarebbero restituiti solo al termine di ogni esecuzione.
Spero di essere stato sufficientemente chiaro nell'esposizione, altrimenti sono pronto a fornire ulteriori dettagli.
Tra le tante prove fatte ho tentato anche con le variabili locali, con scarso risultato. Una soluzione potrebbe forse essere l'uso delle code? oppure ci sono soluzioni più semplici/efficienti a cui non ho pensato?
Nell'attesa fiduciosa di vostri consigli/delucidazioni, ringrazio da ora coloro che si interesseranno alla causa.
Un saluto, a presto!
----------------------------------------
AUTORE: 301
DATA :12/07/2011 - 06:05:42
----------------------------------------
Buongiorno!
Se hai un while all'interno di uno stato, l'esecuzione del tuo programma è "bloccata" all'interno del while fino alla conclusione dello stesso!
Di conseguenza, in ogni caso, i dati saranno disponibili solo alla conclusione di tale ciclo.
I dati li puoi passare come preferisci, dipendentemente dall'applicazione (e qui mi attirerò le ire di qualcuno
), ma lo potrai fare solo all'ultimazione di quel ciclo.
Le soluzioni sono:
1_Un ciclo while parallelo alla tua macchina a stati.
2_Una macchina a stati che non ha while al suo interno ma richiama lo stesso stato per tutto il tempo necessario alla tua acquisizione.
Se qualcosa non ti è chiaro, magari posta un esempio di quello che hai fatto.
Aris
----------------------------------------
AUTORE: 482
DATA :12/07/2011 - 07:09:24
----------------------------------------
Credo che alla base di tutto, l'errore piu' grosso sia quello di avere dei cicli all'interno della macchina a stati.
Una macchina a stati seve stare all'interno di un ciclo che a seconda appunto dello stato, fa una cosa piuttosto che un altra.
se nello stato di acquisizione, devi fare anche elaborazioen del segnale, basta che all'interno di questo stato tu implementi le due cose, senza nessun tipo di ciclo. semplicemente in parallelo. Sfruttando o meno le variabili locali/globali/functional global/code o che altro.
----------------------------------------
AUTORE: 3926
DATA :12/07/2011 - 10:31:58
----------------------------------------
Intanto grazie per le risposte.
Il fatto è che le acquisizioni dovrebbero essere continuative e aggiornate continuamente, soprattutto quella digitale che controlla degli allarmi che vanno monitorati costantemente...per far ciò uso due diversi DAQ Assistant dentro due diversi cicli while, temporizzati differentemente...
@ aris: nella soluzione 1 intendi un ciclo di acquisizione in parallelo al resto della macchina? il problema però continuerebbe a sussistere...
@ gepponline: l'elaborazione dei segnali analogici (analisi spettrale, distorsione armonica, ecc.) la faccio già all'interno dello stesso stato (nello stesso ciclo di acquisizione), il fatto è che alcuni di questi dati devono essere passati anche ad altri stati della macchina, in tempo reale...
non so se sono stato capace di spiegarmi... oppure magari mi sto complicando la vita e in realtà il problema/la soluzione è più semplice di quello che appare, per lo meno a me..
nuovamente grazie!
ps: stavo dando un'occhiata all'architettura producer/consumer, pensate potrebbe fare al caso mio?
----------------------------------------
AUTORE: 301
DATA :12/07/2011 - 10:58:06
----------------------------------------
certo che fa per te!
Con "cicli paralleli" intendo proprio una struttura come quella.
Da li, poi, puoi passare dati con code o variabili o quello che meglio si adatta alla tua applicazione!
Aris
----------------------------------------
AUTORE: 482
DATA :12/07/2011 - 10:58:46
----------------------------------------
[quote="tazman":1mhn3zhb]l'elaborazione dei segnali analogici (analisi spettrale, distorsione armonica, ecc.) la faccio già all'interno dello stesso stato (nello stesso ciclo di acquisizione), il fatto è che alcuni di questi dati devono essere passati anche ad altri stati della macchina, in tempo reale...[/quote:1mhn3zhb]
BEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEP!!!
ALARM ALARM ALARM!!
Crolla tutto il tuo castello.
La macchina a stati è una macchina a stati proprio perchè per ogni stato fa una cosa differente IN MOMENTI DIFFERENTI.
Se devi fare piu' cose contemporaneamente non puoi farle in stati diversi.
O le fai nello stesso stato o non usi la macchina a stati.
Un ciclo di acquisizione NON E' UNO STATO ma un iterazione di un ciclo.
L'idea di una macchina a stati come la vuoi tu puo' essere:
Stato 1) inizializzazione
Stato 2) inserimento dati da parte dell'utente
Stato 3) attesa pulsante di start
Stato 4) fase di lavoro (4 cicli paralleli: 1 acquisisce una cosa, 1 acquisisce un altra, 1 elabora i dati degli altri due cicli ricevendoli tramite variabili locali, 1 controlla che i dati siano coerenti)
Stato 5) azzeramento di tutti i valori.
Non è proprio congruente con l'idea di macchina a stati il fatto che "il grosso" del programma sia fatto tutto in uno stato, pero' cosi' tutto funziona.
----------------------------------------
AUTORE: 3428
DATA :12/07/2011 - 11:34:43
----------------------------------------
Ciao, devo fare la stessa cosa...
Inizialmente ho fatto tutto il sw senza macchina a stati e a dir la verità è funzionante e va tutto alla grande se non fosse che per qualsiasi modifica devo controllare mille cose!!!
Il fatto, o il mio problema riscontrato, è la manutenibilità... diversi cicli annidati con molti case, anch'essi annidati, rendono il tutto meno gestibile e soprattutto, in termini di spazio, devo navigare qua e la nel sw anzichè averlo tutto nello schermo, come sono solito lavorare...
Ora sto provando a trasferire il tutto gestendolo con la macchina a stati e per il momento sono fiducioso...
Arriverò previa inizializzazione e gestione dei dati al mio stato di acquisizione al quale passerò i miei dati per effettuarla.
Quì arriva il dilemma ora che leggo che è inutile un ciclo dentro lo stato.
Le mie acquisizioni saranno temporizzate e avevo implementato il mio vecchio sw (quello disordinato) con un ciclo che legge il tempo di entrata, lo confronta con il tempo interno del ciclo finchè non è uguale o supera il tempo dato dall'utente. Appena supera il tempo esce dall'acquisizione.
Ora vorrei fare la stessa cosa mettendo un while dentro allo stato...
Quindi:
1) inizializzazione;
2) inserimento dati da parte dell'utente;
3) attesa start;
4) misura (con il/i cicli paralleli) e salvataggio nello stesso stato (ora che ci penso potrei fare come dice geppionline creando un altro ciclo che mi legga le locali e salvi i dati...);
5) azzeramento;
Potrebbe andar bene?
----------------------------------------
AUTORE: 301
DATA :12/07/2011 - 12:34:29
----------------------------------------
Feeeeermi tutti!
Certo che va bene!
Quello che dicevo prima è che non è giusto avere un ciclo while all'interno di uno stato [b:20ypz55z]se si vuole una computazione parallela di dati[/b:20ypz55z] o quant'altro!
Gepponline è stato chiaro e preciso nello siegare il "per cosa si sceglie" una macchina a stati (finiti), e nel tuo caso può andare bene.
Tu hai bisogno di una struttura che sequenzializzi una certa procedura, e quando entri nello stato che deve acquisire rimani li fin che non finisce, una volta fatto passi ad un ulteriore stato che azzera o fa quello che deve fare.
L'applicazione per cui era "sbagliata" una struttura di questo tipo era "Arrivo in uno stato e voglio 'pollare' un'altro stato che faccia altro CONTEMPORANEAMENTE", questa non è la teoria della macchina a stati (anche perchè non lo può proprio fare).
Nel tuo caso, se il problema è la leggibilità e null'altro, potresti anche considerare di usare una Stacked Sequence Structure.
Aris
----------------------------------------
AUTORE: 3428
DATA :12/07/2011 - 12:58:05
----------------------------------------
Ti ringrazio Aris, fiu..
La stacked non mi andrebbe bene perchè devo poter cambiare stato a seconda delle necessità..
Potrei interrompere il tutto o passare da uno stato all'altro a secondo di quello che l'utente vuole (fermare l'acqisizione, interrompere il sw per poi ricominciare da dove è arrivato..)
Comunque molte cose le devo fare in sequenza e lì metterò la stacked dentro lo stato che ne necessita.
Posso pensare però di salvare i dati dell'acquisizione fuori dalla macchina a stati, ad esempio ad intervalli di tempo e con le locali?
C'è qualche esempio di codice?
----------------------------------------
AUTORE: 3926
DATA :12/07/2011 - 17:34:21
----------------------------------------
grazie aris e gepponline per i chiarimenti e gli utili consigli...e anche per l'ironia
...in effetti avevo le idee un pò confuse, ora il quadro dovrebbe essere un pò piu chiaro....
perciò posso usare il producer/consumer pattern in cui la fase di acquisizione è il producer e la macchina a stati è il consumer, giusto? ho capito bene? spero di sì , come detto non sono un esperto ma sto imparando a muovermi il LV con calma/lentezza..
----------------------------------------
================================================================================
progetto virtuale labview
================================================================================
AUTORE: 3929
DATA :12/07/2011 - 20:38:31
----------------------------------------
Ciao a tutti, volevo chiedere una cosa...
io dovrei fare un progetto per un esame universitario di chimica con labview, lavoriamo solo attraverso progetti virtuali, e ogni studente deve presentare un semplice programma riferito ad un argomento di chimica/fisica.
Io non ho seguito il corso perche' si sovrapponeva con un laboratorio e ora mi trovo che devo fare un progetto avendo pochissime nozioni di labview percio' mi chiedevo se nessuno di voi dispone di un programma che possa fare al caso mio o meglio se conosce un sito internet dove sia possibile scaricare progetti gia funzionanti? Ho cercato per ora sul web ma non ho trovato un solo sito doe poter scaricare progetti gia compilati
Sarebbe molto importante grazie
----------------------------------------
AUTORE: 482
DATA :13/07/2011 - 07:18:11
----------------------------------------
A parte che non hai chietso niente s enon "un progetto di chimica" che cacchio vuol dire?
Detto questo, poi la laurea la dai a noi o te la tieni tu?
Questo è un forum di discussione. Se hai un idea possiamo aiutarti a realizarla, se hai un problema si cerca di aiutarti a risolverlo, ma soluzioni pronte non ne diamo.
----------------------------------------
AUTORE: 645
DATA :25/07/2011 - 10:54:57
----------------------------------------
Cosa vorresti realizzare? Quale argomento?
----------------------------------------
================================================================================
Registrare dato numerico
================================================================================
AUTORE: 3923
DATA :12/07/2011 - 20:46:45
----------------------------------------
ciao ragazzi,
scrivo per poter avere un' aiuto riguardo un algoritmo in labview. Sto cercando di portare a termine un piccolo progetto ed ho un problema riguardo la registrazione del dato ricevuto da input (tramite "simulate signal") direttamente su file di testo mediante il "write to meausurement".
Espongo di seguito uno screen dell'algoritmo per comprendere meglio il problema:
[url:2y6vnumz]http://www.flickr.com/photos/64854541@N02/5931321666/in/photostream[/url:2y6vnumz]
Praticamente se la condizione resto=0 è verificata deve salvarmi "valore in uscita" su file.txt .
La condizione timer/intervallo con resto=0 mi serve perchè ho bisogno che il "valore in uscita" sia salvato solo quando la condizione resto è verificata, per cui viene rapportato ad un timer.
Per intenderci meglio: Se decido di salvare con intervallo ogni 5 secondi>>>>timer inizia da 0>>>>dovrà salvare il valore "random" dal simulate signal solo quando avrà Timer/intervallo| resto=0... ovvero 5/5, 10/5, 15/5 e cosi via.
So di aver sballato la parte di collegamento allo strumento "write", e mi scuso ragazzi se ho creato qualcosa in maniera molto contorta, ma ho una leggera confusione anche dovuta al fatto che sono da 2 settimane approdato nel mondo labview.
Grazie anticipatamente a tutti
saluti
----------------------------------------
AUTORE: 482
DATA :13/07/2011 - 07:15:31
----------------------------------------
A parte che non capisco la domanda qual'e', il sistema che tu hai usato pe ril salvataggio, rischia di no salvare alcui dati nel caso in cui il ciclo ci mettesse piu' del previsto ad eseguire.
Ti consiglio di usare le funzioni di temporizzazione di labview per costruire una condizione di questo tipo:
- il tempo passa
- è maggiore o uguale a 5?
- se NO continuo a contare
- se SI effettuo il salvataggio e RESETTO il timer.
Uso il maggiore o uguale perchè lavorando su floating point, un valore magari posto dopo 5 virgole, potrebbe farmi saltare il salvataggio.
----------------------------------------
AUTORE: 3923
DATA :13/07/2011 - 09:05:18
----------------------------------------
Praticamente purtroppo, registra qualsiasi valore ricevuto da input. Proprio perchè non vi è collegamento tra l'algoritmo del contatore e il segnale generato. Comunque proverò a fare come mi consigli tu.
grazie
----------------------------------------
AUTORE: 482
DATA :13/07/2011 - 12:34:48
----------------------------------------
non ho avuto modo di guardare per bene il tuo vi e non ho mai usato quei blocchetti per leggere e scriver esu file, quindi non so cosa faccia l'enable, io, anzichè usare quel terminale avrei messo il salvataggio all'interno di un case.
----------------------------------------
AUTORE: 3923
DATA :13/07/2011 - 13:01:41
----------------------------------------
hai per caso possibiltà di poter postare un vi creato da te? (con il salvataggio in case).
Perchè nella mia "ignoranza" riguardo al linguaggio labview, so che mediante il "write to measurement", collegando il segnale da salvare, si ha quel dato salvato su file. Prima forse va inserito questo case che citi tu.
----------------------------------------
AUTORE: 645
DATA :25/07/2011 - 10:48:13
----------------------------------------
Come dice Geppo... Il controllo del resto=0 prova a collegarlo ad un case.
Devi usare la struttura Event Case: la condizione di ingresso è il resto=0.
All'interno del case inserisci le istruzioni che vuoi eseguire, nel tuo VI l'istruzione di scrittura del dato registrato.
----------------------------------------
================================================================================
Calcolo del CRI
================================================================================
AUTORE: 487
DATA :13/07/2011 - 09:06:11
----------------------------------------
Ciao,
per caso qualcuno ha già implementato un vi per il calcolo del color rendering index?
Stò sviluppando un programma, e sinceramente non ho molto tempo per ultimarlo; mi manca una funzione per il calcolo del CRI e siccome scriverla da zero richiede del tempo prezioso, mi chiedevo se nessuno del forum non abbia già sviluppato qualcosa di simile. Grazie
----------------------------------------
================================================================================
Impostare titolo Front Panel da codice
================================================================================
AUTORE: 3930
DATA :13/07/2011 - 13:36:43
----------------------------------------
Buongiorno a tutti.
Piccola premessa: sono alcuni giorni che sto studiando LabView perchè per necessità lavorative, dovrò a breve sviluppare un pannellino di visualizzazione di dati acquisiti tramite scheda.
Arrivo dal mondo della programmazione in ambiente Microsoft, quindi questo tipo di approccio risulta x me particolarmente ostico.
Sto facendo delle prove per acquisire dimestichezza con il nuovo ambiente di sviluppo, e già iniziano i primi problemi
.
Voglio impostare la caption della mia Form (Front Panel in VI) da codice, magari leggendo il valore da file.
Come devo fare??
In generale in che modo riesco ad interagire con le proprietà di un form (altezza, larghezza, posizione,etc.) da codice??
E' possibile intercettare eventi scatenati da operazione su di una form (spostamento del mouse, tentativo di chiusura, etc.)???
Scusate può sembrare banale, ma non riesco a farlo
Grazie in anticipo a tutti voi
Saluti,
M.
----------------------------------------
AUTORE: 301
DATA :14/07/2011 - 13:09:48
----------------------------------------
Buongiorno,
se cerchi nell'help trovi molti spunti.
Ti allego un esempietto che spero possa esserti di aiuto.
Aris
----------------------------------------
================================================================================
Event Structure
================================================================================
AUTORE: 3931
DATA :17/07/2011 - 18:56:27
----------------------------------------
Salve a tutti ^^
Nell'ipotesi che io stia programmando qualcosa tramite event structure e ci fossero determinati eventi che io voglio richiamare non necessariamente per un'azione sul frontpanel (premendo un tasto, per esempio) ma mediante comando "da script", come potrei fare?
Per dire a me farebbe comodo che, alla fine di un evento, (che ho richiamato appunto premendo un tasto) se ne attivi automaticamente un altro.
Un classico esempio potrebbe essere il refresh di una lista. Ho un tasto "nuovo" per aggiungere roba e poi un tasto "refresh" per aggiornarla. Se io volessi fare in modo che dopo aver introdotto un dato la lista si "refreshi" automaticamente, evocando quindi l'evento "refresh" ma senza dover necessariamente premere il tasto, come potrei fare?
Grazie mille.
----------------------------------------
AUTORE: 3428
DATA :18/07/2011 - 07:41:43
----------------------------------------
Ciao,
potresti mettere l'azione refresh come azione sempre fatta nell'evento timeout dell'event structure, quindi prima clicchi "nuovo", lui va a fare l'azione corrispondente e poi ti torna nel timeout dove tu metterai il codice per il refresh oppure prima fai l'evento della pressione del bottone all'interno della event tramite la'azione nuovo e alla fine dell'azione, prima dell'uscita e il ritorno al timeout (se hai un evento timeout), metti un property node del bottone refresh "value signaling" a true e la gestione degli eventi passerà dopo l'azione nuovo a l'azione refresh.
----------------------------------------
AUTORE: 482
DATA :18/07/2011 - 07:49:35
----------------------------------------
Premesso che quello che vuoi fare potresti farlo con una sequenza all'interno dell'evento senza bisogno di un nuovo evento, quello che vuoi fare lo si fa usando gli user event.
Tramite degli appositi blocchetti, crei precedentemente un handle che contiene lo stato di un evento creato dall'utente.
Poi clikkando sul bordo dell'event structure, ti da la possibilità di creare un nodo dove connettere questo handle e quindi gestire le user event.
Dai un occhiata agli esempi:
Programmatically Fire Events
Dynamically Register for Events
----------------------------------------
AUTORE: 3931
DATA :18/07/2011 - 12:28:03
----------------------------------------
Grazie mille a tutti e due. Cerco gli esempi. Effettivamente gli user event non ho mai saputo usarli
----------------------------------------
AUTORE: 43
DATA :18/07/2011 - 14:01:42
----------------------------------------
un po' di altre discussioni in tema:
viewtopic.php?f=1&t=4865
viewtopic.php?f=1&t=5051
viewtopic.php?f=1&t=4427
viewtopic.php?f=1&t=3805
viewtopic.php?f=1&t=3284
bye
----------------------------------------
================================================================================
Labview, inviare alla seriale lo stato di 8 pulsanti
================================================================================
AUTORE: 3932
DATA :18/07/2011 - 00:19:39
----------------------------------------
Salve a tutti e piacere,
oggi essendo domenica ho dedicato la giornata alla programmazione di una scheda esterna gestita con la seriale, a bordo ha un 16F877A che accende e spegne dei led a seconda del comando che riceve.
Tutto funziona bene, con labview l'esempio base (Basic serial write e read) che trasmette i dati sulla seriale invia i comandi perfettamente al pic.
Ora volevo modificare l'esempio base, mettere cioè 8 pulsanti per attivare gli 8 led che gestisce il pic, poi volevo inserire 8 led che si accendono e si spengono come quelli sulla scheda.
Il problema è che non so come modificare l'esempio base di labview in modo che alla variazione di stato del pulsante 1 sia acceso il led 1 ed inviata la stringa 11OK al pic tramite la seriale.
Lo stesso per il pulsante 2, accendere il led 2 ed inviare la stringa 21OK
Etc per tutti 8 i pulsanti.
Grazie.
----------------------------------------
AUTORE: 482
DATA :18/07/2011 - 07:39:05
----------------------------------------
Tieni sempre buono l'esempio basic.
E usi i case structure.
Ci possono essere mille modi per implementare quello che vuoi fare.
Un esempio potrebbe essere mettere gli 8 pulsanti in un array, poi con le funzioni apposite verificare se uno degli 8 pulsanti è premuto (tramite una OR sull'array) allora scrivo sulla seriale.
Per sapere cosa scrivere fai un case structure numerico in cui trasformando l'array di booleani in bit lo mandi al case selector:
SE case selector= 1=00000001= 11OK
SE case selector= 2=00000010= 21OK
SE case selector= 3=00000011= 31OK
e cosi' via...
----------------------------------------
AUTORE: 3932
DATA :18/07/2011 - 10:15:32
----------------------------------------
Ora provo, grazie.
----------------------------------------
AUTORE: 3932
DATA :18/07/2011 - 22:55:19
----------------------------------------
Non ci riesco, non ho nozioni a sufficienza per affrontare il problema.
In particolare non riesco a capire come collegare il pulsante all'array, questo è il primo passo.
----------------------------------------
AUTORE: 482
DATA :19/07/2011 - 07:22:53
----------------------------------------
Il pulsante non deve essere collegato all'array ma deve essere IN un array.
Prendi un array vuoto dalla palette degli array.
Poi prendi un pulsante dalla palette dei booleani.
trascina il pulsante nell'array e hai creato un array di booleani.
trascina il bordo in modo da vederne 8 e sei a posto.
Se invece vuoi mettere i tuoi bottoni sparsi in giro per il front panel, creali, poi nel block diagram, nella palette degli array cerca il blocchetto "build array" trascina il suo bordo inferiore verso il basso in modo da trasformarlo in un oggetto con 8 ingressi e collegaci gli 8 pulsanti. poi sul terminale di uscita, col tasto destro clikka su "create indicator " e avrai anche stavolta il tuo array di booleani.
----------------------------------------
================================================================================
Settare le dimensioni del FP
================================================================================
AUTORE: 3428
DATA :18/07/2011 - 10:49:42
----------------------------------------
Salve a tutti,
devo ridimensionare tutti i front panel del mio sw ad una certa risoluzione ma non trovo il metodo per farlo.
Vorrei sapere a quanto è adesso (suppongo un 1920x1080) ma non ne sono sicuro e poi vorrei settarli io ogni volta che avvio il sw, indifferentemente dallo schermo dove sarà avviato.
Non trovo però i property node necessari...
L'unico problema potrebbe essere che ho dei controlli typedef e non so se verranno ridimensionati, scalati, anche loro o rimarranno delle dimensioni create...
Scusate se la domanda è banale, grazie e buona settimana a tutti voi
----------------------------------------
AUTORE: 482
DATA :18/07/2011 - 12:42:32
----------------------------------------
Se la risoluzione è fissa indipendentemente dal monitor usato, clikka col tasto destro sull' icona in alto a destra del VI e scegli "VI properties". Li trovi tutte le opzioni per settare le dimensioni dalle voci Window size e Window run-time position.
----------------------------------------
AUTORE: 3428
DATA :13/09/2011 - 10:49:41
----------------------------------------
Salve, continuo questa discussione perchè quando l'avevo chiesto non era poi una priorità assoluta.. ma adesso si.
Geppionline, quello che mi hai consigliato è giustissimo ma non posso settare le dimensioni effettive, mi tocca manovrare a mano il FP.
Quello che intendo è se esiste qualcosa(un prop node ad esempio) in grado di proporzionarmi l'intero FP, inclusi i controlli in esso, ad una certa risoluzione.
Il mio desktop è a 1920x1080 e vorrei che il FP più grande sia max un 1280x1024 quelli più piccoli ovviamente possono rimanere tali.
Dalle proprietà delle VIs il "set to current panel size" mi da l'effettiva dimensione del FP e l'unico modo che ho trovato per modificarlo realmente è andare a modificare il FP direttamente e stringere la finestra, e i suoi oggetti, a mano, per poi riandare ad effettuare il "set to current panel size" alle nuove dimensioni e vedere quanti pixel mancano.
Ovviamente in questo modo andare a beccare perfettamente il 1280x1024 è da suicidio...
Ma c'è solo questo di metodo?
----------------------------------------
AUTORE: 301
DATA :14/09/2011 - 12:54:19
----------------------------------------
Una roba del genere?
Allo stesso modo puoi verificare prima la risoluzione del monitor....
Aris
----------------------------------------
AUTORE: 3428
DATA :14/09/2011 - 13:22:52
----------------------------------------
yes, mi serviva lui..
l'avevo provato già ma non riuscivo a settare bene i limiti... non avevo pensato che potevo prima leggerli
Grazie della dritta
----------------------------------------
================================================================================
Aiuto su protocollo MODBUS/TCP in labview
================================================================================
AUTORE: 3465
DATA :19/07/2011 - 11:17:03
----------------------------------------
Salve a tutti,
dovrei, tramite pannello realizzato in labview, poter leggere delle informazioni da un modulo ET-7053 della ICP-DAS. Il tutto tramite protocollo MODBUS/TCP. Siccome sono alle prime armi, come scritto sul sito del produttore, ho scaricato e installato la libreria modbus per labview al seguente indirizzo:
http://ftp.icpdas.com/pub/cd/6000cd/nap ... us_eng.pdf
Qualcuno mi può spiegare come procedere per poter leggere dei dati dal modulo in questione? grazie mille
----------------------------------------
AUTORE: 301
DATA :21/07/2011 - 12:54:23
----------------------------------------
A parte seguire il manuale per le varie impostazioni e "l'imbastitura" del tuo programma, dovresti conoscere i comandi da usare del tuo particolare strumento e/o la struttura della risposta che esso ti manda.
Questa libreria ti mette in condizioni di inviare comandi tramite la porta che scegli e ti pacchettizza i dati secondo il protocollo MODBUS, ma il comando "dimmi cosa hai scritto all'indirizzo di memoria tot" e la scomposizione di cosa ti viene risposto, lo dovresti trovare da qualche parte sul manuale del dispositivo!
Aris
----------------------------------------
AUTORE: 301
DATA :21/07/2011 - 13:01:04
----------------------------------------
Infatti....
http://ftp.icpdas.com./pub/cd/6000cd/na ... htm#ET7053
----------------------------------------
================================================================================
Stringa di soli numerici
================================================================================
AUTORE: 3428
DATA :20/07/2011 - 11:32:58
----------------------------------------
Salve a tutti,
mi servirebbe un controllo numerico che mi permetta di avere la stessa funzionalità di una stringa in termini di "update value while typing" .
A quanto pare questo non esiste... (a dir la verità ho appena scoperto che in un controllo numerico posso anche scrivere lettere anche se queste non verrano poi passate all'indicatore numerico e non mi sembre proprio una bellezza...) ma è proprio questo il problema...
Ho deciso di utilizzare direttamente una stringa e vorrei che neanche possa scrivere le lettere quindi passo il tutto dentro un check (gestendolo con eventi) per poi riaggiornare la stringa scritta.
Come posso realizzarlo?
1- come converto la stringa ad es "12345" in un array di 5 valori stringa: 1 2 3 4 5?
2- come faccio in modo che se scrivo 12345A il check mi riaggiorno il controllo stringa 12345 senza la A? (devo mettere un check con tutte le lettere dell'alfabeto più . , ; : _ e tutti i valori possibili???)
----------------------------------------
AUTORE: 43
DATA :20/07/2011 - 14:24:26
----------------------------------------
[attachment=0:2vpv3ib3]OnlyDecDigit.vi[/attachment:2vpv3ib3]
Attenzione al Cut&Paste (Drag&Drop, Pick&Place ecc.)
bye
----------------------------------------
AUTORE: 3428
DATA :20/07/2011 - 14:48:40
----------------------------------------
Quando si dice... "et voilà"
Grazie paracarro
----------------------------------------
AUTORE: 3428
DATA :04/11/2011 - 08:02:50
----------------------------------------
Ciao!
E se dicessi che ora mi serve il contrario!?
Mi servirebbe una stringa che mi facesse uscire solo numerici e il carattere ";"
Quello che non capisco da questa VI è come fai a sapere il codice ascii?? Per lo zero metti 30 e per nove 39 quando in rete trovo altri numeri o meglio associazioni!!
Credo che siano costanti create in Labview ma non so come fare!!!
Grazie
----------------------------------------
AUTORE: 43
DATA :07/11/2011 - 10:07:06
----------------------------------------
[quote="renaso":3f5165xw]Ciao!
E se dicessi che ora mi serve il contrario!?
Mi servirebbe una stringa che mi facesse uscire solo numerici e il carattere ";"
Quello che non capisco da questa VI è come fai a sapere il codice ascii?? Per lo zero metti 30 e per nove 39 quando in rete trovo altri numeri o meglio associazioni!!
Credo che siano costanti create in Labview ma non so come fare!!!
Grazie[/quote:3f5165xw]
E' abbastanza facile. Il codice numerico è espresso in esadecimale.
Te ne accorgi per la piccola "x"a sx della costante numerica
Se vuoi evitare di cercare in internet una tabella ASCII, allora fai così:
- duplica (Ctrl + Drag) una di quelle costanti numeriche.
- crea una costante stringa mettici dentro ";"
- clicka tasto dx sulla costante stringa appena creata e scegli "Hex Display"
- riporta nella costante duplicata quel valore (3B) e cambia la label della costante numerica in ';'
- cancella la costante stringa
bye
----------------------------------------
================================================================================
Producer/Consumer in un SUB VI
================================================================================
AUTORE: 3919
DATA :21/07/2011 - 15:54:21
----------------------------------------
Salve ragazzi, avrei un consiglio da chiedervi:
ho implementato mediante il pattern producer/consumer un acquisizione (producer) dalla seriale di stringhe con successiva eleaboarzione (consumer). Tutto funziona perfettamente.
Adesso però vorrei intergrare tale acquisizione all'interno di un interfaccia grafica con un VI (front-panel) principale nel quale visualizzare alcuni valori e sul quale inserire alcuni comandi tipo start e stop acquisizione. Allora ho creato una event structure che gestisce questi eventi e nello stesso VI avevo la struttura ad eventi e il pattern producer/consumer. Tutto continuava a funzionare perfettamente. Siccome anche altri VI dell'interfaccia grafica necessitano dei dati acquisiti dal pattern ho pensato di mettere lo stesso in un SUB-VI e rihiamarlo nella event structure su diversi tasti(comandi). La mia domanda è: trattandosi di un loop, ovviamente il sub-vi va in run ma poi necessita di uno stop per arrestarsi, come faccio a gestire la cosa, visto che dopo che in esecuzione c'è andato il sub-VI la struttura event non intercetta più nulla???? Ho provato sia con che senza l'opzione "Lock front panel....."
Grazie a chi vorra darmi qualche suggerimento
Raffaele
----------------------------------------
AUTORE: 301
DATA :22/07/2011 - 06:00:25
----------------------------------------
Buongiorno,
il fatto non è che il fp sia lokkato, ma che il subvi (come giustamente hai detto tu) è in esecuzione e di conseguenza tutti gli eventi che scateni vengono accodati per l'esecuzione ma il vi principale rimane nell'evento del subvi (dentro al subvi).
Per fare cio che chiedi tu, credo che le soluzioni possano essere:
1_ lanci il subvi come rientrante e qui devi considerare una variabile o un modo che possa, dal vi principale, terminare questo subvi.
2_lasci tutto invariato, ma quando esequi il subvi ne apri anche il fp e da quello ne gestisci lo stop.
3_lanci il subvi in maniera dinamica (piu o meno poi è tutto come per il punto 1).
Questo tipo di "errore" è abbastanza comune, considera quello che hai fatto come una matrioska (cicli annidati), se stai eseguendo un ciclo (event) e ad un certo punto entri in un'altro (il ciclo del tuo subvi), il ciclo che hai esternamente "non lo vedi piu", ma vedi solamente quello in cui sei!
Aris
----------------------------------------
AUTORE: 129
DATA :18/10/2011 - 01:10:04
----------------------------------------
Dovresti usare eventi dinamici.prova a vedere questo[url:167xgs58]http://www.bytelabs.it/?p=262[/url:167xgs58]
----------------------------------------
================================================================================
invio comando di stampa su usb
================================================================================
AUTORE: 822
DATA :22/07/2011 - 16:20:32
----------------------------------------
Salve,
con labview come faccio ad inviare il comando di stampa ad una stampante collegata in USB?
Diciamo che ho un file di testo paperino.txt e una stampante usb collegata al pc, premendo un pulsante voglio mandare in stampa questo file, come faccio?
Grazie,
Giuseppe
----------------------------------------
AUTORE: 927
DATA :28/07/2011 - 09:52:25
----------------------------------------
Non dovresti preoccuparti di come è collegata la stampante, sono affari del SO, ti basta sapere il nome della stampante.
Puoi farlo stampare al Blocco note chiamandolo dalla linea di comando (con System exec), dovrebbe essere:
NOTEPAD.EXE /PT "percorso file" "nome stampante"
Oppure ho letto che funziona anche:
COPY /B nomefile \\
omecomputer\
omestampante
----------------------------------------
AUTORE: 822
DATA :13/09/2011 - 16:18:30
----------------------------------------
grazie,
scusa il ritardo nella risposta.
Credo che userò il tuo consiglio, in giro non ho trovato niente di meglio.
Ciao
----------------------------------------
AUTORE: 822
DATA :13/09/2011 - 16:26:26
----------------------------------------
anzi pensandoci meglio..
userò il comando "notepad.exe /p Filename" che invia il file alla stampante predefinita, così mi basta solo configurarla come predefinita se in futuro dovessi cambiarla
Grazie del tuo aiuto
----------------------------------------
================================================================================
Supereterodina, come creare dente di sega
================================================================================
AUTORE: 3933
DATA :22/07/2011 - 23:36:47
----------------------------------------
Salve a tutti sono un nuovo iscritto e innanzitutto vi lascio un saluto!
Il mio problema è realizzare in Labview un analizzatore supereterodina! Ho trovato quasi tutto ma non sono convinto d'aver fatto bene il dente di sega! Il mio professore mi ha espressamente richiesto di realizzare tale segnale senza utilizzare i blocchetti ma con un ciclo FOR e Shift Register! Vi posso anche postare il VI del mio progetto ma ancora non ho capito come si fa
----------------------------------------
AUTORE: 927
DATA :28/07/2011 - 09:47:21
----------------------------------------
Esattamente qual è il problema?
Mi par di capire che per fare un dente devi aumentare il valore dello shift register di una quantità fissa ad ogni iterazione, finchè non raggiunge il massimo, a quel punto lo riporti al minimo
----------------------------------------
AUTORE: 3933
DATA :28/07/2011 - 17:47:40
----------------------------------------
Si il ragionamento è quello! Ora ti posto l'immagine di come ho pensato io di realizzarlo
----------------------------------------
AUTORE: 43
DATA :29/07/2011 - 08:09:35
----------------------------------------
[quote="pas2226":3bk3fz41]Si il ragionamento è quello! Ora ti posto l'immagine di come ho pensato io di realizzarlo[/quote:3bk3fz41]
ti basta prendere il resto della divisione.
Poi gli puoi sommare sempre un Offset fisso (1 nel tuo caso) ed applicare un fattore moltiplicativo.
Potresti rendere parametrico il numero degli step...
bye
[attachment=0:3bk3fz41]sawtooth.vi[/attachment:3bk3fz41]
----------------------------------------
AUTORE: 3933
DATA :29/07/2011 - 15:14:44
----------------------------------------
Ho capito come dici tu ma il mio prof mi ha detto espressamente che lo vuole con un ciclo FOr e shift register...
----------------------------------------
AUTORE: 927
DATA :29/07/2011 - 15:19:17
----------------------------------------
Esattamente qual è il problema? (e 2...)
Dal disegno sembra corretto
----------------------------------------
AUTORE: 3933
DATA :30/07/2011 - 00:05:54
----------------------------------------
Volevo solo sapere se per voi avevo ragionato bene per creare il dente di sega!
----------------------------------------
AUTORE: 43
DATA :01/08/2011 - 08:24:13
----------------------------------------
[quote="pas2226":1k02cqz7]Ho capito come dici tu ma il mio prof mi ha detto espressamente che lo vuole con un ciclo FOr e shift register...[/quote:1k02cqz7]
Le risorse si usano quando ha senso usarle.
Se tu riesci a costruire qualcosa usando meno risorse, dovresti essere contento.
Il prof., se non è un cretino, dovrebbe apprezzare.
Lo shift register è inutile, e soprattutto non ha senso.
bye
----------------------------------------
AUTORE: 482
DATA :01/08/2011 - 11:19:02
----------------------------------------
ma dai paracarro...se stanno studiando l'uso del for e degli shift register magari poteva chiedergli un altra applicazione ma ha chiesto questa e se la richiesta è cosi', lo studendte deve rispondere alla richiesta e basta.
Lo scopo in questo caso non epnso fosse usare meno risorse.
Se trovo uno in bicicletta che mi chiede la strada piu' veloce per arrivare a Milano, non gli rispondo "vai in macchina".
----------------------------------------
AUTORE: 43
DATA :01/08/2011 - 14:20:21
----------------------------------------
[quote="gepponline":b0fmjuob]ma dai paracarro...se stanno studiando l'uso del for e degli shift register magari poteva chiedergli un altra applicazione ma ha chiesto questa e se la richiesta è cosi', lo studendte deve rispondere alla richiesta e basta.
Lo scopo in questo caso non epnso fosse usare meno risorse.
Se trovo uno in bicicletta che mi chiede la strada piu' veloce per arrivare a Milano, non gli rispondo "vai in macchina".[/quote:b0fmjuob]
Geppo, ti confesso che comincia a piacermi il fatto che tu mi riprenda...
Farò in modo che accada + spesso!
Però permettimi il paragone non è calzante!
Riprendendo quello che dici
E' come se a qualcuno fosse data un'auto ed una bicicletta per raggiungere Milano, a scopo educativo.
Ora io gli direi:
<non ha senso fare un pezzo di strada in bicicletta per il gusto di farlo. Ti conviene fare tutta la strada in auto mettendo la bicicletta nel bagagliaio.>
Chi ha chiesto di usare entrambi i mezzi ha chiesto di fare una cosa che non ha senso.
Quantomeno, una cosa del genere non insegna un bel niente! Perchè nessuno cambierebbe il mezzo di trasporto se non fosse veramente necessario farlo!!!!
Per imparare qualcosa, soprattutto programmare, bisogna scrivere programmi che abbiano un senso...
Non solo! Il codice scritto male è di difficile lettura: gli inutili arzigogoli di alcuni fanno perdere tempo quando si tratta cercare la causa di un problema...
Il codice + semplice e lineare è + comprensibile da tutti.
bye
----------------------------------------
AUTORE: 3933
DATA :01/08/2011 - 16:06:20
----------------------------------------
paracarro ti ringrazio del tuo contributo e la tua soluzione! Non ti nascondo che sono tentato di presentare la tua soluzione sperando che il prof apprezzi! Ora se ne parla dopo le vacanze! Il tuo ragionamento fila alla perfezione!
PS: Per postare il VI completo del supereteredina che ho realizzato devo usare il tasto invia allegato come ho fatto per allegare l'immagine giusto?
----------------------------------------
AUTORE: 43
DATA :01/08/2011 - 17:21:22
----------------------------------------
[quote="pas2226":atfz029m]...PS: Per postare il VI completo del supereteredina che ho realizzato devo usare il tasto invia allegato come ho fatto per allegare l'immagine giusto?[/quote:atfz029m]
YEAH!! Prova se vuoi
----------------------------------------
AUTORE: 482
DATA :03/08/2011 - 07:30:16
----------------------------------------
OT
Il problema è che qui lo scopo bnon era forse arrivare a milano, ma imparare a pedalare
----------------------------------------
================================================================================
PLC - OPC server in ethernet
================================================================================
AUTORE: 3428
DATA :01/08/2011 - 12:02:18
----------------------------------------
Salve,
devo interfacciarmi con un PLC S7-300 tramite comunicazione ethernet in protocollo OPC server e tendo a precisare che essendo alle prime armi con LV ancora nonl’ho mai usato nè con il PLC tantomeno con l’OPC server.
Per la fornitura a breve dovrebbe arrivarmi il SIMATIC NET IE SOFTNET – S7 che da quanto sò è solamente un software da installare nella macchina che andrà a comunicare con il PLC e che bisogna configurare l’OPC (con le varie aree di memoria da leggere e le variabili da aggiornare) dai sw proprietari simatic.
Ora quello che vi chiedo è se c’è già qualcosa di pronto in LV per la comunicazione o devo partire da zero? Poi dovrò andare ad aggiornare delle shared variables da come leggo in giro sul web?
Esempi e info sono benaccetti!
Grazie
----------------------------------------
AUTORE: 301
DATA :02/08/2011 - 09:18:26
----------------------------------------
Altro chè se c'è "qualcosa" di pronto!
Si chiama Labview DSC, ed è un modulo fatto apposta per quello che devi fare tu.....ma si paga!
Puoi scaricare ed installare la versione demo.
Aris
----------------------------------------
AUTORE: 3428
DATA :02/08/2011 - 11:38:42
----------------------------------------
Ho installato l'opc server dal cd del simatic net, durante la configurazione iniziale dal pdf guida leggo
[i:1lstylqe]STEP 11:
Installing communication modules
To install communication modules, shut down the computer and install the
communication modules in the PC:
Step Description
1 Read the installation manual or the operating instructions for the
communications module and other relevant documentation.
2 Install the communication modules as explained.
3 Restart the computer.
STEP 12:
...[/i:1lstylqe]
Ora quello che vi chiedo da completo insesperto è come faccio a sapere il modulo che devo installare secondo la mia configurazione perchè la guida non mi indica nulla?
Sul cd trovo diversi driver, sotto la cartella "driverdisk"
-CP 1612
-CP 1612A2
-CP 1613
-CP1623
Inoltre ho trovato sul sito del produttore questo: [url:1lstylqe]http://www.automation.siemens.com/net-static/Quickstart2009/quickstart012003/html_76/ethernet/ie_tcp_s7_pc_s7.htm[/url:1lstylqe]
Non so quale installare però!!!
----------------------------------------
AUTORE: 301
DATA :02/08/2011 - 12:32:35
----------------------------------------
Hemmmmm
.....
Direi che dipende dalla scheda di rete che hai installato o che vuoi installare.....
Questo credo che non lo sappia nessuno.....
----------------------------------------
AUTORE: 3428
DATA :02/08/2011 - 12:59:50
----------------------------------------
ah
ok mi scuso..
Per una scheda di rete del PLC come la 343-1 Advanced prendo quindi il secondo nella lista del link che ho messo sopra?
Ma il communication module che devo installare è [i:3b1dhinf]S7_Put_opc_300_tcp_V30.exe[/i:3b1dhinf] oppure [i:3b1dhinf]pc_put_opc_tcp_V30.exe[/i:3b1dhinf]
Scusa la mia inesperienza
----------------------------------------
AUTORE: 301
DATA :02/08/2011 - 13:05:05
----------------------------------------
Ma figurati!
Ho fatto un corso di Step 7 e Siemens un annetto fa, ma di esperienza ne ho poca anche io con quei giochini!
Direi che si, dovresti installare il secondo (CP1613).
I sistemi Siemens non sono per nulla facili da implementare.....
GoodLuck
----------------------------------------
AUTORE: 3428
DATA :02/08/2011 - 13:10:50
----------------------------------------
ecco fatto..
non funziona!! mi sono scaricato gli eseguibili ma non viene effettuata l'installazione.
Faccio unzip ma mi dice solo che i file sono stati unzippati con successo (anche in tedesco) ma non si avvia nessuna installazione!!!
----------------------------------------
AUTORE: 301
DATA :02/08/2011 - 13:13:44
----------------------------------------
nella cartella decompressa non mette un exe?
----------------------------------------
AUTORE: 301
DATA :02/08/2011 - 13:15:44
----------------------------------------
OPC-Client.exe........
lo devi lanciare tu.....
----------------------------------------
AUTORE: 3428
DATA :02/08/2011 - 13:16:48
----------------------------------------
no... è proprio quello il fatto..
non vorrei che unzippandolo mi vada ad inserire varie librerie nel pc a mia insaputa, quindi installandolo.. ma non credo..
----------------------------------------
AUTORE: 301
DATA :02/08/2011 - 13:24:36
----------------------------------------
Ma......domanda.
Hai installato la scheda su PC?
Se lo hai fatto, dovresti vedere l'hardware nel tuo pc (ed anche dal sistema Siemens).
Quelli che scarichi sono solo esempi....
----------------------------------------
AUTORE: 301
DATA :02/08/2011 - 13:30:54
----------------------------------------
http://www.iogio.it/opc_siemens.html
Forse ti puo essere di aiuto....
----------------------------------------
AUTORE: 3428
DATA :02/08/2011 - 13:34:10
----------------------------------------
ma porca... ecco perchè!
sono in fase di progettazione e la scheda di rete del plc non mi è disponibile al momento, quindi non l'ho installata ed ovviamente il pc non me la vede.
Molto probabilmente non l'avrò prima di settembre ma devo avvantaggiarmi cercando di capire come comunica questo OPC quindi volevo iniziare a configurare il tutto (scambio dati, lettura, scrittura) ma probabilmente questo non è possibile senza hw installato fisicamente..
Ma non potrei installarmi i driver della scheda (che non so dove trovarli) per provare?
----------------------------------------
AUTORE: 301
DATA :02/08/2011 - 13:43:29
----------------------------------------
Per quello che mi ricordo dal corso fatto.....la vedo grigia, anche perchè senza quella come fai a provare se tutto funziona?
Puoi testare il programma del plc in simulazione, ma la parte di comunicazione credo proprio di no.
In ogni caso, vedi che l'OPC server ti mette gia a disposizione le risorse che ti interessano (zone di memoria, variabili, moduli e non so che altro) e per quel che riguarda i protocolli.....te ne sbatti, li gestisce lui!
----------------------------------------
AUTORE: 3428
DATA :02/08/2011 - 13:48:12
----------------------------------------
ok grazie Aris, sei stato veramente gentile.
All'avanzamento del progetto aggiornerò il thread.
Grazie ancora
----------------------------------------
AUTORE: 482
DATA :03/08/2011 - 07:34:09
----------------------------------------
Io avevo trovato in rete un tool che permetteva di comunicare via ethernet con vari PLC tra cui siemens senza bisogno di OPC e DSC.
Prova a cercarlo.
----------------------------------------
AUTORE: 3428
DATA :03/08/2011 - 10:36:36
----------------------------------------
Grazie geppionline,
l'OPC è richiesto dal cliente, quindi obbligatorio...
Dall'help di LV ho letto:
[i:sefjrjnz]You have two options for developing OPC clients in LabVIEW that allow you to connect to OPC systems: [b:sefjrjnz]LabVIEW DataSocket, which is available in the LabVIEW Development System,[/b:sefjrjnz] or the LabVIEW Datalogging and Supervisory Control (DSC) Module.[/i:sefjrjnz]
Quindi utilizzerò i datasocket per la comunicazione visto che non posso installare un altro modulo. In fin dei conti non sembra difficile come progettazione, apro il datasoket all'URL richiesto, scrivo o leggo e chiudo il DS. A parole, ripeto, sembra facile, anche in termini di codice... bisogna vedere poi come andranno le prove con l'HW disponibile...
Interessante però il tool per la comunicazione, soprattutto per futuri progetti dove la comunicazione non è imposta ma di propria scelta... Cercando un attimo online ho trovato solo [i:sefjrjnz]PLC-5 Programmable Controller Flash Tool[/i:sefjrjnz]
Grazie
----------------------------------------
AUTORE: 482
DATA :03/08/2011 - 12:53:29
----------------------------------------
mi dispiace informarti che il tool di cui parlavo, che prima era gratuito, ora viene rilasciato a pagamento da National Instruments:
http://sine.ni.com/nips/cds/view/p/lang/en/nid/209676
Comunque puoi sempre comunicare in modbus con i PLC eventualmente con il tool gratuito:
http://sine.ni.com/nips/cds/view/p/lang/en/nid/201711
----------------------------------------
AUTORE: 3428
DATA :04/08/2011 - 13:54:23
----------------------------------------
PROBLEMA:
sto configurando la connessione ethernet con il modulo CP343-1 della siemens, ho configurato il mio OPC server e la stazione.
Infine dopo aver aggiunto su "station configuration manager" sia la connessione "IE general" e l'opc server non mi ha dato errori.
Apro OPC scout e creo un nuovo gruppo sotto OPC.SimaticNET. Apro L'OPC navigator, mi scelgo una variabile, ci scrivo un 1 e do ok.
Mi restituisce l'errore: [b:34d4530q]Timeout, e.g. due to a broken connection[/b:34d4530q]
la qualità è bad ed inoltre il led RX/TX che da quanto so dovrebbe rimanere sempre acceso lampeggia...
come configuro bene la connessione??
----------------------------------------
AUTORE: 301
DATA :05/08/2011 - 06:17:13
----------------------------------------
Impostazioni di indirizzi sulle schede? (ip statico, stessa sottorete, ecc....tutto ok?)
Download delle impostazioni sul modulo eseguite correttamente?
....purtroppo qui non ho nulla per provare.....
----------------------------------------
AUTORE: 301
DATA :05/08/2011 - 06:22:37
----------------------------------------
Immagino che il manuale tu lo abbia ormai come una Bibbia.....
http://cache.automation.siemens.com/dnl ... x30_72.pdf
Non è che ti sei collegato con un cavo di rete direttamente al modulo ed il tuo pc ha qualche annetto?!?!?
Magari prova con un crox!
----------------------------------------
AUTORE: 3428
DATA :05/08/2011 - 10:55:59
----------------------------------------
Risolto... ho chiamato al supporto siemens, errore di configurazione...
un 4 al posto di un 2... alias: come perdere tempo per delle sciocchezze..
Grazie comunque ragazzi
----------------------------------------
AUTORE: 3428
DATA :05/08/2011 - 11:10:46
----------------------------------------
Come già detto riesco a comunicare...
Con i numerici tutto ok.
Con le stringhe un pò meno...
Invio ad esempio "QQQ" e mi scrive due quadratini in codice ascii...
Devo fare qualcosa in labview?
----------------------------------------
AUTORE: 3428
DATA :05/08/2011 - 15:46:54
----------------------------------------
Risolto: impostando come area di memoria la lettura di "char" devo passare un array di interi a 8bit, trasformando quindi la stringa con il blocchetto [i:2tydt55h]"string to byte array"[/i:2tydt55h] e [i:2tydt55h]"byte array to string"[/i:2tydt55h] in lettura...
Se dall'OPC scout indico che la variabile è lunga 5 byte (ogni carattere è un byte) devo per forza passare una stringa di 5 caratteri altrimenti l'opc server non la scrive.
Se ne passo 4 non scrive, se ne passo 6 non scrive, se ne passo 5 scrivendo ad esempio "ABCD " con il 5° carattere lo spazio, lo scrive.
----------------------------------------
================================================================================
selezionare valori da un file txt importato in labview
================================================================================
AUTORE: 3934
DATA :01/08/2011 - 15:47:32
----------------------------------------
Salve a tutti!!!! Devo importare dei dati da un file txt come nell' esempio (sottoforma di tabella)
10 20
30 40
22 56
per costruire un array 2D e da esso selezionare attraverso l' index array function uno dei valori numerici riportati precedentemente. Il mio problema è che non riesco a capire come fare per selezionare ad esempio il numero 20 (prima riga, seconda colonna): ho separato nel file di testo i valori di due colonne differenti con il tasto TAB ma non riesco a selezionare i numeri nella seconda colonna, cioè LabVIEW mi legge il valore 10 20 tutto insieme (non mi legge 20 se gli specifico, attraverso gli index dell' Index Array, 0 per la riga e 1 per la colonna: non mi dà nulla in uscita, mentre se gli indici sono 0 per la riga e 0 per la colonna mi dà in uscita 10 20, non solamente 10 ). Ho importato il file di testo con la funzione Read from Text File, l' ho trasformato in un array con Build Array, l' ho trasposto e quindi ho inserito l' Index Array con 2 indici in ingresso, uno per le righe e uno per le colonne. Dov' è che sbaglio? Il separatore delle colonne (TAB) che ho inserito tra le 2 colonne è corretto? Grazie mille in anticipo per i vostri suggerimenti!!!!
----------------------------------------
AUTORE: 301
DATA :02/08/2011 - 09:15:18
----------------------------------------
Ciao,
prova ad usare "Read from spreadsheet file" e setta il delimitatore delle colonne a tab.
Usare il tab come delimitatore, va benissimo (spesso ti toglie il problema della virgola se porti il tuo programma su altri pc), solo devi usare una funzione che ti legga una tabella (oppure scomporti riga per riga).
Con il "Read from Text File" puoi leggere un file diviso in righe, quindi un array monodimensionale, ecco il motivo per cui leggi in [0,0] 10 20 ed in [1,0] null.
Aris
----------------------------------------
AUTORE: 3934
DATA :02/08/2011 - 10:51:10
----------------------------------------
grazie mille provvederò!!!
----------------------------------------
================================================================================
Comunicazione tra due pannelli mediante datasocket server
================================================================================
AUTORE: 3465
DATA :03/08/2011 - 09:20:26
----------------------------------------
Salve a tutti,
mi scuso anzitempo se non è questa la sezione (o addirittura il forum) giusto ma magari qualcuno mi sa rispondere. Sapete se LabWindows supporta le connessioni tra pannelli mediante datasocket server?Dovrei far parlare due pannelli: uno realizzato in Labview e l'altro appunto in LabWindows.
Grazie
----------------------------------------
AUTORE: 645
DATA :23/08/2011 - 19:39:33
----------------------------------------
Da qui: http://www.ni.com/datasocket/ds_lwindows.htm
sembrerebbe non esserci problemi di comunicazione ed essendo LabWindows per certi versi una versione "in codice" di molti comandi LabView non credo proprio ci siano difficoltà: bisogna solo trovare il modo di programmare il VI.
Guarda se http://forums.ni.com/t5/LabWindows-CVI/ ... d-p/787697 può essere utile.
----------------------------------------
================================================================================
Contatore del tempo
================================================================================
AUTORE: 3428
DATA :23/08/2011 - 13:21:31
----------------------------------------
Salve,
esiste qualcosa di pronto per conteggiare il tempo?
Un semplicissimo cronometro che al massimo arrivi a 24:00:00 e poi ricominci da 0.
Ho provato ad usare il blocchetto di labview "Elapsed time" che mi restituisce un "Elapsed time Text" che serve a me solo che mettendolo in un ciclo e mettendo un wait di 500 ms mi occupa più del 50% della CPU!!!
Qualcuno avrà già sbattuto la testa in questa cosa prima di me?!?!? Qualcosa che faccia al caso mio?
----------------------------------------
AUTORE: 3428
DATA :23/08/2011 - 13:41:04
----------------------------------------
Beh, scusate pensavo che non si potessero semplicemente sottrarre i timestamp
Thread semi inutile
----------------------------------------
================================================================================
"While" come temporizzarlo?
================================================================================
AUTORE: 3428
DATA :29/08/2011 - 09:16:57
----------------------------------------
Salve inizio questo thread per fare un sondaggio.
Il ciclo while come va temporizzato?
-Una corrente di pensiero, compresa quella national, dice che si DEVE usare il "wait until next ms multiple";
-Un'altra, compresa la mia, usa e ha sempre usato, magari anche sbagliando, il semplice "wait (ms)";
Vantaggi svantaggi e modi di usarli...?
----------------------------------------
AUTORE: 1078
DATA :29/08/2011 - 15:51:47
----------------------------------------
Bhe secondo me sono validi entrambi, tutto dipende da cosa ci devi fare!
Il "wait until next multiple" prima fa girare il codice che deve essere eseguitio nel ciclo, se questo viene eseguito sotto il tempo impostanto aggiunge il gap mancante e assicura che l'iterazione venga eseguite in un determinato tempo, se invece il codice eccede il tempo impostato fa partire immediatamente l'iterazione successiva. Il "wait" aggiunge semplicemente un ritardo all'iterazione corrente, dopo aver eseguito il codice interno al while loop. Nel secondo caso non vengono garantite le tempistiche di esecuzione, io lo uso quando non mi interessa essere preciso nei tempi di esecuzione, ad esempio per salvare dati su disco pescandoli da una coda, oppure, quando devo gestire l'interfaccia utente (qualche millesecondo in più o in meno non viene nemmeno percepito dall'utente). Il primo normalmente lo utilizzo per interrogare l'hardware o per fare operazioni cruciali.
Ovviamente tutto va pesato e ponderato bene!!
Spero che il mio contributo sia stato utile.
----------------------------------------
AUTORE: 3428
DATA :30/08/2011 - 08:48:27
----------------------------------------
Grazie ricky, è proprio questo:
[i:1trznlpk]"Nel secondo caso non vengono garantite le tempistiche di esecuzione"[/i:1trznlpk] che non mi convince o non ho ben capito...
Ammettiamo impostassi il wait (ms) a 50 ms:
il ciclo ci mette 44 ms ad assere eseguito, poi attende 50 ms e lo riesegue, ci mette 36 ms poi attende 50 ms e lo riesegue e così via...
Ammettiamo ora impostando il wait until.. sempre a 50 ms:
il ciclo ci mette 44 ms ad essere eseguito, poi attende 6 ms e lo riesegue ma ci mette 51 ms quindi ne attende altrettanti 49 ms per rieseguirlo e così via....
Dove sta la differenza? In entrambe i casi non perdo tempo (come visto nel secondo esempio ne perdo molto di più che nel primo)
In sostanza il wait until mi può servire solo se voglio che ad esempio il ciclo aggiorni qualcosa ogni 10 secondi esatti (10000 ms) quindi metto un wait until a 10000 ms mentre con il semplice wait non sarei sicuro dei miei 10 sec ma potrebbero essere tranquillamente di più... sempre trattandosi di ms quindi non visibili ma se devo loggare qualcosa ogni 10 sec precisi meglio il wait until...
Ci sono?
----------------------------------------
AUTORE: 1078
DATA :30/08/2011 - 09:36:21
----------------------------------------
[quote="renaso":18v66rib]Grazie ricky, è proprio questo:
[i:18v66rib]"Nel secondo caso non vengono garantite le tempistiche di esecuzione"[/i:18v66rib] che non mi convince o non ho ben capito...
Ammettiamo impostassi il wait (ms) a 50 ms:
il ciclo ci mette 44 ms ad assere eseguito, poi attende 50 ms e lo riesegue, ci mette 36 ms poi attende 50 ms e lo riesegue e così via...
Ammettiamo ora impostando il wait until.. sempre a 50 ms:
il ciclo ci mette 44 ms ad essere eseguito, poi attende 6 ms e lo riesegue ma ci mette 51 ms quindi ne attende altrettanti 49 ms per rieseguirlo e così via....
Dove sta la differenza? In entrambe i casi non perdo tempo (come visto nel secondo esempio ne perdo molto di più che nel primo)
In sostanza il wait until mi può servire solo se voglio che ad esempio il ciclo aggiorni qualcosa ogni 10 secondi esatti (10000 ms) quindi metto un wait until a 10000 ms mentre con il semplice wait non sarei sicuro dei miei 10 sec ma potrebbero essere tranquillamente di più... sempre trattandosi di ms quindi non visibili ma se devo loggare qualcosa ogni 10 sec precisi meglio il wait until...
Ci sono?[/quote:18v66rib]
Sì ci sei, infatti bisogna stare attenti a dimensionare correttamente il Wait Until next multiple in modo da non evare ritardi eccessivi sull'iterazione, nel tuo caso ipotizzando che il tuo codice possa metterci dai 45ms ai 55ms per essere eseguito, il temporizzatore andrebbe configurato con un valore da 55ms in su, in modo da garantire un'esecuzione del codice con tempi "certi".
----------------------------------------
AUTORE: 3428
DATA :30/08/2011 - 12:52:53
----------------------------------------
Perfetto, grazie...
----------------------------------------
AUTORE: 43
DATA :05/09/2011 - 10:40:37
----------------------------------------
[quote="renaso":29rxejlu]Salve inizio questo thread per fare un sondaggio.
Il ciclo while come va temporizzato?
-Una corrente di pensiero, compresa quella national, dice che si DEVE usare il "wait until next ms multiple";
-Un'altra, compresa la mia, usa e ha sempre usato, magari anche sbagliando, il semplice "wait (ms)";
Vantaggi svantaggi e modi di usarli...?[/quote:29rxejlu]
Non ci sono correnti di pensiero...
- "wait until next ms multiple" serve a "temporizzare" un loop
- "wait (ms)" serve ad introdurre un ritardo prefissato, cioè la cui durata impostata viene "consumata" completamente...
Anzi il loop temporizzato 'al meglio' è costituito dalla struttura "Timed Loop" che si trova nella palette
Structure --> Timed Structure -> TIimed Loop
Da notare la interessante "Timed Sequence" presente nella stessa palette.
Il ragionamento riguarda principalmente la lingua italiana ed il significato della parola "temporizzare":
cercando su google la prima ripsosta riguarda il significato di temporizzatore:
http://dizionari.corriere.it/dizionario ... tore.shtml
[code:29rxejlu]temporizzatore
[tem-po-riz-za-tó-re] s.m.
• elettr. Dispositivo regolato per funzionare automaticamente a intervalli di tempo stabiliti[/code:29rxejlu]
beh! + chiaro di così!
'temporizzare' quindi somiglia a 'cadenzare'.
Quindi, se l'esecuzione delle iterazioni di un loop impiegano tempi diversi per essere completate, il loop non è temporizzato.
Un po' di tempo fa come alternativa alla"wait until next ms multiple" si gestiva l'attesa di una occorrenza.
Oggi è possibile usare un Notifier.
Questa può essere utile per tutti i loop che girano finchè l'applicazione gira.
Supponiamo un loop che gira temporizzato al minuto, che aggiorna sul display un orologio ogni minuto.
Con "wait until next ms multiple", bisogna attendere il termine del minuto che si sta aspettando prima di considerare la condizione di uscita dal loop, mentre utilizzando un Notifier , generando un "evento" Notifica di uscita del programma, collegando la condizione di uscita dal loop al "timeout" della "Wait on Notification", si otterrebbe
un'uscita immediata dal loop.
bye
----------------------------------------
AUTORE: 2192
DATA :23/09/2011 - 15:08:54
----------------------------------------
Ciao paraccarro,
puoi indicarmi un'esempio del notifier di cui parli nel tuo post?
Uso spesso applicazioni "temporizzate" e l'uscita immediata dal loop senza aspettare mi interesserebbe molto.
Grazie!
----------------------------------------
AUTORE: 43
DATA :26/09/2011 - 10:11:22
----------------------------------------
[quote="dot_entry":1pzgxgp2]Ciao paraccarro,
puoi indicarmi un'esempio del notifier di cui parli nel tuo post?
Uso spesso applicazioni "temporizzate" e l'uscita immediata dal loop senza aspettare mi interesserebbe molto.
Grazie![/quote:1pzgxgp2]
Fatto con occorrenze
[attachment=1:1pzgxgp2]OccurenceLoops.vi[/attachment:1pzgxgp2]
Stesso esempio con Notifier
[attachment=0:1pzgxgp2]NotifierLoops.vi[/attachment:1pzgxgp2]
LV8.6.1
bye
----------------------------------------
AUTORE: 2192
DATA :26/09/2011 - 12:32:22
----------------------------------------
Grazie!
----------------------------------------
================================================================================
verify information vi
================================================================================
AUTORE: 3091
DATA :31/08/2011 - 11:43:39
----------------------------------------
Salve a tutti, avrei bisogno di sapere dove stà il mio errore nella seguente applicazione.
Il VI in questione verifica la pasword e il nome e se corretti attiva un comando boleano di luce verde. Lo schema a blocchi è presente anche all'interno del corso base II, ma sembra che a me nn funzioni. In allegato invio una hard copy dello schema a blocchi. ve ne sarei molto grato se qualcuno possa dargli uno sguardo.
Grazie in anticipo. Massimo
----------------------------------------
AUTORE: 1078
DATA :01/09/2011 - 07:45:10
----------------------------------------
Dall'immagine del codice che hai postato c'è sicuramente un errore nella condizione che dovrebbe fermare il ciclo. Se continui a luppare finchè il nome in table è uguale a quello immesso ti si presentano due casi: il primo è che al primo dato estratto dall'array "Table" è diverso dal nome immesso, questo comporta l'immediata uscita dal ciclo senza il controllo della password e quindi il tuo "led" sarà settato su "false"; nel secondo caso, il primo valore dell'array corrisponde al tuo nome, viene verificata la password (mettiamo che corrisponde), ma viene eseguita un'altra iterazione del ciclo quindi, viene estratto il secondo nome dell'array (che immagino sia diverso dal nome cercato) e quindi si ripete il primo caso descritto ed esci con il tuo boolean settato su "false".
Verifica la condizione di uscita dal loop, io la metterei su stop quando il nome e la password sono uguali e qando l'iterazione del ciclo supera il numero di elementi nell'array.
Buon lavoro!
----------------------------------------
AUTORE: 3091
DATA :01/09/2011 - 09:46:19
----------------------------------------
Grazie riki, mi metto subito all'opera.
Massimo.
----------------------------------------
================================================================================
Pressione bottone multiple
================================================================================
AUTORE: 3428
DATA :01/09/2011 - 13:20:24
----------------------------------------
Salve avrei un problema con la pressione di alcuni bottoni.
Diversi di loro mi fanno avviare degli eseguibili di labview che, a seconda della pesantezza, ci mettono più o meno tempo.
L'utente, metre si sta caricando l'exe, è tentato di premere di nuovo il bottone perchè sembra che non stia caricando, anche se ho messo che il bottone a true cambi la scritta in "wait...". Il fatto è che se l'utente ripreme il bottone, una volta entrato dentro l'exe e anche uscito, LV si "ricorda" la seconda pressione e quindi mi riapre l'exe.
Come posso ovviare?
Grazie
----------------------------------------
AUTORE: 1078
DATA :05/09/2011 - 07:12:45
----------------------------------------
[quote="renaso":1w42dajg]Come posso ovviare?[/quote:1w42dajg]
Metti una flag boolean che setti a true solo alla prima pressione del bottone in questione, con uno shift register mantieni il suo valore e lo controlli insieme al valore del bottone, quindi se quella flag è true ignori il comando del buttone.
[attachment=1:1w42dajg]btt_001.JPG[/attachment:1w42dajg]
[attachment=0:1w42dajg]btt_002.JPG[/attachment:1w42dajg]
----------------------------------------
AUTORE: 43
DATA :05/09/2011 - 11:34:30
----------------------------------------
[quote="renaso":2suzg5jb]Salve avrei un problema con la pressione di alcuni bottoni.
Diversi di loro mi fanno avviare degli eseguibili di labview che, a seconda della pesantezza, ci mettono più o meno tempo.
L'utente, metre si sta caricando l'exe, è tentato di premere di nuovo il bottone perchè sembra che non stia caricando, anche se ho messo che il bottone a true cambi la scritta in "wait...". Il fatto è che se l'utente ripreme il bottone, una volta entrato dentro l'exe e anche uscito, LV si "ricorda" la seconda pressione e quindi mi riapre l'exe.
Come posso ovviare?
Grazie[/quote:2suzg5jb]
La prima cosa da fare è disbilitare qual bottone (proprietà Disabled =1 o =2).
Se l'esecuzione che segue la pressione del bottone non è interrompibile, allora è meglio disabilitare tutti i bottoni.
Ovviamente al termine dell'esecuzione le funzionalità vanno ripristinate.
Per abilitare/disabilitare tanti bottoni e controlli contemporaneamente, consiglio di racchiuderli tutti (o tutta la schermata...) in un unico "Tab control" magari trasparente se non vi interessa il rettangolo di bordatura...
bye
----------------------------------------
AUTORE: 3428
DATA :06/09/2011 - 07:34:08
----------------------------------------
Grazie ad entrambe...
il disabilita è molto meglio!
----------------------------------------
================================================================================
Creazione di un canale
================================================================================
AUTORE: 3939
DATA :04/09/2011 - 15:37:03
----------------------------------------
Salve a tutti,
è da qualche giorno che ho tra le mani tutorial di labview per capire come funziona.
Io ho un programma che serve per acquisire misure da un sensore di pressione attraverso una scheda di acquisizione. Però questo programma deve essere modificato per creare un ulteriore canale, essendo il mio sensore differenziale,e diverso rispetto al sensore per cui è stato creato il programma(gauge). Sapreste indicarmi come agire?
Vi ringrazio anticipatamente
----------------------------------------
AUTORE: 1078
DATA :05/09/2011 - 07:39:21
----------------------------------------
basta che aggiungi al task in esecuzione il canale da cui vuoi acquisire, lo configuri come devi al momento dell'aggiunta, quando leggi i dati devi leggere tutti i canali insieme. Quello che hai appena aggiunto sarà l'n-esimo, il suo valore lo trovi nell'array dati restituito dalla funzione read. Se decidi di acquisire 1000 campioni per volta, i tuoi mille campioni saranno gli n-essimi nellaray bidimensionale che ti viene restituito dalla funzione read. Trovi un sacco di documentazione in merito a come fare acquisizioni di multiple sul sito della NI, per questioni di tempo non riesco a darti l'url di qualche tutorial ma se cerchi...
Del resto chi cerca trova!!! AH!AH!AH!
----------------------------------------
================================================================================
State machine
================================================================================
AUTORE: 3531
DATA :06/09/2011 - 17:28:05
----------------------------------------
Ciao a tutti...
la mia domanda può risultare sicuramente stupida....ma sono ancora inesperto...e vi ringrazio.
Ecco la mia domanda, ho una il mio bel while con il case e gli shift register, ovvero la state machine, se volessi aggiungere uno stato nella varibile enum come posso fare???
mi spiego io aggiungo un nuovo item nella variabile enum ma quando lo faccio il mio case (che ho caricato in precedenza con tutti gli stati con il comando add case for every etc etc) perde tutti gli item scritti e li sostituisce con il valore decimale del case....
dove sbaglio????
Spero di essere stato chiaro chiedetemi qualsiasi cosa...grazie grazie
----------------------------------------
AUTORE: 3428
DATA :07/09/2011 - 07:43:11
----------------------------------------
Ciao, premetto che sono anch'io poco esperto... uso labview da appena 6 mesi..
Solitamente però se uso la state machine metto il mio enum come controllo typedef. Da front panel o block diagram fai (file-new-custom control, che sta verso la fine sotto la voce "other files")
Ti crea un controllo che devi salvare sul pc, magari in una cartella Controlli dentro al progetto della state machine, ma il bello è che modificando il file appena creato, ti modifica/aggiorna tutti i controlli che hai usato nel progetto o dove quell'enum è utilizzato...
Poi ti basta collegarlo al case (all'inizio avrai solo i primi 2 item) e poi fare add case after ecc. (io non uso mai add case for every..)
Così a me non ha mai cancellato nulla..
Spero di essere stato d'aiuto
----------------------------------------
AUTORE: 43
DATA :07/09/2011 - 10:55:25
----------------------------------------
[quote="vezzo":152ojc22]Ciao a tutti...
la mia domanda può risultare sicuramente stupida....ma sono ancora inesperto...e vi ringrazio.
Ecco la mia domanda, ho una il mio bel while con il case e gli shift register, ovvero la state machine, se volessi aggiungere uno stato nella varibile enum come posso fare???
mi spiego io aggiungo un nuovo item nella variabile enum ma quando lo faccio il mio case (che ho caricato in precedenza con tutti gli stati con il comando add case for every etc etc) perde tutti gli item scritti e li sostituisce con il valore decimale del case....
dove sbaglio????
Spero di essere stato chiaro chiedetemi qualsiasi cosa...grazie grazie[/quote:152ojc22]
Come diceva Renaso, i tuoi controlli/costati di tipo enum, devono fare capo ad un unico controllo typedef, anzi "Strict Typedef".
Seleziona il tuo controllo o una costante Enum poi da menu
Edit --> Customize Control
Nel Pannello che si aprirà in alto, di fianco all'icona con la chiave inglese premi sulla scritta "Control" e seleziona "Strict Typedef"
Salva questo pannello (ti crea un file .ctl)
Sostituisci tutti i controlli e le costanti enumerate con questo Custom Control.
bye
----------------------------------------
AUTORE: 3531
DATA :07/09/2011 - 22:23:59
----------------------------------------
[quote="paracarro":tre4wbng]
Seleziona il tuo controllo o una costante Enum poi da menu
Edit --> Customize Control
[/quote:tre4wbng]
Inannzi tutto grazie per le risposte!!!
Ho fatto subito una prova selezionando nel mio caso la costatnte enum, l'ho selezionata e mi sono recato nel menu edit....fin qui tutto ok ma la voce customize control è in grigio....
questo accade anche se converto la mia costante in un controllo....
cosa ne dite???
Grazie grazie
----------------------------------------
AUTORE: 43
DATA :08/09/2011 - 08:30:31
----------------------------------------
[quote="vezzo":wyd7h99a][quote="paracarro":wyd7h99a]
Seleziona il tuo controllo o una costante Enum poi da menu
Edit --> Customize Control
[/quote:wyd7h99a]
Inannzi tutto grazie per le risposte!!!
Ho fatto subito una prova selezionando nel mio caso la costatnte enum, l'ho selezionata e mi sono recato nel menu edit....fin qui tutto ok ma la voce customize control è in grigio....
questo accade anche se converto la mia costante in un controllo....
cosa ne dite??? [/quote:wyd7h99a]
Ho scritto una cosa sbagliata. Chiedo scusa.
La funzionalità di "Customiza Control" è accessibile solo da Front Panel.
Quindi non può essere attiva su una costante.
bye
----------------------------------------
AUTORE: 3531
DATA :08/09/2011 - 08:49:36
----------------------------------------
OOOKKKK
Risolto ho [u:1j8jn44f]inserito un nuovo control enum da front pannel[/u:1j8jn44f]....
Seguito i passaggi citati prima....ed il gioco è fatto
Grazie
Buon lavoro a Tutti!!!
----------------------------------------
AUTORE: 3428
DATA :08/09/2011 - 10:19:04
----------------------------------------
Perfetto...
Continuo questo Thread con una mia domanda che riguarda sempre le state machine...
è bene sapere in che stato si trova la state machine ogni volta che voglio saperlo.. questo è molto facile mettendo un indicatore sullo shift register prima di entrare nello stato... ok
Il fatto è che a me servirebbe solo in debug o meglio, chi utilizza il sw non deve poter vederlo, quindi non posso mettere un controllo sempre visibile, tantomeno qualcosa da file .ini che se true mi faccia vedere lo stato, se false no...
Mi farebbe molto comodo un controllo da tastiera o un qualcosa tipo che se premo CTRL+1 mi mette il controllo visibile e se lo ripremo me lo mette invisibile... o qualcosa che possa essermi utile..
Esiste una soluzione?
----------------------------------------
AUTORE: 482
DATA :08/09/2011 - 11:32:19
----------------------------------------
Crea un pulsante e nelle proprietà stabilisci i tasti che vannoad azionarlo e come funziona meccanicamente.
Poi a questio tasto colleghi il property node visible del controllo che ti interessa.
----------------------------------------
AUTORE: 3428
DATA :08/09/2011 - 11:58:31
----------------------------------------
perfetto..
non sapevo che il toggle nelle proprietà di un tasto, resettava a false il valore...
ho messo che premendo F10 mi va a true... mi fa quello che deve fare e poi mi ritorna a false.. meglio così..
Grazie
----------------------------------------
AUTORE: 482
DATA :08/09/2011 - 12:37:47
----------------------------------------
[quote="renaso":3pnwh31h]non sapevo che il toggle nelle proprietà di un tasto, resettava a false il valore...[/quote:3pnwh31h]
credo che quello sia legato al mechanical action del tasto.
----------------------------------------
================================================================================
Come faccio a mantenere lo stesso controllo in tab diversi ?
================================================================================
AUTORE: 3941
DATA :09/09/2011 - 14:20:22
----------------------------------------
Come faccio a mantenere lo stesso controllo in diverse paginr del Tab Control senza doverlo replicare per ogni pagina?
Faccio un esempio graficamente:
Ho un tab control con 2 pagine. In entrambe le pagine devo avere un Gauge e un Ring Control. Io vorrei far in modo da non replicare il Gauge e il Ring Control in entrambe le pagine. Io vorrei creare 1 volta sola i 2 controlli e poi poterli visualizzare e usare nelle varie pagine del Tab Control
[url=http://imageshack.us/photo/my-images/26/38203997.jpg/:1vmaqm5d][img:1vmaqm5d]http://img26.imageshack.us/img26/9195/38203997.jpg[/img:1vmaqm5d][/url:1vmaqm5d] [url=http://imageshack.us/photo/my-images/822/52824832.jpg/:1vmaqm5d][img:1vmaqm5d]http://img822.imageshack.us/img822/4982/52824832.jpg[/img:1vmaqm5d][/url:1vmaqm5d]
Si puo' fare? e come?
Grazie
----------------------------------------
AUTORE: 43
DATA :12/09/2011 - 08:56:53
----------------------------------------
[quote="joshwa":2f41rc4v]Come faccio a mantenere lo stesso controllo in diverse paginr del Tab Control senza doverlo replicare per ogni pagina?
Faccio un esempio graficamente:
Ho un tab control con 2 pagine. In entrambe le pagine devo avere un Gauge e un Ring Control. Io vorrei far in modo da non replicare il Gauge e il Ring Control in entrambe le pagine. Io vorrei creare 1 volta sola i 2 controlli e poi poterli visualizzare e usare nelle varie pagine del Tab Control
Si puo' fare? e come?
Grazie[/quote:2f41rc4v]
Premesso che ritengo la tua scelta pessima, è possibile farlo.
Aggiungi l'indicatore/controllo (spero sia un indicatore...) clickando nei pressi del tab ma non dentro.
Seleziona il controllo, vedrai il suo bordo tratteggiato lampeggiare.
Spostalo usando le frecce della tastiera nella posizione che + ti aggrada.(tieni premuto lo shift insieme alle frecce per spostare l'oggetto + velocemente).
Il gioco è fatto
Noterai un'ombra che sta ad indicare una "sovrapposizione " di oggetti grafici, cosa che non è mai desiderata. ma nel tuo caso è voluta.
Questa ombra scomparirà a programma avviato.
E' possibile trascinare l'oggetto sopra il tab anche con il mouse ma lo trovo scomodo, anche nel descriverne i limiti a parole.
Se spostando l'oggetto ti accorgi che va "sotto" il tab allora mettilo in primo piano usando il tastino "Reorder"visibile nella barra sotto il menu del FP oppure premendo
Ctrl+Shft+K
Non è possibile rendere visibile il controllo in alcuni tab ed in altri no: se vuoi devi farlo Tu programmaticamente (usa la proprietà booleana Visible)
Di norma, gli indicatori importanti (allarmi o indicatori si stato generale) devono essere sempre visibili:
Vanno messiin un'area dedicata della schermata e non devono essere sovrapposti a nulla.
bye
----------------------------------------
================================================================================
Creare una curva Y= mx + c
================================================================================
AUTORE: 3428
DATA :12/09/2011 - 09:22:22
----------------------------------------
Salve, ho un problema.
Nel mio sw devo poter visualizzare un grafico con all'interno diverse rette o curve a seconda dei valori di un array di cluster contenente 3 valori (velocità, tempo, accelerazione).
Il rusultato deve essere una o più rette a seconda del numero di cluster dentro l'array
-La velocità è quella che deve raggiungere da una iniziale;
-Il tempo non è rapportato nè alla velocità nè all'accelerazione ma al tempo che deve mantenere tale velocità;
-L'accelerazione è l'aumento della velocità nel tempo.
Riesco ad inserire i valori dentro il grafico ma non riesco a fare in modo che la retta della velocità sia rapportata all'accelerazione che imposto.
Ad esempio se imposto la velocità a 100 giri e il tempo 20 sec e l'accelerazione di 10 giri al sec avrò raggiunto la mia velocità in 10 secondi e fin quì avrò una retta che va in salita, dopodichè per i restanti 10 secondi dovrò avere una retta orizzontale a partire dal punto d'arrivo della primaperchè la velocità è ormai raggiunta, per poi passare all'analisi del secondo cluster dentro l'array...
Come posso fare?
----------------------------------------
AUTORE: 1078
DATA :14/09/2011 - 10:01:14
----------------------------------------
Ciao renaso,
Credo che tu stia semplicemente usando il grafico sbagliato per visualizzare le tue rette. Lo strumento migliore per visualizzare queste informazioni è il grafico XY. Questo grafico ti permette di "personalizzare la tua scala di valori sia sui valori delle ascisse che delle ordinate. Trovi molte informazioni su come utilizzarli sia sul sito NI che sul Find Example di Labview!
Se poi dovesse servire altro, siamo a disposizione!
Buon lavoro.
----------------------------------------
AUTORE: 3428
DATA :14/09/2011 - 14:40:41
----------------------------------------
No, usavo il grafico XY ma non facevo tutti i calcoli che la retta richiede.
Ho trovato il blocchettino "in range and coerce" molto utile, anzi fondamentale.
Grazie comunque, chiudo
----------------------------------------
================================================================================
Cicli for annidati
================================================================================
AUTORE: 3948
DATA :13/09/2011 - 10:21:25
----------------------------------------
Salve mi chiamo Roberto e sono nuovo del forum. Apro questo nuovo topic perchè ho un problema con i cicli for annidati e non ho trovato nulla di utile nei vecchi post. Io devo riuscire a ottenere dei valori in tempo reale da ogni singola iterazione del ciclo for, fino ad ora non sono riuscito a ottenere questo risultato nel senso che ottengo tutti i valori solo alla fine di ogni ciclo e non durante il ciclo. Per il mio lavoro è importante riuscire a ottenere i valori di ogni iterazione istante per istante perchè in base a questi devo costruire una curva che evidenzi l'andamento in tempo reale. Purtroppo non posso postare il programma su cui sto lavorando ma posso postare un esempio a questo link http://imageshack.us/photo/my-images/69 ... idati.png/. Grazie in anticipo per l'aiuto.
----------------------------------------
AUTORE: 278
DATA :13/09/2011 - 12:55:05
----------------------------------------
Ciao e benvenuto,
potreti usare una local o global variable da inseririre appena dopo il calcolo che esegui all'interno del for, mentre per visualizzare il risultato potresti creare un ciclo parallelo che legge dalla variabile globale (o locale) il dato e utilizzarlo per graficare la tua curva.
Una soluzione più elegante e professionale consiste nell'utilizzare delle code, in questo modo avresti la certezza di graficare ogni singolo dato generato dal tuo ciclo.
Ciao
----------------------------------------
AUTORE: 3948
DATA :13/09/2011 - 14:18:53
----------------------------------------
Prima di tutto grazie per la risposta. Anche se prima non ho detto nulla devo dire che sono nuovo all'uso di labview quindi poco esperto
. Comunque sia ho provato ad utilizzare una variabile locale ma questa assume valori diversi da zero solo all'interno del ciclo for mentre al di fuori vale zero( almeno nel mio caso). Ho provato a usare questa variabile locale all'interno del ciclo for ma rimane il fatto che si aggiorna solo alla fine del for. Per quanto riguarda le variabili globali non riesco proprio ad utilizzarle perchè labview mi da errore, nel senso che per labview io posso utilizzare le var globali solo nel caso stia utilizzando dati di tipo void(e nel mio caso uso dati di tipo integer). Io ancora non ho ben capito se sia possibile fare un cast e quindi trasformare il mio dato int in un dato void e non penso di ottenere qualcosa di buono facendo un operazione simile visto che il void per definizione non dovrebbe tornare nulla in lettura. Per quanto riguarda le code io non ho la minima idea di che cosa siano, ho provato a cercare in rete ma non riesco a trovare nulla.
----------------------------------------
AUTORE: 1078
DATA :14/09/2011 - 08:53:55
----------------------------------------
[quote="esodar1981":ggs5dqmp]Ciao e benvenuto,
potreti usare una local o global variable da inseririre appena dopo il calcolo che esegui all'interno del for, mentre per visualizzare il risultato potresti creare un ciclo parallelo che legge dalla variabile globale (o locale) il dato e utilizzarlo per graficare la tua curva.
Una soluzione più elegante e professionale consiste nell'utilizzare delle code, in questo modo avresti la certezza di graficare ogni singolo dato generato dal tuo ciclo.
Ciao
[/quote:ggs5dqmp]
Ma non andiamo a cercare soluzioni complicate quando ce ne sono di molto più semplici.
@ridopoco:
è sufficiente che costruisci i tuoi array utilizzando degli shift register, iniziandoli e posizionando i tuoi indicatori all'interno dei cicli for.
In allegato un esempio!
----------------------------------------
AUTORE: 3948
DATA :14/09/2011 - 09:35:40
----------------------------------------
Ciao, quello che mi consigli non va bene perchè io ho bisogno di avere i valori in tempo reale fuori dai cicli for. Non potendo postare il codice su cui sto lavorando vi posso dire che devo graficare il percorso in tempo reale di due motori (per tale motivo uso due cicli for annidati), il mio scopo è quindi ottenere questi valori per graficare in tempo reale una curva. Dentro lo stesso grafico, in cui c'è il percorso di questo motore, devo graficare anche il posizionamento del motore. Ora al punto in cui sono io riesco a graficare entrambi i grafici ma separatamente e per poter graficarli entrambi nello stesso grafico devo ottenere questi valori in tempo reale fuori dai cicli for.
@esodar1981:
dopo un pò ho capito cosa intendevi per code, ora devo solo impare ad utilizzarle.
----------------------------------------
AUTORE: 3948
DATA :14/09/2011 - 10:15:24
----------------------------------------
Piccolo edit
Penso di aver capito (o almeno spero) come si usano le code, utilizzandole dentro il ciclo for non ho problemi perchè visualizza in tempo reale i valori ma fuori dal ciclo for mi rimane il solito problema. Facendo un pò di ricerche in internet mi è sembrato di capire che il ciclo for restituisce tutti i valori alla fine di tutte le sue interazioni e non c'è alcun modo di ottenere questi valori prima della fine del ciclo. Vi prego ditemi che non è vero.
----------------------------------------
AUTORE: 301
DATA :14/09/2011 - 12:45:38
----------------------------------------
è vero.
Non capisco perchè dovrebbe essere diverso, ma non solo per i for, per qualsiasi ciclo.
Quando vai ad eseguire un ciclo, viene eseguito tutto ciò che ci sta dentro, mentre quello che è fuori viene eseguito solo al suo termine.
Nel tuo caso:
1_ metti i grafici all'interno dei cicli for (utilizzando shift_r e quello che ti serve.
2_ esegui due cicli paralleli uno con i for e il popolamento delle code o delle variabili ed il secondo che aggiorna il grafico (le variabili o la coda che userai, dovrà essere popolata all'interno del for che vai ad eseguire).
----------------------------------------
AUTORE: 301
DATA :14/09/2011 - 12:47:10
----------------------------------------
[quote="aris":3rrmrv0m]è vero.
Non capisco perchè dovrebbe essere diverso, ma non solo per i for, per qualsiasi ciclo.
Quando vai ad eseguire un ciclo, viene eseguito tutto ciò che ci sta dentro, mentre quello che è fuori viene eseguito solo al suo termine.
Nel tuo caso:
1_ metti i grafici all'interno dei cicli for (utilizzando shift_r e quello che ti serve.
2_ esegui due cicli paralleli uno con i for e il popolamento delle code o delle variabili ed il secondo che aggiorna il grafico (le variabili o la coda che userai, dovrà essere popolata all'interno del for che vai ad eseguire).[/quote:3rrmrv0m]
Le due soluzioni sono in "OR", o fai una o l'altra.....tutto dipende sempre da cio che devi fare.
Aris
----------------------------------------
AUTORE: 3948
DATA :14/09/2011 - 13:18:41
----------------------------------------
Ok grazie della dritta, alla fine utilizzero due grafici. Grazie a tutti per l'aiuto.
----------------------------------------
================================================================================
Generazione Pwm Su uscita Digitale
================================================================================
AUTORE: 3949
DATA :16/09/2011 - 21:35:47
----------------------------------------
Salve a tutti,
Mi rivolgo a voi scusandomi per la mia poca esperienza, e ringraziandovi anticipatamente per l'aiuto. Vi espongo brevemente il mio problema. Nel tentativo di generare un segnale Pwm per il controllo di un inverter, ho creato un VI all'interno del quale genero un'onda triangolare e tre onde sinusoidali sfasate di 120 gradi. Tre comparatori, confrontano i valori della sinusoide e dell'onda triangolare, e generano i segnali logici alti / bassi da mandare in uscita su un Daq-Pad 6015. Se utilizzo l'uscita analogica della periferica, essa funziona banalmente collegando il blocchetto che esegue il confronto sull'ingresso DATA del Daq Assistant. Il problema, sorge se configuro la perifericha per utilizzare l'uscita digitale, il sistema va in errore, come se non riuscisse a gestire l'array di uni e zeri ( convertiti in valori booleani) da mandare in uscita sulla periferica. Ho provato estraendo sequenzialmente i valori usando l'indice del ciclo While ed inviandoli in seqenza sulla periferica, ed in effetti sembra funzionare, ma dopo un periodo stranamente la generazione di segnali alti / bassi termina bloccandosi sull'ultimo valore generato. So che molto probabilmente è un problema banale, ma vi sarei grato se mi poteste dare una mano nel capire come affrontarlo, per imparare. Grazie mille
----------------------------------------
AUTORE: 482
DATA :19/09/2011 - 07:23:49
----------------------------------------
Credo che innanzitutto sarebbe bello sapere l'errore che ti restituisce.
Detto cosi' credo sia un problema di buffer/velocità di generazione.
----------------------------------------
================================================================================
RICEVERE FLUSSO DATI CON COMUNICAZIONE SERIALE
================================================================================
AUTORE: 3465
DATA :19/09/2011 - 07:03:07
----------------------------------------
Salve a tutti,
devo effettuare in labview un pannello che raccolga dei pacchetti appartenenti ad uno streaming dati trasmesso da uno strumento collegato al pc mediante COM1.
C'èè un modo in lv per implementare una comunicazione seriale in modo da poter raccogliere questi dati?
grazie
----------------------------------------
AUTORE: 482
DATA :19/09/2011 - 07:21:51
----------------------------------------
direi proprio di si.
Guarda gli esempi di labview sulla comunicazione seriale. Basta che nella casella di search scrivi "serial"
----------------------------------------
AUTORE: 3465
DATA :19/09/2011 - 11:28:31
----------------------------------------
riesco benissimo a ricevere il flusso dati con hyperterminal settando il baud rate a 19200. E' possibile fare una cosa simile in Labview?
grazie
----------------------------------------
AUTORE: 482
DATA :19/09/2011 - 12:32:37
----------------------------------------
coem sopra si. basta guardare gli esempi e li vedi come settare le impostazioni della COM.
----------------------------------------
AUTORE: 3465
DATA :22/09/2011 - 11:30:55
----------------------------------------
Grazie dei suggerimenti. Non riuscivo a farlo funzionare poichè non avevo installato NI-Visa. Ora tutto ok!
Grazie mille
----------------------------------------
================================================================================
Salvare un segnale in un file .mat
================================================================================
AUTORE: 3950
DATA :19/09/2011 - 10:13:08
----------------------------------------
Salve a tutti,
Dato che sono nuovo colgo l'occasione per fare i complimenti per il forum e per presentare il mio quesito:
Ho un block diagram in cui in uscita c'è un segnale sottoforma di array. Vorrei capire come posso salvare i valori assunti dal segnale in un file .mat gestibile attraverso Matlab.
Ho consultato diverse sezioni del forum della NI ma nessuna delle metodologie descritte sembra funzionare. Ho installato il plugin Matlab per Labview ma mi sembra di capire che funziona solo con l'express Open Data Storage e non per il salvataggio.
Suggerimenti ?
Grazie in anticipo
----------------------------------------
AUTORE: 1078
DATA :19/09/2011 - 15:53:53
----------------------------------------
Il formato dei file *.mat è un formato particolare, qui trovi i dettagli di com'è fatto un file *.mat [url:1myd4pce]http://www.mathworks.com/help/pdf_doc/matlab/matfile_format.pdfSimili[/url:1myd4pce]. Non so se qualcuno ha già creato delle VI in labview che permettano la creazione di un file così composto, se nessuno ha queste funzioni dovrai crearle da solo (by your own... come dicono in trentino!
). Nella documentazione che ti ho allegato trovi tutto quello che ti serve per creare un software di vonversione del tuo array.
Buon lavoro!
----------------------------------------
================================================================================
Da array a stringa input per il Write to Text File Function
================================================================================
AUTORE: 3934
DATA :20/09/2011 - 11:39:05
----------------------------------------
Salve a tutti!! Sto sviluppando un programmino su LabVIEW che mi selezioni i picchi e le valli di un' onda sinusoidale di ampiezza variabile nel tempo per poi scriverli su un file di testo. Ho usato Waveform Peak Detection VI e in uscita ho un indicatore per l' ampiezza che sto cercando. Questo è un array e non riesco a scriverlo nel file di testo usando il Write to Text File Function perchè quest' ultimo accetta come input stringhe, non array. Ho provato allora a trasformare il formato dell' array per farlo diventare una stringa tramite il Byte Array To String Function ma dopo aver fatto funzionare il programma per un po' (il tempo necessario per far scrivere sul foglio di testo qualche valore di picco), come apro il file di testo trovo scritto solo uno 0. Non riesco a capire dove sbaglio. Sapete darmi una mano?
----------------------------------------
AUTORE: 482
DATA :20/09/2011 - 12:35:27
----------------------------------------
...ma ciao!
Innanzitutto se vuoi trasformare un array in una stringa devi usare il blocchetto "array to spreadsheet string" che trovi nella palette delle stringhe.
Sappi pero' che ogni volta che vai a scrivere con il Write to Text File Function devi stare attento ad usare la struttura giusta perchè senno' ti sovrascrive ognivolta il dato precedente.
----------------------------------------
AUTORE: 3934
DATA :20/09/2011 - 13:26:34
----------------------------------------
ok proverò come mi consigli tu!!!
----------------------------------------
AUTORE: 3934
DATA :20/09/2011 - 14:43:06
----------------------------------------
Ulteriore problema: mi è stato chiesto di campionare il segnale (sempre lo stesso sinusoidale ad ampiezza variabile) con una certa frequenza (1000campioni al secondo) e di salvare tali campioni (2 valori per ognuno, x e y) su di un file di testo. Come posso procedere? dovrei costruire un array 2D che contenga i valori delle ascisse x e delle ordinate y dei vari campioni?
----------------------------------------
AUTORE: 482
DATA :20/09/2011 - 15:05:36
----------------------------------------
sempre come prima.
Crei l'array 2D con i blocchetti appositi e ogni tanto vai a slavare sul file accoandoi dati.
Il blocco array spreadheet string lavora anche con gli array 2D.
----------------------------------------
AUTORE: 3934
DATA :20/09/2011 - 15:41:54
----------------------------------------
Ho provato ad usare l' array to spreadsheet string ma non riesco a collegare il mio array a questo "blocchetto": per intenderci l' array ha un formato diverso da quello contemplato dall' array to spreadsheet string (se li collego ho il mio array e poi un filo rosso mentre l' array to spreadsheet string vuole un filo giallo, chiedo scusa ma non conosco i nomi dei due formati di dati). Riepilogando ho costruito un array, che ha una dimensione sola, dall' uscita del generatore di sinusoide, il tutto all' interno di un while loop. Ora voglio salvare i dati presenti in tale array in un file di testo ma convertendo il formato ho il problema iniziale cioè nel file di testo non c' è scritto nulla o a limite uno zero.
----------------------------------------
AUTORE: 482
DATA :21/09/2011 - 07:24:24
----------------------------------------
Consiglio:
quando si usa un blocchetto che non si è mai usato, premere CTRL+H compar euna finestrella popup con un help rapido.
Andando col mouse sul blocchetto incriminato, uscirà la spiegazione dei vari ingressi ed eventualmente il link per andare alla descrizione dettagliata del funzionamento del blocchetto.
Facendo cosi' vedrai che l'array to spreadsheet ha un ingresso che permette di stabilire il tipo di array che gli si darà in pasto.
Basta collegare a quell'ingresso un array dello stesso tipo di quello che gli devi passare. Fatto questo poi potrai collegare il tuo array all'altro ingresso senza errori.
----------------------------------------
AUTORE: 3934
DATA :21/09/2011 - 10:59:40
----------------------------------------
penso di aver risolto adesso l' "array to spreadsheet string" mi legge i dati che immetto. Grazie mille per la collaborazione!
----------------------------------------
================================================================================
Make current values default in runtime
================================================================================
AUTORE: 3465
DATA :22/09/2011 - 11:32:54
----------------------------------------
Salve a tutti,
è possibile da pannello in esecuzione poter salvare il valore di un controllo (o indicatore) come default semplicemente premendo un push button? Ho provato a vedere se questa funzionalità fosse presente tra i property node ma non l'ho trovata. C'è solo la voce "make current values default" ma è disponibile solo in edit-mode.
Grazie
----------------------------------------
AUTORE: 301
DATA :22/09/2011 - 13:57:48
----------------------------------------
Purtroppo credo tu ti sia gia risposto.....
Non è possibile cambiare il valore di default di un controllo in runtime.
Per dare un valore ad un controllo all'avvio di un exe (o quando ti serve), la cosa migliore è salvarsi il valore in un file (testo, ini, xml, o quello che vuoi) e caricarlo quando ti serve.
Aris
----------------------------------------
================================================================================
Comunicare con interfaccia USB-TTL
================================================================================
AUTORE: 3051
DATA :22/09/2011 - 15:50:52
----------------------------------------
Salve a tutti!
Sto acquistando un montaggio motorizzato che si può spostare fra due posizioni ricevendo un segnale in logica TTL da 5V. All'inizio avevo letto che si poteva invitare tale segnale da Labview pilotando un pin di una porta parallela, ma tempo che avrò a diposizione solo porte USB. Ho trovato quindi questa interfaccia USB-TTL,
http://it.rs-online.com/web/p/comunicazione/0429278/
ma non ho capito in che modo potrei interfacciarla con Labview. Che tipo di comandi dovrei inviare alla porta Virtual COM Port per generare il segnale 5V e per spegnerlo?
Grazie
----------------------------------------
AUTORE: 482
DATA :22/09/2011 - 15:53:50
----------------------------------------
Se è solo un segnale TTL quello che ti serve, ti consiglio di suare un normale convertitore USB-seriale e poi pilotare i singoli pin della porta seriale per dare i livelli TTL.
----------------------------------------
AUTORE: 3051
DATA :22/09/2011 - 16:09:15
----------------------------------------
Uno dei problemi è che è previsto l'acquisto di un nuovo computer, e mi hanno detto che i nuovi modelli non hanno più neanche le porte seriali...per quello sto mettendo le mani avanti con l'USB!
----------------------------------------
AUTORE: 482
DATA :23/09/2011 - 07:08:44
----------------------------------------
Ma infatti io ti ho detto di usare un convertitore USB seriale che non è nient'altro che un cavetto che dal lato pc ha la porta USB e in uscita ha una porta seriale. Poi ci parli con labview come se fosse una seriale vera e propria potendo pilotare i songoli pin.
[img:3aocmp9s]http://www.google.it/url?source=imglanding&ct=img&q=http://www.nextboat.it/menu/it/accessori/hardware/periferiche/usb-seriale1.jpg&sa=X&ei=TiJ8Tvv7MIb2sgaJ_dlJ&ved=0CAoQ8wc&usg=AFQjCNHnZhYbFPLeec5wuqJR5CDYRJmsxQ[/img:3aocmp9s]
----------------------------------------
AUTORE: 645
DATA :23/09/2011 - 12:07:26
----------------------------------------
Confermo! Io ho usato spesso i convertitori USB-Seriale senza problemi.
Dopo aver collegato il convertitore viene creata una nuova porta COM dedicata; puoi lavorare con questa COM utilizzando i blocchi VISA come se fosse una normale porta seriale e puoi usare i comandi propri del dispositivo connesso.
----------------------------------------
AUTORE: 3051
DATA :23/09/2011 - 16:01:12
----------------------------------------
Scusate, ma avevo capito che il "trucchetto" di pilotare i singoli pin funziona solo con una porta PARALLELA reale (cioè neanche l'adattatore funziona...) Se invece si può usare la seriale per generale il TTL sono a posto, non ho bisogno di niente di raffinato, solo un segnale ON e OFF ogni tot minuti...
----------------------------------------
AUTORE: 482
DATA :26/09/2011 - 07:29:07
----------------------------------------
LA cosa puo' essere fatta sia con seriale che con parallela ma il funzionamento è diverso. Devi utilizzare uan programmazione diversa.
----------------------------------------
AUTORE: 43
DATA :26/09/2011 - 09:48:56
----------------------------------------
[quote="gepponline":3jfprwgo]LA cosa puo' essere fatta sia con seriale che con parallela ma il funzionamento è diverso. Devi utilizzare uan programmazione diversa.[/quote:3jfprwgo]
Non mi risulta che la seriale RS232, RS422 e RS485 siano TTL.
http://en.wikipedia.org/wiki/Serial_port
http://en.wikipedia.org/wiki/RS-232
http://en.wikipedia.org/wiki/RS-422
http://en.wikipedia.org/wiki/RS-485
la parallela invece:
http://en.wikipedia.org/wiki/Parallel_port
tratto dalla pagina seguente
The output of the Parallel Port is normally TTL logic levels.
http://www.beyondlogic.org/spp/parallel.htm
TTL
http://en.wikipedia.org/wiki/Transistor ... stor_logic
bye
----------------------------------------
AUTORE: 43
DATA :26/09/2011 - 09:56:57
----------------------------------------
Provate a cercare con google "USB TTL"
ho scoperto così che ci sono dei convertitori USB -TTL!!!!
http://www.makershed.com/ProductDetails ... de=TTL232R
Anche questo cavo non parla della "seriale del PC" che è RS232 , ma di TTL232R che è un'altra roba!!
bye
----------------------------------------
AUTORE: 482
DATA :26/09/2011 - 11:06:42
----------------------------------------
Per quanto mi rigarda è una questione puramente linguistica di standard e quant'altro.
Per me un segnale TTL è un segnale logico che puo' essere sopra o sotto i 2,4V.
E un convertitore USB-seriale puo' tranquillamente fornirtelo.
Tutto li.
----------------------------------------
AUTORE: 43
DATA :26/09/2011 - 11:52:00
----------------------------------------
[quote="jankafi":eblqn8gj]...Sto acquistando un montaggio motorizzato che si può spostare fra due posizioni ricevendo un segnale in logica TTL da 5V. [/quote:eblqn8gj]
questa è la richiesta
e questo è lo standard TTL
[code:eblqn8gj]Standard TTL circuits operate with a 5-volt power supply. A TTL input signal is defined as "low" when between 0 V and 0.8 V with respect to the ground terminal, and "high" when between 2.2 V and 5 V[19] (precise logic levels vary slightly between sub-types and by temperature).
[/code:eblqn8gj]
L'uscita dell'_USB (5V) può andare bene ma non so se funziona quella seriale....
questo è lo standard RS232
[code:eblqn8gj]Voltage levels
The RS-232 standard defines the voltage levels that correspond to logical one and logical zero levels for the data transmission and the control signal lines. Valid signals are plus or minus 3 to 15 volts; the ±3 V range near zero volts is not a valid RS-232 level. The standard specifies a maximum open-circuit voltage of 25 volts: signal levels of ±5 V, ±10 V, ±12 V, and ±15 V are all commonly seen depending on the power supplies available within a device. RS-232 drivers and receivers must be able to withstand indefinite short circuit to ground or to any voltage level up to ±25 volts. The slew rate, or how fast the signal changes between levels, is also controlled[/code:eblqn8gj]
Dipende dalla protezione di quell'ingresso TTL
bye
----------------------------------------
AUTORE: 482
DATA :26/09/2011 - 12:33:54
----------------------------------------
Ehm..forse ho tralasciato il fatto che l'uscita deve essere fatta non con il singolo pin rispetto a GND.
L'usicta della seriale, usata come TTL dev'essere ottenuta tra due pin di output in differenziale.
In questo modo io, magari son stato fortunato, ho sempr eottenuto segnali validi.
Eventualmente un LM7805 limiterebbe il segnale a 5V.
----------------------------------------
AUTORE: 3051
DATA :28/11/2011 - 15:42:58
----------------------------------------
Salve, ultimamente avevo un po' perso di vista l'argomento perchè l'arrivo dello strumento che aveva fatto nascere la discussione sembrava essere un miraggio.
Oggi finalmente è arrivato, e quindi ho iniziato ad applicarmi per risolvere il problema del suo controllo.
Provo a riassumere quello che ho capito dai vostri post:
1) Se non voglio comprare il cavo convertitore posso sfruttare la porta parallela o seriale, comandando un singolo pin;
2) Per quella seriale in particolare è possibile farlo anche usando un interfaccia USB-seriale, ma per ottenere gli 0V e i 5V devo sfruttare la differenza di tensione rispetto ad un secondo pin (tipo (15V vs 10V) =5V e (10V vs 10V) = 0V)
Ora il problema è che ho passato le ultime 2 ore a cercare di capire come si comanda un singolo pin di una seriale attraverso Labview, sia nel forum che in rete, e non ho ancora cavato un ragno dal buco...
Considerando che sono abbastanza digiuno di programmazione, mi potreste dare un'ulteriore mano magari indirizzandomi verso qualche sito web o discussione che mi è sfuggita in cui ci sia qualche esempio di controllo diretto di un pin della seriale?
Grazie mille
----------------------------------------
AUTORE: 482
DATA :29/11/2011 - 07:38:53
----------------------------------------
che versione di labview usi?
----------------------------------------
AUTORE: 3051
DATA :29/11/2011 - 13:29:48
----------------------------------------
In laboratorio ho Labview 8.2. Non so se è possibile procurarmene uno più recente, ma la vedo dura...
----------------------------------------
AUTORE: 482
DATA :29/11/2011 - 14:49:34
----------------------------------------
Ecco a te un esempio per la lettura o scrittura diun segnale digitale su seriale
----------------------------------------
AUTORE: 3051
DATA :29/11/2011 - 15:50:03
----------------------------------------
Innanzitutto ti ringrazio molto per l'aiuto. Per ora ho potuto dargli solo un'occhiata veloce, e vediamo se ho capito il "succo": praticamente la tua routine quando è su "scrivi" manda sui pin 4 e 7 il segnale asserted (il logico "1", no?
). Se invece NON è su "scrivi" manda "asserted" al pin 4 e, se ho cortocircuitato con il pin 8, lo legge e si illumina l'indicatore di segnale attivo (una specie di cane che si morde la coda no?)
Però pur notando la semplicità del programma ci sono diverse cose che probabilmente non ho capito. Provo a elencarle così magari risulto più comprensibile:
1) non ho capito se impostare come "asserted" il pin 7 sia solo a titolo di esempio o abbia un compito preciso.
2) posso pilotare pualunque pin della porta seriale o solo alcuni precisi?
3) ma è possibile modificare anche il livello di tensione del pin oppure dipende in modo fissato dallo standard con cui la mia porta COM interpreta i segnali 0 e 1?
4) ho fatto la precedente domanda perchè effettivamente non mi è chiaro come sfruttare i due eventuali segnali di voltaggio (boh p.es. +12V e -12V) per ottenere il 0V e +5V che mi servono. Su internet mi pare d'aver capito che più o meno prevedono sempre l'utilizzo di regolatori di tensione, circuiti più o meno complicati con resistenze, insomma componenti esterni alla sola porta seriale. Ma è così anche in questo caso oppure ho già tutto quello di cui ho bisogno?
Scusa se sono così duro ma ne so davvero poco!
Grazie
----------------------------------------
AUTORE: 482
DATA :01/12/2011 - 07:26:03
----------------------------------------
Ti allego anche l'esempio per scrivere/leggere sulla parallela.
1)a titolo di esempio.
2) Hai un ingresso e 3 uscite sicure, le altre combinazioni non te le garantisco
3) la seconda che hai detto., per quello dicevo di lavorare in differenziale con gli altri pin, perchè fino ad adesso mi son sempre trovato con un 5V circa
4) Sbattitene di internet, prendi un tester e guarda i vari pin che tensione ti danno.
5) Tutto quello che ti ho detto è per una soluzione semplice,veloce ed economica, ma ovviamente da CANTINARO come dice il mio principale.
Se vuoi la sicurezza che la seriale non ti salti, che i livelli di tensione siano quelli che vuoi ecc ecc, allora lascia perdere queste soluzioni e prenditi una scheda ad hoc con quante uscite e quanti ingressi vuoi come ad esempio questa:
http://www.sisav.it/acq_dati/datasheet/usb-24a.pdf
o questa che ha meno DIO ma anche ingressi analogici:
http://www.sisav.it/acq_dati/datasheet/udaqlite.pdf
vedi tu
QUesto sito che ti ho segnalato ha le stesse schede anche in seriale o ethernet.
----------------------------------------
AUTORE: 3051
DATA :05/12/2011 - 15:36:56
----------------------------------------
Ok, con il multimetro sono riuscito a misurare i pin 3 e 7 rispetto al 5 che è il ground (non so perchè ma nel 4 non ottengo misure sensate). Purtroppo in stato ASSERTED il voltaggio è +6,9 V, mentre in UNASSERTED è -6.3 V. Pensavo quindi di usare in maniera differenziale i pin 3 e 7 e faccio un divisore di tensione di un fattore 3 (metto 2 resistenzine da 1 kOhm e 2 kOhm), in modo che quando i pin sono allo stesso voltaggio ottengo gli 0 V, quando sono in opposizione ottengo 13,2:3= 4,4 V.
Secondo te può funzionare questa elettronica da livello zero o rischio di spaccare tutto?
----------------------------------------
AUTORE: 482
DATA :12/12/2011 - 07:19:17
----------------------------------------
Non farmi queste domande da elettrotecnico. io sono un cantinaro
A me di bruciare la seriale non interessa niente, quindi l'ho sempre usata e non ho mai avuto problemi:)
Se hai la tensione che ti serve usala, senno' no.
----------------------------------------
AUTORE: 3051
DATA :13/12/2011 - 14:09:39
----------------------------------------
Ok, vi comunico che per ora l'esperimento ha funzionato e riesco a mandare il mio benedetto segnale TTL dalla seriale!
Grazie a tutti per l'aiuto!!!!!!
----------------------------------------
================================================================================
Problema Shared Variable
================================================================================
AUTORE: 3465
DATA :23/09/2011 - 11:30:55
----------------------------------------
Salve a tutti,
su uno stesso pc ho 2 vi.
Il primo vi deve passare al secondo dei dati raccolti all'interno di una matrice bidimensionale di Word a 16 bit. La prima idea che mi è venuta in mente è stata quella di creare una shared variable tra i due vi. Tuttavia quando mi chiede di specificare il tipo di varibile condivisa che voglio creare non mi dà la possibilità di scegliere array bidimensionali ma solo monodimensionali.
Come posso risolvere questo problema?
Grazie
----------------------------------------
AUTORE: 645
DATA :23/09/2011 - 12:05:16
----------------------------------------
Guarda http://forums.ni.com/t5/LabVIEW/2D-doub ... d-p/313682 ;
puoi comunque usare array monodimensionali e poi assemblarli dopo averli trasmessi.
----------------------------------------
AUTORE: 482
DATA :26/09/2011 - 07:26:44
----------------------------------------
M i due VI sono indipendenti?
Perchè non li fai partire da uno stesso main vi cosi' poi uso delle variabili globali per condividere i dati?
Io sono rimasto che le shared variable sono utili quando hai dei dati provenienti da hardware, ma per il resto mi sembrano sempre uan struttura lenta e pesante...
----------------------------------------
AUTORE: 645
DATA :13/10/2011 - 21:12:15
----------------------------------------
Sono anche un modo comodo per trasferire dati tra VI operanti sullo stesso pc.
Io le ho trovate comode come le Variabili Globali, senza grandi differenze.
----------------------------------------
================================================================================
Case structure ed array
================================================================================
AUTORE: 3934
DATA :23/09/2011 - 15:34:53
----------------------------------------
Salve a tutti! Ho un piccolo problema. Riguarda un case structure. Nel caso vero voglio aggiungere un valore ad un array e questo l' ho fatto. Nel caso falso voglio aspettare che si verifichi l' evento che mi fa tornare al caso vero senza aggiungere nulla all' array da me costruito. Come posso fare?
----------------------------------------
AUTORE: 482
DATA :26/09/2011 - 07:30:25
----------------------------------------
while structure e shift register while structure e shift register while structure e shift register while structure e shift register
dentroci metti il tuocase e nel caso false fai passare il filo senza fare niente, nel caso true aggiungi il valore.
----------------------------------------
================================================================================
Operazioni Matematiche su Array
================================================================================
AUTORE: 3751
DATA :27/09/2011 - 10:26:48
----------------------------------------
Salve a tutti.
Per caratterizzare la parte lineare di un dispositivo devo ricavare la funzione di trasferimento e graficare modulo e fase in funzione della frequenza.
Al dispositivo sotto test mando uno sweep in frequenza poi acquisisco il segnale che esce dal dispositivo e i singoli campioni vanno in un array; a questo punto dovrei fare alcune operazioni matematiche su questi campioni acquisiti e messi nell'array: devo calcolarmi i valori quadratici medi!
Come posso quindi a partire dal mio array elevare al quadrato i singoli campioni, farne una sommatoria dividerli e metterli sotto radice?? Come posso, più in generale, fare operazioni su delle grandezze che fanno parte di un array?? Grazie!!
----------------------------------------
AUTORE: 3751
DATA :27/09/2011 - 10:35:33
----------------------------------------
Forse, piuttosto che utilizzare un array, è meglio mettere i dati acquisiti in un ciclo temporizzato e di volta in volta processarli; alla fine in uscita ottengo i valori quadratici medi cercati e posso graficarne modulo e fase al variare della frequenza.
----------------------------------------
AUTORE: 129
DATA :18/10/2011 - 01:02:52
----------------------------------------
Quasi tutte le funzioni matematiche supportano gli array come tipo di dato in ingresso quindi puoi fare operazioni tra array.
es. ho un array 1,2,3 e un altro 3,2,1 puoi eseguire il loro prtodotto (3,4,3)
----------------------------------------
AUTORE: 645
DATA :19/10/2011 - 11:25:27
----------------------------------------
Se invece devi fare operazioni sui singoli valori dell'array (sulle singole posizioni) puoi usare un ciclo FOR al quale passi il numero delle posizioni e ad ogni iterazione hai a disposizione la posizione dell'array corrspondente al numero di iterazione corrente.
Un po' contorto ma per dire che il ciclo FOR scorre tutti i gli elementi dell'array e ti consente di usarne uno alla volta...
----------------------------------------
================================================================================
Problema con controllo remoto del 34980A
================================================================================
AUTORE: 3941
DATA :28/09/2011 - 12:32:27
----------------------------------------
Salve,
Devo fare un pannello di controllo per questo DMM. Ho già fatto tutto però ho incontrato un problema. Il DMM non lo voglio far funzionare che deve effetuare una scansione a comando. Io voglio che il DMM Inizi da subito a effettiare una misurazione in maniera continua. Questo equivale a premenre il pulsante DMM sotto Measure sul pannello frontale del 34980A.
Nel codice LV ho ho per prima cosa inizializzato lo strumento configurando il DMM interno per misurare un tensione in AC. Inoltre chiuso i relè 911 e 921 in modo tale da collegare al bus ABUS1 (MEAS) tutte e 2 i banchi della scheda 34922A e inoltre chiudo il canale 1 di tale scheda. Successivamente uso il comando READ? per avviavre la misurazione e leggere dal buffer. In questo punto vedo che sul pannello del DMM si accende e si spegne il pulsante SCAN e sul monitor mi compare la scritta ONLY-DMM INIT. In LV invece ottengo un errore.
Qualcuso che ha usato il 34980A che puo' darmi una mano?
Grazie
----------------------------------------
AUTORE: 2855
DATA :28/09/2011 - 12:49:20
----------------------------------------
Non c'è bisogno.hai tre strade:
1) imposti il comando [b:2hsxlcph]meas[/b:2hsxlcph]:volt:DC? (@numero Canale......)
2) imposti i canali come stai facendo tu ma alla fine lanci il comando Rout (acquisisce autonomamente e in continua) e quano vuoi ti ti fai scaricare l'ultimo dato con il comando Fetch
3) scarichi dall'instrument driver il driver dello strumento
ciao
----------------------------------------
AUTORE: 3941
DATA :28/09/2011 - 14:54:20
----------------------------------------
grazie per aver risposto
Comunque ho risolto in altra via anche. Nei driver ho visto che ci sta un comando che mi attiva il DMM in maniera che misura in modo indefinito. Nel driver sarebbe la VI Monitor.vi In questo modo quando voglio mando il comando di lettura dell'ultimo dato nel buffer, tramite la VI query last measurement.vi
Nel mio caso faccio una lettura ogni 500 ms.
Comunque adesso provo le tue strade. Cmq con meas:volt:DC? mi fa 1 sola misura o sbaglio? Cioè nel senso che ogni volta che cambio 1 impostazione nel tipo di misura o il canale devo sempre lanciare prima il meas e poi fare il fetch.
Comunque, adesso provo con il route anche.
Grazie
----------------------------------------
AUTORE: 2855
DATA :28/09/2011 - 15:14:49
----------------------------------------
Con il comando meas stai facendo, contemporaneamente, impostazione tipo misura + misura + scarico dato/i dallo strumento. Non c'è fetch. Ogni comando meas ti da una stringa di risposta con il valore di uno o piu canali richiesti (es meas:.....(@101) oppure meas:.....(@101,102,103))
----------------------------------------
AUTORE: 3941
DATA :28/09/2011 - 15:49:15
----------------------------------------
Sisi, hai colto il punto del problema. Ridurre al minimo lo scambio dati tra DMM e PC.
Nel mio caso non ho misure omogene nè costanti sul canale. Cioè, lo stesso canale sarà utilizzato per qualsiasi tipo di misura.
Grazie per i consigli, sei stato molto gentile.
----------------------------------------
================================================================================
Modulo funzione di trasferimento
================================================================================
AUTORE: 3751
DATA :28/09/2011 - 16:50:51
----------------------------------------
Ciao a tutti
devo graficare il modulo di una funzione di trasferimento di un dispositivo al variare della frequenza. La funzione di trasferimento è data dallo scarto quadratico medio dei valori in uscita dal dispositivo che acquisisco di volta in volta alle varie frequenze..
Il segnale in ingresso al dispositivo è una sinusoide che varia in un range 100-23000 Hz con step di 200 Hz generata da una AWG comandato da Labview.
L'idea è quella di fare un ciclo FOR, che ad ogni step manda al dispositivo l input alle varie frequenze, questo viene campionato ed elaborato trovando il valore in modulo della funzione di trasferimento.
Per quello che riguarda il grafico non sono sicuro di aver fatto la cosa giusta.. ad ogni ciclo prendo il valore della frequenza e del modulo e li mando in ingresso ad un grafico XY.. ma non credo sia la scelta giusta per trovare la curva del modulo..
Allego il progetto..
Si accettano consigli e suggerimenti..
----------------------------------------
AUTORE: 1078
DATA :03/10/2011 - 08:17:22
----------------------------------------
[quote="nigeltorque":13rf378v]Per quello che riguarda il grafico non sono sicuro di aver fatto la cosa giusta.. ad ogni ciclo prendo il valore della frequenza e del modulo e li mando in ingresso ad un grafico XY.. ma non credo sia la scelta giusta per trovare la curva del modulo..[/quote:13rf378v]
Prova a guardare come ho modificato il tuo VI. Secondo me sbagli ad usare gli ExpressVI!
----------------------------------------
================================================================================
PEAK CAN USB Driver per LabVIEW
================================================================================
AUTORE: 3953
DATA :05/10/2011 - 14:36:33
----------------------------------------
Ciao a tutti,
questa è la mia prima domanda sul forum, anche se ne ho spesso usufruito con ottimi risultati. Prima di tutto volevo ringraziarvi per l'aiuto che mi avete già fornito, dopodichè passerei alle note dolenti
.
Avrei bisogno di implementare un'interfaccia LabVIEW (v8.5) con rete CAN e il dispositivo che devo utilizzare per interfacciarmi con la CAN network è un PEAK CAN USB (qui: http://www.peak-system.com/Produktdetai ... mmerce_pi1[catUid]=6&tx_commerce_pi1[showUid]=16 ).
La mia domanda è: esistono driver gratuiti per LabVIEW per questo dispositivo?
Qualcuno ha mai dovuto affrontare un problema simile al mio, oppure ha a disposizione qualche esempio che mi consenta di inizializzare correttamente il dispositivo e inviare/ricevere messaggi tramite LabVIEW?
Io ho trovato qualcosa in rete (qui: [url:38y0es6k]http://www.labviewportal.eu/en/device-i-o/82-pcan-usb-driver[/url:38y0es6k]) ma al momento non sono riuscito ancora a far funzionare il tutto: non so se è un problema mio oppure se è un problema di driver non corretti.
Se ho dimenticato di fornire qualche indicazione utile per la risoluzione del problema naturalmente sono a disposizione
.
Grazie in anticipo a tutti,
Ciao!
Francesco
----------------------------------------
AUTORE: 43
DATA :05/10/2011 - 15:21:51
----------------------------------------
[quote="francesco87":2cgd9ive]Ciao a tutti,
questa è la mia prima domanda sul forum, anche se ne ho spesso usufruito con ottimi risultati. Prima di tutto volevo ringraziarvi per l'aiuto che mi avete già fornito, dopodichè passerei alle note dolenti
.
Avrei bisogno di implementare un'interfaccia LabVIEW (v8.5) con rete CAN e il dispositivo che devo utilizzare per interfacciarmi con la CAN network è un PEAK CAN USB (qui: http://www.peak-system.com/Produktdetai ... mmerce_pi1[catUid]=6&tx_commerce_pi1[showUid]=16 ).
La mia domanda è: esistono driver gratuiti per LabVIEW per questo dispositivo?
Qualcuno ha mai dovuto affrontare un problema simile al mio, oppure ha a disposizione qualche esempio che mi consenta di inizializzare correttamente il dispositivo e inviare/ricevere messaggi tramite LabVIEW?
Io ho trovato qualcosa in rete (qui: [url:2cgd9ive]http://www.labviewportal.eu/en/device-i-o/82-pcan-usb-driver[/url:2cgd9ive]) ma al momento non sono riuscito ancora a far funzionare il tutto: non so se è un problema mio oppure se è un problema di driver non corretti.
Se ho dimenticato di fornire qualche indicazione utile per la risoluzione del problema naturalmente sono a disposizione
.
Francesco[/quote:2cgd9ive]
[code:2cgd9ive]http://www.peak-system.com/Produktdetails.49+M578cbdb898b.0.html?&L=1&tx_commerce_pi1[catUid]=6&tx_commerce_pi1[showUid]=16[/code:2cgd9ive]
Clickando a sx sulla parola "SOFTWARE" appaiono tutti i SW pertinenti al prodotto hardware.
I primi 2 sono scaricabili gratuitamente
pcan-basic.zip
[code:2cgd9ive]http://www.peak-system.com/Product-Details.49+M52043c9f3c8.0.html?&L=1&tx_commerce_pi1[catUid]=4&tx_commerce_pi1[showUid]=179[/code:2cgd9ive]
pcan-light.zip
[code:2cgd9ive]http://www.peak-system.com/Product-Details.49+M5e7f73fa2f1.0.html?&L=1&tx_commerce_pi1[catUid]=4&tx_commerce_pi1[showUid]=39[/code:2cgd9ive]
come sta scritto si tratta di CAN Software API for Windows.
Guardati i file .h e scrivi tu stesso la libreria di VI di interfaccia verso la .dll
bye
----------------------------------------
AUTORE: 3954
DATA :05/10/2011 - 16:06:09
----------------------------------------
Ciao a tutti,
Anche io sto utilizzando la PCAN-USB (PEAK) e vorrei utilizzarla con LabView.
Sul sito della Peak ci sono i driver, però sono da comprare.
Visto che non uso l'ultima versione di LV ma la 8.5 e le librerie che sono su internet (quelle gratuite) sono per la 8.0, come posso fare.
Tu Paracarro hai qualche idea.
P.s. Scusa Paracarro ma non sono molto pratica,
Grazie Mille!!!!
----------------------------------------
AUTORE: 3953
DATA :05/10/2011 - 16:22:13
----------------------------------------
Ciao paracarro,
grazie per la risposta, avevo scaricato anche io quei file, ma non ho ben capito come scrivere i VI di interfaccia con la .dll.
Non ho bisogno di funzioni di libreria come la CAN INIT, la CAN WRITE, la CAN READ ecc?
Tu dici di scrivere da zero queste funzioni secondo le specifiche del file .h?
Ciao!
----------------------------------------
AUTORE: 43
DATA :10/10/2011 - 10:43:42
----------------------------------------
[quote="francesco87":zl49d700]Ciao paracarro,
grazie per la risposta, avevo scaricato anche io quei file, ma non ho ben capito come scrivere i VI di interfaccia con la .dll.
Non ho bisogno di funzioni di libreria come la CAN INIT, la CAN WRITE, la CAN READ ecc?
Tu dici di scrivere da zero queste funzioni secondo le specifiche del file .h?
Ciao![/quote:zl49d700]
OK. Per usare una DLL in LabVIEW devi utilizzare la funzione
da menu (LV8.6.1)
Connectivity --> Libraries & Executables --> Call Library Function Node
per configurare la chiamata
click col tasto dx del mouse e poi scegli
Configure...
L'argomento in questione è ampiamente trattato in questo Forum
bastava sforzarsi di cercare "dll"
alcuni link
viewtopic.php?f=1&t=4469
viewtopic.php?f=1&t=3696
viewtopic.php?f=1&t=5220
non riesco a trovare il post che ne parlava in modo approfondito, non ho tempo di cercarlo
Cmq, per Tua informazione, è stata implementata una funzionalità che crea una libreria di chiamate alle funzioni contenute in una dll.
Da menu
Tools --> Inport --> Shared Library (.dll)...
Parte un processo di creazione della libreria simile alla "installazione di un driver Windows"
STEP 1) specificare che si tratta di creazione (default)
STEP 2) inserire il Path alla .dll e del relativo .h
STEP 3) preprocessor definitions
STEP 4) conferma le funzioni da convertire
STEP 5) conferma la creazione del progetto di interfacciamento alla dll
STEP 6) Error Handling: il migliore è [Function Return Error Code/Status]
STEP 7) Conferma i parametri
STEP
Conferma il sommario
genera la libreria
STEP 9) Finish, apre libreria
Ho provato la procedura con la PCAN Basic.
Guardando velocemente, ad eccezione della funzione, la + importante , "Initialize" sembra che tutto sia OK....
bye
----------------------------------------
================================================================================
Conversione File LV 8.6 in LV 8.5
================================================================================
AUTORE: 3954
DATA :06/10/2011 - 16:54:53
----------------------------------------
Ciao a tutti,
ho un problema, ho trovato un file su internet che potrebbe essermi di aiuto, ma è in LV 8.6 ed io ho la versione 8.5.
Come posso fare a convertirlo?!?!
Grazie a tutti!!
Ciao!
----------------------------------------
AUTORE: 301
DATA :07/10/2011 - 06:33:30
----------------------------------------
lo posti e te lo convertiamo.....
----------------------------------------
AUTORE: 3954
DATA :07/10/2011 - 08:26:07
----------------------------------------
Ok, eccolo!
Grazie mille!!
Ciao!
----------------------------------------
AUTORE: 301
DATA :07/10/2011 - 08:36:17
----------------------------------------
Convertito, ma non ho la libreria che hai anche tu....spero fuzioni.
Aris
----------------------------------------
AUTORE: 3954
DATA :07/10/2011 - 14:12:03
----------------------------------------
ok, Grazie mille!!
Ciao!
----------------------------------------
================================================================================
cella di carico e PID
================================================================================
AUTORE: 3934
DATA :10/10/2011 - 16:46:57
----------------------------------------
Salve a tutti ho un grosso problema: non capisco come impostare i parametri Kc, Ti e Td per effettuare delle prove di fatica o statiche su materiali metallici con una macchina idraulica in controllo di forza, cioè conoscendo il valore di carico che voglio impostare (in kg) non riesco a trovare la combinazione dei parametri del PID (ho dei comportamenti registrati dalla cella di carico assurdi: se imposto 1000 kg mi schizza anche a 3000kg o comunque assume un valore completamente diverso). C' è qualche algoritmo o formula che mi consentano di capire quali valori dare ai parametri del PID? I parametri possono cambiare con lo strumento di misura utilizzato ma in linea di massima c' è un modo di procedere "standard" per trovare i valori giusti? Grazie a tutti in anticipo!!!!!!!!!!!
----------------------------------------
AUTORE: 1078
DATA :11/10/2011 - 08:59:20
----------------------------------------
Ciao Matteo,
Prova a guardare se questo ti può dare una mano.
[url:1n8jve5d]http://it.wikipedia.org/wiki/Controllori_PID[/url:1n8jve5d]
Buon lavoro.
----------------------------------------
AUTORE: 645
DATA :13/10/2011 - 21:15:31
----------------------------------------
Se hai a disposizione una simulazione del tuo impianto (o se i tempi di reazione ed evoluzione sono abbastanza rapidi) puoi utilizzare la taratura del controllore.
Se cerchi in internet trovi le tabelle di taratura automatica dei PID con coefficienti diversi a seconda della combinazione usata.
Altrimenti io avevo trovato, sempre in rete, un documento nel quale si diceva di iniziare con coefficiente proporzionale vicino all'unità, coefficiente integrale proporzionale al tempo di variazione del sistema in secondi (quanto tempo impiega a cambiare notevolmente valore) e coefficiente differenziale più elevato.
Iniziando così poi si riuscivano a tarare i parametri.
Cerca in internet qualcosa che mette in relazione i coefficienti con i tempi di reazione ed evoluzione del tuo sistema.
----------------------------------------
AUTORE: 3934
DATA :19/10/2011 - 10:58:11
----------------------------------------
Scusate se rispondo solo ora ma il compact rio con il quale controllo la macchina è stato preso in prestito da un' ingegnere del dipartimento. Comunque ho visto il link di wikipedia e sinceramente non saprei come applicare la regola di Ziegler-Nichols per trovare il periodo critico e il guadagno critico.
Non appena mi riporteranno il compact rio proverò a inserire i valori che mi ha detto MagicBotolo e intanto cerco su internet. Vi aggiornerò a breve grazie mille per la considerazione
----------------------------------------
================================================================================
Aiuto sul tipo del canale di un task
================================================================================
AUTORE: 3941
DATA :10/10/2011 - 19:08:11
----------------------------------------
Salve,
Ho questo problema. Vorrei sapere se è possibile cambiare il tipo del canale di un task senza dover prima cancellarlo e poi ricrearlo.
Mi spiego meglio. Ho una DIO. Imposto una porta della DIO come canale Digital output. Scrivo l'informazione e successivamente vorrei cambiare il canale da Digital Output in Digital Input sempre nello stesso task, cioè senza fare il clear del task e poi crearne uno nuovo con il canale impostato su Digital Input.
E' possibile farlo oppure devo per forza cancellare il task vecchio e crearne uno nuovo?
Grazie
----------------------------------------
AUTORE: 129
DATA :18/10/2011 - 00:23:06
----------------------------------------
Puoi creare il task con tutti i canali quindi lo tratti come un array.
----------------------------------------
================================================================================
Icone dei VI (Template)
================================================================================
AUTORE: 3428
DATA :11/10/2011 - 07:53:21
----------------------------------------
Salve, la mia domanda è futile ma ora che sto cimentandomi sempre più con labview no...
Mi servirebbe avere, o meglio mi piacerebbe per una migliore lettura del codice in futuro, una certa conformità delle icone dei VI.
Per conformità intendo avere un header in alto che mi identifica il campo della funzione che racchiudo all'interno ad esempio (TDMS, COM, TASK, FGV ecc.) con sotto una piccola descrizione, anche perchè lo spazio è quello che è...
Il tutto colorato come voglio, ma ovviamente ogni VI dei TDMS saranno dello stesso colore con Header identico ma con descrizione diversa (create-open-read-wr voltage ecc.)
Come posso fare per avere qualcosa che mi rimanga nell'editor delle icone e bastarà copiarlo per avere una nuova icone identica a quella precedentemente creata con possibilità di cambiare le scritte? (senza aprire l'altra VI, selezionare l'icona con il cursore "seleziona" e incollarla sulla nuova)????
Grazie
----------------------------------------
AUTORE: 1078
DATA :11/10/2011 - 08:54:44
----------------------------------------
Ciao Renaso,
Nelle ultime versioni di Labview. se non ricordo male dalla 8.2 in avanti, è cambiato l'icon editor. Questo strumento ti permette di creare dei template di icone che puoi richiamare facilmente dallo stesso Icon Editor. Oltre a questo ti mette a disposizione delle glyches con delle immagini generalmente usate per descrivere alcune azioni che fa il tuo VI.
Maggiori informazioni sull'icon editor:
[url:izq8t8f0]http://zone.ni.com/reference/en-XX/help/371361H-01/lvdialog/icon_editor/[/url:izq8t8f0]
Se invece utilizzi una versione di Labview che non utilizza il nuovo icon editor, puoi creare un VI templete con configurata l'icona che sarà quella usata dalla tua "Libreria" e che avrà l'header ugauale a tutte le funzioni della libreria stessa e, richiamare il templeta per ottenere un VI con l'icaona base settata.
Se crei un VI template, ti consiglio di aggiungergli già anche i controlli che ti porterai dietro per tutta la libreria, ad esempio se crei una libreria che utilizza la seriale potresti inserire nel tuo template un controllo Serial In e un indicatore Serial out, come l'error in e l'error out.
Buon lavoro!!!
----------------------------------------
AUTORE: 3428
DATA :11/10/2011 - 12:38:26
----------------------------------------
Grazie mille, vedrò come fare.. utilizzo LV2010
----------------------------------------
AUTORE: 1078
DATA :11/10/2011 - 15:03:05
----------------------------------------
[quote="renaso":1lroh0du]Grazie mille, vedrò come fare.. utilizzo LV2010[/quote:1lroh0du]
Con LV2010 dopo aver aperto l'icon editor (doppio click sull'icona del VI) puoi salvare le tue icone Template da: File --> Save As --> Template
Prego!!
----------------------------------------
================================================================================
Esercizio LabView
================================================================================
AUTORE: 3959
DATA :11/10/2011 - 20:29:08
----------------------------------------
Salve a tutti,sono nuovo,spero di aver scelto la sezione giusta....sto svolgendo un progetto con labview che prevede la simulazione del lancio di 3 dadi da consegnare all'esame. Sono praticamente alla fine,devo solo salvare i risultati della simulazione su un file in uscita in formato spreadsheet caratterizzato da una decina di colonne e 10000 righe....come devo fare?
grazie in anticipo
----------------------------------------
AUTORE: 482
DATA :12/10/2011 - 07:34:10
----------------------------------------
write to spreadsheet file
----------------------------------------
AUTORE: 3959
DATA :12/10/2011 - 10:24:17
----------------------------------------
grazie,era semplice....ho ottenuto una matrice di 10000 righe e 10 colonne...come faccio ora ad inserire alla prima riga delle stringhe che dicano cosa rappresenta quella colonna?
----------------------------------------
AUTORE: 482
DATA :12/10/2011 - 12:07:17
----------------------------------------
devi costruire l'array.
Usa la funzione Insert into array, dalla palette degli array.
E all'indirizzo riga 0 gli metti l'array delle intestazioni.
----------------------------------------
AUTORE: 3959
DATA :12/10/2011 - 12:10:05
----------------------------------------
ma la riga 0 non la devo cancellare.....anzi,magari traslare tutto verso il basso
----------------------------------------
AUTORE: 3959
DATA :12/10/2011 - 12:15:03
----------------------------------------
inoltre il block insert to array non accetta input di tipo diverso....ovvero matrice e stringa
----------------------------------------
AUTORE: 482
DATA :12/10/2011 - 15:34:19
----------------------------------------
Insert into array, appena gli colleghi in ingresso una rray bidimensionale, si trasforma accettando cosi' diversi ingressi tra cui due tipi di indirizzi, indirizzo di righe e colonne e a seconda se colleghi uno solo o tutti e due quegli ingressi, nell'altro ingresso "element" accetterà un array monodimensionale o un elemento singolo.
L'insert, shifta in giu' tutto quello che c'e' dopo l'indirizzzo inserito.
----------------------------------------
AUTORE: 3959
DATA :12/10/2011 - 19:30:51
----------------------------------------
E' vero,ma questo vale se gli array in input sono numerici....ma se collego in ingresso un array 2d e una stringa,non va.
Mi sa che nel file di uscita non ci metterò l'intestazione delle colonne.
----------------------------------------
AUTORE: 482
DATA :13/10/2011 - 08:01:47
----------------------------------------
...ovviamente il tutto deve essere congruente.
Basta che il tuo array numerico, lo converti in stringa con le funzioni che trovi nella palette delle stringhe.
Vedi l'allegato.
L'allegato è uno snippet, cioè un immagine che dopo averla scaricata puoi trascinare nel diagramma di labview e ti genera automaticamente il codice
----------------------------------------
AUTORE: 3959
DATA :13/10/2011 - 09:24:59
----------------------------------------
lo spreadsheet accetta solo array 2d numerici.....non mi fa collegare l'uscita dello schema che mi hai mostrato con il blocco spreadsheet.
Sarà forse perchè la versione di labview che sto usando è la student 7.1
----------------------------------------
AUTORE: 482
DATA :13/10/2011 - 10:24:08
----------------------------------------
no no lo spreadsheet è un vi polimorfico e accetta qalsiasi ingresso già dalla 6i credo.
Al limite ha un ingresso in cui devi specificare %s per dirgli che sarà di tipo stringa.
al limite estrapola quel pezzo e posalo.
----------------------------------------
AUTORE: 3959
DATA :13/10/2011 - 13:19:09
----------------------------------------
no,non va....vabbè comunque non importa,l'importante è aver ottenuto il file di uscita con tutti i risultati,grazie mille per l'aiuto
----------------------------------------
AUTORE: 482
DATA :13/10/2011 - 13:58:16
----------------------------------------
se te la vuoi far andare bene cosi' occhei, ma guard ache stai sbagliando qualcosa perchè il write to spreadsheet accetta qualunque tipo di array.
----------------------------------------
AUTORE: 3959
DATA :13/10/2011 - 19:05:40
----------------------------------------
ho riprodotto il tuo stesso schema:
http://imageshack.us/photo/my-images/26 ... inelk.jpg/
----------------------------------------
AUTORE: 482
DATA :18/10/2011 - 07:48:48
----------------------------------------
vai sul blocchetto spreadsheet col mouse e premi ctrl+h ti comparirà un popup con l'elenco degli ingressi.
Fai uno screenshot e mandalo cosi' ti so dire che differenza c'e' in quella versione di labview. Io credo ci sia un ingresso in cui specifichi che l'array che scriverai sarà di tipo strina e non numerico come nel default.
Se cosi' non fosse, basta convertire l'array col blocchetto "array to spreadsheet string" e poi scrivere su file con un normale "write to text file".
----------------------------------------
================================================================================
Salvataggio Waveform
================================================================================
AUTORE: 3960
DATA :12/10/2011 - 11:28:43
----------------------------------------
Ciao,
Ho un piccolo problemino il salvataggio di grafici.
Dovrei salvare un grafico in formato .mat .dat .fig .ipg
E' possibile farlo solo con LabView? Ho bisogno di altri programmi?
Come posso fare?
Grazie!!!
----------------------------------------
AUTORE: 43
DATA :12/10/2011 - 12:00:30
----------------------------------------
[quote="Spugna":3844evph]Ciao,
Ho un piccolo problemino il salvataggio di grafici.
Dovrei salvare un grafico in formato .mat .dat .fig .ipg
E' possibile farlo solo con LabView? Ho bisogno di altri programmi?
Come posso fare?
Grazie!!![/quote:3844evph]
Puoi catturare l'immagine del FrontPanel di un VI e salvarla come .bmp (anche .png)
Puoi salvare i dati del tuo grafico in formato testuale o "interno" e ricaricarli con lo stesso SW LabVIEW per visualizzarli nuovamente.
Se organizzi i dati del tuo grafico in formato testuale, è possibile importare gli stessi come foglio-elettronico... (.csv)
----------------------------------------
================================================================================
Consiglio soluzione migliore
================================================================================
AUTORE: 3428
DATA :13/10/2011 - 17:36:25
----------------------------------------
Salve ragazzi.
Dovrei realizzare un'applicazione unica per 2 sistemi, al momento, ma forse in futuro per anche più sistemi.
Ovviamente i 2 sistemi avranno peculiarità diverse e il sw si dovrà comportare in maniera diversa a seconda del sistema usato, che sarà descritto in una voce del file ini di configurazione (per come l'ho pensato)...
Ora secondo voi quale può essere la soluzione migliore?
Io per il momento l'ho pensata con una marea di case con in ingresso un enumeratore (cioè il tipo di sistema) che mi darà un certo tipo di codice piùttosto che un altro, riservato al caso dell'/degli altro/i sistema/i in modo che una modifica di una parte del sw non mi condizioni alla modifica per il funzionamento dell'altro sistema che, invece ad esempio non necessita della modifica...
Idee?
Grazie
----------------------------------------
AUTORE: 301
DATA :17/10/2011 - 07:16:11
----------------------------------------
A parte che non ho capito cosa intendi per "sistema", la soluzione che hai pensato può essere giusta, si.
E' sempre difficile capire cosa sia meglio fare quando non si hanno tutte le informazioni.
Un'altra strada può essere quella di usare vi server, in modo da tenere completamente separato il codice (ovvio che richiamerai i vari vi all'interno di un case, ma li avrai separati dal centrale).
Aris
----------------------------------------
AUTORE: 3428
DATA :17/10/2011 - 08:10:38
----------------------------------------
Ciao Aris, per sistemi intendo 2 mondi diversi...
Come far girare lo stesso sw su una ferrari e su una 500...
La ferrari avrà molti più dati, soglie più alte e molti più comandi. La 500 molti di meno, ma il tipo di test è molto simile per non dire identico.
Test Ferrari? Allora abilito questo tipo di misura piuttosto che un altro, abilito diversi controlli e cambio le soglie;
Test 500? Disabilito i test della ferrari e abilito quelli della 500, cambio le soglie ecc.
Il vero unico problema che credo di incontrare...?
Typedef! Ovvero, facendo come ho indicato, cioè con i case avrò tipi di dato diversi per la ferrari e per la 500 e questo si tramuta in un errore al momento che faccio uscire dai case nello stesso tunnel 2 typedef diversi.. quindi l'unica soluzione sarebbe quella di usare un unico typedef (estrapolando e popolando solo le parti utili a seconda del test) e gestire i 2 sistemi solo con quello oppure far uscire da ogni case 2 tunnel.
VI server? il probelma è proprio questo... modificando un VI dovrei andare a modificare anche quello che gestisce l'altro caso che è quello che vorrei evitare..
Vabè.. procedo
Grazie
----------------------------------------
AUTORE: 301
DATA :17/10/2011 - 08:24:15
----------------------------------------
Ho capito un po di piu.....ma non troppo.
Ma tornando al tuo problema (un po piu chiaro), potresti prendere in considerazione dei variant per passarti i dato e gestire la trasformazione di questi in maniera diversa a seconda del "sistema" che vai ad utilizzare.
In questo modo avrai solo un tipo di dato che ti porti in giro!
Aris
----------------------------------------
AUTORE: 3428
DATA :17/10/2011 - 08:29:16
----------------------------------------
Giusto! Adesso valuto la soluzione migliore mente sviluppo..
Buona settimana
----------------------------------------
AUTORE: 3428
DATA :17/10/2011 - 17:25:27
----------------------------------------
Deciso, il typedef sarà unico... quindi niente variant...
Altro dubbio:
Occurrences o Noifier????
Fondamentalmente mi servono per comunicare tra cicli.
4 cicli: 1, 2, 3 e 4
- 1 processa diversi dati finchè da l'ok alla partenza del ciclo 2 e si mette in attesa (di una notifica) per processare altri dati;
- 2 processa alcuni dati e da l'ok per l'inizio dei cicli 3 e 4 in parallelo;
- 3 e 4 sono cicli di acquisizione, durano un certo tempo predefinito e poi escono dal ciclo creando la notifica per il ciclo 1;
-.......... 1 processa diversi dati finchè da l'ok alla partenza del ciclo 2 e si mette in attesa (di una notifica) per processare altri dati;
ecc...
finchè non premo stop...
Al momento non mi occorre che il notifier mi trasporti dati, mi basta un booleano anche se protebbero far comodo forse più in là...
Quello che vorrei sapere è in poche parole quando conviene usare le occorrenze a scapito dei notifier e viceversa nel caso in cui non si trasportino dati..
Grazie
----------------------------------------
AUTORE: 301
DATA :17/10/2011 - 17:54:53
----------------------------------------
mah....io farei una macchina a stati,se poi devo passare anche dati uso delle code...ma vedi tu!
aris
----------------------------------------
AUTORE: 129
DATA :17/10/2011 - 23:43:44
----------------------------------------
Non ci hai fornito molti dettagli, quindi se tu devi fare un sw che possa gestire due sistemi diversi senza modificare il sw ma utilizzando un setup esterno, tipo un file ini?
Se così puoi utilizzare un'architettura queued message handler(la tovi nei template) che usa le stringhe, che poi andrai a spacchettare nel formato che desideri.
----------------------------------------
AUTORE: 3428
DATA :18/10/2011 - 07:37:07
----------------------------------------
La macchina a stati l'ho già fatta e pensata, utilissima per quello che dovrei fare ma ho la necessità di poter aggiungere parti di acquisizioni (da altri componenti) nel tempo quindi mi basterebbe aggiungere un ciclo a cascata e gestire il suo avvio dal main loop...
Ora mi guardo i queued message handler...
----------------------------------------
================================================================================
Invertire una Formula
================================================================================
AUTORE: 3751
DATA :15/10/2011 - 17:07:11
----------------------------------------
Salve a tutti
porgo il seguente quesito: ho una funzione del tipo y = a0 + a1x + a2x2 + .. sotto forma di stringa e quello che devo fare è processarla ottenendo la formula nell'espressione y = 1/(a0 + a1x1 + a2x2 + ..) e successivamente implementarla come funzione di trasferimento in labview. Tutti i .vi che ho trovato, specialmente quelli nella sezione Scripts & Formulas restituiscono un risultato, io ho solo bisogno di fare questa inversione...
qualcuno conosce un metodo per farlo??
Grazie in anticipo
----------------------------------------
AUTORE: 129
DATA :18/10/2011 - 00:12:38
----------------------------------------
prova con l'esempio allegato
----------------------------------------
AUTORE: 3960
DATA :18/10/2011 - 13:51:25
----------------------------------------
Ciao,
scusate, io ho più waveform e devo ottenerne una in base alla formula inserita dall'utente (cambia di volta in volta),
potrebbero essermi utili i blocchi dell'esempio, qual'è il loro nome? o devo usare altro!1
Grazie!!!
----------------------------------------
================================================================================
Creazione di Waveform
================================================================================
AUTORE: 3960
DATA :17/10/2011 - 10:19:53
----------------------------------------
Ciao,
Volevo chiedervi se conoscete un modo per trasformare un elemento INT16 (Signed) in una waveform,
Non mi interessa solo rappresentarlo (riesco a farlo) ma proprio a creare una waveform da utilizzare poi in altri VI.
Vi ringrazio per la collaborazione!!
Ciao!!!
----------------------------------------
AUTORE: 129
DATA :17/10/2011 - 23:57:22
----------------------------------------
usa la palette waveform e usi il blocchetto create waveform.
----------------------------------------
================================================================================
Selezione range assi real time
================================================================================
AUTORE: 3960
DATA :17/10/2011 - 16:40:13
----------------------------------------
Ciao a tutti,
Spero ci sia qualcuno in grado di risolvere questo problema o almeno di dirmi se si può fare o no!!!
Ho una waveform e voglio impostare il range degli assi x e y, ma non preimpostarli dalle impostazioni del grafico,
ma voglio assegnare dei valori mentre il programma è running. Come posso fare???
Grazieee!!!
----------------------------------------
AUTORE: 129
DATA :17/10/2011 - 23:54:42
----------------------------------------
Stai parlando di waveform come controllo grafico o come waveform tipo di dati?
Nel primo caso, puoi creare un property node (tasto dx sul controllo waveform quindi create/property node/x scale/range.. poi ripeti per y scale. seleziona di nuovo il tasto dx sopra il property e quindi scegli change all to write, ora aggiungi dei controlli per le voci che vuoi modificare.
----------------------------------------
AUTORE: 3960
DATA :18/10/2011 - 13:53:07
----------------------------------------
Intendevo come grafico, dove hai detto tu ho trovato quello che mi serviva e anche qualcosa in più!!
Grazie!!!
----------------------------------------
================================================================================
Create and configure IO sever
================================================================================
AUTORE: 2435
DATA :19/10/2011 - 15:00:35
----------------------------------------
Ciao a tutti....
sto cerca ndo qualche esempio sul Create and configure IO sever conoscete qualche link utile??
grazie
----------------------------------------
================================================================================
Geometria Fan Beam da sviluppare con Labview
================================================================================
AUTORE: 3955
DATA :19/10/2011 - 17:34:13
----------------------------------------
Ciao a tutti!
Sono nuovo e cercavo aiuto per la mia tesi...devo implementare l'algoritmo di Feldkamp per le proiezioni tridimensionali di immagini tomografiche ed il mio prof. mi ha suggerito per prima cosa di cercare di creare la geometria a fan beam. Qualcuno può darmi una mano o qualche consiglio??
Grazie mille...
----------------------------------------
AUTORE: 482
DATA :20/10/2011 - 07:37:57
----------------------------------------
cosa intendi per creare la geometria?
----------------------------------------
AUTORE: 3955
DATA :20/10/2011 - 08:46:13
----------------------------------------
devo ricreare il fascio a ventaglio tramite labview...per ora ho solo il programma fatto dal mio prof, dove riproduco il fascio parallelo ed ottengo le proiezioni...parto dall'immagine iniziale (un fantoccio qualsiasi), ottengo le proizioni e poi con un altro programma che ho, le retroproietto filtrandole, di modo che poi riesco ad ottenere l'immagine iniziale...(praticamente seguo la teoria della ricostruzione delle immagini tomografiche, prima con trasformata di fourier, poi antitrasformata e filtro di retroproiezione!)
----------------------------------------
AUTORE: 3955
DATA :20/10/2011 - 08:47:03
----------------------------------------
mi sono dimenticato di aggiungere che tutto quello detto prima, devo rifarlo però con un fascio a ventaglio e non parellelo!
----------------------------------------
AUTORE: 482
DATA :20/10/2011 - 14:31:43
----------------------------------------
..non sono convinto che labVIEW sia lo strumento ideale per fare quello che devi fare, cmq, cosi' a naso direi che dovretsi usare dei picture indicator e dellegran funzioni matematiche, ma se cerchi qualcos adi pronto..mi sa che non è l'ambito piu' utilizzato...
----------------------------------------
================================================================================
Labview e Protocollo SNMP
================================================================================
AUTORE: 3465
DATA :20/10/2011 - 11:37:36
----------------------------------------
Salve a tutti,
dovrei comunicare con uno strumento mediante protocollo SNMP. Sapete se la National (o altri) ha rilasciato delle librerie ad hoc per tale protocollo di comunicazione?Se sì sapete segnalarmele?
Grazie in anticipo.
----------------------------------------
================================================================================
Waveform property node
================================================================================
AUTORE: 3960
DATA :20/10/2011 - 14:25:07
----------------------------------------
Ciao a tutti,
Ho un grande problema,
Ho una serie di Waveform e per ognuna di esse voglio cambiare alcuni parametri come gain, offset e altro, per questo per ogni waveform ho creato una property node. Fin qui tutto bene, ora però voglio plottare tutte le waveform su un solo grafico. In questo modo però, perdo tutti i parametri settati sulle singole waveform.
Come posso fare??
Ricapitolando: ho tante waveform rappresentate su un unico grafico, e io volgio andare a cambiare i parametri di un singola waveform alla volta!!
Help!!
Grazie!
----------------------------------------
================================================================================
temporizzare ciclo for(N cicli) da inizio ciclo
================================================================================
AUTORE: 3962
DATA :20/10/2011 - 19:03:41
----------------------------------------
Buonasera a tutti
Mi sono trovato a usare labview per effettuare una prova di laboratorio ma non sono per nulla esperto.
Devo realizzare un programma che definita una prova di tot tempo (100 sec) e definito il tempo di acquizione (10 sec) mi vengano fatte tutte le acquisizioni possibili nel tempo disponibile.
Il mio problema sta nel temporizzare ogni ciclo nel modo corretto, voglio che il tempo di acquizione inizi all'inizio del ciclo e non dopo che il ciclo ha finito l'acquisizione. Perciò nel ciclo for devo usare "time delay" , "wait" o un altro blocco timing?
e come lo imposto?
graziee in anticipo!
Luca
----------------------------------------
AUTORE: 482
DATA :21/10/2011 - 07:42:54
----------------------------------------
ho provato ad aprire il tuo VI malavoro con la versione 2009 e il tuo è piu' recente quindi non me lo apre.
In line adi massima cmq se vuoi che un attesa venga eseguita dopo un altra cosa devi usare le sequence.
----------------------------------------
AUTORE: 301
DATA :21/10/2011 - 09:09:07
----------------------------------------
Se ho capito bene la tua richiesta, come giustamente suggerisce anche Geppo, quello che dovresti fare è usare una sequence (vedi immagine, partendo dal tuo esempio).
Aris
----------------------------------------
AUTORE: 301
DATA :21/10/2011 - 09:10:18
----------------------------------------
Scusa.....non ha allegato il file.....
----------------------------------------
AUTORE: 3962
DATA :23/10/2011 - 11:11:09
----------------------------------------
Mi sa che non mi sono spiegato molto bene, all'inizo avevo fatto anche io cosi però cosi l'attesa era tra un acuisizione e l'altra, se acquisisco pochi elementi la variazione è impercettibile ma se diventano tanti inizia a diventare un problema.
Ho provato a inserire nel ciclo il blocco "wait until next " e sembra funzionare! però ho notato che qualche volta il primo ciclo non dura come dovrebbe..
----------------------------------------
AUTORE: 301
DATA :23/10/2011 - 12:38:21
----------------------------------------
ooook, ora ho capito.
il whait until next, fa attendere (appunto) che sia passato il tempo impostato o suoi multipli.
se il tuo codice dovesse durare piu dell'attesa impostata,passerà un tempo multiplo di quest'ultima.
aris
----------------------------------------
================================================================================
Trigger
================================================================================
AUTORE: 3960
DATA :21/10/2011 - 16:46:36
----------------------------------------
Ciao a tutti,
Ho un problema con il trigger di LV.
Ho trovato il blocco Trigger and Gate che è bellissimo perchè fa tutto quello che mi serve, PERO' non c'è modo di far impostare i parametri dall'utente mentre è in esecuzione, ma bisogna preimpostarli!!! Se esiste un modo per farlo ditemelo!! Please!!
Questo blocco ha il segnale di ingresso: Manual Trigger, quindi do pensato.....sfrutto il blocco Trigger, che genera un detection trigger, il quale è stato collegato al manual trigge!!! Come mostrato nella figura sotto. Purtroppo non vedo niente in uscita!!!
Cosa sbaglio?
Esiste un modo per cambiare i parametri del blocco Trigger and Gate?
Aiutoooooo
Grazie mille.
----------------------------------------
AUTORE: 1078
DATA :25/10/2011 - 15:54:50
----------------------------------------
[quote="Spugna":2tcr57j5]Questo blocco ha il segnale di ingresso: Manual Trigger, quindi do pensato.....sfrutto il blocco Trigger, che genera un detection trigger, il quale è stato collegato al manual trigge!!! Come mostrato nella figura sotto[/quote:2tcr57j5]
Quale figura????
----------------------------------------
AUTORE: 3960
DATA :26/10/2011 - 12:55:32
----------------------------------------
Ho dimenticato di allegarla!! Cmq ho risolto, grazie lo stesso!!
Ciao ciao!!!
----------------------------------------
================================================================================
Problema su chiamata di una sequenza con parametri
================================================================================
AUTORE: 3941
DATA :22/10/2011 - 12:14:22
----------------------------------------
Salve a tutti.
In TestStand vorrei fare che quando lo step di tipo numeric-limits fallisce chiami un'altra sequenza. Il fatto è che tale sequenza ha dei parametri. Nel chiamare tale sequenza vorrei anche impostargli i parametri.
Ho cercato di fare questo andanto in proprietà-->Post Action dello Step e in "On Fail" selezionando la sequenza desiderata. Purtroppo non so come impostargli anche i prarametri.
Cosa devo fare?
Grazie
----------------------------------------
AUTORE: 1078
DATA :25/10/2011 - 15:56:59
----------------------------------------
La cosa più semplice è creare delle LocalVariable, il valore di queste variabili sarà scritto nella post-action e letto dalla sequenza.
Spero sia chiaro....
Buon lavoro!
----------------------------------------
================================================================================
acquisizione dati e particolare salvataggio
================================================================================
AUTORE: 3962
DATA :23/10/2011 - 18:25:44
----------------------------------------
Buonasera a tutti
Ho un altro problema da porvi..
Ho sviluppato il programma fino all'acquisizone dei dati rispettando determitate caratteristiche(tempo della prova e durata di ciascuna acquisizione).
Ipotiziamo che devo fare 10 letture di 3 temperature e salvare i dati alla fine di tutte e dieci le letture.
Premetto che sono alle prime armi con labview a livello teorico dovrei fare una matrice che come colonne abbia le letture (10) e come righe le temperature (3) ecco non riesco a creare questa matrice. Poi una volta creata mi basta darla in ingresso al blocco "write to spreadsheet file.vi giusto?
grazie mille per l'aiuto che mi state dando.
Luca
----------------------------------------
AUTORE: 301
DATA :25/10/2011 - 09:21:29
----------------------------------------
ci alleghi qualcosa per capire cosa hai fatto?
detto cosi, non è facile capire cosa "non riesci a fare".
Vedi esempio, intanto....
Aris
----------------------------------------
AUTORE: 1078
DATA :25/10/2011 - 12:00:46
----------------------------------------
[quote="luca525":18dqopgu]a livello teorico dovrei fare una matrice che come colonne abbia le letture (10) e come righe le temperature (3) ecco non riesco a creare questa matrice. Poi una volta creata mi basta darla in ingresso al blocco "write to spreadsheet file.vi giusto?[/quote:18dqopgu]
Si, è corretto. Per creare una matrice bidimensionale coma quella che vuoi creare tu puoi semplicemente dire alla funzione DAQmx che vuoi leggere dei canali analogici e settare la lettura su "N channels N samples" lo fai cliccando con il tasto destro del mouse sulla funzione read e selezionando dal menu [b:18dqopgu]Analog --> Multiple Channels --> Multiple sambples --> 2D double[/b:18dqopgu]
Spero sia chiaro!
Buon lavoro.
----------------------------------------
AUTORE: 3962
DATA :26/10/2011 - 09:41:30
----------------------------------------
Perfetto ce l'ho fatta, grazie mille!
Ora arriva il punto più difficile, ieri ci ho perso una giornata intera e ne ho cavato poco nulla.
Ho 50 sonde ciascuna definita da un suo indirizzo,l'insieme degli indirizzi che va al blocchetto di acuisizone che si interfaccia conl o strumento è una stringa del tipo "1001, 1002, 2004, ecc.." .
Faccio 10 letture quindi ad ogni ciclo for ho un array di 50 dati.
Ora dovrei indicare 3 sonde (3 indirizzi) disposte in modo sparso e prelevare i relativi 3 dati dall'array.
Io pensavo di creare una matrice di due colonne una indirizzi e una temperature e poi andare a cercare l'indirizzo e restituire la temperatura associata, il problema è che gli indrizzi sono definiti da una stringa come indicato sopra.
Avete qualche consiglio?
----------------------------------------
AUTORE: 301
DATA :26/10/2011 - 15:07:49
----------------------------------------
Consiglio 1
"Search 1D Array"
Trovi l'index dell'indirizzo che ti interessa e lo tiri fuori dall'array.
Consiglio 2
Fai passare il tuo array per due for loop con all'interno un case.
Se indirizzo è uguale ad uno di quelli da te indicati popoli l'array, altrimenti lo lasci com'è.
Aris
----------------------------------------
================================================================================
Indicatori
================================================================================
AUTORE: 3960
DATA :24/10/2011 - 17:29:53
----------------------------------------
Ciao a tutti,
volevo farvi una domanda riguardo gli indicatori.
Ho creato un manopola "Numerc Control" nel Front pannel per assegnare dei valori ad una variabile.
Volevo sapere se è possibile in qualche modo assegnare un valore alla stessa manopola.
Graziee!
Ciao!!!
----------------------------------------
AUTORE: 482
DATA :25/10/2011 - 07:20:20
----------------------------------------
Innanzitutto gli indicatori sono quelli che visualizzano dei dati e basta, quelli nei quali puoi inserire dei valori si chiamano controlli. Impara questa differenz aperchè puo' esserti utile quando cheidi aiuto.
Per assegnare un valore di default, basta che gli metti un valore, selezioni il controllo e poi vai sulmenu Edit->make selected values default. oppure clikkando col destro sull'oggetto fai Data Operation->Make current Value default.
Se invece la tua domanda era, come fai a passare un valor eprogrammaticamente, allora devi andare nel diagramma, clikkare col destro sul controllo e poi fai Create->Local Variable.
Ti verrà creata una variabile locale legata all'oggetto, alla quale puoi collegare tutti i valori che vuoi.
----------------------------------------
AUTORE: 3960
DATA :25/10/2011 - 09:01:07
----------------------------------------
Grazi per la precisazione e grazie per la soluzione!!!
----------------------------------------
================================================================================
Codice block diagram
================================================================================
AUTORE: 3428
DATA :25/10/2011 - 16:33:18
----------------------------------------
Salve, navigando negli example di labview (2010) ho trovato molto interessante una parte di codice ristretta in un subsystem. (gli esempi sono simulazioni di aerei F14 e F16 Tomcat)
Molto probabilmente non sono fatti per quello che mi servirebbero ma mi hanno messo la pulce nell'orecchio anche se non parlano
Fondamentalmente non mi servirebbe creare una funzione subsystem ma mi servirebbe qualcosa che zoomasse il codice, uno zoom out e quindi codice più piccolo.
Ho la necessità di vedere tutto il codice in esecuzione, soprattutto in debug avendo più cicli paralleli, quindi non posso creare più di tante subvi per farlo entrare tutto nel monitor e non risolverebbe il mio "problema" ugualmente visto che se debuggo una subvi non posso vedere l'altra (sempre per il problema della dimensione)
In sisntesi esiste qualcosa per "rimpicciolire" il codice senza modificare la risoluzione?
Grazie
----------------------------------------
================================================================================
Formula
================================================================================
AUTORE: 3960
DATA :26/10/2011 - 11:46:48
----------------------------------------
Ciao,
Espongo il problema: ho più waveform e devo ottenerne solo una in base alla formula inserita dall'utente (cambia di volta in volta),
esiste un blocco per cambiare dinamicamente una formula?
Grazie!!!
----------------------------------------
AUTORE: 645
DATA :13/11/2011 - 21:33:14
----------------------------------------
Prova a guardare
http://zone.ni.com/devzone/cda/epd/p/id/5798
o
http://digital.ni.com/public.nsf/allkb/ ... F400626307
se possono essere un punto di partenza.
----------------------------------------
AUTORE: 3960
DATA :15/11/2011 - 09:05:10
----------------------------------------
Perfetto,
Grazie Mille!
----------------------------------------
================================================================================
ciclo on/off
================================================================================
AUTORE: 3965
DATA :01/11/2011 - 17:02:52
----------------------------------------
Salve,
sto imparando da poco a usare Labview. Avrei bisogno di una mano per fare un programma che chiude un rele (o accende un indicatore booleano per semplificare) durante 5 secondi, e apre il rele nei successivi 10 secondi. Dovrebbe contare i cicli da 0 fino a 36 e poi fermarsi.
Qual è un modo semplice per realizzare questa sequenza?
----------------------------------------
AUTORE: 3965
DATA :01/11/2011 - 17:48:26
----------------------------------------
Ho pensato una vi di questo tipo ma ho 2 problemi:
non posso interrompere il programma prima dei 36 cicli
in parallelo non posso eseguire niente (esempio lettura di una temperatura) perchè si sta eseguendo il ciclo for.
C'è un altro modo di realizzare i cicli e in parallelo di eseguire altre istruzioni?
----------------------------------------
AUTORE: 3428
DATA :02/11/2011 - 07:56:37
----------------------------------------
Ciao, usa solo il while senza il for all'interno...
collega il true dell'uscita della uguaglianza tra i (iterazioni) e 36 allo stop del while.
Dentro al while lasci la sequenza così com'è...
Puoi nel frattempo fare altri 1000 cicli while fuori da questo per parallelizzare il tutto (ogni ciclo avrà il suo tempo a seconda di come imposti i timer all'interno..)
----------------------------------------
================================================================================
Trigger And Gate, Manual trigger
================================================================================
AUTORE: 3960
DATA :03/11/2011 - 08:51:26
----------------------------------------
Ciao a tutti,
Ormai è da un po che sto impazzendo con il Trigger and Gate di Labview.
Quello che faccio è semplicemente questo:
Utilizzo un Trigger and Gate (TeG) a cui applico un segnale, la soglia di start e quella di stop. In uscita prendo il segnale triggerato e il data available (che diventa TRUE quando il segnale è stato triggerato).
Dopo in cascata c'è un altro TeG a cui applico la stessa soglia di stop ma come start utilizzo il manual trigger (sfrutto il data avaiable del primo).
Come mai se applico ad entrambi lo stesso segnale la risposta è diversa, sopratutto per quella di start.
Sapete come funziona internamente il trigger?, cioè presenta un buffer dove salva i dati?
Tutte le vostre conoscenze ed esperienze su questo oggetto sono ben accette!!!!
Grazie!!!
Ciao Ciao!!!
----------------------------------------
================================================================================
Domanda su menu a tendina (menu ring)
================================================================================
AUTORE: 3465
DATA :03/11/2011 - 10:25:20
----------------------------------------
Salve a tutti,
dispongo di un controllo del tipo "menu a tendina" (menu ring) avente 8 voci. Mediante un ciclo for di 8 iterazioni, vorrei che ad ogni ciclo venga selezionata in automatico una delle voci del menu (esempio: alla prima iterazione viene selezionata la prima voce, alla seconda iterazione la seconda voce e così via). C'è un modo semplice per fare ciò?
Grazie
----------------------------------------
AUTORE: 482
DATA :03/11/2011 - 10:33:30
----------------------------------------
+1 al valore del menu ring ad ogni ciclo
----------------------------------------
================================================================================
elaborazione dati temporizzata
================================================================================
AUTORE: 3962
DATA :04/11/2011 - 10:27:52
----------------------------------------
Ciao a tutti
mi serve un altro vostro utilissimo consiglio!
ho un ciclo for loop che mi acquisisce le misure e alla fine mi restituisce un vettore con le misurestesse e uno con i tempi di acquisizione, ora dovrei fare un controllo di regime ossia dopo un tot tempo mi va a controllare che la differenza di valore tra le misure sia entro un regime impostato, se questo è vero interrompe il programma.
Io ho provato a metere un ciclo while in parallelo temporizzato con "tempo di controllo" vi linko immagine :
http://imageshack.us/photo/my-images/824/provaqv.jpg/ .
time_acq è il tempo trascorso dopo ogni acquisizione;
letture T2 rappresenta el acquisizoni fatte fino all'iesima iterazione del for loop;
Quello che dovrebbe fare quel ciclo while sarebbe, prendere il tempo dell'ultima acquisizione a cui sottraggo il tempo di controllo (dovrò mettere un if perchè non vada in negativo) ottengo il tempo dell'acquisizione all'inizio del tempo di controllo e mi restitiusce l'indice del vettore. Con quell'indice vado a ercare nel vettore delle letture tale posizione successivamente faccio il confronto con le misure dell'ultima acquisizione con le misure nella posizione precedentemente trovata. se tale differenza è minore del valore di regime impostato "Delta" mi ferma il programma.
Il problema che ho riscontrato che il ciclo while non viene eseguito fino a che non termina tutto il for loop, ho provato a inserirlo nel foor loop ma non funziona proprio..
avete qualche consiglio? sto impazzendo
graziee
Luca
----------------------------------------
AUTORE: 301
DATA :07/11/2011 - 07:04:23
----------------------------------------
Corretto,
il ciclo while viene eseguito solamente quando gli vengono passati i dati, quindi quando il for termina.
E' tutto un problema di come vengono passati i dati, per far girare i 2 cicli in parallelo, devi utilizzare un'altro metodo (non vedo bene tutto l'esempio, ma credo che le code facciano al caso tuo)
Aris
----------------------------------------
AUTORE: 3962
DATA :07/11/2011 - 16:09:34
----------------------------------------
mh cosa sarebbero le code?
ora ho provato a salvare i dati che ho nel for loop su un file
e nell'altro ciclo li richiamo prendendoli dal file con il giusto indice, sembra andare.. sembra
----------------------------------------
AUTORE: 301
DATA :07/11/2011 - 16:36:51
----------------------------------------
guardati gli esempi!!!!!!!
lv, lavora con una sequenza che viene "riassunta" dal modo grafico di programmare, i "fili" che portano i dati ti fanno vedere come tutto gira e in che ordine!
ora, se hai 2 cicli e li colleghi tra loro come hai fatto tu,è normale che il secondo ciclo parta solo quando il primo è ultimato e passa i dati.
quello che devi fare è appunto passare i dati tra i 2 cicli che si eseguono in parallelo, e quello di usare un file non è il modo piu corretto.
guarda tra gli esempi l'uso delle code!
----------------------------------------
AUTORE: 3962
DATA :08/11/2011 - 10:36:59
----------------------------------------
Ho trovato qualche informazione sull'uso delle code in un pdf associato al forum scritto da Nicola Bavarone e per un analisi più approfondita mi rimanda a un articolo del forum "Multhithreading, parallelismo, meccanismi di temporizzazione e sincronizzazione in labview" di Alessandro Ricco nella sezione articoli del forum che però non trovo, ogni link mi da inesistente... c'è modo di recuperarla?
Tornando al programma ieri l'avevo modificato cosi (ho provato ad allegarlo ma ha una risoluzione troppo grande e se lo rimpiciolisco non si cpaisce niente quando sono a casa provo a caricarlo da imgshack),
praticamente ho inserito il controllo nel for loop e l'ho fatto diventare un case che passa a vero dopo il "tempo di controllo (sec)" (hp. = 60sec); i dati da confrontare li ho messi nel file "misure" e a ogni controllo vengo confrontate 2 righe (max 120 elementi per riga)
cosi funziona però il controllo non viene fatto a ogni 60 sec ma dopo i primi 60 sec fa il primo controllo e poi a ogni iterazione va a prendere i valori dell'itereazione di 60 sec precedente.. come faccio a fargli fare il controllo ogni 60 sec?
per inserire le code dovrei mettere la parte di inserimento (enqueue element) al posto del blocco scrittura file "misure" e quella di estrazione(dequeue element) al posto di letture file "misure"?
il file che ho creato è un array del tipo
aaaaaa
bbbbbb
ccccccc
dove ogni riga è un acquisizione
come faccio a dare questi dati in ignresso al enqueue element e prelevarlo (dequeue element) dicendo prendi l'indice x e y? il dequeue element non funziona secondo logica FIFO?
spero di essermi fatto capire..
----------------------------------------
AUTORE: 301
DATA :08/11/2011 - 10:44:13
----------------------------------------
[quote:2ys4tsqg]per inserire le code dovrei mettere la parte di inserimento (enqueue element) al posto del blocco scrittura file "misure" e quella di estrazione(dequeue element) al posto di letture file "misure"?
il file che ho creato è un array del tipo[/quote:2ys4tsqg]
Esatto!
Guarda un po tra gli esempi del LV, trovi un po di tutto!
Il discorso è, "è inutile scrivere dei dati su di un file e rileggerli subito dopo", con le code puoi "accodare" dei dati in memoria ed utilizzarli a piacimento in un processo parallelo!
Nelle code puoi mettere qualsiasi tipo di dato, parti facendoti anche solo un esempietto (scollegato dal progetto che stai facendo) per capire come funzionano....
Aris
----------------------------------------
AUTORE: 645
DATA :13/11/2011 - 21:23:54
----------------------------------------
Se non vuoi usare le code puoi provare con le variabili "Shared" che consentono di passare dati tra cicli senza interrompere il funzionamento del VI.
Anche in questo caso ti conviene cercare esempi sul sito National Instruments e fare qualche prova.
----------------------------------------
================================================================================
dubbio su Linear Fit
================================================================================
AUTORE: 3751
DATA :05/11/2011 - 13:32:14
----------------------------------------
Sto realizzando un progetto che richiede l utilizzo del "LINEAR FIT .vi"; dato un segnale in ingresso (rapporto tensione/tempo) faccio un fit lineare dei dati e stop.
Il progetto per adesso prevede il segnale in ingresso e funziona, ma sinceramente non ho capito bene come!!
Da quel che ho capito il suddetto .vi prende in ingresso una coppia di valori X,Y e restituisce in uscita il miglior fit possibile delle Y;
Nel primo blocco del .vi che allego questa operazione è subito messa in pratica; ma nel secondo blocco in cui ho simulato un segnale n ingresso non perfettamente lineare da fittare, ho messo come ingresso all X una rampa perfetta e come ingresso alle Y la stessa rampa + del rumore. Quello che mi chiedo è:
che cosa legge nell ingresso X? i valori del segnale da associare alle rispettive Y ?? solo quello??
quindi: se ho un segnale del tipo ""Dinamic Data" ,ad esempio, come posso separare la componente X ed Y da mandare in ingresso al .vi?? cioè questo deve sempre leggere un set (x,y) per capire come è il segnale in ingresso e fare un fit delle Y?? Allora non sarebbe sufficiente mandare negli ingressi X ed Y lo stesso identico segnale??
Spero di essere stato chiaro. Qualcuno può farmi chiarezza??
Grazie
----------------------------------------
AUTORE: 3751
DATA :08/11/2011 - 10:01:46
----------------------------------------
Qualcuno ha dato uno sguardo al progetto allegato al post precedente??
----------------------------------------
AUTORE: 645
DATA :25/11/2011 - 11:03:46
----------------------------------------
Ciao, non ho guardato il VI perchè non ho LabView sottomano ma credo che ci sia un po' di confusione.
Il FIT dei dati equivale alla ricerca della linea interpolatrice che meglio approssima l'andamento di Y.
La coordinata X serve per inserire il punto nel grafico (ci vogliono sempre due coordinate).
Dai un'occhiata a http://zone.ni.com/devzone/cda/tut/p/id/6954
per avere un'introduzione.
----------------------------------------
================================================================================
Graph o Chart
================================================================================
AUTORE: 3960
DATA :08/11/2011 - 15:51:16
----------------------------------------
Ciao a tutti, ho bisogno del vostro aiuto,
1.Acquisisco un segnale in ingresso fatto da una serie di campioni (signed 16 bit) che variano ogni 5 ms
2.Eseguo il trigger (Trigger and Gate) su questo segnale,
Ora da quello che ho capito per (1) è meglio utilizzare il Chart.
Ma quello che io voglio fare è:
1.Mostrare il segnale originale, poi dopo che viene trovato il trigger, pulire lo schermo e mostrare solo il segnale triggerato
Quello che invece fa adesso è mostrarmi il segnale originale, dopo se trova il trigger lo plotta a fianco al segnale mostrato fino ad ora.
2. Per rappresentare il Trigger vorrei utilizzare i cursori che sono presenti solo sui Graph.
Come posso fare???
Grazie in anticipo!!!
----------------------------------------
AUTORE: 43
DATA :08/11/2011 - 19:06:21
----------------------------------------
[quote="Spugna":291k5k3j]Ciao a tutti, ho bisogno del vostro aiuto,
1.Acquisisco un segnale in ingresso fatto da una serie di campioni (signed 16 bit) che variano ogni 5 ms
2.Eseguo il trigger (Trigger and Gate) su questo segnale,
Ora da quello che ho capito per (1) è meglio utilizzare il Chart.
Ma quello che io voglio fare è:
1.Mostrare il segnale originale, poi dopo che viene trovato il trigger, pulire lo schermo e mostrare solo il segnale triggerato
Quello che invece fa adesso è mostrarmi il segnale originale, dopo se trova il trigger lo plotta a fianco al segnale mostrato fino ad ora.
2. Per rappresentare il Trigger vorrei utilizzare i cursori che sono presenti solo sui Graph.
Come posso fare???
Grazie in anticipo!!![/quote:291k5k3j]
1) acquisisci 1 segnale analogico con risoluzione 16 bit alla freq. di 200 Hz (oppure S/sec cioè Samples, campioni al secondo)
2) l'acquisizione è trigger-ata ma non specifichi se è continua oppure di durata prefissata...e ciò è molto importante.
il chart NON E' MEGLIO!!!!
Dipende da cosa vuoi fare.
Il chart è cmq sconsigliabile:
- nel caso di acq di durata predefinita, perchè se si tratta per es. di 1000 punti da graficare (cioè 5 secondi) lo si può fare in un sol colpo al termine dell'acq. (per semplificare)
- in tutti i casi in cui si vuole plottare non tanto una singolo valore acquisito per volta cioè un solo campione, ma bensì decine, centinaia di punti per volta, acquisendo in continuazione, senza interruzioni.
Nel tuoi caso puoi leggere dal buffer circolare di acquisizione ogni 1/2 sec. cioè leggere 100 campioni per volta. Potresti visualizzare in un graph gli ultimi più recenti 5 sec. di acquisizione , se fossi tu fossi in grado di gestire un tuo buffer circolare di 1000 campioni.
Ogni mezzo secondo dovresti:
- aggiungere/sovrascrivere i nuovi 100 campioni in cima al tuo buffer.
nel caso di sovrascrittura , cioè trascorsi i primi 5 sec. di acq., si cancellerebbero i dati più vecchi presenti nel buffer.
- plottare tutto il buffer nel graph
Eppoi con i grafici si possono usare i cursori!!!!
I chart servono solo per debug oppure per visualizzare acquisizioni "lente" fatte leggendo da seriale....
considera che puoi metterti da perte anche valori di pre-trigger... per avere qualche campione del segnale che precede l'evento di trigger stesso
bye
----------------------------------------
AUTORE: 3960
DATA :09/11/2011 - 10:04:10
----------------------------------------
Ciao,
Grazie per l'attenzione.
[quote="paracarro":180y0emy]1) acquisisci 1 segnale analogico con risoluzione 16 bit alla freq. di 200 Hz (oppure S/sec cioè Samples, campioni al secondo)
2) l'acquisizione è trigger-ata ma non specifichi se è continua oppure di durata prefissata...e ciò è molto importante.[/quote:180y0emy]
Io acquisisco un campione ogni 5ms (che leggo da un messaggio CAN).
La durate del Trgger è variabili in base alle soglie selezionate, ma cmq, se ho capito cosa intendi, non è continua.
[quote="paracarro":180y0emy]in tutti i casi in cui si vuole plottare non tanto una singolo valore acquisito per volta cioè un solo campione, ma bensì decine, centinaia di punti per volta, acquisendo in continuazione, senza interruzioni.[/quote:180y0emy]
Io acquisisco 15 segnali contemporaneamente su un unico grafico, ma se unisco questi segnali con un build Array per plottarli su un unico grafico mi da l'errore:
You have connected an array data type to its element data type. This type conflict may be resolved by indexing the array to access individual elements of the array. Check for a tunnel on a loop that has indexing incorrectly enabled.
The type of the source is 1-D array of
Dynamic Data.
The type of the sink is double [64-bit real (~15 digit precision)].
Come posso fare?
Grazie!
Ciao!!!
----------------------------------------
================================================================================
Conversione da U16 a DBL con segno
================================================================================
AUTORE: 482
DATA :10/11/2011 - 07:41:31
----------------------------------------
...ma ciao!
ho scoperto diavere una piccola lacuna nelle conoscenze labVIEW.
Ho in mano un progetto fd amodificare atto da altri in cui si leggono dei valori da modbus (in U16) e vengono passati a degli indicatori (DBL).
Ora il Committente mi ha detto che non legge i numeri negativi.
Gli ho spiegato che se cosi' è , non li ha mai letti neanche prima della modifica perchè i valori vengono convertiti forzatamente (direttamente da U16 all'indicatore)
Ora vi chiedo, se voglio far si che questi valori siano convertiti correttamente come devo fare?
Io ho ipotizzato di usare un TO I16 e poi un TO DBL.
In questo modo vedrei il segno, pero' ho notato che i valori negativi restano ribaltati, cioè dopo il valore massimo positivo ho il valore massimo negativo che poi va a scalare.
E' corretto che sia cosi' o devo manipolare i dati?C'e' già qualche modulino per questo tipo di conversione?
grazie!
Geppo!
----------------------------------------
AUTORE: 43
DATA :10/11/2011 - 09:31:55
----------------------------------------
[quote="gepponline":ra4omsqx]...
Io ho ipotizzato di usare un TO I16 e poi un TO DBL.[/quote:ra4omsqx]
Io metterei solo la conversione U16 -> I16 che è un cast...(per "cast" intendo non una vera "conversione", ma un modo diverso di vedere la stessa area di memoria come C Language)
Se il valore I16 deve essere utilizzato SOLO per l'indicatore di tipo DBL, allora la conversione I16 -> DBL sarà implicita e apparirà il "coertion dot" rosso all'ingresso dell'indicatore, visibile da Diagramma.
[quote="gepponline":ra4omsqx]In questo modo vedrei il segno, pero' ho notato che i valori negativi restano ribaltati, cioè dopo il valore massimo positivo ho il valore massimo negativo che poi va a scalare.
E' corretto che sia cosi' o devo manipolare i dati?C'e' già qualche modulino per questo tipo di conversione?
grazie!
Geppo![/quote:ra4omsqx]
Non farti troppe piste Geppo! dovresti capire meglio cos'è il "Complemento a2"
E' già tutto scritto. ci sono dei miei precedenti post cmq per puntiglio:
[code:ra4omsqx]Hex U8 I8
00 0 0
01 1 1
...
7E 126 126
7F 127 127
80 128 -128
81 129 -127
...
FE 254 -2
FF 255 -1[/code:ra4omsqx]
E' questione di numerazione... i numeri negativi crescono, aumentano di valore verso lo 0 zero, quelli positivi crescono verso infinito
Per cui -1 > -2 come pure 255 > 254...
bye
----------------------------------------
AUTORE: 482
DATA :10/11/2011 - 09:48:05
----------------------------------------
occhei, gazie mille pe rle delucidazioni
Cmq si, effettivamenet non capisco perchè ci fosse l'utilizzo di DBL nel passaggio diretto, probabilmente per fare poi la scalatura del valore.
Detto questo, mi pare di ricordare che il coertion DOT causa una duplicazione del dato anzichè una conversione e per quello inserivo il to DBL dopo il to I16.
----------------------------------------
AUTORE: 43
DATA :10/11/2011 - 13:39:28
----------------------------------------
[quote="gepponline":8qg5snrm]occhei, gazie mille pe rle delucidazioni
Cmq si, effettivamenet non capisco perchè ci fosse l'utilizzo di DBL nel passaggio diretto, probabilmente per fare poi la scalatura del valore.
Detto questo, mi pare di ricordare che il coertion DOT causa una duplicazione del dato anzichè una conversione e per quello inserivo il to DBL dopo il to I16.[/quote:8qg5snrm]
Ma cmq una allocazione è necessaria!
Infatti eseguendo il cast [To Word Integer] seguito da [To double Precision Float], e mostrando i buffer allocati con da menu Tool --> Profile --> Show Buffer Allocation
otterresti un puntino nero (allocazione buffer) in uscita della [To double Precision Float]
bye
----------------------------------------
================================================================================
Graph palette
================================================================================
AUTORE: 3960
DATA :10/11/2011 - 10:15:49
----------------------------------------
Ciao a tutti,
Volevo chiedere una info sull'utilizzo dei Graph palette di Labview.
Non capisco il perchè è possibili utilizzare correttamente questa opzione solo se se metto in stop Labview.
Quando è in esecuzione, anche se non utilizzo il grafico perche è in un case, il G.Palette non funziona correttamente, anche sui valori fino a quel momento plottati!!
Stoppare il Sub VI mi sembra un po eccessivo (se si può fare), avete altre idee?!?!?!
Grazie!!!
Ciao Ciao
----------------------------------------
AUTORE: 482
DATA :10/11/2011 - 12:01:50
----------------------------------------
L'hai impostato come controllo e non come indicatore?
----------------------------------------
AUTORE: 3960
DATA :10/11/2011 - 13:06:38
----------------------------------------
Ciao,
no è impostato come indicatore, infatti leggo una Waveform in ingresso!!!
----------------------------------------
AUTORE: 482
DATA :10/11/2011 - 13:24:27
----------------------------------------
SI ma in quanto indicatore, quando il vi è in run, non ci puoi interagire ma puoi solo leggere.
Per interagire, devi trasformarlo in un controllo e nel block diagram, il filo lo colleghi ad una sua local variable invece che al suo terminale.
----------------------------------------
AUTORE: 3960
DATA :10/11/2011 - 14:08:35
----------------------------------------
Ciao,
ho provato come mi hai detto, img allegata,
Ma mi da gli stessi problemi, non mi fa interagire con il grafico, o meglio non risponde bene!!!
Come posso fare??
----------------------------------------
AUTORE: 3960
DATA :10/11/2011 - 14:18:42
----------------------------------------
ok, ci sono arrivato, non ti avevo detto (non lo ritenevo importante) che il mio grafico è connesso ad un property node, quindi anche sei io gli dico di ingrandire l'asse delle x ma con il prop node setto una asse delle x di valore costante ecco che lui impazzisce!!!
Visto che sei ferrato, l'uscita di quel merge di Waveform lo devo salvare in un file, ma se uso Save to spreadsheet file mi salva per ogni Wavef. un solo valore Y, dt e to. Dall'esempio che ho visto sul help del save, per avere più dati per ogni waveform devo avere una array di valori. come posso creare un'array di wavform??
Grazie per l'aiuto!!!
----------------------------------------
AUTORE: 482
DATA :10/11/2011 - 14:55:09
----------------------------------------
Anzichè usare il merge waveform, una il build array
----------------------------------------
AUTORE: 3960
DATA :10/11/2011 - 16:32:19
----------------------------------------
Non va!
Quello che io ottengo è l'array a sinistra(img), e cioè per ogni Y un solo valore,
Quello che voglio ottenere è l'array di destra, cioè per ogni array una serie di valori, così quando faccio il salva spreadsheet file mi salva tutti i valori e non l'ultimo!!
Grazie,
Ciao!
----------------------------------------
AUTORE: 482
DATA :14/11/2011 - 07:37:30
----------------------------------------
ruota l'array
----------------------------------------
AUTORE: 3960
DATA :15/11/2011 - 10:09:03
----------------------------------------
In che senso ruota?
Con quale blocco?
Grazie!
----------------------------------------
AUTORE: 482
DATA :15/11/2011 - 10:42:44
----------------------------------------
negli array c'e' un blocco che si chiama rotate 2 array
----------------------------------------
================================================================================
Numero di campioni
================================================================================
AUTORE: 3960
DATA :10/11/2011 - 16:45:49
----------------------------------------
Ciao,
Approfitto ancora delle vostre conoscenze,
Come faccio a calcolare il numero di campioni di una waveform?
Ipotizziamo che io non conosco la waveform!
Grazie
Ciao Ciao!!!
----------------------------------------
AUTORE: 645
DATA :13/11/2011 - 21:25:23
----------------------------------------
Guarda http://zone.ni.com/reference/en-XX/help ... m_samples/
----------------------------------------
================================================================================
errore Labview 2010
================================================================================
AUTORE: 3972
DATA :10/11/2011 - 17:32:14
----------------------------------------
ciao a tutti,
mentre stavo eseguendo il mio programmino labview mi è comparso il seguente errore:
Error -200279
Possible reason(s):
Attempted to read samples that are no longer available. The requested sample was previously available, but has since been overwritten.
Increasing the buffer size, reading the data more frequently, or specifying a fixed number of samples to read instead of reading all available samples might correct the problem.
Property: RelativeTo
Corresponding Value: Current Read Position
Property: Offset
Corresponding Value: 0
Task Name: _unnamedTask<AA>
metto in allegato il programmino che stavo eseguendo, di modo che possa esservi di aiuto per risolvere più agevolmente il mio problema
ringrazio anticipatamente chi mi aiuterà
----------------------------------------
AUTORE: 301
DATA :11/11/2011 - 15:17:52
----------------------------------------
A parte che manca l'allegato,
comunque, è un errore relativo al buffer di lettura.
Credo tu abbia selezionato un numero di campioni o una frequenza di campionamento del task troppo alta e la vada a leggere troppo lentamente, quindi devi (come ti suggerisce anche l'help dell'errore) svuotare (leggere)il buffer più rapidamente o acquisire più lentamente dalla scheda.
Aris
----------------------------------------
AUTORE: 645
DATA :13/11/2011 - 21:30:53
----------------------------------------
Come dice Aris potrebbe trattarsi di un tentativo di lettura di dati non presenti nel buffer perchè il buffer è più corto o perchè c'è un problema con il dispositivo che memorizza i dati.
----------------------------------------
AUTORE: 3972
DATA :15/11/2011 - 09:18:18
----------------------------------------
scusatemi ecco l'allegato. poichè sono alle prime armi con labview, mi potete dire con esattezza i passi che devo fare per correggere il programma?
----------------------------------------
AUTORE: 301
DATA :15/11/2011 - 10:48:18
----------------------------------------
Prova a vedere,
ovviamente, cambia i canali!
----------------------------------------
AUTORE: 3972
DATA :15/11/2011 - 11:29:09
----------------------------------------
ho controllato ma non funziona, mi dà sempre il solito errore
inoltre c'è un problema aggiuntivo che non sono in grado di risolvere (non so se c'entra con l'errore -200279): non riesco a modificare i parametri del grafico agendo sui knob che ho messo quando ho già eseguito il run del programma.
esempio: voglio modificare l'ampiezza della sinusoide acquisita, quindi sposto la manopola "amplitude" però questo non si traduce in una variazione dell'ampiezza della sinusoide visibile sul grafico
----------------------------------------
AUTORE: 301
DATA :15/11/2011 - 11:39:58
----------------------------------------
posta.....
----------------------------------------
AUTORE: 301
DATA :15/11/2011 - 14:27:52
----------------------------------------
Dove hai messo i controlli?
Se li hai messi fuori dal while è normale che non li aggiorni quando sei gia in run.....
Per quel che riguarda il problema del buffer, che scheda usi?
Quanti canali acquisisci in parallelo da questa scheda?
Numero di campioni per canale?
Frequenza di campionamento?
Il programma che ti ho postato da me funziona (ovviamente con HW simulato).
Aris
----------------------------------------
AUTORE: 3972
DATA :15/11/2011 - 14:54:42
----------------------------------------
l'hardware simulato lo hai creato con Max & Automation Explorer? perchè anch'io ho usato i "simulated devices" che sono presenti in Max per far andare il mio programma...
però a me dà sempre quell'errore sia al mio che al tuo programma.... se a te funziona tutto bene deve esserci qualcosa che non va sul mio PC....
inoltre ho provato ad inserire tutto il programma all'ìnterno del loop while, ma mi dà il seguente errore
Error -50103 occurred at an unidentified location
Possible reason(s):
NI Platform Services: The specified resource is reserved. The operation could not be completed as specified.
prova ad inserire tutto il programma dentro al while loop per vedere se ti dà il mio stesso errore....
----------------------------------------
AUTORE: 301
DATA :15/11/2011 - 15:49:22
----------------------------------------
NON PUOI INSERIRE QUELLO CHE HO FATTO IN UN WHILE!!!!!!!!
Il vi che ti ho postato (e tutti gli altri) funzionanocon una logica!
Inizializzo tutto ciò che devo fare.
lo faccio partire.
leggo/scrivo.
chiudo e rilascio tutte le risorse.
Ovviamente, avendo HW simulato, non potrai mai vedere la forma d'onda che generi sul canale che acquisisci!
Per questo devi avere vero HW che ti generi e ti acquisisca su un'altro ingresso!
Se vuoi vedere la tua forma d'onda, devi collegare un indicatore prima di darla fuori!
Aris
----------------------------------------
AUTORE: 3972
DATA :15/11/2011 - 21:06:07
----------------------------------------
grazie aris per la tua disponibilità.
ammetto di non essere tanto afferrato in materia, per cui ti chiedo di rispiegare meglio anche attraverso degli esempi, la frase che hai scritto
"Ovviamente, avendo HW simulato, non potrai mai vedere la forma d'onda che generi sul canale che acquisisci!
Per questo devi avere vero HW che ti generi e ti acquisisca su un'altro ingresso!"
domani mattina provo con una scheda di acquisizione il tuo programma.... poi ti faccio sapere
ciao
----------------------------------------
AUTORE: 301
DATA :15/11/2011 - 21:17:33
----------------------------------------
ok,ok....
tu vorresti (tramite hw simulato) generare la forma d'onda con loutput e vederla acquisita?
se è cosi,non puoi!prprio perchè i segnali sono simulati e l'ingresso non è attaccato a nulla!
fai qualche prova con la scheda di acquisizione ed il vi che ti ho postato.
----------------------------------------
AUTORE: 482
DATA :16/11/2011 - 07:14:14
----------------------------------------
In pratica l'hardware simulato, nonsimula deisegnali in ingresso. Simula la presenza dell'hardware in modoche tu possa sviluppare la tua applicazione senza avere errori ma, ad esempio, nel caso di ingressi analogici, gli ingressi sarebbero sempre a zero.
----------------------------------------
AUTORE: 301
DATA :16/11/2011 - 09:20:04
----------------------------------------
Esatto!
In realtà, qualcosa sull'ingresso lo vedi (un qualche segnale viene simulato), ma di certro non è quello che stai simulando con l'output!
Aris
----------------------------------------
AUTORE: 3972
DATA :16/11/2011 - 11:23:08
----------------------------------------
ho provato con la scheda di acquisizione NI-6008 e il programma di aris mi dà a volte il solito errore(error -200279) e a volte il seguente errore:
Error -200278 occurred at programma labview-1.vi
Possible reason(s):
Attempted to read a sample beyond the final sample acquired. The acquisition has stopped, therefore the sample specified by the combination of position and offset will never be available.
Specify a position and offset which selects a sample up to, but not beyond, the final sample acquired. The final sample acquired can be determined by querying the total samples acquired after an acquisition has stopped.
Attempted to Read Sample: 1000
Property: RelativeTo
Corresponding Value: Current Read Position
Property: Offset
Corresponding Value: 0
non so più che pesci pigliare.....
Task Name: _unnamedTask<A2>
----------------------------------------
AUTORE: 482
DATA :16/11/2011 - 12:15:03
----------------------------------------
devi "semplicemente" ragionare sulla velocità di acquisizione, e dimensionare il buffer correttamente in base a quante volte vai a svuotarlo.
esempio:
la scheda va a 1000 sample/sec
tu leggi 100 campioni a 15 Hz
In questo caso avrai un errore perchè in totale, in un secondo andresti a leggere 1500 campioni quando la tua scheda riesce a fornirtene al massimo 1000.
Quindi la struttura dovrebbe essere:
1) Inizializzi la scheda con uan certa velocità di lettura
2) cominci il ciclo while TEMPORIZZATO in maniera opportuna
3) leggi tot campioni in modo da non sforare i campioni definiti nell'inizializzazione
4) se premi stop fermi il ciclo
5) chiudi le comunicazioni con la scheda.
----------------------------------------
AUTORE: 301
DATA :16/11/2011 - 12:31:41
----------------------------------------
Ho provato a far andare il programma che ti ho postato simulando una usb 6215 (la tua è molto piu lenta) e funziona!
Ovviamente SENZA MODIFICHE A QUELLO CHE TI HO POSTATO!
Nell'analoug read, metti come number of samples per channel "-1", in questo modo vai a svuotare ogni volta il buffer (anche se dovrebbe essere di default).
Diminuisci i sample rate!
Prova a mettere 1000 o anche meno, la scheda che hai citato dovrebbe essere una 48 Ks/s, questo significa che se vai ad acquisire troppo velocemente, lei non ci sta dietro ed incasina il buffer!
Prova a settare i timeout delle due funzioni di lettura e scrittura (0.01).
----------------------------------------
AUTORE: 3972
DATA :16/11/2011 - 17:25:58
----------------------------------------
niente mi si è guastato l'alimentatore del pc.... purtroppo potrò provare i vostri aggiustamenti solo nei prossimi giorni....
----------------------------------------
AUTORE: 301
DATA :16/11/2011 - 17:34:07
----------------------------------------
Madooooooooooo, allora non è un problema di impostazioni ma di sfiga!!!!!!
Siamo qui, quando ci sei scrivi pure!
----------------------------------------
AUTORE: 3972
DATA :22/11/2011 - 17:28:51
----------------------------------------
EVVVAIIIIIIII!!!! FINALMENTE FUNZIONA!!!!!
ho messo 2 loop while, uno che contiene la serie di blocchetti per l'acquisizione e l'altro contenente i blocchetti della generazione del segnale e ora sembra funzionare perfettamente senza più errori!!!!
ho ancora un problema: la sinusoide acquisita è leggermente disturbata dal rumore.... cosa devo fare per visualizzare una sinusoide "perfetta"?
infine ho bisogno di una sinusoide molto lenta(frequenza 0.5 HZ), ma ho notato che l'asse delle ascisse della Waveform chart rappresenta il campionamento, cioè ho che, a prescindere dalla frequenza che fornisco al segnale, la velocità con cui visualizzo la sinusoide sulla waveform chart, dipende proporzionalmente dalla frequenza di campionamento. io invece voglio un asse del tempo vero e proprio, in cui la pulsazione della sinusoide dipende solamente dalla frequenza dell'oscillazione che fornisco e non dalla frequenza di campionamento(samples/s). come devo fare?
----------------------------------------
AUTORE: 10820
DATA :25/06/2013 - 11:43:53
----------------------------------------
Ciao a tutti, sono nuovo del forum.
Ho un problema analogo; uso un DAQ NI-USB-6211 per leggere dei dati analogici provenienti da un transceiver, il tutto è assemblato sulla scheda della RF-Beam ST200.
Anche a me esce lo stesso errore 200279.
fs = 125k Hz
Numero campioni acquisiti per ogni while 8192.
Riesco a salvare i campioni su file TDMS, concatenando l'array di uscita.
Faccio operazioni di filtraggio senza problemi.
Appena voglio fare una media mobile o media RMS mobile ho avuto problemi.
Allego il vi...
Potreste consigliarmi un metodo risolutivo....per la media mobile potrei farla con un filtro FIR e non dovrei avere problemi; ho grossi dubbi sulla media mobile RMS.
Ringrazio anticipatamente per la vostra cortesia.
Vincenzo
Invio versione zippata poichè il file supera la dimensione massima
----------------------------------------
AUTORE: 43
DATA :25/06/2013 - 13:14:03
----------------------------------------
[quote="Vincenzo2013":32bmg37c]Ciao a tutti, sono nuovo del forum.
Ho un problema analogo; uso un DAQ NI-USB-6211 per leggere dei dati analogici provenienti da un transceiver, il tutto è assemblato sulla scheda della RF-Beam ST200.
Anche a me esce lo stesso errore 200279.
fs = 125k Hz
Numero campioni acquisiti per ogni while 8192.
Riesco a salvare i campioni su file TDMS, concatenando l'array di uscita.
Faccio operazioni di filtraggio senza problemi.
Appena voglio fare una media mobile o media RMS mobile ho avuto problemi.
Allego il vi...
Potreste consigliarmi un metodo risolutivo....per la media mobile potrei farla con un filtro FIR e non dovrei avere problemi; ho grossi dubbi sulla media mobile RMS.
Ringrazio anticipatamente per la vostra cortesia.
Vincenzo
Invio versione zippata poichè il file supera la dimensione massima[/quote:32bmg37c]
Non posso vedere il tuo esempio ma fra quello che hai scritto, mi appare evidente che c'è qualcosa che non va: se la freq. di acq è di 125000 S/s (campioni al secondo)e ne prelevi dal buffer 8192 S (campioni), il tuo loop deve "girare" 15,26 volte al sec.!!!(125000/8192)..
Non so se la tua è una acquisizione continua oppure no.
Nel caso lo fosse (cioè una acquisizione continua) devi tenere conto di qualche semplice particolare:immagina di avere il tuo sistema di acquisizione simile alla gestione di un buffer che puoi immaginare visivamente come una vasca.
Avviata l'acquisizione, vengono immessi nella vasca dei campioni con la freq. stabilita. Questa è la portata del tuo rubinetto d'ingresso.
Ora, prima che la vasca sia piena, tu la devi svuotare con la cadenza che decidi tu, ma con una freq almeno uguale a quella d'ingresso altrimenti la vasca è destinata a riempirsi ed esondare (overrun).
Più la quantità di dati che prelevi dal buffer è piccola , e più farai fatica ad evitare che la vasca si riempia perchè avrai a disposizione pochissimo tempo per elaborare i dati prelevati dal buffer
E' un po' come svuotare una vasca con un cucchiaio, mentre questa si riempie con un rubinetto aperto al massimo.
io, per esempio adotto di solito questa sempliche regola: se acqusisco alla frq di X Samples/sec, predisporrò un buffer grande 2X Samples (anche 1,5X va bene)ad acqusirò X/2 Samples alla volta, in modo da avere circa 1/2 sec a disposizione per l'elaborazione.
bye
----------------------------------------
================================================================================
Help Urgente open front panel
================================================================================
AUTORE: 3960
DATA :12/11/2011 - 12:50:52
----------------------------------------
Ciao Ragazzi ho bisogno di aiuto!!!
Ho due VI principali e voglio che siano eseguiti contemporaneamente, magari richiamandoli da un VI generale, ma voglio decidere quale dei due front panel vedere (Tramite pulsante).
Come posso fare?
Aiuto!
Grazie, Ciao!!!
----------------------------------------
AUTORE: 3960
DATA :12/11/2011 - 14:41:09
----------------------------------------
Ciao la cosa che può essermi utile è "Bring front panel to the front"
Sull'help c'è scritto: object.FPWinIsFrontMost, come faccio ad utilizzarlo!?!?!?!
Grazie!!!
----------------------------------------
AUTORE: 645
DATA :13/11/2011 - 21:27:37
----------------------------------------
Dal VI principale puoi eseguire i due VI secondari senza aprire il Front Panel e, quando ti serve, usare il comando "Open Front Panel" con il valore True e aprire il pannello che ti serve. Riportando il valore a False lo chiudi.
Non ricordo esattamente tutte le voci e non ho LabView sottomano ma l'idea è questa...
http://forums.ni.com/t5/LabVIEW/Open-fr ... -p/1271866
----------------------------------------
AUTORE: 3960
DATA :15/11/2011 - 09:35:25
----------------------------------------
Graie mille!!!
Funziona!
----------------------------------------
================================================================================
analizzatore stati logici
================================================================================
AUTORE: 3975
DATA :12/11/2011 - 16:54:35
----------------------------------------
Salve,
questo è il mio primo post.
Mi sono imbattuto in questo forum in quanto ho necessità di programmare in labview.
Il mio progetto consiste nel "costruire" un analizzatore di stati logici, ma non so dove mettere mano...
Come potrei impostare il progetto?
Grazie mille in anticipo =)
----------------------------------------
AUTORE: 3975
DATA :13/11/2011 - 10:43:41
----------------------------------------
accetto anche link di progetti già fatti, ovviamente! xD
----------------------------------------
AUTORE: 645
DATA :13/11/2011 - 21:29:42
----------------------------------------
Prova a spiegarti meglio! Un analizzatore di stati logici prevede l'esistenza di ingressi digitali o analisi di valori di soglia per determinare una condizione logica "vera o falsa". Tu cosa hai intenzione di fare?
Simuli le condizioni con una serie di pulsanti che l'utente può premere (on/off e relativo stato logico da passare al VI) o hai a disposizione ingressi reali?
Ps: mi raccomando... il forum non serve per ricevere programmi già pronti ma per condividere idee!
----------------------------------------
AUTORE: 3975
DATA :14/11/2011 - 09:42:24
----------------------------------------
Devo simulare il funzionamento dell'analizzatore. Non ho degli ingressi reali. È un progetto per un esame universitario.
Penso sia molto utile spiegare come fare a realizzarlo fornendo anche un file vi all'Italia e non solo dato che in rete non ho trovato niente.
Devo generare un'onda. Se questa supera un valore di soglia restituisco un valore alto altrimenti un valore basso.
----------------------------------------
AUTORE: 645
DATA :14/11/2011 - 10:10:58
----------------------------------------
La versione più semplice si potrebbe fare usando i blocchi di analisi della soglia di un segnale già presenti in LabView.
http://zone.ni.com/reference/en-XX/help ... t_testing/
----------------------------------------
AUTORE: 3975
DATA :14/11/2011 - 12:52:24
----------------------------------------
Scusa ma io quei blocchi non li trovo nella versione base di labview.
Ti illustro il mio procedimento:
Ho generato una forma d'onda. Poi il valore di uscita l ho messo in ingresso ad un comparatore maggiore o uguale di zero. C'è poi un selettore che dovrebbe restituire valore vero 1 valore falso 0
Esso restituisce sempre il valore falso a meno che l ampiezza della sinusoide sia zero. Non riesco a capire cosa sbaglio
----------------------------------------
AUTORE: 645
DATA :18/11/2011 - 17:20:04
----------------------------------------
Puoi postare un'immagine del Block Diagram? Così vediamo...
----------------------------------------
AUTORE: 3975
DATA :06/12/2011 - 10:31:19
----------------------------------------
Ho risolto. Ho usato tanti generatori random con comparatori. Le strutture case mi restituiscono 0 oppure 1. Inoltre una seconda struttura case verifica l'evento di trigger (una serie di valore 0,1 impostati da me) per iniziare la memorizzazione. =)
----------------------------------------
================================================================================
problema driver hp33210a
================================================================================
AUTORE: 3751
DATA :13/11/2011 - 20:11:06
----------------------------------------
Salve a tutti
di recente sono passato da Labview 2010 a Labview 2011 e mentre con il primo non avevo nessuno problema ad installare i driver del AWG ed a controllarlo adesso con la verione 2011 mi viene segnalato un problema. Premetto che ho aggiornato i driver per labview 2011 ma quando metto il primo vi (initialize) labview inizia a cercare initialize.dll senza trovarla, così non riesco a far partire il tutto. Qualcuno con lo stesso problema o con un suggerimento??
Grazie
Allego schermata con errore
----------------------------------------
AUTORE: 645
DATA :13/11/2011 - 21:36:02
----------------------------------------
Potrebbe essere il tuo caso?
http://forums.ni.com/t5/LabVIEW/applica ... -p/1708406
Mi sa che ci sono problemi di compatibilità tra versioni diverse:
http://digital.ni.com/public.nsf/allkb/ ... 2A005CA50C
----------------------------------------
AUTORE: 3751
DATA :16/11/2011 - 12:01:07
----------------------------------------
Ho risolto in questo modo:
molto semplicemente ho disinstallato tutto e installato tutto nell'ordine giusto: facendo attenzione cioè ad installare il NI ICP 440 prima dei driver.
Adesso funziona tutto correttamente.
----------------------------------------
================================================================================
Info e consigli su ActiveX in Labview.
================================================================================
AUTORE: 3941
DATA :14/11/2011 - 12:37:00
----------------------------------------
Salve a tutti,
vorrei chiedervi il vostro aiuto. Vorrei iniziare ad apprendere l'uso degli activeX in Labview. Vorrei chiedervi se potreste indirizzarmi su qualche documento degli activeX disponibili che potrei usare e magari se qualche guida sugli ActiveX piu' utili e maggiormente utilizzati.
Il problema è che sono novizio sugli ActiveX e immagino che ve ne siano a centinaia, quindi non saprei dove iniziare a mettere mano.
Inoltre ho la necessità di un controllo ad albero in cui si selezionano le componenti da installare , come quello presente in ogni programma di installazione.
Grazie.
----------------------------------------
AUTORE: 11044
DATA :29/06/2015 - 23:23:16
----------------------------------------
Ciao Joshwa,
Hai trovato quello che cercavi da qualche parte?
Io vado cercando le tue stesse informazioni, voglio imparare a gestire gli activex ma non trovo informazioni da studiare, solo a livello generale cosa sono si, ma senza estrapolare alcuna informazione o esercitazione per gestirli.
Se ti fosse capitato di imbatterti in qualche programmatore, gli esperti qui presenti o altro, te ne sarei grato se potessi aiutarmi, almeno comincio a non brancolare nel buio come sto facendo nel tempo libero da circa un'anno.
Grazie
----------------------------------------
AUTORE: 482
DATA :30/06/2015 - 07:10:57
----------------------------------------
Secondo me state cercando qualcosa che non esiste.
Mi spiego.
Gli activeX sono oggetti con proprietà e metodi che I SINGOLI SOFTWARE DELLE VARIE SOFTWARE HOUSE mettono a disposizione di software esterni.
Non c'e' un activeX generico che va bene per tutti. Ogni software ha le sue classi, metodi, proprietà ecc.
Quindi se cercate la "mappa" degli activeX con indicati i vari invoke node e dove essi portano, o li trovate dal costruttore di cio' che state programmando o dalla casa madre del software con cui vi dovete interfacciare, oppure dovete naufragare per un po' fino a trovare quello che cercate.
Mi ricordo ad un corso presso National con Chiari che ci disse, se voleste avere una mappa delle proprietà e metodi activeX per dialogare con excel, dovreste stampare fogli pe rcoprire tutte le pareti di questa stanza piu' quella a fianco.
Ecco un esempio di una minima parte di ActiveX Hierarchy per excel:
https://i-msdn.sec.s-msft.com/dynimg/IC533985.png
----------------------------------------
AUTORE: 11044
DATA :30/06/2015 - 20:36:46
----------------------------------------
Si, certo capisco benissimo e hai ragione che ce ne siano una miriade in giro è ovvio, ma la mia domanda a questo punto è
: "individuato l'acrtivex che mi serve vorrei sapere come leggerlo e interpretarlo, il gomitolo va srotolato per fare un filo, poi da esso posso fare dei nodi o punti e creare un quadro a punto crocie o un maglione appunto, tutto sta a sapere cosa a fare".
Quindi se apro una icona o l'altra delle palette dedicate ai controlli messi a disposizione dovrei sapere a grandi linee cosa serve, come collegarla ad un'altra icona e cosi via, una sorta di schema a blocchi il quale far riferimento per ingressi e/o uscite.
Io devo ottenere la possibilita di estrapolare da essi tre ingressi e due uscite per comandare Arduino, ma il discorso è che non so come organizzare le cose.....nel senso che ad un controllo dovró pur capire come è organizzato pet sfruttarlo.
C'è un metodo per capire a sbroglisre la matassa...?
----------------------------------------
AUTORE: 482
DATA :01/07/2015 - 07:06:26
----------------------------------------
ehm..quindi tu vuoi sapere come funziona labview, non come usare gli activex o ho capito male?
Non sai come funziona il dataflow(la struttura dei dati collegata con dei fili)?
----------------------------------------
AUTORE: 11044
DATA :01/07/2015 - 13:26:50
----------------------------------------
No, mi serve capire una volta che ho davanti le palette che a me servono, sapere quali prendere di esse e cosa gli servono per interagire con altre in modo da pilotare Arduino come risultato.
Ho le palette Activex, devo interpretare due ingressi:
Uno è un semprice contatto NO, l'altro un encoder ottico che mi da una posizione come retroazione;
E due uscite:
Ho bisogno di due uscite NO, in modo tale che possa pilotare delle bobine di relè per pilotare un motore in un senso o nell'altro.
La posizione me la da il programma, sarò io che meccanicamente gli daro il rapporto di riduzione idoneo.
Quindi a me serve capire quando ad un controllo posso usufruire gli ingressi o uscite del caso.
Non so se basta un solo comando(icona) o piu cascate di blocchi.
La logica annessa di formule o confronti saro io a immetterla nella linea di collegamento per avere o meno il passaggio di dati.
Un ciclo ha bisogno di uno start, compiere l'operazione ed eventualmente lo stop.
Activex, ha bisogno di un'unica icona che allargandola trovero tutto al proprio interno?
Visto la miriade di activex in commercio come faccio a interpretarne uno a caso? Come è strutturato? Come lo tratto? É racchiuso in altri programmi? Devo crearne uno a doc? Facendo tutto questo rieaco a creare un fil di setup...in driver che posso far leggere e installare ad altro pc senza che sia caricato il prpgramma Labview?
Grazie
----------------------------------------
AUTORE: 482
DATA :02/07/2015 - 07:26:57
----------------------------------------
Pilotare arduino con activex??
Quindi tu hai un software che pilota arduino e vuoi pilotare questo software? perchè questo è quello che fa l'activex, senno' stai sbagliando strada.
La struttura dell'activex è sempre la stessa.
Apri la palette activex (connectivity->activex)
Apri il riferimento al tipo di oggetto con la funzione automation open.
Poi prendi un propery node o un invoke node.
Una volta collegato all'uscita della open, il rispettivo property o invoke sarà popolato solo con le proprietà e metodi esistenti. Scegli quello che vuoi e in cascata andrai a trovare la funzione che ti interessa.
Un property ad esempio puo' contenere un sottoriferimento o un array di riferimenti e quindi da li dovrai inserire un nuovo property node per quella nuova classe.
Se tieni aperta la finestrella dell'help e passi sopra col mouse ad ogni singola propietà o metodo, ti viene descritto cosa fa.
Ti ripeto un eventuale mappa di metodi e prorietà di un determinato software, se esiste , la devi chiedere alla software house.
Allego uno snippet di esempio
P.S. se devi interagire con Arduino c'e' un tool apposta per labview grazie al quale, inserendo un determinato sketch in arduino, hai la possibilità di interagire con esso leggendo i vari ingressi e uscite.
----------------------------------------
AUTORE: 11044
DATA :02/07/2015 - 08:56:18
----------------------------------------
Ecco, proprio di questo avevo bisogno, un discorso in linea generale sul come muovermi e gestirli, avevo paura, vista la mia inesperienza a non riuscire a spiegarmi, invece hai colpito in pieno la mia nota dolente, una lacuna che non riuscivo a colmare.
Poi, ti spiego meglio quello che ho a disposizione, che hai giustamente anticipato, ma Arduino lo gestisco con labview non con il mio software:
Ho un software che mi gestisce una serie di periferiche commerciali, con i relativi driver dedicati.
Il mio scopo è quello di potermi creare da solo una periferica, in questo caso la serie Arduino che con la sua flessibilitá mi permette di gestire le schede aggiuntive shield che mi occorrono, per far questo devo crearmi un driver personalizzato e quindi farlo gestire dal software in questione, mi permetterebbe di realizzare il mio progetto, anche se non so ancora bene come gestire con lui un riferimento di posizione, piuttosto cosa serve al controllo Activex per dargli i riferimenti del caso.
Infatti il mio progetto sta nel sincronizzare la posizione fisica di un oggetto in funzione di un'altro e per questo ho pensato ad un encoder ottico visto i prezzi contenuti e la gestibilitá, uno assoluto mi viene per ora complicato gestirlo, si, ho un'affidabilitá maggiore ma per ora mancano troppi pezzi al puzzle.
Il software interagisce con una piattaforma di terzi per rendere compatibile una miriade di periferiche e marche diverse con il suo protocollo, può essere .Net o ActiceX.
Qui il primo dilemma, cioè quale linguaggio di programmazione scegliere, infatti mi sono sbattuto, facendo non poca confusione con le evuluzioni del C, Visual basic e studio, imbattendomi in una sintassi che ricordavo solo in parte ma le basi non erano sufficienti ad essere autonomo; fatto sta che i pacchetti da utilizzare erano a pagamento e comunque incasinati dal mio punto di vista e quindi è stata una perdita di tempo, un'anno o forse piu....che ci studiavo sopra, partendo dall'ABC ogni volta, capisci la confusione di sintassi?
Quindi imbattendomi con Labview ho ricominciato da capo ma con un sistema a dir poco perfetto e molto intuitivo, sono riuscito a:
Caricaricare il tool di Arduino e quindi fare diversi esperimenti con esso, caricandogli lo sketch apposito per la comunicazione COM naturalmente; poi ho trovato all'interno della piattaforma che utilizza il mio software la possibilitá di avere tutti i controlli ActiveX scaricando solo un pacchetto aggiuntivo della casa, individuato il nome della periferica interessata mi sono buttato a capofitto, ma non sapendomi muovere con essi sono cascato dal pero.
Ho provato a cercare in rete ma niente mi serviva per procedere, quindi altro punto morto, sino ad ora
penso...
Le mie intenzioni future sono quelle di seguire le tue parole alla lettera e vedere cosa riesco a combinare, costruirmi l'elettronica e interagire grazie a Labview con il software, fatto cio, devo crearmi un file di installazione da mettere sulla macchina per il funzionamento, tutto questo senza scopo di lucro.
Quindi, ora devo fare delle prove e vedere se da questa matassa riesco ad estrapolare i dati corretti per pilotare Arduino e da esso avere retroazione.
Per ora grazie, se ti viene in mente altro te ne sarei comunque grato.
Vedo se riesco a caricare delle foto qui per farti rendere conto meglio di tutto, altrimenti mi sembra di fare un discorso, a volte astratto.
A presto
----------------------------------------
================================================================================
Salvetaggio Waveform
================================================================================
AUTORE: 3960
DATA :15/11/2011 - 10:08:03
----------------------------------------
Ciao,
Sto cercando di salver una waveform come file Excel.
Quello che faccio è prendere la mia waveform farla passare per un for con 10 cicli per avere un array e poi salvare l'uscita questo array di waveform.
Il problema è che adesso mi salva 10 waveform con un solo valore e non 1 wavwform con 10 valori.
Avete un'idea di come posso fare questo save o come posso correggere la mia soluzione????
Grazie mille!!!
----------------------------------------
AUTORE: 301
DATA :16/11/2011 - 17:40:01
----------------------------------------
senza far passare la Wf per un for, prendi la Y della forma d'onda (la scomponi)e salvi l'array
----------------------------------------
AUTORE: 3960
DATA :17/11/2011 - 08:27:19
----------------------------------------
Ciao,
Grazie per l'attenzione.
In realtà la mia richiesta è incompleta, nel senso che io ho 16 waveform unite che vengono plottate.
1.Mi piacerebbe salvare il to o il delta t per ogni valore Y.
2.Una volta estratti i valori c'è un modo per organizzarli nel file excel?
Grazie Mille
Ciao!!!
----------------------------------------
AUTORE: 301
DATA :17/11/2011 - 08:55:35
----------------------------------------
certo, e piu di uno.
Cosi, di fretta, mi viene da fare qualcosa di simile all'allegato, ma si puo ottimizzare di molto......sforzati un po, questa è solo un'imboccata!
----------------------------------------
AUTORE: 3960
DATA :17/11/2011 - 09:24:22
----------------------------------------
Ciao,
Potresti salvarlo per la versione 8.5!
Grazie!
----------------------------------------
AUTORE: 301
DATA :17/11/2011 - 09:26:39
----------------------------------------
certo!
----------------------------------------
AUTORE: 3960
DATA :17/11/2011 - 10:15:28
----------------------------------------
Grazie!
----------------------------------------
AUTORE: 301
DATA :17/11/2011 - 10:18:43
----------------------------------------
Di nulla, e comunque prendilo solo come spunto, LAVORACI SU!!!!!
Buon lavoro
----------------------------------------
================================================================================
mandata a determiato frame nella flat sequense
================================================================================
AUTORE: 3962
DATA :15/11/2011 - 15:55:45
----------------------------------------
ciao,
volevo chiedervi se fosse possibile, data una struttura flat sequence passare ad un frame precedente? ad esempio sono nel frame 3 dove c'è un ciclo for loop, metto in pausa trammite un ciclo while vuoto che rimane attivo quanto il pulsante pause è premuto.
Al cambio di stato del pulsante pausa vorrei uscire dal while e invece di continuare il ciclo for nel frame 3 vorrei partire dal frame 2..
----------------------------------------
AUTORE: 482
DATA :15/11/2011 - 16:00:23
----------------------------------------
No, questo tipo di operazione che vuoi fare va fatta con la case structure. La sequenza,in quanto tale, viene eseguita solo in sequenza.
----------------------------------------
AUTORE: 645
DATA :18/12/2011 - 12:59:46
----------------------------------------
Credo sia più comodo passare dai SubVI con i quali puoi richiamare in un VI un altro VI preparato in precedenza.
----------------------------------------
================================================================================
Fitting di un Grafico X-Y
================================================================================
AUTORE: 3751
DATA :16/11/2011 - 12:14:31
----------------------------------------
Salve a tutti
ho realizzato un .vi che sembra funzionare correttamente ma mi ha lasciato qualche dubbio. Vi allego sia il file che il dubbio
, nel caso qualcuno abbia voglia di darci un occhio.
Il .vi, molto semplicemente, genere due segnali (l'output signal è l'input con del rumore aggiunto) e di questi realizza prima un fitting del valore efficace RMS, poi un fitting Bipolare e ricava le funzioni di trasferimento sotto forma di stringa.
Il grafico X-Y ed il grafico del Fitting presentano la stessa curva, ma differiscono per i valori dell asse x! Non riesco a capire se è solo una differenza dovuta al fatto che il polynomial fitting.vi restituisce unicamente il fitting dell'asse y oppure le due curve sono tra di loro differenti?? (mentre scrivo mi sto convincendo della prima ipotesi).
ripeto è solo un dubbio.. solo per capire bene come lavorano i vari .vi!
P.S. Nel caso dovessi acquisire i due segnali dall'esterno tramite l' "Acquire Signal.vi " (express) mi consigliereste di mettere questo vi all'interno o all'esterno del ciclo for?? Acquisisco cioè di continuo ed elaboro ad ogni ciclo, oppure conviene direttamente acquisire il segnale ad ogni ciclo ed elaborarlo??
----------------------------------------
AUTORE: 3751
DATA :16/11/2011 - 12:16:10
----------------------------------------
Aggiungo lo stesso .vi per versioni precedenti la 2011!
----------------------------------------
================================================================================
Funzione di Trasferimento
================================================================================
AUTORE: 3751
DATA :18/11/2011 - 12:03:25
----------------------------------------
Scusate se torno sull'argomento, ma mi stanno venendo dei seri dubbi a riguardo.
Quello che devo fare è semplice:
acquisisco un segnale y(t), ho una funzione di trasferimento polinomiale del tipo y(t)= 3x(t) devo trovare il segnale di uscita u(t)!
Non mi sembra troppo difficile, ho scaricato sia Il "Control Design e Simulation Module" che il "System Identification Tool"!
Non sarà una perdita di tempo per una cosa magari troppo semplice??
Mi sto perdendo tra Transfer Function, State Space Model, Linear Simulation, Non linear Simulation..
Consigli sono benvenuti
Grazie
----------------------------------------
AUTORE: 927
DATA :29/11/2011 - 09:05:51
----------------------------------------
Cioè in pratica devi moltiplicare ogni valore per 3? Non è chiarissimo...
----------------------------------------
AUTORE: 3751
DATA :29/11/2011 - 09:38:16
----------------------------------------
Diciamo che le cose stanno più o meno così:
acquisisco un segnale s(t) da un dispositivo per diversi secondi poi questo segnale deve passare attraverso una funzione di trasferimento polinomiale del tipo:
1/(2x^2 + 6x + 9) (ad esempio) che ricorda un filtro passa basso, dopo di che ottengo in uscita un segnale filtrato u(t). Devo semplicemente implementare la funzione di trasferimento (l'esempio numerico riportato è casuale) nel dominio del tempo sul segnale che acquisisco e poi elaborare l'uscita u(t).
Come dicevo ho controllato tutta la sezione del Control e Design Simulation ma credo sia "troppo" per quello che devo fare...
spero adesso sia più chiaro..
Grazie
----------------------------------------
AUTORE: 3751
DATA :29/11/2011 - 13:27:25
----------------------------------------
Per essere più chiari allego il .vi che sto cercando di realizzare:
la funzione di trasferimento dovrebbe fitrare il segnale in ingresso ma in uscita non ottengo nulla, neanche rendendo molto semplice la funzione stessa..
Spero sia chiaro l obiettivo
Grazie
----------------------------------------
AUTORE: 3751
DATA :29/11/2011 - 13:28:39
----------------------------------------
Ecco l allegato in versione 8.5..
----------------------------------------
================================================================================
trovare VI con front panel visibile
================================================================================
AUTORE: 482
DATA :22/11/2011 - 08:36:36
----------------------------------------
...esiste qualche funzione nell'ambiente di sviluppo, tipo nel profile o cose simili, che permetta di individuare in un progetto quali sono i VI che mostrano il front panel?
----------------------------------------
================================================================================
Save To Spreadsheet file
================================================================================
AUTORE: 3960
DATA :25/11/2011 - 10:37:35
----------------------------------------
Ciao a tutti,
Sto cercando di salvare dei segnali di tipo "Dynamic" con il Save to Spreadsheetfile.
Non capisco perchè:
-non posso modificare il numero di elementi dopo la virgola per il tempo, ho risoluzione 1decimo di secondo io vorrei il millesimo.
-non salva i valori negati, escono dei cancelletti (#####). Se uso il blocco Write to Spread. file, salva anche i valori negativi ma perdo la info sul tempo
Ho provato anche a convertite da dinamico in waveform ma niente.
Qualcuno riesce ad aiutarmi??
Grazie
Ciao!!!
----------------------------------------
AUTORE: 301
DATA :25/11/2011 - 12:28:48
----------------------------------------
converti e salvi come testo.
----------------------------------------
AUTORE: 3960
DATA :25/11/2011 - 13:11:18
----------------------------------------
ok Grazie!
----------------------------------------
================================================================================
Gestione Errore
================================================================================
AUTORE: 3428
DATA :25/11/2011 - 10:43:14
----------------------------------------
Salve, apro questa discussione per parlare di errori e della loro gestione in labview.
Attualmente ho sviluppato un pop up che nel caso in cui faccio entrare un errore (ovviamente a TRUE) mi si apre in primo piano e mi esplica il tipo di errore.. un pò come il simple error handler, ma con grafica
Ho sempre collegato gli errori di labview, soprattutto per dare sequenzialità, ma da poco mi sono accorto utilizzando una stacked sequence di una gestione di labview degli stessi.
NON collegando un'uscita di un blocchetto send notifier (al quale ingresso arriva un errore a true) labview interviene e mi blocca l'applicazione con il suo popup di simple error handler.
è possibile annullare o disabilitare tale intervento di labview o devo perforza cancellare l'errore in uscita con il clear error per far si che le prossime sequenze delle stacked vengano eseguite?
----------------------------------------
AUTORE: 278
DATA :25/11/2011 - 11:01:44
----------------------------------------
Ciao,
premetto che è buona norma collegare sempre l'error cluster in modo da propagare l'errore ed avere sempre la certezza che ogni problema venga gestito, cmq fare quello che chiedi è possibile, devi accedere al menù Tools->Options, alla categoria Block Diagram devi togliere la spunta alla voce enable automatic error handling dialogs
----------------------------------------
================================================================================
Applicazione Labview eseguita a chimata esterna
================================================================================
AUTORE: 3428
DATA :27/11/2011 - 10:23:42
----------------------------------------
Salve, volevo chiedervi se fosse possibile creare una sorta di dll in labview 2010 richiamabile da altri linguaggi come ad esempio il C++
Mi servirebbe LV solo per creare un certo tipo di analisi dato creato con C, dato in pasto a LV per poi rimanere in attesa del risultato. Tutto questo senza star li a lanciare eseguibuli... è fattibile?
Grazie
----------------------------------------
AUTORE: 482
DATA :28/11/2011 - 07:53:07
----------------------------------------
credo che la procedura sia simile a quella per creare degli eseguibili,solo che gli devi dire di crearti una DLL
----------------------------------------
================================================================================
Leggere e scrivere file .wav
================================================================================
AUTORE: 482
DATA :02/12/2011 - 10:51:59
----------------------------------------
...ma ciao!
ho realizzato un applicazione dove vado a salvare dei file .wav con le funzioni di labview.
Quando vado a leggerli pero', se uso le funzioni di labview, riesco a sentire il file, se apro i file wav con un player qualsiasi, non sento niente.
Qualcuno ha idea del perchè?
----------------------------------------
AUTORE: 129
DATA :08/02/2012 - 14:26:28
----------------------------------------
Prova a vedere come il sound format, dovresti riuscire a trovare la combinazione esatta (mi sembra 11025Hz a 16bit)
Prova a vedere [url=http://it.wikipedia.org/wiki/WAV:2yz0uaq2]qui[/url:2yz0uaq2] se trovi qualcosa di utile
ciao
----------------------------------------
AUTORE: 482
DATA :08/02/2012 - 15:58:19
----------------------------------------
Poi alla fine ho scoperto che era un problema di scheda audio.
Nel senso che con un microfono col jack da 3,5 registravo un file con un volume bassissimo e non sempre mi riconosceva il microfono collegato.
Usando un microfono USB questo problema è sparito.
----------------------------------------
================================================================================
Plot XY effetto scia
================================================================================
AUTORE: 3960
DATA :02/12/2011 - 15:45:34
----------------------------------------
Caio,
faccio una domanda un po complicata, vorrei sapere se posso creare su un grafico xy una effetto scia, cioè plottare ad esempio 10 campioni e poi quando plotto l'undicesimo eliminare il primo e cosi via, creando tipo una coda di cometa!!
Potete aiutarmi??
Grazie Mille!!!
Ciao!
----------------------------------------
AUTORE: 482
DATA :12/12/2011 - 07:17:06
----------------------------------------
COme saprai, il grafico XY non è nient'altro che un array di X e un array di Y e ad ogni step devi rimandare gli array interi.
Quindi basta che tu gli mandi il nuovo array togliendo il primo elemento e aggiungendo l'ultimo.
----------------------------------------
================================================================================
Modifica frequenza "Simulate signal"
================================================================================
AUTORE: 4008
DATA :03/12/2011 - 21:09:33
----------------------------------------
Buongiorno a tutti,
Sono Lombardi Lorenzo, da Prato, neolaureato in Ingegneria Elettronica. Per questioni professionali mi è stato chiesto di prendere dimestichezza con labVIEW e cercando in rete ho trovato questo tutorial, che sto seguendo:
[url:1kc5xmvi]http://www.bo.infn.it/orientamento/ls/LabView7.pdf[/url:1kc5xmvi]
Arrivato alla fine del primo capitolo ho provato a modificare lo schema proposto inserendo una manopola per la variazione della frequenza, secondo il seguente schema a blocchi:
[img:1kc5xmvi]http://imageshack.us/photo/my-images/26/acquiringasignal02block.jpg/[/img:1kc5xmvi]
Adesso, variando il valore della frequenza tramite l'azione di detta manopola l'andamento della forma d'onda visualizzata dal blocco "Waveform Graph" varia da FERMA per manopola [i:1kc5xmvi]Completamente[/i:1kc5xmvi] a destra o a sinistra (Minimo o massimo) e varia velocità per le posizioni intermedie, senza che l'unità di misura vari lungo l'asse temporale. Come si spiega questo fenomeno? Come dovrei modificare lo schema per far sì che sia possibile variare la frequenza del segnale di uscita dal blocco "Simulate Signal"?
Vi ringrazio in anticipo per l'aiuto datomi, sperando di ricevere presto Vostre notizie.
Buon fine settimana a tutti!
----------------------------------------
AUTORE: 4008
DATA :03/12/2011 - 21:19:19
----------------------------------------
[quote="Lombo":1ym6hwkw]...secondo il seguente schema a blocchi:
[img:1ym6hwkw]http://i41.tinypic.com/1zfpogl.jpg[/img:1ym6hwkw]
[/quote:1ym6hwkw]
Scusate, no avevo caricato bene lo schema a blocchi... -__-'
----------------------------------------
================================================================================
aprire file musicale
================================================================================
AUTORE: 4026
DATA :07/12/2011 - 15:24:08
----------------------------------------
salve a tutti ho labview 2010 e vorrei creare un VI che quando ho un valore true mi deve aprire un file musicale scelto dall'utente...in pratica io ho fatto un orologio con una sveglia che quando arriva all'orario prefissato mi esce un valore true.come faccio a far scegliere all'utente quale canzone impostare per la sveglia??
----------------------------------------
AUTORE: 4026
DATA :08/12/2011 - 13:32:04
----------------------------------------
ce qualcuno??
----------------------------------------
AUTORE: 4046
DATA :14/12/2011 - 09:26:40
----------------------------------------
Vorrei anche sapere, non c'è qualcuno sa e ci aiutano? grazie mille
----------------------------------------
AUTORE: 482
DATA :14/12/2011 - 10:25:22
----------------------------------------
Nella palette del block Diagram , alla voce Programming, c'e' un blocco chiamato gaphics and sounds.
Li ci sono vari vi per aprire,creare e riprodurre file audio.
poi s evuoi c'e' questo MP3 player
http://zone.ni.com/devzone/cda/epd/p/id/2688
o dai un occhiata a sto topic:
http://forums.ni.com/t5/LabVIEW/Mp3-player/td-p/7247
----------------------------------------
AUTORE: 1078
DATA :14/12/2011 - 10:29:20
----------------------------------------
Ciao Jeff,
Per chiedere all'utente di selezionare un file puoi usare la File dialog che lavbiew ti mette a disposizione, Functions Palette --> Programming --> File I/O --> Advanced File Functions --> File Dialog. Per gestire il file invece devi usare le funzioni nella Sound Palette: Functions Palette --> Programming --> Graphics & Sound --> Sound.
Io chiederei all'utente di selezionare una path, la salverei in un file di configurazione e richiamere ogni volta quel file.
Buon lavoro!
----------------------------------------
================================================================================
Applicazioni con diverse daqmx
================================================================================
AUTORE: 4027
DATA :07/12/2011 - 16:36:20
----------------------------------------
Ciao a tutti,
ho un problema legato ad un sistema PXI sul quale devono girare applicazioni fatte con diverse versioni di labview.
In particolare sulla macchina gira un programma compilato con LV2009 e relative librerie, ora dobbiamo aggiungere un'altra applicazione sviluppata con LV2010, ho già fatto un'installer che aggiunga la runtime engine 2010, ma pare mancassero anche alcune funzioni di libreria.
Quindi ho fatto un'altro installer con l'aggiunta delle librerie mancanti, ma al momento di lanciare l'installazione scopro che non è possibile avere più versioni delle daqmx installate sullo stesso PC.
Qualcuno mi sa dire se è possibile risolvere il problema?
Grazie!
----------------------------------------
AUTORE: 482
DATA :12/12/2011 - 07:22:25
----------------------------------------
Confermo che le librerie DAQmx di diverse versioni non possono convivere.
La soluzione piu' immediata sarebbe che tu ricompilassi l'eseguibile 2009 in 2010 visto che non hai parlato di mancanza di sorgenti o robe simili.
----------------------------------------
AUTORE: 4027
DATA :12/12/2011 - 08:42:34
----------------------------------------
Innanzitutto grazie. I sorgenti li ho, ma speravo di non dover riprendere le vecchie applicazioni ogni volta che vado ad introdurne di nuove, anche perchè credo che la ricompilazione con nuove librerie richieda un minimo di redebug.
Comunque mi pare di capire che non si possono riferire le applicazioni ad un determinato set di driver installati, non mi sono perso qualche passaggio o qualche opzione di compilazione?
----------------------------------------
AUTORE: 482
DATA :12/12/2011 - 10:55:38
----------------------------------------
...l'alternativa è che tu usi labview 2010 con la versione vecchia di daqmx.
pero' aspetta...non facciamo confusione tra i driver e i blocchetti di sviluppo.
Se tu installi i driver nuovi, l'applicativo vecchio dovrebbe continuare a funzionare senza doverlo ricompilare. perchè tu avrai installato solo i drievr nuovi, ma il modo in cui labvie wcomunica coi driver dovrebbe continuare a funzionare..dipende poi dal tipo di funzioni che hai usato.
----------------------------------------
AUTORE: 43
DATA :12/12/2011 - 11:24:13
----------------------------------------
[quote="Larry.":3gj6j2qs]...ho un problema legato ad un sistema PXI sul quale devono girare applicazioni fatte con diverse versioni di labview....[/quote:3gj6j2qs]
Le opzioni attulamente a tua disposizione sono:
- ricompilo il sorgente LV2009 ancora con LV2009 ma utilizzando la stessa versione di DAQMX usata per LV2010
- ricompilo il sorgente LV2009 con LV2010 e DAQMX aggiornate.
La domanda però sorge spontanea:
- perchè si è passati a LabVIEW 2010? c'è qualche motivo particolare.
Nella azienda nella quale lavoro attualmente viene fatta manutenzione di SW LabVIEW scritto in LV 6i..
bye
----------------------------------------
AUTORE: 482
DATA :12/12/2011 - 15:43:50
----------------------------------------
Io al momento ho installato il 2010 ma ho ancora il 2009 e sviluppo con quello.
Le uniche cose interessanti che ho trovato nel 201 pe ril momento sono le costanti booleane piu' piccole e le label dei fili....
----------------------------------------
AUTORE: 4027
DATA :14/12/2011 - 08:34:32
----------------------------------------
Ok, proverò ad installare i driver nuovi e verificare il funzionamento dell'applicazione 09 con driver 10, anche se, lavorando sulla macchina del cliente dove gira solo l'app e non ho l'ambiante di debug ci dovrò andare con i piedi di piombo e farmi qualche backup. Dico questo perchè in qualche sviluppo abbiamo già notato che il passaggio di versione potesse introdurre qualche noia, anche se ora non ricordo se si trattava di driver o di altre funzioni che cambiavano comportamento...
Al 2010 siamo passati per usufruire dei miglioramenti nel caricamento dell'applicazione dove abbiamo avuto progressi sensibili. Inoltre ogni volta che esce una nuova versione ci siamo fatti ingolosire dai tool che rendono l'ambiente di programmazione un po' più comodo, anche se col tempo mi sto rendendo conto che i passaggi di versione vanno limitati e fatti con cautela.
Fin'ora abbiamo scelto di passare alle nuove versioni quando si partiva con nuovi progetti, in modo da limitare i problemi, ma a questo punto non si è rivelato sufficiente, dovendo far girare sulla stessa macchina due differenti programmi fatti in tempi diversi.
----------------------------------------
================================================================================
LabVIEW e XBee
================================================================================
AUTORE: 482
DATA :12/12/2011 - 11:00:33
----------------------------------------
...ma ciao!
dovendo acquisire dei segnali da un oggetto in movimento, ho deciso di provare i moduli XBee per leggere alcuni sensori.
Partirei con un potenziometro.
Ho acquistato i miei due oggettini, dovrebbero già essere configurati correttamente ma ora vi chiedo:
Qualcuno di voi ha esperienza con gli XBee? Avete idea da dove partire per usare labview per leggere un ingresso analogico da XBee?
Sto cercando documentazione in rete, qualcuno ha già fatto cose del genere, ho trovato i video ma non ho trovato documentazione quindi li ho contattati e resto inattesa e intanto chiedo qui.
----------------------------------------
AUTORE: 4047
DATA :14/12/2011 - 09:58:03
----------------------------------------
Ciao, sono nella tua stessa situazione, come hai pensato di far comunicare i moduli xbee con il pc?
----------------------------------------
AUTORE: 482
DATA :14/12/2011 - 10:22:38
----------------------------------------
sto sentendo l'assistenza....
spero di arrivare a una soluzione.
La questione è che c'e' un protocollo di comunicazione, che pero' è spiegato STRAMALISSIMO nel manuale degli XBEE.
STo vedendo se il tecnico mi viene incontro e mi puo' fare un esempio di comunicazione per quello che voglio fare io usando la modalità API perchè se non ho capito male con i comandi AT si puo' solo configurare il modulo.
Se tutto va bene, mi faro' risentire a breve.
L'alternativa, con un sacco di roba inutile e un po' piu' dispendiosa, ma non troppo, sarebbe di utilizzar edue arduino con gli appositi shield per XBEE, configuarne la comunicazione e poi tramite labview andare a prendere il dato.
vedremo...
----------------------------------------
AUTORE: 482
DATA :15/12/2011 - 09:38:19
----------------------------------------
Al momento riesco a far comunicare i due XBee, e leggo un dato, che pero' non è quello che mi aspetto.
qualcosa si muove..
----------------------------------------
AUTORE: 482
DATA :15/12/2011 - 13:10:23
----------------------------------------
Occhei!
comunicazione funzionante!!
allora, innanzitutto l'elenco dellhardware usato:
N°2 XBEE serie1
N°1 XBee USB Board
N°1 XBee Simple Board
Tramite il software X-CTU fornito da DIGI carico sui due moduli le due configurazioni:
Coordinator.pro nel modulino che sarà collegato al pc tramite la USB Board
End device.pro nel modulino che sarà il modulo remoto
Il tutto è configurato per ricevere il valor eanalogico sulla porta AD0.
Una volta caricato il software, al modulo remoto collego l'alimentazione tramite il pin Vin e il GND.
Collegare a VRef il valore di tensione che si vuole tenere come riferimento analogico.
ad ADO collegare il nostro valore analogico.
Ora che tutto è configurato, dal software X-CTU,dopo aver selezionato la corretta porta com del modulo Xbee, nella tab Terminal, dovremmo vedere arrivare tutta una serie di caratteri indecifrabili.
Nel caso specifico si tatta di 14 byte per pacchetto.
Ed ora ecco le istruzioni per decifrare questi dati:
es di stringa in arrivo. 7E000A8300021B0001020003FF5C
1° 7E Carattere di inizio stringa
2°e 3° 00 0A Lunghezza del pacchetto
4° 83 Identificativo della funzione API utilizzata
5° e 6° 00 02 Indirizzo a 16 bit del modulo inviante
7° 1B Potenza segnale in -db
8° 00 Option byte (non ho capito bene cosa mi rappresenta
9° 01 Numero di campioni acquisiti
10° e 11° 0200 Canale a cui appartiene il dato vanno letti i singoli bit , i primi 7 bit del primo byte sono gli analogici il resto sono digitali
12° e 13° 03 FF Dato analogico espresso come intero a 10 bit (val MAX 1023)
14° 5C Checksum
spero possa essere d'aiuto ad altri!
Tutto questo era assolutamente inarrivabile dal manuale ufficiale degli XBEE!!!
----------------------------------------
AUTORE: 4
DATA :09/01/2012 - 16:37:27
----------------------------------------
Io infatti l'ho fatto usando i comandi AT e mettendo i moduli in trasparent mode, API disabilitate, quindi come avere una seriale senza fili, però ti perdi un poco di features tipo quelle che l'end point può accorgersi che un input ha cambiato stato e comunicartelo al volo senza che tu debba fare polling dal coordinator.
Ciao
----------------------------------------
AUTORE: 4200
DATA :26/04/2012 - 15:53:43
----------------------------------------
Buongiorno, abbiamo acquistato questi due prodotti:
1) Xbee_WHIP_OEM_S2 DUE PEZZI
2) PIR_SEN116A SENSORE LUCE
Avevamo già in casa:
una scheda USB BOARD per XBEE (http://www.sparkfun.com/products/8687)
un PRECISION LIGHT SENSOR (http://www.phidgets.com/products.php?product_id=1127)
una 1000Pads Mini XB Board (http://www.droids.it/data_sheets/990.102_datasheet.pdf)
Il mio obiettivo è quello di trasmettere 2 segnali: ON / OFF del PIR116A e i LUX del LIGHT SENSOR ricevendoli sulla USB BOARD al PC.
Non so se si ricorda, ne abbiamo parlato telefonicamente qualche giorno fa, mi può aiutare per favore?
Sono alle prime armi e avrei bisogno di una mano.
I due moduli sono già configurati con X-CTU uno sull’altro.
Ad esempio:
1) non trovo il datasheet del PIR_SEN116A non capisco bene DOVE dare tensione e dove invece ho i segnali di uscita 3.3V
2) Posso collegare direttamente il PIR ( digitale? ) e il sensore luce ( Analogico ) alla Mini XB Board con l’XBee sopra vero ? Dove?
Su DIO–0 …. DIO-3 ?
3) Cosa posso usare per leggere questi due semplici segnali con VB6?
Grazie anticipatamente…
Massimo Casilli
----------------------------------------
================================================================================
Ricavare Parametri da Sommatoria
================================================================================
AUTORE: 3751
DATA :14/12/2011 - 11:44:32
----------------------------------------
Ciao a tutti
mi sono imbattuto nel seguente problema: ho un segnale esprimibile come prodotto di due sommatorie,
[url=http://imageshack.us/photo/my-images/263/formulaj.png/:3qokd06i][img:3qokd06i]http://img263.imageshack.us/img263/6536/formulaj.png[/img:3qokd06i][/url:3qokd06i]
conosco tutti i parametri presenti nella formula (da s(t) a y(t) a tau a p a N) e devo ricavare i parametri Beta (essendo un prodotto tra sommatorie dovrei ottenere come risultato una matrice!!). Qualcuno ha già lavorato con problemi di questo tipo, con formule come la seguente?? Un suggerimento su come stimare i parametri Beta sarebbe gradito!! Io pensavo di dividere il segnale y(t) per la prima sommatoria trovando così la seconda...
Grazie
----------------------------------------
================================================================================
VI di openg su folder e non solo su palette
================================================================================
AUTORE: 3428
DATA :14/12/2011 - 14:47:06
----------------------------------------
Salve a tutti,
chiedo forse una cosa banale...
Tutte le VI della comunity OPEN-G che mi ritrovo nella palette dopo l'installazione tramite il VI package manager posso averle direttamente tutte in una cartella o devo per forza di cose salvarmene una ad una da solo?
Chiedo questo perchè se ne uso alcune sul mio pc ma poi sposto tutto il progetto su un altro pc non ho le VI se non installo tutto il pacchetto... Invece andandole a prendere da una cartella mi basta spostare la cartella...
Grazie
----------------------------------------
AUTORE: 278
DATA :14/12/2011 - 16:02:30
----------------------------------------
Dentro la cartella principale di Labview, cerca il folder user.lib, all'interno trovi la cartella _OpenG.lib dove vengono salvate tutte le librerie openG che scarichi tramite il package manager.
Copia ed incolla la cartella _OpenG.lib nel folder di Lv della macchina dove sposti il tuo progetto, quando lo apri dovresti avere tutto funzionante.
----------------------------------------
AUTORE: 3428
DATA :14/12/2011 - 16:36:05
----------------------------------------
Perfect!
Grazie mille
----------------------------------------
================================================================================
Deviazione Dinamica
================================================================================
AUTORE: 3751
DATA :15/12/2011 - 13:57:12
----------------------------------------
Ciao a tutti
qualcuno ha un suggerimento su come sia possibile calcolare la deviazione dinamica di un generico segnale s(t)??
Mi spiego meglio: ad un generico istante di tempo t devo calcolare non solo s(t) ma anche s(t + "delta"t) e s(t - "delta"t) seguendo la seguente formula:
[url=http://imageshack.us/photo/my-images/88/63050109.png/:1t7q05fl][img:1t7q05fl]http://img88.imageshack.us/img88/411/63050109.png[/img:1t7q05fl][/url:1t7q05fl]
dove "p" e "tau" sono paramentri noti.
Ho provato ad utilizzare il .vi GET XY VALUE ma non è adatto in quanto ha come istante di riferimento quello iniziale e non un generico istante t.
Grazie
----------------------------------------
AUTORE: 1078
DATA :16/12/2011 - 15:51:31
----------------------------------------
Scusa ma non ho capito bene, cosa intendi per generico istante t?
La waveform è comunque una forma finita, con istante t0 e istante finale tf... tu puoi pescare quello che vuoi tra i due limiti ma, sicuramente non otterrai nessun valore valido se inserisci un istante a caso che non sia tra questi due limiti. Cosa vuoi fare esattamente?
----------------------------------------
AUTORE: 1078
DATA :16/12/2011 - 15:56:54
----------------------------------------
Se ti serve che la tua waveform abbia un istante iniziale scelto da te tra quelli presenti nell'intera forma d'onda, puoi tagliare un pezzo della forma d'onda con la funzione "Get waveform subset". Il subset risultante avrà come istante 0 il tuo istante di riferimento.
----------------------------------------
================================================================================
Schema acquisizione dati
================================================================================
AUTORE: 4104
DATA :30/12/2011 - 10:09:15
----------------------------------------
Salve, sono nuova del forum e di labview in generale.
All'università il professore ha affidato a me e altri colleghi un progetto di notevole difficoltà per chi si sta appena affacciando al mondo di labview.
Cercherò di essere il più breve possibile.
Il progetto consiste nel costruire un "ciambellone" ossia un tubo attraverso cui passa dell'acqua. Nel tubo vengono inseriti un'asticella per creare un vortice d'acqua, e un sensore IPMC che dovrebbe restituire la tensione che la pompa applica per "risucchiare" l'acqua dal contenitore in cui si trova. Ovviamente queste pompa, che il prof ha acquistato in un negozio specializzato, ha una tensione fissa dovrebbe essere 12 o 24 volt. Quello che dobbiamo fare è, oltre a costruire il circuito idraulico, acquisire i dati con la DAQ e controllare la tensione della pompa. Dato che la pompa non ci è ancora stata data, ci è stato detto di iniziare a fare la parte software in labview...ed è qui che abbiamo incontrato difficoltà. Non sappiamo quali blocchi uilizzare e come funzione in generale l'acquisizione dei dati in labview, e come funziona nel nostro caso specifico...l'unica cosa che abbiamo capito è che dobbiamo acquisire due tensioni: una è quella data dal sensore e l'altra credo sia quella applicata dalla pompa che dovrebbero poi risultare uguali...aiuto!
Quello che chiedo è uno schema generico su come fare l'acquisizione e quali sono i blocchi da utilizzare. Inoltre non ho installato tutti i moduli di labview quindi potrei non avere alcuni blocchi necessari e vorrei sapere eventualmente in quale dei diversi driver si trovano i blocchi.
Vi ringrazio in anticipo per l'aiuto.
----------------------------------------
AUTORE: 278
DATA :30/12/2011 - 14:12:43
----------------------------------------
Ciao e benvenuta,
nel sistema che hai descritto è tutto chiaro, tranne un componente fondamentale: la scheda di acquisizione, ovvero, cosa usi per acquisire i 2 valori di tensione??
Supponendo che vogliate utilizzare prodotti National Instruments, vi consiglio i moduli di acquisizione usb, pratici e compatti, molto adatti per un'ambiente didattico/universitario, all'interno del prodotto troverete anche i relativi driver necessari ad acquisire i dati con la scheda usb.
Se siete proprio alle prime armi, vi consiglio di partire dal MAX, ovvero measurement and automation explorer, dovreste averlo già installato con la versione base o student di labview, questo strumento vi consente di acquisire dati in maniera pratica e veloce attraverso l'ausilio di wizard guidati.
Se non ricordo male, il MAX è anche in grado di realizzare un codice di esempio partendo dalla misura che si deve acquisire, quello che vi consiglio è di procurarvi una scheda di acquisizione, un alimentatore in corrente continua e di cominciare a leggere sul pc la tensione emessa dal generatore.
Se avete altri dubbi vi consiglio di documentarvi sul sito National www.ni.com oppure di chiedere qui su ILVG
In bocca al lupo
----------------------------------------
================================================================================
Virtual COM port e driver
================================================================================
AUTORE: 2523
DATA :30/12/2011 - 23:04:40
----------------------------------------
Ciao a tutti e buon 2012!!!
Ho realizzato, con LabView vs 8.6.1, un'applicazione che comunica tramite virtual COM
con un sistema embedded da me progettato.
Oggi il web è pieno di driver virtual COM port (mi riferisco ai file .inf) per Windows XP e infatti non ho alcun
problema ad utilizzare la mia applicazione LabView su questo sistema operativo.
I dolori nascono quando provo a far girare la stessa applicazione su Windows 7 64bit.
Ho cercato un sacco sul web driver virtual COM per questo sitema operativo; ne ho trovati ma tutti
funzionano correttamente per qualche minuto poi l'applicazione LabView si "pianta".
Solo un driver funziona bene, anzi benissimo, ma è un driver creato da una azienda che lo rende disponibile
in versione demo (dopo 4 ore si blocca ed è necessario riavviare il PC per riprestinarne il funzionamento).
La differenza fondamentale tra queste due tipologie di driver è che la prima (quella non funzionante), si basa sul file
usbser.sys creato da Microsoft, mentre la seconda su un file sys creato appositamente dagli sviluppatori del driver stesso.
Chiedo se qualcuno di voi possiede un driver virtual COM per sistema operativo Windows 7 32 e 64 bit o se può darmi indicazioni su come crearlo.
P.S: ho provato anche a vedere se con Driver Wizard della National Instruments (fornito assieme a LabView), fosse possibile creare un driver per porte Virtual COM,
ma non sono riuscito a gingere ad alcuna conclusione.
Grazie in anticipo per qualsiasi aiuto/consiglio.
----------------------------------------
AUTORE: 1078
DATA :02/01/2012 - 09:58:55
----------------------------------------
Ciao chobin,
e tanti auguri anche a te!
Hai già provato ad utilizzare direttamente il tuo device USB tramite i driver VISA? Con questi driver puoi indirizzare direttamente la porta USB!! Trovi delle info su come usare i driver VISA con usb sul sito della NI.
Prova adare un'occhiata a questi:
[url:3vse5b15]https://decibel.ni.com/content/docs/DOC-2075[/url:3vse5b15]
[url:3vse5b15]http://zone.ni.com/devzone/cda/tut/p/id/4478[/url:3vse5b15]
Ciao e buon lavoro!
----------------------------------------
================================================================================
Auguri
================================================================================
AUTORE: 1124
DATA :31/12/2011 - 20:55:29
----------------------------------------
Buon 2012 a tutti!
Stefano
----------------------------------------
AUTORE: 278
DATA :02/01/2012 - 10:23:14
----------------------------------------
Grazie,
tanti auguri anche a te!!
----------------------------------------
AUTORE: 645
DATA :03/01/2012 - 06:31:24
----------------------------------------
Auguri a tutti!!
----------------------------------------
AUTORE: 3428
DATA :03/01/2012 - 08:52:51
----------------------------------------
AUGURI!!!!
buon anno a tutti!!
----------------------------------------
================================================================================
LabView e PLC con OPC e Datasocket
================================================================================
AUTORE: 645
DATA :03/01/2012 - 06:41:05
----------------------------------------
Ciao a tutti, apro una nuova discussione legata a questo argomento perchè, rispetto a quanto detto in altri post, vorrei segnalare un'esperienza che ha funzionato e il limite che non reisco a superare.
Sto cercando di interfacciare LabView con diversi PLC e relè programmabili (in particolare vorrei lavorare con Omron CQM1-H, Siemens S7-200, Schneider Zelio); ho trovato in rete diversi documenti che spiegano la comunicazione client e server, diversi server per PLC a pagamento e qualche utility free.
Per testare la comunicazione Datasocket (ho provato con questa soluzione) ho installato il Server di simulazione Matrikon (http://www.matrikonopc.com) che permette di creare alcune tag relative a canali PLC generici (non si specificano marche) che vengono messe a disposizione tramite OPC e con Datasocket (utilizzando come punto di partenza gli esempi di LabView) si possono raggiungere i dati simulati e creare grafici o tabelle.
Adesso però vorrei interfacciarmi con PLC reali e qui iniziano i problemi: ho provato a scaricare i server della Matrikon, sia quello universale (free) che quelli specifici (a pagamento). Sembra però che, entrambe le soluzioni, consentano di acquisire canali generici e non diano la possibilità di scegliere particolari porte delle quali analizzare il valore.
Qualcuno di voi sa consigliarmi un sito con un bel tutorial o qualche programma per interfacciarsi con i PLC?
----------------------------------------
AUTORE: 3428
DATA :03/01/2012 - 08:51:45
----------------------------------------
Ciao MagicBotolo,
ho lavorato con un plc siemens interfacciandomi con OPC server (anch'esso siemens - simatic) tramite datasocket. La rottura non è tanto l'interfacciamento e lo scambio dati ma la configurazione dell'opc stesso.
Leggevo e scrivevo diversi valori su alcune DB.
Non so se può esserti utile ma ti posto ugualmente un esempio del codice che uso, che come puoi vedere è banalissimo.
----------------------------------------
AUTORE: 482
DATA :09/01/2012 - 07:12:10
----------------------------------------
con che protocollo comunichi?
perchè ad esempio se usi modbus, esiste già la libreria labview per comunicare.
----------------------------------------
AUTORE: 645
DATA :10/01/2012 - 20:12:11
----------------------------------------
Tutto il discorso è nato dalla voglia di interfacciare un Siemens S7-200 con LabView.
Poi in generale un PLC con LabView.
Girando ho visto che esistono altri tipi di comunicazione (Freeport per esempio) e con alcuni si può lavorare in Modbus (e LabView ha effettivamente un toolbox già pronto).
Ma mi avevano consigliato di guardare la tecnologia OPC: sono riuscito a fare qualche esercizietto ma non ho ancora avuto modo di testare il collegamento con un vero PLC.
Spero di poterlo fare entro fine mese. Consigli?
----------------------------------------
AUTORE: 4206
DATA :16/05/2012 - 19:39:55
----------------------------------------
Puoi usare l'S7/S5 OPC Server della Softing.
Si scarica gratuitamente dal sito softing.com. L'unica limitazione della versione demo è che va riavviato manualmente dopo 90'
----------------------------------------
AUTORE: 482
DATA :17/05/2012 - 07:16:29
----------------------------------------
Io ho appena finito di realizzare una comunicazine con un PLC che utilizza il protocollo ethernet/ip tramite un tool che si scaricava tempo fa gratuitamente.
senza bisogno di OPC ecc ecc, basta avere l'indirizzo IP del PLC.
----------------------------------------
AUTORE: 1078
DATA :23/12/2014 - 09:36:32
----------------------------------------
[quote="kanita":2t5hkdnr]sei sicuro che l'immagine sia jpg?
Sei sicuro che l'immagien non occupi millemila mega?
perchè confermo che con i jpg, cosi' come con altri formati comuni, batsa trascinare il file sul front panel (quindi dal file manager, non da un editor di immagini)[/quote:2t5hkdnr]
@ [b:2t5hkdnr][i:2t5hkdnr]Kanita[/i:2t5hkdnr][/b:2t5hkdnr]: sei sicura di non aver sbagliato discussione?
Buona giornata e buone feste a tutti!!!
----------------------------------------
AUTORE: 660
DATA :25/02/2015 - 09:16:41
----------------------------------------
[quote="gepponline":1wvdn8zm]Io ho appena finito di realizzare una comunicazine con un PLC che utilizza il protocollo ethernet/ip tramite un tool che si scaricava tempo fa gratuitamente.
senza bisogno di OPC ecc ecc, basta avere l'indirizzo IP del PLC.[/quote:1wvdn8zm]
che tool
che tool
che toooool
Ciao Geppo, ma non puoi lanciare il sasso e poi nascondere la mano...
----------------------------------------
AUTORE: 482
DATA :25/02/2015 - 15:45:28
----------------------------------------
Mi sa che era un tool sviluppato dalla comunità che poi pero' National s'e' comprata ed ora è a pagamento.
Mi pare fosse questo:
https://decibel.ni.com/content/docs/DOC-4065
Adesso ho trovato questo ma non so se vada bene:
http://www.ni.com/download/ni-industria ... 0/4779/en/
----------------------------------------
AUTORE: 660
DATA :02/03/2015 - 20:27:32
----------------------------------------
... accidenti... troppo tardi...
proverò quello che hai suggerito...
Grazie
Max
----------------------------------------
AUTORE: 11120
DATA :20/04/2016 - 13:23:48
----------------------------------------
Ma mi avevano consigliato di guardare la tecnologia OPC: sono riuscito a fare qualche esercizietto ma non ho ancora avuto modo di testare il collegamento con un vero PLC.
Spero di poterlo fare entro fine mese. Consigli????
----------------------------------------
================================================================================
Labview: creare un vi che richiama altre vi
================================================================================
AUTORE: 4146
DATA :10/01/2012 - 17:21:10
----------------------------------------
Salve a tutti,
per certe misure che devo fare sto utilizzando due vi che non ho scritto io, ma solo modificato.
una serve ad acquisire delle immagini per ricavarne il fodo e l'altra ad acquisire immagini facendo la sottrazione del fondo.
Quello che vorrei fare è creare una vi che richiama la prima e una volta completata l'acquisizione del fondo mi permetta di passare alla seconda.
ho momentaneamente risolto creando un'unica vi con una struttura flat sequence che esegue la prima nel primo blocco e la seconda nel secondo blocco, ma immagino si possa fare di meglio... solo che non so come.
Sono un neofita totale (seconodo giorno di lavoro su labview), quindi si accettano suggerimenti e più dettagliati sono meglio è... fate come se spiegaste le cose ad un cretino.
Grazie in anticipo
----------------------------------------
AUTORE: 301
DATA :13/01/2012 - 15:53:43
----------------------------------------
In linea di massima, quello che hai descritto è un modo più che corretto.
Considera che LV funziona secondo il dataflow dei "fili" che colleghi alle varie funzioni, quindi la sequence è addirittura di più di quello che ti serve...se colleghi l'uscita di una funzione (oun subvi) all'ingresso di un'altra, quest'ultima verrà eseguita solo quando tutti i dati le arriveranno, quindi solo dopo l'esecuzione della prima!
Aris
----------------------------------------
================================================================================
Conversione segnale analogico sensore SHARP IR
================================================================================
AUTORE: 482
DATA :17/01/2012 - 07:41:37
----------------------------------------
..ma ciao!
ho da poco acquistato questo sensore:
http://www.robot-italy.com/product_info ... ts_id=1501
Come potete vedere dal datasheet l'uscita "valida" (sopra i 4cm) non ha un andamento lineare.
Potete aiutarmi a capire come convertire questo segnale analogico in una distanza?
Vedo che nella pagina c'e' una formula ma parte da dei numeri che credo siano propri del modulo a cui dicono di connetterla (io invece leggo il valore analogico con una NI-USB 6008.
http://www.phidgets.com/documentation/Phidgets/1101.pdf
Questo è il pdf del modulo a cui dicono di connetterlo.
----------------------------------------
AUTORE: 482
DATA :17/01/2012 - 16:01:36
----------------------------------------
Risolto, se a qualcuno puo' interessare, allego questo file xls con tutti i calcoli che servono per convertire il valore analogico letto con una grandezza in cm.
----------------------------------------
================================================================================
blocco di labview da invertire
================================================================================
AUTORE: 4026
DATA :19/01/2012 - 20:17:35
----------------------------------------
salve a tutti ho visto che su labview c'è un blocco che permette di convertire un numero in time stamp...il mio problema e che devo convertire il time stamp in un numero e volevo sapere se si può inverire oppure come si può creare grazie
----------------------------------------
AUTORE: 301
DATA :20/01/2012 - 07:26:53
----------------------------------------
Certo che esiste il modo.....vedi l'allegato!
Aris
----------------------------------------
AUTORE: 43
DATA :20/01/2012 - 11:23:42
----------------------------------------
Inizialmente il tempo era un [U32] poi è diventato un [DBL] infine [timestamp].
io lo convertirei in [DBL]
La differenza fra 2 timestamp è "naturalmente" un [DBL] (vedi i coertion dots sugli ingressi della "sottrazione" che stanno ad indicare una conversione implicita in DBL)
Se si vuole sommare o sottrarre un offset temporale (valore numerico espresso in secondi) ad un valore di timestamp si ottiene ancora un timestamp.
Il valore DBL consente di esprimere un tempo in secondi con una parte decimale valida , penso, fino al millisec.
bye
----------------------------------------
AUTORE: 4026
DATA :20/01/2012 - 14:50:11
----------------------------------------
grazie aris gentilissimo
----------------------------------------
AUTORE: 301
DATA :20/01/2012 - 14:52:50
----------------------------------------
Figurati,
ma Paracarro è stato più preciso (come sempre
).
In ogni caso, il concetto c'è!
Aris
----------------------------------------
AUTORE: 4026
DATA :20/01/2012 - 15:04:13
----------------------------------------
scusate ancora...ho realizzato un blocco di un multiplexer e vorrei far passare un valore numerico attraverso questo...dato che su labview permette solo il passaggio di un segnale binario mica ci sta una soecie di deviatore oppure devo convertire il numero in binario e poi riconvertirlo in decimale??
----------------------------------------
AUTORE: 43
DATA :23/01/2012 - 10:40:45
----------------------------------------
[quote="andrearomano31":3ursdu8n]scusate ancora...ho realizzato un blocco di un multiplexer e vorrei far passare un valore numerico attraverso questo...dato che su labview permette solo il passaggio di un segnale binario mica ci sta una soecie di deviatore oppure devo convertire il numero in binario e poi riconvertirlo in decimale??[/quote:3ursdu8n]
A voler spaccare il capello in 4, sui fili di LabVIEW non "passano" segnali, ma solo valori di variabili più o meno temporanee, più o meno statiche... quindi il primo sforzo che devi compiere è quello di evitare di concepire i "sorgenti" LabVIEW cioè i diagrammi [u:3ursdu8n]come circuiti elettronici[/u:3ursdu8n].
La cosa migliore che potresti fare, è postare quello che hai fatto, cioè l'intero .VI, così permetterai a coloro che animano questo forum, di capire cosa intendi per "blocco di un multiplexer" e "specie di deviatore".
bye
----------------------------------------
================================================================================
Sequence Structures per acquisizione dati.
================================================================================
AUTORE: 3751
DATA :24/01/2012 - 11:54:09
----------------------------------------
Ciao a tutti
ho realizzato un progetto in labview per effettuare delle misure su un amplificatore e a breve dovrò andare in laboratorio ed effettuare vere misure.
In pratica ciò che devo fare è mandare un segnale all' ampli tramite un Waveform Generator comandato da labview; con le prime due misure, acquisendo INPUT e OUTPUT ricavo due funzioni di trasferimento che mi serviranno per una terza misura.
Mi sono organizzato in questo modo: ho creato una Sequence Structures con tre frame, che presenta due segnali in ingresso; nel primo frame comando il Waveform Generator acquisisco IN e OUT e ricavo la funzione di trasferimento che mando al terzo frame; finito si passa al secondo frame: qui il Waveform Generator manda un nuovo segnale all ampli, acquisco IN e OUT e ricavo la seconda funzione di trasferimento che mando al terzo frame; finito il secondo passo al terzo dove acquisico nuovi INPUT e OUTPUT implemento le due funzioni e trovo il segnale finale che mi interessa.
Siccome è la prima volta che "concludo" un progetto e devo fare misure in laboratorio, volevo saper cosa pensate dell organizzazione del progetto, se è efficace o meno se si può fare diversamente o meglio, se si possono coordinare meglio i tempi tra un frame e i successivi per acquisire i vari segnali ecc ecc.. allego un .vi semplificato giusto per farvi capire cosa ho realizzato.
Consigli sono bene accetti..
Grazie
Allego esempio in 8.5
----------------------------------------
================================================================================
Struttura files di progetto
================================================================================
AUTORE: 301
DATA :24/01/2012 - 19:38:56
----------------------------------------
Domandina giusto per curiosità.....
Voi come strutturate (tipicamente)i file relativi ai progetti che implementate?
----------------------------------------
AUTORE: 482
DATA :25/01/2012 - 07:20:53
----------------------------------------
Cosa vuol dire "come strutturate"??
Intendi come li salviamo su disco, come li chiamiamo o come è fatto il codice al loro interno?
----------------------------------------
AUTORE: 301
DATA :25/01/2012 - 07:25:22
----------------------------------------
Si, intendo con quale struttura o ordine logico salvate i files su disco (e nel progetto, dalla versione 8 in poi), quali convenzioni usate per nominare i file, ecc.....
Insomma, quale sorta di ordine logico si usa per mantenere ordinato il set di vi che compongono un progetto!
----------------------------------------
AUTORE: 482
DATA :26/01/2012 - 08:00:22
----------------------------------------
Premessoche io sono un casinista cronico, non uso nessuna struttura particolare.
Il VI principale lo chiamo MAIN o Centrale, a seconda di come mi gira.
Poi tutti gli altri avranno un nome a secodna della loro funzione ( e visto che non ci sono piu' i vecchi limiti di caratteri ecc, cerco di fare in modo che il nome sia il piu' esplicativo possibile.
Poi lascio sempre tutto in una cartella unica, vi, subVI e file di progetto.
----------------------------------------
AUTORE: 301
DATA :26/01/2012 - 08:18:27
----------------------------------------
Madoooooo, Geppo, ma come fai?!?!?!?
Io impazzirei.....
----------------------------------------
AUTORE: 3428
DATA :27/01/2012 - 07:53:15
----------------------------------------
io creo una cartella di progetto con all'interno il file progetto e altre cartelle come ad esempio:
-Config, per i file di configurazione
-source, che all'interno avrà altre cartelle a seconda dell'utilità, per le VI che formeranno il codice del progetto e il VI Main;
-ctrl, per i file controlli definiti come typedef ecc.
-test, per le VI create per fare delle prove, che non fanno parte del progetto ma che potrebbero servirmi in futuro (come semplici driver per HW)
-doc, per eventuale documentazione di HW;
tutto quà.. mi sono fatto una struttura così vuota che utilizzo come template per quando devo iniziare un nuovo progetto..
----------------------------------------
AUTORE: 487
DATA :27/01/2012 - 14:42:03
----------------------------------------
Io uso una struttura molto simile a quella descritta da renaso:
- una cartella per ogni progetto
- sottocartelle per separare il codice sorgente da file di documentazione piuttosto che da file di supporto ecc.
- all'interno della cartella del codice sorgente, diverse sottocartelle per separare le macro funzioni dei vi (tipo vi che aprono finestre di dialogo, vi che consentono input e output, vi di configurazione per l'hardware, vi richiamati dinamicamente, controlli personalizzati, ecc.)
- infine ogni vi riporta nel nome un prefisso specifico del progetto: così per esempio il vi principale non si chiamerà "Main.vi" ma bensì "XXX Main.vi"
----------------------------------------
AUTORE: 645
DATA :29/01/2012 - 09:43:07
----------------------------------------
Io solitamente salvo tutto in una cartella utilizzando anche la visualizzazione del progetto in LabView e se qualche SubVI ha bisogno di file particolari o di documentazione creo sottocartelle dedicate. Per i nomi non ho convenzioni particolari, se non quella di dare ai VI nomi che "al volo" mi fanno capire a che cosa servono.
----------------------------------------
AUTORE: 129
DATA :06/02/2012 - 12:35:17
----------------------------------------
Io come sopra creao una cartella di progetto e sottocartelle cchiave come:
ini per i file di configurazione
low per i vi di livello base (senza subvi per interderci)
high per quelli strutturati
application per i vi stand alone (su applicazioni estese)
documents per la documentazione
exe per i file di installazione e gli eseguibili costruiti
ctrl per i controlli typedef
queste cartelle le collego al progetto mediante autopopulate directory.
file di configurazione particolare come per esempio iak di field point etc. li metto nella cartella principoale imsieme al vi principale solitamente main.vi
quando ho realizzato già qualcosa creo una cartella di distribuzione a mo di backup.
Nicola
----------------------------------------