================================================================================
Creare e salvare in automatico un file
================================================================================
AUTORE: 6677
DATA :02/01/2013 - 16:23:01
----------------------------------------
Buonasera, sono nuovo del forum, per un lavoro di tesi mi sto approcciando all'utilizzo di labview. Il lavoro richiederà il campionamento di vari segnali provenienti da una serie di sensori.
mi hanno spiegato che è un lavoro molto complesso e per il momento sto ancora imparando ad utilizzare il software.
Quello che vorrei fare per adesso è creare un file che salvi automaticamente una stringa e un vettore e che abbia come nome la data corrente.
Ho provato in questo modo ma non funziona, grazie a tutti per i suggerimenti.
[img:8vmb9asy]http://imageshack.us/a/img27/3707/immagine1fd.jpg[/img:8vmb9asy]
----------------------------------------
AUTORE: 6677
DATA :03/01/2013 - 15:59:28
----------------------------------------
ciao a tutti ho provato a modificare il programma e ora riesco a creare e salvare il file ma non riesco a impostare il nome con la data corrente, sapete dirmi cosa vuol dire questo errore e come posso correggerlo?
[img:268r7il4]http://imageshack.us/a/img521/3269/immaginedo.jpg[/img:268r7il4]
----------------------------------------
AUTORE: 129
DATA :05/01/2013 - 07:20:33
----------------------------------------
Ci sono un pò di errori nel tuo codice che fanno si che la path non sia coerente.
Per creare delle path usa il build path.
LA stringa che esce dal blocchetto date/time string nel formato short ti da anche il back slash che è un identificatore per le path e quindi il sistema cerca delle path che non hai creato (es. 12/12/2012).
Qualche tempo fa ho fatto un vi per avere un titolo univovo dei file, prova a vedere se ti è utile, questo è il link[url=http://www.bytelabs.it/?p=285:3nht5b2v]http://www.bytelabs.it/?p=285[/url:3nht5b2v]
----------------------------------------
AUTORE: 6677
DATA :05/01/2013 - 10:08:17
----------------------------------------
Grazie della risposta nicola, alla fine ho risolto il problema modificando leggermente il VI precedente e sono riuscito anche a fare il modo di salvare il file all'orario che desidero.
----------------------------------------
================================================================================
labview+corba+python o java
================================================================================
AUTORE: 3375
DATA :06/01/2013 - 21:25:44
----------------------------------------
Buona sera e grazie anticipatamente
vorrei spiegare un mio ipotetico problema lavoro in una ditta che fa macchinari industriali
la quale ha diverse schede elettroniche dedicate... per gestire le varie schede cambiando i processori hanno deciso di usare corba server come itermediario cosi
da non scrivere piu' volte il software di interefaccia utente.
Visto che corba server fa lui il lavoro duro vorrei andare con labview a interrogarlo...
avevo gia fatto la domanda in passato ma non avevo le informazioni che ho acquisito in questi 6 mesi...
su internet dicono girando che devo comprare un software di 3 parti o costruirmi una dll (cosa che non so neanche da dove iniziare se renderla compatibiel poi con labview)
qualcuno mi puo' dare 2 dritte con esempi semplici??
oppure c'e la possibilita' usando java o python o altro di usarli come software filtro cosi da usare labview come interfaccia utente'?
grazie .
----------------------------------------
================================================================================
file txt leggere e colorare le scritte
================================================================================
AUTORE: 3375
DATA :07/01/2013 - 16:46:48
----------------------------------------
Buona sera
dovrei leggere un file di testo
il quale inizia con un numero progressivo 00000 a 99999 massimo incrementato a +1
dopo questo numero c'e un codice che inizia per esempio con a o con b o con c
devo colorare a rossa b verde e c gialla come posso fare??
grazie
----------------------------------------
AUTORE: 10264
DATA :21/03/2013 - 08:55:22
----------------------------------------
ciao,
la logica è quella presente nel file allegato (versione 8.5)
poi sta a te indirizzare sugli elementi di interesse.
ft
----------------------------------------
AUTORE: 1078
DATA :21/03/2013 - 14:11:06
----------------------------------------
Ciao Joblele,
Ho fatto un'esempietto che dovrebbe risolvere il tuo problema. Il VI dopo essere stato lanciato, attende che l'utente cambi la stringa del Ring, a seconda della stringa selezionata viene rappresentato il suo valore con la lettera evidenziata in colore differente.
[attachment=0:1u9blrga]ColorCharOnTesxt.vi[/attachment:1u9blrga]
Buon lavoro.
----------------------------------------
================================================================================
colorare il listbox
================================================================================
AUTORE: 3375
DATA :08/01/2013 - 15:19:57
----------------------------------------
Buonasera...
ho un file che viene usato come log
devo leggere questo file e nella 12 lettera ho simboli come "W" (attenzione) "F" fallimento "I" informatizione "E" errore
quindi data ora e poi la lettera W o F o I o E
quello che vorrei fare è leggere il file individuare la lettera (fino a qui tutto riuscito) usando gli array
ma vorrei riuscire a esportare il tutto nella LISTBOX indicando per esempio la riga con la W il colore rosso
quella con la riga F in giallo per distinguere a occhio piu velocemente è possibile grazie
esempio
00028 00:00:00 IEX_103
00029 00:00:00 WEX_135
00030 00:00:00 IEX_136
00031 00:00:00 WEX_135
00032 00:00:00 IEX_136
00033 00:00:00 IEX_113
00034 00:00:00 IUI_001
in questo file ci sono 5 righe information e 2 righe di attenzione
grazie
----------------------------------------
AUTORE: 482
DATA :09/01/2013 - 07:28:14
----------------------------------------
Usa la proprietà "Cellfont color" che si trova sotto ad ActiveRow.
LA proprietà activeRow non corrisponde con la riga selezionata ma è un indice che serve per indicare la riga attiva pe rla quale si vuole settare o leggere alcune proprietà.
Quindi ti direi di procedere in questo modo:
1)inserisci il contenuto
2)Setti la cella attiva su quella riga
3)Cambi il colore del testo
----------------------------------------
AUTORE: 3375
DATA :09/01/2013 - 10:36:13
----------------------------------------
intanto ti ringrazio
ho provato a fare quello che mi hai detto e la cosa funziona perfettamente
ora ti provo a fare un altra domanda se posso...
In breve dopo aver colorato le varie scritte di diverso colore...diverso come mi hai indicato...
Vorrei selezionare una riga ed estrarla secondo te è possibile
esempio
i01
i02
i03
i04
con il mouse premo per esempio i03 e riesco a fare la ricerca su un altro file di testo
o riuscire ad estrarlo come selezionato
grazie
----------------------------------------
AUTORE: 482
DATA :09/01/2013 - 14:03:02
----------------------------------------
beh si, a domanda rispondo.
E' possibile
----------------------------------------
AUTORE: 3375
DATA :09/01/2013 - 21:14:08
----------------------------------------
forse mi sono espresso male io ...io intendevo dire come fare?
mi sai dire quale è la proprieta di che individua quello che ho selezionato con il mouse??
sempre sulla listbox?
grazie
----------------------------------------
AUTORE: 482
DATA :10/01/2013 - 07:06:19
----------------------------------------
...hehe....
non è una proprietà ma il controllo stesso che indica quale hai selezionato
----------------------------------------
================================================================================
VI in labview 5.0
================================================================================
AUTORE: 5128
DATA :12/01/2013 - 17:54:49
----------------------------------------
salve
Avrei dei VI scritti in labview 5.0 ma poichè dispongo della versione 8.5 non apre gli stessi in quanto mi dice che la versione è troppo vecchia?
In questi casi come si può ovviare al problema senza scaricare la versione 5.0 del programma ?
Grazie
----------------------------------------
AUTORE: 482
DATA :14/01/2013 - 07:27:06
----------------------------------------
la 5 no, pero' credo tu debba procurarti almeno una versione 6i o 7 per poterli aprire, salvarli e poi riprovarci con la 8.5
----------------------------------------
AUTORE: 5128
DATA :14/01/2013 - 17:08:33
----------------------------------------
infatti così ho fatto grazie 1000
----------------------------------------
================================================================================
Creare un eseguibile da vi express
================================================================================
AUTORE: 129
DATA :13/01/2013 - 16:32:42
----------------------------------------
Salve a tutti, ho un applicazione da compilare, il problema è che la casa costruttice della DAQ mi ha dato un bel vi express per gestire la scheda.
Ho provato a creare un exe che non mi ha dato nessun problema se non che la scheda non legge i dati (non mi da neanche errori) sull'eseguibile creato.
Quando sia hanno dei vi express con delle dll come mi consigliate di procedere per creare un exe con App Builder?:
Premetto che ho dovuto lasciare in express i vi in questione in quanto la scheda non è presente sul mio PC, quindi l'ho creata sul computer del cliente e me la tengo così per timore di perdere i riferimenti della scheda..
Grazie, Nicola
----------------------------------------
AUTORE: 482
DATA :14/01/2013 - 07:25:47
----------------------------------------
Non ho capito, qual'e' il problema?
Non capisci dov'e' che ti da l'errore o che altro?
----------------------------------------
AUTORE: 129
DATA :15/01/2013 - 00:04:44
----------------------------------------
In pratica se lo eseguo da labview tutto funziona, se lo eseguo invece dopo averlo compilato si blocca l'acquisizione (ovvero il vi Express in questione).
Magari lavoro un po meglio sulla visualizzazione errore, boh.
Purtroppo sono obbligato ad usare Express perchè è l'unico driver che mi danno all'advantech.
Grazie, Nicola
----------------------------------------
AUTORE: 482
DATA :15/01/2013 - 07:34:46
----------------------------------------
sarà la solita menata dell'inclusione dei file di supporto.
La dll la apri con un path assoluto?
----------------------------------------
AUTORE: 129
DATA :15/01/2013 - 09:47:45
----------------------------------------
Bravo, no purtroppo non posso gestirla in quanto non riesco ad entrare nell'express per modiicarlo e qundi modificare le path della dll.
Comunque l'ho inclusa come ho incluso per esempio la dll del'SQLlite3 dentro alla costruzione dell'eseguibile, ma tutte funzionano tranne ovviamente quella della DAQ.
Oggi ho provato sulla macchina del cliente ho tolto l'express, e mi da una marea di errori di path (ho visto che usa un file con xml per la configurazione) non trovate (ma come faceva a funzionare l'express?)...
sono veramente distrutto, non comprero mai più una scheda advantech (che poi quando funziona funziona bene) ma la compatibilità con il labview con i nuovi driver DAQNavi è impossibile.
Ora sto provando a compilare sempre da express mettendo fuori gli errori il più possibile in modo da monitorare cosa succede.
Grazie mille Geppo
----------------------------------------
AUTORE: 301
DATA :15/01/2013 - 10:01:52
----------------------------------------
Con che versione di LV stai lavorando?
Se dalla 2009 in poi, prova a spuntare la check "use 8.x file layout".
nella gestione del build di un exe è cambiato molto dal 2009 in poi!
Aris
----------------------------------------
AUTORE: 129
DATA :15/01/2013 - 13:48:03
----------------------------------------
Mo provo Grazie.
Nicola
----------------------------------------
AUTORE: 301
DATA :15/01/2013 - 13:52:25
----------------------------------------
Altra possibilità, potrebbe essere richiamare il vi in maniera dinamica (se non "compilato" funziona)......
----------------------------------------
AUTORE: 129
DATA :15/01/2013 - 14:42:03
----------------------------------------
Sembra che già la prima abbia portato giovamenti sto inviando al cliente che ha la DAQ così vediamo se si muove. Grande Aris.
----------------------------------------
AUTORE: 129
DATA :15/01/2013 - 15:03:36
----------------------------------------
Con la spunta 8.6 FUNZIONA....Aris il mio eroe di oggi, grazie mille, Nicola.
----------------------------------------
AUTORE: 301
DATA :15/01/2013 - 15:12:48
----------------------------------------
Ma figùret!
E' solo che con quella spunta maledetta ci sono impazzito anche io, tempo fa......
Aris
----------------------------------------
AUTORE: 482
DATA :16/01/2013 - 07:16:34
----------------------------------------
Quell'accorgimento me l'avevano consigliato anche per l'utilizzo del toolkit di office.
Se non sbaglio sono dei problemi di compatibilità legati all'utilizzo delle classi.
----------------------------------------
================================================================================
Lettore Barcode USB RFID
================================================================================
AUTORE: 6163
DATA :14/01/2013 - 14:26:41
----------------------------------------
Salve a tutti Ragazzi,
Vorrei chiedervi un aiuto su una questione che mi sta facendo impazzire. Come avrete letto dal titolo aimè ho avuto la sfortuna di lavorare con questo "USB RFID READER IKOS 125 kHz" della Ikos CZ
(essendo ceca l'azienda su internet non sono riuscito a trovare nemmeno uno straccio di manuale in inglese ), e mi trovo di fronte ad un bel dilemma.
Ho avuto modo di effettuare solo alcuni test con questo dispositivo e ho potuto notare che il suo funzionamento è del tutto simile ad una tastiera normale.
Fin qui sembrerebbe tutto abbastanza facile direte, infatti non ha nemmeno bisogno di driver di configurazione o robette strane.
Premettendo che sul banco su cui sto lavorando ho 2 monitor sui quali girano due VI diversi facenti parte dello stesso progetto, ho bisogno che quando su uno di questi mi appare la
schermata che mi indica di effettuare la lettura del Badge tramite quel dispositivo, comunque non debba andare ad influenzare ciò che sta accadendo sull'altro schermo.
Premetto che ho già provato , aimè senza successo
, a fare il keyfocus ripetuto sulla label all'interno della quale devo inserire il barcode, solo che questa condizione mi fa si che
ci sia un lampeggiamento continuo su tutte la label che non è affatto bello da vedere, e penso non sia nemmeno una soluzione funzionale...
Qualcuno mi ha consigliato anche di trovare un modo (HW o SW) che mi permetta per far leggere questo dispositivo come se fosse collegato in seriale ad una porta COM, voi che ne dite?
Avete qualche suggerimento da darmi ?
Grazie in anticipo se qualcuno si interesserà del mio caso
----------------------------------------
AUTORE: 301
DATA :14/01/2013 - 15:17:33
----------------------------------------
letto così, mi sembra solo un problema di "struttura" del tuo programma.....
Devi interrogarli (i BCReader) o ti manda una stringa in automatico quando fa una lettura?
non ho ben capito la storia del keyfocus.....(per far che?!?).
Aris
----------------------------------------
AUTORE: 6163
DATA :14/01/2013 - 15:34:24
----------------------------------------
[quote="aris":24hivzz7]letto così, mi sembra solo un problema di "struttura" del tuo programma.....
Devi interrogarli (i BCReader) o ti manda una stringa in automatico quando fa una lettura?
non ho ben capito la storia del keyfocus.....(per far che?!?).
Aris[/quote:24hivzz7]
Si, Il BCReader mi manda una stringa in automatico non appena viene passato il Badge davanti al lettore.
La stringa è composta da 10 caratteri + 2 finali (<CR>;<LF>) a quanto ho capito.
Inoltre per il keyfocus, forse mi sono espresso male io. In pratica ho provato ad utilizzare tale proprietà per evitare che ci fossero "disturbi" durante la lettura del barcode;
per intenderci che mentre il dispositivo è in lettura ci sia qualcun'altro che interagisce con l'altro monitor per cui il barcode letto viene scritto in un'altra posizione.
Spero di essere stato esaustivo, e mi scuso per eventuali imprecisioni , ma non è da molto che mi sono affacciato al mondo del Labview.
----------------------------------------
AUTORE: 301
DATA :14/01/2013 - 15:46:32
----------------------------------------
ok, tranquillo (cercare di spiegarsi è sempre la cosa più difficile).
Se il BCR è effettivamente visto e gestito come una tastiera, potresti provare a giocare con le funzioni Connectivity>>Input Device Controls.
Con quella libreria, dovresti riuscire ad isolare sul singolo vi i segnali provenienti solo dal BCR.
Aris
----------------------------------------
AUTORE: 6163
DATA :14/01/2013 - 16:00:51
----------------------------------------
A dir la verità avevo già trovato degli esempi su internet che mi indicavano la tua stessa soluzione...
Il problema che mi sono posto però riguarda il fatto che essendo il BCR allo stesso livello della tastiera, se mentre si sta leggendo un barcode c'è
un'altra persona che opera con la tastiera si andrebbe a falsare in qualche modo la stringa di risultato...
Ecco perchè in apertura ho accennato alla fatto se ci fosse una possibilità di far comunicare questo dispositivo come se stesse comunicando in Seriale, in modo tale
che mi metto in ascolto sempre su quella porta e sono sicuro che ciò che mi arriva è frutto della lettura da farte del BCR e non della tastiera....
----------------------------------------
AUTORE: 301
DATA :14/01/2013 - 16:07:53
----------------------------------------
Con quella libreria, devi fare in modo di filtrare gli input derivanti solo da BCR!.
Io ho già lavorato con alcuni BCR, ma avevano tutti una interfaccia seriale (simulata o meno), qualcosa tipo il tuo .......non l'ho mai avuto per mano (e non lo vorrei nemmeno
).
In ogni caso, questa è l'unica soluzione che mi viene in mente, non credo nemmeno esistano dei convertitori per trasformare quel protocollo in seriale.
Mi sa che puoi solo provare filtrando gli imput.....
Aris
----------------------------------------
AUTORE: 6163
DATA :14/01/2013 - 16:58:56
----------------------------------------
Probabilmente hai ragione, adesso provo a seguire questa direzione, sperando che mi porti al risultato sperato...
Grazie
----------------------------------------
================================================================================
Quesito SAM
================================================================================
AUTORE: 5128
DATA :14/01/2013 - 18:47:15
----------------------------------------
Salve,
Nel VI allegato, c'è un mio tentativo di far visualizzare le forme d'onda seno e coseno di due segnali distinti.
L'esercizio lo allego anche nella versione che viene visualizzata con i waveform chart ma vorrei capire cosa sbaglio nella creazione del waveform graph...
Grazie
----------------------------------------
AUTORE: 301
DATA :15/01/2013 - 07:02:21
----------------------------------------
Il "Chart" ha una propria memoria e mantiene visualizzati i punti che vai a graficare.
Il "Graph" visualizza solamente ciò che di volta in volta vai a passargli.
Se vuoi visualizzare le tue forme d'onda con il graph, devi costruirti un array di valori ed andare a visualizzare quello.
Aris
----------------------------------------
AUTORE: 5128
DATA :16/01/2013 - 17:38:29
----------------------------------------
Grazie cercherò di modificare il VI....
Buona serata
----------------------------------------
================================================================================
messaggi in sovraimpressione e sostituzione carattere.
================================================================================
AUTORE: 4802
DATA :15/01/2013 - 22:30:44
----------------------------------------
Salve a tutti. vorrei gentilmente porvi 2 domande:
1)come faccio a sostituire la virgola degli elementi di un array di numeri reali (ad esempio 23,5) con il punto (23.5)?
2)è possibile in labview fare in modo vengano mostrate in sovraimpressione finestre di warning (con del testo scritto da me all'interno) nel caso venga modificato un determinato valore di una variabile?
vi ringrazio per la vostra disponiblità
----------------------------------------
AUTORE: 482
DATA :16/01/2013 - 07:21:08
----------------------------------------
...ma ciao!
1) Dipende da come sono trattati i numeri, se si parla di stringhe allora lo si puo' fare con le funzioni di replace dellestringhe. Se invece si parla di oggetti numerici, devi andare nelle impostazioni di labVIEW. dla menu Tools->Options
Da qualche parte c'e' uan spunta che si chiama Use Local Decimal Point. Spuntalo o togli la spunta a seconda di quello che vuoi fare. In alternativa imposta nel tuo sistema operativo il "." come separatore decimale.
2) Ci sono due modi:
a) Utilizzare i blocchetti già pronti che trovi sotto Dialog & User Interface
b) Creare un subVI fatto come vuoi tu.
----------------------------------------
AUTORE: 4802
DATA :17/01/2013 - 13:38:36
----------------------------------------
[quote="gepponline":34l2l7so]...ma ciao!
1) Dipende da come sono trattati i numeri, se si parla di stringhe allora lo si puo' fare con le funzioni di replace dellestringhe. Se invece si parla di oggetti numerici, devi andare nelle impostazioni di labVIEW. dla menu Tools->Options
Da qualche parte c'e' uan spunta che si chiama Use Local Decimal Point. Spuntalo o togli la spunta a seconda di quello che vuoi fare. In alternativa imposta nel tuo sistema operativo il "." come separatore decimale.
2) Ci sono due modi:
a) Utilizzare i blocchetti già pronti che trovi sotto Dialog & User Interface
b) Creare un subVI fatto come vuoi tu.[/quote:34l2l7so]
intanto grazie
. I miei numeri sono oggetti numerici, non stringhe. Ho provato con l'opzione "use localized decimal point". ho fatto un vi di prova in cui scrivo un numero in un numeric control e lo collego a un indicatore per vedere appunto il numero che ho scritto. sia che attivi o disattivi l'icona suddetta mi fa la virgola nell'indicatore. E inoltre il punto non me lo prende neanche mentre scrivo il numero decimale.
----------------------------------------
AUTORE: 301
DATA :17/01/2013 - 17:40:50
----------------------------------------
Se disattivi "use local. Decimal point" poi devi specificare al labview di usare il punto come separatore decimale e riavviarlo.
----------------------------------------
AUTORE: 301
DATA :17/01/2013 - 19:52:50
----------------------------------------
Scusa, ho detto una c******a.....
Devi riavviare il LV, si, ma LV utilizza di default il punto.
La cosa migliore (di solito e per quel che mi riguarda) è utilizzare il decimal point del sistema ed al massimo impostare quello (a livello di sistema), questo perchè se fai un programma di acquisizione e ti vai a salvare dati da visualizzare in excel, quest'ultimo (se il decimal point è diverso) non riconoscerà i valori!
Altra possibilità è quella (come suggeriva giustamente Geppo) di lavorare con le stringhe, e magari verificare all'inizio del tuo programma il decimal point utilizzato dal sistema corrente.
Aris
----------------------------------------
AUTORE: 4802
DATA :17/01/2013 - 22:01:33
----------------------------------------
[quote="aris":1hb205rk]Scusa, ho detto una c******a.....
Devi riavviare il LV, si, ma LV utilizza di default il punto.
La cosa migliore (di solito e per quel che mi riguarda) è utilizzare il decimal point del sistema ed al massimo impostare quello (a livello di sistema), questo perchè se fai un programma di acquisizione e ti vai a salvare dati da visualizzare in excel, quest'ultimo (se il decimal point è diverso) non riconoscerà i valori!
Altra possibilità è quella (come suggeriva giustamente Geppo) di lavorare con le stringhe, e magari verificare all'inizio del tuo programma il decimal point utilizzato dal sistema corrente.
Aris[/quote:1hb205rk]
scusa ma non ho capito. Io non uso stringhe ma numeri decimali. Come faccio a fare in modo di vedere il punto e non la virgola? non ho capito la procedura da eseguire.
----------------------------------------
AUTORE: 4802
DATA :17/01/2013 - 22:02:35
----------------------------------------
[quote="MrDundee":2f0u8nxr][quote="aris":2f0u8nxr]Scusa, ho detto una c******a.....
Devi riavviare il LV, si, ma LV utilizza di default il punto.
La cosa migliore (di solito e per quel che mi riguarda) è utilizzare il decimal point del sistema ed al massimo impostare quello (a livello di sistema), questo perchè se fai un programma di acquisizione e ti vai a salvare dati da visualizzare in excel, quest'ultimo (se il decimal point è diverso) non riconoscerà i valori!
Altra possibilità è quella (come suggeriva giustamente Geppo) di lavorare con le stringhe, e magari verificare all'inizio del tuo programma il decimal point utilizzato dal sistema corrente.
Aris[/quote:2f0u8nxr]
scusa ma non ho capito. Io non uso stringhe ma numeri decimali. Come faccio a fare in modo di vedere il punto e non la virgola? non ho capito la procedura da eseguire.[/quote:2f0u8nxr]
e in merito al decimal point del sistema non saprei come impostarlo. Ho windows 7. Grazie
----------------------------------------
AUTORE: 301
DATA :18/01/2013 - 06:54:35
----------------------------------------
riassumo:
Se deselezioni "use loc dec point" e riavvii il Labview, dovresti trovarti i punti al posto delle virgole (dovrebbe essere il default di LV).
Il sistema lo imposti da "pannello di controllo" >> impostazioni internazionali, in Win7 non so come si chiamino i poercorsi esattamente.
Aris
----------------------------------------
AUTORE: 129
DATA :18/01/2013 - 13:19:20
----------------------------------------
Altrimenti devi mostrare i dati come suiggerivano i miei colleghi sopra, in un indicatore/controllo stringa.
----------------------------------------
AUTORE: 4802
DATA :19/01/2013 - 13:55:41
----------------------------------------
ok risolto, vi ringrazio tutti quanti per la vostra disponibilità
. Praticamente sbagliavo nel fatto che, dopo aver disabilitato quell'opzione, non riavviavo labview ma riaprivo subito il vi quindi non mi apportava la modifica
----------------------------------------
================================================================================
Un VI che non capisco
================================================================================
AUTORE: 5128
DATA :16/01/2013 - 17:36:14
----------------------------------------
Salve,
Una traccia d'esame mi dice di realizzare un sub-VI che data una forma d'onda ed una soglia in ingresso, restituisca in uscita un vettore contenente gli istanti temporali in cui il segnale di ingresso passa da un valore inferiore alla soglia ad uno superiore.
In allegato ho la soluzione, un VI realizzato dal professore, che secondo labview è assemblato correttamente, però non da nessun segno di vita.
Come mai ha scelto di realizzare la forma d'onda in quel modo?
Con che valori dovrei inizializzare per avere dei risultati nel vettore?
Grazie
----------------------------------------
AUTORE: 301
DATA :17/01/2013 - 07:22:40
----------------------------------------
A parte non essere "corretto" (a mio avviso), quello che hai posteto è (come dici tu) un SUBVI!
Lo devi richiamare all'interno di un vi che generi un'onda >> estragga gli istanti (tuo subvi) >> ti visualizzi il vettore in uscita.
Ti allego un esempio
Aris
----------------------------------------
AUTORE: 5128
DATA :17/01/2013 - 16:25:29
----------------------------------------
Aris, grazie
Potresti però salvarli in modo che possa visualizzarli con labview 8.5 ?
Così evito di installare il nuovo, perchè dovrei trovarlo....
Buona serata
----------------------------------------
AUTORE: 301
DATA :17/01/2013 - 16:46:06
----------------------------------------
fatto, vedi se gira tutto (a volte nei salvataggi all'indietro ci sono problemi).
Quel control per cui chiedevi, E' una forma d'onda, ossia un cluster composto da:
1_ l'istante T0
2_ i dt tra i punti
3_ il vettore dei punti formanti l'onda
Quella forma d'onda l apuoi graficare anche in un Graph, ma i suoi elementi sono poprio quelli!
----------------------------------------
================================================================================
moltiplicare due elementi di un array
================================================================================
AUTORE: 5128
DATA :16/01/2013 - 21:29:54
----------------------------------------
Salve,
Dovrebbe esserci una funzione che dati in ingresso due indici e un array passato in ingresso, fornisce in uscita i due elementi.
Allego il simbolo grafico di un esercizio simile svolto, anche se su labview 8.5 nn riesco a trovarlo
Voi mi sapreste dire il nome dell'icona o della funzione?
Grazie
----------------------------------------
AUTORE: 645
DATA :16/01/2013 - 22:03:37
----------------------------------------
A memoria non so... Puoi però estrarre i due dati con Array Index e poi moltiplicarli...
----------------------------------------
AUTORE: 4251
DATA :16/01/2013 - 23:13:44
----------------------------------------
Ciao,
Basta usare un index array normale ed impostarlo con due ingressi:
Quando ci passi sopra con il mouse vedrai due quadrati neri uno sopra e uno sotto al blocchetto, trascina il quadrato sotto verso il basso per aumentare il numero degli ingressi.
----------------------------------------
AUTORE: 5128
DATA :17/01/2013 - 16:50:27
----------------------------------------
era index array infatti!!!
Thanks
----------------------------------------
================================================================================
case structure
================================================================================
AUTORE: 5128
DATA :19/01/2013 - 11:02:53
----------------------------------------
Salve,
Ho impostato una case structure. In pratica se il caso è vero deve passare in uscita l'elemento di un vettore mentre se falso non dovrebbe fare nulla.
Tuttavia questa secondo opzione non riesco a impostarla. Mi sapreste dire se la struttura case potrebbe essere impostata su un caso solo?
----------------------------------------
AUTORE: 129
DATA :19/01/2013 - 13:48:01
----------------------------------------
Una case si presenta di default quando la depositi sul diagramma con i due Casi True e False(default).
Se non vedi un caso può essere perchè:
Devi cliccare con il selettore (il dito) sul caso in modo che ti mostri gli altri casi disponibili.
Se invece non lo visualizzi proprio devi fare tasto desto sul bordo del case structure e selezionare add CAse after o before oppure duplicate Case.
In ingresso del case devi collegare un controllo boolean.
Ora devi inserire il codice nella finestra case e il codice nella finestra true.
----------------------------------------
AUTORE: 5128
DATA :19/01/2013 - 15:00:32
----------------------------------------
Mi sono spiegato male....
Io vorrei che mi considerasse solo un caso.
In sostanza devo determinare indice e valore dell'elemento di un vettore con la differenza massima rispetto ad un elemento x impostato dall'utente.
Nell'utilizzare la struttura case voglio che mi consideri solo il caso true, mentre se false non dia niente in uscita.
Grazie
----------------------------------------
AUTORE: 4251
DATA :19/01/2013 - 16:19:59
----------------------------------------
Ciao,
La struttura case può essere utilizzata con un solo caso (non serve quindi a nulla) quando in ingresso non ha un booleano ed il caso in questione è settato come Default.
Il tuo problema se ho capito bene dalla tua frase "In sostanza devo determinare indice e valore dell'elemento di un vettore con la differenza massima rispetto ad un elemento x impostato dall'utente." è risolvibile senza case, ti allego la prima soluzione che mi è venuta in mente.
Spero possa esserti utile.
----------------------------------------
AUTORE: 5128
DATA :19/01/2013 - 16:43:57
----------------------------------------
Perfetto Stefano
gentilissimo!!!
----------------------------------------
================================================================================
Esercizio numeri casuali
================================================================================
AUTORE: 5128
DATA :20/01/2013 - 13:14:38
----------------------------------------
Salve,
Dovrei creare un VI che generi numeri casuali tra 0 e 10, e ne trovi il massimo e il minimo. Il programma si deve arrestare quando sono stati creati 20 numeri casuali o quando l’operatore preme un tasto di stop.
In allegato c'è un mio tentativo, ma non riesco a inserire tutti i 20 valori nell'array in modo che poi lui mi faccia scaturire max & min.
Inoltre vorrei sapere come condizionare l'uscita con la pressione di un tasto.
Se potreste dirmi dove sbaglio ve ne sarei grato
----------------------------------------
AUTORE: 129
DATA :20/01/2013 - 17:34:09
----------------------------------------
Non usare lo shift register non ti serve per quello che devi fare, invece collega direttamente l'uscita del prodotto tra random e 10 direttamente sul bordo, questo permette l'indicizzazione dei valori in un array che avrai disponibile al termine del for loop, che hai appunto inizializzato a 20.
Non capisco cosa intendi per condizionare l'uscita, quindi non sono in grado di aiutarti per questo.
----------------------------------------
AUTORE: 5128
DATA :20/01/2013 - 17:50:56
----------------------------------------
Ho fatto come dici e riallego, però i numeri restano all'interno del for e non vengono inviati all'interno dell'array, ed è qua che mi blocco.
Per condizionare l'uscita intendo di poter stoppare il ciclo for prima che vengano generati i 20 valori mediante la pressione di un tasto
Grazie
----------------------------------------
AUTORE: 129
DATA :21/01/2013 - 10:03:49
----------------------------------------
Ma intendi che vuoi vedere i numeri generati mentre il ciclo viene eseguito?
O vuoi vedere l'array che si popola durante l'esecuzione del For?
Per il tasto di interruzione loop, puoi:
Da versioni successive alla 8.6(mi sembra) basta ceh fai tatso destro sul bordo e spunti conditional terminal, al quale andrai ad associare un pulsante.
Se invece non vuoi sbagliare sposta tutto su un while loop e segui l'esempio che ti allego.
Il temporizzatore serve solo perchè senza non vedi i numeri che si popolano (impostalo > 250ms se no non vedi nulla).
----------------------------------------
AUTORE: 5128
DATA :21/01/2013 - 18:56:01
----------------------------------------
Grazie Nicola,
Ho realizzato il tuo VI e va una meraviglia!!!
Grazie
----------------------------------------
================================================================================
ok button
================================================================================
AUTORE: 8101
DATA :20/01/2013 - 23:40:48
----------------------------------------
ho un indicatore numerico con un numero scritto dentro, ad esempio 2,54.
ho un controllo numerico vuoto ( quello con le frecce giù e su, per capirci).
ho anche un OK button.
quello che vorrei fare è la seguente:
clikkando sul button vorrei copiare il valore dell'indicatore numerico 2,54 dentro il controllo numerico.
operazione banale,ma non ci riesco.
----------------------------------------
AUTORE: 482
DATA :21/01/2013 - 07:07:25
----------------------------------------
ciclo while con dentro:
button->collegato ad un case->se TRUE variabile locale dell'indicatore in lettura, collegata alla variabile locale del controllo in scrittura
FINITO
Un indicatore è sempre e solo in scrittura, viceversa un controllo è sempre e solo in lettura per poter leggere da un indicatore o scrivere in un controllo devi usare le variabili locali di essi.
Per creare le variabili locali basta clikkare col tasto destro sull'oggetto e poi fare create->local variable poi sulla variabile, sempre col destro impostare se è in lettura o in scrittura.
----------------------------------------
================================================================================
Plottare dati salvati su un file di testo
================================================================================
AUTORE: 8180
DATA :22/01/2013 - 16:13:03
----------------------------------------
Salve a tutti,
sono un neofita del forum così come dell'ambiente informatico ed ho da pochissimo iniziato a familiarizzare con labview per necessità accademiche.
Il problema alla base di questo post è che ho a disposizione vari dati acquisiti in laboratorio e devo plottarli su un grafico con labview. Qualcuno sa come potermi aiutare step by step in questa "impresa"?
Ho provato a cercare argomenti simili nel forum ma non mi sono stati granchè di aiuto...
Grazie in anticipo a chi cercherà di aiutarmi.
----------------------------------------
AUTORE: 482
DATA :23/01/2013 - 07:23:00
----------------------------------------
...ma ciao!
innanzitutto ti consiglio di dare un occhio agli esempi che trovi in labVIEW, si trova quasi sempre la soluzione al problema.
Avendo tu un file di testo, presumo che sia tabulato.
Quindi potresti iniziare utilizzando un Read spreadsheet file. Cerca negli esempi
----------------------------------------
AUTORE: 129
DATA :23/01/2013 - 09:00:59
----------------------------------------
Dipende questi dati in quale formato e supporto li hai, come ti anticipava Geppo ipotizzando un foglio dati(es excel) di utilizzare un blocco read spreadsheet file per portare sul labview i dati.
Altro punto è il tipo di grafico su cui li vuoi rappresentare.
Se hai già una colonna di dati per le x, allora devi utrilizzaer il tipo di grafico "x,y"; vicevesra se non ce l'hai puoi usare o il chart o il graph.
Un aiuto sarebbe avere un esempio dei dati, che so se hai un foglio excel con dei dati di esempio o puoi postare il file da cui devi pescare e plottare i dati.
Ciao, Nicola
----------------------------------------
AUTORE: 8180
DATA :23/01/2013 - 09:57:05
----------------------------------------
Vi ringrazio innanzitutto per il "pronto soccorso".
I files in mio possesso sono salvati su dei blocchi note, e si, dopo varie righe che descrivono l'acquisizione degli stessi dati, ci sono 2 colonne rappresentative dei 2 assi di un diagramma cartesiano. Quello che ho allegato rappresenta un esempio del file con cui devo lavorare; non posso postare l'originale perchè è troppo grande.
Ho provato a visualizzare l'help del "read from spreadsheet file" ma, essendo alle primissime armi, non ho risolto nulla.
----------------------------------------
AUTORE: 660
DATA :23/01/2013 - 12:45:34
----------------------------------------
Ciao,
prova a dare un'occhiata all'esempio che ti allego... poi adattalo a quelle che sono le tue esigenze e soprattutto sistemalo... ti ho messo solo la lettura ed il grafico, ma per il resto la programmazione fa pena...
Max
[attachment=0:26arrgva]Untitled 1.vi[/attachment:26arrgva]
----------------------------------------
AUTORE: 129
DATA :23/01/2013 - 14:14:20
----------------------------------------
eccoti l'esempio
nell'esempio cancello la parte descrittiva del file per avere fuori solo la tabella dati, quindi creo il cluster di array per popolare il grafico x,y.
Devi richiamare la path del file .txt prima di eseguire il vi.
ti ho allegato sia un vi snippet(pbasta che trascini sul diagramma; sia la versione vi per labview 11sp1.
Ciao, Nicola
----------------------------------------
AUTORE: 660
DATA :23/01/2013 - 14:31:27
----------------------------------------
beh, come dire, decisamente più elegante...
Max
----------------------------------------
AUTORE: 8180
DATA :23/01/2013 - 15:23:03
----------------------------------------
Caro Nicola sono contento di informarti che questo VI va alla grande; avrei però bisogno di qualche chiarimento:
1)perchè come polymorphic istance hai selezionato string piuttosto che double o integer?
2)è la stessa cosa utilizzare il tab constant o quello di default?
3)al posto di delete from array potevi selezionare in read from spreadsheet file 26 come start read offset?
4)a che serve specificare gli indici di colonna e o riga?
Grazie a te e a Max per la vostra preziosa disponibilità.
----------------------------------------
AUTORE: 129
DATA :23/01/2013 - 15:34:31
----------------------------------------
Allora ho fatto in modo sbrigativo però:
[quote:38pub621]1)perchè come polymorphic istance hai selezionato string piuttosto che double o integer?
2)è la stessa cosa utilizzare il tab constant o quello di default?
3)al posto di delete from array potevi selezionare in read from spreadsheet file 26 come start read offset?
4)a che serve specificare gli indici di colonna e o riga?[/quote:38pub621]
1) string perchè il file completo non contiene solo numeri.
2) il tab o una costante stringa con code display abilitato e all'interno il codice "\t". Il tab è fondamentale perchè la tua tabella ha le colonne separate da tab.
3) No perchè l'offset è in caratteri e pensando questo potesse essere dinamico (nel senso che il numero di caratteri possa cambiare) ho pensato di estrarre l'array di stringhe e di togliere le righe non necessarie (che suppongo rimangano uguali indipendntemente dalle variazioni di caratteri).
4)Serve per estrarre in due arry distinti il vettore x(colonna0) e il vettore y(colonna1)
Ovviamente ragionadoci un pò su si può migliorare, era solo per darti un esempio funzionanete rapidamente.
----------------------------------------
AUTORE: 8180
DATA :23/01/2013 - 15:50:12
----------------------------------------
D'accordo, grazie ancora per aver risolto il problema.
----------------------------------------
AUTORE: 482
DATA :24/01/2013 - 07:07:03
----------------------------------------
alla domanda 2 la risposta è SI, è indifferente colleare una costante o non collegare niente perchè di default considera comunque il tab
----------------------------------------
AUTORE: 8180
DATA :24/01/2013 - 10:02:02
----------------------------------------
Come mai se provo a replicare il codice datomi da Nicola nello stesso VI, in modo tale da poter plottare due file di testo "contemporaneamente", il programma mi comunica che non c'è abbastanza memoria per completare l'operazione? Nel diagramma a blocchi mi evidenzia il secondo [u:1cnpdbrk]Fract/Exp String To Number Function[/u:1cnpdbrk] come punto in cui si è fermata l'elaborazione del codice...
----------------------------------------
AUTORE: 129
DATA :24/01/2013 - 11:37:26
----------------------------------------
Ma hai usato un file delle stesse dimensioni o uno più grande?
Io ho ricopiato il codice in tre vi diversi e non mi da problemi.
In ogni caso crea un subvi del codice inviato con i terminali path(ingresso) e cluster(uscita per x.ygraph) e se vuoi l'array (uscita tabella valori).
Quindi questo codice lo puoi mettere nel tuo main vi (magari come rientrante dato l'accesso multiplo contemporaneo).
Non so prova a postare il codice che hai generato e che ti genera l'errore insieme al file esatto che utilizzi per caricare i dati(se ne hai due entrambi).
Grazie, Nicola
----------------------------------------
AUTORE: 8180
DATA :24/01/2013 - 12:11:09
----------------------------------------
I due file che vorrei plottare contemporaneamente con lo stesso VI hanno la stessa dimensione...
----------------------------------------
AUTORE: 129
DATA :24/01/2013 - 12:53:43
----------------------------------------
Non mi da errori.
Ho solo notato che hai impostato il secondo grafico in modo diverso dal primo quindi la rappresentazione ti viene diversa.
----------------------------------------
AUTORE: 129
DATA :24/01/2013 - 12:57:36
----------------------------------------
Ecco un esempio con vi rientranti.
----------------------------------------
AUTORE: 8180
DATA :24/01/2013 - 14:26:04
----------------------------------------
Ho provato a caricare due volte il medesimo file, ma mi segnala quello che ho allegato..
----------------------------------------
AUTORE: 8180
DATA :24/01/2013 - 15:56:02
----------------------------------------
Provando a caricare due file di testo del peso di 83Mb ciascuno mi compare l'errore secondo il quale non c'è abbastanza memoria per completare il Vi.
Se invece provo a caricare un file di testo di 83Mb e un altro di 28Kb il Vi va che è una bellezza....
----------------------------------------
AUTORE: 660
DATA :24/01/2013 - 16:25:56
----------------------------------------
allora potresti provare a farlo in sequenza, prima fai il grafico del primo file e poi l'altro...
----------------------------------------
AUTORE: 129
DATA :24/01/2013 - 16:34:27
----------------------------------------
Infatti il problema è il volume caricato in memoria, quindi devi utilizzare una strategia per dividerlo.
senza troppi fronzoli per ora ti posso consigliare di mettere la lettura in serie invece che in parallelo.
Puoi usare una sequence oppure (meglio utilizzare il cluster di errore) per dare un ordine di apertura.
Nell' immagine vedi come devi collegare i due vi allegati che possiedono sia la rientranza attiva e sia il cluster di errore per collegarti secondo le regole del dataflow.
Spero risolva.
Altrimenti puoi aumentare il paging del SO se usi windows, come suppomngo.
nicola
----------------------------------------
AUTORE: 8180
DATA :24/01/2013 - 17:40:01
----------------------------------------
Per aprirli in sequenza avevo provato ad utilizzare una "flat sequence" ma nulla da fare..
----------------------------------------
AUTORE: 129
DATA :24/01/2013 - 20:57:52
----------------------------------------
[quote="pescecannuccia":1kdvsk2w]Per aprirli in sequenza avevo provato ad utilizzare una "flat sequence" ma nulla da fare..[/quote:1kdvsk2w]
Ma con la versione che ti ho inviato ti da errore?
Hai provato ad aumentare il file di paging?
83Mb è un bel po di spazio, bisogna trovare un modo per evitare che carichi tutto in memoria.
Puoi provare ad utilizzare number of rows che nel read spreadsheet del LV2012 è disponibile, così porti solo parti del file, poi ripeti l'operazione fino a esaurire il file.
Ciao, Nicola
----------------------------------------
AUTORE: 8180
DATA :25/01/2013 - 09:02:46
----------------------------------------
Con la versione che mi hai dato tu non mi visualizza nulla, nel senso che si riempiono le colonne degli indicatori table data e cluster for xy graph.
Non ho la minima idea di cosa sia il file di paging.
Con un primo read spreadsheet file indico nel number of rows quante ne deve leggere, poi nel secondo read from spreadsheet file imposto come start of read offset il numero della riga alla quale si è fermata la prima lettura?
Ma non centra niente il fatto che mi indica che il running del VI si è bloccato a Fract/Exp String To Number Function?
Grazie per la pazienza.
----------------------------------------
AUTORE: 129
DATA :28/01/2013 - 09:29:04
----------------------------------------
[quote="pescecannuccia":3098u760]si riempiono le colonne degli indicatori table data e cluster for xy graph.[/quote:3098u760]
Quindi si popolano l'array e il grafico, non era così che doveva funzionare?
[quote:3098u760]Non ho la minima idea di cosa sia il file di paging.[/quote:3098u760]
E' un estensione della RAM presa dal disco rigido (la size del paging corrisponde a quanto disco rigido vuoi dedicare a questo lavoro), si modifica da Windows/pannello di controllo etc.
[quote:3098u760]Con un primo read spreadsheet file indico nel number of rows quante ne deve leggere, poi nel secondo read from spreadsheet file imposto come start of read offset il numero della riga alla quale si è fermata la prima lettura? [/quote:3098u760]
Si, però è solo un tentativo, io non ho mai provato, mi viene il dubbio guardando come è fatto il VI che ti carichi comunque in memoria tutto il file, quindi questa soluzione potrebbe essere inefficace.
[quote:3098u760]Ma non centra niente il fatto che mi indica che il running del VI si è bloccato a Fract/Exp String To Number Function?[/quote:3098u760]
Si hai ragione, sono troppi elementi processati contemporaneamente in memoria, però questo è determinato secondo me dal fatto che mandi avanti tutto il vettore (80MB di dati), quindi il problema lo devi gestire elaborando porzioni del codice e collezionandole, quindi la soluzione è di trattare il file a pezzi.
Prova a vedere se la soluzione (posticcia) che ti allego possa ispirarti.
Nicola
----------------------------------------
AUTORE: 8180
DATA :28/01/2013 - 11:24:47
----------------------------------------
Non va e non riesco a capire come uscirne..
Il problema è che nel VI che dovrei creare devo lavorare con più files di grandezza più o meno di 80 Mb ciascuno.
----------------------------------------
AUTORE: 301
DATA :28/01/2013 - 12:38:51
----------------------------------------
Ciao, in mancanza dei file originali, mi viene da pensare solamente a qualcosa come in allegato, ossia cercare di ottimizzare l'uso della memoria del LV.
Se non mi sbaglio, a prescindere dalla memoria del pc, il LV (su win xp) dovrebbe gestire al max 1 GB di RAM, quindi non credo (ma probabilmente mi sbaglio) che anche giocando con il paging si possa risolvere qualcosa.
Se hai una versione di LV abbastanza recente, cerca di implementare qualcosa del genere, evitando le diverse copie degli array in memoria.
Aris
----------------------------------------
AUTORE: 8180
DATA :28/01/2013 - 12:44:39
----------------------------------------
Ciao Aris,
grazie per il tuo aiuto. In che senso dovrei cercare di ottimizzare l'uso della memoria del LV?
Ripeto che purtroppo sono un neofita...
----------------------------------------
AUTORE: 301
DATA :28/01/2013 - 12:56:55
----------------------------------------
Vedi l'allegato.
Ci sono delle funzioni che ti permettono di gestire (più o meno) le allocazioni di memoria.
Il vi che ti ho postato, carica l'array dal file (string), lo trasforma in double e lo scrive nella stessa allocazione del primo.
è solo un esempio, va ottimizzato (è una idea e l'ho fatta al volo), ma credo sia una opzione da vagliare.
Aris
----------------------------------------
AUTORE: 8180
DATA :28/01/2013 - 16:17:47
----------------------------------------
D'accordo, grazie ancora per il supporto. Proverò, proverò e proverò e ti farò sapere
----------------------------------------
AUTORE: 8180
DATA :30/01/2013 - 16:17:28
----------------------------------------
Cari iscritti al forum,
sono felice di annunciarvi che il problema è stato parzialmente risolto seguendo la guida presente nel Labview Help "Extending Virtual Memory Usage for 32-bit Windows". Così facendo infatti il VI è riuscito a plottare 2 files (anche 3) di dimensione circa pari a 80 Mb contemporaneamente.
Tuttavia nel VI che ho allegato lo stesso problema sussiste. In quest'ultimo ho cercato di effettuare una complex cepstrum del segnale di partenza salvato su file di testo. Dato che il mio pc disponde di 4Gb di RAM (di cui 3,25Gb utilizzabili da quanto letto in "proprietà del sistema") avrebbe senso eseguire una nuova modifica nel BCD in modo da utilizzare tutta la RAM a disposizione?
----------------------------------------
================================================================================
IMAQ Vision e vision and motion module
================================================================================
AUTORE: 6224
DATA :24/01/2013 - 15:48:46
----------------------------------------
Salve a tutti,
facendo alcune ricerche sulla rete ho letto qualcosa che potrebbe servire ai miei scopi. In particolare la possibilità di accedere all'output video di un PXI con RT.
Sembra sia possibile fare ciò usando il componente RT video out, volevo sapere dove trovo questo componente? ovvero è un pacchetto da comprare ma devo avere bisogno dei driver IMAQ vision, del modulo vision & motion entrambi o cosa? Inoltre sapete se esistono versione di prova di tali componenti? vorrei esser sicuro che facciano quello che mi serve prima di far una tale spesa.
Vi ringrazio in anticipo
----------------------------------------
================================================================================
Comunicazione TCP/IP con Labview e Siemens S7-1200
================================================================================
AUTORE: 822
DATA :25/01/2013 - 14:56:42
----------------------------------------
Ciao,
qualcuno ha esperienza di comunicazione su ethernet fra Labview e i PLC Siemens S7-1200?
Sto usando dei VI che funzionano sul S7-300 ma non sul 1200.
Vorrei non utilizzare il protocollo OPC..
Grazie in anticipo
----------------------------------------
AUTORE: 301
DATA :27/01/2013 - 19:27:16
----------------------------------------
sai qualcosa del protocollo?
comunicano in modbus?
Hai controllato le varie impostazioni dell's-1200?
Aris
----------------------------------------
AUTORE: 645
DATA :28/01/2013 - 14:46:09
----------------------------------------
Avete qualche esempio di VI funzionante per S7-200? Con che tipo di comunicazione lavorate?
----------------------------------------
AUTORE: 822
DATA :31/01/2013 - 09:47:55
----------------------------------------
Grazie per le risposte.
Ho risolto, è un problema della configurazione del protocollo TPKT. La stringa di configurazione da inviare è diversa a seconda che si tratti di un S7-300 o S7-1200.
Se è utile posso fare uno screenshot dell'applicazione.
Ciao,
Giuseppe
----------------------------------------
AUTORE: 8673
DATA :12/02/2013 - 00:43:13
----------------------------------------
Ho lo stesso problema ,non voglio usare OPC e da tempo che uso VI per la comunicazione con S7-300,e mi serve la stringa di configurazione da inviare e si può gentilmente spiegarmi come ha risolto.
Grazie.
----------------------------------------
AUTORE: 822
DATA :12/02/2013 - 08:02:56
----------------------------------------
Certo, ti allego lo snippet (fatto da labview 2012) con la configurazione, con questo dovresti risolvere. Se hai problemi fammi sapere.
Ciao!
P.S.: ho compresso il file, perchè il png è troppo largo..
----------------------------------------
AUTORE: 660
DATA :12/02/2013 - 08:04:39
----------------------------------------
[quote="giuseppe.l74":152dumzk]
Se è utile posso fare uno screenshot dell'applicazione.
[/quote:152dumzk]
Beh... se si potesse avere sarebbe sicuramente utile...
Max
----------------------------------------
AUTORE: 8673
DATA :12/02/2013 - 13:57:21
----------------------------------------
Grazie giuseppe,
appena mi arriva un S7-1200 la provo.
----------------------------------------
AUTORE: 8673
DATA :12/02/2013 - 17:55:00
----------------------------------------
Grazie giuseppe,
Funziona cambiando solo la stringa di configurazione TPKT come da file png e perfetto.
Cordialmente.
----------------------------------------
AUTORE: 822
DATA :05/03/2013 - 08:05:04
----------------------------------------
Hassan forse tu puoi aiutarmi (visto che hai detto che comunichi da tempo con i PLC), o se anche altri sanno la risposta và bene uguale
Visto che il mio programma deve comunicare con più di un PLC in modo indipendente e parallelo, questi VI di comunicazione li devo fare rientranti?
Per ogni PLC ho creato un VI e girano tutti in parallelo, ma all'interno di questi VI ci sono i driver di comunicazione che sono comuni per tutti.
Se non li faccio rientranti e poi servono rientranti cosa succede?
----------------------------------------
AUTORE: 301
DATA :05/03/2013 - 11:13:51
----------------------------------------
Premettendo che:
1_credo ci siano dei "problemi di fondo" nel modo in cui stai approcciando il problema.
2_concordo con te su quel che concerne i tempi a (tipicamente) concessi per lo sviluppo.
3_dò assolutamente ragione (e come non darla) a paracarro.
Un VI rientrante può essere richiamato in modo parallelo.
non è richiamato il vi, ma una sua istanza, in ogni punto del programma in cui viene inserito.
Un VI NON rientrante, può essere eseguito a mono-istanza, ossia il codice esegue quel vi SE non è in esecuzione da qualche altra parte e tutti i processi o le parti di codice che lo richiamano, attendono che venga liberato.
Aris
----------------------------------------
AUTORE: 822
DATA :09/03/2013 - 00:44:46
----------------------------------------
allora, giusto per chiarire..
1 vero, il problema di fondo e' che non ho mai avuto un "maestro" che mi insegnasse a programmare e ora mi porto dietro tutti gli errori non corretti
2 mi rincuora
3 anche io, i suoi consigli sono sempre preziosi, tant'e' che sto rivedendo il tutto cercando di seguire cio' che ha detto, solo che a volte il tono delle sue risposte unite a momenti di "stress" lavorativo diciamo che "snervano"..
, se pongo una domanda e' perche' non sono capace non perche' mi diverta a farvi perdere del tempo
grazie per le vostre risposte
----------------------------------------
AUTORE: 10816
DATA :20/06/2013 - 10:30:31
----------------------------------------
Usando la stringa che ha postato Giuseppe la comunicazione funziona perfettamente come con un S7 300.
Per fare funzionare il tutto io ho dovuto però dichiarare le DB in modalità compatibile con S7300/400. Per farlo bisogna entrare nelle proprietà della DB e togliere la spunta su "Accesso ottimizzato al blocco", in quel modo nel blocco dati comparirà un indirizzamento assoluto per ogni variabile, esattamente come quando si edita una DB col simatic step 7.
In questo modo, usando la stringa proposta nello screen shot da Giuseppe, la comunicazione funziona perfettamente.
----------------------------------------
AUTORE: 1820
DATA :20/06/2013 - 15:25:28
----------------------------------------
[quote="giuseppe.l74":21pu4m4m]Certo, ti allego lo snippet (fatto da labview 2012) con la configurazione, con questo dovresti risolvere. Se hai problemi fammi sapere.
Ciao!
P.S.: ho compresso il file, perchè il png è troppo largo..[/quote:21pu4m4m]
Ciao Giuseppe, che libreria usi per comunicare in Ethernet con SIEMENS S7 300?
----------------------------------------
AUTORE: 822
DATA :20/06/2013 - 21:21:03
----------------------------------------
Ciao Massimo,
utilizzo dei VI trovati in rete, opportunamente modificati e configurati da me.
Io sono partito da qui:
https://decibel.ni.com/content/docs/DOC-5467
----------------------------------------
================================================================================
Problema con gli array
================================================================================
AUTORE: 5128
DATA :27/01/2013 - 11:28:10
----------------------------------------
Salve e buona domenica
Avrei un piccolo quesito avendo iniziato da poco a programmare in labview vi vorrei porre un quesito.
Dato un array di double calcolare la media degli elementi del vettore escludendo dal calcolo il valore massimo e il valore minimo.
Potresti darmi qualche suggerimento su come sviluppare il VI ?
Grazie
----------------------------------------
AUTORE: 301
DATA :27/01/2013 - 19:24:42
----------------------------------------
con le funzioni:
1_add array elements.
2_min max
3_delete from array
3_array size
Aris
----------------------------------------
================================================================================
Risorse didattiche
================================================================================
AUTORE: 645
DATA :28/01/2013 - 14:50:32
----------------------------------------
Ciao, guardate http://www.ni.com/academic/students/lea ... 0006023331
Ci sono alcuni video che possono tornare utili!
----------------------------------------
================================================================================
convertire due file .vi
================================================================================
AUTORE: 5128
DATA :29/01/2013 - 16:50:09
----------------------------------------
Buonasera,
Allego di seguito due file che dovrei aprire con labview 8.5 potreste riconvertirli e rimandarli ?
Grazie 1000
----------------------------------------
AUTORE: 301
DATA :29/01/2013 - 17:18:14
----------------------------------------
fatto
----------------------------------------
AUTORE: 5128
DATA :30/01/2013 - 16:13:19
----------------------------------------
Grazie Aris
Disponibilissimo come sempre
----------------------------------------
================================================================================
Array e stringhe
================================================================================
AUTORE: 5128
DATA :30/01/2013 - 16:21:17
----------------------------------------
Buonasera,
Dovrei realizzare un VI che prende in ingresso una stringa contenente lettere e numeri, e far ottenere in uscita un array di caratteri che contenga i soli caratteri numerici
Mi date qualche suggerimento ?
Grazie
----------------------------------------
AUTORE: 482
DATA :31/01/2013 - 07:48:03
----------------------------------------
Nella palette delle stringhe c'e' tutto quello che ti serve.
Ti suggerirei di suddividere la tua stringa in un array di byte.
Dopodichè verifichi il valore del byte e se ècompreso tra 48 e 57 allor aè un numero, altrimenti no.
----------------------------------------
AUTORE: 5128
DATA :05/02/2013 - 18:27:04
----------------------------------------
Geppo avrei provato a fare qualcosa ma come vedrai ho fatto confusione....
Dove sbaglio di preciso ?
Grazie
----------------------------------------
AUTORE: 482
DATA :06/02/2013 - 07:31:07
----------------------------------------
Ci sei quasi.
Allora. Tu vuoi in uscita unarray con tutti i valori validi.
Per fare questo, devi creare prima di tutto un array vuoto (costante)e collegarlo in ingresso al ciclo for tramite uno shift register.
In questo shift register (a destra), nel caso TRUE gli colleghi l'array che arriva dallo stesso shift register (a sinistra)con aggiunto il valore ottenuto, nel caso FALSE fai passare l'array paro paro come ti arriva (da sinistra).
Poi in uscita al ciclo for colleghi il tuo indicatore di array.
Poi già che ci siamo, per ottimizzare il tutto invece che spezzare in tre l'array in ingresso, fallo entrare come filo unico e poi collegalo alla funzione "In Range & coerce" che trovi nella palette Comparison.
----------------------------------------
AUTORE: 5128
DATA :06/02/2013 - 20:30:49
----------------------------------------
ho aggiunto qualcosa ma la parte del caso true non l'ho capita
Riallego cmq grazie Geppo
----------------------------------------
AUTORE: 301
DATA :07/02/2013 - 10:03:44
----------------------------------------
vedi le modifiche
----------------------------------------
AUTORE: 482
DATA :07/02/2013 - 10:40:54
----------------------------------------
Dai aris cacchio! non dare sempre la pappa pronta!
----------------------------------------
AUTORE: 301
DATA :07/02/2013 - 12:58:15
----------------------------------------
Ciairaggione......
....solo che (come sai) spesso si fa prima a farlo che a raccontarlo
Chiedo venia
----------------------------------------
AUTORE: 5128
DATA :07/02/2013 - 21:53:33
----------------------------------------
Grazie ad entrambi!!!
----------------------------------------
================================================================================
Labview e z39.50
================================================================================
AUTORE: 5498
DATA :30/01/2013 - 18:30:45
----------------------------------------
Devo sviluppare un programma per la biblioteca scolastica e volevo sapere se esistono librerie per lavorare con il protocollo z39.50 predisposto dalla liberia del congresso americana e disciplinata da una norma ISO.
Qualche idea?
----------------------------------------
================================================================================
Leggere da un file in costante aggiornamento
================================================================================
AUTORE: 6804
DATA :31/01/2013 - 10:53:30
----------------------------------------
Ciao a tutti,
Premetto che ho da poco iniziato ad usare labview e quindi conosco pochissime funzioni, chiedo scusa per eventuali baggianate che sto per scrivere.
Il mio problema è il seguente:
_ Un nodo wireless campiona, con frequenza nota, tensione e corrente di un dispositivo elettronico
_ Questi dati vengono inviati ad un coordinatore collegato al PC
_ Ogni invio comprende: Lettera V e serie di campioni di tensione Lettera I e serie di campioni di corrente (tutto in una unica colonna come da esempio allegato)
_ Il coordinatore salva tutto in un file .txt
Io devo fare un applicazione labview che:
_ legga quel file (che dunque risulta essere aperto perchè è in costante aggiornamento da parte del coordinatore)
_ plotti su due grafici diversi i valori (nel tempo) di corrente e tensione
Prima domanda: si può fare?
Seconda domanda: chi ha delle dritte, un esempio da modificare ecc.. per realizzare questa cosa?
Grazie mille
----------------------------------------
AUTORE: 129
DATA :31/01/2013 - 14:06:19
----------------------------------------
leggiti questa discussione dovresti trovare qualche aiuto.
viewtopic.php?f=1&t=5736&start=0
----------------------------------------
AUTORE: 1078
DATA :01/02/2013 - 13:25:06
----------------------------------------
Intanto proverei a verificare se il file risulta "leggibile". Per leggibile intendo dire che ti sia concesso leggerlo da altre applicazioni mentre è in costruzione, qesto è facilmente verifcabile leggendo il file con blocknotes mentre il coordinatore sta costruendo il file. Perchè ti dico di fare questo controllo prima di sviluppare il tuo software? Perchè alcune applicazioni, anche labview ha questa possibilità, possono bloccare il file su cui stanno lavorando sia in scrittura che in lettura. Se il tuo coordinatore blocca quel file in lettura, la tua applicazione potrà leggere i dati solo dopo che il coordinatore avrà finito il suo lavoro, quindi, in postprocessing e no in "real-time".
Il tuo secondo problema, leggere il contenuto del file, è abbastanza banale, una volta capito il formato delle informazioni puoi leggere il file utilizzando le funzioni di lettura dei file di testo messe sempre a disposizione da labview (file palette) e tramite le funzioni stringa interpretarne il contenuto a tuo piacimento.
Qualcosa di già pronto? Difficile che ci sia qualcosa di già pronto (soprattutto non conoscendo il formato delle informazioni archiviete nel file) che soddisfi tutte le tue esigenze, cercando su questo forum o sul forum della NI o su LAVA troverai un sacco di esempi che fanno le operazioni da te richieste ma che, molto probabilmente, non interpretano i dati con il formato di cui hai bisogno. Dovrai comunque lavorarci su!
Avendo da poco iniziato a lavorare con Labview, ti suggerisco di sviluppare autonomamente, questo aumenterà la tua destrezza nell'uso delle funzioni di LV e la tua esperienza.
In bocca al lupo e buon lavoro.
----------------------------------------
================================================================================
sostituire delle variabili in una stringa fissa...
================================================================================
AUTORE: 4233
DATA :31/01/2013 - 22:31:46
----------------------------------------
Salve a tutti, è da poco che utilizzo labview, e sto cercando poco alla volta di costruire un piccolo programmino, dove da un lato ho tutta una serie di variabili in formato file txt, che definiscono un lotto di lavorazione, quali qualità lotto, colata del prodotto, giorno di produzione, ecc in totale ce ne sono una decina; dall'altra parte una stringa di valori standard che definiscono tutta la " storia " del prodotto dove all'interno vi sono degli spazi vuoti siglati con una stringa $lotto di qualità$ ad esempio oppure $colata$ dove andrebbero riempiti con i valori reali messi da parte. il problema che ho è che non riesco ad assegnare ogni singlo valore che deve andare nel suo singolo spazio assegnato perchè il tutto deve rappresentare una stringa lunga continua in formato file di testo.
esempio
lotto di lavorazione = 2325
lotto qualità = 111
giorno prodotto = 114
il tutto dovrebbe entrare\sostituire i relativi valori contraddistintinti con $ lotto di lavoro $ , $ lotto qualità $ ecc così da formate una stinga completa..
astm asme sa $lotto di lavorazione $ and quality lot $ lotto di qualità $ and works in date $ giorno prodotto $ così da ottenere
astm asme sa 2323 and quality lot 1111 and works in date 114 ecc,ecc
qualcuno saprebbe indicarmi un esempio o un percorso a cui posso fare riferimento?
grazie del tempo dedicatomi
----------------------------------------
AUTORE: 301
DATA :01/02/2013 - 07:37:25
----------------------------------------
Ti semplicemente la funzione "format Into String" (nalla paletta delle stringhe).
Aris
----------------------------------------
================================================================================
labview e possibile bug con schermata
================================================================================
AUTORE: 4802
DATA :03/02/2013 - 00:35:00
----------------------------------------
salve ragazzi. non capisco se labview presenta un bug o qualcosa di simile. Praticamente non riesco piu ad aumentare la dimensione della finestra di un case, ciclo while o flat sequence structure, ma se la voglio modificare essa può diventare grande solo il minimo possibile per contenere ciò che ha all'interno
di che si tratta? come riesco a risolvere? vi ringrazio
----------------------------------------
AUTORE: 482
DATA :04/02/2013 - 07:25:42
----------------------------------------
Prima volta che sento una cosa del genere, prova a guardare in Tools->Options
----------------------------------------
================================================================================
LED dietro immagine su LabVIEW
================================================================================
AUTORE: 4160
DATA :03/02/2013 - 14:44:12
----------------------------------------
Salve a tutti,
mi rivolgo ancora a voi per un aiuto.
Dovrei far accendere un led, ma la luce di accensione deve passare attraverso un immagine precedentemente intagliata.
Mi spiego meglio:
Possiedo un'immagine realizzata su PhotoShop monocromatica (nero), dove sono presenti dei buchi a forma di lettera di colore bianco.
Andando a selezionare per colore, ottengo un "foglio" di colore nero, con le lettere non selezionate.
Portando questa immagine su LabVIEW, [u:2f4t4jlx]le lettere vengono automaticamente colorate di nero.[/u:2f4t4jlx]
Poichè il led, nell'accensione attraversi il foglio nero bucato,[b:2f4t4jlx] è possibile importare un immagine, dove ciò che non è selezionato, rimanga "trasparente"?[/b:2f4t4jlx]
Spero di essere stato chiaro.
Ancora grazie.
----------------------------------------
AUTORE: 482
DATA :04/02/2013 - 07:12:54
----------------------------------------
Assolutamente si. Credo che il tuo problema sia legato al formato dell'immagine o alla versione di labview che diverse versioni fa non supportava la trasparenza.
Che formato è la tua immagine?
----------------------------------------
AUTORE: 4160
DATA :04/02/2013 - 16:08:05
----------------------------------------
Il formato è JPEG è la versione è LabVIEW 2011...
Potresti suggerirmi un formato valido?
Ti ringrazio
----------------------------------------
AUTORE: 482
DATA :05/02/2013 - 07:26:03
----------------------------------------
Beh allora labview non centra.
il formato JPEG non supporta la trasparenza.
L'immagine che crei devi salvarla in un formato che supporti la trasparenza come ad esempio il PNG.
----------------------------------------
AUTORE: 4160
DATA :05/02/2013 - 14:19:27
----------------------------------------
Ciao,
ho provato ad esportare il file in formato .PNG, utilizzando GIMP, ma i risultati sono stati gli stessi...
Copiando "Per colore" nero e incollando sul Front Panel di LabVIEW 2011, i "ritagli trasparenti" vengono comunque riempiti automaticamente.
Ho provato con vari formati, ma il risultato è sempre simile... Potresti provare tu?
[b:142eqcwo]Ti lascio il link MediaFire del download di una versione semplificata del programma in LabVIEW con immagine PNG:[/b:142eqcwo]
http://www.mediafire.com/?ve7a6di43udxbm3
Grazie ancora
----------------------------------------
AUTORE: 482
DATA :05/02/2013 - 14:44:39
----------------------------------------
non basta esportare il disegno in un altro formato.
Devi prendere l'originale in jpg, aggiingere il canale alfa e cancellare le zone che vuoi che siano trasparenti
----------------------------------------
AUTORE: 4160
DATA :05/02/2013 - 14:56:09
----------------------------------------
Questo devo farlo tramite GIMP?
----------------------------------------
AUTORE: 482
DATA :06/02/2013 - 07:24:58
----------------------------------------
certo
----------------------------------------
================================================================================
Sito k12 con esempi Education
================================================================================
AUTORE: 645
DATA :05/02/2013 - 10:15:30
----------------------------------------
Ciao, girando sono finito su http://k12lab.com/
Ci sono tanti spunti per programmi di vario tipo!
----------------------------------------
================================================================================
Grafici con waveform graph
================================================================================
AUTORE: 5128
DATA :05/02/2013 - 17:39:23
----------------------------------------
Buonasera, dovrei realizzare il seguente Vi
Realizzare un VI che permetta di rappresentare contemporaneamente le funzioni trigonometriche sin, cos, tan, sec utilizzando indicatori di tipo wafeform graph, rappresentando l’intervallo dell’asse x entro il quale rappresentare i dati. Il VI deve avere, sul pannello frontale, un controllo binario che ne permetta l’abilitazione/disabilitazione dalla visualizzazione.
Mi date qualche suggerimento ?
In quello allegato vorrei capire come impostare l'intervallo di visualizzazione
----------------------------------------
AUTORE: 482
DATA :06/02/2013 - 07:33:26
----------------------------------------
MA chi è che ha scritto sta traccia?? non si capisce una sega...
----------------------------------------
AUTORE: 5128
DATA :06/02/2013 - 15:30:17
----------------------------------------
e lo so Geppo!!
e pensa che il 12 devo fare l'esame da autodidatta completo... (anzi grazie ad Aris e al forum qualcosa riesco a fare!!)
In pratica se vedi l'allegato è tutto più chiaro solo che andrebbe integrato con la possibilità di scegliere l'asse temporale di rappresentazione
Forse ora è un 5% più chiaro...
----------------------------------------
AUTORE: 301
DATA :07/02/2013 - 10:19:06
----------------------------------------
L'asse temporale, lo puoi variare utilizzando un XY Graph.
Al grafico devi collegare un cluster contenente 2 array, uno dei valori di X ed uno con i valori di Y.
A quel punto, con una case, puoi di volta in volta variare i valori di X con l'array che ti serve.
Aris
----------------------------------------
AUTORE: 482
DATA :07/02/2013 - 10:40:12
----------------------------------------
Puoi farlo anche con i waveform grah andando ad operare sulle proprietà dell'asse X
----------------------------------------
================================================================================
Aprire VIs con versioni precedenti
================================================================================
AUTORE: 8180
DATA :06/02/2013 - 13:26:59
----------------------------------------
Ciao a tutti,
come da titolo vorrei sapere se i VIs creati con labview 2012 si possono tranquillamente aprire ed utilizzare con labview 2011 o precedenti?
In caso di risposta negativa, è possibile salvari in modo da essere utilizzati da versioni precedenti alla 2012?
Grazie anticipatamente.
----------------------------------------
AUTORE: 301
DATA :06/02/2013 - 13:38:04
----------------------------------------
File >> Save for Previous Version, da li selezioni la versione del LV per cui vuoi la compatibilità.
Da fare attenzione a funzioni speciali che possono non essere implementate nelle precedenti versioni del sistema di sviluppo.
Aris
----------------------------------------
AUTORE: 8180
DATA :06/02/2013 - 16:08:02
----------------------------------------
Grazie per la pronta risposta!
----------------------------------------
================================================================================
problema inserimento data su db
================================================================================
AUTORE: 3428
DATA :09/02/2013 - 08:00:51
----------------------------------------
Buongiorno a tutti,
mi ritrovo con il problema di inserire un nuovo record in una tabella di un DB sql server 2000 nella colonna data.
Il campo è considerato un not null quindi se lo omettessi il DB mi restituirebbe un errore.
Il punto è che non riesco ad inserirlo.
Controllando il DB vedo che le date che sono già all'interno hanno il seguente formato ad es: 12/01/2010 9.07.08 e la colonna è di tipo (datetime, not null)
Dal mio programma in LV2010 mi sono creato la query per la insert del tipo:
INSERT INTO TABLE1(ID_1, ID_2, ID_3, ID_4, ID_5, DATA) VALUES (1, 2, 3, 4, 5, 21/12/2012 10.14.37)
La query mi restituisce il seguente errore:
ADO Error: 0x80040E07
Exception occured in Microsoft OLE DB Provider for SQL Server: The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value. in NI_Database_API.lvlib:Conn Execute.vi->DB_SAVE.vi->Untitled 7
E questo è il caso in cui mi sono avvicinato di più alla soluzione (mettendo la data tra gli apici) altrimenti in tutti gli altri casi ho questo errore:
ADO Error: 0x80040E14
Exception occured in Microsoft OLE DB Provider for SQL Server: Line 1: Incorrect syntax near '10.14'. in NI_Database_API.lvlib:Conn Execute.vi->DB_SAVE.vi->Untitled 7
Il problema è nella conversione. La cosa strana è che se mi creassi un cluster con i 6 valori di cui 5 interi e uno data, ovviamente con le label uguali ai nomi dei campi dove inserirli e lo dassi in pasto alla VI insert della palette di labview e ci pensa lui a fare il cast la query funziona e mi ritrovo il valore nel DB addirittura con un altro formato ad es: 2013-02-09 08:14:16.234!!!
Quindi una soluzione alternativa l'avrei...
L'unico problema è che il record non è formato da soli 6 campi bensì da 150 e vorrei inserire i NULL nei campi che non utilizzo, cosa non possibile con il cluster perchè avrà sempre il valore di default...
Grazie a chi proverà a darmi una mano...
PS ho anche provato ad utilizzare la vi della palette "DB Tools Format Datetime String VI" ma senza miglioramenti...
----------------------------------------
AUTORE: 301
DATA :11/02/2013 - 07:22:24
----------------------------------------
Credo che il problema sia proprio la formattazione della data.
Non sono espertissimo, ma so che con i db, ci sono un sacco di menate.....
Forse, nell'inserimento, si aspetta mese:giorno:anno.....
Aris
----------------------------------------
AUTORE: 482
DATA :11/02/2013 - 07:33:46
----------------------------------------
Per inserire le date in SQL server ero sclerato anche io.
E' solo un problema di sintassi.
Ti allego uno snippet per convertire data ora in formato compatibile con SQL server
(Lo snippet nel caso non lo sapessi è un immagine che trascinandola nel codice ti crea il codice corrispondente.)
----------------------------------------
AUTORE: 3428
DATA :11/02/2013 - 08:10:04
----------------------------------------
grazie geppionline,
ho provato ad importare l'immagine trascinandola ma mi importa solamente un commento con il link della pagina ilvg dove si trova.
Ho provato con i : al posto del . sull'ora, con e senza / sulla data oppure con il - ma nulla da fare..
Ora provo a ricreare il tuo codice per vedere come si comporta...
Comunque sì, è un problema di sintassi..
Continuo con le prove
----------------------------------------
AUTORE: 3428
DATA :11/02/2013 - 08:50:09
----------------------------------------
Risolto!
è tutto un problema dovuto al cast che effettua il sistema operativo.
Bisogna guardare come è formattata la data e l'ora sulle impostazioni internazionali di win e creare la stessa stringa.
Per me va bene '2013-02-11 09:14:37' solo che ora mi ha restiuito un errore quando chiudo la connessione!!! Ovviamente lo filtrerò
ADO Error: 0x000001F8
Open recordset object.
Errore 504
Risolto utilizzando la vi nella palette "DB tools free object"
Grazie a tutti
Ps sicuramente la prossima volta che utilizzerò un db "sclererò" di nuovo
----------------------------------------
AUTORE: 482
DATA :11/02/2013 - 13:02:20
----------------------------------------
[quote="renaso"ho provato ad importare l'immagine trascinandola ma mi importa solamente un commento con il link della pagina ilvg dove si trova.
[/quote]
No, devi salvarti l'immagine sul tuo pc, e poi dal pc la puoi trascinare sul block diagram.
Anche io comunque avevo avuto problemi sulla sintassi data-ora del sistema operativo quando un utente ha cambiato PC ed è passato da XP a win7.
----------------------------------------
AUTORE: 3428
DATA :11/02/2013 - 17:04:29
----------------------------------------
Avevo già provato così geppi ma non mi aveva funzionato.
Salva l'immagine in png e quando faccio l'import o il trascinamento mi importa l'intera immagine proprio come se fosse un'immagine, quindi non posso interagire...
----------------------------------------
AUTORE: 660
DATA :12/02/2013 - 11:14:55
----------------------------------------
[quote:3pq3n6r6]Salva l'immagine in png e quando faccio l'import o il trascinamento mi importa l'intera immagine proprio come se fosse un'immagine, quindi non posso interagire...[/quote:3pq3n6r6]
Stesso problema...
Max
----------------------------------------
AUTORE: 482
DATA :12/02/2013 - 12:46:01
----------------------------------------
che versione avete di labview? io sto usando la 200 e ho creato lo snippet con questa.
Ho anche provato a scaricare l'immagine allegata,ho salvato l'immagine con nome sul desktop, l'ho trascinata nel block diagram e me la carica regolarmente come se fosse del codice labview...
----------------------------------------
AUTORE: 660
DATA :12/02/2013 - 12:58:35
----------------------------------------
io, al momento la 11...
Max
----------------------------------------
AUTORE: 3428
DATA :28/02/2013 - 13:02:47
----------------------------------------
Anche se ho risolto..
io ho labview 2010 SP1
----------------------------------------
================================================================================
Media ensemble
================================================================================
AUTORE: 8180
DATA :11/02/2013 - 15:46:03
----------------------------------------
Buona sera a tutti,
vorrei creare un VI in grado di effettuare, letta una matrice di n righe e m colonne, per ogni riga una sommatoria del tipo:
x_i,j*k_a
dove x_i,j è l'elemento dell'i-esima riga e j'esima colonna, e k_a è il numero delle volte che quell'elemento compare nella i-esima riga. Quindi vorrei creare un array con tutte queste somme..
Qualcuno ha qualche suggerimento?
----------------------------------------
AUTORE: 645
DATA :15/02/2013 - 15:22:18
----------------------------------------
Potresti partire usando il blocco Search per cercare nell'array intendendo come array la riga della matrice nella quale vuoi fare i calcoli.
Poi passi ad un ciclo i valori che ti servono.
----------------------------------------
AUTORE: 8180
DATA :15/02/2013 - 17:28:45
----------------------------------------
Ciao MagicBotolo e grazie per avermi risposto; provo a riformulare il problema dalla genesi.
Ho a disposizione il segnale di un trasduttore, posto sulla testa di un motore alternativo a combustione interna, costituito praticamente da una successione di cicli indicati (pressione in camera di combustion vs tempo). Nel file ci sono circa 2150600 valori di pressioni, ottenuti moltiplicando la frequenza di campionamento per il tempo di acquisizione. Il mio scopo è ottenere un ciclo di pressione unico mediato tra tutti quelli acquisiti durante la prova. Pertanto dall'array di 2150600 elementi vorrei estrapolare n arrays di circa 7800 elementi ciascuno; praticamente ogni arrays rappresenterebbe un ciclo di pressione. Fatto ciò, al fine di ottenere un ciclo di pressione medio, vorrei effettuare una media aritmetica tra tutti gli elementi di posizione omologa negli n arrays.
Cosa mi suggerisci di fare?
----------------------------------------
AUTORE: 8180
DATA :16/02/2013 - 11:00:20
----------------------------------------
Questo è un primo tentativo in cui vorrei cercare di plottare un ciclo per volta, ma in realtà il subarray all'aumentare delle iterazioni aumenta sempre di più le sue dimensioni... Esiste una funziona che "svuota" un array in modo tale che alla successiva iterazione l'array risulti vergine?
----------------------------------------
================================================================================
Attivare automaticamente un controllo...
================================================================================
AUTORE: 660
DATA :12/02/2013 - 13:34:34
----------------------------------------
Scusate se il titolo non è correttissimo, ma non mi veniva in mente altro...
ho un VI che serve esclusivamente per inserire il codice operatore e contiene, oltre a qualche pulsante, un controllo di tipo stringa...
adesso vorrei che all'apertura del VI ci fosse il cursore già pronto all'interno di questo controllo... ma non sono ancora riuscito a risolvere la questione... il meglio che ho ottenuto è di farcelo comparire alla pressione del tasto TAB...
qualcuno ha idea di se e come si possa fare?
Grazie
Max
----------------------------------------
AUTORE: 822
DATA :12/02/2013 - 13:53:53
----------------------------------------
Se ho capito bene il problema, metti a true la property node "keyfocus" del controllo stringa. Quando apri il vi, hai il focus già sulla stringa..
----------------------------------------
AUTORE: 660
DATA :12/02/2013 - 15:18:42
----------------------------------------
...mentre preparavo un vi di esempio... forse ho capito dov'è il problema...
...anche perchè con quella proprietà ci avevo già provato senza successo...
grazie
Max
----------------------------------------
AUTORE: 660
DATA :12/02/2013 - 15:41:04
----------------------------------------
effettivamente avevo fatto una scemenza io...
me ne sono accorto mentre preparavo un VI ridotto da farti vedere... dopo aver impostato il focus sul controllo andavo a scriverci dentro... così lo perdevo...
ciao
Max
----------------------------------------
AUTORE: 822
DATA :12/02/2013 - 18:57:14
----------------------------------------
Giusto per capire, quello che ti ho suggerito era la soluzione che cercavi?
----------------------------------------
AUTORE: 660
DATA :12/02/2013 - 20:47:44
----------------------------------------
si si, era la soluzione giusta, solo pensavo non funzionasse... perchè dopo aver settato la proprietà andavo a sovrascrivere il controllo...
Ciao
Max
----------------------------------------
================================================================================
Ringraziamenti
================================================================================
AUTORE: 5128
DATA :12/02/2013 - 21:09:23
----------------------------------------
Buonasera a tutti,
Oggi ho sostenuto l'esame di Sistemi automatici di misura (50% dell'esame verteva sull'utilizzo di labview)
Considerando che la mia fonte didattica sono stati i manuali in rete e il vostro forum, il 18 che ho preso oggi mi soddisfa in pieno. Considerando poi che lavorando a tempo pieno ed essendo questo l'ultimo esame, vedere il bicchiere mezzo pieno mi sembra doveroso!!!
Non dimentico quindi il prezioso aiuto che ho ricevuto sul forum ILVG, mi avete chiarito tantissimi dubbi e grande merito della mia riuscita va a voi tutti!!!
Un grazie particolare ad Aris e Gepponline che mi hanno dato assistenza quasi in tempo reale...
Grazie ancora e a risentirci!!!
----------------------------------------
================================================================================
Labview e pulsanti touch screen
================================================================================
AUTORE: 822
DATA :13/02/2013 - 13:27:16
----------------------------------------
Sto sviluppando un semplice programma in Labview, che verrà poi installato su un pc all-in-one touch screen, dove alla pressione di un pulsante viene restituita in uscita una stringa di testo.
Ho configurato il pulsante con "Mechanical action Latch until released", in modo tale che finche è premuto, l'indicatore stringa contiene una scritta, quando il pulsante viene lasciato la stringa è vuota (allego un esempio in Labview 2012).
Il problema è che col mouse tutto funziona a dovere, mentre col touch screen quando tengo premuto sullo schermo anzichè premere il pulsate è come se usassi il tasto destro del mouse (esce la tendina delle proprietà del pulsante).
C'è modo (senza andare nel pannello di controllo di Windows) di gestire da Labview il touchscreen in modo che si comporti come se utilizzassi solo il tasto sinistro del mouse, insomma in modo tale che a prolungata pressione su schermo il pulsante risulti effettivamente premuto?
----------------------------------------
AUTORE: 660
DATA :13/02/2013 - 13:39:15
----------------------------------------
io ho usato spesso dei touch con LV senza avere alcun problema... mi sa che devi per forza andare nel pannello di controllo per disattivare l'opzione per cui una pressione prolungata del touch sia interpretata come la pressione del tasto destro...
...sui pannelli che ho usato questa opzione era solitamente disattivata e dovevo attivarla per renderla operativa...
... ma che problema c'è ad andare nel pannello di controllo per disattivarla?
In alternativa sapendo cosa modificare nel registro di windows puoi effettuare la modifica direttamente con LV... però la prima soluzione era decisamente più rapida e semplice...
Max
----------------------------------------
AUTORE: 822
DATA :13/02/2013 - 13:45:10
----------------------------------------
grazie per la risposta,
i problemi sono sostanzialmente due, è una modifica nel pannello di controllo che dovrei fare su 20 touch screen ed è una modifica permanente sul sistema operativo (nel senso che potrebbe essermi utile avere il tasto destro del mouse simulato con lunga pressione sullo schermo, quando sono fuori da Labview).
E fra l'altro ho notato che anche disabilitando questa funzione, prima che il pulsante venga effettivamente premuto, passano alcuni secondi (2-3 secondi) e questo non è bello..
----------------------------------------
AUTORE: 660
DATA :13/02/2013 - 14:51:56
----------------------------------------
a questo punto vai a cercare quale chiave di registro devi modificare in modo da settarla all'avvio dell'applicazione e ripristinarne il valore all'uscita...
per quanto riguarda il ritardo è strano... ma hai ritardo nella pressione del pulsante o ritardo nella comparsa del messaggio... nel secondo caso probabilmente è un problema di codice (c'è qualcosa che ti ritarda l'operazione) nel primo... non saprei...
Max
----------------------------------------
AUTORE: 822
DATA :13/02/2013 - 14:57:02
----------------------------------------
Purtroppo il ritardo è nella pressione del pulsante..
----------------------------------------
AUTORE: 660
DATA :13/02/2013 - 14:59:03
----------------------------------------
mentre con il mouse non succede?
----------------------------------------
AUTORE: 822
DATA :13/02/2013 - 15:27:54
----------------------------------------
col mouse si comporta come deve
----------------------------------------
AUTORE: 482
DATA :13/02/2013 - 15:55:58
----------------------------------------
di solito nei panel pc, installano un software di gestione del touchscreen che gestisce anche i tempi e le gesture del tocco.
Hai provato a disinstallare quel software?
----------------------------------------
================================================================================
problema con assegnamento valore di default variabile
================================================================================
AUTORE: 4802
DATA :13/02/2013 - 17:23:38
----------------------------------------
Salve a tutti ragazzi, ho un problema con la struttura dati che si vede nella foto in basso. In pratica se vado a settare un valore di default dei parametri diverso non funziona, ovvero non prende il nuovo settaggio, ma rimangono i vecchi valori: 153, 252, 252, 252. Coma mai? con le altre variabili del programma funziona bene
Vi ringrazio per la disponibilità.
http://img46.imageshack.us/img46/3641/fototh.png
----------------------------------------
AUTORE: 660
DATA :14/02/2013 - 07:13:10
----------------------------------------
diciamo che dalla sola immagine non si capisce nulla del tuo problema...
in linea di massima la cosa deve funzionare...
- come fai a impostare i nuovi valori di default?
- ci sono properties legate a questi controlli?
puoi postare il VI?
Ciao
Max
----------------------------------------
AUTORE: 4802
DATA :14/02/2013 - 22:09:09
----------------------------------------
[quote="machyaer":1j1cm1dc]diciamo che dalla sola immagine non si capisce nulla del tuo problema...
in linea di massima la cosa deve funzionare...
- come fai a impostare i nuovi valori di default?
- ci sono properties legate a questi controlli?
puoi postare il VI?
Ciao
Max[/quote:1j1cm1dc]
ecco il vi:
http://img27.imageshack.us/img27/8127/91024016.png
Per eseguire l'impostazione faccio tasto destro, data operation e make current value default. Come faccio a vedere se ci sono eventuali properties (chiedo perchè questa struttura dati composta da 4 controlli la fece originariamente il mio prof)? grazie molte.
----------------------------------------
AUTORE: 301
DATA :15/02/2013 - 07:17:12
----------------------------------------
A parte che hai postato uno screenshot del vi e non il vi, comunque......
Hai provato ad assegnare il default value ad ogniuno dei controlli nel cluster?
Il cluster, è un Strict type def o un semplice type def?
In caso non prenda proprio i valori di default, non puoi inizializzarlo all'inizio del tuo programma?
Aris
----------------------------------------
AUTORE: 660
DATA :15/02/2013 - 09:37:49
----------------------------------------
io ho provato a realizzare un cluster come il tuo, ma il valore me lo mantiene... l'altra soluzione e quella che ti ha anche suggerito Aris...
guarda il VI allegato..
Ciao
Max
[attachment=0:4hj7inmq]prova cluster.vi[/attachment:4hj7inmq]
----------------------------------------
AUTORE: 645
DATA :15/02/2013 - 15:19:48
----------------------------------------
Se l'impostazione dei valori di default da programma (Block Diagram e codice) o menù (Make current values default) non funziona, puoi provare con un file di testo (normalmente indicato con formato .ini) nel quale sono contenuti i valori iniziali.
Quando avvi il VI, prima di tutto carichi i valori dal file di testo.
----------------------------------------
================================================================================
grafico xy e colore del marker
================================================================================
AUTORE: 6224
DATA :14/02/2013 - 14:15:50
----------------------------------------
Buona sera,
avrei un problema abbastanza semplice, credo, che non riesco a risolvere.
Vorrei creare un grafico XY ma vorrei poter specificare sul diagram block forma e colore del marker.
Potrei usare un math script usando plot(x,y,'ob') (pallino blu), e quindi poi plot(x2,y2,'sr') (quadrato rosso).
E' possibile fare una cosa simile evitando lo script in matlab?
Esiste un qualcosa che mi crei, ad esempio, un oggeto 2D di forma e colore che voglio e poi lo plotti in un grafico?
A me sembra un problema da poco ma non riesco a venirne fuori...
Ogni aiuto è ben accetto e grazie in anticipo
----------------------------------------
AUTORE: 1078
DATA :25/02/2013 - 10:53:26
----------------------------------------
Ciao Jocky,
Quello che chiedi si può fare, utilizzando i property node dei grafici XY. Devi lavorare su quelli che si chiamano Plot.
Ti allego un VI di esempio che ti permette di capire come fare.
Attento alla proprietà "Active plot". Questa proprietà è quella che consente di selezionare il plot su cui vuoi fare le modifiche grafiche. Deve rimanere la prima proprietà che modifichi nel property node, i property node in labview vengono eseguiti con ordine dall'alato verso il basso.
Spero ti sia utile!
Buon lavoro.
----------------------------------------
AUTORE: 6224
DATA :25/02/2013 - 18:53:21
----------------------------------------
grazie mille
scarico subito l'esempio e lo proverò appena possibile.
----------------------------------------
AUTORE: 6224
DATA :02/03/2013 - 13:27:49
----------------------------------------
ciao Ricky,
scusa il ritardo nella risposta.
Purtroppo il tuo esempio è stato creato con una versione più aggiornata del mio Labview ( sto lavorando con la 8.5).
Ad ogni modo ho provato a seguire i tuoi consigli e usare i property node per fare quello che mi dicevi, fin ora ho dei problemi
perchè ho sempre degli errori ma insisterò fino a capire come fare. Grazie ancora
----------------------------------------
================================================================================
E' possibile aggiornare delle variabili a tempo?
================================================================================
AUTORE: 6224
DATA :17/02/2013 - 18:38:21
----------------------------------------
Salve a tutti,
avrei bisogno di fare alcuni test ad un mio vi. Il vi dovrà leggere dei segnali digitali (tipo sei bit) e trasformarli nel relativo numero digitale. Non avendo al momento una daq vi chiedo come posso fare a creare tipo 4 o 5 sequenze di durata decisa da me e ad ogni sequenza usare delle variabili con diverso valore.
Per chiarire ulteriormente, vorrei fare avere una sequenza di 3 sec e passo certi valori al mio vi, scaduti i 3 sec parte una sequenza di 5 con altri valori etc etc....
Qualcuno sa come posso fare? Volevo usare la sequenza temporale ma non capisco come funziona.....
----------------------------------------
AUTORE: 482
DATA :18/02/2013 - 07:17:09
----------------------------------------
usa un struttura sequence, flat o stacked è indifferente è solo una questione estetica.
Un idea semplice potrebbe essere mettere nei rispettivi casi queste cose:
1- Passi alle uscite il valore che vuoi
2- metti un wait che faccia aspettare 3 secondi
3- passi alle uscite il secondo valore
4- metti un wait che faccia aspettare altri 3 secondi
5- e cosi' via....
Quando crei una sequence, per aggiungere le sequenze successive devi clikkare col destro sul bordo e selezionare "add frame after".
Tieni presente che essendo una sequence, le sequenze vengono sempre eseguite da sinistra verso destra per la flat e dalla 0 in avanti per la stacked e non è possibile passare a parti della sequenza non contigue. Per quello bisogna usare la struttura CASE.
----------------------------------------
AUTORE: 6224
DATA :18/02/2013 - 17:07:56
----------------------------------------
Ciao e grazie della risposta,
quello che mi dici è più o meno l'idea che avevo anche io. C'è solo un problema ma apro una piccola parentesi:
il mio vi prende in ingresso tre numeri e in uscita mi torna una figura con dei punti disegnati sopra.
Le variabili che voglio aggiornare sono i tre numeri che prende il vi in ingresso, quindi immagino che il mio vi stia fuori dagli stack e volta per volta vengono aggiornate le variabili. Il problema sta che se prendo le variabili del primo frame e le porto in uscita, attraversano tutti i frame che seguono, e non posso collegare le varibili del frame dopo in uscita. Con il frame stack è uguale tant'è che labview mi da un errore sul collegamento... quindi non so che fare. Magari domani faccio uno screen cosi potresti dirmi se sbaglio dove sbaglio?
----------------------------------------
AUTORE: 482
DATA :19/02/2013 - 07:29:09
----------------------------------------
Cmq il tuo problema sta nel chiarirti la sequenza logica che deve seguire il tuo programma.
Innanzitutto cosa intendi per "prende in ingresso"? Che le inserisce l'utente o che arrivano da un altro vi e quindi questo è un SubVI?
Se per ogni frame vai ad aggiornare tutte e 3 le variabili, non puoi usare un subVI con una sequence a meno ch enon lavori su variabili GLOBALI.
è Solo questione di logica temporale. Una volta che hai definito questa, puoi programmare il tuo VI.
----------------------------------------
AUTORE: 301
DATA :19/02/2013 - 12:40:37
----------------------------------------
Mi intrometto.......
Io userei una funzione "Time elapsed" ed un "index Array".....
In pratica, ti crei un array (matrice) con tutte le tue variabili ed in base al "time elapsed" (ossia se il tempo della tua "fase" è trascorso) butti fuori i vari indici....
Aris
----------------------------------------
AUTORE: 6224
DATA :20/02/2013 - 20:19:27
----------------------------------------
Grazie a tutti,
ho risolto con le variabili locali ( quelle globali non me le faceva usare...ma tant'è...)
Grazie a tutti
----------------------------------------
================================================================================
Confronto tra due valori di potenza
================================================================================
AUTORE: 8713
DATA :18/02/2013 - 13:21:48
----------------------------------------
Ciao a tutti,
sono uno studente di scienza dei materiali e sto iniziando la mia tesi di laurea: questa è la mia prima volta con LabVIEW e sono abbastanza confuso!
Devo prendere le misure per un esperimento di fotoluminescenza ed ho bisogno di controllare la potenza che arriva sul campione: il mio obiettivo è quello di confrontare il valore col misuratore di potenza (PM100D) con un altro che decido io dal PC e se questi due sono diversi la filter wheel, che fa passare più o meno potenza, (TDC001) deve ruotare fino a quando i due non sono uguali o comunque diversi di poco (differenza di 0,1 per esempio).
Ho letto la guida di APT a LabVIEW e molti altri esempi sul web, ma non so quale metodo motore APT è quello corretto per la mia portata, ho provato con MoveRelative, ma non so come finire questo progetto, all'apparenza, semplice
Questo è "cosa" ho fatto fino ad ora!
Â
Grazie mille
----------------------------------------
AUTORE: 1078
DATA :22/02/2013 - 15:25:17
----------------------------------------
Ciao botolo,
Intanto sarebbe carino capire esattamente quali sono le componenti del tuo sistema (perchè se non ho capito male tu devi controllare un sistema da labview).
Poi, sarebbe meglio se si discutesse su un VI esempio, senza driver specifici; anche perchè difficilmente gli utenti di questo forum, quelli che possono darti una mano, hanno a disposizione i tuoi stessi strumenti e difficilmente ne acquisteranno solo per dare una mano a te.....
Direi quindi di riprovare a formulare la richiesta, postando un vi di esempio.....
Buon lavoro.
----------------------------------------
================================================================================
Labview e TCP
================================================================================
AUTORE: 5498
DATA :18/02/2013 - 19:12:29
----------------------------------------
Ho realizzato una chat con LabVIEW utilizzando il protocollo TCP.
Fintanto che lavoro in locale tutto Ok, però quando cerco di collegarmi all'indirizzo IP di un computer di un mio amico non riesce ad aprire la connessione.
Ho provato più volte con altre persone ma niente da fare, quale potrebbe essere il problema?
----------------------------------------
AUTORE: 301
DATA :19/02/2013 - 06:52:23
----------------------------------------
Con indirizzo IP, intendi sulla stessa LAN o via Internet?
Di solito, se lavori su una LAN non dovresti avere problemi (potresti anche crearti una VLAN per provare), tramite Internet, invece, le cose si complicano un po.
Che tipo di connessione hanno tutti i pc?
Hanno tutti un IP pubblico?
I routers, ammettono connessioni in ingresso dalla porta che hai utilizzato?
Aris
----------------------------------------
AUTORE: 645
DATA :20/02/2013 - 07:40:50
----------------------------------------
In che senso "non ti si collega"? Ottieni qualche errore particolare?
Controlla le impostazioni del router o della LAN per essere sicuri che non vengano bloccati programmi di comunicazione (il tuo VI in questo caso).
Magari posta un'immagine del Block Diagram o della schermata di errore.
----------------------------------------
================================================================================
3Dmicro Toolkit - Programmare board Arduino con LabVIEW
================================================================================
AUTORE: 7534
DATA :20/02/2013 - 10:11:10
----------------------------------------
Salve a tutti, sono Riccardo Donnini e rappresento lo SpinOff universitario 3D-SVS dell'Università Politecnica delle Marche.
Volevo portare all'attenzione di questa comunità un prodotto software sviluppato da noi dottorandi dello SpinOff in grado di programmare device Arduino e Microchip direttamente in LabVIEW.
LabVIEW rende molto semplice l’apprendimento dei rudimenti della programmazione attraverso la programmazione grafica e, finora, questo prodotto non si è mai avvicinato alla programmazione del mondo Arduino se non con dei toolkit che funzionavano da semplice interfaccia.
Questi toolkit, infatti, non permettono la vera e propria programmazione del micro, ma solo un metodo per lo scambio di informazioni col PC e questa limitazione, rimarcata anche da molte persone durante il NIDays 2012 a Roma, è stata superata attraverso il [b:n2r2ccdh]3Dmicro Toolkit Arduino Expansion[/b:n2r2ccdh] prodotto dalla 3D-SVS.
La nostra azienda, che deve parte della sua esperienza in questo campo allo sviluppo di un Toolkit analogo anche per microcontrollori della famiglia PIC32 [url:n2r2ccdh]http://www.3d-svs.com/3dmicro-toolkit/download[/url:n2r2ccdh], mette adesso a disposizione un analogo prodotto compatibile con le principali device Arduino.
Si può vedere nel video YouTube seguente come in poco tempo viene creato il programma che implementa un inseguitore solare che viene direttamente caricato sull’Arduino, utilizzando parti di codice che possono essere “riciclate†da altri progetti (nell’esempio il blocchetto che implementa il controllore P):
[url:n2r2ccdh]http://www.youtube.com/watch?feature=player_embedded&v=Nea9I_gp-rI&hd=1[/url:n2r2ccdh]
Questo prodotto supporta alcune feature dell’Arduino come, ad esempio:
[list:n2r2ccdh][*:n2r2ccdh]Gestione diretta dei pin[/*:m:n2r2ccdh][/list:u:n2r2ccdh]
[list:n2r2ccdh][*:n2r2ccdh]Gestione delle funzioni temporali[/*:m:n2r2ccdh][/list:u:n2r2ccdh]
[list:n2r2ccdh][*:n2r2ccdh]Gestione degli ingressi e uscite digitali e analogiche:
sono presenti tutti i canali dell’A/D converter e le funzioni per gestire i PWM( in particolare i pin relativi al timer1 si possono configurare anche nel periodo)[/*:m:n2r2ccdh][/list:u:n2r2ccdh]
Il toolkit è compatibile con la famiglia di microcontrollori [b:n2r2ccdh]ATMega328[/b:n2r2ccdh] e [b:n2r2ccdh]ATMega2560[/b:n2r2ccdh] che comprendono quindi sia l’[b:n2r2ccdh]Arduino Duemilanove[/b:n2r2ccdh], [b:n2r2ccdh]Diecimila[/b:n2r2ccdh], [b:n2r2ccdh]UNO R3[/b:n2r2ccdh] e [b:n2r2ccdh]MEGA 2560[/b:n2r2ccdh].
Il programma creato all’interno di LabVIEW viene convertito attraverso il C Code Generator Toolkit della NI in linguaggio C che viene modificato opportunamente per essere compatibile con l’Arduino e successivamente può essere caricato all’interno dello stesso.
Per maggiori informazioni potete consultare il nostro sito:
[url:n2r2ccdh]http://www.3d-svs.com/3dmicro-toolkit/beta-testing-arduino-expansion[/url:n2r2ccdh]
o attraverso questo forum, spero si possa instaurare un'interazione con la sua comunità.
----------------------------------------
AUTORE: 482
DATA :20/02/2013 - 12:36:14
----------------------------------------
Fiiigoooo!
ma non ho capito, serve il C Code generator a parte?
----------------------------------------
AUTORE: 482
DATA :01/03/2013 - 11:24:08
----------------------------------------
vorrei aggiunger un PORCADIQUELLAVACCALADRA a questo topic.
La cosa mi sembrava molto interessante, programmare un hardware da una 30ina di euro con labview sarebbe fantastico...
allora ho telefonato al commerciale NI....
Il C code generator costa attorno ai 15000 euro!!
----------------------------------------
AUTORE: 301
DATA :01/03/2013 - 12:34:09
----------------------------------------
Ciao Geppo,
io avevo dato un'occhiata a questo progetto già un po di tempo fa, e mi sembra di aver capito (attendiamo che 3DSVS confermi) che l'offerta sia una libreria LabView ed un tool credato con il C code generator che ti compila il codice per l'Arduino!
Alla fine è una qualcosa di molto simile (come concetto) al compilatore Xilinx per l'FPGA (National).
Aris
----------------------------------------
AUTORE: 301
DATA :01/03/2013 - 13:01:39
----------------------------------------
Ritiro, serve il C Code Gen.
Aris
----------------------------------------
================================================================================
indicator stringa
================================================================================
AUTORE: 1612
DATA :20/02/2013 - 13:50:00
----------------------------------------
Buongiorno a tutti,
ho un indicator stringa sul FP che visualizza dei dati di testo presi da un File.
Se il testo della riga è più lungo della dimensione fisica dell'indicator questo non va a capo ma rimane sulla stessa riga e quindi non è completamente visibile.
E' possibile impostando qualche proprietà per fare in modo che il testo vada a capo da solo (come farebbe un editor di testo)?
Grazie
----------------------------------------
AUTORE: 482
DATA :21/02/2013 - 07:28:26
----------------------------------------
click col destro -> Enable Wrapping
----------------------------------------
AUTORE: 1612
DATA :21/02/2013 - 08:25:30
----------------------------------------
Grazie! Grazie! Grazie!
----------------------------------------
================================================================================
Problemi di editor nel Block Diagram
================================================================================
AUTORE: 4163
DATA :22/02/2013 - 16:39:09
----------------------------------------
Salve ho un .vi un pò grandino e quando inserisco una nuova costante nel BD, non mi è possibile inserire o modificare il valore della stessa,
per farlo devo trasformarla in un controllo, andare su FP, inserire il valore voluto e quindi trasformarla di nuovo in
una costante in BD.
Qualcuno ha un rimedio ?
Grazie
Valerio
----------------------------------------
AUTORE: 301
DATA :25/02/2013 - 07:15:38
----------------------------------------
L'unica cosa che mi viene da pensare, è che tu abbia inserito elementi grafici nel BD e che questi siano un layer superiore alla tua costante (di conseguenza non riesci nemmeno a selezionarla).
Aris
----------------------------------------
AUTORE: 645
DATA :25/02/2013 - 09:44:17
----------------------------------------
Prova a postare un'immagine del BD
----------------------------------------
================================================================================
Ancora bisogno di voi
================================================================================
AUTORE: 6224
DATA :22/02/2013 - 19:08:37
----------------------------------------
Save a tutti
rieccomi qui ancora con le mie "assurde" richieste di aiuto.
Ho due domande per voi:
1)è possibile far in modo che un mio subvi venga eseguito solo se le variabili in ingresso cambiano?
attualmente ho notato che se in ingresso le variabili non cambiano il subvi comunque esegue quello che deve fare, io invece vorrei
che svolgesse il suo compito appena son pronte le variabili di ingresso e solo se queste subiscono un cambiamento altrimenti mantiene l'uscita a quella precedente.
2) domanda due: come posso usare gli event mouse down e mouse up di modo che, finchè il mouse è down metto in esecuzione il subvi e quando il mouse è up
l'esecuzione viene interrotta? In pratica vorrei che la pressione continua del mouse serva come start del mio subvi e che il processo venga interrotto se rilascio
il bottone del mouse.
Se come al solito non sono stato chiaro sono sempre a disposizione per chiarimenti.
Grazie in anticipo
----------------------------------------
AUTORE: 482
DATA :25/02/2013 - 07:14:16
----------------------------------------
Risposte brevi:
1) si
2)Event structure
risposte un pelo piu' articolate:
1)Usa una casae structure che prima verifica lo stato degli ingressi con quello all'istante precedente (tramite shift register) e se differenti allora esegui il subvi
2) Le event structure contemplano le azioni di mouse up e mouse down sugli oggetti, quindi puoi lavorare su quello.
----------------------------------------
AUTORE: 43
DATA :25/02/2013 - 11:23:21
----------------------------------------
[quote="Jocky":6nhy7q3q]Save a tutti
rieccomi qui ancora con le mie "assurde" richieste di aiuto.
Ho due domande per voi:
1)è possibile far in modo che un mio subvi venga eseguito solo se le variabili in ingresso cambiano?
attualmente ho notato che se in ingresso le variabili non cambiano il subvi comunque esegue quello che deve fare, io invece vorrei
che svolgesse il suo compito appena son pronte le variabili di ingresso e solo se queste subiscono un cambiamento altrimenti mantiene l'uscita a quella precedente.
2) domanda due: come posso usare gli event mouse down e mouse up di modo che, finchè il mouse è down metto in esecuzione il subvi e quando il mouse è up
l'esecuzione viene interrotta? In pratica vorrei che la pressione continua del mouse serva come start del mio subvi e che il processo venga interrotto se rilascio
il bottone del mouse.
Se come al solito non sono stato chiaro sono sempre a disposizione per chiarimenti.
Grazie in anticipo[/quote:6nhy7q3q]
Ciao
1) come ha scritto Geppo, basta utilizzare una Case structure. nel "Selettore" del case entrerà un valore booleano che indicherà se c'è stata una variazione o meno.
Per verificare le variazioni del contenuto di un controllo utilizzare uno Shift Register che dovrai opportunamente inizializzare fuori del tuo loop di controllo.
2) richiesta bizzarra. Usare un tasto come se fosse un "citofono" (finchè tengo premuto suona il campanello) è possibile ma...
Sarebbe meglio e + semplice utilizzare 2 tasti START e STOP. Oppure un unico tasto che inverte il proprio stato ad ogni pressione.
Ma non è possible spiegare il contesto nel quale si vogliono implementare ciò che si è scelto di fare?
bye
----------------------------------------
AUTORE: 6224
DATA :25/02/2013 - 18:51:08
----------------------------------------
Ok grazie proverò a seguire i vostri suggerimenti...
Per quanto riguarda il tasto stop e start non è possibile altrimenti avrei gia risolto.
Se chiedevo quello è perchè sto provando a simulare quello che sarà la fase finale del progetto, in cui il tutto è comandato dalla pressione di un bottone che "DEVE"
rimanere premuto durante l'esecuzione e rilasciato in fase finale.
Grazie a tutti comunque
----------------------------------------
================================================================================
Labview DLL per NET
================================================================================
AUTORE: 2435
DATA :25/02/2013 - 12:59:30
----------------------------------------
Ciao a tutti....
sapete come creare DLL in LV che poi possono essere richiamate in NET??
io ho trovato questo esempio:
https://forums.ni.com/t5/LabVIEW/Call-d ... -p/1913695
Ci sono 2 allegati uno per creare la DLL e uno per richiamarla....e tutto funziona molto bene...
Però se provo a modificare la DLL poi mi da problemi in NET ....
non riesco a capire il perchè.....Avete qualche suggerimento??
Grazie
----------------------------------------
================================================================================
array
================================================================================
AUTORE: 7113
DATA :27/02/2013 - 11:30:35
----------------------------------------
Ciao a tutti, ho bisogno di un consiglio
devo leggere varie volte una cella di un file exel, vorrei evitare di aprire continuamente il file.
Pensavo di copiare tutto il file in un array e poi andare a prendere le singole celle quando ne ho bisogno.
Come posso fare?
Devo creare un 'index array' o cos'altro?
----------------------------------------
AUTORE: 301
DATA :27/02/2013 - 12:57:47
----------------------------------------
In questi casi, la cosa migliore da fare, è usare una Functional Global Variable per mantanere i dati caricati in memoria ed estrapolare quello che ti serve.
Dalla tua matrice di dati, "leggi" la cella con un index array, si.
Aris
----------------------------------------
AUTORE: 3428
DATA :27/02/2013 - 13:27:38
----------------------------------------
ciao, beh dipende...
se dici di dover leggere solo una cella allora ti conviene aprire il file, prenderti il valore che ti serve e metterlo, appoggiarlo, in un controllo che non aggiornerai più in modo da utilizzarlo ogni volta che ti serve..
Diverso è se aggiorni quel valore, lo salvi sul file e poi lo devi riprendere.. anche se così puoi sempre usare il file solo per scirverci (apri, scrivi, chiudi) e non riaprilo perchè sai già cosa c'hai scritto...
Ovviamente si per prendere una singola cella ti serve l'index array
----------------------------------------
AUTORE: 7113
DATA :27/02/2013 - 16:32:48
----------------------------------------
Ok,
dunque il file exel non devo assolutamente modificarlo, però devo leggere i valori di alcune celle in momenti diversi del programma.
Cosa mi consigliate di usare per mantenere in memoria i dati?
Grazie
----------------------------------------
AUTORE: 301
DATA :27/02/2013 - 16:40:17
----------------------------------------
Quello che ti ho scritto prima.
Una Functional Global Variable.
Aris
----------------------------------------
AUTORE: 301
DATA :28/02/2013 - 07:05:58
----------------------------------------
Ti posto un piccolo e stupido esempietto di FGV.
Prova a guardartelo e vedi anche qualche guida in internet (sul sito della National trovi molto materiale).
Aris
----------------------------------------
AUTORE: 7113
DATA :28/02/2013 - 09:00:25
----------------------------------------
grazie, provo a lavorarci un po
----------------------------------------
AUTORE: 7113
DATA :02/03/2013 - 07:44:54
----------------------------------------
Ciao Aris, ho provato il vi 'implementation' nell'allegato perchè aprendo un file excel mi appare sulla stringa dei caratteri strani e non il contenuto della cella?
----------------------------------------
AUTORE: 301
DATA :02/03/2013 - 09:25:59
----------------------------------------
Per interagire con un vero file xls,la storia si complica.
Salvati il file come csv e riprova.
----------------------------------------
AUTORE: 7113
DATA :02/03/2013 - 09:37:54
----------------------------------------
Con csv si vedono i dati
però se seleziono la colonna 0 mi prende tutta la riga (0,1,2, ecc.)
se seleziono la colonna >0 non vedo niente
vorrei invece catturare le singole celle
sai dove è il problema?
grazie
----------------------------------------
AUTORE: 301
DATA :02/03/2013 - 10:06:16
----------------------------------------
Devi specificare la virgola come delimitatore nella funzione read
----------------------------------------
AUTORE: 7113
DATA :02/03/2013 - 10:53:13
----------------------------------------
non ho capito
credo che ti riferisci alle proprietà della 'action' 'index'
ma non riesco a capire dove specificare la virgola come separatore
----------------------------------------
AUTORE: 301
DATA :02/03/2013 - 11:33:11
----------------------------------------
No,nella funzione di lettura file,devi specificare il delimitatore delle colonne.di defaut è il tab,tu devi mettere la virgola
----------------------------------------
AUTORE: 7113
DATA :02/03/2013 - 14:06:27
----------------------------------------
OK, nello Spreadsheet del subvi
grazie
----------------------------------------
================================================================================
Come posso gestire VI uguali, con variabili globali diverse?
================================================================================
AUTORE: 822
DATA :01/03/2013 - 15:37:50
----------------------------------------
Mi spiego meglio.
Sto sviluppando un programma che comunica con 20 PLC. Per ogni PLC ho creato un VI, che partono tutti in parallelo (sono 20 macchine a stati che vanno in run all'avvio e in stop all'uscita del programma). Questi 20 VI sono esattamente identici, solo che al loro interno richiamano un set di variabili globali definito per ogni PLC. Il numero e le funzioni di queste variabili sono uguali per ogni PLC, solo che sono specifici per ogni PLC.
Posso creare un unico VI, che viene richiamato 20 volte, ma che si gestisce in modo automatico le variabili al suo interno a seconda del PLC di riferimento?
Io ho creato questi VI:
globalOP10.vi
globalOP20.vi
...
globalOP200.vi
che sono identici l'uno con l'altro
poi ho creato:
StateMachineOP10.vi che contiene le globali di globalOP10.vi
StateMachineOP20.vi che contiene le globali di globalOP20.vi
...
StateMachineOP200.vi che contiene le globali di globalOP200.vi
Ora vorrei sapere se è possibile fare un solo StateMachine.vi che va a scrivere e leggere su globalOP10 o globalOP20 o ... globalOP200.
----------------------------------------
AUTORE: 3428
DATA :01/03/2013 - 17:16:00
----------------------------------------
Non so se ho capito bene quello che intendi ma ti basta fare una vi con la macchina a stati per la gestione del plc singolo, e fin lì mi sembra che già ci sei...
Poi dentro a questa vi dai in ingresso il numero del PLC quindi in ogni parte dove utilizzerai una globale devi mettere un bel case structure con i 20 casi dei 20 plc che hanno in ingresso il nr del plc e dentro al caso 1 avrà la globale del plc 1, dentro al caso 2 la globale 2 ecc.
A questo punto potrai mettere la vi generale come clone e riutilizzarla 20 volte dando in ingresso i 20 plc diversi.
Ovviamente ti perderai il debug perchè clone. Ti consiglio di fare così, almeno per il debug iniziale: copi la vi 20 volte e la rinomini in modo che le puoi debuggare tutte... alla fine quando tutto funziona se proprio vuoi, crei il clone.
----------------------------------------
AUTORE: 822
DATA :01/03/2013 - 17:29:07
----------------------------------------
Fare 20 case all'interno di un VI o 20 VI è la stessa cosa..
il discorso è che gli eventuali 20 case sarebbero strutturalmente tutti uguali, ma vanno a richiamare variabili globali distinte (ma che hanno tutte le stesse funzioni però riferite a plc diversi). Nel senso che avrò:
start plc op10 -> read plc op10 -> write plc op10 -> stop plc op10
start plc op20 -> read plc op20 -> write plc op20 -> stop plc op20
start plc op30 -> read plc op30 -> write plc op30 -> stop plc op30
ecc..
io vorrei fare un unico VI:
start plc -> read plc -> write plc -> stop plc
contenente variabili globali che, in un unico case, a seconda del numero del plc in ingresso, vanno a scrivere sulla variabile globale del plc di riferimento.
In pratica a seconda del numero che ho in ingresso vorrei cambiare la proprietà (se possibile) della variabile globale in modo che sia riferita al plc che mi interessa.
----------------------------------------
AUTORE: 822
DATA :01/03/2013 - 17:31:31
----------------------------------------
Voglio cambiare in modo dinamico il riferimento della variabile globale
----------------------------------------
AUTORE: 3428
DATA :02/03/2013 - 14:20:22
----------------------------------------
eccola,
-nel path passerai quello dei vari file globalOP10.vi ecc;
-nella label inserisci il nome del controllo che devi modificare (che spero li ha messi tutti uguali in tutti e 20 i vi) visto che cambia il nome del file global;
-boolean è il valore se booleano altrimenti metti quello che ti serve
----------------------------------------
AUTORE: 822
DATA :02/03/2013 - 16:00:01
----------------------------------------
ok grazie!
questo per andare a scrivere su un controllo, se invece dovessi leggere il valore della globale immagino che debba cambiare il metodo in "ctrl.Val.Get"?
Il vi generale, che devo ripetere per venti volte e deve girare in parallelo, lo devo fare rientrante?
----------------------------------------
AUTORE: 3428
DATA :03/03/2013 - 09:31:26
----------------------------------------
beh si, non l'ho provato ma credo che sia proprio il get.
Per il vi, si rientrante (clone) sempre se non devi debuggare l'applicazione.
Continuo a consigliarti di salvarti il vi 20 volte con 20 nomi diversi se devi debuggarlo...
----------------------------------------
AUTORE: 43
DATA :04/03/2013 - 08:07:06
----------------------------------------
[quote="giuseppe.l74":1w7dh2l4]Mi spiego meglio.
Sto sviluppando un programma che comunica con 20 PLC. Per ogni PLC ho creato un VI, che partono tutti in parallelo (sono 20 macchine a stati che vanno in run all'avvio e in stop all'uscita del programma). Questi 20 VI sono esattamente identici, solo che al loro interno richiamano un set di variabili globali definito per ogni PLC. Il numero e le funzioni di queste variabili sono uguali per ogni PLC, solo che sono specifici per ogni PLC.
Posso creare un unico VI, che viene richiamato 20 volte, ma che si gestisce in modo automatico le variabili al suo interno a seconda del PLC di riferimento?
Io ho creato questi VI:
globalOP10.vi
globalOP20.vi
...
globalOP200.vi
che sono identici l'uno con l'altro
poi ho creato:
StateMachineOP10.vi che contiene le globali di globalOP10.vi
StateMachineOP20.vi che contiene le globali di globalOP20.vi
...
StateMachineOP200.vi che contiene le globali di globalOP200.vi
Ora vorrei sapere se è possibile fare un solo StateMachine.vi che va a scrivere e leggere su globalOP10 o globalOP20 o ... globalOP200.[/quote:1w7dh2l4]
Se si lavora così, siamo all'anno 0 della programmazione.
Il codice deve essere unico.
Anzi.
Deve essere possibile, cambiando un opportuno file di configurazione, variare il numero di PLC e la loro configurazione.
Non solo devi scrivere un unico VI, ma sarebbe meglio evitare variabili Glolbali fatte in quel modo. Al limite raggruppa le informazioni in array per poterle indicizzare semplicemente.
i VI clone si possono debuggare.
La programmazione ad oggetti può essere d'aiuto per scrivere il codice + pulito.
bye
----------------------------------------
AUTORE: 822
DATA :04/03/2013 - 08:46:15
----------------------------------------
Grazie paracarro..
sicuramente non sono riuscito a leggere bene fra le righe di quello che hai scritto..
quello che cerco di fare è proprio ridurre il numero di VI ad uno solo, visto che farebbero tutti la stessa cosa.
La configurazione dei PLC è già su file.
Non conosco un altro metodo per utilizzare le variabili globali.
Per il resto condivido tutto quello che hai scritto. E vorrei SEMPRE fare un codice pulito, ma non ci riesco MAI, perchè sicuramente non ne sono in grado e poi perchè una cosa che deve essere pronta per domani me la chiedono già per ieri..
----------------------------------------
AUTORE: 43
DATA :04/03/2013 - 13:32:22
----------------------------------------
[quote="giuseppe.l74":32map6vk]Grazie paracarro..
sicuramente non sono riuscito a leggere bene fra le righe di quello che hai scritto..
quello che cerco di fare è proprio ridurre il numero di VI ad uno solo, visto che farebbero tutti la stessa cosa.
La configurazione dei PLC è già su file.
Non conosco un altro metodo per utilizzare le variabili globali.
Per il resto condivido tutto quello che hai scritto. E vorrei SEMPRE fare un codice pulito, ma non ci riesco MAI, perchè sicuramente non ne sono in grado e poi perchè una cosa che deve essere pronta per domani me la chiedono già per ieri..[/quote:32map6vk]
Non mi ringraziare.
Non ho scritto poi nulla di così veramente particolare....
Fa piacere che ci si sforzi di fare le cose al meglio: le intenzioni ci sono sempre, ma a mio modo di vedere, manca spesso la volontà La scusa è quella che hai citato anche tu: ,la mancanza di tempo. Ma spesso si dimentica che scrivere bene il sw comporta uno sforzo iniziale che ben presto si ripaga da solo xkè il sw risulta + facilmente manutenibile...(Modificare VI duplicati è implicitamente oneroso...).
Quello che ti proponevo era piuttosto semplice.
Dato che ti piace usare le variabili globali, è sufficiente raggruppare le informazioni in cluster o anche singoli elementi e farne degli array, in modo che:
- il VI rientrante che implementerai avrà come parametro (forse unico) un "indice" mediante il quale leggere e scrivere negli array globali.
- nel caso i dati da gestire cambiassero basterà modificare l'elemento dell'array e automaticamente verrà modificato per tutti gli elementi che lo compongono.
- ricorda che se per ogni PLC devi gestire array di dati (di lunghezza diversa da un PLC ad un altro), la cosa migliore non è crerare una matrice, bensì costruire un array di cluster che contengono un array....
cmq sia ci sono un po' alternative all'uso delle globali che è inutile citare...
bye
----------------------------------------
AUTORE: 822
DATA :04/03/2013 - 13:58:11
----------------------------------------
[quote:niidpsew]Non mi ringraziare.
Non ho scritto poi nulla di così veramente particolare....[/quote:niidpsew]
Invece ti ringrazio perchè i tuoi interventi sebbene, lasciami dire, "rudi" nei toni, sono sempre educativi e pieni di una conoscenza del mezzo che mi piacerebbe avere ma che non ho.
[quote:niidpsew] La scusa è quella che hai citato anche tu: ,la mancanza di tempo. Ma spesso si dimentica che scrivere bene il sw comporta uno sforzo iniziale che ben presto si ripaga da solo xkè il sw risulta + facilmente manutenibile...[/quote:niidpsew]
Scusa ma, senza polemica, questa è un'informazione poco illuminante e alquanto banale, perchè estrapolata da un contesto che non ti appartiene, tu non conosci i tempi e i modi coi quali mi tocca lavorare.. e in definitiva lo scopo della mia domanda era proprio il cercare di rendere più leggibile e velocemente modificabile il programma.
----------------------------------------
================================================================================
device name
================================================================================
AUTORE: 7113
DATA :02/03/2013 - 15:55:09
----------------------------------------
ho visto che ad ogni scheda installata viene assegnato un nome "Dev1, Dev2, ecc." e che comunicare con una scheda c'è il DAQmx Device Name che restituisce i nomi assegnati alle schede
io vorrei prendere il codice della scheda e non il nome assegnato
ad esempio ho installato la scheda usb-6008 gli è stato assegnato il nome Dev1 e quando lancio DAQmx Device Name mi restituisce Dev1
vorrei invece ricevere usb-6008
è possibile?
----------------------------------------
AUTORE: 301
DATA :04/03/2013 - 07:54:49
----------------------------------------
Devi "giocare" con le proprietà del DAQmx.
Unica nota, è che facendo in questo modo, gli identificativi dei devices non saranno univoci.
Aris
----------------------------------------
================================================================================
Libreria CAN per LV
================================================================================
AUTORE: 2435
DATA :04/03/2013 - 08:49:30
----------------------------------------
Ciao a tutti,
ho un piccolo problema....ho trovato queta libreria LV per interfacciarmi con il CAN bus...
ma non riesco ad aprirla perchè è troppo vecchia....riuscite per caso ad aggiornarmela ad una versione più recente??
Grazie
----------------------------------------
AUTORE: 2435
DATA :04/03/2013 - 08:50:39
----------------------------------------
Libreria LV versione X
----------------------------------------
AUTORE: 43
DATA :04/03/2013 - 13:12:16
----------------------------------------
E' semplice
Se usi schede della Vector, vai sul sito e scarica i suoi driver LabVIEW.
ecco il link
https://www.vector.com/vi_downloadcenter_en.html
bye
----------------------------------------
================================================================================
Aiuto creazione scala colori
================================================================================
AUTORE: 482
DATA :04/03/2013 - 16:00:22
----------------------------------------
sono stanco e ci sto girando in giro e quindi quetso vuol dire che mi devo prendere una pausa e chiedere a qualcuno che magari ci ha già pichciato la testa...
Sto realizzando un grafico a torta tramite un controllo immagine nel quale devo colorare gli spicchi in base ad un certo valore attribuito a quello spicchio.
L'idea è:
C'e' un valore medio, un valore massimo e un valore minimo.
Sapendo che al mio spicchio è attribuita una differenza percentuale rispetto al valore medio, vorrei creare una scala colori che mi dia al valore massimo un rosso e al valore minimo un blu sfumando.
Qualcuno sa darmi qualche dritta su come poterlo fare?
----------------------------------------
AUTORE: 10264
DATA :21/03/2013 - 08:38:47
----------------------------------------
ciao,
se devi creare la scala colori in funzione del valore io userei, in lv 8.5, intensity graph/chart.
fa sapere
----------------------------------------
AUTORE: 482
DATA :21/03/2013 - 14:34:04
----------------------------------------
no, poi alla fine ho utilizzato i blocchetti di treshold sugli array e ho risolto.
Prima pero' ho dovuto creare un array di colori che andasse gradualmente dal blu al rosso.
----------------------------------------
================================================================================
Time-frequency analysis
================================================================================
AUTORE: 8180
DATA :04/03/2013 - 16:16:33
----------------------------------------
Buona sera a tutti,
dovrei eseguire una corretta time-frequency analysis, utilizzando la short term fourier transform, di alcuni segnali vibrazionali presi da un accelerometro.
Essendo nuovo all'analisi dei segnali vorrei sapere se il mio codice è corretto; qualcuno sa darmi qualche consiglio?
----------------------------------------
AUTORE: 1078
DATA :27/03/2013 - 08:15:54
----------------------------------------
Ciao...
Per poterti aiutare meglio, potresti allegare anche il file di dati?
----------------------------------------
AUTORE: 8180
DATA :27/03/2013 - 09:38:26
----------------------------------------
Ciao Ricky, grazie per avermi risposto.
In allegato c'è un esempio del segnale che vorrei analizzare, ma non riesco a capire dove sbaglio.
Sto cercando di trovare l'advanced signal processing Toolkit in cui dovrebbe già essere implementata la time-frequency analysis; mi sai dire se il 2010 va bene con la versione 2012 di Lb?
----------------------------------------
AUTORE: 1078
DATA :27/03/2013 - 09:53:03
----------------------------------------
Ciao pescecannuccia
Hai provato a giocare con le scale del tuo Intesity Graph?
Potresti postare un'immagine di quello che ti viene rappresentato nel grafico? Va benissimo uno screen shot del frontpannel del VI!
----------------------------------------
AUTORE: 8180
DATA :27/03/2013 - 10:29:44
----------------------------------------
Eccoti lo screen shot.
La prima cosa che balza alla vista è la scala temporale che è completamente sballata..
Per risolvere il problema sto provando a reperire il Toolkit 2012 che ha già implementata di suo la tfa.
Tu cosa mi suggerisci di fare?
----------------------------------------
AUTORE: 1078
DATA :27/03/2013 - 10:46:28
----------------------------------------
Cerchiamo di capire meglio...
Quali sono le impostazioni di time-freq simpling info e di finestra che stai usando?
Poi la scala temporale della che stai rappresentando nel grafico Intensity non è quella del segnale che si vede nell'altro grafico ma quella della sua STFT...
Per studiare meglio il segnale intato ti cosiglio di modificare i parametri di scala della sua ampiezza nel grafico dell'intensità, togli l'auto scale e setta il valore massimo su 20; sarebbe meglio che facessi lo stesso sull'asse della frequenza, analizzare le frequenze alte non è indicativo, quindi togli l'autoscale e setta il valore massimo di scala su un valore più idoneo alla tua analisi.
Poi non so di cosa stiamo parlando quindi non so aiutarti sull'analisi del segnale.... io posso aiutarti a visualizzare meglio i tuoi risultati, l'analisi devi farla tu!
----------------------------------------
AUTORE: 8180
DATA :27/03/2013 - 11:21:06
----------------------------------------
La finestra è una gaussiana con lunghezza di 64 punti, mentre il time step è quello di default (-1) e i frequency bins sono 512.
Effettuando la tfa di segnali vibrazionali, dovrei trovare frequenze dell'ordine dei kHz e invece non arrivo neanche a 100Hz...
----------------------------------------
AUTORE: 1078
DATA :27/03/2013 - 13:15:04
----------------------------------------
Ho visto i dati del file che hai allegato, eseguendo la STFT dei dati passati effettivamente la frequenza massima che si ottiene è circa 2Hz.
Sei sicuro che i dati siano corretti? Non è che manca un fattore di scala che non stiamo considerando?
----------------------------------------
AUTORE: 8180
DATA :27/03/2013 - 16:21:13
----------------------------------------
I dati sono corretti...
Tu hai mai effettuato questo tipo di tfa su dati vibrazionali?
----------------------------------------
AUTORE: 1078
DATA :28/03/2013 - 08:04:06
----------------------------------------
Io ho fatto diverse volte prove di vibrazione varie, però non ho mai fatto la STFT dei dati con labview, perchè i grafici delle frequenze (di risonanza etc) mi venivano direttamente forniti dal software di gestione del vibradore (LDS). Putroppo quello che vedi nel tuo intesity grpah è la rappresentazine dei dati elaborati, non conoscendo la prova e quello che stai cercando non so darti ulteriori aiuti.
Magari qualcun'altro sul forum è in grado di aiutarti meglio, oppure prova a postare il tuo problema direttamente sul forum NI o su LAVA....
----------------------------------------
AUTORE: 8180
DATA :28/03/2013 - 12:16:42
----------------------------------------
Ok, ti ringrazio comunque per la tua disponibilità.
----------------------------------------
================================================================================
Firma digitale, archiviazione e condivisione VI
================================================================================
AUTORE: 4160
DATA :04/03/2013 - 16:26:09
----------------------------------------
Salve a tutti,
ho realizzato diversi VI che simulano il funzionamento di IC, confezionando un pacchetto di oltre 10 componenti, tra cui Demultiplexer, Multiplexer, Comparatori, etc...
Volevo sapere, se fosse possibile applicare una firma digitale sul VI, facendo in modo che la fonte venga sempre citata, qualora si utilizzasse uno dei VI (Magari nellla documentazione, ma che non sia modificabile) e se inoltre la National Instruments fornisse un qualche tipo di supporto o grosso server per la condivisione e l'archiviazione di VI o veri e propri sistemi, realizzati su LabVIEW.
Vi ringrazio
----------------------------------------
AUTORE: 4
DATA :14/04/2013 - 18:36:30
----------------------------------------
ciao prova a guardare VIPM qui http://jki.net/vipm
Ciao
----------------------------------------
================================================================================
funzione sigmoidale
================================================================================
AUTORE: 9408
DATA :04/03/2013 - 18:59:01
----------------------------------------
ciao a tutti, volevo una mano per scrivere una funzione sigmoidale. come posso scriverla, oltre che componendo il block diagram con tutti i blocchetti basilari tipo somme e moltiplicazioni?ad esempio il formula node potrebbe esser meglio? grazie.
----------------------------------------
AUTORE: 1078
DATA :27/03/2013 - 10:29:57
----------------------------------------
Ciao bescio86,
Il formula node ti permette di scrivere facilmente, semplicemente inserendo del testo, ogni tipo di funzione matematica. Se la funzione è particolarmente complessa è sicuramente più leggibile un formula node anzichè creare una serie di calcoli utilizzando i blocchetti degli operatori matematici. Comunque è solo una questione di leggibilità e di stile, sicuramente non di prestazioni. Vedi tu cosa utilizzare.
Se poi vuoi postare la formula matematica della funzione che devi scrivere possiamo magari darti una mano a scriverla!
Buon lavoro!
----------------------------------------
================================================================================
cRIO 9951 Module Development Kit
================================================================================
AUTORE: 9544
DATA :06/03/2013 - 13:25:50
----------------------------------------
Ho appena terminato l'ultima fase di test di una interfaccia labview per una scheda da inserire nel cRIO che abbiamo sviluppato.
Per sviluppare tale interfaccia occorre utilizzare il tool della NI cRIO 9951 Module Development Kit .
Siccome non è un compito molto comune, non sono riuscito a trovare supporto sul web in termini di interventi sui forum, esempi...
Ora, connettendosi al cRIO, il wizard di labview riconosce la nostra scheda con i vari canali di I/O e proprietà che abbiamo definito (non abbiamo definito metodi).
Adesso, oltre ad usare la scheda, sarebbe bello poter condividere il Know-how che ci siamo fatti sul Module Development Kit.
----------------------------------------
AUTORE: 4
DATA :14/04/2013 - 18:38:50
----------------------------------------
Ciao è possibile avere un link con le caratteristiche della scheda?
----------------------------------------
AUTORE: 9544
DATA :16/04/2013 - 14:49:41
----------------------------------------
Ciao, grazie per l'interesse.
Non abbiamo ancora messo su nessun sito la scheda perchè non ancora omologata da NI.
Ma a parte l'hw, a cui hanno lavorato dei colleghi, mi interessava far conoscere l'"avventura" dello sviluppo dell'interfaccia. Appena lo metteremo te lo faremo sapere.
----------------------------------------
AUTORE: 4
DATA :16/04/2013 - 14:58:02
----------------------------------------
Ciao, se ti va puoi scriver una sorta di "articolo" saremo felici di poterlo pubblicare qui.
Ciao
----------------------------------------
AUTORE: 1111
DATA :28/06/2016 - 08:59:22
----------------------------------------
Ciao,
anche io sono molto interessato a conoscere la vostra esperienza di sviluppo in questo progetto.
Mi trovo in una situazione similare in quanto devo fare una proposta per la realizzazione di un modulo "ad hoc" per il cRIO, e sto ancora cercando di capire quali saranno i problemi maggiori, e so che ce ne saranno tanti.
Grazie per tutto quanto vorrai raccontarci.
Ico
----------------------------------------
================================================================================
Caratteri Unicode lingua cinese
================================================================================
AUTORE: 660
DATA :13/03/2013 - 13:36:25
----------------------------------------
Ciao a tutti,
qualcuno ha già utilizzato i caratteri unicode per sviluppare progetti multilingua dove c'era la necessità di avere anche lingue orientali?
Io ho un progetto dove da file ini leggo inizialmente in quale lingua devono essere visualizzate le caption sul front panel... poi da file di testo carico i testi della lingua voluta... tutto bene per le lingue "occidentali" ma quando ho abilitato l'utilizzo dei caratteri unicode per la gestione dei pittogrammi cinesi la cosa non ha più funzionato come doveva...
1 - tutti i caratteri sono raddoppiati (e.g. "ciao" è diventato "c i a o ") ma vabbè gestibile
2 - anche le linee sono raddoppiate come se mi avesse messo un doppio EOL a fine riga, ma vabbè anche questo è gestibile
3 - i testi cinesi sono comparsi e questo è quello che volevo
4 - al passaggio indietro ai testi inglesi
tutte le lettere sono rimaste in simil-cinese... per tornare ai caratteri "normali" ho dovuto disabilitare l'utilizzo degli unicode...
Sui vari forum ho letto di gente cui è diventato simil-cinese tutto l'ambiente di sviluppo...
Qualcuno di voi si è già imbattuto con questa problematica? E come l'ha risolta?
grazie
Max
----------------------------------------
AUTORE: 129
DATA :13/03/2013 - 20:18:53
----------------------------------------
Ciao,
io ci ho rinunciato anche se mi chiedono ancora questa possibilità.
Purtroppo anche se fai tutti gli step proposti dal web e da NI, arrivi alle conclusioni che dici tu o ancora come nel mio caso a non vedere i caratteri orientali.
In pratica io prendo da un database le localizzazioni delle label e le vado a scrivere nelle caption, ma me li aggiorna con i caratteri cinesi solo se fermo l'applicazione entro in una label e la edito in qualche modo con caratteri cinesi, quindi successivamente riavvio l'applicazione e mi prende i caratteri cinesi.
Se trovi qualcosa fammi sapere interessa anche a me.
----------------------------------------
AUTORE: 660
DATA :18/03/2013 - 16:39:40
----------------------------------------
Ciao Nicola,
grazie all'aiuto di qualcuno oltreoceano sono riuscito a trovare una possibile soluzione... per lo meno per me può funzionare...
solo dovrò utilizzare un file per ogni lingua anzichè un unico file con tutte le lingua, ma poco male...
ti allego l'esempio che ho fatto sperando possa essere utile anche ad altri... magari lo si può pure rendere migliore...
Max
PS: il magari era un eufemismo... ma al momento è il meglio che sono riuscito a partorire...
[attachment=0:2dp7p3bx]unicode_2.zip[/attachment:2dp7p3bx]
----------------------------------------
AUTORE: 129
DATA :22/03/2013 - 17:03:46
----------------------------------------
Prova a scrivere in un indicatore qualcosa con input da tastiera, al prossimo avvio ti sconmvolgerà il risultato.
Se invece copi e incolli un testo in cinese (per esempio quelli del file allegato) troverai che ti prende la traduzione con i caratteri orientali.
Ed è qui che io non riesco a risolvere in quanto la mia applicazione doveva essere multilingua, ma se carico il dizionario inglese e poi quello cinese, rimangono caratteri europei e rimangono tali finchè non modifico a mano incollando del testo scritto con i pittogrammi cinesi....
Girando su internet avevo trovato questi esempi,[attachment=1:3qb97tlc]Unicode_Examples_103-lv86.zip[/attachment:3qb97tlc] e [attachment=0:3qb97tlc]Unicode files.zip[/attachment:3qb97tlc]
A te non ti da questi problemi?
Grazie mille, Nicola
----------------------------------------
AUTORE: 660
DATA :28/03/2013 - 08:21:56
----------------------------------------
Ciao Nicola,
purtroppo sono rientrato solo oggi dall'estero... e per un po' non avrò il tempo per dedicarmi alla lingua cinese...
ma cosa intendi con:
[quote:3j62suk2]Prova a scrivere in un indicatore qualcosa con input da tastiera, al prossimo avvio ti sconvolgerà il risultato.[/quote:3j62suk2]
Max
----------------------------------------
AUTORE: 129
DATA :29/03/2013 - 16:44:53
----------------------------------------
Ciao, provo a spiegarmi meglio con delle foto a supporto.
Al primo avvio(foto1) , non mi traduce con pittogrammi cinesi, ma con simboli penso appartenenti ancora all'ASCII.
[attachment=1:ojl4nmkz]Primo avvio.jpg[/attachment:ojl4nmkz]
Al secondo avvio (foto 2) dopo che ho incollato la prima riga del tuo file all'interno dell'array (che contiene anche pittogrammi cinesi) funziona.
[attachment=0:ojl4nmkz]Dopo aver incollato la prima riga del file con caratteri cinesi..jpg[/attachment:ojl4nmkz]
Ciao, Nicola
----------------------------------------
AUTORE: 660
DATA :29/03/2013 - 16:55:40
----------------------------------------
adesso ho capito...
io non ho avuto questo problema perchè non devo fare alcun aggiornamento ma solo caricare un file o un altro all'avvio... al momento però non mi ci sono dedicato più di tanto...
Max
----------------------------------------
AUTORE: 129
DATA :29/03/2013 - 17:15:00
----------------------------------------
Grazie comunque, anche io non ci sto lavorando, sono riuscito a tenere solo lingue occidentali, ma sono sicuro che prima o poi mi ci devo imbattere....
Buona PAsqua a proposito,
----------------------------------------
AUTORE: 660
DATA :29/03/2013 - 18:44:51
----------------------------------------
Adesso ho sospeso, però anche a me toccherà... più prima che poi...
Buona Pasqua anche a te ed a tutto il forum...
Max
----------------------------------------
AUTORE: 4
DATA :05/04/2013 - 14:13:54
----------------------------------------
Ciao visto che mi pare ci avete già sbattuto la testa mi chiarite un cosa?
Se io ho un sw che deve girare su un Windows in giapponese, devo per forza usare unicode o posso usare il set ristretto (mappa caratteri a 7 bit) della sola lingua giapponese?
O per dirla in un altro modo, unicode serve solo a fare in modo di avere un sw localizzato in giapponese su un SO in italiano (solo per fare un esempio).
Vi torna?
Ciao
----------------------------------------
AUTORE: 660
DATA :05/04/2013 - 14:39:17
----------------------------------------
...non ne sono proprio sicuro, ma penso che unicode serva per poter visualizzare i pittogrammi non tanto per l'interazione tra SW e SO...
...infatti Labview gestisce nativamente solo i caratteri ASCII che hanno una dimensione di 2 byte, mentre i pittogrammi (Unicode) hanno una dimensione di 4 byte...
Non credo che tu debba fare assolutamente nulla se il tuo SW non deve contenere pittogrammi... in caso contrario io, ma presumo anche Nicola, saremo molto contenti di "sfruttare" quello che riuscirai a fare...
Max
----------------------------------------
AUTORE: 4
DATA :05/04/2013 - 15:17:00
----------------------------------------
stando a quello che si dice qui https://decibel.ni.com/content/docs/DOC-10153 dovrebbe essere come descrivo io, cioè se usi una mappa caratteri giapponese labvew può printare caratteri giapponesi senza l'uso dell'unicode.
.
Del link sopra questo è il passaggio saliente:
[quote:3374jpqm]When the regional settings in Windows are changed the OS may switch to a different code page for rendering strings. For example if you switch to Japanese, code page 932 will be used. Using diferent code pages allows LabVIEW to have localized versions of the development environment. All code pages include support for the basic ASCII characters used in the English language, as well as a local set of characters. Therefore if you have code page 932 selected, the operating system can still render ASCII characters as well as Japanese.
Using Unicode instead of MBCS, an application can render characters from many different alphabets or scripts without switching code pages/regional settings. In fact all of the language scripts supported in the legacy code pages are included in Unicode and Unicode keeps being expanded with more characters every release.[/quote:3374jpqm]
----------------------------------------
AUTORE: 660
DATA :05/04/2013 - 15:22:02
----------------------------------------
...beh, sembra che tu abbia ragione...
fortunato te che riesci a sviluppare in giapponese, perchè io ho provato ad aggiungere il set di caratteri cinesi, ma i miei testi senza unicode sono rimasti tali e quali...
tienici aggiornati sugli sviluppi... che sta cosa proprio fa arrabbiare...
Max
----------------------------------------
AUTORE: 129
DATA :20/05/2013 - 08:36:02
----------------------------------------
Hai ragione e pensavo anche io si potesse uscire in questo modo, ma sempre passi dalla forzatura a UNICODE di labview (set unicode dal file ini quindi force unicode), ma per un aggiornamento statico funziona, basta che lo imposti la prima volta, per un dinamico (ho bisogno una volta di caratteri occidentali una volta di caratteri orientali) non aggiorna programmaticamente il carattere in unicode.
La documentazione che hai allegato in effetti è il modo unico per riuscirci ma il mipo scopo era quello di poter caricare stringhe da un database in modo dinamico e queste a seconda della lingua aggiornino direttamente la caption (che utilizzo per localizzare il software).
Spero che tu possa smentirmi, aprendomi nuovi orizzonti, thanks Ale.
----------------------------------------
AUTORE: 4
DATA :20/05/2013 - 10:23:59
----------------------------------------
Ciao io alla fine ci sono riuscito ma senza usare unicode lato labview...
In sostanza uso un a lib (LTK) ma un'altra farebbe lo stesso, che imposta le varie caption nelle diverse lingue a seconda di quello che configuri. Per vedere i caratteri con più di 1byte x carattere mi appoggio a windows, impostando la tabella codici carattere della lingua che mi serve visualizzare (sono due\tre settaggi nelle impostazioni regionali di windows che se vi servono posso recuperarvi) a quel punto quando la lib LTK scrive sulla caption stringhe con 2 byte per carattere (ad esempio per il giapponese) Labview visualizza correttamente in giapponese.
Per fortuna le tabelle caratteri "estese" supportano anche il set minimo di caratteri occidentali, questo permette di poter fare una applicazione che su un SO giapponese può essere localizzata in inglese senza più mettere mano alle impostazioni di windows.
Per tutte queste prove ho usato una macchina virtuale con windows XP a cui cambiavo le impostazioni fino ad arrivare a trovare la "ricetta" giusta.
Ciao
----------------------------------------
AUTORE: 129
DATA :20/05/2013 - 11:03:46
----------------------------------------
Grande, forse ho capito, nei prossimi giorni provo.
Una domanda la libreria LTK intendi la LTK LabVIEW Localization Toolkit ? Ma cosa fa per costare così tanto, visto che te la usi?
Grazie mille, Nicola
----------------------------------------
AUTORE: 4
DATA :20/05/2013 - 11:08:43
----------------------------------------
[quote="nicola":4iq9c8cd]Grande, forse ho capito, nei prossimi giorni provo.
Una domanda la libreria LTK intendi la LTK LabVIEW Localization Toolkit ? Ma cosa fa per costare così tanto, visto che te la usi?
Grazie mille, Nicola[/quote:4iq9c8cd]
Ha un tool grafico per localizzare le interfacce, vede che controlli hai sulla GUI e ti fa scegliere quali localizzare e quali no (ma ha dei limiti ad esempio se hai un grafico supporta solo massimo una scala su X e una su Y...), poi ti aiuta a tradurre interfacciandosi a Google Translate (giudica tu l'utilità di questa cosa) ti traduce anche i menu e i titoli delle GUI e ha una funzione per tradurre testo "libero" ad es. messaggi su popup e stringhe composte quindi non statiche. Gestisce anche il carattere (font, size, allineamento) per ogni stringa localizzata, più altre cosette minori. Secondo me non vale il costo non tanto della lic di sviluppo ma di quello della lic di run-time.
Ciao
----------------------------------------
================================================================================
ridimensionamento VI e Oggetti in esso
================================================================================
AUTORE: 10214
DATA :20/03/2013 - 11:27:51
----------------------------------------
Salve è poco che sviluppo in Labview ed ho subito riscontrato un problema.
Dopo aver creato il mio piccolissimo VI con led e interruttori, ho per sbaglio cliccato sul pulsate che riduce la finestra di windows e mi sono accorto che i led e gli interruttori non si ridimensionano in automatico. Ho un pochino cercato ed ho visto che c'è una opzione che fa mantenere le proporzioni degli oggetti, ma li deforma tutti a suo piacimento, anche sovrapponendoli.
Ho anche trovato come recuperare i valori della risoluzione, ma non so come utilizzarli.
Mi è sorto il dubbio che anche questo questo possa accadere se io faccio un VI con una determinata risoluzione/dimensione e questo poi vada a finire su un'altra macchina con diversa risoluzione.
C'è il modo di fare un VI in una risoluzione qualsiasi e poi automaticamente questa si adatti allo schermo in cui va in esecuzione, anche gestendo i dati recuperati della risoluzione?
Saluti Francesco
----------------------------------------
AUTORE: 482
DATA :20/03/2013 - 12:38:29
----------------------------------------
mai e poi mai usare l'auto resize dei controlli.
Funziona d aschifo, soprattutto se ci sono di mezzo delle label.
----------------------------------------
AUTORE: 10214
DATA :20/03/2013 - 13:14:34
----------------------------------------
e come posso risolvere questo problema???
----------------------------------------
AUTORE: 1078
DATA :20/03/2013 - 16:03:34
----------------------------------------
Concordo con geppoonline.
Per risolvere il tuo problema, o blocchi tutto con dimensioni fisse o ti crei una funzione che fa il resize del tuo pannello. La seconda scelta non è banale.
----------------------------------------
AUTORE: 482
DATA :21/03/2013 - 07:11:31
----------------------------------------
prima di porti la domanda di come risolvere il tuo problema è meglio fare un paio di considerazioni tipo:
E' veramente necessario il resize?
A volte basta consigliare una risoluzione di utilizzo.
L'alternativa è creare i tuoi controlli e ogni volta provare a ingrandire e rimpicciolire la finestra verificando che mantenga una spetto decente ma non mi sembra molto valida come soluzione.
Diciamo che il problema si presenta perlopiu' con il rimpicciolimento, quindi se proprio vuoi mantenere l'autosize, potresti sviluppare il VI con quella che tu ritieni la risoluzione minima, in modo che non ci sono problemi se viene ingrandita.
----------------------------------------
AUTORE: 10214
DATA :21/03/2013 - 08:24:25
----------------------------------------
Grazie mille delle risposte, ma se volessi fare una funzione che fa il ridimensionamento automatico, che variabili e come la dovrei fare?
Una mia curiosità per eventuali progetti futuri che so per certo che dovrò fare
----------------------------------------
AUTORE: 1078
DATA :21/03/2013 - 14:17:57
----------------------------------------
[quote="ise11":2fgjhb3i]Grazie mille delle risposte, ma se volessi fare una funzione che fa il ridimensionamento automatico, che variabili e come la dovrei fare?[/quote:2fgjhb3i]
Ogni oggetto in labview ha due proprietà, Bounds e Position. La prima definisce i limiti (contorno) e quindi la dimensione dell'oggetto e la seconda le coordinate rispetto al suo contenitore dell'angolo superiore sinistro. Sicuramente dovrai lavorare molto utilizzando queste due proprietà, accessibili dai property node dell'oggetto da ridimensionare.
----------------------------------------
AUTORE: 1078
DATA :21/03/2013 - 14:21:05
----------------------------------------
Scusa... ho detto una stupidata, non è la proprietà Bounds che determinano la dimensione dell'oggetto ma la proprietà [b:sem62kz5]Size[/b:sem62kz5]. Quello che ho detto prima si applica a questa proprietà!
----------------------------------------
AUTORE: 10214
DATA :22/03/2013 - 14:22:21
----------------------------------------
Sucsa ho provato ma non capisco come utilizzzarlo.
Ho trovato la proprietà size dal frontal panel, ma credo che siano solo dati visualizzabili e non modificabili.
Ho messo nel block diagram il bounds che mi hai detto, ma non so come gestirlo adesso.
Ti chiedo troppo se mi puoi fare un vi con un singolo led che mi mostri l'utilizzo di questa proprietà?
grazie mille in anticipo
----------------------------------------
AUTORE: 1078
DATA :25/03/2013 - 08:59:12
----------------------------------------
[quote="ise11":18gkz3c5]Sucsa ho provato ma non capisco come utilizzzarlo.
Ho trovato la proprietà size dal frontal panel, ma credo che siano solo dati visualizzabili e non modificabili.
Ho messo nel block diagram il bounds che mi hai detto, ma non so come gestirlo adesso.
Ti chiedo troppo se mi puoi fare un vi con un singolo led che mi mostri l'utilizzo di questa proprietà?
[/quote:18gkz3c5]
Ecco quello che chiedi....
[quote="ise11":18gkz3c5]grazie mille in anticipo[/quote:18gkz3c5]
Prego!
----------------------------------------
================================================================================
Array 2D creato programmaticamente
================================================================================
AUTORE: 4153
DATA :20/03/2013 - 20:05:57
----------------------------------------
Scusate la domanda banale.
Entro nel mio ciclo For senza alcun array inizializzato
All'interno del ciclo For, SOLO se alcuni parametrei rispettano le mie esigenze, devo creare un array 1D (esempio : datoR0C0, datoR0C1, dato R0C2...)
Ad ogni ciclo, devo aggiungere (append) una nuova riga all'array precedentemente creato (es : DatoR1C0, DatoR1C1 etc)
Se all'interno del ciclo for nessuna condizione viene soddisfatta, devo uscirne senza nessun array inizializzato...
E' una cosa banale ma....non riesco
come posso fare?
Grazie mille!!!!
----------------------------------------
AUTORE: 482
DATA :21/03/2013 - 07:06:50
----------------------------------------
Devi usare uno shift register con all'esterno per inizializzarlo, un array vuoto. Ad ogni condizione vera, appendi il tuo dato all' array, alla condizione falsa lasci passare l'array precedente
----------------------------------------
AUTORE: 1078
DATA :21/03/2013 - 11:46:23
----------------------------------------
Ciao,
Ho fatto un piccolo esempietto in LV2010 che ti permette di capire come funziona quello che ha suggerito geppo e di risolvere (spero) il tuo problema. Nell'esempio ho inserito il controllo delle condizioni all'interno del ciclo for in modo da permetterti di cambiare la condizione da verificare durante l'esecuzione. Ho anche inserito un timer, impostandolo a 1 sec, proprio per darti il tempo di cambiare i valori delle condizioni da valutare.
[attachment=0:3sn8wyv3]ForConditionsRace.vi[/attachment:3sn8wyv3]
Spero aiuti.
Buon lavoro.
----------------------------------------
================================================================================
info grafici e guide
================================================================================
AUTORE: 10331
DATA :22/03/2013 - 17:23:12
----------------------------------------
salve a tutti,
sono un nuovo iscritto e un nuovo utente labview. Vengo dal mondo matlab e c++ (all'università usiamo questi) però ho virato sul labview per quel che concerne acquisizioni e interfacce utenti.
Avrei delle curiosità/necessità... innanzitutto qualche consiglio su manuali/guide ben fatte e complete perchè vorrei comunque impararlo in previsioni future post universitare, poi più nel dettaglio vorrei sapere, solitamente, come si trattano alcuni problemi nel mondo labview:
1) ho necessità di visualizzare a grafico, con delle soglie di allarme, una acquisizione cadenzata ogni minuti circa di fino a 50 grandezze però in grafici diversi... l'acquisizione però può protarsi per settimane e vorrei ci fosse la possibilità di spaziare nl tempo (grafico intero fino ai dettagli). c'è la possibilità "realtime" di cambiare dall'utente la scala dei tempi o creare delle finestre di visualizzazione (la lente d'ingrandimento in matlab)
2) una così notevole mole di dati, specilamente se si usa un array che diventa bello lungo, come la trattereste? salvo tutto su file e aggiorno il grafico andando a leggere il file (però mi pare pesante come cosa specialmente se voglio rinfrescare con cadenze di minuti, leggi il file, carica tutto il file ogni volta) altrimenti pensavo ad un file come base e a un vettore di cache, un numero di misure che carico su vettore e grafico (ogni ora, mezz'ora) che poi salvo, una volta pineo, su file e a quel punto carico i dati da file a grafico e continuo con il vettore vuoto per i dati successivi.
3) terza cosa mi servirebbe salvar i dati su un file excel... dalle prove che ho fatto usando il comando Write To Spreadsheet File riesco a generare un file con tabulazioni che se carico su excel me lo impila nelle colonne in base alle posizioni del vettore che ho salvato... chiedo c'è la possibilità di salvare su un file che ha estensione direttamente apribile da excel, se si, si possono anche nominare le label sia delle colonne che dei sheet e specilamente decidere su che colonna metterli? perchè l'acquisizione dei vari input avviene non in simultaneo, dovessi salvare direttamente su file o aspetto di avere tutti i dati oppure, uno a uno, posso salvarli su varie colonne per esempio includendo dei tab nel vettore di scrittura (esempio devo scrivere 10 dati su 10 colonne in tempi diversi... ordino il vettore in base alla disposizione temporale... scrivo i primi tre, mi arrivano i secondi tre, metto tre tab(?)... non ho provato, anche perchè mi cambia la natura del vettore se ci inserisco i caratteri... boh
4) una volta riuscito a salvare sti file e volessi recuperarli per analisi off-line, noto che mi servirebbe sapere anche quando li ho registrati cosa si sua solitamente? salvo nella prima colonna data e ora e poi con le bestemmie cerco di recuperare per creare il vettore temporale (c'è magari uno strumento il labview che mi fornisce data e ora al momento dell'interrogazione?) cioè, per esempio, come può gestire i grafici uno che prende su i rilevamenti di un impianto solare dove ha una sensibilità di mezz'ora/ora e ordini di grandezza di anni nell'acquisizione.
so di aver messo tanta carne sul fuoco, scusate
potete pure mandarmi a quel paese
grazie in anticipo
buona serata
marco
----------------------------------------
AUTORE: 482
DATA :25/03/2013 - 07:30:24
----------------------------------------
Tutto quello che vuoi fare è fattibile.
Tutte le risposte che vuoi sono troppe.
Praticamente chiedi in un thread un manuale labview.
Ti posso dire che di grafici ce ne sono diversi tipi e ognuno svolge funzioni diverse. Tutto dipende da cosa ne vuoi fare.
Il cambio della scala dei tempi ecc, la si fa sfruttando i property node.
I file excel sono semplici file tabulati. se quando crei il file gli dici che è .xls automaticamente te lo apre in excel.
Meglio lavorarci come file di testo tabulato che non in excel che permette si, tramite activeX di scrivere cella per cella i contenuti, ma rallenta tutto e soprattutto ti vincola alla versione di excel installata sul pc di sviluppo e su quello target.
Per lavorare sul file di testo tabulato, basta trattarlo come un array bidimensionale e usare i blocchetti di gestione degli array. (nella palette delle stringhe trovi il blocchetto spreadsheet string to array e viceversa).
L'unica cosa che vedo difficile, ma non impossibile è che parli di 50 grandezze su grafici diversi.
In quel caso o crei già a priori i 50 grafici (e li visualizzi o nascondi in base ai tuoi dati) oppure se vuoi CREARLI in base ai tuoi dati devi ricorrere allo scripting che non è cosi' immediato.
Cmq in linea di massima labVIEW è un ambiente di sviluppo tanto quanto il C++, quindi si tratta solo di mettersi e programmare.
----------------------------------------
AUTORE: 10331
DATA :25/03/2013 - 12:06:11
----------------------------------------
grazie mille per la risposta, quella che cercavo: si può fare;)
come hai scritto mi servirebbe un manuale, cosa mi consigli/ate? dei manuali esaustivi dove ci possano essere anche gli strumenti che dovrei utilizzare.
grazie
----------------------------------------
AUTORE: 482
DATA :25/03/2013 - 13:13:42
----------------------------------------
Non ti so aiutare, ho imparato labview analizzando dei VI già poi ho fatto dei corsi direttamente in National , ma se cerchi nel forum, credo proprio sia un argomento già trattato.
----------------------------------------
AUTORE: 129
DATA :26/03/2013 - 14:46:09
----------------------------------------
I manuali dei corsi NI sono secondo me la fonte migliore per iniziare. Trovi anche molte risorse in internet (basta cercare tutorial, labview etc.) e infine se hai dimestichezza con l'inglese ci sono molti libri (es. labview for everione).
----------------------------------------
================================================================================
inizializzaizone array 2D
================================================================================
AUTORE: 9909
DATA :24/03/2013 - 20:48:34
----------------------------------------
Ciao a tutti,
scusate ma sto cercando di apprendere l'ultilizzo di LabView nello sviluppo di
applicazioni. Mi sto esercitando con manuali trovati in rete e altro.
Sto utilizzando LabView 2012 in prova (ho fatto il download dal sito NI).
Il mio problema (banale penso) e' il seguente :
- ho creato un array di interi nel Frontal Panel
- vorrei inizializzare l'array per cui istanzio (nel Block Diagram ) due costanti intere ed il modulo 'Inizialize Array' , connetto le due costanti in input al modulo di inizializzazione ma poi non
riesco a connettere l'output del module di inizializzazione al modulo di array (il quale non accetta input). Dove ho sbagliato ?
Grazie e Scusate
Mitia64
----------------------------------------
AUTORE: 482
DATA :25/03/2013 - 07:19:54
----------------------------------------
l'errore credo (non avendo visto il tuo VI) stia nel fatto che tu hai creato un CONTROLLO sul front panel.
Devi sapere che gli oggetti sul front panel si suddividono fondamentalmente in due categorie:
Controlli e Indicatori.
I controlli accettano input dall'utente (nel block diagram è in sola lettura), gli indicatori sono solo visualizzatori e accettano input dal block diagram(nel block diagram è in sola scrittura) .
Questo per quanto riguarda l'oggetto diretto.
Questa condizione non è piu' vera nel momento in cui tu crei delle variabili locali del tuo oggetto, le quali possono essere sia in lettura che in scrittura.
Quindi per poter collegare il tuo initialize array al tuo array puoi seguire due strade:
1) Trasformare il tuo controllo in indicatore (sul front panel, tasto destro sull'oggetto->change to indicator)
2) Creare una variabile locale del tuo oggetto (nel block diagram, click col destro sull'array ->create->local variable) e collegarla al tuo initialize.
Quando crei le variabili locali, clikkandoci col tasto destro, puoi vedere l'opzione change to read che ti permette di convertirla per prelevare anzichè scriverci il valore.
----------------------------------------
================================================================================
Derivative x(t)
================================================================================
AUTORE: 4578
DATA :26/03/2013 - 12:06:50
----------------------------------------
Salve a tutti,
ho un problema quando vado a calcolarmi la derivata di un segnale nel dominio del tempo. Per fare questo ho utilizzato il blocchetto derivative x(t) con method farward.
ho scomposto il mio segnale d'ingesso con Get Waveform Components e ho mandato Y e dt al blocchetto derivative x(t), dopo ho ricostruito il mio segnale utilizzando Build Waveform. Il problema e che calcolando il valore efficace della derivata del segnale non esce il valore aspettato si sbagli di 0,68. Ho pensato che per risolvere questo problema, minimizzare l'errore della derivata, di impostare le condizioni iniziali e finali ma qui trovo problemi perchè non so come si fà.
Grazie
----------------------------------------
AUTORE: 1078
DATA :26/03/2013 - 16:02:25
----------------------------------------
[quote="delgrosso":b0gughfz]Salve a tutti,
Ho pensato che per risolvere questo problema, minimizzare l'errore della derivata, di impostare le condizioni iniziali e finali ma qui trovo problemi perchè non so come si fà.
[/quote:b0gughfz]
Cosa intendi esttamante. Se devi estrarre il min e il MAX da un array puoi usare il blocchetto min/MAX che trovi nella palette degli array. Se inve devi estrarre semplicemente il primo e l'ultimo valore, prendi la funzione
[quote="delgrosso":b0gughfz]Grazie[/quote:b0gughfz]
Prego.
----------------------------------------
AUTORE: 1078
DATA :26/03/2013 - 16:03:46
----------------------------------------
Scusa ho dimenticato di completare la frase... ma se guardi l'esempio dovrebbe esserti chiaro come estrarre il primo e l'ultimo elemento dall'array della waveform.
Buon lavoro!
----------------------------------------
AUTORE: 4578
DATA :27/03/2013 - 00:44:08
----------------------------------------
Grazie per la risp!!! l'esempio nn lo apre ho la versione 2009 di LabView
----------------------------------------
AUTORE: 1078
DATA :27/03/2013 - 08:03:50
----------------------------------------
Eccoti la versione 2009 dell'esempio....
----------------------------------------
AUTORE: 4578
DATA :27/03/2013 - 11:31:27
----------------------------------------
[attachment=0:1ftfqewj]derivata del grosso (4).vi[/attachment:1ftfqewj]
----------------------------------------
AUTORE: 1078
DATA :27/03/2013 - 12:56:05
----------------------------------------
Che calcolo fai per ottenre 72256,8 come RMS?
Facendo il calcolo manuale (non utilizzando il blocchetto RMS) dell'array dei valori della derivata della funzione a me torna 72256,12!
Quindi per me il volore RMS corretto è 72256,12......
----------------------------------------
AUTORE: 1078
DATA :27/03/2013 - 12:57:35
----------------------------------------
Comunque, piccola nota di programmazione, quando usi il Delete From Array, non serve specificare l'indice dell'ultimo elemnto. La funzione elimina il numero indicato di elementi partendo dall'ultimo se non si collega un indice specifico.
----------------------------------------
AUTORE: 4578
DATA :27/03/2013 - 13:15:16
----------------------------------------
Grazie per la notazione!
72256,8 è un valore teorico che l'ottengo facendo la derivata del segnale d'ingresso: ampiezza =325,27 frequenza=50 Hz e fase nulla.
Segnale d'ingresso a(t) = A * sin(ωt) la derivata è A * ω * cos(ωt) il suo valore efficace è (A * ω)/(2)^(1/2). dove ω = 2Ï€*f.
Grazie ancora
----------------------------------------
AUTORE: 4578
DATA :27/03/2013 - 13:30:45
----------------------------------------
Quel valore 72256,12 cmq mi porta ad avere degli errori in seguito ecco perchè ho pensato che bisogna lavorare sulle condizioni iniziali e finali per avere un valore della derivata più preciso......
Qualche consiglio
----------------------------------------
AUTORE: 1078
DATA :27/03/2013 - 15:34:00
----------------------------------------
Il problema è che cerchi di ottenere un valore calcolato teorico da una funzione che ti restuisce invece dei valori reali e finiti (il grafico del segnale ti può trarre in inganno, il grafico approssima la linea di tendenza che sembrerà molto più fitta di valori di quella che è in realtà, se cambi tipo di plot te ne accorgi). L'RMS calcolato sulla base di valori reali e finiti è ovviamente diverso dal valore di RMS teorico.
Devi gestire l'errore oppure approssimare. Non so cosa è meglio consigliarti, dipende da quello che deve fare la tua applicazione.
Penso che dovrebbe bastare tenere conto dell'offset di 0,4 che ottieni dalla sottrazione dal valore RMS calcolato del valore RMS teorico.
----------------------------------------
AUTORE: 1078
DATA :27/03/2013 - 15:35:07
----------------------------------------
scusa: il valore del differenziale dei due RMS è di 0,04 e non 0,4
----------------------------------------
AUTORE: 4578
DATA :27/03/2013 - 17:45:45
----------------------------------------
Grazie. Quindi non pensi che agire sulle condizioni iniziali o finali posso risolvere la situazione?
----------------------------------------
AUTORE: 1078
DATA :28/03/2013 - 07:58:29
----------------------------------------
Bhe! Un tentativo si può sempre fare, anche se non credo sia qeullo che ti risolverà il problema!
----------------------------------------
================================================================================
Show Call Chain
================================================================================
AUTORE: 927
DATA :27/03/2013 - 11:00:34
----------------------------------------
Ho notato che quando sono nella VI Hierarchy, e clicco col destro un blocco, il comando "Show Call Chain" è sempre grigio (non cliccabile). C'è un motivo di solito, o ho qualche problema io?
----------------------------------------
AUTORE: 1078
DATA :27/03/2013 - 13:26:44
----------------------------------------
[quote="Snamprogetti":8gzxsir2]Ho notato che quando sono nella VI Hierarchy, e clicco col destro un blocco, il comando "Show Call Chain" è sempre grigio (non cliccabile). C'è un motivo di solito, o ho qualche problema io?[/quote:8gzxsir2]
Il motivo c'è: non sei in debug mode...
La guida cita:
[i:8gzxsir2]Right-click a paused VI and select Show Call Chain from the shortcut menu to highlight the call chain of the VI. The call chain is the chain of callers from the current VI to the top-level VI. This option is only available while debugging a running VI. [/i:8gzxsir2]
----------------------------------------
AUTORE: 927
DATA :27/03/2013 - 13:52:00
----------------------------------------
Mi ero perso l'ultima frase... Grazie
----------------------------------------
================================================================================
Help conversione
================================================================================
AUTORE: 2196
DATA :30/03/2013 - 14:35:31
----------------------------------------
Qualcuno cortesemente potrebbe convertirmi questa vi per labview 8.2 ?
Grazie
----------------------------------------
AUTORE: 4228
DATA :31/03/2013 - 08:51:40
----------------------------------------
In LabVIEW 8.2 mancano alcune cose (In Place Element Structure) e (Conditional Terminal per il For Loop), quindi dovrai rimaneggiare un po' il codice
[url=http://imageshack.us/photo/my-images/546/immaginefze.png/:2rwq9231][img:2rwq9231]http://img546.imageshack.us/img546/1307/immaginefze.png[/img:2rwq9231][/url:2rwq9231]
----------------------------------------
AUTORE: 2196
DATA :02/04/2013 - 09:05:23
----------------------------------------
Grazie
----------------------------------------
================================================================================
LabVIEW for beginners: Help
================================================================================
AUTORE: 90
DATA :01/04/2013 - 16:24:21
----------------------------------------
Ciao a tutti,
mio nipotino avrebbe bisogno di un tutorial per LV; per qualsiasi versione.
Grazie.
Kla
----------------------------------------
AUTORE: 1078
DATA :03/04/2013 - 07:37:02
----------------------------------------
Mia figlia (3 anni) sarebbe disponibile, quanto paghi?
Ti sei accorto che questo è un FORUM?
----------------------------------------
AUTORE: 482
DATA :03/04/2013 - 09:57:10
----------------------------------------
Ehi ricky!??! cos'e' sta sgarbataggine?
Ha chiesto un tutorial, non ha mica detto di metterti a farglielo.
Detto questo, di tutorial per beginner in italiano non ne conosco se non qualche demo sul sito di National.
----------------------------------------
AUTORE: 660
DATA :03/04/2013 - 10:02:46
----------------------------------------
Ma nessuno ha pensato che data la stranezza della domanda ed il giorno del post...
Max
----------------------------------------
AUTORE: 482
DATA :03/04/2013 - 12:33:24
----------------------------------------
...boh...sarà che io chiamo ancora mio "nipotino" quello di 16 anni che potrebbe studiare labview alle superiori quindi ho visto la domanda in buona fede
----------------------------------------
AUTORE: 822
DATA :09/04/2013 - 09:35:28
----------------------------------------
Io credo nella buona fede della domanda..
in rete ho trovato questo:
[url:374j7jxp]http://www.labviewworld.it/wp-content/uploads/pdf/corsolabview.pdf[/url:374j7jxp]
che comunque sia può essere utile ad altri.
Ciao!
----------------------------------------
================================================================================
Aprire un SubVI tramite il nome
================================================================================
AUTORE: 482
DATA :04/04/2013 - 11:12:38
----------------------------------------
...ma ciao!
sono un po' di fretta e quindi chiedo se qualcuno ha un suggerimento pronto...
Ho 10 controlli booleani ognuno dei quali mi apre un subvi. Non volendo fare 10 case, siccome il booleano ha lo stesso nome del dubvi, volevo capire se c'era un modo facile per aprire un subvi avendo come indicazione il nome facendo in modo che funzioni si ain ambiente di sviluppo che nell'eseguibile.
dai su che so che qualcuno di voi l'ha già fatto
----------------------------------------
AUTORE: 3428
DATA :04/04/2013 - 14:57:38
----------------------------------------
ancora no, ma tramite un array di reference dei 10 controlli booleani si potrebbe fare...
crei un reference di ogni controllo, e fai il build array di tutti e 10.
inizializzi un array di 10 elementi booleani e in un while fai il replace di ogni singolo booleano con la sua relativa posizione nell'array dei reference; dopo il replace vai a controllare con un search array se c'è un TRUE (quindi bottone premuto) e tramite l'indice che ti restituisce entri nell'unico case true/false in true dove farai l'index dell'array dei reference per tirarti fuori il nome della label.
Poi il build path farà il resto...sempre se non cambia la locazione dei 10 vi
è l'unica cosa brutta che mi è venuta in mente..
Ovviamente fai molto prima con un event case o con i 10 case di cui parlavi prima, ma già lo sai..
----------------------------------------
AUTORE: 482
DATA :05/04/2013 - 07:25:04
----------------------------------------
al momento ho risolto cosi':
----------------------------------------
AUTORE: 927
DATA :16/04/2013 - 08:35:22
----------------------------------------
Per chiamare un VI in base al nome puoi usare "Open VI Reference" passandogli la stringa del nome (solo xxxx.vi, senza percorso), poi quando hai la reference lo puoi eseguire in vari modi, come l'Invoke node "Run VI". Però, affinchè il VI sia rintracciabile per nome, anche nell'eseguibile, occorre che il programma contenga una "Static VI Reference" al VI (anche non collegata a niente).
----------------------------------------
================================================================================
Scorciatoie da tastiera per aprire VI
================================================================================
AUTORE: 3428
DATA :04/04/2013 - 15:04:12
----------------------------------------
Ciao,
volevo fare in modo che in qualsiasi posizione del mio sw mi trovi premendo F3 e la lettera D della tastiera un gestore di eventi mi catturi la dicitura e mi apra un subvi a schermo; ripremendoli o cliccando esci nel subvi aperto la vi si chiuda.
La struttura ad eventi ha il key down che potrebbe darmi una gran mano ma funziona solamente nel front panel attualemente aperto o meglio così sembra.
Come posso fare in modo che non debba replicare la struttura ad eventi in tutti i vi dove mi possa far comodo premere F3+D per aprire la vi? ad esempio con una struttura ad eventi che runni in background ma che prenda sempre il keydown?
Grazie
----------------------------------------
AUTORE: 660
DATA :04/04/2013 - 16:20:19
----------------------------------------
prova a vedere se questo topic può esserti d'aiuto...
[url:1agx7q55]http://lavag.org/topic/16627-control-a-vi-from-another-vi-with-event/[/url:1agx7q55]
Max
----------------------------------------
AUTORE: 3428
DATA :09/04/2013 - 14:14:12
----------------------------------------
risolto!!
ho usato le vi di labview "Input Device Control VIs" sotto la palette "connectivity" inizializzando la tastiera.
Ora ogni volta che clicco qualcosa le vi mi restituiscono i bottoni premuti, in qualsiasi parte del sw io mi trovi e non necessitano di una gestione eventi ma basta un while.
----------------------------------------
AUTORE: 482
DATA :09/04/2013 - 14:57:25
----------------------------------------
[quote="renaso":2evdduqv]e non necessitano di una gestione eventi ma basta un while.[/quote:2evdduqv]
beh, pero' magari gli eventi sono un po' piu' puliti per la gestione appunto di "eventi" da tastiera.
----------------------------------------
AUTORE: 3428
DATA :09/04/2013 - 15:10:38
----------------------------------------
OVVIAMENTE geppionline
ma nel mio caso mi toccherebbe fare una gestione eventi in ogni front panel del mio sw gestendo in tutti i la pressione dei due bottoni...
Avevo provato con gli eventi dinamici ma probabilmente sbagliavo qualcosa e non mi funzionavano..
----------------------------------------
================================================================================
Miglior "Architettura"
================================================================================
AUTORE: 660
DATA :10/04/2013 - 15:11:44
----------------------------------------
Scusate il titolo, ma era il meglio che mi venisse in mente...
Vorrei due pareri/suggerimenti:
[b:24tevmh5]1 - [/b:24tevmh5]Dovendo sviluppare un'applicazione che scambia/riceve dati in modo continuo con altre periferiche (via seriale o ethernet o MAX), secondo voi quale architettura risulta essere la più efficiente per ridurre l'utilizzo di risorse di sistema e per mantenere un buon tempo di aggiornamento dei dati da leggere?
Mi spiego meglio (forse): quale soluzione utilizzereste per ottimizzare da un lato la lettura di dati, ad esempio via ethernet, e dall'altro l'utilizzo di questi dati perchè siano visualizzati in indicatori o grafici o report...
[b:24tevmh5]2 - [/b:24tevmh5]Dovendo "salvare" dei risultati di prova contenenti dati numerici, testuali e grafici, possibilmente utilizzando solo pacchetti freeware (LV escluso), quale soluzione implementereste?
Grazie
Max
----------------------------------------
AUTORE: 301
DATA :11/04/2013 - 14:59:55
----------------------------------------
Per non perdere dati "per strada", l'architettura migliore è la Producer Consumer, dividendo tra loro i vari processi asincroni.
Per quanto riguarda il salvataggio dei dati, invece, non riesco a capire cosa intendi con pacchetti freeware.....
Se devi "stampare" un report, Labview ha già delle cosine integrate......
Aris
----------------------------------------
AUTORE: 660
DATA :11/04/2013 - 16:54:26
----------------------------------------
per il salvataggio non mi riferivo alla parte "cartacea", ma a qualcosa tipo database o simili, ma senza dover usare pacchetti aggiuntivi...
Max
----------------------------------------
AUTORE: 1078
DATA :11/04/2013 - 17:11:04
----------------------------------------
Un database può essere anche semplicemente un raccolta di file in formato testo o quello che vuoi con i dati che devi loggare formattati in modo "comprensibile" dal software di postprocessing. Quindi per salvare i tuoi dati non hai necessariamente bisogno di librerie "esterne" o di terze parti, LabVIEW ha già tutto il necessario.
----------------------------------------
AUTORE: 4
DATA :14/04/2013 - 18:22:34
----------------------------------------
riguardo al salvataggio dati ti consiglio di provare SQLite.
Si tratta di un DB SQL molto leggero (ovviamente anche le caratteristiche sono limitate) il DB sta in un solo file e che non richiede installazione di "motori" (però, per l'uso che ne faccio io, va installato il driver ODBC su windows)
Ci sono diverse librerie per interfacciarlo a LabVIEW, io uso il pacchetto Database toolkit della NI (non free) che usa l'ActiveX ADODB ma ne esistono anche di free ad esempio questa http://lavag.org/files/file/212-sqlite-labview/
Ciao
----------------------------------------
AUTORE: 129
DATA :15/05/2013 - 12:47:38
----------------------------------------
Sqllite anche per me se devi avere un database, con poi dei db manager esterni per lavorare direttamente sul db sqllite.
Però a me è accaduto che mi chiedono sqllite poi mi dicono ma si può usare con access, con excel? e akllora gli devi fare una connessione odbc.
In conlcusione manterrei le librerie ado per connettermi a database via odbc (trovi i driver per quasi tutti i database sotto odbc, compreso sqllite). le librerie ado a parte il toolkit national ce ne sono gratuite.
Per quanto riguarda l'architettura confermo come detto da Aris producer consumer.
----------------------------------------
AUTORE: 43
DATA :15/05/2013 - 13:15:17
----------------------------------------
[quote="machyaer":1pe9smz1]Scusate il titolo, ma era il meglio che mi venisse in mente...
Vorrei due pareri/suggerimenti:
[b:1pe9smz1]1 - [/b:1pe9smz1]Dovendo sviluppare un'applicazione che scambia/riceve dati in modo continuo con altre periferiche (via seriale o ethernet o MAX), secondo voi quale architettura risulta essere la più efficiente per ridurre l'utilizzo di risorse di sistema e per mantenere un buon tempo di aggiornamento dei dati da leggere?
Mi spiego meglio (forse): quale soluzione utilizzereste per ottimizzare da un lato la lettura di dati, ad esempio via ethernet, e dall'altro l'utilizzo di questi dati perchè siano visualizzati in indicatori o grafici o report...
[b:1pe9smz1]2 - [/b:1pe9smz1]Dovendo "salvare" dei risultati di prova contenenti dati numerici, testuali e grafici, possibilmente utilizzando solo pacchetti freeware (LV escluso), quale soluzione implementereste?
Grazie
Max[/quote:1pe9smz1]
ciao Max
La risposta è sempre e comunque una sola : "dipende".
Dipende dalle specifiche del sistema, dalle prestazioni richieste dal cliente in genere e dalle risorse a disposizione.
Certo, l'approccio Produttore-consumatore è sicuramete corretto, ma se ci fossero moltissimi punti acquisizione potrebbe essere necessario un sistema distribuito di acquisizione e memorizzazione lasciando all'unità centrale il compito di correlare fra loro i dati e di memorizzarne solo alcuni, magari i più siginficativi.
Riguardo la seconda domanda poi, dipende da cosa ci devi fare con i dati acquisiti e da quali futuri sviluppi della tua applicazione riesci a prevedere: anche la seplice crezione di un DB usando mySQL per esempio, prevede che venga effettuata una scelta sul "tipo di DB" da utilizzare. Alcuni tipi di DB privilegiano l'inserimento dei dati, altri la ricerca dei dati. Alcuni garantiscono la scrittura\cancellazione dei dati e quindi sono + sicuri a scapito delle prestazioni nell'accesso dei dati stessi.
dipende.
ciao.
----------------------------------------
AUTORE: 660
DATA :15/05/2013 - 15:16:30
----------------------------------------
Ciao a tutti e grazie per i suggerimenti...
allora... per quanto riguarda il primo punto (l'architettura) la mia idea sarebbe quella di creare un VI che si occupi di "interrogare" gli I/O, nella fattispecie leggere i dati via ethernet (ma potrebbe andare anche bene per leggerli in seriale o interrogare una scheda di acquisizione), "appoggiare" i dati letti in una qualche struttura da definire (cluster, FGV, boh? ogni suggerimento è ben accetto
) e poi scrivere indietro eventuali segnali da pilotare... stavo pensando se per questo fossero meglio i semafori o le code... essendo principalmente un sistema di monitoraggio non vi sono particolari necessità di performance per la sincronizzazione dei dati...
In sostanza non sono costretto a leggere tutti i dati, l'importanza è che quando richiedo un pacchetto mi venga restituito il pacchetto completo (l'ultimo completo acquisito) e quando devo scrivere il pacchetto da scrivere venga inviato completo...
per quanto riguarda il punto 2 (come/dove salvare i dati) stavo anch'io pensando ad un DB tipo MySQL però non ho ancora deciso... dovrò fare qualche ricerca in più...
Nel frattempo vi ringrazio per i sempre preziosi consigli e vi saluto
Max
----------------------------------------
AUTORE: 129
DATA :14/06/2013 - 00:58:17
----------------------------------------
Prova a dare un'occhiata a [url=http://www.ni.com/white-paper/14119/en:2tld7odi]questo[/url:2tld7odi].
----------------------------------------
AUTORE: 660
DATA :14/06/2013 - 10:06:11
----------------------------------------
grazie Nicola,
lo avevo visto e stavo provando a farci un po' di prove...
Max
----------------------------------------
================================================================================
Problemi con array e connector pane
================================================================================
AUTORE: 4217
DATA :15/04/2013 - 12:03:16
----------------------------------------
Salve a tutti,
mi sono imbattuto in un fastidioso ed inspiegabile problema.
Ho fatto un semplice codice in cui è presente un generatore di numeri casuali all'interno di un ciclo for che genera un array di numeri, il numero delle iterazioni è dato dal pannello frontale con un numeric control, il tutto attivato da un case booleano.
Mi capita la seguente cosa: se connetto il numeric control e il tasto booleano al connector pane tutto funziona. Appena connetto l'array al connector pane (che sarebbe l'uscita), l'array non mi visualizza più i dati all'interno.
Qualcuno saprebbe darmi una spiegazione?!
Vi ringrazio infinitamente.
Saluti.
----------------------------------------
AUTORE: 301
DATA :15/04/2013 - 12:17:13
----------------------------------------
Se ho ben capito cosa capita......si, è strano, ma dovresti postare il vi, detta così non saprei proprio
----------------------------------------
AUTORE: 4217
DATA :15/04/2013 - 12:30:25
----------------------------------------
...devo trovare il modo di postare un immagine...
----------------------------------------
AUTORE: 660
DATA :15/04/2013 - 12:35:12
----------------------------------------
se guardi sotto i pulsanti di invio, etc trovi un pulsantino invia allegato...
da lì puoi caricare un'immagine o un VI et voilà...
Max
----------------------------------------
AUTORE: 4217
DATA :15/04/2013 - 12:37:55
----------------------------------------
[http://fotoalbum.virgilio.it/jvbtime/labview/2.html][/url]
[http://fotoalbum.virgilio.it/jvbtime/labview/1.html][/url]
non so come si postano...ma gli indirizzi sono quelli...
----------------------------------------
AUTORE: 4217
DATA :15/04/2013 - 12:43:13
----------------------------------------
...ecco...scusate se sono impedito...
----------------------------------------
AUTORE: 301
DATA :15/04/2013 - 12:43:22
----------------------------------------
Ok, chiaro, se lasci l'array all'interno del case, quando non lo esegui ti viene restituito un array vuoto, è normale.
Aris
----------------------------------------
AUTORE: 4217
DATA :15/04/2013 - 12:49:20
----------------------------------------
...e invece no...se lo lasci nel case, e non lo connetti al pannello delle connessioni dei subVI funziona...appena lo connetti a tale pannello, non funziona più...poi ho appena provato a mettere l'array fuory dal case come dici tu, ma questo non funziona nemmeno se non lo connetto...
----------------------------------------
AUTORE: 4217
DATA :15/04/2013 - 12:50:41
----------------------------------------
...eppure ne ho fatti altri di VI così..e funzionano!...
----------------------------------------
AUTORE: 301
DATA :15/04/2013 - 12:55:53
----------------------------------------
Probabilmente è una ottimizzazione fatta nelle ultime versioni del LV.
Se ci pensi, quando hai un indicatore in un case che non esegui.....cosa te ne fai dei dati contenuti (in quell'indicatore)?
Aris
----------------------------------------
AUTORE: 4217
DATA :15/04/2013 - 13:02:34
----------------------------------------
Innanzitutto grazie per le risposte
...è labview 8.5 non una versione recente...ho un altro codice scritto tempo fa e funziona!...
...
----------------------------------------
AUTORE: 301
DATA :15/04/2013 - 13:03:03
----------------------------------------
Se quello che ti interessa è tenere memoria dell'ultimo array calcolato, puoi fare una cosa del genere, ma ripeto è giusto il comportamento del LV!
----------------------------------------
AUTORE: 301
DATA :15/04/2013 - 13:04:30
----------------------------------------
eccolo per la 8.5......
----------------------------------------
AUTORE: 4217
DATA :15/04/2013 - 13:23:28
----------------------------------------
...okok....grazie mille...allora potresti spiegarmi perchè questo funziona?
----------------------------------------
AUTORE: 4217
DATA :15/04/2013 - 13:27:08
----------------------------------------
...ecco
----------------------------------------
AUTORE: 1078
DATA :15/04/2013 - 13:31:04
----------------------------------------
Scusate se mi intrometto....
Non ho capito bene cosa intendi dire quando dici che il tuo array non ti si popola più quando lo connetti al connector pane. Provi ad eseguire il VI come subVI e quindi lo richiami da un VI chiamante?
Se chiami questo VI dall'esterno potresti postare anche il codice del chiamante?
Il fatto che tu collega o meno il tuo array al connector pane non dovrebbe influire nell'esecuzione del codice. Quello che può influire e il valore che passi in ingresso come booleano; se per caso, per qualche strano motivo, passi un false, il tuo array non si popolerà mai e quindi è corretto che tu lo veda vuoto.
----------------------------------------
AUTORE: 4217
DATA :15/04/2013 - 13:35:49
----------------------------------------
Ricky è proprio questo il problema. Il codice che ho postato funziona normalmente fino a quando non collego l'array al connector pane!
Il codice lo eseguo direttamente, non lo chiamo come subVI, e non funziona!
Sto provando con 2 versione, la 7.5 student (ha lo stesso comportamento) e la 8.5....è davvero molto strano!
----------------------------------------
AUTORE: 1078
DATA :15/04/2013 - 13:40:50
----------------------------------------
Ma il vi lo compili?
Potresti postare proprio il vi?
----------------------------------------
AUTORE: 4217
DATA :15/04/2013 - 13:41:03
----------------------------------------
...riposto il codice...adesso non è connesso niente al connector pane...appena si connette l'array come uscita, lo stesso non visualizza più niente...provate prima e dopo...
Grazie a tutti
----------------------------------------
AUTORE: 301
DATA :15/04/2013 - 13:50:37
----------------------------------------
è vero, l'ho provato anche io, ma come ti ho gia detto, credo sia una ottimizzazione delle allocazioni di memoria che fa il LV......
Aris
----------------------------------------
AUTORE: 1078
DATA :15/04/2013 - 14:10:26
----------------------------------------
Ho dato un'occhiata al tuo codice e a me funziona correttamente.
I problemi che puoi avere sono solo due:
[list:1u424a4e]1. non metti un numero maggiore di 0 nel numerico
2. non setti il booleano a true[/list:u:1u424a4e]
Se fai entrambe le cose, potrebbere essere labview installato male!
----------------------------------------
AUTORE: 4217
DATA :15/04/2013 - 14:20:06
----------------------------------------
Ricky funziona anche se connetti l'array al connector pane?...se si vuol dire che è successo qualcosa a LabVIEW...
----------------------------------------
AUTORE: 1078
DATA :15/04/2013 - 14:28:43
----------------------------------------
si certo... a me funziona connettendo l'array al connector pane!
----------------------------------------
AUTORE: 4217
DATA :15/04/2013 - 14:31:42
----------------------------------------
...secondo me è successo qualcosa quando ho letto un vi prodotto con la verisone 7.5 student...perchè me lo fa da allora...e inoltre lo stesso comportamento ce l'ha la versione 7.5 student....qui mi puzza....non è possibile che abbia questo comportamento strano...
----------------------------------------
AUTORE: 1078
DATA :15/04/2013 - 14:32:54
----------------------------------------
Prova a sostituire il numerico e il booleano con due costanti rispettivamente a 10 e true.
----------------------------------------
AUTORE: 4217
DATA :15/04/2013 - 14:50:45
----------------------------------------
...risolto l'arcano...bisogna mettere nel case False in lettura la stessa variabile e cacciare fuori dal case l'array...resta però strano il fatto che con l'array dentro al case e non connettendo al connector pane il tutto funzionava...appena connesso al connector pane non funzionava più....bah...posto il codice corretto...
----------------------------------------
AUTORE: 1078
DATA :15/04/2013 - 15:07:40
----------------------------------------
Scusa, ma tu esattamente cosa ti proponevi di fare? Lanciando una sola volta il VI con booleano a true riempivi il tuo array e rilanciandolo con booleano a false volevi mantenere i valori archiviati precedentemente?
Se è così non è che ti sei spegato benissimo nel postare il problema!
----------------------------------------
AUTORE: 4217
DATA :16/04/2013 - 07:23:00
----------------------------------------
Chiedo scusa se non mi sono spiegato bene e ringrazio tutti per l'aiuto.
----------------------------------------
AUTORE: 1078
DATA :17/04/2013 - 12:54:11
----------------------------------------
Di nulla.....
----------------------------------------
================================================================================
Utilizzo di "in place element structure"
================================================================================
AUTORE: 3428
DATA :17/04/2013 - 13:43:07
----------------------------------------
Ciao ragazzi,
vorrei utilizzare la struttura in oggetto.
Ad esempio questo esempio per fare il replace array subset va bene oppure non risparmierei nulla in termini di memoria?
----------------------------------------
AUTORE: 1078
DATA :17/04/2013 - 15:34:45
----------------------------------------
Secondo me per questo tipo di operazioni non risparmi nulla in termini di prestazioni. Ti conviene usare la "Replace Subset" della Array palates
[attachment=0:21psktjp]ReplaceSubset usage.png[/attachment:21psktjp]
----------------------------------------
AUTORE: 3428
DATA :29/04/2013 - 16:35:47
----------------------------------------
ok grazie.
In sostanza serve solamente se devo operare su un indice e poi rimetterlo al suo posto dopo le operazioni o su un cluster e poi rifare il boundle...
Mentre sulle waveforms? stesso discorso?
----------------------------------------
AUTORE: 1078
DATA :02/05/2013 - 10:05:59
----------------------------------------
[quote="renaso":2taggzew]ok grazie.
Mentre sulle waveforms? stesso discorso?[/quote:2taggzew]
Nelle waveforms la situazione potrebbe cambiare, diciamo che in linea di massima è meglio utilizzare lo "in-place" quando l'array è popolato da "molti" valori, come normalmente nelle waveform. Se poi hai array di waveforms è buona norma usare l'in-place.
----------------------------------------
================================================================================
Creazione di un segnale immettendo i dati
================================================================================
AUTORE: 10793
DATA :19/04/2013 - 11:03:35
----------------------------------------
Ciao a tutti,
mi scuso in anticipo perchè sono un novellino estremo per quanto riguarda labview quindi probabilmente chiederò cose stupide
Sto utilizzando labview per un progetto universitario (attraverso labview dovrò controllare lo spostamento di un motore elettrico che c'è in laboratorio)
Ora come ora, avendo labview mille miliardi di funzioni diverse mi sono perso e bloccato perchè avrei bisogno di creare un segnale dando io dati in ingresso. Mi spiego meglio:
poniamo di voler fare una rampa, poi un tratto orizzontale e poi un tratto di rampa discendente. Vorrei poter creare (e poi visualizzare) questo tipo di segnale dando le coordinate di tempo (asse X) e spostamento (asse Y). Alla fine vorrei avere un controllo dove immettendo dati del tipo: "spostati di A per B tempo"
Ho provato con diverse funzioni ma non sono riuscito a fare praticamente nulla...
qualsiasi mano/link/suggerimento è ben accetto! grazie!
P.s. lo so che è una domanda stupida e probabilmente è una cosa che si può fare in 12 secondi ma non riesco proprio a uscirne
(sicuramente per la mia ignoranza in materia)
----------------------------------------
AUTORE: 301
DATA :19/04/2013 - 12:22:46
----------------------------------------
Nella paletta Function >> Signal Processing >> Waveform Generation, trovi la funzione "simulate arbitrary signal.
Potrebbe essere un punto di partenza.
Aris
----------------------------------------
AUTORE: 1078
DATA :19/04/2013 - 12:23:06
----------------------------------------
[quote="Arkees":172ptuac]Ciao a tutti,
mi scuso in anticipo perchè sono un novellino estremo per quanto riguarda labview quindi probabilmente chiederò cose stupide
piego meglio:
[/quote:172ptuac]
Siamo qui apposta....
[quote="Arkees":172ptuac]Ciao a tutti,
poniamo di voler fare una rampa, poi un tratto orizzontale e poi un tratto di rampa discendente. Vorrei poter creare (e poi visualizzare) questo tipo di segnale dando le coordinate di tempo (asse X) e spostamento (asse Y). Alla fine vorrei avere un controllo dove immettendo dati del tipo: "spostati di A per B tempo"
[/quote:172ptuac]
Risolviamo un problema alla volta.... Facciamo qualcosa di fisso che fa una rampa in salita, un tratto dritto e una rampa in discesa e lo visualizziamo in un grafico.
----------------------------------------
AUTORE: 1078
DATA :19/04/2013 - 12:24:36
----------------------------------------
[quote="Arkees":3rl6894c] Vorrei poter creare (e poi visualizzare) questo tipo di segnale dando le coordinate di tempo (asse X) e spostamento (asse Y). Alla fine vorrei avere un controllo dove immettendo dati del tipo: "spostati di A per B tempo"
[/quote:3rl6894c]
Se mi spieghi meglio cosa vuoi fare provo a fare un'esempietto che ti aiuti....
----------------------------------------
AUTORE: 10793
DATA :19/04/2013 - 13:16:49
----------------------------------------
Grazie mille a tutti ragazzi, davvero
Quello che intendo fare è: date le coordinate X e Y per una serie di punti (dove per me X sarà il tempo e Y lo spostamento del motorino elettrico) creare un grafico che mi faccia vedere come va il segnale completo (che si crea collegando i punti che inserisco) e che mi generi questo segnale (vorrei avere un signal come output e non solo un "disegno" di come vanno le cose) (per ora sto lavorando ad un livello molto "base", cioè sto cercando di creare il segnale dandogli i punti che decido io...poi penserò a come fare per mandarli al motorino etc)
In fin dei conti vorrei avere un'interfaccia del tipo: (posti Y= spostamento motorino e X tempo)
l'utente inserisce una serie di dati tipo: "spostati di 10 mm in 5 secondi, poi tieni quella posizione per 20 secondi e poi muoviti di nuovo o fai altro, insomma seguendo una serie di punti che inserisce l'utente"
P.s. purtroppo sono stato lasciato MOLTO allo sbaraglio e visto che labview non è propriamente un software semplice da usare, volevo chiedervi se esiste qualche tutorial step by step magari in italiano per imparare a usarlo!!! perchè la guida introduttiva che viene fornita quando si installa il programma sinceramente non mi è servita praticamente a niente...
----------------------------------------
AUTORE: 301
DATA :19/04/2013 - 15:26:33
----------------------------------------
Il problema è quel "spostati di 10 mm IN 5 s"......o hai un sistema di retroazione o conosci il funzionamento del tuo motore......
Ti allego un vi che ti può dare un'idea di come poter fare ad impostare un segnale per un certo tempo (attento che l'esempio ti può andare bene solo se lavori con tempi abbastanza piccoli, max qualche secondo).
Nell'esempio, setti una uscita (che sarà il tuo non meglio precisato output verso il motore) per un tempo specifico, dopodichè passi a dare il valore di output successivo.
Proviamo a partire da qui.....
Aris
----------------------------------------
AUTORE: 10793
DATA :19/04/2013 - 16:50:50
----------------------------------------
Davvero, GRAZIE INFINITE.
vi stresserò sicuramente ancora più avanti, nel frattempo cerco di capirci qualcosa e mi faccio le ossa su questi! grazie mille!
----------------------------------------
AUTORE: 301
DATA :19/04/2013 - 16:55:23
----------------------------------------
Come dice il buon Riky,siamo qui apposta.
Solo,cerca di fare domande puntuali (per quanto possibile).
è un mondo sconfinato,con innumerevoli strade per le soluzini,se poi non è nemmeno chiaro cosa si vuole......ciao!
Aris
----------------------------------------
AUTORE: 10793
DATA :19/04/2013 - 17:01:54
----------------------------------------
Mi impegno e prometto di essere più specifico
il grosso problema è che sto programma è una figata ma non esiste una guida che spieghi come fare le cose e finisce che ti perdi senza combinare niente per giornate intere (tipo oggi)
----------------------------------------
================================================================================
Salvataggio dati per utilizzo successivo
================================================================================
AUTORE: 10795
DATA :24/04/2013 - 21:53:47
----------------------------------------
Salve a tutti sono nuovo , mi sono iscritto dopo aver dato un'occhiata generale al forum ed esserne rimasto colpito. Non utilizzo Labview da molto tempo , sto riscontrando dei problemi ed ho deciso così di iniziare anche io a postare qualcosa qui. Vi illustro la situazione :
sto utilizzando una daqpad per acquisire dei segnali acustici da 3 sensori piezoelettrici. Ho creato il sistema di acquisizione con una struttura for di durata 30 cicli poichè effettuo 30 acquisizioni (misurazioni) e ad ogni ciclo , con un particolare approccio di crosscorrelazione , valuto la differenza dei tempi di arrivo tra 2 coppie di sensori (DT21 , DT31). Riporto in allegato il file .vi con quanto detto. Il mio problema è questo : ad ogni ciclo vorrei poter salvare in qualche modo i due delta temporali DT21 e DT31 , perchè al termine del for mi servirebbe leggere tutti i valori dei delta determinati nei 30 cicli per poi calcolarne valor medio e deviazione standard e far diventare i valori medi costanti di input in un Matlab script node. Non so come fare scrittura ad ogni ciclo e successiva lettura al termine. Grazie in anticipo per le risposte , ciao!
----------------------------------------
AUTORE: 301
DATA :26/04/2013 - 12:25:06
----------------------------------------
Beh, basta che sfrutti l'autoindicizzazione del for e ti salvi i tuoi 30 valori.....
Aris
----------------------------------------
AUTORE: 301
DATA :26/04/2013 - 12:30:40
----------------------------------------
Scusa, avevo guardato solo la tua richiesta, ma nel vi che hai postato c'è una grossa imprecisione.......
Ti allego il vi corretto.
Il task, lo devi cancellare solo ad acquisizione finita!
Aris
----------------------------------------
AUTORE: 10795
DATA :26/04/2013 - 14:25:45
----------------------------------------
Aris grazie mille , veramente gentile , chiaro , sintetico ed efficace
era proprio quello che mi serviva! Il salvataggio dei dati su due array è una soluzione fantastica! Grazie ancora
----------------------------------------
AUTORE: 10795
DATA :26/04/2013 - 14:26:47
----------------------------------------
Aris dimenticavo , grazie anche per la correzione
erroraccio!
----------------------------------------
AUTORE: 10795
DATA :29/04/2013 - 18:45:22
----------------------------------------
Salve a tutti,
prima di completare il precedente vi con il Matlab script node , ho apportato una modifica sostituendo il for con un while comandato da un pulsante di stop , in maniera da poter gestire l'acquisizione dati in maniera più diretta. Sono sorti alcuni inconvenienti , ad esempio quando mando l'app in run non sempre tutto va a buon fine , di tanto in tanto spuntano messaggi di errore legati al mancato tentativo di inviare alcune variabili di input alla finestra di script. In particolare gli errori stanno in valori non idonei di numero di samples per channel e di timeout. Quali potrebbero essere valori adatti utilizzando un sample rate di 1MHz ?
Vi riporto in allegato il vi.
Altro problema è il seguente : ad ogni ciclo di while vengono salvati nei due array dei valori di delta temporali , però può anche capitare (sicuramente) che per via di assenza di segnale captato dai sensori vengano posizionati negli array dei valori di delta nulli e questo andrebbe ad alterare il calcolo dei valor medi e di deviazione standard. Esiste un modo per eliminare da un array tutti i valori nulli e conservare quindi solo quelli diversi da zero?
Grazie in anticipo per le risposte!
----------------------------------------
AUTORE: 301
DATA :29/04/2013 - 18:57:45
----------------------------------------
Dipende dal buffer della tua scheda.
Prova a settare il numero di campioni pari a un decimo o un centesimo del sample rate.
Per quanto riguarda la seconda domanda......"un for con dentro una case structure....."
Aris
----------------------------------------
AUTORE: 301
DATA :29/04/2013 - 19:00:02
----------------------------------------
P.S.
.....e se l'acquisizione è continua (dentro ad un while), setta "continuous sample"......
----------------------------------------
AUTORE: 10795
DATA :01/05/2013 - 21:42:42
----------------------------------------
Aris nuovamente grazie mille per le preziose soluzioni
nel frattempo ho pensato ad un'altra soluzione , invece di filtrare gli array ad acquisizione finita , interrogo i valori ad ogni ciclo e se sono nulli non li salvo a priori. Grazie ancora!
----------------------------------------
AUTORE: 10795
DATA :02/05/2013 - 15:52:03
----------------------------------------
A proposito di quanto detto nel messaggio precedente allego il vi realizzato. Ad occhio e croce mi pare sia corretto ma vorrei avere opinioni da persone più preparate e competenti
grazie!
----------------------------------------
AUTORE: 301
DATA :02/05/2013 - 15:58:38
----------------------------------------
No, mi spiace ma non è corretto.
Nel caso "false", hai settato il tunnel come "use default" (che già di per se sarebbe da evitare), ma in questo caso, ti viene restituito uno 0 (quindi non cambia nulla rispetto a prima).......
Aris
----------------------------------------
AUTORE: 10795
DATA :02/05/2013 - 19:50:30
----------------------------------------
Mannaggia non ci avevo pensato che di default viene comunque salvato 0 , grazie Aris , ho scelto l'impostazione use default perchè altrimenti mi dava errore nel tunnel , ma in effetti anche se strutturalmente corretto però non ottengo quello che vorrei. Ho provato quest'altro approccio (allego il nuovo vi) , ammetto che sono andato ad intuito , ma perchè non riesco a trovare altre soluzioni per avere nell'array esterno al ciclo solo valori non nulli...anche se ho l'impressione di aver errato ancora
----------------------------------------
AUTORE: 301
DATA :02/05/2013 - 20:03:18
----------------------------------------
Come soluzione, lo puoi dire solamente tu se va bene o no.
Nell'ultimo vi che hai postato, viene inserito un valore selezionabile dall'utente all'interno dell'array, la domanda è......ti va bene?!?
Ti allego un esempio che non memorizza nulla in caso il valore sia zero, ma in questo caso non è detto che il numero di dati all'interno degli array sia uguale.
Insomma, devi vedere tu cosa necessiti.
Aris
----------------------------------------
AUTORE: 10795
DATA :02/05/2013 - 21:59:51
----------------------------------------
Aris innanzitutto grazie per le preziose risposte , mi sei veramente di grande aiuto...Comunque ti rispondo :
[quote="aris":1uvz4mb0]
Nell'ultimo vi che hai postato, viene inserito un valore selezionabile dall'utente all'interno dell'array, la domanda è......ti va bene?!?[/quote:1uvz4mb0]
No...come detto in una precedente risposta , io acquisisco dei segnali , ma potrebbe verificarsi assenza di dati durante l'acquisizione e in questo caso non voglio salvare nulla , cioè se ci sono valori nulli non voglio salvare 0 nell'array ma nessun valore , tantomeno un valore a caso selezionabile dall'utente.
[quote="aris":1uvz4mb0]Ti allego un esempio che non memorizza nulla in caso il valore sia zero, ma in questo caso non è detto che il numero di dati all'interno degli array sia uguale.[/quote:1uvz4mb0]
Ottimo , se quest'ultimo vi che mi hai postato non memorizza nulla in caso di assenza dati (dato diverso da 0 ? false) hai risolto quanto chiedevo , è così? Per quanto riguarda poi la differenza di lunghezza dei due array in uscita non è un problema , a me servono principalmente i valori medi dei due delta temporali da mandare poi in pasto al Matlab script node.
Grazie ancora!
----------------------------------------
AUTORE: 301
DATA :02/05/2013 - 22:02:11
----------------------------------------
Si, è cosi.
In caso di valore 0 non "accoda" nessun dato nell'array.
Aris
----------------------------------------
AUTORE: 1078
DATA :03/05/2013 - 08:43:29
----------------------------------------
Ciao...
Se posso dire la mia....
Ho apportato qualche piccolissima modifica al vs Vi. In sostanza la modifica che ho apportato è quella dell'inizializzazione dell'array per poi riscriverne i valori mano a mano che arrivano. Ho fatto questo per evitare di avere un consumo eccessivo di risorse durante l'acauisizione. Infatti, come tutti sanno, indicizzando come ha fatto @LesStrato o utilizzando la funzione "build array" come ha fatto @aris è controproducente perchè LabVIEW non sapendo quanta memoria contigua serva all'applicazione, alloca memoria (raddoppiandola) ogni volta che gli array sono pieni. Questo non si nota in applicazioni che creano array di dimensioni relativamente minime, ma in un'applicazione come questa che tratta già migliaia di valori per 4 canali alla volta e che non è definito per quanto tempo possa girare, può causare un "overflow of memory" non desiderato. Ovviamente io ho dato un valore (uguale a quello indicato di acquisizione) che va personalizzato in base alle esigenze.
Poi se posso dare un'ultimo consiglio a @LesStrato, visto che sei un neofita: inizierei a curare un po' di più lo stile di programmazione. In applicazioni di medio-grosse dimensioni uno stile pulito, diventa fondamentale!
----------------------------------------
AUTORE: 10795
DATA :04/05/2013 - 16:32:39
----------------------------------------
Ciao Ricky , grazie mille per la risposta , vorrei tanto vedere la modifica da te apportata al vi ma sfortunatamente ho la versione di LV 2011 , se riesci ad allegarmi il file in versione pre 2012 te ne sarei grato
[quote="Ricky":29bbjlj1]ma in un'applicazione come questa che tratta già migliaia di valori per 4 canali alla volta e che non è definito per quanto tempo possa girare, può causare un "overflow of memory" non desiderato.[/quote:29bbjlj1]
Beh si , hai ragione , io sto monitorando dei segnali transitori , non so quando si possano manifestare , quindi per esser certo di ricavare dei valori attendibili è necessario che acquisisca per lungo tempo.
[quote="Ricky":29bbjlj1]Poi se posso dare un'ultimo consiglio a @LesStrato, visto che sei un neofita: inizierei a curare un po' di più lo stile di programmazione. In applicazioni di medio-grosse dimensioni uno stile pulito, diventa fondamentale![/quote:29bbjlj1]
Grazie del consiglio Ricky
è vero sono ancora alle prime armi , ma per programmazione pulita e con stile cosa intendi esattamente? Dovrei forse curare l'ordine tra i vari blocchetti?
Grazie!
----------------------------------------
================================================================================
Array
================================================================================
AUTORE: 4578
DATA :27/04/2013 - 14:33:04
----------------------------------------
Salve a tutti,
Qualcuno può aiutarmi ad eliminare il primo elemento dall'array.
Ad esempio se la lunghezza dell'array è 5, io voglio eliminare il primo elemento dell'array quindi avere un array di lunghezza 4 senza il primo elemento.
Grazie a tutti
----------------------------------------
AUTORE: 301
DATA :27/04/2013 - 17:01:48
----------------------------------------
Delete from array, colleghi una costante "0" all'ingresso "Index".
Aris
----------------------------------------
================================================================================
Usate un counter con DAQ USB6009
================================================================================
AUTORE: 1427
DATA :05/05/2013 - 10:18:05
----------------------------------------
ciao a tutti,
torno dopo vari anni su queste pagine, memore dei preziosissimi consigli che ricevevo a suo tempo.
Ora, con qualche sforzo ho rispolverato il mio labview 2009 perche' devo interfacciarmi con un banco di prova per leggerne i diversi segnali attraverso una USB6009
Il mio grosso problema e' la lettura di un reed "passivo" montato su un flussometro, a cui ad ogni impulso corrisponde un determinato CC. Quindi devo semplicemente leggere la frequenza di impulsi per avere una portata.
Interfaccio tutto al counter della scheda ma c'e' un problema, lo stesso che fu evidenziato (ahime' senza soluzione) qui
viewtopic.php?f=1&t=5084&p=22823&hilit=counter#p22823
stessa cosa.
Il counter e' normalmente alimentato quindi funziona se lo collego contro il ground.
Il problema e' che ad ogni impulso la scheda ne registra 4 o 5 o 6 comunque sbaglia. Ed ovviamente io resto fregato.
Qualche suggerimento?
Domanda: se collego al +5V ovviamente non legge nulla... se collego ad un +12V brucio tutto?
Grazie per l'attenzione!
GM
----------------------------------------
AUTORE: 482
DATA :07/05/2013 - 07:33:25
----------------------------------------
Come ti ho scritto in privato, l'unica soluzione che ai tempi avevo trovato era quella software di considerare ogni cambio di valore come un singolo cambio di stato.
Ovviamente pero' per fare questo devi avere la garanzia che il tuo software cicli piu' velocemente della massima velocità del sensore reed.
----------------------------------------
AUTORE: 1427
DATA :07/05/2013 - 17:42:53
----------------------------------------
beh grazie tante per la risposta!
cavolo... sinceramente e' una bella fregatura!
ma a che serve questo counter se funziona cosi'?
----------------------------------------
AUTORE: 482
DATA :08/05/2013 - 07:14:00
----------------------------------------
il problema è che NON funziona cosi', se tu gli colleghi un sgenale pulito con la sua alimentazione , GND ecc, funziona correttamente. E' proprio il tipo di segnale dei sensori Reed che probabilmente gli da fastidio
----------------------------------------
AUTORE: 724
DATA :08/05/2013 - 08:44:13
----------------------------------------
Non ho usato i counter della 6009 ma gli AI e questi hanno rispetto
ad altre schede NI più performanti un'impedenza in ingresso bassa
per cui ho dovuti in alcuni casi interporre tra segnale da misurare
e la usb6009 un operazionale in configurazione inseguitore per
poter aumentare l'impedenza ed avere così una lettura corretta.
Questo per dire che la 6009 non sempre la si riesce ad usare senza
condizionare opportunamente il segnale da misurare.
ciao,
Cesare
----------------------------------------
AUTORE: 4
DATA :08/05/2013 - 09:22:17
----------------------------------------
un counter che conta più impulsi del dovuto secondo me dipende dal fatto che il segnale del reed "rimbalza" a ogni cambio stato aperto chiuso.
Leggi questo http://it.wikipedia.org/wiki/Circuito_anti-rimbalzo
Ciao
----------------------------------------
AUTORE: 1427
DATA :08/05/2013 - 22:13:46
----------------------------------------
[quote="ale914":1c2tg93x]
Leggi questo http://it.wikipedia.org/wiki/Circuito_anti-rimbalzo
[/quote:1c2tg93x]
grazie!
molto interessante e temo di si...
quindi devo fare un circuito capace di "pulire" un segnale che puo' arrivare a 400Hz... temo sia molto oltre le mie capacità
----------------------------------------
================================================================================
COM service
================================================================================
AUTORE: 2196
DATA :06/05/2013 - 09:22:39
----------------------------------------
Dovrei comunicare con un altro applicativo usando il COM service di windows.
Esiste un modo per farlo via labview?
----------------------------------------
AUTORE: 1078
DATA :10/05/2013 - 08:29:31
----------------------------------------
Ciao Buddace,
Premetto che non conosco il COM service di windows ma, hai già provato ad usare i VI-Server.... Solitamente per comunicare con i "Servizi" Windows si utilizza questo metodo.
Altrimenti potresti fare delle chiamate direttamente alle API di windows.
----------------------------------------
AUTORE: 2196
DATA :10/05/2013 - 09:56:09
----------------------------------------
Trovato un topic sul forum NI che suggerisce di usare i blocchi activeX...proverò
----------------------------------------
================================================================================
comandare relè con USB6009
================================================================================
AUTORE: 3053
DATA :10/05/2013 - 08:47:40
----------------------------------------
Salve,
ringrazio in anticipo chi può darmi un suggerimento sul seguente problema.
Con le mie conoscenze basi di LV stò cercando di realizzare un sw che si occupa di leggere V e I e inviare segnali DGT_out a dei relè.
L'idea e' quella di fare le cose a blocchi, e per quanto riguarda la parte di DGT_out mi trovo in difficoltà.
Spiego il problema:
Dovrei far intervenire in modo automatico un relè (RL1) che si occupa di [b:2o62dt6r]caricare[/b:2o62dt6r] al raggiungimento di un minimo di V o un relè (RL2) che si occupa di [b:2o62dt6r]scaricare [/b:2o62dt6r] la batteria al raggiungimento di massimo di V da me impostato.
Quello che chiedo e' un suggerimento o un qualche esempio da poter modificare e postare la vi on line per pareri e migliorie.
saluti
----------------------------------------
AUTORE: 645
DATA :12/05/2013 - 21:25:41
----------------------------------------
Se provi a cercare informazioni in internet trovi che ci vuole un transistor per alimentare un relè (se la corrente di uscita della scheda digitale non è sufficiente per far scattare il relè), un diodo in parallelo alla bobina del relè (per gestire correnti di scambio contatto) e tre contatti, uno per la tensione, uno per la massa e uno comandato dalla scheda. Prova a cercare in google qualcosa tipo "circuito arduino relay": sono informazioni per Arduino ma il circuito può andare bene anche per la scheda USB che hai scelto.
Per quanto riguarda il programma invece devi acquisire la tensione della batteria con la scheda USB (che però ha un massimo di 10V... Se la batteria che usi è più grande ti serve un altro sistema capace di gestire il livello di tensione corretto oppure puoi utilizzare un partitore di tensione per ridurre i valori all'interno del range gestito dalla scheda USB) e in base al valore letto decidi quale relè attivare.
----------------------------------------
AUTORE: 482
DATA :13/05/2013 - 07:44:49
----------------------------------------
Se cerchi qui sul forum, dovresti trovare anche dei post in cui si parla di driver tipo l'M54562 che permette di utilizzare le linee digitali a livelli logici per pilotare dei carichi tipo relè statici.
Si tratta di un piccolo integrato al quale tu colleghi l'alimentazione che piloterà i carichi e tramite gli ingressi TTL ti restituisce l'alimentazione sulle rispettive uscite.
----------------------------------------
AUTORE: 3053
DATA :13/05/2013 - 10:56:12
----------------------------------------
Grazie per l'interesse.
metterò in pratica i suggerimenti comunque per la parte hw c'e' chi pensa a farmi trovare il tutto gestibile con la 6009, il problema e' che in fase di software non mi viene da intuire come suggerito da MagicBotolo
"....e in base al valore letto decidi quale relè attivare."
senza avere l'hw ancora pronto per provare. Se avete qualche cosa di simile che posso vedere, riesco a ottimizzarlo alla mia esigenza...spero.
grazie
----------------------------------------
AUTORE: 482
DATA :14/05/2013 - 09:26:06
----------------------------------------
beh niente di piu' facile.
Tutto quello0 che tu andrai a leggere da un hardware è simulabile mettendo dei controlli ai quali cambierai tu valore manualmente.
Idem per le uscite, invece che andare a scrivere sulla scheda, crei degli indicatori led booleani.
----------------------------------------
================================================================================
Labview DLL e printf
================================================================================
AUTORE: 2196
DATA :10/05/2013 - 09:57:53
----------------------------------------
detro il mio codice labview devo integrare una DLL che usa delle chiamate alla printf per fare debug. Chiamando la dll da labview dove vedo l'output generato dalle printf ?
----------------------------------------
AUTORE: 1078
DATA :10/05/2013 - 13:22:48
----------------------------------------
Dovresti vederlo nella console dos di widows....
----------------------------------------
AUTORE: 2196
DATA :10/05/2013 - 16:07:29
----------------------------------------
[quote="Ricky":2utiollw]Dovresti vederlo nella console dos di widows....[/quote:2utiollw]
Purtrppo no...
----------------------------------------
AUTORE: 43
DATA :13/05/2013 - 09:55:12
----------------------------------------
[quote="Buddace":2o04tll0]detro il mio codice labview devo integrare una DLL che usa delle chiamate alla printf per fare debug. Chiamando la dll da labview dove vedo l'output generato dalle printf ?[/quote:2o04tll0]
ciao.
Ma scusa, e se quella dll la chiami da un qualunque altro sw scritto in un qualunque altro linguaggio? dove vanno a finire i messaggi inviati con "printf"?
Meglio sostituire quelle "printf" con delle "fprintf" per scrivere in un file.
Se la dll è di "alto" livello puoi richiamere dei popup da dentro il codice. se è + di basso livello e disponi di una seriale puoi fargli spedire messaggi su una linea di comunicazione che sia facilmente utilizzabile.
Quindi eviterei di chiedermi dove vanno a finire quei messaggi inviati da "printf" e da subito cercherei un'alternativa che comporta la modifica del codice sorgente della DLL-
bye
----------------------------------------
AUTORE: 927
DATA :29/05/2013 - 10:11:37
----------------------------------------
Per la cronaca, le printf delle DLL scrivono sullo STDOUT del programma chiamante, che nel caso di Labview... non c'è.
Se proprio non si può modificare la DLL, fooooorse si può aprire prima una console apposita chiamando kernel32.dll come spiegato in http://msdn.microsoft.com/en-us/library ... 85%29.aspx (vedi anche i commenti in basso)
----------------------------------------
================================================================================
Lettura di più file .tab delimited
================================================================================
AUTORE: 10798
DATA :10/05/2013 - 11:18:14
----------------------------------------
Buongiorno,
allego ciò che ho sviluppato con labview per poter visualizzare dei file .tab delimited che contengono misure provenienti da pannelli fotovoltaici (ho allegato anche degli esempi). Le misure acquisite sono di natura elettrica (voltaggi, correnti, ecc.) o climatica (temperature, umidità, ecc.) e possono essere visualizzate singolarmente (banalmente o apro il .tab delimited con le misure elettriche o quello con le misure climatiche).
Avrei bisogno però di aquisire sia i dati climatici che quelli elettrici nel medesimo block diagram in modo in modo poi da visualizzare eventuali correlazioni nei grafici del front panel. Non riesco per il momento a trovare una soluzione che mi permetta di fare tutto ciò, qualcuno gentilmente ha dei suggerimenti?
Grazie,
Giacomo
----------------------------------------
AUTORE: 1078
DATA :10/05/2013 - 13:24:46
----------------------------------------
Ti sei dimenticato di allegare l'immagine del codice o il VI....!!
----------------------------------------
AUTORE: 10798
DATA :10/05/2013 - 13:29:01
----------------------------------------
[quote="Ricky":1yoa3lf4]Ti sei dimenticato di allegare l'immagine del codice o il VI....!!
[/quote:1yoa3lf4]
Chiedo venia!
----------------------------------------
================================================================================
Acquisizione multi-channels, estrazione outputs.
================================================================================
AUTORE: 10795
DATA :10/05/2013 - 14:57:50
----------------------------------------
Salve a tutti.
Inserisco questo post in seguito ad aver constatato un inconveniente su un vi da me utilizzato per lungo tempo. Non mi ero mai accorto di questa situazione , ora ho dubbi sul fatto che l'approccio utilizzato sia corretto.
Si tratta di un'acquisizione multiple channels con una Daqpad. Inizialmente vado a specificare i tre canali di acquisizione (Dev1/ai0:2). Il vi di lettura mi da in output un array contenente in unico blocco i tre segnali acquisiti.
La mia intenzione era di ottenere in maniera separata i tre segnali acquisiti , tale da lavorare su ognuno indipendentemente.
Ho quindi convertito l'output-array in cluster e , tramite il vi unbundle , ho effettuato una scissione in tre dati (Data[0] , Data[1] , Data[2]) , riporto in allegato il vi.
Mi sono autoconvinto del fatto che in Data[0] fosse contenuto il segnale acquisito dall'input-channel0 , in Data[1] quello del channel1 e così via...questo finchè non ho effettuato il seguente test:
Ho inviato un'onda quadra , ottenuta da generatore di segnale , sul channel0 e ho collegato un WaveformGraph su Data[0] ... Il segnale veniva visualizzato! Altra prova : ho inviato nuovamente l'onda quadra sul channel0 , ma ho provato a prelevare il segnale da Data[2]...Se tutto fosse stato corretto non avrei dovuto visualizzare nulla , invece ecco nuovamente il segnale lì sul grafico
Cosa dovrei fare per ottenere ciò che ho appena descritto? Grazie delle risposte
----------------------------------------
AUTORE: 301
DATA :13/05/2013 - 07:14:01
----------------------------------------
Domanda,
quando hai fatto la seconda prova, il CH2 era "NON collegato"?
Se così, può assolutamente succedere che tu veda il segnale che stai mandando al CH0, per ovviare al problema devi semplicemente collegare i canali non utilizzati al GND del tuo sistema.
Aris
----------------------------------------
AUTORE: 482
DATA :13/05/2013 - 07:56:28
----------------------------------------
riescia salvarlo in versione 2009?
----------------------------------------
AUTORE: 10795
DATA :13/05/2013 - 21:10:09
----------------------------------------
[quote="aris":xzpjohu6]quando hai fatto la seconda prova, il CH2 era "NON collegato"?[/quote:xzpjohu6]
Ciao Aris!
In effetti no , nella seconda prova ho utilizzato il solo CH0 , il solo collegato a generatore di segnale , ho provato però a prelevare il segnale acquisito da Data[2] anzichè Data[0] e con mio grande stupore il segnale stava proprio su Data[2] ... gli altri canali CH1 e CH2 non erano collegati.
Sono sempre stato convinto del fatto che succedesse questo :
CH0 --> Data[0]
CH1 --> Data[1]
CH2 --> Data[2]
Ma ne ho avuto la negazione...
[quote="gepponline":xzpjohu6]riescia salvarlo in versione 2009?[/quote:xzpjohu6]
Ciao gepponline!
Certo che si , ti riporto in allegato il vi in versione 2009.
Grazie a tutti!
----------------------------------------
AUTORE: 301
DATA :13/05/2013 - 21:23:58
----------------------------------------
Chiaro,ma come ti ho detto prima,collega i canali non collegati al generatore a massa.
----------------------------------------
AUTORE: 482
DATA :14/05/2013 - 09:40:06
----------------------------------------
Non ho una 6009 ma una 6008 ma ti confermo che quello che ti aspetti è quello che dovresti avere.
Ho notato nel tuo VI due cosette pero':
1) perchè trasformi l'array in un cluster quando puoi usare l'index array direttamente per separare i 3 segnali?
2)Nel daqmx timing manca l'ingresso sample mode impostato a "Continuous sample" per poter far girare ciclicamente il vi.
Ho fatto solo la second amodifica e tutto mi funziona correttamente anche senza collegare gli altri due ingressi. Il primo punto non cambia fondamentalmente niente s enon che c'hai messo un passaggio in piu'.
Per fare il test mi sono limitato a graficare con dei graph i 3 canali (su tre graph diversi) e ho collegato il segnale +5V fornito dalla scheda ad un filo che di volta in volta andavo a collegare e scollegare continuamente sui singoli canali per simulare un onda quadra.
P.S. altroconsiglio, collega l'ingresso del DAQmx create channel "input terminal configuration" e impostalo se lo vuoi differenziale o riferito a gnd, a volte possono esserci incongruenze dovute alle masse flottanti.
----------------------------------------
AUTORE: 10795
DATA :20/05/2013 - 08:34:42
----------------------------------------
Ciao gepponline!
Grazie della risposta e scusa il ritardo con cui rispondo io , ma ho avuto problemi di connessione...
[quote="gepponline":3ppesevn]1) perchè trasformi l'array in un cluster quando puoi usare l'index array direttamente per separare i 3 segnali?[/quote:3ppesevn]
Si in effetti è un passaggio superfluo , ti posso dire che i cluster mi fanno più simpatia (scusate arrayisti
).
[quote="gepponline":3ppesevn]2)Nel daqmx timing manca l'ingresso sample mode impostato a "Continuous sample" per poter far girare ciclicamente il vi.[/quote:3ppesevn]
Si hai ragione , mi sono semplicemente dimenticato di inserire tale constant nel vi postato.
Nonostante tutto ti posso ancora dire che ho provato ad acquisire multichannel due impulsi di 100kHz , tra loro sfasati , con sample rate di 1MHz (che rispetta quindi Shannon in quanto maggiore del doppio della frequenza del segnale) , 10000 samples per channel , con timeout 10 e mi da errore sul buffer...
----------------------------------------
AUTORE: 482
DATA :20/05/2013 - 10:49:49
----------------------------------------
ma l'errore sul buffer credo che sia dovuto al fatto che quella scheda non puo' acquisire a 1 Mhz, la 6009 ha come massimo valore 48KS/sec
----------------------------------------
AUTORE: 660
DATA :20/05/2013 - 11:10:34
----------------------------------------
già... temo che Geppo abbia ragione...
con la 6009 puoi acquisire al massimo a 48kS/s (=48kHz su canale singolo)
Max
----------------------------------------
AUTORE: 10795
DATA :22/05/2013 - 21:38:47
----------------------------------------
[quote="gepponline":2jgoudwh]la 6009 ha come massimo valore 48KS/sec[/quote:2jgoudwh]
[quote="machyaer":2jgoudwh]temo che Geppo abbia ragione...
con la 6009 puoi acquisire al massimo a 48kS/s (=48kHz su canale singolo)[/quote:2jgoudwh]
Ciao gepponline e machyaer !
Grazie mille per le vostre risposte!
A dire il vero però io ulilizzo come scheda di acquisizione una DAQ-BNC-2110 la quale ha come massimo valore di sample rate 5MHz.
Comunque giocando un pò sui valori sono riuscito ad acquisire gli impulsi dati da generatore esterno , unico inconveniente: dopo un pò di tempo viene occupato l'intero buffer...vedrò di fare qualche modifica , magari utilizzando il vi circular buffer tale da estendere le dimensioni per la scrittura...
----------------------------------------
AUTORE: 482
DATA :23/05/2013 - 07:23:21
----------------------------------------
[quote="LesStrato":3npl2ph0]
A dire il vero però io ulilizzo come scheda di acquisizione una DAQ-BNC-2110 la quale ha come massimo valore di sample rate 5MHz.[/quote:3npl2ph0]
Sorry, ho fatto confusione io con un altro topic a cui stavo rispondendo
[quote="LesStrato":3npl2ph0]
Comunque giocando un pò sui valori sono riuscito ad acquisire gli impulsi dati da generatore esterno , unico inconveniente: dopo un pò di tempo viene occupato l'intero buffer...[/quote:3npl2ph0]
Bene, allora innanzitutto spiega un po' che valori hai toccato, magari tornerà comodo a qualcun'altro.
Per la questione del buffer, sarà banale ma o lo allochi piu' grande o lo svuoti piu' in fretta.
----------------------------------------
AUTORE: 660
DATA :23/05/2013 - 08:36:25
----------------------------------------
[quote:nb00rooc]Sorry, ho fatto confusione io con un altro topic a cui stavo rispondendo [/quote:nb00rooc]
ah ecco perchè... vabbè per stavolta ti perdoniamo
----------------------------------------
AUTORE: 10795
DATA :25/05/2013 - 22:10:39
----------------------------------------
[quote="gepponline":nspqgym1]Sorry, ho fatto confusione io con un altro topic a cui stavo rispondendo
[/quote:nspqgym1]
Ciao gepponline , tranquillo capita
[quote="gepponline":nspqgym1]Bene, allora innanzitutto spiega un po' che valori hai toccato, magari tornerà comodo a qualcun'altro.[/quote:nspqgym1]
Si , ho agito su sample rate e timeout raddoppiandoli , avevo anche provato ad aumentare il numero di samples per channel ma mi si bloccava tutto.
[quote="gepponline":nspqgym1]Per la questione del buffer, sarà banale ma o lo allochi piu' grande o lo svuoti piu' in fretta[/quote:nspqgym1]
Per quanto riguarda l'allocazione ok , ma per svuotarlo più in fretta? Scusa se la domanda è banale ma non so come si fa...
----------------------------------------
AUTORE: 482
DATA :27/05/2013 - 07:09:17
----------------------------------------
Per svuotarlo piu' in fretta esistono due strade:
1) Leggi un numero maggiore di campioni per volta
2) Effettui la lettura piu' spesso in uno stesso periodo.
Ipotizzando di avere un buffer da 1000 sample/sec:
1) Leggi 1000 campioni ogni secondo
2) Leggi 500 campioni ogni mezzo secondo
----------------------------------------
================================================================================
Riconoscimento vocale
================================================================================
AUTORE: 10802
DATA :13/05/2013 - 11:08:45
----------------------------------------
Ciao a tutti, sono uno studente di un istituto tecnico industriale. Essendo al quinto anno ho deciso di portare alla maturità un software per il riconoscimento vocale che mi permetta ad esempio di accendere e spegnere un led o funzioni simili (si pensi a grandi linee al principio della domotica).
Premessa: Labview lo so usare ma comunque in maniera ristretta. Spero dunque di non essere banale nelle domande che vi faccio.
Il mio progetto è stato sviluppato da un programma precedentemente realizzato che prevedeva il riconoscimento delle note dell'armonica a bocca. Tale software riconosce la frequenza della nota e successivamente mi attiva un uscita. Per il riconoscimento della nota, si misura il valore di frequenza delle prime tre armoniche della nota in questione e poi si stabilisce un range per ogni frequenza inserendo le bande di frequenza in ciascuna funzione "Range and Coerce".
Per quanto riguarda il riconoscimento delle parole non è stato fatto altro che verificare il valore della frequenza delle parole inserendole poi nei range della funzione "Range and Coerce". Per capirci le parole utilizzate per la realizzazione del software sono state "acceso" e "spento". Tuttavia la precisione di questo software è minima in quanto se non si pronucia esattamente la parola con le frequenze misurate inizialmente non funziona nulla; inoltre anche se si pronuncia parole con frequenze simili a quelle interessate si rischia di azionare involontariamente l'usicta. La domanda sorge spontanea, avete qualche consiglio per perfezionare il software? L'approccio a questo tipo di progetto è sbagliato?
Vi ringrazio in anticipo.
----------------------------------------
AUTORE: 43
DATA :13/05/2013 - 13:28:24
----------------------------------------
ciao
Solo una precisazione.
Nel mio vecchio telefonino Nokia 3330, era implementata la funzionalità mediante la quale si poteva associare ai numeri di telefono un suono che veniva registrato direttamente tramite il telefonino stesso. Pronunciando quindi la parola "casa" o "Giuseppe" o altro, automaticamente il numero di telefono associato al suono veniva composto.
Questa funzionalità non è riconoscimento vocale.
Meglio sarebbe dire che si tratta appunto di riconoscimento sonoro.
Ti consiglio di cercare in internet nontanto "voice recognition" o "speech recognition",
ma piuttosto "sound pattern recognition".
Si tratta di un argomento cmq interessante con buone possibilità di applicazione.
Per esempio in domotica l'accensione e spegnimento luci con un battito di mani o uno schiocco di dita può avere senso, oppure applicazioni per non vedenti ecc.
Se ti interessa invece il riconoscimento della parole l'unico sw ben fatto, funzionante, ed abbastanza diffuso è Dragon Naturally speaking.
http://www.dummies.com/how-to/content/h ... works.html
bye
----------------------------------------
AUTORE: 10802
DATA :13/05/2013 - 14:10:36
----------------------------------------
Ti ringrazio per la delucidazione sulla differenza. Per quanto riguarda le applicazione pensavo anche io ad una cosa similare.
Tuttavia, ci sono delle soluzioni in LV che mi permettono di abbinare una determinata parola ad un comando? Basandosi sul programma che ho sviluppato riesco ad ottenere qualcosa oppure devo fare un software completamente differente?
----------------------------------------
AUTORE: 43
DATA :13/05/2013 - 15:47:22
----------------------------------------
Penso che l'approccio sia corretto.
Io mi documenterei con quello che si trova in rete.
Per es.:
http://www.developer.nokia.com/Communit ... dows_Phone
http://www.lma.cnrs-mrs.fr/~kronland/An ... tterns.pdf
http://echoprint.me/how
http://academic.udayton.edu/PhillipMagn ... dpatterns/
Soprattutto mi informerei con i professori che hai a tua disposizione a scuola:
prof. di Fisica , Matematica, ecc.
Avere ben chiaro l'algoritmo da applicare è il 90% della fatica, I problemi implementativi relativi al linguaggio di programmazione sono quasi insignificanti
bye
----------------------------------------
================================================================================
Programmazione a pannelli
================================================================================
AUTORE: 10214
DATA :13/05/2013 - 13:15:54
----------------------------------------
Ciao a tutti, devo fare un VI contenente un grafico XY che mostra l'andamento di dati acquisiti, ma una volta premuto un pulsante il VI mi deve andare su un altro schermata e mostrare altre dati. Il mio problema sta nel fatto che questi due schermate devono lavorare simultaneamente in parallelo.
Mi hanno consigliato di vedere la programmazione a pannelli ma non ho ben capito dove poterla vedere.
Mi potreste dare una mano a capire di cosa si tratta o se magari ho capito male io?
Grazie mille Francesco
----------------------------------------
AUTORE: 129
DATA :13/05/2013 - 16:02:30
----------------------------------------
Programmazione a pannelli? Non penso esista una programmazione a pannelli, ma puoi usare un controllo tab(struttura a schede) e inserisci una csheda per quanti grafici devi implementare.
La struttura tab ha come valore un intero che corrispionde al numero di tab aperta, quindi basta che implementi un pò di codice per legare la tab corrispondente all'evento (pressione di un tasto etc.).
Puoi anche nascondere/visualizzare i controlli(nel tuo caso grafici X,Y) a seconda dell'evento, utilizzando le propietà visible dei controlli (tasto dx sul controllo e create property).
Io l'ho sempre fatto con tab per semplicità.
----------------------------------------
AUTORE: 301
DATA :14/05/2013 - 07:26:55
----------------------------------------
Credo che Ise11 si riferisca ai SubPanel, in questo caso, puoi vedere tra gli esempi del Labview.
Come dice il buon Nicola, però, ci sono altre tecniche per gestire varie "paginate" (vedi i tab....).
Aris
----------------------------------------
AUTORE: 10214
DATA :14/05/2013 - 08:04:11
----------------------------------------
Grazie mille, ma utilizzando i tab, se salto da una tab all'altro questi continuano a lavorare in parallelo oppure lavora solamente il tab che visualizzo e l'altro si ferma?
Scusate se sono domande elementari ma ho iniziato ad utilizzare labview da poco
----------------------------------------
AUTORE: 10214
DATA :14/05/2013 - 08:07:15
----------------------------------------
[quote="nicola":3n1vmhdu]
La struttura tab ha come valore un intero che corrispionde al numero di tab aperta, quindi basta che implementi un pò di codice per legare la tab corrispondente all'evento (pressione di un tasto etc.).
[/quote:3n1vmhdu]
Scusa Nicola, ma cosa intendi per implementare codice, utilizzare qualche oggetto labview oppure scrivere a mano codice tipo for(i=0;i<=100;i++){z=z+1;}?
----------------------------------------
AUTORE: 482
DATA :14/05/2013 - 09:45:59
----------------------------------------
L'oggetto tab è semplicemente un oggetto grafico.
Quindi tu puoi cambiare pagina quante volte vuoi, ma il codice labview continuerà a girare integralmente.(Immaginalo solo come un modo per risparmiare spazio sul pannello frontale).
Per quanto riguarda il codice,non fare confusione. QUando qui parliamo di codice parliamo di codice labVIEW. Non è che perchè non devi scrivere niente, allora non è codice. Il linguaggio utilizzato in labview è il linguaggio G che anzichè essere scritto è disegnato. Tutto li.
Detto questo, sviluppare il codice per gestire una tab vuol dire associare delle azioni agli eventi che avvengono sulla tab.
Per quello che ho capito, pe ril tuo livello di conoscenza di labview e per le tue esigenze, limitati a piazzare il tab per avere piu' pagine, una col grafico e una con gli altri dati e poi sviluppa il codice sotto fregandotene completamente del TAB. Sarà poi l'utente a premerlo quando vuole cambiare pagina senza bisogno di nessun codice.
Il codice diventerà necessario se anzichè far cambiare pagina con le apposite linguette, vorrai farlo con dei pulsanti.
----------------------------------------
AUTORE: 129
DATA :14/05/2013 - 17:09:35
----------------------------------------
[quote="ise11":276by7t1]Grazie mille, ma utilizzando i tab, se salto da una tab all'altro questi continuano a lavorare in parallelo oppure lavora solamente il tab che visualizzo e l'altro si ferma?
Scusate se sono domande elementari ma ho iniziato ad utilizzare labview da poco[/quote:276by7t1]
Si vanno in parallelo, il tab ha una funzione per l'interfaccia utente, tant'è che se piazzi sul tab un controllo già collegato nel diagramma, nel diagramma rimane così com'è.
I miei colleghi mi hanno già anticipato, aggiungo solo che intendevo semplicemente che se usi il tab non devi fare niente di più dal diagramma, se invece lo fai con altri modi devi mettere nel diagramma codice (inteso come codice labview, quindi blocchetti etc...).
----------------------------------------
================================================================================
interpolazione segnali
================================================================================
AUTORE: 10214
DATA :17/05/2013 - 15:14:46
----------------------------------------
Ciao, volevo una delucidazione.
Io ho 4 segnali che leggo e salvo in un file, dopo altre operazioni questi dati li devo leggere ed interpolare per madarli in un grafico XY.
Ho un pochino cercato ed ho visto che esiste la funzione di interpolazione 2D alla quale mi sembra di aver capito che li vanno passati 2 array 2d e lui restituisce l'array interpolato.
Le mi domande sono due:
1. Sono obbligato a mettere quello che leggo negli array per interpolare?
2. Siccome ho 4 segnali e quella funzione in input ne vuole due posso interpolare parallelamente i segnali 1-2 e 3-4 e le risultanti interpolarle fra loro?
Ciao
Francesco
----------------------------------------
AUTORE: 1078
DATA :20/05/2013 - 10:58:27
----------------------------------------
[quote="ise11":21j6qcyk]
Le mi domande sono due:
1. Sono obbligato a mettere quello che leggo negli array per interpolare?
2. Siccome ho 4 segnali e quella funzione in input ne vuole due posso interpolare parallelamente i segnali 1-2 e 3-4 e le risultanti interpolarle fra loro?
[/quote:21j6qcyk]
Ciao Francesco,
1. Si.
2. Si.
Comunque in casi di questo tipo, la cosa migliore da fare è provare....!
Buon lavoro.
----------------------------------------
AUTORE: 10214
DATA :27/05/2013 - 23:13:01
----------------------------------------
Sono 4 giorni che smatto
vediamo se mi potete aiutare e darmi una risposta a questa domanda che è ancora più a monte, come faccio a trasformare un segnale preso da un DAQ in array da utilizzare per l'interpolazione???
HELP PLEASE
----------------------------------------
AUTORE: 482
DATA :28/05/2013 - 07:15:58
----------------------------------------
Innanzituttto non so cosa usi ma NON UTILIZZARE GLI EXPRESS VI.
Poi l'uscita dal modulo di acquisizione DAQ è configurabile, puoi selezionare un uscita di tipo waveform o di tipo array.
Detto questo, la tua domanda iniziale non mi è chiara.
Hai 4 segnali che vuoi interpolare e mandare in un grafico XY ma:
1)cosa vuoi mettere nelle Y?
2)che tipo di interpolazione vuoi fare e perchè?
----------------------------------------
AUTORE: 10214
DATA :28/05/2013 - 07:46:31
----------------------------------------
Praticamente io ho 4 cicli respiratori e ne devo ottenere 1 interpolandoli fra loro.
Ecco cosa devo fare.
----------------------------------------
AUTORE: 482
DATA :29/05/2013 - 07:13:47
----------------------------------------
Occhei, quindi in Y metterai il tempo giusto?
Quindi hai già le risposte che ti servono.
Siccome nel primo post chiedevi:
[quote:158lqgv8]1. Sono obbligato a mettere quello che leggo negli array per interpolare?[/quote:158lqgv8]
Beh non necessariamente.
Ad esempio potresti punto per punto, fare la media(o un qualche altro calcolo matematico) dei 4 valori man mano che li acquisisci.
Quindi di volta in volta avresti l'accoppiata X (la media) e Y(l'istante in cui hai acquisito) e man mano vai a piazzarli nel grafico.
----------------------------------------
================================================================================
Programmare un PIC
================================================================================
AUTORE: 10806
DATA :19/05/2013 - 09:38:59
----------------------------------------
Ciao, di qui sono nuovo, sto incominciando ad avvicinarmi sempre più a labview. Ho cercato in moltissimi siti argomenti riguardanti la programmazione dei PIC micro con, appunto, labview..ma nulla, non riesco a comprendere come si faccia una volta creato il programma ad "esportarlo" su un chip. Essendo una novità questo campo per me è molto difficile comprendere termini...parlano di USB driver, visa. Sareste così gentili da aiutarmi a capirci un qualcosa? sono disperato xD io ho sempre usato labview con una scheda di aquisizione dati collegata al pc e li "analizzavo" oppure creare un programmino..ma come esportarlo su un chip?
buona giornata a tutti
spero in vostre risposte
----------------------------------------
AUTORE: 301
DATA :20/05/2013 - 07:11:43
----------------------------------------
Buongiono,
bèh, programmare un PIC con il Labview.....magari!
Non è per nulla facile (sempre che sia possibile), di sicuro ti servirebbe il C generator (tool a pagamento), ma anche a quel punto dovresti andarti a vedere il codice generato per fargli i fiocchetti.
Un po di tempo fa, se guardi nel forum, è nato un progetto per una libreria per scrivere in labview del codice per Arduino.
Quello che chiedi tu (driver VISA, ecc.), credo che sia per "comunicare" con un PIC programmato che comunichi via seriale, ma quella è un'altra storia.....
Aris
----------------------------------------
AUTORE: 482
DATA :20/05/2013 - 07:12:29
----------------------------------------
Che io sappia non esiste modo di programmare un PIC con labview.
Esistono die tool per interfacciare labview con dei pic,senza scaricare il codice a bordo del pic, ma semplicemente usando il PIC come scheda di acquisizione.
L'unico tool dic ui sono venuto a conoscenza tramite il forum, che permette di programmare ARDUINO con labview scaricando il codice a bordo, comporta l'utilizzo di un alibreria specifica di conversione da labview a C che costa qualcosa come 10000 e passa euro.
QUindi per me è come se non esistesse
----------------------------------------
AUTORE: 10806
DATA :20/05/2013 - 07:38:45
----------------------------------------
Buongiorno:) Grazie mille per le risposte! Ma quindi lo uso solamente per acquisizione ed elaborazione dei dati attraverso una scheda aquisizione e il pc ? Oppure Devo sempre avere un pc collegato al mio "robot" per farlo funzionare..?
----------------------------------------
AUTORE: 1078
DATA :20/05/2013 - 08:12:57
----------------------------------------
Normalmente si programma il PIC, usando i tools di programmazione messi a disposizione dal costruttore del pic. Il codice è solitamente fatto in C. Per paralre poi con il PC e un software sviluppato in Labview, devi creare un protocollo di comunicazione e avere un'interfaccia di comunicazione (che sia UART o LAN o USB o quello che preferisci).
Lo scenario timpico è appunto questo: il software sviluppato in Labview girerà su PC e comunicherà con la tua scheda tramite la tua interfaccia di comunicazione. Il PIC avrà a bordo il suo firmware (sviluppato in C) e comunicherà con il PC con la medesima interfaccia di comunicazione.
Vedi tu cosa devi implementare per realizzare una macchina di questo tipo!
Buon lavoro.
----------------------------------------
AUTORE: 482
DATA :20/05/2013 - 10:41:00
----------------------------------------
[quote="tommy1105":q63chsp3]Oppure Devo sempre avere un pc collegato al mio "robot" per farlo funzionare..?[/quote:q63chsp3]
esattamente.
----------------------------------------
AUTORE: 1078
DATA :20/05/2013 - 10:55:16
----------------------------------------
[quote="tommy1105":14ff8d8y]Buongiorno:) ... Devo sempre avere un pc collegato al mio "robot" per farlo funzionare..?[/quote:14ff8d8y]
Dipende da com'è fatto il FW a bordo del tuo Robot. Se è in grado di "ragionare" da solo potrebbe avere bisogno solo di una mappa di punti, che normalmente sono movimenti, che vengono scaricati (attraverso interfaccia di comunicazione) a bordo (magri su una flash) e che il pic raccoglie ed esegue....
In uno scenario di questo tipo il pic e quindi il robot potrebbe essere autonomo una volta scaricata la mappa dei "comportamenti" che questo deve avere.
----------------------------------------
AUTORE: 4
DATA :20/05/2013 - 10:58:54
----------------------------------------
Come dicevano giustamente gli altri esistono due strade:
- avere il PIC controllato da PC (quindi sempre connesso) in questo caso ci sono molti modi e molte lib in giro (diverse lib per arduino di cui una creata proprio da NI che trovi qui https://decibel.ni.com/content/groups/l ... or-arduino)
- compilare il codice labview in C e poi compilarlo per il tuo PIC, in questo modo il PIC sarebbe autonomo (non gli servirebbe il PC come master. In questo caso dovresti usare un tool di NI http://sine.ni.com/nips/cds/view/p/lang/it/nid/209852. Questo tool ha però diverse limitazioni (tecniche\ di supporto ai diversi micro \ e di costo...) e ho l'impressione che anche NI non ci stia investendo moltissimo, mi pare sia "fermo" da almeno 4 anni come sviluppi.
Visto che ci siamo sul tema invece vi segnalo una cosina interessante, pare che NI e Xlinix stiano sviluppando la tecnologia per permettere di programmare questo micro http://www.xilinx.com/content/xilinx/en ... -7000.html interamente con LabVIEW, e io non vedo l'ora di metterci sopra le mani
Ciao
----------------------------------------
AUTORE: 10806
DATA :20/05/2013 - 16:05:46
----------------------------------------
[quote="Ricky":25lxkzb7]Normalmente si programma il PIC, usando i tools di programmazione messi a disposizione dal costruttore del pic. Il codice è solitamente fatto in C. Per paralre poi con il PC e un software sviluppato in Labview, devi creare un protocollo di comunicazione e avere un'interfaccia di comunicazione (che sia UART o LAN o USB o quello che preferisci).
Lo scenario timpico è appunto questo: il software sviluppato in Labview girerà su PC e comunicherà con la tua scheda tramite la tua interfaccia di comunicazione. Il PIC avrà a bordo il suo firmware (sviluppato in C) e comunicherà con il PC con la medesima interfaccia di comunicazione.
Vedi tu cosa devi implementare per realizzare una macchina di questo tipo!
Buon lavoro.[/quote:25lxkzb7]
Ciao Ricky,
ringrazio ancora tutti per le gentili risposte, sfrutto questa occasione il più possibile per cercare di capirci qualcosa...io ho una sufficiente conoscenza del linguaggio di programmazione in c e in labVIEW, e facendo esperienza non posso far altro che migliorare. Ma ora vorrei provare a spingermi oltre: provare a fare un piccolo progetto.
Creare questa interfaccia di comunicazione UART o LAN o USB è molto difficile ? dove protrei trovare materiale da seguire per riuscire a costruirla (o, se già esistono,copiarle)? Arduino come accennava "ale914" è una scheda aquisizione dati che collego con cavo usb al pc? scusa per tutte le domande ma sono ignorante in materia e sto cercando di capire qualcosa.
----------------------------------------
================================================================================
Labview 2009
================================================================================
AUTORE: 10807
DATA :22/05/2013 - 10:52:47
----------------------------------------
Funziona Labview 2009 su windows 7 64 bit ?
grazie
----------------------------------------
AUTORE: 482
DATA :22/05/2013 - 11:08:37
----------------------------------------
yes! lo uso in questo momento.
----------------------------------------
AUTORE: 10807
DATA :22/05/2013 - 14:54:14
----------------------------------------
anche se è la versione 32 bit di labview 2009 funziona comunque senza problemi su windows 7 64 bit ?
grazie
Enrico
----------------------------------------
AUTORE: 482
DATA :22/05/2013 - 14:57:34
----------------------------------------
esattamente.
L'unico "problema" che ho avuto è che ho dovuto modificare delle impostazioni odbc in alcuni programmi che utilizzavano i collegamenti con access.
----------------------------------------
================================================================================
Sfasamento tra segnali con CrossCorrelazione.
================================================================================
AUTORE: 10795
DATA :22/05/2013 - 21:59:46
----------------------------------------
Salve a tutti , inserisco questo post per avere qualche parere su un procedimento che sto utilizzando per valutare il delay tra due segnali con la tecnica di cross-correlazione (CC). Tale tecnica dice che dato il grafico della funzione di CC tra due segnali , il valore temporale situato in corrispondenza del picco di massima ampiezza da lo sfasamento tra i due segnali (vedere allegato per maggiore chiarezza).
Con Labview , il CrossCorrelation.vi restituisce in out un array. Per valutare il valore temporale del picco massimo ho agito così : ho inviato l'array nel vi ArrayMax&Min e ho estratto il max index , dopodichè ho moltiplicato tale valore per il dt (uguale per entrambi i segnali , poichè campionati con lo stesso sample rate) dato dal vi GetWaveformComponents. Credete che il delay dato come risultato sia attendibile , o sto sbagliando approccio? Grazie per le risposte!
----------------------------------------
AUTORE: 10795
DATA :29/05/2013 - 22:28:23
----------------------------------------
Ragazzi ho risolto con l'algoritmo , inviando gli impulsi all'oscilloscopio ho potuto verificare che risultano sfasati di 2,7 us e con LV ottengo lo stesso risultato. Riporto in allegato il vi in cui simulo le stesse forme d'onda ottenute dal generatore di segnale esterno durante il test. Ora il mio problema è diventato un altro : come potete vedere dal vi , ad ogni ciclo di while vado a visualizzare il delay sul front panel , vorrei però poter visualizzare anche l'errore commesso. Utilizzo il blocchetto che da in output la deviazione standard , però ad ogni ciclo ottengo NaN , perchè? Se ho commesso qualche imprecisione potreste illuminarmi? Grazie per le risposte !
----------------------------------------
AUTORE: 301
DATA :30/05/2013 - 07:00:20
----------------------------------------
Bèh, cerchi di ottenere la STD dev di un solo valore (che hai trasformato in array, me sempre un valore rimane....).
Aris
----------------------------------------
AUTORE: 10795
DATA :30/05/2013 - 20:51:19
----------------------------------------
Ciao Aris
grazie della risposta...beh avevo anche provato a sfruttare l'indexing del while per costruirmi un array all'esterno e poi calcolarmi la STD su tale array ma non ottengo alcun valore , all'oscilloscopio ottenevo invece un errore dell'ordine dei nanosecondi...
----------------------------------------
AUTORE: 301
DATA :31/05/2013 - 09:04:39
----------------------------------------
Se ti basta trovare la STdev su 3 punti "mobili", puoi fare una cosa di questo tipo.
Ho inserito la parte di codice segnata solo per far variare la STdev, avendo delle onde simulate, ovviamente, avresti 0 (valori perfetti).
Aris
----------------------------------------
AUTORE: 10795
DATA :03/06/2013 - 10:35:32
----------------------------------------
Grazie mille Aris
ho testato la soluzione con gli shift registers che mi hai fornito , togliendo la parte che hai aggiunto per creare un pò di rumore , non con dei segnali simulati ma con delle onde ottenute da generatore di segnale esterno. In effetti ottengo finalmente un valore di deviazione standard , non è uguale a quella ottenuta sull'oscilloscopio , lì ottenevo un errore dell'ordine dei nanosecondi , con questo algoritmo ne ottengo uno dell'ordine di 10^-7 , il risultato è stato un incremento di incertezza di due ordini ma comunque c'è stato sicuramente un buon passo avanti. Grazie ancora
----------------------------------------
================================================================================
Consigli programmazione LabView RealTime
================================================================================
AUTORE: 10809
DATA :24/05/2013 - 15:12:06
----------------------------------------
Salve, sono novello nella progettazione labview FPGA e REALTIME,
Vorrei gentilmente chiedere alcuni consigli in modo da avviarmi in modo corretto col mio progetto:
In parole povere tramite la Compact RIO NI 9024 e i moduli: NI 9205 (per misurare tensioni), NI 9214(per misurare temp), modulo GPS SEA, devo prendere alcune misure da sensori situati in una vettura elettrica, la CRIO si dovrà avviare e spegnere con la vettura.
Ho realizzato un FPGA per avviare i 3 moduli, ma ho dubbi sulla scelta della tipologia dei cicli e frequenza: (allegato foto FPGA)
ho realizzato altri 3 VI, uno a modulo, ognuno prende i dati, li visualizza e li salva in un file TDMS e in questo caso non so se conviene dividere tutto in cicli deterministici e come. (foto allegate dei 3 vi)
Infine dubbio più [color=#FF80BF:1dhmzf9c]IMPORTANTE[/color:1dhmzf9c], una volta che avvio i miei VI in modo automatico dentro la compact, quando spegnerò la vettura, si spegnerò anche la compact, allora mi chiedo, i cicli si chiuderanno in automatico o hanno bisogno di dei interrupt? e come fare? ad esempio mandare un comando alla compact prima di spegnere la vettura per chiudere i cicli? e qualè il modo migliore? potete farmi un esempio? grazie mille
----------------------------------------
AUTORE: 660
DATA :27/05/2013 - 07:42:24
----------------------------------------
... mi sa che manca qualcosa...
Max
----------------------------------------
AUTORE: 927
DATA :29/05/2013 - 09:35:37
----------------------------------------
Intanto posso rispondere al dubbio importante... Se togli la corrente al cRIO tutti i cicli FPGA e RT si fermano di colpo, e quando lo riaccendi riparte da zero, come come se staccassi la corrente a un PC. Il cRIO è più robusto di un PC, non rischi che ti si rovini il disco o si corrompa il sistema operativo, ma l'arresto improvviso potrebbe comunque darti dei problemi, dipende da cosa fa il programma; ad esempio le scritture su file TDMS potrebbero essere interrotte a metà, per cui ti ritrovi dati incomprensibili in fondo ai file.
----------------------------------------
================================================================================
Aprire un file .ravi
================================================================================
AUTORE: 10109
DATA :28/05/2013 - 21:43:06
----------------------------------------
Ciao a tutti,
Sto imparando a muovermi in LabView e devo fare un progetto per l'università. Praticamente dovrei riuscire ad aprire un video .ravi e leggere i valori della matrice. Ho cercato un po' su come si dovrebbe fare per dare l'input .ravi ma non ho trovato niente a riguardo..avete qualche consiglio?
Grazie mille,
Lavinia
----------------------------------------
AUTORE: 301
DATA :29/05/2013 - 07:17:07
----------------------------------------
Mi sembra di capire che questo tipo di file venga da una termocamera.
Hai provato a vedere se sul sito del produttore sono presenti librerie per il Labview?
Hai la possibilità di agire direttamente sulla termocamera o devi per forza passare per il file?
Aris
----------------------------------------
AUTORE: 10109
DATA :29/05/2013 - 13:14:33
----------------------------------------
Si, si tratta di un video proveniente da una termocamera.
Il produttore mi ha fornito queste due librerie: dir.mnu e _dir_IR-Imager_Controls.mnu che ho installato nel mio LabView però da quello che sono riuscita a capire (essendo molto all'inizio) che con queste due librerie riesco a far partire la termocamera. Purtroppo non posso lavorare direttamente con termocamera perchè c'è l'ha l'università e l'unica cosa fornita dal mio prof è stato un filmato .ravi su cui dovrei lavorarci. Quindi dovrei direttamente passare il file. Allego anche lo screen di quello che riesco a vedere nella Functions -> Istrumenti I/O cosi magari diventa più chiaro per quelli che se ne intendono di più
----------------------------------------
AUTORE: 301
DATA :29/05/2013 - 13:25:50
----------------------------------------
Chiaro.....
In quella libreria, credo ci siano delle funzioni (IR mager?!?) per caricare e lavorare sui files di output della termocamera.
Prova a vedere cosa ti viene proposto negli esempi e cerca di studiarti un po le varie funzioni della libreria....
Aris
----------------------------------------
AUTORE: 10109
DATA :29/05/2013 - 13:40:05
----------------------------------------
Ho spostato tutti gli esempi forniti dall'azienda nella cartella instr.lib di labview (spero di aver fatto bene) perchè non riusciva a caricare niente quando volevo aprirli e finalmente riesco a vederli... il problema è che tutti gli esempi e tutti i commenti sono in tedesco... mi divertirò un sacco cercando di capire cosa hanno fatto lì
Cmq grazie mille, appena riesco a capire qualcosina lo scrivo
----------------------------------------
AUTORE: 10901
DATA :20/03/2014 - 10:07:10
----------------------------------------
This might be the issue with the extension you try to stream. As the video is from your camera, the extension would be a different one than the extensions that the computer supports. So check the extension and convert it to the one which system supports and try loading the same.
CHrIS
__________________-
[url=http://www.windowslivemailtech.com:2enj1id3]windows live mail tech[/url:2enj1id3]
----------------------------------------
================================================================================
.tdms e relativi .index
================================================================================
AUTORE: 3428
DATA :05/06/2013 - 15:26:32
----------------------------------------
Ciao a tutti,
sto salvando i miei dati in formato tdms, sicuramente molto più immediati e completi degli spreadsheet ma ogni volta che creo un tdms automaticamente viene creato un ulteriore file che rispecchia il nome del tdms ma ha come estensione .index e occupa sempre 1kb.
Credo che sia un file di appoggio che facilita Diadem nella lettura del tdms o non so e neanche mi interessa sta di fatto che se lo elimino alla prossima riapertura del tdms Diadem lo ricrea.
Posso disabilitare questa creazione per fare pulizia nella cartella dei tdms?
(posso fare anche una vi che mi cerca *.index dalla cartella e li elimina... ma se posso utilizzare una spunta o un'opzione mi sembra la scelta migliore...)
Grazie
----------------------------------------
AUTORE: 43
DATA :05/06/2013 - 16:21:42
----------------------------------------
ciao renaso
Non uso e quindi non conosco Diadem, ma ho trovato questa discussione nel forum NI, che sembra tratti la questione che hai posto.
http://forums.ni.com/t5/LabVIEW/tdms-fi ... -p/2335872
La chiave è utilizzare le "TDMS Advacend API".
Ma appena utilizzerai i tuoi file con Diadem, i files _index verranno comunque creati.
bye
----------------------------------------
AUTORE: 301
DATA :05/06/2013 - 16:26:39
----------------------------------------
[url:f0atcq6a]http://www.ni.com/white-paper/5696/en[/url:f0atcq6a]
Vedi questo articolo (verso la fine):
" [i:f0atcq6a]If a National Instruments application opens a TDMS file without an index file, the index file is automatically created. If a National Instruments application such as LabVIEW or LabVIEW Windows/CVI writes a TDMS file, the index file and the main file are created at the same time.[/i:f0atcq6a]"
Purtroppo, nulla da fare!
Aris
----------------------------------------
AUTORE: 301
DATA :05/06/2013 - 16:29:50
----------------------------------------
Scusa Paracarro,abbiamo postato assieme......
In ogni caso, credo che se Renaso utilizza Diadem (a National Instruments application)o l'importatore per excel, il file venga rigenerato comunque.....
Aris
----------------------------------------
================================================================================
Acquisizione di una porzione di segnale
================================================================================
AUTORE: 10795
DATA :11/06/2013 - 17:13:13
----------------------------------------
Salve a tutti , vorrei chiedervi qualche spiegazione e consiglio riguardo un procedimento di acquisizione di un segnale analogico. Più o meno ho in mente come agire ma non sono ancora riuscito ad ottenere i risultati attesi. Il punto è che avvio in maniera continua un'acquisizione multichannel però i segnali acquisiti sono costituiti per circa l'80% da componenti indesiderate di rumore. A me interesserebbe acquisire solo la parte utile , caratterizzata da una serie di picchi , trascurando quindi il rumore. Avevo pensato di inserire nel sistema di acquisizione un post-trigger e un pre-trigger tale da catturare solo l'evento di mio interesse in base al superamento della soglia di threshold. Ho però diversi dubbi nel settaggio tipo :
- Cosa utilizzare come sources di post/pre-trigger? I segnali stessi in modo da autotriggerare? O segnali esterni?
- Mi viene chiesto quanti samples prelevare pretrigger ma quindi non devo più acquisire in continuos ma in finite?
- E' corretto impostare lo slope di post-trigger come rising e quello di pre-trigger come falling?
Se può servire , la tipica soglia di trigger del fenomeno che sto monitorando è di 0.05V. Vi sarei grato di qualche input di sblocco
grazie in anticipo!
----------------------------------------
AUTORE: 660
DATA :12/06/2013 - 08:34:30
----------------------------------------
ciao,
guarda se questo può esserti di aiuto:
[url:165xdal1]http://www.ni.com/white-paper/4329/en[/url:165xdal1]
in generale come segnale di trigger puoi usare sia il segnale stesso con soglia analogica o un altro segnale, ad esempio digitale, devi vedere cosa ti consente di utilizzare la tua scheda... non tutti vanno bene...
i samples in pretrigger ti servono per poter avere anche qualche campione prima del tuo trigger...
rising e/o falling dipende dal tipo di segnale che usi come trigger e da dove si trovano i campioni da leggere rispetto al fronte...
Max
----------------------------------------
================================================================================
Problemi connessione remota a db SQL
================================================================================
AUTORE: 10814
DATA :12/06/2013 - 17:44:53
----------------------------------------
Ciao, ho una macchina server su cui ho installato il "SQL server 2008 R2 express". Sulla stessa macchina ho configurato una connessione al server SQL via ODBC ed ho sviluppato un vi che utilizza le "LABSQL ADO function" e che via ODBC comunica perfettamente con il database.
Il problema è quando mi connetto al database da un PC remoto. Anche sul PC remoto ho configurato la connessione via ODBC. Lancio lo stesso vi descritto sopra, esegue correttamente la ADO Connection create e la ADO connection Open, ma la SQL Execute ritorna un errore sconosciuto: -2147217865. Come se non trovasse la tabella su cui sto facendo la query.
Qualcuno ha qualche idea? Io non ho esperienza con i database e non so che prove fare. Oppure non usare l'ODBC per la connessione.
Grazie, ciao.
----------------------------------------
AUTORE: 1078
DATA :13/06/2013 - 07:46:47
----------------------------------------
Ciao LoGatto,
L'errore che hai indicato è un errore di SQL Serve. Daquanto si può dedurre dalla documentazione SQL Server [url:1gra1xyp]http://support.microsoft.com/kb/966151/it[/url:1gra1xyp] sembrerebbe che non hai le autorizzazioni necessarie per accedere a quell'oggetto (tabella). Quindi dovresti verificare con che account stai effettuando il log-in nella stringa di connessione dal lato client e inserire i parametri corretti. Ultimo trick, controlla che SQL server non sia stato configurato con accesso da windows...
Buon lavoro.
----------------------------------------
AUTORE: 482
DATA :13/06/2013 - 09:12:45
----------------------------------------
Non so se è il tuo caso e non ho guardato i dettagli dell'errore, ma ti chiedo:
I pc che usi hanno tutti la stessa architettura?
Perchè io ho avuto problemi legati al driver di windows per sqlserver che è diverso tra i SO a 32 e 64 bit.
Nel caso dei 64 bit devi dirgli manualmente un percorso specifico da cui caricare i driver senno' da errore.
----------------------------------------
================================================================================
Colore di sfondo di un "table control"
================================================================================
AUTORE: 822
DATA :13/06/2013 - 13:45:42
----------------------------------------
Ciao!
In un "table control" posso scegliere il colore delle singole celle, in modo da poter evidenziarne solo qualcuna con lo sfondo rosso?
----------------------------------------
AUTORE: 129
DATA :14/06/2013 - 00:03:14
----------------------------------------
Ciao, devi creare una property "active cell" (tasto dx sul controllo table e create/property/active cell) dove scrivi riga e colonna della cella che vuoi colorare, quindi una property "CellBGColor" (per crearla basta che vai sulla property active cell sul Block diagram e allunghi la casella verso il basso per scoprire la property cellbgcolor) con cui dichiari il colore che vuoi.
Ti allego l'esempio
----------------------------------------
AUTORE: 822
DATA :14/06/2013 - 07:28:52
----------------------------------------
Grazie mille.
Alla fine sono riuscito a trovare la soluzione ed è esattamente quello che mi hai consigliato.
Ciao.
----------------------------------------
AUTORE: 43
DATA :14/06/2013 - 13:00:38
----------------------------------------
[quote="giuseppe.l74":1x8n9gcz]Ciao!
In un "table control" posso scegliere il colore delle singole celle, in modo da poter evidenziarne solo qualcuna con lo sfondo rosso?[/quote:1x8n9gcz]
Vorrei ricordarti gli indici "magici" -1 e -2
http://digital.ni.com/public.nsf/allkb/ ... AF0063FFD8
bye
----------------------------------------
AUTORE: 822
DATA :14/06/2013 - 13:11:50
----------------------------------------
[quote="paracarro":grsgntsn]
Vorrei ricordarti gli indici "magici" -1 e -2
http://digital.ni.com/public.nsf/allkb/ ... AF0063FFD8
bye[/quote:grsgntsn]
Grazie, letto.
Ciao.
----------------------------------------
================================================================================
Problema con Global Variable
================================================================================
AUTORE: 9909
DATA :13/06/2013 - 14:50:41
----------------------------------------
Salve a tutti ,
ho iniziato da poco a sviluppare con Labview e dopo aver letto un po'
di manualistica mi sono arenato sulle 'Variabili Globali'.
Sto cercando di creare due VI indipendenti (sulla stessa macchina) i quali devono cambiare dati tra di loro (un boolen,string o integer).
Ho eseguito i seguenti passi :
1) creazione primo VI 'primo.vi'
2) aggiunta variabile globale in primo.vi
3) doppio click su variabile globale
4) aggiunta dei control/indicators nel GlobalFrontPanel.vi
5) salvataggio del GlobalFrontPanel.vi
6) all'interno del VI primo.vi , click sulla variabile gobale, select item ,ho selezionato l'oggetto istanziato nel GlobalFrontPanel.vi
7) creo il secondo VI secondo.vi
8- istanzio una variabile globale
9) ..... ed ora cosa devo fare .....
se seguo i manuali non ottengo nulla...
QUALCUNO MI PUO' AIUTARE
Grazie
Mitia64
----------------------------------------
AUTORE: 129
DATA :14/06/2013 - 00:47:08
----------------------------------------
Le variabili globali ti possono dare race condition e quindi te li sconsiglio vivamente.
Il metodo più semplice ma comunque efficace è quello di utilizzare functional global VI (FGV).
Ti allego un esempio con una FGV che scrive su un vi1 e legge su un vi2 un numeric.
Esegui i vi e guarda il comportamento.
inserisci all'interno dei due vi il codice sullo scrittore (es. risultato da acuisizione) e sul lettore (visualizzazione o storage).
Se non hai esigenze di vi separati puoi anche creare un unico vi con i due while loop (scrittore/lettore).
Dai un occhiata ai design Pattern (File/new/template..)
Ciao,
Nicola
----------------------------------------
AUTORE: 482
DATA :14/06/2013 - 07:24:36
----------------------------------------
Personalmente non sono cosi' talebano come nicola
Si è vero le globali hanno alcuni difetti, ma soprattutto se stai imparando vanno benissimo per fare quello che devi fare poi imparerai ad usare altri metodi.
Detto questo, credo che il tuo problema sia nel punto 8.
Che intendi con "instanzio una variabile"?
Per fare la cosa corretta dovresti inserire un subvi e quando lo scegli scegli il vi che contiene le globali.
Se non stai facendo quello stai facendo qualcosa di sbagliato.
----------------------------------------
AUTORE: 43
DATA :14/06/2013 - 12:47:33
----------------------------------------
[quote="mitia64":2tovgzz9]...
6) all'interno del VI primo.vi , click sulla variabile gobale, select item ,ho selezionato l'oggetto istanziato nel GlobalFrontPanel.vi
7) creo il secondo VI secondo.vi
8- istanzio una variabile globale
9) ..... ed ora cosa devo fare .....
se seguo i manuali non ottengo nulla...
QUALCUNO MI PUO' AIUTARE
Grazie
Mitia64[/quote:2tovgzz9]
Ci sonoi almeno 3 metodi per referenziare la stessa Globale in altri VI:
1) Drag & Drop. Accostare i diagrammi aperti dei 2 VI che hai creato.
Clickare sulla globale del primo VI e tenendo premuto il bottone del mouse, trascinare la globale nel secondo VI Rilasciare il bottone del mouse
2) Cut & Paste Clickare sulla variabile globale referenziata nel diagramma del primo VI. Il bordo diventerà tratteggiato.
Premere Ctrl+C tenendo presente che il diagramma deve essere in primo piano (davanti a tutte le finestre aperte). Aprire il diagramma del secondo VI. Premere Ctrl+V.
3) Insert Premere il tasto destro del mouse nel diagramma del secondo VI. scegliere dal menu che apparirà "Insert VI...". nell'ulteriore popup scegliere il percorso ed il file della Variabile globale.
Vorrei farti un piccolo appunto: per evitare confusioni è meglio usare dei termini tecnici appropriati.
La viariabile Globale non è un Oggetto.
Se si vuole parlare di "Variabili", meglio usare termini come "dichiarazione di una var", "allocazione...", "puntare o referenziare ad una variabile".
Io non userei il termine "istanziare" riferito ad una variabile perchè viene normalmente utilizzato per definire la "allocazione/definizione" di un oggetto appartenente ad una specifica classe (non tipo di dato).
bye
----------------------------------------
================================================================================
XY GRAPH e apertura file
================================================================================
AUTORE: 10214
DATA :14/06/2013 - 14:39:37
----------------------------------------
Ciao ho due domande da farvi una riferita ad un problema che ho con il grafico XY e una collegata all'apertura dei file .lvm.
Il VI che allego con il relativo file .lvm da testare (inseriti nel .rar), apre il file di misure e dopo averci fatto delle operazioni lo sparo in un grafico XY che mi dovrebbe disegnarlo.
I miei due problemi sono i seguenti:
1. Per far partire il VI correttamente prima di eseguirlo devo preimpostare il path di dov'è il file, come faccio o cosa devo fare per evitare questo? Vorrei mandare in esecuzione il vi che mi chiede di selezionare il file da cui prendere i dati e non prima impostare il path e dopo mandare in esecuzione il VI.
2. Il grafico XY non mi disegna il grafico ma mi mette ad ogni ciclo il punto indicato dalla X e Y che li passo. Ho messo dei grafici waveform per vedere se c'erano problemi con i dati, ma come vedrete i grafici vengono fatti. In altre parole il grafico XY mi mette i punti ma non me li unisce, come faccio a farli unire? Ho pensato che fosse un problema che ad ogni ciclo i dati precedenti venissero persi, per cui ho provato a mettere degli shift register, ma il problema persiste.
Grazie mille per l'aiuto
----------------------------------------
AUTORE: 660
DATA :14/06/2013 - 15:22:47
----------------------------------------
nelle proprietà del blocchetto "build xy graph" devi togliere la spunta a "clear data on each call" che come dice il nome ti cancella i dati ogni volta che lo richiami, ovvero ogni volta che gli inserisci un nuovo punto...
Ciao
Max
----------------------------------------
================================================================================
Creare un contagiri in Labview (7)
================================================================================
AUTORE: 10817
DATA :15/06/2013 - 15:09:34
----------------------------------------
Salve a tutti, sono alle prese con un la creazione di un programmino in labview 7 per creare un contagiri. Ho la registrazione del suono di un motore benzina che da circa 1000 rpm viene portato a 3200 rpm, tenuto a questo livello per circa 10 secondi e poi si fà diminuire il numero di giri. Ho creato la parte di programma (sempre in labview) che mi permette di registrare e salvare il segnale audio, durante l'acquisizione del segnale faccio FFT ma non riesco ne durante la fase di acquisizione (registrazione) e neppure in quella di riproduzione a far visualizzare attraverso il Gauge oppure il Meter l'andamento degli rpm.
Secondo me dovrei sfruttare le frequenze che in questo caso aumentano e diminuiscono per poi ricavare la velocità angolare e in fine gli rpm, ma non riesco a farlo, sperando che il ragionamento sia giusto.
Vi ringrazio per l'aiuto che potreste darmi.
Francesco
----------------------------------------
AUTORE: 645
DATA :17/06/2013 - 20:46:07
----------------------------------------
Ma tu vuoi fare una cosa del tipo:"FFT sul segnale per ricavare le frequenze e in base alle frequenze lette (o magari in base a quella con modulo maggiore) decidi a che velocità sta funzionando il motore e visualizzi questa velocità sul contagiri"?
Se è così potresti decidere una sorta di scala che in base alla frequenza di valore massimo segna sull'indicatore la velocità.
----------------------------------------
AUTORE: 1078
DATA :18/06/2013 - 08:31:23
----------------------------------------
Perchè vuoi farlo tramite la registrazione del suono motore?
A bordo veicoli i dati quali giri motore e altro sono in chiaro e possono essere letti tramite protocollo e presa OBD. Trovi diversi HW a basso costo che ti permettono di interfacciarti con lo standard OBD a bordo veicolo.
----------------------------------------
AUTORE: 10817
DATA :18/06/2013 - 11:41:21
----------------------------------------
Lo devo fare con un suono registrato perchè è la richiesta del progetto ovvero, acquisire il suono (o segnale audio) visualizzarlo nel dominio del tempo, filtrarlo volendo, salvarlo, effettuare le FFT e visualizzare il risultato nel dominio delle frequenze. Io però oltre a ciò vorrei creare un contagiri sfruttando il Gauge o il Meter.
Grazie tante.
----------------------------------------
AUTORE: 10817
DATA :18/06/2013 - 11:58:13
----------------------------------------
[quote="MagicBotolo":35crv9mn]Ma tu vuoi fare una cosa del tipo:"FFT sul segnale per ricavare le frequenze e in base alle frequenze lette (o magari in base a quella con modulo maggiore) decidi a che velocità sta funzionando il motore e visualizzi questa velocità sul contagiri"?
Se è così potresti decidere una sorta di scala che in base alla frequenza di valore massimo segna sull'indicatore la velocità.[/quote:35crv9mn]
Si. Io dovrei essere in grado, se non erro, o durante l'acquisizione (registrazione) oppure dopo il salvataggio (durante la riproduzione), di leggere tutte le varie frequenze, allo stesso tempo calcolare la velocità angolare ω=2Ï€f, ricavare gli rpm, per far vedere come si muove la lancetta del Gauge indicando proprio gli rpm corretti.
Le frequenze li dovrei leggere dal risultato del FFT se non sbaglio ma non ci riesco.
Grazie tante
----------------------------------------
AUTORE: 10901
DATA :24/10/2014 - 12:28:29
----------------------------------------
I feel the same thing, why you are doing it by recording the sound engine? The
onboard vehicle data such as engine RPM, and more are in the clear and can be read via OBD socket and protocol.
get help from [url=http://www.windows10system.com/windows-10/microsoft-yet-to-announce-the-official-windows-10-release-date/:2u46xjcf]Windows 10 release[/url:2u46xjcf]
----------------------------------------
================================================================================
Aprire finestre multiple
================================================================================
AUTORE: 10818
DATA :17/06/2013 - 12:09:00
----------------------------------------
Ciao a tutti,
in un mio programma utilizzo una vi principale con due tasti, premendo il tasto 1 apro la sub vi 1 e premendo il tasto 2 apro la sub vi 2.
Posso aprire solo una delle sub vi alla volta, e' possibile aprirle contemporaneamente premendo i tasti della vi principale?
In allegato il programma di prova (LabView 7.1).
Un caro saluto, renzo.
----------------------------------------
AUTORE: 43
DATA :17/06/2013 - 12:52:08
----------------------------------------
Ovvio che si, è possibile fare ciò che vuoi.
E' sufficiente mettere nel VI principale due loop. Un loop controlla la pressione di un solo tasto e lancia il SubVI quando premuto.
L'altro loop fa la stessa cosa con il secondo SubVI.
Altre condizioni necessarie affinchè questo semplice approccio funzioni sono:
1) il subVI chiamato, NON deve essere lo stesso per entrambi i tasti oppure deve essere rientrante...
2) i subVI chiamati non devono avere il Front Panel Modale (Vi Properties --> Windows Appearance --> Customize option... Modal (uncheck))
bye
----------------------------------------
================================================================================
Come creare una copia di backup parziale di un db di Access?
================================================================================
AUTORE: 822
DATA :19/06/2013 - 14:31:01
----------------------------------------
Ciao!
Ho bisogno di un consiglio da chi è più sveglio di me
Per salvare i dati della mia applicazione in labview utilizzo un database di Access al quale mi collego in ODBC, per mezzo del "Database connectivity toolkit". Questo DB in breve tempo può diventare molto grande. Io vorrei fare un backup programmato solo di alcuni record di questo db (per esempio al raggiungimento di 1000 record, fare il backup dei primi 500); vorrei cioè fare una copia di questi record su un altro database e cancellarli dal database originale, in modo da non appesantirlo.
Avete un'idea per come potrei farlo?
Grazie
----------------------------------------
AUTORE: 660
DATA :19/06/2013 - 16:56:08
----------------------------------------
non conosco il toolkit per cui non so aiutarti secondo quanto chiedi, però ti posso suggerire un'altra opportunità...
potresti creare un nuovo file, il cui nome lo decidi programmaticamente, ogni 500 o 1000 record salvati, in tal modo non devi manipolare file esistenti per copiare, tagliare, creare, incollare...
è un'idea...
ciao
Max
----------------------------------------
AUTORE: 822
DATA :20/06/2013 - 07:53:07
----------------------------------------
Grazie per il consiglio, ma non va bene. Il toolkit di cui parlo è questo http://sine.ni.com/nips/cds/view/p/lang/it/nid/209060.
Quello che mi suggerisci è ciò che di solito faccio anche io per il bachup dei dati, ma in questo caso non va bene perchè gli ultimi dati raccolti devono rimanere disponibili per ricerche, quindi per snellire il database sono costretto a "spostare" solo i record più vecchi, non posso ripartire da un database completamente vuoto. Stavo pensando magari ad un qualche comando in SQL del tipo select top 500 per poi spostare i record, ma non so se sia la via migliore..
----------------------------------------
================================================================================
problemi da principiante
================================================================================
AUTORE: 10214
DATA :21/06/2013 - 10:43:39
----------------------------------------
Ciao a tutti, scusate se faccio mille domande e metto mille post, ma sono veramente alle prime armi.
Come prima cosa vi chiederei se qualcuno mi può dire dove posso recuperare qualche manuale completo di labview in modo che non vi sfracassi più li zebedei con le mie domande anche banali.
Ecco i miei due problemi, cercherò di essere più chiaro e semplice possibile nella mia spieazione:
1. Io ho un file path dove vado a mettere il path del file lmv che il VI deve leggere; questo non mi si apre in automatico quando premo il run, ma prima devo impostare il path di dove si trova il file e dopo posso dare il run. Io vorrei mandare il VI in run e come prima cosa questo mi apra la schermata di windows che mi permetta di ricercare il file e una volta inserito mi parte il VI. Come si fa?
2. Quello che leggo dal file di misure suddetto, lo inserisco in diversi array ci faccio delle operazioni sopra e poi creo un grafico XY. Il problema è questo apro un file e lui mi crea il grafico correttamente, se senza richiudere il VI apro un'altro file e mando in esecuzione il VI questo mi grafica il file precedente, come se mantenesse in memoria i vecchi dati. Sapere come posso risolvere questo problema?
Grazie mille
Francesco
----------------------------------------
AUTORE: 1078
DATA :21/06/2013 - 11:02:32
----------------------------------------
[quote="ise11":2wctc5sn][...]
Come prima cosa vi chiederei se qualcuno mi può dire dove posso recuperare qualche manuale completo di labview in modo che non vi sfracassi più li zebedei con le mie domande anche banali.
[/quote:2wctc5sn]
Trovi alcuni manuali su amazoon. Non saprei consigliarti su quale scegliere però. Se fossi in te tenderei a sceglierne uno in lingua inglese, in USA labview è più diffuso che in Italia quindi potresti avere una scelta migliore.
[quote="ise11":2wctc5sn][...]
1. Io ho un file path dove vado a mettere il path del file lmv che il VI deve leggere; questo non mi si apre in automatico quando premo il run, ma prima devo impostare il path di dove si trova il file e dopo posso dare il run. Io vorrei mandare il VI in run e come prima cosa questo mi apra la schermata di windows che mi permetta di ricercare il file e una volta inserito mi parte il VI. Come si fa?
[/quote:2wctc5sn]
Ti allego un VI fatto con LV2010SP1 che dovrebbe dimostrarti come usare la File Dialog, che comunque trovi nella [b:2wctc5sn]File I/O Pallet --> Adv Function[/b:2wctc5sn]
[quote="ise11":2wctc5sn][...]
2. Quello che leggo dal file di misure suddetto, lo inserisco in diversi array ci faccio delle operazioni sopra e poi creo un grafico XY. Il problema è questo apro un file e lui mi crea il grafico correttamente, se senza richiudere il VI apro un'altro file e mando in esecuzione il VI questo mi grafica il file precedente, come se mantenesse in memoria i vecchi dati. Sapere come posso risolvere questo problema?
[/quote:2wctc5sn]
Prova ad inviarci il tuo vi così capiamo meglio dove probabilmente c'è l'errore!
Siamo stati tutti principianti, quindi non preoccuparti di rompere gli zebedei....
Buon lavoro.
----------------------------------------
AUTORE: 10214
DATA :21/06/2013 - 13:07:56
----------------------------------------
Grazie mille, ti allego il VI e due file lvm di prova in modo che tu posso capire tutti e due i miei problemi.
1.Se te esegui il VI senza prima aver impostato il path del file, l'elemento di lettura misure ritorna un errore (giustamente); quindi prima devi impostare il path e dopo eseguire il VI
2.Esegui prima il report_1 e vedrai che esce un grafico, senza chiudere il VI cambia il nome del Path del file di origine (report_2) e vedrai che il primo grafico cambia, ma il secondo no. Dopo chiudi il VI riaprilo imposta il path di report_2 e vedrai che il anche il secondo grafico cambia.
Sicuramente il VI non è dei migliori in quanto a performance e pulizia......
----------------------------------------
AUTORE: 1078
DATA :24/06/2013 - 12:53:51
----------------------------------------
[quote="ise11":2i8ujpmb]
1.Se te esegui il VI senza prima aver impostato il path del file, l'elemento di lettura misure ritorna un errore (giustamente); quindi prima devi impostare il path e dopo eseguire il VI
[/quote:2i8ujpmb]
Non capisco il problema. Il comportamento è corretto, se non passi una path deve restituirti un errore. Potresti ovviare, verificando che nel controllo esista una path altrimenti chiederne una e mi sembra di averti già fatto vedere come fare....
[quote="ise11":2i8ujpmb]
2.Esegui prima il report_1 e vedrai che esce un grafico, senza chiudere il VI cambia il nome del Path del file di origine (report_2) e vedrai che il primo grafico cambia, ma il secondo no. Dopo chiudi il VI riaprilo imposta il path di report_2 e vedrai che il anche il secondo grafico cambia.
[/quote:2i8ujpmb]
Il problema che ti si presente è dato dal fatto che non inizializzi gli shift register del primo loop che esegui, quello dove apri il file per intenderci. Vedi il primo grafico cambiare, perche ai dati che hai caricato la pima volta aggiungi quelli della nuova esecuzione, il secondo no cambia perchè facendo delle medie "uccidi" i valori caricati la prima volta.
Spero sia chiaro!
Comunque come consiglio, visto che sei un principiante, cerca di evitare gli express vi.
----------------------------------------
AUTORE: 1078
DATA :24/06/2013 - 13:05:40
----------------------------------------
In allegato il tuo VI con le modifiche ....
----------------------------------------
================================================================================
utente - costruire una Sql Query su DB
================================================================================
AUTORE: 3428
DATA :21/06/2013 - 13:31:46
----------------------------------------
Ciao ragazzi
il venerdì non si inziano le cose quindi chiedo consiglio e inizio lo sviluppo lunedì
Ho creato un database su sql server, mi ci collego tramite un .udl e utilizzo il database toolkit di labview per eseguire query ed le varie insert.
Vorrei provare a sviluppare una sorta di interfaccia per andare a selezionare cosa c'è dentro al DB, in sostanza una maschera che selezionati
tot parametri mi restituisca quello che ho chiesto....
Ad esempio vorrei mettere la possibilità di scegliere oltre che su quale tabella effettuare la query, che colonne selezionare o mettere * per selezionarle tutte, il range della data ecc.
Un editing che mi permetta di effettuare e quindi costruire anche la query (lasciando la possibilità all'utente esperto di scrivere le query direttamente in un controllo stringa)
Avete qualche idea..? Già sviluppato qualcosa di simile? Cosa potrei utilizzare e che tecnica?
Grazie e buon weekend a tutti
----------------------------------------
AUTORE: 482
DATA :21/06/2013 - 14:02:56
----------------------------------------
Io ho già fatto un paio di volte una cosa simile e alla fine ho fatto del gran lavoro sulla manipolazioen delle stringhe.
Utilizzavo menu ring da cui derivavo il contenuto e poi componevo la stringa di volta in volta a formare la stringa SQL che poi davo in pasto al blocchetto di esecuzione SQL.
Inizialmente la selezione dei campi, poi le clausole e poi la visualizzazione del risultato.
E poi ho lasciato la possibilità di inserire manualmente una stringa SQL.
----------------------------------------
AUTORE: 645
DATA :23/06/2013 - 09:39:17
----------------------------------------
Anche io ho provato ad utilizzare caselle di testo per lasciare all'utente esperto la possibilità di inserire la stringa manualmente a ho usato gli elenchi per scegliere i pezzi di query e costruirle un po' alla volta.
----------------------------------------
================================================================================
Tempo impiegato per raggiungere un trigger level
================================================================================
AUTORE: 10795
DATA :21/06/2013 - 14:52:06
----------------------------------------
Salve a tutti
ho due segnali acquisiti in modalità post-trigger , vorrei sapere quanto tempo impiega ognuno di loro a raggiungere la soglia di trigger da me fissata a 0,01 V per poi calcolarne il deltaT. Ho realizzato un vi che mi acquisisce i due segnali , autotriggerandone uno di essi ; una volta in possesso dei segnali utilizzo il blocchetto Transition Measurement in cui fisso come high level 0,01 (così come il mio trigger level) e prendo l'output transition duration , che spero mi dia il tempo impiegato a raggiungere il livello di trigger. Dati i due tempi ne calcolo la differenza e la inserisco in un array , ripeto il tutto varie volte grazie ad un for e alla fine mi calcolo media e dev standard. Non so quanto i risultati del deltaT siano attendibili
riporto in allegato il vi realizzato. Attendo opinioni, correzioni , consigli e critiche se quanto ho fatto è corretto o no
grazie a tutti!
----------------------------------------
================================================================================
Front Panel scrollbar max position
================================================================================
AUTORE: 482
DATA :25/06/2013 - 07:26:03
----------------------------------------
...ma ciao!
ho un VI che faccio girare principalmente su un pc con risoluzione 1280x1024, pero' ogni tanto mi capita di doverlo utilizzare su laptop che consente una risoluzione massima in altezza di 768.
Per questo motivo vorrei mettere al mio VI la scrollbar verticale visibile ma bloccare lo scorrimento in verticale alla coordinata dell'ultimo oggetto che mi interessa.
Che cacchio di proprietà devo usare che non le trovo?!?!??!
Un alternativa è spostare tutti i controlli "nascosti" di fianco anzichè sotto e avrei risolto il problema, ma ormai sono qui e chiedo per puro esercizio
----------------------------------------
AUTORE: 1078
DATA :25/06/2013 - 07:47:42
----------------------------------------
Devi settare la proprietà [b:1bbgaizm]Origin[/b:1bbgaizm] del pane, nel caso tu ne abbia uno solo sarà quello con indice 0, dove si trovano i controlli. L'array dei riferimenti dei Panes contenuti nel tuo FP li trovi partendo dalla proprietà Front Pannel del vi, poi con un'altro property node estrai l'array dei riferimenti.
Spero sia chiaro....
Comunque allego un'immagine.
[attachment=0:1bbgaizm]OriginProperty.png[/attachment:1bbgaizm]
----------------------------------------
AUTORE: 43
DATA :25/06/2013 - 10:57:49
----------------------------------------
[quote="gepponline":17ih9mti]...ma ciao!
ho un VI che faccio girare principalmente su un pc con risoluzione 1280x1024, pero' ogni tanto mi capita di doverlo utilizzare su laptop che consente una risoluzione massima in altezza di 768.
Per questo motivo vorrei mettere al mio VI la scrollbar verticale visibile ma bloccare lo scorrimento in verticale alla coordinata dell'ultimo oggetto che mi interessa.
Che cacchio di proprietà devo usare che non le trovo?!?!??!
Un alternativa è spostare tutti i controlli "nascosti" di fianco anzichè sotto e avrei risolto il problema, ma ormai sono qui e chiedo per puro esercizio
[/quote:17ih9mti]
ciao Geppo.
io ho avuto lo stesso identico problema di recente, ma lo ho affrontato in modo abbastanza diverso.
Il mio Front Panel ha sulla destra dei tasti, alcuni nella parte alta, altri nella parte bassa, con in mezzo un vuoto. No non ti descrivo tutto il FP, ma volevo dirti che suddividendo il mio FP con degli splitter al posto giusto, ancorando gli spiltter dal lato giusto, e "fittando" qaulche controllo nel Pane opportuno, sfruttando il ridimensionando programmatico della finestra il funzione della risoluzione verticale, ho risolto il problema.
bye
----------------------------------------
AUTORE: 482
DATA :25/06/2013 - 14:17:34
----------------------------------------
Grazie Ricky, ma il mio problema non era trovare le coordinate dei miei oggetti ma impostare i limiti alla scrollbar verticale e fare in modo che il FP si ridimensioni SOLO IN VERTICALE in base alla risoluzione.
Paracarro...maledetto, non complicarmi la vita..dovrei farcela anche senza split!
ma come chiedevo inizialmente, dove si trova la proprietà per far visualizzare le scrollbar?
----------------------------------------
AUTORE: 43
DATA :25/06/2013 - 16:33:43
----------------------------------------
[quote="gepponline":2957iv6o]Grazie Ricky, ma il mio problema non era trovare le coordinate dei miei oggetti ma impostare i limiti alla scrollbar verticale e fare in modo che il FP si ridimensioni SOLO IN VERTICALE in base alla risoluzione.
Paracarro...maledetto, non complicarmi la vita..dovrei farcela anche senza split!
ma come chiedevo inizialmente, dove si trova la proprietà per far visualizzare le scrollbar?[/quote:2957iv6o]
Non mi vuoi mai dare soddisfazione!!!!
boh! chissà xkè....
Proprietà del pannello
Panel
sul reference che ne esce metti la proprietà
Pane[]
dall'array che ne ece prendi l'elemento 0 con un indexarray (sicuramente c'è un solo pane dato che non usi splitter)
aquesto punto hai la possibilità di gestire le proprietà
Horizontal Scrollbar visible
Vertical Scrollbar visible
ma attenzione, non è un booleano...
bye
----------------------------------------
AUTORE: 482
DATA :26/06/2013 - 07:16:58
----------------------------------------
Era il passaggio Panes[] che mi mancava
Adesso devo solo ritrovare il VI che avevo fatto per fare il resize in base alla risoluzione dello schermo
----------------------------------------
================================================================================
Labview, arduino e sonda temperatura DS18B20 (principiante)
================================================================================
AUTORE: 10821
DATA :25/06/2013 - 16:18:44
----------------------------------------
Salve a tutti,
come da oggetto sono un principiante nel campo o meglio, ho discreta esperienza con labview, e con arduino ma ma è da poco che ho pensato di metterli insieme.
Ecco il problema, ho una sonda DS18B20 per la temperatura (acquisto incauto lo a ammetto ma mi serviva una sonda waterproof e questa è stata la prima che ho trovato), questa sonda detta anche one wire è digitale, putroppo non riesco a farla leggere da arduino.
Non volendo essere un rompiballe ho prima cercato su internet ed ho trovato varie cose sul sito della labview, tutte molto interessanti ma che purtroppo prevedono "smanettamenti" con l'ide arduino e l'interfaccia per labview cosa che attualmente non riesco ancora a fare.
Esiste un metodo alternativo ?
Grazie per l'aiuto.
----------------------------------------
AUTORE: 645
DATA :27/06/2013 - 07:13:33
----------------------------------------
Hai provato http://www.adrirobot.it/sensori/DS18B20 ... rduino.htm leggendo direttamente la variabile che nel sito associano al display?
----------------------------------------
================================================================================
Programmare una waveform in una motionboard
================================================================================
AUTORE: 482
DATA :27/06/2013 - 09:31:13
----------------------------------------
...ma ciao!
sto cercando di retrazionare un sistema idraulico tramite una motion board.
normalmente quello che farei usnado una scheda normale via software sarebbe quello che allego nello snippet.
Ma avrei il limite di 1ms di update.
Avendo al momento una motion board, per avere il tutto piu performante, dovrei penso scaricar eil tutto a bordo.
Ma come cacchio faccio a scaricare tutta la waveform a bordo della scheda? devo storare i singoli 128 punti della waveform?
----------------------------------------
================================================================================
SPI o I2C?
================================================================================
AUTORE: 10822
DATA :27/06/2013 - 10:37:04
----------------------------------------
Salve a tutti,
sono un ingegnere biomedico.
Scrivo per chiedere delle informazioni generali riguardo a sistemi I2C ed SPI?
Quali possono essere i vantaggi e svantaggi nell'utilizzo di una delle 2?
L'unica cosa che mi è chiara è che con l'I2C riuscirei a minimizzare il numero delle connessioni rispetto all'SPI e questa cosa per il mio focus finale è gia un gran bel vantaggio.
Vorrei avere informazioni riguardo velocità, sicurezza della trasmissione, consumo di energia, complessità e resistenze di pull up.
Grazie e buona giornata
----------------------------------------
================================================================================
Signalexpress
================================================================================
AUTORE: 10822
DATA :27/06/2013 - 10:40:20
----------------------------------------
Salve a tutti,
sto avviandomi all'utilizzo di labview e vorrei avere delle notizie riguardo il software signalexpress, utilizzo possibile, vantaggi, svantaggi, compatibilità.
Grazie mille
----------------------------------------
================================================================================
File di esempio TB3501
================================================================================
AUTORE: 10822
DATA :03/07/2013 - 09:33:55
----------------------------------------
Salve a tutti,
qualcuno avrebbe o saprebbe indicarmi dove potrei trovare file di esempio di codici del modulo per compactRio TB3501 del quale non ho trovato al momento nulla se non la scheda tecnica che adesso vi linko:
http://www.tangentblue.com/products/ind ... cts_id=181
grazie
----------------------------------------
================================================================================
antitrasformata di fourier
================================================================================
AUTORE: 10826
DATA :04/07/2013 - 11:53:21
----------------------------------------
salve a tutti
voglio realizzare in labview un simulatore dell'azione di isolamento acustico di differenti materiali, per farlo ho dovuto ridurre magnitude dopo aver fatto la trasformata di fourier (con il blocco FFT spectrum (mag-phase))del mio segnale audio acquisito. per poter riascoltare l'audio ridotto è necessario che ricostruisca il segnale nel dominio del tempo ma nn so come fare!
----------------------------------------
AUTORE: 43
DATA :05/07/2013 - 10:29:37
----------------------------------------
[quote="nicoletta":wsxss5pu]salve a tutti
voglio realizzare in labview un simulatore dell'azione di isolamento acustico di differenti materiali, per farlo ho dovuto ridurre magnitude dopo aver fatto la trasformata di fourier (con il blocco FFT spectrum (mag-phase))del mio segnale audio acquisito. per poter riascoltare l'audio ridotto è necessario che ricostruisca il segnale nel dominio del tempo ma nn so come fare![/quote:wsxss5pu]
Dovrebbe essere piuttosto semplice
Nella palette nella quale trovi la funzione "FFT":
Functions -> Signal Processing(sig processing) -> Transforms --> FFT
Dovresti trovare anche la funzione "Inverse FFT" che fa al caso tuo.
Ricordo che le funzioni "FFT" e "Inverse FFT" fanno parte della AAL Pro
(Advanced Analysys Library Professional).
Questa libreria non fa parte della versione base di LabVIEW ma è necessaria una delle licenze seguenti per la sua attivazione: Full, Pro, Debug, Student
bye
----------------------------------------
================================================================================
Banchi di Test
================================================================================
AUTORE: 487
DATA :08/07/2013 - 09:02:27
----------------------------------------
Buongiorno a tutti,
avrei bisogno di un consiglio su come strutturare un programma per il controllo di alcuni banchi di test. Il problema è il seguente:ho 2 banchi, per testare dei prodotti, che sono controllati da un unico pc, tramite hardware NI. Vorrei che i due banchi siano indipendenti, in maniera da poter testare cose diverse, e vorrei fare in modo che i programmi di test siano modulabili in maniera tale che se dovessi aggiungere dei test differenti non debba riscrivere il programma. In passato avevo realizzato qualcosa di simile con un eseguibile principale e tanti eseguibili secondari quanti erano i programmi di test. Però in quel caso ogni banco era comandato da un pc dedicato!
Secondo voi qual'è l'architettura migliore da utilizzare?
----------------------------------------
AUTORE: 1078
DATA :08/07/2013 - 15:45:30
----------------------------------------
Ciao Coma,
Forse è il caso di dare un'occhiata a come funziona TestStand. In questo caso potresti realizzare con TestStand delle sequenze in parallelo che gestiscono dallo stesso PC Hw differente per testare UUT differenti.
Se vuoi, anche se molto corposo, potresti crearti il tuo TestStand con Labview. Secondo me il modo migliore per fare una cosa modulare è quella di pensare ad un linguaggio di scripting (file di testo) che dica al tuo banco cosa deve fare, quale hw deve accendere, switchare, controllare etc....
Come strutturare il tutto poi dipende da tante variabili, la tua esperienza in primis.
Buon lavoro comunque!
----------------------------------------
AUTORE: 1078
DATA :08/07/2013 - 15:48:19
----------------------------------------
Scusa... potrebbe esserci un "missunderstanding". Nel messaggio di prima con [b:2o4k389q]esperienza[/b:2o4k389q] non intendevo esperienza nello sviluppare con labview, ma intendevo esperienza nello sviluppare sistemi di questo tipo!
----------------------------------------
AUTORE: 487
DATA :09/07/2013 - 09:48:05
----------------------------------------
Grazie Ricky per la risposta. Forse non ho spiegato bene il problema.
1- l'hardware non è un problema: è il medesimo per entrambi i banchi e non varia da un test all'altro.
2- l'unica differenza nell'esecuzione dei diversi test è il diverso software, cioè quello che io decido di far fare ai banchi e quali dati acquisire dal medesimo hardware
3- le soluzioni potrebbero essere quelle di chiamare dinamicamente i programmi di test oppure di creare tanti eseguibili quanti sono i programmi di test (quest'ultima soluzione è quella che avevo già implementato per un singolo banco!)
4- quello che vorrei (l'ideale per me) è poter gestire i due banchi in maniera indipendente dal medesimo pc, anche se hanno in comune l'hardware.
Ultima cosa: voglio utilizzare LabVIEW e non TestStand.
----------------------------------------
AUTORE: 1078
DATA :11/07/2013 - 07:59:03
----------------------------------------
[quote="coma":2uegbewu]1- l'hardware non è un problema: è il medesimo per entrambi i banchi e non varia da un test all'altro.[/quote:2uegbewu]
Cosa intendi per "medesimo" per entrambi i banchi? Ti faccio un esempio per capirci: hai due Multimetri Agilent, oppure hai un solo Multimetro che sarà collegato ad entrambe le UUT?
[quote="coma":2uegbewu]2- l'unica differenza nell'esecuzione dei diversi test è il diverso software, cioè quello che io decido di far fare ai banchi e quali dati acquisire dal medesimo hardware[/quote:2uegbewu]
Questo non lo vedo come un problema, sia con un solo software sia nel caso di due eseguibili diversi puoi gestire i test in modo indipendente. Ancora dovresti dire meglio cosa intendi per "medesimo" hardware. Se l'hardware è in comune e scegli di costrueire due eseguibili diversi devi stare attento alle race condition che si possono generare quando cercherai di impegnare una risorsa hw già impegnata... Con un solo software ti vengono incontro i semafori per risolvere questi problemi.
[quote="coma":2uegbewu]3- le soluzioni potrebbero essere quelle di chiamare dinamicamente i programmi di test oppure di creare tanti eseguibili quanti sono i programmi di test (quest'ultima soluzione è quella che avevo già implementato per un singolo banco!)[/quote:2uegbewu]
Anche qui dipende dalla tua confidenza con le due soluzioni, penso sia solo una questione di "gusti"... Come sopra, tanti eseguibili che cercano di accedere allo stesso hw potrebbero darti qualche problema in più quando devi gestire le race condition sopra dette...
[quote="coma":2uegbewu]4- quello che vorrei (l'ideale per me) è poter gestire i due banchi in maniera indipendente dal medesimo pc, anche se hanno in comune l'hardware.[/quote:2uegbewu]
come sopra...
A questo punto la mia domanda è: come possiamo aiutarti?
Scegliere l'architettura Sw giusta in una situazione di questo tipo dipende da innumerevoli fattori:
1. com'è strutturato l'hardware del banco.
2. Cosa preferisci tu.
3. Che "confidenza" hai con le varie strutture implementabili.
etc....
----------------------------------------
AUTORE: 487
DATA :11/07/2013 - 09:57:13
----------------------------------------
[quote="Ricky":no4i31ss]Cosa intendi per "medesimo" per entrambi i banchi? Ti faccio un esempio per capirci: hai due Multimetri Agilent, oppure hai un solo Multimetro che sarà collegato ad entrambe le UUT?[/quote:no4i31ss]
Hardware NI9148 + diversi moduli
Le soluzioni che ho individuato sono quelle esposte, ma:
1 - soluzioni con più eseguibili
1.1 - dovrei duplicare ogni programma di test per il numero dei banchi
1.2 - ogni eseguibile deve avere una posizione differente per essere gestito in maniera
corretta (il file ini di ogni eseguibile dipenderà dal banco a cui si riferisce)
2 - soluzione con un unico programma e chiamate dinamiche
2.1 - perdo la possibilità di implementare nuovi programmi di test senza dover rivedere
il programma principale
2.2 - devo gestire una buona parte del programma come rientrante per poter essere
richiamato più volte
Quindi, quello di cui avrei bisogno è un consiglio: tu come faresti? Esistono altre alternative che non ho preso in considerazione?
Grazie
----------------------------------------
AUTORE: 1078
DATA :12/07/2013 - 09:53:42
----------------------------------------
[quote="coma":2muxyrlk]
Quindi, quello di cui avrei bisogno è un consiglio: tu come faresti? Esistono altre alternative che non ho preso in considerazione?
Grazie[/quote:2muxyrlk]
Viste le premesse, io strutturerei un unico software, per mantenere però la flessibilità di costruire test in modo dinamico (problema da te esposto nel punto 2.2) mi invneterei una sorta di linguaggio Macro in grado di essere interpretato dal mio software. Queste macro dovrebbero indicare al software quale strumento usare, come configurarlo e come leggerne la misura effettuata. Implementando un parser di questo tipo, dovresti riuscire a mantenere la flessibilità nei test da eseguire.
I test alla fine risulterebbero dei file txt che danno direttive al mio software....
Spero ti sia di aiuto!
----------------------------------------
AUTORE: 487
DATA :12/07/2013 - 11:26:32
----------------------------------------
OK, grazie Ricky per la tua disponibilità e pazienza. Proverò a seguire il tuo consiglio, inizio la prossima settimana e vediamo cosa salterà fuori.
----------------------------------------
AUTORE: 129
DATA :12/07/2013 - 12:54:06
----------------------------------------
[quote="coma":148ym5mr][quote="Ricky":148ym5mr]Cosa intendi per "medesimo" per entrambi i banchi? Ti faccio un esempio per capirci: hai due Multimetri Agilent, oppure hai un solo Multimetro che sarà collegato ad entrambe le UUT?[/quote:148ym5mr]
Hardware NI9148 + diversi moduli
Le soluzioni che ho individuato sono quelle esposte, ma:
1 - soluzioni con più eseguibili
1.1 - dovrei duplicare ogni programma di test per il numero dei banchi
1.2 - ogni eseguibile deve avere una posizione differente per essere gestito in maniera
corretta (il file ini di ogni eseguibile dipenderà dal banco a cui si riferisce)
2 - soluzione con un unico programma e chiamate dinamiche
2.1 - perdo la possibilità di implementare nuovi programmi di test senza dover rivedere
il programma principale
2.2 - devo gestire una buona parte del programma come rientrante per poter essere
richiamato più volte
Quindi, quello di cui avrei bisogno è un consiglio: tu come faresti? Esistono altre alternative che non ho preso in considerazione?
Grazie[/quote:148ym5mr]
Io utilizzerei questo sistema.
Crei un vi con un framework adatto ad una soluzione di questo tipo (es. macchiana a stati), gli stati corripsondono ai test che vuoi implementare) passi a questa mnacchina con code per passsare i dati e lmitare accessi concorrenti , le istruzioni circa il test da fare (chiama il case del test) e i parametri.
In pratica ti crei una soluzione a ricette, che avranno formato testo o biunario etc.
le operazioni del VI saranno elemanteri come acquisici dal canale x del modulo xy oppure aspetta un x tempo.
----------------------------------------
AUTORE: 487
DATA :12/07/2013 - 13:15:58
----------------------------------------
Scusa Nicola, non sono sicuro di aver capito bene cosa mi hai proposto, ma mi sembra che facendo come dici tu dovrei prevedere a priori tutti i test, mentre io vorrei qualcosa di più flessibile in maniera tale da poter aggiungere i test man mano che ne sorgo la necessità
----------------------------------------
AUTORE: 129
DATA :14/07/2013 - 14:15:32
----------------------------------------
Dipende dalla tua fantasia e da come devi creare questi test.
In pratica se per l'esecuzione dei test hai necessità di diplay particolari per ognuno allora no, non è la soluzione adatta.
La mia ipotesi è questa :
Una struttura case contiene funzioni di basso livello (es. apri specifico relay, aspetta x tempo, acquisisci da canale xx etc.)
Il case select è selezionato con un controllo string.
A questo punto devi passare a questo case funzione chiamata e parametri , che possono essere scritte in un file di testo in cui listerai la procedura di test e la fai eseguire dalla case delle funzioni.
Per i vi visualizzati dall'utente puoi controllare controlli e indicatori, nascondendoli e visualizzandoli a seconda dell'occasione.
Probabilmente ho semplificato troppo, e non sono troppo sicuro si vesta sulla tua applicazione.
Ciao
----------------------------------------
AUTORE: 487
DATA :15/07/2013 - 07:16:26
----------------------------------------
Grazie Nicola, terrò presente i tuoi consigli perchè magari mi verranno utili in furturo, ma per il caso attuale credo che sia quasi impossibile adottare una tecnica simile.
Pensandoci bene, questo fine settimana, sono giunto alla conclusione che la soluzione migliore sia quella di creare tanti eseguibili quanti sono i test e di duplicarli per il numero di banchi da controllare. Poi, le informazioni sul banco e su come interagire con l'hardware gliele passo attraverso il solito file ini.
Da oggi parto ad implementare il tutto e se mi troverò nuovamente nei guai vi romperò ancora le scatole!!!
Grazie per l'aiuto.
----------------------------------------
AUTORE: 129
DATA :15/07/2013 - 19:08:00
----------------------------------------
Ok, però perchè eseguibili?
Usa viserver con vi dinamici.
Crei un unico eseguibile per ogni banco quello si, ma i vi connettili dimanicamente con vi server.
Come ti dicevo la soluzione che ti proponevo era in scia con il discorso di Ricky che proponeva un pseudo TestStand fatto in labview.
Nel tuo caso magari hai interfacce de3dicate e quindi forse è meno estremo il tuo procedimento, ma io userei i vi server.
Ciao, Nic
----------------------------------------
AUTORE: 487
DATA :16/07/2013 - 07:34:50
----------------------------------------
Scusa Nicola, vorrei capire meglio.
Dettaglio un po' di più la mia struttura.
Hardware comune a 2 banchi
- 1 pc
- 1 NI9148 + moduli vari
Ogni banco è composto da una piccola sterilizzatrice e da eventuali accessori esterni
Lo scopo dei banchi è quello di testare i vari componenti della sterilizzatrice, singolarmente o a gruppi o tutti insieme, di sperimentali nuovi cicli di sterilizzazione e di effettuare dei test di vita.
Per fare tutto questo devo eseguire test differenti ed indipendenti per i due banchi in quanto, con tutta probabilità, funzioneranno contemporaneamente ma eseguiranno prove differenti
La mia idea era la seguente:
- un eseguibile per la configurazione generale del sistema, per la creazione di report, ecc. Questo eseguibile, che potrebbe contenere anche l'interfaccia di comunicazione con l'hardware NI, sarebbe l'unica parte fissa ed indispensabile del programma, il menu principale da dove vengono gestiti i vari test.
- n eseguibili contenenti ciascuno un programma di test (vero e proprio programma costituito da svariati vi), con relativa GUI dedicata. Sul pc tali eseguibili verranno poi duplicati per i 2 banchi.
Così facendo elimino l'obbligo di dover ricompilare il programma principale ogni volta che si debba aggiungere un nuovo programma di test. Infatti, in tale evenienza, mi basterebbe semplicemente creare un nuovo eseguibile e non dovrei modificare niente di tutto quello già esistente.
Chiaramente lo scambio di informazioni tra gli eseguibili, piuttosto che la loro configurazione, avverrà tramite file di test ed eventualmente shared variable.
Fatte queste precisazioni, vorrei sapere come invece, secondo voi, come potrei utilizzare i vi dinamici e quali potrebbero essere i vantaggi
----------------------------------------
AUTORE: 129
DATA :16/07/2013 - 09:56:19
----------------------------------------
Per me dovresti lavorare su un singolo banco e poi ripeti lo stesso sul secondo.
L'immagine che ti allego forse mi aiuta a spiegare meglio delle parole.
[attachment=0:srtbkxxa]Applicazione con vi dinamici.png[/attachment:srtbkxxa]
LA main vi dovrà avere un interfaccia utente (magari una event structure) che tra i vari compiti che gli assegnerai (configurazioni etc.) di carattere generico, avrà anche pulsanti per la chiamata dei vari test, che in tutto e per tutto sono dei vi stand alone(come tu avresti fatto negli eseguibili), ma con il vantaggio che rimangono dentro l'applicazione banco1 o 2 o tutti quelli che in futuro vorrai creare.
Come vedi ci sono alcuni passaggi obbligati sia nella programmazione(dovrai inserire metodi e propietà del vi server) e sia nella creazione dell' eseguibile (dovrai includere i vi dinamici come always included, mentre la main.vi nella startup vi's.
Cosi facendo vedrai che divaneta anche scalabile e quindi anche se in futuro dovrai implementare nuovi test, lo potrai fare senza troppi cambiamenti nalla main vi (aggiungerai la event di chiamata o controllo dei nuovi inseriti).
Mbeh cos'altro, so che a parole siamo tutti bravi, ma spero di avrti indirizzato un pò meglio per non creare eseguiobili distinti e tenere tutto nel progetto del banco.
La soluzione di fare più eseguibili non è poi nenache male a mio avviso se dici di avere molti test futuri da implementare, la mia vuole solo essere una proposta alternativa.
In bocca al lupo....
----------------------------------------
AUTORE: 487
DATA :16/07/2013 - 12:53:36
----------------------------------------
Grazie ancora per le risposte Nicola.
Ho già implementato in passato programmi con chiamate dinamiche e, per dire il vero, anche in questo che mi accingo a sviluppare ho delle chiamate dinamiche a quelle funzioni che non vengono spesso utilizzate (come per esempio il test o la configurazione dell'hardware).
Quello che volevo evitare era di dover ricompilare tutto il programma ogni volta che a qualcuno salta in mente di fare un nuovo tipo di test, e la struttura con più eseguibili mi sembrava, da questo punto di vista, la più flessibile.
Comunque adesso ci rifletto ancora un po' e valuto bene i pro e i contro delle diverse soluzioni prima d'iniziare. Grazie.
----------------------------------------
================================================================================
Waveform Graph e spettro frequenziale
================================================================================
AUTORE: 3511
DATA :12/07/2013 - 14:37:15
----------------------------------------
Salve a tutti.
Sto cercando di sviluppare in LabView un VI che mi permetta dato un segnale sinusoidale in ingresso di visualizzarlo nel dominio del tempo con un tasto, e visualizzare invece(sempre sullo stesso waveform graph) lo spettro frequenziale con un altro tasto.
Non ho proprio idea di come possa gestire questo "switch" di visualizzazione. Chiedo aiuto, per favore.
Grazie in anticipo.
----------------------------------------
AUTORE: 3511
DATA :12/07/2013 - 15:00:11
----------------------------------------
Ecco qui il Front Panel:
[url:24vuekkw]http://imageshack.us/f/41/rsg5.png/[/url:24vuekkw]
e il Block Diagram:
[url:24vuekkw]http://imageshack.us/f/839/9n75.png/[/url:24vuekkw]
Spero così si capisca meglio. Ovviamente nella condizione "false" il passaggio del segnale dovrebbe essere diretto(come in foto), mentre nella condizione "true" del case bisognerebbe interporre qualcosa che mi tira fuori lo spettro e lo manda al waveform graph. Ho provato con un blocchetto che mi fa la FFT ma mi da l'errore di bad waring quando tento di connetterlo al waveform graph.
N.b.: nella foto il collegamento è diretto anche nel caso true solo perchè stavo facendo una prova di simulazione.
----------------------------------------
AUTORE: 3511
DATA :12/07/2013 - 15:52:38
----------------------------------------
Aiutandomi con il context help ho fatto questo:
[url:2ggl2p8x]http://imageshack.us/f/834/jarl.png/[/url:2ggl2p8x]
Purtroppo lo spettro non è che mi convinca molto. Inoltre quando viene visualizzato lo spettro l'asse delle x dovrebbe cambiare nome in "frequency", invece rimane "tempo". Sul FP ho anche aggiunto quali sono i punti richiesti dall'esercizio. Se qualcuno ha suggerimenti e dritte sono a tutto orecchie. Allego il vi...
----------------------------------------
================================================================================
creazione grafici non corretta con template xlts
================================================================================
AUTORE: 129
DATA :15/07/2013 - 23:16:04
----------------------------------------
Ciao a tutti, non so se vi è capitato, ma sto facendo un vi per l'inserimento automatico di grafici con Report generation toolkit.
Utilizzo "excel insert graph", su un template xlts (excel 2010 o 2007)e l'ultimo grafico me lo fa apparire non in posizione e neanche in dimensione corretta, inoltre spesso me lo fa vedere come un fantasma (si vede ma non si usa e rimane mostrato anche se scrollo il foglio.
Poi invece lo stesso problema sembra non apparire se utilizzo un template xlt (per le versioni 97:2003).
So che state pensando usa xlt, ma prima o poi ci sbatterò il naso e quindi se qualcuno sa come mai capita ciò, lo ringrazio.
Thanks
----------------------------------------
================================================================================
Calcolo dell'energia di un segnale
================================================================================
AUTORE: 10795
DATA :16/07/2013 - 13:39:55
----------------------------------------
Salve a tutti,
il titolo del post dice tutto...ho una waveform acquisita e ne dovrei determinare l'energia ma non esiste un vi che fa al caso mio...sapreste indicarmi come potrei fare? Grazie a voi
----------------------------------------
AUTORE: 301
DATA :20/09/2013 - 06:57:43
----------------------------------------
Con "energia" cosa intendi?
I Watt del segnale?!?
Aris
----------------------------------------
AUTORE: 10934
DATA :20/03/2014 - 09:28:39
----------------------------------------
[quote="LesStrato":1de048t7]Salve a tutti,
il titolo del post dice tutto...ho una waveform acquisita e ne dovrei determinare l'energia ma non esiste un vi che fa al caso mio...sapreste indicarmi come potrei fare? Grazie a voi
[/quote:1de048t7]
Quale energia stavi parlando? Puoi spiegare po 'in dettaglio..
----------------------------------------
AUTORE: 10934
DATA :22/03/2014 - 08:56:28
----------------------------------------
[quote="RenatoZabriskie":251tj9vv][quote="LesStrato":251tj9vv][u:251tj9vv]Salve a tutti,
il titolo del post dice tutto...ho una waveform acquisita e ne dovrei determinare [url=http://www.ovierasolar.it:251tj9vv][color=#000000:251tj9vv]energia[/color:251tj9vv][/url:251tj9vv] ma non esiste un vi che fa al caso mio...sapreste indicarmi come potrei fare? Grazie a voi
[/u:251tj9vv][/quote:251tj9vv]
Quale energia stavi parlando? Puoi spiegare po 'in dettaglio..[/quote:251tj9vv]
----------------------------------------
================================================================================
Filtro RC
================================================================================
AUTORE: 955
DATA :19/07/2013 - 13:14:10
----------------------------------------
Salve a tutti devo realizzare un filtro RC in labview. Diciamo che vorrei partire da qualcosa di semplice e quindi ho optato per un primo ordine. Unico vincolo che ho è usare il formula node.
Il problema è che non sono affatto sicuro se sto procedendo giusto.
Ho allegato il VI da me realizzato.
H(s) è la FdT del RC ho provato anche a farne modulo e fase ma penso che i risultati siano disastrosi. Mi date una mano?
Grazie
----------------------------------------
AUTORE: 129
DATA :22/07/2013 - 13:31:12
----------------------------------------
Hai provato ad usare i vi disponibili dalla palette signal processing?
Nicola
----------------------------------------
================================================================================
lavorare con cicli a velocità diversa??
================================================================================
AUTORE: 10831
DATA :23/07/2013 - 10:20:44
----------------------------------------
salve a tutti!
sono nuovo in questo Forum e soprattutto uso da poco labVIEW quindi vi ppongo un problema che per voi risulterà alquanto banale ma che per me non lo è.
ho un ciclo while all'interno del quale ho un DAQ Assistant che ha un Samples to read = 100 e un Rate[Hz] = 3.3k quindi raccoglie molti dati in poco tempo.questo perchè ho inserito un contagiri mandrino che deve rilevare il numero di giri del mandrino molto velocemente.
inoltre in questo ciclo while devo anche comandare un pressostato che però ad alte velocità di elaborazione non converge al valore di pressione desiderato ma oscilla molto, mentre a basse velocità converge al valore desiderato (mentre il contagiri non funziona).
volevo sapere in che modo, all'interno dello stesso ciclo, poter far lavorare il daq assistant e il pressostato a due velocità diverse? devo usare dei temporizzatori? quali?
grazie in anticipo
LV
----------------------------------------
AUTORE: 129
DATA :23/07/2013 - 14:47:05
----------------------------------------
Risponendoti un pò frettolosamente, dovresti mettere una event structure (o una case se vuoi fare prima) che come evento timeout ti acquisice (quindi l'express assistant) nell'evento di aggirnamento controllo (lo devi creare) metti il codice associato al aocmando.
Con questo però ogni volta che comandi blochhi in practica l'acquisizione
La cquisizione non si linera se non dopo aver finito il buffer impostato
Lavori sempre in pollimng senza sfruttare la event.
se guardi nei template, c'è un architettura che si chiama producer consumer(event) e questa p'enso faccia al caso tuo.
Nicola
----------------------------------------
AUTORE: 43
DATA :24/07/2013 - 07:57:52
----------------------------------------
[quote="lucavilla":15et5k55]salve a tutti!
sono nuovo in questo Forum e soprattutto uso da poco labVIEW quindi vi ppongo un problema che per voi risulterà alquanto banale ma che per me non lo è.
ho un ciclo while all'interno del quale ho un DAQ Assistant che ha un Samples to read = 100 e un Rate[Hz] = 3.3k quindi raccoglie molti dati in poco tempo.questo perchè ho inserito un contagiri mandrino che deve rilevare il numero di giri del mandrino molto velocemente.
inoltre in questo ciclo while devo anche comandare un pressostato che però ad alte velocità di elaborazione non converge al valore di pressione desiderato ma oscilla molto, mentre a basse velocità converge al valore desiderato (mentre il contagiri non funziona).
volevo sapere in che modo, all'interno dello stesso ciclo, poter far lavorare il daq assistant e il pressostato a due velocità diverse? devo usare dei temporizzatori? quali?
grazie in anticipo
LV[/quote:15et5k55]
Secondo me devi cmq separare le due acquisizioni in 2 loop diversi ed eventualmente correlare i dati fra loro, se necessario, da un'altra parte.
Abbiamo trattato più volte l'argomento acquisizione perciò mi sorprende che tu non abbia letto, presumo, alcuni post anche recenti che riguardano l'argomento.
Mi sorprende appunto che tu dica di acquisire un segnale a 3.3kSample al secondo ma ne legga dal buffer in memoria solo 100 Samples per volta. Quei campioni (100) vengono acquisiti e messi nel buffer della RAM ogni 1/33esimo di secondo. Probabilmente non riuscirari a svuotare il buffer in memoria abbastanza velocemente, che dovrebbe, nel giro di poco tempo, saturare generando un errore di Overrun
Non specifichi il modo in cui esegui la seconda acquisizione
bye
----------------------------------------
AUTORE: 10831
DATA :25/07/2013 - 09:09:27
----------------------------------------
grazie per le risposte.
mi spiego meglio per essere più chiaro.
devo sviluppare un programma con labVIEW per comandare una macchina di prova a flessione rotante.
il carico sulla cella di carico da applicare sul provino in prova è dato da un pressostato.
dalla macchina riesco a leggere il numero di giri grazie alla scheda di acquisizione. siccome il mandrino gira a 2800rpm il conteggio dei giri su labVIEW avviene soltanto se la lettura avviene molto velocemente quindi tra le proprietà del DAQassistant ho usato:
Samples to read = 100
Rate [Hz] = 3.3k.
il problema sta ora nel gestire il pressostato.
infatti io devo cercare di fare arrivare la pressione fino a un valore desiderato di tensione sul provino. questo l'ho fatto utilizzando un metodo dell'errore percentuale quindi la pressione reitera fino a che l'errore percentuale è nullo. il problema è che lavorando con la scheda di acquisizione a
Samples to read = 100
Rate [Hz] = 3.3k.
il pressostato non riesce a stabilizzarsi su un valore ma oscilla. ho visto invece che con la lettura di 1 punto al secondo riesce a convergere al valore desiderato ma purtroppo non riesco a contare il numero di giri del mandrino.
come fare?
devo per caso utilizzare un Timed Loop? non l'ho mai usato quindi più chiari siete meglio è per me.
vi ringrazio in anticipo.
LV
----------------------------------------
AUTORE: 43
DATA :29/07/2013 - 11:09:42
----------------------------------------
[quote="lucavilla":2fdxwj1e]grazie per le risposte.
mi spiego meglio per essere più chiaro.
devo sviluppare un programma con labVIEW per comandare una macchina di prova a flessione rotante.
il carico sulla cella di carico da applicare sul provino in prova è dato da un pressostato.[/quote:2fdxwj1e]OK
[quote="lucavilla":2fdxwj1e]dalla macchina riesco a leggere il numero di giri grazie alla scheda di acquisizione. siccome il mandrino gira a 2800rpm il conteggio dei giri su labVIEW avviene soltanto se la lettura avviene molto velocemente quindi tra le proprietà del DAQassistant ho usato:
Samples to read = 100
Rate [Hz] = 3.3k.
[/quote:2fdxwj1e]beh! leggere 100 campioni a 3.3 khz è veramente un'inezia, considerando che esistono schede oscilloscopio che acquisiscono + canali a Freq. nell'ordine di GigaSamples al secondo.
Vado ad intuito, il tuo campionamento non è "continuo", ma fatto a brevi intervalli, quindi probabilmente ti perderai la maggior parte della forma d'onda che potresti acquisire.
Vado sempre ad intuito, correggimi se sbaglio, ma penso che il valore di tensione che acquisisci sia PROPORZIONALE alla velocità di rotazione del mandrino, per cui immagino tu faccia la media di quei 100 campioni per avere un valore di velocità stabile...
Se non è così spiega + dettagliatamente come funziona questo conteggio dei giri motore, soprattutto indica nel dettaglio cosa rappresenta il segnale analogico che acquisisci...
[quote="lucavilla":2fdxwj1e]il problema sta ora nel gestire il pressostato.
infatti io devo cercare di fare arrivare la pressione fino a un valore desiderato di tensione sul provino. questo l'ho fatto utilizzando un metodo dell'errore percentuale quindi la pressione reitera fino a che l'errore percentuale è nullo. il problema è che lavorando con la scheda di acquisizione a
Samples to read = 100
Rate [Hz] = 3.3k.
il pressostato non riesce a stabilizzarsi su un valore ma oscilla. ho visto invece che con la lettura di 1 punto al secondo riesce a convergere al valore desiderato ma purtroppo non riesco a contare il numero di giri del mandrino.
come fare? ...[/quote:2fdxwj1e]
Ma come lo comandi il pressostato? con un'uscita digitale? o in altro modo? (tramite una seriale per es.).
Mi sembra che il tuo problema sia quello di realizzare un "sistema di controllo retroazionato" per il quale si utilizza di solito un "PID loop"
http://it.wikipedia.org/wiki/Controllori_PID
Cmq sia, ritengo che i tuoi problemi nascano dal fatto che la tua acquisizione non è continua.
In attesa di ulteriori dettagli ti saluto e ti auguro buone ferie
bye
----------------------------------------
================================================================================
Asse X con tempo in secondi
================================================================================
AUTORE: 3428
DATA :27/08/2013 - 14:51:54
----------------------------------------
Salve,
sembrava una cosa semplice invece non ne vengo a capo.
Come posso mettere in un chart, nell'asse delle X e nel mio caso rappresentano i tempi, i secondi?
Proprio non ci riesco... sono riuscito a mettere solamente il tempo in formato secondi tramite la formattazione %<%S%3u>T in tempo relativo.
La gestione però non è come quella che vorrei. Infatti il tempo rappresenta il tempo attuale tramite l'orario di windows quindi se inserisco il primo valore dentro al chart alle 15:46:58.123 avrò come t1 proprio 58.123 per poi avanzare verso 59.000, 00.000, 01.000 ecc. quindi sì, visualizzo i secondi ma non è bello vedere che la curva inizia al secondo 58 e finisce al secondo 3...
Quello che vorrei è fare in modo che all'avvio, quindi al primo valore che inserisco nel chart il valore dell'asse X valesse sempre 0.000 per continuare verso 1, 2, 3 ecc. e non reiniziare a 0 dopo il 59 ma arrivare a 60, 61 ecc.
Offset e multiplier ma come??
Grazie dei consigli
----------------------------------------
AUTORE: 43
DATA :27/08/2013 - 15:10:06
----------------------------------------
[quote="renaso":2yh5av0p]Salve,
sembrava una cosa semplice invece non ne vengo a capo.
Come posso mettere in un chart, nell'asse delle X e nel mio caso rappresentano i tempi, i secondi?
Proprio non ci riesco... sono riuscito a mettere solamente il tempo in formato secondi tramite la formattazione %<%S%3u>T in tempo relativo.
La gestione però non è come quella che vorrei. Infatti il tempo rappresenta il tempo attuale tramite l'orario di windows quindi se inserisco il primo valore dentro al chart alle 15:46:58.123 avrò come t1 proprio 58.123 per poi avanzare verso 59.000, 00.000, 01.000 ecc. quindi sì, visualizzo i secondi ma non è bello vedere che la curva inizia al secondo 58 e finisce al secondo 3...
Quello che vorrei è fare in modo che all'avvio, quindi al primo valore che inserisco nel chart il valore dell'asse X valesse sempre 0.000 per continuare verso 1, 2, 3 ecc. e non reiniziare a 0 dopo il 59 ma arrivare a 60, 61 ecc.
Offset e multiplier ma come??
Grazie dei consigli[/quote:2yh5av0p]
Ciao Renaso
mmmm...
direi che la soluzione al tuo problema sia quella di visualizzare il tempo sull'asse X come se ...fosse un numero, espresso in una qualunque grandezza ingegneristica...
quindi io cambierei il formato da %<%S%3u>T a %f o %d tanto per cominciare.
Sai cosa penso dei chart... sono utili e comodi per debug, ma assolutamente non "professionali". Al posto loro utilizzerei dei graph, ma questa è un'altra storia.
bye
----------------------------------------
AUTORE: 3428
DATA :28/08/2013 - 12:42:24
----------------------------------------
ok grazie Paracarro,
ho provato con %.3f o %d ma non risolvo il problema...
Allora giro la domanda.. come faccio la stessa cosa con un graph ma mantenendo sul grafico tutto lo storico (una decina di secondi)?
----------------------------------------
AUTORE: 43
DATA :29/08/2013 - 13:40:16
----------------------------------------
[quote="renaso":2dh6xwax]ok grazie Paracarro,
ho provato con %.3f o %d ma non risolvo il problema...
Allora giro la domanda.. come faccio la stessa cosa con un graph ma mantenendo sul grafico tutto lo storico (una decina di secondi)?[/quote:2dh6xwax]
Ah, ok.
Ho capito di non ver capito che cosa vuoi.
Perchè non metti un bell'indicatore di tipo timestamp sotto il chart con label "start time" dove scrivi l'istante 0 nel formato che preferisci, e lasci il chart con la classica numerazione progressiva?
bye
----------------------------------------
AUTORE: 482
DATA :29/08/2013 - 14:36:46
----------------------------------------
Per fare quello che vuoi fare devi usare i property node del chart o del graph.
Puoi farlo con due property diverse:
1)X Scale->Range-> Start/Increment
2)X Scale->Offset & Multiplier->Offset/Multiplier
Questi due parametri ti settano rispettivamente L'inizio della scala e la distanza tra un punto e un altro.
In Tutto questo la scala deve essere formattata come tipo Relative Time
----------------------------------------
AUTORE: 129
DATA :30/08/2013 - 11:08:44
----------------------------------------
Se usi il graph puoi usare uno shift register per gestire l'array che va dentro, lo svuoti quando ha memorizzato n valori.
Il chart invece confermerei il metodo suggerito da Gepponline.
----------------------------------------
AUTORE: 129
DATA :30/08/2013 - 11:19:14
----------------------------------------
Pensavo qualcosa del genere, che puoi inserire nel tuo VI e controllare dT, e buffer del grafico
----------------------------------------
AUTORE: 3428
DATA :31/08/2013 - 08:09:49
----------------------------------------
[quote="gepponline":2c2g9c5o]Per fare quello che vuoi fare devi usare i property node del chart o del graph.
Puoi farlo con due property diverse:
1)X Scale->Range-> Start/Increment
2)X Scale->Offset & Multiplier->Offset/Multiplier
Questi due parametri ti settano rispettivamente L'inizio della scala e la distanza tra un punto e un altro.
In Tutto questo la scala deve essere formattata come tipo Relative Time[/quote:2c2g9c5o]
Grazie geppionline ma come vanno utilizzati?
Diciamo che al momento vorrei continuare ad usare il chart, anche perchè altrimenti dovrei modificare anche altre parti del codice.
Sul multiplier dovrei mettere l'inverso del samplerate.
Sull'offset?
----------------------------------------
AUTORE: 3428
DATA :03/09/2013 - 09:21:05
----------------------------------------
Ho risolto memorizzando il t0 della prima curva inserita nel chart e sottraendola ad ogni blocco dati inserito nel grafico.
Per alleggerire la funzione ho utilizzato la in place structure delle waveforms.
Grazie comunque
----------------------------------------
================================================================================
Problema con Report Toolkit word.edit cell
================================================================================
AUTORE: 129
DATA :30/08/2013 - 11:29:15
----------------------------------------
Ciao a tutti.
Ho uno strano comportamento de word edit cell.vi (nel Report Generation Toolkit) versione 2012.
In pratica devo inserire in una tabella esistente di un template word, dei valori passandoli con un array, come previsto.
Se inserisco direttamente l'array mi inserisce solo la primna colonna di valori.
Se lo faccio lavorare all'interno di un for loop che mi scansiona tutte le colonne dandogliene una alla volta in 1d array, funziona, ma le restanti colonne della tabella, pur non avendogli dato nulla, me le completa con l'ultima colonna passata dall'array.
Qualcuno si è già imbattuto in qualcosa di analogo?
Grazie, Nicola
----------------------------------------
================================================================================
Esordio RS232
================================================================================
AUTORE: 10837
DATA :31/08/2013 - 19:15:06
----------------------------------------
Ciao a tutti!
Mi chiamo Matteo e vi scrivo da Ferrara. Premetto che sono un esordiente totale nel mondo labview e in questi giorni, volevo implementare per scopi hobbistici, una piccola console virtuale, su cui leggere due stringhe numeriche inviate da un PIC18F4620. La sintassi d'invio sarebbe questa:
Valore1,10
Valore2,10
Sono riuscito con l'esempio fornito da NI (Advanced Serial Write and Read.vi) a visualizzare tutti e due i dati nella finestra di ricezione seriale, ma il mio desiderio reale, sarebbe quello di separarli e visualizzarne ciascun valore su due strumenti virtuali a lancetta? Il problema però, è che non ho la minima idea di come eseguire con labview questa operazione.
C'è qualche amico gentile che può darmi una dritta?
----------------------------------------
AUTORE: 482
DATA :02/09/2013 - 07:12:55
----------------------------------------
Non so se ho capito bene quello che vuoi fare ma ci provo.
La ricezione seriale ti arriva in formato stringa con due valori.
Tu dvei dividere questi due valori e metterli ognuno nel suo indicatore giusto?
Per fare tutto questo non dvei far altro che usare la palette String dove ci sono tutti i controlli necessari per la manipolazione delle stringhe.
Quindi:
1) Prendi l'indicatore di ricezione seriale e ne dividi il contenuto ad esempio usando il match pattern o lo scan from string o a seconda del formato anche con lo spreadsheet string to array.
2)converti i valori da stringa a numerico andando in string/number conversion
3)colleghi il valore all'indicatore che vuoi.
Un consiglio che ti do è quello di premere CTRL+H per visualizzare il content help, una finestrella che quando passi il mouse su un blocchetto ti visualizza l'help del singolo blocchetto spiegandoti cosa fa e quali sono gli ingressi e le uscite da collegare.
----------------------------------------
AUTORE: 10837
DATA :02/09/2013 - 08:21:06
----------------------------------------
Grazie mille per la risposta!!
Provo subito!!
----------------------------------------
AUTORE: 129
DATA :18/09/2013 - 16:36:17
----------------------------------------
In allegato quello che ti serve, per separare la scritta valore dal numero e trasformare la stringa in numero per collegare un controllo numerico come il dial o altro.
Ciao
----------------------------------------
================================================================================
Macchina stati: salvare su file lo stato come Items
================================================================================
AUTORE: 3053
DATA :05/09/2013 - 15:56:44
----------------------------------------
Salve a tutti,
qualcuno sa darmi un suggerimento su come risolver e il seguente problemino:
(Il vi di esempio che allego è per far capire il problema)
Ho una macchina a stati e devo salvare su un file lo stato della macchina, proveniente dallo shift register, ogni X tempo non come "Valore" (0,1,2,3...) ma come "[b:23s9yosy]Items[/b:23s9yosy]" (Init,MainPage,Operator Page....) quello che appare nella stringa chiamata 'y'
Il banalissimo modo che ho inserito io sotto al case principale non va bene dovrei farlo per ogni Stato e nn mi sembra che possa andare.
qualche consiglio?
Qualcuno ha codice da suggerirmi?
grazie per l'aiuto
----------------------------------------
AUTORE: 482
DATA :06/09/2013 - 07:19:42
----------------------------------------
Non posso vedere il tuocodice perchè usola versione 2009.
Cmq basta che metti ilvalore che c'e' nello shift register in un indicatore e poi prendi un property node Strings[] di quell'indicatore e ne estrai il valore tramite un Index array.
----------------------------------------
AUTORE: 3053
DATA :06/09/2013 - 12:12:26
----------------------------------------
grazie per la risposta.
ho provato, allego snippet, ho fatto un passo avanti ma, al [b:27uglh6f]cambio di stato[/b:27uglh6f] non mi aggiorna il risultato dopo index array, dato che andrei a scriveri su file.
hai un altro suggerimento da darmi?
grazie per l'aiuto
----------------------------------------
AUTORE: 482
DATA :06/09/2013 - 12:48:47
----------------------------------------
E' piu' banale di quanto pensi.
Non è che non aggiorna lo stato è che tu gli stai chiedendo di restituirti sempre lo stesso elemento dell'array.
Nell'array tu hai TUTTE LE STRINGHE e s enon gli colleghi l'index, lui ti restituirà smepre la prima e basta.
All'ingresso index dell'index array gli devi collegare States e vedrai che funziona
----------------------------------------
AUTORE: 3053
DATA :06/09/2013 - 16:01:42
----------------------------------------
mi perdo spesso in queste ca..volate!
Grazie 1000 il tua aiuto e' stato preziosissimo.
ciao alla prossima
----------------------------------------
================================================================================
Amplitude and Phase Spectrum VI
================================================================================
AUTORE: 4578
DATA :09/09/2013 - 10:16:47
----------------------------------------
Salve, non riesco a capire cosa fa il parametro di ingresso Unwrap phase non ho capito cosa scarta se è impostato su vero.
----------------------------------------
================================================================================
subVI
================================================================================
AUTORE: 4578
DATA :10/09/2013 - 08:46:01
----------------------------------------
Come faccio a racchiudere più funzioni in un unico blocco?
----------------------------------------
AUTORE: 482
DATA :11/09/2013 - 07:30:50
----------------------------------------
semplicemente salvando il vi e aprendolo come subVI in un altro.
Piu' nel dettaglio, dovrai andare col tasto destro sull'icona in alto a destra del subVI e collegare controlli e indicatori rispettivamente a entrate e uscite del subVI, dopodichè salvare il tutto.
Poi apri il vi che dovrà richiamarlo, col tasto destro nel block diagram apri la palette delle funzioni e clikki su "Select a VI".
Se invece vuoi prendere una parte di codice già implementata e renderla un subVI, basta che selezioni la parte che ti interessa, poi vai sul menu EDIT->Create SUBVI.
----------------------------------------
================================================================================
Conversione da LabVIEW 5.1 a LabVIEW 11
================================================================================
AUTORE: 10844
DATA :12/09/2013 - 10:19:03
----------------------------------------
Salve a tutti,
Sono nuovo in questo forum.
Avrei da convertire i file allegati da LabVIEW 5.1 a LabVIEW 11.
Qualcuno potrebbe aiutarmi?
Grazie mille
Saluti
Andrea
----------------------------------------
================================================================================
Emettere tre beep sonori e poi ... silenzio ...
================================================================================
AUTORE: 10837
DATA :22/09/2013 - 11:48:46
----------------------------------------
Ciao a tutti!
Spero abbiate pazienza ... sono nuovo nella programmazione Labview e sto tentando invano da ormai più di due giorni di far eseguire al mio VI quest'operazione:
- Il valore ricevuto attraverso la seriale indica che la batteria del mio circuito è scarica;
- Questa condizione deve accendere un LED di controllo ed emettere singolo ciclo di 3 beep per poi zittirsi completamente.
Il rivelamento del dato dalla seriale, la sua visualizzazione e l'accensione del LED mi è riuscita. L'emissione di un singolo ciclo di 3 beep e poi silenzio, no. Per il suo controllo ho costruito questo VI ma non funziona. Il beep viene emesso continuamente e non si arresta mai. Dove sto sbagliando?
PS Ovviamente il pulsante "Simulazione impulso" non esiste nella realtà, ma simula in questo caso la richiesta di emissione dei 3 beep.
----------------------------------------
AUTORE: 482
DATA :23/09/2013 - 07:16:47
----------------------------------------
Innanzitutto quel =3 è sbagliato perchè se devi fare 3 bip devi scrivere =2 perchè il conteggio parte da zero.
E comunque quando sai già quante volte dovrai eseguire una certa funzione, meglio usare il ciclo FOR.
Per il resto mi sembra tutto corretto, quindi ti chiedo, non è che quando lo mandi in run lo mandi con le freccette in loop anzichè con la freccetta singola?
----------------------------------------
AUTORE: 10837
DATA :23/09/2013 - 11:28:07
----------------------------------------
Accidenti è vero, lo mandavo in esecuzione in loop continuo!!!
Grazie infinite!!
----------------------------------------
================================================================================
Utilizzare 2 dll con lo stesso nome
================================================================================
AUTORE: 2328
DATA :23/09/2013 - 13:55:57
----------------------------------------
Buonasera a tutti,
ho un quesito da porvi e spero possiate essermi di aiuto:
Ho un programma scritto naturalmente in labview che deve richiamare nel mio caso 2 dll. Purtroppo queste 2 dll sono differenti nel contenuto ma devono avere lo stesso nome.
Devono essere utilizzate non contemporaneamente ma successivamente.
Succede che faccio girare la prima parte di codice con una dll e funziona; quando faccio girare la seconda dll il programma sembri tenere in memoria la prima dll e fallisce. Le due parti di codice devono girare senza dover chiudere labview (se chiudo e riapro labview la seconda dll funziona)
Questo succede da qualsiasi dll cominci.
Come posso risolvere il problema? C'è un modo per eliminare la dll richiamata?
Grazie
----------------------------------------
AUTORE: 129
DATA :23/09/2013 - 15:43:09
----------------------------------------
Forse dovresti riuscire se sono salvate in due path distinti, inserendo nelle property della call library function una path specifica.Devi spuntare la casella specify path on diagram, ti appare un terminale per un path control e così inserisci una path personalizzata per ognuna. Ti allego lo screenshot.
----------------------------------------
================================================================================
Scrivi dati da USB e RS232 ogni 60secondi
================================================================================
AUTORE: 3053
DATA :24/09/2013 - 15:01:11
----------------------------------------
salve a tutti,
chiedo un gentile aiuto, se possibile, riguardante il seguente problema:
La VI che allego e' una piccola parte che dovrebbe scrivere dei dati che provengono da una USB e da una seriale.
La mia necessità è quella di dover scrivere i dati su file, e fin qui tutto ok, ma sempre dopo 60 secondi esatti......
In tutti i tentativi che ho fatto nn ci sono riuscito, credo di avere dei limiti sulla sincronia dei dati o dei tempi o non so!
Dando uno sguardo alla VI avete dei suggerimentii da darmi?
- Nella sequenza ci sono le letture da USB e Seriale
- In basso il contatore che dovrebbe regolare la scrittura ogni 60 secondi
- In alto il salvataggio del file
grazie in anticipo
----------------------------------------
AUTORE: 482
DATA :25/09/2013 - 07:16:13
----------------------------------------
Quello che sbagli è dove gestisci il timer e lo shift register.
1- crei la variabile del timer quando hai li a pochi cm il terminale...no no,non si fa
2- prendi il timer e lo sottrai a se stesso nell'iterazione precedente (shift rgeister) in quetso modo non avrai mai nessun incremento, quindi continuerai ad avere in uscita una costante.
Se mandi tuttoin debug vedrai che continui a fare un operazione tra costanti e quindi non c'e' niente che incrementa di conseguenza al fatidico 60 non ci arriverai mai.
----------------------------------------
AUTORE: 3053
DATA :25/09/2013 - 13:34:43
----------------------------------------
Grazie 1000.
aiuto essenziale.
buona giornata
P.S. se sei a conoscenza di un metodo migliore, per la sincronia della scrittura, dal quale posso studiare potresti postarlo?
ciao
----------------------------------------
AUTORE: 129
DATA :02/10/2013 - 06:38:33
----------------------------------------
Prova a costruirti una FGV(Functional Global Variable) ovvero un vi con shift register non inizializzato e internamente metti il codice che ogni 60s emette un trigger di comando.
Altra cosa potresti usare un framework diverso per gestire l'applicazione (Usa File/template Producer/Consumer(event)).
Il timer lo metti in un while che esegue appunto un comando ogni 60s(in questo caso potresti addirittura usare l'evento timeout impostandolo a 60s).
Ciao
----------------------------------------
AUTORE: 3053
DATA :08/10/2013 - 08:39:30
----------------------------------------
ciao Nicola,
grazie dei suggerimenti, che vorrei provare, ma:
il primo dopo aver costruito un FGV non mi e' chiaro come integrarlo nel main vi...un esempio??
il secondo, che avrei piacere di provare, non capisco la path che mi suggerisci...
find examples?
templates di labview?
ciao grazie
----------------------------------------
AUTORE: 129
DATA :10/10/2013 - 10:14:07
----------------------------------------
Ciao ti allego una FGV che fa il cronometro, da usare/modificare nel while del tuo codice al posto del timer(suppongo).
Lascia pardere l'architettura che ti ho scritto, magari la riprendo tra qualche tempo, ci sono un pò troppi concetti da digerire, riconsidera invece l'uso delle variabili sostituendole con shif regsiter e FGV.
Per esempio il timer, inizializzi l'inidcatore fuori dal loop(collegalo ai bordi tra l'altro per eseguirlo prima che inizi il codice) avresti potuto usare uno shift register, l'inizializzazione 0 lo mettevi sul terminale di ingresso dello shift register, poi usavi lo shift register leggendolo a sinistra e scrivendolo a destra.
In ogni caso il timer puoi sostituirlo con il crono che ti ho inviato.
----------------------------------------
AUTORE: 3053
DATA :11/10/2013 - 10:48:11
----------------------------------------
ciao nicola,
grazie molto del suggerimento ma, credo a causa mia , non riesco a far funzionare.
mi interessa, e se ho capito come funziona, andrebbe a pulire quella parte di codice intricata che ho fatto....
ho provato piu volte ma niente!
non riesco ad integrarlo.
io ho la necessità di scrivere un dato ogni 60 secondi con cadenza regolare (sempre stesso secondo del minuto successivo)
posto il metodo intrigato che funziona e quello dove ho inserito il tuo crono (so essere decisamente nn corretto)
grazie per un eventuale suggerimento
----------------------------------------
AUTORE: 3053
DATA :11/10/2013 - 10:57:39
----------------------------------------
ecco i files,
problemi con lo snippet.
----------------------------------------
AUTORE: 129
DATA :13/10/2013 - 10:16:26
----------------------------------------
Ciao, ho dato un occhiata veloce, direi che non ci sono errori su come l'hai messo.
Devi comunque togliere la locale che setta il Wait(ms).vi e il valore lo prendi direttamente dal controllo "ScanTime".Usa un tempo di wait di 200ms con 1 secondo il ciclo mi sembra un pò lento.Devi togliere un paio di divisioni, il tempo di wait deve ora essere solo il tempo che decidi per controllare il ciclo, lo scandire del tempo invece devi darlo direttamente al crono.
Nota, io ho fatto un esempio, ma nella global function potresti mettergli anche ad esempio il codice per decidere se il tempo è arrivato al limite imposto, e anche qui dopo se vuoi ripetere l'operazione devi resettare il crono (anche questo potrebbe essere una ragione del malfunzionamento).
Ciao, se hai bisogno bussa pure
----------------------------------------
AUTORE: 3053
DATA :24/10/2013 - 10:13:17
----------------------------------------
Ciao Nicola,
prima di tutto grazie dell'aiuto.
Credo di aver raggiunto lo scopo, metto l'ultima versione, se puoi darci un occhio facendola girare magari mi confermi e se vedi qualche cosa che nnn va mi puoi dare l'ultimo suggerimento.
buona giornata
----------------------------------------
AUTORE: 129
DATA :25/10/2013 - 16:15:59
----------------------------------------
Non è per essere pignolo, ma utilizzando troppo le variabili locali o globali incontrerai qualche problema (race condition, difficoltà di lettura e perdita dataflow per citarne alcuni).
Ho modificato il tuo codice in un pò di punti(magari per fretta ci sono alcuni errori funzionali nel mio, controllalo meglio) per farti un esempio di come si può evitare le variabili locali con gli shift register, inizializzazione di un vi in mdoo che si possa in futuro modificare facilmente e un case al posto della sequence in modo che sia una reale macchina a stati, dove un giorno se vorrai potrai modificare il passaggio degli stati programmaticamente e non sequenzialmente come ti serve oggi.
La FGV chrono se usa una locale interna perde del suo scopo.
Ciao, e buon lavoro
Nicola
----------------------------------------
================================================================================
Migliorare lo scambio dati su Ethernet
================================================================================
AUTORE: 660
DATA :26/09/2013 - 14:44:34
----------------------------------------
Ciao a tutti,
ho realizzato un programma che deve scambiare dei dati tramite protocollo TCP...
adesso il sistema ogni un certo numero di millisecondi si mette in ascolto (fino al timeout) per sentire se dall'altro lato è stato inviato un messaggio... e quando ha un messaggio da inviare lo invia...
Per poter migliorare (e velocizzare) il funzionamento pensavo di realizzare un VI, da avviare dinamicamente, che girasse in background e che fosse sempre in ascolto... poi quando "captava" un messaggio (stringa ASCII di lunghezza ignota) lo scrivesse in una variabile (global?) ed allo stesso tempo se trovava dentro un'altra variabile (dello stesso tipo) un messaggio da inviare lo inviasse.
Cosa ne pensate?
grazie
Max
----------------------------------------
AUTORE: 301
DATA :27/09/2013 - 14:16:30
----------------------------------------
Il tuo vi, può girare in BG e fare esattamente quello che fa ora, basta che gestisci "l'evento" di timeout.
E' sempre meglio lasciare un timeout, in modo che i codice venga eseguito (ogni tanto), basta che QUANDO ti arriva il timeout tu non "esegua" nulla (metti il codice in un case, ad es.).
Aris
----------------------------------------
AUTORE: 660
DATA :27/09/2013 - 14:43:16
----------------------------------------
grazie per la risposta Aris,
il timeout non volevo toglierlo... ho già avuto modo di apprezzarne l'intervento...
pensavo solo di far girare "a parte" quello che riguardava la comunicazione da e verso il server visto che lo scambio di dati non avviene in maniera ciclica ma è dipendente da fattori esterni al macchinario (leggi operatore, etc)
in tal modo il VI principale doveva occuparsi solamente della gestione dei dati da inviare e ricevere allorquando ce ne fossero stati...
Max
----------------------------------------
AUTORE: 301
DATA :27/09/2013 - 14:47:20
----------------------------------------
Sta bene, puoi tranquillamente usare una coda (ad esempio) tra il tuo vi in BG (che non ciclerà, ma andrà in timeout una volta ogni tanto) ed il principale.
Quando arriva un messaggio o ne devi inviare uno, il tuo vi in BG lo riceverà e comanderà uno stato (ad es. ad una macchina a stati) nel tuo vi "principale".....
Aris
----------------------------------------
AUTORE: 301
DATA :27/09/2013 - 15:35:07
----------------------------------------
Ti allego un esempio di quello che intendo (ESEMPIO!!!!).
Buon WE!!!!
Aris
----------------------------------------
AUTORE: 660
DATA :27/09/2013 - 16:29:39
----------------------------------------
grazie dell'esempio, gentilissimo...
...pensavo proprio ad una cosa del genere...
solo una domanda: per "richiamare dinamicamente la stessa coda" basta riaprirla con lo stesso nome oppure ci sono altre "quisquilie"?
buon week-end
Max
----------------------------------------
AUTORE: 301
DATA :27/09/2013 - 17:36:27
----------------------------------------
Nell'esempio mi sono dimenticato di chiudere la coda all'uscita.....mea culpa.
Basta che richiami la coda tramite il nome!
Aris
----------------------------------------
================================================================================
HMI Simatic KTP600
================================================================================
AUTORE: 46
DATA :28/09/2013 - 19:06:30
----------------------------------------
Salve a tutti
Mi trovo per le mani un touch panel KTP600 basic della Siemens, che configuro utilizzando il software TIA Portal.
Ho a disposizione LabVIEW 2012 e il modulo Touch panel.
Chiederei se qualche utente del forum sa dirmi se il modulo touch panel può essere utilizzato per poter gestire quel dispositivo in ambiente LabVIEW.
L'applicazione che vorrei mettere a punto è didattica e, se realizzata, sarà resa disponibile a studenti di un'ITIS.
Vi ringrazio per qualsiasi informazione potrete darmi
Claudio
----------------------------------------
AUTORE: 301
DATA :30/09/2013 - 07:37:43
----------------------------------------
Ciao Claudio (con il dubbio che tu sia "quel" Claudio),
non sono riuscito a verificare la compatibilità del Touch in tuo possesso e Labview, ma credo che non sia possibile "programmarlo" con Labview.
L'unica possibilità, credo sia interagirci tramite TCP/IP....
Aris
----------------------------------------
AUTORE: 46
DATA :30/09/2013 - 13:09:23
----------------------------------------
Ciao Aris
Sono proprio io !
Credo sia come dici tu: stamattina ho fatto qualche esperimento e mi sembra che non si possa trasferire su quel TP il runtime di LV.
Non solo: temo che anche la versione di windows che c'è installata sopra non sia tra quelle previste per il modulo touch panel di LV
Peccato . . .
Per mia curiosità proverò comunque a seguire il tuo consiglio ed operare con TCP/IP, anche se temo che, nel caso di riuscita, il risultato ottenuto sarebbe non proprio adatto a degli studenti di terza superiore.
Grazie per l'interessamento e a risentirci a presto.
Ciao
Claudio
----------------------------------------
================================================================================
La programmazione ad oggetti
================================================================================
AUTORE: 482
DATA :02/10/2013 - 10:51:45
----------------------------------------
...ma ciao!
mi è appena arrivato il nuovo numero di LabVIEW world in cui si parla della programmazione object orinted in labview.
Non ci ho mai capito una sega di questo tipo di programmazione, perchè quando l'ho fatta a scuola pensavo ad altro e poi non mi ci son mai messo a studiarla non avendone strettamente bisogno.
Volevo capire, tanto per chiacchierare, qualcuno di voi la usa? l'ha usata? perchè? come ci si è trovato?
Mi è sembrato di capire che è utile per progetti di grosse dimensioni (non ho mai avuto queste esigenze), ma ha senso mettersi ad imparare questa tecnica di programmazione?
p.s...ultimamente sto pure diventando matto per capir eun po' la programmazione fpga...
----------------------------------------
AUTORE: 43
DATA :02/10/2013 - 11:32:12
----------------------------------------
[quote="gepponline":2hdulzep]...ma ciao!
mi è appena arrivato il nuovo numero di LabVIEW world in cui si parla della programmazione object orinted in labview.
Non ci ho mai capito una sega di questo tipo di programmazione, perchè quando l'ho fatta a scuola pensavo ad altro e poi non mi ci son mai messo a studiarla non avendone strettamente bisogno.
Volevo capire, tanto per chiacchierare, qualcuno di voi la usa? l'ha usata? perchè? come ci si è trovato?
Mi è sembrato di capire che è utile per progetti di grosse dimensioni (non ho mai avuto queste esigenze), ma ha senso mettersi ad imparare questa tecnica di programmazione?
p.s...ultimamente sto pure diventando matto per capir eun po' la programmazione fpga...[/quote:2hdulzep]
ma ciao!
Non ho mai sviluppato interamente un progetto sw programmando per oggetti, ne in LabVIEW ne inun altro linguaggio. Questo è il dato di fatto essenziale.
Ma chiunque utilizzi LabVIEW o un linguaggio "Visuale", è costretto suo malgrado a dover operare con gli oggetti delle GUI, e quindi a capirne il funzionamento.
Per sviluppare un intero progetto SW, + o - complesso, programmando ad oggetti, non basta capire il funzionamento dei Widget delle GUI cioè il mero uso di proprietà e metodi, ma colui che programma deve avere una cultura orienteta agli oggetti, comprendere a fondo le caratteristiche per es. di incapsulamento ed ereditarietà, avere ben chiera l'interazione fra oggetti, capire i vari Design Patterns, ecc.
Passare dalla programmazione Procedurale a quella ad oggetti è come passare dalla programmazione in linguaggio tesstuale a LabVIEW
bye
----------------------------------------
AUTORE: 1078
DATA :02/10/2013 - 12:37:09
----------------------------------------
[quote="gepponline":ret9a7cy]Passare dalla programmazione Procedurale a quella ad oggetti è come passare dalla programmazione in linguaggio tesstuale a LabVIEW[/quote:ret9a7cy]
..il paragone calza a pennello!!
Tutto sta nel modo di pensare... niente di più! Qualcuno un giorno mi ha detto: "tutto quello che si fa ad oggetti si può realizzare senza usare gli oggetti" (M. Marassi) Quest'affermazione è assolutamente vera. I vantaggi principali della programmazione ad oggetti sono: la facilità di riutilizzo del codice, un oggetto già testato può essere riutilizzato facilmente in molti altri sw; l'ordine nella programmazione, il codice risulta più strutturato. Si hanno però anche degli svantaggi, tra cui il più evidente è che aumenta la difficoltà di debug del codice.
Strutturare bene un software di grosse dimensioni è un arte, sta al programmatore scegliere l'approccio che più preferisce. Si possono fare software ben strutturati anche senza utilizzare la programmazione ad oggetti.
----------------------------------------
AUTORE: 482
DATA :03/10/2013 - 07:18:29
----------------------------------------
quindi mi sa che fanculizzero' l'OOP
----------------------------------------
AUTORE: 1078
DATA :03/10/2013 - 12:19:39
----------------------------------------
Secondo me sbagli!
Bisogna comunque provare.... Anche perchè la direzione di tutte le applicazioni future è l'orientamento ad oggetti. Questo non vale solo per Labview ma per tutti i linguaggi di programmazione!
----------------------------------------
AUTORE: 1078
DATA :04/10/2013 - 09:11:54
----------------------------------------
Geppo....
Sul numero appena uscito di Labview World ci sono due articoli che potrebbero interessarti: il primo articolo spiega le come strutturare un software con l'ottica di riutilizzo del codice e introduce anche la programmazione ad oggetti come valida soluzione; il secondo, invece, spiega proprio la programmazione ad oggetti e quando ne è consigliato l'uso.
Ovviamente sono due articoli di giornali, quindi danno una visione molto limitata dell'approccio sulla OOP però possono far capire qualcosa in più....
Buona lettura.
----------------------------------------
AUTORE: 482
DATA :04/10/2013 - 11:10:52
----------------------------------------
Ah quindi si scoprono gli altarini!
tu hai risposto per partito preso e non hai minimamente letto il mio post!
L'ho scritto proprio perchè avevo appena letto gli articoli su labview world...
..questo mi convince sempre piu' del complotto globale degli OOprogrammers per ribltare le sorti dell'umanità...
----------------------------------------
AUTORE: 1078
DATA :04/10/2013 - 15:46:32
----------------------------------------
No non parlo per partito preso!Il post l'ho letto...
solo che a me labview world è arrivata dopo e pensavo non stessimo parlando dello stesso numero di rivista.
Su quella rivista si parla di OOP un numero si e un numero no.....
----------------------------------------
AUTORE: 43
DATA :04/10/2013 - 16:10:56
----------------------------------------
[quote="gepponline":21owqkvr]Ah quindi si scoprono gli altarini!
tu hai risposto per partito preso e non hai minimamente letto il mio post!
L'ho scritto proprio perchè avevo appena letto gli articoli su labview world...
..questo mi convince sempre piu' del complotto globale degli OOprogrammers per ribltare le sorti dell'umanità...
[/quote:21owqkvr]
haha.
la lettera 'O' può essere confusa con la cifra Zero, quindi mi piace pensare questi OOprogrammers siano al pari dell'agente 007, dei programmatori segreti al servizio di qualche lobby...
Condivido il ragionamento di Ricky quando dice che espandere la propria conoscenza, non fa male, anzi. Accettare nuovi modi di lavorare o utilizzare nuovi strumenti di lavoro, specialmente se non siamo noi a sceglierli, indica che siamo ancora in grado di imparare cose nuove e che ci sappiamo adattare ai cambiamenti.
Scusa il pistolotto filosofico.
Vero è, che molti programmatori tradizionalisti, hanno una brutta opinione di LabVIEW e di conseguenza di chi lo usa, così come tu la hai nei confronti della OOP.
Riguardo la spinta che NI vuole dare alla prog. ad oggetti in LabVIEW, io non vedo nulla di diverso rispetto alla spinta che da all'utilizzo di LaBVIEW in genere.
Penso sia una questione di investimenti.
Così come il venditore NI dice che LabVIEW è facile da usare, ma trascura di dire che per fare cose complesse anche labVIEW può diventare complicato, così ti dicono che LVOOP va bene per progetti molto grandi, ma molto probabilmente potrebbe essere vero anche il contrario.
in generale leggi questo
http://www.saylor.org/site/wp-content/u ... -FINAL.pdf
penso sia una buona sintesi.
si trova molto materiale in internet riguardante l' OOP e LVOOP.
Secondo me, un giudizio su LVOOP lo può dare un vero programmatore OOP e a quanto si legge da + parti, LabVIEW , ad oggi, non può essere considerato un buon linguaggio di prog. ad oggetti, perchè non ne implementa pienamente tutte le caratteristiche.
bye
----------------------------------------
================================================================================
Aprire una cartella di windows alla pressione di un pulsante
================================================================================
AUTORE: 822
DATA :02/10/2013 - 14:18:59
----------------------------------------
Scusate sono un attimo in confusione (e qual è la novità?
)
Ma da labview premendo un pulsante devo aprire una cartella di windows, per visualizzarne il contenuto.. come posso fare?
----------------------------------------
AUTORE: 43
DATA :02/10/2013 - 14:27:59
----------------------------------------
[quote="giuseppe.l74":1ml2v8ux]Scusate sono un attimo in confusione (e qual è la novità?
)
Ma da labview premendo un pulsante devo aprire una cartella di windows, per visualizzarne il contenuto.. come posso fare?[/quote:1ml2v8ux]
Il tasto di cui parli è annesso al controllo di tipo Path.
Se il Path è un indicatore, il tasto non è visibile.
Visualizzare il contenuto di una cartella infatti, ha senso solo se si vuole selezionare un file o una cartella.
bye
----------------------------------------
AUTORE: 301
DATA :02/10/2013 - 14:37:58
----------------------------------------
Vedi "Run application" nella sezione download, basta che passi alla funzione solo il path della cartella....
Aris
----------------------------------------
AUTORE: 1078
DATA :02/10/2013 - 15:13:13
----------------------------------------
Puoi anche personalizzare la cosa utilizzando la "File Dialog" che trovi nelle funzioni avanzate nella paletta File di Labview. Associando la visualizzazione di quel VI-Express alla pressione di un qualunque "bottone" puoi far visualizzare una finestra che permetta la selezione di un file dal file sistem.
----------------------------------------
AUTORE: 822
DATA :02/10/2013 - 16:08:18
----------------------------------------
Grazie per le risposte, unendo i suggerimenti di Aris e Ricky ho risolto.
----------------------------------------
================================================================================
front panel to front
================================================================================
AUTORE: 10851
DATA :09/10/2013 - 16:07:47
----------------------------------------
è possibile sapere se un VI si trova sul front del monitor o se è dietro qualche altra finestra?
ho provato con il property node "FP.IsFrontmost" ma funziona solo con altri VI e finestre labview e non funziona con finestre di altri programmi.
Es. se c'è una finestra "Word" davanti al mio VI, tale property node non se ne accorge e restituisce sempre "true".
grazie in anticipo
----------------------------------------
AUTORE: 301
DATA :09/10/2013 - 17:06:17
----------------------------------------
Ti serve interagire con il sistema operativo....
Se non ricordo male, la libreria al link sotto metteva a disposizione anche queste funzionalità.
[url:1jxcb8n5]http://sine.ni.com/devzone/cda/epd/p/id/4935[/url:1jxcb8n5]
Aris
----------------------------------------
AUTORE: 1078
DATA :10/10/2013 - 07:40:41
----------------------------------------
Ciao Dino,
La proprietà [b:3dr7n92s]IsFrontMost[/b:3dr7n92s] del FrontPanel dice proprio se un VI è nascosto da altre finestre o meno.
Trovi la proprietà nell'elenco delle proprietà dei VI messe a disposizione dai property node. Se scorri l'elenco e selezioni Front Panel Window trovi appunto IsFrontMost.
Buon lavoro!!!
----------------------------------------
================================================================================
Leggere un file complicato e fare un grafico xy
================================================================================
AUTORE: 10853
DATA :10/10/2013 - 09:52:07
----------------------------------------
Salve a tutti, sono nuova nel forum e anche nel mondo labview.
In questo momento sto cercando di fare un VI che legge da un file e plotta un grafico xy. Nel file ci sono righe di testo intervallate a numeri e nel mezzo contiene le x e y del grafico.
Il file è del tipo
aaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbb
1 2 3 4 5 6
aaaaaaaaaaaaaaaaaaaaaaaa
cccccccccccccccccccccccc
x y z
1 2 2
2 3 3
3 4 4
4 5 5
Non posso pensare di cancellare un numero fisso di righe perchè il numero di righe prima dell'intestazione x y z non è costante (
). Mi servirebbe un comando che dice leggi nel file dal punto in cui trovi x y z i numeri immediatamente successivi. Esiste?
In più..
nel file di input ho ripetute periodicamente le intestazioni x y z
ad esempio
x y z
1 2 2
2 3 3
3 4 4
4 5 5
x y z
5 2 2
6 3 3
7 4 4
8 5 5
Non male come camurrìa vero?
HELP
grazie grazie grazie
----------------------------------------
AUTORE: 129
DATA :10/10/2013 - 10:34:27
----------------------------------------
Devi usare un match pattern in un ciclo e uno shift register in modo da rimuovere anche gli x y z successivi.
Ciao
----------------------------------------
================================================================================
Impostazioni HTML
================================================================================
AUTORE: 10842
DATA :10/10/2013 - 10:22:00
----------------------------------------
Salve a tutti, è la prima volta che scrivo su questo forum anche se è da un po che vi seguo. Ho un problema nella generazione di report nel formato HTML. In pratica non riesco a trovare come si allineano gli oggetti(scritte,tabelle o immagini) centralmente. Riesco ad inserirli ma li allinea automaticamente a sinistra. La versione di labview che uso è la 2013 in modalità evaluation per ora.
Nicola
----------------------------------------
AUTORE: 129
DATA :10/10/2013 - 11:28:36
----------------------------------------
Devi usare il codice html nei testi, nel caso di altri oggetti aggiungi prima un testo con solo codice html.
Ad esempio
<p align="center">Il mio testo</p>
Spero esserti stato utile, ciao.
----------------------------------------
AUTORE: 10842
DATA :10/10/2013 - 11:51:16
----------------------------------------
Ciao, grazie mille! Perfetto!
Se non disturbo avrei un altra domanda sempre su questo argomento. Ho creato un segnale simulato di prova e l'ho visualizzato su un waveform chart. Ora vorrei inserire questo grafico nel report HTML.Ho provato sia con Append image sia append control image ma non riesco a capire come fare.
----------------------------------------
AUTORE: 10842
DATA :10/10/2013 - 13:22:29
----------------------------------------
Anche una precisazione sulla risposta di prima. Ho provato con il testo e funziona. Ora però non riesco a farlo anche con gli altri oggetti. Se inserisco un testo mi fa il testo centrato e sulla riga successiva l'oggetto.Se non inserisco il testo ma solo <p align="center"></p> non mi cambia niente in quanto credo mi centra il testo soltanto che in questo caso non c'è.
----------------------------------------
AUTORE: 129
DATA :10/10/2013 - 15:37:12
----------------------------------------
Ciao,
per fare la stessa cosa con i controlli prima di inserire un control image, devi inserire un blocchetto per l'inserimento di testo, dove il tuo testo sarà codice htaml di apertura tag es. <div align=center> poi il VI per l'inserimento del control (se non ricordo male devi collegare una reference del controllo) e quindi un altro blocchetto testo con il codice di chiusura del tag </div>.
----------------------------------------
AUTORE: 10842
DATA :10/10/2013 - 15:58:10
----------------------------------------
Grazie mille funziona!!
Invece per quanto riguarda l'inserimento di un waveform chart?
----------------------------------------
AUTORE: 129
DATA :10/10/2013 - 16:19:25
----------------------------------------
Come ti dicveo, devi creare una reference del controllo (tasto destro sul controllo e Create Reference) che collegarai al terminale del VI "Append control image to report". Ovviamente La waveform deve essere già popolata nel momento in cui ne prendi l'immagine.
----------------------------------------
================================================================================
velocità di una DLL in Labview
================================================================================
AUTORE: 2196
DATA :21/10/2013 - 11:39:57
----------------------------------------
Perchè a parità di DLL l'esecuzione dellsa stessa è molto più lenta in labview piuttosto che in un altro linguaggio di programmazione ?
La DLL in oggetto ha dei treahd interni e da misure fatte a parità di risultato labview impiega 45mS contro il 1us di altro linguaggio.
----------------------------------------
AUTORE: 2196
DATA :21/10/2013 - 15:05:55
----------------------------------------
Mi spiego meglio.
Labview 2012 su un PXI con windows 7 abbiamo un esecuzione parallela di codice labview (timed loop) e codice non labview (c , mingw). Il codice non labview dentro il labview è importato tramite una dll , questa crea un proprio thread...e su questo abbiamo i problemi. Sembra che lo scheduling di questo treadh venga influenzato da labview.
----------------------------------------
AUTORE: 482
DATA :22/10/2013 - 07:09:25
----------------------------------------
mi sembra decisamente eccessiva come differenza per non pensare a qualche problema di programmazione o di impostazione del vi, puoi postare un esempio?
----------------------------------------
AUTORE: 2196
DATA :22/10/2013 - 08:32:28
----------------------------------------
Intanto grazie per la risposta. Purtroppo non posso postare ne la dll nel il vi.
Quello che posso dire è che facendo girare la medesima dll in un ambiente non labview , abbiamo realizzato un simulatore ad hoc, le tempistiche dei thread interni sono decisamente più veloci rispetto alla stessa dll dentro una VI labview.
In Labview ho provato a modificare la priorità della VI ma senza alcun risultato.
Da ricerche in rete ho trovato questo:
http://www.grahamwideman.com/gw/tech/da ... ngmech.htm
Do in base a quello che c'è scritto sembra che labview abbia una sua politica per gestire i thread non labview....questo spiegherebbe il mio problema non lo risolve.
----------------------------------------
AUTORE: 482
DATA :23/10/2013 - 07:14:47
----------------------------------------
Nell'articolo che hai postato si parla di Sistemi Operativi NON-Windows non di thread non labview o ho capito male l'articolo?
Ipotizzo, non è che mandi nella DLL dei dati non congruenti tipo degli I32 anzichè degli U16 o robe simili?
Visto che hai dei vincoli nel postare il VI o la DLL, prova a realizzare un nuovo VI simile usnado che ne so, la user32.dll di Windows e poi eseguirla nel simulatore in un altro linguaggio per verificare se anche li hai la stessa differenza di esecuzione.
----------------------------------------
AUTORE: 2196
DATA :25/10/2013 - 14:14:30
----------------------------------------
Intanto grazie.
----------------------------------------
================================================================================
Come riconosco se il contenuto di una stringa è una lettera?
================================================================================
AUTORE: 822
DATA :29/10/2013 - 10:25:01
----------------------------------------
Ciao!
Ho bisogno di un consiglio.
Ho un controllo di tipo stringa al cui interno è contenuto un carattere, che può essere un numero oppure una lettera (può esserci scritto per esempio "D" come può esserci scritto "3").
Devo sviluppare una funzione che mi restituisca TRUE se all'interno del controllo di tipo stringa è presente una lettera, mentre FALSE se invece è un numero.
Qual è il metodo migliore?
----------------------------------------
AUTORE: 301
DATA :29/10/2013 - 12:47:03
----------------------------------------
Puoi usare la funzione "Scan String For Tokens", cercando un operatore numero (%d).
Se non trova un numero nella stringa il valore di offset past token è -1 altrimenti è l'indice a cui si trova il numero stesso.
Aris
----------------------------------------
AUTORE: 822
DATA :29/10/2013 - 13:47:55
----------------------------------------
Grazie,
farò così.
----------------------------------------
================================================================================
problema con il protocollo UDP
================================================================================
AUTORE: 10864
DATA :30/10/2013 - 08:31:15
----------------------------------------
Ciao a tutti,ho un problema sul protocollo UDP. Ovvero il mio fine è quello di trasferire un grafico da un host ad un altro. La mia professoressa mi ha indirizzato nell'usare un protocollo UDP. Ma nasce qui il problema,ovvero con il protocollo Udp posso inviare solo stringhe. Infatti nell'inviare parole o lettere non ho alcun problema. Come posso inviare un grafico. Ho pensato di cercare di suddividere il mio grafico in campioni o array e convertirli in stringhe ed inviarle,ma secondo voi è la strada giusta?potreste darmi una mano? grazie
Andrea
----------------------------------------
AUTORE: 482
DATA :31/10/2013 - 07:13:45
----------------------------------------
Le stringhe altro non sono che array di byte.
Sapendo questo, esistono tutte le funzioni per trasformare stringhe in array di byte e viceversa, smanettaci un po' e vedrai che si puo' fare
----------------------------------------
AUTORE: 10864
DATA :31/10/2013 - 08:06:40
----------------------------------------
Ma il problema è trasformare un grafico in stringhe o un array. Ad esempio come posso io creò un onda seno e poi? Sto cercando ovunque e grazie x la risposta
----------------------------------------
AUTORE: 482
DATA :31/10/2013 - 11:30:27
----------------------------------------
un grafico altro non è che un array di numeri no?
----------------------------------------
AUTORE: 10864
DATA :31/10/2013 - 12:01:58
----------------------------------------
E lo so, ma non riesco a trovare un metodo per la conversione. Ad esempio ho provato con flatter data, ma la comunicazione in matlab non avviene. Il grafico da me fatto è un semplice sin che ho trovato su già il blocchetto funzionale. Perchè alla fine l udp riceve solo stringhe.
Grazie
----------------------------------------
AUTORE: 129
DATA :02/11/2013 - 16:00:45
----------------------------------------
Che tipo di grafico hai?
Se si tratta di un Graph, o chart basta mettere un indicatore array(n colonne tante quante sono le tracce)se invece un XY Graph allora ogni traccia è un cluster che possiede un array x e un array y.
Una volta che porti tutto in array di stringhe puoi portare un messaggio per UDP di pura stringa (puoi trasformare l'array di stringhe in una stringa di tipo spreadshet con il vi Array to Spreadshet String.
Ciao, nicola
----------------------------------------
AUTORE: 482
DATA :04/11/2013 - 07:17:38
----------------------------------------
Esatto array to spreadsheet string credo sia quello che cerchi.
Tu puoi dare in pasto a quel blocchetto un array numerico e trasformarlo in uscita in una stringa, senza bisogno di portarlo prima in un array di stringhe.
----------------------------------------
AUTORE: 10864
DATA :04/11/2013 - 07:34:43
----------------------------------------
Grazie mille per le risposte, proverò a breve i vostri consigli. Ora sono bloccato nella udp. Ovvero interfacciare labview a simulink,. Ho provato con la funzione matlab judp ma riesco solo nell' inviare da matlab a labview e non il viceversa. Ho provato ad utilizzare l udp blocco di matlab, ma su simulink non f regge il comando fopen o fscanf
----------------------------------------
AUTORE: 10864
DATA :04/11/2013 - 20:38:24
----------------------------------------
ciao a tutti,ho risolto con l udp,ora mi manca solo il convertire il segnale in una stringa. il problema ora è creare un array numerico e creare un grafico,ma esiste un tutorial? o potete darmi una mano voi con qualche esempio. Sono nuovo di labview e non sono molto esperto.
grazie
----------------------------------------
AUTORE: 482
DATA :05/11/2013 - 07:10:39
----------------------------------------
Proprio perchè sei nuovo preferisco fartici arrivare per passi e non darti la pappa pronta.
(Anche perchè tu per primo non hai postato niente di tuo).
Innanzitutto tu hai un grafico e quello che c'e' nel grafico è già un array numerico.
Dici che il grafico lo riempi tramite un blocchetto Sine.
Il blocchetto sine, direi che puo' restituire o una waveform o un array (che poi tu dai in pasto al grafico)
Se è un array sei già a posto.
Se è una waveform non devi fare altro che usare gli appositi blocchetti per dividere la waveform nelle sue componenti che sono: X0,dt e l'array di Y.
Per aiutarti in quetso compito ti consiglio due funzionalità molto utili:
1) CTRL+H ti apre una finestra popup che ti visualizza l'help di qualsiasi oggetto labVIEW su cui tu passi il mouse nel diagramma
2) Nella palette usa la funzione search per cercare le funzioni legate alle waveform o alle stringhe.
Già che ci sono, credo che negli esempi ci sia qualcosa su come salvare un grafico su file, magari li trovi qualche suggerimento utile
SMANETTARE è la soluzione
----------------------------------------
AUTORE: 10864
DATA :05/11/2013 - 07:42:22
----------------------------------------
Ho visto esiste il sin generatore, dove posso mettere frequenza ampitude e mi genera il grafico, però penso che non sia la strada giusta. Posso provare a dare dei valori in ingresso e con un loop vedere poi il grafico. Ora ci provo e vedo che ne viene fuori. Ma per interfacciare con l udp posso creare un loop nel loop?
----------------------------------------
AUTORE: 482
DATA :05/11/2013 - 14:18:37
----------------------------------------
[quote="frascatano":1nwav0ql]Ho visto esiste il sin generatore, dove posso mettere frequenza ampitude e mi genera il grafico[/quote:1nwav0ql]
credo che il tuo errore sia qui.
Tu parli di generare un grafico ma un grafico è solo un oggetto grafico che visualizza un array di valori, quindi il sin genera un array si valori e li mette su un filo, sei tu che lo colleghi ad un grafico.
----------------------------------------
AUTORE: 10864
DATA :06/11/2013 - 12:08:25
----------------------------------------
Salve questo è ciò che ho fatto,ovvero all'esterno ho il blocco per l invio dell'udp,e non mi dà problemi. All'interno ho questo sin ed il suo grafico,come da voi consigliato per trasformalo in una stringa ho provato ad utilizzare il blocchetto array to spreadstring. Ma non funzione.
Forse perche il sin non mi crea un onda di array?
Ho provato anche a scomporre l'onda,utilizzando il blocchetto get waveform,ma in ingresso vuole un cluser credo(blocchetto marrone). Io in teoria dovrei mandare solo i valori delle ordinate,visto che mi serve in scala temporale su matlab.
----------------------------------------
AUTORE: 10864
DATA :06/11/2013 - 12:42:44
----------------------------------------
ho fatto dei passi in avanti,allora ora il problema è nel blocco arrey to spreadsheet,forse in ingresso dovrei mettere qualcosa? Non so,il passo logico mi sembra esatto,ma forse qualcosa mi sfugge.. grazie
----------------------------------------
AUTORE: 482
DATA :06/11/2013 - 12:48:07
----------------------------------------
Beh ti manc aproprio un niente
Allora, tornando alle dritte dle mio post precedente, premi CTRL+H e vai sul blocchetto array to spreadsheet.
Come puoi vedere i due ingressi sono in grassetto.
Quando sono in grassetto vuol dire che sono obbligatori e s enon ci colleghi niente avrai la famigerata freccetta rotta.
Quindi all'ingresso "format string" tu dovrai collegare una stringa che dica che tipo di dato stai convertendo in stringa. In questo caso si tratta di un DBL quindi scriverai in quella stringa %f (che indica un floating point)
----------------------------------------
AUTORE: 10864
DATA :07/11/2013 - 08:20:30
----------------------------------------
Buongiorno,allora nel mandare le ordinate di un grafico ci sono riuscito(mandare array asse y). Ora mi nasce un problema per mandare l array delle x,ho usato sempre il getwaveform e ma al piedino della t(componente delle ascisse) mi esce un cluster. Dall'help ho visto che posso usare il cluster 't0' array cosi da poterlo convertire in stringa,come ho fatto nella precedente VI. Qui nasce il problema perche sull'help del cluser to array in entrata ho un terminale marrone(ed è cio che io voglio),ma quando lo metto nel block diagramm diventa rosa(come se in ingresso volesse una stringa).
Grazie
----------------------------------------
AUTORE: 482
DATA :07/11/2013 - 10:17:36
----------------------------------------
stai confondendo i colori e il tipo di dato.
E' vero, t0 è marrone ma non è un cluster bensi' un dato di tipo Timestamp che puo' essere convertito con le funzioni che trovi nella palette timing.
La questione cluster rosa o marrone invece dipende dal tipo di cluster che hai.
Se sono tutti valori numerici allora è marrone, se contiene delle stringhe diventa rosa.
----------------------------------------
AUTORE: 10864
DATA :07/11/2013 - 10:43:41
----------------------------------------
ho provato nell'utilizzate getdata/getstring,ma mi invia la data o il tempo,a me servirebbe di convertire le ascisse del grafico. Nelle funzioni Timing ho il ritardo ed altre funzioni che non mio aiutano. Dove posso guardare?
----------------------------------------
AUTORE: 10864
DATA :07/11/2013 - 10:47:25
----------------------------------------
per tempo intendo l'ora
----------------------------------------
AUTORE: 10864
DATA :07/11/2013 - 10:50:55
----------------------------------------
perchè trasferendo le y tramite l udp a matlab,su matlab ho lo stesso grafico generato in labview ma le ascisse sono sfasate,quindi ho pensato di creare un altra VI e generare lo stesso segnale,ma in quest'ultima inviare le ascisse. Cosi nel fine di andare su matlab e plottare insieme le ascisse con le ordinate,cosi da avere lo stesso grafico generato in labview
----------------------------------------
AUTORE: 10864
DATA :07/11/2013 - 10:57:20
----------------------------------------
oppure non esiste un timestamp to number? il duale esiste....
----------------------------------------
AUTORE: 482
DATA :08/11/2013 - 07:20:19
----------------------------------------
..le ascisse nel grafico (a me no che non sia un grafico XY)non esistono.
Nel senso che sono intrinseche nel codice.
Per ricavarle devi creare un array che parte da t0 e gli sommi dt per il numero di elementi dell'array Y
quindi se l'array di Y è composto da 60 elementi
t0= 12:45:00
dt= 1000ms
dovrai creare un array di 60 elementi dove il primo elemento è 12:45:00 e l'ultimo è 12:45:59
quindi:
12:45:00
12:45:01
12:45:02
12:45:03
12:45:04
ecc ecc
pero' questo array te lo devi creare tu.
----------------------------------------
AUTORE: 10864
DATA :09/11/2013 - 10:38:12
----------------------------------------
graie mille ho risolto.........
----------------------------------------
================================================================================
creare eseguibile con labview 64 bit per un sistema a 32 bit
================================================================================
AUTORE: 10842
DATA :07/11/2013 - 14:38:24
----------------------------------------
salve, io uso labview 2012 su un computer con windows 7 a 64 bit. Ho realizzato una semplice vi e ho creato il file exe. Sul mio pc funziona e non mi da problemi. Poi ho trasferito il file su un altro pc che però è a 32 bit e, giustamente credo, mi dice che non è un applicazione di win32 valida. Posso in qualche modo creare un eseguibile dal mio 64 bit che vada bene per il 32 bit?
----------------------------------------
AUTORE: 301
DATA :07/11/2013 - 19:09:57
----------------------------------------
Credo non vi sia modo.....
E' di sicuro possibile il contrario (io stesso lavoro su una macchina a 64 bit ma sviluppo con LV a 32 ed i miei vi girano sia su questa che su macchine a 32), ma se hai un exe a 64 bit, non credo sia possibile fare nulla.
L'unica cosa che mi viene da dirti è di controllare le varie opzioni dell'App builder (non ho mai usato LV 64 bit) e verificare se ti dà modo di creare un exe per 32.
Aris
----------------------------------------
AUTORE: 482
DATA :08/11/2013 - 07:21:54
----------------------------------------
Tu sviluppi su un 64bit con labview a 64 bit?
----------------------------------------
AUTORE: 10842
DATA :08/11/2013 - 11:06:46
----------------------------------------
[quote="gepponline":1oylhhgk]Tu sviluppi su un 64bit con labview a 64 bit?[/quote:1oylhhgk]
Si ma ho trovato una faq sul sito di ni che conferma che non si può fare. Ho risolto passando la VI in un pc con la versione a 32 bit e ho creato l' EXE da li.
Grazie mille
----------------------------------------
AUTORE: 129
DATA :19/11/2013 - 13:47:53
----------------------------------------
Io penso sia legato al labview 64 piuttosto che w64, io ho w7 64bit labview 32bit e non ho problemi a spsostarmi da un pc 32 a uno 64 e viceversa in quanto si compila tutto a 32bit.
Non so se nel dvd può essere diversificato se usare una versione a64 o 32bit, se così fosse, basta reinstallare una versione del LV 32bit.
----------------------------------------
AUTORE: 10842
DATA :20/11/2013 - 08:28:52
----------------------------------------
Si scusa intendevo una versione 32 bit di labview. Mi ero espresso male.
----------------------------------------
================================================================================
Nel protocollo UDP è possibile inviare solo stringhe?
================================================================================
AUTORE: 10864
DATA :09/11/2013 - 10:45:53
----------------------------------------
Ciao ragazzi,ho questo quesito da proporvi. Devo sempre interfacciare Labview a Simulink e ho pensato di utilizzare un protocollo UDP. In Simulink esiste un blocchetto UDP receive ma può ricevere dati in int8,int32,double,ma non in stringhe. Quindi mi chiedevo se esisteva un modo per non mandare,tramite Labview, stringhe ma double o int8. Ho trovato un altro metodo senza utilizzare il blocco UDP receive,ma la mia prof è una vera rogna
Grazie
Andrea
----------------------------------------
AUTORE: 927
DATA :18/11/2013 - 10:50:13
----------------------------------------
Prova a trasformare la serie di int8 che vuoi trasmettere in una stringa, usando Byte Array To String
----------------------------------------
AUTORE: 645
DATA :20/11/2013 - 15:52:41
----------------------------------------
Effettivamente a me è sempre capitato di mandare stringhe: http://www.ni.com/white-paper/4950/en/
Poi prendevo i dati alla fine della trasmissione e li convertivo nel formato da utilizzare.
----------------------------------------
AUTORE: 10864
DATA :27/11/2013 - 16:17:17
----------------------------------------
Grazie per le risposta, ci sono riuscito
----------------------------------------
================================================================================
Salvataggio file log
================================================================================
AUTORE: 10868
DATA :10/11/2013 - 15:10:14
----------------------------------------
Salve a tutti ho un problema con un programma in labview......ho scritto un programma per monitorare 4 bilance, il programma attualmente fa operazioni su i dati che riceve dalle 4 bilance e funziona abbastanza bene, il problema sorge ora....vorrei implementare in questo sistema un subvi che mediante un tasto sul mio front panel apra un file qualsiasi (binario txt o via dicendo....)sul mio pc che salvi le 4 pesate delle singole bilance e la pesata totale con data e ora e chiuda il file quando il vi viene stoppato....il sistema lavora con 4 local che sono i 4 pesi delle bilance....spero di essere stato chiaro nella spiegazione aspetto con ansia i vostri consigli
----------------------------------------
AUTORE: 129
DATA :11/11/2013 - 03:56:21
----------------------------------------
[quote:1u5b0siv]mediante un tasto sul mio front panel e apra un file qualsiasi[/quote:1u5b0siv]
Le 4 local le puoi inserire in un array, quindi usi Array to spreadsheet file.
[quote:1u5b0siv]la pesata totale con data e ora e chiuda il file quando il vi viene stoppato[/quote:1u5b0siv]
Calcoli il totale e lo aggiungi all'array prima di salvarlo con l'array to spreadheet File.
Evento di stop, chiudi con close vi il riferimento al file.
----------------------------------------
================================================================================
vi FPGA da snellire
================================================================================
AUTORE: 482
DATA :14/11/2013 - 12:44:03
----------------------------------------
..ma ciao!
per la prima volta da quando uso prodotti national, non sto ottenendo l'assistenza sperata da mamma NI quindi eccomi qui.
Premetto che non ho nessuna esperienza sugli FPGA.
Mi sono fatto prestare un cRIO9076 (con un 9263 e 9215 per input e output) da NI per verificare se posso realizzare un sistema PID abbastanza veloce da controllare delle forme d'onda a 50Hz da un sistema pneumatico.
Detto questo, ho realizzato tutto il software, ma all'atto della compilazione mi da errore perchè a quanto pare il tutto occupa troppe risorse.
Gli array che si vedono avevano un size settato a 1000 e ci ho messo 2 settimane per scoprire da NI che erano troppo grossi e quindi si impallava tutto prima ancora di cominciare l'effettiva compilazione.
Detto questo, adesso settati a 100 la compilazione parte ma poi da l'errore di cui parlavo.
Siccome la compilazione richiede diverse ore, prima di procedere per ipotesi chiedo a chi ha piu' esperienza di me, quale sarebbe secondo voi il metodo migliore per snellire questo VI?
Se i 3 array li metto in un unico cluster o un array bidimensionale è meglio o è peggio?
altre migliorie?
grazie!!
p.s. se vi da errore, in ingresso al pid c'e' un analog input e in uscita un analog output.
----------------------------------------
AUTORE: 301
DATA :14/11/2013 - 15:27:05
----------------------------------------
Ciao Geppo!
Potresti salvarlo per il LV 10?
Aris
----------------------------------------
AUTORE: 482
DATA :14/11/2013 - 15:45:55
----------------------------------------
eccolo
----------------------------------------
AUTORE: 301
DATA :15/11/2013 - 07:08:46
----------------------------------------
Geppo,
purtroppo non ho molta esperienza nemmeno io, ma da quel paio di volte che ho usato FPGA posso dirti:
1_ evita gli array come la peste (se possibile),siano costanti, indicatori o controlli.
2_ elimina qualsiasi tipo di autocasting dei dati (elimina tutti i coercion dot).
3_ elimina qualsiasi tipo di oggetto sul FP che non ti serva davvero.
4_ prova a sostituire gli shift register con delle variabili locali.
5_ se hai ancora problemi, cerca di sostituire i FXP con degli interi.
Aris
----------------------------------------
AUTORE: 301
DATA :15/11/2013 - 07:12:53
----------------------------------------
Per la sostituzione degli shift register, intendo quelli dove salvi degli array......
Aris
----------------------------------------
AUTORE: 482
DATA :15/11/2013 - 07:26:56
----------------------------------------
eh occhei...ma come? nel senso che la funzione che devo implementare è quella che vedi.
Io ho un PID che gira e fuori voglio sapere cosa sta facendo.
Al momento sto provando sostituendo gli array e gli shift register con delle fifo.
----------------------------------------
AUTORE: 301
DATA :15/11/2013 - 07:58:17
----------------------------------------
puoi provare a mantenere gli array su cui "lavori" ma leggendoteli nei vari punti tramite variabili locali e non shift registers.
Per portarti fuori i dati invece (come dici giustamente tu) sfruttare delle fifo.
Ogni array che vai a mettere nel programma FPGA si prende una parte di spazio fissa, ed ho il timore che anche gli shift register "dichiarino" una porzione di gates, per questo ti dico di usare delle local (che nella programmazione FPGA sono più usate).
Aris
----------------------------------------
AUTORE: 482
DATA :15/11/2013 - 08:19:40
----------------------------------------
adesso vedo, per il momento ho eliminato completamente gli array, che servivano solo per portare fuori i dati, sostituendoli con delle FIFO.
sto facendo la compilazione ma ci vogliono ore
Se per caso fosse la strada giusta, al momento sono solo rammaricato che non mi sia stato detto 3 settimane fa un semplice "togli gli array e usa le fifo"...
intanto ti ringrazio per l'aiuto
----------------------------------------
AUTORE: 301
DATA :15/11/2013 - 08:23:54
----------------------------------------
Ho le dita incrociate per te.....so cosa significa stare li a guardare una compilazione che avanza.....
Scherzi a parte, se hai eliminato gli array, dovrebbe essere più veloce a compilare!
Aris
----------------------------------------
AUTORE: 482
DATA :15/11/2013 - 11:19:55
----------------------------------------
Due array mi restano e non saprei come poterli eliminare...a meno che i register non possano essere degli array...
Allego la situazione attuale.
----------------------------------------
AUTORE: 301
DATA :15/11/2013 - 13:19:55
----------------------------------------
Cosa in tendi con " a meno che i register non possano essere degli array"?
Hai provato a compilare l'ultimo postato?
In linea teorica dovrebbe essere molto più ottimizzato del primo!
Aris
----------------------------------------
AUTORE: 482
DATA :15/11/2013 - 14:01:56
----------------------------------------
si cazzarola, hio provato e sembrava funzionare, s enon fosse che mi ero dimenticato di aver staccato la ethernet dal cRIO per collegarmi in rete e postare il vi!! doh!!
..e quindi è andato in errore quasi alla fine...
Ci riprovo lunedi'!
----------------------------------------
AUTORE: 301
DATA :15/11/2013 - 14:06:18
----------------------------------------
he he.....dai che và!
Buon we!
Aris
----------------------------------------
AUTORE: 301
DATA :18/11/2013 - 12:48:22
----------------------------------------
Te la dovresti trovare tra i blocchi funzione del RT.....
Aris
----------------------------------------
AUTORE: 301
DATA :18/11/2013 - 13:08:08
----------------------------------------
Ho fatto una prova stupida, nello stesso progetto, dovresti avere sia il target FPGA che il rel time.
se trascini la FIFO che ti trovi in dipendenza dell'FPGA nel vi RT dovrebbe funzionare tutto!
Aris
----------------------------------------
AUTORE: 482
DATA :18/11/2013 - 13:23:26
----------------------------------------
ho cancellato subito il post perchè poi l'ho trovato.
E' un invoke node, solo che non si poteva modificare direttamente una volta creato un write
----------------------------------------
AUTORE: 301
DATA :18/11/2013 - 13:39:59
----------------------------------------
Bene, quindi mi sembra di capire che la compilazione è andata...
Aris
----------------------------------------
AUTORE: 482
DATA :18/11/2013 - 14:16:55
----------------------------------------
assolutamente si e ci ho preso talmente gusto che ho fatto una modifica e l'ho fatta ripartire ghgh
----------------------------------------
================================================================================
è possibile creare un protocollo udp temporizzato
================================================================================
AUTORE: 10864
DATA :15/11/2013 - 05:48:58
----------------------------------------
Salve, sono riuscito ad inviare un segnale da labview a matlab, tramite il protocollo udp. Ora la prof mi sta chiedendo di inviare un singolo byte per volta per poi riunirsi insieme e creare il segnale. È possibile? Io ho fatto il contrario ovvero mando tutto il segnale e poi me lo pacchetto dopo in simulink, invece lei vorrebbe mandare il segnale impacchettato per poi ricomporlo.
----------------------------------------
AUTORE: 482
DATA :15/11/2013 - 07:07:36
----------------------------------------
beh è una professoressa, e DI SOLITO i professori chiedono di fare cose già fatte o cmq fattibili, quindi la risposta alla tua domanda è SI, E' POSSIBILE.
Una stringa, quella che tu mandavi non è altro che un insieme di byte, quindi basta mandare una lettera alla volta
----------------------------------------
AUTORE: 645
DATA :20/11/2013 - 15:48:35
----------------------------------------
Anche secondo me puoi realizzare quello che ti è stato chiesto inviando sinoli bit o byte anzichè tutto il messaggio. In Simulink poi dovrai ricreare il dato.
Magari ti chiedono di confrontare eventuali differenze in termini di velocità di comunicazione ed elaborazione nei due casi.
----------------------------------------
AUTORE: 10864
DATA :27/11/2013 - 16:21:18
----------------------------------------
Ci sono riuscito, grazie. Ora il problema è se posso temporizzare l invio. Ovvero mandare ogni 0.0005 s un bit, perchè nella ricezione con il protocollo udp ho troppa perdita e credo che il problema sia che il secondo host non legge così velocemente come labview invia.
----------------------------------------
================================================================================
Comandi da tastiera
================================================================================
AUTORE: 10872
DATA :15/11/2013 - 23:14:16
----------------------------------------
Buona sera a tutti,
mi trovo a dover pilotare 2 motori, mi sarebbe molto comodo usare la tastiera ( le freccie) invece dei bottoni sullo schermo pilotati dal mouse. Ho letto che devo andare sul controllo ed accedere in Key Navigation ma vedo solo i tasti F* e pochi altri.
come posso fare?
grazie
----------------------------------------
AUTORE: 301
DATA :18/11/2013 - 07:04:34
----------------------------------------
Se non trovi i tasti che ti interessano, devi gestire la pressione tasto tramite una struttura ad eventi.
Aris
----------------------------------------
AUTORE: 129
DATA :19/11/2013 - 10:52:39
----------------------------------------
Puoi anche utilizzare i vi "Acquire input data" dalla palette "connectivity", ti restituisce il pulsante premuto, a questo gli colleghi una case per eseguire codice su questo tasto.
Ciao, Nicola
----------------------------------------
================================================================================
Come salvare le coordinate x,y di vari grafici.
================================================================================
AUTORE: 10874
DATA :19/11/2013 - 19:17:26
----------------------------------------
Cari ragazzi ho il seguente problema. Ho necessità di salvare le coordinate x, y di vari grafici senza effettuare la solita procedura che prevede export e quindi export data su excel. In pratica ho vari grafici e di questi grafici mi serve un file csv. In realtà, data la mole di file excel che dovrei tirare fuori mi farebbe piacere automatizzare il salvataggio e quindi la creazione di file csv. In pratica il problema è questo:
Ho vari grafici che devo convetire in un file excel in modo più semplice e più automatizzato rispetto alla classica procedura export data to excel. C'è una procedura più automatizzata che è possibile seguire?
Inoltro, un ulteriore problema è quello della formattazione del file excel (però questo è un problema secondario). Nel senso mi servirebbe che questo file excel sia strutturato in modo tale che sia riempita solo la prima colonna e che tutti i valori siano seprati da una virgola. Per esempio dovrei avere una cosa del genere:
1,2,3,4,5
12,34,14,15
11,17,18,10
Considerando che i valori (che io adesso ho inserito random) siano posizionati tutti nella prima colonna del file excel.
Non so se il problema è chiaro e se si può risolvere.
Grazie mille a chi mi aiuterà.
----------------------------------------
AUTORE: 482
DATA :20/11/2013 - 07:14:31
----------------------------------------
per la questione grafici, mancano un po' di informazioni.
Una innanzitutto, parli di grafici, ma che tipo di grafici sono?
Chart,Graph o XY?
Passando al problema dei dati in excel, partirei dal presupposto che quello che tu chiami sistema classico, non è per niente classico.
Il miglior modo per esportare dei dati in formato tabulato e quindi apribili in excel è quello di salvare un semplice file di testo opportunamente formattato.
Per farlo esistono due modi:
Usare il blocchetto "write to spreadsheet file" oppure si usa il blocchetto "array to spreadsheet" e poi il risultato lo si salva in un file di testo normalissimo con l'estensione .xls se si vuole che venga aperto con excel.
Nel tuo caso, ultilizzando il secondo esempio, mi aspetto di avere un array di stringhe dove in ogni elemento ci sono i 5 valori separati da una virgola e poi dai in pasto quell'array all'array to spreadsheet.
Stai attento pero' che usare un formato come quello che hai indicato, cioè con piu' valori separati da virgole in una stessa casella, puo' portare dei problemi in apertura nel caso i valori venissero interpretati come numeri e un numero non puo' avere piu' di una virgola.
----------------------------------------
AUTORE: 10874
DATA :20/11/2013 - 09:49:49
----------------------------------------
Scusami, ma non sono molto pratico di Labview. Ho iniziato a "sbariarci" da qualche giorno. In effetti la situazione è questa. Credo che si tratti di grafici in formato graph Si tratta di segnali generali e acquisiti da piezoelettrici montati su un pannello di alluminio. Il file labview che ho io è già stato scritto e va solo perfezionato, per capirci. Bisogna automatizzare questa procedura di salvataggio di dati in formato csv. Però in effetti, girovagando sul Labview mi è venuto all'attenzione il seguente comando: express, output, write to mesurements file. Qual'è la differenza tra questa cosa che dico io e lo spreadsheet che dici tu? Inoltre mi dici, gentilmente, come si gestisce il spreadhheet? Cosa ha bisogno in ingresso e cosa ha bisogno in uscita?
Grazie di tutto.
----------------------------------------
AUTORE: 482
DATA :20/11/2013 - 12:39:28
----------------------------------------
Partiamo dal primo step, il tipo di grafico.
Il grafico di tipo graph accetta in ingresso sia array numerici che waveform.
tu cosa gli dai in ingresso? Per facilitarti la vita, se è un array numerico odvrebbe essere arancio o blu, se è una waveform è marrone.
Questo te lo dico perchè se hai un array numerico di Y per trovare l'array di X devi usare i property node del grafico e risalire al T0 e dt del grafico, s ehai una waveform invece questi dati ce li hai già nella waveform e in ogni caso, una volta avuti quei dati ti devi costruire manualmente l'array di X.
Per quanto riguard ail salvataggio in CSV, lascia stare il measurement file che è un tipo di file apposito per salvare dati di misure che s enon sbaglio ha una struttra a tag tipo XML.
Tu vuoi un csv, quindi un semplice file tabulato da dei ";" quindi uno spreadsheet
Quindi, partiamo dal presupposto che il punto di partenza ideale sono sempre gli esempi di labview, quindi basta andare su Help->Find examples->search e scrivere spreadsheet.
Dopodichè nel dettaglio hai due vie, prendere l'array bidimensionale e darlo in pasto al blocchetto "Write to spreadsheet file" oppure utilizzare il blocchetto "array to spreadsheet string" e poi salvare su file di testo.
Nel passare da array a spreadsheet tu devi indicare fondamentalmente due cose:
1) il tipo di dato che vuoi in uscita %d se sono dei numeri decimali,%f per dei float ecc ecc, guarda l'help del blocchetto per le specifiche dei vari tipi di dato
2) il carattere separatore (nel caso del csv il ";")
Quando vuoi scoprire come funziona un blocchetto (subvi) basta che premi ctrl+h e ti comparirà l'help a garndi linee dell'oggetto su cui stai passando il mouse, da li puoi entrare poi nell'help dettagliato. Tieni presente che gli ingressi scritti in grassetto sono OBBLIGATORI.
----------------------------------------
AUTORE: 10874
DATA :24/11/2013 - 10:56:12
----------------------------------------
In realtà, purtroppo sei andato troppo nei dettagli e non ti ho tanto capito. Ho costruito un esempio semplicissimo dove in pratica si grafica la funzione di tipo esponenziale per un certo intervallo di valori che va da 0 a 0.99. Ho fatto sì che il tutto si visualizzazze su waveform chart e poi vorrei semplicemente fare un file csv utilizzando come x appunto i valori che vanno da 0 a 0.99 e poi come y i valori che ti fornisce il Labview. Ora, però, la questione è questa. Se io voglio utilizzare il spreadsheet come dici tu, come devo fare? Onestamente non so tanto utilizzarlo. Visto che si possono allegare i file, ti ho allegato il file che ho fatto. E' davvero studipissimo e non credo ci perdi troppo tempo. Vorrei capire un attimo la logica di questo comando e poi vedermela da solo. In pratica, quello che ti chiedo, se puoi è di aggiustarlo e fargli fare quello che potrei fare semplicemnte premendo con il pulsante destro del file sul grafico e fare export data to excel. E' questo che in pratica vorrei far fare al programma. Ora l'esempio che ho creato è stupidissimo ma mi serve solo per capire la logica del comando.
Se poi sei così gentile da spiegarmi anche la differenza (che da come ho capito esiste) tra il waveform chart e il waveform graph. Infatti, se in questo esempio avessi utilizzato il waveform graph mi dice errore e tipo l'ingresso e l'uscita non sono congruenti e vorrei capire perchè. Vorrei anche capire, se possibile, come ottenere i file in formato csv, nel caso in cui, al posto del chart avessi utilizzato il graph.
Mi scuso per essermi dilungato ma sto utilizzato il programma da una settimanina in sostanza.
Ti ringrazio nel caso tu voglia aiutarmi.
Grazie mille.
----------------------------------------
AUTORE: 482
DATA :25/11/2013 - 07:56:44
----------------------------------------
Purtroppo credo di non poterti aiutare o meglio non volere.
Mi spiego meglio, quello che tu mi chiedi è quello che viene definita PAPPA PRONTA.
Se vuoi ti spiego quello che vuoi, ma il lavoro al posto tuo non te lo faccio senno' non impari niente.
Al differenza tra Graph e chart è che il graph è un array di punti messi sul grafico in una volta sola.
Il chart è un punto singolo che viene accodato al prededente in continuazione.
Questo è il motivo per cui ti viene restituito un errore se usi il graph, perchè tu in uscita dalla funzione hai un valor esingolo e non un array.
Per questo stesso motivo, per recuperare i valori di Y, nel graph puoi utilizzare direttamente una variabile del grafico, mentre nel chart no perchè è un sigolo valore (l'ultimo inserito).
Per ottenere l'array dei valori presenti in un chart devi andare nel diagramma, clikkarci col destro e fare Create->property node, andare in fondo in fondo e selezionare History data. in quel modo avrai un blocchetto che ti restituisce tutti i valori di Y.
mancano i valori di X.
Per ottenere questi, sempre creando un property node->X scale->offset & multiplier otterrai il primo punto e la distanza tra i vari punti.
----------------------------------------
AUTORE: 10874
DATA :27/11/2013 - 18:24:42
----------------------------------------
Ok, grazie lo stesso. Adesso dovrei se possibile fare una cosa del genere. Ho un file excel dove sulle prime tre righe ci sono delle scritte numeriche mentre, sulla restanti righe ci sono dei valori numeri. In allegato ho messo l'immagine per capirci. Vorrei ora utilizzare il write to spreadsheet in modo tale che mi salvi sia tutti i numeri in colonna e sia queste parole nelle prime tre righe. In realtà, un ulteriore complicanza è il fatto che, in teoria, il numero di colonne non è fisso ma cambia a seconda di quello che voglio e quindi presumo dovrei mettere un controllore che mi permette di decidere il numero di colonne che devo inserire. Potrei sapere,di che funzioni mi devo dotare per fare questa cosa?
Grazie mille per l'informazione.
Spero di essere stato chiaro
----------------------------------------
AUTORE: 482
DATA :28/11/2013 - 07:12:51
----------------------------------------
ignora il fatto che ci siano dei numeri e tratta tutto come stringa.
Crea le righe di testo, poi prendi i numerici, con un blocchetto di conversione converti la tabella di numeri in una tabella di stringhe e l'accodi alle righe di testo.
Tutto il resto è pura manipolazione di array
----------------------------------------
AUTORE: 10874
DATA :28/11/2013 - 11:59:39
----------------------------------------
Scusami, ritorando al problema d prima ti volevo chiedere: Abbiamo un waveform chart e voglio estrarre i vari tempi sull' asse delle ascisse e vorrei sapere come si fa. Se ho capato bene come hai detto prima bisogna andare sul grafico e poi fare property node e poi offset e multiplier. Però vorrei capire come farlo funzionare. Nella fattispecie vorrei capire cosa mettere in ingresso e cosa mettere in uscita. Tieni presente che vorrei avere un vettore dove ho tutti i valori dei tempi in uscita. Se puoi essere più preciso te ne sarei grato.
----------------------------------------
AUTORE: 482
DATA :29/11/2013 - 09:50:12
----------------------------------------
Selezioni da Offset and multiplier, ALL Element.
Cosi' avrai un property node in lettura composta d aun cluster di due elementi.
Ci colleghi un cluster Unbundle (by name o normale è indifferente).
Cosi' ottieni i due numeri.
Poi aggiungi un property node "history data" al quale colleghi un array size per sapere da quanti punti è composto il tuo grafico.
Ora il tuo primo punto sarà il valore di Offset.
Il secondo punto sarà Offset + Multiplier
Il terzo sarà Offset + Multiplier *2
Il quarto sarà Offset + Multiplier *3
E cosi' via peril numero di elementi del grafico.
Il tutto lo realizzerai utilizzando dei cicli for e uno shift register.
----------------------------------------
================================================================================
Reset Grafico
================================================================================
AUTORE: 10842
DATA :20/11/2013 - 09:29:38
----------------------------------------
Salve, volevo chiedervi come si fa a resettare un grafico di tipo Graph o Chart. Per intenderci vorrei fare lo stesso reset che si riesce a fare con i grafici XY.
----------------------------------------
AUTORE: 482
DATA :20/11/2013 - 11:30:41
----------------------------------------
Nel caso del chart si usa il property node history, nel caso del graph gli si da in ingresso un array vuoto.
----------------------------------------
AUTORE: 10842
DATA :20/11/2013 - 15:32:34
----------------------------------------
Perfetto grazie mille!!
----------------------------------------
================================================================================
HART per sensori ABB in labview
================================================================================
AUTORE: 129
DATA :21/11/2013 - 10:45:21
----------------------------------------
Ciao a tutti, devo realizzare la configurazione delle scale di sensori ABB mediante il protocollo HART.
Il sistema parte da un convertitore MOXA Ethernet/RS485 quindi un multiplexer con fuinzioni di modem HART e il sensore ABB della serie 266.
Chiedo se qualcuno ha mai fatto qualcosa con HARt e se c'è qualcuno che mi può aiutare.
Grazie, Nicola
----------------------------------------
AUTORE: 645
DATA :16/12/2013 - 12:01:56
----------------------------------------
Hai visto http://www.ni.com/example/31203/en/ ?
Io non ho aperto il VI attaccato ma magari c'è la struttura iniziale per lavorare.
----------------------------------------
AUTORE: 129
DATA :17/12/2013 - 15:52:35
----------------------------------------
Ciao e grazie.
Purtroppo ho già provato questi VI ma non mi funzionano.
Non so se il non funzionamento è dovuto al fatto che la catena è formata da un convertitore Ethernet/RS485 --> un multiplexer --> un sensore. Secondo me devo aprire prima la comunicazione con il MUX aprendo la porta connessa al sensore e quindi dopo invio msg al sensore.
Bo??
Grazie comunque MAGIC.
----------------------------------------
================================================================================
struttura sequence e uscite digitali su scheda usb6008
================================================================================
AUTORE: 10877
DATA :25/11/2013 - 20:07:06
----------------------------------------
Vorrei usare la struttura SEQUENCE per comandare dei led che si accendono e si spengono alternativamente tramite una scheda usb 6008 è possibile? ho fatto delle prove usando delle variabili locali all'interno della SEQUENCE e mandando il segnale in uscita al di fuori della struttura, ma mi dà solo l'ultima FRAME mentre il pannello frontale funziona
correttamente.
posting.php?mode=post&f=1#
----------------------------------------
AUTORE: 482
DATA :26/11/2013 - 07:07:56
----------------------------------------
Presumo che l'errore sia legato a quando e come usi la funzione per scrivere le uscite.
Dovresti postare il tuo vi per capirci qualcosa.
----------------------------------------
AUTORE: 482
DATA :28/11/2013 - 08:16:34
----------------------------------------
Allego il vi che mi hai postato in privato perchè puo' sempre essere utile a qualcuno.
L'errore che fai è che è vero che fai una sequence, ma questa sequence è parallela alla scrittura nelle schede ma nello stesso ciclo.
quindi per ogni ciclo tu effettuerai le tre sequenze e una sola scrittura. Quindi quello che scriverai sarà tral'altro non sempre la stessa cosa perchè il tutto dipende da quale momento della sequenza verrà eseguita la scrittura sulle schede.
Per fare quello che vuoi fare tu, la scrittura delle uscite deve essere messa in un while parallelo a quello principale.
Poi, ma è roba di programmazione piu' avanzata, ci sarebbe da sincronizzare la scrittura con degli eventi, occorrenze o notifiche.
----------------------------------------
AUTORE: 10877
DATA :03/12/2013 - 21:04:08
----------------------------------------
[quote="gepponline":115r55x3]Allego il vi che mi hai postato in privato perchè puo' sempre essere utile a qualcuno.
L'errore che fai è che è vero che fai una sequence, ma questa sequence è parallela alla scrittura nelle schede ma nello stesso ciclo.
quindi per ogni ciclo tu effettuerai le tre sequenze e una sola scrittura. Quindi quello che scriverai sarà tral'altro non sempre la stessa cosa perchè il tutto dipende da quale momento della sequenza verrà eseguita la scrittura sulle schede.
Per fare quello che vuoi fare tu, la scrittura delle uscite deve essere messa in un while parallelo a quello principale.
Poi, ma è roba di programmazione piu' avanzata, ci sarebbe da sincronizzare la scrittura con degli eventi, occorrenze o notifiche.[/quote:115r55x3]
Ti ringrazio e vedo che è un buon inizio per approfondire nuovi argomenti. ciao
----------------------------------------
================================================================================
Continuità di un analog output
================================================================================
AUTORE: 482
DATA :27/11/2013 - 14:43:15
----------------------------------------
...ma ciao!
ho un problema ed un dubbio su una strumentazione che ho realizzato.
La programmazione è fatta con DAQmx.
Ho una struttura del tipo:
-Create channel
-Timing (Use waveform/continuous sample)
-Allow regeneration
-Write (Nchan-Nsamp)
[b:ww4eyy3s]Dubbio[/b:ww4eyy3s]
Quando devo modificare l'onda in ampiezza o shiftandola verso l'alto o il basso, semplicemente do un nuovo write con la nuova waveform.
Questo metodo mi garantisce il termine dell'esecuzione della waveform precedente o come dice l'help della write: "If the task uses any timing type other than on-demand, this VI returns immediately and does not wait for the device to generate all samples." ??
Al momento mi sembra che ci sia continuità ma mi è sorto questo dubbio. perchè se cosi' fosse, l'"on demand" mi costringerebbe a riscrivere l'onda ogni volta, giusto?
[b:ww4eyy3s]PROBLEMA[/b:ww4eyy3s]
Con la struttura sopra citata volendo cambiare la frequenza e quindi il dt della waveform, sono obbligato a stoppare e riavviare il task.
Per garantirmi invece una continuità nell'esecuzione della waveform, che metodo mi consigliate?
----------------------------------------
AUTORE: 129
DATA :05/12/2013 - 10:09:56
----------------------------------------
Non sono sicuro di aver capito bene, ma la frequenza della waveform che mandi in uscita la generi tu e quindi è la sua frequenza che entra nel write.
MI spiego meglio la frequenza che imposti per cui devi stoppare e riavviare l'esecusione è quella del rate della scheda in realtà.
Quella che tu vuoi modificare invece è quella del segnale che mandi in uscita e quindi la generi con una waveform che entra direttamente nel write.
----------------------------------------
AUTORE: 301
DATA :06/12/2013 - 06:58:42
----------------------------------------
Credo che il metodo che hai usato sia il più corretto...
In questi casi, spesso, uso gli express vi per vedere che tipo di codice LV "autogenera" e nel tuo caso fa effettivamente un caricamento onda>>start task>>verifica task done>>stop task.
Aris
----------------------------------------
AUTORE: 482
DATA :06/12/2013 - 07:26:49
----------------------------------------
Il problema è che il TASK done in quetso caso non è utilizzabile perchè avendo usato il timing con il "continuous sample" non c'e' mai un task done...
Allego l'estratto della mia applicazione.
----------------------------------------
================================================================================
frequenza invio dsti protocollo udp
================================================================================
AUTORE: 10864
DATA :27/11/2013 - 16:16:06
----------------------------------------
Ciao a tutti.
Ho creato una Vi che invia un acquisisce un segnale ecg e lo invia tramite un protocollo udp su un altro
Host dove ho simulink. In simulink attuo un acquisizione di 1 kHz con rt sync , libreria Real time window target,
Ma molti dati vengono persi! Qualcuno mi sa dire se è possibile inviare da labview in maniera temporizzatore? Ovvero la mia idea è mandare il segnale ogni 0.0005 secondi, così imponendo ilo stesso su simulink, do a matlab il tempo di leggere il dato.
Poi qualcuno sa la frequenza di invio di labview?
----------------------------------------
AUTORE: 482
DATA :28/11/2013 - 07:10:31
----------------------------------------
0,0005 secondi??? 5 micro??
Se parli di invii singoli te lo devi proprio scordare
Se parli di sample rate ci puo' stare ma devi mandare pacchetti di TOT dati.
In un sistema windows non puoi ragionare in termini di microsecondi, al massimo millisecondi, ma per essere piu' sicuro direi decine di milli.
----------------------------------------
================================================================================
calcolo volume di un segnale
================================================================================
AUTORE: 10214
DATA :03/12/2013 - 08:40:58
----------------------------------------
Ciao a tutti, io ho un segnale non regolare (può essere paragonato ad una cerchio, che a volte non si chiude su se stesso.
Avrei bisogno di sapere se posso calcolare il volume, esiste qualcosa di già pronto che passandogli due array di punti x,y mi calcola il volume?
grazie mille
----------------------------------------
AUTORE: 301
DATA :05/12/2013 - 10:39:28
----------------------------------------
Ciao,
a parte che credo tu voglia calcolare l'area e non il volume (altrimenti non ho capito io), ma sto segnale è paragonabile ad un cerchio o no?
Non riesco a capire cosa ti serve.
Aris
----------------------------------------
================================================================================
Accendere un led
================================================================================
AUTORE: 10886
DATA :05/12/2013 - 22:12:26
----------------------------------------
Salve a tutti, sono alle prime armi con Labview e attualmente vorrei ritardare l'accensione di un led per 5 secondi, sono riuscito a ritardarlo, ma ho notato che tale ritardo avviene anche in fase di spegnimento del Led cosa che vorrei evitare
Avete qualche idea???
Vi ringrazio
Ciao
----------------------------------------
AUTORE: 301
DATA :06/12/2013 - 06:54:43
----------------------------------------
ciao,
innanzitutto potresti postare il vi che hai fatto, secondariamente la risposta sta nella richiesta stessa.
Usa un "case structure" per attendere un tempo solo nella condizione che desideri.
Aris
----------------------------------------
AUTORE: 10886
DATA :06/12/2013 - 09:10:24
----------------------------------------
Allego quanto ho fatto, ma ho notato che ho sempre un leggero ritardo...
----------------------------------------
AUTORE: 1078
DATA :06/12/2013 - 11:20:15
----------------------------------------
Ciao Joule...
Non capisco dove sta il ritardo... Prova a mettere il tuo codice in while loop...
Il ritardo potrebbe dipendere dal fatto che usata "one shot" il tuo VI deve avviaarsi e farmarsi!
Non so se è chiaro!
----------------------------------------
AUTORE: 1078
DATA :06/12/2013 - 11:26:57
----------------------------------------
Ho detto una sciocchezza...
Anche senza loop a me il vi sembra funzionare bene...
ovviamente ci sono i tempi di start e di release della risorsa che danno l'impressione di ritardo... ma il vi funziona!
----------------------------------------
AUTORE: 10886
DATA :06/12/2013 - 12:51:42
----------------------------------------
Se provi a spostare l'interruttore su on noterai il giusto ritardo di 5 secondi, ma quando lo porti su off il led si spegne con un ritardo non costante.
La controprova è togliere il temporizzatore e noterai la velocità di risposta pari a 0, quindi per me non funziona come dovrebbe.
----------------------------------------
AUTORE: 482
DATA :06/12/2013 - 12:55:59
----------------------------------------
puoi salvarlo in un aversione precedente di labview? cosi' non posso aprirlo.
almeno la 2012
----------------------------------------
AUTORE: 10886
DATA :06/12/2013 - 13:29:34
----------------------------------------
In Allegato Ver. 10
----------------------------------------
AUTORE: 301
DATA :06/12/2013 - 13:56:21
----------------------------------------
Come immaginavo......
quello che hai fatto, va bene, ma ovviamente quando vai a spegnere il led il codice ha già iniziato ad aspettare....
per fare qualcosa che funzioni come vuoi con un input utente, le strade sono altre.
Se vuoi vedere un lampeggio con diversi tempi, invece, va bene quello che hai fatto tu. (vedi esempio modificato)
----------------------------------------
AUTORE: 10886
DATA :06/12/2013 - 14:48:05
----------------------------------------
Il led si deve spegnere senza ritardo solo in stato on deve esserci tale ritardo.
----------------------------------------
AUTORE: 301
DATA :06/12/2013 - 14:57:57
----------------------------------------
Va bene, va bene.....
questo è quello che chiedi.....
----------------------------------------
AUTORE: 10886
DATA :06/12/2013 - 15:20:30
----------------------------------------
Ok Aris cosi funziona
ti ringrazio, vorrei capire perchè hai messo un delay fuori dal case.
Il led si spegne subito perchè hai portato diretto il filo? ho notato che con le costanti T e F non crea il problema di prima
Grazi di nuovo ciao
----------------------------------------
AUTORE: 10886
DATA :06/12/2013 - 15:23:40
----------------------------------------
Scusami, volevo scrivere crea il problema di prima
----------------------------------------
AUTORE: 301
DATA :06/12/2013 - 15:36:28
----------------------------------------
Ti ho postato l'esempio giusto perchè sei alle prime armi......e questio spiega anche queste domande.....
In ordine:
1_ ho messo il delay per non far girare il codice "all'impazzata"
2_Funziona perchè ho utilizzato gli shift register e faccio accendere il led solo quando passo da interruttore off di un ciclo a interruttore on del ciclo successivo (dopo aver atteso).
3_ con le costanti non funziona perchè il case con il ritardo viene eseguito solo al primo ciclo in cui setto il pulsante on (usa la lampadina in alto per vedere come viene eseguito il codice....)
Aris
----------------------------------------
AUTORE: 10886
DATA :07/12/2013 - 15:39:27
----------------------------------------
[quote:275n5nz8]1_ ho messo il delay per non far girare il codice "all'impazzata"[/quote:275n5nz8]
Il resto l'ho capito ma questa no
funziona bene anche senza.
----------------------------------------
AUTORE: 301
DATA :09/12/2013 - 07:28:39
----------------------------------------
Funziona bene anche senza, ma se non metti un delay il codice richiede il massimo alla cpu.
nell'esecuzione di un programmino come quello che ti ho postato, probabilmente non cambia nulla, ma se inizi a mettere della roba "seria" impalli il pc.
Una temporizzazione va "sempre" messa.
Prova ad eseguire l'esempio con e senza il delay tenendo d'occhio il task manager, dovresti notare una differenza del carico sul processore.
Aris
----------------------------------------
================================================================================
STFT:spettrogramma
================================================================================
AUTORE: 10874
DATA :12/12/2013 - 17:27:37
----------------------------------------
Cari ragazzi ho il seguente problema. Ho allegato l'immagino di uno spettrogramma. Ora la questione è questa: vorrei fare in modo che in output possa avere le coordinate x,y del pallino rosso. In ordinata infatti ho la frrquenza di picco (che nel mio caso è la frequenza alla quale operiamo) e in ascissa c'è il tempo. Ora in pratica vorrei che si possa estrapolare, alla frequenza di picco, il tempo corrispondete. Quindi in pratica vorrei che in output si abbia la frequenza di picco (che è la zona rossa) e anche il tempo corrispondente alla frequenza di picco.
Grazie mille per l'aiuto.
----------------------------------------
AUTORE: 10874
DATA :13/12/2013 - 13:30:26
----------------------------------------
Cari ragazzi, per essere ancora più precisi allego la seguente immagine. In pratica ciò che vorrei fare è una cosa del genere: ciò ricavare le coordinate x e y del grafico inserendo l'ampiezza massima. Nell' immagine che ho allegato è stato fatto tutto graficamente utilizzando le proprietà del grafico però credo che sia un modo rozzo di fare la cosa. Ho centrato nella zona rosso l'intersezione dei due segmenti e mi sono uscite le coordinate del grafico. La cosa in se per se è buona, però non è proprio automatizzata. Ci potrebbe essere qualche altra cosa che è utile a questo scopo. Non c'è un qualcosa di allocato in memoria che mi permette di ricavare tutti i valori del grafico?
----------------------------------------
AUTORE: 10874
DATA :19/12/2013 - 12:45:21
----------------------------------------
Cari ragazzi, nessuno ha un idea di come potrei fare questa cosa? Nessuno ha qualche suggerimento in proposito? Grazie mille per l'ascolto.
----------------------------------------
================================================================================
Principiante e monostabile
================================================================================
AUTORE: 4193
DATA :15/12/2013 - 13:50:11
----------------------------------------
Scrivo ancora per avere info su un problema di cui non riesco avenire a capo.
Non riesco a capire bene il funzionamento dei blocchi di temporizzazione su LV2012 student edition. Riesco a realizzare dei cicli di "lampeggio" ma non dei monostabili in sequenza. Guardando diversi esempi mi sembra che utilizzino diversi tipi di structures, quindi immagino si possa risovere in diversi modi, ma quale è quello canonico o più corretto?
In particolare non riuscirei a realizzare un circuito monostabile che, alla pressione di un pulsante, mi accenda un led per tot tempo. Immaginavo di utilizzare Fire Software- Trigged Time Source ma non ho trovato documenti o esempi in merito a questo.
Mi sapreste indicare dove reperire documentazione o un esempio in merito?
Grazie
Nautiluso
----------------------------------------
AUTORE: 645
DATA :15/12/2013 - 23:04:52
----------------------------------------
Su due piedi potrei dirti di entrare in un ciclo quando premi il pulsante e collegare il LED al pulsante... Dopo un tot di tempo porti il pulsante a FALSE e di conseguenza anche il LED si spegne. Prova a realizzare un esempio in LabView e a postare il Block Diagram così partiamo da qualcosa.
----------------------------------------
AUTORE: 1670
DATA :15/01/2014 - 14:52:58
----------------------------------------
Ciao Nautiluso,
il monostabile io lo farei così . . . non so è quello che cerchi, ma comunque spero ti sia utile.
Buon lavoro
----------------------------------------
AUTORE: 129
DATA :25/01/2014 - 12:43:04
----------------------------------------
In alternativa ti propongo questo. Ha il beneficio di non interremporere l'esecuzione del ciclo in cui è contenuto.
----------------------------------------
================================================================================
STFT: Spettrogramma
================================================================================
AUTORE: 10874
DATA :25/12/2013 - 17:37:07
----------------------------------------
Cari ragazzi, vorrei chiedere la seguente cosa. Vorrei capire il significato di due parametri della STFT: il frequency bins e il time steps che sono due parametri che bisogna impostare quando si opera con la STFT. Da come ho capito è legato alla frequenza di campionamento, corretto? Qualcuno è in grado di dirmi qualche altra cosa? Qualcuno di buona volontà mi potrebbe spiegare se c'è qualche relazione tra la frequenza del segnale e il frequency bins? C'è una relazione che ci permette di dire, per esempio: a tot frequenza (60khz per esempio) utilizza un frequency bins di questo tipo (il valore di default è 512, per esempio) e così via. Insomma vorrei maggiori dettagli per capire a fondo questo parametro e quindi, di conseguenza, saperlo anche modificare con esattezza quando occorre.
P.S Ma il multipleier, del blocco offset e multipleier, per esempio quello dell asse x di un grafico,è legato al deltax tra un punto e un altro corretto? In pratica mi fornisce l'incremento della variabile sull' asse x?
Grazie mille a chi mi può aiutare.
----------------------------------------