================================================================================
Xcontrol
================================================================================
AUTORE: 3941
DATA :26/01/2012 - 16:55:03
----------------------------------------
Salve,
mi piacerebbe tanto imparare a creare dei XControl ma non riesco a trovare tutorial e articoli esaustivi in merito. Chiedo a voi se potete indirizzarmi e darmi una mano in merito
Ve ne sarei immensamente grato.
Grazie
----------------------------------------
AUTORE: 129
DATA :07/02/2012 - 13:13:41
----------------------------------------
per creare un Xcontrol devi avere una licenza professional di labview, questo è un requisito.
per imparare prova a vedere qui --> http://zone.ni.com/devzone/cda/tut/p/id/3198 o qui--> https://decibel.ni.com/content/groups/u ... esentation
----------------------------------------
================================================================================
Problema per generare una SineSweep con AWG
================================================================================
AUTORE: 3751
DATA :26/01/2012 - 17:05:47
----------------------------------------
Ciao a tutti..
ho realizzato un semplice .vi in labview per controllare un generatore di forme d'onda ed ottenre uno sweep lineare in frequenza da 1 a 20000 Hz.. ho poi preso da un esempio trovato nella sezione Ni Exemple un semplice .vi per verificare ciò che sta facendo il mio generatore.. e purtroppo quello che vedo è ben lontano da quello che dovrebbe fare il mio AWG! Sono sicuro che i dati in ingresso siano corretti ma purtroppo non riesco ad ottenere lo sweep desiderato.. cìè qualcuno che ha a che fare con questi generatori e può darmi una mano?? allego il progetto in 8.5..
Grazie mille..
----------------------------------------
================================================================================
Somma "banale", contatore infinito
================================================================================
AUTORE: 3428
DATA :01/02/2012 - 17:02:10
----------------------------------------
Salve, mi chiedevo come posso fare a rappresentare grandi numeri facilmente identificabili ad occhio nudo senza incorrere nell'elevazione ad esponente.
In Labview il massimo numero per un controllo è 18 446 744 073 709 551 615 cioè un U64 che non so neanche leggere. Come posso sommare 1 a questo numero e ritrovarmi 18 446 744 073 709 551 616 come numero o come stringa?
In sostanza a me serve il numero intero senza virgola mobile o esponente anche se fossero bilioni di milardi di trilioni di unita per simulare un contatore infinito, o quasi
Come faccio? è possibile?
----------------------------------------
AUTORE: 129
DATA :06/02/2012 - 12:28:03
----------------------------------------
hai provato ad unirli con join number sotto la palette adavanced/data manipulation?
dovresti avere la possibilità di unire due numeri di ordine inferiore e raccoglierli nell'ordine superiore, oppure viceversa li puoi dividere eseguire l'operazione elementare con il numero meno significativo e quindi riunirli.
----------------------------------------
AUTORE: 927
DATA :07/02/2012 - 11:11:07
----------------------------------------
Comunque il join non va più su di 64, perchè non esiste un tipo di dato simile... L'unica è simularlo a mano, ad esempio tramite un array di U64; quando il primo elemento è "pieno" aumenti di 1 il secondo elemento e riazzeri il primo, e così via, come fosse il riporto in un'addizione
----------------------------------------
AUTORE: 3428
DATA :07/02/2012 - 16:29:50
----------------------------------------
ok grazie, c'è da inventarsi qualcosa..
----------------------------------------
================================================================================
Tab control layout - Image only
================================================================================
AUTORE: 482
DATA :03/02/2012 - 14:59:54
----------------------------------------
...ma ciao!
oggi ono incappato in una cosa nuova.
Ho pensatodi mettere delle piccole immagini neivari tab di un tab control per rendere piu' immediata la comprensione di ogni tab.
Mi ricordavo che c'era qualcosa per mettere le immagini e infatti ho trovato in advanced->tab layout->image only (o anche text and image va bene).
Ma una volta settata questa opzione, come cacchio faccio a mettere delle immagini nei tab?!?
----------------------------------------
AUTORE: 129
DATA :06/02/2012 - 11:53:32
----------------------------------------
devi innanzitutto salvarti l'immagine in clipboard (edit/import picture from file) quindi ritorni sulla linguetta che vuoi editare e ancora tasto destro advanced/tab layout e siccome avevi scelto una propietà con immagine dovresti vedere in neretto import tio clipboard, schiaccia e vai).
Ciao, Nic
----------------------------------------
AUTORE: 482
DATA :07/02/2012 - 07:39:55
----------------------------------------
bastarrrdi! quindi niente drag&drop o copia e incolla......mmmmhh.....vabbhè!
grazie mille
----------------------------------------
================================================================================
Pulsante "esci" e pulsante "prosegui"
================================================================================
AUTORE: 4153
DATA :08/02/2012 - 12:28:23
----------------------------------------
Salve a tutti, innanzitutto chiarisco che sono un neofita e sto valutando LV (8.5) sviluppando una semplice applicazione di testing.
Vengo al dunque :
il problema e' assolutamente banale per voi esperti :
Ho un FrontPanel in cui l'operatore dovra' inserire il Serial Number dell'Hardware de collaudare, L'ID dell'operatore stesso etc etc.
Quando l'operatore ha terminato di inserire i dati, dovrebbe avere queste 2 opzioni :
un pulsante per proseguire col collaudo
un pulsante per uscire
All'interno della VI per ora ho inserito il consueto ciclo do-while col pulsante che fa uscire dal loop....
ma l'altro pulsante? Devo fare 2 loop do-while ognuno col proprio pulsante? Ma fuori dal loop come faccioa discriminare quale dei 2 pulsanti e' stato premuto?
E' necessario discriminare all'uscita del loop, quale dei 2 pulsanti e' stato premuto in modo da decidere se uscire o proseguire col collaudo.
Perdonate la banalita' del mio problema...ho sempre programmato in C/C++ e per me questo e' un approccio nuovo. Sto leggendo il manuale ma questo problema dovrei risolverlo quanto prima....
Saluti
Giovanni
----------------------------------------
AUTORE: 482
DATA :08/02/2012 - 12:35:38
----------------------------------------
i due pulsanti li metti in OR per uscire dal ciclo, e poi porti fuori il valore di quello che ti fa continuare e se è true, vai avanti col collaudo.
----------------------------------------
AUTORE: 129
DATA :08/02/2012 - 14:18:25
----------------------------------------
Io lo farei con un semplice case:
----------------------------------------
AUTORE: 301
DATA :08/02/2012 - 16:06:29
----------------------------------------
Chiedendo [quote:1kh1mos3]Ma fuori dal loop come faccioa discriminare quale dei 2 pulsanti e' stato premuto?[/quote:1kh1mos3], credo che tu voglia realizzare un subvi di popup.....
Quindi, crei il tuo vi con front pannel (quello che vuoi), metti in or "continua" ed "esci" come condizione di stop e crei un indicatore su uno dei 2 (o su entrambi).
Questo indicatore lo setti come uscita del tuo subvi, dopo di che lo setti come nascosto (in modo da lasciare invariato il front pannel).
In caso tu abbia collegato solamente "continua" come uscita, quando il subvi termina la sua esecuzione se "continua" è false l'operatore ha selezionato "esci" e viceversa.....
Aris
----------------------------------------
AUTORE: 4153
DATA :08/02/2012 - 16:44:22
----------------------------------------
Innanzitutto : GRazie a tutti voi.
Proprio perche' sono abituato a ragionare in termini di programmazione "sequenziale" avevo pensato al set di una variabile associata ad un evento (pressione di un pulsante) e la sua valutazione conseguente. Non mi e' chiaro pero' se con LV e' possibile.
Per gli altri suggerimenti, ora li provo e vi so dire
thanks
----------------------------------------
AUTORE: 301
DATA :08/02/2012 - 17:00:18
----------------------------------------
ma.....il vi di cui parli, è un popup che interroga l'utente e poi si chiude o è il programma principale?
----------------------------------------
AUTORE: 4153
DATA :08/02/2012 - 17:07:06
----------------------------------------
ok ho verificato. Penso utilizzero' la soluzione proposta da Nicola
penso che vi rompero' le scatole ancora per la generazione di un Report (di tipo semplice, ovvero solo testo) delle misure...
Grazie Ancora!
----------------------------------------
AUTORE: 482
DATA :09/02/2012 - 08:10:04
----------------------------------------
Ottima scelta
Nel caso, tieni presente che in alternativa al case, puoi usare una Event structure in modo da effettuare quel codice solo quando si verifica l'evento di pressione di quel tasto senza continuare a fare polling nel ciclo while.
----------------------------------------
AUTORE: 4153
DATA :09/02/2012 - 20:25:23
----------------------------------------
grazie Geppo questa non la sapevo...devo proprio prendere in mano il manuale e iniziare a smanettare!!
----------------------------------------
================================================================================
VI e subVI reentrant
================================================================================
AUTORE: 1033
DATA :08/02/2012 - 15:43:20
----------------------------------------
Ciao, in TestStand devo eseguire thread paralleli in cui sono richiamati dei VI. Per velocizzare l'esecuzione ho messo i VI come reentrant.
Domanda: affinchè un VI sia realmente reentrant anche tutti i suoi subVI devono essere reentrant? Se è così è una bella menata. Ho dei VI che che richiamano al loro interno decine di subVI, come si fa? Possibile che non ereditano questa proprietà dal VI padre (chiamante)?
GRAZIE.
----------------------------------------
AUTORE: 927
DATA :10/02/2012 - 11:09:21
----------------------------------------
Sono reentrant solo i subVI che hai esplicitamente dichiarato reentrant. Se un certo subVI non è reentrant, le esecuzioni parallele si fermeranno ad aspettare solo nel momento in cui dovessero chiamare contemporaneamente [i:ohapgdmz]quel[/i:ohapgdmz] subVI. Se è un subVI "veloce", probabilmente sarà ininfluente, quindi non devi preoccuparti proprio di [i:ohapgdmz]tutti[/i:ohapgdmz] i subVI. L'importante è che i subVI lenti, ad es. quelli che fanno comunicazioni con timeout, siano reentrant, dev'essere reentrant tutto il ramo della gerarchia che arriva fino a loro
----------------------------------------
AUTORE: 43
DATA :13/02/2012 - 08:50:11
----------------------------------------
[quote="Altomare":3orw2jez]Ciao, in TestStand devo eseguire thread paralleli in cui sono richiamati dei VI. Per velocizzare l'esecuzione ho messo i VI come reentrant.
Domanda: affinchè un VI sia realmente reentrant anche tutti i suoi subVI devono essere reentrant? Se è così è una bella menata. Ho dei VI che che richiamano al loro interno decine di subVI, come si fa? Possibile che non ereditano questa proprietà dal VI padre (chiamante)?
GRAZIE.[/quote:3orw2jez]
Spero che per velocizzare l'esecuzione tu abbia applicato tutte le tecniche che LabVIEW mette a disposizione, e non ti sia limitato all'uso della "rientranza".
Cmq sia, se il subVI è una [Functional Global] oppure se ha al suo interno [shift register] usati staticamente, a meno che lo si voglia fare volutamente,il subVI dicevo NON deve diventare reentrant
Fatti un bel VI che cambia l'attributo automaticamente:
- Carica il MainVI reentrant in memoria.
- crea un nuovo VI nel quale metti la funzione "Open VI" per aprire il VI caricato in memoria.
- cericati la lista dei subVI. Ripeti l'operazione per i subVI in modo da ottenere tutto l'albero delle chiamate in una lista unica di SubVI.
- apri ogni subVI e controlla la proprietà Execution -> IsReentrant (è un booleano) al limite verifica anche Execution -> ReentrancyType
-Con i dati ottenuti mettili in una MulticolumnListbox che ammette anche la selezione multipla, e seleziona automaticamente i VI non rientranti.
-a fronte della pressione di un tasto, tutti i VI selezionati dalla lista verranno riaperti, forzati a IsReentrant=True e salvati utilizzando il metodo Save -> Instrument
Questo esercizio Ti renderà il lavoro meno noioso...
bye
----------------------------------------
================================================================================
Speech Recognition (Riconoscimento Vocale)
================================================================================
AUTORE: 4154
DATA :08/02/2012 - 17:25:19
----------------------------------------
Buona sera a tutti ,
Sono nuovo del forum ho 18 anni e mi chiamo Davide .
Frequento un istituto tecnico industriale specializzazione informatica e quest'anno ho la "maturità" ; come progetto volevo portare un software in grado di riconoscere il linguaggio umano . Ora so che la cosa detta così spaventa : in realtà io dovrei solo riconoscere determinate frasi , interrogare un database e poi mostrare la risposta . Il problema sorge per lo più nel riconoscimento vero e proprio (interrogazione del DB e risposta già risolto). mi è stato detto che dietro il riconoscimento vi è una matematica abbastanza "tosta" che si può gestire con un toolkit di LabView ma comunque molto difficile da gestire a livello di programmazione ; d'altro canto leggendo in giro (compreso sito della NI ) ho letto che il problema si può risolvere con gli activeX ( so cosa sono ma non li ho mai usati) . Accetto consigli da chi magari ha un po più di esperienza nel campo o da chi si vuole immettere in questo campo e darmi una mano in questo progetto (verrà poi citato nella mia tesina se lo desidera
)
Grazie in anticipo .
----------------------------------------
AUTORE: 482
DATA :09/02/2012 - 08:09:03
----------------------------------------
curiosità, che istituto è?
Cmq..credo che quello che si vede in questo video sia quello che vuoi realizzare:
http://www.ni.com/swf/flv/labview/us/vista/vr/
Sul sito di NI ci sono diverse risorse.
Cerca anche Voice recognition oltre a speech.
----------------------------------------
AUTORE: 4154
DATA :09/02/2012 - 09:57:29
----------------------------------------
ITIS G.Cardano Pavia
Bhe diciamo che il video che mi hai linkato mostro un programma molto simile ma penso ci sia qualcosa di diverso :
a quanto ho capito quello ha un elenco di comandi che confronta grazie al riconoscimento vocale di Vista e in base al cambiamento di comando dato dal "Text" fa una determinata cosa . e fin qui è più o meno la stessa cosa che devo fare io .
l'elenco dei comandi io , però , l'ho nel database ed ad ogni comando è associata una risposta ( es. io dico :"come ti chiami?" e il software mi deve rispondere "pippo" . "come ti chiami?" e "pippo" fanno parte di una tabella del database io cerco nel DB "come ti chiami" e tiro fuori "pippo"). Ora nella mia beneamata ignoranza non penso di potere mettere un array di stringhe contenente tutte i comandi presenti nel DB
; poi questo dovrei riuscire a gestirlo , il problema mi sorge proprio nel :" Cosa fa quel SubVI in cui entrano l'array di comandi e il text ? "
----------------------------------------
AUTORE: 482
DATA :10/02/2012 - 09:05:07
----------------------------------------
cioè stai dicendo che il tuo problema non è riconoscere cosa dice l'utente ma come far interpretare quello che ha detto?
----------------------------------------
AUTORE: 4154
DATA :10/02/2012 - 10:30:18
----------------------------------------
Non so se rispondere Si o No
quello che devo fare io e prendere è il dato grezzo (quello che rileva il mio microfono ) e trasformarlo in una stringa per consultare il mio database ora a quanto ne so io potrei farmi un software che fa ciò (cosa molto ardua o almeno così mi hanno detto) oppure interfacciarmi tramite labview con un software che riconosca già e poi usare i dati che questo sw mi da per consultare il db ...
----------------------------------------
AUTORE: 482
DATA :10/02/2012 - 11:22:47
----------------------------------------
AH ecco, tu staicercando in labVIEW una strada già pronta?
Se e' cosi' CREDO che tu stia sbagliando approccio, nel senso che ANCHE CON LABVIEW dovresti svilupparti tu il software di acquisizioen che riconosce la voce e la trasforma in una stringa, non mi pare ci sia niente di già fatto..
----------------------------------------
AUTORE: 4154
DATA :10/02/2012 - 18:29:34
----------------------------------------
No mi sa che vengo frainteso
se devo svilupparmi il sw di riconoscimento alla fine penso me lo farò ... (ed è anche per questo che sto cercando una mano ... non avendo mai affrontato il problema dell'analisi del segnale vocale). stavo solo dicendo che ho letto in giro ( e anche diversi su sito di NI ) invece di farsi un software che analizza il segnale vocale usano software di riconoscimento come quelli già presenti in windows li interfacciano con labview per poi usare dati più semplici . ho provato a cercare qualche esempio in cui qualcuno parta da zero ma nada in più mi è stato detto che l'analisi del linguaggio umano è un campo in cui ancora si sta lavorando assiduamente ed è molto complicato perchè non è basato solo sull'analisi delle frequenze ma su una matematica che io , da studente delle superiori , non ho tra le competenze . ora se ce una via più breve ben venga , altrimenti cerco qualcuno che mi possa aiutare in questo compito che non voglio dire impossibile ... ma comunque complicato ...
----------------------------------------
AUTORE: 482
DATA :13/02/2012 - 07:28:37
----------------------------------------
Allora. adesso è tutto un po' piu' chiaro, quindi l'idea dovrebbe essere quella di procurarsi il software per windows che fa il riconoscimento vocale, poi cercare gli activeX che permettono di interfacciarsi con le funzioni di questo software.
E li non si scappa, è un lavoro che implica una assidua ricerca in rete di documentazione
----------------------------------------
AUTORE: 4154
DATA :14/02/2012 - 10:12:40
----------------------------------------
Ok mo ci siamo capiti
Non si potrebbe quindi avere una "tutorial" sugli ActiveX o magari è gia presente sul forum?
----------------------------------------
AUTORE: 482
DATA :14/02/2012 - 10:33:30
----------------------------------------
per l'uso degli ActiveX in generale ci sono un sacco di esempi in labview. Cerca ad esempio quelli riguardanti excel.
Il problema degli activeX è che ogni applicazione esporta le funzioni che vuole e quasi mai c'e' una documentazione.
Quindi in rete troevrai come usare gli activeX ma probabilmente non le spiegazioni delle singole proprietà e metodi.
Per iniziare puoi dare un occhiata anche a questo:
http://www.ultimaserial.com/lvtutor.html
----------------------------------------
AUTORE: 4154
DATA :14/02/2012 - 17:01:17
----------------------------------------
Ok grazie mille se avrò ancora bisogno scriverò ancora qui
----------------------------------------
AUTORE: 4154
DATA :17/04/2012 - 17:18:15
----------------------------------------
Ok ragazzi dopo un po di "pratica" con gli activeX ho deciso di usare quelli di Dragon Naturally Speaking per il progetto che devo realizzare.
Ciò che devo fare è la conversione nuda e cruda della voce in stringa . Qualcuno conosce già metodi e propreties node di dragon da usare.
Ho trovato questo esempio su sito di National :
http://zone.ni.com/devzone/cda/epd/p/id/4401
certe cose le capisco ma essendo il progetto vasto e data la mia poca esperienza mi perdo un pochino ... sono convinto che ciò che mi serve è li però non so filtrarlo e ottenere ciò che mi serve... qualcuno mi può aiutare ...?
----------------------------------------
================================================================================
Property nodes e sequenzialita'
================================================================================
AUTORE: 4153
DATA :11/02/2012 - 10:32:54
----------------------------------------
Buongiorno a tutti,
rieccomi con una delle mie domande da "dummy"
Ho preso spunto dall'esempio LV testSeq.llb per creare un semplice sequenziatore di test.
Ho creato per ogni test :
-una corrispondente casella Text Indicator che fa il display della misura
- un Led che indica se il test e' PASS o FAIL
Al termine della sequenza c'e' una casella di testo booleana che riassume l'esito con un PASS (Verde) o un FAIL (Rosso)
orbene, e' mia intenzione far si che questi LED e questa casella all'inizio del test, siano non visibili in quanto ha senso settarli true/fail solo DOPO che il test e' stato eseguito. (l'ideale sarebbe averli disabilitati e quindi visibili ma con colore neutro ma e' troppo complicato).
Mi sono arrabattato giocando con i property nodes ed ho disabilitato i LED all'inizio (come da figura allegata), riabilitandoli dentro nel ciclo CASE corrispondente al test in esecuzione.
Ho qualche perplessita' pero' su come riabilitare la casella booleana di testo (che riassume l'esito di tutto il collaudo), la quale dovrebbe essere riabilitata solo all'ultimo, quando tutti i test sono stati eseguiti.
Per chi proviene da anni di programmazione procedurale, e' un po' difficoltoso...capire in che modo SEQUENZIALIZZARE le varie operazioni e far si che una cosa sia eseguita prima o dopo un'altra : io mi aspetterei di settare il property node appena prima di settare la casella con un True/false...si puo' fare?
So che per voi e' una bazzecola...mi date una dritta? Vi link anche l'immagine del test sequencer....non inorridite
Anzi se avete consigli...io sono qui per imparare!
Vi allego l'hardcopy del sequencer (spero si veda)
Saluti a tutti!
[img:10wvhu5s]http://img807.imageshack.us/img807/1970/testseq.jpg[/img:10wvhu5s]
[url:10wvhu5s]http://img807.imageshack.us/img807/1970/testseq.jpg[/url:10wvhu5s]
----------------------------------------
AUTORE: 482
DATA :13/02/2012 - 07:35:32
----------------------------------------
Innanzitutto nell'esempio che hai mandato non c'e' nessuna casella di testo.
Poi il property node lo setterei DOPO aver inserito il valore true o false, altrimenti potresti vedere un cambio di stato velocissimo subito dopo che l'hai resa visibile.
Io collegherei un case al filo in basso dove viene fatto il controllo del numero di iterazioni.
Quindi dopo aver fatto l'ultimo controllo, se la i è uguale al valore di quel filo, allora setto il valore e il property node.
----------------------------------------
================================================================================
Estrarre blocchi di dati da un array
================================================================================
AUTORE: 4155
DATA :12/02/2012 - 23:57:47
----------------------------------------
Salve a tutti,
sono nuovo del forum e relativamente nuovo del software Labview, premetto che ho effettuato diverse ricerche di soluzioni al problema che sto per porre ma non ho trovato riscontri.
Ho 4 array composti da numeri, tutti i vettori sono delle stesse dimensioni, per intenderci chiamerò un vettore X e gli altri Y1,Y2 e Y3.
L'array X è costituito da blocchi alternati di valori nulli e valori non nulli, ciò che devo fare è trovare le porzioni di array in cui X è non nullo ed estrarre tali porzioni in un sub-array di dimensioni minori (oppure eliminare direttamente le parti nulle dall'array di partenza).
In parallelo devo fare la stessa cosa su Y1, Y2 e Y3 estraendo i valori corrispondenti agli indici dei dati precedentemente estratti da X.
Non ho difficoltà a realizzare una operazione simile in Matlab, mentre non riesco ad implementare in Labview l'analogo codice, qualcuno pò darmi qualche indicazione per risolvere il problema?
Grazie
----------------------------------------
AUTORE: 482
DATA :13/02/2012 - 07:48:57
----------------------------------------
QUando colleghi un array ad un operatore (ad esempio l'uguale) hai la possibilità di collegare all'altro terminale sia un array che un valore singolo.
QUindi se tu colleghi ad un uguale il tuo array e uno zero, in uscita avrai un array di pari dimensioni del tuo, composto da true o false.
Questo array lo puoi dare in pasto ad un ciclo FOR con l'autoindexing.
In questo for metti tanti shift register quanti sono gli array che vuoi filtrare.
Quando il valore dell'array booleano è TRUE non fai niente, quando è false, aggiungi il valore dell'array in quell'indice, all'array risultante.
Vedi l'immagine allegata.
----------------------------------------
AUTORE: 43
DATA :13/02/2012 - 09:18:53
----------------------------------------
[quote="gepponline":56o1l44w]QUando colleghi un array ad un operatore (ad esempio l'uguale) hai la possibilità di collegare all'altro terminale sia un array che un valore singolo.
QUindi se tu colleghi ad un uguale il tuo array e uno zero, in uscita avrai un array di pari dimensioni del tuo, composto da true o false.
Questo array lo puoi dare in pasto ad un ciclo FOR con l'autoindexing.
In questo for metti tanti shift register quanti sono gli array che vuoi filtrare.
Quando il valore dell'array booleano è TRUE non fai niente, quando è false, aggiungi il valore dell'array in quell'indice, all'array risultante.
Vedi l'immagine allegata.[/quote:56o1l44w]
Volendo spaccare il capello in quattro, la versione di Geppo può essere migliorata nel seguente modo:
metti
- il controllo di uguaglianza =0 dentro il ciclo For
- usa il controllo =0 invece di quallo di = che trovi nella palette "Comparison"
Se per caso il problema fosse la viasualizzazione grafica ti consiglio, invece di compattare i dati, di sostituire le coordinate non valide con il valore NaN
come nell'esempio che allego
[attachment=0:56o1l44w]NaN_XYGraph.vi[/attachment:56o1l44w]
bye
----------------------------------------
AUTORE: 4155
DATA :13/02/2012 - 14:27:56
----------------------------------------
Grazie ad entrambi dell'interessamento!
Ho inserito il vostro consiglio ma ho ancora un problema:
Lasciando il case structure true (x=0) vuoto, i connettori (quadratini sul case in uscita) di uscita dal case anzichè essere arancioni sono bianchi e questo mi da errore
"The Case or Event structure does not have anything wired to the output tunnel in one or more cases. Since only one frame of the structure is executed, every frame must assign values to all the outputs. Right-click the tunnel and select Use Default If Unwired to relax this requirement."
Seguendo l'indicazione dell'errore i connettori non diventano completamente arancioni come l'immagine allegata da gepponline ma restano ancora parzialmente bianchi, il programma viene eseguito ma il ciclo si arresta al primo tratto non nullo di x e tra l'altro mi tralascia dei dati (confronto grafico tra l'estrazione e l'originale x).
Come ottengo che venga passato in rassegna l'intero vettore?
Grazie!
----------------------------------------
AUTORE: 4155
DATA :13/02/2012 - 14:29:55
----------------------------------------
Allego una immagine di quello che ottengo.
[attachment=0:139sq30g]Nuova immagine.png[/attachment:139sq30g]
----------------------------------------
AUTORE: 482
DATA :13/02/2012 - 14:39:47
----------------------------------------
Quando nei case si dice "non fa niente", si intende che si passa un filo dall'ingresso all'uscita senza fare operazioni sul filo.
Quindi nel case TRUE, prendi il quadratino dell'array in ingresso e lo colleghi al quadratino in uscita.
----------------------------------------
AUTORE: 4155
DATA :13/02/2012 - 14:50:51
----------------------------------------
Perfetto, tutto risolto!!!
Grazie mille!!!
----------------------------------------
================================================================================
Condivisione in Windows XP
================================================================================
AUTORE: 3428
DATA :15/02/2012 - 15:46:36
----------------------------------------
Salve, vorrei sapere da voi esperti se esiste un modo, in labview 2010 per condividere una cartella.
Nel mio sw mi occorre la necessità di creare una certa cartella se questa non esiste già. Fin quì nessun problema. Ora, se volessi rendere tale cartella condivisa in rete (come se cliccassi col dx e andassi su "Condivisione e protezione" e abilitassi la condivisione), come posso fare?
Non ho trovato nulla sulla palette dei file e del set permission, anzi è ben scritto che i permessi non funzionano su cartelle.
Qualcuno di voi si è mai trovato davanti a questo problema? API windows?
Grazie
----------------------------------------
AUTORE: 301
DATA :16/02/2012 - 07:11:31
----------------------------------------
Credo che usando "System exec" con comando "Net share", dovresti riuscire a fare tutto!
La cartella la puoi creare con le funzioni Labview, e da riga di comando vai a settare la condivisione!
Aris
----------------------------------------
AUTORE: 301
DATA :16/02/2012 - 07:30:11
----------------------------------------
Ho dato un' ulteriore occhiata.....
In pratica, se crei una cartella da condividere, poi puoi passare il comando:
NET SHARE CARTELLADACONDIVIDERE=C:\CONDIVISA /GRANT:Everyone,FULL.
E la cartella verrà condivisa con nome "CONDIVISA" e TUTTI gli utenti avranno permessi full sulla cartella.
Se dai una occhiata all'help del comando , vedi! (o anche in giro per internet).
Aris
----------------------------------------
AUTORE: 3428
DATA :16/02/2012 - 08:50:16
----------------------------------------
Ciao Aris, grazie della risposta!
Molto probabilmente hai ragione ma non riesco comunque!!!
Posto il codice di prova.
----------------------------------------
AUTORE: 301
DATA :16/02/2012 - 09:15:32
----------------------------------------
Prova cosi (al volo....)
Aris
----------------------------------------
AUTORE: 301
DATA :16/02/2012 - 09:17:36
----------------------------------------
Creare delle cartelle sul Desktop da dei problemi anche a me.....ma creandole direttamente all'interno di un drive, mi funziona!
Aris
----------------------------------------
AUTORE: 3428
DATA :16/02/2012 - 10:13:19
----------------------------------------
funziona!!
Molto probabilmente mi funzionava anche prima solo che mi aspettavo che l'icona diventasse come shared cioè con la mano sotto... Invece è condivisa ma la mano non c'è..
Bene grazie Aris
----------------------------------------
AUTORE: 301
DATA :16/02/2012 - 10:16:41
----------------------------------------
Prova a fare un refresh (in win), ovvio che poi aggiungerai tutta la parte delle opzioni.
Nel tuo codice, avevi dimenticato di mettere l'uguale, e le opzioni di condivisione vanno messe tutte nello stesso comando (mi sembra di aver capito)!
Buon lavoro!
Aris
----------------------------------------
AUTORE: 301
DATA :16/02/2012 - 13:18:18
----------------------------------------
Renaso, ho messo il vi su cui abbiamo lavorato nella sezione download, se magari riesci a fare qualcosa di più, aggiorna
!!!
Aris
----------------------------------------
AUTORE: 3428
DATA :16/02/2012 - 13:26:59
----------------------------------------
Ok, Aris, a me servirà solamente come shared e con i diritti a tutti gli utenti... se modificherò la VI aggiornerò la verisone download ben volentieri
----------------------------------------
================================================================================
Re: Variabile url
================================================================================
AUTORE: 482
DATA :20/02/2012 - 07:21:04
----------------------------------------
....ma tutto cio' cosa centra con labview??
----------------------------------------
================================================================================
Replicare Array
================================================================================
AUTORE: 4155
DATA :19/02/2012 - 09:38:38
----------------------------------------
Ciao a tutti,
ho un nuovo dubbio che vorrei chiarirmi a proposito di una funzione che sto cercando di ottenere, spero possiate darmi qualche dritta.
Ho un vi in cui effettuo dei calcoli per arrivare ad ottenere un array costitutito di 2 dimensioni (righe e colonne) in cui il numero di colonne è fisso e pari a 3, il numero di righe è variabile in funzione di parametri in input che utilizzo per i calcoli, a fine calcolo comunque ogni colonna ha lo stesso numero di elementi delle altre.
Dopo aver calcolato questo array avrei bisogno di replicarlo n volte, con n da inserire attraverso un controllo, e concatenare ogni replica alla precedente in modo da ottenere un nuovo array, costituito di 3 colonne e n volte il numero di righe calcolate inizialmente, per riprodurre un segnale periodico.
Come posso fare?
Grazie!
----------------------------------------
AUTORE: 482
DATA :20/02/2012 - 07:19:52
----------------------------------------
credo che questa cosa possa essere fatta in molti modi.
Il primo che mi è venuto in mente è collegare l'array risultante ad un ciclo FOR (disabilitando l'indexing) che verrà eseguito N volte in base al parametro che ti interessa.
A questo ciclo for colleghi un array vuoto con uno shift register.
Per ogni iterazione del for aggiungi all'aray dello shift register, l'array che vuoi duplicare (usa il concatenate input).
----------------------------------------
AUTORE: 4155
DATA :20/02/2012 - 13:28:59
----------------------------------------
Grazie della risposta, risolto!
----------------------------------------
================================================================================
Errore Application Builder
================================================================================
AUTORE: 2514
DATA :20/02/2012 - 16:01:41
----------------------------------------
Ciao a tutti. Ho questo problema: ho un progetto, composto da una 30ina di VI, che ho raggruppato in una .llb. Ho modificato il VI principale nel file di progetto in modo che tutte le dipendenze venissero aggiornate. Tutto OK.
Nel mio progetto esiste, tra gli altri, un file che si chiama graph_samples_HF.vi . 9 volte su 10 (avete letto bene, 9 su 10 perchè qualche volta funziona) il build sia dell'eseguibile sia dell'installer del progetto NON VA A BUON FINE. L'errore è il seguente:
LabVIEW cannot find a file that is a dependency of a Startup, Exported, or Always Included VI. File Not Found: C:\SVILUPPO\LAVORI_LABVIEW\CLOUSEAU\NUOVO_CLOUSEAU\library_Hopp.llb\graph_samples_HF.vi\0
The missing file might be referenced by one of the libraries included in the build or by the file - Batview.vi. To fix this issue:
- Open all Startup, Exported, or Always Included VIs, recompile them (CTRL+SHIFT Click the Run arrow) and save them to update their dependencies.
Allora: il file graph_samples_HF, aperto singolarmente ed eseguito come VI a se stante, funziona perfettamente. Se apro il VI master che lo chiama (dall'interno dell'ambiente di sviluppo) funziona tutto. Ho provato a compilare con CTRL-SHIFT e freccetta RUN e a salvare tutti i file modificati, ma nulla.
Poi, una volta ogni tanto, il build funziona e questo errore non viene segnalato. Qualcuno di voi ha una vaga idea di cosa sia questo fenomeno? Io sto diventando di gomma...
----------------------------------------
AUTORE: 2514
DATA :20/02/2012 - 16:05:07
----------------------------------------
Dimenticavo: i dettagli di questo errore sono i seguenti:
Error 7 occurred at AB_Engine_HandleLinkErrors.vi -> AB_Engine_Update_Source_from_Linker.vi -> AB_Build.lvclass:CalculateDependencies.vi -> AB_Build.lvclass:Build.vi -> AB_EXE.lvclass:Build.vi -> AB_Engine_Build.vi -> AB_Build_Invoke.vi -> AB_Build_Invoke.vi.ProxyCaller
Possible reason(s):
LabVIEW: File not found. The file might have been moved or deleted, or the file path might be incorrectly formatted for the operating system. For example, use \ as path separators on Windows, : on Mac OS, and / on Linux. Verify that the path is correct using the command prompt or file explorer.
=========================
NI-488: Nonexistent GPIB interface.
----------------------------------------
AUTORE: 301
DATA :21/02/2012 - 06:12:33
----------------------------------------
Io ho appena avuto un errore simile, e tramite il supporto National sono riuscito a risolvere.
Nel mio caso, si trattava di un vi con delle funzioni dotnet che richiamava delle proprietà dell'eseguibile (in pratica una funzione che mi restituiva la build dell'exe).
Eliminando quel file, tutto è partito!
Ma a me non andava 10/10......
Aris
----------------------------------------
AUTORE: 2514
DATA :21/02/2012 - 08:01:23
----------------------------------------
Grazie mille, Aris, vedrò di tentare anche questa via. Nel frattempo, comunque, anche il mio caso si sta trasformando in uno sconfortante 10/10... eppure sono riuscito a fare un paio di compilazioni. Non vorrei si trattasse di una "condizione al contorno" relativa alla mia configurazione (rete, stampanti,ecc) che quando si verifica mi consente, temporaneamente, di aggirare il problema. Mistero...
----------------------------------------
AUTORE: 2514
DATA :21/02/2012 - 13:46:34
----------------------------------------
RISOLTO: nel VI incriminato c'era un nodo CALL_BY_REFERENCE che chiamava un altro VI. Il problema sembra essere che, avendo io raggruppato tutti i VI originali in una libreria (ed essendo di conseguenza stati aggiornati tutti i path dei VI che componevano il progetto) in realtà i VI indirizzati da una CALL_BY_REFERENCE devono essere ricontrollati (non tanto i VI quanto i path che li riguardano). Ho avuto la dritta leggendo questo post:
http://lavag.org/topic/3827-error-7-whi ... pplication
Grazie a tutti per l'attenzione.
----------------------------------------
AUTORE: 2514
DATA :22/02/2012 - 13:29:25
----------------------------------------
Il mistero si infittisce. Stamattina Labview ha smesso di compilare il mio progetto. Ho seguito la seguente procedura in modo DEL TUTTO FIDEISTA:
ho aperto il VI principale del mio progetto e l'altro VI "imputato" di essere la causa di questo macello. Nella finestra del progetto è comparso:
- un file "visarc" (VISA Class definition)
- accanto al file GOOPSUP è comparso un punto di domanda azzurro
- 3 oggetti (sequenza di numeri separati da trattini, simili alle chiavi di registro) preceduti da un punto di domanda azzurro
in presenza di questa "sporcheria" il progetto viene compilato correttamente.
Chiudo il progetto. Lo riapro. La sporcheria è scomparsa e visarc non c'è. Il progetto non si compila più.
Riapro il VI principale e l'altro VI, ricompare visarc e il progetto si ricompila.
----------------------------------------
AUTORE: 301
DATA :22/02/2012 - 14:42:34
----------------------------------------
A questo punto ti consiglio vivamente di chiamare il servizio di assistenza National.
Se il progetto non è molto grande, magari lo mandi a loro e controllano eventuali problemi di compilazione.....
Aris
----------------------------------------
================================================================================
Vettore in Doppio Ciclo For
================================================================================
AUTORE: 3751
DATA :21/02/2012 - 11:05:48
----------------------------------------
Ciao a tutti
Scrivo per un piccolo problema che non riesco a risolvere.
Ho un segnale in ingresso che entra in un ciclo For e poi in altro ciclo For posto all'interno del primo, per essere elaborato. Per ogni valore di ingresso mi aspetto in uscita un vettore 3*2 con 6 elementi, "ordinati" in questo modo: 1,1 - 1,2 - 2,1 - 2,2 - 3,1 - 3,2 avendo il ciclo esterno con N=3 e quello interno con N=2! Ho anche un vettore esterno fatto di 6 elementi "ordinati" nel seguente modo: 1,1 - 1,2 - 2,1 - 2,2 - 3,1 - 3,2. Quello che dovrei fare è questo: fare in modo che all'interno del secondo ciclo For il prodotto tra l'esponenziale e il vettore esterno avvenga per gli elementi ordinati nello stesso modo! Mi spiego meglio: supponiamo che il ciclo esterno faccia un esecuzione e quello interno anche ne faccia una: nell'operatore prodotto voglio l'elemento 1,1 del vettore esterno; poi il ciclo interno fa la sua seconda esecuzione: nell'operatore prodotto voglio l'elemento 1,2 del vettore esterno; insomma: ad ogni esecuzione del ciclo più interno voglio associare all'operatore prodotto l'elemento successivo del vettore esterno! Qualcuno ha un suggerimento su come sa possibile realizzare questa cosa??
Grazie mille.
Allego immagine del progetto
[img:zby2dmm7]http://img24.imageshack.us/img24/9341/doppiociclo.jpg[/img:zby2dmm7]
----------------------------------------
AUTORE: 301
DATA :22/02/2012 - 06:44:33
----------------------------------------
Per mantenere la forma che hai postato....
----------------------------------------
================================================================================
animazione per simulazone
================================================================================
AUTORE: 4026
DATA :21/02/2012 - 15:36:24
----------------------------------------
devo simulare un ascensore con labview 2010...per simulare mi serve un'immagine animata con i 7 piani e che l'immagine si sposti in alto o in basso fino a quando ce lo dico io...cioè io a ogni piano ho un sensore che può assumere comevalori 0 o 1...io vorrei animare un 'immaginare e applicarci un sensore anzichè metterci un pulsante per atiivare o disattivare il sensore
----------------------------------------
AUTORE: 482
DATA :21/02/2012 - 15:52:31
----------------------------------------
potresti customizzare una vertical slidebar, oppure muovere programmaticamente un indicatore usando i property node.
----------------------------------------
AUTORE: 4026
DATA :21/02/2012 - 15:59:16
----------------------------------------
quello che hai detto per me è un po' arabo...io ho già creato una gif che si sposta di un piano al secondo
----------------------------------------
AUTORE: 482
DATA :22/02/2012 - 07:17:29
----------------------------------------
della gif non te ne fai niente, nel senso che è una cosa visuale e non gestibile programmaticamente.
Guarda il vi che ti allego.
Ci sono le due soluzioni.
Poi i due controlli sono customizzabili esteticamente, quindi puoi anche mettergli il disegno di un ascensore.
----------------------------------------
AUTORE: 645
DATA :22/02/2012 - 14:15:23
----------------------------------------
Bello!
----------------------------------------
AUTORE: 301
DATA :22/02/2012 - 14:58:14
----------------------------------------
[quote="gepponline":2lq2f204]della gif non te ne fai niente, nel senso che è una cosa visuale e non gestibile programmaticamente.
Guarda il vi che ti allego.
Ci sono le due soluzioni.
Poi i due controlli sono customizzabili esteticamente, quindi puoi anche mettergli il disegno di un ascensore.[/quote:2lq2f204]
Giustissimo!!!!!
Se ti serve un "sensore" per ogni piano, vedi il vi di Gepponline modificato.
Aris
----------------------------------------
AUTORE: 4026
DATA :23/02/2012 - 15:48:30
----------------------------------------
io lo fatto così:il controllo numerico che si vede in alto a sinistra serve per mandare su e giù l'ascensore manualmente...le due pulsantiere stanno collegate in or con un encoder prioritario...i sensori per ogni piano sono anch'essi collegati a un altro encoder,infine i due encoder vanno a finire in un comparatore e attraverso una rete logica si collegano a un led che indica che l'ascensore deve salire e l'altro sta collegato a quello di discesa...spostando manualmente funziona tutto ora lo voglio rendere automatico...premetto che sono uno studente di 3 superiore e questo è il mio primo approccio a un programma di grafica...io so programmare in c++...vorrei sapere se esiste una soluzione molto semplice...ho allegato anche i due blocchi del comparatore che si può collegare in cascata e quello dell'encoder prioritario
----------------------------------------
AUTORE: 4026
DATA :23/02/2012 - 15:51:33
----------------------------------------
dimenticavo di dirvi che il pulssante e normale che va lasciato premuto e va bene così
----------------------------------------
AUTORE: 482
DATA :24/02/2012 - 07:26:02
----------------------------------------
Innanzitutto il tuo programma deve stare all'interno di un ciclo while (con un wait until next multiple di almeno 500ms per esempio).
Non usare le freccette circolari per simulare il VI potrebbero ingannarti.
Detto questo, quello che chiedi è solo programmazione, e qui non facciamo i compiti per gli altri, ma aiutiamo a risolvere i dubbi.
In partica tu hai un indicator enumerico che rappresenta il tuo ascensore.
Devi fare in modo che alla pressione di un tasto di chiamata, l'ascensore comincia muoversi verso quella direzione, finchè il valore del numerico non è uguale al valore del piano.
Quindi per farlo muovere in automatico non devi fare altro che, una volta premuto il tasto e verificato se deve salire o scendere, ad ogni iterazione del ciclo, incrementare o decrementare il valore della slide e smettere di incrementare o decrementare quando hai raggiunto il piano desiderato.
Questa è la logica da seguire.
Per realizzarla devi usare o le variabili locali o gli shift register. Se non sai cosa sono o come si usano, chiedi pure, se invece lo sai, buon lavoro e tienici aggiornati
----------------------------------------
AUTORE: 4026
DATA :24/02/2012 - 17:22:20
----------------------------------------
ho semplicemente postato il mio vi per far capire quello che devo fare...comunque io sono abitutato in c++ che i contatori posso impostarli io se devono aumentare o diminuire di quanto voglio io mentre con labview è molto diverso o almeno credo...
----------------------------------------
AUTORE: 482
DATA :27/02/2012 - 07:24:11
----------------------------------------
Quello che fai in C++ lo fai anche in labview, cambia solamente..diciamo...la sintassi.
Per questo ti ho chiesto se conosci e sai usare gli shift register e le variabili locali, perchè sono degli elementi fondamentali di labview che pero', soprattutto per chi impara labview autonomamente, sono sconosciuti.
Ti posto qualche esempio di contatore incrementale e decrementale per darti un idea. Ci sono counter con gli shift register, con le variabili locali e con il blocchetto delle iterazioni.
L'allegato è uno Snippet, cioè un immagine che se la trascini sul block Diagram ti crea il codice.
----------------------------------------
AUTORE: 4026
DATA :27/02/2012 - 14:24:00
----------------------------------------
domani devo consegnare il progetto al professore con dovuta relazione...lasciamo stare perchè la mia idea era un aggiunta in più tanto per alzare un po il voto...lo lascerò manuale altrimenti come spiego il funzionamento dell'animazione se è qualcosa che non abbiamo mai fatto??già in un precedente progetto ho fatto qualcosa di mo in più per lo avevo capito da solo...ora non mi è tanto chiaro quindi preferisco lasciar stare per ora...comunque ho provato lo snippet ma quando vado a spostare l'immagine sul block diagram mi compare solo l'immagine ma non il codice
----------------------------------------
AUTORE: 4026
DATA :27/02/2012 - 15:01:27
----------------------------------------
scusate per il doppio post ma la pagina non caricava comunque ora funziona lo snippet però quando mando in esecuzione mi da errore 1055 al property node
----------------------------------------
AUTORE: 482
DATA :27/02/2012 - 15:48:01
----------------------------------------
E' giusto che ti dia errore.
ma che è successo?!?!
c'e' un problema con lo snippet...quei property node non esistono nel mio VI! sono variabili locali....
----------------------------------------
AUTORE: 4026
DATA :28/02/2012 - 14:37:47
----------------------------------------
oggi il professore ci ha spiegato come fare l'animazione di un oggetto però è suonata la campanella e ce ne siamo dovuti andare comunque ho capito a che mi serve il property node e variabili locali...ora sono tornato a casa e avevo subito voglia di provare con gli oggetti funziona ma con un'immagine no...come posso rendere un immagine spostabile??
----------------------------------------
AUTORE: 482
DATA :29/02/2012 - 07:19:29
----------------------------------------
Per completezza ti allego lo snippet senza le variabili lo cali per la questione contatori.
Per poter spostare un immagine, l'immagine deve essere all'interno di un controllo/indicatore di tipo immagine.
Non puoi spostare un immagine trascinata sullo sfondo, perchè risulta come un elemento decorativo e non ci si puo' interagire.
Puoi usare due tipi di controllo immagine:
1) picture ring, nel quale trascini le immagini che vuoi e a cui puoi dare differenti valori
2) 2D picture, che lo trovi tra i grafici e nel quale pero' non ho capito se si puo' mettere l'immagine all'interno senza passare per la programmazione...
----------------------------------------
AUTORE: 4026
DATA :01/03/2012 - 14:23:39
----------------------------------------
grazie mille ho risolto...devo solo risistemare i sensori perchè dal primo al 6 piano funziona tutto benissimo mentre dal settimo non scende più e poi al primo non scende completamente
----------------------------------------
================================================================================
Le necessaire!
================================================================================
AUTORE: 3931
DATA :22/02/2012 - 22:11:37
----------------------------------------
Volevo sapere all'atto pratico cosa occorre per poter diventare un programmatore Labview freelance in grado di vendere autonomamente i propri prodotti, scriptati con Labview.
Quale licenza? e poi... servono ulteriori certificazioni?
Grazie! ^^
----------------------------------------
AUTORE: 482
DATA :23/02/2012 - 07:42:02
----------------------------------------
Credo proprio che le uniche due cose necessarie siano Labview con licenza e saperlo usare.
tutto il resto è fuffa
----------------------------------------
AUTORE: 43
DATA :23/02/2012 - 10:29:55
----------------------------------------
[quote="Ysmail":2fq4adea]... per poter diventare un programmatore Labview freelance [/quote:2fq4adea]
National Instrument ha istituito corsi e diplomi che attestano gradi diversi di conoscenza di LabVIEW.
Per ottenere tali diplomi bisogna sostenere degli esami.
http://sine.ni.com/nips/cds/view/p/lang/en/nid/201888
Prendiamo me come esempio: sono programmatore LabVIEW da almeno 20 anni e non posseggo nessun diploma NI, ne ho sostenuto corsi per ottenerne.
Attualmente sono lavoratore dipendente ma sono stato per un certo periodo anche "freelance"
In qualità di freelance ho fornito consulenze, mai ho venduto prodotti SW miei.
[quote="Ysmail":2fq4adea]in grado di vendere autonomamente i propri prodotti, scriptati con Labview...[/quote:2fq4adea]
Scriptati significa "non criptati" cioè comprensivi di sorgente? (all'inizio avevo pensato a LabVIEW scripting ( http://sine.ni.com/nips/cds/view/p/lang/en/nid/209110 )
Se hai in mente di vendere piccole utility LabVIEW e vorresti che il tuo prodotto sia "consigliato" da NI, penso tu debba cercare un accordo con NI.
Personalmente penso che non sia una cosa molto giusta: qua nel forum ilvg aiutiamo altri avendo come ricompensa una maggiore conoscenza ed esperienza della materia di cui trattiamo (LabVIEW), preferendo lo scambio di esperienze ad altre forme di remunerazione.
Spesso mi arrabbio quando in questo forum viene chiesto aiuto senza "spiegare tutto" cioè senza postare VI senza dire che tipo di applicazione si sta sviluppando... cioè alcuni chiedono aiuto senza uscire dalla tana... vogliono lucrare il massimo senza dare niente...
L'esperienza da freelance mi ha insegnato una cosa fondamentale: qualunque mestiere tu faccia da libero professionista, i diplomi non servono a nulla, albi professionali a parte, l'unico requisito è avere clienti che ti diano lavoro e ti paghino regolarmente.
Quindi da professionista valgono più dei riconoscimenti "sulla carta", i riconoscimenti "sul campo" oltre alle relazioni interpersonali...
bye
----------------------------------------
AUTORE: 3931
DATA :23/02/2012 - 12:52:20
----------------------------------------
Hai ragione, mi sono spiegato male. Riformulo.
Programmo con Labview per conto mio da qualche anno. Ultimamente, alla luce di questa mia capacità, mi è stato chiesto di elaborare un software per il quale verrei pagato. Dovrei soltanto consegnare l'eseguibile e fare in modo che il programma funzioni sui loro PC (dove non è installato labview).
Considerando che sono totalmente estraneo alla materia, avendo fin ora programmato soltanto da un punto di vista "amatoriale" per conto della mia università, non ho la più pallida idea di cosa occorra effettivamente per diventare programmatore freelance senza che la NI o altri possano un giorno venirmi a dire "non eri in regola per farlo".
----------------------------------------
AUTORE: 482
DATA :23/02/2012 - 13:29:16
----------------------------------------
Se non usi toolkit tipo ad esempio quelli di Visione, per distribuire eseguibili sviluppati in LabVIEW non serve nessuna licenza.
Serve solo la licenza di LabVIEW sul pc di sviluppo.
----------------------------------------
AUTORE: 43
DATA :23/02/2012 - 13:38:42
----------------------------------------
[quote="Ysmail":bmwevll0]Hai ragione, mi sono spiegato male. Riformulo.
Programmo con Labview per conto mio da qualche anno. Ultimamente, alla luce di questa mia capacità, mi è stato chiesto di elaborare un software per il quale verrei pagato. Dovrei soltanto consegnare l'eseguibile e fare in modo che il programma funzioni sui loro PC (dove non è installato labview).
Considerando che sono totalmente estraneo alla materia, avendo fin ora programmato soltanto da un punto di vista "amatoriale" per conto della mia università, non ho la più pallida idea di cosa occorra effettivamente per diventare programmatore freelance senza che la NI o altri possano un giorno venirmi a dire "non eri in regola per farlo".[/quote:bmwevll0]
Ti consiglio di comprare le licenze per i "moduli LabVIEW" che hai utilizzato per sviluppare la tua applicazione.
Guarda la lista di tutti i moduli LabVIEW sulla sx di questa pagina
http://sine.ni.com/nips/cds/view/p/lang/en/nid/2454
Gli ambienti di sviluppo sono differenziati per S.O. di sviluppo (Win, linux, mac), funzionalità (base, full, pro) piattaforma (standard, RealTime, FPGA).
Oltre a ciò ci sono licenze per l'uso di librerie, addon e toolkits (Vision, Application builder, LabVIEW DSC, Report Generation Toolkit, ecc.)
Se si possiede la lic di labVIEW Full +Application Builder o la licenza Professional di LabVIEW Standard ... si possono creare e vendere eseguibili creati con LabVIEw senza che sia necessario pagare una licenza di LabVIEW Runtime che dovrà essere installato sul Pc che ospiterà la tua appliocazione.
Se utilizzi le librerie di Visione dei avere una licenza da NI x ogni installazione che farai del tuo SW, altrimenti le funzionalità di Visione che richiamerai dentro il tuo eseguibile, non saranno processate e ti verrà chiesto di installare l'apposita licenza.
Cerca sul sito NI per ogni ulteriore dettaglio.
Se il programma è stato cmaq fatto su commissione, io farei pagare al tuo primo cliente il costo delle licenze LabVIEW che dovrai acquistare.
Esiste un SW "NI License Manager" esterno a LabVIEw che ti permette di gestire le licenze....
bye
----------------------------------------
AUTORE: 3931
DATA :23/02/2012 - 23:45:02
----------------------------------------
Grazie mille per la risposta, decisamente esauriente.
Spero, tempo permettendo, di poter partecipare maggiormente alla vita di questo forum.
----------------------------------------
AUTORE: 4190
DATA :03/04/2012 - 07:23:34
----------------------------------------
Salve a tutti, sono un vecchio utilizzatore (dal 1994) di Labview e devo dire che la politica dalla versione 6 in poi in merito alla necessità del runtime engine per far girare un eseguibile creato con l'application builder è una vera sciagura ed è uno dei motivi che mi hanno spinto ad abbandonare di fatto labview.
A parte l'assurdità di dove installare sul PC ben 200 mb di runtime per magari poi accendere un led con un eseguibile di 400kb , ma il punto più rilevante è che sSe devo vendere una applicazione ad un cliente non mi và che sappia con che cosa e come l'ho realizzata tanto più che alla National Instruments ho dato un bel 5000 euro , per fare pubblicità a loro ?
Ma che se ne vadano al diavoio !
Quindi mi tengo stretto il mio Labview 4 e lo utilizzo quando posso per il resto bye bye Labview !
----------------------------------------
AUTORE: 43
DATA :03/04/2012 - 10:11:18
----------------------------------------
[quote="lucamax":2mgowoz5]Salve a tutti, sono un vecchio utilizzatore (dal 1994) di Labview e devo dire che la politica dalla versione 6 in poi in merito alla necessità del runtime engine per far girare un eseguibile creato con l'application builder è una vera sciagura ed è uno dei motivi che mi hanno spinto ad abbandonare di fatto labview.
A parte l'assurdità di dove installare sul PC ben 200 mb di runtime per magari poi accendere un led con un eseguibile di 400kb , ...
Ma che se ne vadano al diavoio !
Quindi mi tengo stretto il mio Labview 4 e lo utilizzo quando posso per il resto bye bye Labview ![/quote:2mgowoz5]
Interessante post.
Un po' polemico come piace a me!
Beh! riguardo "LabVIEW run-time", se posso esprimere un'opinione, considero la sua introduzione un buon miglioramento. La run-time è una libreria dinamicamente linkata (.dll) perciò può essere condivisa fra tutti gli eseguibili compilati di labview.
il "compilato" di labview 4 incorporava tutta la parte di labview "dentro" l'eseguibile. Non mi sembra molto efficiente.
C'è poi un ragionamento da fare un po' + ampio che riguarda l'HW , i S.O. ed il supporto, che , a mio avviso, non sono da trascurare.
Usare labview per gestire un DB o per sfruttarne le sole peculiarità dell'UI, è possibile, ma non è granchè. Se devo accendere un indicatore tipo Led non userei LabVIEW mi sembra sprecato pure LabVIEW 4.
Anche i S.O. consumano più RAM e più HD di un tempo, però è cresciuta la potenza dei PC, e cmq per ogni cosa esiste un equilibrio ed una proporzione.
Non vorrei tornare a Win 95 per poter usare LabVIEW 4, basti solo a considerare le limitazione nell'uso della RAM...
Anche a me gli eseguibili troppo mastodontici non piacciono, a me piace "limare" l'uso di memoria e risorse per sfruttarle al meglio ed evitare sprechi.
Per questo in linea con quanto dici tu, Luca, non riesco ad accettare per. es. che per confezionare un eseguibile che utilizzi solo un paio di seriali debba installare un CD intero di VISA run-time, che comprende il supporto a PXI, VXI, GPIB e dei dispositivi plug&play USB di NI . E' veramente troppo. Potendolo fare, tornerei indietro alla versione 6 quando c'era ancora il supporto alla SERPDRV...
In attesa che NI ci permetta di "ritagliare su misura" meglio e con maggior dettaglio i kit di installazione dei nostri applicativi, vi saluto.
Nei lontani anni '80, nel S.O. VMS di D.E.C. avevano previsto il comando "tailor" per "tailor-izzare" i kit di installazione. Speriamo che qualcuno si ricordi ed impari da quanto fatto in passato
Buona Santa Pasqua
bye
----------------------------------------
AUTORE: 43
DATA :03/04/2012 - 13:49:21
----------------------------------------
[quote="lucamax":2bt0lv5b]Salve a tutti, sono un vecchio utilizzatore (dal 1994) di Labview ... , ma il punto più rilevante è che sSe devo vendere una applicazione ad un cliente non mi và che sappia con che cosa e come l'ho realizzata tanto più che alla National Instruments ho dato un bel 5000 euro , per fare pubblicità a loro ?
Ma che se ne vadano al diavoio !
Quindi mi tengo stretto il mio Labview 4 e lo utilizzo quando posso per il resto bye bye Labview ![/quote:2bt0lv5b]
Ho deciso di spezzare in 2 parti la risposta xkè merita...
Ora, dipende se il SW è pensato come prodotto, quindi destinato ad un qualunque acquirente, cioè un prodotto "sullo scaffale" oppure
se è frutto di una consulenza, cioè un software fatto "su misura" e "chiavi in mano" per un committente.
In entrambi i casi NON trovo scandaloso che l'acquirente voglia sapere con quale strumento sia stato sviluppato un SW che ha comprato e pagato, non mi sembra una informazione che valga la pena "secretare"..., a che pro?
Se consideriamo il secondo caso, e a maggior ragione se il SW controlla dell'HW dedicato, ma non solo, trovo esageratamente giusto, CEDERE IL CODICE SORGENTE AL CLIENTE.
Quando facevo il consulente l'ho sempre fatto, e ne ho ricavato fiducia e stima.
Se il cliente è soddisfatto del lavoro che il SWista svolge continuerà a rivolgersi a lui.
Non solo. Mi è capitato di subentrare per completare un lavoro iniziato da altri.
Nella totalità dei casi, parlo del solo SW, è stato + conveniente ripartire a sviluppare il SW dall'inizio...
Quindi, se si crede nei propri mezzi, se si è convinti delle proprie conoscenze, non si deve temere la concorrenza di nessuno. Mettere le mani in un codice sviluppato da altri, capire le logiche implementate, è sempre più costoso che ripartire da 0.
Nonostante il codice sorgente sia perfettamente scritto e documentato, è sempre consigliabile per l'acquirente rivolgersi a chi il SW l'ha scritto, lo conosce meglio e sa muoversi più agilmente dentro esso.
Sull'argomento (dare il sorgente ai clienti) ho litigato molto spesso, con tante persone, e nessuno è mai riuscito a convincermi che avessi torto.
So bene che il comportamento delle persone può essere più o meno coerente, so bene che siamo tutti esseri umani, ma la questione è fondamentale anche per il forum ILVG stesso: immagino, caro Luca, che se tieni così tanto ai tuoi clienti, tanto che vorresti non sappiano nulla di "come" lavori e quali strumenti o tecniche utilizzi, a maggior ragione immagino vorrai evitare come la morte di condividere esperienze, problemi e soluzioni dentro questo ed altri Forum.
Quindi sai che ti dico... portati le Tue conoscenze dentro la tomba!
Quanto all'utilizzo di mezzucci per indurre a pagare i clienti in ritardo, penso che se pretendiamo onestà dagli altri, dovremmo esserlo noi, a prescindere dal comportamento degli altri, non trovi?
Buona Pasqua
bye
----------------------------------------
AUTORE: 482
DATA :03/04/2012 - 13:57:52
----------------------------------------
...io mi limitero' ad odiare il sistema di licenze attuale. Mi paceva cosi' tanti fino al 7.1 che bastava mettere il proprio codice seriale e si installava tutto
Tantopiu' che adesso come adesso la registrazione passa da NI ma salvo casi estremi tipo 50 installazioni di Labview, non la cagano piu' di tanto la questione licenze.
Quoto la "tillorizzazione" degli eseguibili! assolutamente necessaria!giusto oggi ho dovuto aggiornare un software su una macchina e per farlo ho dovuto creare un installer da 850 mega "ipotizzando" quello che serviva.
----------------------------------------
================================================================================
Registrazione Labview
================================================================================
AUTORE: 3428
DATA :24/02/2012 - 11:10:51
----------------------------------------
Salve, nella fretta di installare labview non ho messo al posto giusto il nome del registrante.
Mi spiego, quando si lancia Labview appare una finestra al centro del desktop con scritto l'utente registrato e il serial numer mentre LV viene caricato...
Ora il SN c'è ma sull'utente ho trovato scritto Unregistered.
Come lo cambio?? Devo reinstallare tutto???
Ho trovato il registration wizard all'interno della lista programmi ma anche dopo aver messo il nome, nella finestra iniziale non cambia, sempre Unregistered!!!
----------------------------------------
AUTORE: 4210
DATA :22/05/2012 - 14:14:34
----------------------------------------
Reinstallalo e rimetti tutto tanto labview può essere installato su più di un pc perciò se reinstalli tutto e rimetti il codice e il nome non ti dovrebbe fare storie
----------------------------------------
================================================================================
Come creare un' immagine in movimento?
================================================================================
AUTORE: 4160
DATA :24/02/2012 - 18:07:52
----------------------------------------
Ciao a tutti,
sono nuovo del forum, e volevo sapere se fosse possibile mobilitare un immagine a seconda del segnale che si riceve, mi spiego meglio...
Ho bisogno di immettere un immagine, ad esempio una freccia, e, a seconda del segnale (simulato con la pressione di un bottone), deve spostarsi indicandolo.
Premetto che inizio ora ad avvicinarmi a questo software per la programmazione.
Quindi vi chiedo sostanzialmente:
1) Come introdurre un'immagine e farla muovere in un percorso prestabilito?
2) Come collegare quest'ultima con il segnale di accensione di un pulsante?
Vi ringrazio anticipatamente!
----------------------------------------
AUTORE: 482
DATA :27/02/2012 - 07:15:52
----------------------------------------
Dai un occhiata a questo topic, potrebbe esserti d'aiuto!
posting.php?mode=reply&f=1&t=5522#pr24237
----------------------------------------
AUTORE: 4160
DATA :27/02/2012 - 16:49:59
----------------------------------------
Grazie mille!
Ho risolto tutto!
----------------------------------------
================================================================================
Inseguitore solare senza trasduttore di posizione
================================================================================
AUTORE: 3146
DATA :28/02/2012 - 16:16:10
----------------------------------------
Sto cercando di realizzare un inseguitore solare con movimento Est-Ovest. Il motore utilizzato, con opportuno riduttore, compie una rotazione di 180° in 60minuti. Il sistema è privo di trasduttore di posizione e presenta un finecorsa per individuare la posizione di riposo (Est). La posizione del sole viene ricavata da un subVI che elabora data e ora del PC e coordinate del luogo e fornisce elevazione rispetto all'orizzonte (h) e angolo di rotazione rispetto a Est (azimuth Az).
Il sistema rimane nella posizione di zero (Est) finchè h è minore di zero ed inzia il movimento per h>0 (alba). Considerata la lentezza del movimento e la velocità costante, dopo aver letto la rotazione da compiere (Az), il motore viene azionato per il tempo corrispondente all'angolo da coprire. Il primo passo è semplice, il problema si presenta con i successivi : come posso tener conto delle rotazioni già compiute nei passi precedenti ? Al secondo passo, infatti, leggendo il nuovo angolo Az dovrei togliere tutte le rotazioni fatte nei passi precedenti.
Inoltre i passi dovrebbero essere cadenzati ogni 5 o 10minuti.
Grazie per il vs aiuto .....
Piero
----------------------------------------
AUTORE: 482
DATA :29/02/2012 - 07:25:44
----------------------------------------
Prova ad utilizzare gli shift register.
Ogni vota che compi un movimento, ne salvi le "caratteristiche" in uno shift register che contiene un array cosicchè tieni memoria di tutti gli step fatti.
Detto questo pero', mi sembra uno dei sistemi meno efficienti per un inseguitore solare.
Quello che pero' consideravo è, se tu realizzi in questo modo l'inseguitore solare, non è meglio allora farti già una tabella degli step e tenerla costante, magari in un file di configurazione in modo da poterla modificare in seguito? In questo modo ti eviteresti di farti ogni giorno dei calcoli che sono sempre gli stessi.
----------------------------------------
AUTORE: 645
DATA :10/03/2012 - 00:31:12
----------------------------------------
Potresti anche utilizzare una variabile (un indicatore invisibile per esempio) per memorizzare l'angolo di rotazione compiuto fino all'ultimo passaggio in modo da utilizzare questo valore con il nuovo valore ricavato. Per temporizzare i cicli puoi usare le funzioni legate al tempo all'interno di un ciclo While.
----------------------------------------
AUTORE: 3146
DATA :12/03/2012 - 18:55:00
----------------------------------------
Grazie al vs aiuto sono arrivato ad una soluzione accettabile. Per il momento solo la rotazione EST-OVEST (Azimuth)
Ho ancora un problema dal quale non riesco ad uscire : all'avvio dell'applicazione leggo la posizione del sole, la confronto
con la posizione di partenza (90° rispetto a Nord = EST), calcolo la differenza e la traduco nel tempo di attivazione del motore (case 1 illustrato nel pdf allegato).
Poichè il movimento è molto lento rimango nel case 1 per molto tempo e quindi perdo la condizione "sono arrivato a OVEST" (attivazione finecorsa di OVEST).
Come posso monitorare il finecorsa di OVEST oppure la condizione di RESET premuto oppure di elevazione h<0 (NOTTE) mentre sono nel case 1?
Aggiundo che sto simulando su PC una applicazione che dovrò poi utilizzare su CompactRIO 9073.
Grazie ancora per il vs aiuto....
Piero
----------------------------------------
AUTORE: 482
DATA :13/03/2012 - 07:13:18
----------------------------------------
Non ho capito, il ciclo while che hai postato è tutto all'interno del case 1?
Perchè normalmente il monitoraggio degli "allarmi" o cmq di eventuali pulsanti o condizioni, avviene parallelamente all'esecuzione delle procedure standard.
In questo modo niente viene vincolato dalla procedura in cui ci si trova.
----------------------------------------
AUTORE: 3146
DATA :13/03/2012 - 14:25:04
----------------------------------------
... Dentro il ciclo while temporizzato che ho postato si vede il case 1.
Il case 1 si riferisce proprio al caso del motore in movimento.
Nel case 1 posso rimanere anche diversi minuti; se, nel frattempo, si chiude il finecorsa che indica la condizione di OVEST (tramonto) lo perdo....
Avrei bisogno di individuare una struttura che mi consenta di gestire eventi asincroni (come appunto la chiusura di un finecorsa) che forzino l'uscita dal case 1 (motore in movimento).
Spero di essere stato un pò piùchiaro.
GRAZIE!
----------------------------------------
AUTORE: 482
DATA :13/03/2012 - 15:58:08
----------------------------------------
Credo di aver capito.
L'errore che fai è usare un delay.
In questo modo blocchi tutta l'esecuzione del ciclo while e per monitorare altre cose devi per forza crare un ciclo while parallelo.
In alternativa, puoi non usare il delay ma dirgli di ciclare senza fare niente se sei nel case 1.
----------------------------------------
AUTORE: 3146
DATA :19/03/2012 - 14:58:03
----------------------------------------
.... Confesso che ho fatto alcuni tentativi con esito negativo.
E' possibile avere un ulteriore aiuto ?
GRAZIE !!
Piero
----------------------------------------
AUTORE: 482
DATA :19/03/2012 - 15:10:42
----------------------------------------
prova a dare un occhiata a questo vi "quasi vuoto" pe rvedere se ti chiarisce le idee
----------------------------------------
AUTORE: 3146
DATA :21/03/2012 - 20:13:26
----------------------------------------
.. il VI allegato simula il problema che devo risolvere : la macchina a stati continua a ciclare e, se interviene il finecorsa, dovrei transitare immediatamente nello stato 2 (senza attendere che si esaurisca il delay ....). Purtroppo l'intervemto del finecorsa non interrompe il delay : dove sto sbagliando ?
Altro problema : se utilizzo la varibile locale "stop" per terminare contemporanemente anche il secondo ciclo while mi viene segnalato il seguente errore :
[i:ot77izk3]If a Boolean control has associated local variables, it cannot use latch mechanical action. The first local variable to read a Boolean control with latch action would reset its value to the default. [/i:ot77izk3]
Piero
----------------------------------------
AUTORE: 482
DATA :22/03/2012 - 07:41:17
----------------------------------------
Chiaro.
Per quanto riguarda il pulsante è una questione di "meccanica" del pulsante.Clicca col destro sul pulsante (nel front panel)->mechanical action e selezioan uno switch. L'azione latch è incompatibile ocn la creazione di variabili locali come diceva l'errore.
Per quanto riguarda il delay...il delay non puo' essere interrotto.
Tu non devi in questo caso usare un delay, ma usando i tick count costruirti una struttura che finchè non è trascorso un certo tempo, resta in quel case.
Questo perchè il Delay è un subVI e finchè non ha terminato la sua esecuzione, ti blocca tutto quello che gli sta intorno. Tu invece devi continuare a ciclare.
Mai usare i delay se devi fare altro nel mentre.
NOTA: Io non l'ho messo, ma una volta sostituiti i delay, è buona norma (direi obblicatorio) inserire in ogni ciclo while un blocchetto Wait until next multiple con un adeguata temporizzazzione per fare in modo che il vi non si ciucci tutte le risorse del processore cercando di ciclare alla massima velocità.
----------------------------------------
================================================================================
Costruire Un Filtro
================================================================================
AUTORE: 3751
DATA :28/02/2012 - 23:01:36
----------------------------------------
Ciao a tutti
scrivo per sapere se è possibile creare un filtro partendo da un equazione polinomiale fratta. Mi spiego meglio: ho graficato la risposta in frequenza di un sistema valutando il rapporto tra il modulo del segnale in uscita ed in ingresso del sistema stesso. Facendo un fitting della curva ho ottenuto una equazione che ne descrive l'andamento: il fitting è polinomiale e la eq ricavata è nella forma: 1 / (a0 + a1 X + a2 X^2 + ..) partendo da questa equazione avete idea se sia possibile costruire un filtro che che abbia una risposta in frequenza come quella della curva di partenza??
Magari sfruttando il DFD toolkit??
Magari portando l'equzione in una variabile complessa tipo s è poi possibile costruire un filtro??
Grazie in anticipo
----------------------------------------
================================================================================
Creare installer con più .vi
================================================================================
AUTORE: 4163
DATA :01/03/2012 - 13:59:07
----------------------------------------
Salve ho un programma1.vi che ne richiama un'altro programma2.vi,
affinche l'operazione non generi errori, la posizione dei files e delle cartelle "deve" essere la seguente:
CartellaPrincipale
programma1.vi
CartellaSecondaria
programma2.vi
Con i .vi nessun problema (li posiziono dove mi serve).... ma come posso fare per creare un "Installer"
che durante l'installazione crei in automatico la struttura sopra indicata ?
Vorrei evitare, per ragioni di semplicità ,di realizzare due "Installer" diversi,
e sopratutto vorrei evitare che l'utente che instrallerà i programmi cambi la struttura delle cartelle con
conseguente errore durante la chiamata del programma2.vi/exe .
Graze per l'attenzione.
----------------------------------------
AUTORE: 301
DATA :05/03/2012 - 06:56:10
----------------------------------------
Dai prima n'occhiata alla sezione "articoli".....
Non hai bisogno di creare due installer (e nemmeno 2 eseguibili).
Aris
----------------------------------------
AUTORE: 4163
DATA :26/03/2012 - 15:01:58
----------------------------------------
Grazie, ha stampato l'articolo e, molto molto utile.
----------------------------------------
================================================================================
Come cancellare una riga in un array
================================================================================
AUTORE: 4165
DATA :01/03/2012 - 16:29:01
----------------------------------------
Ciao a tutti,
sono nuovo del gruppo e piuttosto inesperto sull'uso di Labview. Il mio problema è molto semplice: ho un array di stringhe in cui compaiono delle righe completamente vuote. Io dovrei eliminare queste righe e ridimensionare l'array mantenendo solo le righe non vuote.
Il problema è che non conosco a priori nè la dimensione di partenza dell'array nè la posizione delle righe vuote, perchè sono dati che escono da una precedente elaborazione.
Spero di essere stato chiaro.
Qualcuno mi può aiutare ?
Grazie
----------------------------------------
AUTORE: 301
DATA :01/03/2012 - 19:25:54
----------------------------------------
Se dai un'occhiata nel forum, trovi varie discussioni su argomenti simili.
In ognicaso, ti allego l'esempio.
Aris
----------------------------------------
AUTORE: 4165
DATA :02/03/2012 - 17:01:34
----------------------------------------
Grazie Aris, ho solo un problema: mi sono dimenticato di dire che la versione di Labview che sto utilizzando è la 6.1....
Quindi ho scaricato il tuo esempio ma non riesco ovviamente ad aprirlo. So di chiederti tanto ma non riusciresti a farmi una immagine ?
Intanto io provo a cercare nel forum.
----------------------------------------
AUTORE: 301
DATA :02/03/2012 - 20:28:22
----------------------------------------
Nessun problema, allego immagine per i 2 valori del case.
Se non riesci a capire chiedi pure.
Al posto di "empty string", potresti anche fare una comparazione con una stringa (controllo) in modo da eliminare una stringa che puoi specificare (anche vuota), magari fallo come esercizio!!!!
Aris
----------------------------------------
AUTORE: 4165
DATA :05/03/2012 - 13:14:06
----------------------------------------
Perfetto, grazie mille.
Quindi se ho capito bene si parte da un array vuoto e man mano si aggiungono le stringhe che non risultano vuote.
MA a questo punto vale lo stesso procedimento anche con una tabella ? Perchè, se non sbaglio, in questo caso il selettore della struttura case non sarebbe più un elemento stringa vuota ma un array di stringhe vuote, giusto ?
----------------------------------------
AUTORE: 301
DATA :05/03/2012 - 13:20:59
----------------------------------------
L'array vuoto, l'ho messo per "resettare" la funzione ogni volta che lanci il vi.
In pratica, scomponi l'array elemento per elemento e lo ricomponi senza gli elementi che non vuoi.
Nel caso di una tabella, puoi fare la stessa cosa anche sui singoli elementi, ponendo il for loop all'interno di un'altro (sfrutti l'indicizzazione del for), ovvio che così la tabella verrebbe sfasata, altrimenti fai l'operazione sulle "righe" o sulle "colonne" della tabella.
Aris
----------------------------------------
================================================================================
creare graifico XY da file txt
================================================================================
AUTORE: 1308
DATA :06/03/2012 - 08:06:18
----------------------------------------
buongiorno a tutti,
ecco il problema della settimana..
ho un vi col quale acquisisco dati che poi visualizzo in un grafico xy e salvo in file .txt
il grafico è composto da 2 linee di tendenza ( bianca e rossa) che sono generate da 2 coppe di coordinate.
mentre la verde è quella acquisita.
cio che vorrei fare ma che sembra per me insormontabile è andare a leggere a posteriori il file txt e ricostruire un grafico simile a quello che vedevo durante l'acquisizione.
siete a conoscenza di qualche example o avete qualche dritta ?
allego immagine VI ed esempio di dati salvati.
PS: eventualmente potrei cambiare la disposizione dei dati salvati se risultasse utile.
----------------------------------------
AUTORE: 1308
DATA :06/03/2012 - 14:57:27
----------------------------------------
rieccomi, sono bloccato qui da almeno 4 o 5 ore...
come osso unire i clusters o gli array ( scusate ma sono un eterno pivello) nel grafico XY ?
----------------------------------------
AUTORE: 301
DATA :07/03/2012 - 07:09:37
----------------------------------------
Premetto che non ho guardato cosa e come hai fatto, ho solo risolto il tuo problema.
Semplicemente, non puoi graficare delle stringhe!!!!
Arus
----------------------------------------
AUTORE: 301
DATA :07/03/2012 - 07:10:32
----------------------------------------
Aris (mi è scappata la "U")
----------------------------------------
AUTORE: 1308
DATA :07/03/2012 - 07:13:26
----------------------------------------
buongiorno Aris, buongiorno a tutti.
puoi passarmelo in versione 8.5 ?
poi ti faro sapere. in ogni caso grazie
----------------------------------------
AUTORE: 301
DATA :07/03/2012 - 07:21:24
----------------------------------------
Yesss...
Aris
----------------------------------------
AUTORE: 1308
DATA :07/03/2012 - 07:34:49
----------------------------------------
sembra funzionare, almeno al momento non da errori
ora provo ad leggere dati significati e non messi in modo casuale come ho messo per farmi capire.
ti confesso che se non ti rubo troppo tempo, mi piacerebbe capire come hai risolto.
perche, giustamente come dici tu, non potevo creare un grafico da stringhe, ma quel vi che ho allegato era solamente la versione su cui stavo lavorando al momento in cui mi sono arreso ed ho deciso di chiedere aiuto a voi.
alla fine ho tentato la via della stringa perche usando numeri continuava a darmi errori.
----------------------------------------
AUTORE: 301
DATA :07/03/2012 - 09:35:19
----------------------------------------
Ho risolto convertendo le stringhe le stringhe in numero.....
La struttura di dati da mettere in un grafico XY è:
2 Array (numeri) -> inseriti in un cluster -> inserito in un Array
I 2 array (di numeri) non sono altro che tutte le coordinate x ed y del vettore che devi graficare, uniti in un cluster.
Di questi cluster ne puoi graficare svariati, sullo stesso grafico, mettendoli in un array.
----------------------------------------
AUTORE: 301
DATA :07/03/2012 - 09:37:04
----------------------------------------
P.S.
sotto la paletta delle funzioni stringa, trovi tutto ciò che ti serve per convertire stringhe in numeri e viceversa.
Aris
----------------------------------------
================================================================================
Listbox
================================================================================
AUTORE: 4165
DATA :06/03/2012 - 10:54:10
----------------------------------------
Ciao a tutti,
vi espongo il mio dubbio, che sicuramente per molti di voi risulterà banale.
Ho un array di stringhe di dimensione nx4 (non conosco a priori quante righe ci saranno) che esce da un ciclo for.
Dovrei rendere visibili i dati dell'array sul pannello frontale in una struttura che mi permetta di selezionare una riga e di recuperare l'indice della riga selezionata, per poter poi richiamere altri dati collegati a quelli della riga selezionata.
Pensavo ad una multicolumn listbox: sono riuscito a passare i dati dell'array ma come trovo l'indice della riga che poi seleziono nel pannelo frontale ?
Ho provato anche con una semplice listbox ma non ci sono saltato fuori.
Grazie
----------------------------------------
AUTORE: 301
DATA :07/03/2012 - 07:24:56
----------------------------------------
Credo tu debba gestire la cosa con una struttura ad eventi.....l'hai mai usata?
Diversamente, credo che ti diventi tutto un po complicato, in ogni caso, comincia a guardarti tra i metodi del multicolumn, c'è "get double clicked row", che ti da l'indice della riga su cui si è fatto doppio click.
Aris
----------------------------------------
AUTORE: 4165
DATA :07/03/2012 - 09:38:53
----------------------------------------
No veramente no... ma ci provo, se non altro imparo qualcosa di nuovo.
Ho provato a cercare "get double click row" sull'help on line e mi dice quanto ti riporto "You can set these properties on controls. Right-click a property node and select Generic in the Select VI Server Class pull-right menu to display the properties for this class"
...solo che se creo il property node e col tasto destro faccio comparire il menu per selezionare le proprietà la voce "Select VI server class" risulta disabilitata
Dove sbaglio ?
Ciao e grazie
----------------------------------------
AUTORE: 301
DATA :07/03/2012 - 09:56:44
----------------------------------------
Tasto destro sul CONTROLLO da li create>>Invoke node>>Get double cliked row (o quello che vuoi).
In questo modo fai prima....
----------------------------------------
AUTORE: 482
DATA :07/03/2012 - 13:27:37
----------------------------------------
[quote="Paperinik":37rquk9m]Pensavo ad una multicolumn listbox: sono riuscito a passare i dati dell'array ma come trovo l'indice della riga che poi seleziono nel pannelo frontale ?[/quote:37rquk9m]
La multicolumn listbox E' un controllo di tipo intero. Quello che ti restituisce è già il valore della riga selezionata.Infatti per inserirci l'array distringhe non usi come nella tabella direttamente l'indicatore ma usi un property node.
Tu puoi semplicemente verificare se il valore è cambiato o meno.
----------------------------------------
AUTORE: 4165
DATA :08/03/2012 - 09:13:45
----------------------------------------
Grazie a tutti..ho fatto come suggerito da Aris, poi ho collegato un indicatore all'Invoke Node "Get Double Clicked Row" e mi viene sempre il valore "-2", che da quel che ho letto significa "nessuna riga selezionata".
Poi ho provato a selezionare altre righe, facendo doppio clic, ma rimane sempre "-2".
Non è che c'è qualcosa da abilitare....non so un indice riga o qualcosa di simile ?
@gepponline: scusa ma non ho capito ma deriva dalla mia scarsa dimestichezza con Labview. Dici che il "Multicolumn Listbox" restituisce già il valore della riga selezionata...ma dove lo si vede questo valore ?
Ciao e grazie ancora per la vostra pazienza e collaborazione
----------------------------------------
AUTORE: 301
DATA :08/03/2012 - 10:48:38
----------------------------------------
Vedi allegato.....
Per fermare il vi, premi la x rossa di chiusura del front panel.
----------------------------------------
AUTORE: 4165
DATA :08/03/2012 - 14:38:11
----------------------------------------
Grazie Aris....ma ho sempre il solito problema: labview 6.1..
Solita immagine ?
Poi spero di passare ad una versione aggiornata del programma, ma per il momento mi tocca usare questa.
Grazie ancora
----------------------------------------
AUTORE: 301
DATA :08/03/2012 - 14:58:26
----------------------------------------
Giusto......
Diventa un po più difficile....
Crea la tua Multicolumn listbox, mettila in una struttura "event" e con il tasto dx crei un evento come nell'immagine.
Prova anche senza mettere il wile attorno e inizia a vedere le strutture ad eventi!
Aris
----------------------------------------
AUTORE: 482
DATA :08/03/2012 - 15:20:16
----------------------------------------
Se crei unmulticolumn listbox, nel diagramma ti viene creato un oggetto di tipo I32, quindi un numerico I32.
Crea sul pannello unindicaore numerico e poi nel diagramma collega i due oggetti.
Compila il multicolumn listobox e poi clikka sulle varie righe, vedrai che l'indicator enumerico ti restituisce l'indirizzo della linea selezionata
----------------------------------------
AUTORE: 4165
DATA :09/03/2012 - 10:33:14
----------------------------------------
Ok...grazie a tutti.
Credo di aver capito...non ancora le strutture ad eventi, che mi risultano ancora un po' complicate, ma il resto direi di sì.
Ciao e grazie
----------------------------------------
================================================================================
run-time engine 6.1 su windows 7 64 bit
================================================================================
AUTORE: 4166
DATA :06/03/2012 - 13:12:11
----------------------------------------
Salve a tutti,
sono nuova del forum e anche di LabView...
Ho installato la licenza studente di LabView 2011 su Windows 7 64 bit senza problemi e ho provato ad eseguire alcuni tutorial per cercare di prendere confidenza con l'ambiente (sono ancora in alto mare!).
Poi il professore ci ha dato delle esercitazioni di anni precedenti e volevo provare ad eseguirle ma non sono capace!
Quando vado a cliccare sull'eseguibile ottengo un messaggio di errore "requires a versione 6.1 (or compatible) LabView Run-Time Engine". Il professore ci ha fornito anche il run-time engine ma non riesco ad installarlo su windows 7 64 bit, sembra non compatibile (non l'esecuzione del programma, proprio l'installazione).
Allora ho scaricato dalla national instruments i run time 2009, 2010 e 2011, che erano indicati come compatibili con seven64, ma evidentemente non sono compatibili con il runtime 6.1 perchè ancora non riesco a far partire quei benedetti eseguibili!
Sapete esattamente cosa devo scaricare per eseguire queste esercitazioni?
Grazie!
Ps. scusate se ho sbagliato sezione ma non capivo bene dove postare la mia domanda!
----------------------------------------
AUTORE: 301
DATA :07/03/2012 - 06:55:28
----------------------------------------
Credo che proprio non esista......
Ogni versione ha il proprio rte (appunto, 2011, 2010, 2009, 8.5, ecc), ma non credo che l'rte del 6.1 ci sia a 64 bit.
Unico consiglio che mi sento di darti è chiedere al prof di ricreare l'exe con una versione più recente di LV.
Aris
----------------------------------------
AUTORE: 43
DATA :07/03/2012 - 09:39:18
----------------------------------------
[quote="sundaymorning":t05xayc8]Salve a tutti,
sono nuova del forum e anche di LabView...
Ho installato la licenza studente di LabView 2011 su Windows 7 64 bit senza problemi e ho provato ad eseguire alcuni tutorial per cercare di prendere confidenza con l'ambiente (sono ancora in alto mare!).
Poi il professore ci ha dato delle esercitazioni di anni precedenti e volevo provare ad eseguirle ma non sono capace!
Quando vado a cliccare sull'eseguibile ottengo un messaggio di errore "requires a versione 6.1 (or compatible) LabView Run-Time Engine". Il professore ci ha fornito anche il run-time engine ma non riesco ad installarlo su windows 7 64 bit, sembra non compatibile (non l'esecuzione del programma, proprio l'installazione).
Allora ho scaricato dalla national instruments i run time 2009, 2010 e 2011, che erano indicati come compatibili con seven64, ma evidentemente non sono compatibili con il runtime 6.1 perchè ancora non riesco a far partire quei benedetti eseguibili!
Sapete esattamente cosa devo scaricare per eseguire queste esercitazioni?
Grazie!
Ps. scusate se ho sbagliato sezione ma non capivo bene dove postare la mia domanda!
[/quote:t05xayc8]
Per quanto riguarda la versione 6.1, sia ambiente di sviluppo che runtime, penso basti fare un "copia e incolla" dell'albero completo delle direcory installate da un PC 32 bit ad uno a 64 bit per avere una "installazione" usabile.
In teoria il codice a 32 bit può essere eseguito su un processore a 64 bit, per cui penso che il tuo problema riguardi solo l'installer, che è stato concepito per un s.o. ormai antico.
Se gli esercizi non usano HW per poter girare, penso possano funzionare tranquillamente. Ho dei dubbi sul fatto che siano usabili le seriali se nel codice non si fa uso di librerie VISA ma piuttosto del vecchio driver , quello che fa capo alla libreria "serpdrv"... .
facci sapere.
bye
----------------------------------------
AUTORE: 482
DATA :07/03/2012 - 13:30:30
----------------------------------------
In alternativa virtualizza XP a 32 bit sul tuo windows 7 a 64 bit.
----------------------------------------
AUTORE: 11119
DATA :11/04/2016 - 13:04:58
----------------------------------------
il tuo problema riguardi solo l'installer, che è stato concepito per un s.o. ormai antico?????
----------------------------------------
AUTORE: 43
DATA :12/04/2016 - 13:25:44
----------------------------------------
[quote="alstonamos":63urbpn6]il tuo problema riguardi solo l'installer, che è stato concepito per un s.o. ormai antico?????[/quote:63urbpn6]
LabVIEW 6.1 è stato rilasciato nel 2001, Windows7 è stato rilasciato nel 2009.
L'installer di LabVIEW 6.1 è stato fatto per windows 2000/NT ed è compatibile con Windows XP.
La mia opinione è che il S.O. Windows 2000/NT può considerarsi "antico" nell'anno 2012 (anno del post.)
----------------------------------------
================================================================================
domanda labview
================================================================================
AUTORE: 4171
DATA :08/03/2012 - 09:45:38
----------------------------------------
Ciao a tutti, ho una domanda su labView:
posso istallare l'ultima versione in un tostapane?
grazie
saluti
----------------------------------------
AUTORE: 482
DATA :08/03/2012 - 15:21:14
----------------------------------------
solo se è dotato di lettore DVD..e chiudiamola qui please...
----------------------------------------
================================================================================
Eliminare elementi da un array
================================================================================
AUTORE: 4173
DATA :09/03/2012 - 16:23:50
----------------------------------------
Salve a tutti, ho un problema con un vi di labview. L'immagine in allegato è relativa al block diagram di un vi che genera un vettore di 10 numeri casuali compresi tra -50 e 50 e seleziona soltanto i numeri che sono > 20 ; il tutto viene scritto su un file di testo. L'output del programma è ad es: 22.00;0.00;25.00;30.00;45.00;0.00;0.00;0.00;0.00;0.00 . Dove 0.00 è un numero che non rispetta la suddetta condizione. Ora il mio problema è: io vorrei un output del tipo 22.00;25.00;45.00 , cioè vorrei eliminare gli zeri dall'array. Magari in java eliminare elementi da un array è una cosa molto facile, ma con labview sembra una cosa veramente difficile.Ho provato varie soluzioni, tipo utilizzare un secondo for per scandirmi il vettore e utilizzare il blocco delete from array ma niente da fare; Qualcuno ha idee da suggerirmi?
[img] http://imageshack.us/photo/my-images/68 ... inecfg.png
[/img]
----------------------------------------
AUTORE: 645
DATA :10/03/2012 - 00:22:27
----------------------------------------
Prova ad usare uno Shift Register nel quale memorizzare, ad ogni ciclo, solo i valori maggiori di 20 (inserendoli nell'Array con la funzione Build Array passando come primo ingresso lo Shift Register e come secondo ingresso il valore se rispetta la condizione richiesta).
Al termine del ciclo in uscita dallo Shift Register hai il vettore che ti serve senza i numeri inutili.
----------------------------------------
AUTORE: 4173
DATA :10/03/2012 - 08:48:07
----------------------------------------
grazie del consiglio, provo e t faccio sapere !
----------------------------------------
AUTORE: 4173
DATA :10/03/2012 - 09:20:14
----------------------------------------
niente, ho provato ma non va, ci sono sempre gli zeri. Mi puoi mandare un immagine della tua idea perfavore? Forse sbaglio io a impostare lo shift register
----------------------------------------
AUTORE: 4173
DATA :10/03/2012 - 09:36:50
----------------------------------------
ho risolto, e funziona !! avevo messo il build array fuori dal case, per questo non funzionava, ora come mi hai suggerito tu va alla grande !!! grazie !
----------------------------------------
AUTORE: 645
DATA :15/03/2012 - 16:34:22
----------------------------------------
Magari posta un'immagine della soluzione... Può essere utile a chi incontrerà lo stesso problema!
----------------------------------------
AUTORE: 11063
DATA :13/06/2015 - 14:30:57
----------------------------------------
Buongiorno a tutti ragazzi, sono nuovo del forum e ho lo stesso problema....togliere gli zeri da un array.
Volevo gentilmente chiederti se potevi (a distanza di 3 anni!) postarmi una immagine della VI.[/size]
Credo di aver impostato correttamente la VI in caso di comparazione VERA, ma non riesco ad uscire e credo che il problema sia sulla comparazione FALSA.
----------------------------------------
AUTORE: 301
DATA :14/06/2015 - 12:43:24
----------------------------------------
Eccoti un esempio.
Aris
----------------------------------------
================================================================================
Tecnico meccanico in difficoltà
================================================================================
AUTORE: 4174
DATA :10/03/2012 - 07:57:15
----------------------------------------
Buongiorno a tutti,
sono un tecnico meccanico che sta iniziano a muovere i primi passi con labview, a breve comincero un percorso formativo per imparare (speriamo) a programmare e costruire semplici sistemi/applicazioni.
in attesa che comincino i corsi faccio un pò di autoapprendimento, ho creato un semplice vi che riceve da uno strumento collegato alla porta seriale una stringa numerica, quest'ultima successivamente viene formattata e se il risultato è compreso in un certo range mi accende un led sul FP.
La stringa uscita dallo stumento è una misura, vorrei accendere il led solo dopo che un certo numero di risultati siano compresi nel range da me scelto.
sicuramente sarà una banalità, scusate l'ignoranza ma uscendo dall'ambiente meccanico sono un pò in difficoltà.
Saluti
----------------------------------------
AUTORE: 301
DATA :12/03/2012 - 07:28:55
----------------------------------------
Buon giorno e benvenuto.
Per fare quello che devi, convertirei i valori stringa in numerici, creerei un aray solo con quelli compresi nel range che ti interessa e quando arrivi ad avere un certo numero di elementi nell'array accenderei il led.
Non è complicato, potresti usare gli shift register all'interno di un while ed utilizzare una case structure per crearti l'array.....non sapendo le tue conoscenze di lv, non so bene come spiegarti......
che versione usi?
Aris
----------------------------------------
AUTORE: 4174
DATA :14/03/2012 - 10:18:23
----------------------------------------
Grazie mille per la risposta, sto frequentando il corso in questi giorni, spero di finirlo avendo le idee un po' più chiare.
Se non ci salto fuori tornerò alla carica..
----------------------------------------
AUTORE: 90
DATA :18/03/2012 - 14:43:26
----------------------------------------
Guarda se ti puo' servire questo!
Ciao
Claudio
----------------------------------------
AUTORE: 4174
DATA :19/03/2012 - 11:25:38
----------------------------------------
Grazie mille per l'esempio, adesso che ho acquistato un pò di familiarità (nella teoria) ho la situazione un pò più chiara ed ho capito perfettamente quello che mi avete spiegato e mostrato.
adesso volevo complicarmi un pò la vita, l'applicazione che avevo in mente di realizzare non si dovrebbe mai fermare, quindi sostanzialmente avrei bisogno di un ciclo infinito (che fermerei solo in caso di errore o chiudendo l'applicazione), per eseguire un ciclo infinito ho bisogno di azzerare lo shift register e di conseguenza l'array dopo aver acquisito i miei n valori buoni.
ho provato a creare un'ulteriore struttura case che dopo aver ricevuto il true inserisce una costante array con 3 zeri negli shift register, ma va in confusione un pò tutto. come devo reinizializzare il ciclo?
----------------------------------------
AUTORE: 645
DATA :19/03/2012 - 11:59:23
----------------------------------------
Potresti postare il Block Diagram del tuo VI?
Così partiamo da qualcosa di concreto e possiamo suggerirti...
----------------------------------------
AUTORE: 4174
DATA :19/03/2012 - 13:37:44
----------------------------------------
vi allego il .vi incompleto, con l'aggiunta di quello che pensavo di fare. ma penso proprio sia una boiata! cercate di non darmi la soluzione bella e pronta però, vorrei arrivarci da solo
come dicono nei quiz.... un aiutino??
----------------------------------------
AUTORE: 301
DATA :19/03/2012 - 13:40:11
----------------------------------------
Potresti postarla per versioni precedenti di LV?
Io ha la 10 installata.....
----------------------------------------
AUTORE: 4174
DATA :19/03/2012 - 14:27:13
----------------------------------------
eccola qui.
scusate ancora i grossolani errori!
----------------------------------------
AUTORE: 301
DATA :19/03/2012 - 16:32:52
----------------------------------------
Non scusarti.....
Ti allego l'esempio che hai postato (corretto....piu o meno).
Non so esattamente cosa devi fare, ma c'è un errore di fondo mooooolto importante.
L'applicazione (per come la vuoi fare), va strutturata con:
Apro la porta.
Leggo dalla porta (e tu ci fai anche delle operazioni).
Chiudo la porta.
Se devi leggere per n volte o n tempo o fino a quando decidi tu, non devi aprire e chiudere la connessione con lo strumento ogni volta!!!!
Comunque, vedi il tuo vi corretto, ma usalo solo per pensarci su!
Aris
----------------------------------------
AUTORE: 90
DATA :19/03/2012 - 16:40:26
----------------------------------------
Se vuoi svuotare l'array creati un ciclo for all'interno del secondo case in cui cancelli tutti i valori dell'Array, oppure scrivi 0 su tutte le locazioni di memoria.
Guarda se ti piace l'attachment.
Ciao
Claudio
----------------------------------------
AUTORE: 4174
DATA :23/03/2012 - 12:58:06
----------------------------------------
Ciao Bezier,
ho provato il tuo codice ma c'è qualcosa che non mi torna, io dovrei eliminare gli elemnti dall'array di raccolta dati, in effetti non è un'azzeramento dei valori ma una vera e propria re-inizializzazione.
Per quanto riguarda la parte della gestione porta seriale, Aris non ho ancora aperto il tuo vi, ma se ho capito bene dovrei lasciare all'interno del loop solo la funzione read e portare fuori il resto! giusto?
----------------------------------------
AUTORE: 301
DATA :23/03/2012 - 13:30:45
----------------------------------------
Esatto!
è inutile continuare a ciclare le operazioni di apertura e chiusura!
Apri la comunicazione -> cicli in lettura e scrittura fin che ti serve ->quando hai finito, chiudi la comunicazione.
Aris
----------------------------------------
AUTORE: 4174
DATA :23/03/2012 - 14:48:48
----------------------------------------
forse così potrebbe andare.. ottengo quello che voglio.
che ne pensate?
----------------------------------------
AUTORE: 301
DATA :23/03/2012 - 14:57:16
----------------------------------------
A parte l'uso della sequence (che non ha senso), per vuotare l'array basta che colleghi una costante array vuota!
E comunque, in questo modo, visualizzi sempre un array di max 2 valori (non 3).
Aris
----------------------------------------
AUTORE: 4174
DATA :23/03/2012 - 15:10:47
----------------------------------------
La sequence è rimasta li da prima, non l'ho tolta per pigrizia.
Per quanto riguarda la visualizzazione mi basterebbe spostare l'indicatore prima del momento di azzeramento dell'array.
avevo provato a collegare una costante vuota ma non funzionava. adesso riguardo meglio.
----------------------------------------
AUTORE: 4174
DATA :23/03/2012 - 15:15:12
----------------------------------------
Cavolo funziona anche la costante array vuota! evidentemente avevo sbagliato dell'altro!
Grazie mille!
piano piano cercherò di aggiungere dell'altro, vi terrò aggiornati
----------------------------------------
================================================================================
Lettura file HWS
================================================================================
AUTORE: 4027
DATA :13/03/2012 - 08:37:43
----------------------------------------
Ciao a tutti,
aprendo file HWS, vorrei poter estrarre i nomi dei canali digitali contenuti, qualcuno sa come fare?
Ciao e grazie!
----------------------------------------
AUTORE: 43
DATA :13/03/2012 - 14:08:43
----------------------------------------
[quote="Larry.":2e8to7j2]Ciao a tutti,
aprendo file HWS, vorrei poter estrarre i nomi dei canali digitali contenuti, qualcuno sa come fare?
Ciao e grazie![/quote:2e8to7j2]
http://zone.ni.com/reference/en-XX/help ... pesfp/hws/
http://www.hdfgroup.org/HDF5/doc/H5.format.html
http://www.hdfgroup.org/HDF5/doc/UG/index.html
http://www.hdfgroup.org/pubs/others/Nyb ... column.pdf
http://www.hdfgroup.org/downloads/index.html
bye
P.S.:
http://forums.ni.com/t5/High-Speed-Digi ... d-p/442809
----------------------------------------
================================================================================
daq output con for
================================================================================
AUTORE: 4176
DATA :14/03/2012 - 09:59:46
----------------------------------------
Salve a tutti sono nuovo sul forum. Ho cominciato da poco ad usare LV e sono incappato in un problema con la gestione di un dispositivo daq(6009) per l'analog output.
Ho un visual-array con 2 elementi(physical channels) in cui specifico i nomi dei canali( dev1/ao0 , dev1/ao1).
Ora i valori che devono spararmi fuori li vorrei impostare tramite ciclo for,cioè:
esempio
-ciclo N=0 1v->dev1/ao0
-ciclo N=1 2v->dev1/ao1
si può fare in questo modo tramite for? o c'è un altro metodo?
grazie in anticipo
----------------------------------------
AUTORE: 482
DATA :15/03/2012 - 07:41:25
----------------------------------------
ma perchè vuoi fare questa cosa quando puoi leggerli contemporaneamente in una botta sola?
Quello che chiedi è fattibile, basta che metti un case con dentro il nome del canale da leggere e quando la i del FOR è a 0 metti dev1/ao0 quando è a 1 metti dev1/ao1...
due letture separate sono comunque sconsigliabili, meglio leggerle insieme e in seguito suddividerle.
----------------------------------------
AUTORE: 4176
DATA :15/03/2012 - 09:09:00
----------------------------------------
scusa, perdona la mia ignoranza in che senso in una botta sola?
per capire, elimino il for: creo un subvi con ingressi il canale fisico e il valore che dovrebbe avere l'uscita.
quindi devo avere un campo numeric(per esempio) e un campo physical channels collegati ai rispettivi connettori del subvi. ora devo ripetere per l'altro canale.
mi ritrovo due parti identiche con gli stessi componenti, in cui cambiano solo i valori degli ingressi. è corretto?
----------------------------------------
AUTORE: 4176
DATA :15/03/2012 - 10:12:11
----------------------------------------
così mi da errore 50103, però la scheda genera effettivamente i valori specificati.
----------------------------------------
AUTORE: 482
DATA :15/03/2012 - 15:49:12
----------------------------------------
Avevo capito male e pensavo sistesse parlando di letture, ma la cosa noncambia.
il blocchetto di lettura dalla scheda, sotto ha una scritta violetta giusto? se ci clikki sopra ti da la possibilità di scegliere il tipo di scrittura che vuoi fare se single channel o multiple channel, un dato solo o piu' dati per volta.
Tu scegli multiple channel e un dato per volta ( non mi ricordo la dicitura esatta).
Poi in ingresso al canale fisico gli dai "dev1/a0,dev1/a0" non mi ricordo se ci va la virgola o il punto e virgola tra i due,non ho il pc di sviluppo sottomano.
Poi in ingresso gli dai un array con due valori. Il primo verrà mandato al canale 0 e il secondo al canale 1.
----------------------------------------
================================================================================
Calcolo SNR in un immagine
================================================================================
AUTORE: 4177
DATA :14/03/2012 - 11:48:43
----------------------------------------
Ciao a tutti essendo nuovo del forum, come nell'uso di labVIEW, colgo l'occasione per salutarvi, volevo chiedervi inoltre se potevate darmi un aiuto sull'implementazione di un codice che mi calcolasse il rapporto segnale rumore di un immagine ecografica, o se eravate a conoscenza di una formula o procedimento che potesse aiutarmi, dato che da una prima ricerca in rete non ho trovato molto, vi ringrazio anticipatamente.
----------------------------------------
================================================================================
Problema porta seriale e application builder labview2011
================================================================================
AUTORE: 4179
DATA :16/03/2012 - 13:31:49
----------------------------------------
Buongiorno a tutti,
ho un quesito da porvi. Ho un problema con l'utilizzo dell'application builder. Utilizzo labview 2011, ho fatto un programma che invia stringe di dati tramite la seriale, tutto funziona correttamente, quando faccio Run da labview, ma quando creo il file .exe con l'application builder, la seriale smette di funzionare ovvero non invia più nulla (l'ho notato anche con l'utilizzo di un oscilloscopio.
Mi sapete dire che passaggio nella formazione del file exe tramite l'application builder sbaglio?
Grazie!
Ciao
----------------------------------------
AUTORE: 4179
DATA :16/03/2012 - 13:34:19
----------------------------------------
leggendo mi sono reso conto di essere stato poco chiaro, intendo che quando creo l'exe tramite l'application builder e lo lancio, si apre il frontal pannel che sembra che funzioni ma alla fine non invia nulla!
----------------------------------------
AUTORE: 301
DATA :16/03/2012 - 15:52:32
----------------------------------------
Richiami dei vi in maniera dinamica all'interno della tua applicazione?
L'exe provi a lanciarlo sullo stesso pc o su un'altra macchina?
Aris
----------------------------------------
AUTORE: 43
DATA :16/03/2012 - 16:23:21
----------------------------------------
[quote="x8raffaele6x":22q213an]Buongiorno a tutti,
ho un quesito da porvi. Ho un problema con l'utilizzo dell'application builder. Utilizzo labview 2011, ho fatto un programma che invia stringe di dati tramite la seriale, tutto funziona correttamente, quando faccio Run da labview, ma quando creo il file .exe con l'application builder, la seriale smette di funzionare ovvero non invia più nulla (l'ho notato anche con l'utilizzo di un oscilloscopio.
Mi sapete dire che passaggio nella formazione del file exe tramite l'application builder sbaglio?
Grazie!
Ciao[/quote:22q213an]
beh! sembrerà banale, ma che errore ti viene notificato?
L'errore ti viene notificato quando "apri" la risorsa? o mentre scrivi o leggi?
L'eseguibile non gira sul Pc con cui hai sviluppato e testato il tuo SW oppure l'hai provato su un altro PC?
Se l'hai testato su un altro PC , hai installato le runtime della libreria VISA?
la regola base di chi scrive un qualunque SW vuole che in ogni caso , se ci sono errori, vengano evidenziati sulla UI o almeno in un file di log.
Ti sei mai chiesto perchè il 99 % dei VI hanno nell'angolo in basso a sx un ingresso "Error in" ed in uscita nell'angolo in basso a dx hanno un "error out"?
pensaci.. soprattutto prima di pensare di utilizzare un oscilloscopio.
Potrebbe essere che il Tuo SW fa delle altre cose e non arriva mai a spedire messaggi sulla linea seriale xkè... manca un tuo file di configurazione... o perchè hai scritto nel SW "COM3" e la seriale "COM3" non esiste nel PC su cui hai provato l'eseguibile...
bye
----------------------------------------
AUTORE: 90
DATA :18/03/2012 - 12:38:51
----------------------------------------
Provo a inserirmi anche io pur essendo abbastanza "novello" in LabVIEW....
Allora, prima di tutto leggi o scrivi da file esterno qualcosa? A me e' successo che se tu dai un path assoluto ti si sconvolge tutto!
Quando compili prova a non escludere nulla dal target e vedi cosa succede, includi tutto (almeno per provare).
Altro non mi viene in mente.
Non ti rifaccio le domende che hanno gia' fatto altri per ovvii motivi.
Ciao
Claudio
----------------------------------------
AUTORE: 4179
DATA :18/03/2012 - 16:41:50
----------------------------------------
Grazie per le risposte, cercherò di essere più chiaro.
Per prima cosa, il mio vi non richiama nessun altro vi, secondo io ho fatto partire l'exe sia nel pc in cui è presente labview e sia in un pc in cui non è presente ottenendo lo stesso risultato. Segnalazioni di errori non ce ne sono, l'oscilloscopio l'ho utilizzato esclusivamente perchè ce l'avevo affianco al pc, e labview l'ho iniziato ad utilizzare mercoledì scorso, quindi essere considerato novello per me, ora, è un punto di arrivo! La COM1 è la 1, e ho sempre verificato la congruità. Il problema è che con l'exe il programma, una volta fatto eseguire, sembra funzionare esattamente come quando faccio il run in labview, solo che dalla seriale non esce niente. Secondo me, l'errore starà nel comporre il file exe nell'application builder in quanto lì, ci sono spunte, file di libreria da inserire e quant'altro ma, non conoscendo l'applicazione sbaglierò qualcosa e una volta 'buildato' il file exe non funziona.
----------------------------------------
AUTORE: 43
DATA :19/03/2012 - 08:47:01
----------------------------------------
[quote="x8raffaele6x":1jf9jmbz]Grazie per le risposte, cercherò di essere più chiaro.
Per prima cosa, il mio vi non richiama nessun altro vi, secondo io ho fatto partire l'exe sia nel pc in cui è presente labview e sia in un pc in cui non è presente ottenendo lo stesso risultato. Segnalazioni di errori non ce ne sono, l'oscilloscopio l'ho utilizzato esclusivamente perchè ce l'avevo affianco al pc, e labview l'ho iniziato ad utilizzare mercoledì scorso, quindi essere considerato novello per me, ora, è un punto di arrivo! La COM1 è la 1, e ho sempre verificato la congruità. Il problema è che con l'exe il programma, una volta fatto eseguire, sembra funzionare esattamente come quando faccio il run in labview, solo che dalla seriale non esce niente. Secondo me, l'errore starà nel comporre il file exe nell'application builder in quanto lì, ci sono spunte, file di libreria da inserire e quant'altro ma, non conoscendo l'applicazione sbaglierò qualcosa e una volta 'buildato' il file exe non funziona.[/quote:1jf9jmbz]
Mettiamola così... mancano dati per poter dare delle indicazioni in merito.
Io ti consiglio di postare il VI in questo forum e di sicuro di daremo una mano.
Puoi collegare in una catena, gli "error out" agli "error in" successivi e di visualizzare in "cluster error" tutte le uscite dei VI che gestiscono le seriali.
Riguardo il tuo problema, faccio un altra ipotesi: la funzione "VISA Open" per qualche motivo termina con un errore in uscita. L'errore è connesso in ingresso alla funzione "VISA Write" che non scrive nulla sulla seriale proprio perchè c'è un errore nella funzione precedente e la risorsa (COM1) non è allocata e quindi non è accessibile.
Questo può succedere per es. se hai fatto girare il tuo SW in ambiente di sviluppo, non hai chiuso la risorsa al termine (VISA Close) e viene mandato in esecuzione il SW in versione eseguibile mentre la risorsa (COM1) è ancora sotto il controllo del Sw versione sorgente...
Se il problema fosse di compilazione, allora sarebbe bello che tu postassi anche il file di progetto...
bye
----------------------------------------
AUTORE: 482
DATA :19/03/2012 - 08:54:03
----------------------------------------
concordo con paracarro sul fatto che la soluzione piu' semplice è crearsi un bell'indicatore di errore sul front panel che visualizzi l'errore alla fine della catena.
----------------------------------------
AUTORE: 4179
DATA :19/03/2012 - 11:24:14
----------------------------------------
Ciao, ho fatto come mi avete suggerito e l'errore che si presenta è:
error -1073807246 Property Node (arg 1) in VISA Configure Serial Port (Instr).vi-
----------------------------------------
AUTORE: 645
DATA :19/03/2012 - 11:56:09
----------------------------------------
Puoi postare il Block Diagram del VI?
Dall'errore potrebbe essere che imposti la porta seriale con valori costanti, valori che non vanno bene quando parte il file exe.
Hai inserito dei controlli per permettere all'utente di scegliere la porta seriale da utilizzare?
Il fatto che facendo partire il VI sia dove LabView c'è che dove LabView non c'è ottieni sempre lo stesso errore mi sembra strano: nel secondo caso non dovresti vedere il VI avviato perchè dovrebbe restituirti un errore di mancanza librerie.
----------------------------------------
AUTORE: 43
DATA :19/03/2012 - 13:25:39
----------------------------------------
[quote="x8raffaele6x":dm3jvc1u]Ciao, ho fatto come mi avete suggerito e l'errore che si presenta è:
error -1073807246 Property Node (arg 1) in VISA Configure Serial Port (Instr).vi-[/quote:dm3jvc1u]
Il nome della risorsa seriale è errato. devi impostare un nome corretto della risorsa....
stesso problema di questa discussione:
viewtopic.php?f=1&t=5545
bye
----------------------------------------
AUTORE: 4179
DATA :19/03/2012 - 14:13:42
----------------------------------------
Il problema ho notato che non è il nome della periferica, ma proprio che non trova la periferica!
mi spiego, ora, nel mio pc l'exe funziona correttamente una volta aver scelto adeguatamente la porta COM dal front panel, invece quando vado in un altro pc e vado a selezionare la porta com noto che non presenta nessuna porta com.
ho anche fatto partire il programma consigliato da paracarro per trovare il nome della periferica, e l'ho eseguito nel pc senza labview e come risposta non ho nulla ovvero non riempie i campi del find list e dell'array.
----------------------------------------
AUTORE: 43
DATA :19/03/2012 - 14:43:31
----------------------------------------
[quote="x8raffaele6x":32t9o1bu]Il problema ho notato che non è il nome della periferica, ma proprio che non trova la periferica!
mi spiego, ora, nel mio pc l'exe funziona correttamente una volta aver scelto adeguatamente la porta COM dal front panel, invece quando vado in un altro pc e vado a selezionare la porta com noto che non presenta nessuna porta com.
ho anche fatto partire il programma consigliato da paracarro per trovare il nome della periferica, e l'ho eseguito nel pc senza labview e come risposta non ho nulla ovvero non riempie i campi del find list e dell'array.[/quote:32t9o1bu]
E' installata la versione Run-time della libreria VISA?
----------------------------------------
AUTORE: 482
DATA :19/03/2012 - 14:56:21
----------------------------------------
E oltre a quello, piu' fondamentale ancora, se usi un convertitore USB seriale, hai installato i driver del convertitore nel pc dove gira l'eseguibile?
----------------------------------------
================================================================================
Visa-Seriale UART
================================================================================
AUTORE: 4181
DATA :18/03/2012 - 14:00:12
----------------------------------------
Salve,
voglio realizzare un software che invii una char sulla seriale e legga la risposta dalla stessa, non avendo la porta seriale sto utilizzando un convertitore USB-UART per collegarmi al mio microprocessore AT90s2313. Premetto che se uso Hyperterminal di windows la connessione funziona perfettamente quindi se c'è un problema è nel diagramma di Labview. Ho seguito le istruzioni su questo sito http://www.grix.it/viewer.php?page=2047 ... ipage%3D64 , ma dopo aver creato il block diagram ottengo l'errore Property Node (arg 1) in VISA Configure Serial Port (Instr).vi->R_W_seriale.vi , cosa devo fare????
----------------------------------------
AUTORE: 482
DATA :19/03/2012 - 08:55:54
----------------------------------------
Ti consiglio, invece di usare quelle istruzioni, di usare l'esempio incluso in labview che si chiama Basic Serial read & write ( o qualcosa del genere).
----------------------------------------
AUTORE: 3428
DATA :19/03/2012 - 09:43:08
----------------------------------------
ciao, io solitamente dopo aver atteso il tempo di risposta do in pasto al blocchetto di lettura il numero di bytes che mi esce dal property node "number of bytes at serial port"
dopo il write, collega l'uscita della com ad un property node, e selezioni internamente property - serial settings - number of bytes at serial port". non saprei dirti se risolve il problema ma...
----------------------------------------
AUTORE: 43
DATA :19/03/2012 - 10:01:50
----------------------------------------
[quote="bombernigno":3n63p1f6]Salve,
voglio realizzare un software che invii una char sulla seriale e legga la risposta dalla stessa, non avendo la porta seriale sto utilizzando un convertitore USB-UART per collegarmi al mio microprocessore AT90s2313. Premetto che se uso Hyperterminal di windows la connessione funziona perfettamente quindi se c'è un problema è nel diagramma di Labview. Ho seguito le istruzioni su questo sito http://www.grix.it/viewer.php?page=2047 ... ipage%3D64 , ma dopo aver creato il block diagram ottengo l'errore Property Node (arg 1) in VISA Configure Serial Port (Instr).vi->R_W_seriale.vi , cosa devo fare????[/quote:3n63p1f6]
Il "nome" della porta seriale non è valido
Dato che il nome della risorsa è "variabile" (usi un convertitore USB to RS232) allora devi cercare una risorsa seriale.
Usa questo VI[attachment=0:3n63p1f6]SearchVISASerialResources.vi[/attachment:3n63p1f6]
Copia /incolla il nome della seriale (ASRLx::INSTR) nel controllo "Porta" presente nel Front Panel.
bye
----------------------------------------
AUTORE: 645
DATA :19/03/2012 - 11:57:47
----------------------------------------
Dai sempre la possibilità all'utente di scegliere i parametri della porta seriale (nome, baud rate, parità...) in modo da realizzare VI flessibili.
----------------------------------------
AUTORE: 4179
DATA :19/03/2012 - 14:12:54
----------------------------------------
Il problema ho notato che non è il nome della periferica, ma proprio che non trova la periferica!
mi spiego, ora, nel mio pc l'exe funziona correttamente una volta aver scelto adeguatamente la porta COM dal front panel, invece quando vado in un altro pc e vado a selezionare la porta com noto che non presenta nessuna porta com.
ho anche fatto partire il programma consigliato da paracarro per trovare il nome della periferica, e l'ho eseguito nel pc senza labview e come risposta non ho nulla ovvero non riempie i campi del find list e dell'array.
----------------------------------------
AUTORE: 4179
DATA :19/03/2012 - 14:14:37
----------------------------------------
ops, ho sbagliato a postare! sorry!
----------------------------------------
AUTORE: 43
DATA :19/03/2012 - 14:51:10
----------------------------------------
[quote="x8raffaele6x":vo3ilgyz]Il problema ho notato che non è il nome della periferica, ma proprio che non trova la periferica!
mi spiego, ora, nel mio pc l'exe funziona correttamente una volta aver scelto adeguatamente la porta COM dal front panel, invece quando vado in un altro pc e vado a selezionare la porta com noto che non presenta nessuna porta com.
ho anche fatto partire il programma consigliato da paracarro per trovare il nome della periferica, e l'ho eseguito nel pc senza labview e come risposta non ho nulla ovvero non riempie i campi del find list e dell'array.[/quote:vo3ilgyz]
Crea un exe con questa versione.
Mea culpa!!
Ho parlato tanto di Cluster Error e io non l'ho utilizzato!!
[attachment=0:vo3ilgyz]SearchVISASerialResources.vi[/attachment:vo3ilgyz]
Se questo programmino non trova nessuna risorsa seriale ed esce senza errori, vuol dire che non ci sono risorse seriali.
Cmq il nome della risorsa non deve necessariamente essere scelto da una lista basta scriverci il riferimento come un normale testo.
bye
PS:
meglio usare i nomi canonici invece degli alias
----------------------------------------
================================================================================
Modificare il tipo di dato all'interno di un array
================================================================================
AUTORE: 3465
DATA :19/03/2012 - 15:32:40
----------------------------------------
Salve a tutti,
vi scrivo per avere un consiglio: dovrei riempire un array monodimensionale con dei dati che possono essere di tre tipi (boolean, string e double). Il valore di ciascun dato viene inserito a mano ma il suo tipo viene letto da un file di configurazione. Pertanto ciascun elemento dell'array è un controllo che deve poter dinamicamente diventare di uno dei tre tipi di cui prima (a seconda di quanto è stato letto programmaticamente dal file di configurazione). Qual è, secondo voi, il modo più semplice per fare ciò?
----------------------------------------
AUTORE: 482
DATA :19/03/2012 - 15:45:36
----------------------------------------
Ilmodo piu' semplice è quello di creare tutti e 3 i tipi di array a priori e popolare poi solo quello che serve in base al file di configurazione
----------------------------------------
AUTORE: 3465
DATA :19/03/2012 - 15:52:29
----------------------------------------
Grazie per la risposto ma temo di non essermi spiegato bene:
sul front panel ho un solo array in cui ciascuna "casella" può assumere uno di quei 3 tipi prima menzionati. Quindi avrò alcune caselle di tipo stringa, altre di tipo double e altre di tipo boolean. Non è possibile dinamicamente variare il tipo degli elementi di un array in modo che alcuni siano di un tipo e altri di un altro giusto? c'è un modo di fare ciò o devo inventarmi un algoritmo?
----------------------------------------
AUTORE: 43
DATA :19/03/2012 - 16:01:09
----------------------------------------
[quote="daniroma83":wz619y4o]Grazie per la risposto ma temo di non essermi spiegato bene:
sul front panel ho un solo array in cui ciascuna "casella" può assumere uno di quei 3 tipi prima menzionati. Quindi avrò alcune caselle di tipo stringa, altre di tipo double e altre di tipo boolean. Non è possibile dinamicamente variare il tipo degli elementi di un array in modo che alcuni siano di un tipo e altri di un altro giusto? c'è un modo di fare ciò o devo inventarmi un algoritmo?[/quote:wz619y4o]
Se vuoi mantenere questo tipo di dato devi aggiungere un campo numerico enumerato che indica quale dei tre campi (Bool, numerico, Stringa) ha senso.
Se fosse per me userei solo un campo stringa:potra contenere valori simili a questi:
[code:wz619y4o]B:0
B:1
N:7.56
S:sw version 7.9[/code:wz619y4o]
Il primo carattere indicherebbe il significato del valore che segue.
L'unico problema è che perderesti la precisione nel valore numerico (double)
Sono curioso: stai per caso costruendo un Test Manager? o cmq tutto ciò è finalizzato alla gestione di report di collaudo?
bye
----------------------------------------
AUTORE: 3465
DATA :19/03/2012 - 16:17:56
----------------------------------------
Sì si tratta di una sorta di Test Manager.Alla soluzione di creare un array di stringhe ci avevo pensato anche io soprattutto alla luce del fatto che l'informazione del tipo di dato lo leggo dal file. Pensavo che ci fosse un modo più semplice e immediato di farlo (magari sfruttando i variant o cose simili)
----------------------------------------
AUTORE: 482
DATA :20/03/2012 - 07:35:24
----------------------------------------
effettivamente avevo capito male..
Volendo ci sono dei VI di scripting che permettono di creare ed eliminare oggetti sul front panel ma sono cose che non appartengono al campo del "semplice".
..e cmq quello che vuoi fare esce dalla definizione di array di LabVIEW (una serie di elementi DELLO STESSO TIPO) ed entra in quella del cluster.
Effettivamente la soluzione stringhe è la piu' semplice.
----------------------------------------
AUTORE: 301
DATA :20/03/2012 - 08:26:06
----------------------------------------
Io ho fatto una sorta di "libreria" per convertire un cluster in un array di stringhe (la uso spesso per visualizzazioni o per salvare sequenze di stati impostati da utente.....
----------------------------------------
AUTORE: 927
DATA :20/03/2012 - 08:43:11
----------------------------------------
I variant effettivamente potresti usarli per memorizzare i dati; se fai un array di variant, ogni elemento può essere qualsiasi cosa. Però se ti serve anche un controllo sul front panel, scrivibile direttamente da tastiera, con i variant non si può fare, possono solo visualizzare
----------------------------------------
AUTORE: 43
DATA :20/03/2012 - 09:05:46
----------------------------------------
[quote="daniroma83":1fqijysp]Sì si tratta di una sorta di Test Manager.Alla soluzione di creare un array di stringhe ci avevo pensato anche io soprattutto alla luce del fatto che l'informazione del tipo di dato lo leggo dal file. Pensavo che ci fosse un modo più semplice e immediato di farlo (magari sfruttando i variant o cose simili)[/quote:1fqijysp]
Qualche hanno fa il buon Ale, fondatore di questo Forum ha illustrato LuaView durante una sessione dell' NI Day... non mi ricordo se a Roma o Milano.
In questo momento non mi occupo di Testing, ma questo argomento mi è caro, avendo sviluppato un bel Test Manager per una grossa azienda che prevedeva procedure di collaudo interamente sviluppate in LabVIEW...
Il bell'esempio di Ale permetteva di scrivere procedure testuali in linguaggio LUA, con la possibilità di richiamare VI da dentro il linguaggio testuale stesso... una gran figata che non è possibile fare con altri linguaggi di scripting (tipo python) che sono integrabili in LabVIEW ma esclusivamente come funzioni richiamabili da LabVIEW e non viceversa. Teststand il prodotto venduto da NI oltre che essere costoso è decisamente pachidermico e meno agile di LuaVIEW...
-.-.-.-.-.-.-.-.
tornando al tuo problema si può ridurre il tipo di dato "risultato" di un test ad un semplice cluster (meglio non rinunciare alla semplicità...) che contiene una stringa il cui valore di default è una stringa vuota ed un double il cui valore di default è Nan. Il risultato booleano viene implementato nel dato di tipo Double con i valori 1 (true/on) e 0 (false/off).La scelta fra i due possibili valori si ottiene testando il valore del double che sia diverso da NaN oppure no...
Cmq sia il "risultato dovrebbe essere considerato in funzione del test... sarebbe curioso sapere come hai deciso di mappare i test.... i possibili campi descrizione-stringa, condizione-enumerativo(<, > = >=,in range, vero, falso, bitwise., pattern, no test), valore max-double, valore min-double, pattern-string) ecc...
bye
----------------------------------------
AUTORE: 482
DATA :20/03/2012 - 12:29:41
----------------------------------------
OT Ma cosa sono sti Test Manager?
----------------------------------------
AUTORE: 43
DATA :20/03/2012 - 13:58:07
----------------------------------------
[quote="gepponline":2h440y56]OT Ma cosa sono sti Test Manager?[/quote:2h440y56]
Testand è un Test Manager. Letteralmente, è un "gestore di test, collaudi ".
il risultato di un collaudo automatico è un report dove per ogni "riga" di una tabella si riporta un valore letto dalla UUT (unit Under Test) e questo viene controllato che sia "accettabile" (tipicamente che sia compreso entro un "range" fissato)che porta al risultato digitale di "PASS" o "FAIL".
SE la UUT soddisfa tutti i criteri, il "pezzo" totalizza un "PASS" complessivo che indica il successo del collaudo.
per farti capire meglio: Testand è il Test Manager di NI così come LabVIEW DSC è lo SCADA di NI..
bye
----------------------------------------
AUTORE: 482
DATA :20/03/2012 - 15:25:07
----------------------------------------
tutto chiaro..niente di trascendentale che non si possa realizzare con labview
----------------------------------------
AUTORE: 3465
DATA :21/03/2012 - 10:14:58
----------------------------------------
Sì alla fine ho proceduto con l'array di stringhe, mi sembrava la soluzione più semplice.
Ora, siccome, questo array 2d di stringhe è creato a partire da un foglio excel (uso il readtospreadsheet.vi) ho delle righe vuote. Come faccio, a partire dall'array 2d a cancellare in una volta sola le righe vuote?
N.B conosco gli indici delle righe vuote. Ho provato ad utilizzare il deletefromarray.vi inserito all'interno di un for loop ma così facendo l'array 2d diventa monodimensionale e diventa un casotto!
----------------------------------------
AUTORE: 43
DATA :21/03/2012 - 10:48:21
----------------------------------------
[quote="daniroma83":13em9uav]Sì alla fine ho proceduto con l'array di stringhe, mi sembrava la soluzione più semplice.
Ora, siccome, questo array 2d di stringhe è creato a partire da un foglio excel (uso il readtospreadsheet.vi) ho delle righe vuote. Come faccio, a partire dall'array 2d a cancellare in una volta sola le righe vuote?
N.B conosco gli indici delle righe vuote. Ho provato ad utilizzare il deletefromarray.vi inserito all'interno di un for loop ma così facendo l'array 2d diventa monodimensionale e diventa un casotto![/quote:13em9uav]
bah! Protresti caricare solo le "righe che ritieni significative, ma dovresti complicare molto il caricamento da file, sostituendo la funzione "readtospreadsheet" con un loop che legge riga per riga...secondo me sarebbe la soluzione + pulita...
Cmq non mi torna il fatto che cancellando delle "righe" da una tabella, spariscano anche delle "colonne"... potresti farci vedere come chiami la funzione "deletefromarray".
Se possibile posta l'intero VI ed un file csv di esempio...
bye
----------------------------------------
================================================================================
EXE e Path
================================================================================
AUTORE: 3428
DATA :19/03/2012 - 17:08:25
----------------------------------------
Buonasera ragazzi,
sono andato nella sezione download ed ho trovato la discussione (l'ultima in lista) "Percorso relativo" dove viene spiegato che utilizzandola non si avranno più problemi tra eseguibile e development.
Ora l'ho provata ma ho lo stesso problema di prima.
Come va usata questa VI (relative path)???
Ovviamente penso che il current vi path dovrà essere un controllo entrante dalla VI chiamante altrimenti la costante ritornerà sempre il path della vi relative path, ma ho provato e non funziona, quindi evidentemente non è questo il modo...
Il fatto è che nel mio eseguibile una volta devo fare lo strip ben 4 volte e un'altra (in un altro pc con stesso programma e struttura cartelle, con stesso exe) devo farlo 6 volte. Purtroppo non posso postare nulla per lavoro
Grazie
----------------------------------------
AUTORE: 301
DATA :20/03/2012 - 07:03:14
----------------------------------------
Ciao Renaso,
il fatto è che fino alla 8.5 (credo), quando buildavi una applicazione, tutti i vi sotto la "cartella" exe venivano messi allo stesso livello, mentre dalla 2009 in poi mantengono la gerarchia di cartelle che vai a specificare nella finestra "include".....
Tu devi richiamare una cartrella al di sopra dell'exe o un vi "all'interno" di questo?
Aris
----------------------------------------
AUTORE: 3428
DATA :20/03/2012 - 07:40:55
----------------------------------------
Ciao Aris, buondì.
Per creare l'eseguibile non faccio altro che mettere nell'include il main del progetto (che al suo interno richiama una 10ina di sub-vi) che fisicamente non si trovano nella stessa cartella.
Creo l'exe mettendolo in una specifica cartella chiamata EXE dove troverò data, aliases ecc.
Quindi esiste qualcosa di pronto come la vi relative path per LV 2010?
----------------------------------------
AUTORE: 301
DATA :20/03/2012 - 08:21:14
----------------------------------------
......non ho capito esattamente cosa intendi, in ogni caso puoi usare la funzione "Application Directory" che ti da il path della tua applicazione (una volta buildata) e da li crearti i path delle cartelle di controno (fuori dall'exe).
Diversamente, ti allego la funzione che uso io per pescare i path dei vi (che poi vanno buildati all'interno dell'exe).
In pratica specifico il path costante del vi che mi interessa (durante lo sviluppo), poi non me ne preoccupo piu.....
----------------------------------------
================================================================================
Lettura trasduttore pressione 0-10V
================================================================================
AUTORE: 3945
DATA :20/03/2012 - 17:21:56
----------------------------------------
Ciao a tutti!
Devo leggere il segnale da un sensore di con fondo scala da 3 bar che da in uscita un valore di tensione 0-10V. Ho collegato il sensore ad un modulo NI 9205 e implementato il software che legge gli ingressi analogici in FPGA. Nel target real-time mi vado a prelevare l'ingresso a cui ho collegato il sensore con un I/O node dentro un timed-loop. La mia domanda è: come trasformo il valore di tensione in un valore di pressione??? Io banalmente ho pensato di dividere il valore di tensione per 3 che è il valore di fondo scala del trasduttore di pressione .... Secondo voi è corretto?
Grazie
Ciao
----------------------------------------
AUTORE: 43
DATA :20/03/2012 - 17:37:25
----------------------------------------
[quote="hooliox":3raqhh0f]Ciao a tutti!
Devo leggere il segnale da un sensore di con fondo scala da 3 bar che da in uscita un valore di tensione 0-10V. Ho collegato il sensore ad un modulo NI 9205 e implementato il software che legge gli ingressi analogici in FPGA. Nel target real-time mi vado a prelevare l'ingresso a cui ho collegato il sensore con un I/O node dentro un timed-loop. La mia domanda è: come trasformo il valore di tensione in un valore di pressione??? Io banalmente ho pensato di dividere il valore di tensione per 3 che è il valore di fondo scala del trasduttore di pressione .... Secondo voi è corretto?
Grazie
Ciao[/quote:3raqhh0f]
Devi leggere il DataSheet del sensore.
Se il trasduttore fosse lineare, e non ci fossero "offset", il tuo ragionamento dovrebbe essere corretto.
bye
----------------------------------------
================================================================================
LV 7.1 Runtime e Win7
================================================================================
AUTORE: 4163
DATA :26/03/2012 - 14:29:53
----------------------------------------
Qualcuno ha esperienza sulla compatibilità di VI realizzati con LV7.1
e relativi con installer realizzati con App.Builder,
comprensivi di Runtime 7.1 su PC O.S. Win7 ?
NI non dà compatibilità ufficiale,
ma vorrei conoscere l'esperienza di chi, come me ci "deve" provare per ragioni di licenze
----------------------------------------
================================================================================
GSim subpalette
================================================================================
AUTORE: 4187
DATA :27/03/2012 - 09:41:40
----------------------------------------
Ciao a tutti.
Sto iniziando a programmare il Labview per una tesi triennale in meccanica e seguendo il libro "LABVIEW SIGNAL PROCESSING" sono arrivato alla GSim subpalette con tutte le sue vi collegate. Ho cercato dappertutto, in rete e nelle llb del programma ma nulla..
Come posso reperirle?
----------------------------------------
AUTORE: 43
DATA :27/03/2012 - 11:49:47
----------------------------------------
[quote="ufo900":1trui222]Ciao a tutti.
Sto iniziando a programmare il Labview per una tesi triennale in meccanica e seguendo il libro "LABVIEW SIGNAL PROCESSING" sono arrivato alla GSim subpalette con tutte le sue vi collegate. Ho cercato dappertutto, in rete e nelle llb del programma ma nulla..
Come posso reperirle?[/quote:1trui222]
Cercando la parola magica "gsim" sul sito ni.com ho ottenuto il seguente link
http://zone.ni.com/devzone/cda/epd/p/id/3389
c'è un VI di esempio scaricabile che fa uso di quella libreria di VI.
In fondo all'articolo si cita il toolkit (addon) da acquistare a parte di cui quella libreria fa parte: si tratta del
Toolkits and Add-Ons: LabVIEW System Simulation and Design Toolset
Clicka sul related link, per ulteriori dettagli
- LabVIEW Control Design Toolkit
bye
----------------------------------------
AUTORE: 4187
DATA :27/03/2012 - 13:20:20
----------------------------------------
ci avevo dato un occhio ma non riesco a scaricare nulla.. pensi sia l'unico modo per poter usare la subpalette indicata?
----------------------------------------
AUTORE: 43
DATA :27/03/2012 - 14:42:55
----------------------------------------
[quote="ufo900":1u2hwiv0]ci avevo dato un occhio ma non riesco a scaricare nulla.. pensi sia l'unico modo per poter usare la subpalette indicata?[/quote:1u2hwiv0]
Mah! quei VI fanno parte di un toolkit che può essere tranquillamente acquistato...
Di solito può essere utilizzato gratuitamente per 20/30 giorni...
Presumo che sia scaricabile l'ultimissima versione di 'sta libreria... Non so quale versione di LabVIEW stai utilizzando...
Se fossi in possesso della "developer Suite" che costa poco + della versione "professional" non avresti problemi
bye
----------------------------------------
AUTORE: 4187
DATA :27/03/2012 - 14:50:01
----------------------------------------
sto provando a scaricare il control design and simulation module e vediamo se lì è presente quella libreria..
----------------------------------------
AUTORE: 4187
DATA :27/03/2012 - 16:48:45
----------------------------------------
edit: no non c'è.. ci sono altre funzioni di trasferimento simili ma non quelle per il tutorial..
come versioni mi sto esercitando sulla 5.1 e ho installato la 7.1 e la versione 2011..
----------------------------------------
================================================================================
Interruzione comunicazione TCP/IP
================================================================================
AUTORE: 2933
DATA :29/03/2012 - 10:47:42
----------------------------------------
Ciao a tutti,
il mio sistema è costituito da un PC host sul quale gira un applicativo compilato con LV2010SP1 ed un desktop PC remoto sul quale gira un applicativo real time anch'esso compilato con LV2010SP1.
I due si scambiano dati tramite link di rete con le classiche funzioni TCP/IP.
Il progetto in origine era stato sviluppato in LV7.1, circa un anno fà siamo passati a LV2010.
Se l'applicativo Host gira su una macchina con OS Windows 7 funziona tutto egregiamente, così come ha sempre funzionato su macchine XP con LV7.1.
Il problema nasce perchè dobbiamo aggiornare macchine vecchie con il nuovo programma. Quindi compiliamo il programma con LV2010 e lo installiamo su macchine XP assieme al Run Time Engine 2010.
In maniera inpiegabile, la comunicazione sulla rete ogni tanto si interrompe.
Senza entrare nei dettagli, la macchina remota scrive pacchetti di dati, mentre la macchina host li và a leggere.
Qualcuno di voi ha avuto esperienza di questo tipo, incompatibilità tra LV2010 e Windows XP ed in specifico sulla comunicazione di rete?
Grazie in anticipo!
Alberto
----------------------------------------
================================================================================
Controllo PID da Control Design
================================================================================
AUTORE: 645
DATA :01/04/2012 - 22:43:33
----------------------------------------
Sto utilizzando il blocco PID (Control Design and Simulation --> Simulation --> Continuous Linear Systems --> PID) all'interno di un VI.
Si può trascinare il blocco all'interno di un Block Diagram senza utilizzare l'ambiente "Simulation" e impostando i diversi parametri si può realizzare una funzione di controllo con semplici comandi.
[url:pe20v7e2]http://www.mediafire.com/i/?a6s13larzlljzbg[/url:pe20v7e2]
----------------------------------------
================================================================================
Domanda semplice su ciclo for
================================================================================
AUTORE: 3465
DATA :03/04/2012 - 16:10:31
----------------------------------------
Salve a tutti,
vi pongo una domanda che penso sia semplice ma mi sto incartando e non riesco a venirne fuori.
In ingresso a un ciclo for ho un array di cluster. Ora siccome ho indicizzato il for loop, all'interno di ciascun ciclo, vado a testare una condizione sul contenuto di ciascun elemento i-esimo. Vorrei copiare il cluster corrente in un array di uscita se la condizione risulta verificata mentre non fare nulla se la condizione non risulta verificata.
Ecco: non riesco " a non fargli fare nulla", l'unica cosa che riesco a fare è inserire un elemento contenente cluster vuoti ma non è ciò che voglio.
Avete qualche suggerimento? grazie
----------------------------------------
AUTORE: 43
DATA :03/04/2012 - 17:40:59
----------------------------------------
[quote="daniroma83":2ogxwnmg]Salve a tutti,
vi pongo una domanda che penso sia semplice ma mi sto incartando e non riesco a venirne fuori.
In ingresso a un ciclo for ho un array di cluster. Ora siccome ho indicizzato il for loop, all'interno di ciascun ciclo, vado a testare una condizione sul contenuto di ciascun elemento i-esimo. Vorrei copiare il cluster corrente in un array di uscita se la condizione risulta verificata mentre non fare nulla se la condizione non risulta verificata.
Ecco: non riesco " a non fargli fare nulla", l'unica cosa che riesco a fare è inserire un elemento contenente cluster vuoti ma non è ciò che voglio.
Avete qualche suggerimento? grazie[/quote:2ogxwnmg]
Ci sono molti esempi in questo forum per fare ciò che stai chiedendo
1)aggiungi uno shift register al tuo ciclo For.
2)inizializza lo shift register con un array di cluster vuoto...(collega l'array vuoto all'esterno dello shift register a Sx del ciclo for)
3)aggiungi all'interno del ciclo for un case booleano. True se la condizione è verificata False il contrario.
4)nel caso false connetti con un filo passante le estremità dello shift register
5)nel caso true aggiungi con un "Build Array" l'elemento valido in fondo all' array, e l'uscita ricongiungila allo shift register.
L'uscita dello shift register conterrà esattamente gli elementi validi senza i vuoti.
bye
----------------------------------------
================================================================================
Evitare il ridimensionamento dei fonts sul Front Panel
================================================================================
AUTORE: 4163
DATA :04/04/2012 - 08:34:35
----------------------------------------
Salve, vorrei sapere se esiste la possibilità di fissarre la dimensione dei
fonts usati sul front panel, in modo da evitare il ridimensionamento da parte
delle impostazioni adottate sul del sistema operativo.
Questo per evitare che il testo sul front Panel diventi illeggibile se l'utente cambia
la dimensione dei fonts utilizzati peril esktop
dalla impostazione di default Piccolo a Medio o Grande.
Grazie per l'attenzione.
Valerio
----------------------------------------
AUTORE: 43
DATA :04/04/2012 - 09:15:20
----------------------------------------
[quote="effevalerio@iol.it":1ggi55kb]Salve, vorrei sapere se esiste la possibilità di fissarre la dimensione dei
fonts usati sul front panel, in modo da evitare il ridimensionamento da parte
delle impostazioni adottate sul del sistema operativo.
Questo per evitare che il testo sul front Panel diventi illeggibile se l'utente cambia
la dimensione dei fonts utilizzati peril esktop
dalla impostazione di default Piccolo a Medio o Grande.
Grazie per l'attenzione.
Valerio[/quote:1ggi55kb]
E' un argomento trito e ritrito
Ecco 2 link di vecchi post da cui puoi estrapolare informazioni
viewtopic.php?f=1&t=4981&p=22353
viewtopic.php?f=1&t=4894&p=21865
1) Di ogni testo, Caption, Label o costante stringa del Front Panel che ha una Font associata è possibile riassociare una font di nome e caratteristiche fissate (Es. "Arial", "Courier" ecc, + dimensione e stile(Bold, Italic, ecc)) al posto delle font di default tipo "Application", "Dialog" e "System" che per loro stesso implicito default ereditano le caratteristiche Font scelte dall'utente nella configurazione del Desktop.
2) Non volendo cambiare le font di tipo "Application", "Dialog" e "System" in font fissate, è possibile variare a proprio piacimento font + caratteristiche associata a "Application", "Dialog" e "System" affinchè non venga ereditata dalla config. Desktop.
Per fare ciò, in ambiante di sviluppo LabVIEW, è possibile utilizzare da menu
Tools -> Options...
e poi scegliere nel menu di sx
Fonts
togliere la spunta a "Use default Fonts" e scegliere la font e la dimensione di conseguenza che più ci aggrada
A questa variazione, corrisponde la scrittura delle seguenti Entry nel file LabVIEW.ini
Le entry in questione sono:
appFont --> per Application Font
dialogFont, --> per Dialog Font
systemFont --> per System Font
per altri dettagli
http://labviewwiki.org/LabVIEW_configuration_file/Fonts
Da notare che il default di queste 3 font comprendono "nome font", dimensione, stile, ma non comprende il colore.
ricordo una shortcut:
per editare la font di un testo basta selezionare il testo e premere Ctrl-0 (Zero, non "o"maiuscola...)
se si vuole fare in modo che anche il nostro SW labview compilato abbia le stesse font dell'ambiente di sviluppo, a prescidere dal setup del desktop, ma utilizzando cmq font di tipo "Application", "Dialog" e "System", basta copiare le succitate entry (appFont, dialogFont, systemFont) dal file LabVIEW.ini al file "<nome eseguibile>.ini" nella sezione "[<nome eseguibile>]"
bye
----------------------------------------
AUTORE: 4163
DATA :04/04/2012 - 10:33:41
----------------------------------------
Grazie.
----------------------------------------
================================================================================
Rinominare stringhe ENUM
================================================================================
AUTORE: 3428
DATA :04/04/2012 - 11:50:35
----------------------------------------
Salve a tutti,
mi ritrova a dover rinominare le stringhe del mio enum che utilizzo per la macchina a stati.
Ora, rinominando le stringhe che fanno parte del controllo rinominerei anche le costanti all'interno della state machine!!!!
Questo non deve succedere!!
A me servirebbe che nel block diagram le costanti rimanagano sempre le stesse (altrimenti non funzionerebbe la state machine) ma nel FP possa decidere di cambiare il nome da visualizzare all'interno dell'ENUM.
Ad es. ENUM formato da ON-OFF devo poter scegliere però se far vedere all'utente ON-OFF oppure ACCESO-SPENTO ma nel codice deve girare solo la costante con ON-OFF.
Quindi??? Non uso un enum?
----------------------------------------
AUTORE: 301
DATA :04/04/2012 - 12:51:07
----------------------------------------
Potresti usare un ring al posto dell'enum, in questo caso, il case prende i valori assegnati e non la stringa.
Aris
----------------------------------------
AUTORE: 3428
DATA :04/04/2012 - 13:43:11
----------------------------------------
ecco infatti... però a me serve che il case prenda i valori dell'enum e non del ring altrimenti mi ritrovo che la costante vale ON-OFF ma il case prende i valori di 0-1
----------------------------------------
AUTORE: 301
DATA :04/04/2012 - 13:55:41
----------------------------------------
?!?!?
Non ti seguo....puoi impostare le "accoppiate" stringa-valore tramite le proprietà del ring ed associare la stringa al valore (se il tuo problema è di "traduzione" del programma), al valore 0 corrisponderà sempre lo stesso case a prescindere dal testo dell'elemento 0 del ring!
Altrimenti devi crearti una funzione di "conversione" che si prenda qualsiasi possibile "stringa" del tuo controllo e la formatti in modo univoco (ma secondo me diventi di gomma....)
Es:
Un case che per stringe [on-off, acceso-spento, T-F, 0-1, ecc] ti restituisca la stringa desiderata, es "on-off"
Aris
----------------------------------------
AUTORE: 3428
DATA :04/04/2012 - 14:51:22
----------------------------------------
ok ok... grazie scusami se non mi sono spiegato meglio...
ho usato un ring alla fine...
diciamo si, il problema è la traduzione ma quello che interessava a me era tradurre e non avere problemi all'interno del codice o meglio speravo di ritrovare il nome nel case structure invece che del numero, ma va bene ugualmente, basta screivere un commento sotto ad ogni case...
----------------------------------------
AUTORE: 43
DATA :04/04/2012 - 16:58:28
----------------------------------------
[quote="renaso":2pevf4pw]ok ok... grazie scusami se non mi sono spiegato meglio...
ho usato un ring alla fine...
diciamo si, il problema è la traduzione ma quello che interessava a me era tradurre e non avere problemi all'interno del codice o meglio speravo di ritrovare il nome nel case structure invece che del numero, ma va bene ugualmente, basta screivere un commento sotto ad ogni case...[/quote:2pevf4pw]
Ciao renaso,
Mai sentito parlare di "cast"?
[attachment=0:2pevf4pw]Ring2Enum.JPG[/attachment:2pevf4pw]
l'operatore di cast, lo trovi in
LaBVIEW 6.x e 7.x Advanced --> Data Manipulation --> Type Cast
LabVIEW 8.x in avanti Numeric --> Data Manipulation --> Type Cast
bye
----------------------------------------
AUTORE: 3428
DATA :05/04/2012 - 07:31:39
----------------------------------------
si, ne avevo sentito parlare...
l'ho anche usato diverse volte.
Grazie mille, come ho detto ho risolto scrivendo il commento, se mi rimane tempo lo "casto"
Buona Pasqua
----------------------------------------
================================================================================
Shift Register e stringhe
================================================================================
AUTORE: 4193
DATA :06/04/2012 - 21:39:17
----------------------------------------
Buonasera a tutti.
Sono un neoiscritto e da poco mi sono avvicinato a labview.
Premetto che sono agli inizi, sto lavorando con la vesione di prova 2011. Sto realizzando un semplice programma che scrive e legge dati sulla porta seriale, e li salva su file di testo.
In particolare lo uso per la comunicazione con un microcontrollore che interrogato, risponde di conseguenza.
Ad esempio, inviando un carattere asci,"v", tramite la pressione di un pulsante, il microcontrollore esegue una acquisizione A/D e mi reinvia il valore in ascii (255).
Il tutto funziona correttamente, tuttavia ho un problema che non riesco a risolvere.Il valore ricevuto, lo vorrei visualizzare in una casella di testo, e MANTENERE VISUALIZZATO fino alla pressione e reacquisizione successiva. Ho capito che devo utilizzare una funzione sequenziale, tipo lo SHIFT, ma non riesco a concretizzare questa cosa in pratica. Tra li esempi non ho trovato nulla che mi possa essere utile, e ci inizio a diventare un pò matto.
C'è qualcuno che mi possa dare una mano o fornire esempi utili per questa specifica funzione?
Grazie davvero a tutti
Nautiluso
----------------------------------------
AUTORE: 43
DATA :06/04/2012 - 21:57:09
----------------------------------------
[quote="nautiluso":2atzz0zt]Buonasera a tutti.
Sono un neoiscritto e da poco mi sono avvicinato a labview.
Premetto che sono agli inizi, sto lavorando con la vesione di prova 2011. Sto realizzando un semplice programma che scrive e legge dati sulla porta seriale, e li salva su file di testo.
In particolare lo uso per la comunicazione con un microcontrollore che interrogato, risponde di conseguenza.
Ad esempio, inviando un carattere asci,"v", tramite la pressione di un pulsante, il microcontrollore esegue una acquisizione A/D e mi reinvia il valore in ascii (255).
Il tutto funziona correttamente, tuttavia ho un problema che non riesco a risolvere.Il valore ricevuto, lo vorrei visualizzare in una casella di testo, e MANTENERE VISUALIZZATO fino alla pressione e reacquisizione successiva. Ho capito che devo utilizzare una funzione sequenziale, tipo lo SHIFT, ma non riesco a concretizzare questa cosa in pratica. Tra li esempi non ho trovato nulla che mi possa essere utile, e ci inizio a diventare un pò matto.
C'è qualcuno che mi possa dare una mano o fornire esempi utili per questa specifica funzione?
Grazie davvero a tutti
Nautiluso[/quote:2atzz0zt]
Faresti meglio a postare il VI che utilizzi così discutiamo su qualcosa di.. "pratico"
Probabilmente non c'entrano gli shift register... devi solo "condizionare" l'aggiornamento del valore solo quando è effettivamente letto.
Eppoi il valore che leggi non è una stringa ma è frutto di una conversione A/D quindi va visualizzato, quanto meno come numero intero a 8 bit (U8) oppure messo in un grafico...
bye
----------------------------------------
AUTORE: 4193
DATA :06/04/2012 - 22:15:45
----------------------------------------
Grazie della risposta. In particolare stavo studiando questo esempio viewtopic.php?f=1&t=4699&p=21038&hilit=hold#p21038 ma non riesco a comprenderne bene il funzionamento. E' da qui che ho tratto spunto per shif register. Allego il file che sto realizzando. In pratica grazie a questo riesco ad inviare delle stringhe seriali, un rudimentale protocollo in cui alla pressione di un tasto invio, ad esempio:
F (argomento), xxxx (valore numerico) ecc
oppure
s (argomento), xxxx(valore numerico1), xxxx(valore numerico2)
il microcontrollore collegato in seriale mi risponde con dati che salvo su seriale.
Il problema è che interrogando il micro "chiedendogli" che versione è, quindi inviandogli una stringa tipo "v," il micro mi risponde, ad esempio v,1.00. Mi piacerebbe visualizzare questa stringa (1.00) che però deve rimanere "hold" sul texindicator. Dal momento che il micro lo programmo io non ho particolare problema a fargli "rispondere" quello che voglio, lì sono più ferrato, quello che non riesco bene a comprendere di labview è come gestisce gli eventi sequenziali.
Grazie molto a tutti per l'attenzione e augusri di buona Pasqua.
Nautiluso
----------------------------------------
AUTORE: 4193
DATA :08/04/2012 - 19:08:11
----------------------------------------
Ri-ciao a tutti.
Sto ancora provando a leggere e scrivere la porta seriale, ma con scarso successo. O meglio, riesco a scrivere correttamente e a leggerla, ma per fare questo devo bloccare la lettura del buffer. Questa cosa l'ho ottenuta "fondendo" i vari esempi che ho trovato..ma non riesco proprio a vernirne a capo.
Per dirla tutta, mi sembra giusto anche specificare a cosa serve il tutto. In pratica vorrei creare una interfaccia grafica che mi permetta di controllare un generatore di onde sinusoidali DSS (AD9833) che viene gestito da un microcontrollore, che a sua volta viene controllato in seriale dal pc.
Quindi invio stringhe:
F,1345 (per esempio) ovvero frequenza fissa da 1345 Khz ovvero 1,345 Mhz
S,freq1,freq2,step ovvero il generatore fà uno span da freq1 a freq2 con lo step indicato
il micro mi risponde con un OK, ma appunto non riesco a visualizzarne la risposta.
Ovviamente il progetto è amatoriale e non ha fini commerciali, a dirla tutta serve ad emulare quello della Analog Device che non mi posso permettere di acquistare...
Grazie e Buona Pasqua a tutti!!!
Nautiluso
----------------------------------------
AUTORE: 4193
DATA :08/04/2012 - 19:09:18
----------------------------------------
dimenticavo il VI
----------------------------------------
AUTORE: 301
DATA :12/04/2012 - 06:21:50
----------------------------------------
Potresti postarlo per una versione precedente (io ho la 2010)?
----------------------------------------
AUTORE: 645
DATA :14/04/2012 - 22:06:37
----------------------------------------
La struttura del programma sembrerebbe corretta; come consiglio direi di aggiungere un controllo dell'errore sulla porta VISA scelta (in caso di porta inesistente il tuo VI continua e genera errore). Conviene poi creare un ordine delle operazioni: se vuoi che venga scritta una stringa composta da tante stringhe più piccole puoi utilizzare una struttura a sequenza.
Ultima cosa: dopo la scrittura WRITE aspetta qualche ms (o se vuoi, per iniziare, qualche secondo) e poi, con l'istruzione READ, leggi i dati presenti sulla porta seriale (per sapere quanti byte leggere usa il nodo Byte at serial port che già utilizzi).
----------------------------------------
AUTORE: 4193
DATA :19/04/2012 - 20:47:50
----------------------------------------
Riprendo questo post, perchè purtroppo non mi ci sono potuto dedicare più di tanto, non facendolo per professione.
Grazie dei consigli, ma non mi è molto chiaro cosa intendi per "struttura in sequenza".
Inoltre non mi è ancora bene chiaro come convertire i dati seriali che ricevo (stringhe ascii) in dati "digeribili" dal grafico XY.
Grazie ancora
Nautiluso
----------------------------------------
================================================================================
labview e adam 5000 tcp
================================================================================
AUTORE: 4194
DATA :15/04/2012 - 13:57:59
----------------------------------------
Ciao,
ho iniziato da poco a "giocare" con labview ma per me (nn sono un informatico!) è ancora complesso.
Dovrei acquisire dei digital input e generare dei digital output utilizzando un Advantech adam 5000 tcp.
Stò provando con il daq assistant ma nn lo vede.
Chiedo per cortesia se qualcuno mi aiuta a capire. Inoltre vi chiedo se avete link su documentazione/corsi per imparare a lavorare con l'acquisizone dati.
Grazi in anticipo per l'aiuto.
Zaius.
----------------------------------------
AUTORE: 278
DATA :16/04/2012 - 10:54:20
----------------------------------------
Ciao,
sul sito del prroduttore ho trovato questi examples che dovrebbero fare al caso tuo
[url=http://support.advantech.com.tw/support/DownloadSRDetail.aspx?SR_ID=1-1WMBN3&Doc_Source=Download:mkkoq40c]LabVIEW example of .Net class library[/url:mkkoq40c]
Buon lavoro
----------------------------------------
================================================================================
velocità angolare a partire da un segnale digitale acquisito
================================================================================
AUTORE: 4195
DATA :15/04/2012 - 15:28:30
----------------------------------------
Buongiorno a tutti, mi sono iscritto da poco al forum che da un pò di tempo avevo già iniziato a leggere.
Ho un piccolo problema da porvi per realizzare qualcosa che mi sta dando più problemi di quanti pensavo. Devo misurare la velocità di rotazione di una ruota e non ho a mia disposizione un encoder... la mia idea era quella di utilizzare un semblice sensore magnetico (tipico contachilometri per bici) in modo da prelevare un segnale digitale ad ogni giro della ruota. Questo segnale digitale (acquisito con una scheda di acquisizione dati) andrebbe elaborato con Labview per capire quanto tempo intercorre fra due passaggi dallo stato alto a quello basso. Ho provato ad utilizzare il blocco Elapsed Time mettendo all'ingresso Reset il mio segnale acquisito... ovviamente però quando il mio segnale di reset cambia, il conteggio (uscita Elapsed Time(s) del blocco ) si azzera per poi ripartire quando il segnale di reset cambia nuovamente in off. Come posso fare per prelevare l'ultimo valore che assume l'uscita del blocco Elapsed Time in modo da calcolare il periodo con il quale varia il segnale digitale in ingresso e quindi ottenere la velocità di rotazione della mia ruota???
Grazie mille in anticipo...
----------------------------------------
AUTORE: 43
DATA :16/04/2012 - 10:36:49
----------------------------------------
[quote="ocram":1foovkaf]Buongiorno a tutti, mi sono iscritto da poco al forum che da un pò di tempo avevo già iniziato a leggere.
Ho un piccolo problema da porvi per realizzare qualcosa che mi sta dando più problemi di quanti pensavo. Devo misurare la velocità di rotazione di una ruota e non ho a mia disposizione un encoder... la mia idea era quella di utilizzare un semblice sensore magnetico (tipico contachilometri per bici) in modo da prelevare un segnale digitale ad ogni giro della ruota. Questo segnale digitale ([b:1foovkaf]acquisito con una scheda di acquisizione dati[/b:1foovkaf]) andrebbe elaborato con Labview per capire quanto tempo intercorre fra due passaggi dallo stato alto a quello basso. Ho provato ad utilizzare il blocco Elapsed Time mettendo all'ingresso Reset il mio segnale acquisito... ovviamente però quando il mio segnale di reset cambia, il conteggio (uscita Elapsed Time(s) del blocco ) si azzera per poi ripartire quando il segnale di reset cambia nuovamente in off. Come posso fare per prelevare l'ultimo valore che assume l'uscita del blocco Elapsed Time in modo da calcolare il periodo con il quale varia il segnale digitale in ingresso e quindi ottenere la velocità di rotazione della mia ruota???
Grazie mille in anticipo...
[/quote:1foovkaf]
bah! io non userei la potenza di un PC con le limitazioni del Sitema Operativo, per leggere periodicamente (polling) un segnale digitale , e per determinarnela freq. con cui cambi di stato...
Certo, dipende sempre dal grado di precisione che si vuole ottenere,..ma dai tuoi ragionamenti sembra che tu voglia sparare ad una formica usando un cannone... almeno questa è l'impressione che ne ricavo...
Io farei una acquisizione bufferizzata continua, con un buffer circolare.
Nota la freq. di acquisizione (Khz?, MHz?) sarebbe abbastanza facile esaminare i campioni (samples) acquisiti per individuare la distanza fra due fronti di salita (o discesa) consecutivi...
Il numero di campioni ottenuto moltiplicato per l'inverso della freq., ti darebbe il tempo impiegato dalla ruota per fare un giro.
L'errore massimo, nel calcolo di questo tempo, sarebbe dato dal periodo di acquisizione...
bye
----------------------------------------
================================================================================
eseguire una store procedure da labview
================================================================================
AUTORE: 822
DATA :16/04/2012 - 08:25:23
----------------------------------------
Ciao,
qualcuno sa dirmi come si fa ad eseguire all'interno del codice labview una store procedure che interroga un database di sql server?
Grazie,
Giuseppe
----------------------------------------
AUTORE: 43
DATA :16/04/2012 - 10:12:12
----------------------------------------
[quote="giuseppe.l74":aolfprcv]Ciao,
qualcuno sa dirmi come si fa ad eseguire all'interno del codice labview una store procedure che interroga un database di sql server?
Grazie,
Giuseppe[/quote:aolfprcv]
http://digital.ni.com/public.nsf/allkb/ ... 00006326C4
http://forums.ni.com/t5/LabVIEW/SQL-sto ... -p/1006658
E' previsto l'uso del DB connectivity Toolkit...
bye
----------------------------------------
AUTORE: 822
DATA :24/05/2012 - 11:43:49
----------------------------------------
Grazie,
ho risolto seguendo il primo degli esempi che mi hai linkato
----------------------------------------
================================================================================
Creare files una tantum
================================================================================
AUTORE: 4165
DATA :16/04/2012 - 11:08:59
----------------------------------------
Ciao a tutti, ecco il mio problema.
Ho creato un'applicazione in cui, quando viene lanciata per la prima volta in assoluto, l'utente deve creare 2 files in una locazione che gli suggerisco ma che può cambiare a suo piacimento. Tale locazione andrà poi memorizzata perchè dovrà essere utilizzata in altri subVI...e qui penso che con una variabile globale si riesca.
Il problema è che dalla volta successiva non dovranno più comparire le richieste di creazione dei files iniziali,perchè esistono già.
In pratica l'applicazione deve eseguire i passi della creazione dei files iniziali solo alla prima occasione e poi più.
Come si può fare ?
Grazie a tutti
Ciao
Paperinik
----------------------------------------
AUTORE: 43
DATA :16/04/2012 - 11:23:25
----------------------------------------
[quote="Paperinik":2v4lutx3]Ciao a tutti, ecco il mio problema.
Ho creato un'applicazione in cui, quando viene lanciata per la prima volta in assoluto, l'utente deve creare 2 files in una locazione che gli suggerisco ma che può cambiare a suo piacimento. Tale locazione andrà poi memorizzata perchè dovrà essere utilizzata in altri subVI...e qui penso che con una variabile globale si riesca.
Il problema è che dalla volta successiva non dovranno più comparire le richieste di creazione dei files iniziali,perchè esistono già.
In pratica l'applicazione deve eseguire i passi della creazione dei files iniziali solo alla prima occasione e poi più.
Come si può fare ?
Grazie a tutti
Ciao
Paperinik[/quote:2v4lutx3]
Devi memorizzare i percorsi dei file in un ... file
Questo file avrà un nome fissato da te e si troverà in un percorso fissato, ma almeno relativo alla cartella dove si trova il tuo SW
bye
----------------------------------------
AUTORE: 4165
DATA :19/04/2012 - 10:17:59
----------------------------------------
Ciao, grazie per la risposta ma non credo di aver capito fino in fondo...
...memorizzo i percorsi dei files ok...ma poi ?
Ciao
Paperinik
----------------------------------------
AUTORE: 487
DATA :19/04/2012 - 10:37:41
----------------------------------------
Poi con i percorsi dei files verifichi se i files esistono già; in tal caso non fai più comparire la richiesta di creazione files
----------------------------------------
AUTORE: 129
DATA :06/05/2012 - 10:53:13
----------------------------------------
Devi avere un file di configurazione, solitamente io utilizzo .ini.
il file sarà compilato ad esempio:
Percorsi (nome della sezione)
Path 1=c://ambarabacicoco (il nome della chiave è Path 1 e il suo valore è "c://ambarabacicicoco")
con i vi dedicati per ini che puoi utilizzare dalla palette "file" usi il vi read per leggere il valore della chiave Path 1 della sezione Percorsi.
Ora fai una comparazione se il valore è una stringa non vuota, o un vaolre predefinito che metti come vaolre predefinito nella read ini.vi in modo che ti restituisca per esempio FALSE in caso di insuccesso nella lettura oppure in caso di non presenza.Ora colleghi il boolean del risultato su un case in cui nel caso true metti il codice per chiedere un nuovo percorso e con una funzione write lo scrivi nel file config.ini nella chiave Path 1.
Nel caso false invece metti il codice che passa la path al resto del programma.
----------------------------------------
AUTORE: 4165
DATA :14/05/2012 - 09:52:19
----------------------------------------
Grazie mille a tutti ....ora ci provo.
----------------------------------------
================================================================================
Puntatore ad elementi di una matrice
================================================================================
AUTORE: 4177
DATA :17/04/2012 - 12:11:19
----------------------------------------
Ciao a tutti,
sono abbastanza inesperto nell'uso di labview, ho necessità di effettuare operazioni tra singoli elementi di una matrice che ha un numero di righe fisso (tre) ed un numero di colonne variabile, l'operazione è di questo genere
for j che va da 1 a numero colonne
X(1,j)-(1,j+1)/X(1,j)-(1,j+1)
ma non riesco a trovare un comando che mi prenda l'elemento della matrice che desidero, esiste un modo per farlo con le funzioni impostate o con formula node?potreste farmi degli esempi?grazie mille a tutti anticipatamente
----------------------------------------
AUTORE: 645
DATA :17/04/2012 - 14:52:14
----------------------------------------
Parti da http://zone.ni.com/reference/en-XX/help ... _matrices/
In LabView puoi lavorare con i vettori e con le matrici usando la funzione Array Index e in generale i blocchi della palette dedicata agli Array.
----------------------------------------
================================================================================
errore 1055 Object reference is invalid.
================================================================================
AUTORE: 3990
DATA :18/04/2012 - 09:41:41
----------------------------------------
Sto sviluppando un progetto caratterizzato da una sezione RT che gira su un CRio 9074 e da una sezione Windows dove vengono pubblicate le varianbili shared network published.
La sezione RT è caratterizzata da un Main che chiama un sub che valorizza un cluster presente sul main tramite property node.
Al sub passo come ingresso la reference del controllo presente sul main.
Quando lavoro sotto labview tutto gira, se faccio il build e il deploy...si presenta il seguente errore : 1055 Object reference is invalid.
Dove sbaglio?
Devo settare qualcosa nelle proprieta della Real Time Application?
Aiutatemi.
Grazie
----------------------------------------
AUTORE: 43
DATA :18/04/2012 - 11:40:43
----------------------------------------
[quote="micheleposa":jboxdxb3]Sto sviluppando un progetto caratterizzato da una sezione RT che gira su un CRio 9074 e da una sezione Windows dove vengono pubblicate le varianbili shared network published.
La sezione RT è caratterizzata da un Main che chiama un sub che valorizza un cluster presente sul main tramite property node.
Al sub passo come ingresso la reference del controllo presente sul main.
Quando lavoro sotto labview tutto gira, se faccio il build e il deploy...si presenta il seguente errore : 1055 Object reference is invalid.
Dove sbaglio?
Devo settare qualcosa nelle proprieta della Real Time Application?
Aiutatemi.
Grazie[/quote:jboxdxb3]
Non uso LabVIEW RT, ma forse ho trovato qualcosa che può essere pertinente
http://digital.ni.com/public.nsf/allkb/ ... 9C00622527
A quanto dice, meglio non usate tipi di dati aggregati (cluster) ma usare i controlli/indicatori singolarmente.
Attenzione il problema si manifesta anche se i singoli controlli sono messi in un Tab-Control...
bye
bye
----------------------------------------
================================================================================
lettura di un file xls in labview con open office
================================================================================
AUTORE: 3364
DATA :25/04/2012 - 18:48:42
----------------------------------------
Salve ho esigenza di leggere un file xls creato con calc di openoffice con labview.
So che devo usare le activex ma come devo fare?
So che devo usare la automation open ma la refnum a quale classe activex deve appartenere? Cioè che classe devo selezionare che contiene i metodi che mi interessano per leggere il file xls?
Anche per calc bisogna usare le classi workbook ed worksheet?
La logica è la stessa che per excel?
Grazie
Perceptron
----------------------------------------
AUTORE: 10264
DATA :21/03/2013 - 09:05:32
----------------------------------------
ciao,
se il file creato è leggibile da exc allora puoi usare queste ultime da activex.
in ogni caso devi usare le classi workbook ed worksheet.
----------------------------------------
AUTORE: 1078
DATA :21/03/2013 - 11:30:40
----------------------------------------
Se guardi nel Find Examples di Labview ([b:3mf9ziub]Help --> Find Examples ...[/b:3mf9ziub]) e nel tab [b:3mf9ziub]search[/b:3mf9ziub] cerchi Excel ti si presenteranno un sacco di esempi su come lavorare con Excel. Puoi anche usarli nel tuo codice.
----------------------------------------
================================================================================
custom control
================================================================================
AUTORE: 4026
DATA :26/04/2012 - 14:17:05
----------------------------------------
salve a tutti...devo realizzare un nastro trasportatore con un sollevatore...lo fatto con due slide:un indica il nastro che si sposta l'altro indica un sollevatore che porta il pallet al piano superiore...il progetto va alla perfezione...ora vorrei modificare la slide in modo tale che quando premo un pulsante mi appare un pacco(un disegno fatto con paint) e poi si sposti incrementando il valore della slide orizzontale...arrivato a 1000 mi deve sparire e riapparire sulla slide verticale che dee simulare la salita...potete darmi qualche dritta se è possibile farlo??grazie
----------------------------------------
AUTORE: 4026
DATA :01/05/2012 - 09:17:30
----------------------------------------
forse non mi sono spiegato bene...per simulazione intendo simulazione grafica cioè non devo realizzarlo realmente ma virtualmente
----------------------------------------
AUTORE: 278
DATA :03/05/2012 - 16:35:44
----------------------------------------
Ciao,
io farei così, realizzerei 2 controlli slide identici, uno con pacco e uno senza e li piazzerei esattamente sovrapposti.
Quando dei visualizzare lo slide con il pacco setto la proprietà "visible"=false allo slide senza pacco e "visible"=true allo slide con il pacco, viceversa quando devo nascondere il pacco.
Credo che si possa ottenere il medesimo risultato creando un X-control, ma onestamente non ci ho mai perso tempo
----------------------------------------
AUTORE: 129
DATA :06/05/2012 - 10:42:14
----------------------------------------
Ti consiglio di utilizzare power point o cerc are le immagini in google image.
Se utilizzi poer point una volta creata l'immagine fai tasto destro e salva come immagine (scegli sempre il formato png).
Ora possiedi le immagini del pacco e del carrello, devi andare sul controllo premere destro quindi advaced/customize, ora sul menu devi passare alla modalità edit del controllo quindi vai sul cursore e tasto destro quindi import picture at same size. ingrandisci a piacimento, torna alla modalità normale e salva il controllo oppure semplicemente applica modifiche.
Ti allego un esempio realizzato con un immagine png presa da google/immagini.
----------------------------------------
AUTORE: 4026
DATA :19/05/2012 - 13:36:20
----------------------------------------
grazie ho fatto con una slide normale e una slide con il pacco e ho impostato il property node della visibilità
----------------------------------------
================================================================================
Simulazione device per corso LabView di Elettronica IN
================================================================================
AUTORE: 4201
DATA :04/05/2012 - 11:32:26
----------------------------------------
Ciao a tutti.
Sono un nuovo utente di questo fantastico user group, spinto dalla necessità di imparare Labview.
Non potendo per vari motivi seguire un corso formale in aula con istruttore, devo barcamenarmi con quello che che c'è on line (che è anche tanto).
Ho trovato un corso introduttivo di Elettronica In che parte dalle basi.
Appena iniziavo a capire qualcosa però sorge il primo problema ossia utilizzare una scheda di acquisizione che ovviamente non ho.
Si tratta del multifuncion DAQ NI USB 6008.
Essendo però Labview fondato sul concetto di VI (virtual instrument), mi domandavo se non era possibile simulare questa scheda di acquisizione.
Quello che vi chiederei allora è se la cosa è possibile e se sia possibile trovare il vi online, al fine di proseguire il corso e continuare il mio apprendimento
(ovviamente io non sono in grado di simulare detta scheda anche perchè se lo fossi forse non avrei bisogno di imparare).
Grazie per le info che vorrete darmi, sono anche accetti tutte le possibili alternative per poter imparare Labview.
A presto.
----------------------------------------
AUTORE: 301
DATA :04/05/2012 - 13:21:40
----------------------------------------
A dire il vero, l'hardware lo puoi simulare tramite il NIDAQmx (che devi aver installato).
Da li, puoi creare delle periferiche simulate ed utilizzarne le risorse (ovviamente i segnali acquisiti, ad es, saranno simulati) dai tuoi vi.
----------------------------------------
AUTORE: 301
DATA :04/05/2012 - 13:27:30
----------------------------------------
Scusa, intendevo il MAX (Measurement & Automation Explorer).....
Ckick dx su Devices and interfaces>>create new, poi selezioni "simulated device" e crei quella che ti serve.
Aris
----------------------------------------
AUTORE: 4201
DATA :04/05/2012 - 16:16:30
----------------------------------------
Prima di tutto grazie della risposta.
Il mio dubbio era solo legato al dispositivo che deve sostituire l'hw.
L' NI USB 6008 non è simulabile. Ho allora cercato tutti i multifunction data acquisition della NI ed ho cercato i più vicini al 6008 che fossero simulabili, anche se temo problemi perchè ci sono sempre più ingressi ed uscite dell'6008 e non mi è chiaro se riuscirò poi ad emulare l'hw in una ambiente che in fondo non conosco e che sto cercado di imparare.
In altre parole, se avessi l'hw probabilmente sarebbe difficile, ma io non ho neanche quello ed il tutto potrebbe non funzionare perchè magari non so configurare bene la simulazione del vi che simula il sostituo dell'6008.
L'unica è provare, speriamo bene
----------------------------------------
AUTORE: 482
DATA :07/05/2012 - 07:15:57
----------------------------------------
Sappiche l'hardware simulato serve solo per non avere errori durante i test dei software, non è possibile generare o leggere valori variabili dalle schede simulate. Gli ingressi saranno sempre a 0.
----------------------------------------
AUTORE: 4201
DATA :09/05/2012 - 17:05:33
----------------------------------------
In poche parole non c'è la possibilità di superare il problema della mancanza della scheda per poter seguire il corso?
Il mio scopo in sostanza era quello.
Tutti i corsi che ho visto prevedono l'uso di HW. Speravo che anche impostando delle costanti si potesse leggere anche sono una tensione costante e poter così tentare di seguire il corso.
Oppure puoi suggerirmi una possibile strada per superare tale problema?
Grazie in ogni caso della segnalazione
----------------------------------------
AUTORE: 301
DATA :10/05/2012 - 06:10:55
----------------------------------------
Se ti simuli una usb-6216, hai tutte le risorse HW che ti servono.....
Non capisco il motivo per cui ti serve un hw specifico per seguire un corso di LV, alla fine ti basta una scheda con delle risorse simulate, dalla quale tu possa richiamare e settare proprietà....(la usb-6216 ha più ingressi analogici e più I/O della 6008)
Aris
----------------------------------------
AUTORE: 4201
DATA :10/05/2012 - 08:39:18
----------------------------------------
[quote:2694oi5m]Non capisco il motivo per cui ti serve un hw specifico per seguire un corso di LV, alla fine ti basta una scheda con delle risorse simulate, dalla quale tu possa richiamare e settare proprietà....(la usb-6216 ha più ingressi analogici e più I/O della 6008)[/quote:2694oi5m]
Credo di non essermi spiegato. Ci riprovo.
Per necessità lavorative, vorrei imparare a programmare in LabView. Al momento però, non mi posso permettere, sia economicamente che temporalmente, di seguire un corso formale di quelli organizzati dalla NI o società collegate.
Ho provato allora a cercare in internet ed ho trovato tanta documentazione ed anche qualche corso. Uno di questi è quello pubblicato ed attualmente scaricabile gratuitamente da Elettronica IN http://blog.elettronicain.it/2011/05/15 ... ca-gratis/ .
Usando allora un pc di laboratorio, con LabView installato, ho iniziato allora a seguire gli esempi di detto corso. Ad un certo punto però mi sono fermato in quanto il corso prevede di usare uno strumento, appunto l'NI-usb 6008, che non possiedo. Da qui la domanda a questo user Group. Considerando che LabView introduce il concetto di strumentazione virtuale, mi chiedevo se fosse possibile superare il problema della mancanza dell'hw con uno strumento _simulato_.
Ovviamente il tutto peggiorato da una serie di problematiche:
[list:2694oi5m]la simulazione di uno strumento virtuale non credo sia la cosa più semplice che un neofita come me debba affrontare[/list:u:2694oi5m]
[list:2694oi5m]lo scheda utilizzata nel corso (ni-usb 6008) per qualche motivo non è presente nella lista degli strumenti che si possono simulare (quindi non posso banalmente seguire quanto c'è nelle dispense ma devo anche preoccupearmi degli ingressi ed uscite supplementari[/list:u:2694oi5m]
[list:2694oi5m] gepponline che mi dice che l'hw simulato produce come uscite sempre 0 (io non so se sia vero in senso assoluto o sotto particoleri condizioni ma al momento prendo per buoni le affermazioni ed i consigli che cortesemente mi arrivano) e quindi forse questa strada potrebbe non essere praticabile[/list:u:2694oi5m]
Essendo un neofita, in ogni caso, non escludo che questi problemi che al momento mi appaiono in prospettiva, siano in effetti dei non-problemi, ed il tutto è dovuto solo alla mia ignoranza sulla materia. Per questo chiedevo aiuto a voi che magari Labview lo usate da anni e potete così consigliare un novellino come me.
Aggiungo anche che, seguendo un po' quello che diceva Aris nel suo ultimo messaggio, ho ricercato tutte le schede della NI denominate multifunction DAQ, presenti nella lista delle bord simulabili, cercando quella che fosse più simile alla 6008 sia in termini di ingressi che di uscite, ed ero arrivato alla conclusione che la board che maggiormente si avvicinava a quella delle dispense era la ni-usb 6221. La 6216 mi sembrava avesse ancora più I/O della 6221.
Adesso però arriva la parte difficile, essere in grado di usare "proficuamente" questo componente. Al momento non ho ancora avuto il tempo di provare ....
In ogni caso, ancora una volta, ringrazio per la vostra disponibilità e cortesia.
Daniele
----------------------------------------
================================================================================
da stringa ad array di word
================================================================================
AUTORE: 482
DATA :08/05/2012 - 13:09:52
----------------------------------------
...ma ciao!
mi sa che mi sto perdendo in un bicchier d'acqua e quindi mi rivolgo a voi.
Devo leggere un file binario per prelevare le word al suo interno.
Io leggo il file binario con le apposite funzioni e ho in uscita una stringa.
dopodichè converto questa stringa in un array di U8 (byte).
Per poi trasformare questo array in un array di U16 di dimensione diemzzata (perchè devo unir ea due a due gli U8), ho fatto un ciclo for che mi prende il primo e il secondo byte e me li unisce, poi li inserisce in u narray vuoto, poi prende il terzo e il 4° byte e li unisce e accoda il dato a quello di prima e cosi' via.
...ma mi cheidevo....cosi' come esiste string to byte array, non è che esiste una funzione string to word array o qualcosa del genere?
----------------------------------------
AUTORE: 482
DATA :08/05/2012 - 13:16:15
----------------------------------------
come dicevasi....
la risposta è TYPE CAST ...
----------------------------------------
================================================================================
Domanda su llb
================================================================================
AUTORE: 3465
DATA :09/05/2012 - 15:23:19
----------------------------------------
Salve a tutti,
dovrei creare un file .llb che contenga al suo interno dei vi (uso labview 2011). Ora, con le versioni precedenti, andavo sotto file--->save with options--->development distribution e da lì creavo la mia libreria. Cosa importante potevo rendere invisibile il block diagram dei miei vi. Ora il save with option non lo trovo più. Come posso fare per creare una libreria che contenga dei vi con block diagram invisibile?
grazie
----------------------------------------
AUTORE: 43
DATA :10/05/2012 - 14:27:30
----------------------------------------
[quote="daniroma83":23san6zp]Salve a tutti,
dovrei creare un file .llb che contenga al suo interno dei vi (uso labview 2011). Ora, con le versioni precedenti, andavo sotto file--->save with options--->development distribution e da lì creavo la mia libreria. Cosa importante potevo rendere invisibile il block diagram dei miei vi. Ora il save with option non lo trovo più. Come posso fare per creare una libreria che contenga dei vi con block diagram invisibile?
grazie[/quote:23san6zp]
dal FP di un VI
nell'opzione
Save
al primo salvataggio
oppure sempre in
Save as...
appare una opzione per la creaqzione di una .LLB
come riporto nelle 2 immagini seguenti
[attachment=2:23san6zp]LLB_create1.JPG[/attachment:23san6zp]
se è messa la spunta alla opzione in
Tools --> Options...
e poi
Environment
nel menu a sx e poi
Use native file dialog.
Se non è messa tale "spunta", allora, le opzioni di creazione LLB appariranno + o - così
[attachment=1:23san6zp]LLB_create2.JPG[/attachment:23san6zp]
E' possibile in aggiunta gestire delle "Librerie di progetto" LabVIEW come segue
File --> Create...
ti apre un pannello e poi scegli da menu
Library
Da pannello aggiungi i VI alla libreria.
Queste librerie sono memorizzate in file di estensione .lvlib
-------------------------------------
riguardo al rendere invisibili i diagrammi dei VI... beh, non mi tornano i conti.
Puoi proteggere i tuoi diagrammi con una password, oppure salvarti una copia dei VI SENZA Diagrammi.
Direi che è molto diverso cancellare i diagrammi dal renderli invisibili.
Tra l'altro i VI salvati senza diagramma sono + piccoli
Però, penso di intuire a cosa ti riferisci, cioè il vecchio comando di "Save with Options..."
Ebbene, sappi che puoi fare di tutto e di più, sfruttando le opportunità che ti offre la gestione del "progetto":
Aggiungendo i tuoi file sorgenti al progetto e scegliendo come opzione in
Build --> New -> Source Distribution
Puoi decidere di ogni singolo VI se salvarne la copia, con o senza diagramma e con o senza Front Panel...
informati con L'Help....
bye
[attachment=0:23san6zp]LLB_create3.JPG[/attachment:23san6zp]
----------------------------------------
================================================================================
Problemi Main
================================================================================
AUTORE: 4196
DATA :09/05/2012 - 16:06:15
----------------------------------------
Ciao a tutti,
Io sono alle prime arma con il labview, praticamente sto lavorando a un sistema acquisizione dati che funziona abbastanza bene, il problema è che mi sembra troppo lento, e quindi quando chiamo le diverse funzione dal Main, a volte si blocca tutto, sembra che si soprappongono una sopra l'altra...cosa potrà essere???
Grazie mile.
GIA
----------------------------------------
AUTORE: 43
DATA :10/05/2012 - 14:39:09
----------------------------------------
[quote="Gia":8eg88t50]Ciao a tutti,
Io sono alle prime arma con il labview, praticamente sto lavorando a un sistema acquisizione dati che funziona abbastanza bene, il problema è che mi sembra troppo lento, e quindi quando chiamo le diverse funzione dal Main, a volte si blocca tutto, sembra che si soprappongono una sopra l'altra...cosa potrà essere???
Grazie mile.
GIA[/quote:8eg88t50]
ok
sei un nuovo utente però mi sembri come Totò e Peppino che giunti a Milano chiedono ad un Ghisa (vigile urbano):
"mi scusi, per andare dove dobbiamo andare, dove dobbiamo andare?"
http://www.youtube.com/watch?v=tqAha_XCwLc
Come puoi pretendere, dalle informazioni che hai dato che qualcuno ti possa dare una mano?
bye
----------------------------------------
AUTORE: 4196
DATA :12/05/2012 - 14:24:26
----------------------------------------
Ahahaha che simpatico. Sono d'accordo con te, che domanda che ho fatto, mi scuso, il problema è che questo labview mi sta facendo impazzire. Dunque sto lavorando su un software acquisizione dati per la verifica e taratura di un dinamometro che deve testare la relazione forza ammortizzante e velocità di un sistema di sospensione auto. Il vi che fa la calibrazione dei sensori funziona bene, poi ho fatto un altro vi che mi legge i dati mostrandogli in un grafico e gli memorizza, e un' altro vi invece mi permette di leggere i dati acquisiti e analizzare i grafici. Il problema è che tanto la parte di acquisizione come analisi dati è molto lenta, anche il main si mi blocca e non riesco a capire qual possa essere il problema, se è proprio nella programmazione del main o invece degli altri vi. Ti allego il vi con qui faccio leggo i memorizzo su i file per vedere cosa mi dici. Grazie
----------------------------------------
AUTORE: 927
DATA :05/06/2012 - 08:57:27
----------------------------------------
Il ciclo arancione non ha un Wait e quello sicuramente occupa tutto il sistema finchè non premi Start.
Il ciclo blu, se ho ben capito ogni 20 millisecondi legge dati e scrive su file, forse è normale che sia faticoso... La scrittura su file non la puoi fare tutta in una volta alla fine?
----------------------------------------
AUTORE: 4196
DATA :05/06/2012 - 10:03:58
----------------------------------------
Grazie mille. Snamrogetti. Proverò a mettere in pratica i tuoi consigli.
----------------------------------------
================================================================================
Pannello operatore Siemens OP12
================================================================================
AUTORE: 660
DATA :11/05/2012 - 12:11:50
----------------------------------------
Buongiorno a tutti,
qualcuno di voi ha già avuto modo di utilizzare labview per creare dll (o exe) da utilizzarsi sui pannelli OP12 di Siemens?
Max
----------------------------------------
================================================================================
Importare immagini da file
================================================================================
AUTORE: 4165
DATA :14/05/2012 - 10:03:59
----------------------------------------
Ciao a tutti, altra domanda..
Sto creando un'applicazione e vorrei che in ogni front panel comparisse il logo dell'azienda. Il logo è un file *.jpg
Ho provato con il comando Edit -> Import picture from file ma mi da sempre l'errore
"LabVIEW could not import the picture. Possible reasons include:
-Corrupt file or invalid picture type.
-File used by another application.
-Not enough memory"
Sbaglio qualcosa ? Esiste un altro metodo....tipo copia e incolla ?
Ciao e grazie
----------------------------------------
AUTORE: 482
DATA :14/05/2012 - 15:21:02
----------------------------------------
trascina l'immagien sul front panel.
----------------------------------------
AUTORE: 4165
DATA :14/05/2012 - 15:55:33
----------------------------------------
Ciao, ho provato ma non succede nulla.
----------------------------------------
AUTORE: 482
DATA :15/05/2012 - 07:49:25
----------------------------------------
sei sicuro che l'immagine sia jpg?
Sei sicuro che l'immagien non occupi millemila mega?
perchè confermo che con i jpg, cosi' come con altri formati comuni, batsa trascinare il file sul front panel (quindi dal file manager, non da un editor di immagini)
----------------------------------------
AUTORE: 4165
DATA :15/05/2012 - 10:35:16
----------------------------------------
Ciao,
sì sì l'immagine è jpg e anche molto leggera (100 K).
Ho provato anche con altre ma il risultato non cambia..dov'è il trucco ?
Grazie
----------------------------------------
AUTORE: 482
DATA :15/05/2012 - 11:17:52
----------------------------------------
proviamo per passi:
1)apri esplora risorse
2)apri labview e crei un vi vuoto
3) visualizza affiancati il front panel del vi e l'esplora risorse
4) seleziona l'immagine che vuoi e trascinala sul front panel.
5) L'icona del mouse si dovrebbe trasformare in un quadratino con un +
6) se il tipo di immagiennon è supportata invece l'icona del mouse si deve trasormare in un simbolo di divieto.
----------------------------------------
AUTORE: 4165
DATA :15/05/2012 - 14:22:50
----------------------------------------
Ciao, fatto esattamente come suggerito, l'icona del mouse si trasforma effettivamente in un quadratino con il + ma l'immagine non viene copiata.
Io sto usando LW 6.1....non so magari c'entra qualcosa.
Grazie
----------------------------------------
AUTORE: 482
DATA :16/05/2012 - 07:38:30
----------------------------------------
hai provato con un altra immagine piccola sia come peso che come dimensioni?
Eventualmente prova a convertirla in PNG o in gif..
----------------------------------------
AUTORE: 4165
DATA :16/05/2012 - 14:11:22
----------------------------------------
Risolto...ho convertito l'immagine iniziale in *gif e in effetti l'ha copiata.
Ho poi provato con altre immagini jpg molto leggere (45K max) ma non cambia nulla, non le copia.
Grazie mille
----------------------------------------
AUTORE: 482
DATA :16/05/2012 - 14:52:53
----------------------------------------
a sto punto ho il sospetto che nella versione 6.1 i jpg non fossero compatibili...
----------------------------------------
AUTORE: 43
DATA :17/05/2012 - 09:14:52
----------------------------------------
[quote="Paperinik":27we8qcj]Risolto...ho convertito l'immagine iniziale in *gif e in effetti l'ha copiata.
Ho poi provato con altre immagini jpg molto leggere (45K max) ma non cambia nulla, non le copia.
Grazie mille[/quote:27we8qcj]
nell help di LaBVIEW 6.1 ho trovato questo:[code:27we8qcj]Using Imported Graphics in LabVIEW
You can import graphics from other applications to use as front panel backgrounds, items in ring controls, and parts of other controls and indicators. Refer to the Custom Controls and Type Definitions Application Note for more information about using graphics in controls.
LabVIEW supports most standard graphic formats, including animated GIF, MNG, animated MNG, and PNG. LabVIEW also supports transparency.
Use one of the following methods to import a graphic.
Windows
Macintosh
UNIX
After you import a graphic, you might need to resize or reorder it.
[/code:27we8qcj]
Selezionando "Windows" si ottiene la seguente pagina:[code:27we8qcj]Importing Graphics in Windows
You can import an image from a graphics application, drag and drop an image file into LabVIEW, or use the Edit»Import Picture from File menu item.
Complete the following steps to import an image from a graphics application. You can import any image format your graphics application supports, except animated images.
1-In your graphics editing application or Web browser, copy an image to the clipboard.
2-Switch to LabVIEW. The image is automatically available on the LabVIEW clipboard.
3-Place your cursor in the place you want to paste the image.
4-Select Edit»Paste to place the image in LabVIEW.
Complete the following steps to drag a graphics file (CLP, EMF, WMF, BMP, or animated) from Windows Explorer and place it in LabVIEW.
1-In Windows Explorer, select the graphics file you want to import.
2-Drag the file into the LabVIEW window and place the cursor where you want to paste it.
3-Release the mouse button. The image from the file appears in LabVIEW.
Complete the following steps to import a graphic (CLP, EMF, WMF, BMP, or animated) using the LabVIEW import picture from file feature.
1-Select Edit»Import Picture from File.
2-Use the dialog box that appears to navigate to the image file you want to import. Select the file and click the OK button.
3-Place your cursor in the place you want to paste the image.
4-Select Edit»Paste in LabVIEW.
[/code:27we8qcj]
Infine è possibile importare immagini .jpg in LaBVIEW 6.1 ma solamente dentro un "Picture Control" utilizzando le apposite funzioni
[attachment=0:27we8qcj]JPG_import.JPG[/attachment:27we8qcj]
bye
----------------------------------------
================================================================================
Filtrare / mediare dati ingresso arduino
================================================================================
AUTORE: 4205
DATA :14/05/2012 - 11:16:02
----------------------------------------
Saluto a tutti dato che questo è il mio primo post.
Sto iniziando ora a fare le prime prove con labview ed arduino .
Sto effettuando la misura di una tensione da un ingresso analogico e la visualizzo sia in forma grafica che numerica.
La misura di 1,2 Vdc è affetta da variazioni di +- 50mV anche tra una misura e l'altra fatte con cadenza di 500 ms.
la misura è corretta in quanto rilevo tale fluttuazione anche con l'oscilloscopio, fluttuazione dovuta a ripple / rumore.
Se la misura la rilevo con un multimetro, leggo precisamente 1,2Vdc.
Esiste un metodo / filtro o altro con cui rendere più stabile la misura ..... diciamo come quella del multimetro ??
Avevo pensato ad effettuare più misure e poi fare la media, ma non ho idea di come fare.
Saluti
Michele
----------------------------------------
AUTORE: 301
DATA :17/05/2012 - 14:17:28
----------------------------------------
Se intendi con Labview, la risposta è si.
Dovresti fare una media mobile del valore che leggi, oppure applicare un filtro che ti tagli i segnali rilevati ad una certa frequenza.
Se chiedi se è possibile con Arduino, la rispota credo sia ancora si, ma non ho idea di come farlo.....
Aris
----------------------------------------
AUTORE: 4205
DATA :18/05/2012 - 15:53:21
----------------------------------------
Logicamente pensavo di sfruttare labview , quindi quindi o media mobile o filtro.
Puoi farmi un esempio o darmi un link cosi da studiarci un po su?
Non saprei da dove cominciare.
Grazie
Xzero2
----------------------------------------
================================================================================
ciclo while
================================================================================
AUTORE: 4196
DATA :14/05/2012 - 11:51:56
----------------------------------------
salve a tutti,
sto facendo una vi dentro un ciclo while che finisce quando premo lo stop, ma io vorrei fare che finisca anche quando chiudo il front panel (X). C'è modo di farlo? Grazie
----------------------------------------
AUTORE: 301
DATA :15/05/2012 - 15:33:25
----------------------------------------
Usando una struttura ad eventi, settando un evento front panel close.
Aris
----------------------------------------
================================================================================
Re: Inviare e-mail
================================================================================
AUTORE: 482
DATA :16/05/2012 - 07:37:27
----------------------------------------
..?!?!?!?....questo è un forum di LabVIEW
----------------------------------------
================================================================================
labview + c#/java
================================================================================
AUTORE: 4207
DATA :17/05/2012 - 10:34:46
----------------------------------------
Ciao a tutti
sono un novello di labview e avrei bisogno di far parlare un'applicazione labview con una in c# o java (ancora da creare).
non so se serve ma da c#/java dovrei : avviare/stoppare il modulo lv e ricevere/inviare dati.
è possibile fare questo? con quale libreria?
grazie anticipatamente
Sebba
----------------------------------------
AUTORE: 4207
DATA :18/05/2012 - 16:23:47
----------------------------------------
problema risolto ma riutilizzo il topic per un nuovo quesito
utilizzando activeX per far parlare lv e c# riscontro un errore quando vado ad eseguire una Call o meglio Call2
posto un pezzo di codice
[code:1a6ki51g]
string[] param1_string = new String[2];
param1_string[0] = "Quantità";
param1_string[1] = "Output";
object param1 = (object)param1_string;
string[] param4_string = new String[2];
param4_string[0] = "10";
try
{
//viobject.Call(ref param1,ref param2);
viobject.Call2(ref param1, ref param4, true, true, true, true); <------
}
catch (COMException ex)
{
Console.WriteLine("COMException:"+ex.Message);
}
[/code:1a6ki51g]
l'errore che mi viene tornato è: LabVIEW : [i:1a6ki51g]paramVals type mismatch. Expected 1D array of variants.[/i:1a6ki51g]
dove paramVals è il mio param4.
qualcuno ha idea di cosa voglia dire quell'errore ed eventualmente come sistemarlo?
o se proprio nessuno l'ha mai incontrato, mi sapete spiegare cos'è un "1d array of variants" ? (fino a "1d array of" ci sono!!
)
Sebba
----------------------------------------
AUTORE: 4207
DATA :21/05/2012 - 14:21:47
----------------------------------------
risolto
[code:p16dfuv3]object[] param4_obj = new object[2];
param4_obj[0] = 10;
object param4 = (object)param2_obj;[/code:p16dfuv3]
mentre il primo object può essere "composto" da un qualunque tipo il secondo no e va creato con la sintassi sopra
minkia sta discussione me la canto e me la suono!!!!
ottimo
----------------------------------------
================================================================================
Per aris (Aiutoo!!!)
================================================================================
AUTORE: 4196
DATA :18/05/2012 - 15:03:06
----------------------------------------
Grazie mille per la tua risposta, mi rendo conto che non formulo molto bene le domande perchè nessuno mi risponde mai e poi sono alle prime arme e ho un sacco di dubbi, volevo chiederti un'altra cosa ancora perchè sto facendo un vi che mi acquisisca il segnale e mi permetta di scaricarlo e poi un'altro che invece mi permette di leggere i dati acquisiti. Io sto usando una Ni 6009 USB per la acquisizione dati
Il primo problema è che quando mi si apre il File Dialog e annullo mi da un' errore e non riesco a toglierlo perche continua la sequenza. E poi funziona molto lento, non riesco a capire se è un problema del campionamento o un'altra cosa. Gradirei tantissimo si riesci a guardare i vi in allegato.
Grazie mille.
----------------------------------------
AUTORE: 301
DATA :26/05/2012 - 09:26:22
----------------------------------------
cioa Gia,
scusa se non ti ho risposto, ma sto tipo......sull'epicentro del terremoto, e ti assicuro che non si vive bene in questi giorni.
Purtroppo qui non ho lv installato.
Spero che qualche altro utente possa risponderti...
Aris
----------------------------------------
AUTORE: 4196
DATA :27/05/2012 - 15:59:29
----------------------------------------
Grazie ancora della tua risposta. Spero tutto torni apposto in fretta. Buona fortuna!!!
Gia
----------------------------------------
AUTORE: 301
DATA :10/10/2012 - 13:54:59
----------------------------------------
Ciao Ga,
scusa ancora il ritardo......
hai poi risolto qualcosa?
Aris
----------------------------------------
================================================================================
Chiamare una DLL da Labview
================================================================================
AUTORE: 2196
DATA :20/05/2012 - 16:09:30
----------------------------------------
Sto impazzendo nel tentare di chiamare una funziona scritta in c tramite l'apposito blocco di Labview 8.2
Ho creato tutti i tipi necessari dati seguendo il file .h che allego.
Necessita anche di un puntatore a struttura e per questo ho creato uno cluster allineato alla struttura. Per poterlo usare nel data type del parametro ho messo "Adapt to Type" ma usando qualsisi dei tre "data format" disponili Labview va in crash.
Allego, DLL,h e Vi.
----------------------------------------
AUTORE: 43
DATA :21/05/2012 - 09:26:43
----------------------------------------
ciao
la prima cosa che non mi torna è il valore che la chiamata restituisce:
è un tipo enumerato, ma il tipo enumerato, di solito non è mappato come variabile a 8 bit.
Si, daccordo, dipende da compilatore e processore per il quale si compila, ma presumo che, come nel caso di LabVIEW, il default per il tipo enumerato sia 16 bit.
La seconda cosa che non mi torna è il cluster:
il dato da passare è, di fatto, un buffer con della memoria allocata, a prescindere dal tipo di dato.
Tu passi una struttura vuota.
Ecco una possibile soluzione
[attachment=0:1t3d4y4o]dll_monitor.vi[/attachment:1t3d4y4o]
l'intero finale è girato per il solito problema LittleEndian-BigEndian.
Le due stringhe (da 1000 e da 100 char) vanno corrette perchè immagino siano NULL terminate...
bye
----------------------------------------
AUTORE: 2196
DATA :21/05/2012 - 09:46:02
----------------------------------------
Intanto grazie, stasera provo.
----------------------------------------
AUTORE: 2196
DATA :21/05/2012 - 10:33:20
----------------------------------------
Un altra domanda...con le tue modifiche lanciandolo a te si schianta labview ?
----------------------------------------
AUTORE: 43
DATA :21/05/2012 - 11:04:48
----------------------------------------
[quote="Buddace":1dkxwqi7]Un altra domanda...con le tue modifiche lanciandolo a te si schianta labview ?[/quote:1dkxwqi7]
A me non crasha
Guarda, ho linkato ora la dll (scompattata e messa nella stessa cartella del VI).
Con i parametri che passi di default cioè con
puc_message = B0 01 10 5E
ottengo:
returntype = 1
nel cluster:
aucOpcodeString = "SW_REQ" seguito da una fila di NULL, che avrai cura di togliere tu, che completano i 100 char
aucExplainationString = "address=1 output=ON dir=thrown/red" seguito da una fila di NULL, che avrai cura di togliere tu, che completano i 1000 char
iIconIndex = 8
bye
----------------------------------------
AUTORE: 2196
DATA :21/05/2012 - 12:06:27
----------------------------------------
Bene direi che funziona allora grazie!!!!
----------------------------------------
AUTORE: 2196
DATA :22/05/2012 - 08:16:00
----------------------------------------
Testato e funzionante. Quando lo aperto si è solo incazzato per la grandezza minima dei vettori su cui ho impostato 0
----------------------------------------
AUTORE: 43
DATA :23/05/2012 - 10:08:29
----------------------------------------
[quote="Buddace":394hv37h]Testato e funzionante. Quando lo aperto si è solo incazzato per la grandezza minima dei vettori su cui ho impostato 0[/quote:394hv37h]
Non ho capito bene cosa intendi dire, ma, ho il sospetto che tu non abbia capito una mazza...
tra l'altro c'è pure un piccolo errore...
Per scoprire di cosa parlo prova a fare a così:
crea un array di byte dove riceverai la risposta lungo 1110 byte, cioè un po' + lungo di quanto avevo stabilito.
al posto del valore iniziale 0 prova a mettere 255 (FF se utilizzi la notazione hex).
Noterai che:
Le due stringhe vengono scritte solo per la parte strettamente necessaria, cioè fino al null, mentre il numero occupa 4 byte invece dei 2 che avevo previsto (cretino io che pensavo che "int" in C si riferisca ad un valore a 16bit, mentre in realtà i processore per cui è stata compilata quella dll è un 32 bit.
Presumo che anche il valore che la funzione ristituisce, cioè il tipo enumerato, sia a 32 bit anzichè 16 come ho scritto io.
Tutto ciò serve ad esplicitare che nel linguaggio C la rappresentazione dei dati in memoria segue regole precise che devono essere conosciute da chi si appresta allo scambio di dati: le stringhe di una struttura C, sono array di byte di lunghezza fissata (dichiarata) ed ogni tipo di dato ha una occupazione di memoria fissata.
Capita poi che se la struttura occupa un numero di byte dispari o che non siano multipli di 4 tanto per fare un es. potrebbero allocati qualche byte in + x arrotondare l'indirizzamento in memoria...
cmq queste cose sono scritte ben chiare nei manuali dei compilatori anche xkè se si usano dichiarazioni di tipo "union" si devono conoscere esattamente tutte le regole di mappatura dei dati in memoria onde prevenire problemi....
in LabVIEW è possibile, utilizzando la funzione "flatten to string" convertire un qualuque dato complesso in una sequenza di byte, così come sono in memoria.
Se utilizzassi questa funzione con il tuo cluster (stringa-stringa-intero) scopriresti che ogni stringa LabView è in memoria costituita da una sequenza di bytes contigui dove la sequenza stessa di bytes è preceduta da 4 bytes cioè la lunghezza della stringa rappresentata da un U32. In pratica una stringa nulla "" in memoria occupa 4 bytes.
Inoltre scopriresti che i numeri (interi, float ecc.) sono in memoria "al contrario" rispetto agli stessi identici numeri rappresentati in memoria da un altro linguaggio come il C.
Le conversioni che una chiamata a dll implicitamente comporta, vengono effettuate automaticamente da LaBVIEW ove ciò è applicabile cioè sui tipi di dato "primitivi" o di base in genere, mentre, risulta un po' complicata per i tipi di dato "aggregati" (cluster array di cluster e così via...).
risultainvece, praticamente impossibile o quasi passare puntatori a puntatori o puntatori a funzione, a meno che sia ammesso e si volgia passare un puntatore nullo....
bye
----------------------------------------
================================================================================
digital input che agisce su un digital out
================================================================================
AUTORE: 4194
DATA :21/05/2012 - 20:13:34
----------------------------------------
Ciao a tutti,
stò iniziando ora ad utilizzare labview e nn sono un informatico (abbiate pazienza).
Con una 6008 comando un dig out (motore dc). La mia necessità è che, se acquisisco un digital input (sesore di passaggio effetto hall), questo vada a forzare in dig out a zero, fermando il motore.
Ringrazio gli esperti per il cortese supporto.
Grazie.
Andy.
----------------------------------------
AUTORE: 278
DATA :28/05/2012 - 07:21:00
----------------------------------------
Ciao,
per gestire questa cosa devi creare un ciclo (while loop) dove controlli periodicamente lo stato del finecorsa (sensore di hall), quando il segnale del finecorsa è alto scrivi sul Dig Out il valore 0 (do per scontato ceh sai leggere/scrivere gli stati digitali della 6008)
----------------------------------------
================================================================================
Problemi generali con gli Array
================================================================================
AUTORE: 4211
DATA :22/05/2012 - 10:07:11
----------------------------------------
Salve a tutti,
uso Labview 7.0 Student Edition per lo svolgimento di un esame, ed ho iniziato ad esercitarmi proprio in questi giorni.
Oltre alle semplici operazioni, quali somma, differenza, moltiplicazione e divisione che per fortuna non mi creano problemi, mi ritrovo ad essere un pò impedito nello svolgimento di esercizi dove sono presenti degli array. Uno tra questi, che a prima vista mi sembrava quasi "banale", consiste nell'avere un array di double del quale fare la media aritmetica: il concetto è sempre quello del sommare tutti gli elementi degli array e dividere questa somma per la dimensione dell'array, ma al momento del dover applicare questo concetto tramite i "blocchetti" di Labview la cosa mi viene difficile da fare.
Purtroppo le stesse difficoltà le ritrovo quando cerco di svolgere un esercizio nel quale, dato un array di interi, mi si richiede di contare quanti numeri pari sono presenti negli array.
Presumo che al momento il mio problema principale sia nel non saper "scorrere" un array per poter leggere ogni singolo elemento di esso.
Grazie mille per l'attenzione
----------------------------------------
AUTORE: 4210
DATA :22/05/2012 - 13:58:28
----------------------------------------
sinceramente non so cosa ci sia in labview 7.0 anche perchè uso labview 2010 ma credo risolveresti il tuo problema inserendo un array size con un indicatore numerico in uscita per vedere di quanti elementi è formato il tuo array poi inserire un for loop con uno shift register e una somma per avere il totele per poi fare la media in uscita... comunque ti allego un immagine di come l'ho fatto io un po grossolanamente...
----------------------------------------
AUTORE: 4211
DATA :22/05/2012 - 19:48:26
----------------------------------------
Grazie mille per la risposta! Ho capito che il mio problema stava proprio nel non inserire lo shift register, per questo non avevo come risultato quello che chiedevo!!
L'immagine mi ha saputo spiegare perfettamente come fare, grazie mille ancora!!
----------------------------------------
AUTORE: 482
DATA :23/05/2012 - 08:30:04
----------------------------------------
...poi cisono dei blocchetti già fatti che fanno la sommatoria senza ricorrere al ciclo for.
Oppure c'e' anche il blocchetto per fare la media
----------------------------------------
AUTORE: 43
DATA :23/05/2012 - 09:24:40
----------------------------------------
[quote="Alinik":1f52qbsb]Grazie mille per la risposta! Ho capito che il mio problema stava proprio nel non inserire lo shift register, per questo non avevo come risultato quello che chiedevo!!
L'immagine mi ha saputo spiegare perfettamente come fare, grazie mille ancora!![/quote:1f52qbsb]
Come dice Geppo ci sono vari metodi.
Però è bene conoscere anche le funzioni "già pronte" per evitare di inventare l'acqua calda...
[attachment=0:1f52qbsb]xAlinik3.vi[/attachment:1f52qbsb]
Il VI in allegato l'ho scritto in LV7.1. Per poterlo convertire in LV 7.0 ho dovuto togliere le chiamate alle funzioni di Libreria che calcolano la media...
Ti faccio notare che lo shift register, in questo caso, va inizializzato.
bye
----------------------------------------
AUTORE: 4211
DATA :23/05/2012 - 09:59:41
----------------------------------------
Vi ringrazio tutti davvero!
Naturalmente per me sarebbe meglio conoscere il procedimento nel costruire il subVI appunto per lo svolgimento di esercizi d'esame, ipotizzavo che esistessero già dei blocchetti fatti apposta per queste operazioni ma alla fine la cosa principale per me è saperli "costruire" da me!
Vi ringrazio ancora tutti per le delucidazioni e per gli esempi illustrati!
----------------------------------------
AUTORE: 4211
DATA :23/05/2012 - 11:08:40
----------------------------------------
Purtroppo mentre ancora mi sto esercitando con gli array, mi sono imbattuto in questo esercizio d'esame:
[color=#FF0000:380m6lk5]Sviluppare un VI che riceve in ingresso un vettore di
numeri interi a 8-bit senza segno non ordinati e fornisca
in uscita i seguenti valori:
1. valore max e min con i relativi indici ed il valore medio;
2. il valore rms del vettore in ingresso
3. un vettore contenente gli indici degli elementi del vettore
di ingresso pari ad un valore d'ingresso.
ciascun punto deve essere implementato in un sub VI[/color:380m6lk5]
Per il primo punto non ho avuto problemi, ma per i restanti 2 mi ritrovo di nuovo ad aver problemi nel capire come e quali blocchetti usare e collegare tra di loro: sopratutto per il terzo punto, non riesco ad arrivare all'indice dell'elemento del vettore in ingresso quando esso è uguale al valore in ingresso
Vi ringrazio, come sempre, per l'attenzione.
----------------------------------------
AUTORE: 129
DATA :31/05/2012 - 13:22:54
----------------------------------------
Prova con questo.
Forse puoi trovare qualcosa di più snello per gestire l'estrazione degli indici corrispondenti ad un valore di ingresso.
L'immagine allegata è del tipo snippet quindi se hai una versione LV abbastanza recente puoi trascinarla direttamente all'interno del diagram.
----------------------------------------
================================================================================
suggerimento per corso labview
================================================================================
AUTORE: 4194
DATA :22/05/2012 - 10:27:42
----------------------------------------
Ciao,
per cortesia potete suggerirmi un corso, on line o da scaricare?
Grazie.
Andy
----------------------------------------
AUTORE: 4210
DATA :22/05/2012 - 13:04:06
----------------------------------------
è un po difficile trovare corsi soddisfacenti e soprattutto grattuiti di labview on-line però c'è questo che sembrerebbe interessante :
http://blog.elettronicain.it/2011/05/15 ... ca-gratis/
----------------------------------------
AUTORE: 4194
DATA :22/05/2012 - 14:29:44
----------------------------------------
Grazie per il link.Nel frattempo ho dato un'occhiata al sito National. Secondo voi vale la pena di spendere per i loro corsi?
Qualcuno lo ha già fatto? se si mi potete dare il vs preziosissimo parere?
Grazie ancora.
Andy
----------------------------------------
AUTORE: 4210
DATA :22/05/2012 - 17:31:06
----------------------------------------
io ho fatto il corso Labview core e 2 in national instruments e secondo me se sei uno che vuole imparare è l'ideale perchè li fai 5 giorni intensivi di esercizi con degli insegnanti veramente bravi...
----------------------------------------
AUTORE: 645
DATA :04/06/2012 - 17:44:15
----------------------------------------
Io posso dirti che i corsi National (anche alcuni hands-on da una giornata) non sono affatto male: hai la possibilità di vedere in funzione LabView e i vari moduli e fare domande a tecnici che solitamente preparano esercizi e simulazioni pratiche.
----------------------------------------
================================================================================
Occurrence negli eseguibili
================================================================================
AUTORE: 2192
DATA :22/05/2012 - 11:13:08
----------------------------------------
Salve a tutti,
ho un problema con le occurrence loops.
Ho un codice sorgente con vari while loop in parallelo e con uno in particolare temporizzato per leggere dati da uno strumento ogni tot secondi.
Lo stop di tutti i while loop è regolato tramite le occurrance e finchè lavoro in sorgente tutto funziona alla grande e ottengo l'arresto immediato.
Quando compilo l'eseguibile non ottengo l'effetto di fermare tutto subito ma il while loop principale continua a girare per il tempo impostato...
C'è qualcosa che devo considerare nella creazione dell'eseguibile per far funzionare le occurrance?
Grazie
----------------------------------------
AUTORE: 4212
DATA :23/05/2012 - 23:21:56
----------------------------------------
Ciao,
anch'io ho usato le occurence e l'eseguibile va senza problemi. L'unico problema l'ho avuto quando avevo più cicli while e non usavo le occorrence: temporizzandoli con lo stesso valore del wait qualche volta sembrava che un cliclo while si "congelasse".
----------------------------------------
AUTORE: 43
DATA :24/05/2012 - 06:04:37
----------------------------------------
[quote="dot_entry":2wqoqbm9]Salve a tutti,
ho un problema con le occurrence loops.
Ho un codice sorgente con vari while loop in parallelo e con uno in particolare temporizzato per leggere dati da uno strumento ogni tot secondi.
Lo stop di tutti i while loop è regolato tramite le occurrance e finchè lavoro in sorgente tutto funziona alla grande e ottengo l'arresto immediato.
Quando compilo l'eseguibile non ottengo l'effetto di fermare tutto subito ma il while loop principale continua a girare per il tempo impostato...
C'è qualcosa che devo considerare nella creazione dell'eseguibile per far funzionare le occurrance?
Grazie[/quote:2wqoqbm9]
come ti avevo scritto in questo vecchio post
viewtopic.php?f=1&t=5258&p=23650#p23650
se non ti fidi delle occurrences, puoi usare i Notifiers.
nellHelp di LabVIEW della funzione "Generate Occurrece" si legge:
[quote="LabVIEW Help":2wqoqbm9]Note: National Instruments encourages you to use the Notifier Operations functions in place of occurrences for most operations.[/quote:2wqoqbm9]
Quello che temo, è che le Tue deduzioni siano errate, quindi bisognerebbe dare un'occhiata al codice per poterci capire qualcosa, dato che le info che fornisci sono scarse.
Non può essere l'esecuzione ferma in un subVI richiamato dentro il loop ?
In main loop gestisce "eventi" di altro tipo o la UI?
bye
----------------------------------------
AUTORE: 2192
DATA :24/05/2012 - 09:51:39
----------------------------------------
Grazie paracarro,
il sorgente è piuttosto grande da postare. Cmq ho un while loop principale che va a leggere i dati da una seriale ogni (esempio) 10s e oltre ad eseguire dei calcoli su questi dati li salva su file e li diagramma su un grafico.
In parallelo a questo ne ho un'altro paio che invece ogni mezzo secondo fanno delle altre operazioni.
Ho usato gli esempi che mi hai indicato l'altra volta e ho scelto le occurrence. Come ti dicevo su sorgente tutto va bene ma su eseguibile no.
Ora provo a usare il metodo del notifier e ti faccio sapere.
----------------------------------------
AUTORE: 2192
DATA :24/05/2012 - 12:47:34
----------------------------------------
Eccomi!
ho usato il metodo notifier e ho creato l'eseguibile. Per ora tutto funziona come dovuto.
Grazie per l'aiuto!
----------------------------------------
================================================================================
Da C++ a Labview
================================================================================
AUTORE: 4212
DATA :23/05/2012 - 18:03:58
----------------------------------------
Salve a tutti,
sono nuovo del forum e sono alle prime armi con labview.
Mi trovo a dover interfacciare un detector via usb. Inizialmente utilizzavo le api fornite dal costruttore, ma con il nuovo firmware va tutto riscritto. Purtroppo nel cd di installazione non vi è più nessuna dll, ma vi è un Software Developer's Kit (SDK) in cui vi sono degli esempi scritti in c++. mi chiedo come posso utilizzare queste funzioni?
Grazie a tutti
----------------------------------------
AUTORE: 43
DATA :24/05/2012 - 06:22:16
----------------------------------------
[quote="kono":w9gi6xpa]Salve a tutti,
sono nuovo del forum e sono alle prime armi con labview.
Mi trovo a dover interfacciare un detector via usb. Inizialmente utilizzavo le api fornite dal costruttore, ma con il nuovo firmware va tutto riscritto. Purtroppo nel cd di installazione non vi è più nessuna dll, ma vi è un Software Developer's Kit (SDK) in cui vi sono degli esempi scritti in c++. mi chiedo come posso utilizzare queste funzioni?
Grazie a tutti[/quote:w9gi6xpa]
deve esistere una .dll o un activeX.
il Linguaggio C è un linguaggio procedurale, mentre il C++ è piuttosto orientato agli oggetti, quindi probabilmente a corredo del Tuo"scatolotto"USB, non avrai una libreria di funzioni (.dll), ma un oggetto con proprietà e metodi (.ocx)
tra l'altro l' argomento ActiveX in genere è parecchio trattato anche in questo forum
L'alternativa potrebbe essere che l'interfaccia USB del Tuo "detector" (marca, modello?), simuli una connessione seriale.
In questo caso in qualche documento .pdf del CD nella confezione, dovresti trovare una descrizione dettagliata del protocollo di comunicazione.
bye
----------------------------------------
AUTORE: 4212
DATA :24/05/2012 - 09:19:18
----------------------------------------
[quote="paracarro":30ewc7mj][quote="kono":30ewc7mj]Salve a tutti,
sono nuovo del forum e sono alle prime armi con labview.
Mi trovo a dover interfacciare un detector via usb. Inizialmente utilizzavo le api fornite dal costruttore, ma con il nuovo firmware va tutto riscritto. Purtroppo nel cd di installazione non vi è più nessuna dll, ma vi è un Software Developer's Kit (SDK) in cui vi sono degli esempi scritti in c++. mi chiedo come posso utilizzare queste funzioni?
Grazie a tutti[/quote:30ewc7mj]
deve esistere una .dll o un activeX.
il Linguaggio C è un linguaggio procedurale, mentre il C++ è piuttosto orientato agli oggetti, quindi probabilmente a corredo del Tuo"scatolotto"USB, non avrai una libreria di funzioni (.dll), ma un oggetto con proprietà e metodi (.ocx)
tra l'altro l' argomento ActiveX in genere è parecchio trattato anche in questo forum
L'alternativa potrebbe essere che l'interfaccia USB del Tuo "detector" (marca, modello?), simuli una connessione seriale.
In questo caso in qualche documento .pdf del CD nella confezione, dovresti trovare una descrizione dettagliata del protocollo di comunicazione.
bye[/quote:30ewc7mj]
Ciao.
Purtroppo nel cd e sul sito non ho trovato nessun .ocx.
Il detector non l'avevo messo perchè temevo di poter fare pubblicità e non era mia intenzione. Il link del detector è il seguente:
[url:30ewc7mj]http://www.amptek.com/dp5soft.html[/url:30ewc7mj]
La versione del firmware è la FW6 ed il tool che distribuiscono per le applicazioni custom è il Software Developer's Kit (SDK) scaricabile sul sito Qui ci sono le funzioni scritte in visual basic (mai usato da me) ed in c++ (che conosco un pochino).
Per quanto riguarda la comunicazioni forniscono il programmer guide in cui vi è il formato dei pacchetti dati e tutti i comandi ascii. Ho provato a comunicarci mediante il driver wizard di visa, ma non so come mandare i pacchetti dati e non riesco a trovare nessun esempio di visa usb o manuali.
Come posso simulare una comunicazione seriale con la porta usb?
Forniscono anche un loro software: il dppmca, che utilizza i driver winusb. Finora utilizzavo la usbdrvd.dll per comunicarci, ma con questo nuovo firmware sembra non rispondere più.
Grazie
----------------------------------------
AUTORE: 43
DATA :29/05/2012 - 11:04:43
----------------------------------------
[quote="kono":3fa0nyng]
Ciao.
Purtroppo nel cd e sul sito non ho trovato nessun .ocx.
Il detector non l'avevo messo perchè temevo di poter fare pubblicità e non era mia intenzione. Il link del detector è il seguente:
[url:3fa0nyng]http://www.amptek.com/dp5soft.html[/url:3fa0nyng]
La versione del firmware è la FW6 ed il tool che distribuiscono per le applicazioni custom è il Software Developer's Kit (SDK) scaricabile sul sito Qui ci sono le funzioni scritte in visual basic (mai usato da me) ed in c++ (che conosco un pochino).
Per quanto riguarda la comunicazioni forniscono il programmer guide in cui vi è il formato dei pacchetti dati e tutti i comandi ascii. Ho provato a comunicarci mediante il driver wizard di visa, ma non so come mandare i pacchetti dati e non riesco a trovare nessun esempio di visa usb o manuali.
Come posso simulare una comunicazione seriale con la porta usb?
Forniscono anche un loro software: il dppmca, che utilizza i driver winusb. Finora utilizzavo la usbdrvd.dll per comunicarci, ma con questo nuovo firmware sembra non rispondere più.
Grazie[/quote:3fa0nyng]
Nonsi tratta di un dispositivo HID per il quale esistono alcuni VI di esempio e discussioni in tema.
Il dispositivo in questione è di tipo Winusb e francamente anchio non saprei come comunicarci via USB.
Si potrebbe sfruttare l'interfacciamento seriale RS232, che mi sembra sia supportato, ma non so se questo è possibile nel Tuo caso.
Immagino tu abbia già trovato questa discussione:
http://forums.ni.com/t5/LabVIEW/Amptek- ... /td-p/1636
l'MCA8000A non è il tuo DP5 ma forse se riesci ad entrare in contatto con uno di questi che hanno già affrontato il problema, per ottenere delle dritte almeno, se non riesci ad ottenere del codice già pronto.
oppure valuta questa discussione che parla di interfacciamento a device WinUSB
http://www.microchip.com/forums/m440704.aspx
Nellla discussione sono presenti alcuni interessant link da cui potresti ricavare degli spunti
Cmq sia, non mi sembra un lavoretto poi così banale.
bye
----------------------------------------
AUTORE: 4212
DATA :21/06/2012 - 23:42:20
----------------------------------------
Nonsi tratta di un dispositivo HID per il quale esistono alcuni VI di esempio e discussioni in tema.
Il dispositivo in questione è di tipo Winusb e francamente anchio non saprei come comunicarci via USB.
Si potrebbe sfruttare l'interfacciamento seriale RS232, che mi sembra sia supportato, ma non so se questo è possibile nel Tuo caso.
Immagino tu abbia già trovato questa discussione:
http://forums.ni.com/t5/LabVIEW/Amptek- ... /td-p/1636
l'MCA8000A non è il tuo DP5 ma forse se riesci ad entrare in contatto con uno di questi che hanno già affrontato il problema, per ottenere delle dritte almeno, se non riesci ad ottenere del codice già pronto.
oppure valuta questa discussione che parla di interfacciamento a device WinUSB
http://www.microchip.com/forums/m440704.aspx
Nellla discussione sono presenti alcuni interessant link da cui potresti ricavare degli spunti
Cmq sia, non mi sembra un lavoretto poi così banale.
bye[/quote]
Ti ringrazio per la risposta. Per quanto riguarda l'MCA8000, anche lui aveva una dll già pronta, se non erro si chiama PMCA.dll o qualcosa del genere (adesso non ho il pc di lavoro per controllare); mentre la comunicazione seriale non la posso usare. Adesso leggo meglio i vari link che si trovano in quei forum, anche s ei primi sli ho già affrontati non riuscendo a ricavare molto
- Sono riuscito a fare il file .inf ed a vederlo come usb e quindi con le visa, ma riesco giusto a leggere il serial number ed il nome dello strumento, ma non riesco proprio a fare la comunicazione. Spero di riuscire a fare qualche passo avanti nei prossimi giorni.Solo un altra domanda: ho letto che se si hanno le varie funzioni in c, si può creare la dll con labview (non so se è così banale come ho letto), però visto che l'Amptek fornisce gli esempi per il c++ se capisco come si fa a trasformarle in c, la posso fare una dll con cui comunicarci?
Non ho mai creato una dll, quindi non so se si ha bisogno di particolari accorgimenti.
Grazie
----------------------------------------
AUTORE: 43
DATA :25/06/2012 - 09:16:50
----------------------------------------
[quote="kono":387regm2]... Sono riuscito a fare il file .inf ed a vederlo come usb e quindi con le visa, ma riesco giusto a leggere il serial number ed il nome dello strumento, ma non riesco proprio a fare la comunicazione. Spero di riuscire a fare qualche passo avanti nei prossimi giorni.[/quote:387regm2]Peccato! Avendo del tempo a disposizione, ti consiglierei di continuare a su questa strada.
[quote="kono":387regm2] Solo un altra domanda: ho letto che se si hanno le varie funzioni in c, si può creare la dll con labview (non so se è così banale come ho letto), però visto che l'Amptek fornisce gli esempi per il c++ se capisco come si fa a trasformarle in c, la posso fare una dll con cui comunicarci?
Non ho mai creato una dll, quindi non so se si ha bisogno di particolari accorgimenti.[/quote:387regm2]
Penso e spero di sì. Spesso può essere necessario, come nel tuo caso, interporre fra LabVIEW e una libreria di funzioni una seconda libreria che funga da "wrapper" della prima.
bye
----------------------------------------
AUTORE: 4212
DATA :25/06/2012 - 19:59:07
----------------------------------------
[quote="paracarro":1sod4cgs][quote="kono":1sod4cgs]... Sono riuscito a fare il file .inf ed a vederlo come usb e quindi con le visa, ma riesco giusto a leggere il serial number ed il nome dello strumento, ma non riesco proprio a fare la comunicazione. Spero di riuscire a fare qualche passo avanti nei prossimi giorni.[/quote:1sod4cgs]Peccato! Avendo del tempo a disposizione, ti consiglierei di continuare a su questa strada.
[quote="kono":1sod4cgs] Solo un altra domanda: ho letto che se si hanno le varie funzioni in c, si può creare la dll con labview (non so se è così banale come ho letto), però visto che l'Amptek fornisce gli esempi per il c++ se capisco come si fa a trasformarle in c, la posso fare una dll con cui comunicarci?
Non ho mai creato una dll, quindi non so se si ha bisogno di particolari accorgimenti.[/quote:1sod4cgs]
Penso e spero di sì. Spesso può essere necessario, come nel tuo caso, interporre fra LabVIEW e una libreria di funzioni una seconda libreria che funga da "wrapper" della prima.
bye[/quote:1sod4cgs]
Sinceramente non ho esperienza nemmeno nella creazione di dll. Da quello che ho capito devo prendere tutti quegli esempi in c++ e trasformarli in c e poi prendo la guida che ho trovato sul sito ni e faccio la dll. Come faccio a creare una seconda libreria che faccia da wrapper? Hai per caso qualche esempio o link dove posso prendere spunto ?
Grazie
----------------------------------------
AUTORE: 43
DATA :26/06/2012 - 14:31:39
----------------------------------------
[quote="kono":2r95ua22]
Sinceramente non ho esperienza nemmeno nella creazione di dll. Da quello che ho capito devo prendere tutti quegli esempi in c++ e trasformarli in c e poi prendo la guida che ho trovato sul sito ni e faccio la dll. Come faccio a creare una seconda libreria che faccia da wrapper? Hai per caso qualche esempio o link dove posso prendere spunto ?
Grazie[/quote:2r95ua22]
mmm... mi sa che non ci siamo capiti. Se non riesci ad interfacciarti da LabVIEW come puoi creare una .dll wrapper in LabVIEW?
Devi prenderti un compilatore C o meglio C++ e, in quell'ambiente di sviluppo creare una dll.
Non a caso nel forum di NI dedicato a Measurement Studio (e perciò NON dedicato a LabVIEW), c'è un link al sito MSDN dove si spiega come creare una .dll a partire dal sorgente scritto in C in ambiante Visual Studio 2005.
http://forums.ni.com/t5/Measurement-Stu ... d-p/866863
Vabbè devi disporre di Visual studio 2005...
bye
----------------------------------------
AUTORE: 4212
DATA :27/06/2012 - 15:15:15
----------------------------------------
[quote="paracarro":31tq3f3a]
mmm... mi sa che non ci siamo capiti. Se non riesci ad interfacciarti da LabVIEW come puoi creare una .dll wrapper in LabVIEW?
Devi prenderti un compilatore C o meglio C++ e, in quell'ambiente di sviluppo creare una dll.
Non a caso nel forum di NI dedicato a Measurement Studio (e perciò NON dedicato a LabVIEW), c'è un link al sito MSDN dove si spiega come creare una .dll a partire dal sorgente scritto in C in ambiante Visual Studio 2005.
http://forums.ni.com/t5/Measurement-Stu ... d-p/866863
Vabbè devi disporre di Visual studio 2005...
bye[/quote:31tq3f3a]
Si questo è il forum di cui parlavo. Nei prossimi giorni provo a realizzare il tutto, speriamo bene!
Grazie per la pazienza
----------------------------------------
================================================================================
Qualcuno mi risponde....???
================================================================================
AUTORE: 4196
DATA :24/05/2012 - 08:27:39
----------------------------------------
Ciaoo
Sto usando una Ni 6009 per acquisire dei segnali in un banco prova per sospensione, ma sto avendo dei problema con la acquisizione dati, il mio dubbio principale è come configurare la velocità e frequenza di campionamento. Il ni 6009 ha un rate di 48 ks/s.
Poi i segnale che sto prendendo sono molto rumorosi, e non ho proprio idea di cosa poter fare per togliere la rumorosità. Qualcuno ha qualche documentazione in merito?
Grazie mille.
Gia
----------------------------------------
AUTORE: 660
DATA :29/05/2012 - 12:37:54
----------------------------------------
... mai pensato di usare un titolo un po' più consono alla richiesta?
comunque...
la scheda USB6009 può campionare fino a 48kS/s su tutti i canali, cioè:
1 canale ==> 48kHz
2 canali ==> 24kHz
etc.
velocità e frequenza di campionamento poi dipendono dal segnale che devi campionare, se non devi sincronizzarlo con nulla puoi utilizzare il massimo che ti è consentito in funzione di quanti canali stai leggendo... per togliere il rumore puoi programmare dei filtri sul segnale letto, il tipo di filtro lo devi scegliere in funzione di quanto è rumoroso il segnale e di quante informazioni vuoi/puoi sacrificare... guarda nella pallette delle funzioni matematiche, eventualmente implementane più di una e poi scegli quella che va meglio...
Max
----------------------------------------
AUTORE: 4196
DATA :31/05/2012 - 16:08:19
----------------------------------------
Grazie Max... beh non tanto consono visto che ha risposto 1 su 40.
In realtà il rumore vogliamo tentar di toglierlo prima di far l'acquisizione, in modo di prendere il segnale più pulito possibile.
Ho campionato così come mi dici tu, quando prendo il segnale da 2 sensori campiono a 24 kHz e quando lo rendo di 4 invece a 12 KHz, ma è rumoroso cmq. Boh..
Buona giornata
----------------------------------------
AUTORE: 660
DATA :31/05/2012 - 21:31:25
----------------------------------------
ciao Gia,
se riesci a postare un'immagine del segnale campionato anche in MP gli do un'occhiata...
Max
----------------------------------------
AUTORE: 4196
DATA :04/06/2012 - 09:45:14
----------------------------------------
Ciao Max...
Quà ti allego i segnali, io ho configurato la mia DAQ nel modo seguente:
Acquisition Mode:continuous samples
Samples to read: 48k
Rate: 24 kHz ( X 2 canali)
12 KHz (X 4 canali)
Buona giornata.
Gia.
----------------------------------------
AUTORE: 660
DATA :04/06/2012 - 11:37:11
----------------------------------------
a giudicare dal segnale potresti provare ad utilizzare un filtro per pulirlo un po'
Max
----------------------------------------
AUTORE: 645
DATA :04/06/2012 - 17:42:03
----------------------------------------
Ciao, per iniziare potresti provare a prendere una media dei tuoi punti.
Poi potresti pensare ad una regressione: http://www.youtube.com/watch?v=zyYq6K7_WDM
o http://forums.ni.com/t5/LabVIEW/linear- ... td-p/71946
----------------------------------------
AUTORE: 4196
DATA :05/06/2012 - 10:05:20
----------------------------------------
Magicbotolo, quello che mi consigli già lo faccio, e cmq i segnali continuano ad essere rumorosi...Boh.
----------------------------------------
================================================================================
IN-OUT digitali
================================================================================
AUTORE: 4213
DATA :24/05/2012 - 08:42:09
----------------------------------------
Con due USB 6211 vorrei controllare 6 ingressi e 4 uscite. Se lo stato delle uscite collegate a 4 rele dipende dallo stato degli ingressi queste ultime non sono stabili, se le faccio funzionare separatamente tutto funziona.Qualcuno può aiutarmi? grazie a tutti
----------------------------------------
AUTORE: 482
DATA :24/05/2012 - 09:21:03
----------------------------------------
che tipo di relè stai usando?
Probabilmente la scheda non fornisce abbastanza corrente per pilotare i relè e quindi devi usare dei transistor di mezzo o dei relè diversi.
----------------------------------------
AUTORE: 4213
DATA :24/05/2012 - 09:41:20
----------------------------------------
I rele sono optoisolati (PS 2502), se faccio funzionare solo le uscite non ci sono problemi. Il problema credo sia software sul collegamento fra task di lettura e scrittura. IO ho inserito il codice in un ciclo While e collegato i task tramite error-in e error-out e passato i data dai moduli di lettura a quelli di scrittura?!?!
----------------------------------------
AUTORE: 482
DATA :24/05/2012 - 10:37:14
----------------------------------------
hai inizializzato ingressi e uscite? gli ingressi e le uscite sono su linee diverse della stessa porta o su due porte diverse.
Puoi postare la parte di codice incui fai la lettura e la scrittura?
----------------------------------------
AUTORE: 4213
DATA :24/05/2012 - 14:40:18
----------------------------------------
Due file. il principale e un subVI per il set reset dei rele. Forse il problema è li?
----------------------------------------
AUTORE: 482
DATA :24/05/2012 - 14:53:43
----------------------------------------
pessimo uso dei blocchetti di lettura e scrittura digitale.
Vai negli esempi di labview e guardati quello che si chiama:
Write Dig Chan.vi
Quando utilizzi delle risorse hardware, soliamente la procedura corretta è:
inizializzazione
apertura
lettura o scrittura
chiusura
Nel ciclo ci va solo la fase di lettura e scrittura.
Tu utilizzando le funzioni implicite di inizializzazione fai in modo che ogni volta che fai una lettura o una scrittura, la risorsa venga reinizializzata come input o come output.
Tu invece devi inizializzare le singole porte prima di entrare nel ciclo e poi passare all'interno del ciclo solo i riferimenti al task iniziato.
----------------------------------------
================================================================================
Ottenre frequenza dalla scheda audio
================================================================================
AUTORE: 4215
DATA :28/05/2012 - 11:31:36
----------------------------------------
Ciao a tutti, sto smanettando con labview 7 per capire come ottenere la frequenza (che verrà indicata su un numeric indicator) partendo dalla scheda audio integrata al pc, per esempio collegando un microfono e vedendo che frequenze faccio con la voce.
Non riesco a capire però come farlo. Nel LabView 2010 è molto semplice, c'è il blocco apposta praticamente, mentre nel 7 fra esempi e tutto non riesco a capire ocme farlo, e usando i vari SI start, ecc... ottengo dei valori di frequenze sempre decimali, tipo 0,00xxx... non capisco il perchè, qualcuno saprebbe aiutarmi? Vi ringrazio, purtroppo non sono un esperto di questo tipo di linguaggio di programmazione!
ciao e grazie ancora
----------------------------------------
AUTORE: 645
DATA :04/06/2012 - 17:49:35
----------------------------------------
Prova a vedere viewtopic.php?f=1&t=4493
Tra i blocchetti trovi quello della FFT che analizza lo spettro e fornisce come risultato la frequenza principale.
----------------------------------------
================================================================================
Mostrare il Context Help
================================================================================
AUTORE: 1033
DATA :29/05/2012 - 09:14:50
----------------------------------------
Ciao, sto facendo una libreria di LabView. Vorrei dare all'utente la possibilità di visualizzare un help premendo un bottone sul Front Panel. E possibile in Runtime visualizzare il context Help del VI.
Grazie.
----------------------------------------
AUTORE: 43
DATA :29/05/2012 - 09:58:25
----------------------------------------
[quote="Altomare":21m62ij0]Ciao, sto facendo una libreria di LabView. Vorrei dare all'utente la possibilità di visualizzare un help premendo un bottone sul Front Panel. E possibile in Runtime visualizzare il context Help del VI.
Grazie.[/quote:21m62ij0]
Si. E' possibile utilizzare il context help da programma
Devi aggiungere per i controlli/indicatori di cui prevedi un help una scritta nella proprietà "description"
Nella Description è possibile evidenziare in bold parti di testo.
bye
----------------------------------------
AUTORE: 1033
DATA :29/05/2012 - 11:13:36
----------------------------------------
Nel modo in cui intendi l'ho fatto. Però l'operatore deve muoversi con il mouse sui controlli oppure sull'icona del VI. Io vorrei che premendo un bottone dal front panel, si apre un pannellino (pop up) che mi fa vedere esattamente le stesse cose del Context Help quando mi posizione sopra l'icona del VI e che l'utente una volta consultato può richiudere.
Grazie!
----------------------------------------
AUTORE: 43
DATA :29/05/2012 - 11:44:12
----------------------------------------
[quote="Altomare":1wx310kr]Nel modo in cui intendi l'ho fatto. Però l'operatore deve muoversi con il mouse sui controlli oppure sull'icona del VI. Io vorrei che premendo un bottone dal front panel, si apre un pannellino (pop up) che mi fa vedere esattamente le stesse cose del Context Help quando mi posizione sopra l'icona del VI e che l'utente una volta consultato può richiudere.
Grazie![/quote:1wx310kr]
Non capisco dove sia il problema... mi sfugge qualcosa...
da diagramma
Functions --> Dialog & User Interface --> Help --> Control Help Window
[attachment=0:1wx310kr]LVHelpWindowCtrl.JPG[/attachment:1wx310kr]
è questo che cercavi?
bye
----------------------------------------
AUTORE: 1033
DATA :29/05/2012 - 12:59:20
----------------------------------------
Anche io ho usato le funzioni che indichi "Functions --> Dialog & User Interface --> Help --> Control Help Window". Ma in questo modo muovendo il mouse mi mostra il context Help sul controllo su cui ho posizionato il mouse. Non solo, se ho chiuso il context Help che puntava ad un controllo, si riapre sul controllo stesso. Io vorrei che mi facesse vedere sempre e solo il context Help del VI. Inoltre, la libreria è in realtà una dll. Ciascuna funzione della dll è fatta da un VI che ha le windoe appearance come Dialog e quindi l'icona non si vede.
Io cercavo un metodo/proprietà che in modo programmatico mi facesse vedere solo il Context Help riferito al VI. Probabilmente l'unico modo è quello di crearmi un file .chm.
Grazie.
----------------------------------------
AUTORE: 43
DATA :30/05/2012 - 08:21:09
----------------------------------------
[quote="Altomare":38ke9c2u]...
Io cercavo un metodo/proprietà che in modo programmatico mi facesse vedere solo il Context Help riferito al VI. Probabilmente l'unico modo è quello di crearmi un file .chm.
Grazie.[/quote:38ke9c2u]
Probabilmente l'unico metodo è farsi un VI che mostri la descrizione del VI che è in primo piano, per fare un esempio.
Se vuoi un help "particolare" è inutile appoggiarsi ad una funzionalità che ha un comportamento diverso da quello richiesto. Meglio farsi la funzione da soli, oppure valutarne l'effettiva utilità, nel caso la implementazione risultasse particolarmente complicata.
bye
----------------------------------------
================================================================================
Resize
================================================================================
AUTORE: 724
DATA :31/05/2012 - 11:17:41
----------------------------------------
Ciao a tutti,
Da qualche giorno mi è scomaparsa durante il reesize degli oggetti la dimensione dell'oggetto che
viene ridimensionato.
E' anche scomparsa l'indicazione del nome dei terminali delle vi piazzate sul diagram ogni qualvolta gli si avvicina il rocchetto.
Ho guardato e variato alcune voci nel menù options senza successo.
Qualche idea in proposito?
Grazie,
Cesare
----------------------------------------
AUTORE: 129
DATA :31/05/2012 - 13:50:25
----------------------------------------
Che versione di labview utilizzi.
Per il ridimensionamento cosa intendi esattamente?
Per la visualizzazione del nome terminale all'avvicinarsi del rocchetto, devi andare in options/block diagrams e spuntare show tip strips over terminal.
----------------------------------------
AUTORE: 724
DATA :31/05/2012 - 14:22:49
----------------------------------------
- Labview 8.2
- show tip strips over terminal è già spuntato
- Per Resize intendo per esempio il ridimensionamento manuale tramite cursore+trascinamento di un tasto booleano sul panel o di un frame sul diagram. Quando facevo il resize compariva una label con dimensioni in pixel (x,y) dell'oggetto che ridimensionavo.
Ciao,
Cesare
----------------------------------------
AUTORE: 43
DATA :31/05/2012 - 15:06:03
----------------------------------------
[quote="ghianda":1o2kanq4]- Labview 8.2
- show tip strips over terminal è già spuntato
- Per Resize intendo per esempio il ridimensionamento manuale tramite cursore+trascinamento di un tasto booleano sul panel o di un frame sul diagram. Quando facevo il resize compariva una label con dimensioni in pixel (x,y) dell'oggetto che ridimensionavo.
Ciao,
Cesare[/quote:1o2kanq4]
Scusa ma il ridimensionamento dei controlli è sempre visibile...
Non hai per caso disabilitato il i "tooltip" da Windows?
Magari hai "ottimizzato" l'interfaccia win abilitando/disabilitando qua e là cose a caso...
bye
----------------------------------------
AUTORE: 724
DATA :31/05/2012 - 16:02:08
----------------------------------------
[/quote]
Scusa ma il ridimensionamento dei controlli è sempre visibile...
Non hai per caso disabilitato il i "tooltip" da Windows?
Magari hai "ottimizzato" l'interfaccia win abilitando/disabilitando qua e là cose a caso...
bye[/quote]
Sulle altre versioni labview installate sul pc (6.02 e 10)funziona tutto corretttamente.
Qualche crash avuto con la versione 8.2 potrebbe aver alterato .....?!
----------------------------------------
================================================================================
controllo path valido
================================================================================
AUTORE: 482
DATA :31/05/2012 - 12:43:00
----------------------------------------
...ma ciao!
per caso esiste un blocchetto che controlla se un path è valido?
Oppure devo usare una funzione di manipolazione dei file e vedere che errore mi da?
Perchè ho un campo di testo dove gli utenti mettono il nome del file e ho due soluzioni:
1) limito l'inserimento del testo ai soli caratteri validi
2) controllo a posteriori il nome e poi eventualmente glielo faccio reinserire.
La prima soluzione è piu' macchinosa (salvo smentite) la seconda vorrei capire se esiste qualcosa di già fatto prima di mettermi ad inventare l'acqua calda.
suggerimenti?
----------------------------------------
AUTORE: 129
DATA :31/05/2012 - 13:31:46
----------------------------------------
Hai provato con file/directory info? lo trovi nel menu file/advanced, se colleghi il cluster di errore ti restituisce un errore se la path non esiste.
----------------------------------------
AUTORE: 43
DATA :31/05/2012 - 13:59:36
----------------------------------------
[quote="gepponline":1hnvtr7s]...ma ciao!
per caso esiste un blocchetto che controlla se un path è valido?
Oppure devo usare una funzione di manipolazione dei file e vedere che errore mi da?
Perchè ho un campo di testo dove gli utenti mettono il nome del file e ho due soluzioni:
1) limito l'inserimento del testo ai soli caratteri validi
2) controllo a posteriori il nome e poi eventualmente glielo faccio reinserire.
La prima soluzione è piu' macchinosa (salvo smentite) la seconda vorrei capire se esiste qualcosa di già fatto prima di mettermi ad inventare l'acqua calda.
suggerimenti?[/quote:1hnvtr7s]
ciao
la funzione chiave è la "String To Path".
[quote="LabVIEW Help":1hnvtr7s]path is the platform-independent representation of the path described by string. If string is not a valid path descriptor on the current platform, the function sets path to <Not a Path>. path is of the same data type structure as string. [/quote:1hnvtr7s]
Per sapere se la conversione da string a path ha avuto successo, basta testare l'uscita della "String To Path" con la "Not A Number/Path/Refnum"
Capisco se devi far scegliere un path relativo, (per il quale potresti far scegliere da una lista se esistente), ma se devi scegliere un path completo, perchè non usi direttamente un Controllo di tipo Path?
bye
----------------------------------------
AUTORE: 129
DATA :31/05/2012 - 15:48:48
----------------------------------------
Non capisco perchè ma a me non funziona il Not A Number/Path/Refnum?, ovvero mi restituisce sempre false anche se gli scrivo cose strane.
Io sinceremente pensavo al fatto di verificare anche l'esistenza della path, certo se si deve controllare una struttura di una path relativa la cosa cambia, ma veramente non capisco perchè mi restituisce sempre false.
----------------------------------------
AUTORE: 482
DATA :01/06/2012 - 07:40:41
----------------------------------------
ebbravo Nicola!
hai avuto la mia stessa idea e anche io ci son rimasto male quando mi dava sempre false anche se gli scrivevo cose tipo "%?/"
Detto questo..dai paracarro..vabbhè che sono scemo, pero' non fino a questo punto
La stringa è solo la parte finale del path. Il percorso è dato da una costante nascosta all'utente e proprio per questo, non passo da una string to path ma faccio un build path mettendo insieme il percorso e la stringa e poi devo verificare che sia valido...comunque ho testato anche questa soluzione portando il path finale su stringa e poi riportandolo su path ma lo string to path me lo converte paro paro senza darmi il not a path....
Anche la prima soluzione di Nicola non va bene perchè il percorso è un file che devo ancora creare, quindi non esiste e quindi la funzioen mi restituisce sempre errore 7 sia che il path sia valido che no...
pff... sembrava una cosa cosi' banale...
allego i tentativi fatti
----------------------------------------
AUTORE: 927
DATA :05/06/2012 - 09:26:17
----------------------------------------
"Not A Number/Path/Refnum?" serve solo a riconoscere "Not a Path" che è una specifica costante.
Mi sa che la soluzione più semplice è provare a creare il file (vuoto) e cancellarlo subito dopo...
----------------------------------------
AUTORE: 4221
DATA :05/06/2012 - 15:24:40
----------------------------------------
Ciao a tutti
una soluzione per conoscere se esiste un carattere invalido nella path o nel nome del file inserito dall'utente, potrebbe essere con la seguente strategia.
Dovrebbe supportare sia il caso di path da creare, sia gia' esistenti, ovviamente se non ci sono caratteri invalidi dovrebbe essere possibile creare il file...
E' un'idea ....
Ciao
G.
----------------------------------------
AUTORE: 3428
DATA :28/06/2012 - 11:09:25
----------------------------------------
Ciao ragazzi,
ho fatto una bruttissima scoperta..
il vi "check if file or folder exists?" che ho STRAusato nelle mie applicazioni quà e là restituisce un bel TRUE (cioè esiste) se si collega in ingresso un path vuoto!?!?!?
Nell'help è specificato che il path vuoto (per questa vi) fa riferimento alla lista dei driver sul pc, perciò esistente...
Perciò per verificare se il path è già esistente bisogna metterlo in or anche con l'uguaglianza con EMPTY PATH....
La national però dovrebbe modificare questa vi a mio avviso..
----------------------------------------
================================================================================
File Globali
================================================================================
AUTORE: 3428
DATA :01/06/2012 - 09:01:44
----------------------------------------
Salve a tutti,
vorrei sapere una curiosità.
sto usando diverse globali nel mio progetto:
booleane, com seriali, array, reference a code ecc.
Come conviene usarle in termini di prestazioni??
Mi spiego: è meglio avere 1 solo file.vi con all'interno più globali oppure più file, magari separando i tipi di dato per ogni file, oppure non cambia assolutamente nulla in termini di compilazione e performance???
Grazie
----------------------------------------
AUTORE: 3428
DATA :08/03/2013 - 14:02:37
----------------------------------------
Riesumo un post che avevo fatto tempo fa ma senza risposte perchè ora mi ritrovo a dover gestire diversi task in parallelo che hanno a che fare con diverse strumentazioni e ovviamente hanno altri obiettivi...
Ovviamente per una questione di pulizia mi conviene fare un vi globale per ogni task ma anche questa volta mi viene il dubbio!!!
A livello di processore, di sistema, di ram, e quindi a livello di velocità d'accesso alla risorsa globale conviene avere più file vi globali e di conseguenza ognuno di piccole dimensioni, con meno controlli all'interno o un solo file globale, per l'intero sw, magari un file anche di 500Kb, oppure se il file global.vi è di piccole dimensioni il sw ci mette meno tempo per rintracciare la risorsa che voglio all'interno del vi?
Lo so che la domanda può sembrare inutile, infatti è solo una curiosità... Programmo sempre usando più FGV possibili...
----------------------------------------
AUTORE: 822
DATA :09/03/2013 - 00:51:56
----------------------------------------
scusa, mi sono imbattuto nel tuo post e la curiosita' e' sorta a me.. cosa sono le fgv?
----------------------------------------
AUTORE: 3428
DATA :09/03/2013 - 07:29:21
----------------------------------------
FGV = Functional Global Variable
è una tecnica di programmazione che elimina i problemi che i file globali potrebbero causare, oltre che esssere molto utile e intuitivo a livello di leggibilità di codice.
C'è un post di pochi giorni fa dove aris ha postato un esempio, sul sito national trovi moltissimo
viewtopic.php?f=1&t=5770#wrap
----------------------------------------
AUTORE: 1078
DATA :10/03/2013 - 13:00:51
----------------------------------------
Ciao Renaso,
In termini di prestazioni direi che le variabili globali non sono il massimo, come le metti metti. Oltretutto non garantiscono il controllo d'accesso alla variabile. Sicuramente le FGV sono sicuramente un metodo migliore per garantire un controllo migliore all'accesso delle variabili ma perdono prestazione e funzionalità quando si usano in parallelo. Si ottengono risultati migliori invece utilizzando i DVR (Data Value Reference) e le SEQ (Single Element Queue) (che come prestazioni sono le più efficienti). Io normalmente mi uso delle SEQ in quanto possono essere richiamate per nome, creo delle librerie che permetto la gestione dell'accesso ai dati. Per chi vuole approfondire trovate maggiori informazioni sul sito della NI.
----------------------------------------
AUTORE: 301
DATA :09/04/2013 - 17:47:28
----------------------------------------
Ciao ragazzi!
Mi sono un pochino chiamato in causa......
Riky, hai mai fatto un test sulle differenze di performance dei tre tipi di design pattern?
Intendo, a parte le differenze di "utilizzo" tra i 3 che possono essere implementati, a parte la sicuramente miglior gestione della memoria dei DVR e delle SEQ rispetto ai Moduli.....
A livello di tempo di esecuzione, mi sembra che le FGV siano le più efficienti.....
E' veramente una curiosità, io ho fatto una provettina al volo ed ho notato differenze significative.....
Aris
----------------------------------------
AUTORE: 1078
DATA :10/04/2013 - 10:22:18
----------------------------------------
[quote="aris":7qi7f0wd]Ciao ragazzi!
Riky, hai mai fatto un test sulle differenze di performance dei tre tipi di design pattern?
Aris[/quote:7qi7f0wd]
Si, ho fatto un test del genere. I risultati del mio test sono discordanti dal tuo. In termini di tempo di esecuzione a me non si sono verificate grandi differenze tra l'utilizzo di un metodo rispetto a l'altro. Ora però bisogna vedere come hai eseguito tu il test e come l'ho fatto io.
Ti allego il mio test così puoi capire come ho eseguito il tutto.
Sicuramente però le SEQ hanno il difetto di prendere più tempo in fase di progetto ma sicuramente sono meglio gestibili nell'applicazione, soprattutto se devi usarle in tasks paralleli. Hai mai provato a usare le FVG in parallelo? Io si e mi hanno sempre causato grossi problemi proprio perchè non garantiscono un controllo di accesso all'informazione.
----------------------------------------
AUTORE: 3428
DATA :10/04/2013 - 10:35:16
----------------------------------------
Ricky, sto notando lo stesso malfunzionamento delle FGV richiamate in più task paralleli.
Ad esempio in un task acquisisco dalla scheda NI e butto in coda;
in un altro task scodo direttamente dentro alla FGV;
in altri task richiedo i dati alla FGV;
Non mi sembra un ottimo modo di utilizzare le fgv...
----------------------------------------
AUTORE: 301
DATA :10/04/2013 - 11:07:55
----------------------------------------
Ottimo Riki,
ovviamente ho notato delle differenze se vado ad eseguire il codice N volte (esasperando il tutto......).
Sicuramente è un fattore trascurabile sulla "singola" chiamata, e perde perso rispetto alla miglior gestione della memoria.
Cosa intendi con "non garantiscono un controllo di accesso all'informazione"?
Renaso......non ho ben capito il tuo problema......
Noti lo stesso problema sulle SEQ che ha descritto Riky per le FGV?
Aris
----------------------------------------
AUTORE: 3428
DATA :10/04/2013 - 11:20:35
----------------------------------------
no no..
dico solo che sto provando le FGV come da me descritto sopra e mi sembra che le performance non siano ottime, soprattutto se utilizzate in parallelo come detto...
ma non le ho confrontate con le SEQ (mai utilizzate in questo modo ma solo come code di dati)..
purtroppo non posso postare il codice ma quando avrò più info posterò la soluzione..
----------------------------------------
AUTORE: 1078
DATA :10/04/2013 - 11:28:12
----------------------------------------
[quote="aris":2kod5k5q]
Cosa intendi con "non garantiscono un controllo di accesso all'informazione"?
Renaso......non ho ben capito il tuo problema......
Aris[/quote:2kod5k5q]
Se ben progettate (Vedi esempio) le SEQ garantiscono il controllo di accesso simultaneo, infatti dovendo eseguire il "Dequeue" prima di accede all'informazione (in scrittura ovviamente) vige la regola che chi prima accede alla risorsa blocca gli altri accessi, è una funzionalità intrinseca delle code. Questo comportamento non è garantito nelle FVG, quando accedi in scritture simultanee, nella funzione non è garantito che non si creino "raice condition" e non sai esattamente quando e chi ha scritto cosa! (spero di essere stato chiaro! Scusa se non lo sono stato, ma non è facile da descivere a parole.)
[quote="aris":2kod5k5q]
Renaso......non ho ben capito il tuo problema......
Aris[/quote:2kod5k5q]
Non capisco nemmeno io... Cosa intendi esattamente?
----------------------------------------
AUTORE: 4
DATA :10/04/2013 - 21:05:07
----------------------------------------
[quote="Ricky":21et2ht9]
Se ben progettate (Vedi esempio) le SEQ garantiscono il controllo di accesso simultaneo, infatti dovendo eseguire il "Dequeue" prima di accede all'informazione (in scrittura ovviamente) vige la regola che chi prima accede alla risorsa blocca gli altri accessi, è una funzionalità intrinseca delle code. Questo comportamento non è garantito nelle FVG, quando accedi in scritture simultanee, nella funzione non è garantito che non si creino "raice condition" e non sai esattamente quando e chi ha scritto cosa! (spero di essere stato chiaro! Scusa se non lo sono stato, ma non è facile da descivere a parole.)
[/quote:21et2ht9]
In realtà non è così, le Functional Global essendo dei VI "normali" eseguono in modo esclusivo (una alla volta, è la regola dello scheduler di LabVIEW) quindi la race condition non possono accadere (come invece possono accadere con le variabili globali).
Il metodo delle SEQ l'avevo già visto in passato ma non l'ho mai usato, farò delle prove per vedere le performance.
In generale uso le FG non sollo per fare push e pull di dati ma per "lavorare" su questi dati (da cui il nome functional) scrivendo direttamente nel codice della FG le funzioni che mi servono su quei dati (filtra, ordina, elimina ecc) in questo modo le FG sono veramente molto utili.
In effetti in un'architettura dove ad esempio ha un produttore di dati che scrive su una FG e 1000 (ipotetici) VI client che leggono da quella FG i dati, l'uso delle FG sarebbe deleterio proprio per il fatto che LabVIEW ne mette in esecuzione una alla volta per cui i miei 1000 VI avrebbero parecchio da aspettare oltre al fatto che non si potrebbe sapere a priori quanto tempo e in ogni caso questo tempo non sarebbe costante da iterazione a iterazione
----------------------------------------
AUTORE: 301
DATA :11/04/2013 - 10:13:33
----------------------------------------
Finalmente qualcuno "dalla mia parte"
Scherzi a parte, Ale ha riassunto perefettamente il concetto.
L'esempio che ha postato Riky, contempla delle differenze sostanziali tra le FGV e le SEQ.
Per fare in modo che le 2 tipologie siano uguali (variando solamente il tipo di store in memoria), la SEQ read deve SOLO decodare il dato, mentre la SEQ write lo deve SOLO accodare.
In quel modo si possono implementare una sorta di FGV ma che "storano" il dato in una coda (non in uno shift register)!
Un'altro "difetto" dell'esempio di Riky è proprio quello di non avere controllo sulla sequenzialità delle operazioni sul dato.
Sempre riferendomi all'esempio postato, in caso di parallellismo, non ho la certezza che chi legge abbia sempre accesso (in maniera sequenziale) ad un dato "elaborato" da chi scrive.
Aris
----------------------------------------
AUTORE: 1078
DATA :12/04/2013 - 08:33:39
----------------------------------------
[quote="aris":3pmu5xc9][..]
Per fare in modo che le 2 tipologie siano uguali (variando solamente il tipo di store in memoria), la SEQ read deve SOLO decodare il dato, mentre la SEQ write lo deve SOLO accodare.
Aris[/quote:3pmu5xc9]
Ma si chiamamno proprio Single Element Queue (SEQ) proprio perchè hanno la particolarità di contenere [u:3pmu5xc9]sempre[/u:3pmu5xc9] un elemento. Facendo solo l'encode in scrittura e il solo decode, non avresti un storage del dato. Avresti il dato immediatamente dopo ad una scrittura...
[quote="aris":3pmu5xc9][..]
Un'altro "difetto" dell'esempio di Riky è proprio quello di non avere controllo sulla sequenzialità delle operazioni sul dato.
Sempre riferendomi all'esempio postato, in caso di parallellismo, non ho la certezza che chi legge abbia sempre accesso (in maniera sequenziale) ad un dato "elaborato" da chi scrive.
Aris[/quote:3pmu5xc9]
anche questa è una particolarità delle SEQ, infatti danno grossi vantaggi proprio se utilizzate in parallelo, in sequenza diventano solo un'altro tipo di FVG. Un'altro vantaggio rispetto alle FVG è che alle SEQ si può accedere per nome...
Vorrei poi chiarire che io non sono contro nessuno, e non sto demonizzando l'utilizzo delle FVG. Dico solo che in alcuni casi non sono la miglior soluzione, soprattutto se utilizzate in modo spinto in loop paralleli. Non trovo l'esempio pratico e purtroppo non riesco a ricreare la race condition di cui vorrei farvi evidenza nell'utilizzo delle FVG. Appena però riesco a trovare l'esempio nel sito NI vi posto il link.
Buon lavoro a tutti.
----------------------------------------
AUTORE: 301
DATA :12/04/2013 - 10:42:56
----------------------------------------
[quote:3ppz9f0x]Vorrei poi chiarire che io non sono contro nessuno, e non sto demonizzando l'utilizzo delle FVG.[/quote:3ppz9f0x]
Ma Riky!
Stavo scherzando!!!!!!
Siamo qui per discutere, no?!?
Ogni tipo di design ha i suoi pro ed i suoi contro, ed anche il modo in cui viene implementato può cambiare il risultato finale.
Volevo solamente dire che, nell'esempio che hai postato, credo sia difficile fare un vero e proprio confronto, nel senso che le due tipologie di design operano in modo decisamente diverso!
(mica prendertela, è?!?!
)
Aris
----------------------------------------
AUTORE: 1078
DATA :15/04/2013 - 10:58:01
----------------------------------------
[quote="aris":36vj4405]
(mica prendertela, è?!?!
)
Aris[/quote:36vj4405]
Ma va... non proccuparti, non sono tipo da offendersi facile!!!
Concordo con te che non è semplice testare le due soluzioni e, concordo con te nel dire che siamo qui per discutere....
Buon lavoro!
----------------------------------------
AUTORE: 1078
DATA :15/04/2013 - 12:56:50
----------------------------------------
Per chi volesse approfondire: sul sito della NI, ho trovato una discussione molto simile a quella in corso sulle SEQ.
Nella discussione sul forum NI, ci sono anche link a tutorial e alcuni esempi diversi dai miei. Per chi fosse interessato posto il link:
[url:3ucw78x9]http://forums.ni.com/t5/LabVIEW/Dr-Damien-s-Development-Single-Element-Queue-Reference-Objects/td-p/812977[/url:3ucw78x9]
Buon divertimento.....
----------------------------------------
AUTORE: 301
DATA :15/04/2013 - 13:08:33
----------------------------------------
Grazie Riky!
Unica precisazione, se vedi l'esempio della discussione postata, vedrai che le SEQ sono state gestite come SOLO dequeue e SOLO enqueue.....
L'esempio che hai postato tu, invece, può portare a race conditions!
Questo non per dire che sia sbagliato o giusto, ma quello che cercavo di dire nei post precedenti è che non ti dà un accesso univoco al dato!
Aris
----------------------------------------
AUTORE: 1078
DATA :15/04/2013 - 13:33:34
----------------------------------------
Si, ma se leggi la discussione si capisce che l'esempio è per eveidenziare le deadlock che possono succedere.....
----------------------------------------
AUTORE: 301
DATA :15/04/2013 - 13:45:22
----------------------------------------
Daccordissimo!
E così ritorniamo sempre al fatto che tutto dipende sempre da cosa si deve fare....
Mi sono permesso di fare una modifica al tuo esempio per verificare la presenza di reca condition.....
Aris
----------------------------------------
AUTORE: 1078
DATA :15/04/2013 - 15:01:32
----------------------------------------
Bhe!... il tuo test n on è proprio equo...!
Ho modificato i test e come puoi vedere adesso sono entrambe identici.... le race condition nel primo caso vengono sollevate da entrambe le parti....
----------------------------------------
AUTORE: 301
DATA :15/04/2013 - 15:08:17
----------------------------------------
Non riesco ad aprirlo con la 2011, ma "so esattamente cosa hai fatto....."
Il fatto è che non userei mai una FGV in quel modo!
Aris
----------------------------------------
AUTORE: 1078
DATA :15/04/2013 - 15:14:22
----------------------------------------
potrei risponderti la stessa cosa.... No?
Ti allego i file in versione 2011.
----------------------------------------
AUTORE: 301
DATA :15/04/2013 - 15:42:33
----------------------------------------
Asssssssssssssssolutamente!
----------------------------------------
AUTORE: 301
DATA :15/04/2013 - 15:47:27
----------------------------------------
Alla fine.......stiamo dicendo la stessa cosa!!!!!!!!
Mah, va bèh......unica nota, sarà il mio pc o non so cosa, ma i 2 cicli SEQ......vengono eseguiti molte meno volte!
Aris
----------------------------------------
AUTORE: 129
DATA :13/05/2013 - 16:12:36
----------------------------------------
Io solitamente uso le FGV per creare funzioni riutilizzabili impostandole quasi sempre come rientranti.
SEQ per memorizzare e passare dati.
A mio avviso non è una questione di performance ma di come si devono utilizzare.
----------------------------------------
================================================================================
usare labview per android per poi comandare arduino...
================================================================================
AUTORE: 3375
DATA :03/06/2012 - 22:21:33
----------------------------------------
Buona serata a tutti...
Volevo chiedere una cortesia...
Ho acquistato un arduino con scheda ethernet.... vorrei utilizzarlo come scheda di i/o , ma vorrei utilizzare come supervisione un tablet con android
Mi sapreste indicare come fare il software su windows e poi trasferirlo su sistema android??
In passato la NI avave un tools per trasferire a windows mobile...
grazie
----------------------------------------
AUTORE: 645
DATA :04/06/2012 - 17:36:35
----------------------------------------
Guarda http://forums.ni.com/t5/LabVIEW-Idea-Ex ... -p/1281680
e https://decibel.ni.com/content/docs/DOC-12801
----------------------------------------
================================================================================
pulsante indietro
================================================================================
AUTORE: 4222
DATA :05/06/2012 - 21:38:54
----------------------------------------
Ciao a tutti, ho bisogno di un aiutino.
Ho una flat structure e in ogni frame ho una o più subVI vorrei inserire in queste subVI un tasto "indietro" per tornare al frame precedente. è possibile? o devo cambiare completamente architettura?
----------------------------------------
AUTORE: 482
DATA :06/06/2012 - 07:17:20
----------------------------------------
La seconda che hai detto.
Devi usare una State machine, che altro non è che un case con alcune caratteristiche particolari.
Dai un occhiata qui:
http://labviewwiki.org/State_Machine
----------------------------------------
================================================================================
Conversione area pixel in mm
================================================================================
AUTORE: 4177
DATA :10/06/2012 - 16:04:41
----------------------------------------
Salve a tutti, ho un problema che credo sia banale ma di cui non riesco a trovarne la soluzione, usando particle analysis ho calcolato l'area di interesse di una parte dell'immagine ora però vorrei convertirla da pixel a mm e non so come fare.
Ho provato in questo modo:
AREAmm= [(1/risoluzione)^2]*(AREApixel)
AREA pixel= intendo il risultato che mi da particle analysis
ma non ho ottenuto un risultato valido, sapete dirmi dove sbaglio o se c'è un altro modo?grazie mille in anticipo e perdonate la mia ignoranza
----------------------------------------
AUTORE: 278
DATA :12/06/2012 - 10:51:12
----------------------------------------
Ciao,
innanzitutto devi sapere a che risoluzione è l'immagine presa in esame.
Conoscendo la risoluzione, espressa in DPI (punti per pollice), puoi calcolare qual'è la dimensiore reale di ogni pixel, poi non ti resta che moltiplicare questo valore per il numero di pixel che hai nell'immagine.
Esempio.
Immagine a 5080 DPI
ogni pixel misura 25.4/5080 = 0.005 mm (un pollice sono 25.4mm)
Ora se hai un'immagine da 1000x1000 pixel alla risoluzione di 5080 DPI puoi calcolare che quest'immagine misura 5x5mm.
----------------------------------------
AUTORE: 4177
DATA :12/06/2012 - 11:02:51
----------------------------------------
Ciao, intanto grazie per la risposta, quello che mi hai suggerito è quello che ho fatto in precedenza, ma dopo avere svolto i conti la dimensioni in mm non corrispondono con quelle reali, la risoluzione dell'immagine la vedo da photoshop, è li che sbaglio?devo usare qualche strumento di labview?grazie ancora
----------------------------------------
AUTORE: 482
DATA :12/06/2012 - 12:48:40
----------------------------------------
I DPI possono essere modificati via software e non rappresentano le dimensioni effettive dell'oggetto inquadrato.
I DPI sono una misura di stampa non di dimensionamento dell'oggetto inquadrato.
Per avere una dimensione reale, ipotizzando che la tua immagine non sia distorta dalla focale, devi inquadrare un oggetto campione, stabilirne la lunghezza in pixel e fare l'equivalenza tra i pixel e la misura realie di quell'oggetto.
Una volta che hai questa equivalenza, qualsiasi oggetto inquadrerai mantenendo la stessa distanza e angolazione dalla telecamera potrà essere misurato col parametro di conversione ottenuto.
----------------------------------------
AUTORE: 278
DATA :12/06/2012 - 13:01:45
----------------------------------------
La risoluzione che ti indica photoshop è solitamente corretta.
Secondo me sbagli ad utilizzare la funzione particle analisys. Al suo posto prova ad usare la funzione IMAQ Get File Info, l'uscita del cluster "calibration" ti riporta le informazioni riguardanti la dimensione reale del pixel, indirettamente ti indica anche i DPI. Occhio che di default la misura è impostata in metri, quindi se usi risoluzioni elevate ti ritroverai con valori molto piccoli, di conseguenza adegua i digit di precisione degli indicatori X step me Y step contenuti nel cluster.
----------------------------------------
AUTORE: 482
DATA :12/06/2012 - 15:49:38
----------------------------------------
A parità di DPI se inquadri una moneta con lo zoom e senza, misurandola nei due casi otterrai misure differenti.
----------------------------------------
AUTORE: 4177
DATA :20/06/2012 - 11:15:43
----------------------------------------
Grazie mille a tutti per la vostra disponibilità, scusate sei vi ringrazio solo ora ma sono stato impegnato.
Visto che ci sono volevo porvi un altra domanda di 'sintassi', sto utilizzando un formula node per eseguire un ciclo for in cui la variabile deve essere incrementata non di un valore alla volta ma a step di più 'grandi', quindi per esempio andare da zero a cento a passi di 20 e prendere 0, 20, 40...etc
for(i=0; i>100, )
ma non so come dare l'istruzione di incremento, sapete aiutarmi?grazie di nuovo a tutti.
----------------------------------------
================================================================================
Recuperare info di calibrazione immagine/camera (VISION)
================================================================================
AUTORE: 384
DATA :16/06/2012 - 15:25:31
----------------------------------------
Ciao ragazzi.
É un pò che non mi si vede da queste parti, ma chi non muore, prima o poi ricompare!
Il mio problema sembra stupido pure a me, ma non trovo la soluzione.
Ho acquisito delle immagini con una telecamera. Poi ho acquisito un'altra con la calibration pattern ed ho creato una calibration template, che "applico" regolarmente alle altre onde ottenere misure "reali" dalle elaborazioni.
Fin qui, no problem.
Quindi, vorrei ricomporre quelle immagini iniziali (una volta corrette dalla calibrazione) in una più grossa (ogni immagine è parte di un singolo oggetto). A questa (più grossa) non posso "applicare" la stessa "calibration template" dato che ha dimensioni diverse, ma, per il mio obiettivo, basterebbe applicargli la stessa calibrazione in termini di "mm/pixel" usando il vi 'IMAQ SetSimpleCalibration2'. L'informazione "mm/pixel" c'è già: devo prenderla dalla calibrazione che ho già effettuato.
Come ca**lo si fa?
Ho già spulciato tutti i vi del Vision, ma non trovo nessuno mi ritorni quei valori.
Manca qualcosa nella mia installazione (oppure sono io che sono cieco come una talpa)?
Ringrazio fin da subito ogni aiuto.
G.
PS - É chiaro che io posso aprire l'immagine, con i tools del 'image display' andare a determinare i pixel e poi fare i conti manualmente, ma tutto questo è già stato fatto dal vi di calibrazione, e, quindi, rifarlo manualmente non è uguale e non è ugualmente preciso.
----------------------------------------
AUTORE: 482
DATA :18/06/2012 - 07:12:29
----------------------------------------
Quando applichi la correzione, le info di calibrazione restano insite nell'immagine.Se manipoli l'immagine post calibrazione, tutte le info di calibrazione spariscono.
DOvresti crearti una tabella che prenda le calibration info da ogni singola immagine e poi in base a quello manualmente fare la somma dei vari valori.
----------------------------------------
AUTORE: 384
DATA :18/06/2012 - 14:32:48
----------------------------------------
A forza di sbatterci la testa, ad un certo punto ho avuto l'idea iluminata: basta fare una conversione da "pixel" a "real world" per qualunque copia di punti di coordinate consecutive (io ho usato (0,0) e (1,1)) farne la differenza e - voilà - abbiamo il numero di "real world units"/pixel.
Così semplice ed ovvio che, a forza di ostinarmi a cercare tra i VI e nelle strutture dati, ci ho messo un pò ad arrivarci.
(è proprio vero che bisogna uscire dal problema per trovare la soluzione!!!)
Grazie comunque, geppo, della risposta.
----------------------------------------
================================================================================
Controllo retroazione funzione sinusoidale temperatura
================================================================================
AUTORE: 4187
DATA :19/06/2012 - 12:28:40
----------------------------------------
Salve a tutti! Come progetto dell'Università mi è stato chiesto di controllare con Labview un sistema formato da:
cella Peltier con refrigeratore sempre attivato per testare provini metallici e non metallici, insieme ad un riscaldatore elettrico. Una rilevatore di temperatura misura la T del provino e tramite un circuito in retroazione si controlla il riscaldatore elettrico per ottenere un andamento della temperatura il più simile possibile ad un target definito dal tipo di provino stesso (ampiezza, periodo (frequenza) )
In base a questo (i dati mi saranno forniti lunedì prossimo) è possibile/fattibile l'integrazione con Labview?
Ci sono già modelli/basi per questa tipologia di controllo? Avete suggerimenti o consigli in merito?
Grazie mille
----------------------------------------
AUTORE: 1078
DATA :20/06/2012 - 13:18:01
----------------------------------------
[quote="ufo900"
In base a questo (i dati mi saranno forniti lunedì prossimo) è possibile/fattibile l'integrazione con Labview?
Ci sono già modelli/basi per questa tipologia di controllo? Avete suggerimenti o consigli in merito?
[/quote]
Labview è un linguaggio di programmazione completo che a tutti gli effetti ti permette di fare qualunque cosa sia possibile fare con gli altri ambienti, quindi direi che l'intgrazione in Labview è sicuramente possibile. Ora sta a te capire come integrare (e cosa integrare).
Per quanto riguarda la retroazione di temperatura, normalmente nei casi di gestione delle temperature si usano dei sistemi PID. Se scegli un PID software, a seconda della versione LV che stai usando hai già a disposizione delle funzioni PID; altrimenti dovrai costruirti tu la logica PID.
Trovi diversi tutorial sulla teoria PID sia sul sito della NI ([url:38c39coy]http://www.ni.com[/url:38c39coy]) che inseredo la parola PID su google.
Se dovessi poi trovarti in difficoltà, chiedi, qualcuno ti aiuterà di certo!
Buon lavoro.
----------------------------------------
================================================================================
impostazioni plot legend
================================================================================
AUTORE: 3962
DATA :20/06/2012 - 15:03:11
----------------------------------------
Ciao a tutti
ho dei problemi con la plot legend relativa al waveform chart, praticamente mi mette i nomi dei plot in ordine alfabetico e non come li ho creati io, poi se sono troppo lunghi me li tronca e non mi fa vedere tutto il nome.
C'è un modo per sistemare le 2 cose?
per quanto riguarda la lunghezza ho provato a cliccare su "orizontal scroll bar" ma non me lo fa selezionare, io vorrei tenere una larghezza fissa della plot legend ed eventualmente muovermi con la barra orizzontale oppure che mi accorci il nome "canale destro" nel segunte modo "canal..estro" facendo vedere inizio e fine nello spazio disponibile.
Grazie per l'aiuto!
----------------------------------------
AUTORE: 482
DATA :21/06/2012 - 07:17:36
----------------------------------------
Per fare quello che vuoi fare devi lavorare un sacco con i property node.
In dettaglio dovrai fare un for dove partendo dalla proprietà active plot che assegnerai da 0 a n, andrai poi a settare le proprietà del rispettivo active plot.
----------------------------------------
AUTORE: 3962
DATA :21/06/2012 - 09:20:29
----------------------------------------
Si ero andato a cercare nel property node se ci fosse qualcosa per impostare queste cose ma non ho trovato nulla.
Le proprietà che mi escono per la plot legend sono:
Autosize, se uso questa e ho un nome troppo lungo mi sballa tutto l'aspetto grafico del front panel;
Scrollbar visible, agisce solo su quella verticale, non ne vuole sapere di attivarmi anche l'orizzontale;
Size mi fa ipostare altezza e larghezza in pixel, ho provato a settare dei valori ma non cambiava nulla.. ;
per disabilitare l'ordine alfabetico non ho trovato nulla.
Tu a che proprietà ti riferivi di preciso?
Grazie!
----------------------------------------
AUTORE: 482
DATA :21/06/2012 - 10:15:32
----------------------------------------
Non penso proprio esista un ordine alfabetico.
Il problema è che il nome ai plot devi darlo programmaticamente usando le proprietà del plot.
Quindi in sequenza:
Active plot :seleziona il plot interesato
Plot->Plot Name: imposta il nome del plot
Tutto questo dopo aver settato l'autosize a false. E quindi il nome del plot lo dovrai dare tu abbreviato in base al numero di caratteri che vuoi visualizzare.
Un alternativa è che lasci l'autosize, dopo aver scritto il nome leggi la lunghezza della legend e in base a quella la piazzi in modo da non sballarti il layout.
L'horizontal scollbar della legend non esiste, ed effettivamente avrebbe poco senso...
----------------------------------------
AUTORE: 3962
DATA :21/06/2012 - 10:48:02
----------------------------------------
esatto ho fatto cosi, praticamente prima di far partire il programma viene preparato un elenco che corrispondo a vari elementi di acquisizione che poi vengono plottati nel grafico.
Per creare la plot legend ho fatto il plot name che va a prendere il singolo nome. Però ho notato che se creo l'elengo non in ordine alfabetico quando lancio il programma lui li ordina cosi. L'alternativa spartana sarebbe di anteporre un numero tipo "1.sensore a ; 2.sensore b" ecc ecc però a livello grafico non è il massimo.
Per la lunghezza non c'è un dimensione precisa varia molto da prova a prova, l'alternativa sarebbe porre la legend sotto al grafico che deve occupare quasi tutto lo schermo in larghezza ed evnetualemtne scorrerla con la barra verticale.
----------------------------------------
AUTORE: 3962
DATA :21/06/2012 - 10:50:28
----------------------------------------
ah l'elengo viene fatto in un file txt
del tipo
canale 1
canale 2
canale 3
ecc
----------------------------------------
AUTORE: 482
DATA :21/06/2012 - 12:28:40
----------------------------------------
a me questo problema dell'ordine alfabetico non si presenta. puoi postare un estratto del tuo vi?
----------------------------------------
AUTORE: 1078
DATA :25/06/2012 - 13:50:54
----------------------------------------
Anche a me non torna!!!
A questo punto direi che un VI darebbe proprio una mano!
----------------------------------------
AUTORE: 43
DATA :27/06/2012 - 09:01:02
----------------------------------------
[quote="luca525":1qud06yv]Si ero andato a cercare nel property node se ci fosse qualcosa per impostare queste cose ma non ho trovato nulla.
Le proprietà che mi escono per la plot legend sono:
Autosize, se uso questa e ho un nome troppo lungo mi sballa tutto l'aspetto grafico del front panel;
Scrollbar visible, agisce solo su quella verticale, non ne vuole sapere di attivarmi anche l'orizzontale;
Size mi fa ipostare altezza e larghezza in pixel, ho provato a settare dei valori ma non cambiava nulla.. ;
Grazie![/quote:1qud06yv]
Ma scusa... puoi almeno dire che versione di LabVIEW usi?
lasciamo stare il cambiamento della plot legend in modo programmatico...
La plot legend può essere visibile o meno, può essere abilitata o meno la funzionalità di autosize, e può essere variato il n. di plot visibili.
Nientaltro può essere fatto per la "plot legend"
[attachment=0:1qud06yv]PlotLegendProperties.JPG[/attachment:1qud06yv]
Non ci sono ordinamenti automatici dei nomi dei plot.
Puoi postare uno screenshot?
bye
----------------------------------------
================================================================================
Re: Quesito internet explorer
================================================================================
AUTORE: 1078
DATA :25/06/2012 - 13:34:28
----------------------------------------
Ciao Ildebrando,
Scusa ma questo cosa ha a che fare con Labview?
Ci sono forum dedicati per la costruzione di pagine HTML, e per l'utilizzo dei plug-in jquery... io posterei il tuo quesito lì!
----------------------------------------
================================================================================
una dritta
================================================================================
AUTORE: 4233
DATA :22/06/2012 - 15:48:58
----------------------------------------
ciao a tutti è da poco tempo che utilizzo labview, mi chiedevo se qualcuno mi poteva dare una dritta su come posso avviare un vi senza farlo partire premendo la freccettina di start presente sulla barra di controllo bensì premendo un pulsante nominato start creato nello stesso vi di presentazione sullo schermo... grazie del tempo dedicatomi
----------------------------------------
AUTORE: 482
DATA :25/06/2012 - 14:17:51
----------------------------------------
Pe rfare un autostart del VI puoi fare in due modi:
1)Crei un eseguibile del tuo VI
2) Tasto destro sull'icona in alto a destra del vi -> Vi properties->Execution->check su run when opened.
dopodi chè nel tuo programma puoi ad esempio creare una sequence dove nella prima sequenza puoi mettere una event structure che prende il Value Change del tasto start e in quella dopo metti tutto il resto del tuo programma
----------------------------------------
================================================================================
arduino
================================================================================
AUTORE: 3375
DATA :25/06/2012 - 21:36:14
----------------------------------------
esiste la possibilita' di programmare l'Arduino usando la Visa direttamente da Labview??
senza usare il software di Arduino stesso?
grazie
----------------------------------------
AUTORE: 482
DATA :26/06/2012 - 07:16:51
----------------------------------------
Se per programmare, intendi creare un firmware in labview e scaricarlo sulla memoria di arduino per poterlo usare stand alone, la risposta è no.
Se invece intendi fare un programma in labview che si interfacci con arduino in modo da usarlo per acquisire ingressi e uscite tramite un cavo di collegamento allora la risposta è si. Dai un occhiata qui per un po' di istruzioni in merito:
http://vishots.com/getting-started-with ... r-arduino/
----------------------------------------
AUTORE: 3375
DATA :26/06/2012 - 07:44:00
----------------------------------------
Buongiorno Gepponline
si quello che cercavo era un qualcosa che scrive nel firmware (tramite labview) e scaricarlo sulla memoria di arduino per poterlo usare stand alone (come si fa con Compat rio) questo per non usare 2 software diversi tra loro...
grazie lo stesso
----------------------------------------
AUTORE: 301
DATA :10/10/2012 - 07:25:56
----------------------------------------
In realtà, e l'ho solo letto, pare esserci un progetto nuovo che ricompila codice Labview per Arduino (vedi il link sotto)
[url:2sus0dgl]http://www.3d-svs.com/[/url:2sus0dgl]
Aris
----------------------------------------
================================================================================
Gestione FP multipli
================================================================================
AUTORE: 660
DATA :29/06/2012 - 13:38:39
----------------------------------------
Buongiorno a tutti,
scusate se la domanda è banale, ma sono particolarmente fuso e non riesco a vederne una soluzione semplice e "pulita"
Ho un progettino che si avvia da un VI main e poi alla pressione di un "radio button" mi apre dei subVI...
Adesso volevo ottimizzare l'aspetto grafico, per cui alla pressione del "pulsante2" non si vedesse il passaggio sul main prima dell'apertura del relativo subVI... però la cosa si stà facendo più ardua del previsto...
Avete suggerimenti o idee?
Grazie e buon fine settimana
Max
----------------------------------------
AUTORE: 482
DATA :02/07/2012 - 07:25:05
----------------------------------------
Se ho capito bene il "pulsante2" non è sul main ma su un nuovo vi.
In questo caso basta che il tuo subvi, anzichè farlo aprire dal main, lo metti nel diagramma di questo nuovo VI.
----------------------------------------
AUTORE: 660
DATA :02/07/2012 - 20:15:04
----------------------------------------
ti ringrazio per la risposta... ma in realtà il "radio button" che gestisce l'apertura dei SubVI è presente su tutti i file main incluso e in base al suo valore, da uno qualunque di essi, si possono aprire tutti gli altri (ad esclusine del main che rimane sempre aperto dietro...
Il problema è che al momento non ho ancora trovato un metodo "efficiente" per fare questo passaggio senza che sia evidente il passaggio attraverso il main...
purtroppo sarò fuori ufficio per un altro paio di giorni e non riesco a postarvi un esempio...
A presto
Max
----------------------------------------
AUTORE: 482
DATA :03/07/2012 - 08:36:06
----------------------------------------
Infatti quello che non è chiaro è perchè ci sia questo passaggio dal main....
----------------------------------------
AUTORE: 660
DATA :05/07/2012 - 13:26:32
----------------------------------------
buongiorno,
ho creato un piccolo esempio in cui si vede cosa intendevo dire... purtroppo non essendoci codice è molto più rapido, ma passando dal pulsante 3 al 2 o viceversa l'effetto si vede...
Nel progetto definitivo i pulsanti attivi dovrebbero essere 6 o 8.
Max
[attachment=0:2yrkzkxc]Prova.zip[/attachment:2yrkzkxc]
----------------------------------------
AUTORE: 482
DATA :05/07/2012 - 15:02:55
----------------------------------------
Ho dato un occhiata al tuo vi...
Premesso che non mi piace come struttura...l'unica soluzione che mi viene in mente al momento per ovviare al problema che dici è quella di aprire dinamicamente il VI (chiamato) quindi senza attendere la fine dell'esecuzione e solo dopo chiudere il vi chiamante
----------------------------------------
AUTORE: 660
DATA :05/07/2012 - 15:10:19
----------------------------------------
grazie!
Stavo pensando anch'io ad una soluzione del genere anche se mi comlica un po' le cose per la gestione dell'eseguibile...
Anche a me non entusiasma come struttura, tu cosa suggeriresti?
Max
----------------------------------------
AUTORE: 482
DATA :05/07/2012 - 15:37:35
----------------------------------------
Dipende un po' dalla tua applicazione com'e' fatta...tipo...:
e' proprio necessario che in tutti i subvi ci sia la possibilità di andare in un altro?
oppure il Vi principale deve per forza girare continuamente?
----------------------------------------
AUTORE: 482
DATA :05/07/2012 - 15:46:30
----------------------------------------
potresti anche valutare di usare dei subpanel...
----------------------------------------
AUTORE: 660
DATA :06/07/2012 - 07:38:24
----------------------------------------
ciao,
purtroppo è necessario che dai subVI si possa passare da uno all'altro ed il main lo lasciavo sempre aperto perchè è sostanzialmente il VI più utilizzato, mentre gli altri lo sono solo sporadicamente, questo anche il motivo per cui non avevo scelto di utilizzare i subpanel...
Oggi comunque provo ad implementare la "chiamata" dinamica dei VI usando la proprietà di "wait until done" per attivarne la visualizzazione, così dovrei ottenere un'apertura rapida del SubVI e la chiusura del chiamante solo dopo che l'altro pannello si è aperto.
Max
----------------------------------------
AUTORE: 43
DATA :08/07/2012 - 17:55:35
----------------------------------------
[quote="machyaer":3wl127bb]ciao,
purtroppo è necessario che dai subVI si possa passare da uno all'altro ed il main lo lasciavo sempre aperto perchè è sostanzialmente il VI più utilizzato, mentre gli altri lo sono solo sporadicamente, questo anche il motivo per cui non avevo scelto di utilizzare i subpanel...
Oggi comunque provo ad implementare la "chiamata" dinamica dei VI usando la proprietà di "wait until done" per attivarne la visualizzazione, così dovrei ottenere un'apertura rapida del SubVI e la chiusura del chiamante solo dopo che l'altro pannello si è aperto.
Max[/quote:3wl127bb]
OK
questa è la mia soluzione
[attachment=0:3wl127bb]FP_MiaProva.zip[/attachment:3wl127bb]
il problema è risolto, grazie ai seguenti accorgimenti:
i subVI non devono essere visibili quando vengono chiamati.
beh! Per prima cosa vorrei sapere come fai nel tuo esempio a rendere visibile i SubVI chiamati dato che non ne è abilitata la visualizzazione al momento della chiamata, Infatti da un VI nuovo, inserendo la sola chiamata di x es. SubVI_2.vi , il FP di SubVI_2.vi non viene reso visibile quando il nuovo VI viene mandato in esecuzione!!!! Mistero...
Il concetto base è che , quando si lancia un SubVI a causa dalla selezione da radio button, il VI viene chiamato in modo asincrono con una "call &forget" senza cioè attendere il termine della sua esecuzione, ma si attende, però che il suo FP sia reso Visibile per generare una notifica al chiamante: a questo punto il FP del chiamante viene reso invisibile ed il giuoco è fatto.
Si frutta il fatto che il FP dei SubVI non vengano resi visibili al momento della chiamata, per fare una chiamata a tutti i possibili subVI nel main:
Avendo messo come parametro di ingresso dei SubVI proprio il RadioButton, considero un valore assurdo per il radio button (cioè "RadioButton 1" che equivale al main) per farmi restituire da ciascun SubVI. il proprio nome.
il VI incaricato di lanciare i SubVI (_CallSubVI) verrà quindi inizializzato con un array di stringhe contenente i nomi dei SubVI.
La chiamata a tutti i SubVI nel Main ha un triplice scopo:
- permette di evitare di specificare i Nomi dei SubVI dentro il codice: i SubVI possono avere qualunque nome che verrà letto dal VI stesso per la fase di init.
- la apertura dei VI verrà fatta solo usando il VIName e non il Path perchè, grazie alla chiamata di init nel Main, i subVI sono precaricati in memoria e non necessitano di essere caricati dinamicamente.
- nella creazione dell'eseguibile non è necessario, per quanto detto sopra specificare i SubVI come VI "dinamici" perchè sono chiamati staticamente dentro il codice, 1 sola volta, nel main.
Lo ShowFP.vi, che sincronizza la visualizzazione del SubVI con la chiusura del FP del chiamante, ha inoltre una seconda funzionalità:
se si devono aggiustare alcuni dettagli grafici nel FP (mettere delle scritte o cambiare il colore di bottoni, ecc) lo si si può fare prima di renderlo visibile, così, ciò che apparirà potrà essere perfetto fin dalla prima visualizzazione.
Se si vuole poi, lanciare "al volo" un SubVI per esigenze di debug evitando di lanciare il Main.vi è possibile farlo. La scelta da radiobutton ne comportarà la terminazione
Nel caso il passaggio da un pannello all'altro sia particolarmente lento (1 sec. o più) allora sarebbe meglio rendere visibile il VI _CallSubVI.VI in modalità "Modal" con una scritta fissa tipo "Loading..." per impedire all'operatore di interagire con il pannello sottostante.
Ultima cosa:
trovo inaccettabile l'uso di un loop temporizzato contenente una "Event Structure", come non accetto nella stessa Event structure ci sia il case Timeout senza che venga utilizzato per uno scopo pertinente.
Nel mio esempio, per i casi radio button 5 e 6, se selezionati da dentro un SubVI, riportano al main, se selezionati nel main portano.... ad un "impallamento".
a te scegliere come ovviare la problema.
bye
----------------------------------------
AUTORE: 660
DATA :09/07/2012 - 14:08:36
----------------------------------------
ti ringrazio molto per i suggerimenti e le critiche...
adesso mi guardo bene i tuoi VI...
Max
----------------------------------------
AUTORE: 660
DATA :11/07/2012 - 12:44:08
----------------------------------------
Ciao Paracarro,
mi sono guardato la tua soluzione e la implementerò nel progetto...
un'unica domanda: perchè nel "_CallSubVI" nella sezioni init hai messo i due blocchi "Release Notifier"? Senza di quelli il tutto funziona correttamente, se invece li lascio il sistema mi va in errore "Error 1 occurred at Release Notifier in _CallSubVI.vi"
Grazie
Max
----------------------------------------
================================================================================
aiuto! errore strano!
================================================================================
AUTORE: 4237
DATA :30/06/2012 - 11:21:46
----------------------------------------
ciao a tutti mi chiamo nicola.
Ho da poco iniziato a usare questo splendido programma e quindi sono ancora all'abc...il mio lavoro mi porta a usare il labview per registrazioni di tempratura e corrente, quindi cose abbastanza basilari..
beh, arriviamo al problema, praticamente quando faccio partire il VI dopo un tot di tempo, mi esce un errore di sistema che dice: not enough memory to complete this operation.
dite che sia la ram? spero che qualcuno di piu esperto riesca ad aiutarmi perche io non ne vado fuori..grazie mile a tutti in anticipo!
ciaooo!
Nicola.
----------------------------------------
AUTORE: 645
DATA :01/07/2012 - 17:45:31
----------------------------------------
Ciao!! Un primo consiglio che posso darti è controllare di aver temporizzato correttamente il VI: hai messo un blocco di ritardo tra una ripetizione e l'altra delle acquisizioni?
Altrimenti il VI occupa tutta la RAM disponibile.
----------------------------------------
AUTORE: 482
DATA :02/07/2012 - 07:23:04
----------------------------------------
Non credo sia un problema di ritardi senno' utilizzerebbe tutto il processore, non la RAM.
Piuttosto penso ci sia un utilizzo sbagliato di qualche array che va a riempire la memoria.
Se puoi posta un estratto del tuo vi.
----------------------------------------
================================================================================
file corrotto delle icone?
================================================================================
AUTORE: 3428
DATA :02/07/2012 - 09:25:51
----------------------------------------
Ciao a tutti, da qualche giorno mi sono accorto che qando voglio creare o modificare un 'icona di una vi non mi si apre più il solito edit delle icone ma probabilmente uno di un labview vecchio.
Utilizzo il LV 2010 e non ho mai installato altre versioni, ne plugin di alcun genere...
Come faccio a tornare all'icon editor di LV 2010?
Grzie
----------------------------------------
AUTORE: 3428
DATA :02/07/2012 - 09:27:14
----------------------------------------
mi ero scordato lo scrennshot
[attachment=0:1djthwpc]icon editor.JPG[/attachment:1djthwpc]
----------------------------------------
AUTORE: 301
DATA :10/10/2012 - 07:20:35
----------------------------------------
L'unica cosa che mi viene in mente, è di controllare il file ini di LV.
Nel mio c'è la stringa sotto:
IconEditor.Tool=00000009
Aris
----------------------------------------
AUTORE: 3428
DATA :10/10/2012 - 11:21:20
----------------------------------------
Grazie aris,
avevo risolto reinstallando LV, purtroppo non ne ero venuto a capo...
Ora tutto ok..
----------------------------------------
AUTORE: 301
DATA :10/10/2012 - 11:22:53
----------------------------------------
He he.....causa terremoto, sono arrivato un po tardi......sorry
Aris
----------------------------------------
AUTORE: 3428
DATA :10/10/2012 - 16:29:07
----------------------------------------
al cospetto questi non sono affatto problemi...
Spero che le cose vadano un pò meglio dopo 5 mesi
----------------------------------------
AUTORE: 301
DATA :11/10/2012 - 06:48:42
----------------------------------------
A dire il vero, è cambiato molto poco....
La gente si è rimboccata le maniche, ma si è dovuta arrangiare, non è ancora arrivato un centesimo dalle istituzioni e i piccoli imprenditori sono in ginocchio.
Ormai i media non ne parlano più, ma c'è ancora tantissima gente che dorme nelle tende, ed i pochi fortunati che hanno trovato appartamenti in affitto si sono mossi da soli.....
Comunque, non molliamo......
Buona giornata
Aris
----------------------------------------
================================================================================
labview 7.1
================================================================================
AUTORE: 4241
DATA :09/07/2012 - 09:06:11
----------------------------------------
uso labview 7.1 da poco tempo . qualcuno potrebbe aiutarmi a risolvere semplici problemi?
----------------------------------------
AUTORE: 4241
DATA :09/07/2012 - 09:37:29
----------------------------------------
ad esempio: fare un loop da 0 a 225 e riempire un array con le lettere corrispondenti ai codici ASCII relativi. visualizzare il codice ASCII e la lettera corrispondente.
----------------------------------------
AUTORE: 660
DATA :09/07/2012 - 16:41:43
----------------------------------------
non ho più LV7.1 da un po' di anni... per cui ti allego un'immagine del Block Diagram
----------------------------------------
================================================================================
FieldPoint e DAQ
================================================================================
AUTORE: 4217
DATA :09/07/2012 - 16:10:21
----------------------------------------
Salve a tutti,
mi chiamo Gianni.
Possiedo due sistemi di acquisizione, un FieldPoint e una scheda DAQmx 6133. Devo creare un VI in cui si devono acquisire dati da entrambi i sistemi di acquisizione contemporaneamente. E' possibile inserire tutto all'interno di un singolo ciclo WHILE oppure si devono creare due cicli while, uno per il fieldpoint e uno per la DAQmx? Possono stare due cicli while all'interno dello stesso VI? Si possono passare i dati da un ciclo while all'altro senza problemi?
Poi non mi è chiaro cosa sono i TASK e i CHANNEL che si creano all'intenro del MAX, potreste spiegarmelo o quantomeno indirizzarmi verso una guida che spieghi cosa siano?
Grazie in anticipo a tutti quelli che risponderanno.
Saluti
----------------------------------------
AUTORE: 482
DATA :10/07/2012 - 07:41:48
----------------------------------------
Tutto quello che hai detto si puo' fare.
Si possono acquisire in un unico ciclo while, in uno stesso vi si possono mettere N cicli while, da un ciclo while all'altro si possono passare dati in diverse maniere tra cui le variabili globali ad esempio ma NON USANDOI FILI.
Per quanto riguard ai task e i channel,la differenz aè che i channel sono i canali fisici delle schede, per cui ad esempio "Dev1/ai0".
Un task invece è un nome fittizio che tu dai a un tipo di acquisizione già tipizzato, ad esempio piu' canali contemporaneamente con un unico nome.
Ad esempio ipotizzando di acquisire 3 analog input, tu puoi collegare all'ingresso channels "Dev1/ai0:2"
Oppure configurare il task nel MAX chiamandolo VAlori analogici e poi richiamarlo semplicemente inserendo all'ingresso TASK il nome "valori analogici".
----------------------------------------
AUTORE: 4217
DATA :12/07/2012 - 23:31:05
----------------------------------------
Innanzitutto grazie infinite per la risposta chiarissima
.
Vorrei porti un'altra domanda: dato che il fieldpoint mi deve acquisire dati che variano poco nel tempo e, viceversa la 6133 deve acquisirmi dati ad elevata frequenza, cosa mi consigli?...mi consigli di fare due cicli while o di mettere tutto nello stesso ciclo while?
Grazie infinite!!!
----------------------------------------
AUTORE: 482
DATA :13/07/2012 - 07:21:01
----------------------------------------
faccio un ipotesi:
Il fieldpoint acquisisce delle temperature
la 6133 acquisisce una forma d'onda.
Se con la forma d'onda devi limitarti ad acquisirla senza generare particolari alalrmi o situazion icritiche istantanee, potresti fare un unico ciclo while temporizzato a 2 secondi in cui il fieldpoint ti restituisce il singolo dato, mentre la 6133 acquisisce 2 secondi di forma d'onda e poi ti restituisce tutti i punti acquisiti in quei due secondi.
Guarda l'esempio "Cont Acq&Graph Voltage-Int Clk.vi" che trovi in labview per l'acquisizione della forma d'onda.
----------------------------------------
AUTORE: 1078
DATA :17/07/2012 - 07:19:12
----------------------------------------
[quote="Jvb":2hwo94yf][..] dato che il fieldpoint mi deve acquisire dati che variano poco nel tempo e, viceversa la 6133 deve acquisirmi dati ad elevata frequenza, cosa mi consigli?...mi consigli di fare due cicli while o di mettere tutto nello stesso ciclo while?[/quote:2hwo94yf]
Ciao Jvb,
Al contrario di quello che ti ha suggerito @Geppo (che è comunque una buona strada da seguire) io sceglierei di gestire le due acquisizioni in due cicli differenti sincronizzati. Questo mi darebbe più flessibilità nella gestione dei due campionamenti e dei due HW. Se utilizzi un sitema RT ti consiglio di utilizzare i timed loop per la sincronizzazione dei due tasks. La visualizzazione dei dati acquisiti e tutti i comandi dell'interfaccia utente a gestirei con sistema Master/Slave mentre il log dei dati e la sincronizzazione dei tasks di acquisizione con un'archittetura producer/consumer.
Per l'archittettura producer consumer qui trovi un'esempio: [url:2hwo94yf]https://decibel.ni.com/content/docs/DOC-2431[/url:2hwo94yf]
Comunque esistono diverse tecniche per implementare un buon software di acquisizione e gestione dei dati. Ti consiglio prima di prendere decisioni afrettate, di documentarti bene sulle varie tecniche a tua disposizione e poi implementare l'architettura che secondo te più si addice al tuo sistema. Progettare bene un software da subito ti aiuterà nella sua manutenzione, nella sua possibile espansione e nella gestione generare di tutto il suo ciclo di vita.
Buon lavoro.
----------------------------------------
AUTORE: 4217
DATA :27/07/2012 - 08:30:15
----------------------------------------
Grazie mille ad entrambi!
Seguirò entrambe le strade e vedrò quali saranno i risultati.
Grazie.
Gianni
----------------------------------------
================================================================================
labview and corba
================================================================================
AUTORE: 3375
DATA :10/07/2012 - 09:47:16
----------------------------------------
buon giorno
Vorrei far comunicare il mio labview con corba server qualcuno mi puo' indicare come fare???
grazie
----------------------------------------
AUTORE: 1078
DATA :17/07/2012 - 07:30:00
----------------------------------------
[quote="joblele":2tjz9yht]
Vorrei far comunicare il mio labview con corba server qualcuno mi puo' indicare come fare???
[/quote:2tjz9yht]
Ciao @joblele,
Cosa ci dovresti fare esattamente?
----------------------------------------
AUTORE: 3375
DATA :19/07/2012 - 23:20:13
----------------------------------------
ciao e scusa se rispondo solo ora...
in breve ho cambiato lavoro da poco... in questa ditta usano corba per comunicare con una libreria la quale comunica con un microcontrollore dedicato.
Ora l'unica alternativa appunto che ho è usare questo corba....
Vorre creare una piccola interfaccia che manda un valore e lo legge ...
come sei facesse una lettura di una query e poi ne scrivesse una nuova .... nessun problema di tempo
o di ciclo ...
grazie e ciao
----------------------------------------
AUTORE: 1078
DATA :24/07/2012 - 11:57:04
----------------------------------------
Ciao @joblele,
Fondamentalmente per comunicare con Corba, ti serve un plug-in da installare sulla tua macchina che ti faccia da layer intermedio tra labview e il tuo server. Prova a dare un'occhiata a questi link, dovrebbero aiutarti.
[url:2w2i64jc]http://digital.ni.com/public.nsf/allkb/5DC8DFB0848EE05786257097007D6D92[/url:2w2i64jc]
[url:2w2i64jc]http://forums.ni.com/t5/LabVIEW/LabVIEW-and-CORBA/td-p/211875[/url:2w2i64jc]
[url:2w2i64jc]http://objectmix.com/labview/379340-how-use-corba-idl-labview.html[/url:2w2i64jc]
Se guardi il post che è stato inserito sul forum NI qualcuno ha dichiarato di avere creato questo lato intermedio, però non è open source. Mi sa che lo devi acquistare!
----------------------------------------
================================================================================
labview and api windows
================================================================================
AUTORE: 3375
DATA :10/07/2012 - 09:48:16
----------------------------------------
Buon giorno
Qualcuno mi puo' dire come comunicare con le api che risiedono in windows??
grazie
----------------------------------------
AUTORE: 482
DATA :10/07/2012 - 11:19:37
----------------------------------------
OT
hai provato a mettere un arnia fuori dal case?
ghgh scusa ma mi è venuta cosi'...
detto questo, devi usare le CALL Library function e forse anche con gli activeX
----------------------------------------
================================================================================
Differenza di date
================================================================================
AUTORE: 4165
DATA :10/07/2012 - 15:12:03
----------------------------------------
Ciao a tutti...un quesito abbastanza semplice per chi è più esperto di me.
In un front panel ho visualizzato 2 date nel formato gg/mm/aaaa.
Come faccio a trovare quanti giorni sono passati dalla data 1 alla data 2 ?
Esiste un vi già pronto che fa questo ? Io sto usando una versione vecchia di LV (la 6.1) e non mi viene in mente nulla.
Grazie
----------------------------------------
AUTORE: 660
DATA :10/07/2012 - 17:08:57
----------------------------------------
ma in che formato sono le date?
se è già numerico ti basta fare la sottrazione e poi convertire l'unità di misura del risultato in quella che serve a te...
se fosse testuale estrai i singoli pezzi dalla stringa, li converti in un formato numerico, e ne fai la sottrazione...
forse un po' conciso, ma senza altri elementi non saprei dirti di più...
Max
----------------------------------------
AUTORE: 43
DATA :11/07/2012 - 09:27:25
----------------------------------------
[quote="Paperinik":1phnlojz]Ciao a tutti...un quesito abbastanza semplice per chi è più esperto di me.
In un front panel ho visualizzato 2 date nel formato gg/mm/aaaa.
Come faccio a trovare quanti giorni sono passati dalla data 1 alla data 2 ?
Esiste un vi già pronto che fa questo ? Io sto usando una versione vecchia di LV (la 6.1) e non mi viene in mente nulla.
Grazie[/quote:1phnlojz]
[attachment=0:1phnlojz]LV61DiffTime.vi[/attachment:1phnlojz]
bye
----------------------------------------
AUTORE: 4165
DATA :11/07/2012 - 21:21:10
----------------------------------------
Benissimo, ho scaricato il vi.
Grazie a tutti
----------------------------------------
================================================================================
errore 10805
================================================================================
AUTORE: 1670
DATA :11/07/2012 - 17:11:36
----------------------------------------
Buona sera a tutti,
ho un problema con un vecchio programma di acquisizione scritto con LV 7.1 utilizzando la scheda PCI 6110. Il programma acquisisce 4 canali analogici sincronizzati con un trigger digitale dal PFI0 (fronte di salita). Il problema è che mi esce spesso l'errore 10805, riguardante il rate di acquisizione come se fosse troppo alto rispetto a quello supportato dalla scheda; in realtà il rate è bassissimo 500 samples/sec contro i 5 Msamples/sec massimi che può avere la PCI 6110. Ho letto qualcosa su questo errore e le cause possono essere diverse, ma volevo farvi alcune domande:
1 secondo voi il fronte di salita del trigger conviene che sia differenziato (filtro derivatore) per avere solo un impulso molto stretto, diciamo qualche decina di nanosecondi oppure l'acquisizione può essere efficiente anche con impulsi di 500- 600 nanosec e oltre visto che l'acquisizione dovrebbe essere fatta solo sul fronte di salita.
2 c'è la possibilità di disabilitare la finestra d'errore in modo che non venga bloccato il programma? (in questo momento non ho molto tempo per indagare sui problemi hardware ed avendo questi dati solo importanza statistica anche se vengono persi una buona perrcentuale non sarebbe un dramma per i risultati).
3 si può gestire un errore di questo tipo a livello software, cioè rivelarlo ma senza bloccare il programma.
4 Qualsiasi altro consiglio da chi ha gia affrontato problemi di questo tipo è ben accettato.
Grazie mille per la vostra pazienza e collaborazione
Buona serata a tutti
----------------------------------------
AUTORE: 660
DATA :12/07/2012 - 07:55:51
----------------------------------------
una risposta veloce senza entrare nel merito della problematica...
- il segnale di trigger può avere una durata qualsiasi, per quello che ricordo, in quanto quando lo setti gli dici anche se deve vedere il fronte di salita o di discesa
- si può "disabilitare" l'errore, sia il singolo sia cancellarli tutti, se questo arriva dal programma... mentre non credo che si possa fare se è un'errore "hardware" tipo hai superato la massima frequenza campionabile, però tentare non nuoce... nel menu "dialog and user interface" trovi sia il blocchetto per cancellare tutti gli errori, sia quello per eliminare un sigolo errore avendone il suo codice, tuttavia questi eliminano solamente la propagazione del segnale di errore sul relativo "filo" come se non fosse avvenuto...
- sull'errore 10805 non ho trovato nulla... ricordo che una volta avevo avuto un problema con il campionamento simile a quello da te descritto perchè usavo come segnale di trigger l'impulso di un encoder collegato ad un motore, questo però vibrava e ogni tanto oltre alla rotazione in "avanti" faceva una piccolissima rotazione "indietro" facendo si che la scheda rivedesse il fronte del trigger per l'avvio di una nuova acquisizione, prima di aver terminato la vecchia... e questo non le piaceva...
Max
----------------------------------------
AUTORE: 660
DATA :12/07/2012 - 08:02:04
----------------------------------------
qui c'è qualcosa che mi fa pensare che il problema possa essere simile a quello che ti descrivevo:
[url:1dqqc00c]http://digital.ni.com/public.nsf/allkb/5E43E334761325BE8625616B006F4CE6[/url:1dqqc00c]
e qui una possibile soluzione per creare un filtro hardware
[url:1dqqc00c]http://digital.ni.com/public.nsf/allkb/14A90E5759875BBF86256DD400034FDD?OpenDocument[/url:1dqqc00c]
Max
----------------------------------------
AUTORE: 43
DATA :12/07/2012 - 14:28:01
----------------------------------------
[quote="Cromosoma":3lbprnpf]...
2 c'è la possibilità di disabilitare la finestra d'errore in modo che non venga bloccato il programma? (in questo momento non ho molto tempo per indagare sui problemi hardware ed avendo questi dati solo importanza statistica anche se vengono persi una buona perrcentuale non sarebbe un dramma per i risultati).
3 si può gestire un errore di questo tipo a livello software, cioè rivelarlo ma senza bloccare il programma.
[/quote:3lbprnpf]
2 piccioni con una fava
rispondo a Cromosoma e a Max-machyaer dicendo che io, di fisso, disabilito questi fastidiosi popup e preferisco gestire l'errore a livello SW, comportandomi in maniera diversa, volendo, in funzione del codice di errore.
E' facile:
Tools --> Options...
poi Block Diagram
e si DISABILITA (toglie la spunta) a:
- Enable automatic error handling in new VIs
- Enable automatic error handling dialogs <-- questo è essenziale!
intanto che ci siete vi consiglio di disabilitare anche:
Auto-insert Feedback Node in cycles
Configure express VI immediately
e la fastidiosa
Place front panel terminals as icons
bye
----------------------------------------
AUTORE: 660
DATA :12/07/2012 - 16:04:13
----------------------------------------
beh, come dire... non si finisce mai di imparare...
Grazie Paracarro
Max
----------------------------------------
AUTORE: 1670
DATA :21/07/2012 - 15:41:13
----------------------------------------
Rispondo molto in ritardo, ho forzatamente dovuto fare altro in queste due settimane. Ho provato a disabilitare Enable automatic error handling in new VIs ed Enable automatic error handling dialogs, come consigliava Paracarro, ma questi specifici errori si ripresentano e credo sia come dice machyaer: se sono errori hardware non è possibile disabilitarli (almeno per il momento io non ci sono riuscito). Una soluzione veloce, senza indagare troppo, è di ridurre drasticamente la frequenza di campionamento passando da circa 1000-500 s/sec a circa 100 s/sec, aumentando il tempo morto con un monostabile hardware sul trigger, naturalmente è una pessima soluzione, ma per il momento può adar bene così.
In ogni caso se riesco dopo le ferie proverò a sentire anche la NI sulla disabilitazione degli errori: se ci saranno info interessanti vi aggiornerò.
Grazie a tutti e buona serata
----------------------------------------
AUTORE: 43
DATA :21/07/2012 - 21:48:21
----------------------------------------
[quote="Cromosoma":1rg8o4cu]Rispondo molto in ritardo, ho forzatamente dovuto fare altro in queste due settimane. Ho provato a disabilitare Enable automatic error handling in new VIs ed Enable automatic error handling dialogs, come consigliava Paracarro, ma questi specifici errori si ripresentano e credo sia come dice machyaer: se sono errori hardware non è possibile disabilitarli (almeno per il momento io non ci sono riuscito). Una soluzione veloce, senza indagare troppo, è di ridurre drasticamente la frequenza di campionamento passando da circa 1000-500 s/sec a circa 100 s/sec, aumentando il tempo morto con un monostabile hardware sul trigger, naturalmente è una pessima soluzione, ma per il momento può adar bene così.
In ogni caso se riesco dopo le ferie proverò a sentire anche la NI sulla disabilitazione degli errori: se ci saranno info interessanti vi aggiornerò.
Grazie a tutti e buona serata[/quote:1rg8o4cu]
ciao cromosoma,
la disabilitazione a cui facevo riferimento riguarda esclusivamente alla soppressione dei messaggi di "popup" che appaiono fastidiosamente nella UI, senza che siano controllati da programma, non si vuole certo sopprimere gli errori!!!!!! HW o SW che siano!
Riguardo al tuo specifico problema HW direi che :
- l'ampiezza del trigger deve rispettare la soglia minima prevista come scritto qui
http://digital.ni.com/public.nsf/allkb/ ... 0E007C21E4
nel tuo caso PCI 6110, leggendo il datasheet,di parla di trigger bandwidth di 5MHz cioè una durata minima superiore 200 nanosec. (correggetemi se sbaglio)
una antica nota della knowledgeBase di NI, cioè questa
http://digital.ni.com/public.nsf/allkb/ ... 6B006F4CE6
dice proprio che l'errore -10805 può essere restituito quando l'impulso di trigger è troppo breve...
Quindi un impulso ampio da 250 nanosec fino ad infinito può andare bene. Dai 200 in giù non va bene. Non mi arrischierei a tenere l'impulso troppo vicino ai 200 nanosec...
sempre lo stesso errore può accadere regolarmente se, durante una acquisizione di + segnali analogici, si applica un guadagno elevato su un canale e non lo si applica al successivo:
http://digital.ni.com/public.nsf/allkb/ ... 7F00721F26
oltre ad essere un problema antico , mi sembra non si applichi al tuo caso
bye
----------------------------------------
================================================================================
Controlli in cluster sposizionati
================================================================================
AUTORE: 129
DATA :18/07/2012 - 12:59:10
----------------------------------------
Ciao a tutti, ho un problema su un cluster di controlli misti (slide e stringhe), se lo provo sul mio PC da labview, tutto bene; se provo su un altro PC facendolo girare in un eseguibile e da runtime, si sposiziona uno slide e non riesco a spiegarmi la ragione (risoluzione monitor identica).
Vi è mai capitato?
----------------------------------------
AUTORE: 43
DATA :18/07/2012 - 13:17:24
----------------------------------------
[quote="nicola":2a7dk7wu]Ciao a tutti, ho un problema su un cluster di controlli misti (slide e stringhe), se lo provo sul mio PC da labview, tutto bene; se provo su un altro PC facendolo girare in un eseguibile e da runtime, si sposiziona uno slide e non riesco a spiegarmi la ragione (risoluzione monitor identica).
Vi è mai capitato?[/quote:2a7dk7wu]
No.
Ma hai considerato un Cluster con Autosizing = Size to Fit in combinazione con Font "Application" "System" o "Dialog" usate per i controlli/indicatori dentro il Cluster?
bye
----------------------------------------
AUTORE: 129
DATA :18/07/2012 - 16:47:05
----------------------------------------
Praticamente si ho fatto autosize verticale e controlli di tipo system.
Ora sto verificando se c'entra qualcosa il fatto di aver utilizzato un cluster vicino con controlli nascosti e senza nessun autosize, si sa mai che questio controlli nascosti in qualche modo nella versione in runtime vogliono il loro spazio spostando i controlli dell'altro cluster?
----------------------------------------
AUTORE: 129
DATA :18/07/2012 - 17:16:28
----------------------------------------
Era proprio il controllo nascosto che nel sorgente è in un cluster strictlytypedef, nel runtime lo sgancio dal typedef e quindi mi si allarga, ho fatto la prova visualizzandolo mettendiolo in ordine e poi nascondendolo e funziona.
Sorry,
----------------------------------------
================================================================================
Creare file tabella per iPad
================================================================================
AUTORE: 482
DATA :19/07/2012 - 10:50:09
----------------------------------------
...ma ciao!
mi son ritrovato con un problema che non pensavo potesse esistere e il mio odio verso l'iPad è aumentato in men che non si dica.
Ho un applicazione che crea degli spreadsheet file che per comodità salvo con estensione xls.
Questi file vengono poi zippati e mandati via email a vari utenti tra cui uno con l'iPAD.
L'ipad non riesce ad aprire questi file o quantomeno non son risucito a trovare un APP che me lo apra correttamente tabulato.
Se gli cambio l'estensione riesco a leggerlo come file di testo ma non resta visualizato bene in colonne e righe (tipo che le ultime colonne vanno a capo).
Qualcuno ha idea di come posso risolvere questa fastidiosissima situazione?
Allego un file zip di esempio. Se qualcuno ha un ipad o iphone e riesce ad aprire i file excel sarei grato se mi facesse sapere come fa.
grassssie!
----------------------------------------
AUTORE: 43
DATA :19/07/2012 - 11:03:09
----------------------------------------
guarda se trovi qualcosa di utile qua.
http://www.ipadforums.net/iwork-forum/1 ... -ipad.html
bye
----------------------------------------
AUTORE: 482
DATA :19/07/2012 - 12:46:57
----------------------------------------
...non sembra...
----------------------------------------
================================================================================
Esiste una funzione che confronta array 2d... ?
================================================================================
AUTORE: 534
DATA :22/07/2012 - 11:15:06
----------------------------------------
Ciao,
esiste una funzione di alto livello, che permette di confrontare due array bidimensionali contenenti stringhe e evidenzia eventuali differenze utili a creare un terzo array ?
grazie per l'attenzione.
----------------------------------------
================================================================================
come inserire corrispondenze in un array ?
================================================================================
AUTORE: 534
DATA :22/07/2012 - 21:33:26
----------------------------------------
Ciao, vorrei realizzare un vi che confronta due array bidimensionali composti da stringhe e quando trova una corrispondenza, inserisce la riga attuale presa dell'array inferiore in un nuovo array, nell'immagine allegata è illustrato quello che ho saputo fare, tuttavia il nuovo array risulta sempre vuoto...
Grazie per l'attenzione
[attachment=0:2z2r8s8s]insert_in_array.gif[/attachment:2z2r8s8s]
----------------------------------------
AUTORE: 43
DATA :23/07/2012 - 08:50:31
----------------------------------------
Non è possibile sostituire elementi in un array che ... non sono presenti.
Nel tuo esempio sostiutici un elemento indicizzandolo ma di un array vuoto!
Devi creare un array grande abbastanza da contere tutti gli elementi che potenzialmente potresti indicizzare(inizializzazione fuori dal ciclo for).
Devi utilizzare uno shift-register all'interno del ciclo for che mantenga il contenuto delle sostituzioni precedenti
bye
----------------------------------------
AUTORE: 534
DATA :23/07/2012 - 11:55:35
----------------------------------------
Ciao, grazie al tuo consiglio ho creato un array di dimensioni adeguate, riuscendo a inserire le righe trovate, ma queste si spostano verso il basso lasciando la riga superiore vuota ad ogni ciclo, mi hai spiegato che ora sarebbe necessario utilizzare lo shift register che ho provveduto ad nserire, purtroppo non capisco come integrarlo nello schema, potresti mostrarmi cosa fare ? Grazie !
[attachment=0:3sttnsgg]insert_in_array.gif[/attachment:3sttnsgg]
----------------------------------------
AUTORE: 43
DATA :23/07/2012 - 17:50:13
----------------------------------------
[quote="tracert":1mshnasc]Ciao, grazie al tuo consiglio ho creato un array di dimensioni adeguate, riuscendo a inserire le righe trovate, ma queste si spostano verso il basso lasciando la riga superiore vuota ad ogni ciclo, mi hai spiegato che ora sarebbe necessario utilizzare lo shift register che ho provveduto ad nserire, purtroppo non capisco come integrarlo nello schema, potresti mostrarmi cosa fare ? Grazie !
[/quote:1mshnasc]
Devi aggiungere uno shift register anche nel ciclo for + esterno: quello a sx del for esterno collegalo a quello a sx del for interno, mentre quello a dx del for interno collegalo a quello di dx del for esterno.
la creazione dell'array fatta fuori dal ciclo for deve generare una matrice che collegherai allo shift register + esterno a sx.
Ovviamente lo colleghi dall'esterno...
bye
----------------------------------------
AUTORE: 534
DATA :23/07/2012 - 23:34:46
----------------------------------------
Finalmente funziona !
Grazie ancora per l'aiuto !
Conosci qualche testo in italiano per raggiungere una competenza adeguata a risolvere autonomamente le difficoltò che incontro nella programmazione di Labview ?
----------------------------------------
================================================================================
[LV8.5] Assegnare una password ad un pulsante
================================================================================
AUTORE: 822
DATA :23/07/2012 - 10:18:17
----------------------------------------
Ciao,
che voi sappiate è possibile assegnare una password ad un pulsante, in labview 8.5, in modo tale che questo vada a true solo dopo aver inserito una password?
----------------------------------------
AUTORE: 43
DATA :23/07/2012 - 17:44:29
----------------------------------------
[quote="giuseppe.l74":i72f1wbe]Ciao,
che voi sappiate è possibile assegnare una password ad un pulsante, in labview 8.5, in modo tale che questo vada a true solo dopo aver inserito una password?[/quote:i72f1wbe]
non è possibile fare questa "associazione" senza scrivere del codice LabVIEW
Assicurati che in un controllo l'operatore abbia digitato la giusta Password e in funzione di ciò Abilita il pulsante corrispondente.
il controllo di tipo stringa nel quale l'operatore digiterà la password dovrebbe funzionare in modalità "Password Display"
----------------------------------------
AUTORE: 1078
DATA :24/07/2012 - 11:25:36
----------------------------------------
La mia soluzione è un'alternativa: potresti gestire l'evento click del pulsante che vuoi sotto password, al click visualizzi un VI dialog che richiede la pwd e se corrisponde restituisce un "true" al gestore eventi, in un select case booleano metterai il codice da eseguire dopo il click del pulsante nella parte true e non lascerai vuota la parte false.
Spero sia chiaro!!!
Buon lavoro.
----------------------------------------
AUTORE: 822
DATA :24/07/2012 - 15:11:46
----------------------------------------
Grazie Paracarro, immaginavo non fosse possibile, ma ho preferito chiedere.
Ricky quello che dici è chiaro ed è quello che avevo in mente di fare, grazie!
----------------------------------------
================================================================================
Tempo intercorso tra due true
================================================================================
AUTORE: 4246
DATA :24/07/2012 - 17:46:31
----------------------------------------
Salve,
questo è il mio primo post ed è anche l'inizio della programmazione con Labview quindi come prima cosa Saluto tutti
Come seconda cosa chiedo un aiuto per questo problema. Ho un controllo booleano che periodicamente passa da true a false e viceversa (ovvero si ha una sequenza di true-false-true-false-ecc) che mi fa lampeggiare un classico led. Il cambio di stato avviene in un tempo inferiore ai 3 secondi ma non è costante. Io ho necessità di misurare il tempo (ms) intercorso tra l'istante di attivazione del true (da quando si accende il led) all'istante di riaccensione del led (ovvero quando si riaccende la volta dopo).
Non riesco a venirne a capo.
----------------------------------------
AUTORE: 4246
DATA :25/07/2012 - 08:29:52
----------------------------------------
Aggiungo un dato che penso sia fondamentale per semplificare il problema. Tutto il programma è temporizzato poichè i dati vengono acquisiti da un DAQ. Io prelevo, per analizzarli, 100 campioni alla volta che sono stati campionati a 1kHz per cui conosco già, a priori, il periodo di aggiornamento della variabile booleana che è 100ms.
Quindi, in pratica e se ho ben capito come lavora Labview, ogni 100ms la variabile booleana si aggiorna a questo punto, per poter contare il tempo intercorso due accensioni consecutive del led, basterebbe: (contare il numero di true + il numero di false)*100ms = tempo intercorso; a stò punto dovrei riazzerare tutti i contatori e rifare il conteggio.
Spero la cosa sia più chiara adesso. Io cmq non riesco a farla uff
----------------------------------------
================================================================================
suddividere blocco di campioni
================================================================================
AUTORE: 2629
DATA :26/07/2012 - 11:50:34
----------------------------------------
Salve,
sono impegnato nella modifica di un VI fornitomi dal prof. In sostanza, questo VI calcola tramite simulazioni il fattore di rice sfruttando un numero di campioni impostato da me(nel mio caso 100000). Quello che dovrei fare è:
fare il calcolo di tale fattore di rice sfruttando non subito tutti i 100000 campioni, bensì suddividere questo blocco di campioni in 10 blocchi di 10000 campioni ciascuno, e per ogni blocco fare il calcolo singolo del fattore di rice, alla fine sommare tutti questi fattori ottenuti e fare la media dividendo per 10. Spero di essere stato chiaro.
Grazie
----------------------------------------
AUTORE: 660
DATA :22/08/2012 - 08:52:06
----------------------------------------
In che modo ti arrivano i campioni?
Se li hai in un array, ad esempio, puoi suddividerli in 10 gruppi di 10000 campioni usando il blocchetto "array subset"...
ti allego un piccolo file di esempio... moooolto ottimizzabile...
Ciao
Max
[attachment=0:37st5qjt]esempio.png[/attachment:37st5qjt]
----------------------------------------
AUTORE: 43
DATA :22/08/2012 - 11:50:28
----------------------------------------
[quote="machyaer":3n9b9git]In che modo ti arrivano i campioni?
Se li hai in un array, ad esempio, puoi suddividerli in 10 gruppi di 10000 campioni usando il blocchetto "array subset"...
ti allego un piccolo file di esempio... moooolto ottimizzabile...
Ciao
Max[/quote:3n9b9git]
Beh! a 'sto punto Max, xkè non usare la funzione "Reshape Array"[attachment=0:3n9b9git]ReshapeExample.JPG[/attachment:3n9b9git]bye
----------------------------------------
AUTORE: 660
DATA :22/08/2012 - 11:54:56
----------------------------------------
ottima idea...
Max
----------------------------------------
AUTORE: 2629
DATA :27/08/2012 - 11:05:17
----------------------------------------
Salve e grazie per le risposte,
comunque la mia situazione è un po' diversa, vi allego lo screen di una parte del VI:
[img:2s9h02ci]http://s12.postimage.org/er7wxvsxp/Immagine.png[/img:2s9h02ci]
Grazie.
----------------------------------------
AUTORE: 660
DATA :27/08/2012 - 11:56:04
----------------------------------------
scusa, ma non ho capito dove è il problema...
quale/quali sono i vettori da suddividere?
Max
----------------------------------------
AUTORE: 2629
DATA :27/08/2012 - 12:43:21
----------------------------------------
[quote="machyaer":1g6k5p9v]scusa, ma non ho capito dove è il problema...
quale/quali sono i vettori da suddividere?
Max[/quote:1g6k5p9v]
devo suddividere [i:1g6k5p9v]samples [/i:1g6k5p9v] che non è un vettore, è un controllo, io devo scegliere il numero di campioni.
----------------------------------------
AUTORE: 660
DATA :27/08/2012 - 12:57:08
----------------------------------------
allora potresti passargli un valore più piccolo, oppure se in tal modo non avresti più la possibilità di recuperare i campioni vecchi li acquisisci tutti e poi elabori solo la parte che ti interessa usando il metodo proposto da paracarro...
Max
----------------------------------------
AUTORE: 2629
DATA :27/08/2012 - 14:00:19
----------------------------------------
[quote="machyaer":2s9s9s9b]allora potresti passargli un valore più piccolo, oppure se in tal modo non avresti più la possibilità di recuperare i campioni vecchi li acquisisci tutti e poi elabori solo la parte che ti interessa usando il metodo proposto da paracarro...
Max[/quote:2s9s9s9b]
l'operazione di suddivisione dei campioni devo farla per forza a monte perchè alla fine devo fare la media aritmetica tra tutti i blocchi ...
se io scelgo 100.000 campioni, suddivido in 10 blocchi di 10000 campioni ciascuno, ogni blocco deve calcolarmi l'output del mio VI (fattore di rice),
alla fine sommo i vari fattori di rice e divido per 10.
----------------------------------------
================================================================================
Acquisire segnale analogico Labview + NI-DAQ6009USB
================================================================================
AUTORE: 4247
DATA :29/07/2012 - 17:59:48
----------------------------------------
Salve ragazzi, avrei un problemino. Mi han dato questa scheda di acquisizione dati della National Instruments e dovrei acquisire dati collegandola ad una antenna tramite un sat finder. Devo effettuare una misura differenziale tra due pin, + e - della scheda per circa un'oretta e mezzo, e graficare i valori su un diagramma con i Volt sull'asse delle ordinate ed il Tempo sull'asse delle ascisse.
Per quanto riguarda la parte hardware credo di aver risolto, ma sono ignorante riguardo l'ambiente LabView per acquisire. Ci sono configurazioni già create e preimpostate con schema a blocchi, diagrammi ecc...per effettuare questa acquisizione dati analogica di tipo differenziale? C'è qualcuno che può darmi qualche dritta?
Grazie mille e buona serata
----------------------------------------
AUTORE: 1078
DATA :30/07/2012 - 14:38:19
----------------------------------------
Mi sa che devi studiare un pochino.....!!!!
Qui puoi scaricare una guida completa che ti spega come realizzare un sistema di misura DAQ:
[url:iensj2xg]https://lumen.ni.com/nicif/us/ekitdaqsys/content.xhtml[/url:iensj2xg]
Forse però potresti partire da qui:
[url:iensj2xg]http://www.ni.com/white-paper/13656/it[/url:iensj2xg]
In bocca al lupo!!E buon lavoro!
----------------------------------------
AUTORE: 1078
DATA :30/07/2012 - 14:41:43
----------------------------------------
Prova a dare un'occhiata anche a questo WebCast [url:3eshpi8x]http://www.ni.com/white-paper/13656/it[/url:3eshpi8x]
----------------------------------------
AUTORE: 1078
DATA :30/07/2012 - 14:42:45
----------------------------------------
scusa ho sbagliato a incollare l'url... questo è quello giusto: [url:274csuk9]http://zone.ni.com/wv/app/doc/p/id/wv-986[/url:274csuk9]
----------------------------------------
AUTORE: 4247
DATA :29/09/2012 - 16:35:29
----------------------------------------
Ok dunque ho smanettato un po' e sono giunto a creare questo.
[url:373pejd7]https://www.dropbox.com/s/0pzd4vgwz7qp2h7/ViAcq.JPG[/url:373pejd7]
Quindi acquisisco i dati e li esporto su excel.
1.Qualora volessi graficare non ogni secondo ma direttamente sull'intero tempo in cui acquisisco si può avere il grafico totale (sempre acquisendo 5 campioni al secondo).
2.Devo effettuare una misura differenziale tra i due pin (suppongo tra i pin AI0+ ed AI0-, cioè AI0 ed AI4, che equivalgono al pin numero 2-3)?
Quando creo il VI di input DAQ Assistant nel diagramma a blocchi devo selezionare entrambi i canali AI0 ed AI4 quindi e scegliere la misura differenziale?O sbaglio?
O devo fare una misura RSE?
----------------------------------------
AUTORE: 301
DATA :01/10/2012 - 07:44:09
----------------------------------------
1_ non ho capito, vuoi graficare tutto alla fine o mantenere tutti i valori nel grafico ma aggiungerli ad ogni ciclo di acquisizione?
in ogni caso, si, è possibile, ma devi crearti una array al quale accodi e mantieni in memoria i valori acquisiti ed usi questo array per creare il grafico (occhio che così puoi riempire la ram)
2_Per fare una misura in differenziale, devi selezionare il tipo di canale "differential" (non rse), e basta che selezioni solo un canale (il secondo è implicito, studiati il manuale della scheda per vedere i collegamenti).
Aris
----------------------------------------
AUTORE: 4247
DATA :01/10/2012 - 13:42:27
----------------------------------------
[quote="aris":1uihdzb4]1_ non ho capito, vuoi graficare tutto alla fine o mantenere tutti i valori nel grafico ma aggiungerli ad ogni ciclo di acquisizione?
in ogni caso, si, è possibile, ma devi crearti una array al quale accodi e mantieni in memoria i valori acquisiti ed usi questo array per creare il grafico (occhio che così puoi riempire la ram)
2_Per fare una misura in differenziale, devi selezionare il tipo di canale "differential" (non rse), e basta che selezioni solo un canale (il secondo è implicito, studiati il manuale della scheda per vedere i collegamenti).
Aris[/quote:1uihdzb4]
1.Vorrei mantenere i valori dei secondi precedenti e continuare ad aggiungerli ogni ciclo sul grafico (che in totale dovrebbe essere di un'oretta circa), per poi giungere al grafico finale. Come qui: [url:1uihdzb4]http://www.threehillsobservatory.co.uk/astro/radio_astronomy/radio_astronomy_1.htm[/url:1uihdzb4], vedi il grafico sul transito solare. Devo giungere alla stessa conclusione.
Poi vabbè il grafico finale potrei farlo con l'excel, dato che il write to measurement esporta i valori li.
Come faccio per l'array?
2.Ho fatto così selezionando il canale AI0:
[img:1uihdzb4]https://dl.dropbox.com/s/f7nkeh22u8cg1wu/Daqass.JPG[/img:1uihdzb4]
E quindi le connessioni esatte sono quelle previste (pin 2-3).
https://dl.dropbox.com/s/brs6hwg88dv9wd ... ctions.JPG
Ed io le ho collegate così:
[img:1uihdzb4]https://dl.dropbox.com/s/x8tnvtb5q4qc4ka/20120930_200614.jpg?m[/img:1uihdzb4]
Grazie
----------------------------------------
AUTORE: 4247
DATA :01/10/2012 - 13:44:09
----------------------------------------
Ma non fa modificare il messaggio?o.O dato che ho visto che la terza immagine è troppo grande ed è tagliata.
----------------------------------------
AUTORE: 301
DATA :01/10/2012 - 15:41:47
----------------------------------------
Prendilo giusto come spunto.
Aris
----------------------------------------
AUTORE: 301
DATA :01/10/2012 - 15:47:49
----------------------------------------
P.S.
per quanto riguarda la configurazine del segnale, va bene quello che hai fatto (per quanto riguarda i collegamenti, segui lo schema).
Aris
----------------------------------------
AUTORE: 4247
DATA :01/10/2012 - 17:05:45
----------------------------------------
Ok tento di capirci qualcosa in più grazie al VI.
E se invece volessi graficare tutto ciò che ha acquisito appena clicco sul tasto stop?
----------------------------------------
AUTORE: 301
DATA :01/10/2012 - 17:22:25
----------------------------------------
Il graph lo metti all'esterno del while e sfrutti l'autoindicizzazione sul bordo del ciclo.
Aris
----------------------------------------
AUTORE: 4247
DATA :01/10/2012 - 22:27:26
----------------------------------------
Cosi che te ne pare?E se volessi aggiungere un ulteriore grafico totale a termine di tutto?Lo metto fuori dal while e come lo collego?Grazie
----------------------------------------
AUTORE: 301
DATA :02/10/2012 - 06:30:40
----------------------------------------
Il vi che hai postato non riesco ad aprirlo, ho LV 2011.
In ogni caso, quello che ti ho postato, per acquisizioni lunghe, rischia di impallarti la memoria del pc.
Ora, non so la frequenza di acquisizione, la durata delle campagne di acquisizione, ecc, sta a te la valutazione del sistema da implementare.
Per quanto riguarda la graficazione totale dei valori alla fine, sta sempre a te.
Potresti anche valutare di caricare tutto il registrato dal file di acquisizione.
Aris
----------------------------------------
AUTORE: 4247
DATA :02/10/2012 - 07:47:12
----------------------------------------
[url:2fneao38]https://www.dropbox.com/s/aa7yvq3m048d26z/NewVI.JPG[/url:2fneao38] Ecco una immagine. Fammi sapere se ho sbagliato qualcosa e posso apportare modifiche o meno.
Si bhe alla fine potrei farlo io da excel il grafico finale.
Grazie
----------------------------------------
AUTORE: 301
DATA :02/10/2012 - 09:03:47
----------------------------------------
Per quello che chiedi, direi che va bene.....infondo, se ti da il risultato che ti aspetti, non te lo devo dire io, no?
Cerca di "capire" le risposte, i consigli e gli esempi, non fermarti ad implementarli e basta....
Aris
----------------------------------------
AUTORE: 4247
DATA :02/10/2012 - 09:43:23
----------------------------------------
Mmm, il problema è che non riesco ad ottenere valori significativi. Ciò che acquisisco è sempre vicino allo 0. Non capisco dove sto sbagliando
----------------------------------------
AUTORE: 301
DATA :02/10/2012 - 10:19:05
----------------------------------------
il tuo sistema che tipo di segnale ti da in output?
mV, 0-10V?
E' un segnale già amplificato o no?
Vedi delle risposte dal sistema o vedi dei valori prossimi allo 0 fissi?
E' tutto alimentato?
Hai collenato i fili al canale giusto?
Aris
----------------------------------------
AUTORE: 4247
DATA :02/10/2012 - 10:57:02
----------------------------------------
Ecco uno schemino: [url:34ffcuuv]https://www.dropbox.com/s/ffgtkhhhmrtg1a6/2012-10-02_11-41-42_225.jpg[/url:34ffcuuv]
Output in volt.
[url:34ffcuuv]http://www.threehillsobservatory.co.uk/astro/radio_astronomy/radio_astronomy_1.htm[/url:34ffcuuv]
[url:34ffcuuv]http://www.britastro.org/radio/simple12ghz.html[/url:34ffcuuv]
Io ottengo solo questo: [url:34ffcuuv]https://www.dropbox.com/s/1utc2zx6fcp6u9p/Graph.JPG[/url:34ffcuuv]...I grafici hanno al funzione di autoscale delle ordinate!
I picchi comunque sono dati dal fatto che ho messo la mano davanti alla parabola. Altrimenti sarebbe praticamente piatto. Invece quando becco il sole dovrebbe salire di parecchio.
----------------------------------------
AUTORE: 301
DATA :02/10/2012 - 11:04:28
----------------------------------------
Prima di tutto, accertati che il tuo segnale non passi i 10V DC.
Secondo, il segnale è in dc, vero?!?
Terzo, hai provato con un multimetro (tester) il segnale che ti esce?
Aris
----------------------------------------
================================================================================
Prelevare samples dalla seriale
================================================================================
AUTORE: 4249
DATA :19/08/2012 - 23:21:57
----------------------------------------
Ciao a tutti.
Mi chiamo Diego e ho scoperto da poco Labview. Sto creando un dispositivo con interfaccia in LAbview e mi sono piantato su un problema che non riesco a risolvere. Sarei molto grato se qualcuno avesse qualche suggerimento da darmi. Il sistema monitorizza una serie di valori e li invia tramite seriale anche al PC per poter essere analizzati con un programma appunto in Labview. Questi valori sono 64, sono tutti (correttamente) visualizzati a schermo e vanno in un Array, tramite il quale possono anche essere salvati in un file Excel, selezionando un sampling time da 1s a 5s. Tutto funziona, anche la scrittura nel file Excel, solo che, anche se il sistema sembra campionare ogni 2 o 3 s (o quanti sono stati selezionati nel "sampling time"), in realtà pesca sempre dal buffer e quindi legge i valori vecchi, non quelli attuali. Ho provato anche a mettere una limitazione del buffer, ma la faccenda non cambia. Il file viene generato in una cartella in C che va creata: C:/DATI_BMS
Allego il file (in una versione con meno variabili, tanto il comportamento è lo stesso)con la sua sub.vi, grazie in anticipo
Diego
----------------------------------------
AUTORE: 3428
DATA :20/08/2012 - 08:20:33
----------------------------------------
ciao, hai utilizzato labview 2011 e non riesco ad aprire il vi perch'è ho il 2010.
comuque prova, prima della lettura sulla seriale e quindi prima dell'invio allo strumento del comando di fornirti il valore, a pulire il buffer.
C'è una vi già pronta nella palette Visa e si chiama CLEAR, dovrebbe fare al caso tuo... io comunque prima di scrivere qualsiasi cosa sulla seriale pulisco sempre il buffer collegando la porta al property node "bytes at port" che ti restituisce il num di bytes nella porta e il suo risultato lo do in pasto al vi READ che effettua la lettura di tutto il buffer ma poi non collego il read buffer che mi restituisce da nessuna parte perchè secondo me sporco.. a questo punto la seriale è vuota e posso tranquillamente inviare di nuovo il comando di fornirmi il dato, questa volta però andrò ad analizzarlo.
ciao
----------------------------------------
AUTORE: 43
DATA :20/08/2012 - 09:00:27
----------------------------------------
[quote="Diego Salimbeni":2n8t1ia6]Ciao a tutti.
Mi chiamo Diego e ho scoperto da poco Labview. Sto creando un dispositivo con interfaccia in LAbview e mi sono piantato su un problema che non riesco a risolvere. Sarei molto grato se qualcuno avesse qualche suggerimento da darmi. Il sistema monitorizza una serie di valori e li invia tramite seriale anche al PC per poter essere analizzati con un programma appunto in Labview. Questi valori sono 64, sono tutti (correttamente) visualizzati a schermo e vanno in un Array, tramite il quale possono anche essere salvati in un file Excel, selezionando un sampling time da 1s a 5s. Tutto funziona, anche la scrittura nel file Excel, solo che, anche se il sistema sembra campionare ogni 2 o 3 s (o quanti sono stati selezionati nel "sampling time"), in realtà pesca sempre dal buffer e quindi legge i valori vecchi, non quelli attuali. Ho provato anche a mettere una limitazione del buffer, ma la faccenda non cambia. Il file viene generato in una cartella in C che va creata: C:/DATI_BMS
Allego il file (in una versione con meno variabili, tanto il comportamento è lo stesso)con la sua sub.vi, grazie in anticipo
Diego[/quote:2n8t1ia6]
ciao Diego
ci sono un po' di punti nel codice che meriterebbero una piccola discussione, cmq mi sforzerò di essere breve (
):
- in merito alla generazione dei valori che vengono letti da seriale:
--- i valori sono generati in continuo senza che il Pc con labVIEW possa controllare l'istante di inizio e fine generazione?
--- se non c'è alcun controllo, con quale frequenza vengono generati?
--- nel caso non esista una freq. di generazione, lo strumento genera una sequenza di 64 valori e poi riparte automaticamente a generare la seq. successiva?
- in merito alla gestione seriale lato LabVIEW:
--- i valori letti da seriale sono numeri decimali in ascii terminati con un LineFeed? (0Ah o 10 decimale)
--- se fosse così perchè vengono letti 1000 byte alla volta e si utilizza solo il primo valore numerico LineFeed terminato, dei 1000 byte letti?
- in merito alla scrittura del codice LabVIEW
--- dove, se esiste, viene fatto un controllo sulla "temporizzazione"? La CPU lavorerà al 100% lasciando poco tempo al controllo di interfaccia...
--- perchè il controllo dell' offset, attraverso il quale si determina quale dei 64 valori è stato letto viene fatto 64 volte in vece di fare una ricerca iniziale di un indice che stabilisca quale dei 64 valori sia stato letto e di conseguenza, se l'indice è valido, si aggiorni il solo indicatore numerico e booleano di pertinenza?
bye
----------------------------------------
AUTORE: 4249
DATA :20/08/2012 - 10:10:50
----------------------------------------
Ringrazio Renaso e Paracarro per la rapida risposta.
Come avete capito non sono molto eserto. Il comando clear ho provato a inserire, ma in realtà io da Labview non comunico con la scheda elettronica, leggo solo ed il comando "Clear" non sono riuscito a farlo funzionare.
Rispondo a Paracarro:
1) i valori sono generati in continuo senza che il Pc con labVIEW controlli inizio e fine. Questa era la mia idea, semplicemente "ascoltare" sulla linea di comunicazione seriale dell'apparecchiatura.
2) i dati sono generati ad un intervallo di 2ms uno dall'altro e vengono trasmessi con un baud rate di 9600.
3) Si, lo strumento genera una sequenza di 64 valori e poi riparte automaticamente a generare la seq. successiva.
4) Giusto, i valori letti da seriale sono numeri decimali in ascii terminati con un 10 decimale. Il sistema è nato così perchè le prime prove le ho fatte utilizzando HyperTerminal e non sapevo come fare altrimenti
5) Il fatto che siano segnati 1000 byte to read è che io sto facendo delle prove un pò a caso per provare a risolvere il problema ed ho provato sia a cambiare il numero dei byte to read sia il volume del buffer, ma senza notare particolari differenze. Il fatto che si utilizza solo il primo valore numerico LineFeed terminato, dei 1000 byte letti, non me ne sono accorto, nella visualizzazione dinamica (diciamo nella pagina in cui si visualizzano i valori) sembra funzionare bene, i valori cambiano in tempo "reale". Mi potresti, per favore spiegare meglio?
6) In realtà non ho messo alcuna temporizzazione, a parte il "Time delay" nella Sub.vi, che è quello attraverso il quale scandisco l'intervallo di campionamento. La riga in excel viene effettivamente scritta agli intervalli impostati, solo che contiene valori "vecchi".
7) Non sarei in grado di creare un indice che stabilisca quale dei 64 valori sia stato letto e di conseguenza aggiorni il solo indicatore di pertinenza. Come forse si capice da come ho impostato il programma, io sono un "vecchio" elettronico, che è abituato a ragionare in termini di porte logiche e operazionali, per cui sicuramente nel mio programma ci sono delle ingenuità, però contavo sul fatto che essendo la dimanica un pò lenta (parliamo di grandi celle di batterie) non mi interessano le variazioni nel ms, ma posso prendermela un pò più comoda (tipo un refresh completo dei 64 valori ogni 500ms andrebbe già benissimo).
Grazie ancora
Diego
----------------------------------------
AUTORE: 43
DATA :20/08/2012 - 13:50:09
----------------------------------------
[quote="Diego Salimbeni":2bboa570]...1) i valori sono generati in continuo senza che il Pc con labVIEW controlli inizio e fine. Questa era la mia idea, semplicemente "ascoltare" sulla linea di comunicazione seriale dell'apparecchiatura.[/quote:2bboa570]
Ok. A me piacerebbe cmq avere il controllo ed avere la possibilità anche di decidere se inviare per es. solo una parte dei dati dei 64 che mi interessano. Nel tuo caso usi solo 25 valori dei 64 a disposizione. Ancora meglio, invece di inviare i dati in continuo, sarebbe bello ricevere i dati solo dopo esplicita richiesta: in questo modo leggeresti solo i dati + aggiornati e non avresti il problema di scartare i + vecchi. Chessò, quando invii un 13 (0Dh CR) ti viene risposto, one shot, tutti i 64 valori e la scheda poi se ne sta zitta fino alla ricezione del prossimo <CR> ...
[quote="Diego Salimbeni":2bboa570]2) i dati sono generati ad un intervallo di 2ms uno dall'altro e vengono trasmessi con un baud rate di 9600.[/quote:2bboa570]
dunque 9600 baud sono circa 960 byte per secondo, quindi sono circa 9,6 quasi 10 bytes ogni centesimo di secondo... se ogni valore è composto caso peggiore da 6 bytes, mi risulta difficile che si riesca a trasmettere appunto 6 byte in 2 msec... consiglio di rivedere il baudrate... 30 bytes circa ogni centesimo di sec., significa un baudrate minimo di circa 38400. Cosi viene garantita non solo la generazione ma anche la trasmissione di un dato ogni 2 ms.
[quote="Diego Salimbeni":2bboa570]3) Si, lo strumento genera una sequenza di 64 valori e poi riparte automaticamente a generare la seq. successiva.[/quote:2bboa570]
quindi meglio leggere tutto quello che c'è nel buffer della seriale in un sec. e tenere buoni gli ultimi 64 valori ricevuti. il resto deve essere buttato via. Ma la freq di lettura deve essere garantita.
Calcolare il valor medio per ognuno dei 64 possibili valori potrebbe essere una alternativa, ma risulta inutilmente dispendiosa.
[quote="Diego Salimbeni":2bboa570]4) Giusto, i valori letti da seriale sono numeri decimali in ascii terminati con un 10 decimale. Il sistema è nato così perchè le prime prove le ho fatte utilizzando HyperTerminal e non sapevo come fare altrimenti[/quote:2bboa570]
ok
[quote="Diego Salimbeni":2bboa570]5) Il fatto che siano segnati 1000 byte to read è che io sto facendo delle prove un pò a caso per provare a risolvere il problema ed ho provato sia a cambiare il numero dei byte to read sia il volume del buffer, ma senza notare particolari differenze. Il fatto che si utilizza solo il primo valore numerico LineFeed terminato, dei 1000 byte letti, non me ne sono accorto, nella visualizzazione dinamica (diciamo nella pagina in cui si visualizzano i valori) sembra funzionare bene, i valori cambiano in tempo "reale". Mi potresti, per favore spiegare meglio?[/quote:2bboa570]
Dunque facciamo conto di "un giro" di valori: in 128 ms (64 x 2) dovrei ricevere nel peggior caso 1 x 4 + 9 x 5 + 54 x 6 = 373 bytes o nel caso migliore 370. Sempre che esista la variabile con indice 0 (da indice 0 -> range 0 - 999, a indice 63 -> range 63000 - 63999) e che i valori numerici non abbiano zeri("0")nella parte non significativa cioè per es. 1002\
non sia inviato come 01002\
Dato che sulla seriale vengono inviati dati di continuo, tanto vale svuotare l'intero buffer ogni volta che viene effettuata la lettura, senza usare nessun carattere di terminazione e scartato l'eventuale pezzo di valore letto non completamente nella parte finale, bisogna tenere buoni gli ultimi 373 bytes
Facendo conto di acquisire in modo temporizzato 1 volta al sec., ci si aspetta di leggere circa: 1000 / 128 * 373 bytes = 2914,046, cioè circa 3 kbytes /sec. di buffer
[quote="Diego Salimbeni":2bboa570]6) In realtà non ho messo alcuna temporizzazione, a parte il "Time delay" nella Sub.vi, che è quello attraverso il quale scandisco l'intervallo di campionamento. La riga in excel viene effettivamente scritta agli intervalli impostati, solo che contiene valori "vecchi".[/quote:2bboa570]
le temporizzazioni sono comunque necessarie. nel tuo caso potresti suddividere tutto il processo in più loop che girano "parallelamente", ma mi sembra troppo complicata l'implementazione per il tuo grado di conoscenza di LabVIEW
[quote="Diego Salimbeni":2bboa570]7) Non sarei in grado di creare un indice che stabilisca quale dei 64 valori sia stato letto e di conseguenza aggiorni il solo indicatore di pertinenza. Come forse si capice da come ho impostato il programma, io sono un "vecchio" elettronico, che è abituato a ragionare in termini di porte logiche e operazionali, per cui sicuramente nel mio programma ci sono delle ingenuità, però contavo sul fatto che essendo la dimanica un pò lenta (parliamo di grandi celle di batterie) non mi interessano le variazioni nel ms, ma posso prendermela un pò più comoda (tipo un refresh completo dei 64 valori ogni 500ms andrebbe già benissimo).[/quote:2bboa570]
Se sei un elettronico un po' attempato allora dovresti avere una certa dimestichezza con bit e AD converter:
mi chiedevo infatti come fosse possibile avere dei range di 1000 possibili valori per ogni valore analogico quando solitamente gli AD converter hanno risoluzione misurata in n. di bit.
Nel tuo caso immagino che il vero range di acqisizione di ogni grandezza sia di 10 bit ( range 0 - 1023) e che quindi usando una singola word (16 bit range 0 - 65535) per rappresentare un valore si possa "splittare" il valore intorno al sesto bit partendo da sx ed utilizzare la parte + significativa (6 bit range 0 - 63) e i rimanenti 10 bit di dato.
Usando invece la tua "strana" suddivisione, potresti fare una "divisione intera" del singolo valore acquisito x 1000 (invece di 1024) ed ottenere le stesse informazioni
Esempio valore div 1000 = (quoziente) -->indice (resto)--> valore corrispondente alla variabile di indice [quoziente]
bye
----------------------------------------
AUTORE: 4249
DATA :20/08/2012 - 14:40:40
----------------------------------------
Grazie ancora per tutto il tempo che mi stai dedicaando, non voglio disturbare più del dovuto.
In realtà mi sono espresso male, volevo dire che il processore sulla scheda elettronica attende 2ms tra la fine dell'invio di un valore e l'inizio dell'invio del successivo.
Ogni valore ha una lunghezza di 16 byte, scelti perchè il valore più alto che devo trasmettere è 64.999. Io ho ragionato in maniera banale, cioè, una volta letta la stringa dalla seriale e convertito il messaggio in numeri decimali, opero su questi con operazioni algebriche.
Per esempio la cella 1 (è la prima cella di una batteria) mostra i valori contenuti tra il numero decimale 1000 e 2000. Poichè i miei valori vanno da 0 a 5V, se io leggo sulla linea dei valori decimali 1500 ottengo: 1500-1000=500 che è il messaggio "500" destinato alla cella 1. Divido 500/200 ed ottengo 2,5, che sono i Volt da visualizzare.
Io credevo si potesse leggere i valori "passanti" sulla linea della seriale in un determinato intervallo di tempo (per esempio, mettendomi nella pagina "Record Data" e premendo l'interruttore "Recording", avendo impostato il samplerate a 2s, leggere ogni 2 secondi il treno di valori attuale, da 1000 fino a 65000).
Se il problema è la sincronizzazione ed i timer, temo che dovrò rimettere mano al processore e fare in modo che, come suggerisci tu, invii i dati aggiornati solo quando vengono richiesti, che mi sembra forse più semplice. Se invece potessi dire: "prendi per buono il primo treno di dati completo, che contiene i numeri decimali da 1000 a 64000 passante sulla linea dei valori decimali da questo istante e scrivilo nel file" tutto sarebbe più facile. E' chiaro che non conoscendo ancora questo ottimo strumento che è Labview non riesco ancora a comprenderne i meccanismi e le strategie di impostazione generale dei vari sistemi.
Grazie
Diego
----------------------------------------
AUTORE: 43
DATA :20/08/2012 - 16:35:27
----------------------------------------
[quote="Diego Salimbeni":y8rwyzec]Grazie ancora per tutto il tempo che mi stai dedicaando, non voglio disturbare più del dovuto.
In realtà mi sono espresso male, volevo dire che il processore sulla scheda elettronica attende 2ms tra la fine dell'invio di un valore e l'inizio dell'invio del successivo.
Ogni valore ha una lunghezza di 16 byte, scelti perchè il valore più alto che devo trasmettere è 64.999.[/quote:y8rwyzec]
Ho capito bene? 16 byte ....o 16 bit di dato? che si traduce in una stringa di 5 bytes ascii decimale + terminatore LF (6 bytes totali)?
es[code:y8rwyzec]..........25472L
| | | ||
1 5 10 16
. = spazio
L = LineFeed = 0Ah = 10[/code:y8rwyzec]
o piuttosto
[code:y8rwyzec]25472L
| ||
1 6
L = LineFeed = 0Ah = 10[/code:y8rwyzec]
[quote="Diego Salimbeni":y8rwyzec] Io ho ragionato in maniera banale, cioè, una volta letta la stringa dalla seriale e convertito il messaggio in numeri decimali, opero su questi con operazioni algebriche.[/quote:y8rwyzec]
la stringa che leggi dalla seriale è di circa 1000 bytes
[quote="LabVIEW Help":y8rwyzec]
[b:y8rwyzec]VISA Read Details[/b:y8rwyzec]
This function might return less than the number of bytes requested if the function reaches the end of the buffer, reaches a termination character, or if a timeout occurs. The output error cluster indicates if a timeout has occurred.[/quote:y8rwyzec]
tu non visualizzi nemmeno il tipo di errore che la seriale ti restituisce...
[quote="Diego Salimbeni":y8rwyzec]... fino al tempo di timeout e poi viene Per esempio la cella 1 (è la prima cella di una batteria) mostra i valori contenuti tra il numero decimale 1000 e 2000.[/quote:y8rwyzec]
il punto è, che dei circa 1000 byte possibili che tu leggi tu butti via tutto e trattieni il primo valore della stringa cioè il più vecchio ricevuto, inoltre, non analizzi i restanti valori, ma ne esamini il + vecchio. La scelta di esaminare il primo valore introduce una casualità: in questo modo rischi di aggiornarne alcuni valori con una frequenza e altri di non aggiornarli mai. Considerando che scarti la maggior parte dei valori... ti lascio immaginare il modo con cui stai procedendo...
Prova a trascinare il bordo inferiore del controllo "Read string" verso il basso per renderti conto di quanti valori leggi in una volta
[quote="Diego Salimbeni":y8rwyzec] Poichè i miei valori vanno da 0 a 5V, se io leggo sulla linea dei valori decimali 1500 ottengo: 1500-1000=500 che è il messaggio "500" destinato alla cella 1. Divido 500/200 ed ottengo 2,5, che sono i Volt da visualizzare.[/quote:y8rwyzec]
era già chiaro prova a fare questa divisione
[attachment=0:y8rwyzec]QuotientReminder.JPG[/attachment:y8rwyzec]
1500 / 1000 con una divisione intera ottieni Quoziente = 1 (indice) e Resto = 500 (valore della variabile indice 1)
altro esempio
25472 / 1000 Quoziente = 25 (indice) e Resto= 472 (valore variabile indice 25)
[quote="Diego Salimbeni":y8rwyzec] Io credevo si potesse leggere i valori "passanti" sulla linea della seriale in un determinato intervallo di tempo (per esempio, mettendomi nella pagina "Record Data" e premendo l'interruttore "Recording", avendo impostato il samplerate a 2s, leggere ogni 2 secondi il treno di valori attuale, da 1000 fino a 65000).[/quote:y8rwyzec]
Vabbè. Il flusso di bytes scritti dalla scheda sulla linea seriale è continuo. come fai a sincronizzarti? l'unico modo è prendersi gli ultimi + recenti 64 valori letti in una sola volta e processarli tutti e 64 sapendo che il primo valore processato non è necessariamente il valore fra 1000 e 2000 ma può essere uno qualunque ma poi si devono predere necessariamente i 63 successivi in sequenza...
...e cmq continueresti a leggere valori senza una "cadenza" precisa e voluta... ma sempre leggendo + o - 1000 bytes alla volta...
[quote="Diego Salimbeni":y8rwyzec]Se il problema è la sincronizzazione ed i timer, temo che dovrò rimettere mano al processore e fare in modo che, come suggerisci tu, invii i dati aggiornati solo quando vengono richiesti, che mi sembra forse più semplice. Se invece potessi dire: "prendi per buono il primo treno di dati completo, che contiene i numeri decimali da 1000 a 64000 passante sulla linea dei valori decimali da questo istante e scrivilo nel file" tutto sarebbe più facile.[/quote:y8rwyzec]
Questo è un errore concettuale: secondo me non si deve prendere il PRIMO treno valido di dati ( a parte che tu prendi solo un valore su 1000 bytes di roba...), ma piuttosto l'ULTIMO!!!! perchè è chiaro che molti dati devono essere scartati soprattutto se si acquisisce alle freq. + basse (un dato ogni 5 sec...)
bye
----------------------------------------
AUTORE: 4249
DATA :20/08/2012 - 18:15:01
----------------------------------------
Ciao, scusa ho scritto 16 byte, mentre in realtà volevo scrivere che il dato si compone da 16 bit (più ovviamente LF).
Il fatto che sulla "VISA Read" ho segnato 1000 è stata solo una prova, stavo testando varie ipotesi.
In dinamico, cioè nella pagina "Analysis", il tutto funziona ed i dati che vedo sono quelli che attualmente scorrono sulla seriale.
Anche se metto il "sampling time" a zero nella pagina "Data recording", il file viene generato in maniera corretta, i valori sono giusti e corrispondono ai valori dinamici, solo che il file diventa enorme nel giro di un paio di minuti.
I problemi cominciano quando voglio scadenzare le stringhe del file, a qualche secondo, tramite il "Sampling time". Il file viene creato correttamente, solo che i valori sono vecchi, lui li mette tutti in coda ed ogni t=sampling time pesca credo dal buffer.
E' come tu dici, io nella riga di excel dove ho la tensione massima, la minima, poi quella della cella 1, poi cella 2, ecc..vedo aggiornare solo i primi valori (uno o due al massimo), gli altri rimangono i vecchi. Peccato perchè, anche se il programma è fatto in maniera rudimentale, ci ero andato vicino, il resto funzionarebbe, ma mi sa che va rivisto del tutto.
Non voglio tenerti più impegnato, sei stato fin troppo gentile. Io non riesco ad andare avanti, se ci fosse qualcuno che potesse mettere a punto il mio software a livello professionale, forse è l'unica soluzione.
Ciao
Diego
----------------------------------------
================================================================================
Cerco esperto per piccolo lavoretto
================================================================================
AUTORE: 4257
DATA :26/08/2012 - 17:11:17
----------------------------------------
Scusate la sezione, ma quelle dedicate al lavoro riflettevano comunque la mia proposta.
Cerco un esperto di labview per farmi un esercizio d'esame (un progetto che consiste generalmente nel fare un array di dati forniti con un file .txt) cose semplici comunque.
E' un lavoro che vi costerà neanche una mezz'oretta di tempo.
contattatemi alla mail bellodinotte527@hotmail.com
----------------------------------------
AUTORE: 1078
DATA :05/09/2012 - 10:59:31
----------------------------------------
[quote="jhaze":37ewzyfg]E' un lavoro che vi costerà neanche una mezz'oretta di tempo.[/quote:37ewzyfg]
Scusa ma se sei ingrado di dirre che ci vuole una "mezzoretta" di tempo, avrai già fatto un'analisi del problema e sei sicuramente in grado di risolvere il tutto da solo, quindi: a cosa ti serve un'esperto?
----------------------------------------
================================================================================
Comunicare con Micrologix 1400
================================================================================
AUTORE: 482
DATA :03/09/2012 - 12:37:23
----------------------------------------
...ma ciao!
devo comunicare con un PLC Micrologix 1400.
I PLC con cui mi sono interfacciato finora potevo leggerli/scriverli usando il vecchio tool ethernet/IP per labview che si trovava in rete e che necessitava solo di includere una DLL.
A quanto pare con i 1400 il tool non funziona.
Quindi vi chiedo, l'unica soluzione è usare l'NI OPC server o esistono soluzioni alternative?
Ho visto che l'NI OPC server necessita di licenza..sapete quanto costa?
Poi si riesce a sviluppare un applicativo da distribuire che sfrutti gli OPC o devo diventare matto e in piu 'acquistare una licenza per ogni pc dove installo l'applicativo?
----------------------------------------
AUTORE: 482
DATA :03/09/2012 - 14:25:35
----------------------------------------
Correggo! Riesco a leggere i registri dal PLC anche con i tool Ethernet/IP (Sia quello della national che quello su LAVA).
Qualcuno sa se è possibile leggere file diversi dagli N ? Nel mio caso specifico I e B.
----------------------------------------
================================================================================
Eseguibile con più VI
================================================================================
AUTORE: 3962
DATA :03/09/2012 - 21:54:37
----------------------------------------
Buonasera a tutti,
probabilmente è una cosa banale ma ho fatto mille prove e non riesco a venirne a capo..
Praticamente ho creato un eseguibile da un VI che non fa altro che selezionare un'altro VI tra 2 disponbili.
Il problema è che quando lancio il VI, chiamiamolo starter che poi mi fa scegliere quale tra gli altri 2 VI lanciare, mi si aprono tutti e 3 in contemporanea.
Io vorrei che si apprisse solo Starter e poi a seconda che prema 1 o 2 si apra il relativo VI.
Ho provato a cambiare un pò di impsotazioni quando vado a creare l'eseguibile ma nulla..
Dove sbaglio?
Grazie!
----------------------------------------
AUTORE: 482
DATA :04/09/2012 - 07:07:25
----------------------------------------
prova a guardare nelle impostazioni dei VI.
Tasto destro sull'icona in alto a destra dei singoli VI e poi properties..
Alla voce Apparence, seleziona customize e verifica che non ci sia selezionato Show front panel when loaded ma show front panel when called.
----------------------------------------
AUTORE: 3962
DATA :04/09/2012 - 10:30:48
----------------------------------------
perfetto cercavo proprio quello ma non le trovavo nelle impostazioni che uscivano quando creavo l'eseguibile.
Grazie mille!
----------------------------------------
================================================================================
Gestione file Origin
================================================================================
AUTORE: 3002
DATA :04/09/2012 - 12:32:07
----------------------------------------
Salve a tutti ragazzi!!
Vorrei fare un Vi che mi permetta di aprire un file dati con origin e uan volta fatto fare delle operazioni sulle colonne. Ho preso i VI di origin ed in special modo ho utilizzato OA_OpenNewOrigin. Origin si apre correttamente salvo il fatto che apre la versione a 64bit mentre io voglio lavorare su quella a 32bit. Esiste un modo per potergli fissare il reference del programma a 32bit?
Grazie
David
----------------------------------------
AUTORE: 43
DATA :05/09/2012 - 08:52:43
----------------------------------------
[quote="Gauchio":2t354yty]Salve a tutti ragazzi!!
Vorrei fare un Vi che mi permetta di aprire un file dati con origin e uan volta fatto fare delle operazioni sulle colonne. Ho preso i VI di origin ed in special modo ho utilizzato OA_OpenNewOrigin. Origin si apre correttamente salvo il fatto che apre la versione a 64bit mentre io voglio lavorare su quella a 32bit. Esiste un modo per potergli fissare il reference del programma a 32bit?
Grazie
David[/quote:2t354yty]
Scusa David,
non mi è chiaro cosa intendi per "reference del programma"...
Esiste un LabVIEW 32bit ed un LabVIEW 64bit. La versione installata è funzionale al tipo di CPU presente nel PC.
il fatto che "origin si apre correttamente" dipende suppongo da origin e non da LabVIEW... forse...
Hai trovato qualcosa su [url=http://wiki.originlab.com/~originla/wiki/index.php?title=Main_Page:2t354yty]sito di originlab[/url:2t354yty]?
Cosa dice la documentazione a corredo della libreria di VI OriginLab ?
hai installato sullo stesso PC + versioni di Origin e ne vuoi usare una in particolare? rivolgiti a Origin...
bye
----------------------------------------
AUTORE: 43
DATA :05/09/2012 - 09:06:09
----------------------------------------
[quote="Gauchio":3n9buj3d]Salve a tutti ragazzi!!
Vorrei fare un Vi che mi permetta di aprire un file dati con origin e uan volta fatto fare delle operazioni sulle colonne. Ho preso i VI di origin ed in special modo ho utilizzato OA_OpenNewOrigin. Origin si apre correttamente salvo il fatto che apre la versione a 64bit mentre io voglio lavorare su quella a 32bit. Esiste un modo per potergli fissare il reference del programma a 32bit?
Grazie
David[/quote:3n9buj3d]
scusa ancora David
Se il VI [b:3n9buj3d]OA_OpenNewOrigin[/b:3n9buj3d] ha il Diagramma visibile, puoi postarlo così posso vedere cosa fa in dettaglio?
bye
----------------------------------------
AUTORE: 3002
DATA :05/09/2012 - 09:21:21
----------------------------------------
Grazie per l'interessamento!
Riporto il link della documentazione riguardo il VI che apre originlab [url:2x6j2ccg]http://wiki.originlab.com/~originla/wiki/index.php?title=LabVIEW:OA_OpenNewOrigin[/url:2x6j2ccg].
A Origin.IOApplication ho collegato una costante.
Ecco comunque il VI nello specifico.
Ciao e naturalmente grazie
----------------------------------------
AUTORE: 43
DATA :05/09/2012 - 10:38:47
----------------------------------------
[quote="Gauchio":28gnykpu]Grazie per l'interessamento!
Riporto il link della documentazione riguardo il VI che apre originlab [url:28gnykpu]http://wiki.originlab.com/~originla/wiki/index.php?title=LabVIEW:OA_OpenNewOrigin[/url:28gnykpu].
A Origin.IOApplication ho collegato una costante.
Ecco comunque il VI nello specifico.
Ciao e naturalmente grazie[/quote:28gnykpu]
speravo in una cosa diversa...
LabVIEW si interfaccia all' ActiveX Origin.IOApplication.
Non ci sono altri parametri se non metodi e proprietà del succitato ActiveX.
Non saprei come fare... se esistesse l'ActiveX a32 bit dovresti interfacciarti a quello?
Cmq l'activeX viene scelto da una lista. andando sulla costante che hai creato,
tasto dx del mouse
Select ActiveX Class --> Browse...
questo è l'unico modo per cambiare associazione, cioè per associare un ActiveX diverso...
ma non sappiamo cmq come funziona al suo interno l'ActiveX, come richiama Origin, come lo apre e come lo chiude....
solo qualcuno di originLab te lo può dire...
non saprei proprio come aiutarti...
bye
----------------------------------------
AUTORE: 3002
DATA :05/09/2012 - 13:05:54
----------------------------------------
Si l'ho già fatto! Ho visto tutta la carrellata di ActiveX di origin. Querllo che richiama l'applicazioneorigin è appunto IO.OriginApplication.
L'unica cosa da fare è provare a sentire un forum di OriginLab.
Se trovo una soluzione posto qualcosa.
Grazie
----------------------------------------
================================================================================
Property FP.origin
================================================================================
AUTORE: 660
DATA :06/09/2012 - 09:05:48
----------------------------------------
qualcuno sa che fine ha fatto questa comodissima property?
nelle versioni nuove dice che è obsoleta... però non mi sembra di aver trovato una valida alternativa...
[attachment=0:1f0khrgx]FP origin.png[/attachment:1f0khrgx]
Max
----------------------------------------
AUTORE: 43
DATA :06/09/2012 - 11:50:35
----------------------------------------
[quote="machyaer":192ruaom]qualcuno sa che fine ha fatto questa comodissima property?
nelle versioni nuove dice che è obsoleta... però non mi sembra di aver trovato una valida alternativa...
[attachment=1:192ruaom]FP origin.png[/attachment:192ruaom]
Max[/quote:192ruaom]
Mah! Questo post potrebbe essere collegato a quello di David... anche in quel post si parla di Origin...(
)
Hehe!! il vecchio VI non gira nella nuova versione di LabVIEW ?
Penso che il cambiamento sia stato introdotto dalla versione 8 di LabVIEW, correggetemi se sbaglio, cioè dall'introduzione degli "splitter" x cui il FP si può suddividere in "aree" contigue...
[attachment=0:192ruaom]new_origin.JPG[/attachment:192ruaom]
bye
----------------------------------------
AUTORE: 660
DATA :06/09/2012 - 14:13:18
----------------------------------------
ciao Paracarro,
si potremmo unire insieme le due discussioni e fare una bella insalata
comunque ad oggi (LV2011) quella property funziona ancora, però adesso che mi hai fatto vedere dove si trova la "nuova release" guardo se si riesce ad implementare
Grazie
Max
----------------------------------------
================================================================================
Grafica 2D
================================================================================
AUTORE: 4274
DATA :07/09/2012 - 13:36:07
----------------------------------------
Salve a tutti,
sono Luca e scrivo da Roma.
Dovrei capire la fattibilità un'applicazione LV in grado di prelevare con drag&drop delle figure geometriche in 2 dimesioni da una sorta di database(figure tipo quadrato, rettangolo, settore di corona circolare).
Poi le figure prelevate dovrebbero comparire su un'area di lavoro nella quale poterle accostare fra di loro trascinadole con il mouse e formare una sorta di insieme.
Le figure dovrebbero poter essere ruotate per stabilirne la disposizione e dovrebbero attaccarsi fra di loro con un effetto "calamita".
Ringrazio sin da ora chiunque possa aiutarmi.
Saluti
----------------------------------------
AUTORE: 1078
DATA :07/09/2012 - 15:28:29
----------------------------------------
Per lavorare con le immagini LV mette a disposizine degli sviluppatori una fantastica palet che ti permette di selezionare parte di un immagine, modificarla, spostarla, ruotarla etc...
Io quindi caricherei le immagini selezionate su controllo immagine, che "dovrebbe" consentire anche il drug&drop (uso il condizionale perchè non ho mai usato il dr&dp con le immagini). Inoltre per selezionare parte dell'immagine creata ti mette a dispozione gli eventi del mouse con i riferimenti (X, Y) della posizione del mouse stesso.
Sta a te poi implementare tutte le funzioni che ti servono.
Buon lavoro.
----------------------------------------
AUTORE: 4274
DATA :07/09/2012 - 16:09:50
----------------------------------------
Grazie Riccardo,
dalla tua risposta capisco quindi che è possibile gestire le immagini.
Io non dovrei modificare le figure dovrei poterle spostare come sono, diciamo in maniera rigida.
Sapresti darmi qualche info in più riguardo la palet e il caricamento immagini su "Controllo immagine"?
Io non le trovo sul mio LV, forse è un pacchetto aggiuntivo?
Grazie mille e perdonate le mie domande terra terra.
Luca
----------------------------------------
AUTORE: 1078
DATA :14/09/2012 - 08:24:34
----------------------------------------
che versione di LV stai usando?
Sinceramente non so se questa palet è un tool aggiuntivo o no, forse trovi queste info sul sito della NI.
Sicuramente lì trovi anche dei tutorials su come lavorare con le immagini. Cerca che chi cerca trova.
----------------------------------------
================================================================================
Controllo in retroazione con target definito da utente
================================================================================
AUTORE: 4187
DATA :07/09/2012 - 19:59:51
----------------------------------------
Buongiorno a tutti
Sono uno studente di Ing.Meccanica a Modena e, come progetto di tesi, devo eseguire il seguente programma in LabVIEW:
creare tramite circuito in retroazione (PID) un andamento del sistema di tipo: costante, sinusoidale, onda casuale (tutto definito tramite struttura case dall'utente) con sistema costituito da una cella di Peltier (raffreddamento), riscaldatore al silicone collegato all'alimentazione HP Agilent 6033A (potenza termica trasmessa tramite P=VI) e piastrina con termocoppia per la rilevazione della temperatura.
Il controllo dell'avvenuta stabilità del sistema avverrà tramite una FFT con la frequenza predominante senza altre armoniche.
Chiedo gentilmente come poter sviluppare il codice, sia come acquisizione del segnale che come gestione dell'intero schema a blocchi, fino alla stabilizzazione del sistema.
In allegato un possibile inizio della struttura case.
Grazie mille a tutti coloro che mi daranno assistenza.
----------------------------------------
AUTORE: 90
DATA :11/09/2012 - 12:22:32
----------------------------------------
Per la mia POCA esperienza rispondo solo a un paio delle tue domande:
HP (Agilent) 6033, ti direi che e' meglio non usare i driver costruttore perche' sono troppo "pesanti".
Per la FFT c'e' gia' (a partire dalla versione LV 6.0) un VI apposito.
Per il resto aspettiamo risposte.
Ciao
Kla
----------------------------------------
AUTORE: 645
DATA :18/10/2012 - 17:33:47
----------------------------------------
Per iniziare il progetto potresti creare una struttura sequenziale all'interno di un ciclo While.
In sequenza leggi il sensore, calcoli la tensione da fornire all'alimentatore, fornisci tensione in uscita e ricominci.
Poi iniziano le complicazioni: riesci a leggere tutti gli strumenti esterni? Hai già configurato l'acquisizione del sensore' Per comunicare con l'alimentatore puoi usre diverse soluzioni: se puoi una strada comoda è l'invio di comandi in formato alfanumerico (stringhe) secondo il protocollo di controllo remoto dell'alimentatore (dovresti trovarlo sul manuale).
Come mai la stabilizzazione viene decisa usando una FFT? Bello... ma non è sufficiente controllare pche la temperatura rimanga in un intervallo di valori intorno al valore desiderato per un tot di tempo?
Hai già i blocchi PID nella tua versione di LabView? Altrimenti puoi costruirli con le funzioni matematiche ma ti direi di cominciare dall'effetto proporzionale e poi decidi se aumentare la stabilità o inserire correzioni iniziali per raggiungere il valore desiderato.
----------------------------------------
================================================================================
Grafico valore-tempo da file
================================================================================
AUTORE: 4249
DATA :09/09/2012 - 12:42:45
----------------------------------------
Buongiorno,
dovendo visualizzare in un grafico i valori di tensione campionati da un'apparecchiatura ad intervalli di 10 minuti (fissi), prelevo da un file i dati (data e ora/valore). Il primo dato, quello temporale, riesco bene a convertirlo tramite "Date Rec to Timestamp" in un valore ben leggibile sull'asse x e riesco a visualizzare anche il valore su y. Il problema e che non riesco a sincronizzarli, cioè sembra che il grafico sia giusto, ma in realtà, in funzione della lunghezza del file che leggo, i valori vengono spalmati su un tempo errato.
Qualcuno saprebbe suggerirmi come sincronizzarli (se è possibile), tenendo presente che le mie conoscenze di Labview sono molto "basic".
Grazie in anticipo
Diego
----------------------------------------
AUTORE: 1078
DATA :10/09/2012 - 07:27:46
----------------------------------------
Probabilmente stai usi un waveform graph per visualizzare i dati. Questo no è il controllo più corretto da usare per il tuo caso. Ti suggerisco di passare all'utilizzo di un XY graph (trovi muna buona descrizione su come popolare questo tipo di grafico sull'help di labview). Gli XY graph ti permettono di abbinare correttamente la scala delle ascisse con quella delle ordinate, partendo da dati letti da un file o precedentemente costruiti.
In bocca al lupo.
----------------------------------------
AUTORE: 1078
DATA :10/09/2012 - 07:47:21
----------------------------------------
Ti allego anche un piccolo esempio, il VI è stato fatto con LV2011. Se hai difficoltà a vederlo basta dirlo che lo convertiamo.
Attento alle proprietà dell'oggetto XY graph, le ho personalizzate, specialmente la visualizzazione dell'asse dei tempi. Non è in Autoscale e ho personalizzato il formato dell'ora.
Spero ti sia di aiuto.
----------------------------------------
AUTORE: 4249
DATA :10/09/2012 - 14:45:36
----------------------------------------
Grazie tante a chi è intervenuto. Ho provato ad "adattare" il .vi di Ricky al mio file, che metto in allegato con anche il file delle misure che utilizzo, ma non sono riuscito a farlo andare, non credo di aver capito bene il comportamente del "for loop", che infatti nel mio non funziona.
Quindi nel mio file ho un grafico (sopra) con gli assi non sincronizzati, e sotto l'adattamento del "for loop" di Ricky dove devo aver sbagliato qualcosa.
Se gli poteste dare un occhio mi fareste una grande cortesia. Il formato della data è nel file è DD:MM:YY:HH:MM, ma è già convertito in timestamp nel .vi.
Spero, a "buon rendere"!
Grazie in anticipo
Diego
----------------------------------------
AUTORE: 1078
DATA :14/09/2012 - 08:22:14
----------------------------------------
Ciao Diego,
Il primo errore che fai nel tuo Sw è che nonostante tu legga 1000 byte dal tuo file txt, rappresenti solo la prima riga del file nel tuo grafico. La variazione di valori che vedi nella waveform che rappresenti e visualizzi nel controllo che hai chiamato "grafico" in realtà è la rappresentazione grafica di dei valori ascii che converti prendendoli dalla stringa origine.
Ho modificato il tuo VI in modo da farti capire come leggere i 1005 byte dal tuo file (1005 byte e non mille per non troncare nessuna riga del file in modo anomalo) e rappresentarlo correttamente nel grafico XY ("sottostante"). C'è un valore su cui dovresti indagare, io putroppo non ho molto tempo oggi, ma tornerò appena posso sul codice...
Buon lavoro.
NB: Per chi volesse partecipare alla discussione, allego solo il VI modificato, il file per caricare i dati è quello già postato da Diego.
----------------------------------------
AUTORE: 4249
DATA :18/09/2012 - 19:42:45
----------------------------------------
Ciao Ricky,
scusa se ti rispondo solo ora ma sono in Cina in questi giorni ed è un pò rocambolesco riuscire a stare un pò al computer.
Intanto grazie, ho guardato il tuo file, e sto cominciando a capire come gestire questo tipo di segnali.
Avevo preso la cosa un pò sottogamba. Dovrei riuscire a fare andare tutto. Non mi è chiaro perchè a sx del grafico mi faccia quella cuspide sul valore di 25V.
Era quello a cui ti riferivi?
Ciao
Diego
----------------------------------------
AUTORE: 4249
DATA :18/09/2012 - 19:54:59
----------------------------------------
Beccato! Era un valore sbaglaito nella sesta riga del file .txt, chissà perchè.
Sembra funzionare tutto!
Ancora grazie
Diego
----------------------------------------
AUTORE: 1078
DATA :25/09/2012 - 10:50:44
----------------------------------------
Bene!!!
----------------------------------------
================================================================================
Comandi sul buffer Visa Write
================================================================================
AUTORE: 4230
DATA :10/09/2012 - 09:13:27
----------------------------------------
Buongiorno,
Per la mia attività di tesi vorrei interfacciare uno strumento di misura con Labview, per poi acquisire i dati ed elaborarli.
lo strumento è un vibrometro ed è provvisto di bluetooth (profilo SPP), quindi sto studiando i blocchi VISA di Labview per gestire la comunicazione, premettendo che vorrei usare questi e non i moduli bluetooth di labview.
So che a grandi linee bisogna inviare un comando/richiesta al dispositivo tramite il VISA WRITE, quindi una query per ottenere ad esempio il valore di una misura, e leggere il dato con VISA READ.
Il problema è che non conosco la sintassi dei comandi da inviare. il manuale del vibrometro non riporta nulla sul controllo da remoto.
Chiedo a voi esperti se c'è un modo per comunicare col dispositivo e acquisire tutti i valori che misura, o se esiste un protocollo standard.
Vi ringrazio in anticipo
----------------------------------------
AUTORE: 43
DATA :10/09/2012 - 11:33:51
----------------------------------------
[quote="fuoritempo":1h06sg8c]Buongiorno,
Per la mia attività di tesi vorrei interfacciare uno strumento di misura con Labview, per poi acquisire i dati ed elaborarli.
lo strumento è un vibrometro ed è provvisto di bluetooth (profilo SPP), quindi sto studiando i blocchi VISA di Labview per gestire la comunicazione, premettendo che vorrei usare questi e non i moduli bluetooth di labview.
So che a grandi linee bisogna inviare un comando/richiesta al dispositivo tramite il VISA WRITE, quindi una query per ottenere ad esempio il valore di una misura, e leggere il dato con VISA READ.
Il problema è che non conosco la sintassi dei comandi da inviare. il manuale del vibrometro non riporta nulla sul controllo da remoto.
Chiedo a voi esperti se c'è un modo per comunicare col dispositivo e acquisire tutti i valori che misura, o se esiste un protocollo standard.
Vi ringrazio in anticipo[/quote:1h06sg8c]
Per prima cosa dovresti cercare informazioni sul sito del produttore, se citassi marca e modello del vibrometro potresti ricevere + facilmente un aiuto.
Per favore se puoi, cita sempre la versione di LabVIEW che utilizzi
Per secondo, io non darei x scontato che il vibrometro sia "visibile" come risorsa VISA di tipo "Bluetooth", anche xkè il bluetooth non è contemplato fra i tipi di device supportati da VISA: GPIB, serial (RS232, 422, 485),
----------------------------------------
AUTORE: 4230
DATA :10/09/2012 - 17:57:15
----------------------------------------
Grazie per la risposta.
La versione di Labview è la 8.5.
Il Measure & Automation Explorer riconosce il dispositivo sulla seriale virtuale COM4, infatti riesco anche ad aprire il VISA test panel, però non saprei che tipo di comandi inserire per fare il test su Write e Read.
Ad ogni modo, e correggimi se sbaglio, anche se usassi i moduli bluetooth di Labview dovrei affrontare il problema del Bluetooth Write e quindi conoscere la sintassi di comunicazione.
----------------------------------------
AUTORE: 43
DATA :10/09/2012 - 22:25:18
----------------------------------------
[quote="fuoritempo":h2rt2dvh]Grazie per la risposta.
La versione di Labview è la 8.5.
Il Measure & Automation Explorer riconosce il dispositivo sulla seriale virtuale COM4, infatti riesco anche ad aprire il VISA test panel, però non saprei che tipo di comandi inserire per fare il test su Write e Read.
Ad ogni modo, e correggimi se sbaglio, anche se usassi i moduli bluetooth di Labview dovrei affrontare il problema del Bluetooth Write e quindi conoscere la sintassi di comunicazione.[/quote:h2rt2dvh]
Ma cos'è 'sto vibrometro, un'apparecchiatura segreta?
Non puoi scrivere di che marca e modello si tratta?
Come immaginavo, il dispositivo appare connesso tramite una seriale virtuale.
Come tutte le risorse , prima di poter comunicare con esse vanno, "aperte"/ allocate esclusivamente o meno e poi configurate. al termine del loro utilizzo devono essere "chiuse"/ rilasciate.
Per configurare correttamente la tua seriale devi conoscere, per prima cosa Baud rate, N. data bits, Parità, N. bit di stop etc...
queste info puoi averle solamente consultando i manuali a tua disposizione o consultando i manuali in formato elettronico che sicuramente saranno disponibili sul sito del produttore...
bye
----------------------------------------
================================================================================
eseguibile di labview si blocca con windows 7
================================================================================
AUTORE: 3962
DATA :19/09/2012 - 15:31:42
----------------------------------------
Buonasera a tutti!
Ho un problema abbastanza grosso, ho creato un eseguibile del programma labview2011 che ho sviluppato, il tutto era stato fatto su windows xp.
L'eseguibile è stato messo su un pc con windows 7 e a random (capita dopo 2 ore, 30 min o 1/2 giorni) si blocca senza dare nessuno errore e uno dei 2 processori del pc rimane inchiodato, per sbloccarlo devo chiudere il processo nel task manager.
Con windows xp non è ancora capitato però per ora è stato usato al massimo per 5 ore consecutive.
Ho provato ad aggiornare anche il run-time ma nulla.
E' capitato a qualcun'altro? ci sono delle incopatibilità con windows 7 o ho sbagliato io a creare l'eseguibile?
Grazie mille
Luca
----------------------------------------
AUTORE: 43
DATA :19/09/2012 - 17:05:03
----------------------------------------
Problemi di accesso nella lettura/scrittura file o nell'accesso ad altre risorse?
Devi debuggare.
Logga tutto il possibile per capire qual'è il punto in cui rimane in hang ( o loop che dir si voglia).
Win7 rispetto a XP richiede più "autorizzazioni" xkè è più "sicuro".
La soluzione ai problemi sono da ricercare in quell'ambito.
bye
----------------------------------------
AUTORE: 3962
DATA :20/09/2012 - 09:46:40
----------------------------------------
E' un programma di acquisizione dati ed elaborazione, sembrerebbe che errori di lettura/scrittura/acquisizione non ce ne siano perchè per un tot di tempo lavora senza problemi.
Come faccio a fare il debug dell'eseguibile si win 7? Su quel pc c'è solo il run-time per far avviare l'eseguibile.
----------------------------------------
AUTORE: 3962
DATA :25/09/2012 - 15:10:11
----------------------------------------
Ho provato a fare prove lunghe su pc con win xp e non alcun problema, ho provato a creare l'eseguibile da pc con win 7 e anche se non subito ma dopo un giorno si è bloccata senza restituire errori e con una CPU su 2 che lavorava al massimo..
qualcuno riuscirebbe ad aiutarmi a venirne a capo?
mega grazie!
----------------------------------------
AUTORE: 482
DATA :01/10/2012 - 07:57:52
----------------------------------------
Se sul pc hai solo il runtime, il debug non è fattibile...almeno non inteso come controllo del dataflow.
Potresti mettere su pannello degli indicatori che ti aiutino ad identificare il tuo problema, ad esempio qualcosa che ti dica quanta memoria hai allocato ecc ecc.
C'e' una cosa pero' che non mi quadra. Hai detto che su win7 un processore lavora al massimo mentre l'altro se ne sta tranquillo.
Questo mi fa pensare che da qualche parte hai un ciclo non temporizzato. Non so come funziona win7 ma magari dopo un po' si rompe le palle di avere il processore al massimo e fa qualcosa per "rilassarsi" e ti manda tutto in vacca.
Il mio consiglio è quello di seguire una smeplice regoletta base di labview e cioè di inserire SEMPRE in TUTTI i cicli while un "wait until next multiple" anche solo a 1 ms (molto meglio se di piu') ma inseriscilo cosi' non vai ad intasare il processore con calcoli inutili.
----------------------------------------
AUTORE: 3962
DATA :01/10/2012 - 10:58:28
----------------------------------------
ok provo a controllare ed a inserire quel blocco.
Grazie
----------------------------------------
AUTORE: 3962
DATA :05/10/2012 - 15:42:16
----------------------------------------
Mettendo il "wait until next multiple" la cpu non si sovvraccarica però il programma si blocca comunque. Ho messo anche dei segnalatori per vedere il punto di blocco ed è nel punto di comunicazione con lo strumento. Può essere un incompatibilità dei driver con windows 7 anche se il blocco avviene dopo molte ore di acquisizione?
----------------------------------------
AUTORE: 482
DATA :08/10/2012 - 14:18:05
----------------------------------------
...magari dovresti mettere un ciclo di reset della comunicazione in caso di errore.
----------------------------------------
AUTORE: 3962
DATA :08/10/2012 - 14:33:05
----------------------------------------
Come faccio a mettere questo ciclo di reset?
il problema è che non viene dato nessun segnale di errore nonostante ci sia tutta le gestione errori inserita, semplicemente si blocca i comandi sono accessibili ma non rispondono.
Grazie per gli aiuti
----------------------------------------
AUTORE: 482
DATA :09/10/2012 - 07:26:35
----------------------------------------
"i comandi sono accessibili ma non rispondono" cosa vuol dire?
----------------------------------------
AUTORE: 3962
DATA :09/10/2012 - 15:15:28
----------------------------------------
Che ad esempio i pulsanti del front panel possono essere schiacciati ma non fanno nessuna azione..
----------------------------------------
AUTORE: 482
DATA :10/10/2012 - 08:10:31
----------------------------------------
direi che l'unica è mettere degli indicatori visibili che fanno una specie di debug in quella parte di codice
----------------------------------------
================================================================================
Inserire un immagine diversa per ogni elemento di un cluster
================================================================================
AUTORE: 3465
DATA :25/09/2012 - 09:19:32
----------------------------------------
Salve a tutti,
volevo sapere se è possibile inserire un immagine diversa per ciascun elemento di un cluster
----------------------------------------
AUTORE: 1078
DATA :25/09/2012 - 09:40:25
----------------------------------------
ciao @daniroma83
Potresti spiegarti meglio?
----------------------------------------
AUTORE: 43
DATA :04/10/2012 - 09:13:53
----------------------------------------
non so a cosa ti riferisca con precisione, ma penso sia possibile.
Gli elementi di un cluster sono "eterogenei" per definizione.
cosa diversa è se tu volessi cambiare una caratteristica di un cluster... dentro un 'array. Gli elementi degli array sono dello stesso tipo ed hanno lo stesso aspetto grafico.
bye
----------------------------------------
================================================================================
Help su Driver Agilent 54830B
================================================================================
AUTORE: 90
DATA :26/09/2012 - 09:54:10
----------------------------------------
Ciao a tutti,
ho una macchina target con LabVIEW 7.1 (preistoria eh?) e ho la necessita' di comandare un Oscilloscopio Agilent Infiniium 54830B via GPIB.
Il problema e' che sul sito National nei driver c'e' pero' e' per la versione 8.0, su un'altra macchina ho la 8.2 e non mi permette di convertire in 7.1
Installare 8.2 sulla macchina target e' impensabile perche' ha un HD ridicolmente piccolo.
C'e' qualche suggerimento (a parte riscriverlo o mettersi a piangere in un angolo)?
Grazie dell'attenzione.
Claudio
----------------------------------------
AUTORE: 645
DATA :18/10/2012 - 17:35:38
----------------------------------------
Se puoi comunicare con il protocollo alfanumerico (cerca protocollo per controllo remoto nel manuale dello strumento) puoi ricostruire le funzioni che ti servono con relativamente poca fatica se sai lavorare con i blocchi VISA.
----------------------------------------
AUTORE: 90
DATA :24/10/2012 - 13:37:50
----------------------------------------
Ti ringrazio per la risposta, comunque ho risolto in un altro modo, ho i CD di installazione di LabVIEW 5.0 e li ci sono tutti i driver fatti senza appoggiarsi sulle dll quindi e' bastato fare una copia e il gioco e' fatto.
Rifare un driver per un oscilloscopio di quel tipo e' un delirio.
Solo per comandare i marker ci sono 24 pagine di comandi.
Grazie comunque.
Ciao
----------------------------------------
================================================================================
Consigli sulla programmazione
================================================================================
AUTORE: 4578
DATA :27/09/2012 - 15:24:20
----------------------------------------
Salve a tutti,
vorrei avere qualche consiglio su quali funzioni Labview devo utilizzare per poter programmare il seguente articolo? Grazie
http://www.electroyou.it/admin/wiki/potenza
----------------------------------------
AUTORE: 4578
DATA :27/09/2012 - 16:18:27
----------------------------------------
Innanzitutto vorrei visualizzare un segnale no sinusoidale, come faccio a generare un segnale non sinusoidale? Non c'è qualche esempio? Grazie
----------------------------------------
================================================================================
Lookout 6.2
================================================================================
AUTORE: 4603
DATA :29/09/2012 - 08:04:44
----------------------------------------
Salve
Sono alle prime armi con questo software per fare supervsione.
Ho scaricato diversi manuali ma senza capirci qualcosa...
Volevo che sul video mi comparissero delle scritte quando avviene un qualcosa ( tipo sgancio inverter )
Qualcuno sà aiutarmi?
----------------------------------------
================================================================================
Aiuto principiante!
================================================================================
AUTORE: 4610
DATA :29/09/2012 - 16:22:42
----------------------------------------
Salve a tutti ho appena iniziato ad usare Labview a scuola e non sono ancora molto pratico.
Il mio problema riguarda la funzione"Select" in "Programmi">"Comparison". Non ho ancora capito come utilizzarlo al meglio, quindi una guida base sarebbe utilissima!
In particolare vorrei fare in modo che un numero venga "analizzato" ( se è il termine giusto) : se il numero è maggiore di zero vorrei che venga visualizzato su una stringa ( per poi continuare ad utilizzarlo nel programma). Se minore vorrei far apparire un messaggio di errore.
Grazie in anticipo e scusate se non uso termini specifici!
P.S. Ho già provato ad utilizzare l'help del programma, ma non ci ho apito molto. Forse bisogna utilizzare altre funzioni per quello che voglio fare?
----------------------------------------
AUTORE: 301
DATA :01/10/2012 - 07:38:39
----------------------------------------
Prova a studiarti un po l'esempio....
Aris
----------------------------------------
================================================================================
Signal Generator by Duration
================================================================================
AUTORE: 4578
DATA :01/10/2012 - 09:19:03
----------------------------------------
Salve, posso creare armoniche con Signal Generator by Duration?
----------------------------------------
================================================================================
Equazione secondo grado.
================================================================================
AUTORE: 4623
DATA :01/10/2012 - 17:22:52
----------------------------------------
Salve a tutti.
Sono uno studente che ha appena iniziato ad utilizzare Labview a scuola ( un istituto tecnico a Padova ) e ho un dubbio.
Il nostro professore, come inizio ci ha dato da sviluppare un .vi n cui immettere a, b, c, ( ax^2+bx+c) e trovare i due risultati x1 e x2.
Ho sviluppato un progetto tutto mio, ma non è quello che vuole il prof. La parte teorica è a posto ( cioè come calcolare x1 e x2), solo che non riesco a trovare IL modo per inserire dei messaggi di errore: per esempio quando a<0, oppure quando delta (discriminante in un'equazione ) è uguale a zero.
Il mio professore ha detto che per i messaggi di errore vorrebbe che utilizzassimo delle " String constant", solo che provando io stesso non riesco a capire come.
Mi affido a voi per un semplice aiuto
(per favore se è possibile soluzioni il più semplice possibile se no si capisce che l'idea non è mia)
GRAZIE IN ANTICIPO, SONO NELLE VOSTRE MANI!!
----------------------------------------
AUTORE: 301
DATA :02/10/2012 - 06:34:15
----------------------------------------
Magari se posti quello che hai fatto, possiamo aiutarti un po di più....
In ogni caso, guardati la paletta Programming ==> Comparison e sfrutta delle strutture "case"...
Aris
----------------------------------------
================================================================================
identificare ID3 TAG
================================================================================
AUTORE: 482
DATA :09/10/2012 - 14:04:04
----------------------------------------
...ma ciao!
ho appena recuperato dei dati da un hard disk danneggiato.
Tutti i file MP3 adesso hanno dei nomi incrementali ma hanno mantenuto correttamente i TAG ID3.
Per questo volevo fare un programmino che in base a quelli, mi rinominasse i file e mi creasse l'apposita cartella.
lo standard vuole che gli ID3 stiano nei primi 128 byte del file, ma non è sempre cosi'.
Fatto sta che leggendo i file mp3 come file di testo, trovo i TAG (che windows riconosce correttamente) ma non riesco a capire come fare a "separarli".
Non c'e' un carattere separatore e non trovo documentazione riguardante la sintassi.
Qualcuno di voi ha già avuto a che fare con gli ID3?
----------------------------------------
AUTORE: 301
DATA :09/10/2012 - 15:22:25
----------------------------------------
Una roba tipo questa?
Così, al volo......
----------------------------------------
AUTORE: 482
DATA :10/10/2012 - 08:16:49
----------------------------------------
Ottimo!
Per quello che devo fare puo' andare bene, ma mi sarebbe piaciuto avere una sintassi dei TAG in modo da poterli estrapolare direttamente dalla codifica ASCII senz apassare dagli activex.
comunque grazie
----------------------------------------
AUTORE: 301
DATA :10/10/2012 - 08:25:38
----------------------------------------
He he....hai anche delle pretese!
Aris
----------------------------------------
AUTORE: 301
DATA :10/10/2012 - 08:58:02
----------------------------------------
Da Wikipedia
[url:fvdanbce]http://en.wikipedia.org/wiki/ID3[/url:fvdanbce]
Se ti vuoi scornare un po.....
----------------------------------------
AUTORE: 301
DATA :10/10/2012 - 10:03:08
----------------------------------------
[url=http://www.mpx.cz/mp3manager/tags.htm//url:36m3xnah]QUI[/url:36m3xnah] c'è qualcosina in piu....
Aris
----------------------------------------
AUTORE: 482
DATA :11/10/2012 - 08:14:08
----------------------------------------
il problema piu' gande è che il sito ufficiale dove pensavo di trovare le info che mi servivano..a quanto par enon esiste piu'
----------------------------------------
AUTORE: 301
DATA :11/10/2012 - 09:04:55
----------------------------------------
Ottimo!!!!
Comunque, dalla letta veloce che ho dato ai siti postati......il tutto mi sembra alquanto incasinato......
Mi sa che appoggiarti agli activex di WMP ti risparmia un bel po di tempo.....
Aris
----------------------------------------
================================================================================
Conversione da decimale a binario.
================================================================================
AUTORE: 4623
DATA :11/10/2012 - 14:17:48
----------------------------------------
Salve a tutti.
Avrei bisogno di un semplice .vi che mi trasformi un numero da decimale in binario. E' da poco che uso Labview e non ho molta familiarità.
Qualcuno ha qualche suggerimento o magari un vi già pronto?
Grazie
----------------------------------------
AUTORE: 301
DATA :12/10/2012 - 07:02:35
----------------------------------------
Programming >> numeric >> conversion >> number to boolean array.
Aris
----------------------------------------
AUTORE: 482
DATA :12/10/2012 - 07:19:45
----------------------------------------
senno' se è solo un problema di visualizzazione basta andare nelle proprietà del controllo/indicatore
----------------------------------------
AUTORE: 4623
DATA :12/10/2012 - 14:46:31
----------------------------------------
Forse non mi sono spiegato al meglio: sapevo di poter convertire un numero da decimale a binario automaticamnete con Labview, ma a me serve un vi che lo fa "manulamente". Infatti il prof ci ha dato questo problema come esercitazione.
----------------------------------------
AUTORE: 301
DATA :12/10/2012 - 15:21:18
----------------------------------------
Un po di sforzo, però.....
Es:
235/2=117 resto 1
117/2=58 resto 1
58/2=29 resto 0
29/2=14 resto 1
14/2=7 resto 1
7/2=3 resto 1
3/2=1 resto 1
1/2=0 resto1
Guarda caso, i resti fanno "11010111"
Aris
----------------------------------------
AUTORE: 4623
DATA :14/10/2012 - 17:32:27
----------------------------------------
Aris hai ragione!
1.Come posso trasformare i resti in stringhe per poi fare una stringa unica?
2. Come fare in modo che le divisioni per 2 finiscano quando le cifre sono finite?
grazie in anticipo!!
----------------------------------------
AUTORE: 301
DATA :14/10/2012 - 18:15:12
----------------------------------------
funzione quotient&reminder, funzione number to decimal string, una funzione di comparazione, un ciclo while ed un minimo di impegno.....
Almeno posta qualche prova tua, qui c'è un tot di gente che lavora e non credo che molti stiano qui a farti i copiti a casa.
Avessi auto io la fortuna di poter studiare labview a scuola.....
Aris
----------------------------------------
AUTORE: 4623
DATA :16/10/2012 - 18:23:47
----------------------------------------
Grazie Aris hai ragione....adesso provo e vedo di mettere qualcosa
GRAZIE 1000!!
----------------------------------------
AUTORE: 301
DATA :16/10/2012 - 18:29:59
----------------------------------------
Bravo!
----------------------------------------
================================================================================
Eseguire 8 file .vi contemporaneamente
================================================================================
AUTORE: 4781
DATA :12/10/2012 - 09:37:51
----------------------------------------
Ciao a tutti. Non ho mai usato LabView e sto facendo una tesi in cui devo obbligatoriamente utilizzarlo!!!
Sto lavorando con 8 motori lineari, movimentati con una UMI e una PXI della NI. Il tutto è gestito e controllato da LabView.
Ho 8 file .vi con cui comando in termini di velocità, accelerazione e decelerazione, nonchè in termini di posizione desiderata i motori.
Finora posso controlkare indipendentemente ogni singolo motore ma io vorrei che partissero tutti insieme!!
Vorrei far partire contemporaneamente gli 8 file di Labview magari con un file con un semplice PLAY che avvia tutti gli 8 file e uno STOP che li ferma.
Chiedo: è realizzabile una cosa del genere, avete dei file che mi aiutino?
Grazie a tutti per l'attenzione! Confido in Voi!!
----------------------------------------
AUTORE: 301
DATA :15/10/2012 - 12:48:19
----------------------------------------
Chiaro....ma non troppo.
Quello che devi fare, può essere sviluppato in diversi modi:
1_ un singolo vi con più cocli paralleli.
2_ un singolo ciclo che pilota i vari segnali di un unico task.
3_ un ciclo con all'interno i tuoi 8 subvi in parallelo.
4_ un vi server che lancia 8 vi (o 8 istanze dello stesso vi).
In ogni caso, se non hai bisogno di precisione sul "tempo di start" dovresti usare un trigger HW.
Aris
----------------------------------------
AUTORE: 4781
DATA :16/10/2012 - 15:54:13
----------------------------------------
Grazie molte. Ho semplicemente risolto facendo due diagrammi a blocchi uguali nei quali cambio a piacimento l'asse da controllare con le opportune specifiche di moto (al momento comando solo due assi ma a breve anche gli altri 6 aggiuntivi.)
Quindi faccio eseguire un certo numero di volte il ciclo in modo da ripetere i movimenti.
[img:2d4aeodj]http://imageshack.us/a/img829/5972/immaginedwig.jpg[/img:2d4aeodj]
L'ULTERIORE DOMANDA CHE PONGO E':
[b:2d4aeodj]se io volessi un ritardo come posso fare? Nella destra di ciascun for ho messo un Blocco Wait nel quale ho impostato un delay di 3000 ms ma sembra come non funzionare. Any ideas?
[/b:2d4aeodj]
Grazie a tutti!!!!
----------------------------------------
AUTORE: 482
DATA :17/10/2012 - 07:14:12
----------------------------------------
...ma ciao!
Due piccole note:
1) L'inizializzazione , la metterei fuori da tutti i cicli e sfrutterei gli shift register per tenere "vivi" i riferimenti. In questo modo eviti ogni volta di reinizializare il tutto.
2) Il wait deve essere eseguito dopo il ciclo. Cosi' come l'hai messo, è scollegato da tutto quindi puo' essere eseguito sia prima che dopo.
Per avere la garanzia che venga eseguito dopo, ti consiglio di metterlo in una "flat sequence", praticamente incorniciarlo, e far arrivare sui bordi di quella cornice un filo che arriva dall'ultimo blocchetto eseguito. In questo modo, secondo la logica del dataflow di labview, quel wait non verrà eseguito finchè il dato portato dal filo non sarà disponibile, quindi solo a fine movimento.
----------------------------------------
AUTORE: 4781
DATA :18/10/2012 - 12:12:28
----------------------------------------
Grazie mille per le dritte. Ho fatto per il timer come dicevi e tutto è andato esattamente come volevo.
Ora metto qui il block diagram al quale sono pervenuto.
[img:3t8785eq]http://imageshack.us/a/img35/5208/finale2assi.th.jpg[/img:3t8785eq]
A questo punto con questo codice io comando due assi dei miei 2 motori indipendentemente.
Ora se io volessi comandare contemporaneamente ma indipendentemente altri 6 motori (totale 8 motori) basta che faccio copia e incolla degli schemi come ho fatto.
[b:3t8785eq]Secondo voi potrei avere problemi di tempi nel comandare gli otto motori (contemporaneità dei movimenti) e qualora la risposta sia affermativa, esiste su Labview un sistema per eliminare questo problema.
[/b:3t8785eq]
Grazie davvero a tutti.
----------------------------------------
AUTORE: 4781
DATA :18/10/2012 - 12:20:23
----------------------------------------
[quote="carloemme":2u46rn44]Grazie mille per le dritte. Ho fatto per il timer come dicevi e tutto è andato esattamente come volevo.
Ora metto qui il block diagram al quale sono pervenuto.
[img:2u46rn44]http://imageshack.us/a/img35/5208/finale2assi.jpg[/img:2u46rn44]
A questo punto con questo codice io comando due assi dei miei 2 motori indipendentemente.
Ora se io volessi comandare contemporaneamente ma indipendentemente altri 6 motori (totale 8 motori) basta che faccio copia e incolla degli schemi come ho fatto.
[b:2u46rn44]Secondo voi potrei avere problemi di tempi nel comandare gli otto motori (contemporaneità dei movimenti) e qualora la risposta sia affermativa, esiste su Labview un sistema per eliminare questo problema.
[/b:2u46rn44]
Grazie davvero a tutti.[/quote:2u46rn44]
----------------------------------------
AUTORE: 301
DATA :18/10/2012 - 12:29:10
----------------------------------------
Non dovresti avere problemi, dato che i cicli non sono sequenziali ma paralleli.
Aris
----------------------------------------
AUTORE: 4781
DATA :18/10/2012 - 12:55:26
----------------------------------------
[quote="aris":12rqy386]Non dovresti avere problemi, dato che i cicli non sono sequenziali ma paralleli.
Aris[/quote:12rqy386]
Grazie Aris ti dirò appena effettuerò le prove, anche se la tua risposta è molto incoraggiante
----------------------------------------
================================================================================
CDC Microchip e seriale
================================================================================
AUTORE: 4249
DATA :12/10/2012 - 19:08:51
----------------------------------------
Buonasera a tutti.
Ho creato un programma che comunica con un dispositivo con processore Microchip dotato di CDC, che viene visto come porta COM dal PC.
L'eseguibile di Labview comunica in seriale. Funziona molto bene su XP, mentre con Windows 7 va in blocco con schermata blu in un tempo variabile da pochi secondi a qualche minuto.
Qualcuno ha già avuto e affrontato di questi problemi?
Grazie
Diego
----------------------------------------
================================================================================
modifica cursori,adattamento monitor e trasformata fourier
================================================================================
AUTORE: 4802
DATA :13/10/2012 - 13:48:16
----------------------------------------
Salve a tutti. Vorrei gentilmente chiedere 3 cose:
1)ho abilitato i cursori all'interno di un grafico. Per alcuni di essi ho bisogno solamente dell'asse x (o y a seconda del cursore). Ogni cursore però è formato sia dall'asse x che y. Sul grafico quindi è inutile che venga visualizzato l'asse x quando magari muovo solo quello y. C'è un modo per elimare o oscurare uno dei due?
2)siccome dovrò cambiare spesso monitor esiste un'opzione che adatta automaticamente il vi alla risoluzione di un nuovo schermo?
3)acquisisco delle forme d'onda (waveform) su cui devo applicare la trasformata di fourier e calcolare lo spettro in ampiezza ma non so come muovermi. Siccome sono concetti a me nuovi fourier e lo spettro in ampiezza, gentilmente potreste un pochettino guidarmi?
Vi ringrazio molto per l'aiuto.
----------------------------------------
AUTORE: 482
DATA :15/10/2012 - 07:51:37
----------------------------------------
1) Se clikki visualizzi la palette dei cursori del grafico poi col destro vai sulle proprietà il cursore puo' essere visualizzato in moltissimi modi, tra cui anche solo una riga verticale o solo orizzontale a seconda di cosa hai bisogno
2) Si esiste l'opzione. Vai sull'icona del vi in alto a destra e credo sia in window size o qualcosa del genere. Tuttavia ti sconsiglio di usarla.
Non si ha mai la garanzia che tutto funzioni a dovere. Se puoi fai delle prove m se conti di farlo alla cieca quasi sicuramente ti troveresti delle sorprese nell'auto resizing. Scegli piuttosto una risoluzione di riferimento ed usa quella per tutti i monitor.
3) Sono concetti che anche io non ho mai trattato ma tra le funzioni di analisi dei segnali e matematiche ci sono i blocchetti che fanno al caso tuo.
----------------------------------------
AUTORE: 4802
DATA :15/10/2012 - 14:31:00
----------------------------------------
[quote="gepponline":2efmonzl]1) Se clikki visualizzi la palette dei cursori del grafico poi col destro vai sulle proprietà il cursore puo' essere visualizzato in moltissimi modi, tra cui anche solo una riga verticale o solo orizzontale a seconda di cosa hai bisogno
2) Si esiste l'opzione. Vai sull'icona del vi in alto a destra e credo sia in window size o qualcosa del genere. Tuttavia ti sconsiglio di usarla.
Non si ha mai la garanzia che tutto funzioni a dovere. Se puoi fai delle prove m se conti di farlo alla cieca quasi sicuramente ti troveresti delle sorprese nell'auto resizing. Scegli piuttosto una risoluzione di riferimento ed usa quella per tutti i monitor.
3) Sono concetti che anche io non ho mai trattato ma tra le funzioni di analisi dei segnali e matematiche ci sono i blocchetti che fanno al caso tuo.[/quote:2efmonzl]
Ti ringrazio sei stato molto gentile e disponibile.
1)l'ho trovato
2)ti allego lo screen. praticamente come dovrei settare le opzioni?
3)provo a cercare qualcosa in internet in merito l'analisi dei segnali.
Grazie ancora
----------------------------------------
AUTORE: 4802
DATA :15/10/2012 - 14:36:36
----------------------------------------
ecco
----------------------------------------
AUTORE: 4802
DATA :15/10/2012 - 14:39:47
----------------------------------------
scusa è un pò piccola la foto ma più grande non me la faceva allegare
----------------------------------------
AUTORE: 482
DATA :16/10/2012 - 07:18:08
----------------------------------------
devi semplicemente mettere il check sul quadratino non selezionato
----------------------------------------
AUTORE: 4802
DATA :22/10/2012 - 23:22:50
----------------------------------------
Vorrei chiedervi un'altra cortesia gentilmente.
Non ho trovato delle librerie in labview per monitorare l'uso della ram e della cpu. Sapete se esistono?
In pratica vorrei inserire nel vi un qualcosa che monitora il consumo di ram e cpu.
Grazie mille
----------------------------------------
AUTORE: 301
DATA :23/10/2012 - 06:21:11
----------------------------------------
Se quardi tra gli esempi, qualcosa c'è........utilizza Activex (se non sbaglio)
Aris
----------------------------------------
AUTORE: 4802
DATA :23/10/2012 - 16:41:35
----------------------------------------
ma posso usarlo anche su un pc normale? perchè il programma vi che utilizzo non gira su un server
----------------------------------------
AUTORE: 301
DATA :23/10/2012 - 16:58:24
----------------------------------------
?!?
in che senso?
Che os ha il server? Hai installato il runtime?
----------------------------------------
AUTORE: 4802
DATA :24/10/2012 - 12:16:39
----------------------------------------
no un attimo, forse mi sto spiegando male. Allora io ho solo "labview 2010" installato su un pc su cui gira un vi che fa acqusizione dati. Ho appunto la necessità di inserire all'interno di tale vi un controllo di cpu e ram. Cosa devo fare precisamente passo per passo? spero di essermi spiegato. Grazie ancora
----------------------------------------
AUTORE: 4802
DATA :24/10/2012 - 12:18:03
----------------------------------------
[quote="MrDundee":v867cy5l]no un attimo, forse mi sto spiegando male. Allora io ho solo "labview 2010" installato su un pc su cui gira un vi che fa acqusizione dati. Ho appunto la necessità di inserire all'interno di tale vi un controllo di cpu e ram. Cosa devo fare precisamente passo per passo? spero di essermi spiegato. Grazie ancora
[/quote:v867cy5l]
controllo di [i:v867cy5l]consumo[/i:v867cy5l] di cpu e ram.
----------------------------------------
AUTORE: 301
DATA :24/10/2012 - 12:23:19
----------------------------------------
ok, tra gli esempi di LV trovi un vi che replica il "task manager" (comunicating with external applications>>.NET>>simple task monitor).
Utilizza controlli .NET.
cosa fare......lo apri, cerchi di capire il codice (il possibile) e riutilizzi quello che ti serve (copi, incolli, adatti)!
Aris
----------------------------------------
AUTORE: 4802
DATA :24/10/2012 - 15:43:48
----------------------------------------
[quote="aris":37t42k6y]ok, tra gli esempi di LV trovi un vi che replica il "task manager" (comunicating with external applications>>.NET>>simple task monitor).
Utilizza controlli .NET.
cosa fare......lo apri, cerchi di capire il codice (il possibile) e riutilizzi quello che ti serve (copi, incolli, adatti)!
Aris[/quote:37t42k6y]
ho capito provo
. Hai parlato di run time prima, devo installare qualcosa a riguardo? Grazie
----------------------------------------
AUTORE: 301
DATA :24/10/2012 - 15:46:42
----------------------------------------
No, scusa, avevo capito male la domanda io.
Il runtime lo devi installare su di una macchina senza l'ambiente di sviluppo per far girare un eseguibile il LV.
Aris
----------------------------------------
AUTORE: 4802
DATA :01/11/2012 - 15:21:55
----------------------------------------
ho utilizzato quel vi che replica il task manager e va veramente molto bene, grazie
Ho un altro problemino. Ho provato a fare delle ricerche in internet ma non sono riuscito a capire di cosa si tratta e a cosa è dovuto. Ho il vi principale che acquisisce dei segnali. Ogni tanto mi sputa fuori il messaggio di errore che ho allegato. Non si impalla tutto il vi, gli eventi acquisiti rimangono in stand by fin quando non premo ok, quando lo faccio gli eventi in stand by vengono tutti recuperati velocemente e continua l'acquisizione. Non capisco appunto a cosa sia dovuto. Grazie di tutto.
----------------------------------------
AUTORE: 4802
DATA :01/11/2012 - 15:23:52
----------------------------------------
aggiungo che una volta che quel messaggio di errore compare la prima volta e clicco ok, poi compare anche altre volte
----------------------------------------
AUTORE: 301
DATA :01/11/2012 - 15:30:25
----------------------------------------
Mi fa piacere.
L'errore chedo sia abbastanza esplicativo, lo da ad una chiamata ad una qualche funzione .net.
Se nel vi principale hai messo anche il "task manager",credo sia proprio quello a darti l'errore.
Prova a metterlo in un vi parallelo o ad escluderlo per verificare sia proprio quello.
Aris
----------------------------------------
AUTORE: 301
DATA :03/11/2012 - 11:26:30
----------------------------------------
Ovviamente il "mi fa piacere"era riferito al fatto che ti risultasse utile il vi suggerito...
Controllando, ho visto che proprio quell'esempio usa controlli .net.
Se lo hai importato paro-paro nel tuo vi principale.....non va bene!
Dovresti dividerlo in modo da fare l'apertura iniziale prima del ciclo di acquisizione, interrogare i controlli all'interno del ciclo e chiudere i vari reference all'uscita.
Aris
----------------------------------------
AUTORE: 4802
DATA :05/11/2012 - 11:26:18
----------------------------------------
[quote="aris":3c2ftv5r]Ovviamente il "mi fa piacere"era riferito al fatto che ti risultasse utile il vi suggerito...
Controllando, ho visto che proprio quell'esempio usa controlli .net.
Se lo hai importato paro-paro nel tuo vi principale.....non va bene!
Dovresti dividerlo in modo da fare l'apertura iniziale prima del ciclo di acquisizione, interrogare i controlli all'interno del ciclo e chiudere i vari reference all'uscita.
Aris[/quote:3c2ftv5r]
Cioè vediamo se ho capito. Dovrei quindi mettere i 3 Performance Counter all'apertura del programma, il ciclo while all'interno del ciclo di acquisizione e i 3 cleanup references quando l'acquisizione è terminata e sto chiudendo il programma?
----------------------------------------
AUTORE: 4802
DATA :05/11/2012 - 11:31:40
----------------------------------------
ah mi sono dimenticato di dire che per mettere una pezza al problema ho inserito un error in e un errout out così almeno se si verificava l'errore non si bloccava il programma ma veniva catturato. Sbaglio?
----------------------------------------
AUTORE: 301
DATA :05/11/2012 - 12:30:57
----------------------------------------
Esatto, devi dividere la funzione come hai detto.
in pratica è come il tuo "stare in casa".
"Apri la porta ed entri"(una volta) >> "Stai in casa e fai tutte le tue cose" >> "Esci e chiudi a chiave" (solo alla fine).
Aris
----------------------------------------
AUTORE: 4802
DATA :07/11/2012 - 23:07:40
----------------------------------------
scusa forse mi sfuggirà, ma allora perchè nel vi dell'esempio lo mette tutto insieme?
Approfitto della tua gentilezza (sono in debito sia con te che con gepponline
) per chiederti un' altra cosa: devo applicare la trasformata di fourier su un segnale per trovare lo spettro di frequenza. Tu sei in grado di darmi qualche dritta? posso spiegarti più dettagliatamente ciò in cui trovo difficoltà?
----------------------------------------
AUTORE: 301
DATA :08/11/2012 - 06:53:13
----------------------------------------
Il vi di esempio è (appunto) un vi singolo, e si comporta esattamente come ti ho detto!
Apre i references agli oggetti di cui a bisogno >> li interroga per tutto il tempo in cui rimane in esecuzione >> quando lo ferimi chiude i references.
Nessun debito, siamo qui apposta!
Spara, sicuramente qualcuno ti saprà rispondere!!
Hai dato una occhiata alla paletta Signal Processing >>Trasform?
Aris
----------------------------------------
AUTORE: 4802
DATA :08/11/2012 - 21:22:10
----------------------------------------
[quote="aris":2aqj0z8p]Il vi di esempio è (appunto) un vi singolo, e si comporta esattamente come ti ho detto!
Apre i references agli oggetti di cui a bisogno >> li interroga per tutto il tempo in cui rimane in esecuzione >> quando lo ferimi chiude i references.
Aris[/quote:2aqj0z8p]
ah ok ho capito il funzionamento , grazie
[quote="aris":2aqj0z8p]
Nessun debito, siamo qui apposta!
[/quote:2aqj0z8p]
troppo gentile
[quote="aris":2aqj0z8p]
Spara, sicuramente qualcuno ti saprà rispondere!!
Hai dato una occhiata alla paletta Signal Processing >>Trasform?
[/quote:2aqj0z8p]
Allora praticamente io devo:
cercare di capire come funziona la trasformata di fourier. Cioè devo compormi un segnale sinuosoidale (l'ho fatto), applicarci la trasformata di fourier (fatto tramite l'apposito vi fft) e ottenere le varie componenti della trasformata di fourier che, in base a quello che dice il terorema, sommandole tra loro mi dovrebbero ridare il segnale originario. Ecco quest'ultimo punto ho dei problemi in quanto all'uscita del vi "fft" si genera un segnale a cui non so dare un significato e inoltre non riesco a trovare un modo per ricavare tutte le varie componenti che sommate tra loro mi ritornano appunto il segnale originale. Ho provato a cercare e a documentarmi ma non sono riuscito a trovare il modo.
----------------------------------------
AUTORE: 4802
DATA :12/11/2012 - 02:26:23
----------------------------------------
Ho abilitato il web server di labview e il web publishing tool per controllare un vi da remoto (da casa). Il vi da controllare viene visualizzato correttamente solo da internet explorer (32 bit, no il 64) e riesco a pilotarlo. Mozilla, chrome e safari non riescono a visualizzarlo. Se invece devo solo visualizzare il vi senza avere la possibilità di controllarlo tutti e 4 i browser lo visualizzano correttamente. Come mai? Grazie.
----------------------------------------
AUTORE: 4802
DATA :12/11/2012 - 21:28:53
----------------------------------------
[quote="MrDundee":1ulau76o]
Allora praticamente io devo:
cercare di capire come funziona la trasformata di fourier. Cioè devo compormi un segnale sinuosoidale (l'ho fatto), applicarci la trasformata di fourier (fatto tramite l'apposito vi fft) e ottenere le varie componenti della trasformata di fourier che, in base a quello che dice il terorema, sommandole tra loro mi dovrebbero ridare il segnale originario. Ecco quest'ultimo punto ho dei problemi in quanto all'uscita del vi "fft" si genera un segnale a cui non so dare un significato e inoltre non riesco a trovare un modo per ricavare tutte le varie componenti che sommate tra loro mi ritornano appunto il segnale originale. Ho provato a cercare e a documentarmi ma non sono riuscito a trovare il modo.[/quote:1ulau76o]
Sono riuscito a fare questa cosa , grazie lo stesso ragazzi
.
----------------------------------------
AUTORE: 4802
DATA :12/11/2012 - 22:19:42
----------------------------------------
[quote="MrDundee":14alefah]Ho abilitato il web server di labview e il web publishing tool per controllare un vi da remoto (da casa). Il vi da controllare viene visualizzato correttamente solo da internet explorer (32 bit, no il 64) e riesco a pilotarlo. Mozilla, chrome e safari non riescono a visualizzarlo. Se invece devo solo visualizzare il vi senza avere la possibilità di controllarlo tutti e 4 i browser lo visualizzano correttamente. Come mai? Grazie.[/quote:14alefah]
Allora il mio Prof mi ha detto che il vi si può controllare solo tramite internet explorer e non tramite un altro browser. Quindi questa dovrebbe essere la motivazione. Sto provando a cercare dappetutto per capire come implementare il remote panel, che da quello che ho capito è diverso come implementazione dal web publishing tool. Cioè sono 2 modi diversi per controllare il vi a distanza, no? il web publishing tool sono riuscito a implementarlo. Dovrei fare anche il remote panel, mi potete dare delucidazioni in merito? vi ringrazio di cuore
.
----------------------------------------
AUTORE: 4802
DATA :17/11/2012 - 13:21:15
----------------------------------------
per quanto riguarda il controllo da remoto sono riuscito, oltre al web publishing tool, anche a connettermi con il remote panel con un client remoto su cui è installato labview. Ma con quest'ultima opzione (remote panel) è necessario che labview sia installato nella macchina client remota? grazie
----------------------------------------
AUTORE: 4802
DATA :28/11/2012 - 22:48:33
----------------------------------------
[quote="MrDundee":3soca104]per quanto riguarda il controllo da remoto sono riuscito, oltre al web publishing tool, anche a connettermi con il remote panel con un client remoto su cui è installato labview. Ma con quest'ultima opzione (remote panel) è necessario che labview sia installato nella macchina client remota? grazie[/quote:3soca104]
oltre a ciò che ho scritto sopra vorrei aggiungere un'altra cosa che non capisco. Ho un ciclo while che fa acquisizioni dati. Queste acquisizioni (il cui numero lo controllo con un un contatore) all'inizio sono velocissime poi verso le 20mila acquisizioni esse iniziano a rallentare, ovvero nello stesso lasso tempo ne vengono fatte di meno. Come mai? sottolineo che la memoria ram non viene esaurita da labview (ho monitorato con il task manager). Grazie
----------------------------------------
AUTORE: 301
DATA :29/11/2012 - 07:17:58
----------------------------------------
Labview non usa "tutta" la memoria RAM.
Dovresti postare almeno un esempio del tuo vi, detto così è difficile dire cosa sia.
Ti restituisce errori durante l'acquisizione?
Aris
----------------------------------------
AUTORE: 4802
DATA :01/12/2012 - 11:42:05
----------------------------------------
[quote="aris":2mnhdhza]Labview non usa "tutta" la memoria RAM.
Dovresti postare almeno un esempio del tuo vi, detto così è difficile dire cosa sia.
Ti restituisce errori durante l'acquisizione?
Aris[/quote:2mnhdhza]
no non da errori. Ti posto il vi principale. Come faccio ad allegartelo che è più di 256kb?
----------------------------------------
AUTORE: 301
DATA :01/12/2012 - 13:34:04
----------------------------------------
intendevo "riesci a postare UN ESEMPIO", non il vi principale!
Lo immagino che non sia leggero.....
Vediamo, usi per caso delle code?
Utilizzi trigger esterni per l'acquisizione?
Che tipo di acquisizione utilizzi?
Come salvi i dati?
Ci sono diverse cose da vedere, ma che "l'acquisizione rallenti" mi sembra veramente strano......
Aris
----------------------------------------
AUTORE: 4802
DATA :01/12/2012 - 15:49:51
----------------------------------------
[quote="aris":26kwub32]intendevo "riesci a postare UN ESEMPIO", non il vi principale!
Lo immagino che non sia leggero.....
Vediamo, usi per caso delle code?
Utilizzi trigger esterni per l'acquisizione?
Che tipo di acquisizione utilizzi?
Come salvi i dati?
Ci sono diverse cose da vedere, ma che "l'acquisizione rallenti" mi sembra veramente strano......
Aris[/quote:26kwub32]
ecco sono riuscito ad allegartelo. Ora sto provando anche una versione che usa le code nella speranza non si rallenti.....
----------------------------------------
AUTORE: 4802
DATA :01/12/2012 - 16:15:48
----------------------------------------
[quote="aris":69jvhn0v]intendevo "riesci a postare UN ESEMPIO", non il vi principale!
Lo immagino che non sia leggero.....
Vediamo, usi per caso delle code?
Utilizzi trigger esterni per l'acquisizione?
Che tipo di acquisizione utilizzi?
Come salvi i dati?
Ci sono diverse cose da vedere, ma che "l'acquisizione rallenti" mi sembra veramente strano......
Aris[/quote:69jvhn0v]
acquisisco con trigger legato alla soglia del segnale
----------------------------------------
AUTORE: 4802
DATA :08/03/2013 - 20:37:18
----------------------------------------
[quote="aris":w663v4p7]ok, tra gli esempi di LV trovi un vi che replica il "task manager" (comunicating with external applications>>.NET>>simple task monitor).
Utilizza controlli .NET.
cosa fare......lo apri, cerchi di capire il codice (il possibile) e riutilizzi quello che ti serve (copi, incolli, adatti)!
Aris[/quote:w663v4p7]
Salve ragazzi dovrei inserire in tesi qualcosa che spieghi un pò questo vi che funge task manager. Cosa posso metterci in merito che non saprei? Vi ringrazio tanto
.
----------------------------------------
================================================================================
HTTP Headers
================================================================================
AUTORE: 2332
DATA :15/10/2012 - 13:24:38
----------------------------------------
Buongiorno,
Ho questo problema:
Devo catturara dei dati da un sito che sono presenti negli Headers e non nella pagina HTML.
Qualcuno può aiutarmi?
Paolo
----------------------------------------
================================================================================
apertura di una nuova finestra dal front panel
================================================================================
AUTORE: 4834
DATA :15/10/2012 - 15:12:30
----------------------------------------
Buongiorno a tutti,
Volevo chiedervi delle informazioni circa la creazione di una nuova finestra a partire dal front panel iniziale, mi spiego meglio. Nel programma che ho realizzato ho un front panel con tutta una serie di oggetti, quello che vorrei fare è: cliccando un bottone nel front panel corrente, vorrei che si aprisse una nuova finestra in cui poter visualizzare tutti i grafici che costruisco con i dati raccolti dal block diagram. Qualcuno mi potrebbe dare una mano? grazie mille
----------------------------------------
AUTORE: 301
DATA :15/10/2012 - 15:27:25
----------------------------------------
Ciao e benvenuta,
se cerchi un pò, il forum è pieno di discussioni ed esempi per le tue necessità.
Dovresti utilizzare subvi o vi server per aprire la tua "seconda finestra".....
Aris
----------------------------------------
AUTORE: 4834
DATA :16/10/2012 - 08:50:39
----------------------------------------
ok cercherò, grazie mille
----------------------------------------
================================================================================
Aiuto acquisizione dati
================================================================================
AUTORE: 4836
DATA :16/10/2012 - 16:03:20
----------------------------------------
Salve a tutti, sono uno studente di ingegneria chimica alle prese con la tesi e necessito di utilizzare labview mediante una scheda di acquisizione dati per ricavare delle misure di temperatura, pressione e conducibilità elettrica di alcune soluzioni. dispongo di 4 termocoppie di tipo j, di due trasduttori di pressione e di un conduttimetro, collegati a 7 diversi canali della scheda di acquisizione dati.
Il mio problema è che non ho mai utilizzato software di programmazione e provando a studiare alcune guide non sono ancora riuscito ad ottenere un VI che mi fornisca una semplice misura di temperatura, figuriamoci il resto.
Qualcuno saprebbe aiutarmi spiegandomi passo passo come fare oppure indicandomi una guida o un tutorial adatto allo scopo?
ho iniziato a smanettare con il DAQ assistant ma non sono riuscito a calibrare le termocoppie
help please
----------------------------------------
AUTORE: 482
DATA :17/10/2012 - 07:18:11
----------------------------------------
La migliore strada per iniziare è guardare gli esempi.
Negli esempi presenti in labview trovi un sacco di programmi già fatti che spesso non hanno enanche bisogno di essere modificati per fare al caso tuo.
Certo, non mischieranno i vari tipi di acquisizioen come devi fare tu, ma prendendo spunto, puoi capire come fare.
----------------------------------------
AUTORE: 4836
DATA :17/10/2012 - 11:29:29
----------------------------------------
Intanto ti ringrazio per il suggerimento, effettivamente ho trovato un VI per termocoppie
il problema e` che mi forniscono valori sempre prossimi ai 25 gradi, presumo che il programma necessiti di una calibrazione per interpretare il segnale elettrico in arrivo... come e` possibile effettuarla con questo VI?
----------------------------------------
AUTORE: 301
DATA :17/10/2012 - 13:07:29
----------------------------------------
I programma non dovrebbe necessitare di nessuna calibrazione....
Quale vi hai visto?
Che tipo di scheda stai usando?
Aris
----------------------------------------
AUTORE: 4836
DATA :18/10/2012 - 11:52:24
----------------------------------------
Il VI l'ho creato da zero facendone uno abbastanza semplice per la sola misura della temperatura su 4 termocoppie, adesso non capisco perche` una delle 4 mi da un valore di 250 celsius contro le 24/25 delle altre. la scheda che sto usando e` una NI USB-6210.
----------------------------------------
AUTORE: 301
DATA :18/10/2012 - 12:01:55
----------------------------------------
Quando imposti il task,hai solo fa selezionare l'ingresso termocoppia (con relativo tipo).
Controlla che gli ingressi chr hai usato siano corretti.
se tocchi le termocoppie,il valore ti cambia?
Non è che hai settato "finite samples".....
Aris
----------------------------------------
AUTORE: 4836
DATA :18/10/2012 - 13:50:43
----------------------------------------
no questa termocoppia anche se la tocco non cambia valore le altre si. p.s. le termocoppie sono funzionanti, le abbiamo controllate con un multimetro.
----------------------------------------
AUTORE: 4836
DATA :18/10/2012 - 13:53:01
----------------------------------------
ho comunque settato continuos sampling.
----------------------------------------
AUTORE: 4836
DATA :18/10/2012 - 15:26:28
----------------------------------------
problema risolto grazie mille per gli aiuti, sbagliavo a connettere le porte.
----------------------------------------
================================================================================
chiusura front panel subVI
================================================================================
AUTORE: 4834
DATA :17/10/2012 - 15:40:18
----------------------------------------
Buona sera a tutti, vi volevo chiedere un aiuto per un problema, stupido, ma che non riesco a risolvere. Ho un VI principale che richiama quattro subVI in cui sono contenuti dei grafici. Quest'ultimi si aprono se pigio il bottone corrispondente nel front panel del VI principale. Il problema è che una volta che apro una subVI, per poterlo richiudere devo bloccare l'esecuzione del programma; quello che vorrei fare è chiudere semplicemente la finestra corrispondente del subVI aperto senza bloccare la simulazione. Qualcuno mi saprebbe aiutare? scusate la domanda stupida ma utilizzo labview da appena poche settimane. Grazie mille
----------------------------------------
AUTORE: 301
DATA :18/10/2012 - 06:53:51
----------------------------------------
Dovresti mettere un pulsante su ogni subvi che arresti l'esecuzione solo di quello.
Richiami il subvi nel tuo "main", clic con pulsante destro e selezioni subvi node setup , show front panel when called e close afterward if originaly closed.
in questo modo, quando dai uno stop al subvi aperto, questo si chiude anche!
Aris
----------------------------------------
AUTORE: 4834
DATA :18/10/2012 - 09:25:38
----------------------------------------
Funziona tutto, grazie mille
----------------------------------------
AUTORE: 301
DATA :18/10/2012 - 09:42:41
----------------------------------------
De nada!
Per avere la funzionalità di "stop" dei vi tramite il tasto "x" della finestra dovresti passare alla gestione ad eventi.
Aris
----------------------------------------
================================================================================
Dashboard Ipad, Cloud e TDC
================================================================================
AUTORE: 645
DATA :17/10/2012 - 16:48:32
----------------------------------------
Ciao a tutti, sto cercando informazioni sul servizio NI Cloud: ho letto un po' sul sito della National ma non ho trovato come fisicamente usare le api. Dove trovo i blocchi? Io in Labview 2011 non li trovo.
Non ho capito se Ä— un programma in fase di test o c'è già qualcosa.
Tutto questo perchè sto iniziando a smanettare con l' Ipad e l'applicazione Dashboard...
Qualcuno ha già provato?
----------------------------------------
AUTORE: 645
DATA :22/11/2012 - 22:34:34
----------------------------------------
Finalmente sono riuscito a far funzionare l'app Data Dashboard per Ipad: oltre ai vari tutorial (abbastanza semplici, si tratta di creare qualche Shared Variable di rete nel VI) si devono abilitare alcuni file nel firewall di Windows (io lavoro con Windows 7 ma nel sito si parla anche delle altre versioni): http://digital.ni.com/public.nsf/websea ... enDocument
È fantastica questa app: con estrema semplicità si può controllare un VI che gira su pc (e tutto ciò che si può attaccare) con un tablet realizzando veri e propri telecomandi.
----------------------------------------
AUTORE: 129
DATA :25/10/2013 - 16:21:27
----------------------------------------
Ciao Magic e tutti, io ho fatto qualche tentativo e non capisco però da dove prendo l'indirizzo della shared variable.
In pratica creo il mio VI con la shared variable, faccio il deploy della variabile, compilo l'exe e poi passo al tablet (Android) tra i vari setting mi dice assegna l'indirizzo IP della shared variable, ma dove lo prendo oppure con gli altri metodi ugualmente quali indizrizzi devo mettere lato pc lato tablet?
Grazie, nicola
----------------------------------------
AUTORE: 10926
DATA :21/02/2014 - 19:29:57
----------------------------------------
Anche io presento lo stesso problema. Qualcuno sa consigliarmi come risolverlo? Nonostante la disperata ricerca non sono riuscito a concludere nulla.
----------------------------------------
AUTORE: 645
DATA :22/02/2014 - 20:56:37
----------------------------------------
Quando si mette in Run il VI, LabView fa il deploy delle variabili.
A questo punto prendete il tablet, selezionate il pc sul quale c'è il VI in esecuzione (se non lo rilevate in automatico nei dispositivi di rete mostrati dalla Data Dashboard potete inserire l'indirizzo IP) e a questo punto vedrete un elenco delle Shared Variables in esecuzione sul pc con dato di tipo pargagonabile al tipo di dato della variabile sul tablet.
----------------------------------------
AUTORE: 10926
DATA :24/02/2014 - 18:03:55
----------------------------------------
Il problema risulta essere l'indirizzo IP: infatti, nel momento in cui vado ad inserire l'indirizzo IP del mio PC sul tablet e clicco "connect", dopo un periodo di caricamento, appare un messaggio con scritto "Cannot connect to the Server [...]".
Dunque?
----------------------------------------
AUTORE: 482
DATA :25/02/2014 - 07:12:38
----------------------------------------
come ti dicevo anche dall'altra parte (e ti prego di utilizzare un solo topic visto che la richiesta è la stessa) puo' essere un problema di IP pubblico ma questo è vero SOLO SE non sei sulla stessa lan.
Se con il tablet e con il pc stai utilizzando una stessa connessione wireless, allora va bene l'IP diretto del tuo pc. Non puoi farlo se ad esempio se connesso con il pc tramite router e con il tablet tramite 3G. In quel caso serve il famoso IP pubblico.
----------------------------------------
AUTORE: 10926
DATA :26/02/2014 - 14:31:47
----------------------------------------
Utilizzando l'IP del computer e collegando i dispositivi alla stessa rete WIFI il messaggio compare lo stesso.
----------------------------------------
AUTORE: 482
DATA :27/02/2014 - 07:03:44
----------------------------------------
riesci a pingare i dispositivi?
----------------------------------------
AUTORE: 10926
DATA :27/02/2014 - 15:14:27
----------------------------------------
Si riesco, e risponde al ping!
----------------------------------------
AUTORE: 645
DATA :27/02/2014 - 21:01:32
----------------------------------------
In Windows, dal pulsante Start, scrivi "services.msc" e tra i servizi cerca NI Variable Engine e riavvialo.
Allego un'immagine di un VI che semplicemente genera numeri: la variabile nella quale vengono scritti i numeri è stata inserita in un cruscotto in Data Dashboard.
In Data Dashboard ho selezionato il pc sul quale è in funzione il VI: il pc e il tablet si trovano nella stessa rete.
----------------------------------------
AUTORE: 10926
DATA :28/02/2014 - 16:08:34
----------------------------------------
Il punto sta proprio nel selezionare il PC dal tablet. Come devo fare? Usando l'indirizzo IP del PC mi da errore.
----------------------------------------
AUTORE: 645
DATA :01/03/2014 - 01:54:07
----------------------------------------
Hai provato a riavviare il NI Variable Engine sul pc?
----------------------------------------
AUTORE: 10926
DATA :01/03/2014 - 12:44:15
----------------------------------------
Si, e il problema persiste.
----------------------------------------
AUTORE: 645
DATA :01/03/2014 - 14:00:39
----------------------------------------
Faccio domande banali: hai la versione aggiornata della Dashboard per Android? Che modello di telefono usi?
Io utilizzo la versione per Ipad e alcune volte mi è capitato lo stesso problema risolto con il riavvio del servizio su pc. Hai provato a inserire nell'app sul cellulare il nome del pc anzichè il suo indirizzo ip?
Prova a scrivere \\ prima dell'indirizzo ip o del nome del pc.
Prova anche ad utilizzare le variabili demo per testare se l'app funziona.
----------------------------------------
AUTORE: 129
DATA :01/03/2014 - 15:07:31
----------------------------------------
anche a me mi da gli stessi errori.
Ho provato con l'ip che ho recuperato con il comando "netstat".
Ho provato con ipconfig /all
Ho provato a riavviare il servizio... ma nada
Ho un HTC-oneSV con Android e ultima versione di Dashboard..
Ho inizato a pensare a qualche protezione oppure al fatto che ho una rete WIFI con il router....
Mbo pensavo in scia a questo topic di fare qualche manovra che non avevo fatto le procedenti volte ma ancora non funge....
----------------------------------------
AUTORE: 10926
DATA :01/03/2014 - 17:20:03
----------------------------------------
La versione è aggiornata; io uso data dashboard su tablet (zeligpad versione android 4.0.4).
Ho provato ad inserire il nome del Pc ma l'errore è sempre lo stesso; inoltre non mi permette di inserire "//" nella casella dove dovrei inserire il nome del server. Inoltre, anche riavviando il servizio "NI Variable Engine" non cambia nulla.
Dunque il problema non è risolto.
----------------------------------------
AUTORE: 645
DATA :01/03/2014 - 22:24:23
----------------------------------------
https://decibel.ni.com/content/docs/DOC-19388
Magari può essere utile.
----------------------------------------
AUTORE: 10926
DATA :06/03/2014 - 15:20:43
----------------------------------------
Nulla è cambiato!
----------------------------------------
================================================================================
USCIRE DA UN CICLO FOR
================================================================================
AUTORE: 3071
DATA :21/10/2012 - 21:36:07
----------------------------------------
E' possibile uscire da un ciclo FOR, attraverso comando, prima che vengano eseguiti tutti gli N cicli?
Grazie!
----------------------------------------
AUTORE: 301
DATA :22/10/2012 - 06:55:31
----------------------------------------
Si, dalla versione 2009 (se non mi sbagio), puoi cliccare con il tasto sx del mouse sul bordo del for e selezionare "conditional terminal".
Aris
----------------------------------------
AUTORE: 3071
DATA :22/10/2012 - 16:28:40
----------------------------------------
[quote="aris":1rpbpahp]Si, dalla versione 2009 (se non mi sbagio), puoi cliccare con il tasto sx del mouse sul bordo del for e selezionare "conditional terminal".
Aris[/quote:1rpbpahp]
Grazie Aris per avermi risposto !
Ho provato, ma con il conditional terminal mi si "blocca" ma NON ESCE !
----------------------------------------
AUTORE: 3071
DATA :22/10/2012 - 17:38:27
----------------------------------------
[quote="mauro.centrone":dbitzhvn][quote="aris":dbitzhvn]Si, dalla versione 2009 (se non mi sbagio), puoi cliccare con il tasto sx del mouse sul bordo del for e selezionare "conditional terminal".
Aris[/quote:dbitzhvn]
Grazie Aris per avermi risposto !
Ho provato, ma con il conditional terminal mi si "blocca" ma NON ESCE ![/quote:dbitzhvn]
Per essere precisi, se dentro il FOR c'è un WHILE, per uscire devo prima cliccare lo STOP del CONDITIONAL TERMINAL, e poi devo cliccare 2 VOLTE lo STOP del WHILE !!!!
MA NON C?è UN MODO PIU' SEMPLICE ????
----------------------------------------
AUTORE: 301
DATA :22/10/2012 - 17:44:25
----------------------------------------
questo è strano......che versione di lv usi?
puoi postare il vi "incriminato" o un esempio dell'uso che fai del for?
Aris
----------------------------------------
AUTORE: 301
DATA :22/10/2012 - 18:31:32
----------------------------------------
Ah, ok, scusa ma mi sa che abbiamo scritto assieme......
Se hai un while all'interno di un for, la tua esecuzione rimane all'interno del while fin che non lo stoppi!!!!
Una volta fermato il while, riprendi l'esecuzione del for, ma appena lo riesegui.....rientri nel while!
non è che ci sia qualcosa di più o meno comodo, è che è una programmazione un po....."insolita"....
Cosa dovresti fare esattamente?
Aris
----------------------------------------
AUTORE: 3071
DATA :22/10/2012 - 19:10:02
----------------------------------------
[quote="aris":2i4vznra]Ah, ok, scusa ma mi sa che abbiamo scritto assieme......
Se hai un while all'interno di un for, la tua esecuzione rimane all'interno del while fin che non lo stoppi!!!!
Una volta fermato il while, riprendi l'esecuzione del for, ma appena lo riesegui.....rientri nel while!
non è che ci sia qualcosa di più o meno comodo, è che è una programmazione un po....."insolita"....
Cosa dovresti fare esattamente?
Aris[/quote:2i4vznra]
Fai finta di dover eseguire un ciclo for, e di creare un comando che dà il via ad ogni step del for, una specie di interruttore "NEXT". In maniera tale che ogni ciclo del FOR lo gestisci tu, e lo fai partire quando vuoi tu con un pulsante. Poi ad un certo punto, decidi che i tuoi cicli sono sufficienti, e vuoi mettere un pulsante che ti faccia uscire immediatamente senza arrivare all'ultimo ciclo. Io ho messo un while dentro il FOR, e il pulsante di stop del while mi fà da comando per passare al prossimo ciclo. però non esco!!!!!
----------------------------------------
AUTORE: 301
DATA :22/10/2012 - 19:52:44
----------------------------------------
Beh....a parte che quello che dici lo farei in altro modo......ti allego quello che penso tu stia cercando di fare
[attachment=0:19nq20xy]For_Exit.png[/attachment:19nq20xy]
puoi trascinare l'immagine sul bd.
Aris
----------------------------------------
AUTORE: 3071
DATA :22/10/2012 - 20:17:34
----------------------------------------
[quote="aris":wjmfg0dx]Beh....a parte che quello che dici lo farei in altro modo......ti allego quello che penso tu stia cercando di fare
[attachment=0:wjmfg0dx]For_Exit.png[/attachment:wjmfg0dx]
puoi trascinare l'immagine sul bd.
Aris[/quote:wjmfg0dx]
E' proprio quello che intendevo fare!
Ma sei un grande!
Come posso ringraziarti??????
----------------------------------------
AUTORE: 3071
DATA :22/10/2012 - 20:19:33
----------------------------------------
[quote="mauro.centrone":1780x570][quote="aris":1780x570]Beh....a parte che quello che dici lo farei in altro modo......ti allego quello che penso tu stia cercando di fare
[attachment=0:1780x570]For_Exit.png[/attachment:1780x570]
puoi trascinare l'immagine sul bd.
Aris[/quote:1780x570]
E' proprio quello che intendevo fare!
Ma sei un grande!
Come posso ringraziarti??????[/quote:1780x570]
Ma tu come avresti fatto invece? cosa c'è di non corretto in questo sistema FOR + WHILE ?
----------------------------------------
AUTORE: 3071
DATA :22/10/2012 - 20:26:27
----------------------------------------
[quote="mauro.centrone":rx5ymhka][quote="mauro.centrone":rx5ymhka][quote="aris":rx5ymhka]Beh....a parte che quello che dici lo farei in altro modo......ti allego quello che penso tu stia cercando di fare
[attachment=0:rx5ymhka]For_Exit.png[/attachment:rx5ymhka]
puoi trascinare l'immagine sul bd.
Aris[/quote:rx5ymhka]
E' proprio quello che intendevo fare!
Ma sei un grande!
Come posso ringraziarti??????[/quote:rx5ymhka]
E se invece di un solo while, nel FOR ne avessi due di while? come potrei fare?
Ma tu come avresti fatto invece? cosa c'è di non corretto in questo sistema FOR + WHILE ?[/quote:rx5ymhka]
----------------------------------------
AUTORE: 301
DATA :23/10/2012 - 06:19:40
----------------------------------------
Ti assicuro che "i grandi" sono altri su questo forum.....comunque grazie.
Non è che ci sia nulla di sbagliato, semplicemente ci sono sempre tante strade per fare quello di cui si ha bisogno, modi che ri chiedono meno risorse, diagrammi piu puliti, piu leggibili ecc......
Non so cosa devi arrivare ad avere tu, ma ci sono le strutture ad eventi, i notifier, strutture case, ecc.
In ogni caso, continua per la tua strada e se avrai bisogno, qui ci siamo!
Buona giornata
Aris
----------------------------------------
AUTORE: 482
DATA :23/10/2012 - 07:41:03
----------------------------------------
[quote="mauro.centrone":24g1lyj1]Ma tu come avresti fatto invece? cosa c'è di non corretto in questo sistema FOR + WHILE ?[/quote:24g1lyj1]
Beh innanzitutto da coem hai spiegato il tuo esempio, il FOR esterno non è concettualmente il tipo di struttura adatto.
Il FOR si usa quando si sa già a priori quante iterazioni vanno fatte. In tutti gli altri casi è meglio usare un ciclo while.
----------------------------------------
AUTORE: 129
DATA :31/10/2012 - 08:38:36
----------------------------------------
Puoi utilizzare un while e inserire un comparatore per verificare che il numero di iterazioni supera una certa soglia e quindi porta la condizione di uscita del while a true.
----------------------------------------
================================================================================
pacchetto vision...
================================================================================
AUTORE: 660
DATA :25/10/2012 - 09:11:25
----------------------------------------
Buongiorno a tutti,
visto che nel forum ci sono persone molto più informate (e competenti
) di me vi porgo un quesito:
con il pacchetto vision di labview sarebbe possibile, ad esempio, contare le persone che entrano ed escono da una porta?
in alternativa avete qualche suggerimento?
Grazie
Max
----------------------------------------
AUTORE: 482
DATA :26/10/2012 - 07:35:26
----------------------------------------
LA risposta è SI, via software si puo' fare quasi tutto.
Se speri di trovare qualcosa di già fatto oppure pensi che sia una cosa semplice allora la risposta è NO.
Devi avere già un idea di come farlo a livello logico e hardware, dopodichè puoi implementare il tuo software come vuoi.
Penso che il problema sia piu' di logica che altro, nel senso, come pensi di individuare le singole persone?Testa? gambe? entrata e uscita sono divise? Le persone passano una ad una o possono passare raggruppate? Queste sono le prime cose che mi vengono in mente...
----------------------------------------
AUTORE: 660
DATA :26/10/2012 - 07:54:02
----------------------------------------
grazie per la risposta gepponline,
non penso che sia semplice, però volevo sapere se era una strada percorribile utilizzando LabView... altrimenti avrei dovuto forzatamente cercare una soluzione differente... nel frattempo provo a scaricare la versione di valutazione del pacchetto e provo a "giocarci" per cercare un po' di risposte alle domande che mi hai posto...
Max
----------------------------------------
================================================================================
Termometro in labview
================================================================================
AUTORE: 5128
DATA :26/10/2012 - 21:46:25
----------------------------------------
Salve a tutti!!!!
Sto seguendo un corso per labview tradotto dal sito della NI sulla versione software 6.0
http://www.dii.unina2.it/Utenti/clandi/ ... %201-9.pdf
Nel capitolo 3 l'esercitazione fa realizzare un termometro con possibilità di convertire i gradi da F a C. Tuttavia per realizzare il VI il corso utilizza un SubVi noto come VI Read Voltage che però non possiedo.
Tuttavia una nota specifica che se Se non sono disponibili un dispositivo DAQ e/o un DAQ Signal Accessory, utilizzate ilVI (Demo) Read Voltage che si trova nella palette Functions»User Libraries»Basics I Course invece del VI Read Voltage per simulare il funzionamento del VI Read Voltage.
Considerando che ho la versione 8.5 mi sapreste dire come recuperare questo VI, oppure come usarne uno simile ?
Grazie della disponibilità
----------------------------------------
AUTORE: 660
DATA :29/10/2012 - 11:17:15
----------------------------------------
mi sa che quella pallette devi installarla per poterla usare... probabilmente è fornita insieme al corso...
in alternativa hai due scelte...
1 - Anzichè quel blocchetto ci metti un numeric control (quello che ti piace di più) così vedi come funziona...
2 - mi sembra che nella versione 8.5 si potessero già creare delle periferiche virtuali per effettuare le simulazioni, così non ti resta che crearti la periferica dentro a MAX, però mi sa che a questo punto del corso sia ancora un po' complicato...
Max
----------------------------------------
AUTORE: 5128
DATA :29/10/2012 - 16:28:33
----------------------------------------
Grazie sono riuscito a risolvere il problema trovando gli allegati a quel corso, tuttavia ora avrei un altro dubbio...
Ho esaminato il VI temperature monitor che si trova al seguente indirizzo
ftp://ftp.clarkson.edu/.class/ee311/pub ... Solutions/
In pratica per come dice la dispensa il ciclo while in questione deve visualizzare su grafico la temperatura acquisita quando l'interruttore è su ON e fermarsi quando l'interruttore passa a OFF.
Tuttavia anche nell'esercizio l'azione dell'interruttore Booleano non comporta nulla, ma la temperatura viene sempre acquisita.
Potreste dare un'occhiata al VI per capire cosa c'è che non va ?
Grazie tante
----------------------------------------
AUTORE: 660
DATA :29/10/2012 - 17:01:56
----------------------------------------
non è che anzichè avviarlo utilizzando la freccia del RUN (freccia bianca singola) utilizzi quella del RUN CONTINUOUSLY (le due freccine che si inseguono in cerchio)?
In tal caso anche quando cambi lo stato del tuo interruttore il sistema anzichè arrestarsi si riavvia all'infinito...
Max
----------------------------------------
AUTORE: 5128
DATA :30/10/2012 - 18:04:15
----------------------------------------
L'esame che dovrò fare richiede veramente le cose di base, ma io manco quelle so
Avevi ragione Max, grazie!!
----------------------------------------
AUTORE: 1078
DATA :31/10/2012 - 08:39:17
----------------------------------------
[quote="steven17":2owr3xyc]
In pratica per come dice la dispensa il ciclo while in questione deve visualizzare su grafico la temperatura acquisita quando l'interruttore è su ON e fermarsi quando l'interruttore passa a OFF.
[/quote:2owr3xyc]
Io non sono riuscito ad aprire il collegamenta che hai postato ma, presumo che stai parlando dell'esercizio [b:2owr3xyc]VI teperature logger[/b:2owr3xyc] presente nel manuale alla [i:2owr3xyc]Lezione 7-18[/i:2owr3xyc].
Se facciamo riferimento allo stesso esercizio, devi fare attenzione che il comando ON/OFF non fa altro che fermare il ciclo waile main dell'applicazione, fermando di fatto l'applicazione. In pratica non gestisce semplicemente l'acquisizione della temperatura, ma ferma tutto il ciclo. Quindi il comportamento del VI sarà: acquisisco fino a quando il bottone è su ON, fermo l'acquisizione appena il bottone passa su OFF. Per poter avviare nuovamente l'acquisizione dovrai rimettere l'interruttore su ON e dare nuovamente il [i:2owr3xyc]RUN[/i:2owr3xyc] all'applicazione con la freccia <[i:2owr3xyc]run[/i:2owr3xyc]> di labview.
Invece per gestire un VI che acquisisce la temperatura su comando utente e continua a "runnare" devi inserire il codice di acquisizione nella clausola true di una select case collegata ad un booleano (bottone) che fa la gestione da front pannel dell'acquisizione.
Spero di essere stato chiaro.
In bocca al lupo per il tuo esame!
----------------------------------------
================================================================================
Problema comunicazione seriale
================================================================================
AUTORE: 5178
DATA :27/10/2012 - 15:51:37
----------------------------------------
Salve ragazzi, ho scritto un programma che dovrebbe far comunicare due dispositivi IRIS fra loro, uno montato su una scheda e collegato ad un sensore, e l'altro collegato all'usb del pc. Questi due sono sicuro che comunichino fra loro ma il programma che ho scritto in labview non riesce ad estrapolare i dati. In uscita dal sub vi azzurro mi da errore 1073807339, ossia il timeout della porta seriale e non riesco a capirne il perchè. Vi allego degli stamp dei file.
http://i47.tinypic.com/2ijotxd.jpg
http://i50.tinypic.com/mt15c.jpg
Sapreste aiutarmi?
----------------------------------------
AUTORE: 5178
DATA :27/10/2012 - 19:14:59
----------------------------------------
EDIT: ho risolto già da un pò il primo errore ma ora è da un bel pò che non riesco a risolverne un secondo, ossia il 1073807252 ossia errore di overrun dei buffer sempre in uscita al solito VI. Se qualcuno ha in mente un qualche metodo lo prego di darmi qualche suggerimento, ve ne sarò davvero grato.
----------------------------------------
AUTORE: 645
DATA :28/10/2012 - 19:27:21
----------------------------------------
La prima osservazione che mi viene in mente è che il ciclo non è temporizzato. Prova a leggere i dati ogni tot di tempo, inizia magari con un secondo e poi diminuisci.
----------------------------------------
AUTORE: 5178
DATA :28/10/2012 - 20:58:27
----------------------------------------
Il ciclo più esterno è un while regolato da un tasto di stop. Ogni pacchetto che arriva sulla seriale viene prima processato e poi fatto entrare nel while dove i dati vengono poi elaborati. Dovrei invece inserire un ciclo temporizzato sulla lettura da seriale dici?
----------------------------------------
================================================================================
Variabili Globali - VI non corretto
================================================================================
AUTORE: 5343
DATA :02/11/2012 - 15:29:13
----------------------------------------
ciao, sono alle prime armi con labview.
sto modificando e aggiornando del software fatto da altri con variabili globali, salvate nel file Globals.vi - nome GLOBAL 1
ora per la modifica devo creare una nuova variabile globale, quando la inserisco nel diagramma mi si aggangia in automatico a GLOBAL 2 un nuovo VI di variabili globali.
Come faccia a creare una nuova variabile globale in GLOBAL1 ed utilizzarla come utilizzo quelle già esistenti?
Grazie
----------------------------------------
AUTORE: 5343
DATA :02/11/2012 - 15:37:55
----------------------------------------
Ulteriore informazione, in GLOBAL 1 copio e incollo una variabile globale, riesco ad usarla nei VI. Se poi cambio label a questa variabile non vedo più negli altri VI.
Perchè????
----------------------------------------
AUTORE: 301
DATA :02/11/2012 - 15:43:15
----------------------------------------
Le vaiabili globali possono contenere diversi controlli.
Se devi aggiungere tipi di dato o varianbii a "GLOBAL 1", apri l variabile ed aggiungi dei controlli sul suo Front Panel.
Se cambi la label di uno di questi controlli, poi dovai andare ad aggiornare il riferimento a quel controllo in ogni vi in cui richiami quella vriabile (semplicemente non la autoaggiorna)
Aris
----------------------------------------
AUTORE: 5343
DATA :02/11/2012 - 15:50:00
----------------------------------------
[quote="aris":1fjap3y7]Le vaiabili globali possono contenere diversi controlli.
Se devi aggiungere tipi di dato o varianbii a "GLOBAL 1", apri l variabile ed aggiungi dei controlli sul suo Front Panel.
Se cambi la label di uno di questi controlli, poi dovai andare ad aggiornare il riferimento a quel controllo in ogni vi in cui richiami quella vriabile (semplicemente non la autoaggiorna)
Aris[/quote:1fjap3y7]
Ok, ma quando vado ad aggiornarlo nella lista la nuova label non c'è
----------------------------------------
AUTORE: 5343
DATA :02/11/2012 - 15:51:56
----------------------------------------
risolto, devo creare anche il riferimento da nuovo.
grazie
----------------------------------------
================================================================================
Server e Client UDP
================================================================================
AUTORE: 645
DATA :06/11/2012 - 18:39:47
----------------------------------------
Ciao, leggendo l'ultimo numero di LabView World mi è venuta voglia di provare la comunicazione UDP.
Vi posto due VI, il Server che genera una scritta e il Client che la legge.
Fate partire il Client e ogni tanto scrivete qualcosa con il Server.
----------------------------------------
AUTORE: 482
DATA :07/11/2012 - 07:39:39
----------------------------------------
Non c'e' bisogno che vieni qui a pavoneggiarti che usi l'ultima versione 2012 di Labview! ghghghgh Please rimanda in versione antecedente!
P.S. come ti trovi con la 2012? Io per il momento sono fermo alla 2009 anche se ho tutti gli aggiornamenti nel cassetto...
----------------------------------------
AUTORE: 645
DATA :07/11/2012 - 15:20:28
----------------------------------------
Esatto!! W i pavoni!!
In realtà qualche giorno fa mi è arrivato il codice per la Student Edition e ho colto al volo l'occasione. La sto provando in questi giorni e mi sembra sostanzialmente uguale alla 2011 con l'aggiunta di qualche facilitazione tipo schemi di partenza già pronti sui quali basarsi per un nuovo lavoro, esempi interessanti e grafica "più minimale" per quello che riguarda colori e menù.
A livello di ottimizzazione so che le modifiche più importanti riguardano il settore del FPGA e della programmazione Real-Time (questo è quello che ho capito leggendo le caratteristiche su forum e sito NI); lo scorso anno ho avuto modo di usare la versione 2011 (sempre Student) e mi sono trovato bene come velocità e riduzione dei bug.
Fammi sapere se le versioni che ho salvato sono corrette per LabView 2009
----------------------------------------
AUTORE: 482
DATA :08/11/2012 - 08:08:59
----------------------------------------
sidai...sembra funzionare
----------------------------------------
================================================================================
Funzionamento Simultaneo di più linee a LED
================================================================================
AUTORE: 4160
DATA :12/11/2012 - 15:53:44
----------------------------------------
Salve a tutti ragazzi, avrei un problema con il funzionamento simultaneo di 2 linee a scorrimento di LED.
Avendo organizzato il funzionamento mediante l'utilizzo di costanti Booleane, che attivano LED a seconda del tempo "i" fornito dal ciclo, e che quando il valore di "i", supera o equi vaglia il valore "30", il ciclo si resetta (Ciclo For).
Il problema che mi si pone è questo.
Essendo il funzionamento gestito da 2 cicli separati, la "i", e avendo generato tramite un numero random il timing del ciclo, si ottengono delle strisce di Led, che si accendono in modo sequenziale a velocità diverse.
E' proprio nel riavvio del ciclo che avviene il problema. La linea che raggiunge il valore "i = 30" difatti non si riavvia nell'istante in cui lo assume, ma "aspetta", che anche l'altra linea e suo corrispettivo valore di "i" del ciclo, assuma il valore "30".
Come risolvere questo problema?
Mi affido a voi del forum.
[b:1nc4zgro]Vi lascio in allegato il link MediaFire contenente i file e i SubVI creati su LabVIEW, così da capire ancora meglio cosa intendo:[/b:1nc4zgro]
http://www.mediafire.com/?kctdaezcf5vh7q8
Grazie a tutti per il vostro tempo.
----------------------------------------
AUTORE: 129
DATA :12/11/2012 - 16:56:27
----------------------------------------
Non capisco cosa intendi per riavvio del ciclo:
Hai due FOR in un VI che non prevede un interruzione condizionale (WHILE LOOP cpon pulsante di stop) e che hanno diversi tempi di iterazione.
una dura 30 x 500 e una 30 x 250
Il vi termina quando entrambe sono finite quindi in 30 x 500 ms (15s)
AL riavvio partono entrambe da 0.
Il ritardo forse perchè non le hai sincronizzate cosa che puoi fare in modo molto facile ma non esattissimo con una costante che colleghi sul bordo di entrambe le strutture for (potresti utilizzare la costante che colleghi al numero di cicli collegandola a entrambe i terminali visto che il valore è identico).
----------------------------------------
AUTORE: 4160
DATA :12/11/2012 - 18:36:30
----------------------------------------
Mi spiego meglio.
Se tu fai partire il programma noterai che la fila di colonne da 250, invece che riavviarsi una volta raggiunta l'ultima condizione, attende che la fila da 500 arrivi anch'essa all'ultima condizione, pur essendo in due cicli differenti.
Io invece vorrei l'effetto di continuità, ovvero che quando il led arriva all'ultima condizione, riparta da 0, senza aspettare o tener conto dell'altra colonna.
Grazie ancora.
----------------------------------------
AUTORE: 660
DATA :13/11/2012 - 10:13:53
----------------------------------------
ciao,
mi associo a Nicola per quanto riguarda l'incomprensione del codice... (Paracarro ti "fulminerebbe"
)
comunque sia.. per come lo hai costruito il VI è fatto per essere eseguito una sola volta e poi terminare... per evitare questo devi utilizzare il pulsante di run continuously (quello con le due freccine che si inseguono) che però si comporta in tal modo, quando tutto è terminato riavvia il ciclo, così facendo il tuo ciclo più veloce non può ripartire prima che tutto sia finito...
Ti allego una piccola modifica per farlo funzionare come vuoi tu (Paracarro graziami
) su cui puoi lavorare... ho anche sostituito i tuoi cicli for con i semplici while loop visto l'uso che ne facevi...
Max
[attachment=0:2f8xmrc8]LabVIEW - Led.vi[/attachment:2f8xmrc8]
----------------------------------------
AUTORE: 4160
DATA :13/11/2012 - 11:33:05
----------------------------------------
Grazie della risposta. Ho capito il mio errore, ti ringrazio del chiarimento, solo che ho un piccolo problema...
Ho la versione 2010 di LabVIEW quindi non posso aprire il file corretto.
Se potessi fare uno screenshot della modifica te ne sarei grato.
Grazie ancora.
----------------------------------------
AUTORE: 660
DATA :13/11/2012 - 11:43:15
----------------------------------------
farò di meglio, te lo risalvo nella versione 2010...
Ciao
Max
[attachment=0:1k49qjcl]LabVIEW - Led.vi[/attachment:1k49qjcl]
----------------------------------------
AUTORE: 4160
DATA :13/11/2012 - 15:01:56
----------------------------------------
Ciao, ti ringrazio molto, alla fine ho risolto, traendo spunto dal tuo file, mettendo tutto in un While, a cui condizione vi è un False. In questo modo vi è continuità, il tutto è dentro un while(1) quindi il programma non si stacca mai, e si ha l'effetto continuo. Grazie mille!
----------------------------------------
================================================================================
funzioni di comparazione
================================================================================
AUTORE: 5615
DATA :14/11/2012 - 07:37:11
----------------------------------------
buongiorno usa labview da un paio di giorni
e non capisco ancora bene molte cose....
utilizzando un comparatore di maggioranza e minoranza
come posso fare per fargli fare una cosa per vera e una per falsa????
grazie in anticipo
----------------------------------------
AUTORE: 660
DATA :14/11/2012 - 09:17:20
----------------------------------------
non è che riesci a spiegarti meglio e/o ad inviare un VI di esempio?
e.g.:
- quali dati hai in ingresso?
- cosa vuoi confrontare?
- come vuoi utilizzare il risultato del confronto?
prova a guardare negli esempi e nell'help del comparatore...
Max
----------------------------------------
AUTORE: 660
DATA :14/11/2012 - 09:25:11
----------------------------------------
un esempietto se può esserti utile...
[attachment=0:1akfbtym]Comparatore.vi[/attachment:1akfbtym]
Max
----------------------------------------
AUTORE: 5615
DATA :14/11/2012 - 09:58:37
----------------------------------------
grazie ora ho capito come usarlo
comunque io devo fare questo programma
L’obiettivo della tua applicazione è quello di creare un VI che genera un numero casuale tra 0 e 100 e guida
l’utente nella sua ricerca fino a che il numero non viene indovinato.
· Appena l’applicazione viene mandata in esecuzione, Il VI genera un numero casuale.
· Viene chiesto all’utente di indovinare il numero che l’applicazione ha generato.
· Se il numero inserito dall’utente:
o È maggiore del numero generato da LabVIEW, compare il messaggio “Inserisci un numero
maggioreâ€
o È minore del numero generato da LabVIEW, , compare il messaggio “Inserisci un numero
minoreâ€
· L’applicazione inoltre tiene traccia del tempo trascorso. Quando il numero viene indovinato
o Compare il messaggio: “Hai indovinato in TT secondiâ€, dove TT viene calcolato in funzione
del tempo trascorso
o L’applicazione termina.
[attachment=0:3nkz9e02]prova1.vi[/attachment:3nkz9e02]
----------------------------------------
AUTORE: 660
DATA :14/11/2012 - 10:03:24
----------------------------------------
purtroppo io arrivo solo alla versione 2011 di LV...
Max
----------------------------------------
AUTORE: 5615
DATA :14/11/2012 - 10:07:54
----------------------------------------
quindi non puoi aiutarmi???
----------------------------------------
AUTORE: 660
DATA :14/11/2012 - 10:10:57
----------------------------------------
no, è che devi andare nel menu file e scegliere save for previous version...
poi posti il nuovo file così posso aprirlo...
Max
----------------------------------------
AUTORE: 5615
DATA :14/11/2012 - 10:14:52
----------------------------------------
dimmi se la vedi cosi
[attachment=0:75hp3hmp]prova1.vi[/attachment:75hp3hmp]
----------------------------------------
AUTORE: 660
DATA :14/11/2012 - 11:05:58
----------------------------------------
eccoti una possibile, anche se non bella, soluzione con un po' di note...
...non è bella però è abbastanza semplice da capire... poi si può migliorare il codice...
[attachment=0:169rgtk9]prova1.vi[/attachment:169rgtk9]
Max
----------------------------------------
AUTORE: 5615
DATA :14/11/2012 - 11:33:15
----------------------------------------
grazie ma perchè le array funzionano solo per vero e non pure per falso???
e poi cosa sono i pulsanti corrispondenti all'uguale?????
scusa l'ignoranza ma non li conosco
e come posso fare per aggiungere il tempo???
----------------------------------------
AUTORE: 660
DATA :14/11/2012 - 12:33:13
----------------------------------------
[quote:2ukvss3m] perchè le array funzionano solo per vero e non pure per falso???[/quote:2ukvss3m]
in realtà sono "case structure" e non "array" e funzionano anche per false, solo che li ho utilizzati così:
[color=#FF0000:2ukvss3m]SE il numero scritto è MAGGIORE di quello pensato ALLORA scrivi che devo ridurlo
SE il numero scritto è UGUALE a quello pensato ALLORA scrivi che l'ho trovato
SE il numero scritto è MINORE di quello pensato ALLORA scrivi che devo aumentarlo[/color:2ukvss3m]
come vedi non ci sono i casi opposti, la struttura ha solo IF...THEN e non IF...THEN...ELSE
però puoi sbizzarrirti con soluzioni differenti ed anche migliori...
[quote:2ukvss3m]cosa sono i pulsanti corrispondenti all'uguale?????[/quote:2ukvss3m]
cosa intendi? se intendi quelli in cui scrivo il testo sono le "variabili locali" per crearle tasto destro sull'indicatore (o sul controllo) che ti interessa e scegli create->local variable, poi premendo il tasto destro su di lei puoi cambiare se la vuoi usare in lettura o in scrittura...
[quote:2ukvss3m]come posso fare per aggiungere il tempo???[/quote:2ukvss3m]
nella function pallette sotto la voce timing trovi tutti i blocchetti che vuoi...
Max
----------------------------------------
AUTORE: 660
DATA :14/11/2012 - 12:37:43
----------------------------------------
dai un'occhiata qui.. così ti fai un'idea...
[url:22t0shm7]http://www.ni.com/gettingstarted/labviewbasics/[/url:22t0shm7]
Max
----------------------------------------
================================================================================
Riciclare il proprio lavoro
================================================================================
AUTORE: 4161
DATA :15/11/2012 - 15:08:06
----------------------------------------
Buon pomeriggio a tutti
ho cercato un po all'interno del forum ma non ho trovato la soluzione al problema che mi appresto a descrivere... Beh, non si tratta proprio di un problema, ma del poter organizzare meglio il proprio lavoro e riciclare subVI in maniera più efficiente.
Premetto che è qualche tempo che, a singhiozzo, programmo con LabVIEW tuttavia le mie competenze informatiche, soprattutto per quanto riguarda l'implementazione degli algoritmi, lasciano un po a desiderare.
Nel paio di semplici applicazione che mi sono trovato a sviluppare, come consigliato in tutte le guide di base che ho letto, ho optato per la creazione di subVI tutte le volte in cui ritenevo necessario una maggiore chiarezza nella gestione del codice unitamente al fatto che determinati calcoli fossero richiamati da diverse parti di codice.
Mi sono trovato presto nella condizione in cui, alcune subVI, create inizialmente per un progetto e salvate in cartelle e/o sottocartelle appartenenti ad esso (otrdinate per altro in modo logico) fossero utili all'interno di altri progetti. Il problema, quindi, non è l'inserire o meno un subVI nel Block Diagram tramite la funzione "Select a VI" da Function Palette ma rendersi conto che tali subVI dovrebbero essere inseriti in directory ad uso generico e, magari, avere all'interno della function palette i rispettivi subVI.
Questo penso possa essere un tassello per arrivare col tempo a riciclare il codice, almeno per quel che riguarda operazioni non troppo complesse.
Discorso all'incirca simile, correggetemi se sbaglio, potrebbe essere fatto per la creazione di probe personalizzati o cluster d'errore personalizzati.
Grazie per l'attenzione.
----------------------------------------
AUTORE: 301
DATA :16/11/2012 - 08:50:36
----------------------------------------
Perdonami, ma non è chiarissimo quello che chiedi, o meglio:
Labview mette già a disposizione tutto quello che chiedi, se apri la dir <<C:\Program Files\National Instruments\LabVIEW xx\user.lib>>, ed inserisci le tue "librerie", al riavvio di LV ti trovi tutti i tuoi vi nella paletta.
Inoltre, hai la possibilità di creare e modificare le varie sottopalette a tuo piacimento.....
Aris
----------------------------------------
AUTORE: 90
DATA :16/11/2012 - 09:23:18
----------------------------------------
Premetto che neanche io ho capito molto quello che ti serve ma qui nello stesso forum ci sono delle guide fra cui una che si chiama: "[i:3s43p42a]Riutilizzo del Codice[/i:3s43p42a]" che ho trovato molto utile; lo trovi qui: viewtopic.php?f=34&t=1766
Spero possa servirti.
Ciao
----------------------------------------
AUTORE: 4161
DATA :19/11/2012 - 20:02:22
----------------------------------------
Beh... quello di inserire un VI fatto da me nella cartella <<C:\Program Files\National Instruments\LabVIEW xx\user.lib>> non lo sapevo
scusate l'ignoranza
Sto smanettando con le opzioni per editare le palette dei subVI inserini nella userlib
È possibile esportare le librerie da me create, unitamente alle icone da inserire nelle function block, per renderle istallabili su di un altro pc?
----------------------------------------
AUTORE: 129
DATA :17/12/2012 - 15:17:22
----------------------------------------
Il mio consiglio è di farti un repository esterno all'ambiente labview (cartelle user comprese) dove metti il codice originale.
Poi metti nella cartella user library o dove vuoi, la copia della cartella, in modo da non modificare per errore i file originali.
----------------------------------------
================================================================================
Abilitare Pulsante mediante tasto
================================================================================
AUTORE: 4160
DATA :15/11/2012 - 17:18:51
----------------------------------------
Salve a tutti ragazzi, mi rivolgo ancora a voi.
Nella simulazione che ho realizzato su LabVIEW ho bisogno che 6 switchers (Pulsanti "Switch Until Release") vengano azionati mediante la pressione di un tasto da tastiera.
Mi spiego.
Ho
P1
P2
P3
P4
P5
P6
Invece che premerli singolarmente con il mouse avrei bisogno che questi si attivino con la pressione di un tasto da tastiera (Stile Multisim).
Quindi ad esempio:
Ho
P1 azionato da A
P2 azionato da B
P3 azionato da C
P4 azionato da D
P5 azionato da E
P6 azionato da F
Come posso fare? Quali impostazioni? C'è un blocco adatto?
Vi ringrazio per la disponibilità!
----------------------------------------
AUTORE: 660
DATA :16/11/2012 - 07:56:30
----------------------------------------
Ciao,
ti allego un VI di esempio con una delle possibili soluzioni, dipende molto da come è strutturato il resto del tuo programma...
intanto è un'idea...
Max
[attachment=0:xbuxzd8y]prova tasti.vi[/attachment:xbuxzd8y]
----------------------------------------
AUTORE: 301
DATA :16/11/2012 - 08:43:11
----------------------------------------
Se ti basta utilizzare i tasti funzione della tastiera:
Tasto dx del mouse sul pulsante che ti interessa >> properties >> key navigation >> imposti sezione "Toggle".
Aris
----------------------------------------
AUTORE: 4160
DATA :16/11/2012 - 13:35:46
----------------------------------------
Grazie ad entrambi della risposta, ho aperto il file di Max, ma mi sembra più semplice, per ciò che mi serve, adottare la soluzione di Aris.
Ho provato seguendo il consiglio di Aris a settare in Toggle i tasti con F1,F2 etc...
Il problema mio ora è un altro. Dopo aver fatto questo, e aver settato il tasto come bottone, "Switch Until Release", se io premo F1, è necessario che lo riprema una seconda volta per farlo tornare a stato OFF.
Io invece avrei bisogno che il tasto della tastiera invii un singolo impulso, ovvero che il bottone in simulazione rimanga premuto fino a che io premo il tasto della tastiera.
Fatemi sapere e grazie ancora delle risposte
----------------------------------------
AUTORE: 301
DATA :16/11/2012 - 14:03:22
----------------------------------------
Allora credo che l'unica via sia con la struttura ad eventi.....
Aris
----------------------------------------
AUTORE: 4160
DATA :16/11/2012 - 16:59:38
----------------------------------------
Ci darei volentieri un occhiata. Non è che potresti convertire la versione del file nella 2010?
Purtroppo posseggo LabVIEW 2010.
Grazie ancora e scusa il disagio.
----------------------------------------
AUTORE: 301
DATA :16/11/2012 - 17:44:01
----------------------------------------
Certo, figurati, l'incompatibilità dei vi con le versioni subito precedenti del LV è una delle cose che mal sopporto......
Aris
----------------------------------------
AUTORE: 4160
DATA :16/11/2012 - 19:58:59
----------------------------------------
Grazie del file.
Sto cercando di capire il funzionamento della struttura, ma sono ancora un novizio su LabVIEW...
Ho capito che hai utilizzato i codici ASCII per l'assegnazione della lettera.
Non ho ben capito però cos'è lo Scancode --> case=30 e anche il DIscard?.
Adesso provo a sostituirlo nel progetto e ti faccio sapere
----------------------------------------
AUTORE: 301
DATA :18/11/2012 - 13:16:50
----------------------------------------
http://zone.ni.com/devzone/cda/epd/p/id/1893
Aris
----------------------------------------
AUTORE: 757
DATA :03/12/2012 - 18:26:09
----------------------------------------
Prova con questo vi semplice e funzionale
----------------------------------------
AUTORE: 129
DATA :17/12/2012 - 09:50:12
----------------------------------------
Prova questo in linea con rudibos.
L'implementazione con struttura ad eventi o questa soluzione dipende da dove e come deve lavorare questo pezzo di codice.
Ti ho suggerito questo perchè impostandolo come pulsante avevi richiesto che restasse attivo finchè è tenuto il pulsante.
Questo rimane nel frame SPACE fintanto che tieni premuto la barra spaziatrice.
Ho visto che nel creare lo snippet ha sostituito le variabili locali con delle property.
Avevo messo le local dei boolean da modificare.
----------------------------------------
================================================================================
Multi rename file
================================================================================
AUTORE: 5655
DATA :16/11/2012 - 07:47:20
----------------------------------------
Buongiorno a tutti .. Sono giorni che provo varie strade ma ad oggi non ho trovato una soluzione funzionale al mio problema.La mia necessità è quella di eseguire un rename di tutti i file di un progetto labview. Se eseguito direttamente sul progetto labview questo è possibile ma solo facendo un file per volta !!.L'altra strada è quella di eseguire un rename lato windows ma in questo caso il problema è che il progetto perde tutte le dipendenze ... qualcuno ha idea di qualche altro modo in qui potrei risolvere il mio problema ?? grazie
----------------------------------------
AUTORE: 43
DATA :22/11/2012 - 07:59:59
----------------------------------------
[quote="metju":31oau4q0]Buongiorno a tutti .. Sono giorni che provo varie strade ma ad oggi non ho trovato una soluzione funzionale al mio problema.La mia necessità è quella di eseguire un rename di tutti i file di un progetto labview. Se eseguito direttamente sul progetto labview questo è possibile ma solo facendo un file per volta !!.L'altra strada è quella di eseguire un rename lato windows ma in questo caso il problema è che il progetto perde tutte le dipendenze ... qualcuno ha idea di qualche altro modo in qui potrei risolvere il mio problema ?? grazie[/quote:31oau4q0]
Non posso postare esempi in merito ma dovrebbe essere possibile fare ciò da LabVIEW, creandosi un apposito VI.
Si caricano i VI in memoria (c'è un VI che restiruisce la lista completa dei VI caricati, non ricordo il nome), si aprono uno per volta con "Open VI" e si applica il metodo "Save As..." indicando il nuovo path.
Io l'avevo fatto con LV7.1. La mia era una specie di compilazione perchè copiavo tutto l'"albero" dei VI in una nuova cartella, salvando i VI "senza Diagramma" e cambiando loro il riferimento alla VI Library.
Se devi cambiare il Nome a tutti i VI apponendo un prefisso o un suffisso potrebbe essere semplice.
Se ne devi spostare una parte, meglio farsi "una lista Ad esempio da linea di comando digiti "dir/s >lista.txt" per avere in un sol colpo in un file di testo la lista dei file. Poi con un text editor ti copi i nomi dei Vi in in un array di costanti stringhe di labVIEW e ne salverai il contenuto come default...
bye
----------------------------------------
AUTORE: 660
DATA :22/11/2012 - 09:29:59
----------------------------------------
se ti può bastare aggiungere un prefisso puoi vedere di farlo da project explorer...
dalla voce "build specifications" scegli "source distribution" e nelle opzioni ti consente di aggiungere un prefisso a tutti i file di una determinata cartella...
Max
----------------------------------------
================================================================================
Convertire testo in html
================================================================================
AUTORE: 1567
DATA :16/11/2012 - 19:58:51
----------------------------------------
ciao a tutti, vi chiedo un aiuto su come fare per etfettuare la conversione da testo normale ad html, tipo un txt to html, io uso lv 8.20 e ho cercato ovunque ma non ho trovato questa funzione di conversione, potete aiutarmi??
grazieee 1000
----------------------------------------
AUTORE: 482
DATA :19/11/2012 - 15:03:22
----------------------------------------
...c'e' qualcosa ch enon mi torna...html è testo normale!
se tu hai del codice html e lo apri con notepad vedi il testo, se lo apri con un browser avrai una "pagina web"....
basta cambiare l'estensione del file o il programma con cui apri il file no?
----------------------------------------
AUTORE: 129
DATA :17/12/2012 - 16:27:07
----------------------------------------
Concordo con Geppo, però se devi creare un html formattato a partire da un txt nomn formattato, devi usare strumenti che ti supportino nella formattazione come il report generation toolkit per html, già presente nelle versioni di labview dalla palette report.
Oppure la formattazione la fai utilizzando le funizoni stringa e poi salvi il tutto in un file che avrà estensione .html o .htm
Nicola
----------------------------------------
================================================================================
Utilizzo delle risorse
================================================================================
AUTORE: 5498
DATA :17/11/2012 - 20:14:12
----------------------------------------
E' da un pò di tempo che utilizzo LabView.
Ho sviluppato parecchie applicazioni (trasformando i vi in eseguibili ".exe") e ho notato l'alto impiego di risorse che il programma utilizza (anche per applicazioni banali).
Esistono particolari tecniche di programmazione che permetterebbero di ridurre le risorse impiegate?
Esistono anche versioni di LabView possiamo dire più "leggere", e che quindi si adattano meglio a sistemi con basse prestazioni?
----------------------------------------
AUTORE: 301
DATA :18/11/2012 - 13:22:27
----------------------------------------
Esistono "normali" tecniche di programmazione che non fanno utilizzare molte risorse del sistema.
Potresti postare un semplice esempio di un tuo lavoro e vedere a cosa può essere dovuto quello che dici.
La primissima cosa che mi viene in mente, è un ciclo while non temporizzato, che di per se non è gran cosa, ma appena gli fai ciclare del codice (magari su una macchina un po datata) richiede il massimo dal pc.
Aris
----------------------------------------
================================================================================
Popolare una tabella o listbox
================================================================================
AUTORE: 5801
DATA :21/11/2012 - 08:23:00
----------------------------------------
salve a tutti sono nuovo,
mi sono messo da poco a usare labview per tirocinio e ho trovato la seguente difficolta....
devo scrivere un insieme di dati in una tabella o in una listbox multicolonna....
il mio problema è che i dati vengono regolarmente scritti su un vettore, ma quando provo a inserirle in una tabella o listbox alcuni cambi li salta, li vedo vuoti....
preciso che nelle stesse posizioni lo stesso flusso di dati in un vettore è presente ovunque...da cosa potrebbe dipendere?
----------------------------------------
AUTORE: 660
DATA :21/11/2012 - 09:32:07
----------------------------------------
riesci a postare qualche esempio o, meglio, il VI con cui fai questo riempimento?
Max
----------------------------------------
AUTORE: 482
DATA :22/11/2012 - 06:58:40
----------------------------------------
Questa cosa è molto strana visto che la tabella altro non è che un array bidimensionale di stringhe, quindi posso ipotizzare che ci sia un problema di conversione (nel caso ci sia) dei dati dall'array originale per trsformarlo in un array di stringhe.
Quindi ascolta machyaer e prova a postare un esempio.
----------------------------------------
AUTORE: 129
DATA :26/11/2012 - 19:51:37
----------------------------------------
...vengono regolarmente scritti... significa che probabilemnete il problema è nel come i dati vengono inseriti nel vettore e come il vettore popola la tabella che solitamente è un vettore 2d.
Per cui senza codice è difficile immaginarsi il problema, ma provando a immaginare gli errori che si commettono solitamente, potrei elencarti alcuni casi:
[list:1g7u7dc8]Il vettore non viene compilato correttamente (prova a vedere come gira il flusso mettendo il vi in debugging eseguendolo con la lampadina spuntata) e mettendo uno o più probe nei punti che inviano i dati al vettore.[/list:u:1g7u7dc8]
[list:1g7u7dc8]Se il vettore è 2d potresti doverb fare un transpose array prima di servirlo alla tabella[/list:u:1g7u7dc8]
Se mandi il codice sarebbe sicuramente più facile aiutarti.
Nicola
----------------------------------------
================================================================================
Misura velocita da encoder assoluto con misura frequenza con
================================================================================
AUTORE: 5772
DATA :25/11/2012 - 10:33:57
----------------------------------------
Salve a tutti, sono nuovo del forum e sono un tesista dell università di palermo. Volevo chiedere il vostro aiuto per risolvere il mio problema. Dispongo di un motore tubolare lineare caricato il cui traslatore caricato con un peso scorre su una carrucola. All'albero della carrucola ho collegato un encoder di tipo assoluto dell'heidenhain con interfaccia parallela. Utilizzando una misura di frequenza di uno dei bit dell'encoder voglio risalire a una misura di velocita. Riscontro degli errori nella misura con due contatori utilizzando uno chassis NI cDAQ9172 e dei moduli NI9401. Volevo dei chiarimenti riguardo alla connessione dei segnali; cioè il manuale mi dice che bisogna collegare il segnale da misurare al source di un contatore e al gate l'impulso. Ora l'errore che riscontro è che non mi permette di utilizzare contemporaneamente io task dei due contatori di cui uno l'ho utilizzo per generare l'impulso di periodo noto!! C'è qualche errore che commentto nel collegamento dei segnali o ho bisogno di generare l'impulso esternamente?? allego datashett chassis e moduli!! I moduli li collego ai slota 5 e 6!!!
----------------------------------------
AUTORE: 301
DATA :25/11/2012 - 21:11:32
----------------------------------------
Ciao, premetto che non ho molta esperienza con i moduli che utilizzi tu, ma di solito se fai una misura a 2 contatori, non li devi collegare "fisicamente".
L'utilizzo del secondo contatore viene fatto internamente alla scheda per avere un clk più elevato di quello di default.
Aris
----------------------------------------
AUTORE: 482
DATA :26/11/2012 - 07:05:34
----------------------------------------
Prova ad utilizzare un modulo unico di inizializzazione per tutti e due i contatori mettendo il tutto in un unico flusso di dati.
Poi come diceva Aris, probabilmente puoi utilizzare il clock interno della scheda come riferimento, senza bisogno di generarne uno con l'altro contatore.
----------------------------------------
AUTORE: 5772
DATA :26/11/2012 - 10:32:44
----------------------------------------
Vi ringrazio per la disponibilità datami!! Per quanto riguardo il mio programma ho optato per una misura di frequenza con un contatore. In questo caso riscontro l'errore Error -200141 data was overwritten before it could be read by the system. Quali possono essere le cause di quest errore? Ho bisogno di una misura in frequenza più precisa come quella a due contatori con large range?? Questo errore lo riscontro soltanto quando aziono il motore mentre se faccio girare manualmente l'albero dell'encoder o collego il terminale del modulo a un segnale di frequenza nota non riscontro nessun errore. Vi allego il mio programma!!
----------------------------------------
AUTORE: 301
DATA :26/11/2012 - 10:56:19
----------------------------------------
L'errore che riscontri è dovuto (come scritto) al fatto che vai a svuotare il buffer della scheda troppo lentamente (100ms)e questa ti dice che sta sovrascrivendo dei valori (che perdi).
Dovresti gestire la tua lettura con una coda ( per il post processing) o comunque acquisire più dati.
Aris
----------------------------------------
AUTORE: 5772
DATA :26/11/2012 - 11:07:15
----------------------------------------
Non riesco ad aprire il file modificato da te perchè lavori con una versione successiva alla mia 2010. C'è un modo per aprire il file??
----------------------------------------
AUTORE: 301
DATA :26/11/2012 - 11:15:10
----------------------------------------
Convertito
Aris
----------------------------------------
AUTORE: 5772
DATA :26/11/2012 - 15:40:34
----------------------------------------
Ti ringrazio adesso funziona!!!
----------------------------------------
AUTORE: 301
DATA :26/11/2012 - 15:42:45
----------------------------------------
mi fa piacere.
Il "100" campioni, l'ho messo a caso, se non hai problemi di velocità di post-processing puoi mettere anche un valore maggiore, altrimenti considera di sposare un pattern diverso (prod-cons con le code o simile).
Aris
----------------------------------------
AUTORE: 5772
DATA :28/11/2012 - 15:26:36
----------------------------------------
Per quanto riguarda i campioni alla fine con 100 non ho avuto problemi!! Però alla fine ho utilizzato una misura in frequenza con due contatori large range. Volevo chiederti se avevi indicazioni da darmi riguardo all'impostazione del divisore? le mie frequenza variano dall'ordine dell Hz a un massimo di qualche KHz, non superano i 10 KHz. Pongo questa domanda perchè all'avvio del motore nei primi centesimi di secondo ottengo valori di velocità e di frequenza abbastanza elevati che non corrispondono alle mie aspettative. E mi chiedevo se è un problema di programma, di scelta del divisore oppure è dovuto alla elevata forza che imprime il mio motore all'asse della carrucola a cui è collegato il mio encoder e il programma non riesce a seguire le variazioni di frequenza rispondendo in maniera errata!!
----------------------------------------
AUTORE: 301
DATA :29/11/2012 - 07:20:19
----------------------------------------
Difficile dirlo così.
Quasi sicuramente è qualcosa inerente al "sistema".
Per le frequenze che devi acquisire, credo che una misura a due contatori sia fin troppo, ma non dovrebbe essere quello a dare problemi.
Aris
----------------------------------------
AUTORE: 5772
DATA :29/11/2012 - 08:30:17
----------------------------------------
Per quanto riguarda la misura in frequenza l'ho scelta perchè la frequenza del segnale varia in maniera brusca. Per sistema intendi l'encoder o il mio sistema di acqusizione chassis più moduli??
----------------------------------------
AUTORE: 301
DATA :29/11/2012 - 08:35:28
----------------------------------------
Intendo "il sistema" in tutte le sue componenti (hw di misure, attuatori, trasduttori, ecc).
Dovresti vdere (magari con un oscilloscopio) il segnale generato dall'encoder per vedere se ci sono cose particolari o se è il tuo sistema di misura che va "tarato" in base al funzionamento.
Insomma, ci sono da fare un po di verifiche......
Aris
----------------------------------------
AUTORE: 5772
DATA :29/11/2012 - 08:41:38
----------------------------------------
Vabene aris ti ringrazio sempre per la tua disponibilità e professionalità!!
----------------------------------------
AUTORE: 5772
DATA :02/12/2012 - 18:02:21
----------------------------------------
Ho seguito il tuo consiglio e ho notato che il segnale in uscita dall'encoder non è perfetto ma è un po disturbato. Un eventuale rumore elettrico potrebbe causare una misura falsata e quindi anche i risultati che ottengo sopratutto all'avvio del motore quando ho una brusca variazione di frequenza? Cioè il rumore potrebbe essere una causa dei risultati che ottengo?
----------------------------------------
AUTORE: 301
DATA :03/12/2012 - 07:27:02
----------------------------------------
Potrebbe essere, certo!
Hai impostato i livelli di tensione del segnale in frequenza? (min 0 max 5 o 3 o quello che è)
Hai messo un cavo schermato?
Lo 0v di alimentazione del tuo sistema è collegato alla massa?
Aris
----------------------------------------
AUTORE: 5772
DATA :04/12/2012 - 08:18:34
----------------------------------------
Si i livelli di alimentazione li ho impostati correttamente e anche lo 0 volt è connesso a massa. Per quanto riguarda il cavo non ho utilizzato un cavo schermato! Il supporto della national mi ha suggerito di utilizzare un architettura producer/consumer per risolvere il tutto anche se è un problema dovuto a disturbo non so se otterrò i risultati sperati. Ti ringrazio del supporto Aris anzi potresti convertirmi il file che ti allego per la versione 2009 0 2010?
----------------------------------------
AUTORE: 301
DATA :04/12/2012 - 08:37:57
----------------------------------------
Il fatto del disturbo è una possibilità, non è detto che sia SICURAMENTE quello, senza lavorare "sul pezzo" ti passo solo idee.....
Purtroppo mi fermo alla 2011 ed il file è LV 2012.....
Aris
----------------------------------------
================================================================================
patch italiana per labview
================================================================================
AUTORE: 5615
DATA :27/11/2012 - 14:32:14
----------------------------------------
buonasera volevo chiedere se per caso esiste una patch in italiano di labview
grazie in anticipo
----------------------------------------
AUTORE: 129
DATA :27/11/2012 - 20:17:56
----------------------------------------
Se intendi una versione dell'ambiente in Italiano, no non esiste.
----------------------------------------
================================================================================
Disegnare una roi in un Intensity Graph e
================================================================================
AUTORE: 1670
DATA :27/11/2012 - 16:41:48
----------------------------------------
Ciao a tutti,
vi chiedo un aiuto su una applicazione che devo fare su un Intensity Graph. In poche parole devo disegnare sopra un Intensity Graph una roi quadrata dalla quale devo ricavare coordinate e valore di ciascun pixel che sta all'interno, naturalmente i pixels sono quelli dell' Intensity Graph. Sto facendo dei tentativi, ma senza successo.
Qualcuno mi sa dire qual'è il modo più appropiato.
Sto utilizzando labview 2011 con Windows xp 32 bit.
Grazie in anticipo per l' aiuto.
Buona serata a tutti
----------------------------------------
AUTORE: 301
DATA :28/11/2012 - 07:47:17
----------------------------------------
Potresti usare i cursori del grafico, usare le loro coordinate per fare un subset dalla matrice.
Aris
----------------------------------------
AUTORE: 1670
DATA :28/11/2012 - 08:46:35
----------------------------------------
Ciao Aris,
è una buona idea, però questa soluzione non mi permette di disegnare la roi sull' Intensity Graph (almeno da quello che so non mi risulta possibile). Mi spiego meglio su cosa mi serve: la roi che disegno deve essere visibile, devo poterla spostare (e magari memorizzare), in modo da centrarla nella zona di interesse e solo dopo con un pulsante estrarre i dati. La tua soluzione è ottima per estrarre i dati però non mi permette di vedere la roi. Forse la soluzione (azzardo) è nel convertire l' Intensity Graph in picture( anche se non so se è possibile) e quindi utilizzare il picture per disegnare e spostare la roi (questo so che è possibile) e l' Intensity Graph per estrarre i dati (quindi utilizzerei i due oggetti diciamo in parallelo).
Se ho un attimo oggi proverò, comunque visto che ancora non ho la soluzione accetto qualsiasi consiglio.
Grazie dell'attenzione e buona giornata
----------------------------------------
================================================================================
Lista Completa NI Background Services
================================================================================
AUTORE: 4157
DATA :28/11/2012 - 09:08:42
----------------------------------------
Ciao a tutti!
Ho sviluppato un'applicazione con LV2011, NI Vision e una telecamera GigEthernet. Tale applicazione viene eseguita su un PC WinXp dedicato.
Sarei interessato alla lista completa dei servizi NI che possono essere eseguiti su una macchina WinXP.
Navigando qua e la nella rete ho trovato del materiale utile come punto di partenza....ma incompleto e non ufficiale!
[url:rnk9lizk]http://labviewwiki.org/NI_services[/url:rnk9lizk]
[url:rnk9lizk]http://lavag.org/topic/9550-reducing-ni-footprint-disabling-services-and-un-necessary-tasks/page__hl__%2Bdisabling+%2Bservices+%2Band+%2Bun-necessary+%2Btasks__fromsearch__1[/url:rnk9lizk]
[url:rnk9lizk]http://forums.ni.com/t5/LabVIEW/NI-background-services/td-p/410475[/url:rnk9lizk]
[url:rnk9lizk]http://forums.ni.com/t5/LabVIEW/How-do-I-turn-off-background-ni-file-activity-when-not-using/td-p/649017[/url:rnk9lizk]
Il mio obbiettivo è quello di minimizzare i servizi non necessari alla mia applicazione che vengono eseguiti, talvolta anche in modo automatico all'avvio del S.O..
Ringrazio anticipatamente tutti coloro che interverranno
lillo368
----------------------------------------
================================================================================
Lab view lego mindstorm 2.0
================================================================================
AUTORE: 5615
DATA :29/11/2012 - 16:44:25
----------------------------------------
Buonasera vorrei utilizzare lab view per programmare un robot della lego
ma non riesco a trovare il tool per la versione 2012... come faccio???
inoltre dovrei fare distinguere al robot l'azzurro dall'indaco e il rosso dal magenta..
conoscete qualche modo semplice per individuarlo o e meglio utilizzare la scala di luminosità???
grazie in anticipo
----------------------------------------
AUTORE: 482
DATA :30/11/2012 - 07:24:32
----------------------------------------
Per la secondo domand anon ti so rispondere perchè non l'ho mai usato, ma per la prima ti posso dire che anche le versioni precedenti sono compatibili con la 2012
----------------------------------------
================================================================================
HP4192A while loop in conflitto con global variables
================================================================================
AUTORE: 1317
DATA :30/11/2012 - 10:47:36
----------------------------------------
Buongiorno a tutti,
Sto utilizzando i drivers labview per un impedance analyzer HP 4192A. Il .vi in allegato funziona correttamente. Dopo aver passato tutti i parametri di configurazione, il while loop nel terzo frame continua correttamente a leggere i dati di output. Il problema sorge non appena creo delle global variables per i parametri A e B e richiamo queste variabili con un altro .vi, il GPIB read nel while loop non fornisce piu' un output. Il primo ciclo del while loop legge correttamente i parametri A e B ma dal secondo ciclo non vi e' piu' refresh dei dati. Ho provato a cambiare il timeout del GPIB read e ad introdurre un tempo di attesa tra i diversi cicli ma non sono ancora riuscito a risolvere il problema. Il .vi funziona correttamente anche quando i parametri A e B sono collegati alle due global variables e le due global non vengono richiamate da nessun altro .vi.
Vi ringrazio per l'attenzione e mi congratulo per la qualita' di questo forum.
daniele
----------------------------------------
AUTORE: 301
DATA :30/11/2012 - 12:39:14
----------------------------------------
Sembra essere abbastanza strano.....
Hai provato a passare i dati con delle funcional global?
Aris
----------------------------------------
AUTORE: 1317
DATA :09/12/2012 - 14:20:19
----------------------------------------
Aris,
grazie della risposta. il problema era nel secondo while loop al quale passavo la global variable. non avevo messo nessun waiting time in quel loop e (non so perchè) questo corrompeva anche il while loop di lettura del HP4192A. Sono riuscito a risolvere il problema aggiungendo una sequence e un waiting time di 100 ms.
daniele
----------------------------------------
================================================================================
Associazione icona nome della funzione
================================================================================
AUTORE: 5128
DATA :02/12/2012 - 11:53:33
----------------------------------------
Salve a tutti,
Vorrei sapere se è possibile trovare da qualche parte una legenda che accoppi l'icona della funzione svolta con il nome della funzione stessa...
Ad esempio a pagina 75 di questo tutorial http://www.lnf.infn.it/edu/stagelnf/201 ... ew2012.pdf
nella structure flat vi è un'icona con dentro un punto interrogativo, come si chiama la funzione che svolge?
Grazie
----------------------------------------
AUTORE: 301
DATA :03/12/2012 - 07:37:58
----------------------------------------
La funzione di cui parli, si chiama "In Range and Coerce", il "punto di domanda" è una uscita booleana che indica se il numero è compreso nel range min-max specificato.
Da che ne so io, non esistono "regole fisse", ma il buon senso.......
Come mi ha detto un guru di LV, "è inutile continuare a fare una funzione di sweep in frequenza con icona una pistola"......
Ci sono molte icone, sopratutto nelle versioni più recenti del LV.
Prendi esempio le funzioni già esistenti e segui la filosofia (occhiali per read, matita per write, cronometro per funzioni di timing, ecc.)
Aris
----------------------------------------
================================================================================
Come riempire un array in tempo reale
================================================================================
AUTORE: 4246
DATA :03/12/2012 - 22:15:25
----------------------------------------
Salve a tutti,
ho un DAQ-6210 per l'acqusizione di valori in tensione in tempo reale. Ora mi trovo davanti ad un problema che non riesco a risolvere: come diavolo faccio a riempire un array di tot valori acquisiti dal DAQ ??
In pratica, il DAQ mi fornisce (per esempio) un array di 100 campioni ad ogni acquisizione, io voglio creare un array di 1000 valori concatenando 10 array insieme. Una volta avuto l'array di 1000 valori ne voglio fare la media e rifare tutto da capo ovvero ricreare un array di 1000 nuovi campioni farne la media e così via.
Io ho parlato di DAQ perchè è il mio caso ma la stessa identica cosa si potrebbe applicare al caso più istruttivo di avere ogni tot tempo un array di 10 valori e di voler creare un array più grande concatenando tutti gli array via via che arrivano.
E' una cosa che deve essere banale ma io non ne vengo a capo...datemi n'a mano
----------------------------------------
AUTORE: 482
DATA :04/12/2012 - 07:05:43
----------------------------------------
puoi usare due blocchetti:
"build array" con il concatenate input oppure "Insert into array".
Li trovi nella palette degli array, guarda l'help relativo e vedrai che sono molto semplici.
----------------------------------------
AUTORE: 4246
DATA :04/12/2012 - 08:00:05
----------------------------------------
Ciao geppo, ho tentato con il build array ma non ne vengo a capo. Io penso che serva un ciclo o una condizione if per bloccare il riempimento dell'array (con build array ad esempio) dopo tot concatenazioni. Che ne pensi??
----------------------------------------
AUTORE: 4246
DATA :04/12/2012 - 09:42:02
----------------------------------------
Posto una foto per capire il problema
[img:1j84ueeb]http://i45.tinypic.com/zwky10.jpg[/img:1j84ueeb]
Ho provato con un feedback ma il vettore si riempie all'infinito (infatti size aumenta sempre) invece avrei necessità di dire...quanto size supera 300 riinizia da zero a creare il vettore.
Help
----------------------------------------
AUTORE: 482
DATA :04/12/2012 - 12:33:06
----------------------------------------
Occhei, allora, vedendo il tuo vi capisco che siamo proprio alle basi di utilizzo di labview.
Se devi fare un operazione che si ripete nel tempo devi usare una "Structure". In questo caso puo' essere un While che si arresta quando il size è maggiore di 300.
Questo tipo di strutture cicliche permettono di collegare sui bordi degli shift register che sono dei collegamenti che portano un segnale in uscita al ciclo, all'ingresso dell'iterazione successiva.
Per creare uno shift register devi clikkare col destro sul bordo della struttura.
Una volta che colleghi un dato in ingresso allo shift register, questo assume il colore in base al tipo di dato che deve trasportare.
Lo lascio fare a te senza postarti l'esempio cosi' ti impratichisci.
----------------------------------------
AUTORE: 129
DATA :17/12/2012 - 09:24:59
----------------------------------------
Dovresti fare una cosa del genere.
----------------------------------------
AUTORE: 4246
DATA :17/12/2012 - 10:02:16
----------------------------------------
Grazie a tutti ho risolto
Ho usato il collector.
----------------------------------------
================================================================================
significato timeout in struttura event
================================================================================
AUTORE: 4802
DATA :04/12/2012 - 00:32:20
----------------------------------------
salve ragazzi non riesco a capire il significato del caso timeout e soprattutto del relativo numero che devo dare in alto a sinistra della event structure. grazie
----------------------------------------
AUTORE: 482
DATA :04/12/2012 - 07:01:20
----------------------------------------
L'evento Timeout si verifica allo scadere del conteggio in base al numero che gli colleghi.
Se non gli colleghi niente, viene considerato -1 e quindi quell'evento non si verifica mai.
Se gli colleghi ad esempio 1000, ogni 1000 millisecondi si scatenerà quell'evento.
----------------------------------------
AUTORE: 3428
DATA :04/12/2012 - 07:50:35
----------------------------------------
l'event structure per definizione attende un evento (mouse click, tastiera, eventi dinamici ecc...)
Se esiste il caso timeout con un numero collegato in alto a sx questo caso si verificherà ogni tot ms impostati su quel numero a prescindere se venga effettuato o meno qualsiasi altro evento. Io solitamente metto l'aggiornamento orario nel timeout ma a volte non lo uso affatto...
Ovviamente se utilizzi il timeout devi mettere la struttura eventi dentro ad un ciclo while altrimenti al primo timeout esce dalla struttura.
----------------------------------------
AUTORE: 4802
DATA :05/12/2012 - 12:38:04
----------------------------------------
ma se mentre sta eseguendo il caso timeout clicco un pulsante per cui ho definito un evento che succede?
----------------------------------------
AUTORE: 482
DATA :05/12/2012 - 15:26:06
----------------------------------------
A seconda di come hai configurato l'event case, ignorerà l'evento del pulsante o lo metterà in coda per eseguirlo non appena avrà finito l'evento timeout.
----------------------------------------
AUTORE: 3428
DATA :05/12/2012 - 15:29:21
----------------------------------------
cattura l'evento e ti esegue quello che hai scritto dentro all'evento selezionato.
Ovviamente se il timeout ha un tempo inserito in alto a sx pari a 100 ms e quello che c'è dentro al timeout impiega (caso limite) 2 secondi significa che quando premerai il bottone dell'evento e il timeout sta eseguendo il codice che ha all'interno, non avrai nessuna risposta all'evento non prima di 2 secondi cioè quando il timeout avrà terminato il suo compito e attenderà altri 100 ms per rifarlo (in questo lasso prenderà il tuo evento)
Stessa cosa per gli eventi, se l'evento dura 2 secondi non vedrai l'aggiornamento del caso timeout prima di 2 secondi...
Spero di essermi spiegato
PS quando aggiungi casi fai attenzione al check che c'è in basso su ogni add event case "Lock front panel..." che se attivo non ti permette di premere sul FP e quindi abilitarti alla possibilità di scatenare altri eventi prima che altri siano finiti.
----------------------------------------
AUTORE: 660
DATA :05/12/2012 - 15:30:25
----------------------------------------
Beh, in tal caso quando avrà finito di processare l'evento di Timeout processerà il nuovo evento...
Max
----------------------------------------
AUTORE: 660
DATA :05/12/2012 - 15:33:05
----------------------------------------
Ops... arrivato tardi...
[quote:1ii5c7ao]A seconda di come hai configurato l'event case[/quote:1ii5c7ao]
come fai a configurarlo che in modo tale da fargli interrompere l'esecuzione dell'evento di timeout?
Max
----------------------------------------
AUTORE: 660
DATA :06/12/2012 - 07:59:39
----------------------------------------
[quote="machyaer":3n5xklro]Ops... arrivato tardi...
[quote:3n5xklro]A seconda di come hai configurato l'event case[/quote:3n5xklro]
come fai a configurarlo che in modo tale da fargli interrompere l'esecuzione dell'evento di timeout?
Max[/quote:3n5xklro]
ok... ok... ho scritto una .....ata
non ti riferivi all'evento di timeout...
Max
----------------------------------------
AUTORE: 4802
DATA :06/12/2012 - 20:41:04
----------------------------------------
Innanzitutto vi ringrazio tutti per la vostra disponibilità
. Ma quindi se collego -1 lui non facendo niente nel timeout appena premo un pulsante (per cui ho definito un evento) lo gestisce subito? grazie
----------------------------------------
AUTORE: 3428
DATA :07/12/2012 - 07:22:00
----------------------------------------
In sostanza se non uso il timeout io lo elimino proprio come evento dall'avent case.
Attenzione però!! se sono obbligato (solo se l'event è dentro al while quindi in attesa di evento e non di un solo evento per poi uscire) devo aggiungere obbligatoriamente un evento per uscire dal while come la pressione dello stop..
----------------------------------------
================================================================================
Gestione di due monitor collegati ad uno stesso PC
================================================================================
AUTORE: 6163
DATA :04/12/2012 - 14:09:09
----------------------------------------
Salve Ragazzi,
sono nuovo di questo forum, e metto le mani avanti dicendo che sono un programmatore Labview da poco meno di un Anno, per cui mi definisco ancora alle prime armi.
Per questo motivo mi rivolgo a voi in quanto ho riscontrato un piccolo problemino che spero qualcuno di voi potrà aiutare a risolvermi.
Sto programmando una stazione di visione robot, che ha un solo Pc, un solo eseguibile, ma due monitor, sui quali appaiono schermate differenti trattandosi di due punti diversi della stessa stazione.
La domanda che volevo porvi però è relativa solo ad un aspetto puramente gestionale della stazione, e cioè, come accenno nel titolo, mi servirebbe capire se con
il labview è possibile invertire completamente la visualizzazione dei due monitor collegati alla stazione.
Premetto che ho già provato con il property node fp.monitor, ma mi risulta scomodo perchè dovrei applicarlo in tutti i VI che vado a chiamare e son veramente tanti...
Spero di riuscire a trovare fra voi qualcuno che sappia aiutarmi, nel frattempo vi saluto e auguro a tutti un Buon lavoro.
----------------------------------------
AUTORE: 482
DATA :04/12/2012 - 15:18:37
----------------------------------------
cosa intendi per invertire? se intendi visualizzare quello che adesso è sull'uno, sul due e viceversa, è una cosa che si setta nelle impostazioni del sistema operativo.
----------------------------------------
AUTORE: 6163
DATA :10/12/2012 - 09:27:07
----------------------------------------
[quote="gepponline":xvoee6pb]cosa intendi per invertire? se intendi visualizzare quello che adesso è sull'uno, sul due e viceversa, è una cosa che si setta nelle impostazioni del sistema operativo.[/quote:xvoee6pb]
Scusami per la Tardiva risposta innanzitutto, comunque cercherò di spiegarmi meglio, scusandomi se non mi son spiegato bene in precendenza.
Il mio obiettivo è quello si di visualizzare quello che è sul primo monitor sul secondo , e viceversa, ma deve essere un'azione dinamica, prevedendo un pulsante "Switch Monitor" all'interno delle due schermate principali,
oppure attraverso un interruttore(o bottono) Hw, se esiste una soluzione hardware...
----------------------------------------
AUTORE: 482
DATA :11/12/2012 - 07:38:25
----------------------------------------
Si, quello che vuoi fare è fattibile usando i properti node del front panel. In particolare la proprietà monitor.
Qui trovi un po' di documentazione e di esempi:
http://digital.ni.com/public.nsf/allkb/ ... 0C004D479B
https://decibel.ni.com/content/docs/DOC-17711
http://digital.ni.com/public.nsf/allkb/ ... B0000261E9
Questa è un accortezza..
http://forums.ni.com/t5/LabVIEW-Idea-Ex ... -p/2228462
----------------------------------------
AUTORE: 6163
DATA :11/12/2012 - 10:11:06
----------------------------------------
Grazie Tante, mi sei stato di Grande aiuto !!!
----------------------------------------
================================================================================
controllo touch screen con un solo PC
================================================================================
AUTORE: 6224
DATA :05/12/2012 - 16:59:41
----------------------------------------
Salve a tutti,
il titolo non è molto chiaro quindi spiego in dettaglio.
Vorrei sapere se è fosse possibile collegare un monitor touch screen ad un pc (con il suo relativo monitor) che contiene un programma labview.
Sul PC gira il mio applicativo e vorrei poter inviare ad un secondo monitor (il touch screen) delle immagini, quindi ricevere le coordinate del touch sul PC
ed effettuare alcuni controlli sulla posizione.
Vorrei capire se con labview posso gestire i due monitor (mi pare di aver capito di si se avessi una scheda video a due uscite) e come poterlo fare.
Grazie e se posso darvi ulteriori chiarimenti non esitate
----------------------------------------
AUTORE: 660
DATA :06/12/2012 - 07:57:43
----------------------------------------
da quello che mi sembra di aver capito della tua applicazione direi di si...
dipende effettivamente dalla scheda video che hai... perchè se non puoi collegarci i due monitor allora diventa complicato... anche se non impossibile...
il touch screen ha un suo collegamento (probabilmente USB) ed il SO lo vede nè più nè meno come un mouse... adesso se usi il secondo monitor come "duplicato" del primo potrai "toccando" il secondo usare l'applicativo allo stesso modo di come sul primo farai con il mouse; se invece configuri il secondo come "estensione" del primo devi fare qualche prova sul dato che ti arriva dal touch perchè non li ho mai usati in questa configurazione... però credo sia solo un problema di coordinate alla fine...
Max
----------------------------------------
AUTORE: 6224
DATA :06/12/2012 - 16:45:02
----------------------------------------
Uhm...ok
anche se in realtà ho controllato e il monitor non ha l'attacco usb ma il vecchio attacco del mouse.
Se invece il mio pc facesse da host ad un secondo pc dove gira l'applicativo labview?
Questo sarebbe più semplice?
Comunque grazie per la risposta
----------------------------------------
AUTORE: 660
DATA :06/12/2012 - 16:52:03
----------------------------------------
va benissimo anche il vecchio attacco del mouse... visto che per il sistema è un mouse... e questo è semplice...
[quote:kxd1qpoc]Se invece il mio pc facesse da host ad un secondo pc dove gira l'applicativo labview?[/quote:kxd1qpoc]
in che senso?
----------------------------------------
AUTORE: 6224
DATA :07/12/2012 - 16:09:05
----------------------------------------
Nel senso che avrei un PC principale che è collegato ad un secondo PC in rete.
Il secondo PC avrà il touch e relativo mouse(dal touch) mentre il PC principale dice al secondario cosa fare.
E' possibile?
2) domanda quale componente di Labview mi permette di accedere alla scheda video?
ovvero: se facessi come detto su, con due PC, devo avere un vi che invii alla scheda video delle immagini? se si che componenti
usare?
----------------------------------------
AUTORE: 482
DATA :10/12/2012 - 07:11:27
----------------------------------------
Credo che tu la stia facendo piu' difficile di quanto non sia.
Se il sistema operativo e il pc supportano piu' monitor, con labview non devi fare niente di particolare a livello di programmazione.
Dovrai solo dire ad un certo VI di eseguirsi su il monitor TALDEITALI tramite le proprietà del VI.
Per quanto riguarda il touch invece, come diceva machyaer, dal pc è visto come un mouse. Se di mouse attacchi solo quello, non c'e' problema, perchè sull'altro monitor non avrai nessun evento gestibile in quanto "non cliccabile". Se invece attaccherai due mouse, uno reale e un touch screen, probabilmente il sistema operativo gestirà i singoli eventi come un mouse unico e quindi accoderà gli eventi.
Tu non dovrai fare nessun tipo di programmazione particolare.
----------------------------------------
AUTORE: 660
DATA :10/12/2012 - 07:47:51
----------------------------------------
[quote="Jocky":2kr2iflh]Nel senso che avrei un PC principale che è collegato ad un secondo PC in rete.
Il secondo PC avrà il touch e relativo mouse(dal touch) mentre il PC principale dice al secondario cosa fare.
E' possibile?
[/quote:2kr2iflh]
In tal caso mi sa che l'idea di avere un pc con due monitor non sia corretta... secondo me in questo caso dovresti mettere su una comunicazione tra due VI: uno Master che gira sul pc principale ed uno Slave che gira sul secondario...
personalmente ho usato solo comunicazioni di tipo UDP e TCP/IP però credo che si possa fare anche con le shared variable ma ci sono persone molto più competenti di me sul forum...
Max
----------------------------------------
AUTORE: 6224
DATA :12/12/2012 - 13:52:29
----------------------------------------
Ringrazio tutti delle risposte.
I realtà adesso ho ben chiaro il sistema su cui devo lavorare e dovrei aprire un nuovo topic, ma provo a continuare la discussione da qui.
il sistema è cosi composto:
PC----->| Modulo PXI |
sul modulo PXI gira un programma labview e il pc fa da interfaccia tramite connessione ethernet. Il touch andrebbe attaccato al modulo PXI (che è provvisto di scheda video)
Poichè in questa configurazione sul modulo PXI gira il programma labview che abilita, controlla e acquisisce i vari segnali di input e output vorrei sapere se posso usare la scheda video di quest'ultimo come risorsa hardware per inviare in uscita immagini e il connettore del mouse come segnale di input.
Quindi la domanda è esiste un componente labview che posso usare per accedere alla scheda video e al segnale del connettore del mouse?
----------------------------------------
AUTORE: 660
DATA :12/12/2012 - 14:43:58
----------------------------------------
purtroppo non ho mai usato PXI per cui non saprei dirti... però se ha uscita monitor ed ingresso per touch penso che possa comportarsi come un normale PC...
Max
----------------------------------------
AUTORE: 6224
DATA :12/12/2012 - 16:07:32
----------------------------------------
piu o meno vedilo come se fosse un normale PC, ma senza sistema operativo....
Se volessi far un esempio vedilo come se avessi una scheda con un microcontrollore (e dentro ho il mio programma labview) e che sulla stessa scheda ci sia una periferica video. Quindi dovrei dire al microcontrollore di usare la scheda video. L'esempio non è il massimo ma era per esemplificare ulteriormente.
Grazie comunque delle risposte
----------------------------------------
================================================================================
Labview ed Excel
================================================================================
AUTORE: 5498
DATA :07/12/2012 - 13:57:41
----------------------------------------
Devo interagire con dei file Excel.
Ho letto che potrei risolvere il problema utilizzando gli activeX.
Tuttavia io volevo sapere se esistono librerie già predisposte per effettuare questa iterazione, per semplificare il lavoro.
----------------------------------------
AUTORE: 660
DATA :07/12/2012 - 14:26:59
----------------------------------------
interagire direi che è un po' vago...
se spieghi cosa devi fare nel dettaglio si possono trovare le soluzioni adatte...
Max
----------------------------------------
AUTORE: 5498
DATA :07/12/2012 - 18:40:57
----------------------------------------
Solamente leggere e scrivere su file
----------------------------------------
AUTORE: 129
DATA :09/12/2012 - 13:16:02
----------------------------------------
Gli activeX ti mettono a disposizione le property e i metodi utilizzati in excel per cui sono convenienti qualora devi inserire/leggere da celle specifiche di un xls già formattato.
Se invece il tuo scopo è scrivere leggere un documento apribile con excel, ad esempio se vuoi realizzare un datalogger ti consiglio il classico Write to spreadsheet file e il read spreadsheet file.
----------------------------------------
AUTORE: 482
DATA :10/12/2012 - 07:15:05
----------------------------------------
Esatto, come diceva Nicola, i famigerati file excel, escludendo le info proprietarie di microsoft che si trovano all'interno, altro non sono che dei file di testo tabulati, ovvero dei file che contengono dei valori separati da un tabulatore, e quindi leggibili e scrivibili anche con un qualsiasi notepad.
Quindi non hai bisogno di nessuna libreria specifica. Andrai a manipolare un semplice file di testo salvandolo poi con estensione xls in modo che di default ti verrà aperto con excel.
----------------------------------------
================================================================================
Daq Assistant
================================================================================
AUTORE: 6318
DATA :07/12/2012 - 15:18:53
----------------------------------------
Buongiorno a tutti, premetto che sono alle prime armi, vi prego gentilmente di scusarmi se a volte chiedo delle cose banali.
Grazie a tutti voi per la cortese collaborazione.
Mediante scheda (fisica) 6221, voglio generare un sinusoide in uscita alla mia scheda.
In Measurement automation Exploer riesco a generare il segnale sinusoidale ma in labview no.
impostazione in labview
Posiziono il blocchetto Daq Assistant
Seleziono analog output
selez. Voltage
Selez Ao/o
Finish
In TIming :
imposto Continuous
in rate 1K
in Sample to write 100
imposto il signal out +10 -10
metto iun ciclo while e un Knob per impostare amplitude
Lancio il test ma la risposta è Errore 200609 occured at Daq mx write (analog 1D WFMNCHAN)
Generate cannot be started Because the select Buffer size is smol.
Ho provato a variare il buffer size, e riuscire a generare il mio segnale?
Grazie
----------------------------------------
AUTORE: 6318
DATA :07/12/2012 - 15:30:53
----------------------------------------
Scusate ma volevo dire che, ho provato a variare alcuni parametri tipo rate ,sample, e modo di generare.
Ma dove posso modificare il buffer size?
----------------------------------------
AUTORE: 482
DATA :10/12/2012 - 07:05:15
----------------------------------------
Innanzitutto ti consiglio vivamente di abbandonare il daq assistant e procedere la tua "alfabetizzazione" in labVIEW utilizzando gli esempi.
Se cerchi tra gli esempi di labview, troverai quello che cerchi sviluppato con i singoli blocchetti e non con gli express VI e questo ti aiuterà poi anche a sviluppare applicazioni piu' complesse.
In questo caso ad esempio, tra gli esempi puoi cercare "coninuous waveform generation".
----------------------------------------
AUTORE: 6318
DATA :10/12/2012 - 18:09:51
----------------------------------------
Grazie Geppo del consiglio, anche se comunque sono riuscite a fare un Vi che genera e acquisisce il segnale di una sinusoide a 1k, con i blochetti del Daqmx.
Purtroppo il mio problema è che, essendo testardo , mi piacerebbe capire come fare a risolvere il problema del Daq assistant, visto che National lo rende disponibile
per l'uso di cui ho bisogno
----------------------------------------
AUTORE: 482
DATA :11/12/2012 - 07:14:10
----------------------------------------
Ipotizzo che il daq assistant utilizzi un buffer di dimensione predefinita e il rate 1k è troppo veloce e quindi svuota il buffer prima di aver generato tutta l'onda. dovresti giocare con il rate e il numero di sample.
----------------------------------------
================================================================================
Aiuto per DAQ Assistant grazie
================================================================================
AUTORE: 6318
DATA :08/12/2012 - 10:31:07
----------------------------------------
Buongiorno a tutti, premetto che sono alle prime armi, vi prego gentilmente di scusarmi se a volte chiedo delle cose banali.
Grazie a tutti voi per la cortese collaborazione.
Mediante scheda (fisica) 6221, voglio generare un sinusoide in uscita alla mia scheda.
In Measurement automation Exploer riesco a generare il segnale sinusoidale ma in labview no.
impostazione in labview
Posiziono il blocchetto Daq Assistant
Seleziono analog output
selez. Voltage
Selez Ao/o
Finish
In TIming :
imposto Continuous
in rate 1K
in Sample to write 100
imposto il signal out +10 -10
metto iun ciclo while e un Knob per impostare amplitude
Lancio il test ma la risposta è Errore 200609 occured at Daq mx write (analog 1D WFMNCHAN)
Generate cannot be started Because the select Buffer size is smol
Ho provato a variare alcuni parametri tipo rate e sample, ma l'errore è sempre lo stesso
L'errore mi dici di modificare il buffer size, ma nel blochetto non esiste, Dove posso modificare il buffer size?, o come posso risolvere questo problema senza utilizzare i blochetti del Daqmx
wxgianni
Nuovo Utente
----------------------------------------
================================================================================
Filtrare Analog Input
================================================================================
AUTORE: 482
DATA :11/12/2012 - 10:20:18
----------------------------------------
...ma ciao!
sto acquisendo due segnali da un banco prova. Quesi segnali passano attraverso due collettori striscianti prima di arrivare al mio sistema e credo che li si sporchino.
Allego screenshot dei due segnali.
Considerando che il valore valido è la linea superiore di ogni segnale, che tipo di filtro mi consigliereste di applicare per ottenere un segnale, non dico stabile ma almeno valutabile?
----------------------------------------
AUTORE: 660
DATA :11/12/2012 - 10:34:58
----------------------------------------
beh, per iniziare potresti usare un passa basso...
Max
----------------------------------------
AUTORE: 482
DATA :11/12/2012 - 11:06:37
----------------------------------------
Nella mia ignoranza in materia di filtri...che ci collego come blocchetti in uscita all'acquisizione?
----------------------------------------
AUTORE: 301
DATA :11/12/2012 - 13:08:52
----------------------------------------
Prova con un filtro Butterworth, lowpass (per questo caso potresti usare anche l'express e fare alcune prove su altri filtri....).
Aris
----------------------------------------
AUTORE: 660
DATA :11/12/2012 - 13:13:06
----------------------------------------
dentro il menu Express -> signal Analisys trovi il VI filter...
al suo interno ci sono una valanga di filtri sceglibili che vanno molto bene per lo meno per decidere quale filtro utilizzare, poi se non ami gli express VI potrai sostituirlo con un filtro specifico...
Inoltre una volta collegato al segnale in uscita e fatto almeno un campionamento puoi aprirlo e vedere direttamente l'effetto dei vari tipi di filtro sull'onda da analizzare...
Max
----------------------------------------
AUTORE: 482
DATA :11/12/2012 - 14:01:35
----------------------------------------
Allego un file di esempio di acquisizioni ed un VI per poter visualizzare il tutto e configurare il filtro.
Il risultato che vorrei si ottiene impostanto il parametro "Lower Cut-Off" a 10, il problema è che cosi' mi abbassa tutti i valori, io invece vorrei fondamentalmente tenere la parte alta del segnale ed eliminare tutti i picchi che vanno in giu'. Praticamente vorrei ottenere un onda con valori sempr ecomresi tra il 30 e il 35 in questo caso.
Suggerimenti?
----------------------------------------
AUTORE: 660
DATA :11/12/2012 - 14:17:25
----------------------------------------
prova a vedere se la soluzione allegata può esserti utile...
Max
[attachment=0:1m5wvoag]test_filtro2.vi[/attachment:1m5wvoag]
----------------------------------------
AUTORE: 482
DATA :12/12/2012 - 07:42:07
----------------------------------------
Interessante..direi che usando quel compression, potrei anche evitare il filtro.
Per il momento ti ringrazio.....spero che mi risolva il problema.
----------------------------------------
AUTORE: 482
DATA :12/12/2012 - 10:45:21
----------------------------------------
Cazzarola c'e' un problema....
andando in acquisizione continua, quando applico il filtro dopo il compression mi da questa warning:
"NI_MABase.lvlib:ma_array_Check Time Signal Continuity.vi:13" when called from "NI_MAPro.lvlib:IIR Filter for N Chan.vi:5"
che di per se non è un problema, ma mi causa il reset del foltro e quindi ad ogni ciclo i valori ripartono da zero con una rampa che porta al valore attuale
----------------------------------------
AUTORE: 301
DATA :12/12/2012 - 13:47:20
----------------------------------------
Vedi se cosi ti funge.....
Aris
----------------------------------------
AUTORE: 660
DATA :12/12/2012 - 14:14:13
----------------------------------------
scusa il ritardo nella risposta... puoi provare anche così...
[attachment=0:3iud2xuu]test_filtro2.vi[/attachment:3iud2xuu]
Max
----------------------------------------
AUTORE: 482
DATA :13/12/2012 - 08:22:49
----------------------------------------
Grazie Mac e grazie Aris.
@Mac: non ho capito l'utilità dell'ultimo vi...è solo una sovrapposizione visiva dei due segnali?
@aris: credo sia la soluzione. Non utilizzando l'express vi ho la possibilità di dire al subvi se fare o meno l'inizializzazione, cosa che invece avveniva in automatico nell'express VI.
----------------------------------------
AUTORE: 660
DATA :13/12/2012 - 09:26:01
----------------------------------------
scusa Geppo errore mio... avevo iniziato la risposta poi ho dovuto sospendere.... e ti ho allegato il vi sbagliato... l'idea era la stessa di aris...
Max
----------------------------------------
================================================================================
immagine 3D
================================================================================
AUTORE: 6545
DATA :13/12/2012 - 11:05:10
----------------------------------------
Ciao a tutti,
lavoro da pochissimo con labview ed ho un problema.
Sono riuscita a visualizzare nel mio front panel una immagine 3D in formato .stl, ma le dimensioni sono enormi e l' immagine ha un orientamento casuale.
Come faccio a regolare la dimensione del mio oggetto? la mia versione labview è la 2009.
----------------------------------------
================================================================================
Salvataggio istanti di tempo delle misure in frequenza
================================================================================
AUTORE: 5772
DATA :13/12/2012 - 13:51:18
----------------------------------------
Salve a tutti,mi sto approcciando da poco a labview. Sto realizzando un programma che utilizza un NIcDAQ9172 con moduli NI9401 per misura la frequenza di un onda quadra TTL proveniente da un encoder assoluto. Ho qualche problematica riguardo al salvataggio degli istanti di tempo quando acquisisco le mie frequenze; utilizzo il blocco "write to measuremnt to file" riesco a salvare i valori delle mie frequenza ma non gli istanti di tempo. Come mai? avete qualche suggerimento da darmi? Allego il programma.
----------------------------------------
AUTORE: 660
DATA :13/12/2012 - 14:46:33
----------------------------------------
hai guardato se è abilitato il salvataggio della time-column nel blocchetto di "write measurement file"?
Max
----------------------------------------
AUTORE: 5772
DATA :15/12/2012 - 09:44:14
----------------------------------------
Sisi era impostato in maniera errata. Grazie mille
Claudio Nevoloso
----------------------------------------
================================================================================
DB tools, eseguire una query con variabili
================================================================================
AUTORE: 482
DATA :17/12/2012 - 10:44:01
----------------------------------------
...ma ciao!
sto utilizzando il database connectivity tools per eseguire una query su un DB SQLserver.
La query in quesione utilizza una variabile nella forma:
DECLARE @LUDC int
SET @LUDC = 1200
Se utilizzo questa dichiarazione di variabile, la query non da errore ma mi da in uscita un array vuoto
Se invece utilizzo direttamente il valore dove viene richiamata la funzione, mi restituisce correttamente la tabella con il risultato della query.
Qualcuno di voi ha avuto problemi simili? Puo' essere un problema solo di sintassi od incompatibilità delle variabili?
----------------------------------------
AUTORE: 3428
DATA :17/12/2012 - 12:02:39
----------------------------------------
Ciao, ti posso dire che nel mio sistema, dove utilizzo il solo file udl per collegare il db a labview, non riesco ad eseguire query con variabili... ho risolto annidando le select oppure mi era stato consigliato di creare più query (in effetti le select annidate mi restituiscono il risultato solo dopo 5 sec.)
Utilizzando l'ambiente di sql server la stessa query mi funziona alla perferzione, in labview inviandola come stringa query mi restituisce l'array vuoto..
Sono ancora perplesso.. per il momento mi può andar bene anche questo funzionamento così perchè quei 5 secondi sono comunque mascherati da altri task, ma sono sicuro che sia il metodo, sia la query possano essere migliorate.
----------------------------------------
AUTORE: 482
DATA :17/12/2012 - 12:33:42
----------------------------------------
ok, il fatto che non sia il solo, mi consola. Anche io uso solo l'udl.
Usero' il format string per sostituire le variabili con il valore
----------------------------------------
AUTORE: 2514
DATA :20/12/2012 - 09:03:52
----------------------------------------
Anch'io uso UDL e format string per le variabili con DB Engine...
----------------------------------------
AUTORE: 482
DATA :20/12/2012 - 12:06:23
----------------------------------------
Non ho aperto labview al momento..ma mi sa che in caso che una variabile si presenti piu' volte, è meglio utilizzare un replace string piuttosto che il format string, perchè i lformat è sequenziale, invece il replace permette di dire se sostituire tutte le istanze della stringa da sostituire o meno.
Tuttoquesto discorso è ovviamenet valido solo nel caso in cui levariabili rappresentino delle costanti.
----------------------------------------
AUTORE: 3428
DATA :21/12/2012 - 16:05:08
----------------------------------------
Ciao, mi farebbe molto comodo l'uso delle variabili...
Potreste postare gentilmente quando avete tempo un esempio di query funzionante con l'utilizzo delle variabili e del replace?
Grazie e buone feste a tutti
----------------------------------------
AUTORE: 3428
DATA :04/01/2013 - 07:59:30
----------------------------------------
gepponline o goblin, prima di tutto auguri di buon anno, come a tutti gli altri del forum
mi potreste gentilmente postare esempi di queri con utilizzo delle variabili e del replace?
Grazie e scusate il doppio post ma non riesco ad uscirne e i tempi incombono...
----------------------------------------
AUTORE: 482
DATA :07/01/2013 - 07:48:43
----------------------------------------
come dicevo prima, le variabili non son riuscito a farle funzionare, quindi ho optato per il format string
----------------------------------------
AUTORE: 3428
DATA :07/01/2013 - 15:24:06
----------------------------------------
ok grazie se riesco ad usarle posto la query
----------------------------------------
================================================================================
[HELP] - Data e ora sulle ascisse
================================================================================
AUTORE: 6804
DATA :17/12/2012 - 11:04:34
----------------------------------------
Ciao,
premetto che le mie conoscenze di labview sono piuttosto limitate.
Detto questo, ho realizzato un VI per il monitoraggio di alcune tensioni e correnti di una board di test. L'acquisizione avviene tramite NI-USB 6210 e uso labview 2011.
Faccio un'acquisizione al secondo e il VI di per se funziona benissimo. Ora io vorrei avere sull'asse delle ascisse il timestamp delle acquisizioni. In pratica vorrei che, ogni volta che avvio il VI il primo istante di tempo sia la data e ora del PC e poi da li si incrementi di ogni secondo fino a quando non lo fermo io.
Si può fare?
Grazie mille
Danilo
----------------------------------------
AUTORE: 129
DATA :17/12/2012 - 13:43:08
----------------------------------------
Certo che si può, in modalità diverse a seconda del grafico che utilizzi.
Se le acquisizioni avvengono a frequenza fissa puoi usare il chart e il graph che utilizzano la posizione nell'array per definire il moltiplicatore per una costante di tempo: es. array 1x4 elementi acquisiti ogni 100ms puoi sulle impostazioni del grafico mettere il delta di 100ms in modo che ogni elemento ti fa incrementare le x non di 1 unità ma di 100.Puoi anche modificare la rappresentazione del vaolre delle x come tempo, così avresti anche i secondi.
Se invece l'acuisizione non ha cadenza fissa bisogna che realizzi un array 2D con ogni record il valore e il timestamp (acquisito insieme all'acquisizione) e realizzi quindi un grafico XY mettendo in un bundle i due array Tempi (X) e Valori(Y).
----------------------------------------
AUTORE: 6804
DATA :18/12/2012 - 08:47:07
----------------------------------------
Ciao,
prima di tutto grazie per aver risposto. Tuttavia non ho capito bene come faccio a far partire il timestamp con la data e ora del PC. Perchè a me serve proprio questo, avvio il VI e questo si sincronizza con data e ora del PC. Poi si incrementa come dicevo nel post precedente.
P.S: la frequenza di campionamento è fissa, cioè un sample al secondo.
----------------------------------------
AUTORE: 129
DATA :18/12/2012 - 14:14:03
----------------------------------------
Non hai un esempio?
Dipende molto da cosa e come acquisisci, però per rimanere più generico, solitamente il timestamp viene fpornito dallo struimento, in altro modo è possibile aggiungerlo suggerendo di utilizzare il valore in ms intero (U32 in ms)ricavato per esempio dalla differenza tra due tick count, questa differneza ti restituisce il valore del tempo trascorso tra le acquisizioni (appunto il timestamp).
Ti allego un immagine, perchè mi sa che il tuo sia anche un problema di come fare, piuttosto di cosa fare
, benvenuto.
Nicola
----------------------------------------
AUTORE: 6804
DATA :19/12/2012 - 17:30:18
----------------------------------------
Ciao,
Ho risolto il problema da solo, comunque hai centrato in pieno l'argomento. Il mio problema era proprio come fare
perchè la mia conoscenza di labview è a livelli bassissimi.
Detto questo grazie ancora.
Alla prossima
----------------------------------------
================================================================================
Sbloccare una porta seriale
================================================================================
AUTORE: 129
DATA :18/12/2012 - 14:39:43
----------------------------------------
Ho una com che dopo un pò di acquisizioni per qualche motivo mi restituisce un errore di porta disponibile ma occupata.
Come si può risolvere?
Anche chiudendo la porta e riaprendola non sortisce nessun effetto.
Il driver che utilizzo è stato fatto da altri, e non volevo ritoccarlo troppo.
E' tra l'altro fatto con le versioni di labview con Serpdrv.dll.
Grazie a tutti, nicola
----------------------------------------
AUTORE: 3428
DATA :18/12/2012 - 14:55:49
----------------------------------------
se può esserti d'aiuto io prima di inviare qualsiasi comando alla porta faccio un clear del buffer ma non con il blocchetto "CLEAR" di labview (che sporca il buffer) ma facendo prima il N° di bytes sulla porta tramite il property node e poi un read dalla seriale di tutto quello che il property mi ha restituito, senza utilizzare il risultato, infine scrivo il mio comando e resto in loop per la risposta.
----------------------------------------
AUTORE: 129
DATA :18/12/2012 - 16:07:55
----------------------------------------
Grazie, anche io faccio così e in più gli lascio del tempo tra scrittura e lettura, ma in questo caso mi sembra come se la porta diventa indisponibile (o indisposta
) e anche provando a riavviarla (ho provato a fare un close e reopen in caso di errori) niente non la legge più e mi da questo errore:
----------------------------------------
AUTORE: 3428
DATA :18/12/2012 - 16:39:21
----------------------------------------
mai capitato...
a naso mi vien da dire che cerchi di scrivere un comando, mentre da un'altra parte del codice stai già occupando la visa in un altra maniera, magari in lettura e di conseguenza esce l'errore...
ma il messaggio è chiaro.. risorsa valida ma inaccessibile
stai usando un convertitore usb-seriale? perchè io ho notato strani comportamenti della VISA proprio con loro..
----------------------------------------
AUTORE: 129
DATA :19/12/2012 - 22:46:50
----------------------------------------
Si avevo delle situazioni di contemporaneità che però dopo averle rimosse non hanno migliorato.
Quello che ho capito è che la porta rimane aperta ma l'applicazione perde il ref , anche se ho visto che il "VISA resource name" è sempre settato con la com corretta.
Ora provo a chiudere e riaprire la porta quando mi da quest errore. Sembra che non mi dia più errori ma non mi da misure, domani provo a verificare anche i collegamenti del carico in test.
Grazie
----------------------------------------
AUTORE: 129
DATA :24/12/2012 - 05:50:31
----------------------------------------
Alla fine l'unica cosa che funziona è se al verificarsi dellìerrore riapro la porta senza chiuderla prima(perchè essendo perso il riferimento se cerco di chiuderla mi da lo stesso errore).
Nicola
----------------------------------------
================================================================================
Unicode per lingua cinese in labview
================================================================================
AUTORE: 129
DATA :24/12/2012 - 07:00:57
----------------------------------------
Ciao, a q.no non è mai capitato di dover tradurre le caption del pannello in cinese?
Pensavo una cosa naturale e invece ho scoperto che labview non supporta in modo originario l'unicode, ma si può impostare il supporto a unicode dal file labview.ini.
Solo che se setto un controllo come forse to unicode, la traduzione mi viene corretta al primo giro, ma ogni volta devo resettarla per farmela prendere in unicode dove per reset intendo tolgo la spunta force to unicode carico la stringa dal database e risetto la propietà a forse to unicode (ovviamente non programmaticamennte ma manualmente).
Conoscete un sistema per formattare i caratteri cinesi su caption labview?
----------------------------------------
AUTORE: 129
DATA :07/01/2013 - 12:31:28
----------------------------------------
Ho notato che quando lavoro con database nella conversione in struinga su labview mi genera cose strane es. temp[°C] diventa temp[[°C].
Qualcuno riesce ad aiutarmi? Anche se qualcuno sa come trasformare l'ascii in unicode corretto in labview anche per le caption.
Grazie
----------------------------------------
AUTORE: 43
DATA :07/01/2013 - 16:26:23
----------------------------------------
[quote="nicola":3u16c9e9]Ho notato che quando lavoro con database nella conversione in struinga su labview mi genera cose strane es. temp[°C] diventa temp[[°C].
Qualcuno riesce ad aiutarmi? Anche se qualcuno sa come trasformare l'ascii in unicode corretto in labview anche per le caption.
Grazie[/quote:3u16c9e9]
Ovvio che anche il DB deve supportare l'unicode.... altrimenti stai fresco...
Altrimenti devi farti un VI di conversione ASCII --> Unicode e Unicode -->ASCII.
Scordati i file di testo poi...
riguardo un semplice aiuto prova a guardare qua
http://www.beginningtoseethelight.org/ascii/index.htm
Ultima cosa:
Non sono certo che LabVIEW supporti completamente Unicode. Prima che cambiassi lavoro, ho lasciato i miei colleghi alle prese con un Xcontrol che avrebbe dovuto sostituire tutti i TextRing e gli Enum di UI, xkè l'unicode viene supportato nei due tipi citati di controlli ma non nelle "liste" che appaiono nei rispettivi popup...
bye
----------------------------------------
AUTORE: 129
DATA :08/01/2013 - 10:09:47
----------------------------------------
Grazie,
provo a vedere il link che mi hai mandato.
in effetti ho tovato un blocchetto per la conversione da ascii a unicode ma è prprio labview che fa le bizze, tra l'altro io ne avevo bisogno per le caption, ma riesco a modificare solo la stringa e se ci scrivo un carattere dentro a mano me lo ripristina in ascii, direi che labview non ha un suporto completpo a unicode.
Il DB lo supporta tant'è che sul db ho già importato delle traduzioni con i caratteri cinesi senza problemi.
Però avevo capito che labview supportasse il multibyte encode sxheme o qualcosa del genere in alternativa all'unicode.
grazie, nic
----------------------------------------
================================================================================
Leggere un file binario
================================================================================
AUTORE: 7160
DATA :24/12/2012 - 21:01:35
----------------------------------------
Salve a tutti, questo è il primo quesito che pongo su questo forum.
Devo leggere un file binario dove, all' interno del quale, ad ogni riga corrisponde un numero binario ad 8 bit.
Per leggere il file sto utilizzando il blocco "Read to Spreadsheet file", settato su "binario", ed con notazione "integer".
Riesco a leggere le singole righe. Sull'uscita "all rows" ottengo tutte le righe del file, con il numero convertito in decimale.
M'interesserebbe visualizzare le singole righe in binario. Ho provato a collegare "number to boolean Array" all' uscita del blocco "index array function" ma mi da sempre errore. Ho provato a cambiare il tipo di rappresentazione ma non ci sono riuscito.
Inoltre, vorrei prendere la generica stringa da 8 bit e separarla nei singoli bit. Volevo sapere se esiste un blocco che, dato in ingresso una stringa binaria, mi fornisce in uscita gli 8 bit singoli. oppure mi devo arrangiare con i cicli for??
Grazie in anticipo!!
----------------------------------------
AUTORE: 7440
DATA :02/01/2013 - 09:06:41
----------------------------------------
Buongiorno Steve,
Vediamo cosa si può fare. Prima però mi permetto di chiederti un paio di cose:
+ Che versione di LabVIEW stai utilizzando?
+ Puoi allegare il file binario che intendi utilizzare insieme al codice che hai scritto fino ad ora (anche se non funzionante)?
In questo modo si può fare qualche prova.
Saluti
Matteo
----------------------------------------
AUTORE: 129
DATA :05/01/2013 - 07:12:38
----------------------------------------
Per convertira da stringa a un array di boolean potresti usare questo codice, ho messo un cntrollo affinchè la stringa sia sicuramente un binario.
----------------------------------------
================================================================================
DAQ assistant I/O
================================================================================
AUTORE: 7113
DATA :27/12/2012 - 09:19:22
----------------------------------------
Ciao a tutti,
devo fare un programma per gestire gli I/O con il DAQ assistant, però l'operatore deve impostare i canali come ingressi o come uscite in base alle necessità del momento.
Come posso fare per per cambiare lo stato (ingresso/uscita) dei canali digitali (per esempio con degli interruttori) dal front panel ?
Ci sono dei parametri da passare al DAQ assintant ?
----------------------------------------
AUTORE: 7160
DATA :27/12/2012 - 17:51:16
----------------------------------------
Non ho capito bene la tua domanda. Innanzitutto, che scheda di acquisizione utilizzi??
Per cambiare lo stato delle uscite, potresti utilizzare degli interruttori booleani, convertire il valore booleano in numero intero ad 1 bit (0 1) e con questo andare a scrivere l'uscita desiderata.
Per selezionare gli ingressi, puoi utilizzare degli interruttori booleani che vanno a pilotare dei case in modo da smistare gli ingressi.
Ciao
----------------------------------------
AUTORE: 7113
DATA :28/12/2012 - 08:20:25
----------------------------------------
La scheda che uso è la USB-6008, il problema è questo:
ho impostato la porta P0.0-1-2-3 come uscite e la P0.4-5-6-7 come ingressi e funziona tutto bene, però durante l'esecuzione dell'applicazione devo cambiare l'impostazione della porta:
per esempio P0.0-1 come uscite e P0.2-3-4-5-6-7 come ingressi.
Praticamente è l'operatore che deve scegliere se un GPIO è impostato come ingresso o come uscita, quindi non in fase di progettazione ma ad applicazione finita.
Mi sai dare qualche consiglio.
Grazie
----------------------------------------
AUTORE: 482
DATA :07/01/2013 - 07:45:48
----------------------------------------
Non so se sia fattibile, se lo è, ti direi per prima cosa di scordarti il DAQ assistant e di lavorare a basso livello con i vi di configurazione dei canali.
Praticamente ogni volta che devi cambiare tipo di porta, chiudi la comunicazione con la porta, esegui una nuova configurazione e riapri la comunicazione.
----------------------------------------