================================================================================
comunicazione RS232
================================================================================
AUTORE: 2523
DATA :01/01/2009 - 17:05:00
----------------------------------------
Ciao a tutti e buon 2009!!
Vi chiedo il favore di aiutarmi a risolvere il seguente problema.
Sto implementando una comunicazione RS232 tra LabView e un microcontrollore.
In particolare LabView deve spedire dei numeri, compresi tra 0 e 255, in formato esadecimale.
Il problema è quindi il seguente: il blocco di trasmissione seriale accetta in ingresso solo delle stringhe.
Se avessi dovuto spedire un numero compreso tra 0 e 7F non avrei avuto problema perchè sarebbe bastato mettere in ingresso al
blocco di trasmissione il codice ascii corrispondente al numero da trasmettere.
Se voglio spedire il numero FF, LabView mi spedisce due caratteri che altro non sono che il codice ASCII dell'effe(70 in decimale).
Questo mi obbliga, a lato microcontrollore, fare una conversione da ascii a decimale e ricostruire il valore originario, che altro non è che FF.
Avete idea di come si possa evitare evitare la conversione a lato microcontrollore?
Grazie.
Saluti,
Chobin.
----------------------------------------
AUTORE: 927
DATA :07/01/2009 - 10:40:29
----------------------------------------
Allora non deve spedirli in formato esadecimale, ma in formato binario... Usa "byte array to string" per trasformare i numeri in una stringa binaria
----------------------------------------
================================================================================
Come riportare il tempo trascorso sull'asse dell'ascisse di
================================================================================
AUTORE: 2536
DATA :06/01/2009 - 17:41:41
----------------------------------------
Buon anno a tutti voi ed ovviamente a tutti voi un piccolo quesito ...
Ho necessità di riportare sull'asse dell'ascisse di un chart (a 16 tracce) il tempo trascorso dalla accensione.
Per momento di accensione intendo non quello di messa in esecuzione del VI ma bensi dall'inizio di un test che all'interno del Vi posso comandare.
Tra l'altro, il tempo trascorso dovrebbe essere espresso in giorni,ore,minuti,secondi,millisecondi.
Per quanto abbia tentato prima di rivolgermi a voi con questa specie "di augurio" ho prodotto si, la formattazione come richiesto ma il tempo non è un tempo trascorso ma la data del giorno stesso.
Grazie.
----------------------------------------
AUTORE: 927
DATA :07/01/2009 - 10:33:35
----------------------------------------
Clicca col destro sui numeri dell'asse, fai "formatting", seleziona "relative time". Per aggiungere anche i millisecondi devi poi entrare in "advanced editing mode"
----------------------------------------
AUTORE: 2536
DATA :07/01/2009 - 14:22:19
----------------------------------------
Grazie, ma l'ho già provata e per l'esattezza:
%<%D-%H:%M:%S%2u>t
Nulla da fare!
Penso che per relativo, intendano un tempo da un certo punto temporale ... credo una data intorno al 1904.
A me serve quella da un punto da me prefissato.
Forse dovrei settare un property node per impostarglielo, ma non so quale.
Ancora grazie.
Maurizio
----------------------------------------
AUTORE: 927
DATA :07/01/2009 - 15:12:44
----------------------------------------
A me funziona... di default comincia da 00:00 e va avanti di 1 secondo a ogni campione. Stiamo parlando di un Waveform Chart?
----------------------------------------
AUTORE: 43
DATA :07/01/2009 - 18:05:48
----------------------------------------
Ciao Maurizio e buon anno.
[quote="Mauro63":wyzkylzw]...Ho necessità di riportare sull'asse dell'ascisse di un chart (a 16 tracce) il tempo trascorso dalla accensione.[/quote:wyzkylzw]Perchè sull'asse delle ascisse e non in un indicatore a parte?
[quote="Mauro63":wyzkylzw]Per momento di accensione intendo non quello di messa in esecuzione del VI ma bensi dall'inizio di un test che all'interno del Vi posso comandare.[/quote:wyzkylzw]Vorresti quindi visualizzare un "buco" (finestra temporale) prima dell'inizio del campionamento del chart? il principale vantaggio dei chart è costituito dal fatto che una volta visualizzati un numero di campioni tale da riempire interamente il grafico, viene deciso automaticamente attraverso la proprietà "Update Mode", la "modalità"di ridisegno dei punti aggiunti successivamente. Questa proprietà vale esclusivamente per i chart appunto e non per i graph. Per gestire al meglio il disegno di un grafico consiglierei comunque di usare un graph che è +statico e quindi + controllabile.
[quote="Mauro63":wyzkylzw]Tra l'altro, il tempo trascorso dovrebbe essere espresso in giorni,ore,minuti,secondi,millisecondi.[/quote:wyzkylzw]cambiamo argomento. Il tempo "relativo" è comunque un numero espresso in secondi (parte intera) + frazioni di sec.(parte decimale) ed è prevista una visualizzazione automatica di questi valori in LabVIEW del tipo ore,minuti,secondi,partefrazionaria e stop. Scordati i giorni. Cioè potresti avere un tempo relativo del tipo
H:MM:SS.ddddd
1347:49:53.78346
L'anno scorso mi ricordo di un tizio che aveva scritto in questo forum. Memorizzava un timestamp completo (anno mese gg ecc.) per acquisizioni distanti l'una dall'altra pochi millisec. e si lamentava per un errore di precisione ( non mi ricordo se si trattava di double o float). Vorrei che anche Tu non commetta l'errore di misurare con il metro della sarta un oggetto da misurare con un calibro oppure il contrario cioè misurare con il metro della sarta un autostrada...
Certo che una visualizzazione grafica di "anni" ed una in usec.,pongono problematiche ben diverse.
Nel primo caso si tratta spesso di comprimere dati con decimazioni opportune. Nel secondo caso si tratta spesso di acquisizioni brevi per le quali è necessario memorizzare la data di inizio dell'acquisizione che deve essere visualizzata nei pressi del grafico come promemoria, non certo sull'asse dei tempi...
Se spiegassi meglio lo scopo di quello che vorresti realizzare potresti ricevere aiuto anche in questo senso.
[quote="Mauro63":wyzkylzw]Per quanto abbia tentato prima di rivolgermi a voi con questa specie "di augurio" ho prodotto si, la formattazione come richiesto ma il tempo non è un tempo trascorso ma la data del giorno stesso.[/quote:wyzkylzw]
Nelle prima versioni di LabVIEW il "current time" era int32. Poi (penso dalla ver. 5) è diventato un double. Dalla ver. 7 è un tipo di dato a sè stante. Ora se tenti di forzare direttamente il "Current time" nella proprietà "range.minimum" della scala dei tempi, otterrai un bel filo tratteggiato: questo perchè le scale sono di tipo numerico e non di tipo "TimeStamp", anche quando sono visualizzati in un formato temporale.
Avrai notato che nella Palette del Timing è possibile convertire un double in TimeStamp ma non viceversa.
Per farlo devi sommare o sottrarre al tuo Timestamp la costante di default del timestamp, che come tutti i default rappresenta il valore Zero. Dalla differenza dei due timestamp otterrai il double da forzare nella proprietà opportune del tuo chart.
[quote="Mauro63":wyzkylzw]Grazie, ma l'ho già provata e per l'esattezza:
%<%D-%H:%M:%S%2u>t
Nulla da fare!
Penso che per relativo, intendano un tempo da un certo punto temporale ... credo una data intorno al 1904.
A me serve quella da un punto da me prefissato.
Forse dovrei settare un property node per impostarglielo, ma non so quale....[/quote:wyzkylzw]
1) Disabilitare l'autoscale sull'asseX
2) Forzare i valori delle proprietà XScale.Minimun al timestamp da te "comandato" ed il valore Xscale.Maximum con il valore di XScale.Minimum + delta temporale di dimensionamento del Tuo grafico.
3) Forzare i valori delle proprietà "Offset" al valore di inizio acquisizione e "Multiplier" con il delta temporale fra un valore visualizzato ed il successivo
Lascio a Te scoprire cosa succederà quando la visualizzazzione ha raggiunto il valore Xmax. O meglio cosa succede se ripristini l'autoscaleX
In regalo aggiungo che:
4)Per gestire "buchi" (valori non acquisiti e quindi non visualizzabili), allora usa i valori numerici "NaN"
5)Se vuoi annotare degli istanti precisi con dei marker nel Tuo grafico allora usa i cursori facendo in modo che non siano draggabili da parte dell'operatore
Bye
p.s. : dimenticavo che i Cursori sono presenti solo nei graph e non nei chart...
----------------------------------------
AUTORE: 2536
DATA :07/01/2009 - 18:31:15
----------------------------------------
E' probabile che possa rinunciare ai giorni nell'asse dell'ascisse del chart!
Ho pensato cmq. di inserirli perchè ad oggi non conosco la lentezza del processo da controllare, ed anche se è sicuro che la storia del chart si saturi prima "di un nuovo giorno" è cmq. possibile attuare un replay del processo (con velocità di replay impostabile) attraverso lettura da HDD dei dati salvati (ovviamente a processo concluso).
Per lo scopo mi è venuto intuitivi pensare al char e non al graph, anche perchè immagino, che diversamente dovrei inserire del codice aggiuntivo per la gestione dello storico e la sua navigabilità.
Relativamente, al punto 0 del processo, è semplicemente un punto diverso dall'istanza del VI (sicuramente a posteriori), in quanto il VI appena istanziato è in attesa di comandi dall'operatore.
I cursori, probabilmente utili, non li conosco e quindi non ho pensato ad implementarli.
In conclusione, potrei anche optare per il graph ma debbo vedere cosa danno di più a fronte di un probabile superiore impegno, non fosse altro perchè, di tempo non abbondo quanto di problematiche da risolvere ...
(vedasi il mio recente post che parla di concorrenzialità e macchina a stati).
Come sempre resto in ascolto ...
Maurizio
----------------------------------------
AUTORE: 43
DATA :07/01/2009 - 18:51:13
----------------------------------------
[quote="Mauro63":3153469d]E' probabile che possa rinunciare ai giorni nell'asse dell'ascisse del chart!
Ho pensato cmq. di inserirli perchè ad oggi non conosco la lentezza del processo da controllare, ed anche se è sicuro che la storia del chart si saturi prima "di un nuovo giorno" è cmq. possibile attuare un replay del processo (con velocità di replay impostabile) attraverso lettura da HDD dei dati salvati (ovviamente a processo concluso).[/quote:3153469d]
Il chart è un oggetto da acquisizione in corso. non certo un valido strumento per visualizzare dati storici caricati da disco
[quote="Mauro63":3153469d]
Per lo scopo mi è venuto intuitivi pensare al char e non al graph, anche perchè immagino, che diversamente dovrei inserire del codice aggiuntivo per la gestione dello storico e la sua navigabilità.[/quote:3153469d] Ma certo!! È ovvio è così a meno per il caricamento da file: in quel caso è +intuitivo un graph.
[quote="Mauro63":3153469d]Relativamente, al punto 0 del processo, è semplicemente un punto diverso dall'istanza del VI (sicuramente a posteriori), in quanto il VI appena istanziato è in attesa di comandi dall'operatore.[/quote:3153469d]
il punto 0 del processo può essere l'Xmin di visualizzazione o la proprietà Offset dell'asseX. vedi un po'tu cosa vuoi fare...
[quote="Mauro63":3153469d]I cursori, probabilmente utili, non li conosco e quindi non ho pensato ad implementarli.[/quote:3153469d]L'hai detto Tu : le cose belle sono complesse!
[quote="Mauro63":3153469d]In conclusione, potrei anche optare per il graph ma debbo vedere cosa danno di più a fronte di un probabile superiore impegno, non fosse altro perchè, di tempo non abbondo quanto di problematiche da risolvere ...
(vedasi il mio recente post che parla di concorrenzialità e macchina a stati).[/quote:3153469d]
Vabbè io aggiungo che le scelte iniziali sbagliate poi, se trascinate per troppo tempo, possono diventare moooolto costose. Soprattutto in termini di tempo. Non so se hai avuto esperienze in merito...
bye
----------------------------------------
AUTORE: 2536
DATA :07/01/2009 - 21:55:09
----------------------------------------
Concordo pienamente sul costo delle scelte errate di progetto.
Qui, però mi si consenta di parlare, semmai, di minor efficienza: parliamo di un chart al posto di un graph ...
Cmq. ho pensato ad un chart perchè da subuto deve poter far vedere la variabilità di 16 grandezze nel tempo e quindi una possibile navigazione in run-time nei dati storici che il chart immagazzina.
A processo terminato ho pensato di rileggere a mò di nastro i dati registrati per rivedere in off-line l'intero processo e da qui, eventualmente, la funzionalità di velocità del replay da implementare. Il log (per ragioni di compatibilità e comodità del cliente in formato testo) del processo sarebbe letto un record alla volta (riga).
Ed ecco che nuovamente il chart rientra nell'applicazione anche nella funzionalità di replay, in quanto presenterebbe man mano i dati letti, questa volta da disco.
Capisco che la tua esperienza in labview ti guidi su altre scelte, ma personalmente, mi trovo nella condizione di usare quanto più possibile di già pronto o quasi.
Comprendo anche l'essenzialità del graph che apre quindi ad un più ampio controllo, ma ripeto la mia attuale condizione, semmai, farò tesoro di questa alternativa per applicarla appena le condizioni dimostreranno una certa maturità che spero di pari passo con la mia in labview
Attualmente, cmq, non vedo un errore che mini le fondamenta del progetto semmai una valida alternativa da tenere presente.
Ti ringrazio anche per le critiche che trovo costruttive.
Maurizio
----------------------------------------
================================================================================
Come leggere una pagina HTML da web
================================================================================
AUTORE: 2536
DATA :07/01/2009 - 02:31:47
----------------------------------------
Ciao a tutti, ho bisogno di leggere una pagina HTML con al suo interno una tabell dati che varia nel tempo (ogni 15 sec).
Come leggere la pagina ed appoggiarla in memoria (array, cluster ...) per interpretare la tabella e rappresentarla successivamente con Labview 8.6?
Grazie!
Maurizio
ps. il problema è solo la lettura perchè l'interpretazione e la rappresentazione mi sono chiare. Ancora Grazie!
----------------------------------------
AUTORE: 2536
DATA :07/01/2009 - 02:46:22
----------------------------------------
Eccomi di nuovo!
Niente di più semplice che per amor di squadra riporto ...
Ho preso il VI fornito a corredo di Labview: Read from text file, e con esso ho verificato che dando l'intero indirizzo web comprensivo di parametri, questo viene normalmente "letto" come un file testo (quale poi è).
Espandendo poi, l'indicatore del VI ho verificato la completa lettura del file.
Bene! Adesso non resta che intepretare lo HTML per collimare i dati intrinseci e sincronizzare la lettura con la presentazione dei dati su web.
A presto.
Maurizio
----------------------------------------
AUTORE: 2536
DATA :07/01/2009 - 03:50:42
----------------------------------------
Errata corrige
Il caricamento della pagina web, o meglio, del testo HTML, avviene grazie alla funzione "Dialogo" che però non posso utilizzare nella mia applcazione perchè automatica.
Ho provato ad impostare come nome file tutto l'indirizzo web, come prima sul dialogo, ma nulla! Error 1 ... bad file name
Qualche idea?
Grazie
Maurizio
----------------------------------------
AUTORE: 927
DATA :07/01/2009 - 10:53:20
----------------------------------------
Francamente non ho capito nemmeno come hai fatto a dargli l'url con il dialogo... Nell'Internet toolkit (un modulo non presente nel Labview di base) c'è la funzione "URL get HTTP document" che legge una pagina web, altrimenti credo che devi implementare tu il protocollo HTTP
----------------------------------------
AUTORE: 2536
DATA :07/01/2009 - 14:05:52
----------------------------------------
Ciao.
Sono riuscito a fornirgli l'indirizzo web nel dialogo, attraverso la selezione del medesimo link salvato come file (drag and drop - creato trascinando il link in questione dal browser alla cartella).
Però, come dicevo, la mia applicazione dovrà girare in automatico e leggere quell'indirizzo web ogni 15 sec, quindi non posso ricorrere alla funzione dialogo.
Altre tipi di funzioni, invece, non accettanto un link web ma solo una path.
Qualcuno mi ha suggerito i datasocket che invece sono presenti nella versione base.
Non so come funzionano, però! Debbo approfondire!
Certo è, che qualche esempio sarebbe utile ...
Grazie cmq. per la risposta.
Maurizio
----------------------------------------
AUTORE: 927
DATA :07/01/2009 - 14:20:54
----------------------------------------
Si è vero, il datasocket funziona, basta usare "datasocket open" passandogli l'indirizzo web come URL e mode = read, poi "datasocket read" passando come type una stringa, e si ottiene in uscita il testo della pagina. Il "URL get HTTP document" ha delle funzionalità in più ma nel tuo caso è inutile
----------------------------------------
AUTORE: 2536
DATA :07/01/2009 - 16:36:46
----------------------------------------
Ancora grazie!
Ci provo e ti faccio sapere.
A presto.
Maurizio
----------------------------------------
AUTORE: 2536
DATA :07/01/2009 - 22:58:46
----------------------------------------
Ottimo e abbondante ...
Confermo, con i datasocket configurati come snamprogetti sosteneva, il gioco è fatto!
Ho letto, in tal modo lo HTML della pagina web in questione.
Mille grazie, davvero, ora non resta che creare un mini parser per collimare i dati interessanti.
Maurizio
----------------------------------------
AUTORE: 4
DATA :08/01/2009 - 16:01:55
----------------------------------------
metto anche io i miei 2 €\cent se vuoi leggere una pagina di feed RSS in fondo all'url da passare al datasocket read devi "appendere" la stringa [code:3f5nko35][text][/code:3f5nko35] non mi chiedete perchè... l'ho letto su lava, provato e funziona.
Ciao
----------------------------------------
AUTORE: 2536
DATA :08/01/2009 - 21:50:31
----------------------------------------
Grazie della Info.
Cmq. il mio proposito, è leggere lo HTML per riconoscere dei valori che cambiano di continuo.
Non avendo nessuna libreria "web" non ho la comodità di poter centrare nella pagina web scaricata le informazioni a me interessanti, un po' come riduttivamente fa excel, e quindi debbo leggere lo HTML e con l'aiuto delle espressioni regolaro "agganciare" i valori numerici.
A riguardo sto applicando le espressioni regolari ma ho qualche problema con l'operazione di OR (|).
Proseguo ...
Maurizio
----------------------------------------
================================================================================
Come capire quali controlli rallentano il VI??
================================================================================
AUTORE: 2435
DATA :07/01/2009 - 09:48:10
----------------------------------------
Ciao....
Vorrei capire come posso fare un'analisi delle prestazioni dei Vi....
in modo da capire se qualche controllo mi sta rallenta l'applicazione.
Infatti ho scoperto che usando le proprietà di alcuni oggetti(posti all'interno di cicli) questi mi rallentano visibilmente il tempo di ciclo.
come posso fare?
----------------------------------------
AUTORE: 2536
DATA :07/01/2009 - 18:07:58
----------------------------------------
Ciao.
Non so se esiste un tool pronto per fare un profilo della tua applicazione.
Relativamente, potrebbe esistere ma rilegato a versioni top del prodotto (io ad. es ho solo la versione base).
Tra l'altro, premetto, non sono un esperto di labview, pecca che conto di colmare nel più breve tempo possibile ...
Giacchè, parli di .... visibilmente ..... posso pensare che non hai calcolato effettivamente il tempo di ciclo.
Utilizza a tale scopo la funzione tick count (fp/programming/timing), prendendo il suo valore all'inizio del ciclo per poi sottrarlo ad una sua nuova lettura alla fine del medesimo ciclo.
Ovviamente, dalla discordanza noterai di quanti millisecondi (l'unità di misura della funzione tick count) costano le nuove modifiche che, se possibile, sarebbe opportuno implementare una alla volta per meglio comprenderne il peso.
Maurizio
----------------------------------------
================================================================================
Inizializzazione Variabili globali
================================================================================
AUTORE: 2538
DATA :07/01/2009 - 15:32:39
----------------------------------------
Salve sono al mio primo intervento, prima di tutto faccio i miei complimenti per l'organizzazione del forum/sito molto interessante!
Ma veniamo al problema, come dice il titolo, ho la necessità di inizializzare una variabile globale ad un determinato valore di partenza, ho provato a impostare nel sub-Vi il valore necessario ma poi torna ad essere zero !
Sicuramente qualcuno puotrà aiutarmi!
Grazie in anticipo!
----------------------------------------
AUTORE: 1050
DATA :08/01/2009 - 06:53:07
----------------------------------------
E' un pò vaga come descrizione.
Hai verificato che il controllo che usi come globale sia effettivamente un "control" e non un "indicator"?
Altro problema potrebbe essere il range di valori, per esempio magari stai assegnando un valore float ad un control che accetta solo interi (se assegni 0.5 otterrai 0).
Per ora verifica questo.
ciao
----------------------------------------
AUTORE: 2538
DATA :08/01/2009 - 08:43:01
----------------------------------------
Grazie per la risposta, ho risolto il problema era un'indicatore e non un controllo!
----------------------------------------
================================================================================
Come tutte le cose belle ... sono anche complesse
================================================================================
AUTORE: 2536
DATA :07/01/2009 - 17:52:38
----------------------------------------
Ciao a tutti!
Depo le prima prove atte a verificare comportamenti fisici e logici (labview-mondo esterno), debbo realizzare una macchina pneumatica che controlla valvole on-off e pressometri.
Nel mentre lavora di gonfiaggi e sgonfiaggi con tempistiche e verifiche impostate, deve anche dare ascolto ad eventuali emergenze, nonchè all'interfaccia umana che la controlla da cui potrebbero venire ulteriori comandi.
E' necessario anche implementare una macchina a stati che governa l'intera procedura, che forse, per l'esatteza, sarebbe meglio parlare di macchina sequenziale se non fosse per lo stato di pausa raggiungibile da qualsiasi stato che rompe, per così dire, la sequenzialità del macro processo (ovviamente la pausa è uno stato anch'essa).
Insomma, la cosa per quanto non trascendentale, non è neanche intuitiva ... o per lo meno, da non prendere sotto gamba, perchè intuitavamente, penso già al problema principe dei concorrenzialità dei processi, che diversamente, porterebbe a fare solo una cosa alla volta e quindi a non rispettare le svariate tempistiche (multiple di 50ms).
Riuscite a darmi qualche idea, consiglio, esempio sull'impostazione logica della macchina?
Grazie davvero.
Maurizio
----------------------------------------
AUTORE: 43
DATA :07/01/2009 - 18:28:29
----------------------------------------
[quote="Mauro63":1tvic7al]Ciao a tutti!
Depo le prima prove atte a verificare comportamenti fisici e logici (labview-mondo esterno), debbo realizzare una macchina pneumatica che controlla valvole on-off e pressometri.
Nel mentre lavora di gonfiaggi e sgonfiaggi con tempistiche e verifiche impostate, deve anche dare ascolto ad eventuali emergenze, nonchè all'interfaccia umana che la controlla da cui potrebbero venire ulteriori comandi.
E' necessario anche implementare una macchina a stati che governa l'intera procedura, che forse, per l'esatteza, sarebbe meglio parlare di macchina sequenziale se non fosse per lo stato di pausa raggiungibile da qualsiasi stato che rompe, per così dire, la sequenzialità del macro processo (ovviamente la pausa è uno stato anch'essa).
Insomma, la cosa per quanto non trascendentale, non è neanche intuitiva ... o per lo meno, da non prendere sotto gamba, perchè intuitavamente, penso già al problema principe dei concorrenzialità dei processi, che diversamente, porterebbe a fare solo una cosa alla volta e quindi a non rispettare le svariate tempistiche (multiple di 50ms).
Riuscite a darmi qualche idea, consiglio, esempio sull'impostazione logica della macchina?
Grazie davvero.
Maurizio[/quote:1tvic7al]
Sei veramente una sagoma!!!
Butti là 2 parole e pensi che qualcuno possa capire la complessità di un problema per il quale non hai indicato granchè di info relativi alle prestazioni richieste e le limitazioni.
Se 6 un professionista, come penso, beh ! a fine consulenza presentiamo anche noi la fattura?
bye
----------------------------------------
AUTORE: 2536
DATA :07/01/2009 - 19:36:45
----------------------------------------
Un grazie per la simaptia ...
Mi rendo conto della generalità delle informazioni che ho messo nel forum ma non volevo appensantire il lavoro di nessuno ma cercavo solo idee di un qualcosa, o meglio di un sistama di applicare labview per particolari e stringenti applicazioni.
Tipo: devi implementare una macchina a stati che attraverso variabili globali comunichi con VI differenti che controllano il singolo evento continuamente e per cui hanno diverse priorità di esecuzione ... (per caso mi sono risposta da solo?), insomma, come se fossimo alla lavagna e progettassimo un sistema logico.
Poi, se impietositi, qualcuno si chinasse con fare regale ... tipo san martino ... che offra anche esempi congruenti ... che dire?
A buon rendere ... come imparete a conoscermi
Maurizio
----------------------------------------
AUTORE: 43
DATA :07/01/2009 - 23:01:27
----------------------------------------
[quote="Mauro63":1dxaedmz]Un grazie per la simaptia ...[/quote:1dxaedmz]Prego[quote="Mauro63":1dxaedmz]Mi rendo conto della generalità delle informazioni che ho messo nel forum ma non volevo appensantire il lavoro di nessuno ma cercavo solo idee di un qualcosa, o meglio di un sistama di applicare labview per particolari e stringenti applicazioni.[/quote:1dxaedmz]
Permettimi:è un po' come disquisire sul sesso degli angeli! Forse questa discussione va spostata in "LabVIEW e Dintorni". Forse no. Penso che il [u:1dxaedmz]modo in cui si programma[/u:1dxaedmz], dato non solo dalla "calligrafia" del programmatore, cioè nel modo in cui si "disegnano" i VI, sia diagrammi che FP, ma anche dall'approccio al problema, dalle scelte architetturali, dalle scelte fatte per la fase di debugging, cioè tutte cose ispirate dall'ordine mentale e dalla fantasia, rappresenta [b:1dxaedmz]lo stile[/b:1dxaedmz] personale, una fusione fra espressione "artistica" e capacità di ordine e sintesi, che forse sarebbe più giusto qualificare come "abilità artigianale".
Quindi tutte le scelte sono buone. Come un artigiano, che provando e riprovando, migliora la qualità del proprio operato con l'esperienza e con essa affina l'uso degli attrezzi a sua disposizione, fai le Tue scelte con coraggio. Imbocca la strada e percorrila fino in fondo. Se Ti accorgi che è sbagliata, mi raccomando, torna indietro fino al punto che riterrai giusto e riparti di slancio!
[quote="Mauro63":1dxaedmz]Tipo: devi implementare una macchina a stati che attraverso variabili globali comunichi con VI differenti che controllano il singolo evento continuamente e per cui hanno diverse priorità di esecuzione ... (per caso mi sono risposta da solo?), insomma, come se fossimo alla lavagna e progettassimo un sistema logico.[/quote:1dxaedmz]
Ecco, per esempio: lascia stare la priorità di esecuzione dei VI. Quando in LabVIEW non si potevano gestire "eventi" di interfaccia se ne faceva a meno e i SW funzionavano lo stesso. Ora sfruttando quello che hai a disposizione, sviluppa il tuo sw senza preoccuparti di tarare questi dettagli. Per esperienza direi che se arrivi a toccare le priorità di esecuzione hai mediamente dei grossi problemi e non sai come venirne fuori...
Anche l'uso di variabili globali deve essere misurato e ridotto al minimo. Questo per il mio [i:1dxaedmz]stile[/i:1dxaedmz] di programmazione...
E poi quali VI controllano "un evento singolo"? parlando di interfaccia HMI, quindi di eventi "lenti", con una sola struttura Event Case controlli tutti gli eventi... compreso quelli user defined.
[quote="Mauro63":1dxaedmz]Poi, se impietositi, qualcuno si chinasse con fare regale ... tipo san martino ... che offra anche esempi congruenti ... che dire? ...Maurizio[/quote:1dxaedmz]
Già.. che dire.. DICCI DI PIU'. Si tratta del controllo di una macchina o di un impianto industriale? È un apparato di collaudo o un sistema per la produzione? Cosa fa? Quanti pressometri leggi? con quale frequenza? Quali sono gli eventi che logghi? ecc.
Notte
----------------------------------------
AUTORE: 2536
DATA :08/01/2009 - 13:36:34
----------------------------------------
Ecco ad es. quando hai iniziato a parlare di ... esecuzione VI lascia perdere ... insomma era questa la tipologia di info. che crecavo di stimolare.
Purtroppo nella ver. basi non godo di event structure ...
Una problematica spicciola da superare è quella che nel rispetto di tempi multipli di 50 ms, quindi 50, 100, 150 e via così, come ascoltare gli eventi casuali (emergenze ed interfaccia umana per la massa in pausa eventuale del processo - arresto temporaneo).
Se implemento il ritardo X con un loop dove al suo interno verifico gli input casuali, avrei una spaventosa ridondanza di codice perchè i loop non sarebbero per nulla pochi, sempre che riesca a rispettare anche i tempi più piccoli.
Intuitivamente, allora ho pensato ad un controllo a task indipendenti, e quindi a più VI, che attraverso variabili globali si comunicassero l'essenziale, anche perchè, nel mentre è in atto il processo pneumatico, si deve continuamente osservare una grandezza fisica per calcolare il volume di passaggio e quindi (l'integrale della medesima grandezza).
La macchina da controllare ha la funzione di prototipo e non di prodotto di serie e gli input non sono molti ma stringenti.
I pressometri sono qualche unità ed anche le valvole da comandare a cui però sommare altri imput di carattere logico come time-out e l'iterfaccia umana con la sua possibilità di arresto temporaneo.
Maurizio
----------------------------------------
AUTORE: 482
DATA :12/01/2009 - 07:51:35
----------------------------------------
Il consiglio che ti darei, senza entrare nei dettagli è :
sviluppa un vi con piu' cicli while in parallelo, ognuno con la propria tempistica e la propria funzione ben distinta.
ES:
Ciclo HMI
Ciclo Macchina a Stati
Ciclo Parametri e Settaggi
Come diceva Paracarro, nello stabilire qualie quanti cicli usare, valuta quante variabili globali ti serviranno e scegli la strada che ti permette di usarne meno.
Per il resto bisogna solo provare,provare,provare,provare,provare,provare....provare.
----------------------------------------
AUTORE: 2536
DATA :13/01/2009 - 00:15:55
----------------------------------------
Ti ringrazio!
Parlando anche con l'assistenza NI mi hanno consigliato fondamentalmente la stessa cosa.
Insomma, utilizzo lo scheduler di Labview e vediamo come và.
Vado a provare, provare, provare ...
Maurizio
PS. Bel film quello, pensando già solo al titolo sorrido, se poi inquadro la scena con troisi riparato da un muro a cavacecio di benigni che esausto cammina e piega le gambe ... e troisi con la figlia della sandrelli: "Sai, sono in discesa ..."
----------------------------------------
================================================================================
Terminare un subvi
================================================================================
AUTORE: 2479
DATA :08/01/2009 - 14:37:45
----------------------------------------
Ciao a tutti,
avrei bisogno di qualche informazione...
Il mio problema è riuscire ad uscire da un subvi, richiamato nel main, se avviene un determoinato evento monitorato in parallelo al programma in esecuzione (ad esempio un emergenza che mi setta una variabile globale).
E' possibile agire solo sul singolo subvi senza andare a bloccare l'intero programma e senza attendere un time out eccessivo?
Grazie a tutti
Federico
----------------------------------------
AUTORE: 927
DATA :08/01/2009 - 15:21:07
----------------------------------------
Ci sono molti modi per comunicare tra VI e il più semplice è appunto una variabile globale. Normalmente è del subVI il compito di interrompersi quando la variabile assume il valore di stop, e quanto tempo ci metta dipende da lui. La risposta diretta alla tua domanda è "si", ma forse la domanda era troppo vaga...
----------------------------------------
AUTORE: 2479
DATA :08/01/2009 - 15:29:38
----------------------------------------
Se dovessi gestire un subvi formato da un while, la soluzione della variabile sarebbe la migliore, ma nel mio caso il subvi legge gli elementi di una coda.
Se succede un emergenza, la coda continua comunque ad attendere elementi fino allo scaderte del suo time out che per necessità è abbastanza lungo.
Vorrei non dover attendere tutto questo tempo prima di uscire dal subvi.
Ho provato ad usare l'invoke node per fermare il programma ma questa azione non è consentita e se utilizzo lo stop mi viene fermato anche il main...
----------------------------------------
AUTORE: 927
DATA :08/01/2009 - 15:55:08
----------------------------------------
L'invoke node "abort VI" funziona, però anche per avviare il subVI devi usare un invoke node ("run VI"), non puoi usare una semplice chiamata statica.
Oppure ci sono dei trucchi, ad es. diminuisci il timeout del Read queue, ma ripeti la lettura più volte prima di considerarlo un "vero" timeout.
----------------------------------------
AUTORE: 2479
DATA :08/01/2009 - 15:58:08
----------------------------------------
Grazie,
volevo evitare i "trucchi" che ho già dovuto usare nel read dell TCP...
Proverò con l'altro...
----------------------------------------
AUTORE: 278
DATA :10/01/2009 - 10:52:14
----------------------------------------
[quote:210nx6mn]Se succede un emergenza, la coda continua comunque ad attendere elementi fino allo scaderte del suo time out che per necessità è abbastanza lungo.
Vorrei non dover attendere tutto questo tempo prima di uscire dal subvi.[/quote:210nx6mn] In questi casi, trovo molto comodo utilizzare la coda stessa per terminare il subvi (paracarro docet
).
Quello che puoi fare e` collegare il cluster d`errore della coda al terminale d`arresto del while ed impostare il tempo di timeout della coda a -1 (no time out).
Quando si verifica l`eccezione, non devi fare altro che distruggere la coda del subvi dal main, il while si interrompe immediatamente e il subvi termina la sua esecuzione.
Non so se puo` essere definito un trucco ma.. funziona bene
----------------------------------------
================================================================================
USB RAW VISA resource name
================================================================================
AUTORE: 2523
DATA :10/01/2009 - 18:21:49
----------------------------------------
Ciao a tutti,
sto lavorando con l'USB RAW. Il mio problema è il seguente:
quando LabView riconosce l'USB, nella tendina della USB RAW VISA resource name
mi appare un nome che per l'utente finale risulta incromprensibile e privo di ogni significato.
Sapreste, per favore, dirmi se sia possibile cambiare il nome della porta USB che compare nella tendina della USB RAW VISA resource name?
Io non sono riuscito a trovare soluzioni.
Grazie in anticipo.
Saluti,
Chobin.
----------------------------------------
AUTORE: 1050
DATA :12/01/2009 - 13:58:27
----------------------------------------
Non ho mai provato con la USB ma con la seriale puoi modificare l'alias name utilizzando Measurement&Automation explorer (esempio, se selezioni da M&A la COM1 a destra hai una finestra con la possibilità di cambiare il "VISA alias"). Il risultato viene scritto su un file "visaconf.ini" (che potresti in realtà modificare anche manualmente).
----------------------------------------
AUTORE: 2523
DATA :24/01/2009 - 16:09:29
----------------------------------------
Ciao antea06,
grazie per la risposta. Proverò sicuramente a metterla in pratica.
Ciao,
chobin.
----------------------------------------
================================================================================
COme caricare una immagine su controllo picturebox????
================================================================================
AUTORE: 2435
DATA :13/01/2009 - 14:57:59
----------------------------------------
Ciao a tutti....
scusate per la domanda.....
ma come si fa a caricare un'immagine su una picturebox?????
----------------------------------------
AUTORE: 727
DATA :14/01/2009 - 09:03:37
----------------------------------------
In modo statico con copia - incolla. Ciao
----------------------------------------
================================================================================
Acquisizione Temperatura: calcolo Min e Max
================================================================================
AUTORE: 2542
DATA :14/01/2009 - 14:28:24
----------------------------------------
Salve a tutti, ho dato un'occhiata in giro ma non ho trovato nulla che facesse al mio caso.
Vado direttamente al dunque: ho realizzato un VI per l'acquisizione temperatura da un NTC (supportato dal sistema PCI-6024E/SC-2075).
Il tutto funziona benone, sia nella fase di acquisizione, sia nella fase di filtraggio da errori a media nulla (ciclo "for" che contiene l'AI Sample Channel scaled), sia nella fase di trasduzione della temperatura (il formula node che contiene l'equazione inversa per il passaggio da V a T e le varie grandezze della rete di condizionamento).
A questo punto vorrei estrarre il valore minino e massimo di un ciclo di acquisizione (il codice grafico dell'intero strumento virtuale è contenuto in un ciclo While che itera la fase di acquisizione).
L'idea che mi è balzata in mente è quella di un confronto con registro. La mostro nella seguente figura.
[url=http://img155.imageshack.us/my.php?image=90331382bq6.jpg:1tmc0ajw][img:1tmc0ajw]http://img155.imageshack.us/img155/1402/90331382bq6.th.jpg[/img:1tmc0ajw][/url:1tmc0ajw]
per chiarire meglio aggiungo il seguente disegno schematico che spero chiarisca meglio di cosa sto parlando
[url=http://img164.imageshack.us/my.php?image=cap2diagramsave1ca8.jpg:1tmc0ajw][img:1tmc0ajw]http://img164.imageshack.us/img164/9530/cap2diagramsave1ca8.th.jpg[/img:1tmc0ajw][/url:1tmc0ajw]
Ebbene in linea teorica sembra funzionare, ma da novizio di LabVIEW mi suona tanto come una soluzione "primitiva".
Voi cosa mi consigliereste? Può andare anche così?
Grazie a tutti
Nico
ps: si tratta di un progetto di laboratorio per l'università, quindi il lato prestazioni/ottimizzazioni non è essenziale...anche se non mi dispiacerebbe imparare a fare la cose per bene fin da subito.
----------------------------------------
AUTORE: 482
DATA :14/01/2009 - 14:35:14
----------------------------------------
Se il valore non lo devi visualizzare in tempo reale, c'e' un blocchetto che si chiama Array min & MAX che se tu gli dai in pasto un array, ti restituisce il valore massimo e minimo dell'array.
----------------------------------------
AUTORE: 43
DATA :14/01/2009 - 15:15:36
----------------------------------------
Secondo me, va benissimo anche se preferirei usare il VI "Max & Min" presente nella palette "comparison" di LV 7.1
ecco l'esempio
[attachment=0:tq6cgcde]Compare_Max_Min.vi[/attachment:tq6cgcde]
Il "vantaggio" è che si puo' utilizzare come valore di inizializzazione "NaN"
bye
----------------------------------------
AUTORE: 2542
DATA :14/01/2009 - 16:53:30
----------------------------------------
Grazie a tutti per i suggerimenti.
@ gepponline : no il valore non mi occorre necessariamente in tempo reale visto che finiscono su un file di testo al termine dell'acquisizione (si tratta di un punto extra, visto che le specifiche richiedevano solo di acquisire la temperatura e di modificare il VI a piacimento. I frame successivi contengono appunto la porzione di codice che scrive su file la data e i due valori registrati).
Ad ogni modo avevo letto sulla documentazione della possibilità da te suggerita, solo che lavorando con un [b:haf50pmo]AI Sample Channel (Scaled Value)[/b:haf50pmo] mi era sembrato poco furbo dover inizializzare un Array quando mi si chiede di lavorare su grandezze scalari. Grazie ugualmente
@ paracarro:La tua soluzione mi sembra estremamente più raffinata della mia (che definirei alquanto grezza
) ma da solo non ci sarei mai arrivato
. Inoltre, a differenza della mia che richiede un valore arbitrariamente piccolo per la ricerca del massimo e uno arbitrariamente grande per quella del minimo (fattori che ne pregiudicano la versatilità), le due strutture annidate che mi suggerisci mi sembrano la soluzione più generale possibile... e quindi la migliore nel mio caso.
Grazie mille.
Ragazzi vi farò sapere!
----------------------------------------
================================================================================
utente novizio, aiuto su tabelle :)
================================================================================
AUTORE: 2522
DATA :15/01/2009 - 10:06:20
----------------------------------------
Salve a tutti,
ho preso in mano LV per la prima volta oggi.. premetto che io parto da zero in quanto a programmazione e mi ritrovo ad usare questo software, mi hanno congliato questo forum che devo dire sembra davvero ben strutturato. Vi espongo la mia necessità che credo vi risulterà seplice. Ho installato una libreria labview con varie opzioni per office, in pratica devo creare una tabella che vada ad inserirsi in una pagina word (già creata) e che si completi automaticamente, nel senso, che dovrebbe aggiungersi da sola le celle e le colonne man mano che io aggiungo i dati in labview. Ho provato con vari comandi tipo "word easy table, word insert row,column, cell ecc..." ma forse non li so collegare al mio report in maniera corretta e in word non mi appare nemmeno una celletta... scusate se magari ho omesso dettagli importanti, ma sto cercando di imparare ^_^ ... un grazie anticipato a chi saprà darmi anche solo un piccolo input di aiuto!
Davide
----------------------------------------
AUTORE: 482
DATA :15/01/2009 - 14:08:24
----------------------------------------
Visto che hai detto di essere alle prime armi, ti consiglierei di postare il tuo VI (il programmino ch ehai fatto) in modo che capiamo in che direzione devono andare i consigli e soprattutto da dove devono partire.
----------------------------------------
================================================================================
Indice array - blocco scorrimento
================================================================================
AUTORE: 706
DATA :16/01/2009 - 08:31:36
----------------------------------------
Ciao a tutti,
il mio problema è quello di, una vola riempito un array, vorrei poter disabilitare la freccetta di scorrimento (index) una volta che si arriva all'ultimo elemento dell'araay così da evitare di scorrere l'array all'infinito e far visualizzare elemeti vuoti. Al momento sto utilizzazndo (l'array si trova all'interno di un ciclo while temporizzato) il proprerty node (index value) che mi impedisce di andare di visualizzare gli elementi dopo l'ultimo però ha un problema: per pochi istanti mi fa vedere l'elemento vuoto dopo l'ultimo (come una specie di flash) in quanto la freccia su dell'indice array per la scelta dell'elementi è sempre disponibile.
Spero di essere stato chiaro..
Grazie
Francesco
----------------------------------------
AUTORE: 927
DATA :20/01/2009 - 14:59:57
----------------------------------------
Se vuoi fare una cosa fatta bene dovresti creare un XControl.
Sennò puoi provare a usare una Event structure con evento "Mouse down" legato all'array; così il controllo lo puoi fare immediatamente appena l'utente clicca, anzichè ad ogni iterazione del while. Può darsi che così la reazione sia abbastanza veloce da non farti vedere lo sfarfallio
----------------------------------------
AUTORE: 645
DATA :21/01/2009 - 08:38:41
----------------------------------------
Dovrebbe esserci la possibilità di settare i limiti della barra verticale nelle proprietà del controllo oppure tramite Property Node. Mi sembra...
----------------------------------------
AUTORE: 706
DATA :21/01/2009 - 17:52:33
----------------------------------------
Grazie per la risposta..proverò e vi farò sapere.
Ciao
----------------------------------------
AUTORE: 706
DATA :28/01/2009 - 16:44:16
----------------------------------------
Ciao a tutti,
ho risolto così con un piccolo trucco..non rendo più visibile l'index display dell'array. Questo lo "sostituisco" con un nomale numeric control, il quale, a diffrenza dell'index display, gli può essere impostato il valore minimo e massimo. Quindi al valore minimo gli impongo 0 e come valore massimo il "size" dell'array meno 1. In questo modo invece di andare a leggere direttamente l'array, vado a leggere i suoi elementi (record per record) che sono estratti appunto uno alla volta e visualizzati uno alla volta grazie appunto al number control in collaborazione con l'Index array. E così si risolte il tutto.
Grazie a tutti della colaborazione.
Francesco
----------------------------------------
================================================================================
E' possibile rendere invisibile colonne"Multicolumn"
================================================================================
AUTORE: 2435
DATA :16/01/2009 - 16:27:50
----------------------------------------
Ciao a tutti....
sapete se si possono rendere invisibili le colonne di una "Multicolumn"????????
grazie.
----------------------------------------
AUTORE: 43
DATA :16/01/2009 - 16:51:03
----------------------------------------
[quote="nic81_2007":1wbmpkil]sapete se si possono rendere invisibili le colonne di una "Multicolumn"????????[/quote:1wbmpkil]
mi sembra di si,
mettendo la "cellSize.Width" = 0
----------------------------------------
AUTORE: 2435
DATA :16/01/2009 - 17:05:40
----------------------------------------
effettivamente in questo modo la colonna o riga selezionata viene nascosta.....
ma non del tutto...
----------------------------------------
AUTORE: 43
DATA :19/01/2009 - 09:52:47
----------------------------------------
[quote="nic81_2007":cw2ckg32]effettivamente in questo modo la colonna o riga selezionata viene nascosta.....
ma non del tutto...
[/quote:cw2ckg32]
Vero...
Per avere un effetto scenico garantito devi mettere il dato che vuoi rendere invisibile/visibile come ultima colonna e poi giocare con la proprietà numcolumns, ammesso che la scrollbar orizzontale sia invisibile...
Io mi ricordo di aver pasticciato con la larghezza del controllo, per la visualizzazione della scrollbar verticale...
Al momento non mi viene in mente nient'altro
bye
----------------------------------------
AUTORE: 2435
DATA :19/01/2009 - 10:20:03
----------------------------------------
Infatti.... ma diventa troppo complicato...
mi conviene memorizzare i dati su un array poi filtrare i dati e passarli alla tabella.
----------------------------------------
================================================================================
problemi apertura file e uso memoria windows
================================================================================
AUTORE: 2235
DATA :17/01/2009 - 22:40:48
----------------------------------------
Buonasera
Ho un programma che compie delle analisi su dei dati in un ciclo while e che acquisisce in un altro ciclo while nello stesso vi i dati stessi in tempo reale.
Dovendo acquisire nello stesso vi molti canali dati in streaming ed avendo icrementato il buffer size a 10000 ho paura di avere problemi con la memoria.
So che la cosa va affrontata da performance pannel di wiondows ma lì il working set aumenta sempre per ogni giro del programma e non capisco con quale unità di misura indichi la memoria impiegata.
Ho avuto indicazioni in merito alla corretta programmazione in labview per non impiegare troppa memoria di windows.
Usare di più i fili che le variabili locali per passare i dati e limitare il numero di tali variabili
ridurre il buffer nei chart graph (non capisco come si faccia)
mettere aperture e chiusure dei notifier (con cui scambio i dati tra i due cicli while) fuori dai cicli principali di programmazione in cui impiego send e receive notifier
aprire e chiudere file txt su cui scrivere i dati poche volte.
Il mio problema è che ho NGDL gradi di libertà per cui ho NGDL generici file su cui salvare i dati.
Io uso un ciclo for da O al NGDL-1 in cui apro e chiudo NGDL file di scrittura.
Vorrei evitare di aprire e chiudere NGDL volte per ogni giro del ciclo while questi file perchè ho paura di impiegare troppa memoria.
come posso fare a aprirne NGDL file fuori dal ciclo while principale e richiamarli NGDL volte nel ciclo while ad ogni iterazione per poi fuori dal ciclo richiuderli NGDL volte?
Allego immagine VI
grazie
----------------------------------------
AUTORE: 927
DATA :20/01/2009 - 14:50:18
----------------------------------------
L'immagine non l'hai allegata ma penso di aver capito.
Prima e fuori dal ciclo While usa un For che apre tutti i file. Da esso fai uscire automaticamente l'array delle reference ai file, che all'interno del While userai per indicizzare un altro For che fa solo le scritture. Un terzo For sarà alla fine, dopo il While, per fare le chiusure, sempre con lo stesso array di reference
----------------------------------------
AUTORE: 2235
DATA :21/01/2009 - 19:50:48
----------------------------------------
grazie molte
----------------------------------------
================================================================================
Piccolo aiutino su Agilent E363X
================================================================================
AUTORE: 2543
DATA :19/01/2009 - 14:54:24
----------------------------------------
Ciao ragazzi siam nuovi del forum e siamo 2 studeni che stanno lavorando a un progetto di un Software per comandare un generatore di funzioni HP E3631A..Per ora c siamo imbattuti in un piccolo problema...Dalla versione 7.0 alla 8.0 sono cambiate alcune cose...Qualcuno sa dirci dove possiamo trovare i tools "configure output.vi" e "configure courrent limits.vi"?Così si chiamavano in labview 7.0..Stiamo lavorando con i tools della sottocartella di Agilent E363X...Grazie anticipatamente
----------------------------------------
AUTORE: 301
DATA :20/01/2009 - 07:34:37
----------------------------------------
Quei 2 vi di cui state parlando fanno parte della libreria del generatore stesso....la dovreste reinstallare, credo.
----------------------------------------
================================================================================
Aggiornare un controllo Serial Port
================================================================================
AUTORE: 1078
DATA :20/01/2009 - 15:36:46
----------------------------------------
Ciao a tutti,
ho realizzato un'applicazione che comunica con uno strumento via seriale RS232.
Il mo problema è questo: ho utilizzato un controllo Serial Port per dare la possibilità all'utente di selezionare la porta seriale a cui sarà connesso lo strumento ma, quando installo l'applicazione (generata con application builder) sulla macchina destinata a far girare il sw, il controllo di selezione della serial port risulta vuoto. Anche cliccando sul comando refresh messo a disposizione del controllo stesso non mi vengono indicate le porte a disposizione del PC. Qalcuno sa dirmi come mai? Posso aggirare il problema in qulache modo?
N.B. Ho verificato, ovviamente, che il sistema operativo riconosca le porte di comunicazione montate (scheda PCI) sul pc e che queste funzionino correttamete.
Grazie a tutti per l'aiuto.
----------------------------------------
AUTORE: 301
DATA :21/01/2009 - 06:55:11
----------------------------------------
HAI VERIFICATO CHE SIANO PRESENTI I DRIVERS VISA?
----------------------------------------
AUTORE: 1078
DATA :23/01/2009 - 10:18:37
----------------------------------------
Effettivamente avevo dimenticato di caricare i driver VISA...
Grazie Aris!!!
----------------------------------------
================================================================================
AIUTO SPAZIO ARRESTO
================================================================================
AUTORE: 2532
DATA :21/01/2009 - 09:15:48
----------------------------------------
Buongiorno a tutti, mi occorrerebbe un aiutino anche piccolo su come misurare uno spazio di arresto.
Ecco i dettagli: ho un encoder lineare, io con labview acquisisco la posizione istante per istante.
Ad un certo punto, tramite uno stimolo esterno, la macchina va in blocco ed il mio scopo è vedere da quel momento in poi quanto la macchina continua ad avanzare.
Vi ringrazio tutti in anticipo
----------------------------------------
AUTORE: 645
DATA :22/01/2009 - 10:08:28
----------------------------------------
Tu conosci l'istante di arresto della macchina? O puoi misurare un evento che si verifica quando la macchina va in blocco?
Se sì, poi controlli l'encoder fino a quando non c'è spostamento: a questo punto la macchina è ferma.
Fai una differenza tra l'istante iniziale (quando si è verificato l'evento dell'arresto) e l'istante finale (segnale nullo di spostamento) e hai il tempo di arresto.
Boh... potrebbe essere un'idea di partenza...
----------------------------------------
AUTORE: 2532
DATA :22/01/2009 - 12:44:36
----------------------------------------
Diciamo la macchina può errestarsi in un qualsiasi momento, ma ciò si verificaall'abbassarsi un valore logico cosi io, al verificarsi di questo evendo, dovrei misurare quanto la macchina ha continuato la sua corsa prima di fermarsi.
Anche se non lo avevo detto prima, ma mi sembra abbastanza logico, sono decisamente un neofita su questo tipo di programmazione; purtroppo sono stato abituato a programmare in C e simili, che di fronte a questo tipo di programmazione, non so dove sbattere la testa. Se dovessi farlo in C, avrei innanzitutto effettuato un ciclo IF di controllo sull'ingresso che monitora costantemente l'evento arresto macchina e , quando verificato avrei realizzato un ulteriore ciclo che mi inserisce tutti i valori di posizione all'interno di una tabella per poi ricavarne il min, il max ed effettuarne la differenza.
Che ne pensi? Si può fare un programme del genere?
mmm messà che ho la mente troppo contorta
Grazie mille intanto
----------------------------------------
AUTORE: 482
DATA :23/01/2009 - 07:29:15
----------------------------------------
la prima parte è giusta (quella del monitorare il segnale di arresto), ma la seconda misuona male.
Io ti consiglierei di far partire un timer nell'istante in cui arriva il segnale di arresto e magari memorizzare anche la posizione dell'encoder.
Dopodichè vai a controllare il segnale dell'encoder. quando vedi che non c'e' piu' movimento e quindi il valore encoder non incrementa ne decrementa, fermi il timer e memorizzi la nuova posizione dell'encoder, cosi' avrai lo spazio percorso e il tempo impiegato.
Se usi le librerie motion, c'e'anche un vi che va a verificare quando la movimentazione è terminata, ma non so se considera l'effettivo spostamento o solo il segnale software di stop.
----------------------------------------
AUTORE: 645
DATA :23/01/2009 - 09:59:15
----------------------------------------
Concordo con Geppo... personalmente non ho le librerie Motion che, se non sbaglio, sono dedicate alla movimentazione di motori ma il procedimento è proprio quello...
Al posto del IF continuo puoi utilizzare le Event Structure: nel momento in cui il segnale logico cambia tu sai che la macchina si sta arrestando. Memorizzi tempo e posizione dell'encoder.
Poi continui a controllare l'encoder fino a quando non hai variazione di segnale... A questo punto memorizzi il tempo e fai la differenza con il tempo memorizzato precedentemente (quando la macchina ha iniziato ad arrestarsi).
Ottieni il tempo di arresto (in ms se non sbaglio).
Per sapere come fare la differenza tra istanti di tempo puoi usare la funzione Tick Count da inserire nel VI quando devi misurare il primo e il secondo istante di tempo.
----------------------------------------
AUTORE: 2532
DATA :23/01/2009 - 12:27:57
----------------------------------------
grazie mille a tutti, purtroppo la mia limitata conoscenza di questo sw mi limita veramente. Oggi stesso provo a raperire info e poi vi faccio sapere. GRazie di nuovo
----------------------------------------
================================================================================
Problemi con il FTP Put File
================================================================================
AUTORE: 706
DATA :21/01/2009 - 18:06:17
----------------------------------------
Ciao a tutti.
Vi pongo un problema un pò enigmatico. Vi spiego: L'applicazione che ho creato serve per comandare ed acquisire dati di un'antenna radar meteorologica. Il funzioamento del'applicazione in termini geneali è di:
1)inizializzo tutti i canali di trasmissione sia di ricezione che di trasmissione.
2) Trasmissione ftp di un file verso il server in modo da fargli capire che il radar inizia un'acquisione
3) Pilotaggio e impostazione dell'antenna per acquisizone dati
4) acquisizione dati dal radar
Più o meno il programma fa queste operazioni. Il problema nasce qualdo viene innescata la trasmissione ftp verso il server quando non sono connesso con la rete ed in particolare nella posizone in cui effettuo la trasmissione ftp. Spiego:
Nel caso in cui la trasmissione ftp (settata con modalità passiva e non attiva) viene effettuata dopo i settaggi dei canali di rx e tx, l'applicativo aspetta i 25 secondi di prova trasmissione ftp, non ci riesce e quindi segnala errore ftp, a questo punto pilota l'antenna e aspetta la ricezione dei dati dal Radar. Ma a questo punto non ricevo niente!!
Se effettuo la trasmissione ftp prima del settaggio dei canali di tx e rx, aspetta 25 secondi, mi restituisce errore ftp, pilota l'antenna e riceve i dati dal radar in modo corretto.
Riassumendo, se imposto la trasmissione ftp prima del settaggio canali..OK, se la faccio dopo...NIENTE.
Sapete dirmi perchè? C'è qualche conflitto con le porte? Problema di firewall in quanto non so non si aspetta che arrivano i dati da quella porta e lui blocca?
In particolare è errore FTP Read .
Grazie
Francesco
----------------------------------------
AUTORE: 706
DATA :21/01/2009 - 18:21:57
----------------------------------------
Salve..aggiungo che il codice dell'errore è il numeo 1 che a quanto ne so non è prvisto dalla lista degli errori legati all'FTP. Mah!!
Ciao e grazie ancora
Francesco
----------------------------------------
AUTORE: 645
DATA :22/01/2009 - 10:10:40
----------------------------------------
Scusa l'ignoranza... Cosa sono i canali tx e rx?
Quando dici che setti il valore di questi canali cosa succede esattamente?
----------------------------------------
AUTORE: 706
DATA :22/01/2009 - 10:52:35
----------------------------------------
Ciao,
quando dico canali tx e rx intendo i canali di trasmissione e ricezione. Mi viene da pensare che, per quanto ne so di ftp, se la trasmissione ftp non va a buon fine, dopo che sono stati settati i canali di trasmissione e ricezione e quindi "penso" le porte utilizzate dal mio aplicativo per scambiare i dati sia in ingresso che in uscita con l'esterno, il pc permetta ugualmente la trasmissione dati in uscita (fatta dal client verso il server) per il controllo del radar ma il firewall non essendoci stata autoizzazione dal cleint d ricevere i dati dal server, blocchi i dati di precipitazine provenienti dal Radar server. E' un'ipotesi ma non so.
A voi è capitato di non ricevere dati da uno strumento perchè prima della ricezione avete fatto una trsmissione ftp che non è andata a buon fine?
Ciao
----------------------------------------
AUTORE: 645
DATA :23/01/2009 - 09:51:17
----------------------------------------
Ho visto l'immagine del post viewtopic.php?f=1&t=3885 ... La porta FTP che utilizzi è corretta?
Per raggiungere lo spazio FTP vai in internet o stai utilizzando un sistema in rete locale che si comporta come server FTP?
In entrambi i casi sei sicuro che non ci siano regole (più che sul firewall direi sul server, sul router, sul proxy...) che ti impediscono la comunicazione con lo spazio FTP?
Non so... sono tutte ipotesi...
----------------------------------------
AUTORE: 1078
DATA :23/01/2009 - 14:10:19
----------------------------------------
Aggiungo una domanda che dovresti farti oltre a quelle che ti ha suggerito Magic, hai le autorizzazioni necessarie sul server per lavorare con trasmissioni FTP?
----------------------------------------
AUTORE: 706
DATA :27/01/2009 - 14:42:50
----------------------------------------
Grazie a tutti per la risposta.
Il fatto è che se la connessione (intendo i cavi di rete che è una LAN) sono connessi in modo corretto l'applicazione funziona bene e intendo sia la parte di trasmissione ftp client-server che la fase di pilotaggio antenna e ricezione dati dall'antenna. Qurllo che non capisco è cosa possa cambiare nel porre il subvi di trasmissione ftp prima o dopo il settaggio dei canali di trasmissione e ricezione dati all'antenna. Nel caso in cui, come ho scritto precedentemente, il sub lo metto prima di tutto il settaggio dei canali, questo anche nel caso di un errore ftp e quindi di rete "scollegata", l'applicativo va ok. Nel caso in cui il subvi lo metto dopo che ho settato i canali di trasmissione e ricezione dati dell'antenna, nel caso di rete collegata, ok, nel caso di rete "scollegata" non riceve dati dall'antenna ma l'antenna viene pilotata e quindi riceve i dati nel canale di trasmissione (quando parlo di canale di trasmissione intendo dal PC all'antenna. Quando parlo di canale di ricezione intendo il canale con il quale l'antenna passa i dati al PC). Non capisco come la trasmissione ftp e un suo errore può influenzare la trasmissione dati PC-antenna e soprattutto influenzi solamente il canale di ricezione.
Grazie
Francesco
----------------------------------------
AUTORE: 645
DATA :28/01/2009 - 08:51:17
----------------------------------------
Ti chiedo qualche info in più perchè mi sa che non avevo capito bene come è fatto fisicamente il sistema.
Io intendevo una cosa del tipo:
a) collegamento con server FTP per scaricare dati
b) pilotaggio dell'antenna tramite comandi diretti (senza passare dallo spazio FTP).
Ma non sono sicuro sia così... Puoi dare qualche indicazione in più sui collegamenti?
Cioè, tutte le comunicazioni, sia per la lettura dei dati dall'antenna che per la movimentazione dell'antenna stessa, passando da FTP? Invii file particolari (di testo magari) al server, questo li interpreta e "capisce" se stai chiedendo dati o impostando azioni. Poi in base a questa distinzione si verifica qualcosa: nel primo caso ricevi un file con i dati letti, nel secondo l'antenna si muove?
----------------------------------------
AUTORE: 706
DATA :28/01/2009 - 09:05:46
----------------------------------------
Ciao magicBotolo,
il pilotaggio e l'acquisione dati dell'antenna e la comunicazione ftp con il server sono due cose separate.Spiego:
1- Pilotaggio antenna e acquisizione dati avvengono tramite collegamento PC antenna interfacciato con un dispositivo avionico, quest'ultimo collegato al PC tramite porta USB da un lato e collegato con l'antenna mediante cavo con pin associati dall'altro. La comunicazione PC antentenna avviene tramite input e output nel PC (Client) con porta USB quindi.
2- La comunicazione Client - Server avviene tramite protocollo ftp. Il client invia un file testuale per comunicare al server che in quel momento l'antenna sta per inziare un'acquisizione. Il file testuale è vuoto ed ha un nome che il server interpreta come inizio acquisizione. Tutto qui.
Spero di averti chiarito un pò di dubbi. La mia domanda rimane sempre : cosa centra e come può influire la comunicazione ftp con lo scambio dei dati PC antenna? Occupazione di risorse?..controllato Task manager niente di strano.. stessa porta di scambio dati tra dati antenna e comunicazione ftp? sembra strano..mah.. il mistero continua..
Ciao e grazie.
Francesco
----------------------------------------
AUTORE: 645
DATA :28/01/2009 - 12:08:50
----------------------------------------
[quote="volterra79":cxoyjlka]...cosa centra e come può influire la comunicazione ftp con lo scambio dei dati PC antenna? Occupazione di risorse?..controllato Task manager niente di strano.. stessa porta di scambio dati tra dati antenna e comunicazione ftp? sembra strano..mah.. il mistero continua...[/quote:cxoyjlka]
Mi sembra strano che le due comunicazioni possano disturbarsi; una avviene su porta USB e l'altra vie Internet o collegamento LAN (immagino... se non è così correggimi).
Direi che potrebbe essere il VI che ha qualcosa che non funziona... Puoi postare l'immagine del Block Diagram?
[quote="volterra79":cxoyjlka]...Nel caso in cui la trasmissione ftp (settata con modalità passiva e non attiva) viene effettuata dopo i settaggi dei canali di rx e tx, l'applicativo aspetta i 25 secondi di prova trasmissione ftp, non ci riesce e quindi segnala errore ftp, a questo punto pilota l'antenna e aspetta la ricezione dei dati dal Radar. Ma a questo punto non ricevo niente!!
Se effettuo la trasmissione ftp prima del settaggio dei canali di tx e rx, aspetta 25 secondi, mi restituisce errore ftp, pilota l'antenna e riceve i dati dal radar in modo corretto...[/quote:cxoyjlka]
Potrebbe esserci un problema di condizioni o di flusso dei dati nel programma. Potrebbe essere che posizionando il subVI di trasmissione dopo la configurazione dei canali c'è qualcosa che modifica un riferimento o magari non viene inizializzata una variabile. Non so... se puoi posta l'immagine così vediamo!
----------------------------------------
AUTORE: 1078
DATA :28/01/2009 - 15:16:11
----------------------------------------
Sono d'accordo anch'io con Magic. Visto che come hai spiegato i collegamenti HW sono diversi e le comunicazioni alle utenze "viaggiano" su protocolli differenti, ci deve essere qualcosa di errato nel SW di comando. Prova a postare il VI, noi potremmo vedere un'errore che a te sfugge. Di solito capita così!
----------------------------------------
================================================================================
file eseguibile labview
================================================================================
AUTORE: 2544
DATA :22/01/2009 - 11:19:34
----------------------------------------
Salve,
volevo chiedere se qualcuno mi sa dire se c'è un modo per ottenere un progetto labview a partire dal suo eseguibile.
Grazie.
Giuseppe
----------------------------------------
AUTORE: 660
DATA :23/01/2009 - 11:15:29
----------------------------------------
Non vorrei proprio renderti infelice, ma c'è un solo modo:
fai funzionare l'eseguibile, fino a quando non ne conosci tutti i segreti e poi apri un nuovo progetto e te lo ricrei uguale uguale; magari con qualche opzione in più.
Scherzi a parte
non si può fare il reverse engineering di un eseguibile LV per riottenere i suoi sorgenti.
Max
----------------------------------------
================================================================================
Error code = 1
================================================================================
AUTORE: 706
DATA :22/01/2009 - 14:56:21
----------------------------------------
Ciao a tutti,
vi scrivo perchè non capisco a cosa si riferisce l'errore di codice=1 rifrito ad un errore di invio ftp.
Allego immagine con messaggio di errore che si riferisce al vi FTP Put File.
Il tipo di trasferimento ftp è non anonimo, passivo e binario
Grazie a tutti.
Francesco
----------------------------------------
AUTORE: 1078
DATA :23/01/2009 - 10:33:44
----------------------------------------
Ciao Volterra,
Normalmente l'errore 1 (Invalid parameter input) viene restituito quando si passa ad una funzione un parametro non valido. Prova a ricontrollare tutti i parametri che passi alla funzione Put_File dell'FTP.
Altrimenti posta il codice che vediamo di risolvere il problema insieme.
Buona giornata!
----------------------------------------
================================================================================
Integrazione database SQL
================================================================================
AUTORE: 2512
DATA :22/01/2009 - 16:13:11
----------------------------------------
Salve a tutti.
Sto creando un'applicazione che da LabView accede a delle informazioni su di un database. Sto seguendo la vostra guida proposta in questo sito. Ho effettuato le prime operazioni passo passo ed ho incontrato difficoltà già nell'inserimento dell'"oggetto" ADODB._Connection.
1) L'uscita dell'oggettto "Automation Open" (ho selezionato quello corretto? l'icona è la stessa) è diversa da quella in figura. Dalla guida esce una string (rosa) mentre a me esce un'error out (giallo-nero). E' lo stesso?
2) Non c'è comunicazione col database (escluso il firewall) e dà un errore sconosciuto.
Vi posto, per maggiore chiarezza, il frammento che sto facendo. E' solo l'inizio, ma forse potete già correggermi.
Vi prego di darmi una mano! Grazie in anticipo.
----------------------------------------
AUTORE: 645
DATA :23/01/2009 - 09:54:32
----------------------------------------
In che senso solo il firewall comunica con il database?
Hai installato il server SQL adatto e l'hai messo in esecuzione?
Riesci ad accedere al database tramite i programmi propri del linguaggio SQL che stai utilizzando?
Scusa le domande ma sono le cose iniziali che ogni tanto mi perdo via anche io...
----------------------------------------
AUTORE: 2512
DATA :23/01/2009 - 12:01:49
----------------------------------------
In che senso solo il firewall comunica con il database?
[b:c3g1sa33]Nel senso che ho liberato la porta che utilizza il database (se è necessario)[/b:c3g1sa33]
Hai installato il server SQL adatto e l'hai messo in esecuzione?
[b:c3g1sa33]Il server è installato correttamente ed è in esecuzione (visto col traymonitor). Ho utiizzatto la versione del server mysql 5.1, e la compatibilità ODBC 3.51 come nella guida[/b:c3g1sa33]
Riesci ad accedere al database tramite i programmi propri del linguaggio SQL che stai utilizzando?
[b:c3g1sa33]Si. Provato col clasico query browser[/b:c3g1sa33]
Grazie mille, ti prego di aiutarmi.
----------------------------------------
AUTORE: 2512
DATA :23/01/2009 - 12:31:58
----------------------------------------
Problema risolto! Finalmnete...l'errore era nella scelta dell'ADODB.
Ora però ne sorge un'altro XD
Ho innescato la connessione...ma come faccio a leggere la stringa? Dove seleziono il "_Recordstet" (Getstring e close) presenti nella guida?
Non compaiono con la procedura dei metodi con cui ho selezionato execute e close.
Grazie mille!
----------------------------------------
AUTORE: 2512
DATA :26/01/2009 - 08:54:28
----------------------------------------
Ho letto la tua utilissima guida "Comunicazione tra LabView e i Database". Potresti per favore mandarmi direttamente il file labview completo? cioè quello che compare nella Figura 16.
Al momento non riesco a "convertire" la stringa che mi restituisce la query in una matrice.
Purtroppo sono abbastanza ingnorante in questo campo
Ti ringrazio in anticipo.
p.s. Ti prego, sono veramente in alto mare
----------------------------------------
AUTORE: 645
DATA :26/01/2009 - 12:31:46
----------------------------------------
Puoi mandare un'immagine del tuo Block Diagram?
----------------------------------------
AUTORE: 2512
DATA :29/01/2009 - 11:15:03
----------------------------------------
Magic grazie per la risposta.
Finalmente ho risolto! Grazie mille per la disponibilità!!
----------------------------------------
AUTORE: 645
DATA :29/01/2009 - 15:20:50
----------------------------------------
Oh beh... non ho fatto molto...
----------------------------------------
================================================================================
Come caricare simboli su stringhe????
================================================================================
AUTORE: 2435
DATA :22/01/2009 - 16:39:45
----------------------------------------
Ciao a tutti...
dovrei scrivere delle stringhe usando anche simboli greci..
come posso fare?????
----------------------------------------
AUTORE: 2435
DATA :23/01/2009 - 08:24:56
----------------------------------------
OK....basta modificare il font lettera per lettera e usare il font Symbol...
ma diventa troppo macchinoso in presenza di una 50ina di campi.
----------------------------------------
================================================================================
stato pulsante
================================================================================
AUTORE: 2516
DATA :23/01/2009 - 09:48:01
----------------------------------------
salve a tutti volevo chiedere una informazione su un modo , se esiste, per cambiare lo stato di un interruttore senza mouse. vi spiego ho una applicazione con dei pulsanti che attivano delle funzioni, vorrei che se l'utente attiva una di questa mediante un pulsante in un momento in cui non si può, il pulsante deve tornare allo stato vecchio. Attivo il pulsante ON -> voglio cambiare ad OFF..
Grazie anticipatamente per l'aiuto
----------------------------------------
AUTORE: 1050
DATA :23/01/2009 - 10:02:36
----------------------------------------
Ci sono vari modi: nel tuo caso una soluzione "pulita" potrebbe essere disabilitare il pulsante anzichè agire sul valore. Seleziona il pulsante sul panel, tasto dx, seleziona Crea->PropertyNode->Disabled; imposta questo valore a 0 per abilitarlo
e permettere all'utente il suo utilizzo, imposta invece 2 quando vuoi impedirne la pressione e quindi l'attivazione.
Ricorda all'inizio del programma di impostarlo nello stato di partenza desiderato.
ciao
----------------------------------------
AUTORE: 2516
DATA :23/01/2009 - 10:06:42
----------------------------------------
il fatto è che non posso disabilitarlo del tutto ma solo farlo ritornare al suo posto.. per il mentre incomincio a provare con il property node ... ci sono altri modi?
grazie mille
----------------------------------------
AUTORE: 2516
DATA :23/01/2009 - 10:08:51
----------------------------------------
il fatto è che non posso disabilitarlo del tutto ma solo farlo ritornare al suo posto.. per il mentre incomincio a provare con il property node ... ci sono altri modi?
grazie mille
----------------------------------------
AUTORE: 1078
DATA :23/01/2009 - 14:04:54
----------------------------------------
Se devi cambiare il valore del pulsante programmaticamente ha due strade: la prima è quella di usare i property node, imposti la proprietà <Value> sul valore desiderato, impostando questa proprietà cambi il valore del pulsante; la seconda è con le local variable (si creano così: tasto destro sull'icona del pulsante dal block diagram --> Create --> Local Variable) puoi impostarle su read o su write a seconda se devi leggere o scrivere il valore del pulsante (per impostare una variabile su read - write è la posizione di default alla creazione - tasto destro del mouse sulla variabile creata --> change to read).
----------------------------------------
AUTORE: 2516
DATA :23/01/2009 - 14:12:58
----------------------------------------
ok grazie mille per l'aiuto..ora provo
----------------------------------------
================================================================================
copia ed incolla da un array ad un altro
================================================================================
AUTORE: 2484
DATA :23/01/2009 - 11:44:28
----------------------------------------
Salve a tutti, avrei la necessità di inserire nel mio VI un comando che con il semplice click di un pulsante riesca a copiare i valori di un array su un altro array che uso come riferimento per tarare il mio sistema di acquisizione, un comando che in poche paole riesca a sostituire il "copy and paste" che può anche essere effettuato manualmente durante l'esecuzione del VI... qualcuno può aiutarmi?
grazie in anticipo
----------------------------------------
AUTORE: 1078
DATA :23/01/2009 - 12:45:36
----------------------------------------
Dovresti innanzitutto inserire una event structure, configurare un evento clieck per il tuo array o comando e lì inserire il codice che gestisca il compia incolla!
una cosa di questo tipo... (salvata con Labview 8.5)
----------------------------------------
AUTORE: 2484
DATA :23/01/2009 - 14:05:05
----------------------------------------
potresti salvarmi il file per labview 8.2? o almeno darmi un' immagine del VI grazie mille!!!
----------------------------------------
AUTORE: 1078
DATA :26/01/2009 - 09:54:46
----------------------------------------
Eccolo....
----------------------------------------
AUTORE: 2484
DATA :02/02/2009 - 14:05:43
----------------------------------------
grazie mille
----------------------------------------
================================================================================
Attesa Buffe da seriale
================================================================================
AUTORE: 2516
DATA :23/01/2009 - 14:52:39
----------------------------------------
Salve ho un piccolo problema... Sto tirando su un software che legge dei valori di pressione, temperatura e radiazioni solari.. I dispositivi per le acquisizioni sono NI tutti tranne quello per la pressione che è uno strumento particolare per fare il vuoto e permette di leggere i valori di 2 sensori tramite una porta seriale con dei comandi .Il problema è semplice invio un comando (Es: PR1) leggo l'ACK , invio ENQ e poi leggo il valore. Nel momento in cui scrivo un comando sulla seriale non faccio altro che ritardare l'esecuzione della lettura di 100ms e poi mi metto in un while in attesa che il buffer si riempe di un certo numero di byte. 3 per l'ACK 15 per il VALORE. A volte capito che questo stupido oggetto si blocca e non mi riempe il buffer quindi mi si pianta tutto in while di attesa del riempimento. Io vorrei poter uscire dal quel maledetto ma non so come.
Avete qualche soluzione da consigliarmi?? Time out, numer di cicli o altro???
GRazie mille per l'aiuto...
----------------------------------------
AUTORE: 129
DATA :25/01/2009 - 22:47:14
----------------------------------------
Non usare il while ma usi il byte at serial port da mandare iun ingresso al bytecount della read.
Puoi pulire il buffer prima di interrogarlo con questo stesso metodo, quindi fai la tua query con una write e quindi leggi tutto il buffer con byte at serial port.
----------------------------------------
AUTORE: 645
DATA :26/01/2009 - 12:36:22
----------------------------------------
Molto meglio con il Byte at Serial Port... non puoi aspettare un po' di più anzichè 100ms in modo che lo strumento abbia tempo di rispondere?
Immagino che tu già faccia così: blocco di scrittura, blocco di attesa, blocco di lettura dallo strumento.
La parte centrale (attesa) deve essere tarata... di solito parti con un intervallo di tempo alto e poi riduci fino a ottenere il giusto compromesso tra tempo da aspettare e velocità del programma.
Per controllare se il buffer è pieno degli "n" caratteri che vuoi scaricare usi un ciclo temporizzato?
Io farei così: elimina la fase di controllo del buffer, aspetta un po' di tempo (fai delle prove) e leggi tutto.
Puoi inserire un controllo sulla lunghezza della stringa letta per essere sicuro che hai tanti caratteri quanti ne servono.
----------------------------------------
AUTORE: 2516
DATA :27/01/2009 - 09:35:45
----------------------------------------
si in effetti io già leggo con byte@port e tra un blocco e l'altro aspetto circa 100ms e in più ho aggiunto nel ciclio di lettura un timeout perchè a volte mi si blocca lo strumento... per il momento sembra funzionare speriamo beneeeee....
grazie comunque per l'aiuto..
----------------------------------------
AUTORE: 645
DATA :27/01/2009 - 13:43:29
----------------------------------------
Hai qualche blocco per gestire gli errori nello strumento?
Potresti pensare che in caso di blocco un segnale di riavvio può essere utile. Oppure se non puoi tollerare il riavvio puoi interrompere la prova. Oppure segnalare l'errore...
----------------------------------------
================================================================================
database
================================================================================
AUTORE: 2545
DATA :23/01/2009 - 15:55:45
----------------------------------------
[color=#0000FF:dzjv8m0n]Salve a tutti, ho un problema e spero che qualcuno riesca a risolverlo. Ho installato Labview 8.5 e devo farlo comunicare con un database (MySql). Sul mio pc ho installato easyphp. Basta quello o devo anche scaricare ed installare MySql Server?
In quest'ultimo caso, come devo configurare il tutto? Grazie[/color:dzjv8m0n]
----------------------------------------
AUTORE: 129
DATA :25/01/2009 - 22:41:40
----------------------------------------
easy php serve per installare web service apache - php e mysql...
Per comunicare labview-mysql devi scaricare il driver odbc di mysql
Ovviamente devi installare mysql ma immagino tu lo abbia già fatto con easy php.
Per dettagli tecnici su librerie etc.
ti consiglio :
[url=http://www.ilvg.it/forum/download/file.php?id=946:sx0tsdpw]comunicazione tra labVIEW e i database[/url:sx0tsdpw]
[url=http://www.ilvg.it/forum/download/file.php?id=299:sx0tsdpw]DataBase e labVIEW[/url:sx0tsdpw]
----------------------------------------
AUTORE: 129
DATA :25/01/2009 - 22:42:41
----------------------------------------
easy php serve per installare web service apache - php e mysql...
Per comunicare labview-mysql devi scaricare il driver odbc di mysql
Ovviamente devi installare mysql ma immagino tu lo abbia già fatto con easy php.
Per dettagli tecnici su librerie etc.
ti consiglio :
[url=http://www.ilvg.it/forum/download/file.php?id=946:gxowhjmr]comunicazione tra labVIEW e i database[/url:gxowhjmr]
[url=http://www.ilvg.it/forum/download/file.php?id=299:gxowhjmr]DataBase e labVIEW[/url:gxowhjmr]
----------------------------------------
================================================================================
Property NODE -> Read all Sample aviable
================================================================================
AUTORE: 2516
DATA :27/01/2009 - 20:35:10
----------------------------------------
Salve a tutti,
qualcuno sa come leggere tutti i campioni da un buffer di una daq con le property node dell'oggetto READ?
sto provando in tutti in modi ma non ci riesco ovvero inizializzo il dispositivo poi imposto il property node, leggo il buffer ma non va poichè man mano che passsa il tempo mi ritrovo che nel buffer(tramite il property node aviable sample) i campioni aumentano sempre.. Teoricamente non dovrebbero rimanere a 0 se leggo sempre tutti i campioni??
Grazie mille per l'aiuto del forum.....
----------------------------------------
AUTORE: 1078
DATA :29/01/2009 - 10:50:38
----------------------------------------
Per aiutarci a capire e quindi riuscire ad aiutarti, potresti postare il VI o l'immagine di queso?
Grazie.
----------------------------------------
================================================================================
Salvare una matrice su un file esterno
================================================================================
AUTORE: 2512
DATA :29/01/2009 - 11:24:08
----------------------------------------
Salve.
Mi ripropongo con un altro problema.
Ho una matrice (più di una in realtà) che ha in ogni campo delle informazioni sottoforma di stringa. Di solito è formata da una sola riga, ma a volte ha più righe (appunto n x m).
Il punto è che non so come salvarla esternamente ad un file, txt ad esempio, visto che non è un vettore. Vorrei evitare di scinderla in più vettori.
L'ideale sarebbe poter salvare ogni riga di questa matrice come "colonna" del file. In pratica come quando si salva un "Measurement File".
ES: Ho una matrice che ha caricato queste informazioni da un DataBase che ha i seguenti campi:
Squadra, Colori, Sede, Patrimonio
La matrice ha letto i seguenti dati
[b:1eurqkf6]Riga 1[/b:1eurqkf6] - Milan, R-N, Milano, 100€
[b:1eurqkf6]Riga 2[/b:1eurqkf6] - Napoli, A, Napoli, 10€
[b:1eurqkf6]Riga 3[/b:1eurqkf6] - Juventus, B-N, Torino, 50€
Vorrei salvare un report in base a queste informazioni, del tipo.
Squadra |Milan |Napoli |Juventus
Colori R-N |A |B-N
Sede Mlano |Napoli |Torino
Patrimonio 100€ |10€ |50€
Ovviamente formattata con la giusta tabulazione (tipo meas. file)
Spero di non avere omesso nulla. Vi ringrazio in anticipo, non so nemmen da dove iniziare.
----------------------------------------
AUTORE: 43
DATA :29/01/2009 - 14:10:49
----------------------------------------
[attachment=0:1w03vl7o]x_skiokka.vi[/attachment:1w03vl7o]
----------------------------------------
AUTORE: 2512
DATA :29/01/2009 - 14:37:14
----------------------------------------
Oddio! Funziona esattamente come volevo!
Grazie mille davvero.
Ultima cosa: Se volgio delimitare con più caratteri di tablatura, come procedo? Cosa scrivo nel campo [b:276a3gwb]Delimiter[/b:276a3gwb] del blocco [b:276a3gwb]Array to spreadsheet string[/b:276a3gwb]?
Eventualmente, come si può esportare il tutto in file excel (ogni elemento nella colonna giusta)?
----------------------------------------
AUTORE: 43
DATA :29/01/2009 - 16:33:19
----------------------------------------
[quote="skiokka.rosa":1ubj1han]...Ultima cosa: Se volgio delimitare con più caratteri di tablatura, come procedo?[/quote:1ubj1han]
Prima di tutto vorrei capire cosa intendi x "più caratteri di tablatura":
per caso un separatore fra colonna 1 e colonna 2 diverso da quello fra colonna 2 e colonna 3?
oppure i separatori della prima riga diversa da quelli usati nella seconda
oppure usare un carattere separatore diverso da tab
oppure usare un gruppo di caratteri separatori
[quote="skiokka.rosa":1ubj1han] Cosa scrivo nel campo [b:1ubj1han]Delimiter[/b:1ubj1han] del blocco [b:1ubj1han]Array to spreadsheet string[/b:1ubj1han]?[/quote:1ubj1han]
metodo sperimentale: collegaci una stringa all'ingresso [b:1ubj1han]Delimiter[/b:1ubj1han] e vedi che succede alla stringa in uscita aggiungendo un indicatore.
[quote="skiokka.rosa":1ubj1han]Eventualmente, come si può esportare il tutto in file excel (ogni elemento nella colonna giusta)?[/quote:1ubj1han]
il file siffatto è "importabile" in un qualunque SW "foglio elettronico" mediante apposita funzione di import.
Altro non farei perchè si sono già spesi troppi post in questo forum per parlare di cacca-ecsel.
bye
----------------------------------------
AUTORE: 2512
DATA :29/01/2009 - 17:12:24
----------------------------------------
[quote:30ur9pr6]Prima di tutto vorrei capire cosa intendi x "più caratteri di tablatura":
per caso un separatore fra colonna 1 e colonna 2 diverso da quello fra colonna 2 e colonna 3?
oppure i separatori della prima riga diversa da quelli usati nella seconda
oppure usare un carattere separatore diverso da tab
oppure usare un gruppo di caratteri separatori[/quote:30ur9pr6]
Intendevo semplicemente chiedere come si mettono due o tre tab consecutivi (per tutte le colonne)
[quote:30ur9pr6]metodo sperimentale: collegaci una stringa all'ingresso Delimiter e vedi che succede alla stringa in uscita aggiungendo un indicatore. [/quote:30ur9pr6]
Quando in ingresso al delimiter mo messo la stringa costante [b:30ur9pr6]TAB[/b:30ur9pr6], in uscita, nel file txt, trovavo i valori dei campi di ogni riga spaziato dalla scritta "tab". Praticamente non compariva lo spazio vuoto ma una scritta.
[quote:30ur9pr6]il file siffatto è "importabile" in un qualunque SW "foglio elettronico" mediante apposita funzione di import.
Altro non farei perchè si sono già spesi troppi post in questo forum per parlare di cacca-ecsel.
bye[/quote:30ur9pr6]
Ho risolto lasciando l'estensione *.csv e mettendo il punto e virgola come delimitatore
----------------------------------------
AUTORE: 43
DATA :29/01/2009 - 17:24:04
----------------------------------------
[quote="skiokka.rosa":jbo7ibce]...Intendevo semplicemente chiedere come si mettono due o tre tab consecutivi (per tutte le colonne)
...Ho risolto lasciando l'estensione *.csv e mettendo il punto e virgola come delimitatore[/quote:jbo7ibce]
1) creare una costante stringa collegata all'ingresso "Delimiter"
2) tasto dx del mouse sulla costante stringa ['\' Code Display] invece di [Normal]
3) digitare nella costante stringa (che appare vuota) il testo "\t\t\t"
4) rigenerare il file
----------------------------------------
AUTORE: 2512
DATA :29/01/2009 - 22:01:14
----------------------------------------
Grazie mille.
Sei stato gentilissimo...
----------------------------------------
================================================================================
client voip sip
================================================================================
AUTORE: 838
DATA :29/01/2009 - 14:46:45
----------------------------------------
ciao a tutti!
devo integrare in labview un client voip sip, che comunica con altri pc locali e magari anche con funzioni voip tipo skype/similare
esiste già qualcosa? conoscete librerie/activex che possono tornare comodo?
grazie
----------------------------------------
================================================================================
Creazione Splash Screen
================================================================================
AUTORE: 2512
DATA :29/01/2009 - 17:33:57
----------------------------------------
Salve ragazzi,
Volevo proporvi un quesito. Era mia intenzione fare uno splash screen con barra di caricamento per programmino che sto creando il labview. Ne ho trovato uno bello e fatto online. Il problema è che questo mi apre tutti i file *.vi che trova nella cartella. A me ne serve uno che apre solo il file main.vi. E' probabile che ciò possa essere fatto semplicemente apportando qualche leggera modifica al programma che troverete nel link sottostante, però, essendo parecchio ignorante, non avendo capito bene come funziona il programma, non sono nemmeno riuscito a modificarlo. Nella cartella che troverete nel file compresso ho aggiunto un file "errore.txt" in modo da generare l'errore che visualizzo io quando copio il file SplashScreen.vi nella mia cartella. Praticamente, il mio SplashScreen.vi ideale dovrebbe aprirmi solo il file main.vi e non tutti gli altri file presenti nella cartella.
Volevo sapere se qualche anima pia su questo forum potesse dargli uno sguardo.
Ringrazio tutti per la pazienza
http://rapidshare.com/files/191201923/SplahScreen.rar
p.s. Ho messo il file su questo link perchè il forum non mi ha permesso di uploadare un file di 350kb (limite massimo 256kb)
----------------------------------------
AUTORE: 645
DATA :30/01/2009 - 10:13:46
----------------------------------------
Penso che la via più semplice per caricare solo il VI che ti interessa sia indicare all'inizio dello Splash Screen il riferimento diretto al suddetto VI, come costante o come controllo con la possibilità per l'utente di scegliere quale VI aprire.
Fai riferimento agli esempi per l'apertura di VI tramite VI server, oppure cerca nel forum.
Al posto del "List Directory" devi passare al blocco "Open VI Reference" il path del VI che vuoi aprire.
Però è anche vero che l'apertura di un VI (normalmente) non necessita di una barra di caricamento perchè la logica è creare VI leggeri suddivisi, eventualmente, in SubVI.
Piuttosto si può pensare ad uno Splash Screen "di saluto", un pannellino che si apre prima del VI principale e indica all'utente cosa sta per succedere (descrizione del programma, lista comandi, operazioni eseguite...).
PS: il VI che hai allegato è molto bello!!!
----------------------------------------
AUTORE: 301
DATA :30/01/2009 - 15:59:40
----------------------------------------
Potresti anche fare una cosina del genere.....
----------------------------------------
AUTORE: 645
DATA :30/01/2009 - 16:33:01
----------------------------------------
Bello! Non ho mai usato l'effetto trasparenza sul FP!!
----------------------------------------
AUTORE: 301
DATA :30/01/2009 - 18:58:35
----------------------------------------
Eh, ci sono tante cose belline a livello grafico......sto vedendo anche (a tempo perso) di fare una sorta di visualizzatore di immagini cambiando lo sfondo del FP..veramente comodo
----------------------------------------
AUTORE: 1441
DATA :31/01/2009 - 10:30:06
----------------------------------------
E' possibile avere l'ultimo file zippato ma in versione 8.5?
grazie
----------------------------------------
AUTORE: 2512
DATA :03/02/2009 - 10:26:38
----------------------------------------
Purtroppo ho solo la versione 8.6, mi spiace.
----------------------------------------
================================================================================
Compilare form su pagina web da labview
================================================================================
AUTORE: 2550
DATA :31/01/2009 - 00:28:15
----------------------------------------
Ciao a tutti.
Sono nuovo del forum e uso labview da meno di 8 mesi. Ecco il mio problema.
Mi ritrovo a dover compilare dei campi di inserimento (form) su una pagina web con delle informazioni che sono fornite ad un vi dall'utente.
Sono riuscito a relizzare un vi che in parte fa quello che voglio modificando un esempio trovato sul sito national, ma utilizza un metodo un po maccaronico. Mi spiego meglio:
in pratica utilizzo la proprietà activeelement per individuare il primo campo e scrivere il valore al suo interno; poi tramite la funzione SendKey viene simulata la pressione del tasto TAB in modo da far spostare il cursore sul nuovo campo e inserire l'altro valore. dopodichè viene simulata la pressione del tasto ENTER per confermare i dati.
quello che volevo sapere è se esisteva un modo più diretto per individuare e accedere al campo , ad esempio tramite il suo nome (visto che questo è specificato nel codice sorgente della pagina) o tramite il suo indice (o tabindex nel caso di ebay), per poi riempirlo utilizzando i dati forniti dall'utente.
Spero di aver esposto in modo comprensibile il mio problema
Allego il vi che ho realizzato
grazie a tutti fin da ora per le risposte
DVD
----------------------------------------
================================================================================
Un treno di impulsi....sempre in ritardo
================================================================================
AUTORE: 1441
DATA :31/01/2009 - 10:19:57
----------------------------------------
Ho dato un tocco poetico al mio topic, ma avrei una domanda seria da fare, anche se penso che la soluzione sia abbastanza semplice per gli esperti del forum.
Devo generare un treno di impulsi di onda quadra (sarebbe meglio dire di picchi dato che la fase on dell'onda quadra deve durare 100 micro secondi). La durata del treno di impulsi è variabile in basse alle scelte dell'utente e anche la frequenza è selezionabile dalll'utente (diciamo fino a max 50Hz). L'ampiezza dell'impulso è anche quella una variabile che l'utente deve selezionare. Lui deve scegliere sia l'ampiezza di partenza che quella d'arrivo per generare un treno di impulsi la cui ampiezza cresce, al trascorrere del tempo.
Io avevo pensato di calcolare quanti impulsi devono essere generati in quell'intervallo di tempo e a quella frequenza e generare ad ogni ciclo un solo impulso con l'ampiezza calcolata e ripetere il ciclo calcolando il tempo che dee trascorrere tra un picco e l'altro. Il problema è che con la mia DAQCArd-6024E non riesco a realizzare questa cosa che mi sembra tanto semplice. Mi date una mano?
Grazie in anticipo...
Per gli amministratori: sto iniziando a scrivere qulla cosa sulla wii quando il tempo me lo permette...abbiate pazienza che qualcosa produrrò...
----------------------------------------
================================================================================
acquisizione
================================================================================
AUTORE: 2545
DATA :02/02/2009 - 18:26:57
----------------------------------------
Salve a tutti, devo fare una tesina: creare una trasformata di fourier ( qualsiasi) col Simulink e poi tramite il SIT interfacciarla col Labview. Avrei bisogno di una brevissima guida passo passo....GRAZIE
----------------------------------------
AUTORE: 645
DATA :03/02/2009 - 14:21:19
----------------------------------------
Purtroppo (e dico purtroppo perchè mi piacerebbe provarlo) ho visto il SIT in opera ma non ho mai avuto la possibilità di smanettarci. Comunque mi pare che l'installazione del SIT ti porta ad avere una nuova voce tra i comandi raggiungibili dalla barra dei comandi di LabView, qualcosa per configurare il modello Simulink in modo da interfacciare il VI con le porte IN e OUT del modello (se non sbaglio).
Tramite una maschera dovresti poter poi decidere a quali controlli e a quali indicatori collegare le grandezze in gioco nel modello per poter comandare il tutto da LabView.
Alla fine ti ritrovi con il pannello frontale di LabView che può modificare i valori passati ad un modello Simulink che sta funzionando.
So di essere stato molto vago ma credo si tratti di una procedura del genere... Hai provato a cercare qualche manuale sul sito www.ni.com ?
----------------------------------------
================================================================================
problema con tdms read
================================================================================
AUTORE: 2235
DATA :02/02/2009 - 18:40:40
----------------------------------------
Buonasera
Non capisco come indicare in byte nella property node tdms file read da che punto del file tdms iniziare a leggere i dati
Ho dei file tdms che provengono da una acquisizione di double da un sistema DAQ con uso di tdms file write ma in alcuni file ho una parte iniziale con punti che vorrei tagliare.
Non so come tagliare ad esempio i primi 10 valori per ciascuno degli n canali acquisiti e registrati nel tdms file.
Non capisco che offset segnare. Come posso calcolarlo in byte
[attachment=0:3tb85ibj]ScreenHunter_01 Feb. 02 19.34.jpg[/attachment:3tb85ibj]
----------------------------------------
================================================================================
Riempire un Ring durante l'esecuzione
================================================================================
AUTORE: 2512
DATA :03/02/2009 - 10:25:47
----------------------------------------
Salve a tutti.
Come si intuisce nel titolo, ho un ring che può avere vari campi.
Vorrei sapere se si possono creare vari campi in questo ring (come si fa in proprietà -> column) durante l'esecuzione.
Tipo, clicco un bottone e mi riempe il mio ring con i campi che ho scelto.
Posto un esempio (che non gira) per far capire meglio cosa intendo.
Vi ringrazio in anticipo, siete davvero molto gentili.
Ciao!
----------------------------------------
AUTORE: 43
DATA :03/02/2009 - 13:33:42
----------------------------------------
[quote="skiokka.rosa":181fztrt]Salve a tutti.
Come si intuisce nel titolo, ho un ring che può avere vari campi.
Vorrei sapere se si possono creare vari campi in questo ring (come si fa in proprietà -> column) durante l'esecuzione.
Tipo, clicco un bottone e mi riempe il mio ring con i campi che ho scelto.
Posto un esempio (che non gira) per far capire meglio cosa intendo.
Vi ringrazio in anticipo, siete davvero molto gentili.
Ciao![/quote:181fztrt]
Ti voglio bene skiokka, però...
prima di postare un nuovo argomento cerca nel forum se è già stato trattato!!
Per es. se digito "ring" nell'apposito spazio in alto a dx e premo "Search", ottengo oltre 80 matches...
Non dico che devi leggerli tutti, ma per una banalità del genere...
Cmq si tratta di modificare la prorietà "strings"
vabbè... ciao.
----------------------------------------
AUTORE: 2512
DATA :03/02/2009 - 14:06:13
----------------------------------------
Anche io ti volgio bene, ma la cosa che cerco non l'ho trovata su questo forum (o non ho cercato bene).
Forse non hai capito il mio problema. Il fatto ceh generi uan stringa in uscita lo sapevo già.
Il guaio è che non so come impostare le colonne del ring. Cioè quando avvio il programma clicco un bottone e le colonne cambiano....L'esempio che ho allegato dovrebbe essere chiaro.
Vi prego aiutatemi!
----------------------------------------
AUTORE: 645
DATA :03/02/2009 - 14:16:40
----------------------------------------
Come ti ha indicato Paracarro devi modificare il Property Node "Strings": tu passi a questo nodo l'array con i valori che vuoi visualizzare nel Ring e il gioco è fatto!
----------------------------------------
AUTORE: 2512
DATA :06/02/2009 - 17:35:32
----------------------------------------
Sisi è giusto.
Occorre solo selezionare "Change to Write"
Grazie mille!
----------------------------------------
================================================================================
SIT Server
================================================================================
AUTORE: 2545
DATA :03/02/2009 - 18:51:35
----------------------------------------
Desidero sapere come configurare correttamente la porta del SIT Server. All'avvio di Matlab, a me, [b:eqgmp7ky]non[/b:eqgmp7ky] appare la stringa:
[i:eqgmp7ky]Starting the SIT Server on port 6011
SIT Server started[/i:eqgmp7ky]
Ho Matlab R2008a e Labview8.5.
----------------------------------------
================================================================================
acquisire dal power meter HP 8153A
================================================================================
AUTORE: 2552
DATA :03/02/2009 - 21:28:44
----------------------------------------
Salve a tutti,
visto il mio novello approccio con labview, sono nuovo di questo forum.
Ho bisogno di qualche dritta.
Vi descrivo i dati del problema:
ho un power meter HP 8153A da cui dover acquisire dati di attenuazione della fibra ottica.
Questo power meter può essere interfacciato tramite GPIB.
Ho a disposizione Labview 5.0.1. Lo so, è molto vecchio, ma di questo dispone l'azienda in cui lavoro.
Labview gira su un PC con windows 2000, al momento senza GPIB, ma domani sarà invece don GPIB.
1) Il primo problema sta qui: avrò sicuramente la GPIB montata sul PC, ma dove vado a reperire il driver?
2) come faccio a verificare, una volta installato il driver della GPIB, se questa funziona correttamente?
3) sul manuale del mio power meter vi sono solo istruzioni in Basic 4.0 (che non conosco assolutamente). Come faccio a comandare il power meter senza avere delle istruzioni in C++ (linguaggio usato in labview) e quindi come faccio ad acquisire i valori di attenuazione?
4) sapete dell'esistenza di esempi di programmazione di power meter tramite GPIB?
Vi chiedo infinitamente aiuto, visto che devo consegnare il progetto tra una settimana!!
----------------------------------------
AUTORE: 1050
DATA :05/02/2009 - 12:23:37
----------------------------------------
ciao,
qui [url:gozgqhbo]http://www.a0101.com/upfile/08153-90011.pdf[/url:gozgqhbo]trovi il manuale con i comandi GPIB (HP-IB) che devi usare; riguardo a come inviarli e vedere se lo strumento funziona puoi usare le vi di esempio in ..\Program Files\National Instruments\LabVIEW 8.6\vi.lib\Instr\_easyvisa.llb o _visa.llb.
I driver per la GPIB che ti servono NIVISA e NI488.2 sono sul CD di installazione del labview oppure li puoi scaricare da http://www.ni.com;
Ancora meglio qui puoi scaricarti proprio i driver per il tuo strumento:[url:gozgqhbo]http://sine.ni.com/apps/utf8/niid_web_display.model_page?p_model_id=885[/url:gozgqhbo]
morale: cerca quel che ti serve direttamente sul sito National.
ciao
----------------------------------------
================================================================================
array di cluster
================================================================================
AUTORE: 2501
DATA :04/02/2009 - 10:46:48
----------------------------------------
scusate la domanda banale, ma sono abbastanza inesperto: come si scrive in un array di cluster? in ogni cluster ho 8 elementi misti, io devo scrivere in uno di questi elementi. help! :s
----------------------------------------
AUTORE: 2501
DATA :04/02/2009 - 13:29:10
----------------------------------------
infatti era banale. risolto da sola grazie comunque
----------------------------------------
================================================================================
dimensione front panel
================================================================================
AUTORE: 2553
DATA :04/02/2009 - 13:21:56
----------------------------------------
Salve a tutti,
è il mio primo post quindi colgo l'occasione per complimentarmi dell'ottimo sito utile e ricco di notizie. Sono alla prima esperienza con labview quindi perdonatemi se le domande risultano troppo banali. Devo creare un applicazione per comunicare con un dispositivo esterno tramite seriale e poi creare l'exe per eseguirlo su di un'altra macchina. Creando il front panel ed esportandolo ho sempre le barre laterali di scorrimento. E' possibile creare un panel che prende l'intera dimensione dello schermo senza visualizzare le barre di scorrimento??
e poi come devo fare per inserire un'immagine di sfondo??
grazie a tutti
----------------------------------------
AUTORE: 482
DATA :05/02/2009 - 07:26:29
----------------------------------------
..ma ciao e benvenuto!
Per quanto riguard al'immagien di sfondo, semplicemente trascina un immagine sul pannello e poi ridimensionala ad HOC (potrebbe comparirti SOPRA a tutti gli altri controlli, vai nella barra in alto, dove ci sono i comandi di posizionamento e gli dici "move to back".
Per quanto riguard ainvece le barre laterali, devi semplicemente andare sull'icona in alto a destra del VI principale cole tasto destro e selezionare VI property.
A questo punto troverai diverse opzioni con cui sbizzarrirti tra cui anche le famose SHOW SCROLLBAR e varie altre. Giocaci un po' e vedi qual'e' la soluzione che desideri
----------------------------------------
AUTORE: 2553
DATA :05/02/2009 - 09:59:21
----------------------------------------
thanks
----------------------------------------
================================================================================
codice a barre
================================================================================
AUTORE: 1368
DATA :04/02/2009 - 21:15:36
----------------------------------------
ciao a tutti,
dovrei fare un sistema per memorizzare gli accessi tramite lettore a barre di badge.
cosa consigliate di usare con labview?? ce qualcosa di compatibile?? visto che è un applicazione molto semplice visto che devo mettere su db nome data e ora
vorrei qualcosa di compatibile in modo da non starci tanto tempo.
grazie a tutti
----------------------------------------
AUTORE: 482
DATA :05/02/2009 - 07:29:05
----------------------------------------
...dalla tua domanda, presumo che tu non abbia un lettore di codice a barre esterno, quindi l'unica cosa che mi viene in mente è quella di usare un sistema vision, pero' poi non so quanto semplice possa restare...dipende dalle tue competenze....
----------------------------------------
================================================================================
Problema con eseguibile
================================================================================
AUTORE: 2523
DATA :07/02/2009 - 10:42:57
----------------------------------------
Ciao a tutti,
vi scrivo per chiedervi di aiutarmi a risolvere il seguente problema.
Ho creato un VI che scambia dati con un sistema embedded via RS232.
Quindi ho avuto necessità di creare un eseguibile con l'application builder.
Fino qua nessun problema.
Quiando lancio l'esegubile, il VI parte già in uno stato di run. E' possibile fare in modo che
lanciando l'esegibile il VI si apra senza andare direttamente in eseguzione? Chiedo questo perchè
andando subito in run, il VI legge una COM non presente generandomi un errore dal quale non riesco più ad uscire.
Grazie anticipatamente.
Chobin
----------------------------------------
AUTORE: 2555
DATA :07/02/2009 - 21:02:06
----------------------------------------
Non puoi creare un eseguibile che lanciato non vada in run. Per risolvere il tuo problema puoi fare in modo che prima di configurare la seriale tramite una sub vi chiedi di selezionare la COM e poi la passi alla configurazione.
In alternativa usa una struttura eventi con un evento specifico per la configurazione della COM.
----------------------------------------
AUTORE: 645
DATA :09/02/2009 - 08:20:32
----------------------------------------
[quote="mattia.it":3b0hjmvi]Non puoi creare un eseguibile che lanciato non vada in run..[/quote:3b0hjmvi]
In realtà tra le opzioni di Application Builder si possono spuntare le voci "Run when opened" per far sì che il file EXE parta ma aspetti la pressioni del tasto "Run" da parte dell'utente.
Però personalmente preferisco realizzare EXE che non lasciano tanto spazio alle decisioni prese dall'utente, soprattutto in fase di configurazione iniziale (per ridurre il più possibile errori).
Quindi concordo con Mattia:
[quote="mattia.it":3b0hjmvi]Per risolvere il tuo problema puoi fare in modo che prima di configurare la seriale tramite una sub vi chiedi di selezionare la COM e poi la passi alla configurazione.
In alternativa usa una struttura eventi con un evento specifico per la configurazione della COM.[/quote:3b0hjmvi]
Prepara un SubVI che viene lanciato prima del VI principale e chiede all'utente quale COM utilizzare (prepara qualcosa per la gestione degli eventuali errori).
----------------------------------------
================================================================================
Uso di comandi per far apparire e scoparire i controllori
================================================================================
AUTORE: 2554
DATA :07/02/2009 - 17:25:45
----------------------------------------
Ciao a tutti..sono nuovo di questo forum..volevo farvi una domanda..come faccio a creare un VI che mi permetta di far apparire un "menu ring" quando seleziono una voce da un'altro "menu ring"??e poi l'ideale sarebbe che questo "menu ring" che è apparso possa svanire nel momento in cui seleziono un'altra opzione..grazie in anticipo
----------------------------------------
AUTORE: 2555
DATA :07/02/2009 - 20:57:34
----------------------------------------
Utilizza una struttura a eventi:
imposta come event handler il 'value change' sul primo menù ring. Poi all'interno dell'evento controlli che il valore del primo ring sia quello che deve far scomparire il secondo e se è così attraverso il property node "visible" messo a 'false' del secondo ring lo fai sparire. Se invece è un qualsiasi altro valore lo fai apparire dandogli un 'true' al sopra indicato property node.
----------------------------------------
AUTORE: 2554
DATA :08/02/2009 - 10:32:10
----------------------------------------
Grazie mille per il suggerimento..
----------------------------------------
================================================================================
DLL dinamiche
================================================================================
AUTORE: 2479
DATA :09/02/2009 - 09:19:22
----------------------------------------
Ciao a tutti,
avrei bisogni di capire una cosa...
Come faccio ad utilizzare una dll in labview facendo in modo che questa venga caricata dinamicamente in ogni thread in cui è presente?
Spiego il problema: io ho una main con un ciclo principale da cui, all'occorenza di determinati eventi, vengono lanciati thread secondari (che possono essere identici utilizzando l'option reentrant execution). All'interno di questi thread viene chiamta una dll che mi apre una connessione ad un db, mi va a leggere e scrivere dati, e chiude la connessione alla fine.
Richiamando la dll in any thread, questa viene caricata ma quando va a lavorare in contemporanea sul db da due thread in parallelo, le due dll vanno in conflitto nonostante dovrebbero utilizzare due sessioni diverse.
Non riesco a capire come sia possibile questo se le due dll utilizzano due sessioni separate (lo vedo guardando il db) e in teoria allocando le risorse in memoria in posti differenti...
C'è qualche option particolare di labview o è solo un problema.
PS ho risolto questa cosa copiando una dll identica, cambiando il nome e caricarndola in due programmi identici separati che possono essere chiamati in parallelo, cosi funziona! Però non è quello che voglio...
Sapete dirmi qualcosa? anche che quello che ho cercato di fare in labview non è possibile...(in altri linguaggi si)
Grazie a tutti
----------------------------------------
AUTORE: 482
DATA :10/02/2009 - 07:35:33
----------------------------------------
sei sicuro che il problema sia delle dll e non delle risorse del database?
A me è capitato con database excel di non avere la possibilità di scrivere in contemporanea con due processi differenti perchè il primo che arrivava creava un lock sul database.
Detto questo, i VI sono rientranti, ma la libreria è la stessa, la libreria è rientrante?
----------------------------------------
AUTORE: 2479
DATA :10/02/2009 - 09:20:41
----------------------------------------
Le due sessioni del db aperte devono agire proprio nel modo in cui hai detto.
Vengono bloccate delle risorse e solo la sessione che ha operato il lock può sbloccarla. In questo modo si crea una gestione delle risorse.
La prima sessione prende possesso della risorsa, la seconda cerca di prendere possesso di questa ma non riesce perchè è lockata e aspetta lo sblocco da parte della prima.
Questa struttura funziona fino a quando le due dll vengono chiamate con due nomi diversi, è questo che non capisco. E per definizione la dll è dinamica...
----------------------------------------
AUTORE: 482
DATA :11/02/2009 - 07:22:44
----------------------------------------
[quote="fedepass":2r6lq608]E per definizione la dll è dinamica...[/quote:2r6lq608]
E' ma non sapendo se l'hai fatta tu e con cosa l'hai fatta, magari c'era un errore nelal creazione della dll stessa...
Cmq, dettoquesto...riesci a risalire al codice errore esatto?
----------------------------------------
================================================================================
2eseguibili+2seriali diverse=non vanno sullo stesso PC..
================================================================================
AUTORE: 2440
DATA :11/02/2009 - 15:29:54
----------------------------------------
Salve a tutti,
ho questo problema:
ho creato un eseguibile con application builder da LabView 8.6 da far girare su un pc su cui gira già un altro eseguibile a cui non posso avere accesso al block diagram. Entrambi utilizzano porte seriali, ovviamente differenti. Però se ne avvio uno, l'altro non riesce a connettersi alla porta COM, dandomi come messaggio di errore: "VISA: (Hex 0xBFFF0072) The resource is valid, but VISA cannot currently access it."
Qualcuno sa dirmi il perchè e nel caso se esiste una soluzione????
Ah, dimenticavo di dirvi che un eseguibile è connesso ad una reale porta COM, l'altro su un adattatore USB-COM, ovviamente con indirizzi fisici delle porte diversi.
Thanx...
----------------------------------------
AUTORE: 1078
DATA :12/02/2009 - 07:26:18
----------------------------------------
Ciao etanat,
Il software già presente sulla macchina potrebbe tenere impegnate entrabe le porte. Non avendo accesso al block-diagram del VI non puoi verificare il reale comportamento di questo software verso le seriali. L'unica cosa che mi viene in mente e che potresti fare è riscrivere il software di cui non hai accesso, ovviamente bisogna vedere quanto il gioco vale la candela.
Hai provato a scrivere e compilare due programmi che utilizzino le due porte per verificare se è realmente un problema di quel software o se è un problema della macchina?
buon lavoro!
----------------------------------------
AUTORE: 482
DATA :12/02/2009 - 07:51:41
----------------------------------------
A me tempo fa è successa una cosa simile ma usavo una porta unica. Quindi ti faccio una omanda stupida...Hai provato a lanciare solo l'eseguibile che ti da problemi e vedere se da lo stesso problema?
----------------------------------------
AUTORE: 2440
DATA :19/02/2009 - 13:37:03
----------------------------------------
I due programmi girano senza problemi se non vengono eseguiti contemporaneamente.
Ionltre è vero che non ho accesso al block diagram dell'altro, ma sembrerebbe essere uno stupido programma per l'acquisizione di un sensore, e la porta COM è selezionabile, e solo una....
Mi chiedevo se gli eseguibili LabView non avessero una gestione delle seriali particolare, in modo tale che anche se gira solo un'applicazione le occupa tutte...
----------------------------------------
AUTORE: 645
DATA :20/02/2009 - 08:21:08
----------------------------------------
Scusa la domanda... nell'exe hai inserito i driver VISA per il controllo delle seriali?
----------------------------------------
AUTORE: 2440
DATA :25/02/2009 - 09:01:42
----------------------------------------
Si li ho inseriti, infatti quando è da solo la seriale funziona..
----------------------------------------
================================================================================
Contatore
================================================================================
AUTORE: 2558
DATA :13/02/2009 - 07:21:25
----------------------------------------
Ciao a tutti,
uso LabView da poco tempo... portate pazienza! Quello che sto provando a fare è un contatore che deve incrementare ogni volta che clicco su un pulsante (di tipo software... mi sembra sia il push button). Praticamente un contatore di click! poi vorrei un altro pulsante di reset che, se cliccato, faccia ricominciare il contatore da zero.
Nonostante la semplicità non riesco a trovare soluzione. Qualcuno riesce a darmi una dritta per favore?
Mattia
----------------------------------------
AUTORE: 482
DATA :13/02/2009 - 07:25:30
----------------------------------------
..vediamo...una dritta senza darti la soluzione potrebbe essere questa:
1 Ciclo while, un event structure (o un case) e il quadratino con la i del ciclo while che indica le iterazioni.
metti insieme queste 3 cose e otterrai quello che vuoi
----------------------------------------
AUTORE: 2558
DATA :13/02/2009 - 08:30:34
----------------------------------------
intanto ti ringrazio per la velocissima risposta!
ho provato la soluzione con il case structure (l'event non ho ben capito come funziona!).
In pratica ho inserito il ciclo while all'interno del case structure, in modo che quest'ultimo funzioni solo quando è "true" il pulsante che dovrebbe incrementare il contatore (ho usato la "i" del while per contare le iterazioni).
Il problema è che la "i" non conta il numero di click dei mio pulsante... ma incrementa in modo velocissimo!
come potrei fare per associare l'evento click ad un incremento (+1) del mio contatore?
----------------------------------------
AUTORE: 2558
DATA :13/02/2009 - 14:11:07
----------------------------------------
a piccoli passi sto procedendo!
ora sono alle prese con un altro grattacapo.
Vorrei fare un contatore che incrementa di "+1" ad ogni secondo. Tale conteggio deve ricominciare dopo X secondi (X lo decido inserendo un valore).
Ho provato con i cicli while e for... ma non ho capito come far ripartire "i"!!!
Avete un consiglio?
Ringrazio e saluto
Mattia
----------------------------------------
AUTORE: 645
DATA :13/02/2009 - 15:39:06
----------------------------------------
Puoi fare un ciclo While con all'interno un ciclo For temporizzato.
Quando il ciclo For arriva al valore in secondi che fa terminare il ciclo il VI torna al ciclo While esterno e poi rientra nel For.
----------------------------------------
AUTORE: 482
DATA :16/02/2009 - 08:05:25
----------------------------------------
eheh questo è un post didattico.
Per quell oche devi fare ti consiglierei di imparare l'uso degli shift register e del blocchetto timer.
----------------------------------------
AUTORE: 2558
DATA :16/02/2009 - 12:36:55
----------------------------------------
si infatti... sto ancora cercando di capire quello che mi serve per raggiungere il mio scopo!
Quello che dovrei fare è un qualcosa di questo tipo.
- un contatore che conta (ovviamente) il numero di volte che premo un pulsante
- quando tale numero arriva ad un valore di soglia, si accende un led
- il contatore si deve azzerare ogni tot secondi (impostabili dall'utente)
se il valore di soglia lo raggiungo prima che il contatore si azzeri, allora il led si deve accendere, altrimenti no (proprio perchè il contatore riparte da zero).
Da un paio di giorni non riesco a trovare una soluzione che mi soddisfi!
Ogni vostro consiglio vale oro
Fatemi sapere se qualcuno ha voglia di dare retta ad un principiante!
Mattia
----------------------------------------
AUTORE: 2558
DATA :16/02/2009 - 16:18:04
----------------------------------------
Provo ad allegare il file dove ho spiegato mediante commenti il mio problema.
C'è una mano esperta che riesce a dore un'occhiata veloce?
Vi ringrazio anticipatamente,
Mattia
----------------------------------------
AUTORE: 482
DATA :17/02/2009 - 07:43:00
----------------------------------------
Ho corretto il tuo VI.
Per comodità mia gli ho tolto i case paralleli e l'event structure.
Come puoi vedere adesso il VI fa quello che vuoi. Per cpairlo pero' devi analizzare bene il funzionamento degli shift register e del blocchetto select. Inoltre ho utilizzato anche il blocchetto timer che è quello a utilizzare quando si parla di tempi.
<Il modo in cui tu andavi a valutare il tempo che passava era veramente inguardabile. Studiati questa struttura perchè ti tornerà utile molte altre volte.
----------------------------------------
AUTORE: 2558
DATA :17/02/2009 - 08:14:14
----------------------------------------
ti ringrazio, veramente molto gentile.
A prima vista mi rendo conto che non ci sarei mai arrivato. Adesso mi studio bene il funzionamento del tutto. Eventualmente se non capisco qualcosa provo a chiedere a te! Grazie intanto
----------------------------------------
AUTORE: 482
DATA :17/02/2009 - 09:46:11
----------------------------------------
Se vuoi un consiglio, visto che comunque cosi' come l'ho fatto io non è il massimo perchè la pressione del pulsante puo' essere persa tra una temporizzazioen e l'altra, per impratichirti, prova a riprodurre lo stesso funzionamento rimettendo i due cicli paralleli e il tasto legato all'event structure.
----------------------------------------
================================================================================
Contatore
================================================================================
AUTORE: 2558
DATA :13/02/2009 - 07:24:32
----------------------------------------
Ciao a tutti,
uso LabView da poco tempo... portate pazienza! Quello che sto provando a fare è un contatore che deve incrementare ogni volta che clicco su un pulsante (di tipo software... mi sembra sia il push button). Praticamente un contatore di click! poi vorrei un altro pulsante di reset che, se cliccato, faccia ricominciare il contatore da zero.
Nonostante la semplicità non riesco a trovare soluzione. Qualcuno riesce a darmi una dritta per favore?
Mattia
----------------------------------------
AUTORE: 482
DATA :16/02/2009 - 08:06:23
----------------------------------------
Shift register è la risposta.
----------------------------------------
================================================================================
Cluster a posteriore ...
================================================================================
AUTORE: 2536
DATA :13/02/2009 - 14:48:39
----------------------------------------
Ciao a tutti, crando un VI con innumerevoli controlli di configurazione ho notato una impossibile lentezza di tutto l'ambiente LabView.
Il problema dopo svariati tentativi è da addebitare alla vetusta capacità del mio notebook.
Ecco allora che mi è stato consigliato di usare i cluster, abitudine cmq. sana ma essendo anche agli inizi mi sono lasciato trasportare più dalla problematica che dallo strumento.
La domanda è questa:
[b:1owit47c]Non volendo ricostruire una complessa interfaccia grafica (già pronta) si riesce in qualche modo ad allargare graficamente il cluster sopra ciascuna zona grafica per raggruppare velocemente tutti gli indicatori e/o controlli sottostanti?[/b:1owit47c]
Generalmente, avviene il contrario: si tira dentro al cluster l'elemento desiderato ma questa volta mi serve dare l'opposto, pena la modifica dell'interfaccia grafica.
Poi, una volta che il cluster è pieno lo nasconderei con la tools palette (a patto che scelga il cluster sotto la voce classic e non altri).
Maurizio
----------------------------------------
AUTORE: 43
DATA :13/02/2009 - 16:27:22
----------------------------------------
ciao maurizio
[quote="Mauro63":msn0t6us]..., creando un VI con innumerevoli controlli di configurazione ho notato una impossibile lentezza di tutto l'ambiente LabVIEW.
Il problema dopo svariati tentativi è da addebitare alla vetusta capacità del mio notebook.[/quote:msn0t6us]
Insomma te la suoni e te la canti...
usa questo VI per contare quanti Controlli hai nel FP del tuo VI.
[attachment=0:msn0t6us]ctlCountVIInMemory.vi[/attachment:msn0t6us]
[quote="Mauro63":msn0t6us]Ecco allora che [b:msn0t6us]mi è stato consigliato[/b:msn0t6us] di usare i cluster, abitudine cmq. sana ma essendo anche agli inizi mi sono lasciato trasportare più dalla problematica che dallo strumento.[/quote:msn0t6us]
Direi che il problema può ben risiedere da un altra parte....
Il problema potrebbe semplicemente essere legato al fatto che hai molti chart da aggiornare nel tuo front panel o cmq grandi "porzioni di schermo occupate da grafici che riportano decine di migliaia di punti...
Se il problema sta nell'interfaccia.
Ma una volta lanciata la tua applicazione, guardando il task manager di winzozz, vedi l'occupazione di mem crescere indefinitamente? (poi crasha!) oppure vedi schizzare al 100% l'uso della CPU?
Il problema non potrebbe essere in qualche loop non ben temporizzato?
[quote="Mauro63":msn0t6us]La domanda è questa:
[b:msn0t6us]Non volendo ricostruire una complessa interfaccia grafica (già pronta) si riesce in qualche modo ad allargare graficamente il cluster sopra ciascuna zona grafica per raggruppare velocemente tutti gli indicatori e/o controlli sottostanti?[/b:msn0t6us]
Generalmente, avviene il contrario: si tira dentro al cluster l'elemento desiderato ma questa volta mi serve dare l'opposto, pena la modifica dell'interfaccia grafica.
Poi, una volta che il cluster è pieno lo nasconderei con la tools palette (a patto che scelga il cluster sotto la voce classic e non altri).
Maurizio[/quote:msn0t6us]
beh! è la prima volta che sento che utilizzando i cluster si migliorano le "prestazioni". Nel caso dell'occupazione di mem. non dovrebbe cambiare granchè, al limitepotrebbe peggiorare perchè hai dei dati in + da mantenere. L'uso della CPU è praticamente ininfluente...
Direi che usare cluster serve, nel momento in cui ci sono un blocco di controlli o indicatori (non si possono mischiare in un cluster : o sono tutti indicatori o tutti controlli) che si ripetono, a definirne un gruppo unico di controlli/indicatori, appunto, indirizzarbili tutti insieme in una sola volta.
L'uso del cluster ha una valenza logica e non prestazionale
bye
----------------------------------------
AUTORE: 2536
DATA :13/02/2009 - 23:37:35
----------------------------------------
Ciao "Paracarro" grazie della dettagliata risposta.
Allora ...
Il Vi in questione una struttura a Tab di quattro fogli ma solo in due di questi vi sono controlli ed indicatori: uno è il pannello dello strumento e l'altro quello di configurazione.
Occhio e croce sono 200-250 controlli (compreso gli indicatori).
In effetti c'è anche un chart (ricordavi bene) a 16 tracce ma il problema sorge non durante l'esecuzione, tra l'altro ancora in fase d'opera, ma durante la fase di editing grafico.
Sul mio notebook poco dopo aver iniziato modifiche grafiche (decorazioni) tutto il lavoro grafico diventa mostruosamente lento e solo un salvataggio rimette a posto le situazione.
Poco male, se non fosse che il salvataggio impegna 20-30 min. ed a volte anche di più, con la ventola del nb a pieno regime (indice di cpu al 100%).
La ram a disposizione è pari a 2GB ed 1 resta libera, come anche il disco di 130Gb ampiamente disponibile.
Il notebook è uno dei primi centrino di inizio 2003.
L'idea che sia il nb è nata dal confronto con l'assistenza NI, che sostiene che sui loro PC non riscontrano alcun che.
Un suggerimento che mi è stato dato, giacchè individuato nel notebook il problema, è quello di renstallare tutto: non ti dico la lentezza della disinstallazione e la successiva reinstallazione le quali mi ha impegnato l'intera giornata lavorativa.
A riguardo mi hanno dato una procedura ed un software per rimuovere tutto, comprese le chiavi di registro.
La resinstallazione di tutto l'ambiente non ha comportato benifici e giacchè questa è una situazione maturata nel tempo, all'inizio quando il vi era più snello non avevo questo problema, l'idea che fosse il nb. è diventata sempre più reale.
A questo punto l'assistenza mi ha consigliato, giacchè LV interpreta il codice per permettere una comoda esecuzione in fase di editing, di raggruppare i controlli e gli indicatori in cluster per non forzare LV a compilare troppi fili.
Anche se il problema è in fase di editing, l'idea dei cluster penso sia positiva per strutturare meglio il codice ed alleggerirne l'editing ed a riguardo mi hanno detto che migliorerebbe anche la fase di editing grafico.
Ho provato il tuo VI ma pare non funzionare anche dando tutta la path al mio VI: appena parte ... termina.
Ho provato allora a sostituire il controllo stringa con il controllo path constant ed inserendo da codice il nome del vi (per fare una prova) parte, elabora ed infine segna Controls=3 AllObjects=3 .....?????
Ovviamente, ora non sono in fase di editing del VI altrimenti non potrei neanche scriverti questo post ... la situazione è davvero bloccante .... altro che multitasking!!!
Ancora grazie!
Maurizio
----------------------------------------
AUTORE: 43
DATA :14/02/2009 - 05:03:14
----------------------------------------
ciao.
Scusami, ma stavo riflettendo riguardo al titolo che hai dato a questo Tuo topic.
Se il termine "cluster" può essere tradotto dall'inglese come "grappolo" ("cluster bomb" = "bomba a grappolo"), mi viene da pensare che il Tuo problema "a posteriori" sia un grappolo di emor....
E da quanto mi hai risposto, direi che il Tuo problema ha quella consistenza.
[quote="Mauro63":3gbqjfkd]... ma il problema sorge non durante l'esecuzione, tra l'altro ancora in fase d'opera, ma durante la fase di editing grafico.[/quote:3gbqjfkd]
Azz... Gran bel problema!!
Mi ricordo di aver avuto un problema simile con versioni antiche di LV e la cosa si risolveva aggiungendo della RAM...
Molto + di frequente capita che sia "lenta" solo la fase di caricamento, perchè l'applicazione è enorme.
Eppoi un conto è caricare una mega applicazione da migliaia di VI e un'altro e'caricare un unico monolitico VI che fa praticamente tutto ad eccezione di qualche cag*tina (giusto per restare in tema) demandata a qualche subVI.
Sicuramente io non Ti consigliere di usare in modo casuale ed approssimato dei "cluster" per "ridurre il numero di fili", anche perchè il risparmio è cmq tutto da dimostare...
Se uso bundle e unbundle sulle terminazioni di un filo di tipo "cluster", non risparmio certo in "numero di fili", piuttosto, se il percorso del filo è tortuoso, risparmio in "anse"(e quindi memoria) fatte fare solo ad un filo invece di molti, mentre il beneficio maggiore è dato dalla aumentata pulizia e quindi "leggibilità" del diagramma.
Questo genere di spostamenti di dati clusterizzati ( bundle su una estremità del diagramma per poi fare unbundle dall'altra) lo puoi fare anche senza accorpare i controlli nel FP.
Mi ripeto: clusterizzare i dati ha una valenza logica. Può anche capitare di dover accorpare dati che logicamente non dovrebbero stare insieme, per evitare per. es. di passare "troppi" parametri ad un subVI. Questo lo faccio se non voglio cambiare il "pattern" del mio subVI ma ho tutti i "terminali" occupati... in questo caso l'accorpamento ha un valore pratico che come ti dicevo nell' es. di bundle qua e unbundle là ha un valore estetico e di leggibilità.
Tornando al nostro problema, la prima cosa che mi verrebbe da dire, pur non conoscendo molte info che avrai però dato a NI, ( tipo la versione di LV che usi, i toolkit che carichi, da quanti VI è composta la tua applicazione,il dettaglio del "memory usage" che trovi nelle "VI properties" del VI incriminato) è che [b:3gbqjfkd]devi spezzare in più parti quel VI o cmq creare + subVI.[/b:3gbqjfkd]
Da come hai impostato il Tuo VI, utilizzando 4 Tab dicevi, io creerei 4 VI per es.!!!
Un SubVI di config.ecc. ecc.
Pannelli con 200 controlli non dovrebbero cmq rappresentare un problema.
A meno che per ognuno di essi scrivi un bel pò di codice e lo metti tutto in un unico diagramma...
[quote="Mauro63":3gbqjfkd]Ho provato il tuo VI ma pare non funzionare anche dando tutta la path al mio VI: appena parte ... termina.
Ho provato allora a sostituire il controllo stringa con il controllo path constant ed inserendo da codice il nome del vi (per fare una prova) parte, elabora ed infine segna Controls=3 AllObjects=3 .....?????[/quote:3gbqjfkd]
Allora, "open vi" con ingresso stringa invece di path si rifà a quei VI che sono già caricati in memoria, quindi, dovresti caricare il mio VI poi carichi il Tuo MegaSuperUltraVI, poi scrivi il nome del tuo VI nello spazio "VI Name" del mio VI, poi premi la freccia di run del mio VI ( esecuzione al volo one shot!), leggi i numeri a dx e poi li posti.
Così abbiamo dei numeri precisi. "Controls=3 AllObjects=3" si riferisce a "se stesso": di default il nome del VI da analizzare è se stesso per cui ci sono tre controlli/indicatori: "VI Name", "Controls" e "AllObjects". chiaro no???!?!?!
bye
----------------------------------------
AUTORE: 2536
DATA :14/02/2009 - 11:16:19
----------------------------------------
Ciao ed ancora grazie ...
L'idea del tab era comoda, clicchi sulla linguetta e configuri o torni dalla configurazione (la quale riporta anche gli allarmi qualora in fase lettura della conf. si manifestassero).
L'dea di un subVi va cmq. bene basta che risolvi il blocco
anche se ad ora non conosco come mostare sul Vi padre il pannello del subVi (l'unico modo per sgravare il Vi padre - correggimi).
I dati di memory usage (che NI non ha chiesto) sono:
fpo = 379,9k
bdo = 159,5k
code = 25,1k
data = 85,8k
tot. = 653,3k (circa)
on disk = 228,7 (circa)
Eventualmente, inserirei i cluster ma sempre con un senso logico e non certo a caso (non sarebbe da me che lavoro di norma in top down).
Ho rieseguito il tuo Vi seguendo le regole nel tuo secondo post e questa volta in effetti lavora ... ma sempre 3 e 3 sono i risultati
Uso LV 8.6 base e nessun toolkit, ed aggiungo che il Vi in corso d'opera non ha un gran codice (fino'ora il codice è sparso in Vi sperimentali).
Uso 2-3 e SubVi ed il codice più che altro sarà aggiunto man mano che cresce la macchina a stati, ora è presente qualche loop paralello di rappresentazione strumentazione e codice di startup di contorno alla macchina a stati tutta da tirar su.
Sempre grazie pre la tua disponibilità verso i comuni mortali ....
----------------------------------------
AUTORE: 482
DATA :16/02/2009 - 08:00:22
----------------------------------------
Io in passato ho avuto problemi di grafica con labView ma erano strettamente legati alla scheda grafica.
Pero' parlo di passato remoto, quando le schede grafiche erano delle S3 integrate da 8mega. Non penso sia il tuo caso.
Detto questo. La lentezza durante la fase di editing è uguale sia che tu sia sul fornt panel che sul diagramma?.
Se sei sul front panel, la cosa cambia da tab a tab?
Magari hai messo 250 controlli/indicatori tondi e windows fa fatica a gestirli e allor ain quel caso potretsi passre a dei classic control belli squadrati.
----------------------------------------
AUTORE: 43
DATA :16/02/2009 - 09:19:23
----------------------------------------
Il problema non ha a che fare con l'occupazione della RAM.
[code:lx5mztds]fpo = 379,9k
bdo = 159,5k
code = 25,1k
data = 85,8k
tot. = 653,3k (circa)
on disk = 228,7 (circa)[/code:lx5mztds]
il VI è decisamente piccolo anche se la parte + consistente risiede negli oggetti del FP.
Penso quindi che riunire gli oggetti in clusters possa essere utile ma non dovrebbe cambiare granchè...
Immagino che l'assitenza di NI abbia potuto accedere al Tuo VI editandolo senza problemi.
Da qui la conclusione che il problema sta nel notebook.
Se non fosse così devi provare a caricare il tuo stesso VI su un altro PC per essere certi che il problema risieda nell'HW del tuo PC
[quote="gepponline":lx5mztds]Io in passato ho avuto problemi di grafica con labView ma erano strettamente legati alla scheda grafica.[/quote:lx5mztds]
La scheda grafica potrebbe anche essere un problema come diceva gepponline.
Nel caso in cui non fosse il Tuo HW, potrebbe essere il VI stesso, "in qualche modo corrotto", che potrebbe darti problemi anche in seguito ammesso che riesca a sitemare questo problema.
In questa ipoetsi potresti provare a "rifare da 0" il VI.
[quote="mauro63":lx5mztds]Sul mio notebook poco dopo aver iniziato modifiche grafiche (decorazioni) tutto il lavoro grafico diventa mostruosamente lento e solo un salvataggio rimette a posto le situazione.[/quote:lx5mztds]
E se il problema fossero le decorazioni?
Per questo sarebbe stato utile il mio VI: ci avrebbe detto quanti sono gli oggetti e quante le "decorations". A proposito: Diagram del mio VI. Tasto dx sull'uscita del secondo property node Create-->Indicator. E poi dimmi qual'è l'errore. Dimenticavo: il nome del VI deve essere completo di estensione ".vi"
Consiglio: invece di disseminare il pannello di orpelli grafici, immagino, per creare un sinottico, genera un'unica immagine (possibilmente .png) e mettila come sfondo al posto delle decorations!!!!
bye
bye
----------------------------------------
AUTORE: 2536
DATA :16/02/2009 - 10:02:12
----------------------------------------
Grazie ad entrambi per le risposte.
A riguarado della scheda grafica, il mio nb. monta una radeon 9000 con 64Mb di RAM integrata.
Non ho ulteriori info. ma sono consapevole che a farla da padrone non sono tanto le pubblicitarie caratteristiche quanto invece i colli di bottiglia.
Qualche disco fa ... montai linux assieme a windows (poi comprai dischi più grandi da 2,5" esternizzando man mano i precedenti) ed oltre al dual boot si offriva un test della RAM centrale che se eseguito leggeva si 2GB ma a 99MHz di clock ... figuriamoci se può reggere il confronto con i desktop moderni di cui NI è dotata ed in cui, facendo girare il mio VI, non ha riscontrato nulla di anomalo.
Riguardo che VI che gentilmente mi hai fornito, non è che non gira, gira come dovrebbe giacchè non compaiono errori di run-time (il nome del mio VI come da esempio l'ho sempre impostato con estensione .vi), il fatto che indica "3 e 3".
Inserendo un indicatore sull'uscita del secondo pn (immagino uscita errore) segna 0.
Le decorazioni presenti sono di due tipi: 3D per un effetto realistico di un front panel strumentale e 2D per la suddivisione in righe e colonne dei numerosi controlli ed indicatori.
Attualmente sto procedendo con l'inserimento dei cluster prima di acq., doverosamente, un desktop nuovo
Maurizio
----------------------------------------
================================================================================
Event case all'interno di un ciclo while
================================================================================
AUTORE: 2484
DATA :13/02/2009 - 16:07:46
----------------------------------------
Salve a tutti, ho la necessità di inserire un event case che si aziona al click del mouse (mouse up); l'evento si trova all'interno di un ciclo while che deve continuare indisturbato; invece l'event case disturba il ciclo non consentendo l'esecuzione dello stesso, anzi consente l'esecuzione soltanto nel breve istante del click. Come posso risolvere il problema?
Grazie anticipatamente
----------------------------------------
AUTORE: 278
DATA :13/02/2009 - 20:18:27
----------------------------------------
Ciao,
il comportamento che descrivi e` asolutamente normale per il modo in cui hai impostato il tuo programma.
Se vuoi che il ciclo while continui a "ciclare" indipendentemente dagli eventi catturati dalla event structure non hai altra scelta che fare 2 loop separati; uno con il tuo while principale e uno che intercetta gli eventi con la event structure.
Per passare dati tra le 2 strutture ti consiglio di utilizzare le code.
L`effetto che noti, ovvero che l`esecuzione del while prosegua solo se clicchi con il mouse, puo` essere dovuta al fatto che non hai collegato nessun valore al terminale rappresentato da una clessidra blu, in alto a sinistra della event structure.
Di conseguenza la event structure va in esecuzione solo quando intercetta un`evento, bloccando di fatto il ciclo while.
Dario
----------------------------------------
AUTORE: 482
DATA :16/02/2009 - 08:03:50
----------------------------------------
[quote="esodar1981":2t9b5t6h]
il comportamento che descrivi e` asolutamente normale per il modo in cui hai impostato il tuo programma.
Se vuoi che il ciclo while continui a "ciclare" indipendentemente dagli eventi catturati dalla event structure non hai altra scelta che fare 2 loop separati;[/quote:2t9b5t6h]
Questo non è vero.
L'effetto che desideri è ottenibile creando l'evento di timeout.
Se tu colleghi un numerico all'ingresso in alto a sinistra dell'event structure, il ciclo continuerà a ciclare con un intevallo di tempo pari al numerico collegato.
Ovviamente è una struttura "rischiosa" perchè se non la gestisci bene rischi di perdere degli eventi.
Concordo con esodar che la struttura migliore sia quella con due cicli paralleli, ma è giusto sapere che si puo' fare anche diversamente.
----------------------------------------
================================================================================
Property node su PDA
================================================================================
AUTORE: 2494
DATA :14/02/2009 - 19:11:58
----------------------------------------
Salve ragazzi,
Sto usando la versione di Labview 8.2 per PDA. Il mio problema è che devo aggiornare una stringa sul display ma il property node sembra non funzionare...mi fa casini.
Qualcuno di voi ha mai incontrato lo stesso problema? come ne è uscito? In ogni caso avete suggerimenti?
Grazie mille...
----------------------------------------
================================================================================
Build LV7.1
================================================================================
AUTORE: 2215
DATA :16/02/2009 - 07:35:39
----------------------------------------
Ciao!
Ho mandato un aggiornamento di un file compilato (xx.exe)
Quando viene eseguito, comare un messaggio che dice più o meno (... non riesco a trovare yy.vi)
yy.vi è un subvi che ho aggiunto nella modifica. Ho il sospetto che se gli faccio eseguire il nuovo installer il tutto funziona.
C'è qualcuno che sa, invece dirmi qual'è il file da mandare, oltre a xx.exe, senza dover rifare l'installer
Grazie!
----------------------------------------
AUTORE: 1124
DATA :16/02/2009 - 07:58:08
----------------------------------------
Credo che sia esattamente come dici tu: non basta inviare l'eseguibile, ma occorre installarlo.
Se devi inviare un aggiornamento a qualcuno puoi preparare l'installer senza includere il RunTimeEngine: in questo modo il pacchetto risulta di dimensioni più contenute.
----------------------------------------
AUTORE: 43
DATA :16/02/2009 - 09:25:41
----------------------------------------
[quote="robyf1":17lwb5y7]Ciao!
Ho mandato un aggiornamento di un file compilato (xx.exe)
Quando viene eseguito, comare un messaggio che [b:17lwb5y7]dice più o meno[/b:17lwb5y7] (... non riesco a trovare yy.vi)
yy.vi è un subvi che ho aggiunto nella modifica. Ho il sospetto che se gli faccio eseguire il nuovo installer il tutto funziona.
C'è qualcuno che sa, invece dirmi qual'è il file da mandare, oltre a xx.exe, senza dover rifare l'installer
Grazie![/quote:17lwb5y7]
Quel "dice più o meno" fa la differenza.
Non è per caso che quel VI è eseguito dinamicamente?
Com'è possibile che un VI compilato non sia incluso nell'exe stesso?
Secondo me non ci stai dicendo quelcosa di significativo...
bye
----------------------------------------
AUTORE: 2215
DATA :17/02/2009 - 07:17:56
----------------------------------------
Purtroppo sono informazioni riportate dal tecnico.
Ho provato a simulare su una macchina vergine. Non ho riprodotto il difetto
Mah!
----------------------------------------
AUTORE: 482
DATA :17/02/2009 - 09:43:49
----------------------------------------
[quote="robyf1":sgah2ajx]Purtroppo sono informazioni riportate dal tecnico.[/quote:sgah2ajx]
Fatti mandare uno screenshot. penso che il tasto stamp tu possa farglielo usare.Cosi' com'e' quell'errore puo' dire tutto e niente
----------------------------------------
================================================================================
messaggio di dialogo che controlla un event structure
================================================================================
AUTORE: 2484
DATA :16/02/2009 - 15:49:34
----------------------------------------
Salve a tutti, ho la necessità di creare un controllo con finestra di dialogo su un event structure. Imposto il messaggio ma il risultato è la finestra di dialogo che compare senza effettivamente nessun controllo sull'evento. Come posso controllare il verificarsi o meno dell'evento tramite un messaggio di dialogo?
Grazie mille in anticipo
----------------------------------------
AUTORE: 645
DATA :17/02/2009 - 09:32:43
----------------------------------------
La finestra che appare si trova all'interno di un ciclo con un'Event Structure?
A sentirla così sembra che la posizione in cui apri questa finestra sia sbagliata perchè il programma anzichè fermarsi per aspettare l'evento continua nel suo ciclo.
----------------------------------------
AUTORE: 2484
DATA :17/02/2009 - 10:23:09
----------------------------------------
Sì, è prprio così, la finestra si trova all'interno di un ciclo while. all'interno del ciclo c'è un event structue controllato da un tasto. il messaggio di dialogo mi servirebbe per un controllo aggiuntivo sul tasto che comanda l'event structure. sarebbe un messaggio del tipo: " vuoi realmente eseguire questo evento? si o no? ".
Riesco a fare comparire il messaggio, ma probabilmente non lo faccio nel modo corretto, perchè è un messaggio fine a se stesso che comunque non mi da un controllo sul verificarsi o meno dell'evento. Ribadisco che l'evento si trova all'interno di un ciclo while che esegue indisturbato le operazioni di acquisizione. l'evento si verifica se viene premuto un pulsante.
Grazie per i suggerimenti...
----------------------------------------
AUTORE: 2484
DATA :17/02/2009 - 10:25:20
----------------------------------------
Sì è proprio cosi, l'evento si trova all'interno di un ciclo while. il messaggio mi serve per inserire un ulteriore controllo sull'evento che si verifica al click di un pulsante. il messaggio deve essere del tipo: "vuoi realmente eseguire l'evento? si o no?"
grazie per i suggerimenti
----------------------------------------
AUTORE: 645
DATA :18/02/2009 - 09:43:04
----------------------------------------
Puoi postare un'immagine del Block Diagram del tuo VI?
----------------------------------------
AUTORE: 1078
DATA :19/02/2009 - 08:01:50
----------------------------------------
Forse ho capito cosa stai cercando di fare....
prova a vedere se questo modesto esempio può chiarirti le idee!
Trovi anche un'esempio nel find exemple di LV. L'esempio si chiama: "Programmatically Fire Event"
----------------------------------------
================================================================================
Istanze multiple con Server VI
================================================================================
AUTORE: 1033
DATA :17/02/2009 - 08:23:01
----------------------------------------
Ciao, devo creare delle istanze multiple di uno stesso VI usando il VI server. Tra le properties ho settato la flag "reentrant". Se chiamo il client come sub-vi creo le N istanze senza problemi. Se utitlizzo il VI server, nonostante gli handle diversi quendo eseguo il metodo Run ottengo il seguente errore:
Error 1000 occurred at Invoke Node in Server.vi
Possible reason(s):
LabVIEW: The VI is not in a state compatible with this operation.
Method Name: Run VI
Qualche suggerimento? Allego un esempio.
Grazie.
----------------------------------------
AUTORE: 4
DATA :18/02/2009 - 09:27:05
----------------------------------------
ciao,
secondo me ci sono almeno 2 problemi
1 non stoppi i tuoi client da quello che vedo
2 non chiudi i reference agli stessi
magari hai un altro pezzo di codice che lo fa altrimenti lo DEVI fare altrimenti alla lunga avrai un sacco di VI zombi nel senso che li hai fatti nascere ma non usi l'handle per ucciderli quindi non possono morire
----------------------------------------
AUTORE: 1033
DATA :19/02/2009 - 13:02:28
----------------------------------------
Aldilà degli handle che non chiudo (questo era solo un esempio), la soluzione è nel settare =8 le option del "Open VI Reference".
Così funziona.
Ciao.
----------------------------------------
================================================================================
Esportazione dati
================================================================================
AUTORE: 2561
DATA :17/02/2009 - 10:37:25
----------------------------------------
Salve a tutti,
sono un neofita e sto muovendo i primi passi con labview.
Utilizzo la scheda USB della Eagle uDAQlite.
Vi allego quello che sto facendo; vorrei poter salvare i dati che vedo nel grafico.
Come posso fare?
----------------------------------------
AUTORE: 1078
DATA :18/02/2009 - 10:05:04
----------------------------------------
Prova a vedere se questo esempio fa al caso tuo....
Ovviamente puoi migliorarlo!!
Buon lavoro.
Ciao...
----------------------------------------
AUTORE: 2561
DATA :18/02/2009 - 14:44:31
----------------------------------------
Grazie mille per l'aiuto...
----------------------------------------
================================================================================
Inserire driver nell'exe
================================================================================
AUTORE: 2512
DATA :17/02/2009 - 10:39:42
----------------------------------------
Ciao a tutti!
Come da titolo, dovrei creare un'exe, ed ho consultato l'ottima guida allegata in questo sito. Il mio exe è composto da:
1) Una serie di SubVIe dal main (tutti in formato .vi cmq) tutti nella stessa directory
2) Dei file di testo che vengono importati nel progetto, sempre tutti nella stessa directory
3) Dei driver per pilotare uno strumento da remoto (stanno nella cartello instr.lib di labview e sono sia vi che dll)
Coem importo i files del punto 3 nel progetto? Seleziono tutta la cartella dei driver?
Vi prego di aiutarmi.
----------------------------------------
AUTORE: 1078
DATA :18/02/2009 - 07:50:33
----------------------------------------
Bhe!... innanzi tutto dipende da che versioni di LV usi. Nelle versioni dopo la 8.0 puoi impostare tutto dall'application builder di LV che ti consente anche di lanciare dopo l'installazione del tuo SW un file exe (che potrebbe essere il setup.exe dei tuoi driver) per installare delle funzionalità o appunto driver esterne. Con versioni LV inferiori alla 8.0 devi fare tutto manualmente... quindi è molto più laborioso!
Buon lavoro.
Ciao...
N.B. Spero che tu abbia l'application builder!
----------------------------------------
AUTORE: 2512
DATA :18/02/2009 - 09:35:44
----------------------------------------
Mi fa piacere che si può fare.
Sto lavorando con la 8.6, ma come faccio ad eseguire le operazioni che mi dici?
Me lo puoi spiegare passo passo visto che non ho mai creato un'exe?
Ti ringrazio in anticipo.
----------------------------------------
AUTORE: 1078
DATA :18/02/2009 - 10:08:03
----------------------------------------
La prima domanda è hai l'application builder?
è un pacchetto che si deve acquistare a parte e se non ce l'hai non puoi creare un exe....
----------------------------------------
AUTORE: 1078
DATA :18/02/2009 - 10:17:47
----------------------------------------
Prova a dare un'occhiata a questi tutorial:
[url:1ml78sxc]http://zone.ni.com/devzone/cda/tut/p/id/4039[/url:1ml78sxc]
[url:1ml78sxc]http://zone.ni.com/devzone/cda/tut/p/id/3303[/url:1ml78sxc]
Dovrebbero darti una mano....
----------------------------------------
AUTORE: 2512
DATA :18/02/2009 - 10:37:10
----------------------------------------
[quote="Ricky":2j8de35k]La prima domanda è hai l'application builder?
è un pacchetto che si deve acquistare a parte e se non ce l'hai non puoi creare un exe....[/quote:2j8de35k]
La mia azienda possiede l'application builder, quindi posso usarlo.
----------------------------------------
AUTORE: 2512
DATA :18/02/2009 - 11:12:50
----------------------------------------
Allora, problema risolto.
In references, ci sono tutti i files collegati al mio main; labview fa tutto in automatico, quindi non occorre aggiungere altri files.
Sorge un'altro problema.
Ho dei files vicino al mio main (che poi diventerà exe) e li richiamo mediante il "current vi path" di cui tolgo il nome "main.vi" (mediante strip path).
Il problema è che quando faccio l'exe, il path si "arricchisce" del nome dell'applicazione. Faccio un esempio:
Il main sta in "C:\Labview\Progetto1\main.vi".
Ho dei files txt: "C:\Labview\Progetto1\testo1.txt", "C:\Labview\Progetto1\testo2.txt", "C:\Labview\Progetto1\testo3.txt"
Li richiamo dal main facendo il "current vi path" e togliendoci l'ultimo elemento ottenendo: "C:\Labview\Progetto1\" e qui aggiungo tutte le stringhe che mi servono per far funzionare il programma.
Quando vado a creare l'exe (applicazione.exe), il percorso diventa "C:\Labview\Progetto1\" --> "C:\Labview\Progetto1\applicazione.exe"
Come risolvo questo problema?
----------------------------------------
AUTORE: 1078
DATA :18/02/2009 - 13:10:25
----------------------------------------
Usa i VI server, con i property node. Tira dentro al tuo block diagram un semplice property node, questo varra referenziato sull'applicazione che sta girando in quel momento (application.exe). Seleziona la proprietà: Application-->Directory path e otterai la path della tua applicazione a cui dovrai aggiungere il nome del file *.txt....
Spero di esserti stato di aiuto!
buona giornata.
----------------------------------------
AUTORE: 2512
DATA :18/02/2009 - 16:01:46
----------------------------------------
Mi puoi spiegare bene questo procedimento per favore?
Ma poi im darà il percorso corretto sia quando farò girare il programma dal labview che come applicazione exe stand-alone?
Grazie mille.
----------------------------------------
AUTORE: 1078
DATA :19/02/2009 - 07:25:22
----------------------------------------
Ciao,
è molto semplice:
dal block diagram click con il tasto destro del mouse
nella functionals palete, scegli Programming -- > Application control --> Property node
selezionato il property node lo disegni sul block diagram.
adesso devi selezionare il tipo di proprietà a cui vuoi fare riferimento. Se noti il titolo del tuo property node è "App" che sta per application.
Clicca appena sotto con il tasto sinistro del mouse, ti apparirà una lista di proprietà selezionabili, la prima in alto è un menu a tendina "Application" che è quello che ci interessa. All'interno trovi la voce "Derectory Path" che fa riferimento alla directori dell'applicazione in esecuzione.
Ti suggerisco di inserire un indicatore per verificare la path. Quando l'applicazione gira in modalità debug l'indicatore ti visualizzerà la path di installazione di LabView. Quando compilerai l'applicazione l'indicatore visualizzerà la path del tuo exe.
Ti allego un piccolo esempio in formato ZIP. Allinterno trovi un progettino di esempio molto-molto semplice in formato LV8.5.
Buona giornata.....
----------------------------------------
AUTORE: 482
DATA :19/02/2009 - 07:28:36
----------------------------------------
Puoi semplicemente fare uno strip path del path sorgente nei tuoi vi.
Quando vai a prendere il path del tuo vi, gli aggiungi uno strip path che gli elimina la parte col nome dell'applicazione.
Devi solo ricordarti che quando sei in sviluppo, devi togliere quello strip path per provare il tuo programma.
----------------------------------------
AUTORE: 2512
DATA :19/02/2009 - 16:18:29
----------------------------------------
[quote="Ricky":37zdco89]Ciao,
è molto semplice:
dal block diagram click con il tasto destro del mouse
nella functionals palete, scegli Programming -- > Application control --> Property node
selezionato il property node lo disegni sul block diagram.
adesso devi selezionare il tipo di proprietà a cui vuoi fare riferimento. Se noti il titolo del tuo property node è "App" che sta per application.
Clicca appena sotto con il tasto sinistro del mouse, ti apparirà una lista di proprietà selezionabili, la prima in alto è un menu a tendina "Application" che è quello che ci interessa. All'interno trovi la voce "Derectory Path" che fa riferimento alla directori dell'applicazione in esecuzione.
Ti suggerisco di inserire un indicatore per verificare la path. Quando l'applicazione gira in modalità debug l'indicatore ti visualizzerà la path di installazione di LabView. Quando compilerai l'applicazione l'indicatore visualizzerà la path del tuo exe.
Ti allego un piccolo esempio in formato ZIP. Allinterno trovi un progettino di esempio molto-molto semplice in formato LV8.5.
Buona giornata.....[/quote:37zdco89]
Sei stato squisito...grazie mille!!
----------------------------------------
================================================================================
Controllo e indicatore contemporaneamente, possibile?
================================================================================
AUTORE: 2562
DATA :17/02/2009 - 16:14:22
----------------------------------------
Ciao
da poco ho iniziato a lavorare con labview e dovendo realizzare un progetto avrei bisogno di un qualcosa che mi risolvesse il problema seguente.
In breve, diciamo che ho un programma che prende in ingresso dei dati (per esempio un'array che chiamerò array_in) e dopo averli processati mi da in uscita un array dello stesso tipo e dimensione ma contenete i dati processati(che chiamerò array_out).
Vorrei poter utilizzare questo array_out come ingresso per una seguente esecuzione del medesimo programma avendo però la possibilita di "editare" parte di questi dati senza ovviamente dover ricopiarli a mano nell'array_in dell'esecuzione successiva (essendo un array molto grande).
Praticamente avrei bisogno di "creare un oggetto" che possa funzionare sia da controllo che da indicatore a seconda che sia io a deciderlo con per esempio un selettore nel front panel, mantenedo però una "memoria" tra un esecuzione e l'altra del programma.
Per esempio inserisco il mio array_in nel programma (es array formato da (0 2 4 5 6)) e ottengo in uscita array_out (6 7 8 9 7), ecco vorrei poter "editare" questo array_out e passarlo in ingresso all'esecuzione successiva senza doverlo ricopiare a mano, vorrei quindi che l'indicatore che mi mostra array_ out fosse editabile come un control per intenderci.
Non so se così come lo intendo sia fattibile o esista un'altro modo per fare ciò che mi servirebbe. Accetto suggerimmeti anche che implichino un modo diversso di formulare la soluzione.
Spero di aver spiegato in manierà comprensibile il problema
Grazie in anticipo a chi volesse proporre una soluzione[color=#0000BF:tx0bdjzd][color=#0000BF][/color:tx0bdjzd][/color]
----------------------------------------
AUTORE: 482
DATA :17/02/2009 - 16:45:15
----------------------------------------
Il mi consiglio è di creare un CONTROLLO e trasformarlo in indicatore quando necessario.
Quando dico trasformarlo intendo utilizzare la proprietà disable
Praticamente quando hai bisogno che l'oggetto non sia modificabile lo disabiliti e nella partica diventa un indicatore.
----------------------------------------
AUTORE: 1078
DATA :18/02/2009 - 07:46:34
----------------------------------------
Appoggio il consiglio di geppo.
Per modificare e preimpostare i valori del CONTROLLO puoi utilizzare due tecniche differenti: la prima è usando le local variable mentre, la seconda, utilizzando i property node e impostando la proprietà value del controllo.
Trovi degli esempi nel find-exemple di LV o sul sito della national o anche in questo forum se cerchi bene.
Buon lavoro!
----------------------------------------
AUTORE: 645
DATA :18/02/2009 - 09:46:54
----------------------------------------
Posso concordare anche io?
Anche secondo me conviene scrivere i risultati in un controllo disabilitato (passa dai Property Node sia per settare i valori che per disabilitare la modifica) e poi aggiungere un pulsante del tipo "Modifica" che se premuto permette di modificare i valori del controllo cambiando il Property Node "Disable".
----------------------------------------
AUTORE: 43
DATA :18/02/2009 - 11:49:30
----------------------------------------
[quote="TexWiller":2kn8q711]..ho un programma che prende in ingresso dei dati (per esempio un'array che chiamerò array_in) e dopo averli processati mi da in uscita un array dello stesso tipo e dimensione ma contenete i dati processati(che chiamerò array_out).
Vorrei poter utilizzare questo array_out come ingresso per una seguente esecuzione del medesimo programma avendo però la possibilita di "editare" parte di questi dati senza ovviamente dover ricopiarli a mano nell'array_in
.
Praticamente avrei bisogno di "creare un oggetto" che possa funzionare sia da controllo che da indicatore a seconda che sia io a deciderlo con per esempio un selettore nel front panel, [b:2kn8q711]mantenedo però una "memoria"[/b:2kn8q711] tra un esecuzione e l'altra del programma.[/quote:2kn8q711]
Secondo me la soluzione si cambia Functional Global.
Il Tuo caso permetti, è gestito anche in molti VI di libreria di analisi di NI. Sono casi in cui un VI che elabora dati necessita di un valore iniziale, poi per effetto di "retroazione" i valori di uscita successivi dipendono dai valori di uscita + recenti. Tipico di un controllo P.I.D.
Per cui quello che ti consiglio è usare uno Shift Register in un Loop while che viene eseguito una sola volta ad ogni esecuzione del VI.
Lo shift register ha funzione di [b:2kn8q711]variabile statica[/b:2kn8q711] (non cambia il contenuto a esecuzione di VI terminata)
[attachment=0:2kn8q711]FG_retroazione.vi[/attachment:2kn8q711]
Questo è da usare come SubVI, ma volendolo provare "al volo", basta mettere dei valori a caso nell'array di ingresso ed eseguire una volta il VI.
Se lo esegui + volte ottieni sempre lo stesso risultato.
poi svuoti l'array di ingresso ( tasto dx sull'index dell'arraydi ingresso -->Empty array) ed esegui più volte.
Otterrai dei valori aggiornati in funzione del contenuto precedente.
La memorizzazzione NON è nell'indicatore: puoi svuotare anche il suo contenuto, ma alla successiva esecuzione verrà ricaricato, dallo shift register interno al VI
----------------------------------------
AUTORE: 2825
DATA :10/10/2009 - 14:04:47
----------------------------------------
scusate se mi intrometto un po' in ritardo, ma magari serve ancora a qualcun altro...
E usare semplicemente un controllo caricandolo da programma con la sua local?
A me sembra risolva tutto molto semplicemente, o mi è sfuggito qualche cosa?
Appoggio l'uso dello shift register, ma mi sembrava che non fosse questione di "tenere" in memoria i dati all'interno della routine, ma di editarli dall'esterno.
----------------------------------------
================================================================================
Excel con dati cirillici
================================================================================
AUTORE: 238
DATA :18/02/2009 - 08:22:54
----------------------------------------
Devo elaborare dei dati da fogli Excel con testi cirillici. Purtroppo le funzioni "Report generation" non supportano unicode
Inoltre una volta elaborati i dati dovrei salvarli come file di testo unicode. Qualcuno ha una soluzione ?
----------------------------------------
AUTORE: 927
DATA :19/02/2009 - 09:40:25
----------------------------------------
Esiste una libreria pubblica per gestire le stringhe unicode. Cerca "unicode.llb" su internet.
Non garantisco, ma potrebbe fare al caso tuo
----------------------------------------
================================================================================
Chart History Length
================================================================================
AUTORE: 927
DATA :19/02/2009 - 09:31:09
----------------------------------------
Si cambia cliccando col destro sul Chart, ma è possibile cambiarla da programma?
Non ho trovato proprietà o metodi adatti
----------------------------------------
AUTORE: 43
DATA :19/02/2009 - 11:26:11
----------------------------------------
[quote="Snamprogetti":1d2egaq5]Si cambia cliccando col destro sul Chart, ma è possibile cambiarla da programma?
Non ho trovato proprietà o metodi adatti[/quote:1d2egaq5]
Dalla versione 3.1 alla 8.6 continuo a non trovare nemmeno io questa "proprietà"nella lista.
A proposito: hai notato che il numero di punti visualizzzati nel chart non può mai essere > della dimensione dell'history buffer?
e di come è facile incasinare l'asse dei tempi se si tentano di forzare manualmente limiti?
Sono stufo di dirlo: se dovete fare un'applicazione seria NON USATE I CHART!!!!!!!!!!!!!!!
bye
----------------------------------------
AUTORE: 927
DATA :19/02/2009 - 11:40:06
----------------------------------------
Bè l'History Length è il numero massimo di punti che tiene in memoria, quindi è chiaro che non puoi visualizzarne di più, non ce ne sono altri...
----------------------------------------
AUTORE: 43
DATA :19/02/2009 - 13:41:50
----------------------------------------
[quote="Snamprogetti":34fuvho4]Bè l'History Length è il numero massimo di punti che tiene in memoria, quindi è chiaro che non puoi visualizzarne di più, non ce ne sono altri...[/quote:34fuvho4]
beh! allora dovrebbe per coerenza, dovrebbe forzarmi costantemente un "autoscale" dell'asseX, impedendomi di non "ofsettare" il grafico dove non posso vedere alcun punto di quelli memorizzati.
Invece mi forza e limita solo il "range" di visualizzazzione, ma non l'"offset".
cmq sia auguri per i Tuoi chart.
Spero di incontrarti all'NI Day!
----------------------------------------
AUTORE: 2536
DATA :19/02/2009 - 16:14:03
----------------------------------------
e come ci si riconoscerà?
Forse, un distintivo (con nick) da appendersi con un coccodrilletto potrebbe tornare utile!
----------------------------------------
================================================================================
UML e LabView
================================================================================
AUTORE: 2512
DATA :21/02/2009 - 10:19:32
----------------------------------------
Ciao a tutti.
Mi chiedevo se qualcuno ha mai realizzato una documentazione per un software prodotto e si è trovato a fare qualche diagramma UML.
Sarei grato se ualcuno che lo ha fatto possa darmi qualche dritta o qualche link, soprattutto per il "Component Diagram" che prorpio non riesco a realizzare.
Grazie mille.
----------------------------------------
AUTORE: 1078
DATA :23/02/2009 - 07:22:31
----------------------------------------
Io ho partecipato ai corsi "Intermediate" della national instrument. Tra gli argomenti discussi c'era anche quello su come redarre la documentazione del software. Loro utilizzano uno schema differente da quello che è UML. I diagrammi vengono fatti come pallogrammi.
prova a guardare qui:
[url:3g40rdqt]http://zone.ni.com/wv/app/doc/p/id/wv-1227[/url:3g40rdqt]
Altrimenti potresti chiedere direttamente alla national instrument di fornirti i manuali dei corsi Intermediate I e II. Lì viene affrontato il problema esaustivamente con esempi pratici molto ben fatti. Ovviamente i manuali sono in vendita e non costano proprio pochino....
Buona giornata.
----------------------------------------
AUTORE: 2512
DATA :23/02/2009 - 17:22:11
----------------------------------------
Sei stato molto gentile...nessuno può aggiungere altre informazioni?
----------------------------------------
AUTORE: 4
DATA :24/02/2009 - 08:58:35
----------------------------------------
Ciao, non sono molto "credente" di UML ... in ogni caso esiste un tool che si integra con LabVIEW e, a quanto ho capito, permette di passare da UML a LabVIEW e viceversa in "automatico" lo fà la endevo http://www.flander.com/English/Endevo/P ... fault.aspx se ti capita di essere a Milano domani la endevo sarà all'NIday
----------------------------------------
AUTORE: 1078
DATA :26/02/2009 - 12:35:26
----------------------------------------
Ieri ho partecipato alla dimostrazione endevo del software, all'NIDays. Molto interessante.
Trovi tutte le informazioni necessarie sul sito endevo.
[url:1imwil1b]http://www.endevo.se[/url:1imwil1b]
----------------------------------------
AUTORE: 15
DATA :25/03/2010 - 16:35:05
----------------------------------------
Io invece sono abbastanza Uml credente. L'UML potrebbe divenire un linguaggio comune un po come l'inglese per i linguaggi naturali: al centro della stella l'UML collegato con tutti gli altri linguaggi con un "profile" cioè un componente che traduce in modo bidirezionale da Uml -> LinguaggioX , Uml <- LinguaggioX.
Lo "statechart module" non è altro che un parziale del profilo Uml -> Labview.
La soluzione Endevo vorrebbe essere un profilo Uml <-> Labview, un po più completo per tradurre:
state, class, sequence, package and use case .
Non ho mai provato la soluzione endevo, ma c'è una demo. Qualcuno lo ha provato?
Ciao
----------------------------------------
================================================================================
SPI & I2C
================================================================================
AUTORE: 1191
DATA :23/02/2009 - 08:26:45
----------------------------------------
salve
volevo realizzare una comunicazione SPI o I2C con Labview e usare come Hardware una scheda PCI6024 o in alternativa
la porta parallela. volevo sapere se qualcuno ha realizzato qualcosa di simile, come ha risolto il problema della
sincronizzazione dei dati e a che velocità max. è riuscito a comunicare? è possibile reperire dei driver che modificano
la porta seriale e usare questa come "seriale sincrona"? altre alternative?
grazie a tutti,emi
----------------------------------------
AUTORE: 301
DATA :23/02/2009 - 12:40:27
----------------------------------------
Ciao,
a me è capitato di usare una NI USB-8451.
Facile, e di veloce implementazione.
Per quel che riguarda l'utilizza della parallela credo ti dovresti fare tu (non è difficile) un controller I2C....
----------------------------------------
AUTORE: 1124
DATA :23/02/2009 - 12:44:28
----------------------------------------
Ciao
per quanto riguarda la comunicazione I2C nel forum internazionale c'è una discussione:
http://forums.ni.com/ni/board/message?b ... .id=262261
Non ho capito se vuoi usare i Dig.I/O della 6024 come porta di comunicazione in alternativa alla seriale: mi sembra lenta.
ciao
----------------------------------------
AUTORE: 1191
DATA :23/02/2009 - 19:46:31
----------------------------------------
salve
quello che voglio realizzare è una comunicazione seriale sincrona tipo SPI o I2C ,usando gli I/O digitali
di una scheda PCI6024. quindi realizzare il software con Labview; il dubbio che ho è: se il timing min.
di Labview è 1msec, la max freq. teorica operativa della mia seriale sarà di 1KHz????? oppure c'è una
maniera di andare + veloci?
ecco perchè ho chiesto se era possibile usare la COM del PC per realizzare una comunicazione seriale
sincrona (a livello pratico è possibile....vedi i vari programmatori per PIC16F84 che girano sul web
e che usano la COM del PC) avendo un driver opportuno.in questa maniera la velocità di comunicazione
dipende dalla baudrate della COM e non da Labview.come va usata la COM del PC ? software scritto in
C e poi compilato per Labview?
emi
----------------------------------------
================================================================================
xml-rpc
================================================================================
AUTORE: 838
DATA :23/02/2009 - 13:47:33
----------------------------------------
Salve, devo controllare un videoserver e accetta solo comandi in xml-rpc
Esiste qualcosa di già confezionato in labview o occorre crearsi tutto da zero? Ho provato a cercare in rete ma non trovo nulla...
Ogni suggerimento è ben accetto
----------------------------------------
================================================================================
Subpanel
================================================================================
AUTORE: 2435
DATA :23/02/2009 - 16:07:21
----------------------------------------
Ciao a tutti...
Volevo sapere come si può comandare un pulsante presente su un Vi richiamato da subpanel tramite un conrollo presente su il Vi principale....
(e se si può)
Grazie
----------------------------------------
AUTORE: 1078
DATA :24/02/2009 - 07:34:10
----------------------------------------
non so se ho capito bene la tua domanda, ma prova a vedere questo esempio se ti può essere di aiuto...
nel progetto sono presenti 2 VI, VI_1 e VI_2 il VI_1 è il VI principale il secondo quello che sarà comandato.
La tecnica utilizzata è quella dei VI_Server. Attento a chiudere correttamente i riferimenti quando usi questa tecnica, la non chiusura dei riferimenti hai property-node aumenta il consumo di risorse.
Ovviamente entrambe i VI devono girare contemporaneamente...!!!
Se hai altre domande chiedi pure.
Buona Giornata.
----------------------------------------
AUTORE: 2435
DATA :24/02/2009 - 08:18:19
----------------------------------------
Ciao grazie per la risposta.....
vedendo il tuo esempio e uno presente in LV ho fatto quello che volevo...
Il fatto è che sto facedo degli scada che risultno molto complessi e volevo crearmi una struttura "a pagine" per rendere più leggibile flessibile e integrabile il sistema....
Spero di non perdere in fatto prestazioni e velocità del sistea complessivo..
Allego un esempio di quello che intendevo.
----------------------------------------
AUTORE: 1078
DATA :24/02/2009 - 08:47:28
----------------------------------------
Per poter vedere quello che hai postato dovresti inviarlo nuovamente in versione LV8.5...
----------------------------------------
AUTORE: 2435
DATA :24/02/2009 - 08:53:21
----------------------------------------
ok....ciao
----------------------------------------
AUTORE: 1078
DATA :24/02/2009 - 09:40:30
----------------------------------------
Un piccolo accorgimento per risparmiare risorse nel codice che hai postato è quello di sostituire il while-loop che itera sui controlli del front panel con un for-loop con abilitata l'indicizzazione. Il secondo accorgimento è quello di utilizzare un event-structure al posto del while-loop principale temporizzato. Questo permette di "sospendere" il funzionamento del VI fino al click dell'utente risparmiando risorse. Un errore che invece commetti è quello di non chiudere i riferimenti ai property node occupando inutilmente risorse.
Ti posto il VI_1 modificato. Dovrebbe funzionare meglio facendoti risparmiare risorse.
----------------------------------------
AUTORE: 2435
DATA :03/03/2009 - 14:03:28
----------------------------------------
ancora una domanda....
supponiam di ralizzare uno scada
=>nel VI principalesaranno contenuti una serie di cicli while per la gestione dei driver di comunicazione gestione database ecc....
è più conveniente a livello di presatzioni...
1)scrivere tutti i driver ecc direttamente sul vi principale
2)creare dei vi che funzionano per conto loro e poi inglobarli nel vi principale utilizzano i subpanel??
non so se sono stato chiaro
grazie
----------------------------------------
AUTORE: 645
DATA :04/03/2009 - 09:42:20
----------------------------------------
Forse sto per dire una stupidata ma credo che il codice di LabView sia ottimizzato per ridurre al minimo le differenze tra i due tipi di utilizzo indicati, con o senza SubVI (ho capito giusto?).
Forse la difficoltà può stare nel dover scrivere parti di codice che possono essere richiamate contemporaneamente e in questo caso i SubVI rientranti diventano indispensabili.
----------------------------------------
AUTORE: 278
DATA :04/03/2009 - 21:15:47
----------------------------------------
Ciao,
Per rispondere alla tua domanda ti consiglio di creare dei vi che funzionano per conto loro e di gestirli tramite VI server, ovvero dare la possibilita`al tuo applicativo principale di eseguire o interrompere dinamicamente vari "pezzi" di codice.
Per il resto, ti consiglio di parallelizzare il piu` possibile; ritengo indispensabile separare l`interfaccia utente (e relativa gestione della stessa) da tutto cio` che concerne l`automazione del sistema, per esempio il driver di comunicazione database.
Prima di metterti a creare codice, ti consiglio di pianificare per bene l`attivita` che ti presti a realizzare, suddividi il lavoro da svolgere su + subvi e falli lavorare in parallelo ove possibile.
Ricordati che labview sfrutta come pochi altri software le potenzialita` dei processori multicore, cerca di farlo lavorare per benino e vedrai che ti dara` belle soddisfazioni.
Ti segnalo 2 link molto interessanti, tratti dalla community [url=http://decibel.ni.com/content/groups/large-labview-application-development:qufmtkqr]Large LabVIEW Application Development[/url:qufmtkqr] e dal blog [url=http://expressionflow.com/:qufmtkqr]expressionflow[/url:qufmtkqr]:
[url=http://decibel.ni.com/content/groups/large-labview-application-development/blog/2009/01/26/architecting-an-application-to-avoid-spaghetti;jsessionid=82a40f1a30d6ed2eec4d33634380bbd1bdee5f13e1f4.e3mNbNaPb3iNe34TbxaPbhuObNr0n6jAmljGr0:qufmtkqr]Architecting an Application to Avoid Spaghetti[/url:qufmtkqr]
[url=http://expressionflow.com/2007/10/01/labview-queued-state-machine-architecture/:qufmtkqr]LabVIEW Queued State Machine Architecture[/url:qufmtkqr].
Non perderti il secondo, mi raccomando
Buon lavoro
Dario
----------------------------------------
AUTORE: 2435
DATA :06/03/2009 - 07:53:39
----------------------------------------
Grazie....
c'è da perderci tempo per capir ben come implementare il progetto..
----------------------------------------
AUTORE: 278
DATA :06/03/2009 - 23:51:24
----------------------------------------
Bhe, il tempo che dedicherai ad impostare il progetto dipende dalla sua complessita`(ma anche dalla tua esperienza)
Ti ho postato degli esempi complessi, che richiedono tempo per essere acquisiti, ma che una volta "digeriti" ti permetteranno un`enorme flessibilita` operativa.
L`esempio che ti ho suggerito, la Queued State Machine (QSM), e` di una complessita` a mio avviso relativa; se lo studi attentamente, noterai che i 3 vi principali, il main e i subVI 1 & 2, sono praticamente identici, fatta eccezione per la event structure presente nel vi principale.
La forza "principale" di questa struttura e` puo` praticamente crescere a piacere, aggiungendo ulteriori funzioni al programma senza stravolgere l`architettura di fondo.
Certo e` che se non sai usare le code sei spacciato....
ma puo` essere questo il momento giusto per imparare a farlo
In bocca al lupo
Dario
----------------------------------------
AUTORE: 2435
DATA :09/03/2009 - 09:10:58
----------------------------------------
la cosa ottimale per le mie esigenze è quella di inglobare i vi dei processi paralleli tramite sub-panel al VI prinipale..
----------------------------------------
AUTORE: 2435
DATA :10/03/2009 - 07:49:06
----------------------------------------
a proposito.....
come si possono inglobre le interfacce grafiche dei 2 sub VI dell'esempio al Vi principale???
Grazie
----------------------------------------
AUTORE: 2435
DATA :11/03/2009 - 16:04:39
----------------------------------------
Ci sto prendendo un po di mano..... e devo dire che è veramente un'altra cosa
Sia a livello di prestazioni che di ordine del progetto.
Finalmente qualche informazione veramente utile
grazie
----------------------------------------
AUTORE: 278
DATA :11/03/2009 - 19:44:15
----------------------------------------
[quote:15lm9tbb]Finalmente qualche informazione veramente utile [/quote:15lm9tbb]
Felice di esserti stato d`aiuto
Attualmente sto utilizzando la QSM per 2 applicativi abbastanza "grandi" (+ di 300 subvi) e devo dire che non passa giorno in cui non apprezzi la flessibilita` e la potenza di questo "strumento", l`avessi scoperta prima avrei risparmiato veramente un sacco di tempo.
Altra cosa fondamentale, utilizza il project explorer per tirare le fila del tuo progetto.
Ti servira` sia in fase di sviluppo (quando dovrai tenere traccia di tutti i vi) che nella fase di creazione dell`eseguibile.
Buon lavoro.
Dario
----------------------------------------
AUTORE: 2435
DATA :12/03/2009 - 08:44:01
----------------------------------------
Ciao...
Hai a che fare con driver di comunicaz. ecc.....
Io ad esempio mi sono creato un Sub Vi per il driver del WT230(=> come processo parallelo) e lo ho inserito al MAIN tramite un
Subpanel.... in mdo che l'operatore possa controllare e eventualmente modificare i settaggi...
Pensavo di fare la stessa cosa anche con la gestione dei database allarmi ecc....
E' la cosa ottimale?
Cosa mi consigli?
Grazie ancora
----------------------------------------
AUTORE: 278
DATA :12/03/2009 - 19:36:34
----------------------------------------
[quote:2b6bygxt]Pensavo di fare la stessa cosa anche con la gestione dei database allarmi ecc....[/quote:2b6bygxt]
Direi che sei sulla strada giusta
In alcuni casi (ad es driver database) e` inutile avere un`interfaccia grafica di controllo, il driver db e` da intendersi come un servizio a cui "dare in pasto" le query e ricevere i risultati delle stesse, che eventualmente verranno visualizzati o elaborati in altri subvi dedicati (gestione allarmi, log di sistema ecc).
Per la gestione degli allarmi appunto, trovo molto utile avere un pannello stile popup, magari richiamabile tramite il vi principale, che mi permetta di tenere costantemente monitorata la situazione.
Ora devo scappare...
A presto
Dario
----------------------------------------
AUTORE: 2435
DATA :24/03/2009 - 08:39:13
----------------------------------------
Ciao esodar1981....
te hai mai utilizzato la rete di petri nei tuoi progetti???
sai dirmi se ci sono degli esempi in merito?
grazie
----------------------------------------
AUTORE: 278
DATA :25/03/2009 - 21:29:09
----------------------------------------
Ciao,
come procede il tuo lavoro?? Spero bene
Non ho mai usato reti di Petri, almeno non consapevolmente...
Dando un`occhiata veloce a [url=http://it.wikipedia.org/wiki/Rete_di_Petri:1ljo42k9]wikipedia[/url:1ljo42k9] mi sembra di capire che una rete di petri sia qualcosa molto vicino al concetto di "produttore-consumatore" illustrato nell`esempio della QSM postato poco sopra.
In effetti, una macchina a stati e` [i:1ljo42k9]un tipo[/i:1ljo42k9] di rete di petri... e di questo ne so qualcosa
Credo che tu abbia gia` a disposizione degli ottimi strumenti (code e macchine a stati) per implementare quello che ti serve, forse la difficolta` principale che incontri sta nell`impostare il lavoro da svolgere...
Ti suggerisco di formulare meglio la tua domanda aprendo un nuovo post per discutere dall`argomento "rete di petri".
A presto
Dario
----------------------------------------
AUTORE: 2435
DATA :03/04/2009 - 16:37:37
----------------------------------------
Ciao
facendo riferimento all'es qsm-example.zip...
Quando lo avvio mi vengono aperte tutte le finestre dei SUBVI ....
Non riesco renderle invisibili...
Cosa posso fare?
grazie
----------------------------------------
AUTORE: 278
DATA :05/04/2009 - 22:40:57
----------------------------------------
Ciao,
ci ho sbattuto la testa anche io, la soluzione e da ricercarsi nel vi [i:2rufgmyo]FP position and size[/i:2rufgmyo] che viene lanciato nel case di "INITAILIZE" di ogni subvi.
Questo componente definisce dimensione e posizione dei pannelli subvi1,2 e main, oltre a questo ti permette di settare alcune proprieta` di esecuzione, tra cui l`apertura del front panel e un sacco di altre cosucce....
Nel vi originale contenuto nella llb c`e` un booleano "do not open fp" che non e` connesso al connector pane, e che cmq non funziona
Ti allego una versione modificata e corretta..[attachment=0:2rufgmyo]Pos_Dim.zip[/attachment:2rufgmyo]
----------------------------------------
AUTORE: 2435
DATA :06/04/2009 - 13:58:42
----------------------------------------
Ciao....
grazie per aver risposto.
infatti l'esempio non funzionava e avevo già modificato il blocco FP in modo da impostare in automatico la proprietà di visibilità su hidden...
Il fatto è che anche impostando "hidden" le finestre vengono rese visibili nel momento del caricamento...
e volevo risolvere questa cosa...
sembra che prima venga caricato il VI e poi reso invisibile....
----------------------------------------
AUTORE: 278
DATA :07/04/2009 - 08:05:14
----------------------------------------
[quote:3q6r7lyj]sembra che prima venga caricato il VI e poi reso invisibile....[/quote:3q6r7lyj]
è proprio così... quando apri il main, vengono caricati in memoria tutti i subvi contenuti.
----------------------------------------
AUTORE: 2435
DATA :29/07/2009 - 10:19:44
----------------------------------------
Ciao a tutti....
sto realizzando degli scada utilizzando la struttura QSM.
Mi son reso conto che l'esempio QSM example presenta delle complessità in fase di sviluppo
sopratutto per la gestione dell'interfaccia utente.
Inoltre in fase di RUN (una volta installato il pacchetto di installazione) non sempre vengono aperti i SubVI.
Ho postato una modifica e vi chiedo:
1)in queso modo vengono compromesse le prestazioni del sistema?
2)il sistema risulta quindi più lento rispetto all'esempio "QSMexample" precedente?
Grazie
----------------------------------------
AUTORE: 278
DATA :29/07/2009 - 13:25:59
----------------------------------------
Ciao,
[quote:1ui88w34]Mi son reso conto che l'esempio QSM example presenta delle complessità in fase di sviluppo
sopratutto per la gestione dell'interfaccia utente.[/quote:1ui88w34]
Complessità di che tipo???
[quote:1ui88w34]Inoltre in fase di RUN (una volta installato il pacchetto di installazione) non sempre vengono aperti i SubVI.[/quote:1ui88w34]
Scusa ma faccio fatica a seguirti.. potresti essere più chiaro? stai creando un'eseguibile??
----------------------------------------
AUTORE: 2435
DATA :04/08/2009 - 13:14:35
----------------------------------------
Ciao,
cerco di essere più chiaro.
1)Intercettare ad esempio un evento(di un pulsante)per passarne sucessivamente il valore a un Sub vi risulta un po laborioso=>immaginare di gestire un intera interfaccia utente risulta complesso.
2)Avviando l'exe dell'esempio non sempre le finestre dei Sub vi vengono aperte.
----------------------------------------
AUTORE: 278
DATA :04/08/2009 - 14:58:38
----------------------------------------
Ciao, ora è chiaro
1) Gestire un'interfaccia utente [u:7qwflk1x]è complicato e laborioso[/u:7qwflk1x], in un certo senso, per apparire bisogna soffrire
Per intercettare un'evento (mouse o tastiera) hai la struttura eventi, è ovvio che se questo evento corrisponde all'attivazione di un comando Sw dovrai recuperare il riferimento del subVI che lo esegue e passagli gli argomenti...
Ora, non ho la + pallida idea di quello che stai realizzando, per un'applicativo anche semplice, ma fatto bene, il numero di subVI utlizzato può essere relativamente enorme, anche + di 1000.
2) Penso sia solo una questione di visualizzazione, ma non posso dirlo con certezza perchè dipende anche da come hai creato l'eseguibile.
Nell'application builder, alla voce Source file settings puoi settare le proprietà dei vi che compongono il tuo eseguibile, vedi la voce "Set VI properties for all contained items", prova a giocare un pò con queste proprietà.
----------------------------------------
AUTORE: 2435
DATA :21/09/2009 - 08:03:12
----------------------------------------
Ho scoperto perchè i subVI venivano visualizzati all'avvio..
era dovuto al fatto che la impostazione del "Window Appearance" era settata su custom.
Inoltre bisogna impstare un tempo di ciclo anche sui cicli while che gestiscono gli eventi per non impegnare troppo il processore e quindi rallentare il sistema.
----------------------------------------
AUTORE: 4
DATA :22/09/2009 - 13:33:06
----------------------------------------
una curiosità, dici di star costruendo un sw che alla fine diventa uno scada... darai anche ai tuoi utenti la possibilità di costruirsi delle interfacce grafiche? e se si come?
Ciao
----------------------------------------
AUTORE: 2435
DATA :23/09/2009 - 10:55:53
----------------------------------------
Ciao...
no...lo creo tutto io seguendo le indicazioni del cliente..
risulterebbe troppo complicato e forse inutile
----------------------------------------
AUTORE: 2435
DATA :23/09/2009 - 16:39:15
----------------------------------------
Ho aggiunto un esempio di utilizzo di PETRI in una struttura QSM...
Se avete qualche idea per semplificare o migliorare la struttura usata ne sarei molto felice.
----------------------------------------
AUTORE: 2435
DATA :09/03/2011 - 14:08:42
----------------------------------------
Ciao a tutti,
ho fatto vari applicativi usando strutture qsm...volevo un parere secondo voi:
1)è meglio affidarsi a un passaggio dei dati tramite code
2)usare le global variable
??
sia in termini di tempo che di prestazioni del sistema.
grazie
----------------------------------------
AUTORE: 2435
DATA :09/03/2011 - 14:14:12
----------------------------------------
questo è un breve esempio sullo spunto iniziale di cosa comporterebbe usare le GlobalVariable
----------------------------------------
AUTORE: 1078
DATA :10/03/2011 - 15:55:47
----------------------------------------
[quote="nic81_2007":3kpp3owj]Ciao a tutti,
ho fatto vari applicativi usando strutture qsm...volevo un parere secondo voi:
1)è meglio affidarsi a un passaggio dei dati tramite code
2)usare le global variable
??
sia in termini di tempo che di prestazioni del sistema.
grazie[/quote:3kpp3owj]
1) le code sono un po' più laboriose a livello di codice ma sono sicuramente più prestanti, oltretutto hai un controllo maggiore sul dato.
2) le variabili globali sono molto comode mentri programmi ma sono lente e poco prestanti, soprattutto quando ne utilizzi diverse.
Quindi la risposta alla tua domanda è: dipende da dove deve girare l'applicazione e quanto tempo hai per svilupparla. Se devi impiegare poco tempo sono sicuramente migliori le variabili globali mentre se la robustezza del sistema e le sue prestazioni hanno la priorità devi sicuramente usare le code.
Un consiglio: anzichè gestire l'interfaccia grafica con una coda ad un elemento è più prestante usare un notifier.
....e per oggi ho finito!
Buona serata!
----------------------------------------
================================================================================
Creazione Maunuale Online
================================================================================
AUTORE: 1033
DATA :24/02/2009 - 11:12:48
----------------------------------------
Ciao, vorrei creare un manuale on line di un programma che ho fatto. Avendolo fatto in LV mi piacerebbe usare lo stesso tipo do manuale online. Qualcuno sa quale software usa NI per creare i suoi manuali?
Grazie.
----------------------------------------
================================================================================
Ottimizzare codice e spazio in memoria
================================================================================
AUTORE: 2435
DATA :25/02/2009 - 14:09:01
----------------------------------------
Ciao a tutti...
questi sono 3 esempi.. A B C
sapete dirmi qual'è il modo più corretto in termine di prestazioni e memoria occupata
(supponendo una applicazione dove in ogni loop son presenti circa 50 controlli).
grazie
----------------------------------------
AUTORE: 1078
DATA :26/02/2009 - 07:29:09
----------------------------------------
Sicuramente la versione A è la più dispendiosa.
Tra la B e la C invece dipende da una variabile non trascurabile. Quante operazioni devi eseguire sullo stesso controllo e quante volte ne richiami la reference all'interno del tuo codice?
Se richiami più vaolte la reference dello stesso controllo all'interno del tuo codice, è sicuramente meno dispendioso il codice della struttura B. Se poi riesci ad organizzarlo in una State-Machine è ancora meglio.
Se invece richiami la reference dei tuoi controlli una volta sola, come nel tuo esempio solo per cambiargli il valore, allora è sicuramente meglio, in termini di prestazioni, usare la struttura C.
Prego.
----------------------------------------
AUTORE: 1078
DATA :26/02/2009 - 07:59:30
----------------------------------------
Mi sono accorto, riguardando il tuo esempio, che nella struttura B hai commesso un errore non trascurabile in termini di dispendio di risorse. Hai dimenticato di chiudere la reference all'uscito del tuo ciclo while. Usando una state machine invece devi prevedere una funzione "chiudi Reference" che si occuperà della chiusura richiamandola dal VI_MAIN
Buona giornata e.... buon lavoro!
----------------------------------------
AUTORE: 43
DATA :26/02/2009 - 13:45:00
----------------------------------------
[quote="nic81_2007":1s8zb4w8]Ciao a tutti...
questi sono 3 esempi.. A B C
sapete dirmi qual'è il modo più corretto in termine di prestazioni e memoria occupata
(supponendo una applicazione dove in ogni loop son presenti circa 50 controlli).
grazie[/quote:1s8zb4w8]
io opterei per la soluzione D
[attachment=1:1s8zb4w8]Untitled 1.vi[/attachment:1s8zb4w8]
in aggiunta Ti direi di raggruppare i reference dei controlli in array (almeno per tipi uguali fra loro) inmodo che possano essere trattati in loop che sfruttano per es. l'autoindexing
Ricordo che se si vuole fare un aggiornamento di più indicatori in un'unica tornata dentro ad un loop, è ESSENZIALE usare il metodo "deferPanelUpdate".
Tale proprietà che si ottiene dal reference "panel" presente a sua volta fra le proprietà del VI
[attachment=0:1s8zb4w8]untitled1.JPG[/attachment:1s8zb4w8]
Sull'uso di questa proprietà Ti rimando ai manuali LabVIEW
[quote="Ricky":1s8zb4w8]Mi sono accorto, riguardando il tuo esempio, che nella struttura B hai commesso un errore non trascurabile in termini di dispendio di risorse. Hai dimenticato di chiudere la reference all'uscito del tuo ciclo while. Usando una state machine invece devi prevedere una funzione "chiudi Reference" che si occuperà della chiusura richiamandola dal VI_MAIN
Buona giornata e.... buon lavoro![/quote:1s8zb4w8]
Secondo me invece non è un errore così grave... nel senso che se utilizzi un riferimento di un controllo e non lo chiudi se non al termine dell'esecuzione della tua applicazione, non dovrebbe aumentare il consumo di memoria, e poi, un conto è l'[b:1s8zb4w8]apertura[/b:1s8zb4w8] esplicita di un qualunque oggetto (file, VI o qualunque altra risorsa) che deve essere controbilanciata da una necessaria funzione di [b:1s8zb4w8]chiusura[/b:1s8zb4w8] e un altro conto è l'ottenimento di un riferimento senza l'esplicita operazione di apertura... Altrimenti sarebbe un problema anche gestire variabili locali....
bye
----------------------------------------
AUTORE: 1078
DATA :26/02/2009 - 14:20:56
----------------------------------------
[quote="paracarro":1l08ky9b]
Secondo me invece non è un errore così grave... nel senso che se utilizzi un riferimento di un controllo e non lo chiudi se non al termine dell'esecuzione della tua applicazione, non dovrebbe aumentare il consumo di memoria, e poi, un conto è l'[b:1l08ky9b]apertura[/b:1l08ky9b] esplicita di un qualunque oggetto (file, VI o qualunque altra risorsa) che deve essere controbilanciata da una necessaria funzione di [b:1l08ky9b]chiusura[/b:1l08ky9b] e un altro conto è l'ottenimento di un riferimento senza l'esplicita operazione di apertura... Altrimenti sarebbe un problema anche gestire variabili locali....
bye[/quote:1l08ky9b]
In realtà sia nei manuali LV che nei corsi della national indicano che la mancata chiusura delle reference comporta un dispendio di memoria maggiore rispetto alla loro corretta chiusura. Ovviamente per ogni reference aperta il tutto si tramuta in pochi byte, con tante reference (come indicato negli intenti di nic81) potrebbe diventare qualcosa di percettibele. Dipende anche dalla distribuzione effettiva del codice....
----------------------------------------
AUTORE: 43
DATA :26/02/2009 - 17:14:11
----------------------------------------
[quote="Ricky":1l7dkv7q]
In realtà sia nei manuali LV che nei corsi della national indicano che la mancata chiusura delle reference comporta un dispendio di memoria maggiore rispetto alla loro corretta chiusura. Ovviamente per ogni reference aperta il tutto si tramuta in pochi byte, con tante reference (come indicato negli intenti di nic81) potrebbe diventare qualcosa di percettibele. Dipende anche dalla distribuzione effettiva del codice....[/quote:1l7dkv7q]
c'è reference e reference
http://wiki.lavag.org/Control_References
cmq l'uso di reference generati dal controllo stesso non implicano l'uso della close perchè non comportano allocazione.
bye
----------------------------------------
AUTORE: 43
DATA :26/02/2009 - 17:20:11
----------------------------------------
http://wiki.lavag.org/Control_References
leggere [Basic Usage] ---> [Costant]
bye
----------------------------------------
================================================================================
Rendere preciso un ciclo while
================================================================================
AUTORE: 2435
DATA :26/02/2009 - 15:10:41
----------------------------------------
Ciao....
ho un driver per PLC contenuto in un while il quale viene rihiamato ogni 100ms
il problema è che per lagestione del driver il ciclo si rallenta....
Cosa posso fare?
grazie
----------------------------------------
AUTORE: 43
DATA :26/02/2009 - 15:44:41
----------------------------------------
[quote="nic81_2007":3ajq6pt8]Ciao....
ho un driver per PLC contenuto in un while il quale viene rihiamato ogni 100ms
il problema è che per lagestione del driver il ciclo si rallenta....
Cosa posso fare?
grazie[/quote:3ajq6pt8]
se il sistema operativo sul quale gira la tua applicazione è windows, nessuno ti potrà mai garantire che fra una chiamata ad un subVI e la successiva possano passare esattamente 100ms o che ciò possa accadere ripetutamente un' infinito numero di volte...
Una soluzione approssimativa consiste nel fare questa chiamata in un loop che esegue solo questa operazione. Il loop deve essere temporizzato usando un "timed loop" oppure con un "metronomo" (wait Until Next ms Multiple)
----------------------------------------
================================================================================
Come convertire un vi da 5.1 a 8.0???
================================================================================
AUTORE: 2435
DATA :27/02/2009 - 08:15:12
----------------------------------------
Ciao a tutti ho dei driver in 5.1 dovrei convertirli in 8.5....
ma labview mi dice che sono troppo "old" per aprirli cosa posso fare?
grazie
----------------------------------------
AUTORE: 2435
DATA :27/02/2009 - 09:21:48
----------------------------------------
niente..... mi son fatto fare una conversione in LV 7.1 e pi sono passato in 8.5
scusate
----------------------------------------
================================================================================
Waveform chart & History data
================================================================================
AUTORE: 2569
DATA :03/03/2009 - 14:32:30
----------------------------------------
Ciao a tutti,
ho qualche domanda da fare (scusate il livello, ma è davvero poco che uso LabView). Io ho una Waveform Chart da cui vorrei estrarre i dati in funzione del tempo in modo da stamparli su un file.
Ho usato il Property node "History Data", che più o meno fa quello che mi serve, ma imposta di default un dt=0,001 cioè registra un campione ogni ms...è modificabile questo valore? Posso ad esempio averne uno ogni 10 ms? Nel caso è possibile avere un controllore sul Front Panel con cui impostare tale valore?
Grazie mille per l'aiuto!
Casa
----------------------------------------
================================================================================
Creazione di un array n-dimensionale
================================================================================
AUTORE: 2570
DATA :03/03/2009 - 16:45:52
----------------------------------------
Ciao Ragazzi,........ho un problema
non riesco a creare un array n-dimensionale, praticamente acquisico un segnale in tensione con una frequenza dd 50 Hz e vorrei un array che sulla prima colonna mi riporti una numerazione e sulla seconda colonna mi riporti valori in tensione es:
1 0,3V
2 0,4V
3 0,009 V ecc....
Riesco a generare un array che mi scrive i primi due valori sulla prima riga ma non li salva e sovrascrive la seconda riga alla prima e cosi via, invece vorrei che si generasse un array con 2 colonne e con n righe ( con n grande il tempo di acquisizione che non è costante e varia ogni set di esperimenti)....
Potete aiutarmi
Grazie e ciaaaaaaaaaaaoooooooooo
----------------------------------------
AUTORE: 1124
DATA :04/03/2009 - 07:33:16
----------------------------------------
ciao
prova questo vi.
dovrai sostituire il genertatore random con il valore che deriva dalla acquisizione.
----------------------------------------
================================================================================
Movimento slitte xy
================================================================================
AUTORE: 2565
DATA :04/03/2009 - 09:18:01
----------------------------------------
Salve a tutti,
sono un nuovo iscritto e da poche settimane sono alle prese con labview per un lavoro di tesi.
Dovrei riuscire a pilotare delle slitte xy (collegate tramite porte seriali) per la scansione laser di un oggetto,potreste aiutarmi ad impostare il programma almeno per quanto riguarda il movimento delle slitte lungo gli assi?
Ringrazio anticipatamente per l'attenzione.
----------------------------------------
AUTORE: 645
DATA :04/03/2009 - 09:37:34
----------------------------------------
Ciao!
Credo che qualche info in più possa aiutarci nel capire il problema... Quale hardware hai a disposizione? Il collegamento delle slitte al pc (controlli con un computer?) come avviene?
OOppSs: scusa ho visto la parola "seriali" dopo...
Hai un protocollo seriale di comunicazione con il quale puoi comandare le slitte?
Dai un'occhiata ai comandi VISA, Write e Read soprattutto.
E anche al blocco di configurazione della porta seriale.
Se sbirci nel forum trovi un po' di post su questo argomento!
----------------------------------------
AUTORE: 2565
DATA :04/03/2009 - 09:51:57
----------------------------------------
Grazie,quindi come primo step cerco di far comunicare le slitte e il pc cn la porta seriale,ho trovato già qualche info nel forum.
----------------------------------------
AUTORE: 1168
DATA :04/03/2009 - 12:50:45
----------------------------------------
Ciao! All'epoca avevo fatto qualcosa del genere in visual basic...
Quando sei riuscito a comunicare per bene con le slitte devi decidere come effettuare la scansione.... nel senso che puoi procedere in diversi modi:
1-puoi scansionare una linea per volta ossia aompleti la linea a y=0, poi incrementi y di uno e riparti col moto verso x in direzione inversa (una psecie di greca)
2- a spirale dai bordi
3- a spirale dal centro.
Non so bene cosa devi farci... io facevo una spirale dal centro "veloce" (grandi incrementi di passi), mi ricentravo sul massimo e poi sempre dal centro una spirale lenta. Questo perchè dovevo avevo un raggio laser che mi arrivava "da lontano" in spazio libero e quindi mi bastava fare acquisizione fino a una caduta del 90% dell'intensità rispetto al massimo.
Ciao
P!
----------------------------------------
================================================================================
Ho bisogno di una mano!!!
================================================================================
AUTORE: 2533
DATA :04/03/2009 - 18:02:42
----------------------------------------
Ciao a tutti,
ho un problema.Sto cercando di implementare un filtro passabanda in labview.Il mio obiettivo è quello di ottenere il grafico di risposta del filtro(come il lobo principale di un sinc).Vorrei utilizzare il Butterrworth Filter e ponendo come miei controlli la frequenza di taglio inferiore e quella di taglio superiore.Come posso fare?In sostituzione potrei invece usare il Digital IIR filter tenendo presente che le frequenze di taglio sup e inf le ricavo da due controlli del mio VI:la frequenza centrale e la banda del suddetto filtro da me fissate?Sapreste darmi delle dritte?io non sono molto pratica di labview ma se non risolvo questo problema non posso andare avanti con il VI..e sarei letteralmente nei guai!per favore aiutatemi.Grazie a tutti
----------------------------------------
AUTORE: 1124
DATA :05/03/2009 - 10:26:56
----------------------------------------
ciao
non mi è chiaro se il problema è l'uso del filtro che trovi in libreria o se invece non sai come ottenere la curva di risposta (il grafico immagino) in funzione della variazione dei valori delle frequenze.
Nel primo caso posso solo suggerirti di leggere l'help della funzione, mentre nel secondo dovresti inserire il filtro all'interno di un ciclo (un for annidato) dove fai variare in modo continuo e a passi discreti i valori delle frequenze. L'uscita del filtro la mandi ad un array e al termine prendi i valori dall'array e li mostri in un grafico.
Chiedo scusa se invece non ho capito e ti ho fatto anche perdere tempo.
----------------------------------------
AUTORE: 2533
DATA :09/03/2009 - 16:45:13
----------------------------------------
Il mio problema è il grafico di risposta del filtropassabanda.Utilizzando il Butterworth Filter,pur avendo consultato l'help,
e avendo inserito il tutto in un ciclo for con temporizzatore,non riesco a visualizzare nulla.Help sono nel pallone!
----------------------------------------
AUTORE: 1124
DATA :10/03/2009 - 07:11:54
----------------------------------------
ciao
durante l'esecuzione al filtro vengono passati parametri corretti ed escono dei valori?
potresti mostrare il block diagram del programma?
riesci ad allegare il programma in versine 7.11 o precedenti?
----------------------------------------
AUTORE: 2533
DATA :11/03/2009 - 10:58:25
----------------------------------------
Innanzitutto voglio ringraziarti per il tuo interessamento!:)
Ti allego parte del VI del mio progetto.Le frequenze di taglio sup e inf del filtro le ricavo dalla frequenza centrale e dalla banda del filtro (impostate da me).
Non riesco a capire inoltre quanto vale il gain o guadagno del filtro dato che voglio:ottenere in uscita un grafico ad ampiezza unitaria o eventualmente,se così non fosse,dividere proprio per quel valore del guadagno.
ps.:Tieni presente che il ciclo for,impostato così,non è proprio corretto dato che ho omesso alcuni particolari che riguardano n ed i ma che ai fini del filtro interessano ben poco.Grazie ancora.
[attachment=0:kbeqjf2l]filtro passabanda.vi[/attachment:kbeqjf2l]
----------------------------------------
AUTORE: 2542
DATA :11/03/2009 - 12:26:30
----------------------------------------
[quote="michelle83":3kqt4awn]
Non riesco a capire inoltre quanto vale il gain o guadagno del filtro dato che voglio:ottenere in uscita un grafico ad ampiezza unitaria o eventualmente,se così non fosse,dividere proprio per quel valore del guadagno.
[attachment=0:3kqt4awn]filtro passabanda.vi[/attachment:3kqt4awn][/quote:3kqt4awn]
Scusami michelle, ma perchè vorresti normalizzare??
Comunque il guadagno di un Butterworth, come per una qualsiasi rete lineare, lo trovi facendo un V_o/V_i.
Nel tuo caso è del tipo G(w)^2=|T(jw)|^2=1/(1+w^6) dove "w" è la pulsazione e T è la funzione di trasferimento.
Per maggiori dettagli sulla sintesi dei filtri dai un'occhiata al "[b:3kqt4awn]Filter theory and design:active and passive[/b:3kqt4awn]" (Sedra, Brackett 1978).
Ciao
----------------------------------------
AUTORE: 1124
DATA :11/03/2009 - 13:06:28
----------------------------------------
ciao
non vorrei essere banale, ma nel tuo esempio mancano i dati in ingresso al filtro.
io li ho aggiunti simulando un segnale sinusoidale con a 10.1 Hz, e ovviamente ottengo un risultato ragionevole.
prova a far girare il vi allegato
----------------------------------------
================================================================================
Problema asse ascisse grafico.
================================================================================
AUTORE: 2435
DATA :05/03/2009 - 08:47:55
----------------------------------------
Ciao a tutti...
vorrei aver la possibilità di sciegliere il tipo di dati da utilizzare come valori dell'asse X.
Nell'allegato è evidente il mio problema.
Ci sto sbattendo un po la testa....qualcuno sa come posso fare???
grazie
----------------------------------------
AUTORE: 43
DATA :05/03/2009 - 17:07:18
----------------------------------------
[quote="nic81_2007":yvm9v9fl]...Ci sto sbattendo un po la testa....qualcuno sa come posso fare???[/quote:yvm9v9fl]
Niente di + banale
Spiegazione di [b:yvm9v9fl]come ottenere un array di double[/b:yvm9v9fl] (contenente il tempo in valore assoluto)[b:yvm9v9fl] da un array di timestamp[/b:yvm9v9fl]
1 )andare nel diagramma del Vostro VI
2 )clickate col tasto dx del mouse sul controllo/indicatore che rappresenta l'array di timestamp
3 )dal menu scegliete "Create ==> Constant"
4 )dall'array di timestamp creato nello step orecedente, estraete un singolo elemento
clickando nel centro dell'array di timestamp e trascinando il contenuto all'esterno
5 ) cancellate l'array vuoto (colore nero). Ora vi è rimasta le costante timestamp di default che vale "0"
6 ) create nei pressi dell'array di timestamp il blocchetto della sottrazione "programming ==> Numeric ==> Subtract"
7 ) collegate nell'ingresso superiore del blocchetto "subtract" l'array di Timestamp
8 ) collegate nell'ingresso inferiore del blocchetto "subtract" la costante di tipo Timestamp
9 ) nell'uscita del blocchetto di subtract avete l'array di double contenente i timestamp convertiti in numerico da usare per i grafici.
[quote="nic81_2007":yvm9v9fl]grazie[/quote:yvm9v9fl]Prego!
PS: sconsiglio di usare timestamp assoluti sull'asse delle ascisse.
----------------------------------------
AUTORE: 2435
DATA :06/03/2009 - 08:01:06
----------------------------------------
grazie...
per me nn era così banale
----------------------------------------
AUTORE: 2435
DATA :06/03/2009 - 10:39:56
----------------------------------------
ma......senza usare time stmp assoluti sull'asse delle ascisse come posso visualizzare la date e ora??
grazie
----------------------------------------
AUTORE: 2435
DATA :06/03/2009 - 10:49:04
----------------------------------------
niente mi so perdendo nell stupidagini...
grazie lo stesso
----------------------------------------
AUTORE: 43
DATA :06/03/2009 - 11:19:27
----------------------------------------
[quote="nic81_2007":3ntnhntv]ma......senza usare time stmp assoluti sull'asse delle ascisse come posso visualizzare la date e ora??[/quote:3ntnhntv]
"Ti ringrazio per la domanda" come diceva il mio caro amico Marassi
Si sa che oltre al tempo "assoluto" esiste il tempo "relativo".
Lo puoi trovare anche nei "tipi" possibili di configurazione degli assi dei grafici.
tutto dipende da cosa si vuole visualizzare nel grafico.
Se il range del Tuo grafico è nell'ordine delle ore per es., probabilmente campionerai le tue grandezze con freq. dell'ordine dei minuti e sarebbe perfettamente inutile visualizzare giorno mese e anno sull'asse delle ascisse. Meglio visualizzare la data "a parte", nei pressi del grafico.
le rappresentazioni dei tempi devono essere "proporzionate" ai range di visualizzazione del grafico ed in particolare con il "periodo" (inverso della freq.) di campionamento
Estremizzando l'esempio: supponi di campionare alla freq di 1 kHz e di visualizzare 2 sec. di acquisizione, cioè 2000 campioni.
Pensi veramente che un operatore apprezzi la visualizzazione di data ora minuti e secondi sull'asse X quando deve apprezzare a zoommare ed a misurare per esempio la distanza tra 2 picchi?
è un po' come rappresentare in Km misure di lunghezza nell'ordine dei mm
e poi
[u:3ntnhntv][b:3ntnhntv]Hai mai visto visualizzate su un oscilloscopio data ora e minuti sulle tacche dell'asse dei tempi?[/b:3ntnhntv][/u:3ntnhntv]
mettere il timestamp assoluto sulle tacche di un grafico ha senso solo per visualizzazioni di grandezze campionate a freq. bassissime tipo un campione ogni ora che equivale ad avere 24 campioni al giorno cioè ad un range di visualizzazione possibile di giorni...
bye
----------------------------------------
================================================================================
Fare la media di dati acquisiti con DAQassistant
================================================================================
AUTORE: 2478
DATA :05/03/2009 - 15:53:59
----------------------------------------
Devo visualizzare una media di 50 campionamenti successivi di una temperatura.
La temperatura la acquisisco con DAQassistant.
Ogni 2sec. devo visualizzare questo valore medio.
Avevo pensato a un ciclo for che accumuli in una variabile le singole misure e poi divida per 50 al termine del ciclo for, ma l'uscita DATA di DAQassistant non è di tipo float...
----------------------------------------
AUTORE: 2542
DATA :11/03/2009 - 12:52:05
----------------------------------------
Ciao franziski
non ho mai usato il DAQ Assistant però non credo cambi molto da un VISA.
La filosofia è: un ciclo For per acquisire i 50 campioni (uno shift register inizializzato a 0 tiene memoria dei campioni precedenti), alla fine del ciclo for butti tutto dentro un operatore divisione e dividi per 50.
Il fatto che il DAQ non ti dia un'uscita Float non dovrebbe darti alcun problema.
Ora per visualizzare la media ogni due secondi puoi utilizzare una struttura Stacked dove nel primo quadrante metti il ciclo For, nel secondo quadrante un Wait Until Ms Multiple e nel terzo una variabile locale che butta il risultato in un visualizzatore (grafico o numerico, come preferisci).
Naturalmente questo impone che nel primo frame della Stacked Str. tu inserisca un visualizzatore nascosto (tasto destro sul Numeric Indicator, seleziona "Hide") a cui puntare la variabile locale che metterai nel terzo frame.
Se vuoi che il programma giri ininterrottamente (altrimenti ogni 50 acquisizioni, e quindi ad ogni media calcolata si ferma) racchiudi tutto in un while con un bel tasto di controllo per lo Stop
ciao
----------------------------------------
================================================================================
Come passare i valori di un array a un array di ring
================================================================================
AUTORE: 2435
DATA :06/03/2009 - 16:54:07
----------------------------------------
Ciao a tutti....
Ho una "array1" di stringhe e un "array2" di controlli ring...
dovrei inizizlizzare la proprietà String[] di ciascun ring dell' "array2" con i valori dell'"array1"..........
come fare???
----------------------------------------
AUTORE: 645
DATA :09/03/2009 - 16:07:22
----------------------------------------
Prova a descrivere un po' meglio quello che devi fare...
----------------------------------------
AUTORE: 43
DATA :10/03/2009 - 06:19:21
----------------------------------------
[quote="nic81_2007":onfrng1z]Ciao a tutti....
Ho una "array1" di stringhe e un "array2" di controlli ring...
dovrei inizizlizzare la proprietà String[] di ciascun ring dell' "array2" con i valori dell'"array1"..........
come fare???[/quote:onfrng1z]
dentro un "array" posto nel FP, tutti le proprietà di ogni singolo elemento visibile, assumono lo stesso valore, con eccezione di "value" ovviamente.
Basta, come immagino abbia già fatto, modificare la proprietà "Strings[]" di un singolo elemento dell'array e tutti i ring saranno automaticamente modificati.(da FP tasto dx, su uno dei ring visibili dell'array e poi create --> property
Lo stesso varrebbe anche se il ring, per es.,fosse in un cluster (array di cluster che contiene un ring)
Mentre nel caso il ring sia di tipo StrictTypedef la modifica non funzionerebbe
Attenzione a considerare bene questa modifica: i ring sono controlli numerici, per cui,cambiando Strings[] , tutte le stringhe visualizzate nell'array varieranno in corrispondenza del valore contenuto nel singolo elemento
bye
----------------------------------------
================================================================================
Aiuto Grafico ascisse
================================================================================
AUTORE: 2576
DATA :07/03/2009 - 10:50:33
----------------------------------------
Salve a tutti,
sono un novizio di Labview e avrei bisogno di una dritta.
Sto usando XY Graph per plottare una grandezza che varia in funzione dei giorni dell'anno.
Quindi il mio asse delle ascisse varia da 0 a 365. Quello che voglio fare, sempre se possibile, è eliminare dalle
ascisse la visualizzazione dei numeri e visualizzare invece i nomi dei mesi dell'anno. Inoltre vorrei sapere se è possibile personalizzare la
griglia del grafico(per aggiungere una linea verticale al termine di ogni mese). Spero di essere stato chiaro.
Grazie
----------------------------------------
AUTORE: 2589
DATA :26/03/2009 - 15:00:50
----------------------------------------
Ciao Davide,
potresti customizzare la scala dell'asse x del grafico cliccando con il tasto destro del mouse sul grafico stesso e selezionando Properties. Nel tab "Display format", seleziona "Absolute Time" e "Advanced editing mode". Qui, inserisci %<%B>T come format string (per avere il tempo espresso solo in mesi sull'asse x).
Spero che questo possa andare bene per la tua applicazione consentendoti di ottenere l'effetto desiderato!
Ciao!
----------------------------------------
================================================================================
Sub vi con array come input
================================================================================
AUTORE: 2576
DATA :07/03/2009 - 15:46:34
----------------------------------------
Salve
è possibile creare una sub vi che prenda in ingresso un array di double?
Se si come?
----------------------------------------
AUTORE: 645
DATA :09/03/2009 - 16:04:26
----------------------------------------
Sì che si può... L'importante è che nel subVI ci sia un array di double da riempire.
----------------------------------------
================================================================================
Aiuto conversione esadecimale --> ASCII
================================================================================
AUTORE: 2577
DATA :09/03/2009 - 11:13:33
----------------------------------------
Salve a tutti, sono nuovo del forum e mi chiamo Giuseppe.
Premetto che ho cominciato solo da una ventina di giorni ad usare Labview, quindi sono proprio alle prime armi e mi scuso in anticipo se farò delle domande banali o non userò un linguaggio appropriato
Vengo al dunque: sto realizzando un programmino che permetta la configurazione e l'acquisizione di dati campionati (attraverso Bluetooth) di 3 segnali in uscita ad un accelerometro, usando un trasmettitore B.T. che integra al suo interno un converitore A/D a 12bit.
Questo trasmettitore deve essere configurato correttamente prima di poter cominciare a "spedire" campioni, mediante l'invio di pacchetti opportunamente costruiti: in alcuni casi devo spedire una stringa "costante" nel senso che è sempre quella indipendentemente dalle necessità di acquisizione.
In altri casi questa stringa va costruita, ad esempio quando devo passare in input le informazioni che riguardando il numero di canali da campionare e la freq.di campionamento scelta.
Queste stringhe le devo spedire in ascii al dispositivo, ma le devo scrivere sul pannello in esadecimale.
Nel caso di stringhe costanti ho risolto scrivendola in esadecimale e poi tasto destro "normal display", mentre non so come fare nell'altro caso.
Ho realizzato un pannellino che costruisce opportunamente la stringa in esadecimale però poi non sò come inviare quella concatenata (che è sempre esadecimale) in ascii.....
Potete aiutarmi?
Sperando di essere stato abbastanza chiaro, allego il pannello realizzato in modo che si possa capire meglio di cosa sto parlando.
Ringrazio in anticipo chi volesse aiutarmi
----------------------------------------
AUTORE: 2577
DATA :10/03/2009 - 16:44:39
----------------------------------------
Credo di aver risolto: grazie comunque
----------------------------------------
================================================================================
Aiuto Tesi: acquisizione immagini ed elaborazione!
================================================================================
AUTORE: 2542
DATA :10/03/2009 - 17:10:33
----------------------------------------
Cari amici,
eccomi qui a chiedere aiuto nuovamente a voi.
Ho bisogno di un suggerimento. Ho finito il mio lavoro teorico di tesi (tema centrale le Ondine, alias wavelets) e ora mi tocca sviluppare un esempio di applicazione pratica.
La mia idea è acquisire un immagine con labview ed elaborarla prima attraverso una FFT e poi attraverso una DWT (per mostrare così analogie, differenze, vantaggi/svantaggi).
Ora però avrei bisogno della vostra esperienza.
Che cosa mi occorre per importare in LabVIEW 8.6 un'immagine e processarla??
Per quanto riguarda la fase di elaborazione ho visto che il modulo Advanced Signal Processing Toolkit dovrebbe offrire gli strumenti adatti per l'elaborazione, ma per quanto riguarda l'acquisizione??
Che modulo mi serve? Ma soprattutto, sapreste darmi suggerimenti o indicarmi un tutorial che mi guidi passo passo nell'acquisizione di immagini in LabVIEW? Cercando sul forum ho trovato una discussione simile alla mia dove veniva suggerito NI-Vision (viewtopic.php?f=1&t=3461&p=15156&hilit=immagini#p15156). Dopo svariate ricerche sono incappato in un NI Vision Development Module: è il toolbox di cui ho bisogno??
Un grazie di cuore a quanti sapranno darmi una mano.
Nico
----------------------------------------
AUTORE: 2542
DATA :11/03/2009 - 12:05:54
----------------------------------------
Dunque ragazzi lo spettro delle problematiche si restringe
Sono riuscito mediante l'uso di esempi a capire come acquisire immagini (lavoro su immagini scala di grigi 8bit).
[attachment=2:c337g9n4]Lettura immagini.vi[/attachment:c337g9n4]
Ora il problema è processarle.
I blocchi FFT e DWT vogliono in ingresso un vettore. Quindi il problema si sposta alla conversione dell'immagine in Array.
Nella documentazione ho trovato il blocco Imaq Imagetoarray, ma non riesco a farlo funzionare.
[attachment=0:c337g9n4]LabVIEW.pdf[/attachment:c337g9n4]
Ho guardato l'esempio allegato alla documentazione ma ad essere sincero no ho capito tanto
[attachment=1:c337g9n4]picture_to_imaq_image_lv71.vi[/attachment:c337g9n4]
Aiuti?? suggerimenti??
grazie
----------------------------------------
AUTORE: 2542
DATA :11/03/2009 - 14:57:36
----------------------------------------
Dunque ragazzi ce l'ho fatta.
Ora sono allo scoglio finale : se volessi rappresentare in un grafico i coefficienti di Fourier quindi lo spettro, come posso fare?
Ho provato a buttarli in una matrice per poi rappresentarli su un Waveform Chart, però si pianta il computer e non riesco a visualizzarli.
C'è un modo più rapido per ottenere la stessa cosa?
----------------------------------------
AUTORE: 2583
DATA :19/03/2009 - 13:35:43
----------------------------------------
ciao nico.sime puoi perfavore trasformare i tuoi vi per LV 8.2
grazie.
----------------------------------------
================================================================================
PRENDERE SINGOLO BIT DA UN NUMERO DA 7 BIT
================================================================================
AUTORE: 2578
DATA :12/03/2009 - 19:13:07
----------------------------------------
Salve a tutti ,
Sto cercando di fare un software che dialoghi tramite la LPT con un ADC seriale a 12 bit e lo schema da me fatto è il seguente :
[img:2bv82gqk]http://rapidshare.com/files/208444252/ADC.JPG.html[/img:2bv82gqk]
Il mio problema è che ora devo prendere il bit3 di ogni shift register (valori letti sul pin15 379H della LPT) per poi unirli per generare un unico numero che sarà il valore in binario della conversione del mio DAC .
Se potete aiutarmi perchè sono bloccato da questo problema , intanto grazie in anticipo .
----------------------------------------
AUTORE: 2578
DATA :12/03/2009 - 19:29:04
----------------------------------------
Riprovo a mettere l'immagine
[img:1pc6y6o7]http://rapidshare.com/files/208457794/ADC.JPG[/img:1pc6y6o7]
----------------------------------------
AUTORE: 2578
DATA :12/03/2009 - 19:34:55
----------------------------------------
Ora ho capito !!!
Scusate ma è la prima volta che lo faccio
[img:22cgp27c]http://rs784l33.rapidshare.com/files/208462496/59777/ADC.JPG[/img:22cgp27c]
----------------------------------------
AUTORE: 645
DATA :13/03/2009 - 09:15:51
----------------------------------------
Ciao... se puoi posta la soluzione che sicuramente potrà essere utile ad altri!
----------------------------------------
AUTORE: 2578
DATA :16/03/2009 - 13:14:37
----------------------------------------
Con imageshack credo funzioni ...
[url=http://img410.imageshack.us/my.php?image=adc.jpg:265uc368][img:265uc368]http://img410.imageshack.us/img410/3562/adc.th.jpg[/img:265uc368][/url:265uc368]
Come si vede nell'imagine i bit cerchiati in rosso(ho cerchiato solo i primi 3 ma bisogna prenderli su tutti i shiftregister) sono quelli che vorrei isolare per poi metterli assimeme per creare una cifra binaria a 12 bit ,che sarà il risultato in binario della conversione del DAC seriale .
Per favore aiutatemi perchè sono bloccato per questo problema .
----------------------------------------
AUTORE: 43
DATA :19/03/2009 - 00:47:51
----------------------------------------
[quote="Mayo":3usazfus]...
Come si vede nell'imagine i bit cerchiati in rosso(ho cerchiato solo i primi 3 ma bisogna prenderli su tutti i shiftregister) sono quelli che vorrei isolare per poi metterli assimeme per creare una cifra binaria a 12 bit ,che sarà il risultato in binario della conversione del DAC seriale .
Per favore aiutatemi perchè sono bloccato per questo problema .[/quote:3usazfus]
Allora
Prima di tutto la sincronizzazione
1) esegui un loop facendo delle "Out port" non sincronizzate con le "IN Port".
Meglio: se nel diagramma metti "a sinistra" di un blocchetto un altro blocchetto senza che ci siano dei fili che li uniscano o senza che appartengano a frame diversi, NON HAI NESSUNA CERTEZZA CHE IL VI DI SX SIA ESEGUITO PRIMA DI QUELLO PIU' A DX .
2) Non hai specificato se il primo bit del risultato della conversione che viene trasmesso è il + significativo oppure no.
Nel VI che ho postato prevedo entrambe le soluzioni.
Nel caso cominci dal + significativo suppongo che si tratti del bit 11 (dodicesimo bit)
3) Non hai minimamente spiegato il funzionamento dell' invio dei dati per cui ho proceduto per intuito:
All'inizio si invia 0 per resettare la comunicazione, in seguito si tiene alto il bit 1 (CS) per tutta la durata della lettura di una conversione ADC completa (12 letture di 1 bit ciascuna).
Per indicare che che si è pronti a leggere un bit, bisogna dare un "colpo di clock" ponendo il bit 0 in uscita prima basso e poi alto (0 e poi 1). Non è chiaro se il bit diventa disponibile della lettura sul fronte di salita o di discesa del segnale digitale, ma cmq dovrebbe bastare quanto fatto altrimenti si potrebbe invertire la sequenza (1 e poi 0)
Ho messo un ritardo fra le OUT e la IN port anche se suppongo sia perfettamente inutile.
4) Sicuramente è inutile temporizzare il loop (ciclo FOR) visto che la lettura della conversione è un'operazione atomica e andrebbe eseguita con la massima velocità, dovendo durare molto poco tempo...
L'esempio che ho postato qui sotto, che spero sia funzionante, è già un subVI da inserire in un altro VI magari dentro un ciclo (immagino lettura di una grandezza lenta tipo temperatura)
[attachment=0:3usazfus]mayo_subVI.vi[/attachment:3usazfus]
bye
----------------------------------------
AUTORE: 2578
DATA :19/03/2009 - 10:07:02
----------------------------------------
Ciao , grazie per l'aiuto , non mi aspettavo che mi creassi uno schema completo e non ho dato maggiori dettagli appunto perchè al momento il mio problema era solo la gestione dei dati ricevuti dall'ADC .
Comunque il componente da me usato è il MAX1241 e questa è la sua sequenza tempistica :
[url=http://img25.imageshack.us/my.php?image=timingsequence.jpg:3nmgwit3][img:3nmgwit3]http://img25.imageshack.us/img25/4859/timingsequence.th.jpg[/img:3nmgwit3][/url:3nmgwit3]
Però bisogna tenere conto che i pin 1 e 14 sono negati sull'LPT e pisogna stare attenti al tempo che gli serve allADC per la conversione 7,5uS prima di partire con gli impulsi di CK .
Grazie ancora ora mi studio un po' lo schema che mi hai fatto perchè sono un po' alle prime armi .
Questa scheda è una piccola parte di un DAQ che vorrei costruire con 8 ingressi ADC a 12bit multiplexati con il CD4051 , poi con i pin della porta 378H voglio gestire 8 uscite TTL e con i restanti pin 20,12,13,15 della porta 379H gestire 4 ingressi .
Pensate che sia troppo complicato per uno alle prime armi con LabView !?
----------------------------------------
AUTORE: 2578
DATA :19/03/2009 - 20:53:34
----------------------------------------
Funziona !!!
Ho dovuto però invertire le due costanti binarie sulle due out port (LPT) all'interno del ciclo for perchè quando la tensione inviata all'ADC era a zero in uscita alla fine del ciclo su "1st bit higher" mi visualizzava "100000000000" e su "1st bit lower" visualizzava "1" , comunque va bene la visualizzazione su "1st bit higher" .
Grazie infinite .
Se qualcuno vuole posso postare lo schema elettrico perchè una scheda del genere va benissimo per fare i primi esperimenti con questo software spendendo pochi soldi per la costruzione .
L'ho fatta in modo che con un Jumper si possa selezionare se leggere da un sensore di temperatura(LM35) o da un connettore dove si vuole leggere una tensione continua .
Ora la implemeterò in modo da avere 8 ingressi multiplexati leggendo sullo stesso ADC , so già che dovrò chiedere aiuto con il software quindi portate pazienza .
----------------------------------------
================================================================================
Visualizzazione byte spediti da dispositivo Bluetooth
================================================================================
AUTORE: 2577
DATA :13/03/2009 - 10:36:04
----------------------------------------
Salve a tutti e buona giornata:) Qualche giorno fa ho aperto un post per chiedere consiglio ma fortunamente ho risolto da solo: ora mi servirebbe un vostro aiuto.
Come già detto sto realizzando un pannellino che configuri un trasmettitore bluetooth e "legga" i campioni spediti dallo stesso. (in quanto acquisisce 3 segnali da un accelerometro)
Risolta la parte della configurazione, ora sto lavorando sull'elaborazione dei pacchetti che leggo tramite Bluetooth Read, e che contengono i sample dei segnali che mi interessano.
Ho fatto un pannellino che "screma" i campi del pacchetto non di interesse (come l'intestazione il numero di pacchetto ecc) e mi lascia solamente le info sui campioni (che sono esadecimali).
Prima di proseguire a sviluppare la parte di conversione e visualizzazione dei segnali vorrei testare il funzionamento del mio programmino per vedere se funziona a dovere, e vorrei sapere se fosse possibile (ed in quale modo) visualizzare le stringhe "scremate" in tempo reale su una sorta di indicatore.
Potrebbe essere di aiuto l'utilizzo dei probe?
Ringrazio in anticipo.
Giuseppe.
----------------------------------------
AUTORE: 2592
DATA :26/03/2009 - 16:03:07
----------------------------------------
Ciao Giuseppe,
per testare il tuo programma immagino che stia facendo una acquisizione continua, quindi inserendo il VI "Bluetooth Read" all'interno di un ciclo while. Ad ogni iterazione puoi leggere il dato grezzo, scremarlo, convertirlo da esadecimale ad ASCII e visualizzarlo in un indicatore di tipo stringa all'interno del ciclo while.
Queste operazioni di processing non dovrebbero essere troppo "time consuming" quindi non dovresti incombere in errori di overflow sulla "Bluetooth read".
Qualora dovessi avere problemi di overflow, ti posso consigliare di usare una architettura di tipo Producer/Consumer, in cui nel ciclo producer acquisisci i dati e li mandi tramite una coda al ciclo consumer per il processing.
Nel caso non conoscessi questo tipo di architettura ti segnalo un link in cui è spiegato come funziona:
Application Design Patterns: Producer/Consumer
http://zone.ni.com/devzone/cda/tut/p/id/3023
Spero che queste informazioni possano esserti utili.
Ciao
----------------------------------------
AUTORE: 2577
DATA :07/04/2009 - 17:16:13
----------------------------------------
Ciao, innanzitutto ti ringrazio per la risposta e mi scuso se non l'ho fatto prima, ma credevo che questo post fosse ormai "morto", visto che non avevo ricevuto risposte per un po' di tempo.
Fortunatamente sono riuscito da solo a risolvere quasi tutti i problemi che avevo ed ora il mio VI funziona abbastanza bene: l'ultima cosa che mi rimane da fare è una sorta di scalatura, nel senso che i segnali elaborati, per adesso, sono rappresentati in livelli, ossia sull'asse delle y ho una dinamica che va da 0 a 4096, mentre, essendo dei segnali accelerometrici li devo rappresentare in "g"....spero di essermi spiegato
Comunque credo di riuscire da solo, magari apro una nuova discussione.
Ciao e grazie ancora dell'interessamento!
PS: ho proprio usato una struttura Producer/Consumer e le code
----------------------------------------
================================================================================
Meglio Indicatori singoli o array nelle variabili Global?
================================================================================
AUTORE: 2550
DATA :19/03/2009 - 07:54:21
----------------------------------------
ciao a tutti
Avrei bisogno di un consiglio.
Tempo fa ho realizzato un programma che utilizzava le Global per trasferire dati tra due Vi. Le global erano circa 300 ma contenevano solo un indicatore o un controllo ognuna(nessun array o grande sorgente di dati). Ora avrei bisogno di allargare quel programma triplicando il numero di controlli e indicatori contenuti nelle global. Quello che mi chiedevo era se conveniva farlo utilizzando degli array oppure inserire degli altri controlli e indicatori singoli nelle global.
Quello che mi frena nell'utilizzo degli array e che utilizzando questo metodo il labview dovrà leggere comunque tutto l'array dalla global anche se a me serve un solo elemento; inoltre non so l'uso eccessivo di funzioni come Index Array o Replace Array Subset che effetti possa avere sulle performance del programma. Triplicando invece, gli indicatori e i controlli nelle global, io andrei a richiamare solo la variabile che mi serve utilizzando la struttura case con un indice per scegliere quale dato richiamare.
voi cosa ne pensate?
grazie a tutti fin da ora per le vostre risposte.
ciao
----------------------------------------
AUTORE: 43
DATA :19/03/2009 - 08:42:07
----------------------------------------
[quote="dvd14986":3uycgb5h]...
Tempo fa ho realizzato un programma che utilizzava le Global per trasferire dati tra due Vi. Le global erano circa 300 ma contenevano solo un indicatore o un controllo ognuna(nessun array o grande sorgente di dati). Ora avrei bisogno di allargare quel programma triplicando il numero di controlli e indicatori contenuti nelle global. Quello che mi chiedevo era se conveniva farlo utilizzando degli array oppure inserire degli altri controlli e indicatori singoli nelle global.
Quello che mi frena nell'utilizzo degli array e che utilizzando questo metodo il labview dovrà leggere comunque tutto l'array dalla global anche se a me serve un solo elemento; inoltre non so l'uso eccessivo di funzioni come Index Array o Replace Array Subset che effetti possa avere sulle performance del programma. Triplicando invece, gli indicatori e i controlli nelle global, io andrei a richiamare solo la variabile che mi serve utilizzando la struttura case con un indice per scegliere quale dato richiamare.
voi cosa ne pensate?
grazie a tutti fin da ora per le vostre risposte.
[/quote:3uycgb5h]
Dunque.
300 global VI contenenti ognuno un indicatore o un controllo non sono certo molto comodi.
Ho il diritto di pensare che alcuni di questi dati potrebbero essere scritti o solamente letti insieme, cioè potrebbero essere uniti in cluster.
Quello che ti consiglio di usare sono dei VI functional global per i quali Tu potrai decidere cosa fare singolarmente se usare degli array o usare più controlli/indicatori.
Questi VI FG [u:3uycgb5h]non devono essere rientranti[/u:3uycgb5h], ma potrebbe essere utile che fossero "subroutine" (VI properties --> Execution --> Priority) in modo che vengano cmq eseguiti "tutto d'un fiato" senza interruzioni, come se le operazioni di lettura e scrittura fossero ottimizzate al punto di risultare un'operazione atomica, cioè non interrompibile.
bye
----------------------------------------
AUTORE: 2550
DATA :19/03/2009 - 09:45:53
----------------------------------------
Grazie. ci avevo pensato anch'io, ma all'epoca quando feci il prgramma ero alle prime armi e non sapevo bene come muovermi.
Ho provato a farne una. te la allego. Dimmi che se va bene o se può essere migliorata.
Nel vi "Lettura più Valori" mi è venuta in mente una soluzione per leggere più elementi dalla funcional. Secondo te può funzionare o esiste qualche altra soluzione?
grazie
ciao
DVD
----------------------------------------
AUTORE: 43
DATA :19/03/2009 - 11:08:34
----------------------------------------
Direi che è quello che dicevo io.
Io ci aggiungerei almeno un paio di cose che si basano essenzialmente sull'uso dei default.
La prima è che "Funzione" deve avere come valore di default "Leggi" in modo che se non si volesse collegare l'ingresso "funzione" verrebbe cmq effettuata una lettura. Se fosse così sarebbe meglio chiamare il parametro "Funzione(Leggi)": meglio riportare il default fra parentesi tonde. Sempre.
La seconda è che in caso di scrittura farei in modo che il valore scritto fosse comunque restituito come valore letto.
La terza e che come per "funzione", imposterei un valore di default a "N° Elementi(3)" e farei in modo che l'operazione di inizializzazione non faccia parte delle funzioni ma sia un booleano a parte di default falso. Se venisse chiamato per la prima volta il VI senza che sia inizializzato, si potrebbe procedere in modo automatico con una inizializzazione + si eseguirebbe la lettura /scrittura prevista.
La cosa che volevo evidenziare però è quella di evitare di farsi 300 VI FG accorpando, ove possibile, + informazioni in cluster. in questi casi, per esempio, potrebbero esserci operazioni differenziate di scrittura che modificano solo alcuni campi di un cluster o lo stesso campo di ogni cluster dell'array... insomma funzioni scelte per renderne comodo l'utilizzo.
La lettura deve essere sempre di default
bye
----------------------------------------
AUTORE: 2550
DATA :19/03/2009 - 12:32:32
----------------------------------------
OK, ho capito. Penso di riuscire ad eliminare circa 200 globals utilizzando gli array di cluster. L'unica cosa che non riesco ancora a capire è come fare per modificare un singolo elemento del cluster lasciando invariati gli altri.. in pratica vorrei che fosse la function a creare il cluster in modo che in ingresso e in uscita io possa avere direttamente le variabili che mi servono senza utilizzare il build e l'unbundle. sono riuscito a fare quello che volevo solo in uscita. nel vi allegato infatti in uscita dalla function ci sono le variabili pronte per essere utilizzate. temo però che per l'ingresso devo utilizzare per forza il buil cluster esterno.
qualche idea o suggerimento in proposito?
grazie
ciao
DVD
----------------------------------------
AUTORE: 43
DATA :19/03/2009 - 13:45:47
----------------------------------------
Ok hai capito quello che Ti volevo dire.
Ti rilancio il tuo stesso esempio con letture e scritture alternative.
Per dare un pizzico di novità ho utilizzato qualche struttura tipica di LV8.5, tanto per gradire.
Rifacendomi ai primi esempi di VI che hai inviato, Ti ricordo che gli indici negli array in LabVIEW iniziano sempre da 0. per cui gli elementi di un array di 3 elementi sono di indice 0,1,2.
[attachment=0:2uiq1agr]Prova Functional Global 3.vi[/attachment:2uiq1agr]
bye
----------------------------------------
AUTORE: 2550
DATA :19/03/2009 - 15:46:17
----------------------------------------
Ciao, grazie per l'aiuto. Alla fine ho creato la mia functional Global di base. ho modificato un po quella che mi hai mandato tu per inserire 4 variabili. il risultato è quello che effettivamente serve a me. la allego nel caso in cui serva a qualche altro utente.
ti ringrazio di nuovo per l'aiuto.
ps. se puoi, fai una capatina in quest'altra discussione. mi servirebbe aiuto anche qui per un'altro progetto.
viewtopic.php?f=1&t=3899&p=17175&hilit=form+web#p17175
grazie
ciao
DVD
----------------------------------------
AUTORE: 482
DATA :20/03/2009 - 07:46:23
----------------------------------------
Non ho seguito per filo e per segno il topic ma ho visto l'ultimo VI E ho intuito che se servissero 300 variabili, bisognerebbe creare un bottodi case.
In piu' si è parlato di 300 vi globali per 300 variabili....
C'e' qualcosa che mi sfugge.
Siamo consapevoli del fatto che le 300 variabili possono essere inserite tutte nello stessi VI globale ed essere richiamate per nome?
Avresti 300 variabili ma un solo vi e la variabile da richiamare sarebbe selezionabile da un menu a tendina o digitandone il nome....
Cos'e' che mi sfugge?
----------------------------------------
AUTORE: 43
DATA :20/03/2009 - 08:21:16
----------------------------------------
[quote="gepponline":zoez00pb]Non ho seguito per filo e per segno il topic ma ho visto l'ultimo VI E ho intuito che se servissero 300 variabili, bisognerebbe creare un bottodi case.
In piu' si è parlato di 300 vi globali per 300 variabili....
C'e' qualcosa che mi sfugge.
Siamo consapevoli del fatto che le 300 variabili possono essere inserite tutte nello stessi VI globale ed essere richiamate per nome?
Avresti 300 variabili ma un solo vi e la variabile da richiamare sarebbe selezionabile da un menu a tendina o digitandone il nome....
Cos'e' che mi sfugge?[/quote:zoez00pb]
mah! Non so cosa ti sfugge, però quello che io cercato di spiegare a DVD e penso che abbia capito, è quello di fare x esempio, non 1, ma + VI FG dotantoli di funzionalità di lettura e scrittura "appropriati" cioè come risulta + comodo x quello che deve farci.
Non si deve per forza unire dati eterogenei in cluster, come non si deve pensare che il VI FG legge dati solamente indicizzati. Dipende da cosa ci si deve fare.
Mettere tutti i dati eterogenei in un unico VI FG è una possibile soluzione, è DVD che deve valutare cosa è meglio per Lui. Soprattutto che impatto ha sul codice esistente. Cioè non solo bisogna valutare l'efficienza del codice, ma la sua flessibilità, il costo delle modifiche, soprattutto in termini di tempo ecc.
La soluzione "migliore" tiene conto di più parametri ai quali ognuno da' peso diverso a seconda delle proprie attitudini.
E' un po' come scegliere un automobile: c'è chi da piu' peso alla linea estetica , chi + agli interni, chi + alle prestazioni motoristiche, chi considera maggiormante il prezzo, chi i consumi ecc...
Ma tutti valutano tutti i parametri dando ad ognuno di essi un diverso peso.
Per concludere: penso che DVD abbia capito che non esiste un unica via per raggiungere il suo obbiettivo ma dave scegliere Lui stesso cosa è meglio.
Spero solo di avergli fornito la possibilità di valutare semplici alternative all' uso di variabili globali.
bye
----------------------------------------
AUTORE: 482
DATA :20/03/2009 - 10:44:51
----------------------------------------
Si si, questo mi è chiaro e mi è chiaro il lavoro che tutti e due avete fatto, solo che non capisco se DVD è a conoscenza della possibilità di creare un unoco file globale con all'interno piu' controlli visto che lui faceva invece tanti vi globali ognuno con un controllo.
----------------------------------------
AUTORE: 2550
DATA :20/03/2009 - 15:39:18
----------------------------------------
Purtroppo quando ho sviluppato il prgramma base la prima volta, non sapevo della possibilità di includere più variabili in una global, quindi mi vidi costretto a crearne molte. Ora so che è possibile ma siccome ho anche bisogno di un certo ordine nel salvare le variabili, la soluzione delle FG è quella più versatile e che mi permette di modificare di meno il programma originale.
grazie ad entrambi per l'interessamento.
ciao
DVD
----------------------------------------
================================================================================
PASSWORD .vi persa o dimenticata
================================================================================
AUTORE: 271
DATA :19/03/2009 - 10:44:00
----------------------------------------
buon giorno avrei bisogno di una cortesia
ho perso la password di un .vi l'applicazione l'ho fatta io 2 anni fa e adesso che devo fare una modifica e non me la ricordo più come riaverla??
o come sbloccare la cosa
non ditemi che devo rifare tutto???
grazie
----------------------------------------
AUTORE: 43
DATA :19/03/2009 - 11:13:02
----------------------------------------
[quote="lele":dgm56x3c]buon giorno avrei bisogno di una cortesia
ho perso la password di un .vi l'applicazione l'ho fatta io 2 anni fa e adesso che devo fare una modifica e non me la ricordo più come riaverla??
o come sbloccare la cosa
non ditemi che devo rifare tutto???
grazie[/quote:dgm56x3c]
perchè hai usato una password x proteggere il SW ?? che senso ha?? Non hai creato un eseguibile?? perchè mettere sotto password del codice sorgente???
non lo capiro' mai...
mi piacerebbe sapere cosa ti hanno detto i ragazzi di NI...
bye
----------------------------------------
AUTORE: 271
DATA :19/03/2009 - 15:59:28
----------------------------------------
ho messo la password perche all' epoca non ero capace a compilare ....in piu aggiungi che ero alle prime armi...
insomma non sono mai stato una cima.. scusate...
l'ambiente di sviluppo portato su labview dsc runtime mi permetteva anche solo i .vi quindi non usavo compilare
Quello che mi chiedo è come poter recuperare la password tutto li... se no dovrei reinstallare la versione 7.1 per rifare tutta una modifica, ma non avendo il sorgente aperto ( senza password) mi tocca rivedere tutto da capo....
grazie
----------------------------------------
AUTORE: 482
DATA :20/03/2009 - 07:38:32
----------------------------------------
Non so NI cosa ti risponderà, ma per quanto posso ipotizzare, se ci fosse un modo per recuperare la password, non avrebbe senso l'esistenza della password
E se NI desse una procedura per recuperare le password dei VI, metterebbe a rischio tutti suoi bei VI "top-secret" e protetti da password che ogni tanto si trovano nell'ambiente di sviluppo.
----------------------------------------
AUTORE: 271
DATA :23/03/2009 - 17:46:19
----------------------------------------
risposta di ni devo rifare tutto ?? gli ho anche chiesto se inviando il software a loro lo sbloccavano ma nulla
Ma possibile che non esiste una specie di crack ?? mi sembra strano no???
----------------------------------------
AUTORE: 2586
DATA :26/03/2009 - 09:56:08
----------------------------------------
Gepponline ha completamente ragione!
Non è possibile, nemmeno a noi interni di NI, sbloccare vi coperti da password, altrimenti che senso avrebbe????
Questo è 1 aspetto molto apprezzato dai nostri clienti a livello di copyright del codice..
Comunque puoi sempre provare un pò (tante) password...
Se non erro alfabeto + numeri in ogni carattere sono circa 35^(N) possibilità, dove N è il numero di caratteri della pwd..
Diciamo pwd da 6 caratteri => 1.838.265.625.....
----------------------------------------
================================================================================
Calcolo valore max., min. e medio.
================================================================================
AUTORE: 2585
DATA :19/03/2009 - 15:32:21
----------------------------------------
Ciao a tutti,
avrei la seguente richiesta,
ho un file .txt con dei valori numerici elencati in colonna.
Devo realizzare un subVI che calcoli (visualizzandoli sul pannello frontale) i valori massimo, minimo e medio.
La quantita' dei valori di cui sopra non e' costante ma varia.
Ciao e grazie,
Paolo
----------------------------------------
AUTORE: 645
DATA :20/03/2009 - 09:01:30
----------------------------------------
Così è un po' vago... Tu cosa hai già realizzato?
Sicuramente hai dato un'occhiata agli esempi tra i quali si parla anche di lettura dati da file di testo.
Una volta importati i dati in un ciclo hai almeno due soluzioni: inserire tutto in un array e poi calcolare i valori che ti servono oppure utilizzare uno shift register per creare il vettore e controllare massimo e minimo "al volo" mentre leggi i singoli valori.
----------------------------------------
AUTORE: 2585
DATA :23/03/2009 - 08:56:00
----------------------------------------
[quote="MagicBotolo":27qdlp9o]Così è un po' vago... Tu cosa hai già realizzato?
Sicuramente hai dato un'occhiata agli esempi tra i quali si parla anche di lettura dati da file di testo.
Una volta importati i dati in un ciclo hai almeno due soluzioni: inserire tutto in un array e poi calcolare i valori che ti servono oppure utilizzare uno shift register per creare il vettore e controllare massimo e minimo "al volo" mentre leggi i singoli valori.[/quote:27qdlp9o]
Ciao,
grazie del suggerimento, per fortuna sono riuscito a risolvere il problema.
Ciao !!!
Paolo
----------------------------------------
================================================================================
Class Properties
================================================================================
AUTORE: 1355
DATA :20/03/2009 - 12:18:34
----------------------------------------
Scusate la domanda che porebbe sembrare banale.
Sono finalmente passato dalla versione 6 alla 8.2.1 Full development system
Ho questo problema
Quando apro il class properties esso appare vuoto anche su esempi tipo acces scope.
Vorrei sapere se qualcuno ha avuto il mio stesso problema e se eventualmente sa come risolverlo.
Ciao e grazie fin da ora
----------------------------------------
AUTORE: 645
DATA :20/03/2009 - 12:43:57
----------------------------------------
Hai fatto un aggiornamento? Potrebbe volerci il Mass Compile dei file!
----------------------------------------
AUTORE: 1355
DATA :20/03/2009 - 14:44:19
----------------------------------------
Ho eseguito il Mass Compile ma non è successo niente.
Intendi un aggioranmento di Lab View? Se si come faccio a farlo dato che il pc non è connesso ad internet.
Ciao e grazie
----------------------------------------
AUTORE: 1355
DATA :03/04/2009 - 07:09:50
----------------------------------------
A nessuno è mai capitato una cosa del genere?
Sono 15 giorni che sto impazzendo.
aiuto
Ciao
----------------------------------------
================================================================================
Numeri pari / numeri dispari
================================================================================
AUTORE: 2585
DATA :24/03/2009 - 15:15:16
----------------------------------------
Ciao a tutti,
ho il seguente problema, dato un numero generico n modificabile da un controllore nell'interfaccia grafica, devo farsi si che se n e' un numero pari
vada a lavorare nel true di un ciclo case, altrimenti in false.
Non riesco a capire lo schema blocchi per dire [b:10ssuidz]n = pari[/b:10ssuidz].
Ciao e grazie,
Paolo
----------------------------------------
AUTORE: 482
DATA :24/03/2009 - 15:33:45
----------------------------------------
Usa il blocco del quoziente/resto
gli dici di dividere il numero per 2 e vedi se il resto è zero o diverso a zero
----------------------------------------
AUTORE: 2585
DATA :25/03/2009 - 10:01:37
----------------------------------------
Grazie della risposta,
la soluzione era banale, lavorando con labview da meno di due mesi
non conosco ancora tutti i blocchetti.
Buona giornata,
Paolo
----------------------------------------
AUTORE: 10951
DATA :13/05/2014 - 08:17:10
----------------------------------------
Così non può funzionare in quanto 18/2 9 il numero è dispari ma il resto è zero
----------------------------------------
AUTORE: 482
DATA :13/05/2014 - 09:33:21
----------------------------------------
???
che stai dicendo??
Il blocchetto non ti dice se il risultato è pari o dispari, ti dice se il numero originale è pari. il risultato di 18/2 non ti interessa, vuoi solo sapere se 18/2 da resto o meno.
----------------------------------------
================================================================================
Grafici XY in LabVIEW
================================================================================
AUTORE: 2546
DATA :25/03/2009 - 11:30:49
----------------------------------------
Ciao a tutti.
Dovrei realizzare dei grafici su LabVIEW.
I dati di origine sono in una matrice in cui la prima colonna è l'ascissa (uguale per tutti) e le successive sono le ordinate. L'obiettivo sarebbe quello di rappresentarli sullo stesso grafico XY.
Utilizzando la funzione GraphXY seguita dall'indicatore GraphXY non riesco ad ottenere il risultato voluto.
Separo la colonna delle x e la invio alla X della funzione, e il resto della matrice lo invio come Y. Il risultato però non ha niente a che vedere con quello che mi aspetterei per cui finora mi sono sempre rassegnato all'uso dello Scope nel caso di grafici multipli. I miei dati solitamente hanno come ascissa 0-720 con un passo 0,5 costante per cui mi basta impostare la scala dell'ascissa per ottenere lo stesso risultato che otterrei con il grafico XY.
Il punto è che adesso sia la xmin che la xmax sono variabili da grafico a grafico e quindi lo scope non va più bene (assegnerebbe cmq al primo punto lo 0 mentre la mia ascissa iniziale è differente di volta in volta).
Mi viene da pensare che l'errore sia nel modo o nel formato con cui invio i dati alla funzione Graph.
Vi ringrazio per l'aiuto a presto
F.
----------------------------------------
AUTORE: 2546
DATA :26/03/2009 - 10:22:46
----------------------------------------
Risolto da me, grazie a tutti
----------------------------------------
================================================================================
Salvare a frequenza diversa dall'acquisizione
================================================================================
AUTORE: 2482
DATA :26/03/2009 - 08:57:28
----------------------------------------
Ciao a tutti, scrivo nuovamente perchè ho bisogno di una dritta...
Ecco in sostanza il mio problema:
ho un VI che acquisisce dei dati da dei trasduttori e li visualizza su monitor con una chart, aggiornando la chart alla frequenza di acquisizione (ogni secondo).
Quando le grandezze monitorate raggiungono determinati valori, parte la registrazione su file dei dati acquisiti.
Vorrei fare in modo di continuare a monitorare i dati ogni secondo, ma di registrare i valori solo ogni minuto (mentre adesso registro alla stessa frequenza di monitoraggio...).
Come posso fare?
Vi ringrazio in anticipo per l'aiuto.
Luigi
----------------------------------------
AUTORE: 2586
DATA :26/03/2009 - 09:34:52
----------------------------------------
Ciao Luigi,
il mio consiglio è di utilizzare un'architettura Producer & Consumer:
- nel primo (Producer) plotti i dati a monitor e fai il confronto con le tue soglie. Dopo di che, i dati che per motivi noti a te si devono memorizzare su file li puoi mettere in una coda.
- nel secondo (Consumer) aprendo il file esternamente al loop puoi salvarci sopra tutti i dati che vengono accodati dal primo loop.
Spero che la dritta ti aiuti.
Ciao
Matteo
P.S. esistono almeno altri n modi per realizzare quello che vuoi
----------------------------------------
AUTORE: 1168
DATA :26/03/2009 - 10:57:00
----------------------------------------
Concorso pienamente con Matteoalpha. Devi anche chiarirti se quella volta ogni minuto che salvi devi salvare tutti e 60 i campioni di quel minuto oppure solo la media, il massimo e minino, ecc ecc.
A volte è comodissimo avere anche la colonna col time stamp.
Ciao
Pietro
----------------------------------------
AUTORE: 2482
DATA :27/03/2009 - 09:21:33
----------------------------------------
Innanzitutto grazie per le risposte
Precisazione: per questa specifica provail dato da salvare ogni minuto è il valore preciso acquisito in quel momento.
Per intenderci, quando faccio partire la registrazione vorrei che mi si salvi su file il valore acquisito al tempo 0:00:00 (istante in cui schiaccio il pulsante "REC"), e poi il dato che verrà scritto successivamente sul file sarà il valore acquisito al tempo 00:01:00, e così via secondo intervalli di un minuto.
Non devo registrare la media di un minuto di acquisizioni (anche se per altri test potrebbe essermi utile...).
Infine sì, nel mio caso la colonna con il time stamp sarebbe molto utile in fase di post processing dei dati.
Se poteste segnalarmi qualche esempio di VI con l'architettura che mi avete consigliato ve ne sarei molto grato.
Ciao e grazie di nuovo
Luigi
----------------------------------------
================================================================================
Controllo .NET Container
================================================================================
AUTORE: 2435
DATA :26/03/2009 - 09:54:58
----------------------------------------
Ciao a tutti....
Sapete spiegarmi l'utilità del controllo .NET...
e magari se avete un esempietto tanto per farmi un'idea
Grazie
----------------------------------------
AUTORE: 301
DATA :26/03/2009 - 12:22:45
----------------------------------------
Mah, l'utilità è quella di poterci caricare degli oggetti dot net!
Poi dipende se ti serve oppure no.
----------------------------------------
================================================================================
error 66
================================================================================
AUTORE: 2018
DATA :26/03/2009 - 16:33:23
----------------------------------------
Ciao a tutti, chiedo un Help per questo problema: ho fatto un programma con LV8 che tramite ethernet interroga un PLC con protocollo proprietario (connessione diretta con solo uno switch in mezzo), il problema era emerso anche a banco un paio di volte, ma poi aumentando i time out la cosa era sparita, il cliente russo mi invia la schermata e dice che che il problema si ripresenta almeno una volta al giorno, qualcuno mi può aiutare? l'errore è sempre quello ERROR 66. parla di un server remoto che però non c'è l'unica connessione è da PC diretto.
Grazie
----------------------------------------
AUTORE: 645
DATA :27/03/2009 - 08:40:39
----------------------------------------
Dai un'occhiata qui: http://digital.ni.com/public.nsf/allkb/ ... enDocument
----------------------------------------
AUTORE: 2018
DATA :27/03/2009 - 08:51:31
----------------------------------------
ok grazie MagicBotolo adesso provo, anche se mi sembra di aver fatto tutto così CIAO
----------------------------------------
================================================================================
aiuto per generare dei pattern digitali
================================================================================
AUTORE: 2580
DATA :26/03/2009 - 17:16:44
----------------------------------------
ciao per la mia tesi devo generare dei pattern digitali per testare dei circuiti.io dispongo di 16bit dati in totale e sto letteralmente impazzendo,senza trovar l illuminazione geniale,sul modo di poter inviare su questi 16 bit 2 differenti segnali ad 8 bit.qualcuno sa darmi qualche dritta?io ho provato un modo ma mi da un sacco di errori...grazie mille in anticipo.
antonio
----------------------------------------
AUTORE: 2592
DATA :26/03/2009 - 17:58:25
----------------------------------------
Ciao Antonio,
prima di tutto vorrei chiederti che scheda stai utilizzando per generare i tuoi 16 bit.
In generale comunque per poter generare 16 bit hai bisogno di 16 linee digitali quindi almeno 2 porte ( 1 porta = 8 bit ). A questo punto puoi impostare un task di generazione Digital Output e scrivere il primo segnale sulla porta0 ed il secondo segnale sulla porta1. La cosa importante è che devi fare un solo task e scrivere su due porte. Se fai due task di Digital Output otterrai un errore di conflitto in quanto la scheda è già in uso da un altro task.
Per avere un esempio da cui partire puoi guardare l'esempio di LabVIEW "Write Dig Chan.vi" che trovi cliccando su "Help -> Find Examples -> Hardware Input and Output -> DAQmx -> Digital Generation.
In questo esempio si scrive una sola porta, ma in maniera molto semplice puoi aggiungere gli altri valori che devi scrivere.
Buona serata
----------------------------------------
AUTORE: 2580
DATA :02/04/2009 - 10:04:37
----------------------------------------
Ciao,scusa se rispondo solo ora ma ho avuto altri impegni e ho accantonato la tesi!io sto usando una NI PXI-6552,con 20 canali.provo a vedere se riesco nel caso ti richiedo aiuto!grazie mille per i consigli e l'aiuto!ciao,
buona giornata
----------------------------------------
================================================================================
Menù di scelta per test in sequenza
================================================================================
AUTORE: 2578
DATA :26/03/2009 - 19:01:10
----------------------------------------
Salve a tutti devo creare un Vi con menù per il collaudo di una scheda in maniera tale che si possa scegliere se eseguire tutti i test di seguito ( ogni test deve avere un Vi diverso) oppure un singolo test .
Il vi principale volevo farlo in questo modo :
[url=http://img525.imageshack.us/my.php?image=vicollaudo.jpg:li62itxw][img:li62itxw]http://img525.imageshack.us/img525/883/vicollaudo.th.jpg[/img:li62itxw][/url:li62itxw]
Quindi quando seleziono la preferenza "collaudo completo" deve apparire il Vi del primo test , quindi quando questo è stato eseguito devo passare al test successivo premendo il tasto "OK"e così via .
[url=http://img148.imageshack.us/my.php?image=vitest.jpg:li62itxw][img:li62itxw]http://img148.imageshack.us/img148/7690/vitest.th.jpg[/img:li62itxw][/url:li62itxw]
Però devo avere anche la possibilità di eseguire un singolo test quindi premento il tasto "SINGOLO TEST" deve apparire in qualche modo un menù per selezionare che test eseguire .
Spero di non chiedere troppo ma sono un po' alle prime armi ,mi sono costruito una piccola scheda di acquisizione dati che usa la LPT e visto che riesco già a fare qualcosa volevo applicare la cosa in laboratorio collaudi .
Grazie in anticipo .
----------------------------------------
AUTORE: 645
DATA :27/03/2009 - 08:47:05
----------------------------------------
Mi vengono in mente almeno due strade, una che sfrutta le finestre pop-up, l'altra integrata nello sfondo del tuo VI.
Partiamo dalla seconda: puoi creare una serie di pulsanti e con i Property Node renderli invisibili e visibili a seconda delle scelte dell'utente. Inizialmente puoi tenere tutti i pulsanti invisibili: se l'utente sceglie di eseguire tutti i test fai partire i test (sfruttando i SubVI o il VI Server per chiamare in maniera dinamica i VI da eseguire) e rendi visibile un pulsante "Continua" alla fine di ogni test... pulsante che durante l'esecuzione dei test devi far tornare invisibile.
Con la stessa tecnica puoi far apparire scritte per indicare all'utente in quale punto del programma si trova (per esempio indicando il nome del test in esecuzione).
La soluzione basata su pop-up potrebbe essere più carina: con il VI server puoi chiamare in maniera dinamica altri SubVI (puoi cercare nel forum qualche indicazione o sul sito della National). Se tra le proprietà del VI (o con i Property Node durante la chiamata dinamica) imposti l'apertura del pannello frontale ottieni l'effetto di tante finestre che si aprono in sequenza e guidano l'utente nel processo di test. Come prima finestra puoi aprire un menù con le scelte.
Sono riuscito a creare abbastanza confusione?
Prova a cercare informazioni su questi argomenti!
----------------------------------------
================================================================================
Tool bars personalizzate
================================================================================
AUTORE: 1078
DATA :27/03/2009 - 11:58:08
----------------------------------------
Ciao a tutti,
qualcuno sa se è possibile creare e visualizzare a runtime delle tool bars personalizzate in LV 8.6?
grazie a tutti.
----------------------------------------
AUTORE: 2592
DATA :28/03/2009 - 17:21:39
----------------------------------------
Ciao Ricky,
per creare una tool bar personalizzata puoi usare banalmente nel Front Panel un container di tipo Horizontal Splitter Bar. In questo modo dividi il Front Panel in due sezioni, una in cui c'è la tool bar e un'altra in cui hai l'interfaccia grafica. Nello spazio della tool bar puoi ad esempio inserire dei pulsanti customizzati con delle immagini significative ed associare alla pressione del tasto una determinata azione del tuo codice mediante l'uso di una struttura ad eventi.
Ciao
----------------------------------------
AUTORE: 482
DATA :30/03/2009 - 08:28:13
----------------------------------------
Se pero' per toolbar intendi qualcosa che ti permetta di creare oggetti labVIEW (controlli e indicatori) runtime allora no, a livello ufficiale nonè possibile creare ed eliminare oggetti in runtime.
----------------------------------------
AUTORE: 1078
DATA :30/03/2009 - 08:33:07
----------------------------------------
Grazie ad entrambe, va benissimo la soluzione esposta da Ryan_82.
----------------------------------------
AUTORE: 1078
DATA :30/03/2009 - 12:02:59
----------------------------------------
Ho un'altro problema..... copiando delle bitmap direttamente sui pulsanti della tool bars che ho creato, queste impediscono il normale click quando giustamente l'utente clicca sulla regione della stessa bitmap. come faccio ad avviare il problema?
----------------------------------------
AUTORE: 482
DATA :30/03/2009 - 13:16:47
----------------------------------------
Tasto destro sul controllo e su advanced selezioni "Customize...".
Da li puoi mettere le immagini sul controllo facendole diventare parte del controllo.
Se invece metti semplicemente delle immagini sopra al controllo, diventano un oggetto in primo piano e quindi fanno passare il controllo al di sotto impedendone la pressione.
----------------------------------------
AUTORE: 1078
DATA :30/03/2009 - 13:23:42
----------------------------------------
Grazie...
----------------------------------------
AUTORE: 660
DATA :01/04/2009 - 12:44:33
----------------------------------------
in alternativa se non vuoi customizzare un controllo puoi sempre mettere un pulsante trasparente in primo piano sopra alla tua immagine, l'utente non si accorgerà di nulla e il pulsante funzionerà come deve.
Max
----------------------------------------
================================================================================
OOP in LV
================================================================================
AUTORE: 1078
DATA :27/03/2009 - 12:03:44
----------------------------------------
Avrei bisogno informazioni dettagliate per creare classi, oggetti e controlli LV e personalizzarmi quelli esistenti. Potreste indirizzarmi verso qualche informazione in merito?
----------------------------------------
AUTORE: 2589
DATA :30/03/2009 - 14:58:13
----------------------------------------
Ciao,
la risorsa migliore e completa che potrà darti indicazioni sulla programmazione ad oggetti in LabVIEW è il LabVIEW Help: nell'indice c'è la voce "LabVIEW Object-Oriented Programming" sotto la quale vengono spiegate nel dettaglio molte problematiche.
Spero che le informazioni ti siano d'aiuto!
Ciao!
----------------------------------------
AUTORE: 1078
DATA :02/04/2009 - 07:20:53
----------------------------------------
Darò un'occhiata...
Grazie!
----------------------------------------
================================================================================
Leggere Pagina web con labview
================================================================================
AUTORE: 2576
DATA :27/03/2009 - 12:57:22
----------------------------------------
Ciao a tutti
vorrei leggere da web una data pagina html per poter estrapolare alcuni dati.
Sto provando ad utilizzare un blocco Read from Text File ma non so bene come fare.
qualcuno me lo potrebbe spiegare in maniera non troppo sintetica visto che sono
un novizio?
grazie
----------------------------------------
AUTORE: 2592
DATA :27/03/2009 - 14:08:05
----------------------------------------
Ciao Davide,
ti mando un link di una KnowledgeBase dove c'è un semplicissimo esempio:
Reading HTML Code From a Web Site in LabVIEW
http://digital.ni.com/public.nsf/allkb/ ... enDocument
Spero possa essere un buon punto di partenza...
Ciao,
----------------------------------------
AUTORE: 2576
DATA :27/03/2009 - 16:45:24
----------------------------------------
Grazie!
è perfetto!mi sarà sicuramente d'aiuto!
ciao
----------------------------------------
AUTORE: 2586
DATA :03/04/2009 - 07:55:56
----------------------------------------
Ciao Davide,
ti posto anche un vi che implementa il tutto tramite controlli ActiveX
Ciao
Matteo
----------------------------------------
AUTORE: 947
DATA :05/04/2009 - 15:39:43
----------------------------------------
..
Ciao a tutti
il [b:sqpcks95]LVBrowser_8_6.vi[/b:sqpcks95] sembra interessante ..
probabilmente risolverebbe un sacco di interessanti quesiti che mi sono posto
.. ma è possibile avere il VI in [b:sqpcks95]LV 8.5 [/b:sqpcks95]?
Grazie!!
----------------------------------------
AUTORE: 2592
DATA :05/04/2009 - 21:31:47
----------------------------------------
Ciao Luca,
ti allego il file LVBrowser_86 salvato per la versione 8.5 di LabVIEW.
L'unico file che non hai a disposizione è il run time menu custom che viene usato nell'esempio.
Puoi eliminare il secondo ciclo while e non usare il menu oppure puoi creartene uno. Ti indico un link in cui è spiegato come fare:
Create Custom Run-Time Shortcut Menus for LabVIEW Front Panel Objects
http://zone.ni.com/devzone/cda/tut/p/id/3171
Spero ti possa essere di aiuto!
Ciao,
----------------------------------------
AUTORE: 278
DATA :05/04/2009 - 22:48:51
----------------------------------------
[quote:2lub65mo]Create Custom Run-Time Shortcut Menus for LabVIEW Front Panel Objects
http://zone.ni.com/devzone/cda/tut/p/id/3171[/quote:2lub65mo]
Interessantissimo...
Tornera` sicuramente utilissimo anche a me
Oltre alla facilita` di implementazione, apprezzo veramente come LV metta a disposizione degli strumenti per creare applicativi + user-fiendly, gestibili e graficamente accattivanti ...
Se hai altre chicche da segnalarci sul tema sono ben`accette
----------------------------------------
AUTORE: 947
DATA :05/04/2009 - 23:19:08
----------------------------------------
..
Grazie per tutto .. davvero interessante ..
----------------------------------------
================================================================================
Non carica più il menu di runtime customizzato
================================================================================
AUTORE: 1078
DATA :30/03/2009 - 08:56:00
----------------------------------------
Ciao a tutti, ho un problema con un software che sto realizzando. Fino a Venerdì tutto funzionava correttamente adesso però non mi carica più il runtime-menu personalizzato. Qualcuno sa come mai? Cosa dovrei fare per farglielo ricaricare correttamente?
Grazie per l'aiuto!
----------------------------------------
AUTORE: 1078
DATA :30/03/2009 - 12:03:55
----------------------------------------
Risolto.... ero io che non lanciavo correttamente il VI!
grazie lo stesso!
----------------------------------------
================================================================================
Esecuzione automatica VI
================================================================================
AUTORE: 2509
DATA :30/03/2009 - 10:23:56
----------------------------------------
Ciao,
volevo chiedervi se sapete dirmi come impostare l'avvio automatico di un VI quando si accende il pc.
Grazie a tutti
Buona giornata
----------------------------------------
AUTORE: 1078
DATA :30/03/2009 - 10:36:02
----------------------------------------
Fai l'exe, poi inserisci un link che punta al tuo SW nella cartella esecuzione automatica di windows. Start-->Programmi-->Esecuzione Automatica
Hai windows vero?
----------------------------------------
AUTORE: 2509
DATA :30/03/2009 - 11:15:07
----------------------------------------
Si ho windows ma non uso l'eseguibile. E' indispensabile utilizzare l'eseguibile per ottenere un'esecuzione automatica??
Grazie mille
----------------------------------------
AUTORE: 1124
DATA :30/03/2009 - 13:16:15
----------------------------------------
Ciao
a orecchio se segui la traccia di Ricky e fai puntare il link al vi dovrebbe aprirsi l'ambiente di sviluppo di LV.
Salva il tuo Vi con le opzioni di "run when open".
----------------------------------------
AUTORE: 482
DATA :30/03/2009 - 13:17:56
----------------------------------------
No, in esecuzioen automatica metti il vi e poi se devi mandarlo in run, dalle proprietà di esecuzione (tasto destro sull'icona in alto a destra) selezioni run when open.
----------------------------------------
AUTORE: 2509
DATA :30/03/2009 - 13:55:18
----------------------------------------
Grazie a tutti ragazzi,
entrambe le soluzioni sono valide, siete stati davvero d'aiuto!!!
----------------------------------------
AUTORE: 278
DATA :30/03/2009 - 18:33:47
----------------------------------------
Ciao,
puoi anche utilizzare il caro veccho file di batch (ricordate i famosi file .bat??)... MSDOS never dies!!!
----------------------------------------
================================================================================
formula da front panel
================================================================================
AUTORE: 1853
DATA :30/03/2009 - 12:13:33
----------------------------------------
Ciao a tutti,
vorrei porre una semplice domanda: è possibile chiedere a un utente di inserire una formula da "front panel"?
Non mi pare che questa opzione sia contemplata nei vari "formula node" e simili, che invece lavorano da block diagram...
grazie in anticipo
Luigi!
----------------------------------------
AUTORE: 1124
DATA :30/03/2009 - 13:13:03
----------------------------------------
Ciao
credo che si debba usare la funzione "eval formula node" a cui passare sia le variabili di ingresso sia la formula sotto forma di controllo a stringa.
----------------------------------------
AUTORE: 645
DATA :31/03/2009 - 09:26:12
----------------------------------------
Mi vengono in mente due strade: la prima consiste nel proporre all'utente una serie di formule e in base a quella scelta (per esempio con un controllo Ring) esegui i calcoli corrispondenti.
La seconda consiste nel fare scrivere all'utente la formula in un campo di testo ma dovresti poi "comprenderla" passando da testo scritto alle operazioni corrispondenti.
C'è una via di mezzo che personalmente ho provato ad utilizzare qualche volta e in situazioni particolari offre risultati carini: puoi guidare l'utente nell'inserimento dei pezzi di formula. Se per esempio le formule sono sempre dello stesso tipo puoi dividere i campi (per esempio le costanti moltiplicative, i coefficienti, le funzioni) e far scegliere all'utente le singole parti.
In pratica la combinazione dei campi a livello di programmazione è fissata e l'utente può solo modificare il valore delle costanti o scegliere tra alcune funzioni prefissate.
----------------------------------------
AUTORE: 1853
DATA :01/04/2009 - 13:37:57
----------------------------------------
Grazie mille dell'aiuto!
Alla fine ho utilizzato "Eval single variable scalar" come diceva stefanog, dando come input una stringa, come suggerito da magicbotolo. Le altre strade non sono pre me praticabili perchè le formule possono essere molto complesse e molto diverse tra loro. ma così dovrebbe funzionare. Ovviamente appena risolto questo problema ne è sorto subito un altro, ma per quello forse è meglio aprire un altro tread!
grazie ancora!
L.
----------------------------------------
================================================================================
Come passare i valori ad una multicolum di in un cluster?
================================================================================
AUTORE: 2435
DATA :30/03/2009 - 14:42:31
----------------------------------------
Ciao il mio problema è il seguente....
Devo caricare i dati su una tabella contenuta su un cluster.
vi allego un eempio ove è visibile il problema
come posso fare???
----------------------------------------
AUTORE: 2435
DATA :30/03/2009 - 14:43:58
----------------------------------------
mi ero dimenticato dell'es
----------------------------------------
AUTORE: 2435
DATA :30/03/2009 - 15:56:22
----------------------------------------
un'altro problema perchè i valori delle mulicolumn non vengono aggiornati?
grazie
----------------------------------------
AUTORE: 482
DATA :31/03/2009 - 08:28:11
----------------------------------------
Il problema è che tu parli di tabella quando tabella non è.
Quelal che tu hai utilizzato è una multicolumn listbox.
Questo tipo di controllo non è una tabella ma un numerico che indica QUALE RIGA C'E' SELEZIONATA.
Se invece dei listbox tu avessi delel vere tabelle, allora non cisarebbero problemi di passaggi di dati eprchè le tabelle invece sono degli array bidimensionali di caratteri.
Se vuoi tenere questa struttura, per passare i valori stringa d auna listbox all'altra dovresti fare molti passaggi in piu' che ti complicherebbero la vita per niente.
Quindi riassumendo, direi che l'errore sta nell'implementazione della struttura del cluster.
...ma ciao!
Geppo!
----------------------------------------
AUTORE: 482
DATA :31/03/2009 - 08:45:49
----------------------------------------
Ti ho fatto un esempio per farti capire l'ENORME differenza tra i due tipi di dati.
Sopra c'e' il procedimento per fare quello che vuoi fare usando i multicolumn, sotto c'e' il procedimento usando una tabella.
----------------------------------------
AUTORE: 482
DATA :31/03/2009 - 08:53:56
----------------------------------------
Nel caso non riuscissi ad aprire la versione 8.6 ecco un immagine:
----------------------------------------
AUTORE: 2435
DATA :31/03/2009 - 13:00:46
----------------------------------------
infatti avevo aggirato il problema in qualche modo....
ma risulta una complicazione inutile...
Uso la Tabella
----------------------------------------
AUTORE: 2435
DATA :31/03/2009 - 13:01:27
----------------------------------------
dimenticavo... Grazie
----------------------------------------
================================================================================
Torsiometro ETH - Richiesta di Driver
================================================================================
AUTORE: 1168
DATA :31/03/2009 - 08:13:47
----------------------------------------
Buongiorno. qualcuno ha già sviluppato qualcosa per parlare coi torsiometri della ETH messtechnik della serie DRFL(VI).
Giusto per...
Nel caso me lo smazzo io e poi lo posto qui.
Ciaoooo
P!
----------------------------------------
================================================================================
novizo chiede aiuto
================================================================================
AUTORE: 2596
DATA :01/04/2009 - 14:16:33
----------------------------------------
da un pai d'anni lavoro con applicativi labview, da un mese mi siono meso a smanettare con labview, e ho comprato una scheda ni6009, riesco a fare le più semplici simulazioni sia matematiche che di segnale o booleane, ma non riesco a trovare o a creare il codice per il comandi di ingresso e uscita della scheda suddetta per acquisire e comandare l'uscita, mi potete dare una mano? è la prima volta sto provando a programmare e la cosa mi piace molto, ma riconosco che tutto non si può apprendere da solo.
Grazie anticipatamente Josfed.
----------------------------------------
AUTORE: 1168
DATA :01/04/2009 - 15:45:53
----------------------------------------
Guarda negli esempi... ce ne sono un sacco!
----------------------------------------
AUTORE: 645
DATA :01/04/2009 - 16:54:52
----------------------------------------
Ciao! Anche io ti consiglio di guardare negli esempi di LabView perchè sono il punto di partenza per un sacco di argomenti!
E poi volevo ricordarti (ma non solo a te... vale anche per tanti altri) di dare titoli ai post che richiamano l'argomento altrimenti non si sa di cosa si parla!!
----------------------------------------
AUTORE: 2596
DATA :02/04/2009 - 16:53:16
----------------------------------------
OK Grazie seguirò il consiglio
----------------------------------------
================================================================================
RUN o NO RUN quando apro l'applicativo
================================================================================
AUTORE: 706
DATA :02/04/2009 - 10:02:08
----------------------------------------
Ciao a tutti,
ho un problema. Spiego: mi hanno chiesto per lavoro se è possibile poter impostare l'avvio automatico di un applicativo tramite un file di tipo testuale scrivendo al suo interno o ON o OF (o 0/1).
Spiego meglio.Mediante questo file dove vado a scrivere la condizione di avvio automatico (run) dell'applicativo è possibile scegliere se far partire in run il programma una volta lnciato o se una volta lanciato chi lo utiliza deve premere la freccia di run per metterlo in esecuzione.
E' possibile farlo? Lo posso fare modifcando un parametro del file.ini associato all'eseguibile)
Grazie
Francesco
----------------------------------------
AUTORE: 301
DATA :02/04/2009 - 10:16:02
----------------------------------------
Ciao,
a parte che trovo bruttissimo, nel caso di una applicazione, di dover premere un run per farla girare (mia personale opinione).
Sinceramente non so se ci sia un parametro da inserire nel file ini (puoi vedere in rete), ma puoi sempre leggerti tu un valore da un file ed abortire il vi prima che "faccia qualcosa".
----------------------------------------
AUTORE: 482
DATA :02/04/2009 - 13:08:36
----------------------------------------
C'e' qualcosa che non mi torna.
Stiamo parlando di un applicativo o di un VI?
Io in ogni caso metterei il tutto in esecuzione automatica con un bell'event structure e tramite dynamic event, generi l'evento in base a quello che c'e' scritto nel file di supporto.
----------------------------------------
AUTORE: 129
DATA :04/05/2009 - 07:38:45
----------------------------------------
Sono daccordo con Aris.
Io gestirei l'applicazione non dal run del vi, ma da un run fittizio che ti crei tu(un bottone sul front panel). in modo che l'applicazione sia comunque gestita programmaticamente da te.
ti allego un esempio
----------------------------------------
================================================================================
Generazione automatica report
================================================================================
AUTORE: 2585
DATA :02/04/2009 - 10:28:10
----------------------------------------
Ciao a tutti,
vorrei sapere dove posso trovare esempi su programmi in labview che generano automaticamente dei report,
possibimente in word.
Ciao e grazie,
Paolo
----------------------------------------
AUTORE: 482
DATA :02/04/2009 - 13:01:11
----------------------------------------
Gli esmepi sui report li trovi semplicemente inserendo la scritta report nella casella di ricerca degli esempi di labVIEW.
Gli esmepi specifici per word invece sono disponibili solo se possiedi il report toolkit che comprende delle funzioni specifiche per word ed excel.
----------------------------------------
AUTORE: 2585
DATA :02/04/2009 - 13:15:52
----------------------------------------
Infatti gli esempi li avevo trovati pero' erano pochi, sul pc di un'altra persona se ne visualizzavano molti di piu';
probabilmente perche' non possiedo il report toolkit .
Thank you,
Paolo
----------------------------------------
================================================================================
Ho bisogno di aiuto con i file!!!
================================================================================
AUTORE: 2598
DATA :02/04/2009 - 17:09:08
----------------------------------------
Ciao vorrei sapere se è possibile cn labview creare dei file che si aprono-salvano-chiudono in automatico e si aggiornano senza cancellare di volta in volta i dati precedentemente. Io sono riuscita a a creare un file, ma ogni volta che si deve aggiornare mi da solo i dati nuovi, cancellando quelli precedenti! Ho messo un ciclo e questo file mi serve per salvare i dati ogni volta che si ripete il ciclo. E' da poco che ho iniziato a usare il labview quindi sn abb inesperta!
Ciao!!!
----------------------------------------
AUTORE: 278
DATA :02/04/2009 - 18:10:01
----------------------------------------
Ciao, benvenuta nel forum.
Per risolvere il tuo problema devi usare il blocchetto "set file position" raggiungibile dalla function palette nel percorso File I/O>>Advanced File functions.
All`ingresso "from" fai tasto dx>>create constant e selezioni "end". Dopodiche` usa il vi "Write to text File" per loggare i tuoi dati uno in coda all`altro.
Spero di esserti stato d`aiuto
Ciao
----------------------------------------
AUTORE: 2598
DATA :03/04/2009 - 13:05:28
----------------------------------------
Grazie 1000!!! Spero di riuscire a farcela!
Buona giornata!!!
Ciao
----------------------------------------
AUTORE: 2598
DATA :03/04/2009 - 14:36:02
----------------------------------------
Ciao sono riuscita a fare in modo che il file salvi di volta in volta i dati nuovi senza cancellare quelli vecchi, però ho un altro problemino, perchè mi salva i dati uno dietro l'altro attaccati in un unica riga, volevo sapere come si fa a stabilire un particolare ordine all'interno del file per avere una sequenza di dati in colonna.
Io ho messo un ciclo e i dati che devo salvare le ore(hh:mm:ss) ad ogni inizio del ciclo e fare anche la differenza trovando il tempo intercorso tra un avvenimento e l'altro, e volevo salvare tutto in excel.
Come posso fare?
mi scuso se questi problemi sono banali, ma la mia conoscenza di labview è davvero scarsa, anche perchè sto cercando di imparare da autodidatta!
grazie in anticipo
Ciao!!!!
PS:io uso un mac
----------------------------------------
AUTORE: 278
DATA :03/04/2009 - 16:36:14
----------------------------------------
un mac, interessante... utilizzi LV per mac o fai girare una VM con winXP e LV?? Solo per curiosita...
Per avere i dati in colonna devi scrivere un`unica stringa separando i vari campi (ora, stato, evento ecc) tramite un delimitatore, solitamente uso il tab, ma puoi anche sbizzarrirti con caratteri differenti. Il tab ti torna utile se poi decidi di importare il file con excel, viene riconosciuto come separatore di colonna, facilitandoti l`import
Ti allego un vi che dovresti riuscire ad aprire senza problemi, molte volte un`esempio vale + di mille parole.
Buon lavoro
----------------------------------------
AUTORE: 2598
DATA :06/04/2009 - 15:16:36
----------------------------------------
Ciao, grazie per l'aiuto, però non sono riuscita ad aprire l'esempio perchè la mia versione di labview è 8.0 e non 8.5, e mi da un errore.
Come posso fare?
N.B.Io ho un labview normale, e lo uso prorpio sul mac, infatti nel libretto che ho trovato dentro ci sono anche vari adattamnti per le differenze che si possono incontrare se lo uso su mac...
Ciao!!
----------------------------------------
AUTORE: 278
DATA :07/04/2009 - 08:14:54
----------------------------------------
...posso solo postarti un'immagine...
----------------------------------------
AUTORE: 2598
DATA :07/04/2009 - 16:29:28
----------------------------------------
Ciao, penso di aver capito, dovrebbe funzionare!
Grazie!!!
----------------------------------------
================================================================================
Fatal internal error:"memory.cpp", line 638 come lo risolvo?
================================================================================
AUTORE: 822
DATA :04/04/2009 - 17:25:47
----------------------------------------
Il mio programma in labview và in crash in modo inaspettato, non riproducibile e random... può lavorare per 8 ore consecutive senza problemi e poi magari crashare 5 volte in mezz'ora senza che sia cambiato il modo di utilizzo.
Il messaggio di errore che esce fuori e che poi mi obbliga ad uccidere brutalmente via task manager l'eseguibile di labview, è il seguente:
Fatal internal error:"memory.cpp", line 638
Labview version 7.1.1
Allego immagine.
Esiste una patch che fissa questo errore? Aiuto.. mi fà impazzire l'imprevedibilità con cui si manifesta
----------------------------------------
AUTORE: 822
DATA :04/04/2009 - 17:28:54
----------------------------------------
scusate ecco l'immagine..[attachment=0:1fkc8hx6]errore memory.JPG[/attachment:1fkc8hx6]
----------------------------------------
AUTORE: 947
DATA :05/04/2009 - 13:05:25
----------------------------------------
..
.. Arrrrghhh ... come ti capisco ... mi è capitato diverse volte pure a me ...
non ho mai trovato una soluzione ...
semplicemente siccome ho fatto delle modifiche al SW per altri motivi .. allora è scomparso da solo così come è arrivato ..
Boooh..
Mi spiace ma nn posso esserti d'aiuto ..
.. ma sappi che soffro con te !! ..
Una paio di domande però che forse possono essere utili a chi ne sa più di noi ..
..a me ultimamente è capitato solo sul SW in exe quindi dopo la compilazione con il Builder
mentre sui VI interpretati da LV non mi capitava .. parlo di LV 7.0 che (si sa) è pieno di bug che poi sono stati fissati nella 7.1 ..
A te capita sui VI interpretati o sul Exe compilato?
Che versione di LV hai ?
----------------------------------------
AUTORE: 822
DATA :05/04/2009 - 13:33:10
----------------------------------------
Mi fà impazzire stà cosa..
mi capita sull'eseguibile, ma non so dirti con certezza che sui vi non mi capiti la stessa cosa.. anche perchè è impossibile riprodurre l'errore (è random.. può capitare in 5 minuti e non capitare mai per ore). E non sò quale passo di programmi scateni l'errore.. forse la scrittura su un file, ma è una operazione comune, normalissima, è la scrittura di una array di 6 stringhe formattate da una tabulazione..
La mia versione di LabVIEW è la 7.1.
Ho bisogno di aiuto, ho scritto anche sul forum di National, per ora nessuna risposta.. speriamo che qualcuno abbia una soluzione
Grazie
----------------------------------------
AUTORE: 947
DATA :05/04/2009 - 15:22:03
----------------------------------------
..
Secondo me è un problema di Compilazione errata .. dal momento che capita sull'Exe .. quindi un bug del LV ..
quindi è inutile che ti scervelli cercando un errore sul tuo codice .. probabilmente non ne ha !!
Ovviamente è solo una ipotesi ..
Potresti provare a cabiare il codice in modo che faccia la stessa cosa ma in modo differente ..
.. è una soluzione poco scientifica .. ma pratica ..
.. se non ti costa molto tempo e alla fine funziona .. non hai capito nulla ma chissene !!
----------------------------------------
AUTORE: 2592
DATA :05/04/2009 - 21:46:09
----------------------------------------
Ciao Giuseppe,
come dice Luca gli internal error sono difficili da debuggare in quanto possono essere causati da bachi di LabVIEW.
Il memory.cpp line 638 come puoi intuire è un errore legato ad una cattiva gestione della memoria.
Il consiglio che ti posso dare è quello di fare un mass compile dei VI e ricreare l'eseguibile in caso si fosse corrotto qualcosa. Una secondo prova che puoi fare è cercare di isolare l'errore andando a spulciare il tuo codice. Devi fare attenzione alle operazioni con array, cicli for, build array etc...
Posso immaginare quanto sia frustrante questa situazione ma solo isolando l'errore potremo essere in grado di darti un aiuto maggiore.
Un' ultima soluzione, che di solito funziona, è quella di fare l'upgrade di LabVIEW; se si tratta di un baco della 7.1 è molto probabile che sia stato risolto nelle versioni successive.
Potresti far girare il tuo codice in ambiente di sviluppo 7.1 e qualora si manifesti il crash scaricare l'ultima versione di LabVIEW 8.6.1 dal sito www.ni.com e ricompilare tutto.
Spesso l'upgrade ha risolto questo tipo di problematiche.
Ciao,
----------------------------------------
AUTORE: 947
DATA :05/04/2009 - 23:21:53
----------------------------------------
[quote:2tb4229y]scaricare l'ultima versione di LabVIEW 8.6.1 dal sito http://www.ni.com [/quote:2tb4229y]
In che senso .. dowoad libero ??
.. ma di cosa esattamente ?? ..
----------------------------------------
AUTORE: 482
DATA :06/04/2009 - 07:40:22
----------------------------------------
Prima di tutto farei un controllo dei VI alla ricerca degli utilizzi errati di memoria.
tipo fili che si sdoppiano mille volte o array non svuotati e robe simili.
Diciamo che potresti fare un lavoro di ottimizzazione del codice che potrebbe risolvere il tuo problema.
Una specie di debug potresti farlo con un pc con molta meno memoria e uno ocn molta di piu' e valutare se l'occorrere di quell'errore si ripete e se si con delle cadenze diverse.
Per quanto riguarda l'upgrade all'ultiam release di LabVIEW, scordati che sia gratis
Io l'ho fatta solo perchè abbiamo il contratto di assistenza che quindi mi permette di avere a disposizione sempre l'ultima release, ma personalmente trovo che la versione 7.1 sia la piu' snella e la piu' pratica, senza troppi VI Express, senza palette strane e senza attivazioni di licenze via web.
----------------------------------------
AUTORE: 947
DATA :06/04/2009 - 14:23:13
----------------------------------------
..
[quote:2s9r570o]Per quanto riguarda l'upgrade all'ultiam release di LabVIEW, scordati che sia gratis [/quote:2s9r570o]
Ah .. ecco .. dicevo io !! ..
[quote:2s9r570o]Prima di tutto farei un controllo dei VI alla ricerca degli utilizzi errati di memoria.
tipo fili che si sdoppiano mille volte o array non svuotati e robe simili.
Diciamo che potresti fare un lavoro di ottimizzazione del codice che potrebbe risolvere il tuo problema.[/quote:2s9r570o]
Dunque .. io direi che parlare di [b:2s9r570o]utilzzo errato della memoria[/b:2s9r570o] e di [b:2s9r570o]ottimizzazione[/b:2s9r570o] siano cose del tutto differenti ..
.. se ci fosse un reale aumento della memoria utilizzata progressivo a causa di [b:2s9r570o]array non svuotati e robe simili[/b:2s9r570o]..
.. bhè .. si dovrebbe vedere un effettivo aumento della [b:2s9r570o]memoria allocata[/b:2s9r570o] nel [b:2s9r570o]task mamager di windows[/b:2s9r570o] ..
.. e ti assicuro che non è il mio caso ..
mi sembra piuttosto come un tipico problema di [b:2s9r570o]sforamento della memoria[/b:2s9r570o] che purtroppo lavorando anche in C/C++ conosco molto bene .. ma in quel caso l'errore in effetti è mio perchè in effetti compio un reale errore nell'allocazione dei vettori ..
Ma in LabVIEW questo problema in teoria non esiste ..
.. o meglio .. può esistere ma per colpa degli svilupptori di LV stesso !
Ovviamente dico questo non per scatenare polemiche .. ma solo per teorizzare una possibile ipotesi ..
Che ne pensate?
----------------------------------------
AUTORE: 2592
DATA :06/04/2009 - 14:31:28
----------------------------------------
Ragazzi forse sono stato un pò superficiale...
Quando ho scritto che potete scaricare l'ultima versione di LabVIEW intendevo la versione Evaluation 30 giorni.
Per avere questa versione non bisogna avere alcun contratto di assistenza, ci si deve solo registrare al sito http://www.ni.com (gratuitamente) e andare nella sezione dei download evaluation:
Evaluation Software
http://www.ni.com/downloads/evaluation.htm
Per 30 giorni si hanno a disposizione tutte le funzionalità della versione Professional Development System e quindi tornando alla questione del fatal internal error si può verificare se il codice funziona correttamente oppure no.
Ciao,
----------------------------------------
AUTORE: 947
DATA :06/04/2009 - 15:21:57
----------------------------------------
..
[quote:2518hrfi]versione Evaluation 30 giorni[/quote:2518hrfi]
Interessante .. certo .. maaaa ..
.. se percaso compilando il tutto in LV 8.last dovesse funzionare tutto ??? ...
.. a 'sto punto che si fa?? ... ci si mette il cuore in pace ??
----------------------------------------
AUTORE: 822
DATA :07/04/2009 - 10:31:06
----------------------------------------
Stò cercando di ricreare l'errore ma non ci riesco, purtroppo è un programma colmplesso che gestisce comunicazioni via seriale, scrive e legge da server, comunica con PLC e il tutto in contemporanea. L'ho lasciato girare tutto stanotte e non è mai crashato.
Purtroppo il problema si manifesta in produzione e finchè la macchina era da noi non è mai capitato, ma ovviamente non era messo sotto stress come ora.
Immagino capiate la situazione..
Posso solo aggiungere che questa è una seconda release di programma, nella prima versione non è mai successo. Quello che è cambiato nelle due versioni è la comunicazione PC-PLC (che è stata resa più corposa e robusta) e la lettura/scrittura di due file all'incirca ogni minuto, uno dei quali è su server e può essere interrogato in contemporanea da più pc, a questo proposito apro un altro post sulla gestione di eventuali timeout in lettura scrittura in contemporanea su un file da parte di due pc (labview come li gestisce?)
Tutto il resto è rimasto uguale (hardware, versione di LabVIEW)
----------------------------------------
AUTORE: 947
DATA :07/04/2009 - 12:28:01
----------------------------------------
..
Ciao a tutti..
Non so quanto quello che sto per dire sia utile a Giuseppe..
[i:2m0ca1e5](Poverino, non vorrei essere al suo posto)[/i:2m0ca1e5]
.. ma a me è successo di nuovo .. proprio stamattina .. fresco fresco di giornata !!
Stesso errore ma NON sul EXE .. bensì [u:2m0ca1e5]sui VI interpretati dal LV versione 7.0[/u:2m0ca1e5] ..
.. Però c'è un però !! ..
Questa volta ho capito dive stava il problema ..
.. o meglio .. se stessi lavorando in C/C++ lo avrei capito ..
Quello che io erroneamente facevo in pratica era questo tradotto in C:
[quote:2m0ca1e5]
int Vettore[10]; // Alloco la mem per 10 interi
int Ind = 13; // Uso Ind per indicizzare il Vettore
int Val;
Val = Vettore[Ind]; // Leggo da una area di mem non allocata
[/quote:2m0ca1e5]
In C/C++ questo è un errore di programmazione bello e buono ...
normalmente ci ragiono su 10 volte prima di scrivere una cosa del genere !!
[b:2m0ca1e5]Ma in teoria in LV questo è permesso !![/b:2m0ca1e5]
Se scrivo la stessa cosa non ottengo un errore ..
.. ma semplicemente otterrei Val = 0;
In genere è così ...
.. ma questa volta ho ottenuto il tanto temuto [b:2m0ca1e5]ERROR:"memory.cpp"[/b:2m0ca1e5]
Perchè ??????
[b:2m0ca1e5]N.B.:[/b:2m0ca1e5]
In realtà il vettore creato era una matrice di stringhe di dimensioni 0x15
ed era restituito da una invocazione in SQL di tipo SELECT da un DB tramite le ADO ...
... quindi in realtà la gestione della mem qui è un po' più complessa ..
.. in realtà è allocata dall'ActiveX delle ADO Connection ...
[b:2m0ca1e5]Ma il LV non dovrebbe cmq gestire la Mem in modo sicuro e robusto come dichiara[/b:2m0ca1e5]??
Scusate la prolissità e grazie a tutti!!
Ciao
----------------------------------------
AUTORE: 822
DATA :07/04/2009 - 13:21:07
----------------------------------------
.. beato te che hai capito ..
io adesso cerco un muro dove sbattere la testa..
----------------------------------------
AUTORE: 947
DATA :07/04/2009 - 14:09:18
----------------------------------------
[quote="giuseppe.l74":3ix5nmto].. beato te che hai capito ..
io adesso cerco un muro dove sbattere la testa..[/quote:3ix5nmto]
.. ti capisco .. anche perchè per me è stato un caso fortuito .. e purtroppo isolato
.. in cui l'errore era [b:3ix5nmto]sistematico[/b:3ix5nmto] .. ma altre volte non sapevo che fare !!
Cmq la mi considerazione la giro a chi più esperto di me ..
perchè, nonostante quanto ho scritto oggi, ...
.. sono ancora convinto che cmq in fase di compilazione succeda qualcosa di diverso di qullo che accade sui VI interpretati ..
e questo sarebbe un problema più grave perchè in questo caso diventa inutile la ricerca di errori !!
E qui cito me stesso :
[quote:3ix5nmto]
.. se percaso compilando il tutto in LV 8.last dovesse funzionare tutto ??? ...
.. a 'sto punto che si fa?? ... ci si mette il cuore in pace ??
[/quote:3ix5nmto]
riferendomi a tutti quelli che hanno acquistato il LV 7 ... e non hanno intenzione di spendere altri soldi per LV 8 ..
----------------------------------------
AUTORE: 822
DATA :07/04/2009 - 14:33:14
----------------------------------------
ho appena fato un mass compile della cartella del programma.
allego il report.. dice niente di interessante?
il fatto strano è che se provo a rifarlo mi restituisce ancora un report di errori.. ma il mass compile non dovrebbe risolvere questi errori una volta per tutte?
----------------------------------------
AUTORE: 43
DATA :07/04/2009 - 23:49:42
----------------------------------------
[quote="giuseppe.l74":18ilfvwg]ho appena fato un mass compile della cartella del programma.
allego il report.. dice niente di interessante?
il fatto strano è che se provo a rifarlo mi restituisce ancora un report di errori.. ma il mass compile non dovrebbe risolvere questi errori una volta per tutte?[/quote:18ilfvwg]
Se
"Acquisizione bufferizzata.vi"
"Peak&Hold_Grafico.vi"
"0_F_CHECK__.vi"
"Acquire IMAQ Image from uEye cam 1.vi" (pescato da un path di backup...)
"Check logo.vi"
"Leggi_specifiche.vi"
sono "BAD" nel senso dello 'stato del VI', come idle' e 'running'', insomma hanno la "freccia rotta",
allora non possono nemmeno funzionare...
Come fai a generarne un eseguibile?
Dal log deduco che hai VI sparsi un po' dovunque: prova almeno una volta a salvare l'intera gerarchia dei Tuoi VI (escludendo la VI lib) e verifica che vengano caricati dal posto giusto.
[quote="Ryan_82":18ilfvwg]Un' ultima soluzione, che di solito funziona, è quella di fare l'upgrade di LabVIEW; se si tratta di un baco della 7.1 è molto probabile che sia stato risolto nelle versioni successive.[/quote:18ilfvwg]
Beh! A me, forse, il più delle volte è capitato il contrario: cioè che un programma fatto in una vecchia versione di LV funzionasse e portato nella nuova avesse dei problemi...
E poi un conto è portare da 7.x a 7.y, un altro è passare dalla 7 alla 8... con tutte le "correzioni" automatiche che regalano sempre nuovi fastidi...
Il punto è questo: NI dovrebbe rendere pubblici i bachi noti di ogni release, in modo che i programmatori che usano "vecchie" versioni di LV possano mettere in atto dei walkaround...
Le "note di rilascio", di ogni versione di LV, sono parche di informazioni significative e prolisse nel decrivere ogni minimo cambiamento.
Questa mancanza di trasparenza è comune a tutti i SW proprietari: tutti sono gelosi dei propri difetti e non vogliono farli conoscere agli altri!!
bye
----------------------------------------
AUTORE: 822
DATA :17/04/2009 - 17:37:53
----------------------------------------
[quote:t0qyi4h6]Se
"Acquisizione bufferizzata.vi"
"Peak&Hold_Grafico.vi"
"0_F_CHECK__.vi"
"Acquire IMAQ Image from uEye cam 1.vi" (pescato da un path di backup...)
"Check logo.vi"
"Leggi_specifiche.vi"
sono "BAD" nel senso dello 'stato del VI', come idle' e 'running'', insomma hanno la "freccia rotta",
allora non possono nemmeno funzionare...
Come fai a generarne un eseguibile?
[/quote:t0qyi4h6]
E' vero sono BAD e non runnabili, ma non vengono richiamati dal vi principale e quindi l'eseguibile viene generato, li ho lasciati lì perchè mi servono come esempi, labview spesso carica vi pescandoli anche da percorsi improponibili solo perchè sono stati aperti di recente e ancora in memoria, poi quando salvi lui salva anche il percorso.. Posso dire che lo trovo disordinato? io in genere metto tutti i vi che uso in una cartella, poi lui invece se li và a pescare dove vuole.
Tornando al problema principale del post, ho provato tutti i vostri suggerimenti, mass compile, controllo di array, variant, fare le stesse cose in modo diverso..
nulla è cambiato
, quello che non ho fatto è la ricompilazione con la versione 8 di labview, a questo punto farò così.. sperando di risolvere e soprattutto di non aumentare i problemi..
Mi è venuto ancora un dubbio, che però potrebbe spiegare l'imprevedibilità del problema e cioè che in realtà non è legata al compilatore ma alla comunicazione.
Come ho già detto questo programma riceve dati da un PLC e li converte (in byte, stringhe, o real), cosa succede se il PLC invia un dato al PC che labview non è in grado di convertire (tipo un carattere che non è convertibile in ASCII o una conversione in real impossibile)? Mi manda in crash il sistema con questo errore di memoria? Lo chiedo perchè ho avuto una esperienza simile con un programma fatto in Visual C che mi crashava in modo inaspettato con un errore di "Run Time" e alla fine si è capito che il problema era legato al fatto che il PLC inviava al PC una stringa vuota non convertibile in carattere ASCII.. Potrebbe essere lo stesso problema?
----------------------------------------
AUTORE: 43
DATA :20/04/2009 - 11:09:24
----------------------------------------
[quote="giuseppe.l74":ei9ud41f]... labview spesso carica vi pescandoli anche da percorsi improponibili solo perchè sono stati aperti di recente e ancora in memoria, poi quando salvi lui salva anche il percorso.. Posso dire che lo trovo disordinato?[/quote:ei9ud41f]
Sarà anche disordinato, ma se conosci il suo comportamento lo controlli, se invece non vuoi ficcarti nella testa i principi di funzionamento ( di caricamento) utilizzati da LabVIEW, pretendendo che LabVIEW si comporti come Tu desideri sarai sempre Tu a fare confusione...
[quote="giuseppe.l74":ei9ud41f] io in genere metto tutti i vi che uso in una cartella, poi lui invece se li và a pescare dove vuole.[/quote:ei9ud41f]
Già dici che metti tutto in una cartella "in genere" (ed in particolare no??) .LabVIEW tenta di caricarli dal path da cui sono stati caricati l'ultima volta che hai salvato il primo VI che contiene la chiamata a quel subVI.
"In generale" E' MEGLIO NON AVERE SULLO STESSO PC, 2 VI CON LO STESSO NOME, se non sei capace di dominare la situazione...
[quote="giuseppe.l74":ei9ud41f]Tornando al problema principale del post, ho provato tutti i vostri suggerimenti, mass compile, controllo di array, variant, fare le stesse cose in modo diverso..
nulla è cambiato
, quello che non ho fatto è la ricompilazione con la versione 8 di labview, a questo punto farò così.. sperando di risolvere e soprattutto di non aumentare i problemi..[/quote:ei9ud41f]auguri
[quote="giuseppe.l74":ei9ud41f]Mi è venuto ancora un dubbio, che però potrebbe spiegare l'imprevedibilità del problema e cioè che in realtà non è legata al compilatore ma alla comunicazione.
Come ho già detto questo programma riceve dati da un PLC e li converte (in byte, stringhe, o real), cosa succede se il PLC invia un dato al PC che labview non è in grado di convertire (tipo un carattere che non è convertibile in ASCII o una conversione in real impossibile)? Mi manda in crash il sistema con questo errore di memoria? Lo chiedo perchè ho avuto una esperienza simile con un programma fatto in Visual C che mi crashava in modo inaspettato con un errore di "Run Time" e alla fine si è capito che il problema era legato al fatto che il PLC inviava al PC una stringa vuota non convertibile in carattere ASCII.. Potrebbe essere lo stesso problema?[/quote:ei9ud41f]
Siamo in piena arrampicata sugli specchi...Purtoppo per Te LabVIEW non "crasha" per queste cose, ma , oltre che per i suoi bachi, crasha per altri motivi.
Permettimi: ho passato oltre 3 anni con persone che dicevano che "LabVIEW fa cagare" e se, molto parzialmente, posso dar loro ragione, non posso tacere il fatto che queste reiterate dichiarazioni fossero il frutto della loro incapacità e conoscenza nel saper gestire LabVIEW e le applicazioni scritte in questo linguaggio. Difficilmente si sente dire che "VC++ fa cagare" perchè se si "sfora" l'accesso ad un array si può generare un "Access Violation", mentre da questo punto di vista LabVIEW è decisamente + sicuro.
Dire che LabVIEW fa schifo perchè son si riescono a stanare i propri bug, è tipico di coloro che di fronte ad un problema provano per prima cosa a dare la colpa agli altri. Nel caso non lo possano fare, riescono a dare la colpa al linguaggio di programmazione. Sempre non riuscendo a trovare le ragioni del comportamento anomalo.
Cose che possono far crashare LabVIEW... bah, spesso passano attraverso le chiamate a DLL, a me è capitato che l'interfaccia LabVIEW restava appesa perchè restava dentro delle DLL (le chaimate a DLL sfruttano lo stesso thread dell'interfaccia...).
Nel Tuo caso si tratta di un baco LabVIEW e potrebbe essere generato da un VI "sporco" cioè un VI salvato "male" cioè contenente "dati o codice sbagliato" che ne compromettono il comportamemnto saltuariamente.
Si dovrebbe ripartire da una versione che non ha questo problema e riscrivere le modifiche apportate, secondo me.
cmq sia auguri.
bye
----------------------------------------
AUTORE: 947
DATA :20/04/2009 - 12:39:06
----------------------------------------
..
Scusate ... posso intromettermi? ..
.. non è per dare aiuti però .. purtroppo in questo caso non posso ..
ma solo per ribattere a Paracarro su alcune cose che nn mi sono .. diciamo .. piaciute !
tu scrivi nella firma [quote:hipxlwbl]Ti ringrazio per la domanda...[/quote:hipxlwbl] che è bellissima come espressione ..
però poi non sempre sembri contento !
Cioè attenzione .. non è che secondo me hai torto concettualmente .. però devi anche metterti nei panni dei principianti ...
[b:hipxlwbl]è vero che LV fa confusione con i VI !![/b:hipxlwbl] ... Cioè .. è vero che se conosci il suo sistema lo puoi controllare ... però non sempre è così facile ...
Io infatti seguo il consiglio che tu stesso dai ...
Evitare di avere 2 VI con lo stesso nome nello stesso PC .. Io conservo ogni giorno il lavoro che ho fatto e zippo tutto ...
questo mi assicura che 1) posso tornare a quello che ho fatto 3 g fa (per es) se è necessario e 2) il LV nn si incasina!
Almeno .. "in genere" faccio così .. e quando non faccio così .. [b:hipxlwbl]bordello[/b:hipxlwbl]!! ...
certo .. so che è colpa mia e non di una cosa che nn ha intelligenza ... Ma io me la devo pigliare con qualcuno no??
Gli Auguri che fai a Giusepe ... spero siano sinceri .. e non ironici ...
Ma poi c'è una cosa su cui prorpio non sono d'accordo:
[quote:hipxlwbl]
Difficilmente si sente dire che "VC++ fa cagare" perchè se si "sfora" l'accesso ad un array si può generare un "Access Violation", mentre da questo punto di vista LabVIEW è decisamente + sicuro.
[/quote:hipxlwbl]
Ma non è vero!!
Leggi il mio intervento su questo stesso Topic
[quote:hipxlwbl]by Luca.glt on Tue Apr 07, 2009 12:28 pm[/quote:hipxlwbl]
dove parlo proprio di uno sforameno di un vettore che il LV in teoria gestisce ma in pratica NO!!
Allora è questo il punto :
Il VC++ non fa cagare perchè ti dice chiaro e tondo che se sfori so XXi tua !!
Il LV invece ti dice "Stai tranquillo .. ce penso io !!" ... E allora che me lo dici a fare "Fatal internal error: memory.cpp" ??? Risolvitelo da solo il problema no??
Oppure dovrei telefonare alla NI e dire agli sviluppatori .. << Buon giorno! Eccovi il vostro "Fatal internal error: memory.cpp" !! ..Bene adesso risolvetemi il problema !! >>
OVVIAMENTE dico per dire !! ... Sono uno sviluppatore anche io e so che non avrebbe alcun senso un comportamente del genere!!
[quote:hipxlwbl]
Permettimi: ho passato oltre 3 anni con persone che dicevano che "LabVIEW fa cagare" e se, molto parzialmente, posso dar loro ragione, non posso tacere il fatto che queste reiterate dichiarazioni fossero il frutto della loro incapacità e conoscenza nel saper gestire LabVIEW e le applicazioni scritte in questo linguaggio.
[...]
Dire che LabVIEW fa schifo perchè son si riescono a stanare i propri bug, è tipico di coloro che di fronte ad un problema provano per prima cosa a dare la colpa agli altri. Nel caso non lo possano fare, riescono a dare la colpa al linguaggio di programmazione. Sempre non riuscendo a trovare le ragioni del comportamento anomalo.
[/quote:hipxlwbl]
Su questo hai perfettamene ragione purtroppo .. Ci vorrebbe un po' di umiltà e autocritica da parte nostra ...
Però è vero anche che tutte queste considerazioni ( le mie comprese ovviamente ) NON aiutino affatto il povero Giuseppe
O meglio ... forse in generale sì ... molto in generale .. ma nn nel suo specifico problema ..
Chiacchierare mi piace ... ma non gli staremo facendo perdere tempo??
E cmq .. Grazie per l'intervento!!
----------------------------------------
AUTORE: 43
DATA :20/04/2009 - 14:10:27
----------------------------------------
[quote="Luca.glt":223bi6sk]..
Scusate ... posso intromettermi? ..
ma solo per ribattere a Paracarro su alcune cose che nn mi sono .. diciamo .. piaciute ![/quote:223bi6sk]
Ciao Luca,
non Ti intrometti affatto, anzi , mi verrebbe da dire: "Ti ringrazio per la risposta".
Se non altro vuol dire che hai letto quello che ho postato e che non la pensi come me. Questo è corretto e normale.
Cmq la frase "Ti ringrazio della domanda..." è del mio carissimo amico ed ex collega M. Marassi. Lui me la ripeteva spesso, per cui alla fine l'ho imparata e l'ho fatta mia.
[quote="Luca.glt":223bi6sk]...Cioè attenzione .. non è che secondo me hai torto concettualmente .. però devi anche metterti nei panni dei principianti ...[/quote:223bi6sk]
Non penso di disquisire con un principiante, dato che questa persona, Giuseppe, probabilmente programma in altri linguaggi come VC++. Cioè, magari non conosce benissimo LabVIEW, magari no, cmq sia è una persona che programma e quindi capisce di che stiamo parlando.
[quote="Luca.glt":223bi6sk]è vero che LV fa confusione con i VI !![/quote:223bi6sk]Contesto fermamente questa affermazione. Questa è la cosa che a me non è piaciuta sia nella Tua risposta sia in quella di Giuseppe e che mi ha fatto scattare quelle considerazioni.
[quote="Luca.glt":223bi6sk] ... Cioè .. è vero che se conosci il suo sistema lo puoi controllare ... però non sempre è così facile ...
Io infatti seguo il consiglio che tu stesso dai ...
Evitare di avere 2 VI con lo stesso nome nello stesso PC .. Io conservo ogni giorno il lavoro che ho fatto e zippo tutto ...
questo mi assicura che 1) posso tornare a quello che ho fatto 3 g fa (per es) se è necessario e 2) il LV nn si incasina![/quote:223bi6sk]
Ma certo, però il punto è sempre quello: non è labVIEW che si incasina. Quello che si incasina sei Tu!!!!!
Per fare quello che dici Tu esitono SW come CVS o SVN per "gestire" il versionamento del Tuo lavoro senza fare casino.
[quote="Luca.glt":223bi6sk] ...certo .. so che è colpa mia e non di una cosa che nn ha intelligenza ... Ma io me la devo pigliare con qualcuno no??
[/quote:223bi6sk]
Pigliatela con te stesso!!! devi sforzarti di capire perchè carica i VI da una parte al posto che da un'altra e porvi rimedio. Evitare i VI doppi è un rimedio estremo, se si controlla il Tutto se ne può fare a meno!
[quote="Luca.glt":223bi6sk] Gli Auguri che fai a Giusepe ... spero siano sinceri .. e non ironici ...[/quote:223bi6sk] Anch'io sono stato + volte nella cacca con problemi che alla fine erano di LabVIEW... so cosa vuol dire e gli auguri sono sinceri.
[quote="Luca.glt":223bi6sk] Ma poi c'è una cosa su cui prorpio non sono d'accordo:[quote:223bi6sk] Difficilmente si sente dire che "VC++ fa cagare" perchè se si "sfora" l'accesso ad un array si può generare un "Access Violation", mentre da questo punto di vista LabVIEW è decisamente + sicuro.[/quote:223bi6sk]Ma non è vero!!
Leggi il mio intervento su questo stesso Topic ...
dove parlo proprio di uno sforameno di un vettore che il LV in teoria gestisce ma in pratica NO!![/quote:223bi6sk]
Come non è vero !!!!?!?!?!? se accedo all'all'elemento 2657 di un array grande 100 mica ottengo un Access Violation!!!!!
Se è accertato un baco di LabVIEW è un altro conto, ma il linguaggio non prevede "crash" dovuti ad accessi "out of bounds" di array e matrici...
[quote="Luca.glt":223bi6sk]Oppure dovrei telefonare alla NI e dire agli sviluppatori .. << Buon giorno! Eccovi il vostro "Fatal internal error: memory.cpp" !! ..Bene adesso risolvetemi il problema !! >>
OVVIAMENTE dico per dire !! ... Sono uno sviluppatore anche io e so che non avrebbe alcun senso un comportamente del genere!![/quote:223bi6sk]
Ma xchè no??!?!?! Guarda che quando LabVIEW crasha al successivo riavvio Ti viene chiesto se segnalare il problema oppure no!!!
Per migliorare un prodotto SW ci si basa sui feedback degli utilizzatori, fino prova contraria, oppure no!?!?!
[quote="Luca.glt":223bi6sk]...Però è vero anche che tutte queste considerazioni ( le mie comprese ovviamente ) NON aiutino affatto il povero Giuseppe...
[/quote:223bi6sk]Il punto è che nessuno può aiutarlo!!!!
Se almeno NI facesse quello che ho chiesto nel primo post di questa discussione:
NI dovrebbe rendere pubblici i bachi noti di ogni release, in modo che i programmatori che usano "vecchie" versioni di LV possano mettere in atto dei walkaround...
Gliene saremmo tutti grati...
bye
----------------------------------------
AUTORE: 43
DATA :20/04/2009 - 17:12:37
----------------------------------------
Altra cosa: a me è capitato di avere dei problemi con le versioni dei SW NI "accessori" che controllano HW vari. NIDAQ in primis.
Cioè: se la Tua applicazione .exe ha dei problemi su un PC e su un altro PC non ce l'ha, si verifica le versioni NI DAQ, NI VISA, NI 488 (GPIB),NI IVI , NI VISION ecc..
Sapendo di quale Driver SW NI fa uso la Tua applicazione, verifica che le versioni tra il PC su cui hai compilato l'applicazione e quello di installazione finale abbiano la stessa identica versione di ognuno di essi installata correttamente.
----------------------------------------
AUTORE: 822
DATA :24/04/2009 - 11:32:47
----------------------------------------
Ciao Luca, ciao Paracarro.
Intanto grazie per l'aiuto che, in modo diverso, state cercando di darmi. Quello di Luca più orientato al presente e quello di paracarro più... al futuro. Già dedicare del vostro tempo per leggere e rispondere ai post è importante, significa che comunque sia capite la situazione in cui uno si trova e cercate di aiutarlo.
Solo che a un certo punto si è usciti fuori tema.. il problema qua non è capire se Giuseppe sia o no un principiante di LabVIEW o più in "generale" della programmazione. Tanto meno capire se a Giuseppe LabVIEW piaccia o no. Io non ho MAI detto che LabVIEW fà schifo o che VC++ sia migliore, anzi l'unico esempio che ho fatto sui due compilatori è su un run time error che mi restituiva VC++ (quindi tutt'altro che infallibile). Io non sono qui per vendere un prodotto ed esaltarne le qualità, ma sono qui perchè ho un problema e quindi è normale che parlando di un problema escano fuori difetti e difettucci dell'ambiente di sviluppo.. senza per questo sottovalutarne le potenzialità.
Piccola critica: è vero che se conosci il comportamento di un prodotto lo puoi controllare, ma non sempre ci riesci (per la fretta, per la voglia, per disattenzione); voglia e disattenzione sono colpa mia, ma troppo spesso si lavora con la fretta (tempi di consegna sempre più brevi, problemi che escono all'ultimo minuto, modifiche in corso d'opera, ecc.., chi fà questo mestiere lo sà benissimo) e quando si manifestano errori che non riesci a controllare (perchè alla fine non sono colpa tua) su macchine che sono già produttive.. beh.. cerchi mille motivi e mille soluzioni e incominci a dare la colpa un pò a tutto (me compreso).
LabVIEW fà confusione con i VI, e questo non aiuta.. voglio dire.. gli sviluppatori di LabVIEW potrebbero tenerlo in considerazione come azione correttiva (visto che è così da sempre), sapere che non rischi di sovrascrivere VI in percorsi impensabili dell'hard disk aiuterebbe molto.
LabVIEW non è più un ambiente di sviluppo giovane e comportamenti che si possono migliorare andrebbero migliorati, meno cose hai a cui pensare e più tempo puoi dedicare al tuo lavoro, gliene saremmo grati!
Ma questo non è il problema principale.. è solo uno scambio di idee.. ognuno su questo punto può pensarla come vuole..
Il mio problema è che la mia applicazione crasha per un baco di LabVIEW7.1, conosciuto dalla National già dal 21/12/2004 (vedi [url:2nns6ec3]http://forums.ni.com/ni/board/message?board.id=170&message.id=100477&requireLogin=False[/url:2nns6ec3]) per il quale è stata aperta una SR#= 635103 chiusa con una azione correttiva Car# = 3GKCEKSN.
Peccato che questa azione correttiva sia valida solo per le versioni successive di LV (dalla
, io mi aspetterei che se esistono dei bachi su un prodotto sw la stessa casa produttrice dovrebbe mettere a disposizione dei suoi clienti degli aggiornamenti (GRATUITI).
Alla fine ho ricompilato il tutto con la versione LV8.5 e l'ho installato su una delle due linee.. bene.. questa linea ha lavorato per ora per un giorno e mezzo (tre turni) senza che il sistema andasse in crash (prima ci andava almeno 3/4 volte a turno).
Ora l'installerò anche sull'altro PC.
Ragazzi.. io spero di aver risolto.. certo la National (in questo caso) non mi è stata di grande aiuto, ma questa è solo una critica che vuole essere costruttiva, significa solo che anche lei può migliorare ma non che sia peggiore di altri.
Mi ha fatto piacere questo scambio di vedute con voi, ma spero di non averne più sul "Fatal internal error"
Un saluto,
Giuseppe
----------------------------------------
AUTORE: 947
DATA :24/04/2009 - 13:49:57
----------------------------------------
Ciao a tutti !
[quote:2ohmyap6]
Intanto grazie per l'aiuto che, in modo diverso, state cercando di darmi. Quello di Luca più orientato al presente e quello di paracarro più... al futuro.
[/quote:2ohmyap6]
Figurati .. è un dovere ... per chi da questo forum ha ricevuto molti aiuti utili!!
e a dire la verità .. Paracarro ti ha dato + consigli pratici di me !
[quote:2ohmyap6]
Il mio problema è che la mia applicazione crasha per un baco di LabVIEW7.1, conosciuto dalla National già dal 21/12/2004 (vedi http://forums.ni.com/ni/board/message?b ... ogin=False) per il quale è stata aperta una SR#= 635103 chiusa con una azione correttiva Car# = 3GKCEKSN.
Peccato che questa azione correttiva sia valida solo per le versioni successive di LV (dalla , io mi aspetterei che se esistono dei bachi su un prodotto sw la stessa casa produttrice dovrebbe mettere a disposizione dei suoi clienti degli aggiornamenti (GRATUITI).
[/quote:2ohmyap6]
E questo era un po' la questione che io sollevavo !!
E sono pienamente d'accordo con te!!
C'è un bug ? ..
Pazienza !! ... Non ce la prendiamo certo con la NI per questo !! ...
Lo avete risolto?
OTTIMO !! ... Datemi la Pacth e quello che volte così è come se niente fosse successo !! (non prorpio .. ma vabbè!!)
[quote:2ohmyap6]
Alla fine ho ricompilato il tutto con la versione LV8.5 e l'ho installato su una delle due linee.. bene.. questa linea ha lavorato per ora per un giorno e mezzo (tre turni) senza che il sistema andasse in crash (prima ci andava almeno 3/4 volte a turno).
Ora l'installerò anche sull'altro PC.
Ragazzi.. io spero di aver risolto..
[/quote:2ohmyap6]
!! OTTIMO !! ... Son contento per te !!
[quote:2ohmyap6]Mi ha fatto piacere questo scambio di vedute con voi, ma spero di non averne più sul "Fatal internal error"[/quote:2ohmyap6]
.... Ora mi sa che sei troppo ottimista ...
Ciao a tutti !!
----------------------------------------
================================================================================
Visualizzare testo associato al contenuto di un byte
================================================================================
AUTORE: 2600
DATA :07/04/2009 - 07:43:49
----------------------------------------
Ciao Ragazzi,uso labview 8.6.
ricevo un byte via seriale e lo visuailzzo con labview.
il contenuto di questo byte varia a seconda di certe condizioni.
anzichè visualizzare il valore numerico del byte o far accendere delle spie,come posso in labview associare il valore contenuto ad una stringa di testo che posso visualizzare ?
esempio:
il byte contiene 10,labview mi deve visualizzare "stato off"
il byte contiene 50,labview mi deve visualizzare "stato on"
il byte contiene 60,labview mi deve visualizzare "errore scheda"
il byte contiene 70,labview mi deve visualizzare "errore connessione"
etc....
grazie a tutti
Spectre
----------------------------------------
AUTORE: 482
DATA :07/04/2009 - 08:12:06
----------------------------------------
direi con dei CASE STRUCTURE
----------------------------------------
AUTORE: 2586
DATA :07/04/2009 - 11:21:31
----------------------------------------
Concordo in pieno
M
----------------------------------------
AUTORE: 43
DATA :07/04/2009 - 23:00:13
----------------------------------------
[quote="gepponline":2oaifwqt]direi con dei CASE STRUCTURE[/quote:2oaifwqt]
Sono ASSOLUTAMENTE contrario.
I case vanno bene se in almeno 2 di essi ci sono parti di codice diverso...
Nel tuo caso servono degli array opportunamente inizializzati.
Anzi ti consiglio un "menu ring" o "text ring" per il quale avrai avuto la cura abilitare l'attributo "allow undefined values"
Funziona così : prima predisponi un text ring caricando da programma (o da properties) le coppiate valore numerico - stringa (usa 'create constant' sulla proprietà "StringsAndValues[]").
Al text ring assegni il valore numerico ed ottieni nel front panel il corrispondente testo desiderato.
Per ottenere il testo corrispondente al numero da programma, puoi avvalerti della proprietà "RingText.text"
bye
----------------------------------------
AUTORE: 482
DATA :08/04/2009 - 08:16:05
----------------------------------------
[quote="paracarro":363x0qor][quote="gepponline":363x0qor]direi con dei CASE STRUCTURE[/quote:363x0qor]
Sono ASSOLUTAMENTE contrario.
I case vanno bene se in almeno 2 di essi ci sono parti di codice diverso...
[/quote:363x0qor]
In base a che cosa lo stabilisci? C'e' qualche motivo pratico che mi sfugge?
In ogni case ci sarebbe una stringa completamente diversa.Sempre una stringa, ma diversa.
Perchè dovrebbe complicarsi la vita con degli indici e andare a prelevare delle proprietà risalendo agli indici se ha già dei valori ben definiti dai quali non uscirà? E prima deve convertire i byte in numerici e poi identificare l'accoppiata e poi tramite l'indice prelevare la stringa, mi sembra sia una cosa macchinosa no? che vantaggio porterebbe?
----------------------------------------
AUTORE: 43
DATA :08/04/2009 - 09:59:24
----------------------------------------
[quote="gepponline":reuekh7y]...
In base a che cosa lo stabilisci? C'e' qualche motivo pratico che mi sfugge?
In ogni case ci sarebbe una stringa completamente diversa.Sempre una stringa, ma diversa.[/quote:reuekh7y]
Nei case ci puoi scrivere del codice, implementare una logica. Qua si sta parlando di dati.
E come dati vanno trattati. Vanno solo organizzati. La tabella è il modo + naturale per realizzare corrispondenze (vedi DB)
[quote="gepponline":reuekh7y]Perchè dovrebbe complicarsi la vita con degli indici e andare a prelevare delle proprietà risalendo agli indici se ha già dei valori ben definiti dai quali non uscirà? E prima deve convertire i byte in numerici e poi identificare l'accoppiata e poi tramite l'indice prelevare la stringa, mi sembra sia una cosa [b:reuekh7y]macchinosa[/b:reuekh7y] no? che vantaggio porterebbe?[/quote:reuekh7y]
[attachment=0:reuekh7y]XGeppoNum-Str.vi[/attachment:reuekh7y]
bye
----------------------------------------
AUTORE: 482
DATA :08/04/2009 - 13:07:11
----------------------------------------
posso continuare a sostenere che salvo il caso in cui questa cosa sia riportata in piu' parti del codice, non mi hai convinto?
Se gfossimo stati in un linguaggio testuale con un tot di IF then else occhei, ma in labview, non vedo perchè non sfruttare il case in questo caso.
Poi ho capito la tua soluzione, si tratta di inizalizzare il controllo odargli il typedef , quello che sia.
Non capisco il motivo per cui sostieni che non vada bene il case.
Comuqneu considerando di avere parecchie corrispondenze byte-stringa, concordo con te che sia piu' comodo caricare da file il tutto ed utilizzare la tua struttura.
Considerando che il byte che leggi da seriale arriva in formato stringa,Questa è la mia soluzione.
----------------------------------------
AUTORE: 43
DATA :08/04/2009 - 13:16:08
----------------------------------------
[quote="gepponline":1pu166k9]posso continuare a sostenere che salvo il caso in cui questa cosa sia riportata in piu' parti del codice, non mi hai convinto?
Se gfossimo stati in un linguaggio testuale con un tot di IF then else occhei, ma in labview, non vedo perchè non sfruttare il case in questo caso.
Questa è la mia soluzione.[/quote:1pu166k9]
Puoi sostenere ciò che ti pare e piace, io penso di aver motivato a sufficienza le ragioni della mia scelta e i motivi per i quali la ritengo migliore.
Buon WeekEnd
bye
----------------------------------------
AUTORE: 482
DATA :08/04/2009 - 13:28:43
----------------------------------------
c'hai il pepe al culo?
Quell oche ti chiedo io è, se hai delle motivazioni particolari per cui non usare il case.
Tu hai detto che il case va bene se in almeno due casi ci sono delle strutture diverse.
Per forza? Per quale motivo? In che senso va bene? Con il mio esempio puoi vedere che VA BENE anche il case.
Vorrei capire se la tua posizione in un caso semplcie come questo con 4 corrispondenze è legato a qualche teoria o se c'e' una questioen di funzionamento ed utilizzo della memoria che non conosco.
Cmq spectre, hai a disposizione diversi modi per risolvere il tuo problema. valuta tu quello che trovi piu' comodo e funzionale per la tua applicazione.
----------------------------------------
AUTORE: 43
DATA :09/04/2009 - 08:49:46
----------------------------------------
Vado ad intuito, ma c'è qualcosa che non mi torna:
[quote="gepponline":2hxy9rjb]...Considerando che il byte che leggi da seriale arriva in formato stringa,Questa è la mia soluzione.[/quote:2hxy9rjb]
[quote="spectre 1980":2hxy9rjb]...esempio:
il byte contiene 10,labview mi deve visualizzare "stato off"...[/quote:2hxy9rjb]
Nel tuo esempio consideri il numero 10 rappresentato da 2 bytes "\31\30" cioè "10" anzichè "\0A" che equivale a 10 decimale.
Sai bene che molto spesso le stringhe restituite da un dispositivo non sono composte da caratteri ascii visibili, o cmq necessitano di conversione "string to byte array", x esempio, x calcolare e verificare il chksum oppure solamente estrarne la lunghezza dalla parte "header" del messaggio.
Spectre dovrebbe confermare, ma probabilmente, per usare il Tuo case [b:2hxy9rjb]bisogna estrarre[/b:2hxy9rjb] in qualche modo la stringa di un byte che contiene x es "\0A" [b:2hxy9rjb]convertire la stringa[/b:2hxy9rjb] in valore numerico 10 e [b:2hxy9rjb]riconvertire il valore[/b:2hxy9rjb] in stringa "10". Oppure si cambia il case da "10" a "\0A" evitando la doppia conversione...
buona Pasqua!!!
bye
----------------------------------------
AUTORE: 482
DATA :09/04/2009 - 10:26:41
----------------------------------------
Non so, io ho considerato la stringa, ma potrebbe comunque essere un case con già il numero anzichè la stringa come hai fatto tu nel tuo esempio.
Ho usato l stringa perchè negli strumenti seriali che uso io solitamente, in uscita ottendo dei valori già leggibili e i blocchetti di lettura restituiscono comunque un formato stringa, l'unica cosa che io faccio con i miei strumenti (nel mio caso sono degli strumenti per la lettura di celle di carico con varie opzioni programmabili) è filtrare la stringa ottenuta eliminando i caratteri che non mi interessano come "$D00" o robe simili che mi rappresentano l'indirizzo dello strumento o il tipo di risposta.
----------------------------------------
AUTORE: 129
DATA :01/05/2009 - 23:20:27
----------------------------------------
Io utilizzerei il CASE se la lista dei comandi non cambierà in futuro.
Se viceversa la lista delle stringhe potrà cambiare mi affiderei all' uso del'array di stringhe.
----------------------------------------
================================================================================
Lettura/scrittura di due computer sullo stesso file
================================================================================
AUTORE: 822
DATA :07/04/2009 - 10:43:30
----------------------------------------
LabVIEW gestisce dei timeout in lettura srittura di file? o delle code?
Il problema è questo:
ho un file di testo al cui interno c'è scritto un numero, lo devo aprire, leggerne il contenuto, incrementare quel numero di una unità, salvare il nuovo contenuto e chiudere il file, il numero letto viene poi stampato.
Questo viene fatto sullo stesso file da due pc in rete, devo assolutamente evitare che i due pc vadano a leggere in contemporanea sullo stesso file e stampino entrambi lo stesso numero. LabVIEW con i sui VI di lettura e scrittura gestisce autonomamente queste contemporaneità? Cioè se vede che il file è già impegnato attende fintanto che questo non viene chiuso? Non mi sembra che sia possibile gestire dei timeout..
----------------------------------------
AUTORE: 645
DATA :08/04/2009 - 09:19:07
----------------------------------------
Dai un'occhiata ai semafori... Non ricordo il blocchetto esatto ma ti permettono di impedire l'accesso ad un file fino a quando non si verificano determinate condizioni (nel tuo caso fino a quando il file è libero da altri accessi).
----------------------------------------
AUTORE: 2588
DATA :08/04/2009 - 14:31:04
----------------------------------------
Ciao Giuseppe,
Assolutamente concordo con MagicBotolo circa l'utilizzo dei semafori nel caso di accessi concorrenziali a risorse (file, variabili, etc.) condivise. Questi infatti rappresentano un'utile strada per limitare il numero di task che possono accedere simultaneamente a tali risorse.
Dalla Function Palette puoi trovare le funzioni di cui hai bisogno da Programming >> Synchronization >> Semaphore
[img:2l2ae632]http://ae.natinst.com/operations/ae/public.nsf/$CXIV/ATTACH-AEEE-7NNTGP/$FILE/Semaphore%20Palette.PNG[/img:2l2ae632]
Per un esempio applicativo puoi fare riferimento al VI scaricabile a questa pagina web:
Locking a Shared Resource or Variable in LabVIEW Using Semaphores
[url:2l2ae632]http://zone.ni.com/devzone/cda/epd/p/id/5039[/url:2l2ae632]
Fammi sapere se hai nuove domande,
Buona giornata!
----------------------------------------
AUTORE: 43
DATA :08/04/2009 - 15:46:58
----------------------------------------
[quote="Logan":25apv3q3]Ciao Giuseppe,
Assolutamente concordo con MagicBotolo circa l'utilizzo dei semafori nel caso di accessi concorrenziali a risorse (file, variabili, etc.) condivise. Questi infatti rappresentano un'utile strada per limitare il numero di task che possono accedere simultaneamente a tali risorse.
Dalla Function Palette puoi trovare le funzioni di cui hai bisogno da Programming >> Synchronization >> Semaphore
[img:25apv3q3]http://ae.natinst.com/operations/ae/public.nsf/$CXIV/ATTACH-AEEE-7NNTGP/$FILE/Semaphore%20Palette.PNG[/img:25apv3q3]
Per un esempio applicativo puoi fare riferimento al VI scaricabile a questa pagina web:
Locking a Shared Resource or Variable in LabVIEW Using Semaphores
[url:25apv3q3]http://zone.ni.com/devzone/cda/epd/p/id/5039[/url:25apv3q3]
Fammi sapere se hai nuove domande,
Buona giornata![/quote:25apv3q3]
Ciao Logan
una curiosità:
Non capisco per quale motivo esistono i "semafori" di LabVIEW x LabVIEW.
Tutti sanno che un VI NON rientrante è di per se un "semaforo", essendo per sua stessa natura non eseguibile parallelamente in 2 diversi thread...
Quindi dentro un applicazione LabVIEW basta utilizzare un unico VI per accedere ad una o + risorse ed il gioco è fatto.
I semafori sono indispensabili a mio avviso nel momento in cui [b:25apv3q3]più applicazioni[/b:25apv3q3] accedono alla stessa risorsa.
Questo lo si può sfruttare usando i semafori gestiti dalle API di Windows, per esempio.
Consultando L'help on line di LabVIEW alla voce "Obtain Semaphore Reference VI " si ottiene:
[quote="Help di LabVIEW":25apv3q3]...
Obtain Semaphore Reference Details
You cannot use semaphores to communicate between LabVIEW application instances. If you obtain a reference to a semaphore in one application instance, you cannot use that semaphore reference in another application instance.
Example
...
[/quote:25apv3q3]
Da ciò ne deduco che i semafori di LabVIEW non servono ad una beata mazza di niente...
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
xGiuseppe:
se i sw che accedono alla risorsa sono 2 allora utilizza 2 file: nel primo scrive e cancella il processo 1 e legge il 2, nel secondo scrive e cancella il processo 2 e legge 1. con N processi usa N files. In ogni file tutti possono leggere (accesso readonly) ma un solo processo può scrivere (accesso read/write, deny write)
bye
----------------------------------------
AUTORE: 2588
DATA :08/04/2009 - 16:14:09
----------------------------------------
Ciao Paracarro,
Prima di tutto ti ringrazio per aver portato alla mia attenzione la svista che ho commesso: i semafori NON sono possono essere condivisi tra più eseguibili, bensì all'interno del processo in cui sono stati creati. Essendo concentrato sull'importanza di gestire la concorrenzialità di certe operazioni, mi sono perso l'aspetto principale dell'applicazione oggetto di questo post, quello ovvero di avere 2 PC in rete.
Per come sono strutturati, come ben sai questi permettono di proteggere del codice critico al fine di evitare le cosiddette Race Conditions, ovvero tutte le conseguenze indesiderate che intervengono a seguito della mancata gestione di operazioni concorrenti in LabVIEW. Sebbene sia completamente d'accordo sul fatto che un VI Non Rientrante rappresenti un'ottima alternativa alla gestione di problematiche di questo tipo, ciò non toglie che un approccio alternativo come questo non possa risultare utile comunque. Per esempio personalmente ritengo che i semafori permettano una maggiore leggibilità del codice nel momento in cui voglio vedere quali segmenti di codice intendo "proteggere", soprattutto in fase di sviluppo. Successivamente modularizzare il codice ed includere tali sezioni dl block diagram all'interno di SubVI non rientranti può essere un approccio sicuramente apprezzabile.
Saluti
----------------------------------------
AUTORE: 113
DATA :08/04/2009 - 16:49:56
----------------------------------------
Per gestire correttamente l'accesso multiplo ad un file si può utilizzare la funzione Deny Access che si trova nella sub-palette Adv File Funcs.
Permette di abilitare/disabilitare la lettura e/o scrittura al file.
Esiste dalla versione 8.X di LV.
Per versioni precedenti si può usare la funzione Access Rigths.
Ciao,
Alberto
----------------------------------------
AUTORE: 822
DATA :17/04/2009 - 17:06:40
----------------------------------------
paracarro grazie ma non ho capito..
[quote:2qlewf88]
se i sw che accedono alla risorsa sono 2 allora utilizza 2 file: nel primo scrive e cancella il processo 1 e legge il 2, nel secondo scrive e cancella il processo 2 e legge 1. con N processi usa N files. In ogni file tutti possono leggere (accesso readonly) ma un solo processo può scrivere (accesso read/write, deny write)
[/quote:2qlewf88]
i computer sono due (un giorno potrebbero essere tre), entrambi devono accedere allo stesso file in rete e sui due computer è installato lo stesso (identico) applicativo.. non posso creare un file per ogni pc.. il file di lettura e scrittura deve essere unico e l'accesso deve essere su tutti e due i computer, volendo però posso appoggiarmi su file temporanei che poi cancello una volta conclusa l'operazione di lettura scrittura..
----------------------------------------
AUTORE: 43
DATA :17/04/2009 - 18:07:40
----------------------------------------
[quote="giuseppe.l74":18g626g7]paracarro grazie ma non ho capito..[/quote:18g626g7] Ti rispondo al volo.
Avere un file x PC (mettendo chiaramente tutti i file nella stessa cartella di un server) Ti garantisce l'accesso esclusivo in scrittura/cancellazione in modo che non sia necessario l'uso di semafori.
Pensa ad una linea seriale RS232: lo standard prevede segnali TX e RX perciò esistono 2 fili su ognuno dei quali una sola entità (PC o dispositivo) scrive o trasmette ed almeno 1 entità riceve ( ma possono essere + di 1).
Le 2 linee sono 2 risorse indipendenti ed entrambe sono utilizzabili contemporaneamente senza problemi di accesso.
E' necessaria stabilire un protocollo ed una sincronizzazione per far parlere fra loro i dispositivi.
Pensa invece ad una linea RS485: lo standard seriale è un BUS su quale tutti i dispositivi possono scrivere e leggere.Contemporaneamente.
Con evidenti problemi di accesso alla risorsa BUS.
Questo è il tuo problema se Ti ostini a voler usare un solo file...
Io Ti proponevo un modo per evitare che ci fosse il conflitto nell'accesso alla risorsa.
----------------------------------------
AUTORE: 43
DATA :20/04/2009 - 16:32:05
----------------------------------------
R E S E T ! ! !
lasciamo perdere semafori e problemi di accesso concorrente
[quote="giuseppe.l74":3tpa09fq]LabVIEW gestisce dei timeout in lettura srittura di file? o delle code?[/quote:3tpa09fq]
Non penso si possa dire che si tratta di un problema di LabVIEW. In generale è un problema di S.O. e di File System.
Se il file può essere aperto, la funzione "open" restituirà un riferimento valido. Altrimenti si deve esaminare il codice di errore.
[quote="giuseppe.l74":3tpa09fq]Il problema è questo:
ho un file di testo al cui interno c'è scritto un numero, lo devo aprire, leggerne il contenuto, incrementare quel numero di una unità, salvare il nuovo contenuto e chiudere il file, il numero letto viene poi stampato.
Questo viene fatto sullo stesso file da due pc in rete, devo assolutamente evitare che i due pc vadano a leggere in contemporanea sullo stesso file e stampino entrambi lo stesso numero. LabVIEW con i sui VI di lettura e scrittura gestisce autonomamente queste contemporaneità? Cioè se vede che il file è già impegnato attende fintanto che questo non viene chiuso? Non mi sembra che sia possibile gestire dei timeout..[/quote:3tpa09fq]
Basta gestirselo facendosi un VI.
Io Te l'ho fatto in LabVIEW 7.1
[attachment=0:3tpa09fq]OpenExclusive.vi[/attachment:3tpa09fq]
L'ho testato in "locale" i tempi di accesso della rete sono + lunghi e richiedono un po' + di pazienza.
Cmq sia dovrebbe fare al caso Tuo
bye
----------------------------------------
AUTORE: 43
DATA :20/04/2009 - 16:35:04
----------------------------------------
Dimenticavo: se puoi, per favore, spiegare a cosa serve quel numero dentro il file e pechè si è scelto un file per fare quel conteggio, Te ne sarei grato.
Grazie x la pazienza
bye
----------------------------------------
AUTORE: 822
DATA :24/04/2009 - 13:27:05
----------------------------------------
Perbacco Paracarro... questi ultimi due post me li sono persi.
Ora non sono a lavoro e non posso aprire l'esempio che mi hai postato, lo farò lunedi.
Ti spiego a cosa serve quel numero:
stiamo parlando di una macchina di collaudo. Prima di iniziare il collaudo di questo prodotto devo stampare una etichetta barcode da incollare sul prodotto in modo tale che i dati di collaudo vengano associati a quel barcode stampato e registrati su database, così da poter essere rintracciati in futuro. Quel file che devo leggere incrementare e chiudere, contiene proprio il numero progressivo che deve essere stampato sul barcode. Ogni barcode deve essere associato ad un unico prodotto collaudato (non devono esistere due prodotti con lo stesso barcode). Essendo due le macchine di collaudo e visto che lavorano contemporaneamente non devono generare lo stesso progressivo. Ho scelto un file di testo perchè mi sembrava la soluzione più comoda, altrimenti non so.. forse potevo appoggiarmi ad una tabella di un db in remoto contenente solo il progressivo da incrementare.. forse gestire eventuali contemporaneità in questo modo sarebbe stato più sicuro.. ma inizialmente il problema non c'era perchè la macchina di collaudo era solo una e il file progressivo risiedeva in locale sull'unico PC di collaudo..
P.S.: grazie A TE per la pazienza, sei TU che stai cercando di darmi un aiuto, IO il minimo che posso fare è darti le info che mi chiedi
----------------------------------------
AUTORE: 2701
DATA :14/06/2010 - 08:29:42
----------------------------------------
Mi servirebbe qualcosa si simile anche a me...Cioè più applicazioni vanno a scrivere sullo stesso file e voglio che possano accedere solo una per volta in maniera esclusiva...Il mio problema è che voglio utilizzare le VI "Configuration File VIs" e quindi avere file strutturati con sezioni e chiavi.
In attesa di una vostra risposta
Ciao
[quote="paracarro":1268w0j5]R E S E T ! ! !
lasciamo perdere semafori e problemi di accesso concorrente
[quote="giuseppe.l74":1268w0j5]LabVIEW gestisce dei timeout in lettura srittura di file? o delle code?[/quote:1268w0j5]
Non penso si possa dire che si tratta di un problema di LabVIEW. In generale è un problema di S.O. e di File System.
Se il file può essere aperto, la funzione "open" restituirà un riferimento valido. Altrimenti si deve esaminare il codice di errore.
[quote="giuseppe.l74":1268w0j5]Il problema è questo:
ho un file di testo al cui interno c'è scritto un numero, lo devo aprire, leggerne il contenuto, incrementare quel numero di una unità, salvare il nuovo contenuto e chiudere il file, il numero letto viene poi stampato.
Questo viene fatto sullo stesso file da due pc in rete, devo assolutamente evitare che i due pc vadano a leggere in contemporanea sullo stesso file e stampino entrambi lo stesso numero. LabVIEW con i sui VI di lettura e scrittura gestisce autonomamente queste contemporaneità? Cioè se vede che il file è già impegnato attende fintanto che questo non viene chiuso? Non mi sembra che sia possibile gestire dei timeout..[/quote:1268w0j5]
Basta gestirselo facendosi un VI.
Io Te l'ho fatto in LabVIEW 7.1
[attachment=0:1268w0j5]OpenExclusive.vi[/attachment:1268w0j5]
L'ho testato in "locale" i tempi di accesso della rete sono + lunghi e richiedono un po' + di pazienza.
Cmq sia dovrebbe fare al caso Tuo
bye[/quote:1268w0j5]
----------------------------------------
================================================================================
File HWS
================================================================================
AUTORE: 2580
DATA :07/04/2009 - 15:14:26
----------------------------------------
ciao a tutti,qualcuno saprebbe consigliarmi un buon sito(o qualcos altro di facile consultazione)che spieghi come creare file hws?grazie in anticipo per l aiuto e la disponibilità a tutti.
buona giornata, antonio
----------------------------------------
AUTORE: 43
DATA :09/04/2009 - 10:56:14
----------------------------------------
[quote="Harlock84":2vuggd74]ciao a tutti,qualcuno saprebbe consigliarmi un buon sito(o qualcos altro di facile consultazione)che spieghi come creare file hws?grazie in anticipo per l aiuto e la disponibilità a tutti.
buona giornata, antonio[/quote:2vuggd74]
come dice NI
"What is the HWS File Format?"
http://digital.ni.com/public.nsf/allkb/ ... F0006A6C2A
nel primo link
"Hierarchical Waveform Storage Data File (*.hws)"
http://zone.ni.com/reference/en-XX/help ... pesfp/hws/
si dice che i file .hws si basano sul fomato HDF5.
Al link
http://hdf.ncsa.uiuc.edu.
è possibile scaricare un viewer per i file di questo formato e qualche pdf di manualistica.
Cerca informazioni direttamente su quel sito.
bye
----------------------------------------
================================================================================
Effetti audio
================================================================================
AUTORE: 2435
DATA :07/04/2009 - 16:57:57
----------------------------------------
Ciao volevo creare un effetto audio....
Tipo modificre la forma d'onda proveniente da un microfono e mndarla direttamente sull'uscita audio..
sapete dami ualche suggerimento??
grazie
----------------------------------------
AUTORE: 2592
DATA :07/04/2009 - 17:21:40
----------------------------------------
Ciao nic,
tra i vari esempi di LabVIEW (Help -> Find Examples) digita "sound" come parola chiave e dovresti trovare nell'elenco degli esempi un VI che si chiama "Simultaneous Sound IO.vi" che acquisisce da un microfono e genera il segnale sulle casse del PC.
Credo che posso esserti utile.
Ciao,
----------------------------------------
AUTORE: 2435
DATA :08/04/2009 - 10:07:32
----------------------------------------
Ciao...
ho già visto gli esempi presenti...
cercavo qualcosa di più eleborato per avere un punto di partenza e per farmi delle idee...
----------------------------------------
AUTORE: 129
DATA :19/04/2009 - 22:02:19
----------------------------------------
Prova a vedere se ti può essere utile [url=http://www.bytelabs.it/bytefiles/Il%20laboratorio%20nel%20PC.pdf:2e0s4gdj]questo.[/url:2e0s4gdj]
----------------------------------------
================================================================================
Coeff Binomiale e combinazioni
================================================================================
AUTORE: 1033
DATA :07/04/2009 - 17:18:42
----------------------------------------
Ciao, ho un semplice problema di calcolo combinatorio. Esiste in LV una funzione che mi ritorna tutti i sottinsiemi di cardinalità "k" di un dato insieme "n" elementi. Il numero di questi sottinsiemi è dato dal coefficiente binomiale. Ma a me interessa poter avere tutti i sottoinsiemi possibili.
Esempio: dato l'insieme {abcd} di cardinalità 2 esistono i seguenti sottoinsiemi:
ab ac ad
bc bd
cd
Se esiste la funzione mi evito la scrittura dell'algoritmo. Non sono riuscito a trovarla.
Grazie.
----------------------------------------
AUTORE: 947
DATA :07/04/2009 - 21:26:04
----------------------------------------
Questo è quello che ho trovato facendo il Search nelle palette:
[quote:1o3au6t7]
Binomial Coefficient.vi (Not in Base Package)
Calculates the binomial coefficient for nonnegative integer values of n and k.
[/quote:1o3au6t7]
Parlo di LV 8.5 Profesional D S
Ma se non lo trovi nella tua versione di LV ..
devi prima implementare il fattoriale n! come PRODUTTORIA di i da 1 a n (da implementare con un ciclo) ..
e poi il gioco è fatto perchè :
[code:1o3au6t7]
C(n,k) = n!/ ( k! * (n – k)! )
[/code:1o3au6t7]
Ciao!
----------------------------------------
AUTORE: 43
DATA :08/04/2009 - 00:02:56
----------------------------------------
[quote="Altomare":1h3fkaka]Ciao, ho un semplice problema di calcolo combinatorio. Esiste in LV una funzione che mi ritorna tutti i sottinsiemi di cardinalità "k" di un dato insieme "n" elementi. Il numero di questi sottinsiemi è dato dal coefficiente binomiale. Ma a me interessa poter avere tutti i sottoinsiemi possibili.
Esempio: dato l'insieme {abcd} di cardinalità 2 esistono i seguenti sottoinsiemi:
ab ac ad
bc bd
cd
Se esiste la funzione mi evito la scrittura dell'algoritmo. Non sono riuscito a trovarla.
Grazie.[/quote:1h3fkaka]
Non so, a me non risulta...
Immagino sia utile in rari casi. Mi sembra quasi un esercizio didattico...
Cmq, quando hai finito, pubblicalo nel Forum, è cmq interessante.
Poi quando hai finito con le "combinazioni" puoi passare alle "permutazioni"...
bye
----------------------------------------
AUTORE: 1033
DATA :08/04/2009 - 09:16:33
----------------------------------------
Ciao Luca, il problema non sta nel calcolo del coefficiente binomiale che riusulta essere abbastanza banale, ma nell'avere la potalità delle possibili combinazioni.
Paracarro, sembra un esercizio didattico, ma in realtà è l'unico modo che ho trovato per risolvere il seguente problema:
ho un array di numeri che può presentare "n" punti di minimo. Di questi "n" minimi solo "k" possono avere le caratteristiche che mi servono (cioè che la distanza tra loro sia = "x"). Ho allegato una picture in cui evidenzio il problema.
Allegherò l'algoritmo quando lo termino.
Ciao
----------------------------------------
AUTORE: 1033
DATA :08/04/2009 - 09:30:35
----------------------------------------
Ciao Luca, il problema non sta nel calcolo del coefficiente binomiale la cui risoluzione è semplice ma nel riuscire ad avere tutte le combinazioni possibili dei sottoinsieni.
Paraccarro, sembra un problema didattico, in realtà è l'unica risoluzione che sono riuscito a trovare per risolvere il seguente problema:
sia dato un array numerico che "n" punti di minimo. Trovare tra gli "n" punti i minimi i "k" punti che soddisfano la condizioni di essere circa equidistanti e che questa sia pari ad "x".
Quello che pensavo di fare era di calcolare tutte le possibili combinazioni dei "k" elementi, per ciascun sottoinsieme calcolare l'errore rispetto ad "x" ed infine trovare il sottoinsieme che minimizza l'errore.
Avete altre idee?
Grazie, ciao.
----------------------------------------
AUTORE: 947
DATA :10/04/2009 - 19:11:01
----------------------------------------
..
Ops .. scusami .. non avevo capito il problema .. a te nn serve sapere quante sono le combinazioni .. ma QUALI sono ..
.. e allora mi sa che nn esiste il VI !!
Però scusami ma non mi è chiara l'applicazione ..
vedo di ripeterla a parole mie ... per capire se ho capito ..
dunque:
[quote:3kvnojqj]
è data una funzione [i:3kvnojqj][b:3kvnojqj]Y(t)[/b:3kvnojqj][/i:3kvnojqj], campionata in un array supponiamo a dt costante
[i:3kvnojqj][b:3kvnojqj]Y(t)[/b:3kvnojqj][/i:3kvnojqj] ha [i:3kvnojqj][b:3kvnojqj]n[/b:3kvnojqj][/i:3kvnojqj] minimi relativi di cui interessano solo un certo sottoinsieme [i:3kvnojqj][b:3kvnojqj]k[/b:3kvnojqj][/i:3kvnojqj]
ed in particolare sono quei minimi relativi che si presentano con una determinata frequenza, ovvero ad intervalli di [i:3kvnojqj][b:3kvnojqj]DT = x[/b:3kvnojqj][/i:3kvnojqj]
[/quote:3kvnojqj]
... ma forse sto sbagliando .. guardando la fig vedo che ci sono solo 3 picchi equidistanti .. quindi nn si può parlare di [i:3kvnojqj]una determinata frequenza[/i:3kvnojqj] ..
Cmq.. Ammesso che abbia capito il problema .. non mi è chiaro come intendi risolverlo ...
e cmq .. sempre ammettendo che abbia capito il problema .. hai provato a studiarlo nel dominio della frequenza?
(a tal proposito ti ricordo che esistono VI che calcolano la FFT della funzione)
.. ma era una idea che forse contrasta con il fatto che nn si può parlare di [i:3kvnojqj]una determinata frequenza[/i:3kvnojqj] ..
Vabbè ... dai ... quando capirò meglio il problema vedrò di darti una mano .. sta cosa mi intriga ..
Ciao!!
----------------------------------------
================================================================================
Copiare i wires dei shift register
================================================================================
AUTORE: 1670
DATA :07/04/2009 - 17:52:49
----------------------------------------
Ciao a tutti,
da qualche giorno mi ritrovo, dopo mesi di "digiugno", a lavorare con Lab View è mi si presenta un problema alquanto noioso, sopratutto per la perdita di tempo.
Sto lavorando con un while loop all'interno del quale c'è una struttura case in pratica una macchina a stati; man mano che proseguo mi capita spesso di dover aggiungere uno, due o più shift register e quando succede devo collegare ,ogni volta, gli shift register per tutti gli stati (in pratica i case del progetto) che sono ormai numerosi e di conseguenza si possono perdere anche decine di minuti a collegarli tutti. Chiedevo se esiste qualche sistema tipo: una volta collegati i shift register per un caso riuscire, magari con un unico comando, ad estenderli a tutti gli altri casi oppure qualche altro sistema tipo copia incolla multiplo.
Oltre a ciò ho notato che con l'ingrandirsi del progetto il tempo che LabVIEW impiega a fare una modifica (tipo un nuovo collegamento o cambiare lo stato di una variabile) è sensibilmente aumentato (qualche volta aspetto anche 7, 8 secondi) , c'è forse qualche impostazione che mi può eliminare o diminuire questo tempo?
In questo momento sto lavorando con LabVIEW 8.6 con S.O. XP Home edition SP 3 il tutto su un PC Athlon 64 x2 Dual, 3GHz con 3GB di Ram nel quale c'è inserita una FPGA PCI 7831R.
Preciso che questi problemi si presentano sul programma che gira sul PC (host) e non sulla FPGA.
Grazie mille e Buona Serata a tutti
----------------------------------------
AUTORE: 2586
DATA :08/04/2009 - 08:20:39
----------------------------------------
Ciao,
che io sappia non esiste un modo per fare un filling automatico degli altri stati.
Ma quanti shift utilizzi? Se su un computer dual core 3 GHz le modiifche arrivano a chiederti 7-8 sec, a parte impostazioni particolari di LV, credo che sia seriamente il caso di prendere in considerazione la suddivisione del tuo vi in diversi subvi, per rendere il codice modulare e più leggero da punto di vista del debug.
Ciao,
Matteo
----------------------------------------
AUTORE: 1670
DATA :08/04/2009 - 09:24:05
----------------------------------------
Ciao Matteo e grazie per la risposta,
gli Shift sono solo una ventina, e anche i case sono solo 30, il problema credo che sia dato dalla loro dimensione, sono quasi tutti bidimensionali (1200 * 256 tipo double) anche se, facendo un po' di calcoli, la memoria usata non è così grande: il fatto è che non so come utilizza la memoria RAM LabVIEW e quanta ne occupa per i collegamenti i Wile Loop, i case ecc. ecc. .
Per il Debag, per il momento non ho problemi; invece volevo chiederti se, secondo te, suddividendo il programma in subvi questo problema dei 7-8 sec diminuisce e se ti è capitato di lavorare con shift di tale dimensione ed aver notato problemi simili.
Grazie per tutto e Buona Giornata
----------------------------------------
AUTORE: 1355
DATA :09/04/2009 - 10:44:17
----------------------------------------
Ciao,
Per ovviare al problema di collegare i vari scift register puoi inserire i dati che tiservono in un cluster, collegare il cluster ad un solo schift register, in tal modo quando aggiungi un elemento al cluster te lo ritrovi nell'unico scift register che hai collegato.
Questo migliora anche notevolmente la leggibilità
Ciao
Jasca
----------------------------------------
AUTORE: 43
DATA :09/04/2009 - 11:06:34
----------------------------------------
[quote="matteoalpha":2whnj52w]Ciao,
che io sappia non esiste un modo per fare un filling automatico degli altri stati.
...[/quote:2whnj52w]
Mi dispiace smentire clamorosamente un tecnico NI ma, con LV8.6 è possibile fare esattamente quello che Cromosoma chiede[attachment=0:2whnj52w]LinkAllCases.JPG[/attachment:2whnj52w]
----------------------------------------
AUTORE: 1670
DATA :15/04/2009 - 10:14:31
----------------------------------------
Grazie a tutti per i preziosi consigli.
Ho verificato la soluzione di paracarro e con labVIEW 8.6 è propio così, vi posso assicurare che si risparmia veramento un sacco di tempo; mi piace moltissimo anche quella di Jasca che utilizzerò sicuramente perchè mi offre la possibilità di avere molto più spazio(grafico) sul progetto ed è verissimo che il progetto risulta molto più leggibile ed anche più veloce da aggiornare; è altrettanto valida quella di matteoalpha sopratutto su progetti più complessi del mio.
Devo dire che ogni volta che consulto questo sito ricevo sempre molta attenzione e professionalità nelle risposte: vi faccio i miei complimenti e vi prego di continuare così.
Una buona giornata a tutti
----------------------------------------
AUTORE: 43
DATA :15/04/2009 - 11:46:14
----------------------------------------
Ciao Cromosoma[quote="Cromosoma":dcaholdz]Grazie a tutti per i preziosi consigli....[/quote:dcaholdz]Prego. Grazie soprattutto per i complimenti che fai alla comunità.
A parte la funzionalita di LV8.6, mi trovo perfettamente daccordo con matteoalpha e penso che coloro che sono alllergici alla creazione di subVI, dovrebbero forzare loro stessi ed imporsi di crearne di nuovi. Per fare ciò si potrebbe sfruttare la feature presente da svariate versione in LabVIEW, che permette di creare un SubVI partendo dalla selezione di una parte di codice dal diagramma: una volta selezionato il codice che diventerà un SubVI scegliere da menu [Edit --> create SubVI].
Questo per evitare che l'applicazione si riduca ad un unico monolitico VI e tu non debba attendere 7-8 secondi per una modifica nel diagramma...
Confesso di essere anche io fra quelli che non vogliono avere per le mani inutili SubVI nei quali vengono fatte troppe poche cose, ma non è accettabile avere VI enormi difficili da modificare.
In tema di "tirare fili", volevo aggiungere una banalità che magari a qualcuno è sfuggita.
Sebbene non sia il caso di disegnare diagrammi enormi stile "lenzuolo", puo' capitare di dover tirare fili molto lunghi che escano dalla parte visibile del diagramma stesso.
Dopo aver clickato sul punto di partenza del filo molti tengono il cursore (stile rocchetto di filo) sul bordo del diagramma provocando uno "scroll lento" fatto di lenti e frequenti ridisegni, fino a raggiungere il punto di arrivo del filo.
Io consiglio, giunti nei pressi del bordo del diagramma, di "doppio clickare" in un punto a caso in modo che il filo tratteggiato venga disegnato interrotto, si scrolli velocemente usando le scrollbar del diagramma e facendo in modo che poi si possa riprendere a tracciare il filo interrotto.
Se i fili "lunghi"da tracciare sono + di 1, tracciarli ed interromperli tutti nei pressi del bordo del diagramma, spostare con la scroll bar l'area di diagramma visibile e riprendere il tracciamento di tutti i fili interrotti. Pulire eventuali pezzi di filo non utilizzati con Ctrl-B.
bye
----------------------------------------
AUTORE: 482
DATA :16/04/2009 - 08:19:13
----------------------------------------
In alternativa al doppio click, per velocizzare un po' il "tiraggio dei fili", quando si è sul bordo, premendo il tasto SHIFT si velocizza lo scrolling
----------------------------------------
================================================================================
connessione TCP da remoto
================================================================================
AUTORE: 2435
DATA :08/04/2009 - 15:54:21
----------------------------------------
Ciao a tutti....
esistono 2 esempi client e server per la comuicazione TCP....
1)Data client
2)Data server
ma se volessi collegarmi ad esempio da casa con il PC in ufficio(usando gli stesi esempi) come posso fare??
grazie
----------------------------------------
AUTORE: 278
DATA :08/04/2009 - 17:16:52
----------------------------------------
[quote:2w9vcod2]ma se volessi collegarmi ad esempio da casa con il PC in ufficio(usando gli stesi esempi) come posso fare??[/quote:2w9vcod2]
AUGURI!!!!
Premetto che non è un problema di programmazione, ma bensì di configurazione di rete.
Il Pc "server" deve essere raggiungibile dal pc "client" attraverso internet, qui ti si aprono diverse possibilità:
1) puoi acquistare un indirizzo ip pubblico, dopodichè sul router dovrai fare un port forwarding sull'ip della macchina che ospita il server...
2) puoi creare una vpn tra il pc client ed il server.
3) ...non mi viene in mente altro...
Prima di impazzire con i vi, esegui un semplice ping sull'indirizzo ip del server.. se va a buon fine sei a cavallo
----------------------------------------
AUTORE: 2435
DATA :27/08/2009 - 15:35:36
----------------------------------------
e come si può fare a creare un vpn in labview??
----------------------------------------
AUTORE: 482
DATA :28/08/2009 - 08:07:14
----------------------------------------
Per rendere visibile il tuo PC da internet, potresti dare un occhiata a www.dyndns.com.
Sul numero di Agosto di Linux magazine, ho trovato un articolo che spiega come rendere accessibile il proprio pc di casa da internet, senza bisogno di un IP fisso ma grazie ad un DNS che aggiorna il tuo indirizzo e lo associa ad un nome di dominio.
----------------------------------------
AUTORE: 2435
DATA :28/08/2009 - 09:46:11
----------------------------------------
Ciao mi sono creato un DNS e ho inserito l'indirizzo sui due vi ma perchè non funziona???
scusa la mia scarsa conoscenza
----------------------------------------
AUTORE: 482
DATA :28/08/2009 - 10:04:30
----------------------------------------
Purtroppo non sono esperto in materia di rete e quindi preferisco lasciare la parola a qualcuno di piu' ferrato. Spero tu abbia eseguito la procedura giusta per il dns.
L'unico consiglio che mi sento di darti in quetso momento è di provare a fare il ping degli indirizzi a cui vuoi accedere e vedere se funziona la connessione.
----------------------------------------
================================================================================
Protezione VI con Invoke node
================================================================================
AUTORE: 1853
DATA :09/04/2009 - 18:14:00
----------------------------------------
Ciao a tutti!
Vorrei sottoporvi il mio ultimo problema, sperando che come sempre qualcuno mi possa aiutare...
Ho scritto dei VI abbastanza complessi (li chiamerò main VI) con molti subVI e invoke node per richiamare gli altri main VI "a richiesta".
Adesso vorrei proteggere il codice sorgente di tutti i main VI ma anche di tutti i subVI.
Non vorrei inserire la password per bloccare i VI, soprattutto perchè credo che dovrei inserirla su ogni singolo subVI.
Ho provato a fare una libreria LLB dalla hierarchy dei main VI, ma non trovo un modo per protreggere la libreria stessa. Ho provato a guardare in rete ma non ho trovato nulla. Se qualcuno sa come fare io mi potrei anche accontentare.
L'alternativa mi è sembrata quella di compilare degli eseguibili dei main VI.
Il problema è che gli invoke node hanno come input il path dello stesso VI (i main VI sono pensati per stare nella stessa cartella), e quindi una volta costruito l'eseguibile non funzionano più. C'è un modo per "linkarli" tra di loro?
Dicasi lo stesso per un file di testo che viene richiamato qui e là, che ovviamente non viene trovato dall'eseguibile...
Grazie dell'attenzione!
Luigi
----------------------------------------
AUTORE: 301
DATA :10/04/2009 - 07:01:55
----------------------------------------
Ciao, il "problema" dell'eseguibile compilato è (a mio avviso) abbastanza fastidioso.....
In pratica, quando compili un eseguibile, è abbastanza usuale che tu possa avere degli errori dovuti al fatto che si "perdono" dei path, in quanto il tuo vi CAMBIA il path.
Mi siego:
il vi è [b:17ch6bny]C:\cartella\
ome.vi[/b:17ch6bny]
l'exe diventa [b:17ch6bny]C:\cartella\
ome.exe\
ome.vi[/b:17ch6bny]
In ogni caso, ci sono altri post in cui si parla di questo argomento, spero di esserti stato di aiuto.
----------------------------------------
AUTORE: 43
DATA :10/04/2009 - 10:02:29
----------------------------------------
[quote="Luigi15":m3ka14ix]Ciao a tutti!...
Ho scritto dei VI abbastanza complessi (li chiamerò main VI) con molti subVI e invoke node per richiamare gli altri main VI "a richiesta".
Adesso vorrei proteggere il codice sorgente di tutti i main VI ma anche di tutti i subVI.
...
Luigi[/quote:m3ka14ix]
Dall'impostazione del Tuo progetto direi che non hai scampo: devi compilare tutto in un unico exe.
Questo vuol dire che la chiamate "invoke node" devono essere fatte utilizzando VI già caricati in memoria, quindi senza specificare un path completo ma solo il nome del VI: l'ingresso "vi path" della "Open VI Reference" è polimorfo nel senso che accetta sia stringhe che path, quindi basta specificare il nome di un VI (stringa è + semplice...) già caricato in memoria per poter aprire con successo ed eseguire la chiamata "invoke node".
Ciò purtroppo implica che non è possibile caricare subVI diversi da quelli inclusi nell'eseguibile.
Utilizzare + exe, comporta, a mio avviso, una complicazione notevole, quasi inaccettabile, nella gestione delle risorse che potrebbero essere trascurate nel caso del primo approccio.
Inoltre l'esecuzione di un exe al posto di un subVI comporta presumibilmente la gestione di una sincronizzazione attraverso qualche canale tipo socket per es. e se appunto non ci sono conflitti nell'accesso alle risorse, comporta una duplicazione di eventuali subVI comuni agli eseguibili. Nel caso di "invoke node" questa duplicazione sarebbe scongiurata. Spero di essere stato chiaro.
Esiste un'altra via che ho già percorso e che implica che Tutti i VI del tuo progetto restino nelle loro cartelle di origine.
In questo caso, un piccolissimo exe labVIEW che di fatto realizza uno splash screen, innesca dinamicamente l'esecuzione del VI Main, non attraverso un invoke node ma con il metodo "Run VI" che di fatto genera la pressione del tasto "freccia" del VI gia caricato in memoria (Open VI Reference).
Questo implica almeno un paio di cose:
1) Nel PC sul quale si installa la versione exe del progetto si devono copiare anche i VI, le dll e quant'altro della "VI lib" che sono utilizzati dall'applicazione
(non è necessario copiare tutta la VI lib) e configurare correttamente il "VI Library Path" nel file di config. .ini del 'miniexe splash screen'.
2) Fare quello che hai chiesto tu in questo post. cioè "proteggere" tutti i VI dell'applicazione duplicandone la gerarchia ma senza diagrammi.
Cio' puo' essere fatto anche programmaticamente (metodo "Save Instrument" mettendo a True il flag "without diagram").
Io ho scelto questo approccio un po' complicato perchè offriva vantaggi per il tipo di applicazione implementata: un test manager i cui test erano appunto dei VI chiamati dinamicamente.
Ciò comporta che i VI di test messi in una cartella specifica, insieme ad altri tipi di file di dati di vario genere e qualità: documentazione pdf, dwg, schemi elettrici, file che contengono firmware da scaricare su schede programmabili ecc..
Questo approccio permette anche comodi aggiornameti ed aggiunte parziali...
Altra cosa: su LAVA mi sembra che questo approccio sia stato dibattuto come approccio[b:m3ka14ix]Illegale[/b:m3ka14ix], perchè consentirebbe a coloro che non possiedono (non hanno comprato) un Application builder di creare dei programmi eseguibili (partendo appunto dal 'miniexe splash screen').
Per finire: questo approccio vale soprattutto per LabVIEW 7, in LabVIEW 8 è un po' + complicato e non ho + provato ad utilizzarlo...
Buona Pasqua
PS: spero, che Tu non sia il "Luigi" che conosco io, altrimenti vorrebbe dire che non hai capito un emerito caxxo di tutto il lavoro che ho fatto in un paio di anni
bye
----------------------------------------
AUTORE: 1853
DATA :10/04/2009 - 11:06:30
----------------------------------------
Ciao e grazie delle risposte!
X Paracarro: non credo di essere il luigi che dici tu, ma non mi stupirei di non aver capito un caxxo!
Allora al momento ho parzialmente risolto il problema, e purtroppo l'ho fatto prima di leggere la risposta di paracarro (la notte porta consiglio?!?). In pratica ho sfruttato un piccolo VI scaricato da questo sito:
http://80.241.175.99/forum/viewtopic.php?t=326
Adesso i miei Main VI si richiamano a vicenda sia che essi siano semplici VI, sia che siano compilati come eseguibili.
Per quanto riguarda la separazione in più eseguibili, io preferisco che sia così perchè uno dei due è quello che si "interfaccia" con delle schede DIO, e vari altri oggetti esterni, la cui priorità dovrebbe essere primaria rispetto agli altri, che invece sono solo di "gestione grafica" e preparazione delle sequenze da eseguire. inoltre devo essere in grado di eseguire uno senza l'altro e viceversa.
Fin qui direi tutto bene, ho i miei due eseguibili e si richiamano a vicenda, ma devo farli parlare tra di loro!!! come diceva Paracarro il problema è passare i dati da uno all'altro. Premetto che non ho idea di cosa sia un socket
. Io ho semplicemente sfruttato una global variable, che funziona a meraviglia con i VI, ma che ovviamente non viene trovata dagli eseguibili!! ma non posso sfruttare lo stesso trucchetto di prima, perchè nella global variable non specifico un path...
Avete qualche altro suggerimento? Se questa strada non fosse percorribile credo che farò come dice Paracarro: salvo tutti i subVI in una llb senza block diagram. Mi pare una buona idea!
grazie ancora a tutti,
e buona Pasqua se non ci si risente prima!
Luigi
P.S.: no...non quello che conosci tu!
----------------------------------------
AUTORE: 1078
DATA :10/04/2009 - 11:48:39
----------------------------------------
Potresti scrivere in un file su disco i vaori delle variabili, magari formattando il tutto con una sequenza di <Nome Variabile>=<Valore> [ritorno a capo]
Da un eseguibile scrivi e dal secondo leggi - oppure scrivi e leggi da entrambe!
----------------------------------------
AUTORE: 1853
DATA :15/04/2009 - 10:03:22
----------------------------------------
Purtroppo non è così semplice perchè le variabili sono di molti tipi e anche abbastanza complesse (matrice 3xnxm)...ma non c'è un modo per costruire una specie di "puntatore" a quella global variable?
Altre idee?
Grazie di nuovo
L.
----------------------------------------
AUTORE: 487
DATA :15/04/2009 - 12:42:46
----------------------------------------
Che ne dici delle shared variable?
----------------------------------------
AUTORE: 1853
DATA :15/04/2009 - 13:32:35
----------------------------------------
ehm...mai sentite nominare.
come funzionano? possono essere usate anche da due eseguibili?
adesso vedo di leggere qualcosa e provo a usarle!
L.
----------------------------------------
AUTORE: 43
DATA :15/04/2009 - 17:25:22
----------------------------------------
[quote="Luigi15":2sxwpcl3]Ciao e grazie delle risposte!
X Paracarro: non credo di essere il luigi che dici tu, ma non mi stupirei di non aver capito un caxxo!
![/quote:2sxwpcl3]
ok buon x te!
[quote="Luigi15":2sxwpcl3]Allora al momento ho parzialmente risolto il problema, e purtroppo l'ho fatto prima di leggere la risposta di paracarro (la notte porta consiglio?!?). In pratica ho sfruttato un piccolo VI scaricato da questo sito:
http://80.241.175.99/forum/viewtopic.php?t=326
Adesso i miei Main VI si richiamano a vicenda sia che essi siano semplici VI, sia che siano compilati come eseguibili. [/quote:2sxwpcl3]
Ecco. Questo è il punto!!!!
A chi vuoi prendere in giro???
Vuoi, per caso richiamare con una "invoke Node" i VI che stanno dentro un'altro eseguibile, o piuttosto vuoi richiamare un eseguibile da dentro un'altro eseguibile?
Tra l'altro sono cose parecchio diverse fra loro...
l'una è una chiamata dinamica interna a LabVIEW (invoke node).
L'altra è una shell verso il S.O. (System Exec.vi)
Immagino Tu usi Ubuntu, usando Winzozz è meglio farsi un .bat (batch file) che contiene la call verso l'eseguibile in questione.
Cmq il "system exec.vi" si raggiunge da menu così:
LabVIEW7.1
Connections-->System Exec.vi
LabVIEW8.6
Connectivity -->Libraries & Executables -->System Exec.vi
Questo VI si trova in una libreria sotto la directory "vi.lib\Platform", quindi penso abbia un comportamento diverso da una piattaforma all'altra.
[quote="Luigi15":2sxwpcl3]Per quanto riguarda la separazione in più eseguibili, io preferisco che sia così perchè uno dei due è quello che si "interfaccia" con delle schede DIO, e vari altri oggetti esterni, la cui priorità dovrebbe essere primaria rispetto agli altri, che invece sono solo di "gestione grafica" e preparazione delle sequenze da eseguire. inoltre devo essere in grado di eseguire uno senza l'altro e viceversa.[/quote:2sxwpcl3]
Contento te...
Io lo trovo un approccio sbagliato.
Meglio avere un Vi principale che gestisce l'esecuzione di entrambi i "VI principali", piuttosto che gestire la comunicazione fra 2 eseguibili.
Tra l'altro questo approccio, Ti obbliga a sviluppare il codice "doppio": un po' di codice per la versione "eseguibile" e l'altra per la versione sorgente.
Con evidenti problemi di Debug. Direi in una parola: pessimo.
La motivazione che mi spingerebbe a sviluppare 2 .exe LabVIEW che dialogano fra loro, è lo sviluppo di una [u:2sxwpcl3]applicazione multiclient[/u:2sxwpcl3] dove un eseguibile LabVIEW server dialoga con 1 o + client LabVIEW installati su diversi PC.
Il fatto che dentro una applicazione una parte di VI si occupi dell'interfaccia HMI ed un altro gruppo di VI si occupi di interfacciarsi e controllare l'HW, lo trovo del tutto normale, ecco perchè trovo molto strano che Tu voglia tenerli separati.
Se non fossi il Luigi che conosco direi che hai lo stesso convincimento, cioè quello di dividere una applicazione in + eseguibili senza che sia ne necessario ne utile farlo.
[quote="Luigi15":2sxwpcl3]Fin qui direi tutto bene, ho i miei due eseguibili e si richiamano a vicenda, ma devo farli parlare tra di loro!!! come diceva Paracarro il problema è passare i dati da uno all'altro. Premetto che non ho idea di cosa sia un socket
. Io ho semplicemente sfruttato una global variable, che funziona a meraviglia con i VI, ma che ovviamente non viene trovata dagli eseguibili!! ma non posso sfruttare lo stesso trucchetto di prima, perchè nella global variable non specifico un path...
...[/quote:2sxwpcl3]
Cerca i VI che gestiscono le comunicazioni "socket" cioè cerca "Datasocket": il meccanismo che governa le "shared variables" si basa su queste fantomatiche datasocket.
Con questa mini libreria, già presente in LabVIEW anche nella versione Base, penso, puoi far comunicare fra loro applicazioni sviluppate in linguaggi diversi, su PC diversi (datasocket fa uso di TCP/IP ) e fra diverse piattaforme (Linux, Unix, Windows, MAC OSX, etc.).
Addirittura gli oggetti del FrontPanel possono essere linkati direttamente ad una connessione Datasocket ed essere automaticamente aggiornati, o aggiornare a loro volta il riferimento DataSocket.
Leggiti questo
http://zone.ni.com/devzone/cda/tut/p/id/3224
bye
----------------------------------------
AUTORE: 1853
DATA :16/04/2009 - 17:04:57
----------------------------------------
Ciao di nuovo!
grazie per la risposta Paracarro, come sempre...illuminante!
Dopo aver letto quello che hai scritto ho deciso di cambiare leggermente direzione, cercando di tornare alla base del problema. Chiarisco meglio: il mio scopo primario è
1. avere un programma robusto
2. facilmente adattabile su più pc
3. user friendly
4. non distribuire il sorgente.
Di conseguenza ho deciso di:
1. lasciare i main VI separati.
Io continuo a pensare che questo sia il sistema più robusto. chiarisco che per me "robusto" vuol dire soprattutto che il VI che si interfaccia con le schede esterne non faccia casino. Nel caso in cui per esempio questo VI dovesse bloccarsi sarebbe un serio rischio per costose apparecchiature. Tenendolo separato da tutto il resto mi illudo che se qualcosa va storto in tutto il resto lui continuerà ad andare per i fatti suoi. Ma magari è solo una illusione...ti farò sapere se avrò bisogno di cambiare idea. Questa comunque non è l'unica ragione (vedi punto seguente)
2. Il VI che si interfaccia con gli strumeti può essere eseguito solo su PC dotati di scheda DIO (Digital Input Output) tenendoli separati posso lavorare con gli altri main VI su qualunque altro PC, per esempio preparando le sequenze che verranno poi "date in pasto" alla DIO. Ma c'è di più posso modificare questi VI inserendo altri utili tool, senza dover stare al pc del laboratorio. Inoltre ho deciso di non utilizzare eseguibili, così che il programma possa essere eseguito sia su sistemi unix che winzozz.
3. User friendly è la cosa veramente più dura...dalla facciata esterna ho deciso di racchiudere tutti i subVI in librerie, cercando di dare un ordine, un nome approprioato e una icona intellegibile a tutto.
4. Questo era il punto principale da cui ero partito. Alla fine la soluzione è stata questa:
- ho creato le librerie (una per ogni main VI) per racchiudere tutti i VI (main e subVI)
- ho tirato fuori i main VI e la global variable dalle librerie
- ho inserito i main in un project (uno per ogni main)
- ho creato una suorce distribution, cancellando tutti i block diagram, dai main e dalle dipendenze. così facendo si creano delle nuove librerie llb con tutti i subvi senza block diagram
- ho cancellato (dopo averne fatto una copia di backup OVVIEMENTE!!) tutti i vecchi vi, le vecchie librerie e i project.
risultato: una cartella che contiene i main VI e le librerie per ogni singolo main VI, la global variable, e il tutto senza block diagram. Mi sento abbastanza soddisfatto del risultato momentaneo, se dovessi avere problemi vi farò sapere. Grazie dell'aiuto e spero magari di essere stato utile a qualcuno che prima o poi leggerà questa discussione!
ovviamente con questo non volevo chiudere la discussione! commenti, soprattutto critici, sono molto benvenuti!
Luigi
----------------------------------------
AUTORE: 43
DATA :25/04/2009 - 12:22:43
----------------------------------------
Ciao Luigi.
[quote="Luigi15":28m5ojhu]... il mio scopo primario è
[b:28m5ojhu]1. avere un programma robusto[/b:28m5ojhu]
1. lasciare i main VI separati.
Io continuo a pensare che questo sia il sistema più robusto. chiarisco che per me "robusto" vuol dire soprattutto che il VI che si interfaccia con le schede esterne non faccia casino. Nel caso in cui per esempio questo VI dovesse bloccarsi sarebbe un serio rischio per costose apparecchiature. Tenendolo separato da tutto il resto mi illudo che se qualcosa va storto in tutto il resto lui continuerà ad andare per i fatti suoi. Ma magari è solo una illusione...ti farò sapere se avrò bisogno di cambiare idea. Questa comunque non è l'unica ragione (vedi punto seguente[/quote:28m5ojhu]
Riguardo il termine "robusto" riferito al SW, guarda un po' dove mi manda Google:
http://www.linfo.org/robust.html
Che dire? Perfetto!! "Spezzettando" il SW non si ottiene secondo me un SW robusto ma un SW spezzettato che soffre dei problemi già citati.
Ma xchè il "Modulo" SW che governa le schede potrebbe fare casino, appendersi o crashare?
Mi rendo conto che può sembrare difficile "fidarsi" dei driver NI o dei driver fatti da terze parti, ma , perdonami, è come se, proprio il Tuo SW non gestisse in modo "robusto" le schede esterne. Bisogna solo scrivere meglio il SW, non fare tanti eseguibili!! Non so quali esperienze Ti abbiano portato a ragionare in questo modo, ma per gestire una periferica in modo "robusto" bisogna gestire tutti i possibili comportamenti della scheda, se è collegata tramite una linea di comunicazione al PC si devono gestire eventuali disconnessioni, se è interna al PC si deve verificare che esista, ecc,
[quote="Luigi15":28m5ojhu][b:28m5ojhu]2. facilmente adattabile su più pc[/b:28m5ojhu]
2. Il VI che si interfaccia con gli strumeti può essere eseguito solo su PC dotati di scheda DIO (Digital Input Output) tenendoli separati posso lavorare con gli altri main VI su qualunque altro PC, per esempio preparando le sequenze che verranno poi "date in pasto" alla DIO. Ma c'è di più posso modificare questi VI inserendo altri utili tool, senza dover stare al pc del laboratorio. Inoltre ho deciso di non utilizzare eseguibili, così che il programma possa essere eseguito sia su sistemi unix che winzozz.[/quote:28m5ojhu]
E se eseguo il SW che governa la DIO su un PC che quella scheda non ce l'ha, che succede? Ma il SW non doveva essere robusto? Mi sembra che con NI MAX le schede si possano anche simulare... e questo potrebbe esserti utile proprio per debug e per rendere il SW un po + robusto...
Fra l'altro di schede DIO ne esistono parecchi tipi: Tu prevedi la gestione di una scheda NI in particolare? Devi essere in grado di gestirne diverse? Mi verrebbe da dire: ma il Tuo SW è [u:28m5ojhu]facilmente adattabile[/u:28m5ojhu] all'utilizzo schede diverse da quella prevista di default?
Il fatto poi dello sviluppo del codice, beh quello si può fare su ogni PC su cui è installato LabVIEW. Non mi porrei limitazioni che non esistono.
Riguardo il SW multipiattaforma ne riparliamo all'ultimo punto
[quote="Luigi15":28m5ojhu][b:28m5ojhu]3. user friendly[/b:28m5ojhu]
3. User friendly è la cosa veramente più dura...dalla facciata esterna ho deciso di racchiudere tutti i subVI in librerie, cercando di dare un ordine, un nome approprioato e una icona intellegibile a tutto.[/quote:28m5ojhu]
Qua sono veramente in difficoltà: pur sapendo che al temine "User friendly" ognuno da un significato leggermente diverso, non capisco se questo aggettivo si riferisce alla interfaccia HMI del Tuo SW, cioè all'operaore/utilizzatore finale oppure faccia riferimento al programmatore che deve sviluppare il codice LabVIEW delle procedure di collaudo.
E poi dare il nome a librerie ed in particolare ai VI di una applicazione, applicando prefissi o suffissi, costituisce il modo più naturale per sviluppare una applicazione "minimamente" ordinata.
[quote="Luigi15":28m5ojhu][b:28m5ojhu]4. non distribuire il sorgente.[/b:28m5ojhu]
4. Questo era il punto principale da cui ero partito. Alla fine la soluzione è stata questa:
- ho creato le librerie (una per ogni main VI) per racchiudere tutti i VI (main e subVI)
- ho tirato fuori i main VI e la global variable dalle librerie
- ho inserito i main in un project (uno per ogni main)
- ho creato una suorce distribution, cancellando tutti i block diagram, dai main e dalle dipendenze. così facendo si creano delle nuove librerie llb con tutti i subvi senza block diagram
- ho cancellato (dopo averne fatto una copia di backup OVVIEMENTE!!) tutti i vecchi vi, le vecchie librerie e i project.
risultato: una cartella che contiene i main VI e le librerie per ogni singolo main VI, la global variable, e il tutto senza block diagram. Mi sento abbastanza soddisfatto del risultato momentaneo, se dovessi avere problemi vi farò sapere. ...[/quote:28m5ojhu]
OK qua dimostri di non aver capito quello che avevo tentato di spiegarTi nel primo post. Mi rendo conto di essere stato un po' troppo ermetico, cmq sia vorrei portarTi alla mia conclusione finale:
La Tua versione di SW da "distribuire" non può essere distribuita soprattutto a clienti esterni. Per funzionare il Tuo SW necessita assolutamente che sia installato sul PC sul quale deve girare, [u:28m5ojhu]LabVIEW in versione completa da sviluppo[/u:28m5ojhu].
Quando si crea un eseguibile con Application Builder , nell' exe confluiscono sia i Tuoi VI che quelli di libreria installati in VIlib cioè gran parte dei VI disponibili nelle palette di LabVIEW per non contare i VI driver che si interfacciano a NI DAQ, NI VISA ecc..
Anche se usi Linux, LabVIEW è cmq un SW proprietario. Se compri l' Application Builder hai il diritto di distribuire il Tuo SW compilato (puoi venderlo) sottoforma di exe comprendendo con esso linstallazione di driver NI (non in ambiente di sviluppo) e la RunTime di LabVIEW. Stop.
E' come se all' "Installation Kit" della Tua applicazione fosse allegato il DVD di installazione di LabVIEW che richiede un seriale + codice di attivazione(dalla versione 8 ) per funzionare. Quindi quello che vorresti fare Tu è sicuramente ILLEGALISSIMO.
Quello che avevo tentato di spiegarTi nel primo post è che io mi ero fatto un minieseguibile che mandava in esecuzione dinamicamente il Main VI di tutta la mia applicazione che costituiva un TestManager i cui test erano scritti in LabVIEW.
+ o - come nel Tuo caso.
Avendo fatto questo piccolo exe, ed avendo copiato VI e dll della VIlib che utilizzavo nella mia applicazione, non avevo bisogno di installare LabVIEW.exe sul PC su cui girava il SW.
Il mio test manager caricava una lista di test cercando VI con nomi aventi un certo prefisso/suffisso in sottocartelle presenti dentro una cartella principale che racchiudeva tutti i test. Poi x aumentare la robustezza si deve caricare il VI di test in memoria e verificare che il suo stato non sia "broken" (freccia rotta), oppure verificare il codice di errore in uscita della invoke node
Nonostante ciò, in LAVA alcuni sostenevano che questo approccio era comunque illegale...
bye
----------------------------------------
================================================================================
PDA Module
================================================================================
AUTORE: 1451
DATA :15/04/2009 - 17:32:45
----------------------------------------
Salve!
Ho un problema con l'utilizzo delle librerie PDA Module (Phone e Short message service).
Sono riuscito ad utilizzare la funzione di chiamata verso un numero telefonico e chiudere la chiamata (Phone);
ma non riesco a creare un sms e inviarlo ad un numero(Short message service), mi torna un messaggio di errore : SMS Send Message Error code : -2113928950
Qualcuno mi può dare una dritta sull'utilizzo di queste librerie?
Sto utilizzando Labview 8.5 e PDA Module 8.5
----------------------------------------
================================================================================
comunicazione porta seriale
================================================================================
AUTORE: 2565
DATA :16/04/2009 - 13:07:32
----------------------------------------
ciao! ho dei problemi per quanto riguarda la comunicazione con porta seriale, RS-232 collegata al pc tramite usb. ho preso alcuni esempi del tipo VISA, ma mi da errore sulla VISA Read credo riguardi il tempo, ho provato ad aumentare ma non ho risolto nulla. Dato ke sono nuovo, per quanto riguarda l'utilizzo di labview (uso il 7.1), non riesco a capire come risolvere l'errore.
qualcuno di voi può aiutarmi? magari anche con un esempio.
grazie a tutti!!!
----------------------------------------
AUTORE: 301
DATA :16/04/2009 - 14:53:17
----------------------------------------
He he....facile dire cosi.
Credo potrebbero essere 5000 cose, prova a postare un esempio di quello che hai fatto, da dire non è facile.
Spesso gli adattatori USB seriale danno dei problemi di driver, ma mi sembra di capire che perlomeno tu riesci a scrivere verso la tua periferica.
Quando effettui la lettura dalla porta, leggi un determinato numero di bytes (tutti quelli in bufer) o dai solamente un timeout?....
----------------------------------------
AUTORE: 2565
DATA :16/04/2009 - 15:33:25
----------------------------------------
questo è quello che ho fatto, l'errore me lo da in Visa Read sul timeout, ho provato ad aumentarlo ma mi da sempre errore.
----------------------------------------
AUTORE: 301
DATA :17/04/2009 - 06:29:31
----------------------------------------
Ciao,
ti posto l'immagine perchè nn riesco a salvare in 7....
Prova a temporizzare le operazioni le scrittura e lettura in questo modo e sappimi dire.
----------------------------------------
AUTORE: 645
DATA :17/04/2009 - 13:48:11
----------------------------------------
Come mai passi da uno "Scan from String"? Ti serve per estrarre il numero di caratteri da leggere?
Non sai a priori quanti sono? Non puoi utilizzare il Property Node "Byte at serial port"?
Scusa la serie di domande ma potrebbe essere un punto debole nel VI.
Poi... sei sicuro che il carattere di terminazione che il dispositivo seriale si aspetta è "Line Feed"? Hai provato con il "Carriage Return" o con simboli come ";" ... ?
----------------------------------------
AUTORE: 129
DATA :18/04/2009 - 07:31:32
----------------------------------------
come suggerisce Magic, puoi usare il "bytes at serial port" che ti restituisce l'intero contenuto del buffer.
Devi gestire un tempo tra scrittura e lettura sul buffer. metti un wait tra scrittura e lettura
guarda le impostazioni sulla comunicazione, ti serve il controllo di flusso RTS/CTS o è da impostare a null.
al termine delle operazioni devi chiudere la seriale
se devi fare una lettura continua su seriale non è conveniente che apri/chiudi la seriale, quindi inserisci solo ala parte centrale(dal write al read) all'interno del ciclo di scrittura/lettura, mettendo ad inizio programma l'apertura della seriale e al termine la chiusura.
ti allego un immagine xchè anche io non ho il 7
----------------------------------------
AUTORE: 2565
DATA :21/04/2009 - 11:37:13
----------------------------------------
grazie per aver postato tutti questi esempi e suggerimenti.
Questi giorni non sono andato in laboratorio, e quindi non ho avuto modo di mettere in atto le correzioni.
Domani proverò e vi farò sapere!
----------------------------------------
AUTORE: 2565
DATA :22/04/2009 - 08:57:25
----------------------------------------
ciao! ho provato anche con l'ultimo programma postato, non mi dà errori inizialmente, però l'operazione non termina (ad esempio se dò come comando *IDN? non mi dà nessun ritorno).
il mio progetto consiste nel comunicare attraverso labview, con un controller PI Mercury (C-863 DC MOTOR CONTROLLER) per pilotare delle slitte PI M-403.4DG.
grazie per il vostro aiuto, perchè ho veramente poca esperienza con labview.
----------------------------------------
AUTORE: 1078
DATA :22/04/2009 - 14:32:30
----------------------------------------
Ho dato un'occhio al tuo Vi. Strutturalmente sembra corretto. Il problema potrebbe essere nel messaggio che invia ("String"). Usi un carattere LF come terminatore della stringa. Sei sicuro che il protocollo di comunicazione preveda quel carattere? secondo me il problema potrebbe essere lì.
Un'altra cosa che dovresti controllare che dipende dal protocollo è il tempo che hai impostato (100ms) nell'attesa della risposta. In alcuni casi 100ms potrebbero essere troppo pochi. Dovrebbe essere indicato nel protocollo il tempo minimo di attesa alla risposta.
Putroppo non ho una strumentazione come la tua e quindi non posso verificare queste cose....
ti consiglio di verificare questi parametri...
Buon lavoro.
----------------------------------------
AUTORE: 645
DATA :23/04/2009 - 08:33:11
----------------------------------------
Come dice Ricky potrebbe trattarsi di un problema di carattere di terminazione.
In pratica: lo strumento si aspetta di ricevere una stringa di comando.
Per sapere quando questa stringa è finita (e di conseguenza lo strumento stesso può iniziare ad elaborare la risposta) viene controllato un carattere "speciale" di terminazione. Ogni protocollo di comunicazione può adottare un carattere proprio di terminazione.
Se il tuo strumento non ti risponde potrebbe proprio trattarsi di un problema del genere: non riesce a capire che la domanda è finita e quindi non capisce che deve rispondere.
Controlla sul manuale dello strumento le specifiche del protocollo di comunicazione da utilizzare.
----------------------------------------
AUTORE: 2565
DATA :23/04/2009 - 16:20:43
----------------------------------------
sto cercando tra i manuali dello strumento ma non riesco a trovare il protocollo. (forse anche perchè non sono molto esperto).
ho fatto anche varie prove di programmi per dialogare con la seriale, studiando un po' dai vari manuali del programma, ma mi danno tutti lo stesso errore:
timeout expired operation completed.
solo quello corretto da voi non dà errore, ma non risponde.
----------------------------------------
AUTORE: 482
DATA :24/04/2009 - 07:49:23
----------------------------------------
[quote="michesche":3vafm62m]sto cercando tra i manuali dello strumento ma non riesco a trovare il protocollo. (forse anche perchè non sono molto esperto).
ho fatto anche varie prove di programmi per dialogare con la seriale[/quote:3vafm62m]
Ehm..qui mi sembra che manchi un pezzo di nozioni fondamentali.
QUindi stai dicendo che provi a comunicare via seriale a casaccio?? con diversi strumenti e senza seguire nessun protocollo specifico!?!?
A sto punto il problema oltre che il carattere terminatore potrebbe essere anche l'intera richiesta...
----------------------------------------
AUTORE: 129
DATA :29/04/2009 - 23:12:21
----------------------------------------
se hai un applicativo della casamadre, puoi far girare quello e usi uno sniffer di porta per verificare le stringhe che vengono inviate.
----------------------------------------
AUTORE: 1161
DATA :28/07/2009 - 11:43:16
----------------------------------------
SALVE,
VORREI CHIEDERVI SE è POSSIBILE, SE MI FARESTE UN SEMPLICE PROGRAMMINO (UNA SLIDE ED UN TASTO) PER FAR SI CHE DIGITANDO IL TASTO FACCIO MUOVERE IL MOTORINO CON L'USO DELLA PORTA COM DEL PC, E VISUALIZZANDO SULLA SLIDE LA POSIZIONE DEL MIO MOTORINO. OPPURE QUANDO ARRIVA IL MOTORINO IO VISUALIZZO LA POSIZIONE SULLA SLIDE MANDANDO LA VISUALIZZAZIONE CON UNA SIMULAZIONE DI GRAFICA E SENZA TRASMISSIONE DI BIT.
PER NON AVERE TANTI BIT IN TRASIMISSIONE.
VI RINGRAZIO SPERO DI RICEVERE AL PIU PRESO IL PROGRAMMINO. STO CERCANDO DI IMPARARE LABVIEW
VE NE SAREI GRATI.
SALUTI
GABRIELE.
----------------------------------------
AUTORE: 645
DATA :31/08/2009 - 13:05:28
----------------------------------------
x Gabriel209: la risposta è no... Non per cattiveria ma per il fatto che il forum ILVG è fatto per chiedere aiuto, non lavori finiti.
La logica del forum è: "Io provo, quello che ho fatto non funziona faccio vedere agli altri utenti e chiedo qualche spiegazione. Se non so da che parte iniziare cerco di farmi un'idea e poi chiedo consigli".
Michesche: hai risolto? Sei riuscito a trovare le stringhe da inviare al tuo strumento per lavorare?
----------------------------------------
AUTORE: 2565
DATA :09/09/2009 - 17:38:27
----------------------------------------
grazie, si ho risolto, mi hanno inviato, dopo numerevoli solleciti, un manuale con i codici delle srtinghe da utilizzare per le slitte su cui devo lavorare. il programma era fatto bene, ma il dispositivo non riconosceva i miei comandi. grazie a tutti per l'aiuto.
----------------------------------------
================================================================================
cRio in scan mode e fpga assieme
================================================================================
AUTORE: 2607
DATA :17/04/2009 - 12:15:49
----------------------------------------
buongiorno,
sono nuovo del forum. Sto lavorando con un sistema cRio equipaggiato con alcuni moduli tra cui il modulo NI9870 (porte seriali) e il modulo NI9211 (termocoppie) oltre a vari moduli di ingressi e uscite digitali e analogiche.
Volevo chiedere se qualcuno ha già lavorato con un sistema simile e quale è la soluzione ottimale: lavorare attraverso l'fpga con tutti i moduli o usare alcuni moduli in fpga ed alcuni in scan mode. Ho provato entrambi i casi però ho riscontrato dei problemi; nel primo caso ho trovato problemi nella gestione della fifo mentre nel secondo caso i moduli in scan mode non funzionano mentre quelli in fpga si.
Spero di essere stato chiaro nell'esposizione del problema
Grazie
Riccardo
----------------------------------------
AUTORE: 927
DATA :23/04/2009 - 15:29:35
----------------------------------------
Non c'è una soluzione ottimale, dipende cosa devi fare... Usare la tecnica mista semplifica la programmazione, ma tieni conto che lo scan mode di suo occupa 2 canali DMA, e spazio sull'FPGA proporzionale al numero di moduli che gestisce. Con tutti quei moduli è bene comunque avere un FPGA da 3 Mgate
----------------------------------------
AUTORE: 2607
DATA :30/04/2009 - 11:20:05
----------------------------------------
nel caso volessi utilizzare solo l'fpga per la gestione di tutti i moduli cosa mi conviene fare:
-utilizzare un solo .vi e all'interno gestire tutti i moduli?
-utilizzare un .vi per ogni modulo e poi richiamarli quando necessario?
se devo passare attraverso la fifo per comunicare con l'host devo sincronizzare l'accesso alla memoria?
----------------------------------------
================================================================================
Creare documento word.
================================================================================
AUTORE: 2585
DATA :17/04/2009 - 14:03:07
----------------------------------------
Ciao a tutti,
ho il seguente problema durante la generazione di un documento in word.
Ho fatto in modo che scrive sul documento utilizzando i blocchetti: "new report.vi", "append report text" utilizzando una stringa gli ho fatto scrivere la parola pippo sul documento. Quello che non riesco a fare e', fargli modificare il testo (es. grassetto, caratteri piu' grandi, etc).
Potete darmi una mano ?
Grazie,
Paolo
----------------------------------------
AUTORE: 2589
DATA :23/04/2009 - 13:27:09
----------------------------------------
Ciao Paolo,
potresti utilizzare la funzione "Set Report Font.vi" (sempre presente nella palette del Report Generation Toolkit): i suoi input "text option", "text color" e "font settings" ti permetteranno di settare font, dimensioni, aspetto... del testo (ad esempio, collegando costanti).
Spero questo risponda alle tue esigenze!
Ciao!
----------------------------------------
================================================================================
Creazione menù dinamico
================================================================================
AUTORE: 2274
DATA :23/04/2009 - 13:06:45
----------------------------------------
Innanztutto ciao a tutti... ora vi espondo il mio problema
Vorrei creare un menù per l'inserimento dei dati dinamico, cioè che cambi la sua struttura in base al valore in uscita da un ring menù. Per essere più chiari:
"Ho un ring menù dal quale escono dei valori decimali in base alla voce che viene selezionata. Ogni voce corresponde ad un comando che devo inviare ad una unità di controllo, ed ogni comando ha la necessità di avere dei parametri (variabili a seconda del comando scelto). Nel vi che ho creato, al momento, i parametri vengono inseriti da tastiera all'interno di un cluster. Quello che vorrei fare è migliorare questo aspetto, cioè vorrei che in base al valore/comando in uscita dal ring menù mi compaia un 'interfaccia' (sempre sullo stesso front panel) per l'inserimento dei parametri (chiaramente questa interfaccia deve essere in funzione del comando e dei parametri che necessita). Con interfaccia intendo ad esempio un tab controll i cui campi stringa dipendano dal comando inserito."
Sono comunque aperto a qualsiasi soluzione. Se ne avete vi prego di aiutarmi. grazie
ho allegato al post il mio attuale vi che magari può aiutare a capire il mio problema. grazie ancora
David
----------------------------------------
AUTORE: 927
DATA :24/04/2009 - 10:49:20
----------------------------------------
Perchè non usi appunto un Tab control? Lo trovi sotto Containers. Al posto della tendina avrai le linguette, e in ogni pagina metti ciò che ti serve per quel particolare comando. Se proprio vuoi la tendina, ti serve una Event structure che reagisce all'evento di "value change" della tendina e altera di conseguenza i controlli.
----------------------------------------
AUTORE: 1078
DATA :24/04/2009 - 13:34:28
----------------------------------------
Io utilizzerei i pannels di LV.
Ti invio il tuo esempio rivisto. Ovviamente ci dovrai lavorare su un po!
Buon lavoro.
----------------------------------------
AUTORE: 2274
DATA :24/04/2009 - 14:37:50
----------------------------------------
Grazie per l'aiuto ora proverò...
----------------------------------------
AUTORE: 129
DATA :29/04/2009 - 23:28:18
----------------------------------------
Anche io voto per il tab, anche se i pannelli da controllare sarebbero un pò tantini e mi sa che potrebbero aumentare?
Puoi anche provare ad aprire dei subvi utilizzando VIserver.
----------------------------------------
================================================================================
aiuto su waveform
================================================================================
AUTORE: 2610
DATA :23/04/2009 - 20:44:20
----------------------------------------
Buonasera a tutti.
Sono nuovo di labview e ho un problema da risolvere, spero che qualcuno sappia aiutarmi.
Ammettiamo di avere un segnale lungo N campioni letto da memoria, e visualizzato su un grafico.
Supponendo di utilizzare le semplici di funzioni di zoom dei grafici andando a modificare il range dell'asse x, è possibile effettuare in maniera semplice operazioni numeriche solo sulla parte del grafico visualizzata? In altre parole, è possibile risalire facilmente alla porzione di dati visualizzata?
grazie,
ciao a tutti.
----------------------------------------
AUTORE: 482
DATA :24/04/2009 - 07:50:26
----------------------------------------
Non ti so dire nello specifico, ma credo che quello che vuoi fare sia ottenibile tramite uno smanettamento nei vari property node del grafico...
----------------------------------------
AUTORE: 1078
DATA :24/04/2009 - 07:53:58
----------------------------------------
Prova a vedere se questo esempio ti è di aiuto....
----------------------------------------
================================================================================
Salvataggio dati
================================================================================
AUTORE: 2577
DATA :24/04/2009 - 08:14:18
----------------------------------------
Salve a tutti!
Ho un problema che non riesco a risolvere e spero che mi possiate dare un consiglio
Devo salvare i dati elaborati dal mio VI in un file di testo: per ora ho risolto facilmente utilizzando uno "SpreadSheet File" come nella figura che allego è funziona piuttosto bene.
Ho visto che il blocco in questione ha la possibilità di aggiungere i dati in coda al file precentemente creato, oppure sostituirlo di volta in volta (per ora ho scelto la prima soluzione).
Ora vorrei inventarmi qualcosa che, dinamicamente, ad ogni esecuzione del VI cambi il nome del file aggiungendo ad esempio un numero (per esempio Prova alla prima esecuzione, Prova2 alla seconda, Prova3 ecc).
Sarebbe possibile qualcosa del genere?
----------------------------------------
AUTORE: 2592
DATA :24/04/2009 - 09:24:53
----------------------------------------
Ciao Maxxim,
prova a guardare lo screenshot che ti allego. In sostanza crei un percorso che dipende dall'ora di esecuzione del VI e quindi ogni volta che lanci il VI avrai un nome file diverso.
Ciao,
----------------------------------------
AUTORE: 2577
DATA :24/04/2009 - 10:58:01
----------------------------------------
Ciao, ti ringrazio per il suggerimento: mi sembra proprio una buona idea ed è all'incirca quello che cercavo!
Mi potresti dire i nomi dei primi 3 blocchi partendo da sinistra? (cosìcche possa ritrovarli)
----------------------------------------
AUTORE: 2577
DATA :24/04/2009 - 14:33:15
----------------------------------------
[quote="Maxxim":3v6of96y]Mi potresti dire i nomi dei primi 3 blocchi partendo da sinistra? (cosìcche possa ritrovarli)[/quote:3v6of96y]
Come non detto, ho trovato tutto e funziona benone, quindi ti ringrazio ancora
Per rendero ancora più "universale", se qualcuno lo volesse utilizzare al di fuori del pc sul quale viene eseguito il VI, ho sostituito il percorso iniziale con "Current VI's Path".
----------------------------------------
AUTORE: 2592
DATA :24/04/2009 - 15:19:04
----------------------------------------
Hai fatto bene, inizialmente volevo inserirlo ma non avevo idea se l'avessi mai utilizzato...
Buon week end,
----------------------------------------
================================================================================
vi bloccato
================================================================================
AUTORE: 2611
DATA :24/04/2009 - 09:00:15
----------------------------------------
Salve,
sono un neofita di labview.
ho modificato un VI di esempio sul NIMODBUS.
Però quando entro nei subvi della libreria nimodbus.llb non riesco ad usare il comando probe ed il nome dei subvi viene modifcato con l'aggiunta del termine "clone".
Come posso sbloccare i subvi della libreria in modo da potervi accedere e modificare ?
Maurilio
----------------------------------------
AUTORE: 482
DATA :24/04/2009 - 09:26:49
----------------------------------------
Quella scritta compare perchè quello è un VI rientante.
Per editare il vi, dal menu' Operate -> change to edit mode e poi puoi editarlo.
----------------------------------------
AUTORE: 2611
DATA :27/04/2009 - 15:40:06
----------------------------------------
Grazie mille.
Mauri
----------------------------------------
================================================================================
AES 128 BIT
================================================================================
AUTORE: 838
DATA :24/04/2009 - 09:20:53
----------------------------------------
Ciao a tutti, non riesco a implemetare la codifica/decodifica di messaggi (su tcp/udp) con l'AES 128 bit
Esiste qualche libreria per labview? Non trovo nulla a riguardo se non dei C o java
Grazie
----------------------------------------
AUTORE: 2591
DATA :22/05/2009 - 14:18:28
----------------------------------------
Ciao!
A quanto mi risulta l'unica implementazione è nella libreria Crypto-G prodotta dalla VARTOR ( [url:2ct34fhs]http://www.vartortech.com/cryptog.html[/url:2ct34fhs] ), che però è a pagamento. L'alternativa è l'utilizzo di dll realizzate in altri linguaggi (come il c).
Buon lavoro,
Giorgio
----------------------------------------
AUTORE: 838
DATA :26/05/2009 - 08:40:25
----------------------------------------
grazie per la risposta, anche il supporto tecnico della national mi ha dato quel riferimento.
ora ho chiesto ad un mio amico la realizzazione di una dll che mi dovrebbe permettere di fare la stessa cosa
ciao
----------------------------------------
================================================================================
Disabilitazione tastiera
================================================================================
AUTORE: 445
DATA :24/04/2009 - 16:19:47
----------------------------------------
Ciao a tutti, vorrei sapere se era possibile disabilitare la tastiera o tutti i suoi tasti, questo per evitare che vengano premuti dei tasti durante l'esecuzione di un EXE che lancio da lv...
grazie
----------------------------------------
AUTORE: 927
DATA :27/04/2009 - 09:47:13
----------------------------------------
Mettici una Event case, aggiungi l'evento "Key down?" passandogli "Discard?" = true
----------------------------------------
AUTORE: 445
DATA :27/04/2009 - 11:08:02
----------------------------------------
Cosi non funziona come vorrei, devo disabilitare in toto la tastiera, se lancio il VI fatto come tuo suggerimento e premo per esempio il tasto windows mi si apre la relativa finestra...
----------------------------------------
AUTORE: 445
DATA :27/04/2009 - 13:21:35
----------------------------------------
Ma non è possibile disabilitare la tastiera tramite le API di WiN??? nessuno lo ha mai fatto???
----------------------------------------
AUTORE: 445
DATA :27/04/2009 - 13:41:02
----------------------------------------
La funzione dovrebbe essere questa
BlockInput
che si trova dentro la user32.llb ... il problema è ke nn so lanciarla e comandarla da LV!?!?! ... mi potete aiutare??
----------------------------------------
AUTORE: 927
DATA :27/04/2009 - 13:59:40
----------------------------------------
Per chiamare una DLL si usa il blocco "Call library function node".
C'è anche una libreria gratuita chiamata lvwutil32 che gestisce l'interfaccia di Windows e potrebbe esserti d'aiuto.
Se non ti serve per altre cose, puoi disabilitare globalmente il tasto "Windows" (io a casa l'ho fatto perchè non lo sopporto...), al momento non ricordo la procedurina ma se cerchi "disabilitare tasto windows" la trovi facilmente.
----------------------------------------
AUTORE: 445
DATA :28/04/2009 - 17:52:47
----------------------------------------
Ok grazie..... ho risolto con Autoit, con le dll e le Api non sono molto ferrato!!
----------------------------------------
AUTORE: 947
DATA :29/04/2009 - 15:43:04
----------------------------------------
..
[quote="Snamprogetti":2xf517ya]
C'è anche una libreria gratuita chiamata lvwutil32 che gestisce l'interfaccia di Windows e potrebbe esserti d'aiuto.
[/quote:2xf517ya]
Interessantissimo !!
Io ho cercato [b:2xf517ya][u:2xf517ya]lvwutil32[/u:2xf517ya][/b:2xf517ya] sul Sito e sul Forum della NI ... ma l'ho trovata solo per [u:2xf517ya][b:2xf517ya]LV 8.x[/b:2xf517ya][/u:2xf517ya] ...
dove posso trovare [b:2xf517ya][u:2xf517ya]lvwutil32[/u:2xf517ya][/b:2xf517ya] per [u:2xf517ya][b:2xf517ya]LV 7.x[/b:2xf517ya][/u:2xf517ya] ??
Grazie!
...
----------------------------------------
AUTORE: 927
DATA :30/04/2009 - 08:31:21
----------------------------------------
Quella presente in ftp://ftp.ni.com/pub/devzone/epd/lvwutil32.zip è per 7.x, anzi credo per una versione ancora più vecchia
----------------------------------------
AUTORE: 947
DATA :04/05/2009 - 11:21:45
----------------------------------------
..
Grazie !!
Ho appena "[i:3p7r7o02]giocato[/i:3p7r7o02]" con questa libreria .. davvero molto utile .. mi vengono in mente già alcune cose da fare ..
Grazie!
----------------------------------------
================================================================================
Report per l'applicativo Calc di OpenOffice
================================================================================
AUTORE: 2523
DATA :25/04/2009 - 10:46:45
----------------------------------------
Ciao a tutti,
vi scrivo per chiedervi aiuto in merito a un report che vorrei far eseguire a LabView.
In particolare vorrei che LabView permettesse all'utente di trasferire una tabella
nell'applicativo Calc di Open Office.
Avete qualche idea e/o suggerimento?
Grazie in anticipo.
Chobin
----------------------------------------
AUTORE: 2587
DATA :29/04/2009 - 16:36:48
----------------------------------------
Ciao Chobin,
la mia idea è che potresti utilizzare l'activex server di Open Office il quale espone metodi e proprietà che ti consentono di gestire i file di Calc.
Una volta registrato l'activex tali metodi e proprietà sono accessibili da LabVIEW attraverso invoke e property node.
Forse questo ti può essere utile:
http://digital.ni.com/public.nsf/allkb/ ... enDocument
Clara
----------------------------------------
AUTORE: 724
DATA :28/05/2009 - 15:45:57
----------------------------------------
Quali sono i file da registrare?
In vari thread si parla di registrareun controllo ocx o una libreria o un server activex per openoffice
ma in nessuno sono indicati dove trovare i file per la registrazione.
Ho cercato nella cartella di installazione di OpenOffice die .ocx o dei .tlb senza successo.
Sbaglio approcio o la cosa non è fattibile?
Ciao,
Cesare
----------------------------------------
================================================================================
Comunicazione con porta LPT
================================================================================
AUTORE: 2523
DATA :27/04/2009 - 15:49:05
----------------------------------------
Ciao a tutti,
vi scrivo per chiedervi un aiuto.
Ho necessità di realizzare un vi che mi consenta di inviare dei dati
facendo uso della porta parallela del pc.
Vi sto che oggi molti PC, soprattutto quelli portatili, non possiedono
una porta parallela, devo fare uso di un convertitore esterno da USB a parallela.
Sono partito dall'esempio presente in LabView e il tutto funziona correttamente
se uso la porta parallela del PC. Se passo all'utilizzo dell'adattatore inizio ad evere
dei problemi: i dati non vengono spediti verso l'esterno ( i pin dei dati rimangono fissi allo zero logico).
La differenza fondamentale tra la porta parallela presente nel PC e quella virtuale
che ha origine quando collego il convertitore USB/parallela è che nel primo caso riesco
a vedere l'indirizzo della porta stessa nella gestione periferiche di Windows XP, mentre nel caso dell'adattatore
l'indirizzo non appare.
Avete idea del perchè non riesca a fare funzionare l'adattatore con Labview?
Sapete se esiste una funzione di Labview che restituisca l'indirizzo della parallela che nasce quando collego l'adattatore?
Grazie in anticipo.
Saluti.
Chobin
----------------------------------------
AUTORE: 1124
DATA :27/04/2009 - 17:18:46
----------------------------------------
ciao
l'adattatore è sempre inserito nella stessa porta usb su cui è stato installato?
vedi correttamente la porta tramite le 'risorse del computer'?
----------------------------------------
AUTORE: 2523
DATA :27/04/2009 - 20:37:34
----------------------------------------
Ciao Stefano,
quando ho acquistato l'adattatore usb/parallela ho installato i
driver che erano presenti nel cd contenuto nella confezione.
Nelle risorse del computer vedo la porta parallela, ma a differenza di quella
presente nel PC, non viene visualizzato l'indirizzo base.
Pensa che questo adattatore è in realta un adattatore usb to parallela e seriale e riesco ad utilizzare
quest'ultima tramite LabView.
Mistero...almeno per il momento.
Grazie.
Ciao,
Chobin.
----------------------------------------
AUTORE: 645
DATA :28/04/2009 - 11:07:24
----------------------------------------
Io scrivo solo per confermarti che l'utilizzo del convertitore USB-Seriale a me non ha mai creato problemi (ma ci sono utenti del forum che invece si sono imbattuti in questo problema). Per quanto riguarda la comunicazione USB-Parallela non ho mai provato.
----------------------------------------
AUTORE: 2523
DATA :29/04/2009 - 20:25:51
----------------------------------------
Ciao a tutti,
ho una piccola novità: sono riuscito a trasmettere un carattere attraverso la parallela.
La causa dei miei insuccessi era la mancanza del collegamnento dei pin 11 e 12 a massa.
La loro flottanza appariva agli occhi di LabView come una richiesta di attesa da parte del periferico esterno.
Tuttavia non sono ancora arrivato a conclusione del mio lavoro. Come ho accennato in precedenza
accade che trasmesso un carattere non riesco a trasmetterne un secondo nel senso che labview esegue la trasmissione,
ma i pin della parallela rimangono nello stato indotto dalla trasmissione precedente.
Sapreste dirmi il perchè?
P.S: la comunicazione con l'esterno la sto eseguendo tramite NI VISA: in altre parole mi sto comportando come se stessi usando una RS232.
Grazie in anticipo.
Chobin.
----------------------------------------
================================================================================
Set di proprietà di un file es data creazione e modifica
================================================================================
AUTORE: 947
DATA :27/04/2009 - 16:16:05
----------------------------------------
..
Ciao a tutti ..
Ho fatto già una ricerca sul forum ma non ho trovato un post che ne parla...
ecco il quesito :
è possibile con LV7 o 7.1 modificare le proprietà interne di un file qualunque come la data di creazione, ultima modifica, ... ???
e se sì ... come?
ho trovato solo il VI che permettere di leggere la data dell'ultima modifica ma non di settarla ..
Grazie a tutti in anticipo ..
----------------------------------------
AUTORE: 645
DATA :28/04/2009 - 11:08:22
----------------------------------------
Non ho fatto prove prima di scrivere... Se tu apri il file e lo chiudi subito non viene aggiornata la data di ultima modifica?
----------------------------------------
AUTORE: 947
DATA :28/04/2009 - 11:11:38
----------------------------------------
..
Vabbè .. come non detto .. ho risolto da me ..
però NON con i VI del LV ma attraverso un programma "[b:3mjl9tiq][u:3mjl9tiq]FileTouch[/u:3mjl9tiq][/b:3mjl9tiq]"
che ha anche la versione a riga di comando "[b:3mjl9tiq][u:3mjl9tiq]FTouch.exe[/u:3mjl9tiq][/b:3mjl9tiq]"
e che ti permette di modificara alcuni attributi dei file (Hidden, Archivio, Data Creazione, Data Modifica)..
davvero molto utile..
Così uso il VI della Command Line (Shell) per eseguire un Batch ..
che più o meno è di questo tipo:
[code:3mjl9tiq]C:\Programmi\FileTouch\ftouch.exe "C:\Programmi\FileTouch\prv_01.txt" /D:30.11.2005 /T:05:03:04 /CS /MS
[/code:3mjl9tiq]
dove :
[b:3mjl9tiq]C:\Programmi\FileTouch\ftouch.exe [/b:3mjl9tiq] è il programmino,
[b:3mjl9tiq]C:\Programmi\FileTouch\prv_01.txt[/b:3mjl9tiq] è il file di cui cambio le date
[b:3mjl9tiq]/D:30.11.2005[/b:3mjl9tiq] serve a settare la data del sistema, ma solo virtualmente .. la data del PC non varia
[b:3mjl9tiq]/T:05:03:04 [/b:3mjl9tiq] lo stesso per l'orario
[b:3mjl9tiq]/CS [/b:3mjl9tiq] sta per [b:3mjl9tiq]Creation Attr. from System date[/b:3mjl9tiq] e serve a settare l'attributo [b:3mjl9tiq]Data di Creazione[/b:3mjl9tiq] al tempo di sistema
[b:3mjl9tiq]/MS [/b:3mjl9tiq] sta per [b:3mjl9tiq]Modify Attr. from System date[/b:3mjl9tiq] , lo stesso per la [b:3mjl9tiq]Data di ultima Modifica[/b:3mjl9tiq]
Spero vi sia utile ..
Se però qualcuno trova il modo di operare direttamente con i VI del LV .. fatemelo sapere !!
Grazie
Ciao!!
----------------------------------------
AUTORE: 947
DATA :28/04/2009 - 11:15:54
----------------------------------------
...
Scusami Magic .. Non avevo letto .. mi hai risposto mentre scrivevo pure io ..
Cmq .. a me serve portare avanti o indietro nel tempo (anche mesi o anni) le date di alcuni file ..
.. quindi così ho risolto ..
Tra l'altro in questo modo si possono anche modificare anche altri attributi: Nascosto, Archivio ..
per adesso non mi serve .. ma può essere utile in futuro ..
Bye!!
----------------------------------------
================================================================================
Server SMTP con autenticazione...
================================================================================
AUTORE: 445
DATA :28/04/2009 - 17:51:38
----------------------------------------
Ciao ... nessuno di voi è riuscito a inviare una mail tramite server SMTP di LV con autenticazione dati (username e password)??
----------------------------------------
AUTORE: 2514
DATA :21/07/2011 - 08:08:23
----------------------------------------
Rispondo riesumando questo messaggio, in realtà, per riproporre la questione al Forum (non ho trovato la soluzione e chiedo scusa in anticipo se ho cercato male). Il problema è quello di impostare un SMTP server con autenticazione e password. Ne ho bisogno perchè nel mio software do la possibilità di inviare una mail e mi piacerebbe poter consentire all'utente di impostare correttamente i suoi parametri. Attualmente, ad esempio, il mio provider (alice) mi consente, impostando out.alice.it come SMTP di sfruttare il servizio senza autenticazione, mentre l'SMTP della mia azienda non funziona. Qualcuno ha qualche suggerimento? Grazie mille!
----------------------------------------
AUTORE: 482
DATA :21/07/2011 - 09:08:19
----------------------------------------
non so se funziona, ma dia un occhiata qui:
https://decibel.ni.com/content/docs/DOC-1250
http://zone.ni.com/devzone/cda/epd/p/id/5992
fammi poi sapere se risolvi!
----------------------------------------
AUTORE: 2514
DATA :21/07/2011 - 09:20:07
----------------------------------------
Grazie mille! Comincio a guardarci poi faccio sapere!
----------------------------------------
AUTORE: 2514
DATA :21/07/2011 - 10:28:52
----------------------------------------
Innanzitutto grazie di nuovo a gepponline. Ho provato gli esempi a purtroppo con il mio provider non sembrano funzionare correttamente. Uno dei due è specifico per gmail e prevede che l'utente setti i parametri del proprio account gmail, il che non sarebbe un grosso problema, in verità, anche se io pensavo di creare qualcosa di general-purpose. Credo che ritornerò sui miei passi e vedrò di seguire qualche via alternativa. Ovviamente, in caso di successo, posterò l'eventuale soluzione. Grazie anora.
----------------------------------------
AUTORE: 2514
DATA :21/07/2011 - 14:25:00
----------------------------------------
E invece, gepponline, qualcosa si muove! Ho provato ad aprirmi un account dedicato ala mia applicazione su Gmail. Una volta attivato ho usato il vi GMAIL.VI che mi hai linkato e FUNZIONA!! MITICO!!! GRAZIE MILLE !!!!
----------------------------------------
AUTORE: 482
DATA :19/07/2012 - 08:50:14
----------------------------------------
Rispolvero questa discussione perchè proprio insti giorni sto per usarla ma sono incappato in 2 problemi:
1) se metto l'indirizzo di due destinatari separati da virgole, non da nessun errore, ma la mail viene inviata solo al primo
2) vorrei eliminare l'allegato dopo averlo spedito ma mi dice "file already open"
qualcuno ha qualche suggerimento in merito?
----------------------------------------
================================================================================
New Report.vi dà Err: Interfaccia non registrata
================================================================================
AUTORE: 947
DATA :29/04/2009 - 08:57:08
----------------------------------------
...
Ciao a tutti,
purtroppo sono di nuovo qui .. a proporvi un quesito che mi ha lasciato [b:3lg34efm]alquanto basito[/b:3lg34efm]!
Alcuni mesi fa ho sviluppato un VI per la generazione di Report di tipo NIReport che vanno direttamente in stampa
utilizzando la libreria di LV7 [b:3lg34efm][u:3lg34efm]NIReport.llb [/u:3lg34efm][/b:3lg34efm]..
Tutto OK !! .. tutto ha funzionato perfettamente per un bel po' .. ma ad un tratto di punto in bianco ecco la catastrofe:
il VI [u:3lg34efm][b:3lg34efm]New Report.vi[/b:3lg34efm] [/u:3lg34efm]restituisce immediatamente l'errore [b:3lg34efm][u:3lg34efm]Interfaccia non registrata [/u:3lg34efm][/b:3lg34efm]
che poi è generato dal VI [b:3lg34efm][u:3lg34efm]Automation Opern.vi[/u:3lg34efm][/b:3lg34efm] che si trova dentro il case "Standard Report"
è un problema legato al ActiveX ?? ... proprio quello di NIReport ?? ... e cosa può essere successo ?? ... si è disinstalalto ?? ... ma come se sul PC non sono state fatte installazioni/disinstallazioni di nessun tipo ??
Che devo fare?? .. oltre che mettermi a piangere??
Aiutatemi !!
.... .... ....
Reinstallare il LV ???
.... .... ....
----------------------------------------
AUTORE: 947
DATA :29/04/2009 - 10:09:16
----------------------------------------
...
[u:1hq3stpm][b:1hq3stpm]Ho risolto !! [/b:1hq3stpm][/u:1hq3stpm] ... anche questa volta da solo .. e mi è andata bene !!
Confrontando il mio con un altro PC ho notato che nel mio mancava la DLL [b:1hq3stpm][u:1hq3stpm]NiReports.dll[/u:1hq3stpm][/b:1hq3stpm]
... evidentemente cancellata misteriosamente da forze oscure avverse !! ...
...
Mi è bastao un copia&incolla nella posizione corretta .. [i:1hq3stpm]et voilà [/i:1hq3stpm].. Tutto Funziona come prima !!
... Sarà successo quando ho cercato di compilare il tutto con l'[b:1hq3stpm]Application Builder[/b:1hq3stpm] e mi è andato in errore perchè avevo aggiunto un file che in realtà non stava dove doveva stare ?? ... Potrebbe un errore così banale creare un problema tale ?? ..
Non penso proprio .. ma non so come spiegare sta cosa !!
Mistero del LV !! Amen !!
...
----------------------------------------
================================================================================
Contatore elettrico
================================================================================
AUTORE: 2617
DATA :29/04/2009 - 16:45:20
----------------------------------------
Ciao a tutti,
sto realizzando un contatore elettronico con un chip della Analog Device, e cercavo in rete una interfaccia che ricordasse quella del contatore enel per raffigurare la misura di potenza e dei vari parametri, ma praticamente tutto quello che ho trovato è a pagamento.
Sapete dove posso trovare alcuni di queste VI per il monitoraggio?
grazie a tutti!!
----------------------------------------
AUTORE: 2617
DATA :29/04/2009 - 18:16:20
----------------------------------------
Ho dimenticato di dire che l'interfaccia la sto realizzando in Labview.
----------------------------------------
AUTORE: 129
DATA :02/05/2009 - 08:01:41
----------------------------------------
se è solo la questione di replòicare l'interfaci a grafica, ti consiglio di usare 2 foto del contatore (1 con sezionatore in ON e 1 in OFF) le piazzi in un picture ring e usi una event su click che ti cambi immagine.
Le immagini devono essere vuote del display, che sostituirai con un display fatto in labview.
dopodichè manipoli i controlli come vuoi.
----------------------------------------
AUTORE: 2624
DATA :21/05/2009 - 13:43:11
----------------------------------------
che chip usi? ADE7763?
----------------------------------------
================================================================================
Problema con il waveform chart!!!
================================================================================
AUTORE: 2598
DATA :30/04/2009 - 11:18:39
----------------------------------------
Ciao a tutti!! Volevo chiedervi se qualcuno di voi sa come fare per fare in modo che un waveform chart si autopulisca dopo un tot di dati acquisiti. Nel caso specifico il grafico mi serve solo per monitorare l'andamento di certi parametri, e quindi non è necessario che io tenga tutti i dati del grafico, anche perchè il mio programma dovrebbe andare per più giorni di seguito, ma accumulando i dati del grafico il compiuter si pianta dopo poche ore! Per questo avrei bisogno di fare in modo che il waveform chart man mano buttasse via i dati "vecchi".
Grazie in anticipo!!!
Ciao!
----------------------------------------
AUTORE: 1078
DATA :30/04/2009 - 12:25:21
----------------------------------------
La waveform chart ha un proprietà che si chiama Chart History-lenght. Impostando questa proprietà imposti la lunghezza del buffer che deve essere conservato. Per impostarla velocemente: click destro sulla waveform-->Chart History Lenght, di default è 1024 punti.
----------------------------------------
AUTORE: 2598
DATA :30/04/2009 - 12:50:12
----------------------------------------
OK, grazie, ci proverò, però ho un dubbio: dopo aver cambiato la lunghezza del buffer il waveform chart si aggiorna da solo eliminando i dati vecchi? o dopo un intervallo di tempo diverso si impalla lo stesso?
Ciao!
----------------------------------------
AUTORE: 2598
DATA :01/05/2009 - 20:04:41
----------------------------------------
Ciao, non è che qualcuno sa come fare per fare in modo che il plot del waveform chart si pulisca automaticamente dopo un tot di tempo?
Oppure io avevo pensato di fare in modo che il buffer giri in modo che non ci siano accumuli...ma come faccio a fare in modo di avere un "buffer rotante"?
Please help me!!
Grazie!
----------------------------------------
AUTORE: 1078
DATA :01/05/2009 - 22:25:24
----------------------------------------
Com'e fatta la tua Waveform?
Normalmene si passa un'array di dati al chart. Se vuoi svuotarlo ogni tot tempo basta che gli passi un array vuoto!
La hisory comunque funziona come buffer circolare, quando è piena toglie il primo valore entrato nel buffer per posto a quello nuovo. Il massimo dei valori contenuti è definito nella hisory-lengh.
Trovi molti esempi per l'utilizzo delle waveform negli esempi LV, con il Find Exemple (accedibile dal menù Help) cerca "buffer" o "waveform chart".
Se vuoi un aiuto in più prova a postare il tuo vi o qualcosa che gli assomigli, così lo vediamo insieme!
Buon lavoro.
----------------------------------------
AUTORE: 129
DATA :01/05/2009 - 22:34:27
----------------------------------------
Capisco la semplicità dell'uso del chart, ma se mi posso permettere, mi sembra che il tuo sia un lavoro per "graph"
Unico neo che devi aggiungere un pò di codice in più per inserire in un array le misure.
Nel caso tuo, potresti usare una macchina a stati, in modo che sfrutti uno shift register per l'array del graph.
Così puoi fare una pulizia del grafico a tempo, aggiungendo che se vuoi puoi salvare l'array su file ecc.
----------------------------------------
AUTORE: 2598
DATA :08/05/2009 - 12:59:25
----------------------------------------
Ciao nicola, mi sa che hai ragione e ho deciso di usare il graph, siccome lo devo mettere dentro un while loop che lo faccia andare di continuo dal momento che faccio partire la macchina, volevo chiederti come faccio a farlo pulire dopo un tot di tempo. Poi volevo chiederti cosa intendevi per la macchina a stati che potrei usare.
Grazie!
Ciao!
----------------------------------------
AUTORE: 129
DATA :09/05/2009 - 23:15:17
----------------------------------------
Ciao, intendevo di fare qualcosa tipo questo che ti allego.
----------------------------------------
================================================================================
Aiuto acquisizione video
================================================================================
AUTORE: 2618
DATA :30/04/2009 - 19:01:14
----------------------------------------
ciao; mi sono appena iscritto al forum, spero di trovarmi bene.
vorrei chiedervi un' informazione: utilizzo labview 7.0, sul pc ho installato una scheda firewire non national, sapete se è possibile acquisire il video tramite questa porta firewire?
ciao grazie
----------------------------------------
AUTORE: 1078
DATA :01/05/2009 - 22:27:35
----------------------------------------
Non l'ho mai fatto ma credo di si. Ovviamente devi avere tutti i driver corretti.
----------------------------------------
AUTORE: 2618
DATA :02/05/2009 - 11:02:41
----------------------------------------
Grazie dell'info, quindi devo acquistare i software national instrument vision? ciao
----------------------------------------
AUTORE: 278
DATA :02/05/2009 - 11:42:03
----------------------------------------
Ciao,
[quote:h0x7vos5]Grazie dell'info, quindi devo acquistare i software national instrument vision? ciao[/quote:h0x7vos5]
se vuoi acquisire filmati e immagini tramite LV direi che e` una scelta quasi obbligata.. a meno che il produttore della tua scheda firewire metta a disposizione delle proprie librerie..
----------------------------------------
AUTORE: 2618
DATA :03/05/2009 - 13:35:46
----------------------------------------
Grazie dei consigli. Quindi acquistando i software national video, non dovrei avere problemi nell'acquisizione pur avendo una scheda firewire non national?
----------------------------------------
AUTORE: 278
DATA :05/05/2009 - 19:30:43
----------------------------------------
Ciao,
in teoria non dovresti avere problemi, ma preferisco sempre attenermi alla pratica;)
Siccome il pacchetto Vision costa non poco.. ti consiglio di chiedere a NI una copia di valutazione gratuita di 30 giorni, fare le relative prove di acquisizione e poi valutare l`eventuale acquisto.
a presto
----------------------------------------
AUTORE: 2618
DATA :06/05/2009 - 14:28:12
----------------------------------------
Ok farò così, grazie delle info ciao.
----------------------------------------
================================================================================
Qualche domanda con la seriale e il database
================================================================================
AUTORE: 2619
DATA :03/05/2009 - 11:19:10
----------------------------------------
Salve, devo fare un progetto per la tesina. Purtroppo a scuola non abbiamo ancora studiato le varie porte per comunicare con il PC..Quindi vorrei fare qualche domandina...(Ho già letto il post sulle porte seriali che è recentemente presente sul forum, ma non ho capito un granchè). Allora io ho un PIC, che mi da 8-bit(informazioni sulla temperatura convertiti già prima con un A/D)ogni secondo, questi 8-bit devo portarli in Labview tramite la porta seriale. Mi serviranno per disegnare il grafico della temperatura. Ma allo stesso tempo, vorrei che il valore della temperatura fosse memorizzata in un database, così da un'altro PC con lo stesso programma potrebbe leggere i valori della temperatura e quindi disegnare il grafico con i valori memorizzati nel database.
Quindi:
- Come faccio ad ottenere i 8-bit per disegnare il grafico?
- Come salvo i valori nel database?
- Come leggo i valori dal database?
Uso Labview 8.20 (Student Version) e il database non è in localhost, ma in internet(Ho creato un sito su netsons per ottenere il database).
----------------------------------------
AUTORE: 129
DATA :03/05/2009 - 23:18:31
----------------------------------------
se hai una porta seriale sulal pic, puoi realizzare una comuicazione seriale PC/pic via labview.
Per leggere/scrivere valori da un database, dipende dal tipo.
Devi specificare meglio il tuo problema, magari fornendo dati come il tipo di pic che utilizzi, se ha o meno la seriale; per il database idem, almeno di sapere il tipo di database.
----------------------------------------
AUTORE: 2619
DATA :04/05/2009 - 15:25:35
----------------------------------------
Grazie per avermi risposto !Il tipo di pic è ancora da definire, cmq ho parlato con il professore. I bit dovrebbero essere convertini dal pic attraverso una funzione,salverà i dati in un registro dal quale posso mandare le info attraverso la seriale. Per il database quello di mysql potrebbe andare bene?
----------------------------------------
AUTORE: 2619
DATA :05/05/2009 - 13:44:26
----------------------------------------
Aggiungo: Il pic che uso è un 16F877A
----------------------------------------
AUTORE: 645
DATA :05/05/2009 - 15:51:34
----------------------------------------
L'idea è che se il PIC invia i dati tramite porta seriale tu puoi leggerli con i blocchi VISA (normalmente serve sia il Write per inviare allo strumento la richiesta dei dati che il Read per leggere i dati... ma se il PIC è programmato per inviare i dati ogni tot di tempo puoi usare solo il Read) e poi inserisci i dati letti (a questo punto ti trovi con una stringa) in un database...
Per parlare con i database ci sono alcune operazioni da fare: ti consiglio di dare un'occhiata nella sezione articoli dove trovi un paio di documenti riferiti all'uso dei database.
Mi viene da dire che se non hai esigenze particolari un database vale l'altro: MySQL è comodo perchè free ma puoi usare anche Microsoft SQL Server o Firebird (non ho ancora provato ma lo farò...) o SQLite se hai problemi di spazio.
Fai qualche prova!!
----------------------------------------
AUTORE: 2619
DATA :05/05/2009 - 16:58:43
----------------------------------------
Ho guardato un pò le guide e mi ha colpito la guida sugli accessi alle risorse I/O in Labview. Qui spega molto bene la comunicazione con la porta parallela. Quindi se io mando tramite la porta parallela gli 8 bit cosa viene fuori in data read(In Port.Vi)? Mi consigliate la comunicazione con la porta parallela? La cosa sembra semplificarsi...
----------------------------------------
AUTORE: 2619
DATA :08/05/2009 - 14:13:10
----------------------------------------
Ho provato a scrivere sulla porta e leggere i valori sulla porta, ma il risultato è sempre -1, perchè??
----------------------------------------
AUTORE: 129
DATA :08/05/2009 - 23:16:13
----------------------------------------
Devi fare attenzione all'indirizzo che deve essere in esadecimale.
IN PORT --> ti mostra lo stato dei pin (1/0)
OUT PORT --> setta lo stato del pin (1/0)
----------------------------------------
AUTORE: 2619
DATA :09/05/2009 - 13:49:39
----------------------------------------
L'indirizzo della porta parallela è 378 (ho controllato in sistema->hardware->gestione periferiche) Ho usato outport per scrivere dei valori sulla porta e in port per leggerli. Ma per qualsiasi valore io scriva esce sempre -1...
----------------------------------------
AUTORE: 129
DATA :09/05/2009 - 22:21:30
----------------------------------------
Si ma quel 378 è in esadecimale. I controlli e le costanti numeriche di default sono decimali, li devi trasformare tu dalle propietà del controllo.
Non mi accanisco su questo punto perchè in effetti se ti fossi sbagliato lì mi sembra un pò strano che non ti abbia generato errore.
prova a postare il tue esempio così è + facile aiutarti.
----------------------------------------
AUTORE: 2619
DATA :10/05/2009 - 01:48:29
----------------------------------------
Ecco, vi allego il programma. E' identico a quello nella guida..
----------------------------------------
AUTORE: 129
DATA :10/05/2009 - 22:32:46
----------------------------------------
Come pensavo non hai settato il controllo dell'adress come esadecimale di conseguenza l'indirizzo che gli dai è si 378 ma decimale.
Sono l'autore dell'articolo che hai citato sulle risorse I/O e mi fa piacere che possa essere d'aiuto, ma nello stesso tempo conosco le notti che ho passato per capire perchè non mi funzionava la parallela (era infatti il set in hex).....
In sostanza o scrivi 888 così comìè (decimale oppure tasto destro sulla costante adress, properties quindi Format e precision e Hexadecimal al posto di floating.
, nicola
----------------------------------------
AUTORE: 2619
DATA :11/05/2009 - 13:48:50
----------------------------------------
Ho messo l'indirizzo in esadecimale però inport legge sempre il valore 0. In teoria se scrivo un valore in quel indirizzo, quando vado a leggere non dovrei ricevere lo stesso valore?
----------------------------------------
AUTORE: 2619
DATA :18/05/2009 - 16:08:40
----------------------------------------
Qualcuno potrebbe dirmi qualè il problema ? Please
----------------------------------------
================================================================================
Segnale random e trasformazione stringa/numero
================================================================================
AUTORE: 2613
DATA :03/05/2009 - 14:39:46
----------------------------------------
Salve perdonate la mia ignoranza, ma sono proprio agli inizi. Per il tirocinio devo imparare ad utilizzare labview, ma sto ancora agli inizi; sto seguendo una guida che mi ha dato il professore.
Il fatto è che vorrei poter studiare anche da casa dove però non possiedo un generatore di tensione e quindi ne avrei bisogno di uno creato dal programma stesso.. è possibile fare questa operazione? e come? sugli appunti c'è scritto che dovrei vedere in "functions>>user libraries>>basics i course ma lì non c'è niente di selezionabile.
Inoltre un altro problema che ho incontrato è la trasformazione del segnale stringa, in un segnale numero che può essere visualizzato tramite il grafico... per questa operazione che devo fare??
perdonate la mia ignoranza, ma sono proprio all'inizio.
----------------------------------------
AUTORE: 2592
DATA :03/05/2009 - 21:50:49
----------------------------------------
Ciao,
che versione di LabVIEW stai utilizzando?
Per quanto riguarda il generatore di segnale puoi vedere nella Functions Palette (nel Block Diagram vai su View -> Functions Palette) "Signal Processing-> Waveform Generation" oppure "Signal Processing-> Signal Generation". Li troverai una serie di segnali per simulare la tua tensione.
Per convertire una stringa in numero vai invece in "Programming-> String -> String/Number Conversion"
Ciao
----------------------------------------
AUTORE: 2613
DATA :04/05/2009 - 09:33:42
----------------------------------------
grazie mille per l'aiuto
----------------------------------------
================================================================================
Scegliere il tipo di operazione da effettuare
================================================================================
AUTORE: 2613
DATA :04/05/2009 - 09:38:53
----------------------------------------
Salve il mio problema attuale è un altro... il mio obiettivo è quello di effettuare misurazioni con un multimetro controllate in remoto da labview.... prima di iniziare il programma devo far in modo che l'utente possa scegliere il tipo di misurazione da effettuare(tipo misura tensione, corrente etc ect) come posso fare ciò?
Avevo pensato di utilizzare il text ring (in string/enum), ma non ci riesco... che consiglio mi date?
----------------------------------------
AUTORE: 1078
DATA :04/05/2009 - 10:49:26
----------------------------------------
Ciao...
Prova a vedere se questo esempio fa al caso tuo....
----------------------------------------
AUTORE: 2613
DATA :06/05/2009 - 09:37:08
----------------------------------------
uff non parte perchè la tua versione di labview è successiva alla mia... 7.1!
Non puoi dirmi come hai fatto?
----------------------------------------
================================================================================
Più value nella combo box per ogni item?
================================================================================
AUTORE: 2612
DATA :05/05/2009 - 10:05:39
----------------------------------------
Ciao a tutti, è possibile associare a ciascun item di una combo box più valori, magari sotto forma di array?
in passato ho risolto il problema associando ad un item una stringa di parole separate da un trattino ("Falconara-Ancona-LIPY") e successivamente smembrando la stringa, ma vorrei evitare perchè in questo caso devo semplicemente associare a ciascun item 3 valori numerici. si può fare?
grazie
----------------------------------------
AUTORE: 1078
DATA :05/05/2009 - 13:04:26
----------------------------------------
Non capisco a cosa ti serve, non sarebbe meglio associare un ring con le voci da selezionare estrapolando i dati da un'array dati?
Guarda questo esempio...
----------------------------------------
================================================================================
Disinstallare prodotti national
================================================================================
AUTORE: 482
DATA :06/05/2009 - 14:45:43
----------------------------------------
..ma ciao!
sul laptop aziendale avevo 3 versioni di labview. Ora ho deciso di rimuovere tutto ed installare solo l'ultima versione perchè avevo dei problemi con i driver DAQ che non mi si installavano in tutte le versioni.
Volevo sapere se c'e' un modo per ripulire completamente il registro di windows dalle voci che riguardano national dopo aver disinstallato tutto.
Mi pareva di aver letto qualcosa a riguardo, me lo sono sognato??
----------------------------------------
AUTORE: 2592
DATA :06/05/2009 - 17:02:39
----------------------------------------
Ciao geppo,
ti mando la procedura che consigliamo di seguire per ripulire il PC da software NI:
Per prima cosa, se non ce l'hai già, scarica MSIBlast.zip dal seguente link
http://forums.ni.com/ni/board/message?b ... ogin=False
The following procedure will remove the National Instrument Software:
1. Turn off the computer and physically remove or unplug all NI hardware that you have installed on your system. This includes anything that is PCI-, ISA-, USB-, 1394-, or Ethernet-based.
2. Turn the computer on and go through Add/Remove Programs (START » SETTINGS » CONTROL PANEL » Add/Remove Programs) and remove everything NI-related. Generally, if you can remember, it is best to uninstall things in the reverse order in which they were installed. For example, if you installed LabVIEW, then NI-DAQ, and then the Internet Developers Toolkit for LabVIEW, you should uninstall the Internet Developers Toolkit first, then NI-DAQ, and then LabVIEW last.Â
3. After everything has been removed (do not be concerned at this point if an item still shows up in the Add/Remove Programs list after you have removed it), close all programs and restart your computer.Â
4. Go to START button of your operating system, choose RUN and type "regedit". This will open the Registry Editor window. Go to the Registry Menu and choose Export Registry File. Select "All" for the export range, and select a file name. This creates a backup of the Registry in case a mistake is made when deleting the keys.
5. Remove the following registry components from the Windows Registry:
HKEY_CURRENT_USER\Software\National Instruments Delete the entire tree!
HKEY_LOCAL_MACHINE\Software\National Instruments Delete the entire tree!
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\PCI\ , \ISA, or \PCMCIAand delete registry entries containing any keys with 1093 in them.
Do not worry if any of these trees are not listed. Continue with the remainder of the process.
Note:Â You may need to modify security policies. In Windows 2000/98/95/NT, go to [regedt32] then Security>> Permissions. In Windows XP you can modify security options using Edit>> Permissions in the Registry Editor (regedit).
6. Close regedit.
7. Make sure that you do not have any of your own VIs or other files saved in the "C:\VXIpnp", "C:\Program Files\National Instruments", or "C:\WINDOWS\
idaq" folders. If you do, copy them to a different location. If you are concerned about keeping old virtual channels and your SCXI setup intact, then backup the "C:\WINDOWS\
iconfig.daq" file, too. Delete all folders and files mentioned above.Â
Note:Â If you have Windows NT/2000, replace "C:\Windows" with "C:\WINNT" in the paths listed above.Â
8. Download the MISblast.zip and copy it to the hard drive.Â
9. Run MSIblast.exe by unzipping the file and selecting the appropriate executable.
10. Reboot your computer.Â
11. You should be ready to install your software. For the cleanest possible install, first install all of your application development software, such as LabVIEW, Measurement Studio, etc. Do a custom install, so that you can install just the application WITHOUT ANY DRIVERS. Reboot your PC when requested after each install. Even if the installer does not tell you to reboot, it would probably be a good idea to do so anyway. Now install your driver software and follow the associated user manuals. Some older non Plug-n-Play hardware must be installed before the driver. Download the latest versions of the drivers that support your hardware from our Drivers and Updates software library (link below), and install them one-by-one, rebooting after each install.Â
12. Finally, shut down and re-install your hardware. When you boot back up, it should be detected in MAX.
Dovrebbe essere tutto...
Ciao,
----------------------------------------
================================================================================
Display Numerici Ulteriori
================================================================================
AUTORE: 2328
DATA :07/05/2009 - 11:35:10
----------------------------------------
Buongiorno a tutti...volevo sapere se si possono trovare dei display numerici ulteriori a quelli k ci sono già in labview? Ossia a me servirebbe creano degli strumenti virtuali con labview tipo altrimetro, barometro, altitudine (queste cose che riguadano la strumentazione di bordo degli aerei)...Ringrazio Anticipatamente...
----------------------------------------
AUTORE: 660
DATA :07/05/2009 - 13:14:34
----------------------------------------
Beh, ce ne sono di già fatti, ma a pagamento: guarda sul sito della Global Magic si può scaricare il demo.
Altrimenti devi crearteli tu customizzando gli indicatori presenti.
Ciao
Max
----------------------------------------
AUTORE: 660
DATA :07/05/2009 - 13:18:04
----------------------------------------
Ops, ho sbagliato a digitare eccoti il link
http://www.globalmajic.com
Ciao
Max
----------------------------------------
================================================================================
Uso dell'LDF startr kit 101
================================================================================
AUTORE: 1078
DATA :07/05/2009 - 14:21:26
----------------------------------------
Ciao a tutti,
devo realizzare un'applicazione che testi una DUT su bus LIN. Per accelerare lo sviluppo dell'applicazione ho scaricato dal sito della national instrument la libreria in oggetto. Peccato che, anche se nelle specifiche dovrebbe funzionare con file LDF strutturati con bus LIN 2.0, questa libreria funzioni solo con il file di esempio in essa contenuta. La documentazione messa a disposizione è veramenta povera, e quindi sono a chiedere a voi se per caso avete già ustato questi VI? Se si siete riusciti a lavorare con file LIN 2.0? Cosa avete cambiato o come avete interagito?
Il problema a me si presenta direttamente all'apertura del file LDF, per fare questo utilizzo l'open LDF contenuto nella libreria, a sua volta questo fa una chiamata ad una dll "LDFRead.dll" che non capisco come funzioni....
Vi ringrazio in anticipo...
----------------------------------------
================================================================================
ERRORE NIPALSM.EXE in chiusura
================================================================================
AUTORE: 482
DATA :08/05/2009 - 09:07:43
----------------------------------------
...ma ciao!
tutte le volte che spengo il pc, mi compare una finestra di errore dal titolo:
NIPALSM.EXE - Errore di applicazione
e nella descrizione c'e' scritto:
0x6402b6e7 ha fatto riferimento alla memoria 0x00000(non son riuscito a segnare gli zeri esatti). La memoria non poteva essere "read"
QUalcuno di voi sa dirmi cosa devo reinstallare o disinstallare per levarmi questo problema?
grazie mille
Geppo!
----------------------------------------
AUTORE: 1124
DATA :08/05/2009 - 10:32:34
----------------------------------------
ciao
stesso errore, ma mi compare quando completo la sessione di lavoro con il programma "recordnow data" della sonic.
la prossima volta prendo nota degli address.
analogo problema con un software di disegno cad elettrico che ho dovuto disinstallare.
anche pulendo i registri il fastidio rimane.
----------------------------------------
AUTORE: 660
DATA :11/05/2009 - 13:09:38
----------------------------------------
Stesso problema, ma solo quando esco da windows embedded.
Ho anche provato ad uccidere "automaticamente" il processo nipalsm.exe prima dello shutdown, ma la cosa non va a buon fine e compare comunque la schermata di errore subito prima che si spenga.
Non sembra dare problemi però non è "bello" da vedersi.
Max
----------------------------------------
================================================================================
Applicativo come Servizio di Windows
================================================================================
AUTORE: 947
DATA :08/05/2009 - 14:53:42
----------------------------------------
..
Buon giorno a tutti !!
Ho un nuovo quesito da porvi.
Dunque questo è quello che devo realizzare:
mi serve creare un applicativo che risieda attivo sul PC sin dall'avvio (o dal Login dell'utente)
che rimanga in ascolto su una porta COM e che appena arriva un determinato comando da questa
fa partire un altro programma exe il quale prende possesso di quella COM
e inizia a colloquiare con il dispositivo connesso.
Ora .. tutto questo posso farlo senza problemi ..
.. ma volevo far partire il primo applicativo come un servizio di Windows ..
.. ovviamente so che non è necessario .. ma volevo un po' sperimentare i servizi.
Ed ecco la domanda:
è possibile creare un appliativo che venga visto in tutto e per tutto come [b:16fc0gyj][u:16fc0gyj]Servizio di Windows[/u:16fc0gyj][/b:16fc0gyj]??
Se sì (e lo è !!), come si fa?
[u:16fc0gyj]ATTENZIONE[/u:16fc0gyj]:
per Servizio non intendo solamente gestire l'icona nella System Tray anzicchè nella Barra delle Applicazioni,
(cosa che faccio usando l'utilissimo [url:16fc0gyj]http://forums.ni.com/attachments/ni/170/95141/1/LabVIEWTrayIcon.zip[/url:16fc0gyj])
ma intendo prorpio un servizio localizzabile dalla Gestione Servizi del Win come per es. "National Instruments Time Synchronization"
----------------------------------------
AUTORE: 301
DATA :08/05/2009 - 15:40:59
----------------------------------------
Ciao,
io non l'ho mai fatto, vedi se questi 2 siti ti possono aiutare....
[url:1pc4z4tz]http://msdn.microsoft.com/it-it/library/9k985bc9(VS.80).aspx[/url:1pc4z4tz]
[url:1pc4z4tz]http://www.ciacci.biz/2008/01/07/creare-un-servizio-sotto-windows-xp2003/[/url:1pc4z4tz]
----------------------------------------
AUTORE: 947
DATA :13/05/2009 - 10:23:12
----------------------------------------
..
Grazie per la risposta ..
.. purtroppo fin ora non ho avuto modo di vedere bene nei dettagli i link che hai postato ..
Cmq penso di aver risolto il problema con [b:2rzdbm9g][u:2rzdbm9g]XYNTservice[/u:2rzdbm9g][/b:2rzdbm9g] suggerito da [b:2rzdbm9g]Snamprogetti[/b:2rzdbm9g] ..
.. devo ancora smanettarci un po' .. ma pare faccia al caso mio ..
Grazie!
----------------------------------------
================================================================================
Grafici excel
================================================================================
AUTORE: 2621
DATA :08/05/2009 - 14:58:30
----------------------------------------
Salve a tutti!
Sono nuovo di questo forum.
Volevo un'informazione.
C'è un modo per creare automaticamente i grafici su excel dipendentemente dal numero di array dati in ingresso?
Grazie a tutti
attendo consigli
----------------------------------------
AUTORE: 301
DATA :08/05/2009 - 15:27:48
----------------------------------------
Ciao,
si, il modo c'è ma se non hai tool per i reports è un po laborioso....
Tu vuoi creare direttamente dei grafici o ti bastano anche delle immagini esportate?
----------------------------------------
AUTORE: 129
DATA :10/05/2009 - 22:54:23
----------------------------------------
potresti usare un template con iul grafico e inserire i dati normalmente in excel.
io uso salvare uno spredsheet file in estensione .txt quindi il modello dove ho creato una importazioone a dati esterni (carica da file di testo)
----------------------------------------
================================================================================
Convertire un numero decimale in un numero intero
================================================================================
AUTORE: 2613
DATA :11/05/2009 - 10:21:00
----------------------------------------
Come posso fare questa operazione?
Ho notato che in numeric c'è l'opzione "to long interger" etc etc, ma ho notato che come ingresso può ricevere solo interi!!
Grazie e perdonate la banalità della mia domanda...
----------------------------------------
AUTORE: 2613
DATA :11/05/2009 - 10:22:53
----------------------------------------
dimenticavo di dirvi che ho labview 7.1
----------------------------------------
AUTORE: 482
DATA :12/05/2009 - 07:51:27
----------------------------------------
[quote="diegosened":2olxj84t]c'è l'opzione "to long interger"...ma ho notato che come ingresso può ricevere solo interi!![/quote:2olxj84t]
Errore!
Il fatto che in ingresso abbia un filo blu, non vuol dire che acetti in ingresso solo interi.
Quello è quello che si dice un VI polimorfico, in base a cosa gli colleghi, cambia colore.
----------------------------------------
================================================================================
sincronizzazione input/output analogici
================================================================================
AUTORE: 1241
DATA :13/05/2009 - 10:03:55
----------------------------------------
Ciao ragazzi,
ho il seguente problema. Ho una scheda DAQ ni PCI6259 e devo acuisire 6 segnali analogici e un liner encoder (per il quale utilizzo un counter). Devo inoltre realizzare una retroazione e quindi ho impostato 2 analog output. Il mio problema è: come sincronizzo le varie operazioni di lettura e scrittura di samples?
Il fatto è che il linear encoder e i 6 canali analogici sono già sincronizzati tra loro come impostazioni di "timing", e ora che ho aggiunto gli output non mi trovo +.
Un'altra cosa, per gli input analogici (ad eccezione del counter quindi) uso l'opzione "multiple channels - multiple samples - 1DWaveform" mentre per gli output uso "multiple channels - single sample - 1D DBL", secondo voi è corretto?
Inoltre devo aggiungere una flat sequence structure per la lettura dei samples e la scrittura sugli output?
Il codice l'ho provato ed è molto lento, soprattutto nel comandare le valvole (cui corrispondono gli output della scheda) e penso che ciò sia dovuto a come è stato realizzato il programma in labview.
Spero di aver spiegato il mio problema e spero possiate aiutarmi, ad ogni modo posso allegare il file .vi
----------------------------------------
AUTORE: 2589
DATA :13/05/2009 - 15:41:14
----------------------------------------
Ciao,
potresti dare un'occhiata agli esempi LabVIEW contenuti nell'Example Finder sotto Hardware Input and Output => DAQmx => Synchronization => Multi-Function.
Spero ti possano essere d'aiuto!
Ciao!
----------------------------------------
================================================================================
Tabella in report HTML
================================================================================
AUTORE: 301
DATA :13/05/2009 - 10:05:10
----------------------------------------
Ciao a tutti,
nessuno di voi mi sa dire un qualche modo per cambiare il tipo di bordo nelle tabelle generate in HTML?
Grazie mille
Aris
----------------------------------------
AUTORE: 947
DATA :13/05/2009 - 12:05:07
----------------------------------------
..
Aprendo i VI contenuti in [u:2rg1e75o][b:2rg1e75o]Report Generation[/b:2rg1e75o][/u:2rg1e75o] ed in particolare i SubVI di [b:2rg1e75o][u:2rg1e75o]Append Text Table to Report[/u:2rg1e75o][/b:2rg1e75o] si vede che la generazione di HTML per le tabelle ha dei parametri fissi come "Width", "Align"=default (centrato), "Border" =1 se con griglia oppure =0 se senza, ... e non ci sono tag di colore delle celle o del bordo.
Se vuoi personalizzare la tabella non ti rimane che modificare questi SubVI e decidere tu come fargli scrivere l'HTML ..
.. quindi il problema diventa conoscere l'HTML .. consulta il web.
Ciao!
----------------------------------------
================================================================================
come isolare alcuni byte di una stringa esadecimale?
================================================================================
AUTORE: 2624
DATA :13/05/2009 - 15:07:43
----------------------------------------
Ciao a tutti! sono nuovo qua del forum ed anche nuovo per lambiente labview.
devo chiedervi come isolare alcuni byte in hex.
vi porgo l'esempio a me dallo slave mi arrivano via seriale una stringa di byte hex del tipo 01 03 00 07 35 D3 17
a me serve solo i due byte 07 e 35 come faccio a portarli fuori convertirli in decimale e poi visualizzare il valore?
----------------------------------------
AUTORE: 947
DATA :13/05/2009 - 16:41:49
----------------------------------------
..
scusami ma non mi è chiara una cosa:
dalla seriale arriva una [u:2m7wddd4]stringa[/u:2m7wddd4] vera e prorpia cioè stampabile su uno String Indicator ("abc") che ha il valore di "01 03 00 07 35 D3 17" ..
.. oppure arriva uno [u:2m7wddd4]stream di interi HEX[/u:2m7wddd4] e quindi un vettore di cui ogni elemento è un [u:2m7wddd4]Int 8 bit [/u:2m7wddd4] e che visualizzi come HEX ..
.. oppure qualche altro formato ??
Ovviamente la procedura è molto diversa da caso a caso ..
..
Ciao
----------------------------------------
AUTORE: 2624
DATA :13/05/2009 - 16:57:13
----------------------------------------
si dalla seriale arriva una stringa vera e propria stampabile su uno string indicator (lo sto facendo) e dentro la stringa c'è l'informazione che mi serve io devo pulirla cioè tirare fuori solo due byte poi convertirlli in dec e collegare tutto ad un visualizzatore
----------------------------------------
AUTORE: 947
DATA :14/05/2009 - 12:34:22
----------------------------------------
..
dunque .. facciamo un po' di ipotesi prima:
1) supponiamo che dalla seriale arrivi un flusso di caratteri ma che sei in grado di isolare i vari pacchetti di dati provenienti dalla seriale
2) supp. che ogni pacchetto o cmq la stringa a te utile sia sempre costituita da 7 elem di 2 caratteri ciascuno e separati da spazio..
3) .. e che ogni coppia sia da interprtetare come un numero Hex ( in pratica ' %2x ' dello [i:3m3iigp8]scanf[/i:3m3iigp8] del C/C++)
4) supp. che gli unici dati utili siano sempre in posizione 4 e 5 rispetto alla stringa di 7 coppie
Allora:
[attachment=0:3m3iigp8]Hex.JPG[/attachment:3m3iigp8]
1) usa [u:3m3iigp8]Scan from String[/u:3m3iigp8] sotto le funzioni String
2) usa la stringa "%2x %2x %2x %2x %2x %2x %2x " per la formattazione
3) a questo punto hai già convertito le 7 coppie di caratteri in numeri Interi
4) poi sfrutta la possibilità dei Controlli/Indicatori Numeric quando posti a I8 e U8 di viasualizzare il numero in vari formati (d=Dec, B=bin, x=Hex, ...) che puoi modificare visualizzando il [u:3m3iigp8]Radix[/u:3m3iigp8] del Controllo/Indicatore
Spero che ti sia utile .. sempre che le ipotesi fatte siano rispondenti alle tue esigenze ..
Ciao!
----------------------------------------
AUTORE: 947
DATA :14/05/2009 - 12:56:36
----------------------------------------
..
Ri-Posto le immagini che quelle facevano skifo !!
Block Diagram
[attachment=1:2l67ybca]Hex BD.JPG[/attachment:2l67ybca]
e Front Pannel
[attachment=0:2l67ybca]Hex FP.JPG[/attachment:2l67ybca]
Ciao!!
----------------------------------------
AUTORE: 2624
DATA :14/05/2009 - 14:47:21
----------------------------------------
grazie per l'interessamento!
credo che così va bene però nella mia stringa in hex non ho gli spazi in mezzo e allora come devo formattare?
----------------------------------------
AUTORE: 724
DATA :14/05/2009 - 16:27:38
----------------------------------------
E' tutto più pulito se usi la String To Byte Array
----------------------------------------
AUTORE: 947
DATA :14/05/2009 - 16:40:49
----------------------------------------
..
2) usa la stringa "%2x%2x%2x%2x%2x%2x%2x" per la formattazione
..
Senza gli spazi !!
Bye
----------------------------------------
AUTORE: 2624
DATA :15/05/2009 - 10:21:22
----------------------------------------
Grazie luca!
funziona tutto lalla perfezione sto leggendo la tensione dal mio dispositivo implementato su rs 485 e protocollo modbus
----------------------------------------
AUTORE: 947
DATA :18/05/2009 - 12:26:34
----------------------------------------
..
[quote:fxcxr0v6]
Grazie luca!
funziona tutto lalla perfezione sto leggendo la tensione dal mio dispositivo implementato su rs 485 e protocollo modbus
[/quote:fxcxr0v6]
OTTIMO !!
Sono contento di esserti stato utile ..
quando ti serve aiuto .. sai dove chiedere..
Bye!
----------------------------------------
================================================================================
Cardiofrequenzimetro Labview
================================================================================
AUTORE: 2626
DATA :13/05/2009 - 17:44:31
----------------------------------------
SAlve a tutti!
Come tesina per un esame dovrei creare un vi che lavori come un cardiofrequenzimetro. Tutta l'apparecchiatura è pronta, e ho impostato a grandi linee un vi che acquisisce (da uno scatolozzo che all'interno contiene un fotodiodo in cui inserisco il dito, collegato alla scheda national ) il segnale e lo grafica. Sul front pannel do la possibilità all'utilizzatore di scegliere la durata dell'acquisizione. Il mio problema è , dopo aver acquisito i dati, farmi restituire da lab view il numero di picchi (corrispondenti ai battiti cardiaci) presenti sul grafico.
Potreste aiutarmi?
Grazie
----------------------------------------
AUTORE: 1050
DATA :14/05/2009 - 09:07:55
----------------------------------------
Ti vonsiglio di dare uno sguardo alla Waveform Peak Detector.vi ([url:sosiffhk]http://zone.ni.com/reference/en-XX/help/lv/71/lvwave/Waveform_Peak_Detection/[/url:sosiffhk]) e di fare una ricerca su "labview ECG peak detection" : anche se il tuo caso è diverso ci sono comunque molti consigli sui forum, p.es. [url:sosiffhk]http://forums.lavag.org/ECG-Recording-and-analysis-vi-t10580.html&p=44121[/url:sosiffhk] oppure [url:sosiffhk]http://forums.lavag.org/Peak-Detection-t8499.html[/url:sosiffhk])
ciao
----------------------------------------
AUTORE: 947
DATA :14/05/2009 - 12:57:31
----------------------------------------
..
Se vuoi un consiglio non LV ma più ingegneristico ..
.. direi che forse ti è più utile ripulire il segnale di picchi inutili e rumori vari e cioè:
usa i VI della [u:2tmu6mkb]FFT[/u:2tmu6mkb] per passare al [i:2tmu6mkb]dominio della frequenza[/i:2tmu6mkb] e filtra il segnale dalle frequenze troppo alte (rumori) o troppo basse (picchi che hanno altri contenuti informativi a te non utili), isomma usa un [u:2tmu6mkb]filtro passa banda sintonizzato sulla frequenza cardio tipica[/u:2tmu6mkb] ..
.. suppongo che così un qualunque algoritmo di [i:2tmu6mkb]Peak Detection[/i:2tmu6mkb] funzioni decisamente meglio !!
Se poi riesci addirittura ad isolare una sola armonica del segnale a forza di filtri sintonizzati .. in pratica una sinusoide .. non hai nanche bisogno di Peak Detection !! .. Magari !! ..
Ciao!!
----------------------------------------
AUTORE: 1165
DATA :16/05/2009 - 10:23:08
----------------------------------------
Luca, una decina di anni fa avevo fatto proprio questa applicazione (iniziata mi sembra con la versione 2 di Labview e finita con la 4) e mi ero messo a punto un mio algoritmo semplice e molto efficace, che ha funzionato benissimo per anni e per molte centinaia di ore di aquisizione (alta sensibilità e specificità di riconoscimento ed elevata accuratezza di determinazione della posizione temporale del picco R del QRS). In realtà tutta l'applicazione faceva molto di più, ma tu ti puoi limitare ad usare i primi blocchi. Avevo a quel tempo raccolto tutto in un .llb che posso inviarti in toto, ma è più di un MB e comunque è in versione 3 o 4 e quindi non più apribile da me, dovresti trovare qualcuno con qualche vecchia versione di LV (mi sembra che la 5 o la 6 ce la dovrebbero fare ad aprire la 3 e la 4, chiedi nel forum). Non so se posso anche postarla qui, la condividerei volentieri se anche altri fossero interessati, ma un MB temo che mi esaurirebbe tutto lo spazio. Se vuoi possiamo anche parlarne a voce con skype, fammi sapere tu. Ciao, Enrico.
----------------------------------------
AUTORE: 947
DATA :18/05/2009 - 12:28:34
----------------------------------------
..
La cosa sembra veramente interessante ..
.. ma in realtà nn serviva a me (Luca) ma a [u:8ug1r0tl]valepisa88[/u:8ug1r0tl] ..
Ad ogni modo io ho il LV7 e LV7.1 .. non posso aiutarvi mi sa
Ciao!!
----------------------------------------
AUTORE: 1165
DATA :18/05/2009 - 12:45:20
----------------------------------------
Scusate per l'errore di destinatario .. naturalmente quanto detto vale anche per valepisa ..
----------------------------------------
================================================================================
Associare alcuni range ad altri valori
================================================================================
AUTORE: 2613
DATA :14/05/2009 - 11:51:15
----------------------------------------
Salve ho un piccolo problema che mi sta dando molti grattacapi...penso che per voi sarà semplice in quanto sto proprio agli inizi.
Sto progettando il driver di un multimetro che come valori di uscita oltre alla misura mi deve dare l'incertezza.
Il mio problema sta nel calcolo dell'incertezza di tipo B per la tensione AC(devo considerare solo il campo 1 anno).
http://f.imagehost.org/0843/range2.jpg
Nell'immagine vi sono le caratteristiche di precisione.. il mio obiettivo è associare ad una determinata frequenza e a una determinata tensione un particolare range.
Per esempio se ho 0.2 volt e 19.000 hz devo avere in uscita 0.06+0.04.
Ho provato a ragionare un po', ma mi sono bloccato.. inoltre non so se il mio metodo è abbastanza efficiente... mi affido ai vostri consigli.
Allora per quanto riguarda la tensione la scelta è semplice...basta che faccio un paragone con 0.1V avendo in uscita un booleano(per esempio true se il valore della tensione è minore di 0.1 v)... poi questa uscita l'ho collegata ad una struttura case(di tipo true, false)!
http://f.imagehost.org/0093/range.jpg
Il problema sta nella scelta della frequenza... nel mio caso ho usato ben 12 comparison le cui uscite sono collegate a 6 porte and... in questo modo la porta che ha come uscita il valore true corrisponde al determinato range di frequenza.
Ora il mio problema sta: come faccio ad associare l'uscita true ad un determinato range di frequenza? cioè come faccio a dire che quel valore di frequenza si trova nell'intervallo 1,2....6?
Perchè se vi riuscissi il discorso sarebbe molto facile... basterebbe creare una struttura case(di tipo 1 2 3 4 5 6) dentro la struttura case (di tipo true false) di cui vi ho parlato prima e avere poi in uscita le varie costanti associate ai vari range(tipo 0.06+0.04)....
Grazie per l'aiuto
----------------------------------------
================================================================================
Aprire file .rar
================================================================================
AUTORE: 2288
DATA :15/05/2009 - 16:43:30
----------------------------------------
Ciao,
qualcuno sa se cè un modo per aprire file .rar invece che file .zip con labview?
grazie
mir
----------------------------------------
AUTORE: 927
DATA :18/05/2009 - 10:43:14
----------------------------------------
Non c'è, ma se hai winRAR installato nel pc di destinazione puoi farlo chiamare da Labview con il blocco System Exec. WinRAR può essere eseguito dalla linea di comando con dei parametri che trovi nella sua documentazione, ad esempio [code:o2lyk3gk]winrar a nomearchivio nomefile[/code:o2lyk3gk] aggiunge un file ad un archivio
----------------------------------------
================================================================================
creazione array?
================================================================================
AUTORE: 2624
DATA :18/05/2009 - 10:22:35
----------------------------------------
ho il seguente problema: genero una stringa (hex) ad esempio 8EA con il potenziometro dial. a questo punto 08 ed EA devono andare a prendere il posto 8 e 9 di un vettore 1D, gli altri 7 termini del vettore sono costanti hex.
per fare ciò io converto la stringa hex con "String To Byte Array" poi entro in "Index Array" mettendo come indice 0 e 1 da qui vado al blocchetto "Build Array" sui fili 8 e 9 mentre gli altri 7 sono costanti hex.
non capisco dove sbaglio ma non mi restituisce il giusto valore hex.
mando il VI in allaegato.
----------------------------------------
AUTORE: 2550
DATA :25/05/2009 - 12:51:33
----------------------------------------
Ciao. Il tuo problema è con il blocchetto "string to byte array", ottieni in uscita il corrispondente ASCII della stringa in ingresso. Ecco la soluzione utilizzando il blocchetto "type cast" che ti converte l'ingresso secondo il tipo indicato all'ingresso type, in questo caso il tuo vettore esadecimale.
ciao
DVD
----------------------------------------
AUTORE: 43
DATA :25/05/2009 - 14:30:11
----------------------------------------
[quote="dvd14986":5ka5ta6z]Ciao. Il tuo problema è con il blocchetto "string to byte array", ottieni in uscita il corrispondente ASCII della stringa in ingresso. Ecco la soluzione utilizzando il blocchetto "type cast" che ti converte l'ingresso secondo il tipo indicato all'ingresso type, in questo caso il tuo vettore esadecimale.
ciao
DVD[/quote:5ka5ta6z]
Cose strane... non 6 l'unico che si confonde quando si parla di "stringhe... esadecimali!".
Molti confondono il tipo di dato o la rappresentazione in memoria del dato stesso con il "formato di visualizzazione".
Una stringa o un array di byte in memoria, sono molto simili perchè si tratta di una "sequenza [contigua] di byte".
Quando questa seq. la scriviamo per es. in formato testuale, su carta, o in un post di un forum o la visualizziamo in un FP di LabVIEW, ne decidiamo il formato di visualizzazione: in ascii se i caratteri sono visibili perchè è il modo + compatto, in esacedimale se ci sono caratteri non visibili.
In LabVIEW, sia per il tipo stringa che per il tipo byte, sono possibili + modalità di visualizzazione. Per i tipi numerici interi è possibile utilizzare anche il formato ottale e binario...
Tornando al VI che hai postato, sembra quasi che colui che ha scritto il calcolo del CRC non sia lo stesso che ha scritto il resto del codice, xchè sicuramente avrebbe utilizzato la funzione "split number" come appunto fa nel calcolo del CRC.
[attachment=0:5ka5ta6z]stringaEsadecimale.vi[/attachment:5ka5ta6z]
Cmq non si capisce l'uso del while per ripetere esattamente 8 volte il ciclo..(vedi for in giallo)
bye
P.S.: per me una 'stringa esadecimale' è una stringa di caratteri compresi fra "0"-"9" e "A"-"F" o "a"-"f" che può essere convertita in una stringa lunga la metà...
----------------------------------------
AUTORE: 2624
DATA :27/05/2009 - 12:36:37
----------------------------------------
Ciao parracarro, hai detto giusto! la parte di calcolo del CRC l'ho presa in rete e buttata li sapendo che funzionava bene.
Io il problema l'ho risolto così e adesso funziona correttamente.
Ciao e grazie della risposta!
----------------------------------------
AUTORE: 43
DATA :27/05/2009 - 13:27:53
----------------------------------------
[quote="bimbone":19cdnymw]Ciao parracarro, hai detto giusto! la parte di calcolo del CRC l'ho presa in rete e buttata li sapendo che funzionava bene.
Io il problema l'ho risolto così e adesso funziona correttamente.
Ciao e grazie della risposta![/quote:19cdnymw]
Grazie a Te!
Quello che volevo scongiurare era proprio quello che hai scelto come soluzione finale.
Meglio sarebbe stato il "type cast" di "Untitled 3" nella risposta precedente oppure il mio "split number" che ti ho messo ben in evidenza nell'esempio che ho postato.
Passare attraverso una conversione a stringa esadecimale non serve a una mazza di niente. Anzi non se ne comprende il motivo.
Non a caso nel percorrere una strada possono esistere delle 'scorciatoie' ma non delle 'allungatoie'.
Non perchè non esistono percorsi + lunghi, ma semplicemente xchè non hanno senso.
bye
----------------------------------------
================================================================================
Aggiungere Tick a voce menu
================================================================================
AUTORE: 1427
DATA :18/05/2009 - 22:57:44
----------------------------------------
ciao a tutti!
dopo molto tempo torno su questi lidi a cercare un appoggio ed un consiglio... Mi sono interstardito nel voler risolvermi un problemino con una soluzione che pero' non so come fare:
Sto' usando i menu' a tendina personalizzati, avendo aggiunto alcune voci che mi servono per abilitare alcune opzioni.
Pero' non riesco a capire come fare per aggiungere il segno di selezione quando un menu' e' abilitato e poi ovviamente toglierlo se viene disabilitato.
Ogni consiglio e' piu' che ben accetto! grazie per l'attenzione!
----------------------------------------
AUTORE: 645
DATA :19/05/2009 - 08:24:34
----------------------------------------
Cosa intendi esattamente per "menù a tendina personalizzati"?
Io ho in mente che nelle tabelle c'è la possibilità di lavorare con i Property Node aggiungendo il Symbol (e scegliendolo)... In pratica all'evento Click del mouse si può agganciare la comparsa o la scomparsa di un simbolo vicino alla voce cliccata per avere il segno di Check.
----------------------------------------
AUTORE: 1427
DATA :19/05/2009 - 18:42:42
----------------------------------------
Hai ragione, mi sono veramente spiegato da bestia... uso l'ora tarda come scusa, via
Io intendevo i menu dell'applicazione (open, save close etc etc) che ho modificato inserendo delle voci che dovevo gestire creando il file .rtm all'interno del project.
Tutto funziona bene, solo che io vorrei quando viene attivata un'opzione mettere il tick della selezione (ad esempio quello che trovi comunemente sotto la voce Window (o finestra) che segnala che stai usando il full size.
A dire il vero ho visto che nel file rtm quando creo una voce del menu' posso assegnargli la proprietà "checked" che mette appunto il segnale che vorrei, solo che cosi' lo mette in modo statico, mentre io desidererei appunto gestirlo a mio piacimento.
grazie per l'attenzione!!!
----------------------------------------
AUTORE: 278
DATA :19/05/2009 - 22:31:59
----------------------------------------
[quote:wyv40q5n]A dire il vero ho visto che nel file rtm quando creo una voce del menu' posso assegnargli la proprietà "checked" che mette appunto il segnale che vorrei, solo che cosi' lo mette in modo statico, mentre io desidererei appunto gestirlo a mio piacimento.
grazie per l'attenzione!!![/quote:wyv40q5n]
la strada e` quella, ci sei vicino.
La possibilita` di far apparire la proprieta` "checked" puo` essere abilitata/disabilitata in runtime, quello che devi fare e` aprire la function palette e seguire il percorso Dialogs & User Interface->Menu. Per prima cosa recupera il riferimento del menu` in corso "Current Vi`s Menu Bar", con il vi "Get Menu Selection" capisci quale oggetto del menu` e` stato selezionato e con il vi "Set Menu Item Info" scegli se abilitare o disabilitare la proprieta` "checked".
Ovviamente puoi fare anche un sacco di altre cose con questi vi... buon divertimento
----------------------------------------
AUTORE: 278
DATA :19/05/2009 - 22:52:19
----------------------------------------
aggiungo...
Il tema mi interessa molto, ad essere sincero non amo l`interfaccia grafica dei software "tipici" dell`ambiente LV, pieni di bottoni, lucine ed interrutori.
Gli strumenti per migliorare quest`aspetto della programmazione non mancano, i menu` sono un`esempio. Apri l`Example Finder e cerca alla voce "Building User Interfaces", ci sono molti vi.... "sfiziosi"
Buon lavoro
----------------------------------------
AUTORE: 1427
DATA :19/05/2009 - 23:13:18
----------------------------------------
[quote="esodar1981":m4r02s4q][quote:m4r02s4q]
La possibilita` di far apparire la proprieta` "checked" puo` essere abilitata/disabilitata in runtime, quello che devi fare e` aprire la function palette e seguire il percorso Dialogs & User Interface->Menu. Per prima cosa recupera il riferimento del menu` in corso "Current Vi`s Menu Bar", con il vi "Get Menu Selection" capisci quale oggetto del menu` e` stato selezionato e con il vi "Set Menu Item Info" scegli se abilitare o disabilitare la proprieta` "checked":[/quote:m4r02s4q][/quote:m4r02s4q]
cavoli... grazie mille!
----------------------------------------
AUTORE: 645
DATA :20/05/2009 - 17:00:52
----------------------------------------
Ehi!! Non mi sono mai avventurato in questi argomenti e non se conoscevo l'esistenza... ehm, potevo dirlo senza fare brutta figura?
...
Mi sa che ci smanetterò su un po'!
----------------------------------------
AUTORE: 278
DATA :21/05/2009 - 17:16:41
----------------------------------------
aggiornamento..
si possono gestire i menu ed i tag relativi direttamente nella event structure, basta scegliere l'evento "Menù selection" dalla sorgente <This Vi>... comodissimo!!!
----------------------------------------
================================================================================
Tempi di attesa
================================================================================
AUTORE: 2627
DATA :19/05/2009 - 08:57:08
----------------------------------------
Sto cercando di comunicare tramite porta parallela con dei motorini passo-passo, fino qui nessun problema particolare però per il mio progetto servono tempi i più veloci possibili, per ora per gestire l'invio dei singoli impulsi lo faccio usando dei cicli che come base dei tempi usano la funzione WAIT, ma gestisce fino ad 1 millisecondo, a me servono possibilmente i microsecondi o anche di più....
----------------------------------------
AUTORE: 1165
DATA :19/05/2009 - 22:04:43
----------------------------------------
Ti do una risposta generale e non completamente competente, per cui vedrai che probabilmente si scateneranno una sfilza di correzioni e rettifiche a quanto ti dirò. Quindi prendi tutto con molto beneficio di inventario. Comunque in prima istanza ti osservo che temporizzare qualsiasi task con dei "Wait" è secondo me assolutamente da evitare, eventualmente fai uso dei "Wait Until next" (guardati bene la differenza fra i due). Comunque i Wait Until arrivano ad una risoluzione di un millisecondo e questa soglia verso il basso non la supererai mai con i personal computer equipaggiati con i tradizionali sistemi operativi (windows, Linux, MacOs, etc). A mio avviso, per scendere sotto al millisecondo di risoluzione temporale devi per forza far ricorso a Hardware dedicato, come PLC, MicroControllori, FPGA o altre eventuali Logihe Programmabili. Anche la National Instruments credo che metta a disposizione delle linee di prodotti in tal senso, ma in questo io sono fuori dal mercato, per cui chiedi ad altri più esperti di me. Ti posso solo fare un'ultima osservazione: se più pragmaticamente pensi di usare un microcontrollore, visto che i clock sono dell'ordine anche di molti MHz e visto che molte operazioni sono eseguibili con pochi cicli macchina, puoi almeno concettualmente avere risoluzioni temporali sotto il microsecondo, ma perdi ovviamente la programmabilità in Labview, che per ora era il linguaggio che stavi usando. Potresti strutturare un sistema composto da un microcontrollore che esegue le operazioni veloci (forza bruta) che a sua volta si interfaccia con un pc programmato in Labview che mette la strategia del controllo (intelligenza). Nel tuo caso si tratterebbe in pratica di dividere la strategia di controllo dei motorini in una parte redente in un microControllore (o altra logica programmabile) e una parte residente in un pc. Ad altri rettifiche e precisazioni eventuali. E' finita la finestra di testo, mi fermo qui, ciao.
----------------------------------------
AUTORE: 278
DATA :19/05/2009 - 22:12:33
----------------------------------------
[quote:1rv6fkwl]..ma gestisce fino ad 1 millisecondo, a me servono possibilmente i microsecondi o anche di più....[/quote:1rv6fkwl]
con la porta parallela (e credo in generale, con hardware non real-time) non puoi gestire temporizzazioni inferiori al millisecondo.. gia` 1ms non e`garantito in windows.
L`unica soluzione che mi viene in mente e` dotarsi di hardware apposito, tipo le scheda [url=http://sine.ni.com/nips/cds/view/p/lang/it/nid/10496:1rv6fkwl]NI 733x[/url:1rv6fkwl]
----------------------------------------
AUTORE: 1165
DATA :19/05/2009 - 23:29:05
----------------------------------------
Ehilà Dario, ben rivisto! E grazie per il tuo suggerimento, potrebbe essere forse utile anche a me. Esiste comunque altro hardware NI real time capace di scendere ai microsecondi e programmabile in LV e possibilmente anche a basso costo?
Ciao a presto, spero.
----------------------------------------
AUTORE: 278
DATA :20/05/2009 - 07:38:41
----------------------------------------
[quote:3p1zh7zp]Ehilà Dario, ben rivisto![/quote:3p1zh7zp]
sai, l'erba cattiva è dura a morire
[quote:3p1zh7zp]Esiste comunque altro hardware NI real time capace di scendere ai microsecondi e programmabile in LV[/quote:3p1zh7zp]
credo che l'offerta oggi giorno sia talmente vasta che la scelta dell'hw da utlizzare dipenda solo da motivi di budget... eccoti alcuni sugerimenti:
[url=http://www.pmccorp.com/products/products.php:3p1zh7zp]PRC[/url:3p1zh7zp]
[url=http://www.adlinktech.com/:3p1zh7zp]ADLINK[/url:3p1zh7zp]
Ciao
----------------------------------------
================================================================================
Colori Scale Grafico XY
================================================================================
AUTORE: 2550
DATA :19/05/2009 - 14:41:51
----------------------------------------
Ciao a tutti!!!!
ho di nuovo bisogno di un vostro aiuto...
ho creato un grafico XY con una sola variabile sull'asse X e con 8 diverse variabili sull'asse Y. ho quindi duplicato le scale su quest'ultimo e ho assegnato ad ognuna di loro una variabile.
quello che dovrei fare adesso è adeguare il colore della scala quando l'utente modifica il colore del rispettivo plot. ho controllato tra i property node del grafico, ma mi permette unicamente di impostare le proprietà della prima scala e non delle altre. stesso discorso vale per la lettura dei colori dei plot.
esiste un modo alternativo per farlo?
utilizzo LV8.6
grazie a tutti fin da ora per le vostre risposte.
ciao
DVD
----------------------------------------
AUTORE: 1050
DATA :20/05/2009 - 10:12:55
----------------------------------------
Ciao,
devi sempre specificare la "scale" che è attiva in quel momento prima di modificarne le proprietà come si fa per i plot.
Quindi, per esempio, prima imposta con un propertyNOde ActiveYScale = 1 a poi con YScale:MarkerColors cambi i colori dei mrker della scala.
ti allego l'esempio
ciao
----------------------------------------
AUTORE: 2550
DATA :20/05/2009 - 10:48:59
----------------------------------------
Ciao, grazie per l'aiuto.
Sono riuscito nel mio intento.
Ora il problema è un'altro: se provo ad esportare l'immagine del grafico con "Export Semplified Image", le scale vengo visualizzate tutte con il colore nero.
C'è qualche opzione da attivare? Io ho guardato tra le proprietà del grafico, ma non ho trovato niente di pertinente con questo problema...
garzie
ciao
DVD
----------------------------------------
AUTORE: 1050
DATA :20/05/2009 - 13:17:18
----------------------------------------
Prova "Invoke Method:Get Image" + "Write to BMP File"
ciao
----------------------------------------
AUTORE: 2550
DATA :20/05/2009 - 17:30:59
----------------------------------------
Ciao, grazie per la dritta. Era proprio quello il modo.
Scusa se approfitto della tua gentilezza, ma mi è sorto un ultimo dubbio. C'è un modo per spostare la Scale Label e raddrizzarla?
La mia idea era quella di posizionare la label sopra la scala e non al fianco come è di deafult. C'è un modo per farlo?
Io un'alternativa l'ho trovata, ma sarebbe comodo se si potesse usare quella.
grazie ancora
ciao
DVD
----------------------------------------
AUTORE: 1050
DATA :21/05/2009 - 11:59:30
----------------------------------------
La proprietà ci sarebbe (YScale.NameLbl.Vertical Arrangement) ma sembra funzionare solo in lettura.
Io ho il 8.6.0, magari è un bug oppure una semplice limitazione.
Devi usare un "trucco".
ciao
----------------------------------------
AUTORE: 2550
DATA :25/05/2009 - 08:11:59
----------------------------------------
Ciao, ho provato anche con la 8.5. Il problema è lo stesso. Dal messaggio di erroee penso sia soltanto una limitazione. Comunque ho risolto in altro modo.
Grazie per l'aiuto.
ciao
DVD
----------------------------------------
================================================================================
Protocollo din 66019/2
================================================================================
AUTORE: 1168
DATA :20/05/2009 - 11:04:23
----------------------------------------
Buongiorno a tutti. Qualcuno ha sviluppato dei blocchetti che si smazzano la comunicazione seriale (RS232) tramite questo protocollo?
Non sono riuscito a trovare nulla sul web... Nel caso mi smazzerò la parte di protocollo che mi serve e poi pubblicherò qui i miei blocchetti...
Ciao
Pietro
P.S. La questione mi serve perchè devo chiaccherare con un inverter KEB F5.
----------------------------------------
================================================================================
cartella exercises non presente
================================================================================
AUTORE: 2629
DATA :20/05/2009 - 13:27:46
----------------------------------------
salve , io sono praticamente gli inizi , sto imparando a utilizzare labview per il tirocinio , il prof ci ha dato un tutorial da seguire , xò esso si basa sulla versione 6.0 e avendo io la 8.5 , praticamente manca la cartella c:\exercises\LV Basics I con tutti gli esempi degli esercizi ... qualcuno può aiutarmi?? grazie.
----------------------------------------
AUTORE: 482
DATA :21/05/2009 - 07:44:39
----------------------------------------
Non è una questione di versione di Labview.
Quella cartella è una cartella che viene creata con dei dischetti che sono di solito allegati alle dispense del corso Basic I.
Non fanno parte del pacchetto labVIEW originale.
DOvrai far notare al prof che si è dimenticato di passarvi gli esempi e gli esercizi.
A meno che non si tratti di una versione didattica di labview e allora sei tu che non hai la versioen giusta e dovrai chiedere ai tuoi compagni
----------------------------------------
AUTORE: 2629
DATA :21/05/2009 - 09:14:06
----------------------------------------
grazie per la risposta ...
ma questo materiale non lo si può trovare online giusto?magari sul sito della ni o altrove hmm
grazie ancora
----------------------------------------
AUTORE: 2629
DATA :21/05/2009 - 09:26:10
----------------------------------------
[quote="hMfL":t1fr6g0g]grazie per la risposta ...
ma questo materiale non lo si può trovare online giusto?magari sul sito della ni o altrove hmm
grazie ancora
[/quote:t1fr6g0g]
mi autoquoto xkè nn c è il tasto per la modifica , volevo dire che è una cartella abbastanza standard xkè anche su altri tutorial viene menzionata quindi per questo pensavo facesse parte del pacchetto di labview
----------------------------------------
================================================================================
lancio dadi
================================================================================
AUTORE: 2629
DATA :22/05/2009 - 17:51:55
----------------------------------------
salve , sono alle prime armi e mi trovo in difficoltà su questo esercizio :
Costruite un VI che simuli il tiro dei dadi con i possibili valori 1-6
e registri il numero di volte che i dadi producono un numero.
L’ingresso è il numero di volte che si tirano i dadi e l’uscita
comprende il numero di volte che [b:3vo5efvk]i dadi escono su un possibile
valore[/b:3vo5efvk] . Utilizzate solo un registro a scorrimento.
la parte evidenziata l'ho intesa come somma dei 2 numeri ke escono dai 2 dadi , se questa somma è uguale o no a un numero definito in precedenza , cmq non è questo il problema , ma lo è il registro a scorrimento , in pratica mi sn fermato qua :
[img:3vo5efvk]http://i42.tinypic.com/2zoi72b.jpg[/img:3vo5efvk]
grazie in anticipo per l'aiuto
----------------------------------------
AUTORE: 1165
DATA :22/05/2009 - 21:56:55
----------------------------------------
Dunque .. mi riservo di analizzare con maggior pazienza il testo di questo esercizio, apparentemente non chiaro, e anche la tua parziale interpretazione. Solamente osservo immediatamente che il modo che tu hai usato per generare 6 numeri uniformemente distribuiti fra 1 e 6 non mi convince. In primo luogo va bene moltiplicare per 6 il valore ottenuto con il lancio del dado, ma poi non puoi usare il convertitore a I32, perchè in questa maniera tu ottieni i numeri tra 1 e 5 con la probabilità di un sesto e i muneri 0 e 6 con la probabilità di un dodicesimo. Quello che avresti dovuto fare è di arrotondare per difetto ogni singola realizzazione del dado (mentre il convertitore I32 arrotonda al più prossimo intero) e poi se proprio vuoi essere pignolo aggiungere 1 al valore torvato. Così ottieni i sei numeri tra 1 e 6 con egual probabilità di un sesto. Ora provo a leggere meglio il testo e se ci capisco qualcosa ti riscrivo. Enrico.
N.B.: la costante 6 che moltiplica la realizzazione del dado deve essere in DBL precision, come il valore di uscita del dado; altrimenti scomodi il "coerce" del compilatore (quel puntino rosso all'ingresso inferiore del nodo moltiplicatore) che, oltre ad essere "computing consuming", è proprio brutto stilisticamente!!
----------------------------------------
AUTORE: 1165
DATA :22/05/2009 - 22:23:36
----------------------------------------
Aridunque, immaginando che l'estensore dell'esercizio avesse voluto intendere il seguente testo modificato:
"Costruite un VI che simuli il tiro dei dadi con i possibili valori 1-6 e registri il numero di volte che i dadi producono un DETERMINATO numero. L’ingresso è il numero di volte che si tirano i dadi e l’uscita comprende il numero di volte che i dadi escono su un possibile valore . Utilizzate solo un registro a scorrimento".
Se si accetta questa ipotesi allora, andando avanti sempre per assunti, possiamo immaginare che il VI richiesto debba avere due ingressi. Uno che gli dica quante volte deve essere tirato il dado e uno che gli indichi su quale dei sei numeri deve contare il numero delle effettive realizzazioni che lo indovinano. La frase "l'uscita comprende" fa pensare che si chieda che vi sia più di una uscita e la sola cosa che mi viene in mente è che si debba riportare in uscita il numero delle reallizzazioni effettuate (ovviamente pari al numero di quelle richieste in ingresso), oltre al numero delle volte che è stato indovinato il numero specificato in ingresso. Da notare che per la legge dei grandi numeri il rapporto fra queste due uscite dovrà tendere a 1/6 al crescere delle realizzazioni stesse. Forse era proprio questo lo scopo dell'inventore dell'esercizio, ma purtroppo oramami la nostra ex bella lingua italiana è stata talmente bistrattata ed ignorata che non esiste più una condivisa tendenza alla chiarezza espressiva, solo approssimazione e trascuratezza, purtroppo!!
Ovviamente se a qualcuno viene in mente una interpretazione meno macchinosa la suggerisca, io ho la "esecrabilissima" tendenza alla complicazione. Enrico.
----------------------------------------
AUTORE: 2629
DATA :23/05/2009 - 09:38:37
----------------------------------------
[quote="enr":13msxcq8]Dunque .. mi riservo di analizzare con maggior pazienza il testo di questo esercizio, apparentemente non chiaro, e anche la tua parziale interpretazione. Solamente osservo immediatamente che il modo che tu hai usato per generare 6 numeri uniformemente distribuiti fra 1 e 6 non mi convince. In primo luogo va bene moltiplicare per 6 il valore ottenuto con il lancio del dado, ma poi non puoi usare il convertitore a I32, perchè in questa maniera tu ottieni i numeri tra 1 e 5 con la probabilità di un sesto e i muneri 0 e 6 con la probabilità di un dodicesimo. Quello che avresti dovuto fare è di arrotondare per difetto ogni singola realizzazione del dado (mentre il convertitore I32 arrotonda al più prossimo intero) e poi se proprio vuoi essere pignolo aggiungere 1 al valore torvato. Così ottieni i sei numeri tra 1 e 6 con egual probabilità di un sesto. Ora provo a leggere meglio il testo e se ci capisco qualcosa ti riscrivo. Enrico.
N.B.: la costante 6 che moltiplica la realizzazione del dado deve essere in DBL precision, come il valore di uscita del dado; altrimenti scomodi il "coerce" del compilatore (quel puntino rosso all'ingresso inferiore del nodo moltiplicatore) che, oltre ad essere "computing consuming", è proprio brutto stilisticamente!![/quote:13msxcq8]
grazie 1000 per la risposta ... ho notato subito che come ho fatto io i numeri che potevano uscire erano compresi tra 0 e 6 , 0 incluso ,il che già nn andava bene ... la funzione "arrotonda per difetto" non la trovo in labview , al max ho trovato la funzione round ma sembra avere lo stesso identico effetto dell i32 , in quanto mi sn fatto un programmino x verificarlo e uscivano sempre gli stessi identici arrotondamenti , cioè all intero + vicino ...
cmq il fatto dei numeri generati che devono essere compresi tra 0 e 6 l ho risolto in questo modo :
ho moltiplicato l uscita del dado per 5 in modo da fare venire numeri compresi tra 0 e 5 e poi ho incrementato di uno cosi da avere numeri tra 1 e 6 , xkè se avessi moltiplicato per 6 l uscita del dado e poi incrementato di 1 avrei avuto numeri compresi tra 1 e 7 ma 7 nn può uscire dal lancio di un singolo dado ... spero di aver fatto bene ... grazie ancora , ciao
----------------------------------------
AUTORE: 2629
DATA :23/05/2009 - 09:52:12
----------------------------------------
pensandoci bene xò resta sempre il fatto della probabilità diversa ... cioè 0 e 5 vengono generati con una probabilità dimezzata rispetto agli altri numeri mmm
----------------------------------------
AUTORE: 2629
DATA :23/05/2009 - 10:15:15
----------------------------------------
allora , credo di aver risolto quel problema della probabilità , inserendo in pratica l arrotondamento come avevi detto tu ( poi l ho trovato ) ... xò ho inserito arrotondamento per eccesso ... spero di aver fatto bene , questa è un pezzetto di un altro esercizio che stavo facendo ...
[img:399j5jx2]http://i44.tinypic.com/2w7g2mf.jpg[/img:399j5jx2]
mi scuso per aver messo messaggi consecutivi xò nn c è la funziona edit nel forum
grazie
----------------------------------------
AUTORE: 1124
DATA :23/05/2009 - 12:36:15
----------------------------------------
Ciao
prova a vedere il vi allegato.
----------------------------------------
AUTORE: 2629
DATA :24/05/2009 - 11:46:31
----------------------------------------
[quote="stefanog":2ruvk08y]Ciao
prova a vedere il vi allegato.[/quote:2ruvk08y]
grazie tante
----------------------------------------
AUTORE: 1165
DATA :24/05/2009 - 18:06:26
----------------------------------------
Così a prima vista mi sembra che il VI di stefanog, benchè concettualmente più complesso nella generazione del numero, sia sempre affetto dagli errori di bordo della tua soluzione iniziale. Inoltre io intenderei il testo del tuo esercizio come una richiesta di conteggio su un particolare numero assegnato, fra i sei possibili. E quindi andrebbe letto in ingresso la specifica del numero su cui effettuare il conteggio e poi contare le effettive realizzazioni solo su quello.
Se ci si riflette bene, mi sembra ovvio che la costante moltiplicativa debba necessariamente essere 6 e non 5, anche se il VI precedente genera tutti e sei i numeri, che avranno però differenti probabilità, come si evince subito facendo girare il VI con un numero di cicli FOR elevato (io ho scelto 1000).
Mi congratulo con te hMfL per l'idea dell'arrotondamento per eccesso, risolve elegantemente il problema ed evita di dover aggiungere +1; ha solo un "piccolissimo" difetto: i dadi generano un numero uniformamente distribuito fra 0 compreso e 1escluso e se per caso il dado viene 0 ottieni di generare anche questo valore (ma statisticamente, benchè non escludibile, il valore della sua probabilità è nullo, col che però non significa che non potrebbe succedere!!).
Per il resto, il conteggio di stefanog, limitato ad un solo numero specificato in ingresso, funziona più che bene e io gli sono grato di avermi esemplificato una alternativa al "Case" che io avevo sempre usato in questi casi per contare gli eventi.
Ciao, enr.
----------------------------------------
AUTORE: 2629
DATA :24/05/2009 - 18:40:21
----------------------------------------
[quote="enr":15z53c0u]Così a prima vista mi sembra che il VI di stefanog, benchè concettualmente più complesso nella generazione del numero, sia sempre affetto dagli errori di bordo della tua soluzione iniziale. Inoltre io intenderei il testo del tuo esercizio come una richiesta di conteggio su un particolare numero assegnato, fra i sei possibili. E quindi andrebbe letto in ingresso la specifica del numero su cui effettuare il conteggio e poi contare le effettive realizzazioni solo su quello. [/quote:15z53c0u]
si infatti mi sono accorto che il vi di stefano tiene conto di tutti i 6 numeri , nn solo di uno da me scelto ... ma credo di riuscire a modificarlo per un sl numero e quindi cn un solo shift register ^^
cmq grazie veramente di cuore ragazzi
siete stati molto gentili
----------------------------------------
AUTORE: 43
DATA :25/05/2009 - 13:51:39
----------------------------------------
[quote="hMfL":3668c3vy]
si infatti mi sono accorto che il vi di stefano tiene conto di tutti i 6 numeri , nn solo di uno da me scelto ... ma credo di riuscire a modificarlo per un sl numero e quindi cn un solo shift register ^^
cmq grazie veramente di cuore ragazzi
siete stati molto gentili
[/quote:3668c3vy]
Perchè tenere un solo numero , quando con un solo shift register si può tenere in memoria un array?
[attachment=0:3668c3vy]2Dadi.vi[/attachment:3668c3vy]
Esegui il VI ciclicamente con molti lanci (100000 per es. il default) ed osserva la distribuzione dei lanci singoli e della somma dei 2 dadi.
6 in grado di raccogliere tutte le combinazioni "diverse" di lanci (sono 21: 1-1, 1-2, 1-3, 1-4, 1-5, 1-6, 2-2, 2-3, 2-4, 2-5, 2-6, 3-3, 3-4, 3-5, 3-6, 4-4, 4-5, 4-6, 5-5, 5-6, 6-6)
bye
PS: non sta scritto da nessuna parte che i dadi sono 2...
----------------------------------------
AUTORE: 1165
DATA :25/05/2009 - 14:43:07
----------------------------------------
Paracarro, se ho ben capito lo spirito della domanda iniziale, qui non si tratterebbe di mettere a punto un VI al meglio delle sue possibilità (nel qual caso avresti perfettamente ragione a suggerire un unico shift register per tutti i valori aggregati in un array o altro, senza dimenticarsi ASSOLUTAMENTE di inizializzare lo shift-register stesso!), ma mi sembra che la preoccupazione di hMfL sia stata piuttosto di cercare di decriptare un testo di un esercizio, assegnato da qualcuno che ha litigato con l'italiano. Quindi, sempre che io abbia interpretato bene anche la domanda di hMfL, oltre al testo, bisognerebbe dare la soluzione che aveva in testa chi ha formulato l'esercizio. O mi sbaglio?
N.B. ovviamente hai perfettamente ragione sul numero dei dadi che, non essendo ASSOLUTAMENTE specificato da nessuna parte, andrebbe immaginato unico.
----------------------------------------
================================================================================
Aiuto! non riesco a leggere un csv e quindi inserirli nel DB
================================================================================
AUTORE: 2632
DATA :23/05/2009 - 18:57:39
----------------------------------------
Allora ragazzi sto svolgendo un progetto per l 'universita' ....ho un problema che mi sta facendo perdere troppo tempo...
Ovvero non riesco a leggere un file .csv con trenta colonne e n righe, lo SCAN FROM STRING mi da' errore e non so come trattarlo.
Sicuramente sbaglio il format string ora vi posto il mio vi(badate soltanto allo scan from string il resto funzionava tutto con file di testo aventi /t come delimitatore) e il file di testo da leggere!
Grazie
Alex
----------------------------------------
AUTORE: 2632
DATA :25/05/2009 - 10:52:42
----------------------------------------
Ragazzi ma il format string di quel tipo di file con 30 colonne di numeri con la virgola non è questo?????
%f,%f,%f,%f,%f,%f,%f,.......%f,%f,%f,%f,%f,%f ------->per trenta volte....
----------------------------------------
AUTORE: 43
DATA :25/05/2009 - 11:41:04
----------------------------------------
[quote="Alexcivic":1n3gwlok]Ragazzi ma il format string di quel tipo di file con 30 colonne di numeri con la virgola non è questo?????
%f,%f,%f,%f,%f,%f,%f,.......%f,%f,%f,%f,%f,%f ------->per trenta volte....[/quote:1n3gwlok]
Mi rendo conto che tutti abbiamo poco tempo e che non vorremmo mai perderlo nel fare cose stupide o che non ci piacciono, ma...
BASTA!!!!!!!
esempio in LabVIEW 7.1
[attachment=0:1n3gwlok]carica file csv.zip[/attachment:1n3gwlok]
La risposta è nel titolo del post
Abbi almeno la decenza di ammettere che è estremamente stupido estrarre 30 valori numerici in quel modo...
Ma non Ti viene naturale almeno usare un ciclo for???
bye
----------------------------------------
AUTORE: 2632
DATA :25/05/2009 - 14:09:20
----------------------------------------
Grazie!!
Certo che mi viene naturale un ciclo for ma essendo la prima volta che vedo questo Labview sono partito da esempi ,modificandoli in base alle esigenze e purtroppo non conosco tutti gli strumenti che mette a disposizione questo prog.
E poi ho visto che c'è poco materiale riguardo l'interazione con i database.....
----------------------------------------
AUTORE: 2632
DATA :25/05/2009 - 15:53:19
----------------------------------------
Ti ringrazio ma non sono riuscito a sistemare il mio file....ci vorrebbe un while per le righe(poiche' sono variabili) e un for per le colonne dato che il numero è fisso a 30.........
----------------------------------------
AUTORE: 43
DATA :25/05/2009 - 16:19:24
----------------------------------------
[quote="Alexcivic":13ul9627]Ti ringrazio ma non sono riuscito a sistemare il mio file....ci vorrebbe un while per le righe(poiche' sono variabili) e un for per le colonne dato che il numero è fisso a 30.........[/quote:13ul9627]
nell'esempio che ti ho postato viene letto il file tutto d'un fiato e da questo (una stringa) viene automaticamente estratto la matrice di numeri in floating point,
utilizzando la "Spreadsheet String To Array"
Nel diagramma Ti ho fatto notare un particolare molto dibattuto in questo forum cioè l'uso della virgola "," e del punto"." come separatori.
Il Tuo file CSV è un file "comma delimited", cioè il separatore delle colonne è la virgola ",", mentre i numeri hanno la parte intera separata dalla parte decimale con il punto".".
Ora se LabVIEW è configurato per usare come separatore numerico (parte intera da parte decimale), quello che è configurato nel S.O. (presumo sia Winzozz in Italiano), è possibile che ci siano problemi nella conversione dei numeri in quanto la virgola è contemporaneamente considerata separatore delle colonne e anche separatore fra parte intera e parte decimale di ogni numero.
La soluzione sta nel fare in modo che LabVIEW usi sempre il punto "." come separatore numerico a prescindere dalla config. del S.O. . Chiaro?
Quindi da menu (FP o Diagram non fa differenza...) scegli
- Tools --> Options... E Ti appare il menu delle Opzioni di LabVIEW.
- Scegli in alto (LV7.1) o a dx (LV8.x) la voce "Front Panel"
- de-seleziona/disabilita/togli il check dalla voce "use localized decimal point *"
- chiudi il pannello delle Options confermando la modifica con OK
- ESCI DA LABVIEW e RI-ENTRA
- Esegui nuovamente il VI che Ti ho postato
Se Ti sconfinfera seleziona con un rettangolo dalla lettura del file fino alla uscita della matrice numerica ed importalo nel Tuo VI
Se ci sono altri problemi leggi altri esempi nel forum e poi ri- posta quello che non va.
bye
----------------------------------------
AUTORE: 2632
DATA :25/05/2009 - 18:15:29
----------------------------------------
Grazie mille...davvero gentilissimo.....faro' sapere come va....inserisco anche il while e il loop con criterio...per un inserimento piu' logico
----------------------------------------
AUTORE: 2632
DATA :25/05/2009 - 19:44:00
----------------------------------------
qualcosa ho risolto e logicamente mi sembra corretto ma non mi spiego perche' mi scrive tutte le righe nel DB ma solo la prima avente i valori , le altre sono tutti spazi vuoti .
Mah....vi posto il nuovo Vi cosi' potete vedere se c è un errore stupido !
Grazie
----------------------------------------
AUTORE: 43
DATA :26/05/2009 - 10:06:43
----------------------------------------
[quote="Alexcivic":2u05g664]qualcosa ho risolto e logicamente mi sembra corretto ma non mi spiego perche' mi scrive tutte le righe nel DB ma solo la prima avente i valori , le altre sono tutti spazi vuoti .
Mah....vi posto il nuovo Vi cosi' potete vedere se c è un errore stupido !
Grazie[/quote:2u05g664]
leggi i commenti nel VI[attachment=0:2u05g664]prova2.vi[/attachment:2u05g664]bye
P.S.: non capisco xchè chi chiede aiuto in questo Forum è così omertoso da non dire non solo cosa vuole realizzare, ma nemmeno che versione di LabVIEW usa...
----------------------------------------
AUTORE: 2632
DATA :26/05/2009 - 11:07:54
----------------------------------------
Cmq la mia versione è la 8.6....ora rifaccio un po' di prove per memorizzare questi benedetti file nel DB!!!
thanks
----------------------------------------
================================================================================
Reset to empty array
================================================================================
AUTORE: 2516
DATA :25/05/2009 - 21:45:46
----------------------------------------
Salve a tutti, ho un piccolo problemi con un array che uso con il VI setpoint-pid-profile del pacchetto labviewpidtoolkit..
In effetti quando avvio il mio programma ho la necessità che il mi oarray sia vuoto, ovvero non ci siano valori e non attivo visivamente.
Quando uso il software ho la necessità di fermarlo effettuare delle operazioni e impostare l'array ad empty, manualmente lo faccio con il tasto destro sull'index vorrei fare la stessa cosa attraverso i property-node ma non riesco a trovare nulla che fa al mio caso..
Sapreste aiutarmi??
grazie mille anticipatamente..
----------------------------------------
AUTORE: 482
DATA :26/05/2009 - 09:37:53
----------------------------------------
Perchè non gli colleghi un array vuoto sotto forma di costante?
Dal terminale del subvi, col tasto destro gli fai creare una costante, poi sempre col tasto destro gli dici "empty array" e poi quetso array vuoto lo dai in pasto al tuo controllo.
----------------------------------------
================================================================================
rs232-atmega
================================================================================
AUTORE: 2635
DATA :26/05/2009 - 11:19:03
----------------------------------------
salve...dovrei interfacciare il microcontrollore via labview per poter generare un'onda sinusoidale...come potrei fare????
----------------------------------------
AUTORE: 43
DATA :26/05/2009 - 11:35:00
----------------------------------------
[quote="sagio":f7acmbt6]salve...dovrei interfacciare[b:f7acmbt6] il [/b:f7acmbt6]microcontrollore via labview per poter generare un'onda sinusoidale...come potrei fare????
[/quote:f7acmbt6]
Qualche dato in +?
Quale microcontrollore?
Quale versione di LabVIEW? su quale HW deve girare LabVIEW (microcontrollore, PC, PXI altro...)?
Quale oggetto deve generare la forma d'onda?
Entro quali range il segnale deve essere generato (freq. e tensione min e max)?
e poi
quanti anni hai?
è un esercizio didattico, un lavoro o è per diletto che devi usare LabVIEW?
Conosci già LabVIEW?
bye
----------------------------------------
AUTORE: 2635
DATA :26/05/2009 - 11:46:27
----------------------------------------
si tratta dell atmega8535. la versione di lab è la 8.2. in pratica devo creare un file di interfaccia su labview tramite il quale interfacciarci al microcontrollore che deve alimentare un circuito.tramite labview devo poter variare la tensione, la frequenza,ampiezza ecc..
----------------------------------------
AUTORE: 43
DATA :26/05/2009 - 13:37:24
----------------------------------------
[quote="sagio":fh6hylq1]si tratta dell atmega8535. la versione di lab è la 8.2. in pratica devo creare un file di interfaccia su labview tramite il quale interfacciarci al microcontrollore che deve alimentare un circuito.tramite labview devo poter variare la tensione, la frequenza,ampiezza ecc..[/quote:fh6hylq1]
Ho cercato con Google ed ho trovato una specie di DataSheet pdf che descrive le caratteristiche dell' atmega8535 (L).
Si tratta di un micro con 8 kb di flash programmabile per cui, visto quello che deve fare, sicuramente si deve implementare l'invio di comandi (Master) via seriale che verranno, probabilmente analizzati dal FW(Slave) scritto da qualcuno negli 8kbytes programmabili.
Quindi, se confermi questa ipotesi, colui che ha sviluppato il FW deve dirci qual'è il protocollo di comunicazione seriale implementato "lato FW" in base al quale implementare quello "lato SW".
Quanto meno devi produrre della documentazione in merito e postarla.
Qui puoi essere aiutato per lo sviluppo del SW LabVIEW, non per lo sviluppo del FW dell'atmega...
bye
----------------------------------------
AUTORE: 1168
DATA :26/05/2009 - 16:04:48
----------------------------------------
[quote="paracarro":3b9bc900]colui che ha sviluppato il FW deve dirci qual'è il protocollo di comunicazione seriale implementato "lato FW" in base al quale implementare quello "lato SW".[/quote:3b9bc900]
Sempre che la parte firmware sia sviluppata...
altrimenti io consiglierei di avere sul uC un programmino che va all'avvio vada a leggersi i valori di ampiezza, frequenza, ecc sulla flash, e poi parta col loop di generazione della sinusoide.
Quando si ricevono dati sulla UART (interrupt) si leggono dal buffer, si validano, si memorizzano nella flash nelle stessa posizione di quelli letti in precedenza e si resetta il uC.
E così via.
Però è tutto da scrivere...... la parte labview è praticamente banale, ma bisogna decidere, se ad esempio di invia un parametro per volta, o tutto il pacchetto stile A2.63F456, dove A2.63 sta a significare un'ampiezza di 2.63 V e F456 una frequnza di 456 Hz.
8535... quanti ricordi ormai di assembler non ricordo più nulla...
----------------------------------------
AUTORE: 43
DATA :26/05/2009 - 16:09:35
----------------------------------------
[quote="Pio":2nrab54o]8535... quanti ricordi ormai di assembler non ricordo più nulla...
[/quote:2nrab54o]
Fantastico Pio ! Visto il background, gestisci Tu questo problema!!!!
bye
----------------------------------------
AUTORE: 2635
DATA :28/05/2009 - 09:54:51
----------------------------------------
Quindi per quanto riguarda labview faccio un programmino che mi permette di settare i valori del segnale da inviare al microcontrollore..ok..poi vedo come farli acquisire al micro che me li deve mandare in input ad un altro dispositivo di cui voglio fare la caratterizzazione...e poi sempre tramite labview devo poter acquisire questi valori per tracciare dei grafici...si può fare??????
----------------------------------------
AUTORE: 1168
DATA :28/05/2009 - 10:17:50
----------------------------------------
Se impacchetti tutto in una stringa contenente tutti i parametri, la parte Labview direi che è abbastanza facile... guarda l'allegato che ho buttato giù grossolanamente.
Labview non ssi apetta nessuna risposta dall'AVR. nel caso devi inserire un loop dove indicato (prima di chiudere la seriale) e poi fare i check del caso.
Non capisco:[quote="sagio":34giwmds]poi vedo come farli acquisire al micro che me li deve mandare in input ad un altro dispositivo di cui voglio fare la caratterizzazion[/quote:34giwmds]. Pensavo dovessi buttare fuori una sinusoide usando un qualche DAC converter pilotato dall'ATmega.
[quote="sagio":34giwmds]e poi sempre tramite labview devo poter acquisire questi valori per tracciare dei grafici...si può fare??????
[/quote:34giwmds]
Certo che si può fare... ma che hardware hai a disposizione? Lo stesso ATmega?
Com echiedeva Paracarro è un progetto scolastico? Chi sviluppa la parte uC? Devi chiarirti un po' le idee... e stendere prima tutta l'architettura hardware. Poi pensi al software Labview!
----------------------------------------
AUTORE: 2635
DATA :28/05/2009 - 15:22:14
----------------------------------------
non è un progetto scolastico...sto solo cercando di provare a mettere insieme labview e il microcontrollore per poter fare la caratterizzazione di un dispositivo..
mi sono un pò fissata su sta cosa!!
le idee chiare non ce le ho..ovviamente!!però ho capito che sto forum è fantastico!!
----------------------------------------
AUTORE: 2579
DATA :08/07/2009 - 14:55:45
----------------------------------------
Ciao a tutti quanti.
Sagio, ti consiglierei di dare un occhiata a questo link, che contiene un ottimo esempio di comunicazine seriale su un Atmel Avr unito ad un ottimo metodo per generare una sinusoide. Tra l'altro l'ho gia provato e funziona.
'Pio' un po di asm me lo ricordo io
----------------------------------------
AUTORE: 2579
DATA :08/07/2009 - 14:57:17
----------------------------------------
...ops....
hxxp://xyz.myplace.nu/avr/minidds/index.htm
----------------------------------------
================================================================================
Controllo selezione porta COM
================================================================================
AUTORE: 2523
DATA :27/05/2009 - 09:36:25
----------------------------------------
Ciao a tutti.
Ho realizzato un sistema embbeded che comunica con il PC tramite una USB CDC. In particolare
questa USB viene vista da Windows non come una normale porta USB, ma come una COM.
Detto questo, vorrei realizzare con LabView un controllo sulla selezione delle porta da parte
dell'utente. In particolare vorrei che LabView mi generasse un messaggio di errore nel caso l'utente selezionasse
una porta COM alla quale non è collegato il mio sistema.
Avete qualche idea di come fare.
Grazie a tutti in anticipo.
Ciao,
Chobin
----------------------------------------
AUTORE: 43
DATA :27/05/2009 - 11:33:14
----------------------------------------
[quote="chobin":1plmp35u]Ciao a tutti.
Ho realizzato un sistema embbeded che comunica con il PC tramite una USB CDC. In particolare
questa USB viene vista da Windows non come una normale porta USB, ma come una COM.
Detto questo, vorrei realizzare con LabView un controllo sulla selezione delle porta da parte
dell'utente. In particolare vorrei che LabView mi generasse un messaggio di errore nel caso l'utente selezionasse
una porta COM alla quale non è collegato il mio sistema.
Avete qualche idea di come fare.
Grazie a tutti in anticipo.
Ciao,
Chobin[/quote:1plmp35u]
Guarda se Ti piace...
[attachment=0:1plmp35u]SerialPortSelection.vi[/attachment:1plmp35u]
Avete Tutti il brutto vizio di non specificare la versione di LabVIEW che utilizzate xciò vale LabVIEW7.1
Come da esempio, è essenziale chiudere le porte aperte altrimenti passano gli spifferi!!! Cioè le risorse vengono allocate e non liberate x altri processi...
bye
----------------------------------------
================================================================================
webcam USB e labview
================================================================================
AUTORE: 2641
DATA :28/05/2009 - 09:02:07
----------------------------------------
Salve!!
Premetto che ho cercato molto, sia sul web che su questo forum, e ho trovato vari modi di risolvere la cosa, ma ho avuto diversi problemi...(un metodo utilizza activex container, ma i QCSDK che ho trovato non mi installano la libreria Vportal; una altro metodo, con IVision, quando parte mi da un errore di registrazione; utilizzando invece il Vision Express di IMAQ non riesco a vedere la webcam tra le source possibili da selezionare )
LA webcam è della logitech, una e2500, e a me serve poter acquisire immagini e video tramite labview, per poterle elaborare.
Per favore potete indicarmi come fare e dove reperire VI e dll necessari?
----------------------------------------
AUTORE: 645
DATA :28/05/2009 - 12:47:54
----------------------------------------
Cosa sono i QCSDK? Si tratta di software per la configurazione della webcam?
Purtroppo non so darti una risposta ma anche io sto cercando informazioni su questo argomento...
----------------------------------------
AUTORE: 2641
DATA :28/05/2009 - 13:36:45
----------------------------------------
i QCSDK sono i QuickCam Software Developer Kit, forniti dalla logitech alcuni anni fa ormai, da quel che ho trovato su internet, per facilitare l'utilizzo della Webcam in ambienti di sviluppo software, tipo il Visual Basic o il linguaggio C.
Sono riuscito a scaricarli e ho installato il pacchetto, poi ho provato a usare i Labview Logitech UWA, fatti proprio per le webcam logitech, ma ho dei problemi...
help!
----------------------------------------
AUTORE: 278
DATA :28/05/2009 - 16:52:16
----------------------------------------
Ciao,
lascia perdere i QCSDK, ti consiglio invece di scaricare [url=http://zone.ni.com/devzone/cda/epd/p/id/5030:djbmmjnm]NI-IMAQ for USB[/url:djbmmjnm], trovi un'esempio pratico [url=http://decibel.ni.com/content/docs/DOC-3929:djbmmjnm]qui[/url:djbmmjnm].
Ovviamente, do' per scontato che la webcam in uso sia usb....
Facci sapere...
----------------------------------------
AUTORE: 278
DATA :28/05/2009 - 16:54:07
----------------------------------------
P.S.
Lascia perdere il commento "Ovviamente, dò per scontato..." sono un pò cotto e non ho "afferrato" il titolo del post...
----------------------------------------
================================================================================
PROBLEMA VISA READ TIMEOUT EXPIRED
================================================================================
AUTORE: 2642
DATA :28/05/2009 - 09:06:04
----------------------------------------
Salve a tutti, è gia da un pò che trvo soluzioni ai miei problemi qui sul forum. Ma ora ne devo porre uno che mi sta facendo impazzire da 1 settimana. Sto preparando la tesi e mi sono bloccato nella comunicazione con un dispositivo. Questo dispositivo è collegato via usb, gli devo mandare un semplice messaggio esadecimale formato da 9 byte (la sequenza sarebbe: c1,c2,00,01,02,00,02,d1,d2) e lui dovrebbe rispondere con una parolina da 11 byte. Il problema sorge nel fatto che appena mando la stringa l'errore che si presenta sul blocco VISA READ è il solito problema di TIMEOUT (Timeout expired before operation completed.)
Ho già provato alcune soluzioni riportate sul forum tipo quella di mettere un stacked sequence structure con all'interno il blocco di wait, ma anche questa soluzione trascorso il tempo impostato sul wait mi restituisce il medesimo errore.
allego anche il VI così chi mi vuole dare un aiuto vede anche quello che ho fatto.
grazie gia in anticipo per la collaborazione!
----------------------------------------
AUTORE: 2642
DATA :28/05/2009 - 09:55:13
----------------------------------------
Aggiungo anche che mettendo il "VISA Bytes at Serial Port " vedo che la quantità di byte inviati è pari a zero!
----------------------------------------
AUTORE: 43
DATA :28/05/2009 - 10:39:08
----------------------------------------
[quote="Acco84":2rq1imtw]Salve a tutti, è gia da un pò che trvo soluzioni ai miei problemi qui sul forum. Ma ora ne devo porre uno che mi sta facendo impazzire da 1 settimana. Sto preparando la tesi e mi sono bloccato nella comunicazione con un dispositivo. Questo dispositivo è collegato via usb, gli devo mandare un semplice messaggio [b:2rq1imtw]esadecimale[/b:2rq1imtw] formato da 9 byte (la sequenza sarebbe: c1,c2,00,01,02,00,02,d1,d2)[/quote:2rq1imtw]CAXXO!!! ANCORA!! L'HO APPENA SCRITTO IN UN ALTRO POST."devo mandare un semplice messaggio di 9 byte" PUNTO. COSA C'ENTRA L'ESADECIMALE? [quote="Acco84":2rq1imtw] e lui dovrebbe rispondere con una [b:2rq1imtw]parolina[/b:2rq1imtw] da 11 byte.[/quote:2rq1imtw]Attenzione che per "parola" spesso si intende una "word" (2 byte)[quote="Acco84":2rq1imtw] Il problema sorge nel fatto che appena mando la stringa l'errore che si presenta sul blocco VISA READ è il solito problema di TIMEOUT (Timeout expired before operation completed.)[/quote:2rq1imtw]Sei consapevole di avere impostato un timeout in lettura di 2 millisecondi?[quote="Acco84":2rq1imtw]
Ho già provato alcune soluzioni riportate sul forum tipo quella di mettere un stacked sequence structure con all'interno il blocco di wait, ma anche questa soluzione trascorso il tempo impostato sul wait mi restituisce il medesimo errore.
allego anche il VI così chi mi vuole dare un aiuto vede anche quello che ho fatto.
grazie gia in anticipo per la collaborazione![/quote:2rq1imtw]
prova questo
[attachment=0:2rq1imtw]Prova comunicazione seriale Acco84.vi[/attachment:2rq1imtw]
bye
----------------------------------------
AUTORE: 2642
DATA :28/05/2009 - 11:09:45
----------------------------------------
Ringrazio per la celere risposta, per i consigli scritti nel post (la risposta che dovrebbe darmi la scheda ho erroneamente scritto parolina, quello che effettivamente restituisce è una serie di byte) e per la correzzione del VI. Però continuo a vedere che i byte inviati sono zero quindi in uscita vedo sempre il buffer vuoto.
non riesco proprio a capire come mai non risponde il circuito!
----------------------------------------
AUTORE: 43
DATA :28/05/2009 - 11:39:56
----------------------------------------
[quote="Acco84":2hx9xgwn]Ringrazio per la celere risposta, per i consigli scritti nel post (la risposta che dovrebbe darmi la scheda ho erroneamente scritto parolina, quello che effettivamente restituisce è una serie di byte) e per la correzzione del VI. Però continuo a vedere che i byte inviati sono zero quindi in uscita vedo sempre il buffer vuoto.
non riesco proprio a capire come mai non risponde il circuito![/quote:2hx9xgwn]
1) verifica connessione HW /cablaggio.
parli di una connessione USB ma configuri dettagliatamente una porta seriale
se esiste un connettore Db9 o Db25 dall'altra parte del cavo USB,puoi verificare che il collegamento funzione collegando fra loro 2 PC ed utilizzando Hyperterminal di window
2)verifica connessione SW / parametri config
verifica i parametri di configurazione impostati con quelli del manuale verifica che non di debba utilizzare XON/XOFF o abilitare segnali tipo CTS/RTS per poter trasmettere e ricevere...
Se ci sono indicazioni nel Cluster error riportali qui nel forum
bye
----------------------------------------
AUTORE: 2642
DATA :28/05/2009 - 11:44:08
----------------------------------------
sono andato a verificare con l'oscilloscopio e il dato arriva, ma inspiegabilmente sul pin dove dovrei vedere (e leggere) la risposta non c'è niente. non è un errore di hardware perchè con un programma di test realizzato con un altro linguaggio funziona.
ora davvero ho finito le possibili cause del non funzionamento!
----------------------------------------
AUTORE: 645
DATA :28/05/2009 - 12:58:32
----------------------------------------
Ciao, scrivo senza aver aperto prima il VI allegato ma mi pare di capire che tu comunichi con uno strumento collegato tramite USB e convertitore RS-232. Cioè, tu hai uno strumento su porta seriale collegato ad una porta USB del pc tramite convertitore seriale-USB. Quindi tu configuri una porta COM creata dal convertitore dopo averlo collegato al pc (per leggere l'indirizzo della COM puoi guardare nel Pannello di Controllo di Windows).
Giusto? Nel tuo VI hai inserito un blocco di inizializzazione della seriale, un blocco di scrittura e uno di lettura (eventualmente all'interno di un ciclo) e un blocco finale di chiusura comunicazione?
Dalle discussioni precedenti mi pare di capire che hai modificato i valori di timeout e che i comandi che invii sono scritti secondo le regole dello strumento (secondo il suo protocollo di comunicazione); perciò i problemi non dovrebbero dipendere da queste cose. Domanda: hai controllato il carattere di terminazione impostato nel blocco i configurazione della porta seriale? Hai settato il carattere richiesto nel protocollo di comunicazione della periferica?
----------------------------------------
AUTORE: 2642
DATA :28/05/2009 - 13:37:34
----------------------------------------
hai controllato il carattere di terminazione impostato nel blocco i configurazione della porta seriale? Hai settato il carattere richiesto nel protocollo di comunicazione della periferica?
nel blocco della configurazione della seriale ho settato "baud rate", "parity", "data bits", "stop bits". ora dovrò fare delle prove appunto sul carattere di terminazione... spero che dipenda tutto da quello perchè dopo si che non so più dove andare a cercare risposte!
----------------------------------------
AUTORE: 43
DATA :28/05/2009 - 14:57:28
----------------------------------------
[quote="Acco84":m4nfsfae]sono andato a verificare con l'oscilloscopio e il dato arriva, ma inspiegabilmente sul pin dove dovrei vedere (e leggere) la risposta non c'è niente. non è un errore di hardware perchè con un programma di test realizzato con un altro linguaggio funziona.
ora davvero ho finito le possibili cause del non funzionamento![/quote:m4nfsfae]
Fantastico! quindi il messaggio parte!
Beh!si potrebbe verificare se il messaggio inviato dal " programma di test realizzato con un altro linguaggio che funziona".
Basta usare un altro PC installare quel SW e collegarlo a quello che stai usando. Lo stesso VI, lo lasci girare cosicchè dovresti ricevere il messaggio che in realtà dovresti mandare.. oppure, devi "sniffare" per bene lo scambio di messaggi con lo strumento.
[quote="Acco84":m4nfsfae]hai controllato il carattere di terminazione impostato nel blocco i configurazione della porta seriale? Hai settato il carattere richiesto nel protocollo di comunicazione della periferica?
nel blocco della configurazione della seriale ho settato "baud rate", "parity", "data bits", "stop bits". ora dovrò fare delle prove appunto sul carattere di terminazione... spero che dipenda tutto da quello perchè dopo si che non so più dove andare a cercare risposte![/quote:m4nfsfae]
Non so come funziona per i cavetti "USB 2 Serial" ma oltre ai parametri citati, c'è da considerare anche il "controllo di flusso" (CTS/RTS , DTR/DSR oltre a quello SW XON/XOFF) oppure esistono dei byte da mettere in cima o in coda al msg (tipo STX, ETX oppure SOH, EOT).
Magari manca quelche altro byte tipo chksum...
Meglio sniffare per essere sicuri...
bye
----------------------------------------
AUTORE: 2642
DATA :28/05/2009 - 16:20:30
----------------------------------------
la sequenza di byte da inviare è (come ho scritto nel primo post) C1 C2 00 01 02 00 02 D1 D3
come carattere di terminazione ho messo D3 ma non ho ancora segni di vita per quanto riguarda il controllo del flow (del blocco di configurazione della seriale) non ho impostato nulla perchè da neofita che sono leggendo l'help non sembra che mi serva.
----------------------------------------
AUTORE: 2642
DATA :28/05/2009 - 16:44:15
----------------------------------------
ho fatto varie prove variando il "flow control" ma il risultato è che ho l'invio del dato solo quando "flow control" vale "0 None (default)" oppure "1 XON/XOFF" in tutte le altre configurazioni non ho nemmeno l'invio del dato.
----------------------------------------
AUTORE: 43
DATA :28/05/2009 - 17:29:02
----------------------------------------
Sono ripetitivo, ma non posso fare di +
La soluzione è dentro di Te... ma è quella sbagliata.
l'deale sarebbe sniffare con il VI che Ti ho confezionato ilpacchetto che invia il SW che funziona.
Se non sei sicuro della cfg della seriale, prova a cambiare la parità o il numero di data bits, o i bit di stop o il baud rate.
Magari l'azzecchi.
Dato che usi un'oscilloscopio vedi se riesci a confrontare le 2 forme d'onda che vengono trasmesse (da LabVIEW e dal "prog. che funziona") e gioca alle differenze...
Penso di aver esaurito tutte le possibilità, dato che da programma LabVIEW non si può fare molto altro di +, quindi Ti devo abbandonare
bye
----------------------------------------
AUTORE: 1050
DATA :29/05/2009 - 08:30:35
----------------------------------------
Se non ho capito male HW ok perchè c'è un'altra applicazione che funziona.
Come hanno ribadito tutti devi cercare nella configurazione e nella stringa inviata l'errore.
- Prova ad usare Measurement&Explorer, seleziona dal menu tool\NI488.2\NI Spy e attiva (tasto verde) la modalità di capture: questo ti permette di analizzare nel dettaglio cosa stai inviando.
- Manda una sola write e read(1 solo ciclio di quel loop che hai nel programma)
- Guardando il tuo vi (il setup della seriale) stai inviando il LF come carattere di terminazione: se non te lo hanno già detto, proverei a mandare invece un CR (\
)
ciao
----------------------------------------
AUTORE: 645
DATA :03/06/2009 - 08:25:53
----------------------------------------
Quindi stai usando un convertitore USB-Seriale? Se sì prova ad indicarci qual è ed eventualmente il sito di riferimento.
----------------------------------------
AUTORE: 2642
DATA :03/06/2009 - 09:51:10
----------------------------------------
Dato che avevo sbattutto la testa da ogni parte senza trovare soluzione mi hanno dirottato su un progetto in cui utilizzo lo stessa scheda, ma mi connetto al dispositivo via bluetooth. Inviando il dato esattamente nella stessa maniera in cui lo mandavo via usb la scheda risponde in maniera corretta, non so bene quale possa essere il motivo per cui via USB non mi dia segni di vita comunque sta di fatto che via bluetooth funziona e via USB no. Un ragazzo sempre del laboratorio aveva un problema simile al mio e sembra cha abbia risolto aspettando qualche micro-secondo subito dopo l'apertura della porta. Finito il progetto bluetooth dovrò riprendere in mano anche quello USB e farò anche io quella prova.
RINGRAZIO VIVAMENTE TUTTI QUELLI CHE SI SONO DIMOSTRATI DISPONIBILI A RISOLVERMI I DUBBI E NON SOLO
prossimamente su questi schermi ci rivedremo grazie ancora
----------------------------------------
AUTORE: 2642
DATA :08/06/2009 - 10:40:27
----------------------------------------
Mi hanno detto che dovrei settare "DTR" e "RTS" a zero. Come posso fare dato che ho solo le 6 opportunità che mi offre LABVIEW? (Per capirci: 0 None (default), 1 XON/XOFF, 2 RTS/CTS, 3 XON/XOFF and RTS/CTS, 4 DTR/DSR, 5 XON/XOFF and DTR/DSR) posso nel caso scriverci DTR=0 e RTS=0?
----------------------------------------
AUTORE: 1050
DATA :08/06/2009 - 12:31:20
----------------------------------------
guarda questo esempio: [url]C:\Program Files\National Instruments\LabVIEW 8.6\examples\instr\smplserl.llb\Troubleshooting Serial Line Monitor.vi[/url]
----------------------------------------
AUTORE: 43
DATA :15/06/2009 - 17:20:50
----------------------------------------
[quote="Acco84":173fucfj]Mi hanno detto che dovrei settare "DTR" e "RTS" a zero. Come posso fare dato che ho solo le 6 opportunità che mi offre LABVIEW? (Per capirci: 0 None (default), 1 XON/XOFF, 2 RTS/CTS, 3 XON/XOFF and RTS/CTS, 4 DTR/DSR, 5 XON/XOFF and DTR/DSR) posso nel caso scriverci DTR=0 e RTS=0?[/quote:173fucfj]
Approccio SW.
il parametro in questione è in realtà una maschera di bit. Seguendo la logica espressa dai tipi enumerati in questione si ricava che:
[code:173fucfj]Valore Bit significato
1 - 0 XON/XOFF
2 - 1 RTS/CTS
4 - 2 DTR/DSR[/code:173fucfj]Quindi se voglio utilizzare come controllo di flusso sia RTS/CTS che DTR/DSR devo impostare il valore 6 che deve essere di tipo U16 o I16.
In alternativa alla costante puramente numerica, volendo usare a tutti i costi la costante "enumerata" procedere come segue:
tasto dx del mouse sulla proprietà "flow-cntrl" quindi [Create] --> [Constant].
Sulla costante creata tasto dx del mouse [Visible Items] --> [Digital Display] --> appare il valore numerico accanto alla costante enumerata.
Forzare nella costante numerica apparsa il valore 6 -> si otterà un codice mnemonico = "<6>".
Collegate la costante alla proprietà "flow-cntrl"
Approccio HW
Supponendo di dover utilizzare un cavo con alle estremità 2 connettori a vaschetta D-sub 9 pin. si può procedere in questo modo.
Utilizzate un cavo tri-polare e collegate ai 2 connettori il pin 2 (Rx) con il 3(Tx) dell'altro connettore, mentre il il pin 3 (Tx) si collega al 2(Rx) del secondo.
I pin 5 GND dei 2 connettori deve essere collegato fra loro con l'ultimo filo a disposizione.
A questo punto sul connettore lato dispositivo, ma può essere replicato anche su quello lato PC, cavallottare il pin 4 (DTR) con il 6 (DSR) del medesimo connettore ovviamente ed il pin 7 (RTS) con l'8 (CTS).
fine
bye
----------------------------------------
================================================================================
Creazione time table???
================================================================================
AUTORE: 2624
DATA :28/05/2009 - 16:17:20
----------------------------------------
Ciao ragazzi!
per la mia applicazione devo creare una time table, ovvero secondo l'orologio del PC il mio VI deve fare certe operazioni restituendo un valore booleano e questo true/false viene eseguito nella fascia oraria impostando ore e minuti di inizio e fine operazione.
Io ho pensato di mettere un Current Time convertirlo in string e poi con Scan From String tirare fuori le ore e minuti in formato numerico e confrontarli con con i valori impostati.
che ne dite? mi sembra un po' macchinoso ma no mi viene in mente un altra strada, magari c'è gia qualche blocchetto che non conosco che fa al caso mio
----------------------------------------
AUTORE: 43
DATA :28/05/2009 - 17:01:18
----------------------------------------
[quote="bimbone":2kd8ew0v]Ciao ragazzi!
per la mia applicazione devo creare una time table, ovvero secondo l'orologio del PC il mio VI deve fare certe operazioni restituendo un valore booleano e questo true/false viene eseguito nella fascia oraria impostando ore e minuti di inizio e fine operazione.
Io ho pensato di mettere un Current Time convertirlo in string e poi con Scan From String tirare fuori le ore e minuti in formato numerico e confrontarli con con i valori impostati.
che ne dite? mi sembra un po' macchinoso ma no mi viene in mente un altra strada, magari c'è gia qualche blocchetto che non conosco che fa al caso mio[/quote:2kd8ew0v]
Male
Il CurrentTime è un valore numerico dal quale si estraggono le informazioni numeriche senza passare da una inutile conversione a stringa.
Infila il "CurrentTime" nella funzione "Seconds to Date/Time" che trovi nella stessa palette del "Timing".
Ottieni un cluster.
Unbudl-a quello che Ti serve.
bye
----------------------------------------
AUTORE: 2624
DATA :03/06/2009 - 12:05:21
----------------------------------------
ciao Paracarro! grazie ancora del tuo aiuto, molto più semplice così.
Ti chiedo ancora una cosa: posso replicare la funzione messa nel rettangolo nero a mio piacimento ad esempio se ne voglio 6 scrivo sei da qualche parte e subito sul front panel mi si formano???
ti mando l'allegato
----------------------------------------
AUTORE: 43
DATA :03/06/2009 - 13:00:21
----------------------------------------
[quote="bimbone":15gc538k]ciao Paracarro! grazie ancora del tuo aiuto, molto più semplice così.
Ti chiedo ancora una cosa: posso replicare la funzione messa nel rettangolo nero a mio piacimento ad esempio se ne voglio 6 scrivo sei da qualche parte e subito sul front panel mi si formano???
ti mando l'allegato[/quote:15gc538k]
mah! Se non spieghi bene cosa vuoi fare non puoi ottenere un aiuto concreto...
Innanzitutto nel loop manca una temporizzazione
Poi, se non intuisco male, quello che vorresti fare è impostare una serie di range temporali che hanno la limitazione di dover essere a cavallo dell'istante attuale , cioè impostare un istante superiore o uguale all'istante attuale, mentre l'altro è minore o uguale. Cmq i timestamp devono essere diversi fra loro... Dimmi se sbaglio...
Cmq sia non capisco che senso abbia il confronto che fai nel loop. Confrontare fra loro minuti con minuti, ore con ore e data con data è piuttosto strano: la "somma di confronti parziali" non equivale alla confronto di 2 timestamp completi.
Poi se il Tuo VI diventasse un SubVI dovresti mettere 2 tasti un tasto di "Conferma" che si abilita solo se i valori impostati sono validi, ed un tasto di "annulla" per uscire senza validazione.
In un VI principale predisporrai un array di range temporali cioè un array di cluster che comprendono il timestamp iniziale e quello finale.
Per questo array devi predisporre funzioni di "inserimento" "cancellazione" e "modifica" richiamando se necessario il Tuo subVI riveduto e corretto...
bye
----------------------------------------
AUTORE: 2624
DATA :03/06/2009 - 15:04:39
----------------------------------------
si io vorrei impostare una serie di intervalli temporali dentro i quali il programma deve attivare qualcosa con un true/false.
Io nell'esempio ne ho creato uno solo, però se all'occorennza ne avrei bisogno più di uno è possibile crearli a piacimento durante l'eseguibile?
si i timestamp devono essere diversi tra loro.
si potrei fare anche la somma e poi confrontare dopo è equivalente
----------------------------------------
================================================================================
LabView e GIS
================================================================================
AUTORE: 706
DATA :29/05/2009 - 09:13:20
----------------------------------------
Ciao a tutti,
ho una domanda da farvi.Da circa un'anno ho iniziato a lavorare, oltre che nella programmazione LabView anche con l'utlizzare software G.I.S (es. ArcGIS ESRI).
Qualcusa sa se è possibile ad esempio lavore con labView con dati geografici (es. shapefiles) o dato CAD etc..
Grazie per l'aiuto.
Francesco
----------------------------------------
================================================================================
LabVIEW e database
================================================================================
AUTORE: 424
DATA :29/05/2009 - 12:21:10
----------------------------------------
Ciao a tutti!
Avevo bisogno di un paio di info pratiche sull'utilizzo di LabVIEW per accedere ai databse ODBC tramite query SQL.
Ho cominciato a cipollare x questa cosa utilizzando gli articoli presenti sul forum creando una ADOBDB._connection e gestendo la fase di open ed execute. Tale cosa xò non funziona e mi compare dopo la fase di open questo errore:
Error -2147467259 occurred at Exception occured in Microsoft OLE DB Provider for ODBC Drivers: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified in DataBasev2.vi
e mi sta venendo un dubbio: occorre installare anche dei driver specifici per labVIEW?
Oppure è necessario l'utilizzo del toolkit a pagamento?
Grazie a tutti coloro mi risponderanno... spero in tanti
Buon lavoro a tutti!
----------------------------------------
AUTORE: 1078
DATA :03/06/2009 - 08:14:12
----------------------------------------
L'errore che ti viene segnalato è perchè non trova la DSN con il nome che hai indicato al driver labview. Per conneterti correttamente devi prima creare un Data Source Name con le impostazioni di accesso corrette. Puoi farlo direttamente dal manager dei driver ODBC, Pannello di controllo --> Servizi di amministrazione --> ODBC Drivers. Ti consiglio di creare un DSN di sistema. Riprova e vedrai che funziona!
Buon lavoro.
----------------------------------------
AUTORE: 424
DATA :05/06/2009 - 16:18:46
----------------------------------------
Ciao Ricky grazie x le dritte
Alla fine era una summa di piccoli casini ma cmq ora è tutto risolto
Ahò quando si è forti si è forti
Buon weekend a tutti raga!
----------------------------------------
================================================================================
Database Connectivity Toolkit+MYSQL BLOB type
================================================================================
AUTORE: 2088
DATA :29/05/2009 - 15:44:15
----------------------------------------
Salve ragazzi,
premetto che non sono molto esperto di connessione Labview con MYSQL, ma mi sono trovato davanti a questo scoglio e non so proprio come risolvere.
Ho la necessità di salvare un file zip in un campo di un database MYSQL; cercando in letteratura, ho scoperto che MYSQL permette di salvare dati Binary (immagini, video, zip o qualsiasi altra cosa) tramite i tipi di dato BLOB.
A questo punto, utilizzando il Database Connectivity Toolkit, mi piacerebbe poter inserire un file zippato, all'interno di questi campi; purtroppo non avendolo mai fatto, non so da che parte si comincia.
Qualcuno di voi ha qualche idea?
Grazie mille per le eventuali risposte
----------------------------------------
================================================================================
Modifica file txt
================================================================================
AUTORE: 2644
DATA :31/05/2009 - 10:48:47
----------------------------------------
Salve
avrei bisogno di estrarre solo alcuni valori numerici da un file di testo con delle intestazioni che si ripetono ogni tot righe e mi creano problemi.
il testo è il seguente e devo solo acquisire le 2 colonne in un array 2D.
allego il file completo per maggiore chiarezza [attachment=0:245hq7ej]PROVA.txt[/attachment:245hq7ej]
MEASUREMENT RESULT: "310 NB BF Ant."
01/04/2009 15.48
Frequency Level
MHz dBµV
0.150000 -5.40
0.155000 -5.55
0.160000 -5.70
0.165000 -5.61
0.170000 -6.00
0.175000 -6.12
0.180000 -6.25
0.185000 -6.74
0.190000 -7.12
0.195000 -6.96
0.200000 -7.32
Grazie in anticipo
----------------------------------------
AUTORE: 1078
DATA :03/06/2009 - 10:39:44
----------------------------------------
ciao Alduuu,
prova a vedere se questo fa al caso tuo...!!! Ovviamente devi migliorarlo e continuare a filtrare i dati in modo da convertirli come preferisci!
----------------------------------------
AUTORE: 43
DATA :03/06/2009 - 14:54:09
----------------------------------------
manca la lettura da file ma questo è quanto.
[attachment=0:ob1iezmx]ElaboraFileProva.vi[/attachment:ob1iezmx]
Sono approntate 2 soluzioni: la prima che distringue i singoli "blocchi" di dati, la seconda, molto semplice elabora tutti i dati come se appartenessero ad un unico blocco
Con belletto finale: il grafico con evidenziazione dei blocchi con diversi colori ed il secondo evidenziazione dei i punti del grafico XY
bye
----------------------------------------
AUTORE: 1078
DATA :04/06/2009 - 08:34:07
----------------------------------------
Ciao Paracarro,
Hai verificato il tuo codice? A me non gira. Da sempre errore 85 dopo la "Scan from string".
----------------------------------------
AUTORE: 43
DATA :04/06/2009 - 10:05:22
----------------------------------------
[quote="Ricky":tdp7al5g]Ciao Paracarro,
Hai verificato il tuo codice? A me non gira. Da sempre errore 85 dopo la "Scan from string".[/quote:tdp7al5g]
Scusa me invece se dubito che Tu non abbia la opzione "use localized decimal point" un-check-ata/disabilitata/non attiva
Come ho scritto nel recente post [url=http://www.ilvg.it/forum/viewtopic.php?f=1&t=4061:tdp7al5g]Aiuto! non riesco a leggere un csv e quindi inserirli nel DB[/url:tdp7al5g]
il punto (.) deve essere usato come separatore numerico dei decimali e non deve essere quello di Windows, che nella versione ITA utilizza la virgola(,).
Io ho salvato il VI in versione LV8.0 e funziona sia con LV8.6.1 che con LV8.2.1.
non posso convertirlo x LV7.1 ma sono certo che funzionarebbe anche Lì a patto che si disabiliti "use localized decimal point"
Altro non saprei dirti...
bye
----------------------------------------
AUTORE: 2644
DATA :06/06/2009 - 17:53:42
----------------------------------------
Grazie a tutti per la collaborazione.
vi propongo anche la soluzione pensata da me che potrebbe essere di aiuto a qualcuno, anche se utilizza uno script matlab.
un ringraziamento particolare a Ricky e Papacarro
Grazie ancora
alla prossima
----------------------------------------
AUTORE: 660
DATA :12/06/2009 - 08:22:09
----------------------------------------
[quote="paracarro":3hq9nkoi][quote="Ricky":3hq9nkoi]...
il punto (.) deve essere usato come separatore numerico dei decimali e non deve essere quello di Windows, che nella versione ITA utilizza la virgola(,).
bye[/quote:3hq9nkoi][/quote:3hq9nkoi]
Scusate l'OT, ma secondo normativa internazionale, per chi non lo sapesse, il separatore da usare per i decimali è la "," mentre per separare i gruppi di cifre si può utilizzare uno spazio (volendo); l'utilizzo del separatore "." per i decimali è stato introdotto solo dal 2003 per i testi di lingua inglese (probabilmente qualcuno ha fatto pressioni per potersi non uniformare come al solito!
)
Max
----------------------------------------
AUTORE: 43
DATA :12/06/2009 - 08:52:02
----------------------------------------
[quote="machyaer":2avlslmo]
Scusate l'OT, ma secondo normativa internazionale, per chi non lo sapesse, il separatore da usare per i decimali è la "," mentre per separare i gruppi di cifre si può utilizzare uno spazio (volendo); l'utilizzo del separatore "." per i decimali è stato introdotto solo dal 2003 per i testi di lingua inglese (probabilmente qualcuno ha fatto pressioni per potersi non uniformare come al solito!
)
Max[/quote:2avlslmo]
Sarà, ma da quando programmo cioè a partire dagli anni '86/'87, sia FORTRAN che ANSI C, sia BASIC, che PASCAL, nonostante tutti questi linguaggi avessero la possibilità di FORMATTARE la immissione/visualizzazione di numeri, ebbene, la totalità di essi, utilizzava il punto(.) come separatore dei decimali almeno come default...
Per me questa normativa somiglia a una di quelle inutili e dannose della Comunità Europea. Come se si volesse stabilire per legge il raggio massimo di curvatura delle banane....
Ingnoro questa insulsa normativa.
Invece di imporre internazionalmente l'uso del sistema metrico decimale, e contemporaneamente impedire l'uso di altri sistemi di misura (cioè quello anglosassone, libbre, once, pollici, yarde, galloni ecc.) si vuole "toccare" una convenzione già universalmente accettata.
Concludo dicendo:
abbasso le localizzazioni inutili
bye
----------------------------------------
AUTORE: 660
DATA :12/06/2009 - 12:48:45
----------------------------------------
[quote="paracarro":2cjc9dpf]
Sarà, ma da quando programmo cioè a partire dagli anni '86/'87, sia FORTRAN che ANSI C, sia BASIC, che PASCAL, nonostante tutti questi linguaggi avessero la possibilità di FORMATTARE la immissione/visualizzazione di numeri, ebbene, la totalità di essi, utilizza il punto(.) come separatore dei decimali almeno come default...
Per me questa normativa somiglia a una di quelle inutili e dannose della Comunità Europea. Come se si volesse stabilire per legge il raggio massimo di curvatura delle banane....
Ingnoro questa insulsa normativa.
Invece di imporre internazionalmente l'uso del sistema metrico decimale, e contemporaneamente impedire l'uso di altri sistemi di misura (cioè quello anglosassone, libbre, once, pollici, yarde, galloni ecc.) si vuole "toccare" una convenzione già universalmente accettata.
Concludo dicendo:
abbasso le localizzazioni inutili
bye[/quote:2cjc9dpf]
si, è vero che la maggiorparte dei linguaggi di programmazione utilizza il "." come separatore decimale, è anche vero che LV utilizza il "." nei formula node mentre la "," nelle costanti
.
Dal punto di vista puramente tecnico trovo invece molto utile l'uniformarsi TUTTI all'uso del sistema internazionale. Rende tutti i calcoli più semplici riducendo di molto la possibilità di errore dovuta alle conversioni tra le varie unità di misura.
Hai mai fatto caso, prendendo una formula scritta in unità anglosassoni, a quante costanti numeriche più o meno incomprensibili debbano fare riferimento per poter avere il risultato nell'unità di misura voluta?
Ciao
Max
----------------------------------------
================================================================================
script matlab e Path
================================================================================
AUTORE: 2644
DATA :31/05/2009 - 19:08:26
----------------------------------------
salve a tutti
ho uno script matlab da inserire in un VI
questo script preleva un file di testo e lo modifica.
esiste un modo per passare allo script la destinazione da cui prelevare il file tramite un control path di Labview?
grazie in anticipo
----------------------------------------
================================================================================
conversione possibile?
================================================================================
AUTORE: 2629
DATA :01/06/2009 - 18:15:19
----------------------------------------
salve a tutti ,
io ho un bel problema , ho svolto parecchi esercizi in labview 8.5 ma all'uni la versione di labview installata è la 7.1 . Purtroppo la versione 8.5 permette di salvare i vi per versioni solo fino alla 8.0 ... adesso vi chiedo c'è un modo per non rifare tutto da capo??
grazie.
saluti.
----------------------------------------
AUTORE: 1078
DATA :03/06/2009 - 08:05:48
----------------------------------------
Quanti sono i tuoi VI?
----------------------------------------
AUTORE: 43
DATA :03/06/2009 - 13:43:37
----------------------------------------
[quote="hMfL":2r9ge828]salve a tutti ,
io ho un bel problema , ho svolto parecchi esercizi in labview 8.5 ma all'uni la versione di labview installata è la 7.1 . Purtroppo la versione 8.5 permette di salvare i vi per versioni solo fino alla 8.0 ... adesso vi chiedo c'è un modo per non rifare tutto da capo??
grazie.
saluti.[/quote:2r9ge828]
Posta i Tuoi VI salvati in LV8.0, poi qualcuno che dispone di LV8.0 già installato e pronto (non Io), potrà salvare i Tuoi VI nella versione LV7.
Ciò sarà + semplice, a patto che nel Tuo codice [b:2r9ge828]non[/b:2r9ge828] si faccia uso di funzionalità che in LV7 [b:2r9ge828]non[/b:2r9ge828] sono presenti.
bye
----------------------------------------
AUTORE: 660
DATA :03/06/2009 - 16:58:22
----------------------------------------
[quote="paracarro":1d9t4yke][quote="hMfL":1d9t4yke]salve a tutti ,
io ho un bel problema , ho svolto parecchi esercizi in labview 8.5 ma all'uni la versione di labview installata è la 7.1 . Purtroppo la versione 8.5 permette di salvare i vi per versioni solo fino alla 8.0 ... adesso vi chiedo c'è un modo per non rifare tutto da capo??
grazie.
saluti.[/quote:1d9t4yke]
Posta i Tuoi VI salvati in LV8.0, poi qualcuno che dispone di LV8.0 già installato e pronto (non Io), potrà salvare i Tuoi VI nella versione LV7.
Ciò sarà + semplice, a patto che nel Tuo codice [b:1d9t4yke]non[/b:1d9t4yke] si faccia uso di funzionalità che in LV7 [b:1d9t4yke]non[/b:1d9t4yke] sono presenti.
bye[/quote:1d9t4yke]
Se non sono troppi e non hai troppa fretta postali che te li passo io.
Max
----------------------------------------
AUTORE: 2629
DATA :04/06/2009 - 19:45:32
----------------------------------------
bhè sono 23
se x voi è un problema fa niente , mi arrangerò
grazie molte x la disponibilità
----------------------------------------
AUTORE: 660
DATA :04/06/2009 - 21:46:11
----------------------------------------
no, non è un problema sempre che non contengano funzionalità non supportate da LV7.1 e che tu non abbia troppa fretta.
Max
----------------------------------------
AUTORE: 2629
DATA :05/06/2009 - 19:45:58
----------------------------------------
[quote="machyaer":22hodd0d]no, non è un problema sempre che non contengano funzionalità non supportate da LV7.1 e che tu non abbia troppa fretta.
Max[/quote:22hodd0d]
no non ho troppa fretta , cmq circa le funzionalità non saprei risponderti ma credo vada tutto liscio xkè sono esercizi base giusto x capire il funzionamento di labview , dei cicli , sequence case , shift register ... insomma funzioni elementari ...
li ho convertiti tutti x la versione 8.0 ....
grazie mille ancora
----------------------------------------
AUTORE: 660
DATA :05/06/2009 - 22:26:37
----------------------------------------
[quote="hMfL":wq5ls9ty][quote="machyaer":wq5ls9ty]no, non è un problema sempre che non contengano funzionalità non supportate da LV7.1 e che tu non abbia troppa fretta.
Max[/quote:wq5ls9ty]
no non ho troppa fretta , cmq circa le funzionalità non saprei risponderti ma credo vada tutto liscio xkè sono esercizi base giusto x capire il funzionamento di labview , dei cicli , sequence case , shift register ... insomma funzioni elementari ...
li ho convertiti tutti x la versione 8.0 ....
grazie mille ancora
[/quote:wq5ls9ty]
Purtroppo sono a casa e sul portatile non ho più la versione 7.1, lunedì o martedì te li converto.
Buon WeekEnd
Max
----------------------------------------
AUTORE: 2629
DATA :06/06/2009 - 08:57:30
----------------------------------------
[quote="machyaer":1c3qlnwl][quote="hMfL":1c3qlnwl][quote="machyaer":1c3qlnwl]no, non è un problema sempre che non contengano funzionalità non supportate da LV7.1 e che tu non abbia troppa fretta.
Max[/quote:1c3qlnwl]
no non ho troppa fretta , cmq circa le funzionalità non saprei risponderti ma credo vada tutto liscio xkè sono esercizi base giusto x capire il funzionamento di labview , dei cicli , sequence case , shift register ... insomma funzioni elementari ...
li ho convertiti tutti x la versione 8.0 ....
grazie mille ancora
[/quote:1c3qlnwl]
Purtroppo sono a casa e sul portatile non ho più la versione 7.1, lunedì o martedì te li converto.
Buon WeekEnd
Max[/quote:1c3qlnwl]
grazie ancora e buon week-end anche a te
Saluti.
----------------------------------------
AUTORE: 660
DATA :12/06/2009 - 08:15:13
----------------------------------------
ci riprovo nuovamente sperando che funzioni....
Allora, alcuni esempi potrebbero non funzionare correttamente o avere bisogno di qualche modifica perchè durante il downgrade mi ha dato qualche errore di incompatibilità di alcune delle funzioni usate.
Ciao
Max
[attachment=0:20gta3mk]Tirocinio LV7.1.zip[/attachment:20gta3mk]
----------------------------------------
AUTORE: 2629
DATA :14/06/2009 - 19:27:39
----------------------------------------
tranquillo , già è tanto ... grazie ancora , ciao
----------------------------------------
================================================================================
leggere il campo "descrizione" in db access
================================================================================
AUTORE: 2435
DATA :03/06/2009 - 10:22:03
----------------------------------------
Ciao a tutti sapete dirmi come si può fare?
----------------------------------------
================================================================================
Come implementare una funzione "copia" ??
================================================================================
AUTORE: 2624
DATA :05/06/2009 - 15:55:17
----------------------------------------
è possibile copiare il contenuto di 7 string control il altri 7 e che il tutto avvenga contemporaneamente?
----------------------------------------
AUTORE: 645
DATA :08/06/2009 - 08:30:01
----------------------------------------
Puoi provare con 7 cicli paralleli... Ma devi per forza farlo in parallelo? Non è sufficiente assegnare i valori ai nuovi indicatori in sequenza? Il tempo richiesto è poco...
----------------------------------------
AUTORE: 2624
DATA :08/06/2009 - 16:24:56
----------------------------------------
no non necessariamente però ho bisogno di una funzione copia perchè invece di 7 strig control potrebbero essere di più.
Per ora sto provando con event structure in cui ho collegato ad ogni string originale una variabile locale riferita all'altro sting control, così per sette, e poi un tasto di esecuzione copia e incolla.
Altre soluzioni?
----------------------------------------
AUTORE: 1168
DATA :09/06/2009 - 11:33:41
----------------------------------------
Domanda stupida... ma a che ti serve?
Se sono copie di controlli e saranno sempre sincronizzate non ti conviene usare direttamente il property node contenente il testo della stinga?
Oppure usi un array di stringhe, così non sei limitato dal numero e con un solo ciclo (event structure, o quello che vuoi) copi tutto in una volta sola.
Ciao
P!
----------------------------------------
AUTORE: 1168
DATA :09/06/2009 - 11:34:19
----------------------------------------
Domanda stupida... ma a che ti serve?
Se sono copie di controlli e saranno sempre sincronizzate non ti conviene usare direttamente il property node contenente il testo della stinga?
Oppure usi un array di stringhe, così non sei limitato dal numero e con un solo ciclo (event structure, o quello che vuoi) copi tutto in una volta sola.
Ciao
P!
----------------------------------------
================================================================================
rilevatore di transazione booleana
================================================================================
AUTORE: 2624
DATA :15/06/2009 - 10:55:26
----------------------------------------
ciao!
ho bisogno di un rilevatore di transazione booleana, cioè devo rendere un segnale logico true solo quando un altro segnale logico passa da true a false
----------------------------------------
AUTORE: 1124
DATA :15/06/2009 - 12:35:15
----------------------------------------
ciao
prova il vi allegato.
----------------------------------------
AUTORE: 645
DATA :15/06/2009 - 12:38:48
----------------------------------------
Tra un ciclo e l'altro puoi usare uno shift register per memorizzare il valore corrente da confrontare poi con il valore successivo nel prossimo ciclo... Quando il valore corrente è diverso dal valore precedente sei nella condizione richiesta per modificare il valore della seconda variabile. L'unica cosa che eventualmente bisogna considerare è la velocità dei cicli in modo da non perdere eventuali transizioni di valori.
----------------------------------------
AUTORE: 1124
DATA :15/06/2009 - 12:40:55
----------------------------------------
Ciao di nuovo
prova il vi allegato che sente solo il Falling edge e non la variazione di stato.
----------------------------------------
AUTORE: 2624
DATA :16/06/2009 - 16:03:55
----------------------------------------
grazie mille! è proprio quello che cercavo utilissimo
----------------------------------------
AUTORE: 487
DATA :19/06/2009 - 07:39:06
----------------------------------------
Più semplicemente avrei sfruttato la funzione "boolean crossing"
Ciao
----------------------------------------
AUTORE: 2624
DATA :19/06/2009 - 09:58:24
----------------------------------------
ciao! potresti salvarlo con la versione 8.5
----------------------------------------
AUTORE: 487
DATA :19/06/2009 - 10:33:00
----------------------------------------
Eccoti servito.
----------------------------------------
AUTORE: 1124
DATA :19/06/2009 - 12:29:33
----------------------------------------
Grande!
è un po' nascosta, soprattutto per me che raramente uso le funzioni point by point, ma si trova.
Credo che però non sia compresa in tutti i pacchetti, almeno fino alla versione 7.11.
Ciao
----------------------------------------
================================================================================
Creazione di eseguibile
================================================================================
AUTORE: 2585
DATA :15/06/2009 - 15:51:26
----------------------------------------
Ciao a tutti,
c'e' qualcuno che mi puo' scrivere per cortesia la procedura per creareun eseguibile (compreso delle librerie)
con labview 8.6.1 ?
Ciao e grazie,
Paolo
----------------------------------------
AUTORE: 278
DATA :15/06/2009 - 16:13:54
----------------------------------------
Ciao,
a partire da LV 8.5, per fare un'eseguibile bisogna creare le "build specification" all'interno del project explorer, trovi maggiori info [url=http://zone.ni.com/devzone/cda/tut/p/id/3303:2c39ty4u]qui[/url:2c39ty4u] e [url=http://zone.ni.com/reference/en-XX/help/371361B-01/lvhowto/building_a_stand_alone_app/:2c39ty4u]qui[/url:2c39ty4u].
----------------------------------------
================================================================================
Gestione EXE LabVIEW
================================================================================
AUTORE: 424
DATA :16/06/2009 - 09:15:33
----------------------------------------
Buonjour a tut le monde!
Devo sottoporvi un quesito che credo sarà semplice per la maggior parte della gente (ma non per me
): devo lanciare un applicatico LabVIEW da me creato per la gestione di un database aziendale e tale eseguibile verrà lanciato da un VI globale sfruttando il System Exec.vi. Ho fatto più o meno tutto ma volevo sapere se qualcuno conosce al volo il modo per chiudere la finestra dell'exe in automatico e non tramite la X.
Non ditemi di usare la utility quit LabIEW xchè mi si chiuderebbe tutto
Grazie a tutti quelli che risponderanno
Have a nice day e buon lavoro!
Max
----------------------------------------
AUTORE: 301
DATA :16/06/2009 - 14:36:12
----------------------------------------
Puoi usare il metodo ? Front pannel close del vi main....
----------------------------------------
AUTORE: 301
DATA :16/06/2009 - 14:43:01
----------------------------------------
ESEMPIO.....
----------------------------------------
AUTORE: 424
DATA :16/06/2009 - 14:53:17
----------------------------------------
Grazie caro Aris funziona!
----------------------------------------
AUTORE: 424
DATA :16/06/2009 - 15:22:20
----------------------------------------
Un'ultima cosa visto che 6 così ferrato: immagino che esista la possibilità di associare un return code (quello che si può leggere da system exec.vi) al mio applicativo.
Sai mica come si gestisce tale cosa?
Ancora grazie e buona giornata!
----------------------------------------
AUTORE: 301
DATA :16/06/2009 - 15:26:02
----------------------------------------
Mi spiace ma non ho capito cosa intendi.....cosa vorresti fare esattamente?
----------------------------------------
AUTORE: 424
DATA :16/06/2009 - 15:32:56
----------------------------------------
Allora il vi che consente l'esecuzione dei file .exe (o anche di lanciare i .bat, etc.) si chiama system exec.vi ed è caratterizzato da un segnale di uscita che rappresenta il return code. Dovrebbe essere sostanzialmente un codice di errore di sistema determinato dal comando fornito al system exec.vi.
Volevo sapere se secondo te c'è la possibilità di associare un errore dell'eseguibile al return code di system exec.vi.
----------------------------------------
AUTORE: 301
DATA :16/06/2009 - 15:46:27
----------------------------------------
Ok, quello mi era chiaro, m ami chiedevo a cosa potesse servirti....
Sinceramente non so se sia possibile ma credo, CREDO che non lo sia.
CREDO che il return code sia dato dal sistema e non dall'eseguibile che lanci (ma qui chiedo aiuto agli altri badi giovini del sito)....
In ogni caso, se devi scambiare qualcosa (codice, stringa, ecc) tra un exe ed un'altro di metodi ce ne sono un mucchio (scrittura su file, tcp/ip, variabili ecc ecc ecc).
Mi spiace
----------------------------------------
AUTORE: 424
DATA :16/06/2009 - 15:52:36
----------------------------------------
Supponevo fosse così grazie per la conferma. Cmq ho più o meno già aggirato la cosa stavolta col metodo open front panel
Grazie infinite per l'aiuto aris!
Buona serata!
----------------------------------------
================================================================================
Problema Waveform Object
================================================================================
AUTORE: 2653
DATA :16/06/2009 - 10:00:47
----------------------------------------
Salve a tutti,
ho un piccolo problema con un oggetto waveform e non riesco a capire come risolverlo. HO sviluppato un software per l'acquisizione che grafica tutti i valori.
il problema mi si presenta quando è trascorso un pò di tempo dall'inizio dell'acquisizione che non riesco a vdere sul grafico i vecchi valori, quindi vorrei capire se posso impostare una finestra di 1ora sull'asse X, oppure se c'è un modo per far si che il grafico mi si vedano tutti i valori anche dopo 2-3-4 ore... Sto provando in vari modi tramite i property node ma non ci riesco....
sapreste aiutarmi???
grazie anticipatamente....
----------------------------------------
AUTORE: 927
DATA :22/06/2009 - 11:19:01
----------------------------------------
A parte l'asse, c'è un limite massimo ai campioni che un grafico può contenere, per questioni di memoria. Cliccando col destro sul grafico e selezionando "chart history length" dovresti essere in grado di impostare quel limite.
----------------------------------------
================================================================================
Memorizzazione dati in un file
================================================================================
AUTORE: 2624
DATA :17/06/2009 - 14:59:06
----------------------------------------
Eccomi di nuovo! sono sempre io che rompo
allora, devo memorizzare dei dati sotto forma di vettore in un file e per questo uso il blocchetto "Write To Measurement File" però ho la necessità di memorizzarli in file diversi selezionabili secondo la scelta di un ring.
Il mio problema è che non riesco a far coicidere la scelta di un ring con delle path diverse dove stanno i file
----------------------------------------
AUTORE: 278
DATA :17/06/2009 - 15:29:51
----------------------------------------
Ciao,
io farei così, utilizzerei il ring per indicizzare un'array di path.
Può andare???
----------------------------------------
AUTORE: 2624
DATA :18/06/2009 - 19:25:27
----------------------------------------
certo che può andare! io avevo fatto con un case structure che la comandavo con un ring ma la tua solozione è molto più snella.
grazie!
----------------------------------------
================================================================================
Event Structure
================================================================================
AUTORE: 2653
DATA :18/06/2009 - 09:00:36
----------------------------------------
Salve a tutti,
ho un piccolo problema con la struttura in oggetto. un software che acquisisce valori da varie daq usb e scrive i valori su file. fin qui niente di particolare un creato un tasto exit program di cui catturo il valore da una struttura event per effettuare la domanda vuoi veramente uscire? se si effettuo un EXIT da Labview se no Dovrei continuare a usare il programma cosa che non riesco a fare.
il programma è strutturato come segue:
un flat sequence Generale dove all'interno mi metto in loop per acquisire, all'esterno catturo l'evento.
In effetti è come se il controllo si trasferisse sulla struttura event perchè il programma continua a girare ma non riesco a controllare nessun pulante e niente.
Esiste un exit dalla struttura event oppure è il problema è altro???
Sapete aiutarmi?
Grazie mille anticipatamente...
----------------------------------------
AUTORE: 278
DATA :18/06/2009 - 09:24:38
----------------------------------------
Ciao,
un pò confusionario!!! Cerchiamo di fare un pò di ordine..
La struttura eventi, a differenza del for loop, "cicla" solo quando si verifica l'evento corrispondente.
Nel tuo caso, presumo che alla pressione del tasto exit tu esca dalla struttura eventi, indipendentemente se alla domanda "sei sicuro??" rispondi si o no, probabilmente perchè non controlli quale tasto ha premuto l'utente.
Ecco un'esempio di come si potrebbe fare...
[attachment=0:s53ruc4u]Xloopin.jpg[/attachment:s53ruc4u]
----------------------------------------
AUTORE: 2653
DATA :18/06/2009 - 09:33:45
----------------------------------------
ok ho risolto dimenticavo di inserire l'event in un while... quindi mi succedeva che lo eseguiva una sola volta... Grazie infinite per l'aiuto..
----------------------------------------
================================================================================
differenza fra "wait" e "wait until next ms multiple"
================================================================================
AUTORE: 822
DATA :18/06/2009 - 10:30:26
----------------------------------------
ciao, ho un paio di domande probabilmente stupide ma che mi porto dietro da anni.
1- che differenza c'è fra un "wait" e un "wait until next ms multiple"?
2- in quali casi è meglio utilizzare un "Timed loop" al posto di un "While loop"?
----------------------------------------
AUTORE: 2592
DATA :18/06/2009 - 21:01:43
----------------------------------------
Ciao Giuseppe,
la differenza è la seguente:
1) Hai un ciclo while con una "wait" di 100 ms; la durata di esecuzione del codice all'interno del ciclo è di 20 ms. L'iterazione 0 parte al tempo 0, l'iterazione 1 parte al tempo 120 ms (wait + codice), l'iterazione 2 parte al tempo 240 ms etc...
2) Hai un ciclo while con una "wait until next ms multiple" di 100 ms; la durata di esecuzione del codice all'interno del ciclo è di 20 ms. L'iterazione 0 parte al tempo 0, l'iterazione 1 parte al tempo 100 ms (wait di 80 ms + codice), l'iterazione 2 parte al tempo 200 ms etc...
Se invece il tempo di esecuzione codice è pare a 110 ms, l'iterazione 1 partirà a 200 ms e l'iterazione 2 a 400 ms (multipli di 100 ms)
Insomma se mi sono spiegato bene la differenza è che nel caso 1) aspetti effettivamente il tempo che imposti nella wait, mentre nel caso 2) se l'esecuzione del codice all'interno del ciclo ha una durata inferiore al valore che imposti per la wait until next puoi dire con certezza che il tuo ciclo gira esattamente ogni N ms.
Il timed loop è comodo perchè puoi settare vari parametri, priorità, deadline, processore su cui far girare il codice etc...Inoltre ti restituisce informazioni sul tempo di inizio di una iterazione, tempo di fine, ti dice se ha finito in ritatrto etc...
Ciao,
----------------------------------------
AUTORE: 822
DATA :19/06/2009 - 20:08:46
----------------------------------------
grazie ryan,
ma allora mi viene da farti un'altra domanda:
supponiamo che all'interno del loop temporizzato (esempio con un wait until 200 ms) ci sia l'assegnazione di valori a N variabili globali, i valori di queste globali vengono aggiornati man mano che vengono richiamate oppure vengono aggiornati tutti assieme ogni 200 ms?
----------------------------------------
AUTORE: 2592
DATA :21/06/2009 - 14:17:06
----------------------------------------
Ciao,
in questo caso tutte le variabili vengono aggiornate ogni 200 ms, però a priori non sai qual è l'ordine di aggiornamento, a meno che non sequenzializzi tu il tuo codice.
In LabVIEW l'unica regola che ti permette di capire il flusso di dati è la seguente:
1) Una funzione o struttura viene eseguita quando ha tutti gli ingressi disponibili.
2) Una funzione o struttura rilascia l'uscita quando ha terminato la sua esecuzione.
Detto questo se nel tuo ciclo hai le variabili sparse in "parallelo" non potrai mai dire come vengono aggiornate, saparai solo che dopo 200 ms sono tutte aggiornate.
Ciao,
----------------------------------------
AUTORE: 822
DATA :22/06/2009 - 08:12:30
----------------------------------------
Scusami se insisto ma con un esempio mi è tutto più chiaro.
Nel VI in allegato, supponendo che le variabili globali vengano richiamate da un altro vi, la variabile globale 1 viene aggiornata prima della variabile globale 2, è corretto?
----------------------------------------
AUTORE: 2592
DATA :22/06/2009 - 21:49:06
----------------------------------------
Ho guardato il codice. Dato che hai usato una Frame Sequence structure, la variabile 1 viene aggiornata, poi c'è una pausa di 1 s, poi si aggiorna la 2 , pausa di 1 s e poi parte l'iterazione successiva. Dato che come temporizzatore del loop hai usato una Wait until di 200 ms, il tuo loop gira con una cadenza di 2000 ms, dettato dalle wait.
Ciao,
----------------------------------------
AUTORE: 822
DATA :23/06/2009 - 18:51:01
----------------------------------------
grazie 1000
----------------------------------------
AUTORE: 2784
DATA :24/10/2009 - 09:32:35
----------------------------------------
mi unisco a questo 3d....e se io volessi che un frame ci sia dopo tot minuti cosa dovrei fare?
in pratica il mio primo frame è un acquisizione e gli altri frame sono dei passaggi..come posso far in modo che l acquisizione, cioè il primo frame avvenga ogni tot minuti indipendentemente dal resto dei frame successivi???
----------------------------------------
AUTORE: 129
DATA :09/12/2009 - 23:46:44
----------------------------------------
Devi usare due while e sincronizzarli magari con una occurence, guarda [url=http://www.agilesystems.it/?p=20:1746rf80]questo esempio[/url:1746rf80].
----------------------------------------
AUTORE: 4153
DATA :10/02/2013 - 19:09:07
----------------------------------------
Ciao questo thread e' ancora aperto? posso chiedere un chiarimento?
Dalla prima spiegazione sembra che la funzione WAIT venga eseguita DOPO il codice presente nel loop, mentre la WAIT UNTIL NEXT venga eseguita assieme e termini quando il contatore di sistema raggiunge un multiplo del valore specificato...ma a me non sembra cosi.
Prendete la VI di esempio che allego :
impostate il tempo del processo "virtuale" (qui simulato con una wait) a 20ms.
Impostate il tempo di wait a 30ms.
selezionate il tipo di wait (wait until next oppure wait)
ebbens se sei si mantiene il filo che collega il tempo di processo al "case" in cui si selezione il tipo di wait,ovviamente si nota come la WAIT aggiunga il tempo a cui e' impostata mentre la WAIT UNTIL NEXT "assorbe" il tempo di processo (quindi se il tempo di processo e' 20ms ed io imposto 30ms nella Wait until next, esco dopo 30ms)...
Se pero' tolgo il filo, e quindi la wait/wait until next viene eseguita assieme al processo, allora le due modalita' di WAIT si comportano esattamente allo stesso modo
quindi mi chiedo...dove stia l'effettiva differenza.
Grazie mille!!!
ms)
----------------------------------------
AUTORE: 482
DATA :11/02/2013 - 07:22:44
----------------------------------------
Nel dataflow.
In LabVIEW non c'e' sequenzialità come nei linguaggi di programmazione standard. I singoli blocchi vengono eseguiti in base a come li colleghi tra di loro.
Il tuo presupposto "Dalla prima spiegazione sembra che la funzione WAIT venga eseguita DOPO il codice presente nel loop, mentre la WAIT UNTIL NEXT venga eseguita assieme e termini quando il contatore di sistema raggiunge un multiplo del valore specificato" E' sbagliato.
[b:3gug1h6n]Il wait viene eseguito quando viene chiamato. se lo piazzi in parallelo a tutto il codice potrebbe essere effettuato prima o dopo, non ci è dato sapere[/b:3gug1h6n]. Se lo metti prima viene eseguito prima e s elo metti dopo viene eseguito dopo. Idem per il wait until next multiple.
Tutto dipende da come colleghi i fili o come costruisci le sequenze.
----------------------------------------
AUTORE: 4153
DATA :11/05/2013 - 16:22:03
----------------------------------------
...e infatti e' proprio quello che volevo dire. Se una WAIT UNTIL e' in un ciclo, con altro codice, e senza vincoli di "fili", ne in condizioni di funzionamento "time critical" dovrebbe essere eseguita assieme al codice!!
Questo pero' "cozza" con con la prima risposta data al quesito e con alcuni riferimenti bibliografici presenti nella documentazione Nationa Instr.
La prima risposta citava :
[i:vfqu87dl]"...1) Hai un ciclo while con una "wait" di 100 ms; la durata di esecuzione del codice all'interno del ciclo è di 20 ms. L'iterazione 0 parte al tempo 0, [b:vfqu87dl][u:vfqu87dl]l'iterazione 1 parte al tempo 120 ms (wait + codice), [/u:vfqu87dl][/b:vfqu87dl]l'iterazione 2 parte al tempo 240 ms etc..."[/i:vfqu87dl]
Ebbene, sperimentalmente sembra non sia cosi, anche se in effetti e' una spiegazione che ho trovato in alcune risposte di esami per il CLAD.
In una risposta c'era scritto :
"La wait until, inizia il cronometraggio dopo che il codice compreso nel ciclo e' stato completato e scade quando il tempo impostato in ingresso viene completato"....
Qualcuno sa spiegarmi perche'?
L'esempio che vi allego dice tutt'altro.
Dall'esempio che allego ora, (e quindi senza il "filo" a cui mi riferivo) il "thread" della "[b:vfqu87dl]Wait Unti[/b:vfqu87dl]" viene ESEGUITO IN PARALLELO, nel senso che non "aggiunge" una wait al processo e quindi la differenza tra i due tipi di WAIT e' solo che la WAIT UNTIL NEXT MS riferendosi a un multiplo del clock di sistema, fornisce un riferimento univoco permettendo al programmatore di sincronizzare i cicli tra loro (Es. Il multiplo 100msec del tick counter di sistema, sara' 104500100, 104500200, 104500300...etc in ogni loop, in ogni VI dell'applicazione).
Qualcuno sa spiegarmi perche' nella bibliografia NI si fa riferimento al fatto che la WAIT "aggiunge" una wait?
Cosa sbaglio nella mia considerazione?
Grazie
----------------------------------------
AUTORE: 4153
DATA :11/05/2013 - 16:50:59
----------------------------------------
OPS scusate, nel mio posto precedente mi sono accorto di aver scritto sempre "WAIT UNTIL" anziche' Wait(ms).
Quindi riassumento :
Wait (ms) e Wait Until Next, nell'ultimo esempio che vi ho allegato, vengono eseguiti "Assieme" al codice, (ovviamente se non hanno fili che li mettono in relazione) e quindi non capisco come mai spesso si legga che la Wait (ms) a differenza della Wait Until Next viene eseguita DOPO il codice.
----------------------------------------
AUTORE: 482
DATA :13/05/2013 - 07:53:28
----------------------------------------
come dicevi giustamente, senza fili o parallelismi, ne il wait until ne il wait vengono eseguiti dopo o prima ma vengono eseguiti durante il codice ma non si sa in che istante partano.
Se hai letto quella cosa del dopo, penso sia semplicemente legata ad una questione di "buona programmazione", nel senso che una wait senza fili o sequenze non ha senso.
una wait viene messa sempre in successione a qualcosa.
La wait until invece no, perchè solitamente viene utilizzata, innanzitutto dandogli in ingresso un tempo SUPERIORE al tempo di esecuzione del codice, e poi viene lasciata svincolata da fili e sequenze proprio per garantire che nello stesso momento in cui viene eseguito il codice, parta anche il conteggio, senza dare peso al momento esatto in cui parte, ma con la "garanzia" che al prossimo multiplo del tempo inserito questo si esaurisca e possa quindi ripartire il ciclo, dando cosi' origine a dei cicli di uguale durata anche se l'esecuzione del codice dovesse metterci dei tempi leggermente diversi.
----------------------------------------
AUTORE: 4153
DATA :14/05/2013 - 22:44:34
----------------------------------------
ovviamente se vi fossero fili a collegare la funzione, questa disamina non ha piu' senso in quanto la sequenza sarebbe rigidamente stabilita dal dataflow.
Mi ero posto il problema perche' in un quesito del CLAD c'era una domanda proprio su questo aspetto...e nella spiegazione delle soluzioni si sosteneva che la WAIT UNTIL NEXT veniva eseguita "all'avvio del programma" (benedetto chi ha tradotto/scritto queste domande d'esame) mentre c'era scritto che la WAIT "inizia il cronometraggio dopo che il codice compreso nel ciclo e' stato completato"...
boh, misteri di LV...
----------------------------------------
AUTORE: 482
DATA :15/05/2013 - 10:32:28
----------------------------------------
magari è stato un errore di traduzione
----------------------------------------
================================================================================
Clear chart
================================================================================
AUTORE: 2653
DATA :18/06/2009 - 10:54:56
----------------------------------------
Esiste un modo di cancellare il grafico a runtime tramite property node o altro??? tranne con il mouse ovviamente..
GRazie mille.. per l'aiuto
----------------------------------------
AUTORE: 301
DATA :19/06/2009 - 07:06:54
----------------------------------------
Direi non tra le proprietà del chart....ma puoi fare in questo modo....
----------------------------------------
================================================================================
Labview: Come Si Importa La Libreria Modbus?
================================================================================
AUTORE: 622
DATA :22/06/2009 - 14:33:15
----------------------------------------
Sto cercando di muovere i primi passi con labview, (8.20)
Mi chiedevo come si importano all'interno di un progetto le librerie lld inerenti il modbus?
Una volta installate sotto quale voci le trovo?
Infine, esiste un esempio sul suo utilizzo?
Grazie
----------------------------------------
AUTORE: 278
DATA :22/06/2009 - 19:51:22
----------------------------------------
Ciao,
le istruzioni per installare la libreria modbus le trovi all`interno del file ni_modbus_1_2.zip che hai scaricato dal sito national, sono in inglese.
Riporto brevemente:
[quote:228tnu9h] * Close LabVIEW.
* If you have version NI-MODBUS Library 1.1 on your system, it is recommended to uninstall it by going to Control Panel -> Add Remove Programs -> National Instruments Software and select NI Modbus 1.1 from the list.
* Copy NI Modbus.llb from the ##\vi.lib folder to the LabVIEW_ROOT\vi.lib directory where ## is your LabVIEW version (example 86 for 8.6) and is the root folder where you installed LabVIEW.
* Copy lvmodbus.chm and lvmodbus.txt from ##\help to the LabVIEW_ROOT\help directory.
* Copy nimodbus.mnu from ##\user.lib to the LabVIEW_ROOT\user.lib directory.
* Restart LabVIEW. You should see the NI Modbus palette in the User Libraries palette.
[/quote:228tnu9h]
Se hai fatto tutto correttamente, troverai le funzioni Modbus all`interno della function palette, segui il percorso User Libraries->NI Modbus
Se cerchi un`esempio, lo trovi all`interno della libreria stessa, prova i vi MB Ethernet Example Slave.vi e MB Ethernet Example Master.vi
Piazzali nel function diagram e fai doppio click per aprirli; all`inerno, oltre a del codice, trovi le istruzioni per muovere i primi passi.
----------------------------------------
================================================================================
indice degli elementi di una matrice
================================================================================
AUTORE: 2192
DATA :22/06/2009 - 22:44:27
----------------------------------------
Ciao a tutti!
ho bisogno di una dritta.
Devo poter andare a leggere e scrivere in una matrice in maniera dinamica in varie posizioni delle celle. Ad esempio andare a scrivere nella casella di indice 1,1 o 1,2 o 3,2 a seconda della necessità.
Esiste una funzione che permette questo senza dover ricorrere a più index array?
Grazie!
----------------------------------------
AUTORE: 487
DATA :23/06/2009 - 07:29:03
----------------------------------------
Ciao,
la funzione che ti consente di cambiare il valore di una cella di una matrice si chiama "replace array subset", mentre se vuoi laggere il valore il modo più semplice è quello di utilizzare l'index array
----------------------------------------
================================================================================
Dialog Box Express VI
================================================================================
AUTORE: 1033
DATA :23/06/2009 - 08:41:49
----------------------------------------
Ciao, è possibile utilizzare programmaticamente la Configuration Dialog Box di un express VI? Vorrei che durante l'esecuzione del programma l'utente premendo un bottone potesse aprire il pannello di configurazione di un express VI.
Tra i sorgenti di LV riesco a trovare solo i SubVI ed i SuorceVI.
Qualcuno sa dove posso trovare il codice della Configuration Dialog Box o come può essere chiamato programmaticamente?
Grazie
----------------------------------------
================================================================================
Creare una maschera
================================================================================
AUTORE: 1033
DATA :23/06/2009 - 10:06:36
----------------------------------------
Ciao, dovrei dare la possibilità all'utente di tracciare una maschera su un grafico. Vorrei fare in modo che possa farlo con il mouse stile darg and drop. Conoscete qualche metodo per farlo?
Grazie.
----------------------------------------
AUTORE: 1050
DATA :23/06/2009 - 13:34:08
----------------------------------------
Ecco due esempi:
\Program Files\National Instruments\LabVIEW 8.6\examples\math\visualiz.llb\Draw Graph.vi
\Program Files\National Instruments\LabVIEW 8.6\examples\general\uievents.llb\Draw Graph with Events.vi
ciao
----------------------------------------
AUTORE: 1033
DATA :24/06/2009 - 09:51:56
----------------------------------------
Grazie, sono un buon inizio.
----------------------------------------
================================================================================
Controllo Risorse Visa
================================================================================
AUTORE: 487
DATA :23/06/2009 - 14:43:12
----------------------------------------
Ciao a tutti,
vi espongo il mio problema: controllo un dispositivo tramite seriale e dovrei esser certo che il dispositivo sia collegato al pc.
Quando il dispositivo viene collegato al pc, tramite porta usb, viene creata una COM virtuale che, chiaramente sparisce dalle risorse del sistema quando il dispositivo viene scollegato. Ho provato a monitorare lo stato della comunicazione rilevando l'esistenza della porta COM con la funzione "VISA find resource" e quì nasce il problema: una volta che viene identificata la risorsa (es. COM5) anche se viene scollegato il dispositivo, il vi mi restituisce sempre un elenco contenente la risorsa che nel sistema non è più presente.
Ho provato anche a fare un open e close della porta COM nella speranza che mi venisse restituito un errore ed invece niente.
Qualcuno ha qualche suggerimento da darmi?
Grazie
PS: S.O. = windows XP SP3; LabView 8.6
----------------------------------------
AUTORE: 301
DATA :23/06/2009 - 15:49:49
----------------------------------------
Ciao,
hai provato con la property "is port connected"?
----------------------------------------
AUTORE: 487
DATA :23/06/2009 - 16:03:31
----------------------------------------
[quote="aris":vflo15p2]Ciao,
hai provato con la property "is port connected"?[/quote:vflo15p2]
Già provato. Mi restituisce sempre un errore dove mi dice che la funzione non è utilizzabile con la mia risorsa
----------------------------------------
AUTORE: 301
DATA :24/06/2009 - 06:17:50
----------------------------------------
Infatti ho detto una c*****a....funziona solo con hw Nation....
Questa mattina ho provato con un cavetto (USB) che crea una seriale virtuale....usando il find res. mi aggiorna immediatamente la lista quando lo collego / scollego.....strano.....a me funziona!
----------------------------------------
AUTORE: 1050
DATA :24/06/2009 - 09:26:17
----------------------------------------
Con Labview 8.6 e Windows VISTA la "VISA Find Resource" funziona: dopo qualche secondo aggiorna l'elenco.
Sembrerebbe più un problema di windows. Posso solo suggerirti di aggiornare anche i driver VISA all'ultima versione.
ciao
----------------------------------------
AUTORE: 487
DATA :24/06/2009 - 10:07:22
----------------------------------------
[quote="antea06":10stf9vl]Sembrerebbe più un problema di windows.[/quote:10stf9vl]
Credo proprio che tu abbia ragione: ieri non c'era verso di farlo funzionare; stamattina tutto funziona perfettamente.
Probabilmente bastava spegnere e riaccendere il pc!!!
Grazie per l'aiuto e scusate se vi ho fatto perder tempo per niente.
----------------------------------------
AUTORE: 645
DATA :25/06/2009 - 08:32:45
----------------------------------------
Mi associo al gruppo del "anche io uso il VISA find Resource": a me funziona e nel momento in cui aggancio un cavetto USB-Seriale o qualcos'altro che crea una seriale virtuale (tipo chiavetta USB Bluetooth) il VI mi restituisce anche la nuova porta. Poi si può lavorare con i comandi VISA. Però è importante (non so se fondamentale ma direi consigliabile) aggiornare i driver VISA all'ultima versione.
----------------------------------------
AUTORE: 2659
DATA :25/06/2009 - 08:50:31
----------------------------------------
anche se non centra molto..
qualcuno mi potrebbe postare o inviare i file e il vi per creare una porta COM virtuale in modo da collegare l'USB con LabVIEW ?
graziee..
----------------------------------------
AUTORE: 487
DATA :25/06/2009 - 13:03:19
----------------------------------------
[quote="coma":2b1wv7t7]Probabilmente bastava spegnere e riaccendere il pc!!![/quote:2b1wv7t7]
Diagnosi sbagliata!!!
Il vero problema stava nel fatto che non chiudevo la porta COM con "VISA Close.vi" dopo aver perso il collegamento con il dispositivo usb.
Da quello che ho potuto capire, e gradirei che qualcuno mi possa dare una conferma, se si apre una porta di comunicazione, con il dispositivo usb, tramite "VISA open.vi", anche se la comunicazione cade, per cui la porta COM virtuale cessa d'esistere, il "VISA Find Resource.vi" continua a tenerla in elenco finchè non viene chiusa con il comando "VISA close.vi".
----------------------------------------
AUTORE: 301
DATA :25/06/2009 - 13:12:23
----------------------------------------
Smentisco,
ti posto questa prova e ti assicuro che il find res. si accorge subito se stacco o attacco la periferica!
----------------------------------------
AUTORE: 487
DATA :25/06/2009 - 14:20:29
----------------------------------------
[quote="aris":16ii5fub]Smentisco,
ti posto questa prova e ti assicuro che il find res. si accorge subito se stacco o attacco la periferica![/quote:16ii5fub]
Perfetto: a me il find resource non si accorge di un bel niente!!
Ora provo a controllare d'avere l'ultima versione dei driver VISA, altrimenti l'aggiorno e poi ripeto la prova
----------------------------------------
AUTORE: 301
DATA :25/06/2009 - 14:51:44
----------------------------------------
Io ho la versione 4.2 su Win XP....
Non so, mi viene anche da pensare che possa essere dovuto ai driver di virtualizzazione della USB, spesso fanno cose strane (anche se ormai sono diventati abb stabili), ma a volte (su perif. datate) mi hanno dato delle schermate blu anche in xp.....
----------------------------------------
AUTORE: 487
DATA :25/06/2009 - 15:38:44
----------------------------------------
Ho aggiornato i driver VISA alla versione 4.5; non è cambiato niente: se chiudo la com tutto funziona, altrimenti continuo ad avere nell'elenco delle risorse una com che non esiste.
[quote="aris":1w2m0jxv]Non so, mi viene anche da pensare che possa essere dovuto ai driver di virtualizzazione della USB[/quote:1w2m0jxv]
probabilmente è come dici tu.
----------------------------------------
================================================================================
Equalizzatore
================================================================================
AUTORE: 10
DATA :23/06/2009 - 15:52:01
----------------------------------------
Ciao a tutti, sto cercando di costruire un equalizzatore grafico in terzi d'ottava con Labview, ma non vorrei inventare l'acqua calda...
Qualcuno di voi ha mica visto in giro qualcosa di simile?
Grazie mille
----------------------------------------
================================================================================
Math script e math node
================================================================================
AUTORE: 2644
DATA :24/06/2009 - 00:14:02
----------------------------------------
Salve a tutti
ho scritto uno script matlab che mi modifica un file di testo per poi acquisirlo con labview.
se uso un Math node non ci sono problemi, ma per non installare matlab sul pc di destinazione volevo usare un Math script ma sfortunatamente non funziona.
allego lo script matlab e un file txt di prova
Qualche idea??
----------------------------------------
================================================================================
USB con LabVIEW
================================================================================
AUTORE: 2659
DATA :24/06/2009 - 15:04:45
----------------------------------------
Questo è il mio problema:
ho convertitore hardware (a 8 canali) fatto da me e volevo farlo comunicare col PC attraverso la porta USB, con un programma fatto appunto con LabVIEW.
Ma con LabVIEW non c'è la possibilità di interargire con porte USB.
Come posso risolvere (o ovviare) il problema??
grazie a tutti in aticipo...
----------------------------------------
AUTORE: 2592
DATA :24/06/2009 - 20:16:22
----------------------------------------
Ciao Aster,
prova a guardare questo tutorial...
USB Instrument Control Tutorial
http://zone.ni.com/devzone/cda/tut/p/id/4478
Dovresti riuscire a configurare il tuo strumento e a comunicarci attraverso i driver VISA.
Ciao,
----------------------------------------
AUTORE: 2659
DATA :25/06/2009 - 08:43:36
----------------------------------------
non ho ancora provato, ma penso di riuscire a farcela..
grazie mille !!..
----------------------------------------
AUTORE: 1567
DATA :30/06/2009 - 13:29:37
----------------------------------------
Avete idea di come utilizzare LV per connettersi e inviare/ricevere dati utilizzando la modalità HID???
----------------------------------------
================================================================================
Menù
================================================================================
AUTORE: 2659
DATA :24/06/2009 - 15:13:53
----------------------------------------
Salve a tutti, sono ancora io, con un altro 'problema' per voi..
Vorrei inserire nel mio VI un menù a tendina come quello di tutti i programmi che girano sotto windows, ad esempio: file, modifica, visualizza,strumenti,....
E' possibile ciò (sper proprio di si)? e se si, come??
Grz a tutti.....
----------------------------------------
AUTORE: 301
DATA :24/06/2009 - 15:33:56
----------------------------------------
Edit >> Runtime menu.....
----------------------------------------
AUTORE: 2659
DATA :24/06/2009 - 16:21:53
----------------------------------------
E' vero!!!!!...grz mille!!!!:):)
----------------------------------------
AUTORE: 301
DATA :24/06/2009 - 17:20:33
----------------------------------------
de nada!
----------------------------------------
================================================================================
Property e Invoke node
================================================================================
AUTORE: 2659
DATA :25/06/2009 - 09:45:21
----------------------------------------
Qual'è la differenza tra 'Property node' e 'Invoke node' di un elemento (per esempio il waveform chart)?
quand'è che è meglio usare uno o l'altro ??
----------------------------------------
AUTORE: 43
DATA :25/06/2009 - 13:42:56
----------------------------------------
[quote="aster":2xucnc6b]Qual'è la differenza tra 'Property node' e 'Invoke node' di un elemento (per esempio il waveform chart)?
quand'è che è meglio usare uno o l'altro ??[/quote:2xucnc6b]
In modo molto poco professionale, possiamo considerare i "property nodes" come l'equivalente delle [u:2xucnc6b]Proprietà[/u:2xucnc6b] di un oggetto e gli "Invoke Node" l'equivalente dei [u:2xucnc6b]Metodi[/u:2xucnc6b] di un oggetto.
Se hai qualche nozione di programmazione ad oggetti la spiegazione finisce qua.
Abbassando ulteriormente di tasso tecnico del discorso, possiamo considerare le [u:2xucnc6b]Proprietà[/u:2xucnc6b] di un oggetto come se fossero i campi di una struttura (Cluster LabVIEW) simili a variabili di vario tipo con caratteristica di accesso WriteOnly o ReadOnly o R/W. Modificando queste variabili si modifica l'oggetto, il suo aspetto grafico, il suo comportamento ed in generale si alterano le sue caratteristiche.
I [u:2xucnc6b]Metodi[/u:2xucnc6b] sono funzioni/procedure che fanno parte dell'oggetto stesso e che possono essere richiamate passando gli opportuni parametri. I parametri che possono essere omessi hanno solitamente dei valori di default.
Anche i metodi possono modificare l'oggetto stesso o il suo comportamento.
bye
----------------------------------------
AUTORE: 2659
DATA :25/06/2009 - 14:32:19
----------------------------------------
risposta esauriente...
grazieee
----------------------------------------
AUTORE: 2659
DATA :25/06/2009 - 14:40:34
----------------------------------------
ti chiedo ancora una cosa anche se non centra con questa discussione...
come faccio in un grafico (waveform graph), mentre il vi è in esecuzione e il grafico 'si muove', a selezionare una parte di grafico, con la possibilità poi di andare a operare su quella parte, invece che su tutto il grafico ??
(è molto importante....)
----------------------------------------
AUTORE: 43
DATA :25/06/2009 - 14:54:00
----------------------------------------
[quote="aster":1cnia3eg]ti chiedo ancora una cosa anche se non centra con questa discussione...
come faccio in un grafico (waveform graph), mentre il vi è in esecuzione e il grafico 'si muove', a selezionare una parte di grafico, con la possibilità poi di andare a operare su quella parte, invece che su tutto il grafico ??
(è molto importante....)[/quote:1cnia3eg]
Di solito si mette un bel tastino di "freeze" che sospende l' "aggiornamento automatico" (autoscalatura asseX) in modo che l'operatore possa operare col grado di libertà concesso. Al termine l'operatore disinserisce "Freeze" ed il grafico torna ad essere nuovamente controllato in automatico dall'applicazione.
bye
----------------------------------------
AUTORE: 2659
DATA :25/06/2009 - 14:56:27
----------------------------------------
ma a me serve poter selezionare una parte del grafico per poterla poi analizzare (filtri,grafici,....)
----------------------------------------
AUTORE: 43
DATA :25/06/2009 - 14:58:52
----------------------------------------
[quote="aster":116xrsea]ma a me serve poter selezionare una parte del grafico per poterla poi analizzare (filtri,grafici,....)[/quote:116xrsea]
Mai sentito parlare di cursori?
sono disponibili solo per Graph ma non per i Chart . OVVIAMENTE!!!!!!!!!!!!!
bye
----------------------------------------
AUTORE: 43
DATA :25/06/2009 - 15:01:56
----------------------------------------
[quote="aster":cns7h6kq]ma a me serve poter selezionare una parte del grafico per poterla poi analizzare (filtri,grafici,....)[/quote:cns7h6kq]
Puoi anche impostare manualmente un diverso Xrange tramite du controlli numerici Xmin e Xmax oppure variando manualmente i limiti stessi del grafico, e su i limiti selezionati fare la tua analisi.
Mi sembra abbastanza semplice...
----------------------------------------
AUTORE: 2659
DATA :25/06/2009 - 15:04:52
----------------------------------------
è vero!!!..ma perchè posso mettere solo quelli orizzontali?? a me servirebbero quelli verticali...
e poi come faccio ad avere la parte selezionata (per analizzarla per esempio)??
----------------------------------------
AUTORE: 2659
DATA :25/06/2009 - 15:14:24
----------------------------------------
che stupido..risolto...
comunque non intendevo proprio questo....
forse non mi sono spiegto molto bene...
a me serviva proprio che quando vai col mouse sul grafico puoi cliccando selezionare una parte del grafico, come quando selezioni più file in una cartella (o nel desktop) su windows...
----------------------------------------
AUTORE: 43
DATA :25/06/2009 - 22:48:02
----------------------------------------
[quote="aster":1lz5iqm4]a me serviva proprio che quando vai col mouse sul grafico puoi cliccando selezionare una parte del grafico, come quando selezioni più file in una cartella (o nel desktop) su windows...[/quote:1lz5iqm4]
Allora torniamo all' ipotesi 1: usa i cursori.
Leggi i manuali, leggi l'help on line in merito, cerca esempi fra quelli installati e anche in internet, ma soprattutto sperimenta!
bye
----------------------------------------
AUTORE: 43
DATA :25/06/2009 - 22:54:25
----------------------------------------
[quote="aster":225cfst4]a me serviva proprio che quando vai col mouse sul grafico puoi cliccando selezionare una parte del grafico, come quando selezioni più file in una cartella (o nel desktop) su windows...[/quote:225cfst4]
Oppure abilita /rendi visibile la palette di pan/zoom [Graph Palette] e seleziona la porzione che ti interessa...
----------------------------------------
AUTORE: 2659
DATA :26/06/2009 - 11:45:13
----------------------------------------
[quote="paracarro":1e3b0du8][quote="aster":1e3b0du8]Oppure abilita /rendi visibile la palette di pan/zoom [Graph Palette] e seleziona la porzione che ti interessa...[/quote:1e3b0du8][/quote:1e3b0du8]
?? cioè??
----------------------------------------
AUTORE: 43
DATA :26/06/2009 - 12:00:39
----------------------------------------
[quote="aster":2uiiqdz7]?? cioè??[/quote:2uiiqdz7]
Tasto dx sul controllo grafico. Nel popup seleziona "Visible Items --> GraphPalette".
Con il programma in esecuzione, dopo aver "Freeze-ato" il grafico puoi scegliere la modalità di utilizzo del cursore sul controllo grafico
PAN
ZOOM(+ modalità di zoom e UNZOOM)
modalità gestione cursori (che non Ti interessano...)
----------------------------------------
================================================================================
dll bloccante
================================================================================
AUTORE: 1520
DATA :25/06/2009 - 10:53:18
----------------------------------------
Salve a tutti,
volevo sapere se qualcuno sa come si possa evitare (se si può) che Labview si blocchi quando invoca delle ddl.
Mi spiego meglio:
Io ho dei processi Labview che vanno in parallelo (Vi dinamici, loop paralleli, ecc.), quando uno di questi chiama una dll gli altri processi (che in teoria potrebbero lavorare tranquillamente) si bloccano finchè la dll non ritorna.
Io ho il problema che questa chiamata è piuttosto lunga perchè mi serve per movimentare un carrello e non ritorna finchè non è in posizione.
Grazie
Matteo
----------------------------------------
AUTORE: 43
DATA :25/06/2009 - 14:17:12
----------------------------------------
ciao Matteo[quote="professormister":79271az4]...,volevo sapere se qualcuno sa come si possa evitare (se si può) che Labview si blocchi quando invoca delle ddl.[/quote:79271az4]
Beh! diciamo che forse, si blocca... solo l'interfaccia.
Non dici nemmeno che versione di LabVIEW usi, e quali "prove" hai fatto in merito al Tuo problema.
L'unica cosa che si può fare da LabVIEW è
Nel diagramma, tasto dx sulla "Call Library Function". Da menu di popup scegliere "Configura..."
e poi
LV7
scegliere "Reentrant" al posto di "Run in UI thread"
LV8
scegliere su thread "Run in any thread" al posto di "Run in UI thread"
Ciò non toglie che se l'HMI è sollevata dal gestire la chiamata alla dll in questione, il thread che eseguirà quella robaccia resterà inevitabilmente bloccato.
[quote="professormister":79271az4]...Io ho dei processi Labview che vanno in parallelo (Vi dinamici, loop paralleli, ecc.), quando uno di questi chiama una dll gli altri processi (che in teoria potrebbero lavorare tranquillamente) si bloccano finchè la dll non ritorna.
Io ho il problema che questa chiamata è piuttosto lunga perchè mi serve per movimentare un carrello e non ritorna finchè non è in posizione.
[/quote:79271az4]
Direi che quella dll è fatta male.
La funzione all'interno della dll in questione, dovrebbe essere eseguita in un apposito thread, e ALMENO "pollata" una variabile (attraverso una chiamata ad un'altra funzione di libreria) che indichi lo stato di esecuzione, (in esecuzione, terminata + eventuale codice di errore)
bye
----------------------------------------
AUTORE: 278
DATA :25/06/2009 - 19:20:01
----------------------------------------
Ciao,
ti riporto la mia esperienza, che sebbene sia un`infinitesima parte di quella posseduta da Paracarro, puo` guidarti verso la soluzione.
Recentemente mi sono imbattuto nel tuo stesso problema, per comandare un hw di terze parti (non NI) ho dovuto importare una libreria di funzioni (dll appunto) all`interno di LV.
Inanzitutto ho trovato veramente utilissima l`opzione "Import Shared Library", per accedervi apri il pannello principale di LV, clicca su Tools->Import->Shared Library (.dll). Segui il wizard che ti appare, parendo dal file . dll e dal file di definizioni .h, importa automaticamente tutte le funzioni contenute nella .dll tramutandole in comodissimi subvi, con tanto di cluster d`errore.
Secondariamente, ho dovuto settare l`opzione "Run in any thread", proprio come ti ha suggerito paracarro. Senza questo accorgimento mi trovavo praticamente tutti i processi in attesa del termine della chiamata dll, anche quelli non direttamente collegati alla parte di codice che chiama la dll; proprio come hai notato tu stesso.
Penso che la causa di cio` sia il fatto che di default, tutti i processi LV vengono fatti ciclare all`interno dell`UI thread.
Non capisco invece perche` paracarro sostiene che la dll in tuo possesso sia fatta male. Secondo il mio modesto parere, e` "fatto male" il modo in cui la dll viene gestita da chi la chiama.
Nel mio caso specifico, il "driver", scritto il LV, che gestisce la comunicazione con la dll cicla in modo indipendente dal resto dell`applicativo, consentendomi di eseguire altre operazioni mentre la chiamata dll prosegue per la sua strada.
Ciao
----------------------------------------
AUTORE: 43
DATA :25/06/2009 - 22:44:21
----------------------------------------
Scusate. Per essere esageratamente chiaro, qualche acronimo:
HMI = Human Machine Interface = interfaccia uomo-macchina cioè gestione dei FrontPanels di LabVIEW
UI Thread = User Interface Thread cioè thread che gestisce i FrontPanel: Ridisegno, eventi di input ecc.
Ciao Esodar.
[quote="esodar1981":2xcxoz46]Non capisco invece perche` paracarro sostiene che la dll in tuo possesso sia fatta male. Secondo il mio modesto parere, e` "fatto male" il modo in cui la dll viene gestita da chi la chiama.[/quote:2xcxoz46]
Il motivo e' abbastanza semplice: a prescindere dall' ambiente di sviluppo e dal linguaggio di programmazione, una libreria di funzioni NON deve assolutamente "disturbare" in modo "incontrollabile" l'esecuzione del processo chiamante.
Per cui se la funzione in questione può restare secondi, minuti oppure ore ferma senza che il processo chiamante la possa "abortire" o interrompere (semplicemente xchè decido di chiudere l'applicazione in quel momento), la funzione secondo me è da riscrivere.
Sarebbe già diverso se fra i parametri in ingresso della funzione stessa, ci fosse un timeout, per il quale la funzione sarebbe costretta ad uscire cmq trascorso quel tempo, rispettando le indicazioni del chiamante.
Scusa, è come se con LabVIEW avessi una applicazione composta da molti loop che girano in parallelo tra cui uno lentissimo in grado, x esempio, di influenzare negativamente il processo ci "chiusura" dell'applicazione stessa xchè non interrompibile... ciò sarebbe inaccettabile!
----------------------------------------
AUTORE: 278
DATA :26/06/2009 - 09:57:14
----------------------------------------
[quote:3iavd87s]Per cui se la funzione in questione può restare secondi, minuti oppure ore ferma senza che il processo chiamante la possa "abortire" o interrompere (semplicemente xchè decido di chiudere l'applicazione in quel momento), la funzione secondo me è da riscrivere.[/quote:3iavd87s]
Messo in questi termini, non posso che concordare pienamente!
Allora tutte le funzioni IMAQ sono da riscrivere, dato che di fatto, una volta chiamata una funzione di questo tipo si può solo attendere il suo termine
Chi come me ha usato la funzione IMAQ Skeleton sa di cosa parlo..
----------------------------------------
AUTORE: 43
DATA :26/06/2009 - 10:15:51
----------------------------------------
[quote="esodar1981":fkgomxc6]Messo in questi termini, non posso che concordare pienamente!
Allora tutte le funzioni IMAQ sono da riscrivere, dato che di fatto, una volta chiamata una funzione di questo tipo si può solo attendere il suo termine
Chi come me ha usato la funzione IMAQ Skeleton sa di cosa parlo..
[/quote:fkgomxc6]
Non conosco IMAQ Skeleton, ma anche semplicemente leggere un certo numero casuale di caratteri dalla porta seriale può essere una follia.
Se i caratteri attesi non ci sono, il SW resta lì, piantato, senza possibilità di sblocco...
Per questo quando si legge da una seriale è buona norma leggere solo i caratteri già nel buffer di ingresso ed evitare di leggere se il buffer è vuoto...
bye
----------------------------------------
================================================================================
Acquisizione dati
================================================================================
AUTORE: 2533
DATA :25/06/2009 - 14:40:09
----------------------------------------
Ciao a tutti,
scusate se uso la sezione programmazione per chiedervi qsta info;
vorrei sapere dove posso trovare informazioni dettagliate sulle tecniche di acquisizioni dati e interfacciamento e magari i dispositivi più all'avanguardia e più utilizzati attualmente.Ah un'altra cosa: avreste qualche libro in particolare da consigliarmi.per favore aiutatemi.
Grazie mille
----------------------------------------
AUTORE: 301
DATA :26/06/2009 - 16:00:30
----------------------------------------
Ciao,
la domanda che poni non è ne facile ne tantomeno di veloce risposta.
Le tecniche di acquisizione dati dipendono dal sistema di acquisizione che devi implementare (se devifare un monitoring di una temp. ambientale per un anno o se vuoi acquisire una forma d'onda ad 1 GHz....).
Interfacciamento......cosa intendi?!?
Di dispositivi ce ne sono una marea, sicuramente National ne produce una vasta gamma, ma di produttori ce ne sono tanti (anche di diversi tipi di periferiche).
Qualche libro.....hai dato un'occhiata in rete?di libri non ne conosco, ma credo che nn ve ne siano molti che ti possano rispondere
----------------------------------------
AUTORE: 2533
DATA :27/06/2009 - 15:41:30
----------------------------------------
Innanzitutto grazie per avermi considerato........dato che temevo un mutismo generale.
Cmq,dovrei raccogliere quanto più materiale possibile sui dispositivi di acquisizione dati individuarne magari i più usati attualmente e studiarne un tipo in particolare (quello che trova maggiori applicazioni per esempio)...Mi serve per la mia tesi..al momento il mio docente non mi ha assegnato nessuna implementazione...e nessun libro da cui prendere spunto...Ho fatto diverse ricerche su ni ce ne sono tanti di dispositivi ma le nozioni ad essi concernenti mi sembrano poche...avrei bisogno di più informazioni su di essi..uffa...sono nel pallone...
Grazie ancora
----------------------------------------
AUTORE: 301
DATA :27/06/2009 - 15:52:05
----------------------------------------
Eh, lo so, ho capito bene qquello che intendi, ma la risposta temo rimanga la stessa.
Il mondo dell'acquisizione dati è moooooolto ampio, già la tua web cam (se ne hai una) è un acquisitore.
Alla fine, ciò che porta alla scelta di un acquisitore o un'altro sono proprio le necessità, il costo e poco altro ma tutto parte dal sapere cosa devi fare!
Si possono usare PLC anche come periferiche di acquis. dati.
Ci sono acq. dati standalone.
schede di acquisizione USB, PCI...
No, non è una domanda a cui poter rispondere in un forum.....
----------------------------------------
AUTORE: 1124
DATA :28/06/2009 - 12:53:04
----------------------------------------
Ciao
qualora non lo avessi già individuato questo è il link alle pagine di alcuni interessanti tutorial sulla acquisizione dati e sulle misure di NI: http://zone.ni.com/devzone/cda/tut/p/id/4523.
Un altro utile link di NI è il seguente: http://zone.ni.com/devzone/cda/tut/p/id/3536.
Ti segnalo un altro sito interessante di un produttore di strumentazione da cui puoi trarre qualche informazione sulle tecniche di misura di alcuni fenomeni fisici e tecnici: http://www.it.endress.com.
In generale un sistema di acquisizione dati è una parte fondamentale di un sistema di misura: una volta definite le necessità di quello che si vuole misurare occorre individuare il fenomeno fisico da rilevare e le sue caratteristiche, individuare il sistema per trasdurre in un segnale elettricamente misurabile tale fenomeno, valutare l'utilizzo di condizionatori di segnale, valutare il sistema per campionare questo segnale elettrico e definire come si vuole trattare, cioè elaborazione, monitoraggio, scrittura di dati su file, distribuzione delle informazioni,....
Non è complicato, ma occore esplorare molteplici aspetti per evitare di misurare baggianate e prendere abbagli.
----------------------------------------
AUTORE: 2533
DATA :29/06/2009 - 10:39:26
----------------------------------------
Grazie ad entrambi...Seguirò il vostro consiglio
Stefanog,ho visitato i link che mi hai suggerito...ci sono parecchie cose che mi potrebbero servire...Oddio spero tanto di venirne fuori perchè l'argomento è davvero molto vasto....non so da dove cominciare...
grazie ancora bye
----------------------------------------
AUTORE: 645
DATA :29/06/2009 - 12:38:04
----------------------------------------
Ma tu hai qualche idea di ciò che vuoi realizzare? Esistono un sacco di sistemi di acquisizione diversi, caratterizzati da particolari velocità di lavoro, possibilità di particolari elaborazioni, caratteristiche di robustezza e installazione diversificate per ambienti e situazioni...
Ma ciò che caratterizza un sistema in modo particolare è la sua funzione: cosa vuoi misurare?
Devi fare elaborazioni e controlli o solo acquisizioni? Hai bisogno di scansioni a tempi determinati (Real-Time) o non hai necessità di tempo esatto? Penso siano solo alcune delle domande iniziali che devi porti per poi cercare qualcosa...
----------------------------------------
AUTORE: 1124
DATA :29/06/2009 - 13:44:22
----------------------------------------
Ciao
a questo link http://www.aero.polimi.it/~folchini/bac ... /PCacq.pdf trovi un tutorial di un sistema di acquisizione dati redatto da un ricecatore del polimi.
Come suggerisce Magic prova a risolvere un problema di misura e controllo (es. mantenere costante, entro una banda di oscillazione, il livello dell'acqua in un serbatoio con una valvola di estrazione e una pompa di riempimento) e comincia con:
1) esaminare il fenomeno fisico cioe il livello di acqua che varia in funzione di eventi casuali (apertura valvola) e deterministici (la pompa che immette acqua se il livello scende);
2) determinare la tempistica di rilevazione che desideri (se il serbatoio è quello dell'acquedotto sarà una lettura a bassa frequenza, altrimenti se il serbatoio è di un liquido alimentare o farmaceutico che va dosato adotterai una frequenza di acquisizione più elevata);
3) individuare con che precisione globale ti interessa la misura (qui poi devi valutare l'apporto di ogni elemento che costituisce la catena di misura e attraverso al tecnica della propagazione degli errori arrivare al valore di incertezza effettivo).
4) individuare il miglior tipo di misurazione che puoi fare (gravimetrica, ultrasuoni, radar,..) e scegli quindi lo strumento più idoneo e gli eventuali accessori (tubi manometrici, ...);
5) verificare il segnale elettrico che eroga lo strumento che hai scelto e di conseguenza trova un sistema di acquisizione dati (una scheda, un data logger) in grado di interfacciarsi con il tuo strumento e gestire l'utenza pompa;
6) lo strumento va anche alimentato, quindi trova l'alimentatore;
7) se lo strumento eroga un segnale in corrente 4÷20mA e la scheda accetta solo segnali in tensione dovrai inserire una resistenza (occhio alla precisione);
7) se la caratteristica di conversione tra il segnale elettrico e il segnale fisico non è lineare occorre individuare la curva di conversione da implementare in un eventuale software;
individuare come collegare materialmente lo strumento alla scheda e scegli il cavo elettrico in funzione dell'ambiente in cui il sistema deve lavorare (cavo multipolare schermato da 0.5mmq), e gli eventuali morsetti per collegamenti intermedi;
9) individuare che tipo di segnale di comando accetta il sistema di potenza della pompa e confrontalo con il segnale elettrico che può generare il tuo sistema di acquisizione: devono essere compatibili altrimenti non riesci a pilotare la pompa, quindi se non lo sono individua come farli diventare e aggiungi anche questo ulteriore dispositivo: se il sistema di acquisizione dati (SAD) ha la possibilità di generare un segnale continuo nel campo 0÷10V, ma l'inverter presente nel quadro elettrico accetta un plitoaggio 4÷20mA dovrai interporre un convertitore magari con buone caratteristiche di isolamento per evitare che un incidente sull'inverter danneggi il SAD;
10) configurare la scheda di acquisizione o il data logger per leggere il segnale e interpretarlo;
11) configurare il segnale in uscita in modo che in funzione del valore di livello nel serbatoio possa pilotare la pompa per mantenere il valore entro i limiti.
Come vedi questo è solo un esempio come affrontare la soluzione di un sistema di controllo che presenta problemi di acquisizione, di controllo e di attuazione. Sicuramente ho omesso passi intermedi, ma il percorso bene o male è questo.
La cosa fondamentale, soprattutto in fase di progetto, è tenere sempre presenti i vincoli di sicurezza.Un SAD magari non avrà funzioni intrinseche di sicurezza, ma va configurato per evitare condizioni di lavoro critiche che poi qualche altro dispositivo dovrà risolvere: una misura sbagliata su un recipiente in pressione o un attuatore mal dimensionato rischia di essere la prima fonte di guai.
----------------------------------------
AUTORE: 2533
DATA :01/07/2009 - 22:21:29
----------------------------------------
Grazie ragazzi parlare con voi è sempre molto utile...Capisco cosa intendete e (stefanog)la tua meticolosa descrizione chiarisce ancora di più le idee.In realtà non mi è stato assegnato nulla in particolare..al momento solo ricerche a proposito dell'acquisizione dati...Cmq vedrò di proporre io qualcosa del genere al mio docente..speriamo bene...
grazie ancora bye bye
----------------------------------------
================================================================================
Invio dati tra VI
================================================================================
AUTORE: 2659
DATA :26/06/2009 - 09:55:12
----------------------------------------
Salve a tutti..scusate per la moltitudine di mex, ma sto facendo un programma abbastanza incasinato per me....
il mio attuale problema è: ho un VI principale, da cui tramite la selezione del menù (File>>Salva) apro un altro VI dedito appunto al salvataggio del file..Come faccio a passare i dati (nel mio caso un array di onde waveform) tra il VI principale e quell'altro, per salvare appunto i file??
grazie ancora...
----------------------------------------
AUTORE: 301
DATA :26/06/2009 - 13:01:10
----------------------------------------
Domanda mica facile......i modi sono tanti e dipende anche dalla struttura del vi.
Subvi
Code
variabili globali
.....
----------------------------------------
AUTORE: 2659
DATA :26/06/2009 - 13:23:49
----------------------------------------
E' una cosa di vitale importanza.... non posso fare niente senza dfi quello..
Per esempio, ho delle impostazioni in un subVI accessibile tramite il menù (opportunamente modificato da me). Quando si ha finito col subVI ho bisogno che queste informazioni vengano mandate al programma principale, e viceversa (dati mandati dal VI al subVI).....
non c'è nessuno che ha qualche idea di come fare?????
----------------------------------------
AUTORE: 4
DATA :26/06/2009 - 13:31:52
----------------------------------------
ha ragione Aris è una questione troppo vasta per essere affrontata su un post di un forum... è una questione di architettura del TUO sw, non esiste una regola magica che risolve tutte le situazioni
----------------------------------------
AUTORE: 2659
DATA :26/06/2009 - 14:02:18
----------------------------------------
okk.....ma non c'è un qualcosa che io possa fare??
----------------------------------------
AUTORE: 301
DATA :26/06/2009 - 15:41:32
----------------------------------------
Prova usando delle global variable, ma torno a ripetere è troppo dipendente dalla struttura di cio ch estai sviluppando!
----------------------------------------
AUTORE: 301
DATA :26/06/2009 - 15:50:22
----------------------------------------
Esempietto, ma ripeto:DIPENDE DA COSA STAI FACENDO!NON E' DETTO CHE SIA L'OTTIMO PER IL TUO CASO!.
----------------------------------------
AUTORE: 2659
DATA :26/06/2009 - 16:00:34
----------------------------------------
grazie..provo e poi ti so dire...
----------------------------------------
================================================================================
Scrittura - lettura file
================================================================================
AUTORE: 2659
DATA :29/06/2009 - 13:53:38
----------------------------------------
ciao a tutti !!...
Come faccio a salvare un array di stringhe, praticamente il contenuto di una lista, in un file (possibilmente txt), e poi
tornare a leggere questo array di stringhe, per poterlo poi sostituire alla lista..
Praticamente io ho una lista di stringhe (canale 1, canale 2, ....) che durante il corso del programma potrà essere modificata e salvata su un file. quando si torna ad eseguire il programma si vede l'ultima lista (ovvero quella salvata).
c'è qualc'uno che ha qualche idea?? grazie
----------------------------------------
AUTORE: 278
DATA :29/06/2009 - 14:47:13
----------------------------------------
Ciao,
credo che [url=http://www.ilvg.it/forum/viewtopic.php?f=1&t=3995:2tj5t078]questa[/url:2tj5t078] discussione possa fare al caso tuo, prendi visione degli esempi allegati.
Una volta che si è capito come salvare un'array di stringhe in un file, dovrebbe risultare semplice fare l'operazione inversa
----------------------------------------
================================================================================
Acquisizione per campione subitanea e posticipata
================================================================================
AUTORE: 2665
DATA :29/06/2009 - 14:34:13
----------------------------------------
Salve,
dovrei realizzare uno strumento capace di acquisire un segnale campione per campione,
impostando scheda di acquisizione e canale ; configurazione di acquisizione; range di ingresso e guadagno.
Inoltre devo visualizzare punto per punto l'acquisizione con indicazione di data e orario
Avere la possibilità di acquisire immediatamente (fine acquisizione comandata con pulsante di stop
e controlli di start e stop disabilitati) o in maniera posticipata impostando data e ora di inizio e fine
dell'acquisizione.
Avere la possibilità di richiamare un acquisizione precedentemente salvata con indicazione di inizio,
fine, durata della stessa e del periodo di acquisizione (controlli di start e stop disabilitati).
Il problema è che ho problemi con i while annidati..magari vi sono altre soluzioni..
Qualcuno può essermi d'aiuto?
Vi ringrazio anticipatamete.
----------------------------------------
AUTORE: 645
DATA :30/06/2009 - 08:14:29
----------------------------------------
Più che While annidati mi viene in mente che forse dovresti considerare le strutture ad eventi; tra gli eventi principali puoi inserire la gestione di un pulsante. Nel caso il pulsante non venga premuto (e non sia ancora stato premuto) puoi utilizzare il caso Timeout per acquisire i dati "normalmente" (anche se personalmente gestirei un caso a parte per problemi legati alla tempistica... infatti per esperienza conviene mantenere un intervallo di tempo basso nella struttura ad eventi e inserire un tempo di acquisizione a parte modificabile per i dati). Se il pulsante è stato premuto e fino a che rimane premuto (puoi usare gli Shift Register) acquisisici i dati con un altro intervallo di tempo (siamo nel caso che tu indichi come "acquisizione immediata"). Poi puoi pensare a come utilizzare il caricamento dei dati di un'acquisizione precedente (magari attraverso un semplice file di testo o un formato binario se non hai problemi di visualizzazione con altri programmi... oppure lavorando con un database se vuoi qualcosa di un po' più difficile da usare ma sicuramente più strutturato). Ed eventualmente puoi pensare ad un pulsante "salva" (altro caso della struttura ad eventi) che se premuto porta il VI in una routine interna di salvataggio dati (devi prevedere un qualche tipo di struttura che mantenga i dati durante le acquisizioni...).
----------------------------------------
================================================================================
Modifica Report
================================================================================
AUTORE: 2644
DATA :29/06/2009 - 20:29:08
----------------------------------------
Salve a tutti
Propongo oggi un nuovo quesito....
è possibile modificare un file report excel sostituendo solo i valori presenti in una sola colonna posizionata al centro del foglio di calcolo??
Ho provato con append table ma mi consente di sostituire solo un array 2D io dovrei sostituire una sola colonna, eventualmente 2 colonne ma posizionate nel file in zone diverse.
allego un'immagine del report da modificare.
----------------------------------------
AUTORE: 482
DATA :30/06/2009 - 07:50:28
----------------------------------------
Prova con i segnalibro o i bookmark...ah no, forse in excel si chiamano etichette.
Praticamente dai un nome alla cella e poi la richiami con la funzione labview e scrivi solo li dentro
----------------------------------------
AUTORE: 2644
DATA :30/06/2009 - 16:28:13
----------------------------------------
grazie gepponline per la risposta,
purtroppo il problema fondamentale è inserire solo una colonna di dati e le funzioni di LV mi permettono di inserire delle tabelle formate da Array 2D.
Continuo a cercare una soluzione.
Grazie ancora
----------------------------------------
AUTORE: 482
DATA :02/07/2009 - 14:21:38
----------------------------------------
[quote="alduuu":24zag0hl]
purtroppo il problema fondamentale è inserire solo una colonna di dati e le funzioni di LV mi permettono di inserire delle tabelle formate da Array 2D.[/quote:24zag0hl]
Non ho ancora provato a riprodurre il problema, ma una colonna di dati non è altro che un array 2D con dimensione colonne=1 no?
----------------------------------------
AUTORE: 2550
DATA :03/07/2009 - 08:42:55
----------------------------------------
Ciao, potresti provare ad utilizzare il vi "set cell value" contenuto in questa llb.
basta dargli le coordinate della cella e il valore da scrivere all'interno.
ciao
DVD
----------------------------------------
================================================================================
ACQUISIZIONE CAMPIONE PER CAMPIONE OGNI SECONDO
================================================================================
AUTORE: 2668
DATA :30/06/2009 - 14:52:53
----------------------------------------
Salve a tutti...
Vorrei acquisire da scheda un campione al secondo ma ho problemi con la temporizzazione. Infatti il programma creato acquisisce un campione al secondo ma la temporizzazione creata non è solidale con quella del sistema. Infatti un secondo del sistema equivale a più di un secondo del programma. Avreste qualche idea per risolvere questo problema?
Ringrazio anticipatamente per la risposta![color=#FF8040
----------------------------------------
AUTORE: 645
DATA :01/07/2009 - 07:59:38
----------------------------------------
Nel senso che il sistema evolve più lentamente del VI? Comunque per ottenere temporizzazioni precise puoi cercare le differenze tra i diversi blocchi di attesa (i blocchi Wait o Delay) per capire quale si addice meglio alle tue esigenze.
Poi puoi prendere in considerazione il passaggio alla programmazione RealTime: serve il modulo di LabView apposta e le schede di acquisizione devono avere i requisiti hardware compatibili con la temporizzazione.
----------------------------------------
================================================================================
waveform chart
================================================================================
AUTORE: 2659
DATA :30/06/2009 - 15:43:19
----------------------------------------
salve a tutti..
avrei un quesito da proporvi...
vorrei tramite un menù ring controllare la durata del mio grafico (waveform chart).
Il mio menù ring contiene una lista di tempi (5 secondi,10 secondi, 50,...). Se per esmpio è selezionata la voce 10 secondi, lail mio dato deve stare 10 secondi ad 'attraversare' tutto il mio grafico..
come si fa??
grazie..
----------------------------------------
AUTORE: 927
DATA :05/08/2009 - 13:48:06
----------------------------------------
Crea un Property node del Chart, e a seconda del valore del ring agisci sulle proprietà XScale.Minimum e XScale.Maximum
----------------------------------------
================================================================================
VI per Standard SLK ?
================================================================================
AUTORE: 947
DATA :01/07/2009 - 14:05:23
----------------------------------------
Salve a tutti...
qualcuno di voi si è mai trovato a dover creare file nello [b:2zzmyao9][u:2zzmyao9]Standard SLK[/u:2zzmyao9][/b:2zzmyao9]??
è uno standard di formattazione testuale per tabelle apribile per es con Excel del tipo
[code:2zzmyao9]
ID;P
P;PGeneral
C;Y1;X1;K"Row 1 Left Justify"
F;P0;FG0L
C;Y2;X1;K"Row 2 Right Justify"
F;P0;FG0R
C;Y3;X1;K"Total at Center"
F;P0;FG0C
C;Y1;X2;K11
C;Y2;X2;K22
C;Y3;X2;K0;ER1C2+R2C2
F;Y1;X2;FF2L
F;Y2;X2;FF2R
F;Y3;X2;F$2C
F;W1 2 25
E
[/code:2zzmyao9]
nel quale si stabiliscono con 'F' il formato della cella, con 'C' il contenuto, etc etc
Essendo testuale non è difficile fare dei VI base per l'insermento di valori in una data cella
o la sua formattazione..
ma se qualcuno di voi lo ha già fatto .. mi risparmierei un po' di tempo..
altrimenti .. pazienza ..
sarò io il primo e poi condividerò
Grazie in aticipo
----------------------------------------
================================================================================
main e subVI
================================================================================
AUTORE: 2659
DATA :03/07/2009 - 07:58:06
----------------------------------------
salve a tutti..
questo è il mio problema: ho diversi vi main che chiamano dei subVI (per esempio per settare le impostazioni del programma). questi main avrei la necessità che fossero aperti da un 'main principale' che però non dovrebbe avere un front panel, non dovrebbe cioè essere visto dall'utente.
Questo perchè avrei al necessità che cliccando su un tasto 'vai' di un VI, questo si chiudesse e ne aprisse un'altro. In quest'altro cliccando sempre su un tasto 'vai', dovrebbe chiudersi e riaprire il VI di prima.
Provando ho visto che non funziona, perchè appena metto il secondo VI nel block diagram del primo, per essere aperto, mi si cancella quello messo nel secondo VI...
qualc'uno ha una soluzione ??
P.S. forse non mi sono spiegato molto bene ??
----------------------------------------
AUTORE: 2659
DATA :03/07/2009 - 08:20:22
----------------------------------------
praticamente devo creare un VI main che quando tutto il progetto verrà compilato, non sia visibile. deve essere presente solo sotto nella barra delle applicazioni..
per capirci come il 'getting started' di labview, che quando si ha aperto qualcosa si vede sotto la scritta labview..
----------------------------------------
AUTORE: 278
DATA :03/07/2009 - 14:05:17
----------------------------------------
Ciao,
io risolvo il problema recuperando il riferimento del Vi e tramite l'invoke node vado a comandare l'apertura e la chiusura del front panel.
Clicca con il tasto destro del mouse sul file del vi refnum e segui il percorso Create>Method for VI class>Front Panel>Close.
Posto immagine.....
[attachment=0:23q0qtow]Close FP.jpg[/attachment:23q0qtow]
Ciao
----------------------------------------
================================================================================
integrale triplo di un segnale
================================================================================
AUTORE: 2654
DATA :03/07/2009 - 16:51:05
----------------------------------------
salve a tutti, qualcuno sà come potrei fare l'integrale triplo (con LabVIEW 8.0) di un segnale campionato, senza però mettere tre singoli integrali in cascata?
----------------------------------------
================================================================================
Pilotare Labview da remoto via rs232
================================================================================
AUTORE: 2644
DATA :06/07/2009 - 13:40:22
----------------------------------------
Salve a tutti
vorrei chiedere si può pilotare il labview da remoto tramite rs232??
In particolare ho un VI che tramite la pressione di 2 tasti "AVANTI e INDIETRO" legge un valore di un arrary. da remoto dovrei costruire una scatoletta con i due tasti e pilotare il VI.
ho fatto un po' di ricerche e ho visto che con un paio di componenti tipo MAX232 e un pic tipo 16f876 si può realizzare, ma avrei bisogno di aiuto visto che non sono molto pratico di elettronica.
Grazie a tutti
allego il vi in questione
----------------------------------------
AUTORE: 1168
DATA :06/07/2009 - 15:30:41
----------------------------------------
Se di elettrinica sei messo male, ma di informatica e LabVIEW sei abbastanza sgamato, ti conviene magari collegare i pulsanti ai terminali tipo "ready to send" o "clear to send" e andare a leggere in polling lo stato di quelli.
così con un pulsante e una resitenza sei a posto... in pratica usi la seriale come una scheda di acquisizione per digitali.
Ciaoaoaoao
Piter
----------------------------------------
AUTORE: 2644
DATA :06/07/2009 - 18:18:05
----------------------------------------
Ciao Pio grazie per la risposta...mi hai illuminato
Proverò ad implementare i tuoi suggerimenti e se posso ti aggiornerò chiedendoti altri consigli.
Grazie ancora
----------------------------------------
AUTORE: 2644
DATA :06/07/2009 - 19:08:58
----------------------------------------
Pio scusami
subito il primo dubbio....mi consigli quindi di non usare nessun componente e di usare solo i pin CTS e RTS della rs232...giusto??
se è così devo fare un circuito con i due pulsanti con le masse in comune collegate al pin della massa della seriale, i positivi dei pulsanti con una resistenza serie collegati rispettivamente ai pin CTS e RTS.
inoltre, se posso, il circuito deve essere alimentato o riesco a usare l'alimentazione della seriale e ultima cosa i resistori che resistenza devono avere.
Grazie per la tua disponibilità
allego una immagine le circuito che avrei pensato
----------------------------------------
AUTORE: 1168
DATA :06/07/2009 - 20:13:29
----------------------------------------
Dai un occhio a questa discussione...
viewtopic.php?f=30&t=3483
Mi sembrava di aver letto che si potesse fare e qui trovi qualche info in più, e soprattutti i piedini che puoi usare.
Dovresti poter usare RTS o DTR come alimentazione, e le resistenze connesse a questo segnale, mentre i due pulsanto ciudono verso massa. (i segnali sono presi tra resuistenza e plusante.... un pull-up insomma. Devi verificare se ti servono alti, altrimenti inverti la serie e fai un pull-down).
Ciao!
----------------------------------------
AUTORE: 645
DATA :07/07/2009 - 08:53:32
----------------------------------------
Puoi controllare lo stato dei piedini della porta seriale... Non ricordo bene come e non ho un esempio sottomano però se non sbaglio puoi controllare se lo stato dei piedini è alto o basso. Tu puoi modificare questo stato tramite una resistenza collegata e un circuitino semplice nel quale metti un interruttore, per esempio i pulsanti. Quando premi modifichi lo stato del piedino, in LabView controllo questo stato ad intervalli regolari e quando leggi una variazione (o meglio lo stato che ti interessa) fai partire l'azione di conseguenza.
Prova a cercare nel forum e a guardare sul sito www.ni.com nelle discussioni sulla porta seriale dove si parla di DTR e RTS. Nella sezione articoli dai un'occhiata al lavoro di Nicola su "Accesso diretto alle risorse I/O".
Anche questo può essere utile: http://it.wikipedia.org/wiki/EIA_RS-232
----------------------------------------
================================================================================
USB HID & Labview
================================================================================
AUTORE: 1567
DATA :06/07/2009 - 14:12:15
----------------------------------------
Ciao a tutti, sto cercando di implementare una comunicazione USB tra un uP (18F4550) e un PC con LW8.20, ho provato con i driver VISA e funziona a metà, nel senso che riesco solo a trasmettere da PC verso uP e non a ricevere.....ma comunque non era quello che volevo realizzare....
Vorrei provare ad utilizzare la perififerica USB senza il supporto dei driver di LW ma utilizzando i driver nativi in modo che la riconosca come HID.
Ho trovato in rete un esempio che funziona ed utilizza la dll MCHID.DLL, però il sw lato PC è scritto in VB ed io vorrei "convertirlo" in LV.
Il problema che incontro è nella prima funzione cioè quella per effettuare la connessione col dispositivo USB:
hidConnect Lib "mcHID.dll" Alias "Connect" (ByVal pHostWin As Long) As Boolean
La fuonzione è hidConnect Lib e il parametro passato è pHostWin ..... non riesco a capire cosa sia questo pHostWin e come rigenerarlo con LV!!!???
Avete idee??
Grazie...
----------------------------------------
AUTORE: 278
DATA :06/07/2009 - 20:03:14
----------------------------------------
[quote="strady77":xiqifoor]però il sw lato PC è scritto in VB ed io vorrei "convertirlo" in LV.[/quote:xiqifoor]
Fossi in te proverei ad utilizzare la libreria scritta in vb importandola in LV.
E` abbastanza semplice, dato che LV ti fornisce una wizard interativo per facilitare l`import, ci accedi dal pannello principale, clicca su Tools->Import->Shared Library (.dll) e segui le istruzioni riportate. Al termine della procedura, se hai fatto tutto correttamente, ti troverai con un set di subvi pronti all`uso (o quasi)
Spero di esserti stato d`aiuto
In bocca al lupo
----------------------------------------
AUTORE: 1567
DATA :07/07/2009 - 08:18:41
----------------------------------------
Grazie per l'aiuto ,ma l'importazione della dll in LV si pui fare solo se si ha anche il file .h e purtroppo per la mchid.dll non l'ho trovato
Per questo ho chiesto aiuto qui, sperando che altri abbiano avuto la mia stessa problematica ma vedo che nessuno ha mai usato USB in HID
----------------------------------------
AUTORE: 1567
DATA :08/07/2009 - 16:16:56
----------------------------------------
Ma sono l'unico ad utilizzare l'usb?????
Ke tristezza
----------------------------------------
AUTORE: 1078
DATA :09/07/2009 - 09:54:25
----------------------------------------
Ciao Strady,
Premetto che non ho mai usato un sistema USB chiamandolo direttamente da DLL, ma credo che funzionino come tutte le altre DLL.
Per usare le funzioni racchiuse in una DLL con LV puoi usare la <Call library Function node> configurandola in modo da puntare alla dll in questione dovresti ritrovarti disponibili tutte le funzioni pubbliche della libreria. Ovviamente sta a te conoscere il funzionamento della libreria. Trovi parecchi esempi in rete di come richiamare e utilizzare librerie esterne (anche create con altri linguaggi) con LV.
Spero di esserti stato di aiuto.
Buon lavoro.
----------------------------------------
AUTORE: 1567
DATA :09/07/2009 - 13:35:51
----------------------------------------
Ciao, grazie per la risposta, forse qui sono tutti in ferie!!
o dato il periodo in cassa!!
Cmq il problema è che ho importato la dll (mcHID.dll) da LV tramite il Call library Function node settato i parametri ma non funziona nulla...
anche le funzioni piu semplici non mi danno nessun return value, i parametri sono corretti sembra che non gestisca questa dll o sia incompatibile con labview!
A meno che non manki qualche passaggio particolare tipo registrazione della dll o altre cose ke nn conosco...per questo ho chiesto aiuto...
Questa mcHID.dll mi sta facendo impazzire....è semplice e banale ma non funziona!!
----------------------------------------
AUTORE: 1078
DATA :09/07/2009 - 15:31:23
----------------------------------------
Non mi risulta che si debbano registrare le DLL prima di richiamarle con il Call library function node.
Potresti fare un'altra prova?
Fai un vi esempio che richiama un'altra dll... e verifica che se con questa LV si comporta come ti aspetti. Se è così è un problema sulla dll, altrimenti potrebbe essere o un problema di installazione LV oppure altro. Nell'ultimo caso sarebbe il caso di chiedere a NI o cercare informazioni sul loro forum...
----------------------------------------
AUTORE: 1567
DATA :13/07/2009 - 16:38:59
----------------------------------------
Si in effetti non andava registrata, è solo che prima andava lanciata la connessione a tale dll e poi si poteva utilizzare.... ora riesco a comunicarci ....grazie...
----------------------------------------
================================================================================
Problema generazione report excel
================================================================================
AUTORE: 2624
DATA :07/07/2009 - 18:58:35
----------------------------------------
ciao!
vi posto il seguente VI con il seguente problema!
allora vorrei fare un report in excel e fin qui nessun problema ma come ho fatto io nel report non vedo i numeri dopo la virgola, ottengo un arrotondamento al numero intero cosa che non vorrei.
le celle in excel mi vengono impostate come generale e non come numero
come faccio???
----------------------------------------
AUTORE: 1050
DATA :08/07/2009 - 07:13:08
----------------------------------------
Ciao,
il problema è che stai usando %d che convert i tuo double in ingresso in un "decimale" effettuando l'arrotondamento.
Devi sostituirlo con %f o %g... cerca nel Labview HELP l'argomento "Format Specifier Syntax" per saperne di più.
ciao
----------------------------------------
================================================================================
variabili condivise nel block diagram o nel front panel?
================================================================================
AUTORE: 822
DATA :07/07/2009 - 20:46:33
----------------------------------------
ho creato nel mio progetto di LV8.5 un pò di variabili condivise.
ora le devo inserire in un vi. Quando le trascino nel front panel le vedo come dei normali controlli ai quali è stata linkata la variabile interessata, mentre se le trascino nel block diagram le vedo come icone. Che differenza c'è? Vanno trascinate nel block diagram o nel front panel?
Io per una questione di ordine le ho messe nel block diagram ma quando avvio il vi questo mi restituisce errore (dice che è impossibile utilizzare la variabile perchè non è avviato l'engine del variable manager), mentre se le uso sul front panel sembra funzionare..
----------------------------------------
AUTORE: 1078
DATA :08/07/2009 - 07:38:33
----------------------------------------
Le varibili condivise vengono usate per semplificare la condivisione dei dati tra due sistemi, un publisher e un subscriber. In uno dei due sistemi (solitamente il publisher) deve essere abilitato il motore che permette di mantere in memoria queste. Trovi molte informazioni sull'argomento sul sito NI. Intanto potresti leggere questo [url:3ptc3yic]http://digital.ni.com/public.nsf/allkb/A1767CAD4B99A3A6862572800067436A[/url:3ptc3yic].
La pubblicazione del dato su shared viables può avvenire in molti modi, quello più semplice è legargli direttamente un controllo. Labview esegue questa operazione come default se trascini una schared viariables sul front panel del tuo vi, abilita automaticamente anche il motore che gestisce le shared variables. Se invece trascini una shared viarable sul tuo block diagram, labview si aspetta o che il motore sia già stato abilitato o che venga abilitato manualmente; in questo caso si aspetta che la pubblicazione del dato venga eseguita via codice e non attraverso controllo posizionato sul front panel. Questa è la differenza tra i due modi di inserire in un vi le shared viariables, praticamente inesistente.
Buon lavoro.
----------------------------------------
================================================================================
Scansione file .dat
================================================================================
AUTORE: 424
DATA :08/07/2009 - 15:03:48
----------------------------------------
Buongiorno a tutti ragazzi!
Necessito dei draghi di LabVIEW x risolvere un problemino.
Vi spiego la situazione: ho dei files .dat in cui sono stati salvati una grande miriade di dati; avrei bisogno di eseguire uno scan di tali files, estrarre i dati e salvarli in formato .txt.
Non si tratta quindi di una operazione di rinomina dei file semplicemente in txt ma di estrarre i dati nel formato . dat e salvarli in un formato leggibile .txt
Grazie a tutti qualli che mi daranno una mano!
Buona giornata e buon lavoro a tutti!
----------------------------------------
AUTORE: 1078
DATA :08/07/2009 - 15:49:02
----------------------------------------
Ciao Cobain,
la cosa non mi sembra particolarmente complicata. Sposti tutti i file da cui devi recupere le info in una cartella, quindi attraverso la funzione che ti da tutti i file contenuti in una specifica cartella recuperi un array con le path dei file, li apri uno alla volta utilizzando un ciclo for, estrai le info che ti servono e le converti in string, salvi tutto in txt con il format che desideri. Ovviamente devi conoscere il formato del dato salvato nel file <*.dat>.
Buon lavoro.
----------------------------------------
================================================================================
sincronizzare segnali analogici su diagramma xy
================================================================================
AUTORE: 1308
DATA :09/07/2009 - 11:45:37
----------------------------------------
ho bisogno di rappresentare 3 linee su di un grafico.
ho 4 serie di valori , 2 di queste sono acquisite da analogico e 2 sono create manualmente da una tabella.
queste 3 linee che dovranno comparire contemporaneamente su di un grafico e tutte dovranno essere sincronizzate tra di loro grazie all' asse X che non puo essere in funzione del tempo ma di una delle tabelle acquisite.
per cercare di farmi capire meglio vi spiego cosa dovrei fare.
devo collaudare delle elettrovalvole proporzionali riduttrici di pressione.
quindi nel mio grafico mettero sulle ordinate la pressione e sulle ascisse la corrente che do alla bobina della elettrovalvola
nel grafico oltre all' interpolazione delle misure acuisite dovranno comparire 2 linee che sono i limiti, superiore ed inferiore che la mia valvola non dovra superare per poter essere classificata come buona.
spero di essere stato abbastanza chiaro.
grazie a chi mi dara qualche aiuto o consiglio
----------------------------------------
AUTORE: 1308
DATA :09/07/2009 - 11:52:02
----------------------------------------
[quote="iottand":2vlqdent]ho bisogno di rappresentare 3 linee su di un grafico.
ho 4 serie di valori , 2 di queste sono acquisite da analogico e 2 sono create manualmente da una tabella.
queste 3 linee che dovranno comparire contemporaneamente su di un grafico e tutte dovranno essere sincronizzate tra di loro grazie all' asse X che non puo essere in funzione del tempo ma di una delle tabelle acquisite.
per cercare di farmi capire meglio vi spiego cosa dovrei fare.
devo collaudare delle elettrovalvole proporzionali riduttrici di pressione.
quindi nel mio grafico mettero sulle ordinate la pressione e sulle ascisse la corrente che do alla bobina della elettrovalvola
nel grafico oltre all' interpolazione delle misure acuisite dovranno comparire 2 linee che sono i limiti, superiore ed inferiore che la mia valvola non dovra superare per poter essere classificata come buona.
spero di essere stato abbastanza chiaro.
grazie a chi mi dara qualche aiuto o consiglio[/quote:2vlqdent]
allego un immagine magai è utile
----------------------------------------
AUTORE: 1078
DATA :09/07/2009 - 12:03:29
----------------------------------------
Dovrai sicuramente usare dei grafici XY (XY graph).
Ti allego un piccolo esempio da cui prendere spunto.
Buon lavoro...
----------------------------------------
AUTORE: 1308
DATA :09/07/2009 - 13:58:50
----------------------------------------
[quote="Ricky":2fl2z8la]Dovrai sicuramente usare dei grafici XY (XY graph).
Ti allego un piccolo esempio da cui prendere spunto.
Buon lavoro...[/quote:2fl2z8la]
ti ringrazio per l'aiuto, ci ho lavorato su ma ancora non ho ottenuto cio che voglio ( vorrei...
)
il problema è che proprio non riesco ad immaginare come poter legare i valori tra di loro. credo sia un passo troppo avanti per me, questo tipo di VI
ti allego il tuo file da me adattato, magari mi trovi subito qualche castroneria...
quello che io mi sto chiedendo è: come faccio a legare un valore acquisito ad un numero corrispondente (teorico) della linea simulata ?
tu immagina un foglio di excel dove hai 4 colonne, una di queste quattro contiene i valori che genereranno l'asse delle x e le altre 3 le relative interpolazioni.
2 di queste interpolazioni vengono create con dei valori scritti a mano la terza colonna sono valori acquisiti
----------------------------------------
AUTORE: 1078
DATA :09/07/2009 - 14:28:30
----------------------------------------
Dal codice che hai inserito, anche l'asse delle x viene letta dinamicamente e acquisita dal'HW, giusto?
Quale delle due variabili ti da l'asse delle x: la tensione applicata alla bobina o la pressione?
----------------------------------------
AUTORE: 1308
DATA :09/07/2009 - 14:33:30
----------------------------------------
mi sono accorto solo dopo aver inviato il post che nel VI c'è un errore, in un bundle entra sempre lo stesso segnale, infatti avevo una linea a 45°.
il canale che deve essere l'asse x è la tensione della bobina
----------------------------------------
AUTORE: 1078
DATA :09/07/2009 - 14:39:20
----------------------------------------
Secondo me dovresti separare la lettura dei canali dal DAQmx. Come? Semplice: anzichè selezionare l'opzione <Analog 1D Wfm NChan NSamp> utilizza l'opzione <Analog 2D DBL>. Nella prima colonna dell'array bidimensionale ti troverai la tensione e nella seconda la pressione.
Vedi se così funziona....
----------------------------------------
AUTORE: 1308
DATA :09/07/2009 - 15:20:00
----------------------------------------
credo sia arrivato il momento per me di fare una pausa.
ho provato il tuo file, ma non mi si visualizza nulla nel grafico. la modifica del 2D DBL l'avevi gia fatta tu vero ?
----------------------------------------
AUTORE: 1078
DATA :09/07/2009 - 15:22:49
----------------------------------------
si... l'avevo già fatta io.
Verifica con una probe se corrispondono alla tensione alla pressione i valori che ti venono letti. potrebbe essere che devi fare una trasposta della matrice di valore e poi interpretarli...
----------------------------------------
AUTORE: 1308
DATA :09/07/2009 - 15:32:08
----------------------------------------
con questo tuo ultimo post ho capito che non devo solo rimandare ma prendere atto del mio livello e arrendermi.
ricky, grazie per l'aiuto
----------------------------------------
AUTORE: 1078
DATA :09/07/2009 - 15:33:52
----------------------------------------
mai arrendersi......
----------------------------------------
AUTORE: 1308
DATA :09/07/2009 - 15:38:57
----------------------------------------
hai ragione, infatti dopo un caffe e 10 sigarette sono ancora qui.
il probe lo avevo fatto e lo sto facendo tuttore, fin qui ci sono è l'ultima parte del tuo post che proprio non recepisco
[quote:2gk3v7w5]devi fare una trasposta della matrice di valore e poi interpretarli...[/quote:2gk3v7w5]
----------------------------------------
AUTORE: 1308
DATA :09/07/2009 - 15:41:43
----------------------------------------
se ti puo essere d'aiuto i valori di tensione vanno da 0 a 15 mentre i valori di pressione vanno da 0 a 30
----------------------------------------
AUTORE: 1308
DATA :10/07/2009 - 07:31:06
----------------------------------------
ci ho dormito un po sopra e fore un po è servito, ora vedo le curve limite ma non compare la curva acquisita, anche se vedo che il grafico si "autoscala" quindi qualcosa legge.
----------------------------------------
AUTORE: 1078
DATA :14/07/2009 - 08:07:09
----------------------------------------
I due limiti li vedi perchè usi lo stesso asse delle x mentre per i valori acquisiti usi un'asse differente... Quello acquisito. Ovviamente devi allineare tutto con lo stesso asse per visualizzare tutto.
La trasposta è un'operazione matematica, di geometria per l'esattazza, che si applica alle matrici. Trovi informazioni su wikipedia. Esiste una funzione LV che automaticamente ti traspone una matrice bidimensionale, quindi non è niete di complicato.
----------------------------------------
================================================================================
Vi exe e sub vi
================================================================================
AUTORE: 2674
DATA :09/07/2009 - 18:43:23
----------------------------------------
Ciao a tutti,
ho un main VI .exe che richiama un subvi. Vorrei che quando accade un determinato evento il VI.exe mi aprisse il front panel e mandasse in run il subvi.
Ho usato Invoke node e mi apre correttamente il front panel mentre per mandarlo in run ho usato un Invoke node con RUN VI ma non mi funziona.
Il problema è che mi apre il front panel del subvi ma non me lo manda in Run.
Come posso risolvere??
Grazie mille
Fede
----------------------------------------
AUTORE: 301
DATA :10/07/2009 - 06:53:50
----------------------------------------
prova cosi.....
----------------------------------------
AUTORE: 2674
DATA :10/07/2009 - 08:54:38
----------------------------------------
ho provato ma purtroppo non funziona...
----------------------------------------
AUTORE: 2674
DATA :10/07/2009 - 09:41:26
----------------------------------------
Allego l'immagine di quello che ho fatto sperando di essere piu chiaro...
----------------------------------------
AUTORE: 680
DATA :13/07/2009 - 16:11:59
----------------------------------------
ciao
con gli invoke node è la procedura corretta;
prova a spuntare sul sub-vi il flag come in figura.... (File --> VI Proprierties --> Execution)
ciao Alberto
[attachment=0:1mvl0cpw]prop.JPG[/attachment:1mvl0cpw]
----------------------------------------
================================================================================
Acquisizioni temporizzate
================================================================================
AUTORE: 2679
DATA :12/07/2009 - 17:00:19
----------------------------------------
Salve a tutti. Ho il seguente problema: devo realizzare un VI che possa effettuare delle acquisizioni temporizzate di campioni di tensione. Mi spiego meglio: ho la necessità di poter impostare un periodo di campionamento (ad es un campione ogni 3 secondi) e le acquisizioni possono essere fatte istantaneamente oppure impostando un tempo di start e uno di stop in modo che il VI acquisisca i campioni in questo periodo di tempo (ad es se voglio fare delle acquisizioni durante la notte). I campioni vanno visualizzati su un grafico in funzione del tempo (quindi se l'acquisizione inizia alle 8:00 l'asse delle ascisse inizierà appunto dalle ore 8:00). Ho avuto dei problemi nella realizzazione. Per l'acquisizione Start/Stop ho utilizzato un ciclo while che permette di acquisire i campioni non appena il tempo corrente sia >= al tempo di start e <= a quello di stop ( il ciclo while è commandato appunto da queste 2 condizioni messe in AND e il ciclo viene eseguito quando entrambe sono vere). Il problema è che per per poter far partire il programma devo mandare un "run continuously" altrimenti il VI non acquisisce (infatti con un semplice run dovrei far partire l'acquisizione quando T corrente >=T start ma a quel punto non avrebbe senso tutto ciò poichè risulterebbe un'acquisizione istantenea). E' possibile implementare tutto ciò mandando un semplice run. Inoltre ho notato che, sempre nell'acquisizione Start/Stop, una volta che il T corrente=T stop il grafico viene pulito e non si hanno più la visualizzazione dei campioni acquisiti...
Grazie mille a chiunque risponda
----------------------------------------
AUTORE: 645
DATA :13/07/2009 - 08:42:25
----------------------------------------
Mi sa che sei partito a programmare senza leggere molto di LabView... sbaglio?
Dai un'occhiata ai cicli annidati e alle condizioni di STOP prima di realizzare il tuo VI.
Per la gestione del tempo usa i blocchi temporali acquisendo il tempo corrente e confrontandolo con le soglie impostate (come forse hai già fatto) e utilizza i blocchi di ritardo (Wait... Wait until) per lasciar passare il tempo necessario tra un'acquisizione e l'altra.
Ad ogni ciclo passa i dati al grafico (Chart): quando il VI termina i dati rimangono nel grafico a meno che tu faccia qualche operazione di chiusura... ma puoi pensare anche ad una soluzione di salvataggio dati ogni tot di tempo, per esempio su un file Excel (Spreadsheet).
Se vuoi implementare anche una condizione di acquisizione manuale istantanea devi studiare i comportamenti dei pulsanti (Mechanical Action) in modo che ad ogni ciclo puoi controllare se il pulsante è premuto: se sì fai l'acquisizione, se no interrompi il ciclo (sempre che sia partito... puoi usare una variabile di confronto, un Flag... magari con gli Shift Register ma avere il valore al ciclo precedente) e aspetta che l'utente prema un altro pulsante (meglio dividere i due pulsanti... uno abilita l'acquisizione automatica, l'altro è solo acquisizione manuale... puoi passare dai Property Node per disabilitare il pulsante manuale quando l'automatico è inserito)...
Sono solo alcune idee: guarda gli esempi in LabView per iniziare e sbircia tra le pagine del forum... In questo modo potrai fare domande più specifiche e avere risposte più precise...
----------------------------------------
AUTORE: 2679
DATA :13/07/2009 - 17:20:46
----------------------------------------
[quote="MagicBotolo":80i61o3v]
Dai un'occhiata ai cicli annidati e alle condizioni di STOP prima di realizzare il tuo VI.
Per la gestione del tempo usa i blocchi temporali acquisendo il tempo corrente e confrontandolo con le soglie impostate (come forse hai già fatto) e utilizza i blocchi di ritardo (Wait... Wait until) per lasciar passare il tempo necessario tra un'acquisizione e l'altra.
Ad ogni ciclo passa i dati al grafico (Chart) [/quote:80i61o3v]
Si il VI che ho fatto ha tutte queste cose. Non ho problemi per l'acquisizione istantanea...ho avuto delle difficoltà per quella posticipata...non esiste un blocco che in base al tempo di start ritarda l'esecuzione del ciclo while ad esempio? se vuoi posso inviarti il VI che ho fatto io per chiarezza...
----------------------------------------
================================================================================
raccogliere campioni da un acquisizione
================================================================================
AUTORE: 1308
DATA :13/07/2009 - 10:38:39
----------------------------------------
ciao a tutti,
sto acquisendo due segnali analogici, e vorrei riportarli su un grafico XY per interpolarli.
siccome vorrei vedere crearsi una linea sul grafico e non un semlice punto, come posso prelevare dei punti dal segnale analogico e portarlo sul grafico ?
----------------------------------------
AUTORE: 1078
DATA :14/07/2009 - 07:38:41
----------------------------------------
I grafici XY sono tra i metodi più potenti messi a disposizione di LV per la rappresentazione di una o più variabili. Per visualizzare correttamente la variabile, gli devi passara sia l'array dei valori della stessa (Asse Y) sia l'arrai dei valori delle ascisse (Asse X). Entrambe gli array vanno inseriti in un cluster che comporrà il grafico. Se hai più variabili, a tutte le variabili passi il medesimo array per l'asse delle X, fai tanti cluster quante sono le variabili, ne fai un array e le passi al grafico.
Trovi molti esempi e informazioni sul funzionamento dei grafici XY nel find-examples e nella guida in linea di labview. Anche sul sito NI trovi qualcosa.
Dai un'occhio a questi esempi:
[url:13gubzab]http://decibel.ni.com/content/docs/DOC-3654[/url:13gubzab]
[url:13gubzab]http://zone.ni.com/devzone/cda/epd/p/id/4987[/url:13gubzab]
[url:13gubzab]http://zone.ni.com/devzone/cda/epd/p/id/2627[/url:13gubzab]
Buon lavoro.
----------------------------------------
================================================================================
Allocazione in memoria di un Array
================================================================================
AUTORE: 1567
DATA :13/07/2009 - 16:36:26
----------------------------------------
Ciao a tutti, stavo provando ad allocare in memoria un array di 64 bytes per poi inviare il valore del puntatore ad una DLL.... ho provato ad utilizzare il MoveBlock ma non ottengo risultati positivi
Esiste una funzione o un esempietto per allocare un array in una specifica locazione di memoria??
----------------------------------------
AUTORE: 43
DATA :14/07/2009 - 09:35:29
----------------------------------------
[quote="strady77":2h0yz8p9]Ciao a tutti, stavo provando ad allocare in memoria un array di 64 bytes per poi inviare il valore del puntatore ad una DLL.... ho provato ad utilizzare il MoveBlock ma non ottengo risultati positivi
Esiste una funzione o un esempietto per allocare un array in una specifica locazione di memoria??[/quote:2h0yz8p9]
Lascia perdere MoveBlock, e allocazioni tipo malloc in C o altro.
Inizializza un array di byte o una stringa, in modo che sia lunga 64 byte e passa il puntatore alla DLL senza problemi: il metodo funziona anche con vecchie versioni di LabVIEW.
----------------------------------------
================================================================================
Assegnare path assoluti
================================================================================
AUTORE: 2674
DATA :14/07/2009 - 08:43:26
----------------------------------------
Ciao a tutti,
ho due VI che comunicano attraverso delle cartelle condivise.
Vorrei assegnare i path a tali cartelle in modo da non doverle inserire ogni volta che apro i VI.
Come posso fare? Ho letto qualcosa su Absolute path ma non ho capito come fare...
Avete dei suggerimenti?
Grazie
----------------------------------------
AUTORE: 1078
DATA :14/07/2009 - 09:00:52
----------------------------------------
Cosa intendi per path relative? le due applicazioni girano sullo stesso pc e la directory condivisa è in locale o le applicazioni girano su pc differenti e la cartella condivisa è una cartella di rete?
----------------------------------------
AUTORE: 1078
DATA :14/07/2009 - 09:14:35
----------------------------------------
Scusa, ti ho risposto parlando di path relativi, mentre tu chiedevi di path assoluti. Comunque esistono delle costanti che ti permettono di risalire alle path in modo dinamico, attento però che alcune di queste cambiano in base allo stato dell'applicazione. Se gira in debug avranno un valore, mentre se gira come eseguibile cambiano valore. Quindi attenzione a quale costante usi!
Tutte le costanti le trovi nella Functions palete ---> Programming ---> File I/O ---> File Constants
----------------------------------------
AUTORE: 43
DATA :14/07/2009 - 09:29:28
----------------------------------------
Ciao
[quote="fede":14lzvx11]Ciao a tutti,
ho due VI che comunicano attraverso delle cartelle condivise.
Vorrei assegnare i path a tali cartelle in modo da non doverle inserire ogni volta che apro i VI.
Come posso fare? Ho letto qualcosa su Absolute path ma non ho capito come fare...
Avete dei suggerimenti?
Grazie[/quote:14lzvx11]
1) metodo un po' grezzo: memorizza i path come default nel controllo.
scrivi il path nel controllo poi tasto dx del mouse e scegli "data operation" -> "make current value default". Salva il VI.
2) scrivi il path in un file di testo e caricalo da quel file quando avvii il Tuo VI.
bye
----------------------------------------
AUTORE: 2674
DATA :14/07/2009 - 10:41:28
----------------------------------------
Ciao,
mi spiego meglio...
Ho un VI eseguibile su un pc mentre l'altro VI è richiamato da TestStand e comunicano attraverso 4 cartelle di rete condivise...
----------------------------------------
AUTORE: 1078
DATA :14/07/2009 - 11:44:01
----------------------------------------
Penso che il secondo metodo indicato da Paracarro sia quello più efficente e flessibile....
Ciao.
----------------------------------------
================================================================================
Cambio binding a runtime
================================================================================
AUTORE: 2683
DATA :15/07/2009 - 07:18:16
----------------------------------------
Salve a tutti e complimenti per il nuovo sito.
Passo a spiegare il mio problema.
Ho la necessita' di gestire 2 o piu' cRIO che controllano delle macchine automatiche e sto tirando su l'interfaccia grafica di gestione.
Ho alcuni comandi da inviare alle macchine che sono comuni e vorrei poter far si' che sia possibile selezionare la macchina a cui inviare il comando usando sempre gli stessi set di controlli sull'interfaccia grafica.
Avendo usato della shared variables network published mi chiedevo se esiste la possibilita' di cambiare il binding di un controllo a runtime in modo da, tramite un case, assegnare il giusto percorso della shared variable al controllo.
Ho trovato un documento su NI [url:1go4aqzh]http://digital.ni.com/public.nsf/allkb/2E8BAD0EA218A7558625712E0003F044[/url:1go4aqzh] ma non sembra funzionare su cRIO sia nel caso "CON DSC" che nel caso "SENZA DCS".
Qualcuno ha soluzioni alternative che ha gia' sperimentato?
Ciao e grazie anticipatamente.
----------------------------------------
AUTORE: 43
DATA :17/07/2009 - 12:00:53
----------------------------------------
[quote="pipeolo":2vnt8jqf]... mi chiedevo se esiste la possibilita' di cambiare il binding di un controllo a runtime ...[/quote:2vnt8jqf]
Guardando all'Help di LabVIEW Sì
[quote="LabVIEW Help"]
[u:2vnt8jqf][b:2vnt8jqf]Data Binding:Path Property[/b:2vnt8jqf][/u:2vnt8jqf]
...
[b:2vnt8jqf]Available in Run-Time Engine and Real-Time Operating System Yes
Permissions Read/Write
Settable when the VI is running Yes [/b:2vnt8jqf]
Loads the front panel into memory No
Need to authenticate before use No
Loads the block diagram into memory No
Remote access disallowed No
Must wait until user interface is idle No
Available with control VIs No
Available with global VIs No
Available with strict type definitions Yes
Available with polymorphic VIs No
...
----------------------------------------
AUTORE: 2683
DATA :17/07/2009 - 14:13:05
----------------------------------------
[quote:3uc8tgt5]Data Binding:Path Property[/quote:3uc8tgt5]
In realta' avevo gia' provato ad utilizzare tale proprieta' ma senza risultato:
salta fuori un errore di questo tipo:
Error 1522 occurred at Property Node (arg1) in ....
Labview (Hex 0x5F2) The BindingPath property can only be written when control is already bound to a PSP URL.
La cosa strana e' che il controllo nasce gia' con un binding alla shared variable residente sul cRIO. Non vorrei che fosse un problema di percorso! In realta' come si indirizza una shared var. presente sul CRIO?
Quando faccio il binding dal controllo il percorso risultante nella casella Path del tab Data Binding e' SCN1\commands.lvlib\CMD_REM (dove SCN1 e' il nome del cRIO).
Ho provato ad usare stesso path come valore della proprieta' BindingPath ma salta fuori l'errore di cui sopra.
Ho provato anche a cambire il nome in IP e usare o meno il \\ ma niente.
----------------------------------------
================================================================================
POWER STATUS
================================================================================
AUTORE: 2516
DATA :16/07/2009 - 10:29:02
----------------------------------------
salve a tutti..
Ho un piccolo problema del tipo gira un VI su di un portatile e devo emettere degli alarm quando va via l'energia elettrica, ho visto su qualche manuale datato di tecniche di programmazione labview che è possibile sapere lo stato di alimentazione e batteria tramite dei metodi di oggetti Active-X. che io non conosco molto e non ho trovato con il riferimento di questo manuale. Qualcuno sa darmi indicazioni di come posso fare questa cosa??
grazie mille anticipatamente..
----------------------------------------
AUTORE: 1078
DATA :16/07/2009 - 14:54:22
----------------------------------------
Ciao,
la tua domanda non è molto banale come potrebbe sembrare a prima impressione. Io ti posso iutare un pochino dandoti delle informazioni non legate a labview. Utilizzando la kernel32.dll di windows (la richiami con il call library function node) e utilizzando la funzione GetSystemPowerStatus puoi interrogare lo stato della batteria di systema.
Trovi info sulla libreria qui: [url:12rz2yfe]http://www.sybase.com/detail?id=47705[/url:12rz2yfe]
[url:12rz2yfe]http://msdn.microsoft.com/en-us/library/aa373212(VS.85).aspx[/url:12rz2yfe]
Come integrarle in labview non mi è molto chiaro.
Comunque, se trovo altre info o risolvo il problema dell'integrazione in LV te lo farò sapere.
Buon lavoro.
----------------------------------------
AUTORE: 43
DATA :16/07/2009 - 16:25:18
----------------------------------------
[attachment=0:3skiomsd]ReadSystemPowerStatus.vi[/attachment:3skiomsd]
i commenti sono tratti dal sito M$DN Library
bye
----------------------------------------
AUTORE: 43
DATA :16/07/2009 - 20:00:16
----------------------------------------
Chiedo scusa ma ho allocato 8 byte al posto di 12.
La struttura comprende infatti 4 campi da 1 byte e 2 DWORD (DoubleWORD) non 2 WORD.
Sicuramente chi ha scaricato e l'ha provato avrà visto chiudersi LabVIEW con qualche errore...
[attachment=0:2jcfm4b1]ReadSystemPowerStatus2.vi[/attachment:2jcfm4b1]
Cmq usando il Tasto "Run Continuously " su questo VI e facendo girare questo VI su un PC portatile con WINZOZZ, si può giocare a togliere e inserire il jack dell' alimentazione: il byte 0 dell'array varrà 0 mentre è in uso la batteria e 1 quando il jack di alimentazione è inserito
----------------------------------------
================================================================================
Estrazione ciclica da un array
================================================================================
AUTORE: 2644
DATA :18/07/2009 - 20:22:56
----------------------------------------
Salve
avrei l'esigenza di estrarre i valori da un array in modo ciclico...
se per esempio ho un Array costante di 4 elementi, 1,2,3,4 quando ho estratto l'ultimo valore come faccio ad estrarre nuovamente il primo?
Grazie per l'aiuto
----------------------------------------
AUTORE: 278
DATA :19/07/2009 - 01:27:20
----------------------------------------
Ciao,
dovresti memorizzare l`arrray, composto da 4 numeri, in uno shift register collegato ad un while loop.
All`interno del while colleghi lo shift register in un for loop abilitando l`autoindexing (credo sia abilitato di defalut)
In questo modo, per ogni iterazione il ciclo for ti propone in sequenza i valori contenuti nell`array, indicizzandoli automaticamente.
Arrivato alla fine "dell`estrazione", il for loop termina e tramite il while riprendi il ciclo da capo.
Buonanotte
----------------------------------------
AUTORE: 2644
DATA :19/07/2009 - 02:17:32
----------------------------------------
Grazie mille per la risposta funziona benissimo
buonanotte
----------------------------------------
================================================================================
leggere stato pin porta parallela
================================================================================
AUTORE: 2644
DATA :19/07/2009 - 15:50:17
----------------------------------------
Salve
avrei l'esigenza di leggere lo stato dei pin 10,11,12 della porta parallela.
con il VI "in port" riesco a leggere fino al pin 9. come posso fare?
grazie
----------------------------------------
AUTORE: 2644
DATA :19/07/2009 - 16:14:29
----------------------------------------
dopo qualche ricerca ho letto che i pin da 10 a 15 corrispondono al registro Base+1.
E' giusto??
Grazie ancora
----------------------------------------
AUTORE: 680
DATA :20/07/2009 - 15:57:35
----------------------------------------
ricercando i vecchio post ho trovato questo:
[url:3cgoxfou]http://www.ilvg.it/forum/viewtopic.php?f=1&t=1438&p=5626&hilit=lpt#p5626[/url:3cgoxfou]
come vedi dalla tabellina che pubblicai nel post di allora, i pin 10, 11 e 12 fanno parte del registro di ingresso che ha indirizzo "base +1"... eventualmente, guarda il VI che è postato....
ciao...
----------------------------------------
================================================================================
report generation MS Office toolkit 1.1.2
================================================================================
AUTORE: 2644
DATA :20/07/2009 - 20:47:54
----------------------------------------
Salve a tutti
Qualcuno ha una versione di prova del report generation MS Office toolkit 1.1.2.
in azienda dove sto svolgendo la tesi hanno un Labview 8.5 e vorrei provare il toolkit per poi eventualmente proporlo per l'acquisto.
Grazie
----------------------------------------
AUTORE: 2592
DATA :21/07/2009 - 14:12:53
----------------------------------------
Ciao alduuu,
non puoi trovare ufficialmente online il Report Generation Toolkit 1.1.2 in quanto prima della versione 8.6 questo toolkit non era licenziato e quindi bastava installarlo ed era già attivo. Dalla versione 8.6 in su invece il toolkit è licenziabile e quindi è possibile scaricarlo in versione evaluation facendo il login dal sito www.ni.com e andando su "download software-> service resource center".
Ciao,
----------------------------------------
AUTORE: 2644
DATA :21/07/2009 - 14:35:08
----------------------------------------
Grazie ryan per la risposta, ma la versione 1.1.2 pur volendo non riesco a trovarla neanche non ufficialmente.
potresti magari indicarmi qualcke soluzione per trovarla...non essendo licenziata ho cercato su emule e su un po' di siti ma niente.
Grazie
----------------------------------------
AUTORE: 2592
DATA :21/07/2009 - 17:17:25
----------------------------------------
ti ho mandato un mex privato!
ciao,
Andrea
----------------------------------------
AUTORE: 2644
DATA :21/07/2009 - 19:05:38
----------------------------------------
scusa se disturbo ancora ma non riesco a leggere il messaggio privato che mi hai mandato.
Forse c'è qualche problema con il server.
ti ho mandato in privato l'indirizzo di posta...magari puoi contattarmi con quello.
Ti ringrazio ancora e a buon rendere
----------------------------------------
AUTORE: 2592
DATA :21/07/2009 - 21:13:34
----------------------------------------
anche io non riesco a leggere il tuo messaggio...
Va beh, riassumendo ti chiedevo in quale azienda stai facendo la tesi. Dato che immagino siano nostri clienti puoi chiamare lo 02-413091 e parlare con il nostro tecnico commerciale di riferimento e vedere se è possibile venirsi incontro con una soluzione.
Tutto qui.
Ho visto che hai postato anche sul forum NI e ti ha risposto il mio collega Matteo. Come ti ho detto anche io puoi scaricare le versioni evaluation dell'ultima versione, quindi al massimo puoi installare LabVIEW 8.6 o 8.6.1 ed il report generation toolkit. Tanto se stai usando la versione 8.5.1 non ci sono grosse differenze. Piuttosto che impazzire su come ottenere il toolkit credo sia piu semplice scaricarti la versione 8.6.
Buona serata,
Andrea
----------------------------------------
AUTORE: 2644
DATA :23/07/2009 - 10:11:13
----------------------------------------
Ciao Andrea
continuo a chiederti aiuto
Ho seguito il tuo consiglio ed ho fatto aggiornare la versione di labview a 8.6 ed installato il report generation toolkit 1.1.3, ma con mia grande disperazione non funziona bene.
quando va in esecuzione il New report.Vi mi restituisce un errore 2147352573 impossibile trovare membro.
uso un new Reopot.vi e come modello carico un file excel ma niente.
uso office 2000.
Su un altro PC il vi funziona ed usa office 2003 ....
Come posso risolvere????
----------------------------------------
AUTORE: 2644
DATA :23/07/2009 - 10:15:59
----------------------------------------
Posto anche il VI in questione
----------------------------------------
AUTORE: 2592
DATA :23/07/2009 - 10:56:22
----------------------------------------
Ciao,
la versione 1.1.3 del toolkit supporta solo Office 2003/2007, è per questo che ottieni l'errore.
http://digital.ni.com/public.nsf/allkb/ ... enDocument
Ciao,
Andrea
----------------------------------------
================================================================================
Monitor dei Processi di Win per Diagnostica
================================================================================
AUTORE: 947
DATA :21/07/2009 - 09:24:43
----------------------------------------
..
Salve a tutti,
spiego brevemente la mia esigenza:
ho realizzato un programma Exe in LV (ma poco importa .. poteva essere realizzato in un qualunque altro modo!) e adesso mi serve tenere sott'occhio l'uso che quel programma fa della [u:292dvx3q]Memoria RAM[/u:292dvx3q] e della [u:292dvx3q]Memoria Virtuale[/u:292dvx3q] man mano che lavora.
Soluzione "[b:292dvx3q]manale[/b:292dvx3q]":
apro il Task Manager di Win, mi metto in Processi, rendo visibili le colonne che mi interessano ([u:292dvx3q]Utilizzo Memoria[/u:292dvx3q] e [u:292dvx3q]Dimensione Memoria Virtuale[/u:292dvx3q]) e leggo di tanto in tanto i valori corrispondenti al processo del mio Exe.
Soluzione "[b:292dvx3q]automatica[/b:292dvx3q]":
voglio realizzare un altro Exe in LV che riesca a leggere questi dati relativi ad uno dei processi in lista (tramite un ProcessID o NomeImmagine del processo suppongo) probabilmente facendo uso delle [u:292dvx3q][b:292dvx3q]API Win32[/b:292dvx3q][/u:292dvx3q] ([u:292dvx3q]Kernel32.dll[/u:292dvx3q] ? [u:292dvx3q]User32.dll[/u:292dvx3q] ?) e crei poi un log.txt con questi dati ad intervalli regolari.
La domanda:
[b:292dvx3q]qualcuno di voi ha realizzato dei VI (o abbia una certa idea di come fare) che riescano ad accedere al ProcessID dei Processi in running per poter poi accedere alle info di memoria allocata ???[/b:292dvx3q]
Io so come poter utilizzare il LV le funzioni contenute in una DLL,
ma nn ho idea di quale DLL e di quale funzione (e la sua interfaccia o signature) possa fare al caso mio...
potete darmi una mano?
Grazie in anticipo
Bye!
----------------------------------------
AUTORE: 947
DATA :21/07/2009 - 15:14:59
----------------------------------------
..
P.S. :
Se conoscete un altro metodo per [b:1zax87de]monitorare l'uso della memoria fisica e virtuale di un processo[/b:1zax87de] ..
.. tipo un programmino esistente in rete ..
.. una utilty dello stesso Windows ..
.. qualunque cosa insomma ..
mi servirebbe tanto !!
Certo .. io vorrei integrare il monitor del software all'interno del sw stesso .. ma magari ci penserò dopo ..
.. per adesso mi accontento di qualunque cosa !!
Grazie!!
----------------------------------------
AUTORE: 947
DATA :21/07/2009 - 19:24:47
----------------------------------------
..
per il [u:293xzrm2][b:293xzrm2]P.S[/b:293xzrm2][/u:293xzrm2]. mi rispondo da solo!
Esiste in Windows una ottima utility che permette di creare dei monitor grafici tramite dei [b:293xzrm2]Counter[/b:293xzrm2] da definire da una lista, e che possono essere anche loggati in file binari o testuali.
Si chiama [u:293xzrm2][b:293xzrm2]Performance[/b:293xzrm2][/u:293xzrm2] e si trova fra gli [b:293xzrm2][u:293xzrm2]Administrative Tools[/u:293xzrm2][/b:293xzrm2], oppure basta scrivere "[u:293xzrm2][b:293xzrm2]perfmon.msc[/b:293xzrm2][/u:293xzrm2]" dalla linea di comando.
All'inizio sembra un po' ostico .. ma poi ti rendi conto che è semplice e molto utile ..
Però mi sono appena accorto che sul PC di casa non trova nessun Counter!! .. in ufficio invece sì !!
Forse funziona solo se c'è un Server che gestisce il dominio di rete ??
Non saprei .. cmq a me serve in ufficio per fortuna!!
Cmq rimane aperta la domanda di come fare con il LV !!
Grazie!!
----------------------------------------
AUTORE: 947
DATA :27/07/2009 - 10:42:01
----------------------------------------
..
Ho trovato qualcosa di utile allo scopo nell'esempio di LV 7.1 [u:261vu7w0][b:261vu7w0]SimpleTeskMonitor.vi[/b:261vu7w0][/u:261vu7w0] che usa i componenti [b:261vu7w0][u:261vu7w0].Net[/u:261vu7w0][/b:261vu7w0].
L'esempio mostra come è possibile usare le classi:
[list:261vu7w0][*:261vu7w0][b:261vu7w0][u:261vu7w0]System.Diagnostics.PerformanceCounter[/u:261vu7w0][/b:261vu7w0] per ottenere le info sull'uso della memoria, della CPU e altro[/*:261vu7w0]
[*:261vu7w0] [b:261vu7w0][u:261vu7w0]System.Diagnostics.Process[/u:261vu7w0][/b:261vu7w0] per ottenere l'elenco e gli ID dei processi allocati in quel momento.[/*:261vu7w0][/list:u:261vu7w0]
Insomma era quello che cercavo !!
Solo un problema però... non mi è chiaro come si usa il [b:261vu7w0][u:261vu7w0]Constructor Node[/u:261vu7w0][/b:261vu7w0] della palette [b:261vu7w0][u:261vu7w0].Net[/u:261vu7w0][/b:261vu7w0] ...
Lo aggiungo ad un VI, doppio-click e scelgo la classe System.Diagnostics.PerformanceCounter, chiudo e non succede nulla... non si auto configura come immagino debba fare, e non mi mostra il nome dei paramtri di configurazione della classe (i parametri del costruttore)... insomma suppongo debba diventare come quello dell'esempio ma questo non accade...
Qualcuno può illuminarmi sull'uso del [b:261vu7w0][u:261vu7w0]Constructor Node[/u:261vu7w0][/b:261vu7w0] della palette [b:261vu7w0][u:261vu7w0].Net[/u:261vu7w0][/b:261vu7w0] ??
Grazie!!
----------------------------------------
================================================================================
Errore file .exe che richiama subvi
================================================================================
AUTORE: 2674
DATA :22/07/2009 - 14:32:51
----------------------------------------
Ciao a tutti,
ho un problema con un Vi .exe che manda in run un subvi tramite l'invoke node (run vi).
Se il main non è .exe funziona tutto mentre quando creo l'eseguibile del main apre il Front Panel del subvi ma mi dà il seguente errore: The VI is not executable. The full development version of LabView is required to fix the errors.
Ho provato a creare eseguibile del subvi, ho provato ad attribuire al subvi la proprietà Run when opened ma non funziona...
Che posso fare??
----------------------------------------
AUTORE: 43
DATA :22/07/2009 - 14:59:44
----------------------------------------
[quote="fede":38yldevr]Ciao a tutti,
ho un problema con un Vi .exe che manda in run un subvi tramite l'invoke node (run vi).
Se il main non è .exe funziona tutto mentre quando creo l'eseguibile del main apre il Front Panel del subvi ma mi dà il seguente errore: The VI is not executable. The full development version of LabView is required to fix the errors.
Ho provato a creare eseguibile del subvi, ho provato ad attribuire al subvi la proprietà Run when opened ma non funziona...
Che posso fare??[/quote:38yldevr]
correggi l'errore.
Se il subvi non è eseguibile (The VI is not executable),vuol dire che viene caricato in memoria, ma non può diventare "running" xchè il suo stato precedente non è "idle", bensì "bad" ="freccia spezzata"=VI non runnabile.
Il VI va inserito nell'eseguibile (vedi opzioni di compilazione) e richiamato opportunamente.
----------------------------------------
AUTORE: 2674
DATA :23/07/2009 - 16:01:53
----------------------------------------
Risolto!!!Sbagliavo come inserivo nel progetto il sub vi.
Grazie mille!!!
----------------------------------------
================================================================================
Info software di valutazione (demo)
================================================================================
AUTORE: 2695
DATA :24/07/2009 - 16:04:50
----------------------------------------
Salve a tutti,
sono nuovo, appena approdato nel mondo LabView. Ho avuto modo di navigare un pò nel forum e ho visto che ci sono un sacco di cose interessanti.
Non ho mai usato LabView ma lo sto seriamente prendendo in considerazione per utilizarlo in un progetto di ricerca a cui collaboro.
Al momento ho la necessità di "sniffare" i dati che circolano su un bus RS485 utilizzato per far comunicare alcune schede elettroniche.
Ho un convertitore RS485/USB e stavo pensando di utilizzare LabVIEW per acquisire ed elaborare i dati.
Poichè non abbiamo la disponibilità economica per aquistare una licenza, mi chiedevo se la versione di valutazione faceva al caso nostro.
Quali sono i limiti della demo (oltre ai 30 giorni di prova)?
Riesco ad acquisire dati dalla porta USB con la demo?
Il progetto di ricerca non ha fini commerciali quindi credo che sotto questo punto di vista siamo in regola...
Grazie mille
Luca
----------------------------------------
AUTORE: 278
DATA :27/07/2009 - 19:31:59
----------------------------------------
Ciao e benvenuto su ILVG.it!
Se hai la necessita` di sniffare dei dati che viaggiano su 485 puo` andare benissimo un qualsiasi sniffer seriale, ai tempi avevo provato [url=http://www.kmint21.com/serial-port-monitor/:318oqih0]questo[/url:318oqih0].
Se pensi invece di interagire con essi LabVIEW puo` essere un`ottima scelta, se non erro, le porte usb vengono riconosciute come COM dal sistema operativo (imagino usi XP o Vista) e ci puoi interagire sfruttando delle funzioni (in labview si chiamano VI o subVI) VISA gia` presenti nel pacchetto base cosi` come in quello dimostrativo 30 gg.
Oltre ad un limite legato al tempo di utilizzo (30 giorni), con la demo NON puoi creare file eseguibili e non hai a disposizione tutti i vari toolkit presenti nelle versioni a pagamento.
Sul sito NI e` possibile scaricarla a [url=http://www.ni.com/trylabview/i/:318oqih0]questo[/url:318oqih0] indirizzo
----------------------------------------
AUTORE: 2695
DATA :29/07/2009 - 09:45:34
----------------------------------------
Ciao esodar1981,
nella fase inziale del lavoro ho solo bisogno di sniffare i dati che transitano nel bus ed eleborarli per filtrare solo le informazioni di cui necessito (ad esempio dovrò esstrarre le temperature misurate visto che l'applicazione è un forno professionale!!).
In futuro però dovrò anche scrivere nel bus.. eheh.. e cfredimi non ho idea a cosa andremo incontro.
Non capisco cosa mi implica l'impossibilità di generare eseguibili (se optassi per la demo!!!)
Grazie mille
Mardock
----------------------------------------
AUTORE: 278
DATA :29/07/2009 - 11:47:06
----------------------------------------
[quote:1u1vvfm9]Non capisco cosa mi implica l'impossibilità di generare eseguibili (se optassi per la demo!!!) [/quote:1u1vvfm9]
dipende, nel tuo caso non cambia nulla, l'unico limite è che non puoi fare un'eseguibile ed portarlo su altre macchine ove non sia presente l'ambiente di sviluppo LabVIEW.
[quote:1u1vvfm9]In futuro però dovrò anche scrivere nel bus.. eheh.. e credimi non ho idea a cosa andremo incontro.[/quote:1u1vvfm9]
...ah!! il fascino dell'ignoto....
Facci sapere, se poi hai bisogno di una mano sai dove trovarci
----------------------------------------
AUTORE: 2695
DATA :29/07/2009 - 13:41:50
----------------------------------------
Eheh... è questo il bello no??
Cmq sono in attesa di una interfaccia RS485/USB con cui collegherò direttamente il PC al bus 485 e già vediamo cosa viene fuori...
Ancora sto valutando se utilizzare LabVIEW oppure se indirizzarmi su altri programmi/linguaggi.. certo che LabVIEW mi semplificherebbe molto la vita...
In merito agli eseguibili, ammesso che riesca a crearne uno (utilizzando una versione a pagamento), poi in una macchina generica immagino servano delle librerie LabVIEW per farlo girare.. Mi chiedevo se queste erano free oppure a pagamento, oppure alcune free altre a pagamento, ecc...
Mardock
----------------------------------------
AUTORE: 278
DATA :29/07/2009 - 21:42:25
----------------------------------------
[quote:2lgmab5x]immagino servano delle librerie LabVIEW per farlo girare[/quote:2lgmab5x]
Esatto, si chiamano NI Run Time Engine
[quote:2lgmab5x]Mi chiedevo se queste erano free[/quote:2lgmab5x]
Si, sono gratuite e scaricabili dal sito NI
Cmq, a prescindere da questo, baserei la mia scelta valutando sia il tipo di applicativo da realizzare sia l`esperienza pregressa in termini di linguaggi di programmazione.
Intanto prova la versione gratuita, giocaci un po`
----------------------------------------
AUTORE: 2624
DATA :28/08/2009 - 16:23:14
----------------------------------------
Mi sembra un ottima scelta!
Se hai bisogno di aiuto chiedi pure stò facendo il tuo stesso lavoro, comunico con protocollo modbus su rs 485, ricevo informazioni interrogando la macchina, le elaboro e poi faccio eseguire altri algoritmi.
ciao e buon inizio!
----------------------------------------
================================================================================
giorno giuliano
================================================================================
AUTORE: 2701
DATA :27/07/2009 - 16:32:39
----------------------------------------
Ciao a tutti
devo convertire il giorno giuliano (giorno dell'anno+ anno) in: giorno(del mese)/mese/anno.
esempio: 00109 in 01/01/09
Avete qualche idea?
Grazie
----------------------------------------
AUTORE: 645
DATA :28/07/2009 - 10:19:39
----------------------------------------
Puoi lavorare con le stringhe: parti dagli ultimi due numeri che sicuramente rappresentano l'anno (ecco... poi se 09 sta per 2009 o 1809 non so bene come si fa), poi torni indietro e prendi i due numeri del mese e infine converti quello che ti è rimasto (1, 2 o 3 cifre) nel giorno corrispondente. Per quanto riguarda i giorni puoi seguire la seguente tabella:
Gennaio n.° = giorno
Febbraio n.° - 31 = giorno
Marzo n.° - 59 = giorno
Aprile n.° - 90 = giorno
Maggio n.° - 120 = giorno
Giugno n.° - 151 = giorno
Luglio n.° - 181 = giorno
Agosto n.° - 212 = giorno
Settembre n.° - 243 = giorno
Ottobre n.° - 273 = giorno
Novembre n.° - 304 = giorno
Dicembre n.° - 334 = giorno
----------------------------------------
AUTORE: 947
DATA :28/07/2009 - 10:30:33
----------------------------------------
..
Prova così .. dovrebbe funzionare anche con i Bisestili ..
[img:31oztm0q]http://img188.imageshack.us/img188/153/giornogiuliano.jpg[/img:31oztm0q]
Lavorare con le strinnghe non ti conviene secondo me ..
.. semmai puoi convertire in stringa dopo!!
.. per farlo ci sono i VI appositi ed è facilissimo ..
Bye
----------------------------------------
AUTORE: 2701
DATA :28/07/2009 - 13:14:27
----------------------------------------
grazie per la risposta ma penso che cosi non funziona...
esempio: 2039 (203esimo giorno dell'anno+ 9 l'anno) rappresenta 22/07/2009
[quote="MagicBotolo":19lnb10k]Puoi lavorare con le stringhe: parti dagli ultimi due numeri che sicuramente rappresentano l'anno (ecco... poi se 09 sta per 2009 o 1809 non so bene come si fa), poi torni indietro e prendi i due numeri del mese e infine converti quello che ti è rimasto (1, 2 o 3 cifre) nel giorno corrispondente. Per quanto riguarda i giorni puoi seguire la seguente tabella:
Gennaio n.° = giorno
Febbraio n.° - 31 = giorno
Marzo n.° - 59 = giorno
Aprile n.° - 90 = giorno
Maggio n.° - 120 = giorno
Giugno n.° - 151 = giorno
Luglio n.° - 181 = giorno
Agosto n.° - 212 = giorno
Settembre n.° - 243 = giorno
Ottobre n.° - 273 = giorno
Novembre n.° - 304 = giorno
Dicembre n.° - 334 = giorno[/quote:19lnb10k]
----------------------------------------
AUTORE: 947
DATA :28/07/2009 - 13:52:18
----------------------------------------
..
[quote:7l8l4ozn]esempio: 2039 (203esimo giorno dell'anno+ 9 l'anno) rappresenta 22/07/2009 [/quote:7l8l4ozn]
Esatto .. il [b:7l8l4ozn]203esimo g del 2009[/b:7l8l4ozn] .. che secondo la tua codifica dovrebbe essere scritto [b:7l8l4ozn]203[u:7l8l4ozn]0[/u:7l8l4ozn]9[/b:7l8l4ozn] (e non [u:7l8l4ozn]2039[/u:7l8l4ozn]) .. è proprio il [b:7l8l4ozn]22/07/2009[/b:7l8l4ozn] ..
.. il VI di cui ti ho postato l'immagine butta fuori prorio questa data ..
hai provato ad implementarlo ??
Bye
----------------------------------------
AUTORE: 2701
DATA :29/07/2009 - 10:34:45
----------------------------------------
Si funziona, ha ragione....
grazie per la dritta
----------------------------------------
================================================================================
COMUNICAZIONE_VIA COM_AIUTO_PLEASE
================================================================================
AUTORE: 1161
DATA :28/07/2009 - 11:44:15
----------------------------------------
SALVE,
VORREI CHIEDERVI SE è POSSIBILE, SE MI FARESTE UN SEMPLICE PROGRAMMINO (UNA SLIDE ED UN TASTO) PER FAR SI CHE DIGITANDO IL TASTO FACCIO MUOVERE IL MOTORINO CON L'USO DELLA PORTA COM DEL PC, E VISUALIZZANDO SULLA SLIDE LA POSIZIONE DEL MIO MOTORINO. OPPURE QUANDO ARRIVA IL MOTORINO IO VISUALIZZO LA POSIZIONE SULLA SLIDE MANDANDO LA VISUALIZZAZIONE CON UNA SIMULAZIONE DI GRAFICA E SENZA TRASMISSIONE DI BIT.
PER NON AVERE TANTI BIT IN TRASIMISSIONE.
VI RINGRAZIO SPERO DI RICEVERE AL PIU PRESO IL PROGRAMMINO. STO CERCANDO DI IMPARARE LABVIEW
VE NE SAREI GRATI.
SALUTI
GABRIELE.
----------------------------------------
AUTORE: 1078
DATA :28/07/2009 - 13:11:44
----------------------------------------
Ciao Gabriel,
Scusa ma non ci ho capito un tubo, cosa vorresti fare via software? che cos'è questo motorino? Se è un driver, quale protocollo usi per comunicare con lui? hai la lista dei comandi?
Prova dettagliare meglio il tuo problema e sicuramente riceverai un aiuto!
Buona giornata.
----------------------------------------
AUTORE: 1161
DATA :29/07/2009 - 13:33:32
----------------------------------------
ho risolto, vi ringrazio lo stesso, ciao alla prossima...
----------------------------------------
================================================================================
xy chart - impostazioni asse x
================================================================================
AUTORE: 2688
DATA :30/07/2009 - 00:23:46
----------------------------------------
Ciao,
ho un problema con l'impostazione dei limiti per l'asse x di un xy chart.
Poiche' devo rappresentare una serie di dati nel tempo, mi piacerebbe avere sempre a video un intervallo di 10 ore (ora attuale - 6h; ora attuale + 4h). Ho provato ad impostare questi parametri andando ad agire con property node sulle proprieta' di massimo e minimo, pero' non ottengo il risultato sperato.
Il problema e' che non so come far combaciare il valore del property node (DBL) con un formato derivante dal time stamp e convertito.
Qualche idea??
Grazie!
----------------------------------------
AUTORE: 1078
DATA :30/07/2009 - 08:46:45
----------------------------------------
Prova a vedere se questo ti è di aiuto....
Buon lavoro.
----------------------------------------
AUTORE: 2688
DATA :31/07/2009 - 22:03:10
----------------------------------------
Grazie Ricky per l'esempio, pero' non penso sia adatto al caso mio.
Ti espongo brevemente il mio problema. Ho uno strumento di misura, che uso per analizzare prodotti di modello A, B, C.. Ogni ora, ma non necessariamente ad intervalli costanti, prendo un campione per ogni modello e lo misuro. Voglio che questi valori vengano graficati su grafici diversi (grafico A, B,...) e per far questo pensavo di far uso di vari plot da nascondere a rotazione.
Vorrei, pero' che a pannello venisse visualizzato sempre un intervallo di ore costante ma, tenendo "absolute time" come tipo di dato in ascissa, non riesco ad agire su di esso variandone il massimo ed il minimo (richiede un DBL).
Mi son spiegato? Qualche idea?
----------------------------------------
AUTORE: 2688
DATA :02/08/2009 - 00:10:30
----------------------------------------
Nel frattempo ho risolto, non so se nel modo migliore possibile, ma comunque in modo abbastanza comodo.
Grazie, alla prossima!
----------------------------------------
AUTORE: 1078
DATA :05/08/2009 - 15:00:18
----------------------------------------
Bhe! Sarebbe carino se ci spiegassi come!
----------------------------------------
================================================================================
Dividere un array in due arrai diversi
================================================================================
AUTORE: 2484
DATA :31/07/2009 - 10:00:53
----------------------------------------
Ho la necessità di separare i dati che vengono acquisiti ed inviati ad un array. l'array è una colonna di 10 caselle in cui i dati vengono inseriti sequenzialmente. Dovrei dividere l'array in due array distinti per usare i dati in maniera separata per potere realizzare dei grafici diversi. come posso fare?
----------------------------------------
AUTORE: 43
DATA :31/07/2009 - 13:41:59
----------------------------------------
[quote="mistereko":2x7h0fog]Ho la necessità di separare i dati che vengono acquisiti ed inviati ad un array. l'array è una colonna di 10 caselle in cui i dati vengono inseriti sequenzialmente. Dovrei dividere l'array in due array distinti per usare i dati in maniera separata per potere realizzare dei grafici diversi. come posso fare?[/quote:2x7h0fog]
La funzione "Split1DArray" è quella che fa al caso Tuo
[img:2x7h0fog]http://ilvg.it/forum/download/file.php?mode=view&id=2181&sid=e17d7f51a6cae143fd8fa4cda768d0c2[/img:2x7h0fog]
----------------------------------------
AUTORE: 2484
DATA :31/07/2009 - 14:17:27
----------------------------------------
grazie mille
----------------------------------------
================================================================================
Front Panel con pannelli di controllo multipli
================================================================================
AUTORE: 2711
DATA :31/07/2009 - 10:22:31
----------------------------------------
Mi sono appena inscritto al forum dunque saluto tutti,
il mio problema è il seguente:
devo controllare da remoto una batteria di simulatori (realizzati con Pic)di sensori. Questi sono connessi attraverso il l'rs232 (il multi drop è realizzato con un max232 avente un pin di abilitazione alla trasmissione ), il problema è che il banco è costituito da 500 sensori, ed ogni uno di questi ha un set di controlli e di indicatori.
Come prototipo ho realizzato l'interfaccia solo per 2 simulatori. La realizzazione è stata fatta definendo due array di cluster. Un array contiene per ogni elemento il set di controlli per uno specifico simulatore, un secondo array nell'elemento corrispondente contiene gli indicatori (spero di essere stato chiaro
). Vi chiedo:
Come faccio a visualizzarli tutti e 500 sullo stesso front panel senza avere un iper affollamento o generando delle interfacce minuscole?
Avete delle soluzioni migliori di questa eventualmente?
Non è detto che tutti e 500 i sensori siano attivi, come fare per mostare i controlli e gli indicatori solo di quelli attivi?
A me il modello ad array mi è sembrato il migliore, ma non avendo molta esperienza sicuramente ci saranno soluzioni più performanti.
Altra questione:
Se io ho un array di cluster, e per uno specifico elemto volessi estrarre e modificare le proprieta o i metodi (property node o invocke node) di un controllo/indicatore del cluster, questo è possibile o no?
Aspetto fiducioso le vostre risposte...
Ciao Ciao
----------------------------------------
AUTORE: 43
DATA :04/08/2009 - 15:22:58
----------------------------------------
[quote="adrypasq":34zufl2l]Mi sono appena inscritto al forum dunque saluto tutti,
il mio problema è il seguente:
devo controllare da remoto una batteria di simulatori (realizzati con Pic)di sensori. Questi sono connessi attraverso il l'rs232 (il multi drop è realizzato con un max232 avente un pin di abilitazione alla trasmissione ), il problema è che il banco è costituito da 500 sensori, ed ogni uno di questi ha un set di controlli e di indicatori.
Come prototipo ho realizzato l'interfaccia solo per 2 simulatori. La realizzazione è stata fatta definendo due array di cluster. Un array contiene per ogni elemento il set di controlli per uno specifico simulatore, un secondo array nell'elemento corrispondente contiene gli indicatori (spero di essere stato chiaro
). Vi chiedo:
Come faccio a visualizzarli tutti e 500 sullo stesso front panel senza avere un iper affollamento o generando delle interfacce minuscole? [/quote:34zufl2l]
Semplice! Non li visualizzi tutti e 500 ma una parte!!
Nel Main FP ti consiglio di visualizzare una griglia (matrice 2D) dove sono evidenziati gli ID abilitati alla simulazione, con un colore di bckgnd diverso da quelli con collegati...
Con LV8.x, matrici e vettori dispongono di scrollbar. Sfruttale!!
[quote="adrypasq":34zufl2l]Avete delle soluzioni migliori di questa eventualmente?
Non è detto che tutti e 500 i sensori siano attivi, come fare per mostare i controlli e gli indicatori solo di quelli attivi? [/quote:34zufl2l]
Il problema è semmai se ogni simulatore di sensore possiede un proprio univoco ID, questo, deve essere programmato da seriale o viene stabilito con dip-switch presente sulla schedina o la seriale è communtata con relays (da scartare: seriale multidrop).
Insomma ci potrebbe essere una scansione che verifica quali sono i sensori collegati alla rete. Magari basta un comando seriale in broadcast !. Si deve verificare che non esistano 2 ID identici...
Se tutto ciò non fosse necessario perchè attraverso il cablaggio si decide quale è l'ID del sensore, meglio, ma il riconoscimento automatico è d'obbligo
[quote="adrypasq":34zufl2l]A me il modello ad array mi è sembrato il migliore, ma non avendo molta esperienza sicuramente ci saranno soluzioni più performanti.[/quote:34zufl2l]
Vabbè! Dicci cosa ci devi fare con 'sta batteria: devi collaudarla, devi utilizzarla per un, applicazione particolare?
I sensori devono essere comandati/letti programmaticamente (immagino!) o manualmente uno per volta? o a gruppi?
Normalmente sono collegati 500 sensori o molti meno?
Potresti avere un array che contiene solo i sensori collegati e non un array di 500 sensori sempre e cmq. No?!!?!
[quote="adrypasq":34zufl2l]Altra questione:
Se io ho un array di cluster, e per uno specifico elemto volessi estrarre e modificare le proprieta o i metodi (property node o invocke node) di un controllo/indicatore del cluster, questo è possibile o no?
Aspetto fiducioso le vostre risposte...[/quote:34zufl2l]
Come avrai già visto sperimentalmente, modificare gli attributi (proprietà) di un elemento di un array comporta la modifica di quella proprietà di tutti gli elenti dell'array. Gli elementi di un'array o matrice multidimensionale possono essere diversi solo per il "valore" contenuto, ma sono ovviamente tutti dello stesso tipo e con le stesse proprietà.
bye
----------------------------------------
AUTORE: 2711
DATA :05/08/2009 - 08:54:38
----------------------------------------
Ciao paracarro e grazie per le tue risposte cerco di spiegare meglio il problema:
io ho circa 500 simulatori di sensori, che sono realizzati mediante 1 PIC ed un Potenziometro digitale. I sensori comunicano tramite l'HOST mediante connessione seriale (la seriale non è nativa multidrop però lo diventa utilizzando come interfaccia PIC -bus rs232 un particolare max 232). Il programma realizzato in assembler che gira sui PIC implementa un protocollo di comunicazione per parlare con l'HOSt. Per fare questo ogni simulatore ha un proprio indirizzo fisico (programmato da utente in fase di scaricamento firmware sul pic) che l'host conosce. L'host dunque manda dei comandi ai singoli PIC ed in base al comando il PIC con address corrispondente setta il potenziometro digitale. OK!!!!
PROBLEMA INTERFACCIA HOST:
L'interfaccia HOST per ogni simulatore deve avere dei controlli che spediscono dei comandi (e.g:setta il digipot con valore di resistenza x, oppure dammi il valore della resistenza settata dal digipot ecc) e degli indicatori (e.g: valore della resistenza del digipot, spia che indica il riscontro del simulatore comandato ecc.). Non è detto comunque che tutti i simulatori siano attivi allo stesso tempo.
Ecco come sto cercando di procedere:
Per ogni sensore creo una sezione minimale (un piccolo box) contenente gli indicatori di base (telemetria, spia di abilitazione) + un tasto che abilita il controllo.
Questa sezione minimale la replico per ogni uno dei 500 sensori. Mediante un file di configurazione setto quali sono i sensori da attivare. Solo quelli attivati si abilitano ed il corrispondente box sulla GUI cambia colore. A questo punto io vorrei che con il pulsante di controllo, sciacciandolo si aprisse una seconda finestra contenente i controlli per quel sensore in modo da poterlo comandare.
Questa scelta è motivata da 2 fattori:
1->Devo avere il controllo sempre di tutti i sensori (e.g: stanno funzionando bene?)
2->il protocollo di comunicazione tra host e sensore mi permette di comandare 1 solo sensore alla volta (polling) dunque i controlli per la spedizione dei comandi sono mutuamente esclusivi.
Questo tipo di interfaccia puo' essere fatta con LV? Cosa te ne sembra? Quali suggerimenti per l'implementazione mi puoi dare?
Grazie mille per il tuo aiuto
----------------------------------------
AUTORE: 43
DATA :05/08/2009 - 11:46:13
----------------------------------------
[quote="adrypasq":1u11s2n2]Ciao paracarro e grazie per le tue risposte cerco di spiegare meglio il problema:
io ho circa 500 simulatori di sensori, che sono realizzati mediante 1 PIC ed un Potenziometro digitale. I sensori comunicano tramite l'HOST mediante connessione seriale (la seriale non è nativa multidrop però lo diventa utilizzando come interfaccia PIC -bus rs232 un particolare max 232). Il programma realizzato in assembler che gira sui PIC implementa un protocollo di comunicazione per parlare con l'HOSt. Per fare questo ogni simulatore ha un proprio indirizzo fisico (programmato da utente in fase di scaricamento firmware sul pic) che l'host conosce. L'host dunque manda dei comandi ai singoli PIC ed in base al comando il PIC con address corrispondente setta il potenziometro digitale. OK!!!!
[/quote:1u11s2n2]
Mah! Per prima cosa farei un programma in LabVIEW x programmare i PIC: programmare o ri-programmare un indirizzo fisico, che io chiamerei PIC-ID (PIC bus IDentification) può essere una operazione noiosa: con un programma guidato collego un PIC per volta alla seriale e programmo con una numerazione prograssiva di PIC-ID i sensori, che suppongo siano un numero di 16 bit che può variare da 0 a 65535.
cmq sia resto dell'idea che il sw deve innanzitutto capire da solo con una funzione di "scan" quali sono i dispositivi collegati al PC quindi anche farsi una lista dei sensori collegati
Mi verrebbe da dire che il sistema deve cmq "pollare" con una freq. bassa tutti i dispositivi per verificare che la comunicazione sia attiva, ad aggiornare così lo "stato" del dispositivo stesso.
Questo a prescindere dai comandi che devono essere inviati ai singoli sensori.
[quote="adrypasq":1u11s2n2]PROBLEMA INTERFACCIA HOST:
L'interfaccia HOST per ogni simulatore deve avere dei controlli che spediscono dei comandi (e.g:setta il digipot con valore di resistenza x, oppure dammi il valore della resistenza settata dal digipot ecc) e degli indicatori (e.g: valore della resistenza del digipot, spia che indica il riscontro del simulatore comandato ecc.). Non è detto comunque che tutti i simulatori siano attivi allo stesso tempo.
Ecco come sto cercando di procedere:
Per ogni sensore creo una sezione minimale (un piccolo box) contenente gli indicatori di base (telemetria, spia di abilitazione) + un tasto che abilita il controllo.
Questa sezione minimale la replico per ogni uno dei 500 sensori. Mediante un file di configurazione setto quali sono i sensori da attivare. Solo quelli attivati si abilitano ed il corrispondente box sulla GUI cambia colore. A questo punto io vorrei che con il pulsante di controllo, sciacciandolo si aprisse una seconda finestra contenente i controlli per quel sensore in modo da poterlo comandare.[/quote:1u11s2n2]
OK
Quindi il sensore oltre ad essere collegato, ha uno stato di "attivazione".
Non avendo ancora capito una mazza su cosa ci fai con 'sti sensori, mi verrebbe da dire: perchè nel file di configurazione non ci metti anche "il setup" x ogni PIC-ID (valore del potenziometro, altro...) oltre allo stato di attivazione/disattivazione?
A questo punto ti boccio array e matrice di cluster e Ti consiglio di fare una cosa un po' + complicata:
usa una tabella o una multicolumn listbox (io preferisco la tabella).
Il contenuto della cella è una stringa che può anche essere scritta su + righe. Deve contenere PIC-ID e valore del potenziometro almeno.
Di ogni cella è possibile definire un FG e BG color (foreground e background color) diverso che indicherà lo stato del dispositivo.
Sfondo bianco (scritta nera) - non presente.
Sfondo grigio (scritta nera) - presente - non attivo
Sfondo verde (scritta nera) - presente - attivo
Sfondo rosso (scritta bianca) - non risponde.
Clickando sul controllo tabella è possibile ricevere le coordinate di click attraverso le quali si può abbastanza facilmente calcolare la cella selezionata:
A questo punto il colore di BG cambia chessò ... in magenta ed il PIC-ID selezionato diventa quello in uso.
Non capendo il tipo di applicazione che vuoi sviluppare, non capisco se può aver senso pilotare + sensori con comandi di tipo macro:
ad esempio potrei voler settare con valori resistivi progressivi da x a y un certo gruppo di sensori da PIC-ID X a PIC-ID-Y
Con un unico comando
Per fare ciò si dovrebbe mettere in atto un sistema di selezione dei gruppi di sensori.
Addirittura si può pensare ad un semplice linguaggio di scripting per "fare una sequenza di cose" su un gruppo di sensori...
bye
----------------------------------------
AUTORE: 2711
DATA :05/08/2009 - 16:09:35
----------------------------------------
Questo banco di sensori rappresenta tutta la telemetria da simulare di un sistema industriale.
I comandi che possono essere spediti sono i vari valori resistivi che deve assumere , piu' altri come il reset o la richiesta del valore settato. Le richieste però sono sempre fatte sui singoli. I valori di settaggio come anche gli altri comandi li devo generare a run-time quando lo decido io in particolari condizioni (come anche i valori da settare delle resistenze).
Spero di essere stato chiaro adesso
----------------------------------------
AUTORE: 43
DATA :05/08/2009 - 16:26:28
----------------------------------------
[quote="adrypasq":3365cqgt]Questo banco di sensori rappresenta tutta la telemetria da simulare di un sistema industriale.
I comandi che possono essere spediti sono i vari valori resistivi che deve assumere , piu' altri come il reset o la richiesta del valore settato. Le richieste però sono sempre fatte sui singoli. I valori di settaggio come anche gli altri comandi li devo generare a run-time quando lo decido io in particolari condizioni (come anche i valori da settare delle resistenze).
Spero di essere stato chiaro adesso[/quote:3365cqgt]
Io spero di essere stato chiaro nel precedente Post sull'uso della tabella.
Ma scusa, una delle cose che per prima mi viene in mente è fare in modo che un sensore vari, cioè cambi il suo valore resistivo nel tempo seguendo una forma d'onda impostata...
Quello che Ti contesto è la troppa semplicità del Tuo approccio.
Non penserai mica di cambiare A MANO il valore di 500 sensori. Per giunta 1 x volta!!
Anzi magari vorrei poter correlare le variazione di gruppi di sensori mettendo in un grafico i valori restistivi lettida ognuno di essi. Ovviamente nel tempo.
Dimenticavo:
Essenziale è avere un stringa o una list box di log con i cambiamenti + significativi dei sensori, tutti corredati del proprio timestamp
bye
----------------------------------------
================================================================================
Trovare e leggere dati in un file excel
================================================================================
AUTORE: 2674
DATA :31/07/2009 - 13:59:15
----------------------------------------
Ciao a tutti,
ho letto quasi tutti i post sulla lettura dati da Excel, ma io ho il seguente problema:
Ho un file Excel dove la colonna A contiene dei nomi, le colonne B e C contengono dei parametri associati ai nomi della colonna A. Io devo controllare se nella colonna A è presente un determinato nome e se è presente leggere i corrispondenti parametri nelle colonne B e C.
Purtroppo il file excel varia e non so a priori dove si troverà il nome che cerco quindi non posso creare un Vi che va a leggere determinate celle.
Potete darmi dei suggerimenti??
Grazie mille
----------------------------------------
AUTORE: 947
DATA :03/08/2009 - 13:33:07
----------------------------------------
Io mi sono già trovato a fare qualcosa di analogo e l'ho risolto come nell'immagine.
Qui fa una ricerca in una colonna specificata in Col (in num di righe da 1 a 200) del testo ToFind
e quando trova il primo elemento restituisce il valore della stessa riga e della colozza successiva
(perchè c'è un +1 sulla linea della colonna!)
Tu dovresti modificarlo.
Qui ho usato l' Automation come ho trovato in alcuni esempi anche qui sul forum ..
Per adesso non ho il tempo di dare altri dettagli .. ma se ti serviranno.. chiedi .. e piano piano .. li avrai
Ciao
[img:2xl8mdc8]http://img517.imageshack.us/img517/1803/ricercasuexcel.jpg[/img:2xl8mdc8]
----------------------------------------
AUTORE: 2674
DATA :03/08/2009 - 17:01:14
----------------------------------------
Ciao,
grazie per la risposta ma non trovo l'immagine...mi sarebbe di aiuto averla...
Grazie
Fede
----------------------------------------
AUTORE: 278
DATA :04/08/2009 - 22:33:36
----------------------------------------
[quote:29sw71sq]grazie per la risposta ma non trovo l'immagine...mi sarebbe di aiuto averla...[/quote:29sw71sq]
Io la vedo.. dev`essere un`impostazione del tuo browser che blocca parte del codice html del sito, quello dell`immagine appunto.
Ti faccio un`allegato..
----------------------------------------
AUTORE: 2674
DATA :05/08/2009 - 22:12:29
----------------------------------------
Grazie mille!!
Purtroppo ho un problema...pur passandogli i corretti valori della cella (riga e colonna) se leggo ad es la cella B2 mi restituisce il valore della cella B3, se voglio leggere la cella B5 mi non mi restituisce alcun valore...
Avete idea di come risolvere questo problema?
----------------------------------------
AUTORE: 947
DATA :06/08/2009 - 09:18:17
----------------------------------------
[quote="fede":2s897wsl]
Purtroppo ho un problema...pur passandogli i corretti valori della cella (riga e colonna) se leggo ad es la cella B2 mi restituisce il valore della cella B3, se voglio leggere la cella B5 mi non mi restituisce alcun valore...
Avete idea di come risolvere questo problema?
[/quote:2s897wsl]
No, scusami .. non ho afferrato !!
Il VI (così come lo vedi !!) funziona così:
- Cerchi il valore "aaa" nella colonna B (cioè 2)
- Se esite (fra i primi 200 valori !!), il VI restituisce il valore in stringa della colonna C (=3 perchè è 2+1) corrispondente alla riga in cui ha trovato "aaa"
- Se NON esiste (fra i primi 200 valori !!) si comporta come se lo avesse trovato in row=200 quindi restituisce stringa vuota ""
Ricorda che gli indici row e col sono 1-based !!!
Il Vi funziona sicuramente perchè è attualmente in uso in un SW venduto a clienti e pluritestato ..
.. quindi, se ottieni cose strane, ricontrolla il tuo codice!!
Bye!!
----------------------------------------
AUTORE: 2674
DATA :06/08/2009 - 11:46:09
----------------------------------------
Sorry,
hai ragione avevo un errore io sul VI...
Grazie mille e scusa
Fede
----------------------------------------
AUTORE: 947
DATA :06/08/2009 - 13:38:17
----------------------------------------
..
.. Allora?? .. tutto ok?? .. risolto tutto ?? ..
Piacere di esserti stato utile !!
.. Bye !! ..
----------------------------------------
================================================================================
Pagine diverse con le TAB
================================================================================
AUTORE: 2484
DATA :31/07/2009 - 14:46:29
----------------------------------------
Dopo avere diviso un array in due differenti e dopo avere inviato i dati a due grafici diversi, avrei la necessità di avere un grafico in una pagina di tabulazione e l'altro grafico nell'altra pagina. Non ho mai realizzato le pagine di tabulazione e non so come si inseriscono i controlli per la scelta di una tab. Potete aiutarmi?
----------------------------------------
AUTORE: 1078
DATA :04/08/2009 - 09:40:01
----------------------------------------
Per aggiungere i controlli ad una pagina di tabulazione basta che dalla controls palette li trascini nella scheda di destinazione. Putroppo puoi aggiungere i controlli solo in fase di progettazione. Labview infatti non consente la creazione programmatica dei controlli (come in C/C++), [i:r13r1ao4]questo purtroppo io lo vedo come un grosso limite....[/i:r13r1ao4]
Spero di esserti stato di aiuto.
----------------------------------------
================================================================================
Generazione automatica array
================================================================================
AUTORE: 2688
DATA :03/08/2009 - 08:34:23
----------------------------------------
Ciao!
Vi espongo brevemente il mio problema (che segue direttamente quello che ho postato pochi giorni fa).
Per il mio VI di acquisizione dati e rappresentazione a pannello, sfrutto degli array temporanei in cui salvare le misure che poi butto su un XY graph.
Ora, immaginando di avere 3 tipi di prodotti (A, B, C), con il mio metodo mi creerei 3 cluster di 2 array, uno per il tempo, l'altro per la misura. Vado ad inizializzarli all'avvio del programma, con la macchina a stati, e poi li riempio e svuoto tirando i fili secondo le mie esigenze.
Ora vorrei pero' fare una miglioria al software: caricando i modelli da un database, che gia' uso per altre parti del programma, potrei rendere il numero di cluster flessibile? Cio' che vorrei ottenere e', ad esempio, che se viene inventato un nuovo prodotto D, sia sufficiente caricarlo nel DataBase per avere poi a pannello i relativi grafici.
Spero d'essermi spiegato..
Idee?
Grazie!
----------------------------------------
AUTORE: 1078
DATA :04/08/2009 - 09:56:15
----------------------------------------
Vediamo se ho capito la tua situazione e se posso darti una mano....
Situazione attuale: [attachment=1:xkbr2cls]Prodotti_ABC.vi[/attachment:xkbr2cls]
Situazione dinamica: [attachment=1:xkbr2cls]Prodotti_ABC.vi[/attachment:xkbr2cls]
Ovviamente dovrai lavorarci un po su....
Buon lavoro....
----------------------------------------
AUTORE: 2688
DATA :15/08/2009 - 16:07:49
----------------------------------------
Grazie Riccardo, scusami il ritardo ma ero in vacanza!
Alla fine ho risolto in un altro modo, utilizzando degli array 1D in parallelo e facendo in modo che i dati relativi alle singole misure si salvino allo stesso indice. Mi pare una soluzione tutto sommato flessibile ed efficiente!
A presto, ciao!
----------------------------------------
================================================================================
DAQmx Create Timing Source
================================================================================
AUTORE: 1596
DATA :05/08/2009 - 16:41:00
----------------------------------------
Salve a tutti,
voglio dare una frequenza al timed loop e per fare questo uso il DAQmx Create Timing Source. Poiche' voglio una frequenza costante utilizzo un counter (presente sulla mia USB-6211) per generare il segnale.
Credevo di poterlo fare col semplice VI postato ma [url=http://www.2shared.com/file/7013011/af868620/error.html:gez861bs]non funziona[/url:gez861bs]
Grazie,
G.
[attachment=0:gez861bs]clock_example.vi[/attachment:gez861bs]
----------------------------------------
================================================================================
Stoppare un While dall'esterno
================================================================================
AUTORE: 2723
DATA :06/08/2009 - 20:08:30
----------------------------------------
Ciao a tutti, sono un newbie per quanto riguarda labview, spero che qualcuno possa aiutarmi.
Vorrei riuscire a stoppare un while con un pulsante che appartiene ad una struttura esterna al while stesso! Cosa mi suggerite di fare?
Allego il file di esempio
Grazie in anticipo
----------------------------------------
AUTORE: 1168
DATA :07/08/2009 - 12:57:37
----------------------------------------
Non ho guardato l'esempio perchè non ho sottomano LV.... ma si può usare una variabile locale in or con la condizionie di uscita dal loop e collegata al pulsante.
Ciao
P!
----------------------------------------
AUTORE: 2738
DATA :14/08/2009 - 09:10:49
----------------------------------------
Ciao a te Spir4L..
..ciascuno di noi è un "novizio" in qualche ramo dello scibile umano
Non mi è chiarissimo il tuo problema. Il VI che hai allegato come esempio fa quello che tu vorresti, a patto di premere Boolean entro 1 secondo dall'inizio dell'esecuzione o Boolean 2 entro 2 secondi.
Dopo di che i due boolean non vengono più letti, visto che quella parte di codice è stata eseguita, e il while non può più essere interrotto.
Se ho capito bene il tuo problema ciò che devi fare è continuare a leggere il boolean che serve da stop, e per fare ciò puoi metterlo in un secondo ciclo while. Ti allego l'esempio di codice (Esempio 1). Il ritardo di 100 ms serve a non sovraccaricare il processore solo per leggere il bottone molte migliaia di volte al secondo.
Il secondo esempio è un po' più efficiente dal punto di vista di impiego di risorse. Il boolean viene letto da un event structure, con timeout infinito. L'event structure si ferma nel frame "timeout" e attende che il boolean cambi stato e dunque non consuma tempo di processore. Quando il boolean cambia (diventa TRUE perchè hai premuto il bottone) allora l'event passa al frame "Boolean": Value change, setta la variabile Boolean a TRUE e il while si ferma.
Per vedere meglio la sequenza degli avvenimenti usa il debug mode (la lampadinetta gialla nella toolbar sotto i menù della finestra di diagram)..
Ciao.
Marco
[attachment=1:2cu3xr09]Esempio 1.vi[/attachment:2cu3xr09]
[attachment=0:2cu3xr09]Esempio 2.vi[/attachment:2cu3xr09]
----------------------------------------
AUTORE: 2738
DATA :14/08/2009 - 09:35:20
----------------------------------------
Spir4L,
dimenticavo... Come potrai vedere il while che legge il boolean viene eseguito una volta sola, dunque è inutile
L'ho messo solo per similitudine col primo esempio,
ma puo eliminare il while e collegare una local variable del bottone "Boolean" al filo che esce dall'event case...
Un'altra cosa: gli esempi sono in LabVIEW 2009.
Se hai una versione antecedente non riuscirai ad aprirli. Fammi sapere che versione di LW usi.
Ciao.
Marco
----------------------------------------
================================================================================
sviluppare per pic
================================================================================
AUTORE: 2725
DATA :08/08/2009 - 21:36:45
----------------------------------------
voglio programmare i pic, ma se mi metto a scrivere due righe in assembler impazzisco. anche farle in c++ mi da ai nervi.
labview invece offre un ambiente come piace a me: coi fili!
esistono tool o componenti di labview che simulino un PIC ( a scelta) o un AVR (atmel) e che mi permettano quandi di costuire il programmino e poi sparare il microcodice direttamente via rs232 nel piccolo scarafaggio cmos?
(forse la mia domanda è poco chiara...)
----------------------------------------
AUTORE: 1078
DATA :17/08/2009 - 14:26:39
----------------------------------------
Generalmente per trasferire il codice compilato da PC a PIC si usano delle interfacce HW che permettono l'operazione di upload. Puoi scrivere tutto il codice che vuoi se trovi (o crei) i driver per questi tools HW. Non mi risulta sia così semplice scrivere codice e "spararlo" direttamente sui pin del PIC via RS232. Se così fosse, puoi usare le funzioni VISA per gestire la porta RS232 ma in questo caso devi conoscere perfettamente il comandi da inviare (il che si tradurrebbe a scrivere comandi Assembler).
In conclusione, non credo esista un tools specifico che ti permetta di fare quello che chiedi.
----------------------------------------
AUTORE: 2725
DATA :20/08/2009 - 09:56:33
----------------------------------------
in effetti la domanda era malposta (e gli ingegneri di solito sono poco flessibili):
volevo sapere se è possibile mettere in atto la seguente sequenza:
1) definire le operazioni (cicli, condizioni e quant'altro) utiizzando la comoda interfaccia grafica di labview
2) effettuare un "save as / export hex " tramite uno dei moduli di i/o di labview per avere a disposizione la traduzione in assembly o il binary del programma su un banale file di testo, e poi poterlo inviare attraverso la mia sachedina economica (rs232) di progammazione nel mio stupido pic, utilizzando un programmino tipo piklab o qualisiasi altra cosa che possa essere adatta
----------------------------------------
================================================================================
Domanda da novizio...
================================================================================
AUTORE: 2732
DATA :12/08/2009 - 21:03:29
----------------------------------------
Un saluto a tutti. Sono nuovo nel forum e anche per quanto riguarda la programmazione in LabView.
Mi sono iscritto per chiedere a voi che utilizzate sempre Labview un consiglio su una applicazione che mi è stata commissionata di recente.
Premetto che sono un programmatore in Visual Basic da anni ma questa volta credo che LabView possa venirmi incontro in maniera decisamente più professionale.
Il mio problema è il seguente: ho un'applicazione che simula il movimento di una nave. Da tale applicazione ricevo via UDP dei dati tra cui anche la velocità della nave, l'intensità del vento, la direzione del vento, il numero di giri del motore ed altre informazione. Devo riuscire a creare una semplice applicazione che mi visualizzi questi dati in una interfaccia grafica che simuli il pannello di una nave (quindi con indicatori di livello, di potenza ect). Uno dei tanti pannelli che sono presenti sul bridge di una nave.
Credete sia possibile creare un'applicazione del genere, prendendo i dati via UDP, con LabView?
Se è possibile, tale applicazione può essere compilata in un file eseguibile ed utilizzata ovunque in ambiente Windows o necessita di un'applicazione particolare?
Dove posso trovare del materiale e altre informazioni utili per poter iniziare a programmare in LabView?
Vi ringrazio in anticipo.
Marco
----------------------------------------
AUTORE: 278
DATA :13/08/2009 - 14:23:42
----------------------------------------
Ciao e benvenuto nel forum!
Con LabVIEW puoi fare benissimo quello che ti serve, leggere dati da UDP, elaborarli e rappresentare il tutto graficamente.
L'applicazione può essere compliata solo se, oltre all'ambiente di sviluppo LabVIEW, possiedi l'application builder, un toolkit venduto separatamente.
Oltre a questo, sulle macchine ove installerai l'applicativo devi avere il Runtime engine, scaricabile gratuitamente dal sito national.
Per iniziare a programmare ti consiglio di scaricare dal sito NI o richiedere una copia gratuita 30 giorni dell'ambiente di sviluppo LV, se vuoi cimentarti subito all'interno trovi migliaia di esempi.
Se invece preferisci un'approccio + accademico e meno "pratico" ti consiglio di procurati i manuali Corso base I e II contattando direttamente National Intruments.
Ciao e buon lavoro
----------------------------------------
AUTORE: 4172
DATA :08/03/2012 - 22:35:32
----------------------------------------
Ciao ragazzi, sono anche io esordiente assoluto del forum.... Ho trovato interessante questa discussione in quanto io ed un collega vogliamo realizzare un qualcosa di simile: si leggono i dati da un videogioco di simulazione di auto da corsa e volevamo realizzare un telemetry monitor. Per l'interfaccia grafica non c'è problema ( so benissimo utilizzare i charts, in quanto associate developer fresco fresco
), ma ho delle difficoltà nella creazione dell' UDP che contiene i dati. Ho provato a scrivere un read_UDP.vi, ma non riesco a spacchettare l'array dei dati che il videogioco (live for speed) restituisce.
In rete si trovano moltissime applicazioni simili, scritte però in Python, per cui una traduzione Python-LV sarebbe faticosa.
Spero in un aiuto pratico.
Grazie
----------------------------------------
AUTORE: 645
DATA :10/03/2012 - 00:25:01
----------------------------------------
Prova a guardare http://zone.ni.com/devzone/cda/tut/p/id/4950 come punto di partenza per la comunicazione UDP-
----------------------------------------
================================================================================
Selezionare una directory ???
================================================================================
AUTORE: 2741
DATA :14/08/2009 - 18:40:52
----------------------------------------
Salve a tutti,
sono un nuovo utente e mi sto affaciando al mondo di Labview.
Io sono abbastanza pratico con il Matlab e mi chiedevo se in Labview esistesse una cosa simile ai comandi uigetdir e/o uigetfile di matlab.
Ovvero è possibile mettere sul Front pannel di LV una specie di menu dal quale vado a selezionare, ad esempio, una cartella in cui poi voglio salvare un determinato file? Ho solo capito che esiste il constant path, ma in questo modo il file viene messo sempre nella stessa path. Non c'è possibilità di poter selezionare
la path dove vvoglio salvare un file??
spero di essere stato chiaro e che qualcuno possa aiutarmi
----------------------------------------
AUTORE: 1078
DATA :17/08/2009 - 11:16:40
----------------------------------------
Ciao Giacomo,
[quote="Giacomo":2x2e7yh2]Ovvero è possibile mettere sul Front pannel di LV una specie di menu dal quale vado a selezionare, ad esempio, una cartella in cui poi voglio salvare un determinato file? [/quote:2x2e7yh2]
Certo che esiste un controllo così. Dalla Control Palette --> Modern (o classic) --> String e Path --> Path control. Trascinalo sul fornt panel poi, cliccaci sopra con il tasto destro del mouse e seleziona l'ultima voce del menu pop-up che ti appare; la voce properties. Da li puoi personalizzare il controllo a tuo piacimento in modo da far scegliere all'utente un file, una directory etc...
Per visualizzare la controls palette: dal front panel, menu view --> Controls Palette.
Buon lavoro.
----------------------------------------
AUTORE: 2741
DATA :17/08/2009 - 12:45:36
----------------------------------------
Mille grazie!!!
sai forse era una vera sciocchezza, ma non riuscivo proprio a capire come fare.
Ancora mille grazie
----------------------------------------
AUTORE: 1078
DATA :17/08/2009 - 13:32:23
----------------------------------------
[quote="Giacomo":2zvbb50i]Mille grazie!!!
sai forse era una vera sciocchezza, ma non riuscivo proprio a capire come fare.
Ancora mille grazie[/quote:2zvbb50i]
Prego....!!
----------------------------------------
================================================================================
.NET calendar
================================================================================
AUTORE: 2688
DATA :15/08/2009 - 16:12:50
----------------------------------------
Ciao a tutti!
Ho un problemino che mi sta creando qualche rompicapo. Nella mia applicazione voglio che un operatore possa andare a selezionare da un Database i dati che vuole analizzare, mettendo la data di inizio e fine periodo analisi. Ora, vorrei che lo facesse usando un calendario, come quello offerto sotto .NET Calendar. Mi piacerebbe che, cliccando un tasto, gli apparisse il calendario, che scompaia al premere di un altro tasto (event structure, pensavo..), tenendo ovviamente in memoria il "Timestamp" selezionato in modo da poterlo utilizzare per la select.
Qualche idea??
----------------------------------------
AUTORE: 1078
DATA :17/08/2009 - 07:29:32
----------------------------------------
LV mette a disposizione un controllo "Timestamp" che ti permette di visualizzare un calendario cliccando sull'apposito tasto. Non devi far altro che inserirlo nel tuo VI. Come? Dalla controls palete --> Numeric --> Time Stamp control.
Buon lavoro!
----------------------------------------
AUTORE: 2688
DATA :17/08/2009 - 08:17:23
----------------------------------------
Ti ringrazio. Alla fine sono riuscito a far qualcosa anche con il .net, ma devo ammettere che questo controllo e' molto migliore e mi era completamente ignoto. Thanks!
----------------------------------------
================================================================================
Operazioni su array
================================================================================
AUTORE: 2688
DATA :16/08/2009 - 19:01:48
----------------------------------------
Ciao a tutti,
Ho una domanda sugli array: nella mia applicazione vado a leggere dei dati da DB per analizzarli. C'e' un database in cui le misure vengono salvate e l'utente puo' scegliere un periodo di interesse per il calcolo di alcuni indici.
Ora, una volta scelto il periodo, io faccio una query e porto nel programma i dati sotto forma di array 2D. Voglio essere in grado di andare ad analizzare i dati giorno per giorno; mi spiego meglio: se l'utente seleziona un periodo di 10 giorni, io voglio calcolare la media delle misure per ogni singolo giorno 1, 2, 3,... metterla su un grafico, e fare altri calcoli statistici.
Ora, partendo dal mio array iniziale, come mi conviene fare? Lo divido in tanti sub-array o provo ad usarlo tutto compatto?
Spero d'essermi spiegato.. Qualche idea?
----------------------------------------
AUTORE: 1078
DATA :17/08/2009 - 07:24:40
----------------------------------------
Ciao stefanomoret,
[quote="stefanomoret":28i1zyyz]Ora, una volta scelto il periodo, io faccio una query e porto nel programma i dati sotto forma di array 2D. Voglio essere in grado di andare ad analizzare i dati giorno per giorno; mi spiego meglio: se l'utente seleziona un periodo di 10 giorni, io voglio calcolare la media delle misure per ogni singolo giorno 1, 2, 3,... metterla su un grafico, e fare altri calcoli statistici.[/quote:28i1zyyz]
[quote="stefanomoret":28i1zyyz]Ora, partendo dal mio array iniziale, come mi conviene fare? Lo divido in tanti sub-array o provo ad usarlo tutto compatto?[/quote:28i1zyyz]
Bhe! Secondo me, non ti conviene dividere manualmente il tuo array 2D. Non conoscendo a priori quanti giorni verranno selezionati dall'utente (penso che la tua sia una query dinamica il cui recordset, si popolerà con più o meno righe in base alle date di start e di end selezionate dall'utente) ti potresti trovare righe dell'array 2D escluse dai calcoli statistici. Il metodo migliore per trattare array di cui non si conosca il numero di righe e colonne è quello di elaborarne il contenuto in due cicli for (in realtà per una trattazione più generica, il numero di cilci for dovrebbe corrispondere al numero di dimensioni dell'array). Queto approccio oltre ad essere il più efficace, non ti vincola al numero di righe e colonne.
Per utilizzarlo basta abilitare l'indicizzazione quando colleghi l'array al ciclo for.
Buon lavoro.
----------------------------------------
AUTORE: 2688
DATA :17/08/2009 - 18:31:30
----------------------------------------
Ciao,
hai capito bene!
In realta' ho usato uno sistema con un solo ciclo for, e lavorando con due array monodimensionali (ho diviso il 2D, ottenendo da un lato il tempo, dall'altro le misure).
Ti ringrazio ancora, molto disponibile!
----------------------------------------
================================================================================
report
================================================================================
AUTORE: 2688
DATA :17/08/2009 - 18:37:16
----------------------------------------
Mi servirebbe un piccolo suggerimento in velocita': se devo creare un report, semplicemente andando a stampare in un file (ad es con PDF creator) alcuni dati e grafici che vedo sul front panel, quale strumento di LV mi conviene usare?
----------------------------------------
AUTORE: 1078
DATA :18/08/2009 - 10:57:08
----------------------------------------
Dipende da come vuoi organizzare il tuo report. Se è sufficiente una stampa rapida di quello che stai vedendo potresti stampare un'immagine del tuo front-panel. La recuperi facilmente dagli invoke node dell'FP.
----------------------------------------
AUTORE: 43
DATA :18/08/2009 - 15:47:19
----------------------------------------
[quote="stefanomoret":cboj9ltk]Mi servirebbe un piccolo suggerimento in velocita': se devo creare un report, semplicemente andando a stampare in un file (ad es con PDF creator) alcuni dati e grafici che vedo sul front panel, quale strumento di LV mi conviene usare?[/quote:cboj9ltk]
Ne parlo con riluttanza pechè non mi piace l'uso indiscriminato dello "stampare su carta".
Questo è comunque il modo + semplice e più diffuso con cui generare "stampe" da LabVIEW.
step 1) crearsi 1 o + SubVI di stampa il cui FP (FrontPanel) verrà stampato.
Di solito si creano dei FP con il colore bianco di sfondo in modo da non dover "caricare troppo" il lavoro di stampa nella fase terminale. Se la stampante è tipicamente in B/N allora si devono evitare sfumature, gli sfondi neri nei grafici e tracce colorate , sostituendole opportunamente.
step 2) il subVI di stampa non deve essere necessariamente visibile, ma deve cmq avere le seguenti caratteristiche settate:
nel FP, tasto dx del mouse sull'icona oppure da menu "File"
VI Properties... -> Print Option
Abilitare "Automatically print front panel every time VI completes execution"
Inoltre consiglio di
Disabilitare "Print Header"
Disabilitare "Scale printed block diagram to fit page"
Abilitare "Surround front panel with border"
Abilitare "Scale printed front panel to fit page"
step 3) configurare stampante predefinita per il VI (il default è quella predefinita di Windows) e l' "orientation" (portrait, landscape) + eventuali margini da
File --> Page Setup...
Se non sbaglio l'orientation vale per il singolo VI mentre la stampante selezionata... boh! non lo so vedi Tu.
Se devi generare un PDF, basta utilizzare uno dei tanti SW di emulazione stampante che genera file di tipo PDF
con SW + sofisticati potresti accorpare + stampe di singoli FP in un unico PDF, altrimenti... per ogni FP, purtroppo, verrà generato un file PDF
Ovviamente Ti ho confezionato un esempio.
[attachment=0:cboj9ltk]stampa.zip[/attachment:cboj9ltk]
Dopo aver settato la stampante di default di windows
Manda in esecuzione e premi [stampa]
bye
----------------------------------------
AUTORE: 2688
DATA :18/08/2009 - 19:56:36
----------------------------------------
Grazie dei suggerimenti!
Mi pare che per il mio caso sia comunque piu' veloce il metodo suggerito da Ricky. Mi preparo un template in word con bookmarks e poi lo riempio con qualche stringa e immagine.
Grazie ancora!
----------------------------------------
AUTORE: 482
DATA :19/08/2009 - 08:04:51
----------------------------------------
[quote="stefanomoret":3iajetmx]Mi preparo un template in word con bookmarks e poi lo riempio con qualche stringa e immagine.[/quote:3iajetmx]
Questo è fattibile solo se hai il report generation toolkit.
Inoltre stai molto attento perchè quando lo installi devi dichiarare che versione di office utilizzerai e se devi distribuire l'applicazione, devi accertarti che anche l'utilizzatore finale utilizzi la stessa versione di office, altrimenti non funziona niente.
Personalmente ho realizzato dei report stampabili creando delle pagine in html e tramite le funzioni sulle stringhe, sostituisco alcune parti con i nuovi dati.
L'unico limite a questo tipo di soluzione è che per inserire delle immagini (grafico e logo) ti devi portare dietro i file singoli delle immagini perchè non possono essere inglobati nel file del report.
----------------------------------------
AUTORE: 43
DATA :19/08/2009 - 09:00:15
----------------------------------------
[quote="stefanomoret":1re4tguu]Grazie dei suggerimenti!
Mi pare che per il mio caso sia comunque piu' veloce il metodo suggerito da Ricky.[/quote:1re4tguu]
Mi sa che non hai capito entrambi i suggerimenti!
Cmq sia, grazie x la risposta!
[quote="stefanomoret":1re4tguu]Mi preparo un template in word con bookmarks e poi lo riempio con qualche stringa e immagine.
Grazie ancora![/quote:1re4tguu]
Questo non è quello che Ti ha suggerito Ricky. Ricky Ti suggerisce di catturare l'immagine del Front Panel da stampare sottoforma di bitmap.
Come Ti ha spiegato bene Geppo, usare Word x generare report da LabVIEW, pone problematiche di installazione (anche del compilato), e implica l'acquisto dell'apposito toolkit LV.
A 'sto punto xchè non comprarsi [url=http://www.ni.com/diadem/:1re4tguu]Diadem[/url:1re4tguu], che ben si integra con Labviù?
Scherzo! è una battuta!
Sicuramente usare Word è il metodo - agevole e + complicato da LabVIEW.
Se 6 un buon conoscitore di Word, risparmierai tempo solo nella creazione del layout del Tuo report...
Ti consiglio di utilizzare questo metodo nel momento in cui sarai veramente costretto a farlo.
bye
----------------------------------------
================================================================================
Problema plot XY graph
================================================================================
AUTORE: 2688
DATA :17/08/2009 - 20:23:49
----------------------------------------
Vorrei chieder lumi su un problema che ho incontrato nel fare un'applicazione. Mi trovo a dover rappresentare 2 plot in contemporanea su un XY chart e a doverli far scomparire e comparire varie volte. Ora, mentre il plot 0 viene sempre mostrato, il plot 1 al riavvio del sw non si vede mai. Anzi, vengon perse addirittura le impostazioni (come il cambio nome, lo stile linea,...) che avevo fatto la volta precedente. Invece tra un run e l'altro tutto Ok.
Qualcuno ha idea di come possa risolvere??
----------------------------------------
AUTORE: 1078
DATA :18/08/2009 - 10:55:00
----------------------------------------
Caio Stefano,
[quote="stefanomoret":j0sfr7sx]Qualcuno ha idea di come possa risolvere??[/quote:j0sfr7sx]
Sarebbe carino se ci posti un esempio o il pezzo di codice che non ti funziona. Potremmo iutarti di più, non credi?
----------------------------------------
AUTORE: 2688
DATA :18/08/2009 - 19:43:39
----------------------------------------
Hai ragione, e' che ho un programma un po' complesso da postare, sarebbe noioso guardarlo penso.
Navigando sul forum NI ho trovato che il problema dei plot e' stato riconosciuto come un baco per la 8.6. In effetti non mi spiegavo come fosse possibile.
Se ad altri capitasse questo problema, io l'ho temporaneamente risolto aggiungendo un altro plot che lascio sempre invisibile. Sembra infatti che vengano perse solo le informazioni riguardanti l'ultimo plot!
----------------------------------------
AUTORE: 43
DATA :19/08/2009 - 10:31:13
----------------------------------------
[quote="stefanomoret":2a3hnqjx]Hai ragione, e' che ho un programma un po' complesso da postare, sarebbe noioso guardarlo penso.[/quote:2a3hnqjx]
Implicitamente dici che sarebbe noioso guardare del codice fatto da un'altra persona (sarebbe tragico! con tutti gli esempi che ho postato in questo Forum!!!) oppure, non 6 in grado di estrapolare e confezionare un esempio con il problema che esponi?
[quote="stefanomoret":2a3hnqjx]Navigando sul forum NI ho trovato che il problema dei plot e' stato riconosciuto come un baco per la 8.6. In effetti non mi spiegavo come fosse possibile.[/quote:2a3hnqjx]
bah! ho cercato anch'io, ma non ho trovato nulla (forse ho cercato troppo superficialmente). Puoi postare il link alla discussione a cui fai riferimento?
[quote="stefanomoret":2a3hnqjx]Se ad altri capitasse questo problema, io l'ho temporaneamente risolto aggiungendo un altro plot che lascio sempre invisibile. Sembra infatti che vengano perse solo le informazioni riguardanti l'ultimo plot![/quote:2a3hnqjx]
Continuo a considerarlo un non problema. Si può prevedere ancha una inizializzazione del controllo grafico da codice.
bye
----------------------------------------
================================================================================
call library function
================================================================================
AUTORE: 2748
DATA :18/08/2009 - 14:28:07
----------------------------------------
Ciao a tutti
mi chiamo raffaele e avrei bisogno di qualche esempio sull'uso della funzione "call library function"; premetto che sto usando una versione di labview piuttosto vecchia la 6.1i.
Gli esempi presenti non sono illuminanti e se qualcuno di voi potesse darmi delle indicazioni ve ne sarei grato. Ciao a tutti e grazie
----------------------------------------
AUTORE: 43
DATA :18/08/2009 - 15:54:57
----------------------------------------
[quote="acquafredda":2ncoczry]Ciao a tutti
mi chiamo raffaele e avrei bisogno di qualche esempio sull'uso della funzione "call library function"; premetto che sto usando una versione di labview piuttosto vecchia la 6.1i.
Gli esempi presenti non sono illuminanti e se qualcuno di voi potesse darmi delle indicazioni ve ne sarei grato. Ciao a tutti e grazie[/quote:2ncoczry]
Ciao Raffaele.
Mi rendo conto che la comprensione dell'uso di funzioni così "speciali", passi attraverso l'osservazione di esempi, ma , dato che di esempi ce ne sono parecchi spiega meglio cosa vorresti "illuminare" così gli puntiamo addosso un bel faro!.
Altra cosa: dici di "dover" usare la funzione "call library function". Dicci a quale proposito e se lo puoi fare , posta la .dll che devi utilizzare con documentazione (file .h) annessa, please.
bye
----------------------------------------
================================================================================
Cercare file in una cartella
================================================================================
AUTORE: 2674
DATA :21/08/2009 - 14:10:36
----------------------------------------
Ciao a tutti,
vorrei creare un VI che va a vedere se una determinata cartella è vuota; qualora non lo fosse vorrei leggere il file che è contenuto nella cartella.
Come posso fare?
grazie
----------------------------------------
AUTORE: 43
DATA :21/08/2009 - 15:01:56
----------------------------------------
LIST FOLDER
[attachment=0:29xidowu]ListFolder.JPG[/attachment:29xidowu]
Guarda questa [url=http://ilvg.it/forum/viewtopic.php?f=1&t=3779&p=16671&hilit=list+folder#p16671:29xidowu]discussione precedente[/url:29xidowu]
bye
----------------------------------------
================================================================================
Trasformare XY graph in un array temporizzato
================================================================================
AUTORE: 482
DATA :21/08/2009 - 15:06:52
----------------------------------------
...ma ciao!
mi ritrovo con un programma che permette di disegnare un onda arbitraria stabilita con delle coordinate XY.
Alla fine di questa costruzione/disegno, vorrei portare l'array di Y ottenuto in un array temporizzato, quindi dovrei interpolare i valori per tutte quelle X che non esistono.
Faccio l'esempio di un gradino:
X=0
Y=0
X=1
Y=3
X=10
Y=3
dovrei fare in modo che nell'array risultante, io avessi anche i valori di Y per X= 2,3,4... ecc ecc.
Esiste qualche vi per fare questa cosa?
In piu' ho il dubbio che mi sto perdendo in un bicchiere d'acqua...forse è il caldo...
cmq io creo una forma d'onda aassociando delle x scalari in base a quanti sono i valori di Y (generati da una funzione tipo signal generation) per poi doverle riportare in hz alla fine...forse è il caso di associare direttamente dei valori di X in Hz..ma non so come fare...ad ottenerli direttamente....
----------------------------------------
AUTORE: 43
DATA :21/08/2009 - 15:12:51
----------------------------------------
[quote="gepponline":2v2u3hxx]...ma ciao!
mi ritrovo con un programma che permette di disegnare un onda arbitraria stabilita con delle coordinate XY.
Alla fine di questa costruzione/disegno, vorrei portare l'array di Y ottenuto in un array temporizzato, quindi dovrei interpolare i valori per tutte quelle X che non esistono.
Faccio l'esempio di un gradino:
X=0
Y=0
X=1
Y=3
X=10
Y=3
dovrei fare in modo che nell'array risultante, io avessi anche i valori di Y per X= 2,3,4... ecc ecc.
Esiste qualche vi per fare questa cosa?[/quote:2v2u3hxx]
Ovviamente si. è perfetto per le spezzate! Guarda se riesci a capirne l'uso da [url=http://ilvg.it/forum/viewtopic.php?f=1&t=3735&start=15:2v2u3hxx]qui[/url:2v2u3hxx]
Scaricati "mio ciclo.zip" oppure "mio ciclo1.zip"
----------------------------------------
AUTORE: 482
DATA :24/08/2009 - 13:19:25
----------------------------------------
Ho provato ad estrapolare una parte del vi che mi hai suggerito ipotizzando che quella fosse quella di cui ho bisogno....
probabilmente ho sbagliato...
Qui c'e' il vi risultante. Come puoi vedere dai due grafici, la forma d'onda risultante è si composta da piu' punti, ma differente da quella in ingresso. Cosa ho sbagliato?
Probabilmente la fretta mi ha fatto eliminare qualcosa di troppo dal vi originale...
----------------------------------------
AUTORE: 43
DATA :24/08/2009 - 14:42:58
----------------------------------------
[quote="gepponline":3i8jp3fj]Ho provato ad estrapolare una parte del vi che mi hai suggerito ipotizzando che quella fosse quella di cui ho bisogno....
probabilmente ho sbagliato...
Qui c'e' il vi risultante. Come puoi vedere dai due grafici, la forma d'onda risultante è si composta da piu' punti, ma differente da quella in ingresso. Cosa ho sbagliato?
Probabilmente la fretta mi ha fatto eliminare qualcosa di troppo dal vi originale...[/quote:3i8jp3fj]
Il contrario, hai preso qualcosa di troppo che non dovevi prendere, cioè il primo ciclo for.
Nell'esempio originale c'è un array di Y ed un array di dX (delta X) cioè i delta fra la xdel punto precedente e la X del punto successivo.
Per funzionare il tutto, i punti non devono per forza essere equidistanziati come nel tuo esempio, ma la sequenza dei valori X delle coordinate dei punti deve essere una "funzione monotona crescente" f(k) con k che varia da 0 a n (indici dell'array) ed f(k+1)>= f(k). Chiaro no?
Non posso far seguire al punto x2=10, y2=... il punto x3=9 , y3=...
Quindi il ciclo che tu hai copiato sommava i dx fra loro per produrre l'effettivo array delle X che Tu hai già.
Si tratta solo di estrarre i valori Xmin e Xmax e di calcolare il range di X da suddividere per il numero di punti. Xmin è l'offset iniziale.[attachment=0:3i8jp3fj]interpola1.vi[/attachment:3i8jp3fj]
bye
----------------------------------------
AUTORE: 482
DATA :24/08/2009 - 15:15:54
----------------------------------------
Perfetto, per il momento ti ringrazio anche se non so se usero' questa strada perchè anche dall'esempio che ne è venuto fuori, esce il difetto che mi aveva portato a pensare a qualcosa di diverso e cioè che come puoi vedere, quello che era un gradino netto, per effetto dell'interpolazione, viene "smussato".
Adesso sto procedendo seguendo un altra strada ma sicuramente questa procedura mi tornerà comoda piu' avanti.
Vedro' cosa ne salta fuori.
garzie mille!
----------------------------------------
AUTORE: 43
DATA :24/08/2009 - 16:38:10
----------------------------------------
[quote="gepponline":qrr1m6ot]Perfetto, per il momento ti ringrazio anche se non so se usero' questa strada perchè anche dall'esempio che ne è venuto fuori, esce il difetto che mi aveva portato a pensare a qualcosa di diverso e cioè che come puoi vedere, quello che era un gradino netto, per effetto dell'interpolazione, viene "smussato".
Adesso sto procedendo seguendo un altra strada ma sicuramente questa procedura mi tornerà comoda piu' avanti.
Vedro' cosa ne salta fuori.
garzie mille![/quote:qrr1m6ot]
OK. Non si tratta di Discretizzare una forma d'onda continua tipo "spezzata" di cui conosci solo alcuni punti.
Piuttosto devi ricostruire alcuni "buchi" di una forma d'onda già discretizzata.
Per fare questo, devi ricostruire la forma d'onda (formula) partendo dai punti a Tua disposizione e calcolare le coordinate dei mancanti.
Ti consiglio di dare un'occhiata nella palette Mathematics -> Fitting, ma immagino che ci abbia già guardato.
bye
----------------------------------------
AUTORE: 482
DATA :25/08/2009 - 09:57:00
----------------------------------------
Purtroppo le ose che mi consigli sono troppo "belle".
Ti spiego...
sto ricopiando il funzionamento di un software che abbiamo in azienda da circa 20anni.
Purtroppo sto cacchio di software genera un onda che ha una certa frequenza e una certa lunghezza (in punti che la compongono), alla quale gli puoi aggiungere un gradino che pero' come parametro ha il tempo di durata.
Per questo motivo ho deciso di partire tenendo come punto fermo il rate dell'uscita e in base a quello stabilire quanti punti dovranno comporre l'onda anzichè dargli come parametro il numero di punti.
Tutto questo giro semplicemente per mantenere le schede con i parametri di produzione invariate.
Il casino mi è spuntato perchè erroneamente, ero partito creando l'onda infischiandomene della frequenza ma semplicemente basandomi sui punti che la componevano e quindi poi il gradino che non aveva un parametro "numero di punti", mi creava problemi.
...anche se adesso che lo scrivo..forse facendo un equazione abbastanza banale, potrei evitarmi di tenere il frame rate predefinito....
----------------------------------------
AUTORE: 482
DATA :25/08/2009 - 10:34:54
----------------------------------------
aiuto!! MI STO PERDENDO IN UN EQUAZIONE:
SE L'ONDA HA
FREQ= 10Hz
LUNG= 128 pt
e il gradino dura
TEMPO = 0,11 sec
è giusta l'equazione:
LUNGHEZZA GRADINO= (LUNG* (1/TEMPO)) / FREQ
???
C'e' qualcosa di sbagliato in questa equazione...cos'e'? (non sono mai stato una cima in matematica del resto....
P.s. questo per costruire l'onda proporzionata, poi alla fien di tutto dovro' stabilire il mio rate in base ai punti/frequenza.
----------------------------------------
AUTORE: 43
DATA :25/08/2009 - 11:03:24
----------------------------------------
[quote="gepponline":1mbhwwd0]Purtroppo le ose che mi consigli sono troppo "belle".
Ti spiego...
sto ricopiando il funzionamento di un software che abbiamo in azienda da circa 20anni.
Purtroppo sto cacchio di software genera un onda che ha una certa frequenza e una certa lunghezza (in punti che la compongono), alla quale gli puoi aggiungere un gradino che pero' come parametro ha il tempo di durata.
Per questo motivo ho deciso di partire tenendo come punto fermo il rate dell'uscita e in base a quello stabilire quanti punti dovranno comporre l'onda anzichè dargli come parametro il numero di punti.
Tutto questo giro semplicemente per mantenere le schede con i parametri di produzione invariate.
Il casino mi è spuntato perchè erroneamente, ero partito creando l'onda infischiandomene della frequenza ma semplicemente basandomi sui punti che la componevano e quindi poi il gradino che non aveva un parametro "numero di punti", mi creava problemi.
...anche se adesso che lo scrivo..forse facendo un equazione abbastanza banale, potrei evitarmi di tenere il frame rate predefinito....[/quote:1mbhwwd0]
Insomma!!Non ho capito il problema e non ho potuto aiutarti adeguatamente.
Cmq stai allargando gli orizzonti di intervento.
La scheda che genera quel segnale è un scheda NI?
Se si, il segnale in uscita AO è un segnale periodico: tu stabilisci i valori che compongono la Tua forma d'onda, il dt fra l'output di un livello di tensione/corrente in uscita ed il successivo, e, una volta riprodotti tutti i livelli che compongono il periodo del Tuo segnale, il generatore riprende a generare il segnale dall'inizio del periodo, all'infinito. Variando il dt varia anche la freq. del segnale.
Freq che è data da:
Freq= 1/([n.livelli output o n. punti]* dt)
Nel Tuo caso non mi è chiarissimo cosa significa "aggiungere un gradino":
Significa INSERIRE in un array di livelli (Y=Volt o Ampere)dei nuovi valori oppure SOVRASCRIVERE alcuni valori con un valore di livello costante che costituisce il "gradino"?
Oppure devi sommare fra loro 2 forme d'onda? In questo caso dovresti sommare 2 array elemento con elemento ottenendo un terzo array.
Oppure si tratta di sommare elettricamente due segnali che vengono generati in parallelo?
bye
----------------------------------------
AUTORE: 482
DATA :25/08/2009 - 11:10:59
----------------------------------------
Non abbatterti cosi'
Mi sei molto utile, solo che il mio problema è complesso perchè INUTILE, nel senso che se dovessi fare un programma da zero mi eviterei tutti i problemi ereditati dal vecchio sistema.
Tornando alla generazione dell'onda:
Io creo un onda (ad esempio sinusoidale) che è composta da TOT punti e che si ripete n volte.
Dopo l' ennesima volta, inserisco un gradino ovvero un valore di tensione costante, che dura un tot di tempo e [b:2ofbf09p]quindi devo scoprire quanti punti generare con quel livello, per fare in modo che duri tot tempo.[/b:2ofbf09p]
La scheda al moemnto non c'e' perchè dovrà funzionare sia con harware natioal che con altri quidni diciamo che la mia uscita sarà composta solo da un array di elementi e dall'indicazione del frame rate del buffer in uscita.
spero di non avre creato piu' confusione
----------------------------------------
AUTORE: 43
DATA :25/08/2009 - 11:41:13
----------------------------------------
[quote="gepponline":1jea1z46]aiuto!! MI STO PERDENDO IN UN EQUAZIONE:
SE L'ONDA HA
FREQ= 10Hz[/quote:1jea1z46]
cioè dt = 0.1 sec.
[quote="gepponline":1jea1z46]LUNG= 128 pt[/quote:1jea1z46]
durata complessiva periodo=12.8 secondi ?
[quote="gepponline":1jea1z46]e il gradino dura
TEMPO = 0,11 sec[/quote:1jea1z46]
se il dt è 0.1 sec
e la durata del gradino è 0.11 sec => allora il gradino è costituito per approx da 1 punto!!!!
se vuoi rispettare la durata al centesimo di sec. -> allora:
- aumenta La freq da 10 Hz a 100Hz,
- duplica per 10 volte ogni valore dell'array fino a raggiungere 1280 punti.
- aggiungi gli 11 pt del gradino che ancora non ho capito se rimpiazzano, si sommano o si inseriscono nell'array esistente
bye
----------------------------------------
AUTORE: 482
DATA :25/08/2009 - 13:53:30
----------------------------------------
[quote="paracarro":193e8v7x][quote="gepponline":193e8v7x]aiuto!! MI STO PERDENDO IN UN EQUAZIONE:
SE L'ONDA HA
FREQ= 10Hz[/quote:193e8v7x]
cioè dt = 0.1 sec.
[quote="gepponline":193e8v7x]LUNG= 128 pt[/quote:193e8v7x]
durata complessiva periodo=12.8 secondi ?[/quote:193e8v7x]
Credo che l'incomprensione sia qui.
Per frequenza, intendo la frequenza della sinusoide.
Mentre per punti, intendo i punti che compongono la sinusoide.
Quindi, la sinusoide deve essere eseguita ad una frequenza di 10Hz e la sinusodie è composta da 128 punti (è semplicemente una questione di disegno) quindi io avro' un uscita di 1280 hz (samples/sec).
Questo se eseguo solo la sinusoide.
Se invece gli aggiungo il gradino, devo sommare ai 128 punti altri X punti, che verranno eseguiti alla frequenza di 1280 Hz in modo che mi venga eseguito un gradino della durata impostata dopo aver eseguito la sinusoide.
Devo solo capire quanti punti di gradino devo inserire nell'array, che come dicevo, si sommano ai 128 che compongono la sinusoide.
----------------------------------------
AUTORE: 43
DATA :25/08/2009 - 15:05:52
----------------------------------------
[quote="gepponline":3evarp0s]... avro' un uscita di 1280 hz (samples/sec).
Questo se eseguo solo la sinusoide.
Se invece gli aggiungo il gradino, devo sommare ai 128 punti altri X punti, che verranno eseguiti alla frequenza di 1280 Hz in modo che mi venga eseguito un gradino della durata impostata dopo aver eseguito la sinusoide.
Devo solo capire quanti punti di gradino devo inserire nell'array, che come dicevo, si sommano ai 128 che compongono la sinusoide.[/quote:3evarp0s]
il tempo che intercorre fra l'uscita di un valore ed il successivo è l'inverso della freq.
periodo (dt) = 1/1280 = 0,00078125
Quindi basta dividerela durata del gradino per questo valore ed otterrai il numero di punti
0,11/ 0,00078125 = 140,8
approssimando sono [b:3evarp0s]141[/b:3evarp0s] punti
il valore deve necessariamente essere > 128 in quando la generazione di 128 punti dura 0.1 sec (10 Hz) ed il gradino deve durare 0.11
----------------------------------------
AUTORE: 482
DATA :25/08/2009 - 15:10:32
----------------------------------------
Esattamente!
Avevo appena modificato il VI cosi' come hhai detto.
Infatti nel mio ultimo post, mentre scrivevo, mi si sono diradate le nubi
Grazie mille di avermi dato retta.
Ora devo solo fare in modo che una volta impostata questa prima parte di onda, il frame rate sia imposto e non calcolato.
grazie ancora!
----------------------------------------
AUTORE: 43
DATA :25/08/2009 - 16:09:26
----------------------------------------
Bene!
Ora non mi è chiaro come effettuerai la "sincronizzazione", per l'innesto della seconda forma d'onda, cioè il "gradino", ma, va bene così!
Auguri
bye
----------------------------------------
AUTORE: 482
DATA :26/08/2009 - 07:43:31
----------------------------------------
in che senso la sincronizzazione?
Per prima parte di onda intendevo onda+ gradino, perchè poi andranno aggiunti altre parti composte da onda+gradino.
----------------------------------------
================================================================================
Grafico - asse tempi
================================================================================
AUTORE: 2679
DATA :25/08/2009 - 11:45:08
----------------------------------------
Salve...sto cercando di creare uno strumento che salvi un segnale e poi ci sia la possibilità di richiamare il segnale salvato sullo stesso grafico. Il problema nasce quando richiamo il segnale poichè ho bisogno che sull'asse dei tempi venga visualizzata la data e l'ora dell'inizio dell'acquisizione effettuata. Per quanto riguarda la visualizzazione della data e dell'ora durante l'acquisizione non ho avuto problemi poichè ho impostato Xscale Offset con un Timestamp dell'orario corrente ma i problemi nascono quando devo richiamare il file salvato (magari a distanza di qualche giorno...). ho provato ad utilizzare il blocco Write/Read from measurement file e salvare come stringhe di dati le date di inizio e fine acquisizione ma in fase di lettura quando vado a leggere quelle stringhe i valori non corrispondono...come potrei risolvere il problema? Grazie per le eventuali risposte
----------------------------------------
AUTORE: 43
DATA :25/08/2009 - 13:28:24
----------------------------------------
[quote="dylan":6w5lzwcl]Salve...sto cercando di creare uno strumento che salvi un segnale e poi ci sia la possibilità di richiamare il segnale salvato sullo stesso grafico. Il problema nasce quando richiamo il segnale poichè ho bisogno che sull'asse dei tempi venga visualizzata la data e l'ora dell'inizio dell'acquisizione effettuata. Per quanto riguarda la visualizzazione della data e dell'ora durante l'acquisizione non ho avuto problemi poichè ho impostato Xscale Offset con un Timestamp dell'orario corrente ma i problemi nascono quando devo richiamare il file salvato (magari a distanza di qualche giorno...). ho provato ad utilizzare il blocco Write/Read from measurement file e salvare come stringhe di dati le date di inizio e fine acquisizione ma in fase di lettura quando vado a leggere quelle stringhe i valori non corrispondono...come potrei risolvere il problema? Grazie per le eventuali risposte[/quote:6w5lzwcl]
argomento già trattato
viewtopic.php?f=1&t=3864&p=17022
Però non scrivi nemmeno che versione di LabVIEW usi, se usi graph o chart... che hanno comportamenti ben diversi sia nell'utilizzo che nella configurazione.
Probabilmente usi un chart.
Continuo a non capire la smania di avere nelle tacche sotto il grafico la data e l'ora: questo potrebbe avere senso se la freq. di acquisizione fosse di un campione ogni ora, mentre non avrebbe senso per acquisizioni + veloci.
In base alla freq. di acq. si decide cosa visualizzare o meno sull'asse dei tempi.
Se bastasse visualizzare hh:mm:ss (ore, minuti, secondi) il giorno potrebbe essere visualizzato a parte , sopra il grafico, sotto il grafico, a lato del grafico, da qualche parte insomma ma NON ripetuto sulle tacche dell'asse dei tempi....
Se poi la freq di acq fosse > 1Hz cioè oltre di 1 campione al sec., metterei l'intero timestamp di inizio acq. fuori dal grafico e si potrebbe visualizzare il tempo evidenziando anche frazioni di secondi partendo dall'istante 0 di inizio acq.
In attesa di ulteriori dettagli porgo distinti saluti.
bye
----------------------------------------
AUTORE: 2679
DATA :25/08/2009 - 14:27:42
----------------------------------------
Allora la versione di labview è la 8.6 e sto utilizzando un graph...Il fatto di voler avere l'indicazione di data e ora sull'asse dei tempi del grafico deriva dal fatto che vorrei fare acquisizioni lunghe durante l'arco di una giornata ad esempio.. la frequenza di acquisizione può essere impostata e cmq non è molto alta...dell'ordine di un campione ogni tot minuti (ad esempio se si volesse valutare l'andamento della tensione prodotta da un pannello solare durante l'arco di una giornata)...
----------------------------------------
AUTORE: 43
DATA :25/08/2009 - 16:07:01
----------------------------------------
[quote="dylan":36zzpnww]Allora la versione di labview è la 8.6 e sto utilizzando un graph...Il fatto di voler avere l'indicazione di data e ora sull'asse dei tempi del grafico deriva dal fatto che vorrei fare acquisizioni lunghe durante l'arco di una giornata ad esempio.. la frequenza di acquisizione può essere impostata e cmq non è molto [b:36zzpnww]alta[/b:36zzpnww]...dell'ordine di un campione ogni tot minuti (ad esempio se si volesse valutare l'andamento della tensione prodotta da un pannello solare durante l'arco di una giornata)...[/quote:36zzpnww]
Se la freq. di campionamento è [b:36zzpnww]bassa[/b:36zzpnww] allora tutto ha senso.
Ora, ci sono 2 tipi di graph che puoi utilizzare: XY graph e Waveform Graph.
Waveform graph serve a visualizzare dati che sono perfettamente "equidistanziati" nel tempo mentre per gli XY Graph si deve necessariamente specificare per ogni punto la coordinata X del medesimo.
Quindi, per prima cosa bisogna capire quale dei 2 casi sono di nostro interesse. Solitamente è sufficiente un waveform graph.
Non dovendo associare ad ogni valore di Y un corrispondente X, procedere creando un cluster con primi valori X0 poi dx ed infine l'array delle Y
Per il tipo di dato "waveform" il ragionamento è similare
[attachment=0:36zzpnww]waveformGraph.JPG[/attachment:36zzpnww]
Poi ci sono altre discussioni in questo forum dove si spiega come convertire un timestamp in double. Ma immagino sia già in grado di configurare l'asse dei tempi
bye
----------------------------------------
AUTORE: 43
DATA :25/08/2009 - 16:45:45
----------------------------------------
Se hai un freq. di acq. di 1 campione al min. (60 all'ora oppure 1440 al gg), allora, potrebbe non aver senso caricare 2 o 3 gg di acq., ma bisogna procedere ad una "decimazione" dei punti.
Inultile disegnare oltre 3000 punti se lo schermo che si utilizza ha una risoluzione orizzontale di poco superiore a 1000 pixel.
bye
----------------------------------------
================================================================================
Codice VB da labview?
================================================================================
AUTORE: 2753
DATA :26/08/2009 - 14:29:49
----------------------------------------
Ciao a tutti,
mi sto avvicinando al mondo labview e vorrei sapere se esiste la possibilità di visualizzare/esportare il codice sorgente di una applicazione.
Cioè, io realizzo la mia applicazione in maniera visuale utilizzando i controlli labview, ma poi vorrei visualizzare il codice VB che viene generato automaticamente in modo da poterlo utilizzare e modificare.
Grazie a tutti per le risposte
Ciao
Salvatore
----------------------------------------
AUTORE: 2592
DATA :27/08/2009 - 08:13:25
----------------------------------------
Ciao Salvatore,
per usare un codice VB in LabVIEW devi creare una DLL della tua applicazione e poi richiamarla in LabVIEW attraverso l'uso dei Call Library Function Node.
In rete ho trovato qualche link che spiega come creare DLL in VB:
Creating a Windows DLL with Visual Basic
http://windowsdevcenter.com/pub/a/windo ... e_dll.html
http://www.vb-helper.com/howto_make_standard_dll.html
http://forum.html.it/forum/showthread/t-471357.html
Ti indico inoltre un documento che spiega come richiamare le DLL in LabVIEW:
An Overview of Accessing DLLs or Shared Libraries from LabVIEW
http://zone.ni.com/devzone/cda/tut/p/id/3009
Ciao,
Andrea
----------------------------------------
AUTORE: 2753
DATA :27/08/2009 - 08:26:44
----------------------------------------
Ciao Andrea,
ti ringrazio per la risposta ma forse non mi sono espresso bene e ho fatto un pò di confusione.
Quando ho postato il messaggio pensavo che Labview utilizzasse VB come linguaggio per creare le proprie applicazioni ma poi leggendo un pò di documentazione ho capito che non è così.
Ora ti spiego di cosa ho bisogno. Ho un'applicazione scritta in Labview e vorrei creare la stessa applicazione utilizzando una macro Excel programmando quindi in VB. Quindi chiedo se è possibile in qualche modo visualizzare il codice testuale dell'applicazione labview in modo da poter poi tradurre tale codice in VB.
Ciao e grazie
Salvatore
----------------------------------------
AUTORE: 4
DATA :27/08/2009 - 08:55:13
----------------------------------------
non esiste codice testuale, i fili e le iconcine che vedi in labview [b:2rb9qt1c]sono[/b:2rb9qt1c] il codice
----------------------------------------
AUTORE: 2753
DATA :27/08/2009 - 09:17:23
----------------------------------------
Ok, ti ringrazio...è come temevo
Ciao e grazie per le risposte.
Salvatore
----------------------------------------
AUTORE: 43
DATA :27/08/2009 - 09:32:15
----------------------------------------
Se vuoi usare controlli similari a quelli di LabVIEW in ambiente Visual studio (penso anche .net) potresti essere interessato a questo prodotto NI
http://www.ni.com/mstudio/
Dentro ci sono controlli ActiveX che potrebbero fare al caso Tuo.
bye
----------------------------------------
================================================================================
Come aggiornare un controllo in un SubVi
================================================================================
AUTORE: 2435
DATA :28/08/2009 - 08:54:18
----------------------------------------
Ciao a tutti...
Il mio problema è questo:
vorrei che le modifiche apportate al .ctl venissero aggiornate anche su tutti i SubVi che contengono il .ctl .
Cosa sto sbagliando?perchè non funziona?
Grazie e ciao
----------------------------------------
AUTORE: 2435
DATA :28/08/2009 - 08:56:54
----------------------------------------
non mi viene permesso di allegare file...
comunque la composizione è la seguente
una ".llb" contenente
-un ".ctl"
-un ".vi"
----------------------------------------
AUTORE: 482
DATA :28/08/2009 - 09:00:42
----------------------------------------
Quando crei il controllo, in alto c'e' una voce in cui devi selezionare anzichè "control" Type def o Strict type def.
Cosi' facendo ogni istanza del controllo che creerai, sarà legata al .ctl sorgente e non sarà piu' un duplicato a se stante.
La differenza tra type def e strict type def è sostanzialmente che il primo ti crea un controllo con lo stesso tipo di dati, mentre nel secondo, oltre allo stesso tipo di dati avrai anche gli stessi limiti e caratteristiche generali.
----------------------------------------
AUTORE: 2435
DATA :28/08/2009 - 09:10:04
----------------------------------------
scusa ma non riesco a trovare questa voce...
puoi darmi delle indicazioni più precise?
grazie e scusami ancora
----------------------------------------
AUTORE: 482
DATA :28/08/2009 - 09:23:05
----------------------------------------
selezioni un controllo -> tasto destro Advanced -> customize..
Una volta nella pagina di customizzazione del controllo, in alto trovi una chiava inglese e di fianco un controllo a tendina con scritto "control".Se clikki li, ti compariranno le atre voci che ti ho detto prima.
----------------------------------------
AUTORE: 2435
DATA :28/08/2009 - 09:29:02
----------------------------------------
utilissimo....
grazie mille
----------------------------------------
================================================================================
Tastiera Software
================================================================================
AUTORE: 482
DATA :28/08/2009 - 09:03:53
----------------------------------------
...ma ciao!
sto per passare delle applicazioni su Panel PC.
Un paio di queste hanno l'opzione per il salvataggio dei file di configurazione.
Ora essendo un Panel PC, non ho la tastiera e non ho intenzione di metterla.
Sapete se si trova in giro un vi che simula una tastiera harware senza bisogno che mi metta li a svilupparne uno da zero?
grazie!
----------------------------------------
AUTORE: 482
DATA :28/08/2009 - 09:07:03
----------------------------------------
Come non detto, forse ho trovato quello che cercavo anche se è legato strettamente ad un controllo microsoft.
Se trovate qualcosa magari interamente in labview ben venga!
----------------------------------------
AUTORE: 482
DATA :28/08/2009 - 09:21:03
----------------------------------------
Trovato anche questo:
http://delta.ni.com/content/docs/DOC-22 ... ator=print
Questo registra i vari tasti e poi li fa eseguire dalla dll user32 di windows.
Con un paio di aggiustamenti, puo' fare al caso mio.
Pero' vorrei slegarlo da windows, quindi mi sa che mi mettero' a farne uno
----------------------------------------
AUTORE: 482
DATA :28/08/2009 - 10:06:23
----------------------------------------
Occhei, ci sto smanettando...
Qualcuno sa dirmi come ricavare e impostare il focus del cursore in uno string control? Tra le proprietà e i metodi non ho trovato niente. Mi pareva fosse un argomento già trattato qui nel forum ma non l'ho trovato...
----------------------------------------
AUTORE: 482
DATA :28/08/2009 - 11:23:17
----------------------------------------
Me la suono e me la canto e condivido con voi quello che ho tirato fuori.
Ho eliminato tutti i caratteri speciali che solitamente non servono quando si tratta solo di inserire dei nomi di file o simili.
Comunque se servono, non è un problema inserire altri caratteri.
Non c'e' piu' dipendenza dalle dll di windows o da programmi esterni.
Che è una cosa che adesso non mi serve, pero' credo sia piu' corretto distaccarsene..non si sa mai in futuro
Se avete suggerimenti fatevi avanti.
----------------------------------------
AUTORE: 43
DATA :28/08/2009 - 11:51:10
----------------------------------------
[quote="gepponline":3vb4dzg1]Occhei, ci sto smanettando...
Qualcuno sa dirmi come ricavare e impostare il focus del cursore in uno string control? Tra le proprietà e i metodi non ho trovato niente. Mi pareva fosse un argomento già trattato qui nel forum ma non l'ho trovato...[/quote:3vb4dzg1]
Il focus sul controllo si può forzare mettendo a True la proprietà "Key Focus".
Divisione in "blocchi" a parte, le proprietà sono elencate in ordine alfabetico, per cui "Key Focus" si trova fra "is Typedef?" e "Label".
La separazione in blocchi delle proprietà è dovuta alla classe di appartenenza del controllo.
Riguardo il controllo di tipo stringa, specialmente se si limita ad una sola riga di testo "Limit to single Line"=True e se non ha visibile nemmeno la scrollbar "Vertical Scrollbar Visible"=False, e se si tratta di una modifica di testo già digitato, farei apparire il testo precedente come già selezionato con il cursore in fondo al controllo.
In questo modo, digitando un carattere si immetterà un nuovo testo cancellando il precedente, mentre premendo la freccia del cursore a dx, la selezione verrà cancellata e così l'operatore potrà modificare qunto scritto in precedenza, spostandosi con le frecce.
Insomma guardati l'esempio[attachment=0:3vb4dzg1]Inserisci matricola.vi[/attachment:3vb4dzg1]
bye
----------------------------------------
AUTORE: 482
DATA :28/08/2009 - 13:05:44
----------------------------------------
Come avrai notato, non era il key focus che mi mancava, ma come spostarlo all'inetrno di una stringa, ma poi ho scoperto come fare
----------------------------------------
AUTORE: 4
DATA :28/08/2009 - 13:08:24
----------------------------------------
io ho un codice uguale, tanto vale che lo condivido anche se non è forse molto reciclabile, ma insomma vedi tu.
L'ho convertito il 8.6 ma mi sono accorto che il cursore nel campo testo non si vede mentre prima funzionava... mah.
Cmq ecco il codice
nello zip trovi una tastiera alpha numerica e una solo numerica, i 2 vi sono inetsi come pop-up e hanno una serie di parametri che puoi passargli da fuori, tipo il testo iniziale, se il valore da inserire è una password, il titolo della finestra e la trasparenza (fatta con la user32.dll visto che ai tempi LV non supportava trasparenze di finestre, ma ora che lo fa si potrebbe sostituire la dll con le funzioni native)
Ciao
----------------------------------------
AUTORE: 3990
DATA :29/11/2011 - 10:04:26
----------------------------------------
Salve a tutti.
Vorrei creare una .VI simile al pop up alfanumerico presente in [url:3as44dhd]http://www.ilvg.it/forum/download/file.php?id=2200[/url:3as44dhd]
La modifica che mi interessa realizzare consiste nel:
- poter scrivere su 2 differenti controlli stringa.
- poter passare dall'uno all'altro semplicemente cliccando col mouse sul campo desiderato.
Ho tentato di realizzare un mio .VI, che allego, ma con esiti negativi.
Ringrazio chiunque potesse concedermi del tempo.
Grazie mille.
Michele
----------------------------------------
================================================================================
XY Graph con differenti colori
================================================================================
AUTORE: 2754
DATA :28/08/2009 - 14:04:58
----------------------------------------
Ciao a tutti,
ho un un problema con la rappersentazione grafica di dati numerici raccolti in due array 1D (array delle ascisse X e array delle ordinate Y).
Sto cercando di rappresentare le singole tracce (X,Y) con colori differenti su uno stesso grafico.
Nel VI di esempio che ho realizzato riesco a colorare le tracce, ma commetto l'errore di ricolorarle tutte ad ogni successivo dato da rappresentare.
Non ho una grande esperienza con labview, lo sto utilizzando da un mese circa, quindi se il problema che pongo è banale vi chiedo scusa in anticipo.
Esiste un modo per aggirare questo problema?
Allego per completezza il VI (LabVie 8.2).
Grazie per l'attenzione,
Francesco.
----------------------------------------
AUTORE: 1078
DATA :28/08/2009 - 15:36:51
----------------------------------------
Ciao Francesco,
Nel tuo esempio commetti un'errore classico dei principianti. In realtà non stai plottando due differenti tracce ma una sola traccia con due punti, ecco perchè entrambe i punti ti si colorano in modo identico quando vai a cambiare il colore del punto dal property node point-fill color. Quel nodo si riferisce al colore di tutti i punti della traccia.
Ho corretto il tuo esempio. Prova a vedere se soddisfa le tue richieste...
Buon lavoro.
Ciao.
----------------------------------------
AUTORE: 2754
DATA :31/08/2009 - 08:58:24
----------------------------------------
Ciao Riccardo,
grazie mille per la risposta e per le precisazioni: effettivamente hai proprio ragione, ho iniziato ad usare LabView da un mesetto circa.
Attualmente dispongo di LabView 8.2: è' possibile, per favore, avere la tua soluzione compatibile con questa versione di LabView?
Grazie ancora,
Francesco.
----------------------------------------
================================================================================
Funzione seed blocchi white noise
================================================================================
AUTORE: 2679
DATA :30/08/2009 - 19:28:30
----------------------------------------
Salve...non riesco a capire la funzione Seed dei blocchi White noise (menù Signal Processing). Qualcuno può chiarirmi le idee? grazie...
----------------------------------------
AUTORE: 43
DATA :31/08/2009 - 10:58:01
----------------------------------------
[quote="dylan":fj47o5z1]Salve...non riesco a capire la funzione Seed dei blocchi White noise (menù Signal Processing). Qualcuno può chiarirmi le idee? grazie...[/quote:fj47o5z1]
Mi sono limitato a dare un'occhiataall'Help di LabVIEW.
In effetti il parametro "Seed" a cui fai riferimento rimanda alla gestione della generazione di numeri casuali "Continuous Random VI"
E' un VI polimorfo presente nella palette "Probability VIs"
[attachment=0:fj47o5z1]continuousRandom.vi.jpg[/attachment:fj47o5z1]
Dunque, penso che Seed sia il "punto di inizio" di una sequenza randomica di numeri.
cercati "Random number generation" con google e dai un'occhiata a wikipedia
In soldoni: i numeri generati casualmente, solitamente dipendono dal numero precedentemente generato.
Al punto che ad un numero casuale segue sempre lo stesso numero successivo, come se la sequenza fosse preordinata.
Forzando un valore di Seed una sola volta, inizialmente, si determina una sequenza casuale. Alla successiva inizializzazione, se non verrà cambiato Seed, verrà sempre generata la stessa sequenza di numeri casuali.
Chi ha programmato in Basic con C64 o Spectrum lo sa, che prima di generare una sequenza di numeri casuali(RND()) è meglio impostare all'inizio un SEED che dipende dal tempo, (clock) che ad ogni avvio del programma, assume un valore diverso...
bye
----------------------------------------
AUTORE: 2679
DATA :31/08/2009 - 15:44:24
----------------------------------------
Grazie...si infatti ho notato che se il seed viene impostato al valore 0 la generazione dei numeri random varia ad ogni esecuzione mentre se il valore è maggiore di 0 la generazione è sempre la stessa...grazie ancora...
----------------------------------------
================================================================================
PID
================================================================================
AUTORE: 2435
DATA :03/09/2009 - 08:10:08
----------------------------------------
Ciao a tutti.....
cosa sto sbagliando nella regolazione del PID????
grazie
----------------------------------------
AUTORE: 301
DATA :03/09/2009 - 15:09:55
----------------------------------------
miiii......ma ce l'avete sta mania di salvare con l'ultima versione del LV....così quelli che sono rimasti alle vecchie si attaccano....
----------------------------------------
AUTORE: 482
DATA :04/09/2009 - 07:55:28
----------------------------------------
Vedendolo cosi' mi sembra tutto corretto, ovviamente l'inizializzazione pero' al primo ciclo deve essere a TRUE, senno' terrà sempre l'ultimo valore da quando è stato messo in memoria il VI.
----------------------------------------
================================================================================
controllo strumentazione, Visa, protocollo seriale
================================================================================
AUTORE: 2712
DATA :05/09/2009 - 09:57:58
----------------------------------------
salve a tutti
utilizzo da pochissimo labview e sn alla ricerca di informazioni riguardanti il controllo strumentazione, Visa, protocollo seriale.
qualcuno mi puo dare una mano???
----------------------------------------
AUTORE: 2592
DATA :05/09/2009 - 19:04:06
----------------------------------------
Ciao off,
ti segnalo una serie di link con le informazioni che stai cercando:
NI-VISA Overview
http://zone.ni.com/devzone/cda/tut/p/id/3702
Serial Communication Starting Point
http://zone.ni.com/devzone/cda/tut/p/id/4049
Serial Instrument Control Tutorial
http://zone.ni.com/devzone/cda/tut/p/id/2897
Ci sono poi esempi già fatti in LabVIEW; clicca su Help-> Find Examples e scrivi come parola di ricerca "serial".
Buon lavoro,
Andrea
----------------------------------------
AUTORE: 2712
DATA :07/09/2009 - 16:04:36
----------------------------------------
grazie 1000
----------------------------------------
================================================================================
RS232 Visa
================================================================================
AUTORE: 2759
DATA :05/09/2009 - 12:29:27
----------------------------------------
Salve a tutti!!ho bisogno di un piccolo aiuto...vorrei creare un VI che mi permette di inviare tramite la seriale, utilizzando i blocchetti visa, 3 dati ad un dispositivo. come posso inviare i 3 dati?
n.b. i miei dati sono 3 numeric control..a me piacerebbe inviarli uno dopo l'altro tramite la seriale..
----------------------------------------
AUTORE: 2759
DATA :05/09/2009 - 14:03:11
----------------------------------------
allego quello che sono riuscita a fare finora..
----------------------------------------
AUTORE: 645
DATA :07/09/2009 - 15:58:52
----------------------------------------
Dai un'occhiata a questo topic viewtopic.php?f=1&t=4178 che magari può esserti utile.
Non ho ancora aperto il tuo file: di solito per inviare un dato sulla seriale bisogna sapere come deve essere inviato. Quando tu colleghi uno strumento al pc per parlarci tramite porta seriale devi anche conoscere il protocollo di comunicazione accettato, diciamo così "le regole", "il dialetto" da usare per essere compresi dallo strumento e a tua volta ricevere informazioni comprensibili dallo strumento stesso. Questo protocollo dipende dallo strumento: cerca nel manuale se si parla di controllo remoto e interfaccia con altri dispositivi.
Prima di tutto ricordati di configurare la porta seriale con il blocco apposta. In generale poi ti servono un blocco WRITE VISA per inviare il comando (o il semplice dato) e un blocco di temporizzazione (un ritardo) per lasciare allo strumento il tempo di comprendere ciò che gli hai scritto (a volte basta qualche ms, altre volte servono s). Se ti aspetti qualche risposta dallo strumento usa il blocco READ VISA per leggerla. Al termine del VI (nel quale puoi inserire un ciclo per inviare i dati in serie) usa il blocco di chiusura della comunicazione con la porta seriale.
----------------------------------------
================================================================================
versione 1.1 di meetview per meetbox
================================================================================
AUTORE: 2760
DATA :07/09/2009 - 21:08:29
----------------------------------------
Salve a tutti, sto cercando la versione 1.1 di meetview per meetbox funzionante con labview ver 6 o 6.1, il software del quale abbiamo la licenza, si trovava in un cd-rom che non si riesce più a leggere.In attesa di qualche notizia saluto tutti
----------------------------------------
AUTORE: 2592
DATA :08/09/2009 - 09:11:01
----------------------------------------
Ciao nevio,
prova ad andare sul sito di IRS o magari chiamali per farti dare le informazioni che cerchi:
http://www.irsweb.it/MeetView.html
Ciao,
Andrea
----------------------------------------
AUTORE: 2760
DATA :08/09/2009 - 20:26:13
----------------------------------------
ciao Andrea, io ho già contattato la IRS che mi ha fornito la versione per labview 8.6, il problema è che nel laboratorio le macchine a disposizione (pc) sono tutti Celeron 3 733 e non girano con un programma cosi pesante,inoltre ho avuto la possibilità di acquistare negli usa una scheda isa( la MIO at16 e10) che uso per fare prove. IRS ha problemi per recuperare la versione meetview 1.1, per questo cerco qualcuno che magari ne abbia un backup. ciao
----------------------------------------
AUTORE: 278
DATA :08/09/2009 - 23:48:34
----------------------------------------
Ciao a tutti,
sul sito segnalato da Andrea, leggo che il software viene fornito come codice sorgente, immagino quindi che si tratti di codice LabVIEW
Teoricamente, avendo a disposizione le versioni di LV fino alla 6.0 (e di un po` di tempo libero...) e` possibile convertire i VI per meetbox fino alla versione che ti occorre.
Praticamente, convertire ad una versione precedente di LV non sempre ha come effetto il corretto funzionamento dei VI, immagino che riuscire a convertire con successo dalla versione 8.6 alla 6.0 sia un`impresa quasi impossibile, molte funzioni presenti nelle versioni attuali non possono essere convertite in quelle precedenti.
Tuttavia, in mancanza di altre opzioni, potrebbe essere una strada percorribile, sempre che LV lo consenta
Oddio, potresti anche divertirti a copiare il codice 8.6 riga per riga con la versione 6.0.... se vuoi farti del male...
P.S Interessante questo meetbox, potresti darci qualche info in piu`(costi, applicazioni pratiche, range di utilizzo ecc)??
----------------------------------------
AUTORE: 2592
DATA :09/09/2009 - 14:56:20
----------------------------------------
Concordo in pieno con Dario.
Prova a fare il porting dalla 8.6 alla 6.1 ma non avere grandi aspettative...
Buon lavoro,
Andrea
----------------------------------------
================================================================================
problemi trasmissione dati tramite ZigBee
================================================================================
AUTORE: 2765
DATA :08/09/2009 - 14:55:36
----------------------------------------
Buongiorno sono un nuovo utente e ho iniziato da poco ad usare Labview, ho dei problemi di invio e ricezione dati usando un trasmettitore ZigBee. Mi spiego meglio quando seleziono il pulsante il sistema manda una stringa di un carattere, e li funziona tutto bene. Ma appena muovo il mouse o scelgo un tab diverso il sistema non manda il carattere e quinid perde la sincronizzazione con il ricevitore. I dati che ricevo sono 329 byte.
----------------------------------------
AUTORE: 1078
DATA :09/09/2009 - 10:49:49
----------------------------------------
Ciao Papo,
Continuiamo a ripetere che sarebbe carino se postaste di tanto in tanto dei frammenti del vostro codice così, analizzandoli avremmo la possibilità di aiutarvi. Bisonga tenere presente che il forum è generico; non bisonga dare per scontato che tutti conoscano il funzionamento di una trasmissione dati tramite ZigBee! A proposito: che cos'è ZigBee? Come avviene la trasmissione dati, tramite porta RS232 o che altro? Che protocollo usa?
----------------------------------------
AUTORE: 1078
DATA :09/09/2009 - 11:00:52
----------------------------------------
Ok, ho capito che cos'è ZigBee.
Per chi non lo sapesse: [b:26fl6x59][color=#4000FF:26fl6x59]ZigBee è il nome di una specifica per un insieme di protocolli di comunicazione ad alto livello che utilizzano piccole antenne digitali a bassa potenza e basato sullo standard IEEE 802.15.4 per wireless personal area networks (WPAN).[/color:26fl6x59] [/b:26fl6x59]([i:26fl6x59]Citazione presa da wikipedia: [url:26fl6x59]http://it.wikipedia.org/wiki/ZigBee[/url:26fl6x59][/i:26fl6x59])
Con che HW devi comunicare? Che protocollo proprietario utilizza il tuo HW?
----------------------------------------
AUTORE: 2765
DATA :09/09/2009 - 13:22:17
----------------------------------------
Ciao, ho letto in altri articoli che cercate sempre di far scrivere il più possibile a noi utenti, mi scuso ma ho scritto poco perchè non
sapevo se qualcuno poteva aiutarmi con questo problema. Sto sviluppo di un sistema di acquisizione e trasmissione dati wireless.
Allora, ho usato i VISA per l'emulazione seriale con l'USB. Dalla parte del sistema di trasmissione vengono mandati 329 byte.
Il pacchetto di 329 byte deve essere ripulito da alcuni byte di controllo ed essere diviso in 4 parti e ogni parte deve essere
visualizzato su 4 grafici diversi. Nel mentre che si visualizzano le forme d'onda i dati devono essere memorizzati su un file di testo.
Ho dovuto cancellare delle parti del programma perchè il file era troppo grosso come allegato. Comunque quelle parti non
influenzano la parte del VI interessato.
La versione di Labview che uso è 8.0.
----------------------------------------
AUTORE: 2765
DATA :09/09/2009 - 13:24:06
----------------------------------------
L'HW utilizzato è questo.
http://microcontrollershop.com/product_ ... ts_id=2367
----------------------------------------
AUTORE: 1078
DATA :10/09/2009 - 08:28:45
----------------------------------------
[quote="papo":17nrdohz]Buongiorno sono un nuovo utente e ho iniziato da poco ad usare Labview, ho dei problemi di invio e ricezione dati usando un trasmettitore ZigBee. Mi spiego meglio quando seleziono il pulsante il sistema manda una stringa di un carattere, e li funziona tutto bene. Ma appena muovo il mouse o scelgo un tab diverso il sistema non manda il carattere e quinid perde la sincronizzazione con il ricevitore. I dati che ricevo sono 329 byte.[/quote:17nrdohz]
Ciao Papo,
Non ho capito molto bene cosa dovrebbe fare il tuo SW. Quello che posso intuire (e sto interpretando) è che vorresti cambiare delle impostazioni e lanciare nuovamente l'acquisizione attraverso porta wirless. Se è questo che vuoi fare, devi spostare tutto quello che viene cambiato all'interno del tuo ciclo principale, che oltretutto ti consiglio di temporizzare perchè altrimenti ti troverai con occupata la cpu al 100% quando non lanci l'acquisizione.
Ho modificato il tuo esempio, prova a vedere se si avvicina a quello che vorresti fare.
----------------------------------------
AUTORE: 2765
DATA :10/09/2009 - 11:30:45
----------------------------------------
ciao.....Grazie per le modifiche e dei suggerimenti per migliorare la compatezza del VI, mi sa che ne avevo bisogno. Appena riesco a provare le modifiche ti farò sapere se sono andate a buon fine. Comunque immaginavo che non avresti capito molto bene con la mia spiegazione di poche righe perchè non bastano per capire come funziona il sistema completo.
nel caso in cui le modifiche non funzionino, magari provo a scrivere qualcosa di qualche riga in più per farti capire meglio.
----------------------------------------
AUTORE: 1078
DATA :10/09/2009 - 14:51:15
----------------------------------------
[quote="papo":35nljxl7]ciao.....Grazie per le modifiche e dei suggerimenti per migliorare la compatezza del VI, mi sa che ne avevo bisogno. Appena riesco a provare le modifiche ti farò sapere se sono andate a buon fine. Comunque immaginavo che non avresti capito molto bene con la mia spiegazione di poche righe perchè non bastano per capire come funziona il sistema completo.
nel caso in cui le modifiche non funzionino, magari provo a scrivere qualcosa di qualche riga in più per farti capire meglio.[/quote:35nljxl7]
No problems, siamo sempre qui....!!!
----------------------------------------
AUTORE: 2765
DATA :22/10/2009 - 15:20:41
----------------------------------------
Ciao, ho provato la modifica che mi hai inviato, ma ha dato gli stessi problemi di prima. Mi hanno inidcato un modifica usando un queue, cioè facendo una coda in ricezione, se non erro. Perchè i dati che arrivano sono ricevuti in maniera coninua. Ma ho riscontrato un problema sull'invio continuo del mio dato di controllo. Mando il VI modificato.
grazie
----------------------------------------
================================================================================
rtf to txt
================================================================================
AUTORE: 2644
DATA :09/09/2009 - 16:10:55
----------------------------------------
Salve a tutti
avrei bisogno di convertire dei file .rtf in .txt
come posso fare?
Avevo pensato di usare gli activeX e richiamare word, ma non ho ancora nessuna conoscenza del mondo activeX....
Chiedo gentilmente un aiuto
Grazie a tutti
----------------------------------------
AUTORE: 2644
DATA :10/09/2009 - 10:22:07
----------------------------------------
Eccomi ancora
ho scritto una macro word che mi converte un file .rtf in .txt
come posso inserire la macro in labview??
Grazie a tutti
----------------------------------------
AUTORE: 1078
DATA :10/09/2009 - 15:34:17
----------------------------------------
Ciao Alduu,
Per utilizzare Word e applicativi MSOffice in Labview, devi richiamare il programma attraverso L'ActiveX server. Le funzioni le trovi nella palet degli ActiveX Object. Una volta richiamato l'applicativo (word, excel o quello che vuoi) accedi alle sue funzioni e proprietà utilizzando i property node e gli invoke node di LV. Comunque non è una cosa molto semplice e intuitiva. Ci sono alcuni piccoli accorgimenti di cui devi tenere conto. Sicuramente il più importante è quello di ricordarti di chiudere sempre le reference che hai aperto, altrimenti ti rimarranno aperte un sacco di istanze del programma richiamato che andranno ad incidere sulle prestazioni del sofware.
[i:2gsv0ljl][b:2gsv0ljl]Maggiori informazioni:[/b:2gsv0ljl][/i:2gsv0ljl]
[url:2gsv0ljl]http://decibel.ni.com/content/docs/DOC-6167[/url:2gsv0ljl]
[url:2gsv0ljl]http://search.ni.com/nisearch/app/main/p/bot/no/sn/ssnav%3Adzn/ap/tech/q/word/[/url:2gsv0ljl]
[url:2gsv0ljl]http://zone.ni.com/devzone/cda/epd/p/id/992[/url:2gsv0ljl]
[url:2gsv0ljl]http://lavag.org/forum/25-calling-external-code/[/url:2gsv0ljl]
Ciao e buon lavoro!!
----------------------------------------
AUTORE: 2644
DATA :12/09/2009 - 18:01:02
----------------------------------------
Grazie mille Ricky per la risposta sei stato gentilissimo
----------------------------------------
AUTORE: 1078
DATA :15/09/2009 - 08:13:14
----------------------------------------
[quote="alduuu":lvbxaxxn]Grazie mille Ricky per la risposta sei stato gentilissimo[/quote:lvbxaxxn]
Prego.
----------------------------------------
================================================================================
Comunicazione lenta fra PC e PLC su protocollo OPC
================================================================================
AUTORE: 822
DATA :09/09/2009 - 17:41:14
----------------------------------------
Ciao a tutti.
Qualcuno di voi ha esperienza sullo scambio dati fra PLC e LabVIEW in ethernet tramite protocollo OPC?
Nello specifico fra PLC siemens e LabVIEW 8.5.
Ho fatto un programma dove PC e PLC si scambiano circa 500 word di dati, il PC va a leggere o scrivere direttamente sulla DB del PLC. Per fare questo mi appoggio sulle variabili condivise di LabVIEW, ogni variabile condivisa è un byte oppure una word oppure una stringa della DB (a seconda della grandezza che mi serve).
Il programma è strutturato a domanda e risposta PC-PLC (il PLC invia un comando che può essere per esempio lo start prova, il PC risponde che ha ricevuto, il PLc esegue l'operazione specificata da quel comando), tutto in ethernet e tutto andando a leggere o scrivere sulla DB del PLC.
Il mio problema è che spesso le risposte del PC sono lente (anche due secondi) e questo rallenta tutto il processo.
La variabile condivisa che fà riferimento alla variabile sul DB io l'aggiorno immediatamente dopo che ho ricevuto lo start del PLC, però sulla DB viene aggiornata dopo due secondi. Non capisco i motivi di questi ritardi.
Devo forse configurare qualcosa sull'OPC server oppure regolare qualcosa sulle proprietà delle variabili condivise?
Grazie a chiunque possa darmi una mano,
Giuseppe
----------------------------------------
AUTORE: 822
DATA :28/10/2009 - 21:15:31
----------------------------------------
Ciao a tutti,
sono riuscito a risolvere i problemi di lentezza utilizzando un metodo forse poco ortodosso ma di sicura efficacia.. sostituendo la CPU del PLC! Ma non con una uguale (infatti è da escludere che fosse difettosa, lo stesso comportamento lo avevo con altri PLC dello stesso produttore), ma cambiando proprio fornitore! Ora il tempo ciclo si è ridotto di oltre la metà e soprattutto è ripetitivo (prima poteva durare 60 secondi così come 80, adesso senza modifiche software è di 30 secondi!).
Un consiglio che dò ad altri utenti che sicuramente avranno o avranno avuto lo stesso problema è quello di non perderci tempo e testa e passare da questo PLC di una nota casa tedesca ad uno più performante veloce e soprattutto economico (il costo è più o meno la metà!) di una nota casa italiana..
Non essendo mia intenzione fare pubblicità mi fermo qui.. ma la situazione in cui mi sono trovato a lavorare (e che tuttora mi stò trascinando a causa di questo) è insopportabile..
Ciao,
Giuseppe
----------------------------------------
================================================================================
Come inibire l'uso di alcuni tasti funzione da LabVIEW?
================================================================================
AUTORE: 822
DATA :10/09/2009 - 10:08:24
----------------------------------------
Esiste una funzione di labview o magari nelle proprietà del vi, che permetta di inibire l'uso di alcuni tasti da tastiera (per esempio la bandierina di windows che apre la barra delle applicazioni oppure alt+f4 che chiude i programmi)?
Grazie,
Giuseppe
----------------------------------------
AUTORE: 301
DATA :10/09/2009 - 15:33:41
----------------------------------------
Credo sia possibile morendoci dietro.....
La pressione dei tasti funzione viene gestita dal SO e mi sa che non è per nulla facile intercettarli e bypassarli.....
----------------------------------------
AUTORE: 1078
DATA :10/09/2009 - 15:46:05
----------------------------------------
Per intercettare tutti i tasti o le combinazioni di tasti che vengono premuti da tastiera, devi intercettare uno degli eventi "Key..." dalla structure event che devi avere inserito nel tuo codice. La proprietà Vkey del'event structure dell'evento Key... ti dice quale tasto è stato premuto.
Se cerchi nel HELP di LV e cerchi "Key Down event" trovi tutto quello che ti serve. Una cosa importante da tenere conto è che l'evento che devi intercettare è quello dell'oggetto che il focus!
Buon lavoro.
----------------------------------------
AUTORE: 1078
DATA :10/09/2009 - 15:50:18
----------------------------------------
Questo post ti potrebbe dare un'idea e una mano.
[url:372f8f8m]http://ilvg.it/forum/viewtopic.php?f=1&t=4171[/url:372f8f8m]
----------------------------------------
================================================================================
Acquisizione dati da un PLC
================================================================================
AUTORE: 2774
DATA :13/09/2009 - 15:19:02
----------------------------------------
Salve ,
sono uno studente di ingegneria meccanica. La mia tesi consiste nell'acquisire dati da un PLC al PC portatile con Labview e ricreare in Labview un pannello virtuale dove potere vedere questi dati in maniera grafica (sono segnali provenienti da un motore dell'aliscafo su cui è installato il PLC, quindi ciò che mi interessa è la loro variazione temporale?
Potreste darmi qualche consiglio!!
Grazie delle eventuali risposte!
----------------------------------------
AUTORE: 2592
DATA :15/09/2009 - 15:11:55
----------------------------------------
Ciao fausto696,
se hai a disposizione il modulo di LabVIEW DSC e quindi l'NI OPC Server risulta molto semplice interfacciarti il PLC per leggere i dati e quindi elaborarli nella tua applicazione, come descritto in questo tutorial:
Connect LabVIEW to Any PLC
http://zone.ni.com/devzone/cda/tut/p/id/7450
Ciao,
Andrea
----------------------------------------
AUTORE: 2774
DATA :15/09/2009 - 21:58:56
----------------------------------------
Grazie mille dell'informazione ,
provvedo subito a procurarmi ciò che mi serve e a studiare il tutorial.
Ti farò sapere come và!
----------------------------------------
AUTORE: 2774
DATA :18/09/2009 - 09:09:59
----------------------------------------
allora , ho studiato il tutorial e sono riuscito a procurarmi l'NI OPC Server e il modulo DSC.
Ora mi potresti indicare quali sono le informazioni che mi servono relativamente al PLC con cui devo comunicare. Da un punto di vista hardware collogherie il mio pc con un cavo USB-RS-232 al PLC (è corretto? mi potrebbe creare qualche problema?) . Poichè ho il numero di telefono del programmatore del PLC , cosa posso chiedergli?? Quali informazioni mi servono?
Grazie delle risposte!
----------------------------------------
AUTORE: 2592
DATA :18/09/2009 - 15:57:43
----------------------------------------
Ciao fausto696,
ho visto che mi hai mandato dei messaggi privati ma non riesco a leggerli...Sorry
Tornando a noi, una volta che hai il DSC e NI OPC server non devi fare nulla sul lato PLC. Quello che devi fare è creare dal progetto di LabVIEW un I/O server che punti al PLC. In questo modo vedrai direttamente i tag del PLC e quindi potrai creare delle varibili condivise che puntano direttamente ad esso, ed il gioco è fatto.
Guarda questo documento in riferimento a LabVIEW 8.x e l'uso delle shared variables:
How Do I Use OPC in LabVIEW?
http://digital.ni.com/public.nsf/allkb/ ... enDocument
Buon week end,
Andrea
----------------------------------------
AUTORE: 2774
DATA :18/09/2009 - 16:37:17
----------------------------------------
Grazie per la disponibilità.
Leggerò il link e ti farò sapere come va!
Buon week end anche a te!
----------------------------------------
================================================================================
Asse secondario XY graph
================================================================================
AUTORE: 2228
DATA :14/09/2009 - 15:02:47
----------------------------------------
Ciao a tutti,
vorrei inserire un array di dati in modo tale che mi compaiano sull'asse Y secondario. Avete qualche esempio da 'regalarmi'?
grazie mille
----------------------------------------
AUTORE: 1078
DATA :15/09/2009 - 08:10:53
----------------------------------------
[quote="albydj":1uug2s5c]Ciao a tutti,
vorrei inserire un array di dati in modo tale che mi compaiano sull'asse Y secondario. Avete qualche esempio da 'regalarmi'?
grazie mille[/quote:1uug2s5c]
Ciao Albydj,
non sono sicuro di aver capito bene, comunque ti invio un'esempio che mostra come cambiare dinamicamente le scale di un grafico con più tracce, personalizzando tutti i marker dell'asse delle Y.
----------------------------------------
AUTORE: 43
DATA :15/09/2009 - 09:48:23
----------------------------------------
[quote="albydj":tlactr4x]Ciao a tutti,
vorrei inserire [b:tlactr4x]un array di dati in modo tale che mi compaiano sull'asse Y secondario[/b:tlactr4x]. Avete qualche esempio da 'regalarmi'?
grazie mille[/quote:tlactr4x]
Ciao. La Tua frase, un po' sibillina si presta a varie interpretazioni.
Questa è la mia.
L'asse Y secondario è una seconda scala Y che si crea così:
[attachment=2:tlactr4x]img1.JPG[/attachment:tlactr4x]
per associare la seconda scala alla seconda traccia
[attachment=1:tlactr4x]img2.JPG[/attachment:tlactr4x]
Questo è l'esempio
[attachment=0:tlactr4x]2ndaScala.vi[/attachment:tlactr4x]
La prossima volta spiegati meglio ed accenna almeno a che versione di LabVIEW usi...
bye
----------------------------------------
AUTORE: 2228
DATA :22/09/2009 - 10:07:15
----------------------------------------
Grazie mille a tutti e scusate la mia pessima descrizione del problema.
Cmq ho risolto il mio problema andando su proprietà del grafico e sul foglio plots ho assegnato l'asse Y2 ai valori che mi interessavano.
Grazie di nuovo per le vs risposte che cmq mi son state utili
Hola
----------------------------------------
================================================================================
Installazione LabView in una directory diversa
================================================================================
AUTORE: 645
DATA :15/09/2009 - 10:09:54
----------------------------------------
Per ragioni tecniche avrei bisogno di installare LabView in una directory diversa da quella proposta di default durante la procedura guidata. In particolare anzichè installare il software nella directory "LabView <ver>" ho bisogno di installarlo nella directory "LabView".
Ho provato a fare questa operazione e il risultato è che alcune voci (per esempio l'Help e gli esempi) non vengono visualizzati a partire dalla finestra iniziale di LabView: se clicco sulle voci sembra che il programma non riesca a trovare i collegamenti.
Voi sapete se c'è un file di configurazione che posso modificare per indicare la nuova posizione della directory principale?
Inoltre ho installato i moduli FPGA, Real-Time e Control and Simulation: devo modificare qualche voce riguardante questi pacchetti?
----------------------------------------
AUTORE: 1050
DATA :15/09/2009 - 10:20:49
----------------------------------------
Apri dalla menu bar tool/options, seleziona "Default Directory" e "VI Search Path" dal ring control sulla destra: in questo modo puoi modificar i path da cui labview avvia la ricerca delle VI.
Dovrebbe bastare questo.
ciao
----------------------------------------
AUTORE: 1050
DATA :15/09/2009 - 10:24:42
----------------------------------------
dimenticavo, dalla pagina delle option devi selezionare la Category = Paths
----------------------------------------
AUTORE: 43
DATA :15/09/2009 - 10:47:03
----------------------------------------
[quote="MagicBotolo":119c71pc][b:119c71pc]Per ragioni tecniche [/b:119c71pc]...avrei bisogno di installare LabView in una directory diversa da quella proposta di default durante la procedura guidata.[/quote:119c71pc]
Che strana esigenza... Spiega un po' meglio queste "ragioni tecniche"
[quote="MagicBotolo":119c71pc] In particolare anzichè installare il software nella directory "LabView <ver>" ho bisogno di installarlo nella directory "LabView".
Ho provato a fare questa operazione e il risultato è che alcune voci (per esempio l'Help e gli esempi) non vengono visualizzati a partire dalla finestra iniziale di LabView: se clicco sulle voci sembra che il programma non riesca a trovare i collegamenti.
Voi sapete se c'è un file di configurazione che posso modificare per indicare la nuova posizione della directory principale?
Inoltre ho installato i moduli FPGA, Real-Time e Control and Simulation: devo modificare qualche voce riguardante questi pacchetti?[/quote:119c71pc]
Non hai specificato se questa installazione è fatta da 0 oppure se è fatta su un PC su cui sono già state fatte installazioni LabVIEW.
Sicuro non non aver sovrascritto precedenti installazioni?
Cmq il file di configurazione è LabVIEW.ini, mentre il casino dell'installazione farà probabilmente capo a qualcosa scritto nei registri...
bye
----------------------------------------
AUTORE: 645
DATA :15/09/2009 - 11:12:06
----------------------------------------
Grazie... tra un attimo provo!
Si tratta di un'installazione fatta da 0: non sono state sovrascritte altre cartelle o file già esistenti. Proprio perchè ho bisogno di partire da zero e con una cartella nella quale poter installare le nuove versioni di LabView man mano che escono senza mantenere versioni precedenti (... io sto facendo questo ragionamento perchè ho notato che quando si installa una nuova versione di LabView è vero che viene installata in una directory differente per non avere problemi di compatibilità ma è anche vero che mi rimane in giro il vecchio LabView con relativo spazio in memoria occupato...): potrei disinstallare la vecchia versione ma preferisco installare la nuova e automaticamente sostituire la vecchia (uso un altro pc per verificare prima se la nuova versione funziona bene)... credo che installando sempre nella stessa cartella dovrei raggiungere questo scopo.
Ho guardato il file INI presente nella directory principale di LabView ma non ci sono voci del tipo:"Default Directory"... o "Data Directory"... o "Root Directory"... da modificare.
----------------------------------------
AUTORE: 645
DATA :15/09/2009 - 11:18:00
----------------------------------------
[quote="antea06":2s07nkxc]Apri dalla menu bar tool/options, seleziona "Default Directory" e "VI Search Path" dal ring control sulla destra: in questo modo puoi modificar i path da cui labview avvia la ricerca delle VI.
ciao[/quote:2s07nkxc]
Ho provato ma al momento la mia directory di default è "quella che io mi aspetto": Programmi\...\LabView.
Solo che se apro questa directory (e la confronto con LabView 8.6 ... che comunque è stata creata... e mi sto chiedendo durante quale installazione è stata creata... visto che io ho specificato "LabView" durante l'installazione del software e ho lasciato le cose com'erano durante l'installazione dei moduli perchè mi veniva visualizzata questa directory...) mi accorgo che nella cartella Help mancano i VI (tipo LaunchHelp) e nella cartella Example mancano tutti i file (che invece ci sono nella cartella LabView 8.6\Example).
----------------------------------------
AUTORE: 43
DATA :15/09/2009 - 11:32:28
----------------------------------------
Senti sposta la roba da
C:\programmi\National Instruments\LabVIEW 8.6
in
C:\programmi\National Instruments\labview
"as is", cioè ricrea lo stesso albero di directory e mettici gli stessi file.
Probabilmente è un baco dell'installer...
Non sarebbe la prima volta...
bye
----------------------------------------
AUTORE: 645
DATA :15/09/2009 - 14:16:35
----------------------------------------
Faccio una prova e poi vi dico cosa succede!
----------------------------------------
AUTORE: 645
DATA :25/09/2009 - 08:17:25
----------------------------------------
Così solo per aggiornamento... Ho reinstallato LabView e funziona. Adesso devo provare ad installare i moduli.
Up: funziona tutto!
I miei errori derivavano da un problema di RAM (fisicamente un blocco di memoria difettoso) che causava il riavvio del pc più volte durante l'installazione.
Ringrazio il servizio di supporto National che mi ha seguito niente male: risposte veloci ed efficaci. E la possibilità di parlare con un tecnico al telefono.
----------------------------------------
================================================================================
features di Labview 8.5 +ni 232 series
================================================================================
AUTORE: 2777
DATA :15/09/2009 - 16:49:11
----------------------------------------
Salve, sto installando labview 8.5 e dovrei utilizzarlo con un NI usb 232 series per poter controllare il movimento di un motore elettrico ed acquisire la pressone all'intero di un cilindro . quali features dovrei installare oltre a quelle di default ? tutte purtroppo per problemi di spazio non posso.
Grazie per l'aiuto
----------------------------------------
================================================================================
applicazione stand-alone e valori di default
================================================================================
AUTORE: 2644
DATA :15/09/2009 - 17:31:27
----------------------------------------
Buonasera
vorrei chiedere se sia possibile impostare dei nuovi valori di default dopo aver creato l'applicazione stand-alone.
In pratica ho un progetto labview con dei valori impostati per default, creo con application builder l'applicazione stand-alone; sarà possibile in seguito cambiare alcuni valori impostati per default?
Spero di aver spiegato bene il dubbio.
Grazie
----------------------------------------
AUTORE: 1050
DATA :15/09/2009 - 21:14:27
----------------------------------------
Se intendi i valori di default dei control/indicators del pannello la risposta è NO, non si possono cambiare dopo aver creato l'applicativo.
In genere per "inizializzare" i valori di control/indicators si usa spesso leggerli da un file INI creato appositamente.
ciao
----------------------------------------
================================================================================
Sistemi operativi Microsoft e LabVIEW
================================================================================
AUTORE: 482
DATA :16/09/2009 - 10:55:39
----------------------------------------
...ma ciao!
mi preparo a realizzare un applicazione che girerà su un Panel PC che ancora devo acquistare.
Siccome sul mercatoci sono diverse proposte, tra cui molte che montano ocme sistema operativo WindowsXPEmbedded oppure Windows CE, mi chiedevo.
Se io ho un applicazione LabVIEW che comunica con una scheda PCI e non usa dll di windows particolari, cosa devo fare per portare un applicazione, da un XP standard ad un Embedded o ad un CE? Cisono toolkt da procurarsi o aggiustamenti particolari da fare? Perchè s ela cosa si fa complicata mi procuro un PC con XP e basta.
----------------------------------------
AUTORE: 43
DATA :16/09/2009 - 11:39:48
----------------------------------------
cosa ne pensi di [url=http://zone.ni.com/devzone/cda/tut/p/id/9629:17whxj15]NI Real-Time Hypervisor Architecture[/url:17whxj15] ?
Ho mandato una mail a NI chiedendo se possibile utilizzare una Mb Mini-ITX con CPU multicore, ma non ho avuto risposta.
In realtà RealTime Hypervisor è venduto con PXI
http://zone.ni.com/reference/en-XX/help ... uirements/
con limiti HW di gestione
http://digital.ni.com/public.nsf/allkb/ ... enDocument
Cmq sia lo trovo ESTREMAMENTE interessante!
bye
----------------------------------------
AUTORE: 660
DATA :16/09/2009 - 12:56:50
----------------------------------------
[quote="gepponline":ybcri3vz]...ma ciao!
mi preparo a realizzare un applicazione che girerà su un Panel PC che ancora devo acquistare.
Siccome sul mercatoci sono diverse proposte, tra cui molte che montano ocme sistema operativo WindowsXPEmbedded oppure Windows CE, mi chiedevo.
Se io ho un applicazione LabVIEW che comunica con una scheda PCI e non usa dll di windows particolari, cosa devo fare per portare un applicazione, da un XP standard ad un Embedded o ad un CE? Cisono toolkt da procurarsi o aggiustamenti particolari da fare? Perchè s ela cosa si fa complicata mi procuro un PC con XP e basta.[/quote:ybcri3vz]
Io uso un mini-itx con XP-Embedded su girano senza problemi gli applicativi LabView.
L'unico problema può essere la realizzazione del sistema embedded che non è proprio amichevole la prima volta che si incontra il suo ambiente di sviluppo.
Per quello che riguarda CE la storia è differente perchè mentre gli applicativi che girano sotto XP girano anche (al 99,9%) sotto XPE per le versioni CE è necessario utilizzare il modulo PDA che non supporta tutte le periferiche e nemmeno tutto LabView (per lo meno fino a 2 anni fa quando me ne ero occupato).
Max
----------------------------------------
AUTORE: 482
DATA :16/09/2009 - 13:05:13
----------------------------------------
Intanto grazie,
[quote="machyaer":2tzx73ki]
L'unico problema può essere la realizzazione del sistema embedded che non è proprio amichevole la prima volta che si incontra il suo ambiente di sviluppo.[/quote:2tzx73ki]
cosa intendi di preciso?
----------------------------------------
AUTORE: 2592
DATA :16/09/2009 - 15:16:04
----------------------------------------
Ciao geppo,
per fare una applicazione LabVIEW per Touch Panel devi innanzitutto avere il modulo LabVIEW Touch Panel che ti permette di compilare il VI in un eseguibile per Windows CE.
I driver che devi utilizzare per l'acquisizione sono gli NI DAQmx Base 3.3. Nel ReadMe a questo link trovi la lista di device supportati su Touch Panel, tutti device USB e non PCI come diceva giustamente Max.
http://joule.ni.com/nidu/cds/view/p/id/1343/lang/it
Spero che queste informazioni possano esserti utili.
Ciao,
Andrea
----------------------------------------
AUTORE: 482
DATA :17/09/2009 - 07:40:46
----------------------------------------
Quindi stiamo parlando di windows CE e touch panel che montano windows CE e basta giusto?
Per embedded non ci sono problemi vero?
QUindi la soluzione piu' semplice è non prendere windows CE
----------------------------------------
AUTORE: 2592
DATA :17/09/2009 - 08:16:37
----------------------------------------
Buongiorno Geppo,
direi che la tua conclusione è giusta. A parte il LabVIEW Touch Panel Modulo il problema principale per la tua applicazione è l'uso di una scheda PCI...
Con XP embedded non dovresti incontrare alcuna difficoltà.
Buon lavoro,
Andrea
----------------------------------------
AUTORE: 660
DATA :17/09/2009 - 10:20:26
----------------------------------------
[quote="gepponline":mgt9weyz]Intanto grazie,
[quote="machyaer":mgt9weyz]
L'unico problema può essere la realizzazione del sistema embedded che non è proprio amichevole la prima volta che si incontra il suo ambiente di sviluppo.[/quote:mgt9weyz]
cosa intendi di preciso?[/quote:mgt9weyz]
Beh, i sistemi windows XP Embedded non vengono distribuiti, ma sono sistemi che vengono creati ad hoc per una particolare configurazione hardware e con un ben preciso scopo. Ad esempio vengono usati in ambito industriale per creare pannelli operatore, ecc.
Ci sono limitazioni, imposte dalla licenza dell'ambiente di sviluppo, per quanto riguarda quanto "aperto" può essere ogni sistema (ad esempio è vietato creare un sistema su cui installare il pacchetto office).
Devi comprare l'ambiente di sviluppo e le licenze per la distribuzione dei sistemi operativi creati poi realizzi pezzetto dopo pezzetto il tuo sistema operativo, lo compili sperando che tutto funzioni, lo testi a fondo e poi lo rilasci sulle macchine definitive.
Il vantaggio di questo sistema rispetto a quello che è XP risiede nel fatto di realizzare una configurazione che è congelata al momento del rilascio, pertanto qualunque cosa combini l'utente basterà ripristinare la configurazione per averla come nuova (un po' come per gli Hard Reset dei dispositivi mobile).
Spero di essermi spiegato in modo comprensibile.
Ciao
Max
----------------------------------------
AUTORE: 482
DATA :18/09/2009 - 08:04:34
----------------------------------------
Chiarissimo.
Grazie a tutti!
(resto in attesa di una soluzione Ubuntu pero'
)
----------------------------------------
AUTORE: 4
DATA :22/09/2009 - 08:26:16
----------------------------------------
In realtà Linux e quindi anche ubuntu sarebbe utilizzabile, nel senso che sw labview "standard2 possono girare su linux al99.9% a patto che la CPU sia della famiglia x86, cosa molto difficile da trovare su panel PC o tablet... io per un'applicazione mobile infatti pensavo di usare un netbook con monitor touch, non è il massimo dal punto di vista industriale (vedi protezioni ecc ecc) ma costa poco e gira Windows XP Home o Pro
----------------------------------------
AUTORE: 4
DATA :22/09/2009 - 08:33:15
----------------------------------------
[quote="paracarro":1wppg6k1]cosa ne pensi di [url=http://zone.ni.com/devzone/cda/tut/p/id/9629:1wppg6k1]NI Real-Time Hypervisor Architecture[/url:1wppg6k1] ?
Ho mandato una mail a NI chiedendo se possibile utilizzare una Mb Mini-ITX con CPU multicore, ma non ho avuto risposta.
In realtà RealTime Hypervisor è venduto con PXI
http://zone.ni.com/reference/en-XX/help ... uirements/
con limiti HW di gestione
http://digital.ni.com/public.nsf/allkb/ ... enDocument
Cmq sia lo trovo ESTREMAMENTE interessante!
bye[/quote:1wppg6k1]
questa tecnologia è veramente una chicca all NIweek mi aveva colpito molto, se potesse girare su PC oltre che su PXI sarebbe veramente fantastico
----------------------------------------
AUTORE: 43
DATA :22/09/2009 - 12:02:00
----------------------------------------
[quote="ale914":ddaoeol0]questa tecnologia è veramente una chicca all NIweek mi aveva colpito molto, se potesse girare su PC oltre che su PXI sarebbe veramente fantastico[/quote:ddaoeol0]
Grazie Ale per la risposta...
Se avessi qualche altra chicca from NIWeek, non esitare a postare info a riguardo.
A me questo Hypervisor m'attizza dal punto di vista della "configurazione del sistema" tanto quanto m'attizza [url=http://ilvg.it/forum/viewtopic.php?f=31&t=4077:ddaoeol0]LabVIEW Scripting[/url:ddaoeol0] da quello della "programmazione" allo stato puro.
Come riportato [url=http://zone.ni.com/reference/en-XX/help/372833A-01/rthyperhelp/hv_sysrequirements/:ddaoeol0]qua[/url:ddaoeol0], ci si riferisce non al solo HW PXI ma anche a "Industrial RT Controller" com per esempio [url=http://sine.ni.com/nips/cds/view/p/lang/en/nid/206849:ddaoeol0]questo[/url:ddaoeol0].
Guardando le specifiche di questi controller
http://www.ni.com/pdf/manuals/372273a.pdf
vedo per altro che hanno la MotherBoard che somiglia a quelle miniITX in circolazione, al pari dei PXI controller che hanno una MB simile a quella dei Notebook.
Vorrei tanto comprarmi una miniITX ed installarci sopra Hypervisor...
bye
----------------------------------------
AUTORE: 4
DATA :22/09/2009 - 12:50:46
----------------------------------------
bhe questi sono altri bei progetti, non c'entrano con i sistemi operativi ma... m'attizzano
[url=http://www.youtube.com/watch?v=7dWrc-R23zk&feature=related:2mmatvy3]Web LabVIEW UI Builder - NIWeek 2009 Keynote[/url:2mmatvy3]
[url=http://www.youtube.com/watch?v=PnklCzW35KQ&feature=related:2mmatvy3]NI Wireless Sensor Networks (WSN): NIWeek 2009 Keynote[/url:2mmatvy3]
----------------------------------------
================================================================================
Mancanza "shared library"
================================================================================
AUTORE: 2783
DATA :18/09/2009 - 15:12:04
----------------------------------------
Ciao a tutti. Premetto la mia inesperienza con Labview.
Ho acquistato un multimetro 1906 della TTI e ho scaricato i relativi driver dal sito del produttore.
Tali driver sono in pratica 3 files: .h, .c, .fp. Il file .fp è relativo a Labwindows. Usando io Labview 8.5, ho scaricato il programma per convertirlo in files compatibili con Labview. Una volta convertito il file, ho ottenuto tutto l' "albero di .vi" a partire da un file .llb. Aprendo una qualsiasi delle .vi, mi si chiede il file tt1906_32.dll, ovvero la libreria principale del multimetro.
A quanto ho capito questa libreria mi doveva essere fornita direttamente dalla tti o cmq dalla NI.
Dove posso prenderla?
Ho pensato che dovrei crearla io, tramite il file .h che mi viene fornito. Da tools----import----shared library .
Il problema è che mi chiede anche il file .dll. Quindi mi sembra di capire che il file .h da solo non mi basta per ottenere la shared libray .dll.
Quindi sono stato costretto a creare da me delle .vi che andassero bene per il multimetro, non potendo contare su quelle fornite dal produttore. Ma voglio ugualmente capire dove sbaglio, anche perchè i programmi da me creati mancano di diversi controlli, soprattutto sull’errore.
Avete delle idee?
Ringrazio anticipatamente.
Giuseppe
----------------------------------------
================================================================================
modifica di una exe
================================================================================
AUTORE: 2787
DATA :18/09/2009 - 21:40:47
----------------------------------------
Ciao,
Ho un problema e volevo sapere se qualcuno poteva aiutarmi.
Al lavoro ho un programma scrito in LW che in fa il match di due stringhe.
Ogni stringa viene acquisita atraverso lettori di codici a barre.
Il mio problema è che nel momento in qui uno dei lettori mi fa una ''falsa lettura'' il programma ferma la macchina.
Io vorrei dare la possibilità al operatore di poter impostare dopo quanti errori consecutivi si deve fermare il programma, tipo se questo ciclo ho un ''falso errore'' e il ciclo dopo le due stringhe sono identiche non voglio che si fermi la macchina.
Purtroppo non ho la sorgente di questa exe e non so nemeno chi l'ha fatto.
per favore, non datemi la bruta notizia che non si puo far niente se non ho la sorgente.
grazie
----------------------------------------
AUTORE: 482
DATA :21/09/2009 - 08:08:18
----------------------------------------
[quote="f.olteanu":23bh8ru9]
per favore, non datemi la bruta notizia che non si puo far niente se non ho la sorgente.
[/quote:23bh8ru9]
Purtroppo, a meno he chi ha fatto il software non abbia previsto dei file di appoggio dove stabilire dopo quanti errori fermare la macchina, devo proprio darti la brutta notizia ch enon vorresti. Non c'e' niente da fare
----------------------------------------
AUTORE: 43
DATA :21/09/2009 - 09:22:29
----------------------------------------
Confermo quello che ha detto geppo.
Però...
[quote="f.olteanu":b3r0qetk]...
Al lavoro ho un programma scrito in LW che in fa il match di due stringhe.
Ogni stringa viene acquisita atraverso lettori di codici a barre.
Il mio problema è che nel momento in qui uno dei lettori mi fa una ''falsa lettura'' il programma ferma la macchina.
Io vorrei dare la possibilità al operatore di poter impostare dopo quanti errori consecutivi si deve fermare il programma, tipo se questo ciclo ho un ''falso errore'' e il ciclo dopo le due stringhe sono identiche non voglio che si fermi la macchina.
Purtroppo non ho la sorgente di questa exe e non so nemeno chi l'ha fatto.
per favore, non datemi la bruta notizia che non si puo far niente se non ho la sorgente.
grazie[/quote:b3r0qetk]
lascerei aperta la possibilità a 2 opzioni:
A) rifare il SW. cosa che potrebbe essere fattibile se il SW in questione è un mero SW di supervisione.
Tu dici che questo SW "fa il match di due stringhe", ma immagino faccia qualcosa di +.
Se il SW fosse complesso non varrebbe la pena rifarlo, altrimenti si potrebbe farci un pensierino.
Altrimenti opzione B)
B) Se i lettori codici a barre scrivono su seriale, si può scrivere un nuovo modulo SW che si interfaccia ai BarCode Readers e rigira attraverso una seriale aggiuntiva il dato letto dalla seriale originale.
In questo modo cioè utilizzando una parta seriale in + per ogni BCR, e mettendoci in mezzo un SW si può implementare il criterio di filtraggio che si vuole.
C)Valutare la sostituzione dei BCR, se non sono affidabili o manutenerli con maggiore frequenza.
bye
----------------------------------------
AUTORE: 2787
DATA :22/09/2009 - 18:37:58
----------------------------------------
Paracarro,
grazie mille per i tuoi consigli.
ti do un po piu d'informazioni riguardo il mio problema, cosi riesci a capire meglio di cosa si trata e ho allegato quello che io ho di questa applicazione.
Non sono stato io a scrivere il programma e non so nemeno chi l'ha fatto.
io non conosco LabVIEW se non da un mese da queta parte che l'ho instalato e ho cominciato a fare qualche tentativo di applicazioni semplici tipo gli esempi che vengono forniti con il LabVIEW.
Comunque mi rendo conto che per fare un applicazione del genere non è a fatto facile e per quanto mi riguarda penso che io sono lontano anniluce.
Riguardo la valutazione dei BCR posso dirti in tutta tranquillita che le ''false letture'' non è colpa loro perche sono degli ottimi lettori(DATALOGIC DS2100A con 10 righe di lettura e con ACB) ma e un problema dovuto alla stampa del barcode sulla carta e qui purtroppo l'unica soluzione e quella modifica di qualle stavo parlando. Dico questo considerando il fatto che la carta stampata con il barcode arriva da vari clienti e puo essere una stampa inkjet, una stampa laser a volte a 150 dpi, a volte a 200 dpi, 300 dpi, etc quindi non e una cosa che si puo controlare.
Se ritieni che mi puoi dare qualche drita o una mano aspetto una rispota, anche perche non so nemeno a chi rivolgermi per fare un altra applicazione. Escluderei la possibilita di provare da solo perche penso che perderei dei mesi per riuscire a combinare qualcosa.
ciao.
----------------------------------------
AUTORE: 2787
DATA :22/09/2009 - 18:44:24
----------------------------------------
mi erò dimenticato
i lettori sono configurati su le seriali.
----------------------------------------
AUTORE: 43
DATA :23/09/2009 - 12:01:57
----------------------------------------
caro f.olteanu,
c'è molto poco da dire.
L'applicazione sembra scritta in LabVIEW 6.1 (info ottenuta dal file .exe stesso).
A giudicare dalla dimensione dell'exe, non mi sembra un'appllicazione molto complessa.
Curiosa la gestione della configurazione dell'applicazione, spapagliata su + file senza una ragione logica:
ogni file contiene il valore associato ad un singolo parametro di configurazione.
Direi che la scelta di questo metodo è fatta per la comodità del programmatore che non ha mai scritto in un file di configurazione vero tipo .xml, .ini
Tra l'altro manca proprio la config. delle seriali usate per leggere i BCR.
Il programma cmq utilizza anche la porta parallela....
Penso si possa fare qualcosa sul SW solo se possiedi i sorgenti LV.
Mentre per i BCR, si potrebbe provare, conoscendone i parametri, a programmarli al fine di evitare il + possibile "false" letture...
bye
----------------------------------------
================================================================================
Cavo RS232-USB per collegare un portatile ad un PLC Allen B.
================================================================================
AUTORE: 2774
DATA :19/09/2009 - 10:37:50
----------------------------------------
Salve a tutti ,
volevo proporvi un quesito.
Avendo capito come far comunicare da un punto di vista di software Labview con un PLC Allen Bradley attraverso la comunicazione DF1 (RS-232/RS 232), ho un problema:
Io posseggo un portatile e con quello dovrò svolgere la fase sperimentale della mia tesi, ovvero percorrere il tragitto Trapani-Napoli e acquisire la maggior parte dei segnali provenienti dal PLC. Il mio portatile non ha una porta RS 232 però ho comprato un cavo RS 232 /USB . Volevo chiedere : secondo voi avrò dei problemi di comunicazione? Ho in dotazione un disco dei driver , devo scaricarmi dei driver particolari?
Grazie delle eventuali risposte!
----------------------------------------
AUTORE: 278
DATA :22/09/2009 - 12:28:03
----------------------------------------
Ciao,
installa i driver del convertitore e non dovresti avere nessun problema ad utilizzarlo con LV, in quanto viene riconosciuto dal SO come una porta rs232 normale.
----------------------------------------
================================================================================
Creare comunicazione Datasocket
================================================================================
AUTORE: 2784
DATA :19/09/2009 - 21:05:59
----------------------------------------
ciao a tutti, chi mi spiega come funziona il datasocket?? se dovessi realizzare una gestione tramite tale sistema come posso fare? come si configurano server e client per utilizzarla?grazie in anticipo..
----------------------------------------
AUTORE: 482
DATA :21/09/2009 - 08:02:14
----------------------------------------
Realizzare una gestione di che?
Cmq, il datasocket è un protocollo di comunicazione che mette in diretto contatto i controlli di labview.
Facendo tasto destro su un controllo e andando nelle sue proprietà, trovi "Data Binding" e li puoi fare in modo che quel controllo vada a scrivere o a leggere un dato all'indirizzo che tu stabilisci (es. scrivi su dsp://192.168.1.1/pippo).
Se crei un altro vi e ci metti un indicatore dello stesso tipo (inteso come tipo di dato) e associ il databinding allo stesso indirizzo di prima ma in lettura, mandando in run i due VI, tu avrai creato una comunicazione client/server, senza scrivere una riga di codice.
Perchè il tutto funzioni devi aver lanciato il datasocket server (non mi ricordo se si lancia da solo quabndo usi il protocollo) e devi aver scritto gli indirizzi giusti.
Il corretto funzionamento del tutto, lo potrai notare immediatamente perchè nell'angolo in alto a destra dei controlli e indicatori collegati ad un datasocket, comparirà un led che segnala se la comunicazione è ok (verde) oppure no(rosso).
P.S. Quando apri un nuovo topic, dagli un titolo esplicativo della tua domanda, cosi' che anche altri possano accedere alle informazioni che hai richiesto.
----------------------------------------
AUTORE: 2784
DATA :21/09/2009 - 17:27:47
----------------------------------------
scusami e ti ringrazio....metti che io abbia un controllo (un numero) ed in uscita un indicatore che mi dà il numero ...lancio l applicazione ed io dal front panel vario il valore in uscita attraverso il controllo di ingresso.. Posso realizzare una comunicazione datasocket che mi consenta di agire variando il controllo in ingresso su un pc che non sia quello dove c'è labview? tipo pagina web?non so se mi sono spiegato..
----------------------------------------
AUTORE: 482
DATA :22/09/2009 - 08:10:37
----------------------------------------
assolutamente si, facendo quello che ti ho spiegato prima.
----------------------------------------
AUTORE: 2784
DATA :22/09/2009 - 08:20:30
----------------------------------------
[quote="gepponline":35238sxx]assolutamente si, facendo quello che ti ho spiegato prima.[/quote:35238sxx]
utilizzando anche il pannello di controllo remoto?
----------------------------------------
AUTORE: 2784
DATA :22/09/2009 - 11:55:50
----------------------------------------
[quote="therealdeal":2p3x3l4t][quote="gepponline":2p3x3l4t]assolutamente si, facendo quello che ti ho spiegato prima.[/quote:2p3x3l4t]
utilizzando anche il pannello di controllo remoto?[/quote:2p3x3l4t]
perchè non mi si collega al pannello di controllo remoto però????
Connecting to remote panel server...
Remote panel connection is closed
----------------------------------------
AUTORE: 482
DATA :23/09/2009 - 09:22:42
----------------------------------------
Remote panel server?? su datasocket??
Puoi postare il tuo vi client e serverescludendo quello che non serve alal connessione? Mi sa che stiamo parlando due lingue diverse...
Un dato su datasocket o c'e' o non c'e', non dovrebbe cercare di collegarsi ad un pannello...
----------------------------------------
AUTORE: 2784
DATA :23/09/2009 - 09:31:56
----------------------------------------
[quote="gepponline":93uzs7zi]Remote panel server?? su datasocket??
Puoi postare il tuo vi client e serverescludendo quello che non serve alal connessione? Mi sa che stiamo parlando due lingue diverse...
Un dato su datasocket o c'e' o non c'e', non dovrebbe cercare di collegarsi ad un pannello...[/quote:93uzs7zi]
no il dato su datasocket ora c'è....e sono quindi riuscito a far quel che volevo...ora vorrei gestire ora il Vi remotamente...è possibile?? se provo un collegamento al remote panel non si connette ..mi dice..You cannot connect to the local LabVIEW application..mi sai aiutare??
----------------------------------------
AUTORE: 482
DATA :23/09/2009 - 13:15:56
----------------------------------------
Se vuoi farlo tramite datasocket, devi replicare il front panel e collegare i singoli datasocket, se invece vuoi pubblicare il tuo vi per renderlo controllabile da remoto, allora devi usare i servizi di pubblicazione (Tools->web publishing tool) e provare poi tramite il browser a prendere il controllo dell'applicazione.
Credo che anche nel pc client ci debba essere installato il runtime di labview.
----------------------------------------
AUTORE: 2435
DATA :06/10/2009 - 18:00:54
----------------------------------------
Ciao...
riguardo al controllo via browser avete qualche esempio??
grazie
----------------------------------------
AUTORE: 2784
DATA :06/10/2009 - 18:20:49
----------------------------------------
[quote="gepponline":23uafqqz]Se vuoi farlo tramite datasocket, devi replicare il front panel e collegare i singoli datasocket, se invece vuoi pubblicare il tuo vi per renderlo controllabile da remoto, allora devi usare i servizi di pubblicazione (Tools->web publishing tool) e provare poi tramite il browser a prendere il controllo dell'applicazione.
Credo che anche nel pc client ci debba essere installato il runtime di labview.[/quote:23uafqqz]
si ora ce l ho fatta!! grazie mille...
----------------------------------------
================================================================================
Visione USB: Sfarfallio clamp perchè?
================================================================================
AUTORE: 482
DATA :21/09/2009 - 15:54:47
----------------------------------------
...ma ciao!
ho un problemino "grafico" con una mia applicazione che non capisco a cosa sia dovuto.
Ho estrapolato il minomo indispensabile per riprodurre il problema.
Si tratta di un acquisizione da una telecamera USB.
Quando faccio partire l'acquisizione e inquadro un oggetto, gli overlay del clamp mi lampeggiano , come se continuasse a fare il refresh del controllo. Il programma continua a funzionare correttamente, ma quello che si vede è ababstanza brutto.
Qualcuno sa come posso fare a stabilizzare la visualizzazione?
Ho la sensazione di aver già affrontato e risolto questo problema ma in questo momento ho un vuoto totale
----------------------------------------
================================================================================
installazione
================================================================================
AUTORE: 2791
DATA :22/09/2009 - 09:08:57
----------------------------------------
Ciao a tutti,
mi chiamo Mauro e sto usando Labview durante la mia tesi di dottorato per utilizzare diversi strumenti (lock-in, network analyzer, oscilloscopi, multimetri ecc...).
labview mi serve per configurare gli strumenti, per sincronizzare le misure, leggere gli spettri o i valori, scrivere su file i risultati ed eventualmente per analizzare gli spettri (picchi, fit). La comunicazione avviene attraverso l'interfaccia gbip una daq (NI PCI-6229)
Ieri ho voluto aggiornare alla versione 8.6 adesso uso la 7.1 (in realtà ho aggiunto la nuova versione)
Prima domanda, questo è stata una buona idea? Avrò dei problemi con i vecchi programmi?
installare nuovi drivers può creare problemi?
Mi hanno dato un bel po' di DVD olte al NI labVIEW Core components ci sono:
Ni device drivers
Control and Embedded System Option Components
Signal Processing and comunication option components
Extended Development Suite Components
e non ho idea cosa installare...
come si fa ad disinstallare moduli che non si usano? (infatti ho già installato gli ultimi due components della lista ma credo di aver messo un sacco di cose inutili)
Grazie a chi mi aiuterà.
----------------------------------------
AUTORE: 278
DATA :22/09/2009 - 12:34:27
----------------------------------------
Ciao,
il consiglio che ti posso dare e` di installare solo ed esclusivamente i moduli che ti serviranno per il tuo lavoro, questo per non appesantire troppo l`ambiente di sviluppo.
Se vuoi disinstallare conponenti non piu` utilizzati devi andare nel pannello di controllo di windows (suppongo che usi XP) e quindi cliccare su installazione appliucazioni.
Cerca la voce Software National Instruments e clicca su Cambia/Rimuovi, ti apparira` la classica procedura di disinstallazione software di Windows, qui puoi scegliere cosa mantenere, cosa reinstallare e cosa disinstallare.
Ciao
----------------------------------------
AUTORE: 278
DATA :22/09/2009 - 22:07:10
----------------------------------------
Ciao,
i messaggi di posta interna hanno ancora qualche probema, ti rispondo qua.
In generale, ogni costuttore di PLC ha il suo cavo di interfaccia, se ti chiedi il perche` la risposta e` nel suo costo
Utilizzo saltuariamente plc Schneider e pure loro hanno un cavo "proprietario" per interfacciarsi con il plc.
Consiglio quindi di affidati alla soluzione da loro proposta, occhio pero` che se il loro cavo si interfaccia con il tuo pc tramite rs232 e connettore d-sub a 9 poli (seriale classica) sei punto a capo, devi utilizzare un convertitore usb seriale.
Se invece il cavo e` di tipo usb assicurati che venga visto dal sistema operativo come una porta com, questo ti permette di "parlarci" utilizzando i blocchi VISA.
Ciao
----------------------------------------
================================================================================
Leggere cifre decimali
================================================================================
AUTORE: 2674
DATA :22/09/2009 - 09:12:49
----------------------------------------
Ciao a tutti,
vorrei leggere la seconda cifra dopo la virgola (ossia i centesimi) e non so come fare.
Potete aiutarmi?
Grazie mille
----------------------------------------
AUTORE: 2791
DATA :22/09/2009 - 09:32:15
----------------------------------------
è un po' generica come domanda...
comunque se è per un controllo o un indicatore apri con il tasto destro le proprietà vai in display format e selezioni le cifre significative. Se converti i numeri in stringa c'è un paramametro apposta
----------------------------------------
AUTORE: 2674
DATA :22/09/2009 - 10:01:30
----------------------------------------
Hai ragione...mi spiego meglio...
Leggo un dato da uno strumento ed ottengo un indicatore numerico, supponiamo che ottengo X= 12, 34.
Io vorrei leggere la cifra dei centesimi (4), modificare tale cifra ed inviare nuovamente X allo strumento.
Ho provato a cambiare il numero di cifre significative ma non ottengo il risultato voluto...
Come posso fare?
A quale funzione per le stringhe ti riferisci?
Grazie
----------------------------------------
AUTORE: 43
DATA :22/09/2009 - 11:31:08
----------------------------------------
[quote="fede":omtaqfcs]Hai ragione...mi spiego meglio...
Leggo un dato da uno strumento ed ottengo un indicatore numerico, supponiamo che ottengo X= 12, 34.
Io vorrei leggere la cifra dei centesimi (4), modificare tale cifra ed inviare nuovamente X allo strumento.
Ho provato a cambiare il numero di cifre significative ma non ottengo il risultato voluto...
Come posso fare?
A quale funzione per le stringhe ti riferisci?
Grazie[/quote:omtaqfcs]
Innanzi tutto devi assicurarti che LabVIEW utilizzi la virgola come separatore dei decimali, e come seconda cosa, SE il numero è ESATTAMENTE ricevuto dallo strumento così come lo hai postato, allora devi "levare" lo spazio dopo la virgola.
[attachment=0:omtaqfcs]STR2FLOAT.JPG[/attachment:omtaqfcs]
contrariamente a quanto detto, nell'esempio approfitto del fatto che devo cmq togliere gli spazi e sostituisco la virgola "," con il punto "."
E' possibile usare la virgola come separatore dei decimali, ma, deve essere configurato nel S.O. e opportunamente abilitato in LabVIEW.(in realtà questo è il default che io però consiglio di disabilitarlo...)
In questo Forum ci sono un sacco di discussioni in merito. cerca "localized decimal point"...
bye
----------------------------------------
AUTORE: 482
DATA :23/09/2009 - 09:28:35
----------------------------------------
[quote="fede":4pkjqkyb]
Leggo un dato da uno strumento ed ottengo un indicatore numerico, supponiamo che ottengo X= 12, 34.[/quote:4pkjqkyb]
Che strumento è?
Ottieni un indicatore numerico o una stringa?
Ma soprattutto, il 3° numero decimale, lo strumento te lo produce o vorretsi leggerlo senza che lo strumento te lo restituisca?
servono piu' dettagli
----------------------------------------
================================================================================
Cerca elemento in un array
================================================================================
AUTORE: 2585
DATA :22/09/2009 - 10:10:57
----------------------------------------
Buongiorno ho il seguente quesito da porvi:
dispongo di tre array.
Array 1, array 2 ed array 3.
In array 1 ho delle sigle una per elemento.
Voglio cercare la sigla in pos. 0 dell'array y in array 2 e copiare in array 3 tutto l'elemento.
Per esempio in Array 1 ho "A
Voglio trovare A in array 2, se per esempio vi e' alla pos. n "A B C D" vorrei copiare tutta la riga in array 3.
Il mio problema e' come far cercare a Labview l'elemento dell'array 1 nel 2.
Grazie,
Paolo
----------------------------------------
AUTORE: 1078
DATA :22/09/2009 - 11:48:02
----------------------------------------
Bhe non so se ho capito molto bene, ma prova a vedere se questo può fare al caso tuo!
----------------------------------------
AUTORE: 1078
DATA :22/09/2009 - 11:49:52
----------------------------------------
scusa dimenticavo di dirti che io mi sono limitato a confrontare la prima lettere delle due stringhe recuperate dagli array. Se hai sigle più lunghe ovviamente devi estrapolare quello che ti interessa confrontare. Attento il contenuto che confronti è case sensitive!
----------------------------------------
AUTORE: 43
DATA :22/09/2009 - 11:56:32
----------------------------------------
cmq sia, ricky, attento agli shift register non inizializzati, specialmente se si tratta di array che possono solo "crescere" di dimensione!
bye
----------------------------------------
AUTORE: 1078
DATA :22/09/2009 - 11:58:27
----------------------------------------
hai [quote="paracarro":11alofjz]cmq sia, ricky, attento agli shift register non inizializzati, specialmente se si tratta di array che possono solo "crescere" di dimensione!
bye[/quote:11alofjz]
ragione ho dimenticato di inizializzarlo....
----------------------------------------
AUTORE: 2585
DATA :22/09/2009 - 15:04:59
----------------------------------------
Provato.
Funziona grazie,
Paolo
----------------------------------------
================================================================================
open serial con i settaggi letti da un file di testo
================================================================================
AUTORE: 335
DATA :22/09/2009 - 14:52:04
----------------------------------------
ciao a tutti
vi espongo il mio problema con la speranza di avere suggerimenti o dritte per risolverlo..
in un file txt ho i parametri di configurazione necessari alla mia openVisa
ora, io riesco a leggere con labview il file txt e avere tante stringhe con le impostazioni necessarie ma trovo difficoltà a far diventare la stringa 'COM11' il parametro 'VISA resource name'
chi mi aiuta?
grazie
ps quale è quella combinazione di tasti che aggiusta automaticamente tutti i fili
?
----------------------------------------
AUTORE: 1078
DATA :22/09/2009 - 15:40:15
----------------------------------------
Ciao,
Puoi passare direttamente la stringa alla Visa function che utilizzi. Se nella string è contenuto un valore di porta seriale valido la function visra aprirà e gestirà la porta. Controlla che nella stringa ci sia il valore che ti aspetti.
In LV 8.6.1 esiste una nuova funzione che permette di pulire l'intero codice, io l'ho appena usata con un VI e mi ha fatto più disastri che altro. Pensavo di ottimizzare il tempo di ripulitura del VI con quella funzione e invece mi trovo a ripulire tutto a mano perdendoci il doppio del tempo. Attento quindi alle funzioni che appaiono "comode", funzionano bene solo con VI non molto complessi.
Ciao e buon lavoro!
----------------------------------------
AUTORE: 335
DATA :22/09/2009 - 16:01:25
----------------------------------------
[quote="Ricky":3ayvpeqa]Ciao,
Puoi passare direttamente la stringa alla Visa function che utilizzi. Se nella string è contenuto un valore di porta seriale valido la function visra aprirà e gestirà la porta. Controlla che nella stringa ci sia il valore che ti aspetti.
In LV 8.6.1 esiste una nuova funzione che permette di pulire l'intero codice, io l'ho appena usata con un VI e mi ha fatto più disastri che altro. Pensavo di ottimizzare il tempo di ripulitura del VI con quella funzione e invece mi trovo a ripulire tutto a mano perdendoci il doppio del tempo. Attento quindi alle funzioni che appaiono "comode", funzionano bene solo con VI non molto complessi.
Ciao e buon lavoro![/quote:3ayvpeqa]
------------------------------------------
grazie della dritta
io uso LV7.1 e proverò presto cio che mi suggerisci
grazie
----------------------------------------
================================================================================
Front panel modificabile
================================================================================
AUTORE: 2791
DATA :22/09/2009 - 19:20:31
----------------------------------------
Nel mio esperimento devo fare uno sweep in frequenza. Al signal generator posso dare due formati alternativi: la frequenza iniziale e la frequenza finale oppure il centro e lo span. Sto facendo un programma in cui si può scegliere la modalità. Vorrei che la scelta avvenisse attraverso un interruttore o bottone e che di conseguenza cambiasse il front panel. Vorrei un rettangolo in cui si vedono solamente gli input necessari per la modalità. Per esempio se l'interruttore è su start-stop vorrei vedere solo i comandi start frequency e stop frequency. Adesso sto usando tab control però non mi piace molto e sopratutto non riesco a selezionare le pagine con un comando esterno (riesco solo direttamente con il mouse). In pratica mi piacerebbe una cosa come tab control (ma senza i tab
) e comandabile con un pulsante (ho solo 2 pagine)
Grazie mille
----------------------------------------
AUTORE: 1078
DATA :23/09/2009 - 08:09:08
----------------------------------------
Ciao MauroM80,
Dai un'occhio al mio esempio. Io la risolverei così. Tieni presente che è solo un'esempio e che dovrai lavorarci su per adattarlo meglio alle tue esigenze.
Buon lavoro.
----------------------------------------
AUTORE: 482
DATA :23/09/2009 - 09:17:14
----------------------------------------
In alternativa alla soluzione di ricky che richiama due veri e propri front panel diversi, puoi restare sulla soluzione del Tab control.
Dalle proprietà rendi invisibili i tab.
e poi per cambiare pagina da codice, basta assegnare un valore al terminale del tab.
Il tab non è altro che un controllo numerico in cui il numero corrisponde al numero della pagina.
QUando premi il tuo bottone incrementi o decrementi il valore del tab control ed hai finito
----------------------------------------
================================================================================
Unire alcuni elementi di un array
================================================================================
AUTORE: 2765
DATA :23/09/2009 - 16:25:04
----------------------------------------
Ciao a tutti,
io ho un problema nella divisione di un array. Da file prelevo dei dati che poi vengono da me modificati in questo modo:
035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 0101 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 0301 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 0103 5A01 BB01 7A01 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 017A 0101 035A 01BB 0101 0103 5A01 BB01 7A01 010A 0A0A
Questi elementi sono tutti in un array, devo prendere gli elementi ogni 4 (esempio parto dal primo 035A-035A-035A). E devo fare la stessa cosa per gli altri per il 2(01bb), 3(017A) e 4(0101) elemento. E' solo un caso che gli elementi sono uguali ogni 4. Dopo che riunisco tutti gli elementi da me interessati, devono essere messi in un array per poterli visualizzare su grafico
La mia versione Labview è la 8.0
Coordiali saluti
----------------------------------------
AUTORE: 129
DATA :24/09/2009 - 06:17:25
----------------------------------------
dovresi far diventare l'array bidimensionale in array 1d quindi usi la funzione di divisione e nel numero divisore metti 4.
----------------------------------------
AUTORE: 2765
DATA :24/09/2009 - 11:54:12
----------------------------------------
Grazie.....mi hai risolto un grosso problema. Però era così semplice...
----------------------------------------
================================================================================
Comunicare con il PLC
================================================================================
AUTORE: 2774
DATA :23/09/2009 - 22:46:33
----------------------------------------
Salve,
volevo chiedere se qualcuno aveva già usato il software NI OPC Servers..
Una delle domande che mi si chiede per interfacciarmi con il PLC è quella di inserire gli indirizzi dei tag che voglio associare al canale.
Che tipo di indirizzi?
Li trovo nel manuale del PLC ??
grazie
----------------------------------------
================================================================================
Sistemi retroazionati
================================================================================
AUTORE: 1078
DATA :24/09/2009 - 08:05:28
----------------------------------------
Ciao a tutti,
Devo realizzare un sistema retroazionato che genera una forma d'onda sinusoidale che pilota un sensore a microonde (vedetelo come una cassa o un qualsiasi generatore di rumore) a valle del sensore ho un microfono che verifica l'onda generata. Se questa non corrisponde in ampiezza a quella desiderata, il software deve aggiustarne l'ampiezza correggendone l'errore. L'errore è dato solo dalla differenza tra il seganle campione e quello generato. Ovviamente (visto che ho poche risorse a disposizione) devo generare e acquisire su un'unica scheda di acquisizione (la 6281 della national). Il tutto deve avvenire con una certa velocità, l'onda da generare potrà variare tra i 40KHz e i 55KHz.
Qualcuno di voi sa indirizzarmi su della documentazione (magari con qualche esempio) che si possa avvicinare a quello che devo costruire?
Grazie.
----------------------------------------
================================================================================
Difficoltà con labview 8.5
================================================================================
AUTORE: 2796
DATA :25/09/2009 - 11:00:27
----------------------------------------
Salve,
ho un problema col labview 8.5.
In pratica non riesco a trovare i blocchetti "reciprocal" e "divide" perchè ho bisohno di fare una trasformazione da binario in volts, e mi serve almeno il reciprocal.
Inoltre quando vado nell'help dei blocchetti (tipo faccio tasto destro sul blocchetto "add" e poi help) quando ci sono i tastini "Find on the Functions palette"
oppure "open examples" cliccandoci su non si apre nulla e non capisco perchè.
Mi potete aiutare?
Vi ringrazio.
----------------------------------------
================================================================================
G web server
================================================================================
AUTORE: 2435
DATA :25/09/2009 - 14:56:01
----------------------------------------
Ciao a tutti...
girando un po sulle funzionalità di LV ho trovato le impostazioni di "G web server"..
sapete darmi indicazioni sull'utilizzo o esempi??
grazie
----------------------------------------
================================================================================
Memorizzare un flusso di dati in Labview e riprodurlo
================================================================================
AUTORE: 2774
DATA :25/09/2009 - 17:36:51
----------------------------------------
Salve,
come posso, una volta configurato il software NI OPC Servers per la comunicazione seriale con un PLC, memorizzare il flusso di dati in LAbview e successivamente riprodurlo in un'altra sede senza necessariamente essere collegato al PLC?
GRazie in anticipo delle risposte!!
----------------------------------------
AUTORE: 1078
DATA :29/09/2009 - 14:41:28
----------------------------------------
bhe, esistono diversi metodi per l'archiviazione dei dati su disco. Che tipo di dati devi archiviare?
Con labview è veramente facile archiviare anche record personalizzati come cluster etc, trovi molti esempi on-line sul sito della NI.
----------------------------------------
================================================================================
gestione remota e salvataggio file..
================================================================================
AUTORE: 2784
DATA :28/09/2009 - 10:21:27
----------------------------------------
salve ragazzi,
secondo voi è possibile da una gestione remota poter salvare file di risultati. Cerco di spiegarmi..ho un programmino che lavora con datasocket server e salvo i risultati sul mio pc su un file di testo txt...ora vorrei tramite gestione remota poter salvare un file dei dati non sul pc master ma su un client che gestisce il programma remotamente..è possibile??
----------------------------------------
AUTORE: 43
DATA :28/09/2009 - 10:50:14
----------------------------------------
[quote="therealdeal":10ccnrjb]salve ragazzi,
secondo voi è possibile da una gestione remota poter salvare file di risultati. Cerco di spiegarmi..ho un programmino che lavora con datasocket server e salvo i risultati sul mio pc su un file di testo txt...ora vorrei tramite gestione remota poter salvare un file dei dati non sul pc master ma su un client che gestisce il programma remotamente..è possibile??
[/quote:10ccnrjb]
Dunque. con datasocket scambi informazioni tra due applicazioni che girano non necessariamente su diversi PC.
Per salvare i dati su PC da remoto, basta condividere una cartella sul PC remoto dando la possibilità di scrittura all'utenza remota che deve collegarvicivisi x scriverci...
Non so se mi sono capito
----------------------------------------
AUTORE: 2784
DATA :28/09/2009 - 11:13:20
----------------------------------------
[quote="paracarro":24b2t5ky][quote="therealdeal":24b2t5ky]salve ragazzi,
secondo voi è possibile da una gestione remota poter salvare file di risultati. Cerco di spiegarmi..ho un programmino che lavora con datasocket server e salvo i risultati sul mio pc su un file di testo txt...ora vorrei tramite gestione remota poter salvare un file dei dati non sul pc master ma su un client che gestisce il programma remotamente..è possibile??
[/quote:24b2t5ky]
Dunque. con datasocket scambi informazioni tra due applicazioni che girano non necessariamente su diversi PC.
Per salvare i dati su PC da remoto, basta condividere una cartella sul PC remoto dando la possibilità di scrittura all'utenza remota che deve collegarvicivisi x scriverci...
Non so se mi sono capito
[/quote:24b2t5ky]
si capito..e come posso far ciò??
----------------------------------------
AUTORE: 43
DATA :28/09/2009 - 13:54:54
----------------------------------------
[quote="therealdeal":1mh20mra]si capito..e come posso far ciò??
[/quote:1mh20mra]
LabVIEW non c'entra una mazza...
Devi da S.O. sherare una cartella con i giusti privilegi ed accessi all'utenza che vi deve accedere.
Se si usa un SistemaOperativo MicroSoffice ci sono almeno 2 possibilità:
Si può associare una lettera (unità) come se si accedesse ad una unita disco logica per cui
supponiamo di condividere la cartella [Citrullo] che corrisponde alla effettiva cartella [d:\temp\Citrullo] del PC [PCTuo], alla quale associamo la lettera [W]
Per cui in LabVIEW, da remoto, posso accedere al file [pippo.dat] contenuto in quella cartella utilizzando come path:
w:\pippo.dat.
Se non è associata alcuna unità di rete, il path LabVIEW sarà:
\\PCTuo\Citrullo\pippo.dat
Per linux chiedi a Geppo
bye
----------------------------------------
AUTORE: 2784
DATA :28/09/2009 - 13:57:03
----------------------------------------
[quote="paracarro":3npstoad][quote="therealdeal":3npstoad]si capito..e come posso far ciò??
[/quote:3npstoad]
LabVIEW non c'entra una mazza...
Devi da S.O. sherare una cartella con i giusti privilegi ed accessi all'utenza che vi deve accedere.
Se si usa un SistemaOperativo MicroSoffice ci sono almeno 2 possibilità:
Si può associare una lettera (unità) come se si accedesse ad una unita disco logica per cui
supponiamo di condividere la cartella [Citrullo] che corrisponde alla effettiva cartella [d:\temp\Citrullo] del PC [PCTuo], alla quale associamo la lettera [W]
Per cui in LabVIEW, da remoto, posso accedere al file [pippo.dat] contenuto in quella cartella utilizzando come path:
w:\pippo.dat.
Se non è associata alcuna unità di rete, il path LabVIEW sarà:
\\PCTuo\Citrullo\pippo.dat
Per linux chiedi a Geppo
bye[/quote:3npstoad]
no no uso win XP...e io da un altro pc posso salvare i dati sul file messo in quella cartella??
----------------------------------------
AUTORE: 43
DATA :28/09/2009 - 14:21:17
----------------------------------------
[quote="therealdeal":3ee2posk]no no uso win XP...e io da un altro pc posso salvare i dati sul file messo in quella cartella??[/quote:3ee2posk]
Sì
E' solo una questione di privilegi di accessi al PC remoto.
Soprattutto devi conoscere il S.O. sul quale gira il SW LabVIEW...
In fondo si tratta di specificare il giusto Path.
bye
----------------------------------------
AUTORE: 2784
DATA :28/09/2009 - 14:31:27
----------------------------------------
[quote="paracarro":2s4tgrr5][quote="therealdeal":2s4tgrr5]no no uso win XP...e io da un altro pc posso salvare i dati sul file messo in quella cartella??[/quote:2s4tgrr5]
Sì
E' solo una questione di privilegi di accessi al PC remoto.
Soprattutto devi conoscere il S.O. sul quale gira il SW LabVIEW...
In fondo si tratta di specificare il giusto Path.
bye[/quote:2s4tgrr5]
mmh ma io parlo di accesso da un altro pc via gestione remota, non pc remoto! o sono la stessa cosa??non so se mi sono spiegato..
----------------------------------------
AUTORE: 43
DATA :28/09/2009 - 14:48:07
----------------------------------------
[quote="therealdeal":2qcfy2au]mmh ma io parlo di accesso da un altro pc via gestione remota, non pc remoto! o sono la stessa cosa??non so se mi sono spiegato..[/quote:2qcfy2au]
Machissenefrega!!
Devi o non devi accedere ad un file in lettura/modifica/scrittura? quindi il Tuo problema è specificare un path corretto!
Il fatto che usi un datasocket server è un problema di accesso remoto via Datasocket. Datasocket, come ho scritto nel primo post , permette di scambiare messaggi fra applicazioni. Anche non remote!
Se vuoi accedere alle risorse tipo "disco" devi farlo attraverso il S.O., è la strada migliore, secondo me, perchè non comporta particolari complicazioni nello sviluppo dell'applicazione, anzi , è INDIPENDENTE dall'applicazione.
Entrambe le Entità SW cioè "Datasocket" che "Network File System" (meglio dire l'accesso condiviso a files in rete) si basano sul protocollo TCP ma consentono di accedere a risorse diverse.
bye
----------------------------------------
AUTORE: 2784
DATA :28/09/2009 - 14:50:25
----------------------------------------
[quote="paracarro":1o1xn7dr][quote="therealdeal":1o1xn7dr]mmh ma io parlo di accesso da un altro pc via gestione remota, non pc remoto! o sono la stessa cosa??non so se mi sono spiegato..[/quote:1o1xn7dr]
Machissenefrega!!
Devi o non devi accedere ad un file in lettura/modifica/scrittura? quindi il Tuo problema è specificare un path corretto!
Il fatto che usi un datasocket server è un problema di accesso remoto via Datasocket. Datasocket, come ho scritto nel primo post , permette di scambiare messaggi fra applicazioni. Anche non remote!
Se vuoi accedere alle risorse tipo "disco" devi farlo attraverso il S.O., è la strada migliore, secondo me, perchè non comporta particolari complicazioni nello sviluppo dell'applicazione, anzi , è INDIPENDENTE dall'applicazione.
Entrambe le Entità SW cioè "Datasocket" che "Network File System" (meglio dire l'accesso condiviso a files in rete) si basano sul protocollo TCP ma consentono di accedere a risorse diverse.
bye[/quote:1o1xn7dr]
mmh..bene..vedrò se ci riesco..grazie per ora..
----------------------------------------
AUTORE: 2784
DATA :01/10/2009 - 16:39:44
----------------------------------------
cambia qualcosa se la cartella è in rete ma non nella stessa rete??
----------------------------------------
AUTORE: 2784
DATA :03/10/2009 - 21:22:46
----------------------------------------
non fa cosi...qualcosa mi dice che se il pc non è connesso alla mia rete come fa a vedere la cartella?? non è che devo mettere la cartella sul web in qualche modo??
----------------------------------------
AUTORE: 645
DATA :05/10/2009 - 11:55:23
----------------------------------------
Non è che therealdeal intende prendere il controllo remoto di un VI che normalmente gira su un pc "principale" (che normalmente salva i dati "su se stesso") e salvare i dati sul pc dal quale sta prendendo il controllo (anzichè sul pc "principale") per la sessione corrente?
Se è così si passa dal Web Server di LabView e forse si può pensare ad una struttura di salvataggio che semplicemente chieda dove si vogliono salvare i dati.
Se ho detto una roba che non c'entra niente con la discussione ditemelo e autodistruggerò questo messaggio...
----------------------------------------
AUTORE: 2784
DATA :05/10/2009 - 12:35:47
----------------------------------------
si + o meno cosi..i dati devono essere presenti sia nel master che nel client che durante la gestione remota si connette..in pratica il master si aggancia preleva i dati li salva poi stacca. il client si attacca fa le misurazioni salva i dati e stacca. I dati sono disponibili sia al master che al client
----------------------------------------
AUTORE: 2784
DATA :05/10/2009 - 12:36:50
----------------------------------------
non so se sono stato chiaro..però con una cartella condivisa magari è quello che vorrei solo che tra me e il pc posto a 300 km di distanza non farebbe...spero di essermi spiegato
----------------------------------------
================================================================================
identificazione filtro
================================================================================
AUTORE: 2629
DATA :29/09/2009 - 10:04:42
----------------------------------------
Salve, il lavoro che devo svolgere è l'identificazione di un filtro. Per fare ciò devo partire dalla risposta in ampiezza; il dagramma a blocchi per il calcolo della risposta in ampiezza l'ho creato, è funzionante, quindi adesso partendo da essa dovrei capire che tipo di filtro è stato collegato all'oscilloscopio, quindi, dovrei fare la derivata della risposta in ampiezza e vedere l'andamento, se è decrescente allora il filtro usato è un passa-basso, crescente un passa-alto e così via.
Avrei pensato di utilizzare una funzione (non so se esiste in labview) che calcoli la differenza tra l' i+1-esimo punto e l'i-esimo punto, ma ho un pò le idee confuse, quindi, chiedo a voi più esperti di me
.
Grazie. Saluti.
----------------------------------------
AUTORE: 927
DATA :02/10/2009 - 10:25:16
----------------------------------------
Esiste proprio un blocco per calcolare le derivate, ma non fa parte della versione base di Labviù.
Per la differenza tra punti consecutivi basta un ciclo, uno shift register e un segno meno: se hai usato un ciclo for/while per calcolare la risposta in ampiezza, puoi ottenere le differenze direttamente dentro quello stesso ciclo
----------------------------------------
AUTORE: 2629
DATA :02/10/2009 - 11:06:27
----------------------------------------
si ho usato un ciclo for per calcolare le attenuazioni alle varie frequenze ( ne ho scelte 5 ) , qndi alla fine del ciclo ho ricavato un array di 5 elementi cioè le attenuazioni ... e avevo pensato di utilizzare la funzione array subset 4 volte per vedere se il 2 elemento era maggiore del 1 , il 3 del 2 e cosi via ... se tutte queste condizioni sono vere allora il filtro è un passa.basso xkè siamo nel caso di funzione decrescente ...
grazie x la risposta
----------------------------------------
================================================================================
Utilizzo VISA
================================================================================
AUTORE: 2801
DATA :29/09/2009 - 10:20:52
----------------------------------------
Ciao a tutti ,
ho un analizzatore di spettro PXI 5620 su un pc , vorrei poter sviluppare un programma in labview che mi faccia accedere al PC remoto tramite VISA , è
possibile?
Ho provato a fare qualche prova ma al momento dell'inizializzazione della periferica remota tramite controllo Labview "Visa Resource" ricevo un errore : niTuner Initialize.vi
premesso che su Remote System del Measurement Automation Explorer vedo la risorsa come : visa://192.168.0.42/PXI2::14::INSTR (PXI 5620).
Se utilizzo le Property Node lo strumento viene riconosciuto , ma se tento di inizializzarlo con "ni5660 inizialize"
ricevo un errore "niTuner Initialize.vi" error 10401.
Qualcuno mi sa aiutare?
Grazie
----------------------------------------
================================================================================
VI per DRL28PB1G-03D linear actuator
================================================================================
AUTORE: 2802
DATA :29/09/2009 - 13:01:23
----------------------------------------
Salve a tutti.
Volevo sapere dove e come posso trovare una VI che mi permetta di fare muovere l'attuatore DRL28PB1G-03D linear actuator attraverso una scheda d'acquisizione NI PCI-7342, 2 Axis Stepper/Servo Motion Controller.
Spero che qualcuno possa aiutarmi.
Grazie
----------------------------------------
AUTORE: 1078
DATA :29/09/2009 - 14:37:26
----------------------------------------
Bhe, così mi sembra un pò generico e troppo facile...
Se tutti noi facessimo fare agli altri quello che dovremmo fare noi!
Allora, penso che dovrai lavorare un po sulla tua applicazione. Noi del forum potremmo darti una mano e qualche consiglio sul miglior sviluppo della stessa, ma la nostra filosofia non è quella di passare software belli e pronti.
Puoi trovare informazioni su come utilizzare la tua scheda NI qui:
[url:1q0cxzwt]http://search.ni.com/nisearch/app/main/p/q/NI%20PCI-7342%20examples/[/url:1q0cxzwt]
Qui invece trovi le info che ti servono (dati tecnici e datasheet del motore):
[url:1q0cxzwt]http://catalog.orientalmotor.com/category/stepping-motors?[/url:1q0cxzwt]
[url:1q0cxzwt]http://www.orientalmotor.com/automated/faq/faq23.html[/url:1q0cxzwt]
[url:1q0cxzwt]http://www.orientalmotor.com/site-search.html?cx=014109690197579362659%3At-s2asx2sjs&cof=FORID%3A11%3BNB%3A1&ie=UTF-8&q=labview+driver#147[/url:1q0cxzwt]
Buon lavoro.
----------------------------------------
================================================================================
sono in ambiente di sviluppo o in un eseguibile?
================================================================================
AUTORE: 482
DATA :30/09/2009 - 15:22:17
----------------------------------------
...ma ciao!
...mi chiedevo:
Esiste una funzione (che non sia il verificare il path di origine del vi) che permetta di riconoscere se il software sta girando in ambiente di sviluppo o come eseguibile?
----------------------------------------
AUTORE: 43
DATA :30/09/2009 - 15:29:54
----------------------------------------
[quote="gepponline":28tboglc]...ma ciao!
...mi chiedevo:
Esiste una funzione (che non sia il verificare il path di origine del vi) che permetta di riconoscere se il software sta girando in ambiente di sviluppo o come eseguibile?[/quote:28tboglc]
miiiiiiiiiiiiiiiiiiii
non ci credo!!!!
ca**o!!!!!!!!!!!!!!!
6 uno tra i + scafati del Forum e fai sta domanda?
[attachment=0:28tboglc]appname.JPG[/attachment:28tboglc]
se è labview.exe è ambiente di sviluppo.
se no è la tua applicazione.
A meno che la Tua applicazione si chiami anch'essa LabVIEW....
bye
----------------------------------------
AUTORE: 482
DATA :30/09/2009 - 15:34:01
----------------------------------------
non l'ho mai usata....
io avevo pensato a prendere il path del vi attuale e verificare se c'era la scritta ".exe"
ma mi sembrava strano non ci fossero altre soluzioni.
SPiego, mi serve perchè quando chiudo i programmi metto ogni volta quit labview e non voglio rischiare che mi si chiuda quando ho aperte cose che mi servono ancora.
quindi per adesso grazie
----------------------------------------
AUTORE: 43
DATA :30/09/2009 - 15:39:16
----------------------------------------
[quote="gepponline":2scphkth]non l'ho mai usata....
io avevo pensato a prendere il path del vi attuale e verificare se c'era la scritta ".exe"
ma mi sembrava strano non ci fossero altre soluzioni.
SPiego, mi serve perchè quando chiudo i programmi metto ogni volta quit labview e non voglio rischiare che mi si chiuda quando ho aperte cose che mi servono ancora.
quindi per adesso grazie
[/quote:2scphkth]
Strano... Aparte LabVIEW2009 che permette di mantenere la "gerarchia delle directory" dentro l'exe, questo sistema è "LA BASE" dalla quale partire per discernere il giusto path da utilizzare nei 2 diversi casi : ambiente di sviluppo ed eseguibile.
Mi raccomando: da ora in poi non fare mai + applicazioni che si chiudono facendo "Quit LabVIEW". La applicazioni devono chiudersi seguendo una perfetta procedura di shutdown...
----------------------------------------
AUTORE: 482
DATA :01/10/2009 - 07:58:06
----------------------------------------
[quote="paracarro":3i5wvcza]Mi raccomando: da ora in poi non fare mai + applicazioni che si chiudono facendo "Quit LabVIEW". La applicazioni devono chiudersi seguendo una perfetta procedura di shutdown...[/quote:3i5wvcza]
E' che le altre applicazioni che sviluppavo, avevano dell'hardware che non potevo testare a banco e quindi non le provavo in ambiente di sviluppo, questa è la prima volta che posso sviluppare e testare interamente a banco un applicazione. Forse è per questo che avevo sta lacuna!
Dovro' crearmi un bel template con sta cosa per il quit e un bel ciclo già temporizzato e partire sempre da li
----------------------------------------
AUTORE: 2592
DATA :01/10/2009 - 09:40:52
----------------------------------------
Ciao geppo,
oltre al property node App.name, puoi usare la proprietà Application -> Kind.
Il dato restituito è di tipo enum e se sei in ambiente di sviluppo ti ritorna "Development System" , se sei in eseguibile ti ritorna "Run Time System".
How to Determine if an Application is Running as a VI or as an Executable
http://digital.ni.com/public.nsf/allkb/ ... enDocument
Ciao,
Andrea
----------------------------------------
AUTORE: 482
DATA :01/10/2009 - 12:56:05
----------------------------------------
ecco! piu' diretto! mi piace
----------------------------------------
================================================================================
dialogo iniziale con strumento
================================================================================
AUTORE: 2712
DATA :01/10/2009 - 12:00:12
----------------------------------------
salve a tutti
ho un problema con il controllo di uno stumento via porta seriale
utilizzo blocchetti VISA
lo stumento al suo avvio mi fornisce una serie di dati (stringa) che devo memorizzare (in una variabile o anche in un file) prima di poter iniziare effettivamente il dialogo.
la trasmissione di questi dati finisce quando lo strumento mi fornsce una determinata stringa (che si ripete dopo un determinato periodo di tempo fin quando nn invio il primo comando)
avete suggerimenti da darmi?
il problema fondamentale che ho riguarda il visa read e il byte count che naturamlente nn riescoad impostare in quando nn so quanto siano grandi i dati invitimi inizialmente
----------------------------------------
AUTORE: 1124
DATA :02/10/2009 - 13:34:52
----------------------------------------
ciao
hai provato a usare gli esempi forniti con l'ambiente di sviluppo? mi riferisco a:
"basic serial write and read.vi"
di cui ti allego una immagine del block panel.
----------------------------------------
AUTORE: 645
DATA :02/10/2009 - 15:30:47
----------------------------------------
Potresti non avere bisogno di impostare dimensioni di lettura...
Con il blocco READ continua a leggere i dati dallo strumento. Puoi controllare se sei arrivato alla fine in due modi:
a) ogni tot di caratteri fai un controllo su quello che hai letto... Ma se non sai assolutamente nulla dei dati che arrivano non puoi sapere neanche dopo quanti caratteri vale la pena di controllare se sei arrivato in fondo (sicuro che la struttura dei dati iniziali non rimane costante? Magari cambiano i caratteri ma la quantità sei sicuro che non rimanga la stessa?)
b) leggi un carattere alla volta, lo confronti con quello precedente e se corrisponde al secondo carattere dell'ultima stringa potresti essere quasi in fondo... Dopo questo evento tieni traccia di tutti i dati dal penultimo, l'ultimo (quello che hai appena confrontato) e tutti i successivi. Analizzando un carattere alla volta se scopri che stai guardando l'ultima stringa allora preparati ad iniziare la comunicazione con lo strumento.
----------------------------------------
AUTORE: 2712
DATA :05/10/2009 - 16:19:36
----------------------------------------
i dati iniziali sono sempre gli stessi ed arrivano scaglionati. nn riescoa capire se il ritardo è costante o no.
ho provato a fare un ciclo while per acquisirli e memorizzarli in un array ma trovo molte difficoltà....
----------------------------------------
AUTORE: 301
DATA :05/10/2009 - 16:42:59
----------------------------------------
non potresti fermare il ciclo quando ti viene restituita la stringa che si ripete?
----------------------------------------
AUTORE: 2712
DATA :05/10/2009 - 17:59:55
----------------------------------------
[quote="MagicBotolo":1gjf03n7]Potresti non avere bisogno di impostare dimensioni di lettura...
Con il blocco READ continua a leggere i dati dallo strumento. Puoi controllare se sei arrivato alla fine in due modi:
a) ogni tot di caratteri fai un controllo su quello che hai letto... Ma se non sai assolutamente nulla dei dati che arrivano non puoi sapere neanche dopo quanti caratteri vale la pena di controllare se sei arrivato in fondo (sicuro che la struttura dei dati iniziali non rimane costante? Magari cambiano i caratteri ma la quantità sei sicuro che non rimanga la stessa?)
b) leggi un carattere alla volta, lo confronti con quello precedente e se corrisponde al secondo carattere dell'ultima stringa potresti essere quasi in fondo... Dopo questo evento tieni traccia di tutti i dati dal penultimo, l'ultimo (quello che hai appena confrontato) e tutti i successivi. Analizzando un carattere alla volta se scopri che stai guardando l'ultima stringa allora preparati ad iniziare la comunicazione con lo strumento.[/quote:1gjf03n7]
grazie. ho utilizzato il consiglio b
ora nn mi resta che memorizzare tutto
per adesso ho utilizzato una array, vorrei però utilizzare un file
nn so se concateneare tutti gli elementi dell array (882) e memorizzare in un file o memorizzare direttamente nel file byte per byte durante il ciclo while.
naturalmente sono riflessioni nn so ancora da dove incominciare
----------------------------------------
AUTORE: 645
DATA :06/10/2009 - 10:17:32
----------------------------------------
Secondo me è meglio se inserisci tutti i caratteri in un array e poi alla fine memorizzi l'array nel file.
Potresti usare un file di testo e con i blocchetti di LabView è abbastanza semplice memorizzare stringhe. Casomai guarda tra gli esempi.
----------------------------------------
AUTORE: 2712
DATA :12/10/2009 - 12:06:39
----------------------------------------
[quote="off":2bd2lxwx][quote="MagicBotolo":2bd2lxwx]Potresti non avere bisogno di impostare dimensioni di lettura...
Con il blocco READ continua a leggere i dati dallo strumento. Puoi controllare se sei arrivato alla fine in due modi:
a) ogni tot di caratteri fai un controllo su quello che hai letto... Ma se non sai assolutamente nulla dei dati che arrivano non puoi sapere neanche dopo quanti caratteri vale la pena di controllare se sei arrivato in fondo (sicuro che la struttura dei dati iniziali non rimane costante? Magari cambiano i caratteri ma la quantità sei sicuro che non rimanga la stessa?)
b) leggi un carattere alla volta, lo confronti con quello precedente e se corrisponde al secondo carattere dell'ultima stringa potresti essere quasi in fondo... Dopo questo evento tieni traccia di tutti i dati dal penultimo, l'ultimo (quello che hai appena confrontato) e tutti i successivi. Analizzando un carattere alla volta se scopri che stai guardando l'ultima stringa allora preparati ad iniziare la comunicazione con lo strumento.[/quote:2bd2lxwx]
grazie. ho utilizzato il consiglio b
ora nn mi resta che memorizzare tutto
per adesso ho utilizzato una array, vorrei però utilizzare un file
nn so se concateneare tutti gli elementi dell array (882) e memorizzare in un file o memorizzare direttamente nel file byte per byte durante il ciclo while.
naturalmente sono riflessioni nn so ancora da dove incominciare[/quote:2bd2lxwx]
purtroppo lasoluzione b nn era corretta
ho dovuto alla fine utilizzare "bytes at port"
----------------------------------------
AUTORE: 2712
DATA :19/10/2009 - 13:06:46
----------------------------------------
sono riuscito a far dialogare inizialmente lo stumento e il mio VI solo però introducendo un ritardo nel ciclo While...
ovvero ho introdotto un blocchetto "WAIT UNTIL NEXT MS MULTIPLE" sotto consiglio di un amico.
effettivamente nn ho capito perchè.
in oltre nn so bene quanto devo impostare al valore ms del blocchetto
so solo che il programma funziona bene per valori del blocchetto "WAIT UNTIL NEXT MS MULTIPLE" superiori a 27 ms
nn riesco a capire
mipotete aiutare?
----------------------------------------
AUTORE: 43
DATA :19/10/2009 - 13:52:50
----------------------------------------
[quote="off":2mnnm9ht]sono riuscito a far dialogare inizialmente lo stumento e il mio VI solo però introducendo un ritardo nel ciclo While...
ovvero ho introdotto un blocchetto "WAIT UNTIL NEXT MS MULTIPLE" sotto consiglio di un amico.
effettivamente nn ho capito perchè.
in oltre nn so bene quanto devo impostare al valore ms del blocchetto
so solo che il programma funziona bene per valori del blocchetto "WAIT UNTIL NEXT MS MULTIPLE" superiori a 27 ms
nn riesco a capire
mipotete aiutare?[/quote:2mnnm9ht]
non capisco su cosa ci si deve basare per darti un aiuto significativo.
L'aiuto che Ti è stato dato finora è + che sufficiente. in particolare quello che Ti è stato detto riguardo la lettura dei manuali di LabVIEW, la consultazione dell'Help on line, l'esecuzione di VI di esempio.
L'esecuzione di "WAIT UNTIL NEXT MS MULTIPLE" ha l'unico scopo di "temporizzare il loop" di modo che venga eseguito ad ogni "giro", ad intervalli di tempo regolari. Il "tempo di scarto" dato dalla differenza fra il tempo effettivamente impiegato all'esecuzione di "un giro" del loop ed il tempo in ingresso al blocchetto "WAIT UNTIL NEXT MS MULTIPLE" è tutto tempo perso. O meglio: questo tempo viene "rilasciato" per l'esecuzione di codice in parallelo, o cmq per l'interazione dell'operatore con l'interfaccia uomo-macchina (HMI).
Non hai postato un pezzo di codice, neanche un'immagine, non hai detto che tipo di applicazione stai sviluppando, non hai detto che versione di labview usi, non hai detto che marca e modello dello strumento con cui ti devi interfacciare...
Mi chiedo come si faccia a darti informazioni di aiuto specifiche...
bye
----------------------------------------
AUTORE: 2712
DATA :19/10/2009 - 21:17:53
----------------------------------------
[quote="paracarro":bam9rpdd][quote="off":bam9rpdd]sono riuscito a far dialogare inizialmente lo stumento e il mio VI solo però introducendo un ritardo nel ciclo While...
ovvero ho introdotto un blocchetto "WAIT UNTIL NEXT MS MULTIPLE" sotto consiglio di un amico.
effettivamente nn ho capito perchè.
in oltre nn so bene quanto devo impostare al valore ms del blocchetto
so solo che il programma funziona bene per valori del blocchetto "WAIT UNTIL NEXT MS MULTIPLE" superiori a 27 ms
nn riesco a capire
mipotete aiutare?[/quote:bam9rpdd]
non capisco su cosa ci si deve basare per darti un aiuto significativo.
L'aiuto che Ti è stato dato finora è + che sufficiente. in particolare quello che Ti è stato detto riguardo la lettura dei manuali di LabVIEW, la consultazione dell'Help on line, l'esecuzione di VI di esempio.
L'esecuzione di "WAIT UNTIL NEXT MS MULTIPLE" ha l'unico scopo di "temporizzare il loop" di modo che venga eseguito ad ogni "giro", ad intervalli di tempo regolari. Il "tempo di scarto" dato dalla differenza fra il tempo effettivamente impiegato all'esecuzione di "un giro" del loop ed il tempo in ingresso al blocchetto "WAIT UNTIL NEXT MS MULTIPLE" è tutto tempo perso. O meglio: questo tempo viene "rilasciato" per l'esecuzione di codice in parallelo, o cmq per l'interazione dell'operatore con l'interfaccia uomo-macchina (HMI).
Non hai postato un pezzo di codice, neanche un'immagine, non hai detto che tipo di applicazione stai sviluppando, non hai detto che versione di labview usi, non hai detto che marca e modello dello strumento con cui ti devi interfacciare...
Mi chiedo come si faccia a darti informazioni di aiuto specifiche...
bye[/quote:bam9rpdd]
sto lavorando con un pmm or03
il dispositivo all'accensione mi fornisce dei dati (che sono sempre gli stessi) che devo leggere e memorizzare dopo(il dialogo avviene tramite protocollo rs-232)
il programma è costituito da un ciclo while che legge i bayte attraverso blocchetto visa read e utilizzando byte at serial port
se lancio il programma senza inserire "WAIT UNTIL NEXT MS MULTIPLE" vado in loop.
volevo sapere perchè e soprattutto come faccio a decidere il miglior valore in ms da attribuire in ingresso al blocchetto "WAIT UNTIL NEXT MS MULTIPLE"
utilizzo labview student edition 8.0
----------------------------------------
================================================================================
Problema: software o convertitore rs 485
================================================================================
AUTORE: 2624
DATA :02/10/2009 - 08:33:56
----------------------------------------
Ciao ragazzi!
sono alle prese con l'ennesimo problema e questa volta non so dove sbattere la testa...
Intanto ho lv 8.5 e l'applicativo serve per la gestione delle macchine regolatrici di tensione.
Io comunico con loro tramite un convertitore usb-rs485 su protocollo modbus, le interrogo e loro mi rispondono e fin qui nessun problema, immagazzino i dati in un foglio exel e faccio ampio uso dei blocchetti "read from measurement file" e "write to measurement file" circa 30, che riscrivo frquentemente circa una volta ogni 2 secondi.
Ora vado al mio problema: dopo un po' che il software gira regolarmente si pianta, non funziona più in convertitore però lv non mi restituisce nessun messaggio di errore o qulcosa di simile.
A questo punto premo il pulsante di stop, poi faccio ripartire il programma e tutto rifunziona fino ad una nuova piantata...
mi chiedo è colpa mia, del software, o del convertitore???
grazie
----------------------------------------
AUTORE: 1078
DATA :02/10/2009 - 08:44:41
----------------------------------------
Sarebbe carino se ci postassi un VI che rappresenti il tuo codice. Così possiamo analizzare insieme il codice che hai scritto, altrimenti come facciamo ad aiutarti?
----------------------------------------
AUTORE: 2624
DATA :02/10/2009 - 09:16:44
----------------------------------------
metto qua la mia email perche il programma è un po' grandino supera i 2 mb di allegato, se mi rispondete vi invio il file
poli.marco0@gmail.com
grazie
----------------------------------------
AUTORE: 2624
DATA :06/10/2009 - 23:55:40
----------------------------------------
Ok problema risolto
riporto qui sotto tutte le e mail scambiate con magicbotolo, magari possono essere utile ad altri.
[b:3ac1hika]Magicbotolo[/b:3ac1hika]
se vuoi mandarmi il tuo VI provo a dare un'occhiata.
Forse però si tratta di un problema legato alla moltitudine di dati che gestisci: se acquisisci ogni due secondi (ma non è tanto per un convertitore USB-RS485?) mi sa che dopo un po' ti trovi tanti dati (quanti sono le macchine con le quali comunichi?).
[b:3ac1hika]Bimbone[/b:3ac1hika]
Grazie dell'interassamento!
la cartella macchine va copiata in c:\ poi ci sono tutte le sub vi
ho fatto alcune modifiche che mi hanno consigliato su lavag.org
trovi tutto qui:
http://lavag.org/topic/11153-software-p ... er-rs-485/
ciao e grazie ancora!
già... le macchine che comando sono 3, rispettivamente una ogni fase.
adesso è circa due ore che funziona senza blocchi
[b:3ac1hika]Magicbotolo[/b:3ac1hika]
Caspita,
effettivamente come ti hanno consigliato su Lava andrebbe modificata la struttura del programma inserendo, per esempio, le strutture per contenere i dati o creando qualche SubVI più grossi per raggrupparne altri.
Così a prima vista ti direi di condizionare il flusso dei dati con i fili: mi pare (ma dimmi pure se sbaglio perchè si tratta di un'impressione) che alcune operazioni (letture e scritture soprattutto) siano posizionate una di fianco all'altra anche per farle avvenire in sequenza. Se così fosse tieni presente che LabView lavora con un flusso di dati che non dipende necessariamente dalla posizione spaziale all'interno del Block Diagram.
Per essere sicuri che l'evento B accada dopo l'evento A è necessario collegare un filo in uscita da A verso l'ingresso di B (per esempio il filo dell'errore) o inserire i due eventi in una struttura.
Comunque continuo a guardare.
[b:3ac1hika]Bimbone[/b:3ac1hika]
ho notato che il blocco avviene in read from file forse perchè mentre salva i dati legge e come dici tu, avedo collegato il write al read con il filo dell'errore ottengo la sequenza dell'operazione in modo da non da non far accardere l'evento di read e di write assieme.
Per ora funziona, ha girato tutta la notte...
Non ho usato le strutture per contenere i dati ma i read e write from to file per avere un controllo wifi su rete ad-hoc con un secondo programma...
[b:3ac1hika]Magicbotolo[/b:3ac1hika]
Quindi se non l'hai già fatto io ti consiglierei di collegare i blocchi di lettura e scrittura con il filo di errore per dare un ordine di esecuzione ai blocchi.
Ho notato che se la variabile "campionamento" è nel giusto stato apri una serie di file, scrivi e poi chiudi i file stessi.
Ogni quanto avviene questa operazione? (scusa ma non sono riuscito a capire bene l'origine di questa operazione).
Se avviene spesso potresti aprire i file all'avvio del VI e chiuderli solo alla fine.
Questa soluzione alleggerisce il VI (l'operazione di apertura soprattutto è "lenta" in confronto alle altre): però ti obbliga a non poter cancellare il file mentre il VI è in esecuzione. Perciò se hai bisogno del file mentre il VI è in esecuzione (per esempio per leggerlo su un altro pc o con un altro programma) non devi cancellarlo ma copiarlo. Altrimenti il VI va in errore perchè non trova più il file (potresti mettere controlli aggiuntivi... ma allora tanto vale aprire e chiudere i file ogni volta).
[b:3ac1hika]Bimbone[/b:3ac1hika]
ciao!
ho collegato i blocchi read e write con il filo di errore e sta funzionando.
Ho notato che sono sparite alche altre anomalie.
La variabile campionamento serve per aggiugere una riga al file excel da un minimo di un secondo in avanti, per avere un report storico del funzionamento delle macchine.
adesso provo con le altre modifiche che mi hai suggerito.
l'operazione in sequenza con il filo di errore è stata provvidenziale!
grazie!
----------------------------------------
================================================================================
Informazioni Hardware
================================================================================
AUTORE: 1124
DATA :02/10/2009 - 08:47:17
----------------------------------------
Ciao
innanzitutto chiedo scusa perchè sono sicuro che questo argomento è già stato discusso, ma purtroppo ne ho perso traccia.
Già in passato avevo cercato, e trovato, un VI che fornisce le informazioni relative ai codici identificativi dei dispositivi hardware del computer su cui è in esecuzione. A causa di un mancato backup temo di averlo perduto.
Tale VI mi servirebbe per evitare la copia su più computer della versione eseguibile di un programma.
Riuscite darmi qualche suggerimento su dove recuperare questo VI o come riscriverlo?
Grazie per la collaborazione.
P.S.: la versione che uso è LV7.1.1
----------------------------------------
AUTORE: 301
DATA :05/10/2009 - 16:48:36
----------------------------------------
cosa intendi per codici identificativi?
----------------------------------------
AUTORE: 1124
DATA :07/10/2009 - 10:17:03
----------------------------------------
Ciao Aris
intendo ad esempio il MAC code delle schede di rete e il serial number del disco fisso: in generale qualunque dato che permetta di identificare univocamente la configurazione hardware su cui l'applicativo è in funzione.
----------------------------------------
AUTORE: 301
DATA :07/10/2009 - 13:20:37
----------------------------------------
Spero che questo ti basti......purtroppo qualche anima pia te lo deve salvare in 7....
----------------------------------------
AUTORE: 1124
DATA :07/10/2009 - 14:30:30
----------------------------------------
Grazie Aris
... anima pia cercasi ...
----------------------------------------
AUTORE: 43
DATA :08/10/2009 - 19:12:06
----------------------------------------
[quote="stefanog":12zikhx3]Grazie Aris
... anima pia cercasi ...[/quote:12zikhx3]
Scusa stefano,
il VI postato da Aris fa parte della solita libreria di NI che puoi scaricare [url=http://sine.ni.com/devzone/cda/epd/p/id/4935:12zikhx3]Qui[/url:12zikhx3] in versione x LabVIEW 6.0.
Leggi il ReadMe incluso nello Zippone.
Cmq il vi postato (senza la lvwutil.dll) è System Information.vi, dà informazioni su tipo di processore, memoria RAM libera e occupata, dimensione PageFile ecc.
Non penso ci siano quelle info che cercavi...
Mi ricordo cmq della discussione che avevi già fatto.
Penso si sia persa nel "cataclisma" successo l'anno scorso, grazie al quale abbiamo perso un sacco di discussioni carine.
Francamente non mi ricordo come andava a finire.
Se può interessare, usando la solita shell di windows (System Exec.vi) puoi inviare il comando stringa "ipconfig /all" come [command line], e leggere la stringa risposta in [standard output] (metti [run minimized] a True).
Parsando la risposta puoi utilizzare gli N phisical address che ti verranno restituiti (sui portatili di oggi per es. ce ne sono almeno 2 : una è la scheda di rete tradizionale e l'altra è quella wireless...)
bye
----------------------------------------
AUTORE: 1124
DATA :08/10/2009 - 22:32:44
----------------------------------------
Ciao Paracarro
grazie per il link al sito NI e per i suggerimenti.
Domattina vedo cosa riesco a recuperare di utilizzabile. In effetti avevo già pensato alla shell, ma durante i tentativi di utilizzo non ho usato l'opzione in True e la cosa non era presentabilissima.
Grazie ancora.
nice eve
----------------------------------------
AUTORE: 1124
DATA :09/10/2009 - 12:25:30
----------------------------------------
Ciao
in prima battuta allego una immagine di un semplice esempio di come utilizzare il suggerimento di Paracarro.
Vorrei comunque analizzare la possibilità di usare le windows API function utility.
Grazie a tutti.
A presto.
----------------------------------------
AUTORE: 487
DATA :12/10/2009 - 10:03:05
----------------------------------------
Ciao stefanog,
vedi un po' se ti può essere utile l'allegato.
Attualmente utilizzo la versione 2009 di labview ma sono sicuro di aver utilizzato sia il vi che l'activex già con la versione 7.0
----------------------------------------
AUTORE: 1124
DATA :14/10/2009 - 09:16:54
----------------------------------------
Ciao Coma
ho visto solo adesso il messaggio e ti ringrazio.
Vedo cosa riesco a combinare di meglio rispetto al primo esempio.
Stefano
----------------------------------------
AUTORE: 2550
DATA :19/10/2009 - 18:04:19
----------------------------------------
Ciao stefanog,
per leggere il seriale dell'hard disk ti allego questi 2 programmini trovati in rete.
Basta richiamarli con il systemexec e ti restituiscono una stringa con tutte le possibili informazioni rilevate dal pc.
In particolare, il compinfo analizza tutte le risorse del pc, mentre il diskid32 legge unicamente le informazioni dei drive collegati.
Se necessiti di leggere soltanto il seriale dell'hard disk, ti consiglio di utilizzare il diskid32 e di estrarre le informazioni dalla lettura effettuata direttamente dallo SMART dell'HD. Gli altri metodi a volte non rilevano niente
ciao
DVD
----------------------------------------
AUTORE: 1124
DATA :20/10/2009 - 07:57:50
----------------------------------------
Ciao e grazie a tutti.
Dopo un improvviso blackout stamane riprenderò le attività e vi farò sapere quale soluzione avrò adottato.
----------------------------------------
================================================================================
Eliminare elementi da un array
================================================================================
AUTORE: 2674
DATA :02/10/2009 - 11:44:16
----------------------------------------
Ciao a tutti,
per molti di voi questa domanda risulterà banale ma sono in panne...
ho un array di stringhe monodimensionale di dimensione 200 che chiamo Array 1, alcune di queste stringhe sono vuote.
Quello che vorrei è ottenere un altro array (Array 2) contenente solo stringhe non vuote .
Avete dei suggerimenti?
Grazie
Fede
----------------------------------------
AUTORE: 1050
DATA :02/10/2009 - 12:56:24
----------------------------------------
ecco un esempio
ciao
----------------------------------------
AUTORE: 2674
DATA :02/10/2009 - 13:22:04
----------------------------------------
Ok,
grazie mille!!!
Fede
----------------------------------------
================================================================================
Creare un sinonimo del nome dell'USB NI-VISA
================================================================================
AUTORE: 2523
DATA :03/10/2009 - 17:24:11
----------------------------------------
Ciao a tutti.
Scrivo per chiedervi aiuto in merito all'USB.
Ho realizzato un applicativo con LabView 8.6 per comunicare via USB
con un microcontrollore.
Nella tendina del control "USB RAW VISA Resorce name" compare il nome della porta usb da selezionare da parte dell'utente.
Il problema è che il nome che compare è complicato per un utente e vorrei quindi creare un alias, cioè un
sinonimo, più intuitivo per l'utente.
Usando Measurement & Automation Explorer sono riuscito a creare un sininimo, ma quando uso l'applicazione
su un altro PC, il problema si ripresenta.
Sapete come fare in modo che questo sinonimo del nome dell'USB rimanga indipendentemente dal PC su cui gira l'applicazione?
Grazie.
Saluti.
Chobin.
----------------------------------------
================================================================================
Versione LabvVIEW di un file
================================================================================
AUTORE: 123
DATA :04/10/2009 - 22:57:05
----------------------------------------
E' possibile da dentro a LabVIEW ricavare la versione di LABVIEW con cui sono stati scritti i files di una directory?
----------------------------------------
AUTORE: 2589
DATA :07/10/2009 - 17:10:39
----------------------------------------
Ciao,
potresti utilizzare l'invoke node (dalla palette Application Control) per la classe Application selezionando il metodo "Get VI version", che restituisce la versione di LabVIEW con cui è stato salvato il VI di cui passi il path.
Spero questo ti sia d'aiuto!
Ciao!
----------------------------------------
================================================================================
Utilizzare VI senza usb 6218
================================================================================
AUTORE: 2777
DATA :05/10/2009 - 12:51:07
----------------------------------------
Ciao a tutti,
ho un problema, dovrei lavorare a casa su alcuni VI da utilizzare per inviare dei segnali su una usb6218 però questa sta in laboratorio e non posso portarla con me.
come posso fare? senza la scheda mi da il seguente errore :
Possible reason(s):
Measurements: Device cannot be accessed. Possible causes:
Device is no longer present in the system.
Device is not powered.
Device is powered, but was temporarily without power.
Device is damaged.
Posso crearne un qualcosa di virtuale?
----------------------------------------
AUTORE: 1168
DATA :05/10/2009 - 15:00:22
----------------------------------------
Con le ultime release del MAX puoi simulare la presenza di un sacco di dispositivi...
----------------------------------------
AUTORE: 2777
DATA :05/10/2009 - 15:07:26
----------------------------------------
per favore potresti darmi qualche dritta ?
----------------------------------------
AUTORE: 1168
DATA :05/10/2009 - 15:16:22
----------------------------------------
Apri il max, vai sotto "devices and interfaces", clicchi col destro, "create new", "simulated DAQ-mx device".
Trovi il 6218 sotto la serie M.
Ripeto, la simulazione di dispositivi non presenti finiscamente mi sembra cominci con la release del MAX di un paio di anni fa...
Ciao ciaooooo
Pietro
----------------------------------------
AUTORE: 2777
DATA :05/10/2009 - 15:50:49
----------------------------------------
Grazie mille Pietro!!!!!
Mitico
Giak
----------------------------------------
================================================================================
inserimento immagini nel report
================================================================================
AUTORE: 2809
DATA :05/10/2009 - 15:30:10
----------------------------------------
Al momento son in grado di inserire all'interno del grafico le immagini dei grafici visualizzati nel pannello frontale. Vorrei inserire nell report anche delle parti, per esempio il titolo o la legenda, che però non vengono visualizzate sul pannello frontale. è possibile farlo?
----------------------------------------
AUTORE: 301
DATA :05/10/2009 - 17:41:21
----------------------------------------
una soluzione potrebbe essere quella di inserire in una parte del FP un grafico uguale a quello che ti interessa ma con le parti che vuoi in più.
----------------------------------------
================================================================================
Generatore di 5 volt attivato dal click su pulsante
================================================================================
AUTORE: 2777
DATA :05/10/2009 - 23:12:31
----------------------------------------
Ciao a tutti,
avrei bisogno di una informazione per il software LabVIEW
È possibile creare un generatore che genera 5 volt di ampiezza quando si preme un pulsante e si 0 volt quando si rilascia il pulsante stesso?
il dispositivo è un USB 6218.
Grazie in anticipo per il vostro aiuto
----------------------------------------
AUTORE: 482
DATA :06/10/2009 - 10:06:50
----------------------------------------
La risposta è ovviamente si.
Devi creare un ciclo , in cui semplicemente colleghi il pulsante a un case e se è true mandi un true al canale in uscita e viceversa se è false.
Poi se vuoi migliorare il tutto puoi utilizzare gli eventi in modo che il segnale alla scheda venga inviato solo in caso di pressione del tasto e non continuamente.
In alternativa agli eventi, puoi usare degli shift register per individuare il frnte di discesa e di salita dello stato del pulsante.
----------------------------------------
AUTORE: 2777
DATA :06/10/2009 - 10:40:14
----------------------------------------
ti chiedo un grosso favore, non è che potresti farmi vedere un esempio perchè ho iniziato da poco ad usare labview. se vuoi puoi inviarmelo anche via email. te ne sarei grato
----------------------------------------
AUTORE: 482
DATA :06/10/2009 - 17:46:43
----------------------------------------
eheh.....mi trovi combattuto... nel senso che qui siamo proprio alle basi e non so come risponderti.
Come filosofia, sul forum, diamo consigli, pareri ma non lavori fatti.
Quello che tu vuoi fare è una cosa veramente semplice e darti un esempio, vorrebbe dire darti la soluzione.
Io ti consiglierei di cominciare smanettando un po' con labview.
Segui queste istruzioni:
Crea un ciclo while con un pulsante all'interno, il quale è collegato ad un case.
Se il pulsnate è true succede qualcosa, se è false, succede qualcos'altro.
Per quanto riguarda invece la parte di comunicazioen con l'hardware, ti consiglio di usare la tecnica migliore che esista al mondo.
Apri gli esempi di labview, sono tantissimi e soddisfano un sacco di esigenze.
Tu non dovrai fare altro che prendere l'esempio che ti sembra piu' adatto, salvarlo dove ti torna comodo ed estrarne solo cio' che ti serve (o eventualmente aggiungere qualcosa).
----------------------------------------
================================================================================
Autoapprendimento
================================================================================
AUTORE: 1168
DATA :06/10/2009 - 11:49:46
----------------------------------------
Buongiorno a tutti.
Per giocare durante le mezz'ore di relax d'inverno, sto pensando a un progettino di controllo "autoapprendente" (non so se si definisce così).
Per il sistema ha una funzione di trasferimento impossibile e non conosciuta... o meglio con troppe variabili d'ingresso e pure non costante nel tempo per questioni di invecchiamento.
Per semplicità consideriamo un'automobile con un cambio a varioazione continua (in modo da non considerare le marce) e diciamo che vogliamo ottimizzare il consumo di carburante agendo sull'acceleratore.
Semplifichiamo ulteriormente: efficienza=qualchecosa*accelleratore*pendenzastrada
Spero che fino a qui ci siamo...
Ora... consideriamo una tabella di "qualchescosa" rispetto alle varie pendenze; con questa faccio una taratura spannometrica del sistema. E fino a qui è abbastanza facile.
La cosa bella sarebbe poi far percorrere alla macchina diverse strade e fare modificare in maniera automatica la tabella dei Qc (qualche cosa).
Che ne so... per approssimazioni successive magari... modifico qc'=qc+e e vedo se l'efficienza aumenta (continuo, sommo ancora "e" e salvo il nuovo qc') o diminuisce (sottraggo "e" volte) a parità di pendenza.
Qualcuno ha già sviluppato sistemi adattivi con Labview? C'è qualche altra strategia più furba?
Buona giornata
Pietro
P.S. Adesso che ci penso il progetto anche basato su un'automobile potrebbe avere un senso... se qualcuno brevetta un sistema del genere (se non esiste già) mi deve una birra!
----------------------------------------
================================================================================
Dubbio sull'esempio " Cont Gen Voltage Wfm-Int Clk-Variable
================================================================================
AUTORE: 2777
DATA :06/10/2009 - 18:48:22
----------------------------------------
Salve,
dal file di esempio " Cont Gen Voltage Wfm-Int Clk-Variable Rate " si può impostare un valore max ed un valore minimo ed infine l'ampiezza del segnale. inpostando ad esempio 5 come ampiezza ho un segnale ad onda quadra che va da - 5V a + 5V. a me interesserebbe inveceun'onda quadra da 0 a 5 V. avrei pensato di traslare l'onda di 2,5 V in sù in modo da imporre un'ampiezza di 2,5 ed un range che a da 2,5 a -2,5 volt. in questo modo si avrebbe l'onda desiderata. ma questo si può fare? grazie anticipatamente per il vostro prezioso aiuto
----------------------------------------
AUTORE: 43
DATA :09/10/2009 - 19:22:35
----------------------------------------
[quote="Giak":2wjehfut]Salve,
dal file di esempio " Cont Gen Voltage Wfm-Int Clk-Variable Rate " si può impostare un valore max ed un valore minimo ed infine l'ampiezza del segnale. inpostando ad esempio 5 come ampiezza ho un segnale ad onda quadra che va da - 5V a + 5V. a me interesserebbe inveceun'onda quadra da 0 a 5 V. avrei pensato di traslare l'onda di 2,5 V in sù in modo da imporre un'ampiezza di 2,5 ed un range che a da 2,5 a -2,5 volt. in questo modo si avrebbe l'onda desiderata. ma questo si può fare? grazie anticipatamente per il vostro prezioso aiuto[/quote:2wjehfut]
Non ho una scheda per riprodurre questo test, ma, cosa succede imponendo min=0 max=10V e amplitude=5V?
bye
----------------------------------------
================================================================================
Generazione onda arbitraria
================================================================================
AUTORE: 482
DATA :07/10/2009 - 17:17:47
----------------------------------------
...ma ciao!
premetto ch enon ho mai generato onde e quindi ho delle lacune sull'argomento, fato sta che ho un array di punti e so che tra questi punti intercorre tot tempo.
Vorrei mettere tutto su buffer e fare in modo che la mia scheda prenda sto array e cominci a riprodurre questo array in continuo con la mia scheda di output analogico ma qualcosa non va, non mi genera l'onda.
(Il task Testa 1 è un canale output RSE e la sched aè una 6221 37pin)
Allego il VI che ho sviluppato.
Cosa c'e' di sbagliato? tutto?
----------------------------------------
AUTORE: 482
DATA :07/10/2009 - 17:27:10
----------------------------------------
Allego anche l'immagine dell'errore che mi restituisce il blocchetto di verifica di "task done".
Questo è il testo che c'e' all'interno:
[code:1pzj1hka]Possible reason(s):
Measurements: The generation has stopped to prevent the regeneration of old samples. Your application was unable to write samples to the background buffer fast enough to prevent old samples from being regenerated.
To avoid this error, you can do any of the following:
1. Increase the size of the background buffer by configuring the buffer.
2. Increase the number of samples you write each time you invoke a write operation.
3. Write samples more often.
4. Reduce the sample rate.
5. Change the data transfer mechanism from interrupts to DMA if your device supports DMA.
6. Reduce the number of applications your computer is executing concurrently.
In addition, if you do not need to write every sample that is generated, you can configure the regeneration mode to allow regeneration, and then use the Position and Offset attributes to write the desired samples.
Task Name: Testa1[/code:1pzj1hka]
Se tolgo quel blocchetto dal ciclo non ho piu' nessun tipo di errore, ma ovviamente continua a non funzionare niente.
----------------------------------------
AUTORE: 2592
DATA :08/10/2009 - 10:37:26
----------------------------------------
Ciao geppo,
ho fatto girare il tuo codice con una scheda PCI 6035, quindi un po' più scadente della tua e non ho avuto alcun problema. Il codice mi pare corretto. L'unica cosa che ho cambiato è stato crearmi il canale con una "DAQmx Create Channel" invece di usare un task già configurato da MAX.
Ti invio il link di una KB sull'errore che riscontri tu:
http://digital.ni.com/public.nsf/allkb/ ... enDocument
Buona giornata,
Andrea
----------------------------------------
AUTORE: 482
DATA :08/10/2009 - 11:22:45
----------------------------------------
ho collegato un ingresso della scheda all'uscitae inserendo nel mio vi un semplice VI di lettura ho notato che l'uscita si ferma all'ultimo punto del buffer e continua a ripetere quel valore prima di dare l'errore.
Se provo a radoppiare la dimensione del buffer come suggerito dal tuo link, semplicemente avro' il doppio di punti sull'uscita ma di cui metà sono uguali all'ultimo punto della mia onda.
Praticamente quello che succede è che mentre io mi aspetto che il buffer venga ripetuto continuamente, questo viene eseguito una volta sola e poi mi da quell'errore...
Se nel daqmx Timing metto "finite samples" anzichè "continuous" non mi da nessun errore ma ovviamente il mio buffer viene eseguito una volta sola e poi va avanti a leggere
----------------------------------------
AUTORE: 2592
DATA :08/10/2009 - 11:32:51
----------------------------------------
Io ho lanciato il tuo VI e ho monitorato un ingresso dal MAX e vedo la forma d'onda che continua a ripetersi, due periodi di sinusoidi ed un'onda quadra fino a quando non premo stop.
Ti allego una immagino di quello che vedo.
----------------------------------------
AUTORE: 482
DATA :08/10/2009 - 11:46:49
----------------------------------------
puoi provare a mandarmi il tuo vi?
anche io inizialmente avevo usato il create task ma mi dava comunque questo errore..magari sbagliavo qualcosa...intanto mi perplimo...
----------------------------------------
AUTORE: 2592
DATA :08/10/2009 - 11:58:33
----------------------------------------
Eccolo, l'ho portato in 8.6.1 perchè almeno potevo usare l'hardware.
----------------------------------------
AUTORE: 482
DATA :08/10/2009 - 12:14:17
----------------------------------------
Non posso fare altro che chiedere scusa...ho provato il tuo VI e funzionava....
allora sono andato nel max, ho cancellato il task di scita, l'ho ricreato e anche il mio ha cominciato a funzionare.
Probabilmente avevo qualche settaggio sbagliato nel mio task, solo che avendolo cancellato, non sapro' mai cosa c'era di sbagliato
Comunque problema risolto. Grazie mille!
----------------------------------------
AUTORE: 2592
DATA :08/10/2009 - 12:20:07
----------------------------------------
Mi fa piacere, buona giornata!
----------------------------------------
================================================================================
P2P in Labview
================================================================================
AUTORE: 2435
DATA :08/10/2009 - 13:07:23
----------------------------------------
Ciao a tutti..
sapete darmi delle indicazioni per creare un P2P??
magari anche qualche codice sorgentee in altri linguaggi
grazie
----------------------------------------
AUTORE: 645
DATA :12/10/2009 - 14:54:52
----------------------------------------
Sembra che C# possa essere un buon punto di partenza:
http://community.visual-basic.it/alessa ... 21185.aspx
http://www.csharphelp.com/archives/archive261.html
----------------------------------------
================================================================================
master-client e gestione di + client
================================================================================
AUTORE: 2784
DATA :08/10/2009 - 13:07:46
----------------------------------------
salve..vorrei realizzare un programma in cui c'è un pc principale (master) e dei pc secondari (client). un file viene generato e salvato nel master mentre i client interrogano il master stesso per ottenere il file o parte di esso.
Come definisco il master e i client?
Devo realizzare due vi separati?Se si come li metto in comunicazione?
Il master può gestire più client e dare ad uno il controllo e mettere in pausa l altro?
Grazie ancora per le risposte
----------------------------------------
AUTORE: 43
DATA :08/10/2009 - 18:19:09
----------------------------------------
[quote="therealdeal":tqmcj867]salve..vorrei realizzare un programma in cui c'è un pc principale (master) e dei pc secondari (client). un file viene generato e salvato nel master mentre i client interrogano il master stesso per ottenere il file o parte di esso.
Come definisco il master e i client?
Devo realizzare due vi separati?Se si come li metto in comunicazione?
Il master può gestire più client e dare ad uno il controllo e mettere in pausa l altro?
Grazie ancora per le risposte[/quote:tqmcj867]
Ho il legittimo sospetto che Tu confonda la comunicazione tipo "Master-Slave" , con l'architettura "Client-Server"...
Hai guardato gli esempi di LabVIEW? secondo me è meglio iniziare una discussione da un esempio...
bye
----------------------------------------
AUTORE: 2784
DATA :08/10/2009 - 18:27:50
----------------------------------------
[quote="paracarro":3s6cmb74][quote="therealdeal":3s6cmb74]salve..vorrei realizzare un programma in cui c'è un pc principale (master) e dei pc secondari (client). un file viene generato e salvato nel master mentre i client interrogano il master stesso per ottenere il file o parte di esso.
Come definisco il master e i client?
Devo realizzare due vi separati?Se si come li metto in comunicazione?
Il master può gestire più client e dare ad uno il controllo e mettere in pausa l altro?
Grazie ancora per le risposte[/quote:3s6cmb74]
Ho il legittimo sospetto che Tu confonda la comunicazione tipo "Master-Slave" , con l'architettura "Client-Server"...
Hai guardato gli esempi di LabVIEW? secondo me è meglio iniziare una discussione da un esempio...
bye[/quote:3s6cmb74]
si è possibilissimo, infatti ora non ci sto capendo proprio nulla..per ora ho visto solo un esempio di passaggio file tra il server e il client...dove posso trovare qualcosa?
----------------------------------------
AUTORE: 43
DATA :08/10/2009 - 18:36:59
----------------------------------------
[quote="therealdeal":386u77n5]...per ora ho visto solo un esempio di passaggio file tra il server e il client...dove posso trovare qualcosa?[/quote:386u77n5]
Da un diagramma o FrontPanel LabVIEW scegli da menu
Help -> Find Examples
Cerca la parolina "server" oppure cerca negli esempi di "networking" (browse by task).
Cerca qualcosa che si avvicina a quello che hai in mente
bye
----------------------------------------
AUTORE: 2784
DATA :08/10/2009 - 19:05:47
----------------------------------------
[quote="paracarro":337ritgn][quote="therealdeal":337ritgn]...per ora ho visto solo un esempio di passaggio file tra il server e il client...dove posso trovare qualcosa?[/quote:337ritgn]
Da un diagramma o FrontPanel LabVIEW scegli da menu
Help -> Find Examples
Cerca la parolina "server" oppure cerca negli esempi di "networking" (browse by task).
Cerca qualcosa che si avvicina a quello che hai in mente
bye[/quote:337ritgn]
non so se mi hai capito cosa vorrei fare
ora cerco di vedere negli esempi
----------------------------------------
AUTORE: 2784
DATA :09/10/2009 - 11:56:28
----------------------------------------
allora..provo a spiegarmi:
devo gestire remotamente più strumenti attraverso due (o più computer) collegati in rete. Uno è il server che preleva i dati dagli strumenti e mette i risultati in un file txt, l altro (o gli altri) i client dovrebbero richiedere l invio del file txt creato ( o parte di esso a seconda di quando avviene la richiesta). L utente però necessita anche di un utilizzo remoto degli strumenti. il server deve quindi gestire con una condivisione più client.
Il server riceve dal client la richiesta di un operazione e successivamente il server spedisce al client i risultati dovuti alla sua richiesta. il client riceve e li salva.
ho trovato come esempi multiple connection server e multiple connection client 1 e client 2 che aprendo una porta stabiliscono una connessione mandando la data corrente ai dispositivi connessi con esso. Può essere questo un punto di partenza o no? Se sbaglio ditemelo.
----------------------------------------
AUTORE: 2784
DATA :11/10/2009 - 11:37:42
----------------------------------------
qualcuno può aiutarmi..ho trovato tra gli esempi ciò che mi serviva ma ora il problema è come il client prende il controllo del sistema? vorrei che il client visualizzi ciò che il sistema fa e che possa agire su dei parametri, i cui cambiamenti vengono salvati dal server su un file. come lo posso fare?
----------------------------------------
AUTORE: 2784
DATA :12/10/2009 - 13:31:17
----------------------------------------
vorrei sapere a cosa servono e come si usano le variabili condivise?
Posso utilizzare questo sistema affinchè un client possa comandare al server per lo scaricamento di un file o per una variazione di un parametro?
----------------------------------------
AUTORE: 645
DATA :12/10/2009 - 15:04:44
----------------------------------------
Facciamo un passo alla volta: tu hai uno strumento collegato ad un pc (PC1). Il pc può leggere dati da questo strumento e salvarli in un file di testo.
Il pc può anche inviare comandi allo strumento per modificarne il funzionamento.
Questa parte funziona?
Adesso diciamo che hai un altro pc (PC2) che vuole collegarsi al PC1 per sapere cosa sta succedendo allo strumento ed eventualmente vuole prendere il controllo di quest'ultimo.
Secondo me, almeno come prima battuta, puoi passare dal pannello WEB di LabView: sul PC1 pubblichi una pagina web (cerca in LabView come pubblicare una pagina web perchè non ho il programma sottomano e mi sfugge il comando esatto) e da remoto (PC2) puoi visualizzare questa pagina e, sempre tramite questa, prendere il controllo dello strumento.
Questa soluzione, a parer mio, funziona però molto bene se PC1 e PC2 sono in rete locale tra loro; se PC2 è collegato ad internet e arriva a PC1 tramite web allora i tempi di risposta (e controllo) possono allungarsi.
Un'altra soluzione può essere utilizzare DataSocket per leggere e scrivere valori: puoi leggere i dati da PC1 (in realtà mi sa che ti basta arrivare a leggere i file di testo salvati... e allora DataSocket non serve a molto) e inviare dati da PC2 a PC1 (puoi inviare stringhe che poi vengono usate come comandi da PC1 verso lo strumento collegato).
Poi ci sono le Shared Variables: puoi usare le NET (che io però non ho mai usato e non so indicartene il funzionamento... ma se cerchi nel forum ILVG e sul sito National secondo me trovi qualcosa) che dovrebbero comportarsi un po' come i DataSocket che ti ho scritto prima.
----------------------------------------
AUTORE: 2784
DATA :12/10/2009 - 15:24:46
----------------------------------------
[quote="MagicBotolo":1j0tjn2f]Facciamo un passo alla volta: tu hai uno strumento collegato ad un pc (PC1). Il pc può leggere dati da questo strumento e salvarli in un file di testo.
Il pc può anche inviare comandi allo strumento per modificarne il funzionamento.
Questa parte funziona?
Adesso diciamo che hai un altro pc (PC2) che vuole collegarsi al PC1 per sapere cosa sta succedendo allo strumento ed eventualmente vuole prendere il controllo di quest'ultimo.
Secondo me, almeno come prima battuta, puoi passare dal pannello WEB di LabView: sul PC1 pubblichi una pagina web (cerca in LabView come pubblicare una pagina web perchè non ho il programma sottomano e mi sfugge il comando esatto) e da remoto (PC2) puoi visualizzare questa pagina e, sempre tramite questa, prendere il controllo dello strumento.
Questa soluzione, a parer mio, funziona però molto bene se PC1 e PC2 sono in rete locale tra loro; se PC2 è collegato ad internet e arriva a PC1 tramite web allora i tempi di risposta (e controllo) possono allungarsi.
Un'altra soluzione può essere utilizzare DataSocket per leggere e scrivere valori: puoi leggere i dati da PC1 (in realtà mi sa che ti basta arrivare a leggere i file di testo salvati... e allora DataSocket non serve a molto) e inviare dati da PC2 a PC1 (puoi inviare stringhe che poi vengono usate come comandi da PC1 verso lo strumento collegato).
Poi ci sono le Shared Variables: puoi usare le NET (che io però non ho mai usato e non so indicartene il funzionamento... ma se cerchi nel forum ILVG e sul sito National secondo me trovi qualcosa) che dovrebbero comportarsi un po' come i DataSocket che ti ho scritto prima.[/quote:1j0tjn2f]
ok benissimo..e grazie dell aiuto.
Sto procedendo cosi..al pc1 arrivano i dati degli strumenti e su questo pc viene creato un file di testo. Quindi questo dovrebbe andare.
Ora dal PC2 io mi collego tramite web publishing tools come hai detto te e prendo il controllo dello strumento come hai detto te. I cambiamenti eseguiti dal pc2 vengono salvati nel file di testo del pc1. E questo può andare bene..
Ciò però non avviene in real-time ma in remoto, giusto?? Si forse funziona solo da rete locale.
Ora a me serve far questo. Fare in modo che il file di testo venga trasferito dal server al client posto a distanza e su altra rete:
Per fare questo ho visto degli esempi che dovrebbero far passare il file tramite connessione tcp/ip semplicemente fornendo l'indirizzo dove è posto il file.
Il problema è come faccio a fornire al pc1 dal pc2 l'istante in cui fornirmi il file. Potrei usare un controllo (un pulsante ad esempio) il quale una volta schiacciato dà il consenso al trasferimento del file...ma come faccio a fare in modo che il pc1 avvi il trasferimento se io schiaccio il pulsante sul pc2?
Inoltre vorrei far in modo che il client visualizzi i dati forniti dagli strumenti al server (ad esempio non so dei valori numerici) e che allo stesso tempo però io da client quindi da pc2 (quindi da pc a distanza) tali dati siano visualizzati magari cambiando un parametro (non so il tempo di acquisizione).
SPero di essermi spiegato
Vi ringrazio..
----------------------------------------
AUTORE: 2784
DATA :14/10/2009 - 18:55:10
----------------------------------------
----------------------------------------
AUTORE: 645
DATA :19/10/2009 - 15:33:00
----------------------------------------
Mi sa che per fare tutte queste cose forse può servire il Toolbox Internet di LabView.
Non saprei... Tempi di lavoro diversi tra PC1 e PC2 forse non si possono realizzare.
Se accedi al PC1 tramite Web Publishing puoi sostituirti al VI che fisicamente sta girando a bordo del PC1 stesso: quindi le modifiche che fai sul PC2 in realtà le stai facendo (fisicamente) anche sul PC1.
Ma potrei sbagliare... Altri consigli?
----------------------------------------
================================================================================
Problema eseguibile su sistema operativo di lingua diversa
================================================================================
AUTORE: 2624
DATA :08/10/2009 - 14:42:54
----------------------------------------
Ciao!
Ho creato l'eseguibile del mio VI e tutto funziona bene se installato windows in italiano, mentre su windows in finlandese niente da fare.
L'errore che restituisce: non riesce a scrivere e leggere nei file contenuti in una cartella che deve stare su C:\
So windows ita tutto funziona regolarmente.
Le path che utilizzo sono costanti.
Forse quando faccio l'eseguibile l'applicazione utilizza cartelle di sistema di nome divero?
La cartella su C:\ è libera, non protetta da scittura.
Forse dovrei modificare labview.ini? ma come?
----------------------------------------
AUTORE: 43
DATA :08/10/2009 - 18:15:10
----------------------------------------
[quote="bimbone":2z1kk8hm]...Ho creato l'eseguibile del mio VI e tutto funziona bene se installato windows in italiano, mentre su windows in finlandese niente da fare.
L'errore che restituisce: non riesce a scrivere e leggere nei file contenuti in una cartella che deve stare su C:\
So windows ita tutto funziona regolarmente.
Le path che utilizzo sono costanti.[/quote:2z1kk8hm]
Bello schifo!!! Non l'hai specificato ma penso siano path assoluti!!!!!
[quote="bimbone":2z1kk8hm]Forse quando faccio l'eseguibile l'applicazione utilizza cartelle di sistema di nome divero?[/quote:2z1kk8hm]
mah! A me viene in mente la cartella "C:\Programmi" nella versione windows ITA e la medesima diventa "C:\Program Files" nella versione ENG. Può bastare come sospetto.
[quote="bimbone":2z1kk8hm]La cartella su C:\ è libera, non protetta da scittura.
Forse dovrei modificare labview.ini? ma come?[/quote:2z1kk8hm]
Esiste in labview la possibilità di creare le cartelle...Ma ti conviene scrivere meglio il tuo SW in modo che sia "indipendente" dai path assoluti!!!!!!
bye
----------------------------------------
AUTORE: 2624
DATA :08/10/2009 - 20:26:03
----------------------------------------
si le path sono assolute.
Ho messo la cartella in c:\ e scelto le path assolute in modo da rendere un po' più semplice per gli utenti finali il software, da non dover scrivere i percorsi dei file.
Non capisco l'indipendenza da path assolute, c:\ dovrebbere eistere su tutti i pc e su quello che si pianta c'è.
Un altra cosa, la cartella in win ita c:\programmi che come tu dici in win eng diventa c:\program files e chissa in finladese??? questo mi coporta una variazione che dovrei fare io su labviw.ini???
----------------------------------------
AUTORE: 43
DATA :08/10/2009 - 22:06:20
----------------------------------------
[quote="bimbone":2bt98mgu]si le path sono assolute.[/quote:2bt98mgu]Aborro!!!!
[quote="bimbone":2bt98mgu]Ho messo la cartella in c:\ e scelto le path assolute in modo da rendere un po' più semplice per gli utenti finali il software, da non dover scrivere i percorsi dei file.[/quote:2bt98mgu]Sì, certo . A parte problemi di installazione come il Tuo... appunto! Cmq. anche i path assoluti vanno scritti in un file di configurazione e caricati da esso in modo che non si debba "rifare" l'exe ed il suo installer xchè si vuole cambiare uno stupidissimo path.
Path assoluti sì, se serve davvero, e se sono caricati da file di cfg, ma MAI path assoluti nel codice(diagramma), se non per piccoli VI di esempio. MAI FARE PROGETTI SW IMPORTANTI CON PATH ASSOLUTI SPARSI NEL CODICE SORGENTE!!!
[quote="bimbone":2bt98mgu]Non capisco l'indipendenza da path assolute, c:\ dovrebbere eistere su tutti i pc e su quello che si pianta c'è.[/quote:2bt98mgu]+ partizioni possono essere "bootabili" sullo stesso disco e quindi si deve considerare come "disco logico principale" una lettera diversa da "C:\"! Inoltre l'installer, consiglia un percorso di installazione dell'applicazione e quindi può essere installata ovunque, mentre file di log o dati possono essere salvati anche (meglio!) su dischi diversi dal disco c: ...
[quote="bimbone":2bt98mgu]Un altra cosa, la cartella in win ita c:\programmi che come tu dici in win eng diventa c:\program files e chissa in finladese???[/quote:2bt98mgu] cerrto! la cartella c:\windows può essere cambiata al momento dell'installazione (ho visto re-installare windows sulla stessa partizione senza formattare nulla e lasciando inalterata "c:\windows" non +in uso, tutto in una altra cartella!). Non sono riuscito a trovare il corrispettivo finlandese di "program Files" ma, cercando qua e là o visto che la cartella "Document and Settings" in win-tedesco è "Dokumente und Einstellungen". Mah! sarà vero?
[quote="bimbone":2bt98mgu] questo mi coporta una variazione che dovrei fare io su labviw.ini???[/quote:2bt98mgu]
beh! al termine dell'installazione del tuo eseguibile, il file "labview.ini" corrisponde a "<nome eseguibile>.ini" e si trova nella cartella di installazione di "<nome eseguibile>.exe"
Per fare le cose decentemente devi , da programma, capire se Ti trovi in ambiente di sviluppo o se è in esecuzione il Tuo exe.(vedi [url=http://ilvg.it/forum/viewtopic.php?f=1&t=4237:2bt98mgu]questa discussione[/url:2bt98mgu]).
Nel caso si tratti del Tuo exe, usi la proprietà dell'applicazione App.path (se fosse in esecuzione LabVIEW.exe otterresti il path di installazione di labview.exe).
Da questo path "in giú" puoi crearti le Tue sottodir e i Tuoi file. Te lo consiglio soprattutto per i file di configurazione dell'applicazione. I path dove memorizzare i Dati dell'applicazione potrebbero essere caricati da un file di configurazione essi stessi.
----------------------------------------
AUTORE: 482
DATA :09/10/2009 - 10:16:02
----------------------------------------
[quote="bimbone":10y2akdd]
L'errore che restituisce: non riesce a scrivere e leggere nei file contenuti in una cartella che deve stare su C:\[/quote:10y2akdd]
Potresti postare l'errore esatto?
Perchè come lo hai scritto qui, non sembra un problema di esistenza del path, ma di permessi.
Porta qui il path dove vuoi andare a scrivere (eventualmente tutti i path che utilizzi, usa la funzione find e cerchi i path costant), poi fai uno screenshot dell'esplora risorse finlandese per vedere se quei percorsi esistono e unoscreenshot dell'errore esatto.
----------------------------------------
AUTORE: 2624
DATA :09/10/2009 - 11:31:51
----------------------------------------
Ecco l'errore che restituisce:
Error 1 occurred at scan from file (arg 18) in read time table all with program.vi
read time table all with program.vi è una subvi.
in più allego la cartella dove vado a scrivere i parametri di lavoro allocata in c:\
e intanto cerco di procurarmi win xp finnish
grazie ragazzi!
----------------------------------------
AUTORE: 482
DATA :09/10/2009 - 11:58:57
----------------------------------------
Hai allegato una cartella zeppa di file ma niente che possa aiutarci a risolvere il tuo problema se non sappiamo cosa fa il vi.
allega ALMENO "read time table all with program.vi " cosi' possiamo vedere che cosa dovrebbe fare. Se c'e' anche qualche vi che gli serve o che gli passa qualche parametro fondamenale, metti pure quello.
----------------------------------------
AUTORE: 2624
DATA :09/10/2009 - 13:30:17
----------------------------------------
tutto il software lo trovi qui funzionante anche se con qualche errore
http://lavag.org/top...nverter-rs-485/
altrimenti potrei ricaricarlo, quello corretto, di la su lavag che accetta fino a 10mb
grazie,
Marco
----------------------------------------
AUTORE: 2624
DATA :09/10/2009 - 13:32:48
----------------------------------------
già.......
quello che fa il software lo trovi postato qui
viewtopic.php?f=1&t=4241
----------------------------------------
AUTORE: 482
DATA :09/10/2009 - 15:23:11
----------------------------------------
non riesco a scaricarlo.
Comunque non mi serve tutto ilsoftware ma solo il vi incriminato.
Per postarlo correttamente, fai girare il tuo software fin quando da errore.
Al che prendi il vi incriminato vai su edit: make current values default e poi lo salvi con un altro nome e in un altra posizione, in modo d anon modificare quello originale.
poi posti il file appena salvato e i suoi eventuali subvi, tutto il resto non mi serve.
----------------------------------------
AUTORE: 2624
DATA :09/10/2009 - 16:43:23
----------------------------------------
Ok intanto vi ringrazio ragazzi!
Il mio problema è che l'eseguibile funziona benissimo su win ita, però io qui non ho laversione finlandese di xp e non posso fare il test mi baso solo su quello che sta succedendo lassù
Comunque in settimana mi arriva un pc con xp finnish così vedo di persona il problema e vi posto il tutto
grazie,
Marco
----------------------------------------
AUTORE: 482
DATA :09/10/2009 - 17:51:27
----------------------------------------
Ho dato un occhiata al tuo programma.
Se vuoi un consiglio, fai una cosa:
Inserisci in quel subvi un case che , in caso di errore, ti salva su file di testo il percorso del file che avrebbe dovuto leggere.
In questo modo potrai leggere quel file e andare a verificare o a far verificare al tuo corrispondente in finlandia, se quel file esiste.
----------------------------------------
AUTORE: 2624
DATA :12/10/2009 - 16:44:14
----------------------------------------
Ragazzi problema risolto!
Grazie a tutti della collaborazione, il problema stava nelle "opzioni internazionali e della lingua" sotto pannello di controllo di windows xp
quindi mi ricollegherei questo post a "maledetto punto decimale"
viewtopic.php?f=1&t=3808&p=16803&hilit=punto+decimale#p16803
ciao,
Marco
----------------------------------------
AUTORE: 482
DATA :13/10/2009 - 10:32:33
----------------------------------------
cioè?
Che c'entrano le opzioni internazionali e il punto decimale con la presenza/assenza di un file!??!
----------------------------------------
AUTORE: 2624
DATA :13/10/2009 - 11:13:30
----------------------------------------
si perchè quei file sono con estensione xls, ho scelto quella per renderli modificabili in excel senza la necessità di labview, e in quei file uso la virgola come separatore decimale mentre i finladesi no.
Infatti lv dava un problema alle subvi ma quelle subvi andavano ad aprire i file incriminati causando il blocco.
Magari con qualche modifica si può adattare il software a so win di lingua diversa senza alterare le opzioni internazionali di windows.
----------------------------------------
AUTORE: 43
DATA :13/10/2009 - 17:04:36
----------------------------------------
[quote="bimbone":3l5nuu8i]si perchè quei file sono con estensione xls, ho scelto quella per renderli modificabili in excel senza la necessità di labview, e in quei file uso la virgola come separatore decimale mentre i finladesi no.
Infatti lv dava un problema alle subvi ma quelle subvi andavano ad aprire i file incriminati causando il blocco.
Magari con qualche modifica si può adattare il software a so win di lingua diversa senza alterare le opzioni internazionali di windows.[/quote:3l5nuu8i]
Utilizzando LabVIEW stesso o un "text editor" sostituisci tutte le virgole "," che separano la parte intera dai decimali di tutti i numeri nei file di config.e sostituiscili con il punto "."
In LabVIEW, uncheck/deseleziona/disabilita da menu
Tools -> Options... -> Front Panel -> Use localized decimal point
ciò comporta una modifica del file LabVIEW.ini
Per il Tuo exe ricorda di mettere nell'apposito .ini la entry:
useLocaleDecimalPt=False
L'argomento in questione è già stato ampiamente trattato [url=http://ilvg.it/forum/viewtopic.php?f=1&t=3808&p=16768:3l5nuu8i]qua[/url:3l5nuu8i] [url=http://ilvg.it/forum/viewtopic.php?f=1&t=939&p=3661:3l5nuu8i]qua[/url:3l5nuu8i] e [url=http://ilvg.it/forum/viewtopic.php?f=1&t=3529:3l5nuu8i]qua[/url:3l5nuu8i].
Cmq sia avendo dato un'occhiata al Tuo SW, posso dire che nonostante l'interfaccia utente sia gradevole, il codice contiene troppe duplicazioni di parti di codice, troppe costanti soprattutto di tipo path e anche un po' di inefficienze, tanto che qualcuno su LAVA ironizzava dicendo che si trattava di uno "spaghetti" VI.
bye
----------------------------------------
AUTORE: 2624
DATA :14/10/2009 - 08:45:26
----------------------------------------
già... se puoi elencare le inefficenze e migliormenti da fare sarebbe utilissimo
----------------------------------------
================================================================================
cambiare il rate di un output
================================================================================
AUTORE: 482
DATA :08/10/2009 - 16:34:51
----------------------------------------
...ma ciao!
rieccomi qui.
sto sviluppando un aplicazioen che genera in uscita da una scheda analogica, una forma d'onda arbitraria.
quest aforma d'onda è composta da TOT punti.
Conosco il sample/sec e ovviamente il sample time (l'inverso).
Ogni onda che genero ha un suo valore di sample/sec a seconda di come ho costruito l'onda.
Se volessi forzare il rate ad un diverso valore, che funzione devo usare per interpolare i vari punti e creare quelli che mancano o eliminarne alcuni a seconda che io aumenti o diminuisca il rate? (N.B.non è un onda regolare).
----------------------------------------
AUTORE: 43
DATA :08/10/2009 - 18:08:57
----------------------------------------
[quote="gepponline":2u3kjt4a]...ma ciao!
rieccomi qui.
sto sviluppando un aplicazioen che genera in uscita da una scheda analogica, una forma d'onda arbitraria.
quest aforma d'onda è composta da TOT punti.
Conosco il sample/sec e ovviamente il sample time (l'inverso).
Ogni onda che genero ha un suo valore di sample/sec a seconda di come ho costruito l'onda.
Se volessi forzare il rate ad un diverso valore, che funzione devo usare per interpolare i vari punti e creare quelli che mancano o eliminarne alcuni a seconda che io aumenti o diminuisca il rate? (N.B.non è un onda regolare).[/quote:2u3kjt4a]
Mi sembra che di questo problema avevamo dibattuto [url=http://ilvg.it/forum/viewtopic.php?f=1&t=4167:2u3kjt4a]qua[/url:2u3kjt4a]
Secondo me è cmq conveniente usare sempre lo stesso numero di punti e non variare il rate, per cui se il tuo segnale ha periodo P mentre il segnale "modificato" ha periodo 3P basta fare in modo che la prima forma d'onda sia anch'essa lunga 3P (ripeti i punti 3 volte, 3 periodi consecutivi), di modo che ad ogni cambiamento non vari la freq. ed il numero di punti.
Vabbè mi sono incartato un po' , però spero che Tu mi abbia capito!
bye
----------------------------------------
AUTORE: 482
DATA :09/10/2009 - 09:57:56
----------------------------------------
provo a fare un esempio:
io ho unsegnale cosi' composto:
1 sinusoide di lunghezza 1 sec composta da 128 punti
1 triangolare di lunghezza 3 sec composta sempre da 128 punti.
al momento ho fatto in modo che in base alla prima onda, si sistemino anche le successive, quindi la triangolare non sarà composta da 128 punti ma da 128/3, in modo da rispettare il frame rate della prima parte di segnale.
in questo modo alla fien delal costruzione del segnale io avro' X punti che lo compongono.
STavo valutando di fare un ragionamento diverso invece e sfruttare al massimo il buffer in uscita e quindi fare in modo che indipendentemente dal disegno del segnale,esso sia sempre composto da 4000pt.
Quindi il segnale che prima era composto da 128+(18/3) ad un rate= y diventi un segnale composto da 4000pt e tra un punto e l'altro ovviamente ci sia molto meno tempo.
----------------------------------------
AUTORE: 645
DATA :12/10/2009 - 14:57:32
----------------------------------------
In pratica vuoi ricampionare un segnale a frequenza superiore aumentandone i punti e poi inviare questo nuovo segnale in output?
----------------------------------------
AUTORE: 482
DATA :12/10/2009 - 16:01:01
----------------------------------------
esatto
----------------------------------------
================================================================================
Creazione Etichetta
================================================================================
AUTORE: 2435
DATA :08/10/2009 - 17:35:13
----------------------------------------
Ciao a tutti...
Dovrei creare una etichetta e poi stamparla....
non saprei da dove partire..
sapete darmi un aiuto???
grazie
----------------------------------------
AUTORE: 43
DATA :08/10/2009 - 17:59:32
----------------------------------------
[quote="nic81_2007":29m6u5l0]Ciao a tutti...
Dovrei creare una etichetta e poi stamparla....
non saprei da dove partire..
sapete darmi un aiuto???
grazie[/quote:29m6u5l0]
A domanda ultragenerica corrisponde una risposta ultragenerica.
Usa una stampante Zebra con software a corredo.
P.S.: Se vuoi fare qualcosa con LabVIEW indica la versione che utilizzi, le librerie a disposizione e i "requisiti minimi", come il sistema che hai a disposizione, l'eventuale stampante.
Un minimo di dettaglio!
bye
----------------------------------------
AUTORE: 2435
DATA :08/10/2009 - 18:43:36
----------------------------------------
Scusate...
Allora:
Sto sviluppando un software che collauda dei motori.
Alla fine del collaudo di ciascun motore dovrei crearmi una etichetta come quella sul file allegato.
Ovviamente il marchio CE lo carico da file.
Le scritte invece dipendono dall'esito del collaudo.
Non saprei proprio da dove iniziare.
----------------------------------------
AUTORE: 43
DATA :08/10/2009 - 18:50:31
----------------------------------------
[quote="nic81_2007":974i2j5l]Allora:
...
Non saprei proprio da dove iniziare.[/quote:974i2j5l]
Ma [b:974i2j5l]DEVI[/b:974i2j5l] usare LabVIEW per fare questa stampa? che versione?
Ce l'hai già la stampante? Se sì,che stampante è? Se no, devi decidere che stampante comprare?
bye
----------------------------------------
AUTORE: 2435
DATA :08/10/2009 - 19:05:59
----------------------------------------
scusa..
ho Labview 8.6.1
davo per scontato che:
-il layout dell'etichetta devo crearlo io in labview.
Quindi devo crearmi una immagine in LV che ha le stesse sembianze dell'etichetta allegata precedentemente??
Come posso fare??
----------------------------------------
AUTORE: 1124
DATA :08/10/2009 - 22:50:25
----------------------------------------
Ciao
io preparerei un VI il cui FrontPanel sia identico (molto simile è più realistico) al lay-out della etichetta che devo produrre.
Nel FP inserirei gli indicatori, immagino stringhe, a cui passare i valori ottenuti dai test e lo stamperei,cioè invierei direttamente alla stampante il FP così completato. Ovviamente cercando di adattare i "custom margins" (File/PageSetup/custom margins) al tipo di stampante in uso per ottenere il risultato più soddisfacente senza tanti sprechi.
----------------------------------------
AUTORE: 2435
DATA :12/10/2009 - 18:22:24
----------------------------------------
Ciao...
ho fatto un esempietto banale...
avete qualche suggerimento per migliorarlo???
come faccio a centrare la stampa nel foglio??
grazie
----------------------------------------
AUTORE: 43
DATA :13/10/2009 - 18:50:38
----------------------------------------
[quote="nic81_2007":1oyfwmwi]Ciao...
ho fatto un esempietto banale...
avete qualche suggerimento per migliorarlo???
come faccio a centrare la stampa nel foglio??
grazie[/quote:1oyfwmwi]
allora per l'impaginazione dipende dalla stampante.
Ho lavorato per Te.
Innanzitutto ho cercato un servizio di OCR online:
Ho trovato questo
http://novadys.dnsalias.com/Default.aspx
che a fronte di una bitmap fornisce un servizio gratuito di riconoscimento testo.
FineReader riconosce anche la font utilizzata, e questo era l'obbiettivo primo che mi ero posto.
Ho fornito una immagine tif dell'etichetta ed ho ottenuto un file xml. Li trovi allegati nello zippone finale
Da qui ho capito che tutte la Font usata per tutte le scritte sull'etichetta era "Thaoma".
Quindi, mettendo come sfondo la bitmap che hai fornito, ho costruito il VI di stampa in LV 7.1
ecco il risultato
[attachment=0:1oyfwmwi]etichetta.zip[/attachment:1oyfwmwi]
Clickando nell'angolo in alto a dx del Front Panel apparirà come sfondo la bitmap originale
La cosa che meno mi è piaciuta della Tua soluzione è il fatto che non hai usato una font specifica, perchè i testi erano scritti usando "Application Font":
questo spesso capita anche a chi costruisce l'interfaccia HMI(cioè i Front Panel dell'applicazione finale) senza curarsi del fatto che le font di windows di default utilizzate sul PC nel quale viene installata l'applicazione possono essere diverse da quelle usate sul PC di sviluppo.
Il risultato è che fra una scritta potrebbe apparire + grande o + piccola rispetto all'originale e quindi risultare illeggibile o sovrapporsi ad altri controlli nel Front Panel..
bye
----------------------------------------
AUTORE: 2435
DATA :14/10/2009 - 09:58:41
----------------------------------------
Ciao..
utille il riconoscimento di testo da bitmap,grazie
----------------------------------------
================================================================================
NI-Motion Assistant errore nel generare codice Labview
================================================================================
AUTORE: 2802
DATA :08/10/2009 - 19:01:48
----------------------------------------
Ho generato uno step (Straight line move) mediante NI-Motion assistant. Cliccando su tools--> generate code--> labview diagram.
Il risultato è nel seguente messaggio di errore:
"The was an Error during Code Generation. Possible reasons are:
1: NI Motion Templates not found
2: User has cancelled Code Generation"
Non so come risolvere questi problemi. Ho aperto labview 8.6 ,cliccato su "VI from template" ma non ho trovato il template NI Motion. Non so perchè non ci sia nè dove trovarlo.
Ho trovato 2 forum sul sito della NI che trattavano il mio stesso problema ma la soluzione da loro proposta non mi consente di risolvere il problema.
Spero possiate aiutarmi in qualche modo.
Grazie
----------------------------------------
================================================================================
Come eliminare il bordo
================================================================================
AUTORE: 2435
DATA :09/10/2009 - 11:10:04
----------------------------------------
Ciao a tutti,
vorrei sapere se possibile come si può rendere invisibile il bordo dei controlli..
es:string indicator
grazie
----------------------------------------
AUTORE: 1050
DATA :09/10/2009 - 11:47:41
----------------------------------------
Ciao,
non tutti i controlli di tipo stringa ti permettono di "nascondere" o meglio rendere "trasparente" il bordo.
Usa i Classic Control e con il Set Color della Tool Palette (in pratica il pennello) seleziona la modalità "transparent"
Forse dall'immagine è più chiaro
ciao
----------------------------------------
================================================================================
Timed Loop - anticipare il primo ciclo
================================================================================
AUTORE: 2775
DATA :09/10/2009 - 17:30:48
----------------------------------------
Ciao a tutti,
ho una domanda sull'utilizzo dei timed loop.
Nel mio VI devo effettuare una lettura di un array di byte tramite Modbus seriale, una volta ogni 5 minuti.
Per far ciò utilizzo un timed loop con "PERIOD" pari a 5 minuti (60000 msec).
Così facendo la prima lettura l'avrò però solo 5 minuti dopo l'avvio del VI.
Esiste un modo "elegante" per forzare l'avvio del primo ciclo del Timed loop all'avvio del Vi( e mantenere tutti quelli successivi ogni 5 minuti)?
Lo so che potrei inserire una sequence e fare una lettura prima di avviare il timed loop ma vorrei evitarlo.
Offset negativo? Forzare la timed source a 4 minuti e 59?
Ringrazio anticipatamente,
ciao
----------------------------------------
AUTORE: 927
DATA :16/11/2009 - 11:40:55
----------------------------------------
Normalmente il comportamento di default è proprio quello che vuoi tu. Forse hai messo un Offset/Phase diverso da 0?
----------------------------------------
AUTORE: 645
DATA :16/11/2009 - 12:32:34
----------------------------------------
Oppure puoi fare la prima lettura fuori dal ciclo prima di entrare.
----------------------------------------
AUTORE: 129
DATA :09/12/2009 - 23:31:07
----------------------------------------
se i 5 sec li imposti solo cambiando il periodo il comportamento è quello che desideri tu, esegue il codice quindi attende 5sec. da qualche parte c'è qualcosa che non va, prova a postare la parte del timed while loop.
----------------------------------------
================================================================================
gestine numeri casuali
================================================================================
AUTORE: 2822
DATA :09/10/2009 - 22:18:55
----------------------------------------
ciao a tutti, vorrei fare un vi che mi estragga 10 numeri casuali compresi tra 1 e 20
io ho usato i numeri casuali, li ho moltiplicati per 20, sottratto 20 e preso il valore assoluto, il tutto eseguito per 10 volte che mi andava a mettere i numeri in un array
ma adesso ho un problema, anzi un paio di problemi che non riesco a risolvere...
il primo è che possono capitare numeri ripetuti, il secondo è che può capitare lo 0...
qualcuno può aiutarmi a risolverli??
grazie
----------------------------------------
AUTORE: 2821
DATA :10/10/2009 - 18:11:10
----------------------------------------
io ho fatto in questo modo... non sono un esperto, ma mi pare che funziona...
ciao
----------------------------------------
AUTORE: 2822
DATA :11/10/2009 - 02:28:32
----------------------------------------
io sono un novellino del campo, però sei stato bravo, funziona....
adesso me lo devo studiare per capire come funziona e magari implementare qualche funzione in più
GRAZIE!!!!!
----------------------------------------
================================================================================
conversione stringa-numero
================================================================================
AUTORE: 2712
DATA :12/10/2009 - 12:02:02
----------------------------------------
salve a tutti
stavolta ho un problema con la conversione di una stringa in un numero.
utilizzo il blocchetto Fract/Exp String To Number
la stringa di prova è : "$ 5.321#"
in effetti la conversione la riesco a fare correttamente solo se ho la presenza della virgola ($5,321#) nella stringa e nn del punto
come posso risolvere????
ps: naturalmente sn costretto adusare il punto nn posso scegliere
----------------------------------------
AUTORE: 43
DATA :12/10/2009 - 13:02:48
----------------------------------------
[quote="off":22a7n1q7]...stavolta ho un problema con la conversione di una stringa in un numero.
utilizzo il blocchetto Fract/Exp String To Number
la stringa di prova è : "$ 5.321#"
in effetti la conversione la riesco a fare correttamente solo se ho la presenza della virgola ($5,321#) nella stringa e nn del punto
come posso risolvere????
ps: naturalmente sn costretto adusare il punto nn posso scegliere[/quote:22a7n1q7]
use system decimal point = False
nella parte superiore del "blocchetto" [Fract/Exp String To Number] c'è un ingresso booleano che vale True di default.
Tasto dx del mouse su quell'ingresso poi "Create" -> "Constant" e fissare il valore a False.
Inutile dirti che questo argomento è ampiamente trattato in questo Forum. Cerca nell'help di LabVIEW e nel Forum "Localized Decimal point"
bye
----------------------------------------
================================================================================
come si crea un file di testo temporaneo?
================================================================================
AUTORE: 2784
DATA :14/10/2009 - 10:27:58
----------------------------------------
salve ragazzi vorrei un file di testo che una volta inviato ad un client venga riinizializzato e svuotato dei contenuti. In pratica ad una richiesta del client con una acquisizione su tale file si allega i dati necessari fino alla richiesta.
Provo a spiegarmi..il server esegue l acquisizione di dati e li salva su un file, si collega un client che "vede i risultati" e decide di scaricare un file da quando si è connesso fino ad un segnale di stop (ad esempio prima di scollegarsi). Stavo provando cosi come nell allegato ma innanzitutto il file chiamato temp è uguale al file chiamato file (che dovrebbe essere il totale dell'acquisizione) e come si nota l acquisizione è bloccata mentre c'è il tempo di acquisizione dei risultati. Vorrei pure che l acquisizione non si fermasse (per l intervallo di campionamento che serve solo a definire i valori che vanno salvati sul file).
Ringrazio per l aiuto
----------------------------------------
================================================================================
Generatore di tensione + led per indicare stato alto o basso
================================================================================
AUTORE: 2777
DATA :14/10/2009 - 13:48:06
----------------------------------------
Ciao a tutti,
in merito all'esempio Cont Gen voltage Wfm-int clk variable rate vorrei che quando l'onda quadra superi i 2,5 volt si accendesse un led.
ho provato a fare in questo modo come riportato in figura, all'uscita della porta "Greater" ho messo un controllo e scorrendolo la logica funziona, ma collegandolo al led questo prende come riferimento solo il primo elemento dell'array quindi rimane sempre acceso.
invece il led dovrebbe accendersi e spegnersi in base al grafico ma soprattutto al segnale emesso all'uscita della usb 6218. come posso fare ?
Qualcuno ha qualche altra idea per potermi aiutare? un registro a scorrimento ( la butto lì ) ? ho anche trovato un esempio "limit test measurement" che potrebbe fare al mio caso ma ho un problema a collegarlo con un generatore dc .... come posso fare?
Grazie per il vostro prezioso aiuto
----------------------------------------
AUTORE: 927
DATA :16/11/2009 - 11:34:54
----------------------------------------
Se vuoi che il led cambi nel tempo deve stare anche lui dentro al ciclo temporizzato. Attualmente aspetta che il For termini per poi prendere solo l'ultimo valore dell'indice in uscita.
----------------------------------------
================================================================================
XY Graph con Multiscala??
================================================================================
AUTORE: 2435
DATA :14/10/2009 - 13:55:26
----------------------------------------
Ciao...
devo visualizzare "N" grandezze sull'asse delle Y in funzione del tempo(asse X).
Sapete dirmi se il XY Graph prevede una proprieta multiscala???
grazie
----------------------------------------
AUTORE: 660
DATA :15/10/2009 - 13:29:40
----------------------------------------
si, vai nelle proprietà del grafico ed associ tutte le tue curve alle adeguate scale.
Max
----------------------------------------
================================================================================
Acquisizione Volt su resistenza con 6218 + rumore
================================================================================
AUTORE: 2777
DATA :15/10/2009 - 10:04:12
----------------------------------------
Salve a tutti,
sto acquisendo un segnale in Volt da una resistenza con una scheda usb6218. la resitenza è collegata ad una fotocellula ad infrarosso. in base alla tensione letta vedo se c'è un ostacolo o meno.
il problema è che ho un rumore sul segnale e ciò mi da problemi. è possibile rimuoverlo? se sì, come? allego alcune immagini.
dimenticavo, collegandolo ad un generatore di tensione dc il segnale è pulito.
Grazie per il vostro prezioso aiuto
----------------------------------------
================================================================================
Cambiare la risoluzione dello schermo
================================================================================
AUTORE: 482
DATA :15/10/2009 - 11:05:14
----------------------------------------
...ma ciao!
qualcuno sa coem fare a cambiare la risoluzione dello schermo programmaticamente?
Ho un software sviluppato in 1024*768 e devo farlo girare in simulazione su un 800*600, solo che i controlli sono type def e alcuni posizionati con delle dimensioni costanti e quidni usare il ridimensionamento e la proporzione in base alle risoluzioni non va bene.
Pensavo di fare in modo che quando si lancia il programma venga cambiata la risoluzione e quando viene chiuso venga ripristinata.
QUalcuno mi sa aiutare?
Ho trovato un esempio sul sito della national ma siappoggia su una libreria visual basic e non mi sembra una soluzione ottimale.
grasssie!
----------------------------------------
AUTORE: 482
DATA :15/10/2009 - 11:26:12
----------------------------------------
Vorrei seguire questa strada...è fattibile direttamente in labview?
http://www.pinvoke.net/default.aspx/use ... tings.html
Non ci capisco niente degli ingressi e uscite di sta dll..so solo che l'ho usata direttamente per far apparire e sparire la barra delle applicazioni, ma per la risoluzione non sso se c'e' qualche intoppo a livello di passaggio valori per puntatori o robe simili.
Qualcuno mi sa aiutare?
grassie!
----------------------------------------
================================================================================
Come creo un installer con lab 8.5 che contenga il runtime?
================================================================================
AUTORE: 822
DATA :15/10/2009 - 18:20:11
----------------------------------------
Ciao,
come creo un installer del mio programma che contenga anche il LabVIEW Run-Time in modo che possa essere installato e runnabile su un qualunque pc? Utilizzo labview 8.5, non ricordo più come si fà (quando ero giovane ci ero riuscito
), forse ho disinstallato qualcosa che non mi permette più di farlo?
----------------------------------------
AUTORE: 2592
DATA :16/10/2009 - 13:01:03
----------------------------------------
ciao,
puoi seguire le indicazioni di questo link.
http://zone.ni.com/devzone/cda/tut/p/id/3303
Buon lavoro,
Andrea
----------------------------------------
AUTORE: 822
DATA :17/10/2009 - 23:30:14
----------------------------------------
ciao ryan,
il problema è che nella finestra di "additional installer" non c'è nulla, ma proprio nulla, neanche il runtime di labview.
E se provo a installarlo di nuovo mi dice giustamente che è già installato, ora capisco perchè non riuscivo più a ricrearmi un installer!!!
E ora come faccio?
----------------------------------------
AUTORE: 822
DATA :20/10/2009 - 20:43:31
----------------------------------------
ho risolto facendo un ripara dell'installazione di labview..
ora nella finestra di "additional installer" appare fra le altre cose anche il run time..
soluzione alternativa che ho provato è stata quella di installare solo il runtime (che ho trovato all'interno della cartella components) e poi runnare l'eseguibile compilato, con la differenza che l'installer mi prende circa 70 mega mentre solo il runtime sono 25 mega (molto più comodo da condividere in cartelle ftp o peggiore delle ipotesi spedire per posta)
----------------------------------------
AUTORE: 2592
DATA :21/10/2009 - 22:31:51
----------------------------------------
Ciao, scusa se rispondo solo ora ma sono stato via...
Mi fa piacere che abbia risolto, alla fine ti avrei proposto anche io una reinstallazione.
La soluzione alternativa può andare bene se magari devi fare delle applicazioni da condividere sulle tue macchine, sicuramente distribuire un pacchetto con un solo file di installazione risulta molto più professionale da consegnare ad un cliente...
Attenzione alla versione del Run Time, se sono solo 25 MB potrebbe non essere quella completa. Guarda a questo link le differenze tra le due versioni di Run Time disponibili, quella da 97 MB e quella da 24 MB:
http://joule.ni.com/nidu/cds/view/p/id/861/lang/it
Ciao,
Andrea
----------------------------------------
================================================================================
Picture senza bordo??
================================================================================
AUTORE: 2435
DATA :19/10/2009 - 09:33:14
----------------------------------------
Ciao a tutti..
esiste un controllo per caricare le immagini senza bordo eserno??
Ho trovato il picturebox ma non riesco a caricare l'immagine...
sapete darmi qualchee consiglio???
grazie
----------------------------------------
AUTORE: 43
DATA :19/10/2009 - 10:37:26
----------------------------------------
[quote="nic81_2007":2blxs87s]Ciao a tutti..
esiste un controllo per caricare le immagini senza bordo eserno??
Ho trovato il picturebox ma non riesco a caricare l'immagine...
sapete darmi qualchee consiglio???
grazie[/quote:2blxs87s]
basta pitturare il bordo del controllo con il colore Trasparente "T"
bye
----------------------------------------
AUTORE: 43
DATA :19/10/2009 - 11:37:17
----------------------------------------
In aggiunta: spero Tu abbia letto e cercato nell'Help di LabVIEW.
Cercando nell'help appunto
Index -->(digitare) Importing -> (selezionare) Graphics
si ottengono le seguenti info che non hanno bisogno di commenti
[quote="LabVIEW Help":148b06iw][b:148b06iw]Using Imported Graphics[/b:148b06iw]
You can import graphics from other applications to use as [b:148b06iw]pane backgrounds, items in ring controls, and parts of other controls and indicators[/b:148b06iw].
LabVIEW supports most standard graphic formats, including [b:148b06iw]BMP, JPEG, animated GIF, MNG, animated MNG, and PNG[/b:148b06iw]. LabVIEW also supports transparency.
However, imported graphics might slow down screen updates. Make sure you do not place indicators and controls on top of a graphic object so that LabVIEW does not have to redraw the object each time the indicator updates.
Tip If you must use a large background picture with controls on top of it, divide the picture into several smaller objects and import them separately because large graphics usually take longer to draw than small ones.
[/quote:148b06iw]
Riguardo il controllo picturebox, sempre dall'help:
[quote="LabVIEW Help":148b06iw][b:148b06iw]Importing Background Images for Panes[/b:148b06iw]
Complete the following steps to import a background image for a pane.
Right-click the scroll bar of the pane and select Properties from the shortcut menu to display the Pane Properties dialog box.
Select an image from the Background list. Image Preview displays a preview of the image, and the image appears in the pane. You also can complete the following steps to select an image that does not appear in the Background list.
Click the Browse button to display a file dialog box.
Navigate to the image and click the OK button. The image appears in the Background list. LabVIEW supports [b:148b06iw]BMP, JPEG, and PNG[/b:148b06iw] graphic formats for background images. If you attempt to load an image of an unsupported graphic format, LabVIEW returns an error.
Note If you select an image that does not appear in the Background list, LabVIEW does not add that image to the Background list permanently. To add an image to the list permanently, you must save the image in the labview\
esource\backgrounds directory.
Use the Position pull-down menu to set the positioning of the image to stretch, center, or tile.
Click the OK button to close the Pane Properties dialog box and apply the background.
When you save a VI that contains a pane with a background image, LabVIEW saves the pane background image with the VI.
You also can use the Background Image property to set a pane background image programmatically. You can use the Background Mode property to set the positioning of a pane background image programmatically.
[/quote:148b06iw]Infatti i soli formati di immagini caricabili in LabVIEWpicture sono BMP JPEG e PNG. Formati che possono essere sia letti che scritti.
[quote="LabVIEW Help":148b06iw][b:148b06iw]Graphics Formats VIs[/b:148b06iw]
Owning Palette: Graphics & Sound VIs
Installed With: Full Development System. This topic might not match its corresponding palette in LabVIEW depending on your operating system, licensed product(s), and target.
Use the Graphics Formats VIs to retrieve or store image data in BMP, JPEG, or PNG image files.
Palette Object Description
Flatten Pixmap Converts pixmap data from a 2D array to a 1D array.
Read BMP File Reads a Windows bitmap file and creates the data necessary to display the file in a picture control.
Read JPEG File Reads a JPEG file and creates the data necessary to display the file in a picture control.
Read PNG File Reads a PNG file and creates the data necessary to display the file in a picture control.
Unflatten Pixmap Converts a cluster of image data into a 2D array.
Write BMP File Writes a Windows bitmap file.
Write JPEG File Writes a JPEG file.
Write PNG File Writes a PNG file.
--------------------------------------------------------------------------------
Submit feedback on this topic
[/quote:148b06iw]bye
----------------------------------------
================================================================================
Errore nell hardware simulato
================================================================================
AUTORE: 482
DATA :19/10/2009 - 14:20:19
----------------------------------------
...ma ciao!
qualcuno mi sa spiegare questo fenomeno?
Nel VI allegato, genero un onda sinusoidale fin quando non si preme il pulsante di arresto.
A quel punto, in base allo stato di un altro pulsante, decido se mandare in uscita un valore massimo o un valore minimo di tensione.
La questione è che se faccio l'eseguibile e lo mando in run sulla scheda fisica, non ci sono problemi.
Se invece creo la scheda simulata col MAX e poi mando in run il vi, quando premo stop e vado a generare il valore di tensione, mi restituisce questo errore:
[code:1yv7p68q]Error -200288 occurred at DAQmx Write (Analog DBL 1Chan 1Samp).vi:1
Possible reason(s):
Measurements: Attempted to write a sample beyond the final sample generated. The generation has stopped, therefore the sample specified by the combination of position and offset will never be available.
Specify a position and offset which selects a sample up to, but not beyond, the final sample generated. The final sample generated can be determined by querying the total samples generated after a generation has stopped.
Attempted to Write Sample: 0
Property: RelativeTo
Corresponding Value: Current Write Position
Property: Offset
Corresponding Value: 0
Task Name: _unnamedTask<10>[/code:1yv7p68q]
e non riesco a capire il perchè...
perchè con la scheda fisica non ci sono problemi e con quelal simulata si?
----------------------------------------
AUTORE: 43
DATA :19/10/2009 - 14:44:27
----------------------------------------
Puoi postare il VI in LV 8.X?
Grazie
----------------------------------------
AUTORE: 482
DATA :19/10/2009 - 14:55:51
----------------------------------------
L'ho messo in 8.0
----------------------------------------
================================================================================
Installer folders
================================================================================
AUTORE: 482
DATA :19/10/2009 - 15:09:56
----------------------------------------
..ma ciao!
ho creato un installer al quale ho aggiutno anche dei file di supporto.
Tuttavia, pensavo di averli messi in un acartella e invece era un altra.
Qualcuno mi sa dire i path equivalenti delle descrizioni presenti in "source Files -> Destination view" della creazione di un installer?
Volevo mettere alcune cartelle sotto C:\ qual'e'? esiste?
Pensavo fosse System folder, invece system folder equivale a c:\windows\system.
Ho cercato sul sito di NI ma non ho trovato niente...
----------------------------------------
AUTORE: 482
DATA :19/10/2009 - 15:16:14
----------------------------------------
Trovato!
http://digital.ni.com/public.nsf/allkb/ ... 650076947E
----------------------------------------
================================================================================
Temporizzazioni svincolate
================================================================================
AUTORE: 2834
DATA :20/10/2009 - 09:35:40
----------------------------------------
Ciao a tutti, scusate la domanda un po’ banale (forse stupida) ma, forse per la mia mentalità incallita verso su vecchi linguaggi di programmazione unita all’essere alle prime armi con LW, non riesco proprio a venirne a capo.
Ho un problema con le temporizzazioni, non riesco a svincolare una temporizzazione fatta con un ciclo “for loop†“while loop†ecc. dal resto del programma, ovvero, quando parte una temporizzazione anche il resto del programma non vincolato alla temporizzazione si ferma ad “aspettare†la fine della temporizzazione, cosa che succede anche chiudendo la temporizzazione in una struttura case.
Ed ecco la mia domanda: c’è un sistema per temporizzare un evento senza influenzare altri eventi presenti nel programma?
Spero di essere stato sufficientemente chiaro
.
Ringrazio in anticipo chi avrà la pazienza di darmi qualche consiglio.
----------------------------------------
AUTORE: 1078
DATA :20/10/2009 - 15:36:03
----------------------------------------
Come già detto in altri post, sarebbe molto carino se postaste anche degli esempi o il vostro codice. Come facciamo, altrimenti, a capire dove commettete l'errore?
Grazie!
----------------------------------------
================================================================================
Simplex
================================================================================
AUTORE: 2840
DATA :20/10/2009 - 11:37:35
----------------------------------------
Salve a tutti!
sono uno studente di ingegneria alle prime armi con questo programma. Per la mia tesi devo ottimizzare una funzione di più variabili con labview attraverso l'algoritmo del simplesso, che come ho visto è già implementato nel linguaggio di Labview.
Il problema è che non riesco a creare il VI o meglio il programma forse perchè ancora non ho abbastanza esperienza!
Volevo sapere se qualcuno sa aiutarmi o dirmi dove posso trovare qualche esercitazione che fa per me.
Grazie.
----------------------------------------
AUTORE: 1078
DATA :20/10/2009 - 15:44:34
----------------------------------------
Se guardi nel menù help di Labview, trovi una voce "Find Exemples...", ti si aprirà una finestra. Nella sezione "Search" digitando "Simplex" ti apparirà un esempio sull'utilizzo della funzione che stai studiando.
Ciao.
----------------------------------------
AUTORE: 2840
DATA :20/10/2009 - 17:02:01
----------------------------------------
grazie per la risposta,
questo però già lo avevo fatto, vorrei sapere se si trovano esempi che ti spiegano passo passo oppure devi andare ad intuito!
----------------------------------------
AUTORE: 1078
DATA :21/10/2009 - 13:20:18
----------------------------------------
I canali per cercare informazioni sono sempre i soliti, se non trovi niente di interessante in questo forum puoi vedere se trovi qualcosa sul forum NI o nella Knowledgebase della national (si accede facilmente dal sito
[url:2ilsedgv]http://search.ni.com/nisearch/app/main/p/bot/no/ap/tech/lang/it/pg/1/sn/ssnav:sup,catnav:kb[/url:2ilsedgv].
Altrimenti potresti cercare qualcosa su Lava (in lingua inglese), uno dei più grandi forum Labview: [url:2ilsedgv]http://lavag.org/[/url:2ilsedgv]
Comunque se posti il tuo codice potremmo provare ad aiutarti.
----------------------------------------
AUTORE: 2840
DATA :26/10/2009 - 16:29:32
----------------------------------------
Grazie Ricky per aver risposto alle mie domande!
ne ho un'altra.
Sto cercando di usare la funzione Downhill Simplex per ottimizzare una funzione nota (di due variabili) e ci sono riuscito, l'unica cosa è che vorrei visualizzre il risultato su un diagramma 3D dove su un asse ho f(x,y) e sugli altri due uno la x e l'altro la y.
Sai come posso fare?
----------------------------------------
================================================================================
Controllo numerico con tastiera virtuale
================================================================================
AUTORE: 482
DATA :21/10/2009 - 08:52:31
----------------------------------------
...ma ciao!
ho un problema impellente.
Nel vi allegato, vado a scrivere un numero in un controllo numerico, utilizzando una tastiera software implementata d ame, senza sfruttare dll di windows.
Purtroppo non riesco a far digitare il punto decimale.
Qualcuno mi sa aiutare?Dove sbaglio?
Vi prego, è abbastanza urgente e ci sto sbattendo la testa da ieri sera.
grassie!
----------------------------------------
AUTORE: 645
DATA :21/10/2009 - 10:29:26
----------------------------------------
Puoi salvare il VI in versione 8.6?
----------------------------------------
AUTORE: 482
DATA :21/10/2009 - 10:50:19
----------------------------------------
eccolo!
(ho provato a salvarlo in 8.0 e 8.2 ma mi dava errore fatale di labview)
----------------------------------------
AUTORE: 645
DATA :21/10/2009 - 15:12:07
----------------------------------------
Una roba così può funzionare?
Manca un controllo sulla possibilità di inserire due volte il punto.
Per fare le cose semplici si potrebbe utilizzare un indicatore al posto di un controllo e considerare solo i valori immessi tramite pulsanti: in questo modo la gestione del "doppio punto" si può realizzare con pochi blocchi. Altrimenti bisognerebbe intercettare la pressione del punto o controllare ogni volta la stringa inserita.
Oppure controllare il tutto prima della "memorizzazione" o comunque dell'utilizzo come numero.
----------------------------------------
AUTORE: 645
DATA :21/10/2009 - 15:21:45
----------------------------------------
Ecco...
----------------------------------------
AUTORE: 645
DATA :21/10/2009 - 15:29:09
----------------------------------------
Altra versione...
Con la possibilità di cancellare e il controllo sull'eliminazione del punto.
----------------------------------------
AUTORE: 43
DATA :21/10/2009 - 16:32:23
----------------------------------------
[quote="gepponline":3jla68ot]...
Purtroppo non riesco a far digitare il punto decimale.
Qualcuno mi sa aiutare?Dove sbaglio?
...[/quote:3jla68ot]
Sbagli ad usare un controllo numerico come se fosse un controllo di tipo stringa.
Ogni volta che forzi una stringa nel controllo numerico come "Text property", questo viene ri-aggiornato in funzione del formato impostato in "NumericText Property"
Questa cosa è ben evidente proprio nel digitare i decimali:
Se usi il Tuo tastierino e sono visibili 2 decimali, al termine della digitazione di una cifra decimale, quando si aggiorna il controllo, sono sempre visibili 2 decimali anche se il numero ne contiene di + (di cifre decimali). Se il cursore è posto in fondoed il tasto premuto è inferiore a 5 (0,1,2,3,4)
----------------------------------------
AUTORE: 482
DATA :22/10/2009 - 08:03:53
----------------------------------------
Innanzitutto grazie pe ri consigli.
Avevo già intuito che il problema fosse quello del refresh ma volevo capire se ci fosse la possibilità di non farglielo fare, come succede digitando da tastiera.
Il controllo numerico è una modifica recente. Prima facevo tutto con un controllo stringa con tanto di tasto cancella, che pero' (a parte non avere il controllo sul puntio decimale che adesso copiero' dall'esempio di Magic botolo avevano il problema del decremento.
Mi spiego i due pulsanti di incremento, sono utili (non vitali ma utili) e funzionano decentemente, solo che funzionano da 0 a 9, dopodichè avrei dovuto implementare un sistema che pasato il 9, anzichè scrivere 10, mi andasse a 0 e incrementasse la cifra a sinistra e viceversa col tasto di decremento.
Pensando che questa procedua mi avrebbe complicato la vita, ho pensato...perchè andare ad inventare una cosa che esiste già? Usiamo il controllo numerico e sfruttiamo la proprietà numeric text. Solo che poi mi sono impantanato dove vi ho richiesto aiuto.
Quindi adesso vi posto il vi col controllo stringa e se avete idee su come risolvere il problema dell'incremento/decremento fatevi avanti.
(soluzione estrema è bloccare l'incremento/decremento se tutte le cifre selezionate sono 9 o 0, ma preferirei evitare).
Ps. Se qualcuno lo apre in versione 9.0, mi puo' dire se riesce a salvarlo in 8.5 o inferiori? a me va in errore labview e quindi sotto la 8.6 non posso salvare.
----------------------------------------
================================================================================
MySQL & Dati di tipo BLOB
================================================================================
AUTORE: 724
DATA :22/10/2009 - 14:42:21
----------------------------------------
Sto operando su un database MySQL tramite le librerie ADOdb.
Ogni record contiene informazioni sull'apparato in collaudo (è un database di collaudo).
Riesco ad aggiornare tutti i campi correttamente. Uno di questi è di tipo MediumBlob e dovrebbe contenere il testo del report di collaudo.
Se vado a rileggere il database tramite MySQL QueryBrowser riesco ad ottenere anche il campo di tipo MediumBlob se provo
a rileggerlo tramite ADOdb la stringa che ottengo contiene i valori di tutti i campi ad eccezzione del Mediumblob che risulta vuoto.
Avete qualche suggerimento per recuperare anche i campi di tipo blob?
Versioni:
Labview 6.02
ODBC Driver: MySQL 5.05
Grazie,
Cesare
----------------------------------------
AUTORE: 724
DATA :26/10/2009 - 09:50:48
----------------------------------------
[img]\\Ut-storage\ScambioTemporaneo\CECIO\blob.JPG[/img]
La parte sotto è quella che ho aggiunto per poter leggere anchue il campo blob
----------------------------------------
AUTORE: 724
DATA :26/10/2009 - 10:02:21
----------------------------------------
Ora l'upload dovrebbe essere corretto.
Nel jpg la parte aggiunta per poter leggere il campo di tipo blob
----------------------------------------
================================================================================
Help acquisizione da scheda audio pc
================================================================================
AUTORE: 2846
DATA :23/10/2009 - 17:15:05
----------------------------------------
ciao a tutti raga sono Pasquale e questo è il mio primo post in questo forum
sono alle prese con l'esame di strumentazione elettronica di misura e mi ritrovo con il più classico dei problemi:
acquisire un segnale analogico da scheda acquisizione dati (ovviamente il prof ha detto di usare quella audio del pc) e poi effettuare operazioni su tale segnale.
ho da poco iniziato ad usare LW e quindi nn ho ancora molta dimestichezza. ho letto una guida dal titolo "Il laboratorio nel pc" ma nn mi so0no chiare delle cose.
potete postare uno schema semplice per acquisire il segnale????
grazie in anticipo a chi risponderà!!!!
----------------------------------------
AUTORE: 129
DATA :04/11/2009 - 22:37:38
----------------------------------------
ciao, sono l'autore di quell'articolo, non hai detto cosa non ti è chiaro.
L'articolo si riferisce a versioni precedenti di labview e quindi non trovi le funzioni sulla palette?
Dalla Function Palette / Programming / Graphics & sound
Nicola
----------------------------------------
================================================================================
Differenza tra variable e property node
================================================================================
AUTORE: 2821
DATA :25/10/2009 - 14:14:38
----------------------------------------
Salve a tutti!
Sono alle prime armi con Labview, e cercando di assegnare da programma un valore ad un controllo numerico, mi sono imbattuto in un dilemma:
è meglio usare una "local variable" in scrittura, oppure un "property node -> Value" ?
Apparentemente è la stessa cosa, funzionano entrambi, e volevo sapere se ci sono significative differenze (performance, effetti collaterali, ecc.)
grazie
----------------------------------------
AUTORE: 1078
DATA :26/10/2009 - 09:27:44
----------------------------------------
Non ci sono grandissime differenze in termini di prestazioni, la differenza principale sta nel metodo di programmazione che intendi adottare. Se utilizzi i property node puoi personalizzare più proprietà del controllo nel front pannel, ottendendone un maggior controllo. Se invece utilizzi le local variable puoi modificare e leggere solo il valore della proprietà principale, normalmente la proprietà <vlaue>.
Puoi tranquillamente utilizzare contemporaneamente i due metodi di accesso ad un controllo.
Le prestazioni iniziano a decadere quando hai parecchie local variabile e diversi property node aperti. Con gli attuali PC comunque non te ne devi preoccupare più di tanto; la faccenda cambia quando programmi per sistemi Real-Time con poca memoria a bordo (vedi FP con 256MB etc..).
In conclusione, usa pure con tranquillità entrambe gli strumenti che Labview ti mette a disposizione se hai sufficienti risorse (memoria) a disposizione.
Buon lavoro e buona giornata.
----------------------------------------
AUTORE: 1078
DATA :26/10/2009 - 09:40:04
----------------------------------------
Ho trovato una discussione simile sul forum della NI. Potrebbe interessarti. Affronta tutte le differenze che ci sono tra <[b:j6tokjps]property node[/b:j6tokjps]> e <[b:j6tokjps]local variable[/b:j6tokjps]>. Ti suggerisco di leggere tutti i commenti, ognuno ti dirà quali differenze ci sono in più o in meno rispetto al commento precedente, vengono esposte anche le differenze in prestazioni. Buona lettura.
[url:j6tokjps]http://forums.ni.com/ni/board/message?board.id=170&message.id=32222&requireLogin=False[/url:j6tokjps]
----------------------------------------
================================================================================
Salvare tabella su file.
================================================================================
AUTORE: 2585
DATA :26/10/2009 - 09:40:39
----------------------------------------
Buongiorno,
ho il seguente problema:
voglio salvare una tabella creata in labview su un file .txt.
Quando salvo la tabella non vedo la griglia.
Questo succede anche se salvo la tabella in un documento word.
Come posso vedere la grigla de lla tabella ?
Ciao e grazie,
Paolo
----------------------------------------
AUTORE: 1078
DATA :26/10/2009 - 09:57:15
----------------------------------------
Quando salvi una tabella in un file txt, all'interno del file vengono salvati solo i dati che erano contenuti nella tabella. Per vedere delle righe e delle colonne nel file txt, devi disegnare dei separatori tra riga-riga e tra riga e colonna che ti disegnino le righe e le colonne.
Esempio:
+----------+---------+----------+----------+
| A 1 | B 1 | C1 | D1 |
+----------+---------+----------+----------+
| A 2 | B 2 | C 2 | D 2 |
+----------+---------+----------+----------+
| A 3 | B 3 | C 3 | D3 |
+----------+---------+----------+----------+
| A 4 | B 4 | C 4 | D 4 |
+----------+---------+----------+----------+
questi erano metodi di programmazione che si usavano tempo fa. Adesso esistono formati che sono accettati da diversi programmi (vedi csv) e che ti consentono di non disegnare la tabella e di salvare solo i dati. Alla parte grafica ci penseranno i programmi come Excel che accettano questi formati standardizzati.
Normalmente un formato csv usa un ";" come separatore per le colonne e un CRLF per i ritorni a capo tra le righe.
----------------------------------------
================================================================================
ripetizione di un frame..
================================================================================
AUTORE: 2784
DATA :26/10/2009 - 10:00:22
----------------------------------------
devo far in modo che il frame d'acquisizione si ripeta ogni tot minuti indipendentemente da ciò che viene dopo..come posso fare? il mio server deve nel mentre controllare se un client è pronto a connettersi..come posso fare..allego un esempio..dal ciclo while di controllo se c'è o no il client si esce o quando c'è il client pronto a connettersi oppure quando è passato il tempo di acquisizione (cioè si ritorna al frame 1 e che non so fare)..grazie dell aiuto
----------------------------------------
AUTORE: 1078
DATA :28/10/2009 - 11:27:27
----------------------------------------
Secondo me il tuo software deve essere composto da tre while loop distinti, paralleli e temporeggiati con tempi differenti (ovviamente saprai tu quali tempi assegnare ai vari loop, in base alla loro importanza). Il resto poi dovrebbe funzionare correttamente.
Ti allego il tuo esempio modificato, provalo.
----------------------------------------
================================================================================
Un consiglio per lo studio di una funzione
================================================================================
AUTORE: 822
DATA :26/10/2009 - 10:34:16
----------------------------------------
Ho bisogno di un consiglio, devo studiare la curva che vedete nell'immagine in allegato, mi interessa la parte compresa nelle linee tratteggiate.
E' una curva di forza in funzione del tempo, la parte che mi interessa non ha nè un inizio fisso, nè una fine stabilita ed una lunghezza variabile. L'unica cosa nota è che tutta la curva viene acquisita per un tempo stabilito.
Praticamente devo calcolare il valore medio di quel tratto di curva ma devo essere sicuro di iniziare a considerare valori in cui la curva è quasi costante e finire prima della rampa finale (che fra l'altro potrebbe anche non esserci sempre).
Qualche consiglio?
----------------------------------------
AUTORE: 1050
DATA :26/10/2009 - 16:27:52
----------------------------------------
Puoi usare la derivata prima discreta per evidenziare le transizioni oppure usare le soglie come in questo esempio: \Program Files\National Instruments\LabVIEW 8.6\examples\general\templates\Single Loop Application\Limit Example.llb\Limit Example.vi
ciao
----------------------------------------
================================================================================
due cicli while possono svolgersi in parallelo?
================================================================================
AUTORE: 2784
DATA :26/10/2009 - 16:42:48
----------------------------------------
Essendo labview un sistema asincrono..è possibile che due cicli while nello stesso vi, quindi uno sotto e l altro sopra vengano svolti insieme? cioè parallelamente?
----------------------------------------
AUTORE: 482
DATA :27/10/2009 - 07:55:41
----------------------------------------
Quindi stai parlando di sincronismo, non di parallelismo, giusto?
----------------------------------------
AUTORE: 2784
DATA :27/10/2009 - 08:49:46
----------------------------------------
provo a spiegarmi geppo..allora ho un vi in cui ho due cicli while..uno sopra e l altro sotto indipendenti..è possibile farli svolgere assieme?
----------------------------------------
AUTORE: 482
DATA :27/10/2009 - 09:38:43
----------------------------------------
Si occhei, fin li c'ero, il problema è cosa intendi per assieme.
Se intendi Nello stesso momento, allora, basta che non ci siano fili che collegano un ciclo all'altro e ognuno andrà per i fatti suoi nello stesso momento.
Se invece intendi che quando uno fa il ciclo n, anche l'altro deve fare il ciclo n, allora devi usare dei blocchi di sincronizzazione oppure utilizzare il timing loop.
Dipende poi anche dalla precisione del sincronismo che vuoi..se non sei in un sistema RT, qualche sgarro ci sarà sempre.
----------------------------------------
AUTORE: 2784
DATA :27/10/2009 - 09:48:13
----------------------------------------
[quote="gepponline":32si25oc]Si occhei, fin li c'ero, il problema è cosa intendi per assieme.
Se intendi Nello stesso momento, allora, basta che non ci siano fili che collegano un ciclo all'altro e ognuno andrà per i fatti suoi nello stesso momento.
Se invece intendi che quando uno fa il ciclo n, anche l'altro deve fare il ciclo n, allora devi usare dei blocchi di sincronizzazione oppure utilizzare il timing loop.
Dipende poi anche dalla precisione del sincronismo che vuoi..se non sei in un sistema RT, qualche sgarro ci sarà sempre.[/quote:32si25oc]
non ci sono fili tra i due...
vanno separati non sincroni alla iterazione n..quindi fa?
----------------------------------------
AUTORE: 482
DATA :27/10/2009 - 11:24:59
----------------------------------------
Quidni non devi fare niente.
Una volta piazzati i due cicli while nel diagramma, questi andranno ognuno per i fatti loro in contemporanea.
Per verificare questa cosa, collega un indicatore alla "i" di ogni ciclo while e evdrai che i aggiornano tutti e due in contemporanea
[quote="therealdeal":27kbaspl]Essendo labview un sistema asincrono..[/quote:27kbaspl]
Credo che sia questa nozione che ti porta fuori strada?? cosa vuol dire che labview è un sistema asicrono?se intendi quello per cui ti preoccupi in questo topic allora ti dico che assolutamente labview non è asincrono, ANZI, puoi anche settare ad ogni ciclo la sua priorità e selezionare a quale core del processore fare effettuare un certo ciclo eccecc..
----------------------------------------
AUTORE: 2784
DATA :27/10/2009 - 12:21:07
----------------------------------------
[quote="gepponline":2c7fa1e4]Quidni non devi fare niente.
Una volta piazzati i due cicli while nel diagramma, questi andranno ognuno per i fatti loro in contemporanea.
Per verificare questa cosa, collega un indicatore alla "i" di ogni ciclo while e evdrai che i aggiornano tutti e due in contemporanea
[quote="therealdeal":2c7fa1e4]Essendo labview un sistema asincrono..[/quote:2c7fa1e4]
Credo che sia questa nozione che ti porta fuori strada?? cosa vuol dire che labview è un sistema asicrono?se intendi quello per cui ti preoccupi in questo topic allora ti dico che assolutamente labview non è asincrono, ANZI, puoi anche settare ad ogni ciclo la sua priorità e selezionare a quale core del processore fare effettuare un certo ciclo eccecc..[/quote:2c7fa1e4]
ok ti ringrazio..ma ciò succede perchè uso un multicore o perchè?
----------------------------------------
AUTORE: 482
DATA :27/10/2009 - 13:08:29
----------------------------------------
No, è cosi' perchè labview è strutturato cosi' come linguaggio di programmazione.
----------------------------------------
AUTORE: 2784
DATA :28/10/2009 - 10:15:05
----------------------------------------
bo sul forum di labview mi dicono che dipende dai core
----------------------------------------
AUTORE: 278
DATA :28/10/2009 - 12:40:32
----------------------------------------
Ciao,
credo che sia necessario fare una precisazione, ovvero distingurere tra multitrheading e multicore.
Nel caso di multithreading, per esempio, posso salvare un file tremite exporer e navigare una pagina internet con firefox, questo avviene indipendentemente "in parallelo" anche se utilizziamo una cpu single core, lo scheduler del SO gestisce il tempo a disposizione della cpu "switchando" continuamente tra un'applicazione e l'altra, dandoti l'illusione che esse si svolgano realmente in parallelo.
Tornando al tuo esempio, avendo due cicli while in parallelo, nel caso di una cpu single core il codice LV viene eseguito in "parallelo" come spiegato sopra, ovvero i 2 cicli while vengono eseguiti "un pò per uno".
Nel caso di una cpu multicore invece, ogni ciclo while gira su un core differente (mi piacerebbe verificare sta cosa....), realizzando di fatto un parallelismo "reale" (anche qui, mi piacerebbe verificarlo sperimentalmente....).
Con la versione 2009 si hanno a disposizione degli strumenti specifici per migliorare l'efficienza del codice su macchine multicore, per esempio i clicli while è possibile "parallelizzarli" agendo sulla voce "Configure Iteration Parallelism", ti rimando all'help di Lv per maggiori informazioni in merito.
----------------------------------------
AUTORE: 645
DATA :28/10/2009 - 15:47:11
----------------------------------------
Addirittura con LabView 2009 è possibile indicare al VI (o far scegliere a lui a seconda del sistema) quanti cicli FOR parallelizzare a seconda del numero di CORE presenti sul processore.
Altrimenti, come detto da Esodar, il parallelismo avviene "in maniera apparente" nel senso che LabView è in grado (di suo... l'importante è programmare bene evitando dipendenze tra i cicli) di presentare alla CPU strutture operanti in parallelo; la CPU gestisce i tempi operazionali per attivare questo parallelismo.
----------------------------------------
AUTORE: 2784
DATA :29/10/2009 - 13:02:59
----------------------------------------
capisco..non so se può essere utile ma questa è la risposta del forum di labview
Gentile therealdeal,
ovviamente nel caso in cui si abbia un unico processore i due cicli vengono sequenzializzati e quindi il funzionamento degli stessi non può intendersi parallelo nel senso rigoroso del termine. Nel caso di sisemi multcore invece, questo risulta possibile. Alcune indicazioni le puoi trovare qui:
http://forums.ni.com/ni/board/message?b ... ogin=False
----------------------------------------
AUTORE: 2784
DATA :30/10/2009 - 10:29:45
----------------------------------------
da QUEL che mi dite voi..il parallelo non c'è, cioè viene gestito in parte uno e in parte l altro con tempi piccoli che sembrano eseguiti contemporanei?
----------------------------------------
AUTORE: 482
DATA :30/10/2009 - 13:09:47
----------------------------------------
La domanda originale era:
[quote:zqe7nz9h]è possibile che due cicli while nello stesso vi, quindi uno sotto e l altro sopra vengano svolti insieme? cioè parallelamente?[/quote:zqe7nz9h]
La risposta è SI.
Su dei multicore assegnando ogni ciclo ad un core distinto, mentre su un single core, sfruttando la capacità multithread.
Vengono eseguiti contemporaneamente ma un pezzattino per uno alla volta.
Qesto per dire che non sono sequenziali i due cicli.
Proprio per questo motivo, se cisono delle variabili condivise tra i due cicli è sempre meglio prendere le dovute precauzioni, per fare in modo di non scrivere "contemporaneamente" la stessa variabile e rischiare quindi di ottenere un valore diverso da quello che ci si aspetta.
----------------------------------------
AUTORE: 2784
DATA :02/11/2009 - 15:15:41
----------------------------------------
quindi pensate che si possano avere dei problemi se realizzo un file in questa maniera? Cioè io lavoro su un dual core ora, vedendo un quasi parallelismo tra i due processi. Ma non sapendo su che tipo di pc metterò l eseguibile da realizzare poi, posso avere dei problemi di tempistica?
----------------------------------------
AUTORE: 482
DATA :03/11/2009 - 08:02:40
----------------------------------------
Puoi spiegare la tua applicazione per capire di che tipo di tempistiche parli?
Perchè qui si parla di millisecondi e dipende comunque dal carico che ogni ciclo ha sul processore.
Spesso, problemi di tempistica si possono risolvere con una buona programmazioen che non spippolando sull'utilizzo delle risorse.
----------------------------------------
AUTORE: 2784
DATA :03/11/2009 - 09:09:03
----------------------------------------
[quote="gepponline":34xrcr34]Puoi spiegare la tua applicazione per capire di che tipo di tempistiche parli?
Perchè qui si parla di millisecondi e dipende comunque dal carico che ogni ciclo ha sul processore.
Spesso, problemi di tempistica si possono risolvere con una buona programmazioen che non spippolando sull'utilizzo delle risorse.[/quote:34xrcr34]
allora il primo ciclo while server per acquisire dati e controlla se è presente un client, a cui se è presente, mandata dati relativi all acquisizione e altri parametri tramite datasocket. Il secondo ciclo while è un sistema di scambio file con il client. Quando il client lo desidera salva il file dove il server alloca i dati dell acquisizione. Il mio problema è che il trasferimento del file avviene su porta tcp/ip...tale porta nel server deve stare sempre in ascolto per non far succedere errori. Ecco perchè ho due cicli while separati.."in parallelo". Spero di essermi spiegato..
----------------------------------------
AUTORE: 482
DATA :03/11/2009 - 09:57:20
----------------------------------------
Si credo che tu ti sia spiegato ma assolutamente non devi preoccuparti per le questioni di parallelismo.
Bastano dei semplici accorgimenti di sincronizzazione nello scambio tcp/ip.
Non e' decisamente il tuo caso quello in cui ci si preoccupa dei multi core o del determinismo.
Non mi sembra che tu poss aavere criticità se un polling avviene in 50 ms anzichè in 20....piuttosto regola i timeout delle richieste tcp/ip in modo da non far succedere errori inutili.
----------------------------------------
AUTORE: 2784
DATA :03/11/2009 - 10:26:11
----------------------------------------
[quote="gepponline":3i3n722v]Si credo che tu ti sia spiegato ma assolutamente non devi preoccuparti per le questioni di parallelismo.
Bastano dei semplici accorgimenti di sincronizzazione nello scambio tcp/ip.
Non e' decisamente il tuo caso quello in cui ci si preoccupa dei multi core o del determinismo.
Non mi sembra che tu poss aavere criticità se un polling avviene in 50 ms anzichè in 20....piuttosto regola i timeout delle richieste tcp/ip in modo da non far succedere errori inutili.[/quote:3i3n722v]
ok grazie mille geppo..sempre gentile!
----------------------------------------
AUTORE: 2784
DATA :05/11/2009 - 10:39:36
----------------------------------------
se volessi sperimentalmente verificare il parallelismo reale..che struttura uso? la timed loop?
----------------------------------------
AUTORE: 2784
DATA :11/11/2009 - 12:09:52
----------------------------------------
qualche esempio utile?
----------------------------------------
AUTORE: 129
DATA :09/12/2009 - 23:23:32
----------------------------------------
ogni ciclo while ha un contatore delle iterazioni, quindi se il tuo problema è sapere se si sono comporatati in modo corretto, semplicemente puoi contare che le iterazioni attese (dovute al timing impostato e allo scheduler labview) sono corrispondenti.
Più finemente puoi usare dei tickcount per registrare i tempi di esecuzione ciclo.
I commenti sopra hanno chiarito il fatto che con single core c'è uno scheduling, come avviene per i processi windows che gestisce il multithreading appunto, mentre in dual core 2 processi possono essere gestiti dai due processori.
La fortuna di laview è che gestisce il multithreading automaticamente, puoi ottimizzare assegnando delle priorità (da proprietà/execution).
Se vuoi qualche approfondimento sul meccanismo prova [url=http://ideasinwiring.blogspot.com/2005/06/end-of-free-lunch.html:uen0cu4r]qui[/url:uen0cu4r]
----------------------------------------
================================================================================
graficare funzione
================================================================================
AUTORE: 2846
DATA :26/10/2009 - 18:36:40
----------------------------------------
raga ciao a tutti
la domanda è molto semplice come faccio a tracciare il grafico diuna funzione. mi spiego meglio:
supponiamo di avere
A sin (2 TT f t + phi)
A f e phi sono valori numerici che assegno io prima di lanciare il VI; come faccio a indicare la variabileindipendente???
devo impostare che soun tempo e poi gestire un ciclo for, oppure tracciar4e la funzione punto per punto oppure ......
raga una mano per favore
grazie 1000
----------------------------------------
AUTORE: 1124
DATA :27/10/2009 - 19:18:55
----------------------------------------
ciao
intendi qualcosa come il block diagram mostrato nell'allegato?
----------------------------------------
AUTORE: 2846
DATA :27/10/2009 - 20:26:05
----------------------------------------
allora in linea di principio funziona..ma il grafico non mi viene come una sinusoide perfetta e inoltre scorre troppo velocemente
----------------------------------------
AUTORE: 645
DATA :28/10/2009 - 15:51:11
----------------------------------------
Come indicato da Stefanog, la variabile indipendente (t nel caso presentato) può essere sostituita con il numero di iterazione del ciclo.
In realtà questo è corretto se ogni iterazione avviene a distanza temporale dalla precedente pari alla distanza temporale tra due punti della funzione da disegnare.
In generale, se non puoi realizzare una funzione con i blocchi già presenti in LabView, puoi disegnare un grafico punto per punto: la formula che descrive la funzione viene implementata in un ciclo e il numero di iterazione corrente può rappresentare la variabile indipendente.
----------------------------------------
================================================================================
modifica Output runtime
================================================================================
AUTORE: 482
DATA :27/10/2009 - 09:42:52
----------------------------------------
...ma ciao!
ho un output su scheda DAQmx.
A un certo punto faccio delle modifiche a quest'onda (es. un offset in ampiezza).
Al momento genero un onda in continuo e quando premo il tasto di modifica, la generazione viene stoppata nel punto in cui si trova, viene reinizializzata la generazione e poi parte la nuova generazione.
Vorrei fare in modo che il tutto fosse continuo, cioè che la generazione si fermasse alla fine della mia onda e ricominciasse subito con quella nuova, in modo da avere una "continuità" di segnale.
Ho provato a dare un occhiata ai blocchi di generazione ma non trovo quello che fa al caso mio, qualcuno mi sa aiutare?
----------------------------------------
AUTORE: 482
DATA :27/10/2009 - 13:58:02
----------------------------------------
Qualcuno ha una scheda di output e input analogico e puo' testarmi questo vi per capire se fa quello che vorrei io?
La mia scheda al momento è in produzione e non posso fermarla.
Se nel vi premo il tasto Modifica con stop, la generazione dovrebbe fermarsi nel punto in cui si trova e poi ripartire da capo sempre con la stessa onda.
se invece faccio modifica continua, dovrei vedere che finisce la prima onda e parte con la seconda.
chiedo ocnferma di questo funzionamento. GRASSSIE!
----------------------------------------
AUTORE: 482
DATA :29/10/2009 - 07:55:15
----------------------------------------
Sono riuscito nel mio intento MA....
Non sono abbastanza veloce.
Praticamenet la generazione mi va in errore perchè non faccio in tempo a scrivere il buffer e la scheda non puo' garantire che non vengano ripetuti valori vecchi e quindi interrompe l'esecuzione.
Ho un buffer di 4000 punti e un onda che dura 0,03 secondi (mi sembra ragionevole che non ce la faccia). Il buffer potrei anche dimezzarlo volendo (ma non mi risolve il problema al momento)
Mi chiedevo... non è possibile usare una tecnica di programmazione che mi permetta di utilizzare un buffer suddiviso in due metà, una che viene eseguita ciclicamente, l'altra che la riempio con calma e una volta piena vado ad eseguirla al posto della prima metà e cosi' via?
Avete soluzioni alternative?
Volevo anche usare il buffer on board della scheda, ma non permette l'aggiornamento dei dati mentre sta andando...ppff....
----------------------------------------
AUTORE: 482
DATA :02/11/2009 - 10:34:54
----------------------------------------
...ma ciao!
con l'assistenza national faccio fatica a venirne a una...
Questo è il programma che mi da problemi con già all'interno una tipologia di dati che fa verificare il problema.
Quando mando in run il vi, parte la generazione. Quando clicco su applica modifiche, mi aspetto di non ottenere nessun cambiamento sull'uscita, visto che l'onda è la stessa, cambia solo la risoluzione (il sample clock rate).
Invece, prima di avere l'onda nuova, ottengo una ventina di secondi in cui viene generata un onda sempre sinusoidale ma con una frequenza bassissima e non so con quale criterio, in ogni caso si parla di una ventina di secondi cazzarola.
Tutto questo è legato alla modifica del dt della waveform che viene modificato credo. Fatto sta che io questa cosa la devo fare e vorrei capire come.
P.S. probabilmente guardando l'esempio, uno penserà, "ma che senso ha generare 10 volte la stessa onda quando si puo' generarla una volta sola a ripetizione?" E' che alla fine di quelle 10 ripetizioni potrei metterci un altra forma d'onda e poi ripetere le stesse 10 sinusoidi e cosi'a ripetizione.
Se qualcuno ha qualche idea, resto in ascolto!
grasssie!
----------------------------------------
AUTORE: 482
DATA :02/11/2009 - 10:42:06
----------------------------------------
Torno sui miei passi dicendo che non è questione di dt, perchè quando cambio solo la frequenza dell'onda, il problema non si presenta......si presenta solo quando cmabio le ripetizioni....vuoi vedere che è qualcuno dei subvi che rompe le palle?
----------------------------------------
================================================================================
Variare la label di una variabile globale
================================================================================
AUTORE: 822
DATA :27/10/2009 - 09:54:14
----------------------------------------
Ma se cambio la label di una variabile globale richiamata da n VI, non viene aggiornata in tutti i VI in cui viene utilizzata?
C'è un metodo veloce per farlo, oppure devo fare un relink manualmente di tutte le volte che viene richiamata?
Utilizzo labview 8.5
Grazie,
Giuseppe
----------------------------------------
AUTORE: 1078
DATA :28/10/2009 - 07:57:59
----------------------------------------
Ciao giuseppe,
Che io sappia non esistono metodi per aggiornare in modo rapido tutte le istanze delle variabili globali se cambi nome alla variabile. Devi linkare nuovamente tutte le variabili a mano.
Buona giornata.
----------------------------------------
AUTORE: 822
DATA :28/10/2009 - 19:18:52
----------------------------------------
Grazie.. lo immaginavo, infatti ho rilinkato tutte le istanze.
Ciao
----------------------------------------
================================================================================
reset indicatori run-time
================================================================================
AUTORE: 2712
DATA :28/10/2009 - 13:13:57
----------------------------------------
Salve ragazzi ho un altro problema da risolvere.......
Ho finito il mio programmino in labview
è composto da varie parti
1)inizialmente ho un dialogo con lo stumento che controllo
2)imposto dei parametri e richiedo determinate informazioni
3)infine effettuo la misurazione
ora vorrei inserire un ulteriore ciclo che mi permetta di effettuare una successiva misurazione senza passare nuovamente per la fase 1.
Ho necessità di resettare o almeno riportare i valori di tutti gli indicatori al valore di default che ho impostato....
esiste un blocchetto che mi permetta di fare questo???
aspetto vostre notizie
----------------------------------------
AUTORE: 487
DATA :29/10/2009 - 09:13:39
----------------------------------------
Utilizza l'invoke node settando la classe "vi server" --> "vi" --> "vi" e come metodo "default values" --> "reinitialize all to default", così tutti i tuoi controlli ed indicatori verranno riportati ai propri valori di default.
----------------------------------------
AUTORE: 2712
DATA :29/10/2009 - 14:56:11
----------------------------------------
grazie provo
----------------------------------------
AUTORE: 2712
DATA :03/11/2009 - 12:27:42
----------------------------------------
purtroppo si resetta anche il "VISA resource name" non mi permette di effettuare un secondo ciclio di misurazione.
come posso rimediare?
----------------------------------------
AUTORE: 487
DATA :03/11/2009 - 12:48:33
----------------------------------------
Penso che tu possa seguire due strade:
1 - resetti uno a uno solo i controlli e gli indicatori che ti interessano utilizzando i relativi invoke node
2 - resetta tutti i controlli e gli indicatori come ti ho detto in precedenza, ma prima memorizza i valori del o dei controlli che non vuoi resettare.
La scelta fra una strada e l'altra dipende solamente da quanti sono i controlli che devi resettare e quanti invece devono essere preservati.
Se mi verrà in mente qualche altra soluzione te la farò sapere
----------------------------------------
AUTORE: 2712
DATA :04/11/2009 - 08:10:13
----------------------------------------
devo preservare un solo controllore ovvero "VISA resource name".
se mi fornisci maggiori indicazioni riguardo ambo i metodi che mi hai esposto te ne sarei molto grato.
inizio a giocare un po con invoke nodo vedo cosa riesco a fare
grazie
----------------------------------------
AUTORE: 487
DATA :04/11/2009 - 10:31:33
----------------------------------------
Eccoti due banalissimi esempi
----------------------------------------
AUTORE: 2712
DATA :04/11/2009 - 12:57:10
----------------------------------------
[quote="coma":24evbpp6]Eccoti due banalissimi esempi[/quote:24evbpp6]
purtroppo nn posso aprirli ho labview 8.0 student edition
----------------------------------------
AUTORE: 2712
DATA :04/11/2009 - 12:59:04
----------------------------------------
[quote="off":ugbprvot][quote="coma":ugbprvot]Eccoti due banalissimi esempi[/quote:ugbprvot]
purtroppo nn posso aprirli ho labview 8.0 student edition[/quote:ugbprvot]
purtroppo ho problemi anche a resettare i grafici
hai qualche suggerimento
----------------------------------------
AUTORE: 487
DATA :04/11/2009 - 13:10:11
----------------------------------------
OK, versione 8.0.
Per quanto riguarda i grafici li dovresti poter trattare come gli altri controlli/indicatori. Guarda gli esempi che ti ho postato.
----------------------------------------
AUTORE: 2712
DATA :04/11/2009 - 21:13:23
----------------------------------------
grazie 1000 6 stato gentilissimo
----------------------------------------
================================================================================
Come avviare più task paralleli di una scheda?
================================================================================
AUTORE: 822
DATA :28/10/2009 - 20:48:34
----------------------------------------
Ciao a tutti,
porto alla vostra attenzione un problema che ho riscontrato nell'acquisizione parallela da due o più canali analogici.
Schematicamente e sinteticamente il sistema è questo: due loop paralleli (che girano indipendentemente l'uno dall'altro), in ognuno dei due cicli acquisisco attraverso una scheda di input analogici National i segnali di due canali distinti, quindi riassumendo nel ciclo 1 leggo il canale 1 e nel ciclo 2 leggo il canale 2.
L'unico modo che ho trovato per fare questa operazione è stato quello di creare un terzo loop, che viene avviato ad inizio programma e gira sempre in background, che fa avviare un task della scheda analogica e ogni x ms legge i due canali di mio interesse; le letture vengono messe in due variabili globali che vengono richiamate dai due cicli iniziali. Se provo a slegarmi dal task facendo le letture solo quando mi servono il programma va in errore (le letture vanno in conflitto, perchè la scheda viene occupata simultaneamente da due processi)!
Siccome a me non interessa leggere continuamente questi valori (anche per alleggerire tutto il sistema) ed evitare il passaggio a variabili globali e migliorare il campionamento di ciò che acquisisco, c'è un modo per avviare le letture solo quando servono senza che vadano in conflitto?
Giuseppe
----------------------------------------
AUTORE: 43
DATA :30/10/2009 - 11:17:00
----------------------------------------
[quote="giuseppe.l74":15v7ehjz]Ciao a tutti,
porto alla vostra attenzione un problema che ho riscontrato nell'acquisizione parallela da due o più canali analogici.
Schematicamente e sinteticamente il sistema è questo: due loop paralleli (che girano indipendentemente l'uno dall'altro), in ognuno dei due cicli acquisisco attraverso una scheda di input analogici National i segnali di due canali distinti, quindi riassumendo nel ciclo 1 leggo il canale 1 e nel ciclo 2 leggo il canale 2.
L'unico modo che ho trovato per fare questa operazione è stato quello di creare un terzo loop, che viene avviato ad inizio programma e gira sempre in background, che fa avviare un task della scheda analogica e ogni x ms legge i due canali di mio interesse; le letture vengono messe in due variabili globali che vengono richiamate dai due cicli iniziali. Se provo a slegarmi dal task facendo le letture solo quando mi servono il programma va in errore (le letture vanno in conflitto, perchè la scheda viene occupata simultaneamente da due processi)!
Siccome a me non interessa leggere continuamente questi valori (anche per alleggerire tutto il sistema) ed evitare il passaggio a variabili globali e migliorare il campionamento di ciò che acquisisco, c'è un modo per avviare le letture solo quando servono senza che vadano in conflitto?
Giuseppe[/quote:15v7ehjz]
A volte mi stupisco per l'ostinazione con cui ci si rifiuta di accettare i limiti hw.
Se una scheda di acq "de-multiplexa" +ingressi analogici in un unico A/D Converter, è impossibile acq. da + canali simultaneamente ed in modo indipendante l'uno dall'altro al punto che l'acquisizione abbia in izio e fine in momenti diversi su canali diversi.
La prima soluzione (Hardware) consiste nell'acquistare un'altra scheda di acq: avendo a disposizione 2 ADC è possibile acquisire parallelamente ed in m odo indipendente dai 2 canali cablandone uno sulla prima scheda e l'altro sulla seconda scheda.
La seconda e ovvia soluzione consta nel creare un subvi (NON rientrante) che esegue l'acquisizione da uno o + canali ed al termine rilascia la risorsa "scheda di acq." restituindo il dato acquisito al VI chiamante.
In questo caso il SubVI funzionerebbe da "semaforo" impedendo conflitti nell'accesso alla risorsa. Però ciò potrebbe servire se e solo se le acquisizioni sono "molto lente" (per es. acquisire temperature)
La terza soluzione è quella che hai tentato di implementare: secondo me è la soluzione migliore.
acquisire in continuo tutti i canali aggiornando con una freq. predefinita una o n variabili che danno il valore istantaneo acquisito ( magari lo si rende sempre visibile nel frontpanel.
Se poi i 2 loop paralleli vogliono, possono "pollare" le variabili locali o globali ( e non leggere il canale fisico) senza problema con la freq. che vorranno.
L'acquisizione continua a bassa freq. (decimi di Hz) in un buffer circolare non crea sovraccarico nell'uso della CPU perchè fa tutto la scheda di acq aggiornando il buffer in memoria tramite DMA.
Probabilmante la Tua è una cattiva implementazione nella quale inizializzi continuamente il processo di acquisizione resettandolo ad ogni giro del loop (presumo!) e quindi ripeti operazioni che andrebbero fatte fuori dal loop una sola volta all'inizio e alle fine di tutto il processo di acquisizione.
----------------------------------------
AUTORE: 822
DATA :30/10/2009 - 11:53:25
----------------------------------------
Ciao Paracarro
[quote:1qcwvd08]A volte mi stupisco per l'ostinazione con cui ci si rifiuta di accettare i limiti hw.
Se una scheda di acq "de-multiplexa" +ingressi analogici in un unico A/D Converter, è impossibile acq. da + canali simultaneamente ed in modo indipendante l'uno dall'altro al punto che l'acquisizione abbia in izio e fine in momenti diversi su canali diversi.[/quote:1qcwvd08]
Io accetto i limiti HW.. infatti stavo cercando di colmarli con il software..
[quote:1qcwvd08]La prima soluzione (Hardware) consiste nell'acquistare un'altra scheda di acq: avendo a disposizione 2 ADC è possibile acquisire parallelamente ed in m odo indipendente dai 2 canali cablandone uno sulla prima scheda e l'altro sulla seconda scheda.[/quote:1qcwvd08]
Ovviamente no, soluzione ovvia ma dispendiosa! Ho semplificato il problema a 2 canali ma in realtà i canali sono 8.. quindi dovrei comprare 8 schede e comunque è una spesa che non farei neanche per due schede.
[quote:1qcwvd08]La terza soluzione è quella che hai tentato di implementare: secondo me è la soluzione migliore.[/quote:1qcwvd08]
Finalmente un complimento
[quote:1qcwvd08]Probabilmante la Tua è una cattiva implementazione nella quale inizializzi continuamente il processo di acquisizione resettandolo ad ogni giro del loop (presumo!) e quindi ripeti operazioni che andrebbero fatte fuori dal loop una sola volta all'inizio e alle fine di tutto il processo di acquisizione.[/quote:1qcwvd08]
Ecco.. ti sei già rimangiato il complimento di prima
..scherzo..
Io inizializzo e avvio il task e lo chiudo al di fuori del loop, solo una volta ad avvio programma e alla chiusura, l'unica cosa che faccio nel loop è quella di leggere i canali (1 lettura per 8 canali ogni 10 ms) e metterle in 8 globali.
Siccome devo studiare funzioni d'onda di durate che vanno da 3000 msec a 500 ms, volevo evitare il passaggio a globali e cercare di rendere le letture il più istantanee possibile migliorandone la campionatura. Ho pensato di bufferizzare le letture nel loop principale utilizzando un FIFO ma poi mi viene difficile capire in quale parte del buffer si trova la funzione che mi interessa col rischio magari di tagliarne una parte o di prendere quella precedente.
Grazie del tuo aiuto,
Giuseppe
----------------------------------------
AUTORE: 43
DATA :30/10/2009 - 13:40:43
----------------------------------------
[quote="giuseppe.l74":3khrf2fj]
...
Io inizializzo e avvio il task e lo chiudo al di fuori del loop, solo una volta ad avvio programma e alla chiusura, l'unica cosa che faccio nel loop è quella di leggere i canali (1 lettura per 8 canali ogni 10 ms) e metterle in 8 globali.
Siccome devo studiare funzioni d'onda di durate che vanno da 3000 msec a 500 ms, volevo evitare il passaggio a globali e cercare di rendere le letture il più istantanee possibile migliorandone la campionatura. Ho pensato di bufferizzare le letture nel loop principale utilizzando un FIFO ma poi mi viene difficile capire in quale parte del buffer si trova la funzione che mi interessa col rischio magari di tagliarne una parte o di prendere quella precedente.
Grazie del tuo aiuto,
Giuseppe[/quote:3khrf2fj]
Acquisire 8 canali con 1 lettura ogni 10 ms equivale a acquisire 8 segnali a 100 S/sec (sample al secondo).
Ache se non è chiaro se questa freq. è quella di acq. reale o se la freq. con cui leggi il buffer di acq.
Suppongo che quella sia la freq. effettiva, reale di acquisizione.
Con una acq. continua, potresti pensare di dimensionare il Tuo buffer circolare facendolo grande chessò...5 sec. (500 x 8 sample di dimensione buffer circolare, e pensare di prenderti i dati ogni 2,5 sec.,questo lo puoi fare temporizzando il tuo loop di lettura ogni 100 ms e verificando che lo "scan backlog" abbia raggiunto la quantità predefinita (250 samples).
A questo punto fai tutte le verifche del caso analizzando tutto i dati scaricati per ogni canale anche se non è chiaro come deve essere effettuato il riconoscimento della forma d'onda che si vuole memorizzare.
A quel punto scarti ciò che non Ti serve e trattieni ciò che è buono.
E poi magari verifica se non è possibile utilizzare trigger HW o SW.: se fosse possibile potresti fare delle acquisizioni di un numero finito di samples definendo il/i canali di trigger con la possibilità di ottenere un n. finito di punti di pre-trigger. in questo modo dovresti ri-armare il trigger ad ogni giro del loop di acquisizione
non so se mi sono spiegato..
bye
----------------------------------------
================================================================================
Stringhe multicolore
================================================================================
AUTORE: 2514
DATA :30/10/2009 - 10:36:02
----------------------------------------
Ciao a tutti. Spero di non fare una domanda gia' risolta da topic precedenti, nel qual caso chiedo scusa per aver mal utilizzato la funzione CERCA.
Sto facendo un piccolo terminale seriale per debug. Vorrei visualizzare il traffico in una finestra (un indicatore stringa) ma mi piacerebbe discriminare le stringhe ricevute da quelle trasmesse. Inizialmente avevo separato i due flussi in due finestre diverse, ma mi piacerebbe unificarli in un'unica finestra discriminando ricezione da trasmissione in base al colore del testo, ovvero, ad esempio, RX in blu e TX in rosso. Andrebbe benissimo anche qualche altra soluzione, ma sarebbe comodo mantenere tutto in un'unica finestra in modo da avere presente la cronologia dei dati trasmessi e ricevuti. Qualche idea? Grazie a tutti voi.
----------------------------------------
AUTORE: 2514
DATA :30/10/2009 - 11:01:20
----------------------------------------
Ah, dimenticavo. Visto che diventa comodo visualizzare il traffico in ASCII oppure in esadecimale, ho utilizzato un property node per settare la modalita' di visualizzazione. Ho notato che in modo Hex i dati vengono raggruppati a 16 bit. Sapete se e' possibile raggrupparli ad 8 bit in modo che dopo aver digitato due cifre esadecimali (e non 4) venga introdotto lo spazio di separazione?
----------------------------------------
AUTORE: 2514
DATA :30/10/2009 - 14:05:47
----------------------------------------
Ciao, un piccolo aggiornamento. Ho trovato questo link
http://omgili.com/jmp/.0rSU5LtMgxqIJ1Me ... 5lvHK68rWo
in cui, a fronte di una apparente impossibilita' un utente suggerisce una soluzione che, da quanto pare di capire, funziona egregiamente.
Purtroppo viene postato un allegato in Labview 8.5 (io ho una vecchia versione 7.1) e quindi non sono in grado di vederlo. Cerco di capirci qualcosa e al limite mi posto la soluzione da solo per completare il topic e chiuderlo.
----------------------------------------
AUTORE: 2514
DATA :30/10/2009 - 14:06:43
----------------------------------------
Correggo il link
http://omgili.com/jmp/.0rSU5LtMgxqIJ1Me ... StTwyPInzC
----------------------------------------
AUTORE: 43
DATA :30/10/2009 - 16:25:28
----------------------------------------
[quote="goblin":3cedfis5]Ciao a tutti. Spero di non fare una domanda gia' risolta da topic precedenti, nel qual caso chiedo scusa per aver mal utilizzato la funzione CERCA.
Sto facendo un piccolo terminale seriale per debug. Vorrei visualizzare il traffico in una finestra (un indicatore stringa) ma mi piacerebbe discriminare le stringhe ricevute da quelle trasmesse. Inizialmente avevo separato i due flussi in due finestre diverse, ma mi piacerebbe unificarli in un'unica finestra discriminando ricezione da trasmissione in base al colore del testo, ovvero, ad esempio, RX in blu e TX in rosso. Andrebbe benissimo anche qualche altra soluzione, ma sarebbe comodo mantenere tutto in un'unica finestra in modo da avere presente la cronologia dei dati trasmessi e ricevuti. Qualche idea? Grazie a tutti voi.[/quote:3cedfis5]
Sfruttando le proprietà di labVIEW è possibile cambiare FONT, dimensione carattere attributi (bold, italics), Foreground color, Background color di parti di testo all'interno di un controllo indicatore stringa.
Questo è possibile farlo sicuramente con LabVIEW 7.1, ma c'è un "ma".
Il sistema consiste nello specificare un carattere (come se fosse l'indice di un array) di inizio e di fine selezioneed in seguito una delle proprietà sopracitate.
se non ci sono "selezioni" in corso la modifica di una delle suddette proprietà ha effetto su tutto il testo che appare nell'indicatore.
Di conseguenza ogni volta che "accodi" un gruppo di caratteri al controllo, di fatto, riscrivi l'intera stringa nel controllo indicatore compromettendo le precedenti modifiche fatte selezionando gruppi di caratteri e modificando le rispettive proprietà testuali. Non so se mi sono capito!!!!!!!
Per fare qualcosa di semplice ed efficace Ti consiglio di appendere ogni messaggio al testo contenuto nell'indicatore facendolo precedere da "Tx>" e "Rx>" a seconda della natura del messaggio stesso.
----------------------------------------
AUTORE: 43
DATA :30/10/2009 - 16:28:25
----------------------------------------
[quote="goblin":2ra2eggv]Ah, dimenticavo. Visto che diventa comodo visualizzare il traffico in ASCII oppure in esadecimale, ho utilizzato un property node per settare la modalita' di visualizzazione. Ho notato che in modo Hex i dati vengono raggruppati a 16 bit. Sapete se e' possibile raggrupparli ad 8 bit in modo che dopo aver digitato due cifre esadecimali (e non 4) venga introdotto lo spazio di separazione?[/quote:2ra2eggv]
non conviene utilizzare quella modalità da qualche parte, nel sito ilvg ci dovrebbe essere un mio VI che converte una stringa in una stringa hex e viceversa.
Prova ad usare la funzione cerca
altrimenti Ti posso postare il VI in questione sperando che ne trovo uno in versione LV7.1
----------------------------------------
AUTORE: 2514
DATA :02/11/2009 - 07:43:42
----------------------------------------
Ciao e grazie mille delle due indicazioni, che mi saranno sicuramente molto utili. Ho capito quello che mi dici nella prima, purtroppo me ne ero reso conto facendo qualche prova con le proprieta' dei font e quindi concordo con te sulla soluzione che mi proponi. Grazie anche del VI che mi indichi, procedero' alla ricerca! Spero di poter ricambiare le cortesie. Nel frattempo ti saluto e ti ringrazio di nuovo. Alla prossima!
----------------------------------------
================================================================================
Analog output 0 - 20 mA
================================================================================
AUTORE: 2482
DATA :03/11/2009 - 12:59:59
----------------------------------------
Buongiorno a tutti,
chiedo aiuto stavolta per capire come cominciare a utilizzare un modulo di analog output 0- 20 mA (NI 9265).
E' la prima volta che mi trovo a utilizzarne uno e gli esempi trovati con "find examples" invece che schiarirmi le idee me le hanno confuse ancora di più.
Ero convinto di poter gestire facilmente il modulo di output con il blocco DAQ Assistant, un pò come faccio con gli input, ma non sono stato in grado di combinare granchè
.
Vi chiedo aiuto e un pò di pazienza per partire da qualcosa di super-elementare che mi aiuti a capire come gestire e utilizzare il modulo di output.
Poniamo che quello che mi serve non sia altro che un VI, nel cui pannello di controllo posso impostare un valore di corrente compreso tra 0 e 20 mA, da inviare alla pressione di un interruttore ON/OFF.
Il segnale, per il tempo in cui l'interruttore è premuto, dovrà rimanere costante e venire visualizzato su una chart.
Qualcuno potrebbe gentilmente aiutarmi e postare un esempio su come è possibile realizzare ciò?
Vi ringrazio anticipatamente.
Luigi
----------------------------------------
AUTORE: 2482
DATA :10/11/2009 - 16:51:47
----------------------------------------
Proprio nessuno?
...
----------------------------------------
AUTORE: 482
DATA :11/11/2009 - 07:53:28
----------------------------------------
Credo che quello che tu stai chiedendo sia facilmente reperibile tra gli esempi di labview, nella categoria Analog Output.
Spulciali perchè quello è sempre il punto di partenza migliore per le applicazioni
----------------------------------------
AUTORE: 645
DATA :11/11/2009 - 16:37:14
----------------------------------------
Con quale strumento usi il modulo?
CompactRio, CompactDaq, Ethernet, Wireless...
Comunque in linea di massima direi che:
a) Attacchi il modulo al pc tramite l'hardware necessario;
b) Configuri il modulo attraverso il MAX: in pratica controlli che il modulo venga letto e puoi già fare una prova di funzionamento;
c) Con il DAQAssistant dovresti poter comandare il modulo senza problemi.
Casomai fai una prova (basandoti sugli esempi come diceva Geppo) e allega al post un primo VI sul quale fare modifiche.
----------------------------------------
================================================================================
Inviare un'email con labview.
================================================================================
AUTORE: 2585
DATA :03/11/2009 - 15:32:41
----------------------------------------
Buongiorno,
ho il seguente problema:
devo sviluppare un programma che invii in un'email in labview.
Volevo sapere:
1) se scrivessi invece che il nome del server l'indirizzo IP, posso scriverlo nella stessa stringa dove scrivo il server ?
2) l'indirizzo IP dev'essere quello del PC dal quale s'invia l'email ed è quello che mi da facendo ipconfig da cmd.exe ???
3) Il nome del server dove lo trovo ?
Ciao e grazie,
Paolo
----------------------------------------
AUTORE: 487
DATA :04/11/2009 - 13:21:10
----------------------------------------
Dunque:
1 - il nome del mail server è quello del server che gestisce la posta elettronica (devi inserire l' SMTP)
2 - recipients è l'indirizzo di posta elettronica del destinatario
3 - return adress è invece l'indirizzo di posta elettronica dal quale invia la tua email
----------------------------------------
================================================================================
Salvare dati su file
================================================================================
AUTORE: 2840
DATA :06/11/2009 - 11:59:07
----------------------------------------
Salve a tutti,
sto cercando di salvare dei dati che ottengo attraverso la funzione formula node. Mi spiego meglio io ho una funzione di due variabili e assegnando quest'ultime ottengo una funzione costo, quello che voglio fare è salvare i dati in ingresso (le due variabili) e la funzione costo in uscita in un file che poi apro con un foglio di calcolo o con blocco note. In realtà sono riuscito a salvarlo ma non nella forma come voglio cioè: x,y,F(x,y). Ottengo questi valori in una sola colonna. come posso fare devo inserire qualcosa per far capire che voglio tre colonne e non una sola?
Un'altra domanda sempre relativa a questo argomento, voglio inoltre assegnare un certo numero(ad esempio 100) di valori alle variabili e poi salvarli nello stesso file come si può fare?
grazie
----------------------------------------
AUTORE: 2514
DATA :06/11/2009 - 14:06:23
----------------------------------------
Ciao, spero di esserti utile. Io ho fatto un piccolo acquisitore e salvo i valori in un file di testo. Questo file deve essere visualizzabile (da specifiche del cliente) con Excel. Io produco un file .CSV (Comma Separated Values) ed il file ha questa formattazione:
51339;0.00;2.045;0.0;
51340;0.01;2.050;0.0;
51341;0.00;2.050;0.0;
queste sono tre acquisizioni, ognuna composta da 4 valori. Come puoi vedere i caratteri ; separano le colonne e l'andata a capo separa una riga dall'altra. Quindi quando salvi il file di testo dovresti "comporre" la tua stringa inserendo tra un valore e l'altro un carattere punto e virgola e, per ogni nuova acquisizione, un'andata a capo CR/LF. Salva il file con estensione .CSV ed importalo in Excel, vedrai che avrai le colonne separate. Ciao!
----------------------------------------
================================================================================
Problemi con VISA e seriali USB
================================================================================
AUTORE: 2514
DATA :06/11/2009 - 13:58:55
----------------------------------------
Ciao a tutti voi. Leggendo i topic ho trovato parecchi con problemi simili al mio, ma sufficientemente diversi da non essere utilizzabili... portate pazienza, se potete, nel caso in cui stia creando un topic duplicato.
Il problema e' il seguente. Da parecchi anni utilizzo software di scarico/comunicazione via seriale fatto da me con i quali mi interfaccio a schede elettroniche proprietarie. La comunicazione avviene via seriale RS232 e driver VISA con le classiche Byte_At_Serial_Port e compagnia cantante. Con l'avvento delle seriali USB (e contestuale sparizione da molti portatili delle seriali tradizionali) si e' posto il problema di interfacciarsi con i vari "codini" in commercio. Grossi problemi, sinceramente, non ne ho mai avuti, a parte qualche fastidioso ritardo di comunicazione ad alte baudrate (57600 in su) nel caso dei codini piu' datati.
Ultimamente abbiamo progettato un dispositivo che utilizza, in luogo del classico MAX232, un chip FTDI che consente di collegarsi direttamente in USB al PC. Ovvero e' come avere un codino ma in luogo della vaschetta 9 poli la scheda esce con un mini-USB e nel chip FTDI viene realizzata l'emulazione della seriale. Per intenderci appena collego la scheda al PC mi viene richiesto di installare un driver (se e' la prima volta) oppure viene aggiunta una porta seriale alle risorse hardware del PC.
Tutto funziona correttamente. Ma...ecco il problema. Talvolta capita (per i motivi piu' svariati, tra cui disturbi, accidenti vari e cosi' via) che la comunicazione seriale si interrompa. Succede (ma non e' sistematico) che chiudendo il mio programma di scarico e riaprendolo successivamente nel momento in cui tento di fare una nuova connessione il sistema mi restituisca il seguente messaggio di errore:
Error -1073807343 occurred at an unidentified location. VISA: (Hex 0xBFFF0011) Insufficient location information or the device or resource is not present in the system.
La porta seriale a cui tento di connettermi esiste, nel pannello di controllo. Sembra quasi che per qualche motivo il malfunzionamento che si e' verificato sull'hardware abbia impedito che la risorsa venisse rilasciata correttamente e chiusa.
La domanda e': esiste un sistema che mi consenta di effettuare una scansione delle porte "occupate" forzandone la chiusura per poi riaprirle? Non so se mi sono spiegato, in pratica si tratterebbe di eliminare eventuali "connessioni zombie"...
Grazie per il vostro aiuto!
----------------------------------------
AUTORE: 278
DATA :09/11/2009 - 12:58:19
----------------------------------------
ciao,
mi sembra di capire che il problema è dovuto ad una mancata chiusura del canale VISA in questione.
Per ovviare al problema, prima di eseguire l'init della seriale ti consiglio di fare sempre una chiamata alla funzione "VISA Close" in modo da eliminare preventivamente un'eventuale connessione aperta.
Oppure, al presentarsi dell'errore -1073807343, esegui un visa close e riprendi l'init da capo.
----------------------------------------
AUTORE: 2514
DATA :09/11/2009 - 14:41:53
----------------------------------------
Ciao e grazie mille della risposta. E' un'ottima idea che non mi era venuta in mente... grazie di nuovo!
----------------------------------------
================================================================================
Conversione da 16 bit a 8 bit
================================================================================
AUTORE: 2801
DATA :10/11/2009 - 16:48:45
----------------------------------------
Ciao a tutti volevo sapere come si puo convertire un Array di interi I32 da 16 bit a 8 bit?
Mi spiego meglio sono valori presi dalla mia scheda audio ma sono campionati in un array a 16 bit con I32 , vorrei portarli a 8 bit .
Come faccio ?
Ciao
----------------------------------------
AUTORE: 1165
DATA :10/11/2009 - 17:34:32
----------------------------------------
Qualcun altro potrà forse risponderti più compiutamente di me, ma intanto ti abbozzo una rapida risposta:
1) se sono gli aspetti teorici delle conversione che ti interessano, allora devi tener presente che in genere i numeri codificati in binario (sia a 32, che a 16, che a 8 bit) sono ordinati dalla meno significativo a destra (LSB, Least Significant Bit) in crescendo verso la cifra più signficativa a sinistra (MSB, Most Significant Bit); quindi in un numero a 16 bit, se butti via gli 8 bit meno significativi (quelli più a destra), gli altri 8 bit che ti rimangono a sinistra sono i più significativi, col che hai perso in precisione ma non hai cambiato di molto il numero di partenza; quindi questa è l'operazione che credo che tu voglia fare, perdere in precisione ma avere meno bit da gestire; ricordati che così facendo perderai irreversibilmente le informazioni sugli ultimi bit, che sono i decimali delle tue acquisizioni;
2) se sono poi aspetti pratici che vuoi conoscere, allora niente di più semplice: nel diagram panel, fra i tools numerici, troverai tutte le funzioni di conversione verso i vari formati numerici; sono funzioni polimorfe ed operano indistintamente sia su semplici numeri scalari che su vettori; tu dovrai scegliere la funzione che ti converte verso gli I8, quindi basta che in ingresso applichi i tuoi valori ed in uscita ti troverai i corrispondenti valori arrotondati a 8 bit:
N.B. ti osservo solo che gli array I32 non contengono dati a 16 bit, ma bensì a 32 bit, come appunto dice il nome stesso; ma trattandosi di dati acquisiti dalla scheda audio io credo che siano effettivamente a 16 bit, anche se codificat a 32; rimane comunque valido quanto sopra detto, se trasformi in I8 perdi i 24 bit meno significativi e ti conservi i più significativi, che in molte applicazioni sono più che sufficienti.
Spero di aver capito bene la tua domanda e di esserti stato utile, ciao, enr.
----------------------------------------
================================================================================
compilare FPGA
================================================================================
AUTORE: 2821
DATA :11/11/2009 - 06:04:12
----------------------------------------
Ma è normale che per compilare il codice per FPGA ci vogliano svariate ore? Ho forse qualche impostazione errata?
(BTW non so nemmeno quante esattamente, perchè dopo quattro ore esaurisce la memoria e crasha, e il pc di un mio collega dopo 2)
----------------------------------------
AUTORE: 2550
DATA :11/11/2009 - 11:20:53
----------------------------------------
Ciao.
E' capitato anche a me in passato su di un'applicazione.
Comunque, la compilazione è un processo lungo, che dipende dalla complessità del vi o dei vi da compilare.
Quello che posso dirti è che sul mio vi avevo utilizzato degli array per memorizzare alcuni dati, e il compilatore impiegava ore e ore mostrando alla fine lo stesso errore che esce a te. Mi fu consigliato dalla National di utilizzare le memorie al posto degli array, e infatti risolsi il problema.
Ti posto i link che mi invio la national all'epoca, nel caso possano tornarti utili
http://zone.ni.com/reference/en-XX/help ... mory_fpga/
http://zone.ni.com/devzone/cda/tut/p/id/6983
http://zone.ni.com/devzone/cda/tut/p/id/3555
ciao
DVD
----------------------------------------
AUTORE: 645
DATA :11/11/2009 - 16:32:57
----------------------------------------
Il processo di compilazione FPGA è lento: anche National lo dice
Con la versione 8.6 di FPGA Module (io ho iniziato a usare FPGA con questa versione... magari lo faceva anche prima...) è possibile ricevere qualche indicazione sulla correttezza del programma prima di compilare: in particolare è possibile vedere se la velocità di ciclo scelta nel VI potrà essere realizzata a bordo dell'hardware.
È un valore da guardare per poter dire:"Beh, almeno posso iniziare la compilazione" oppure "Sistemiamo il VI prima di perdere tempo nella compilazione di un programma che non potrà funzionare come voglio io".
Con l'ultima versione di LabView (2009) e del relativo modulo per FPGA dovrebbero esserci controlli in più per poter valutare se iniziare o meno il processo di compilazione.
----------------------------------------
================================================================================
err 62 Serial port overrun error
================================================================================
AUTORE: 2784
DATA :12/11/2009 - 10:13:32
----------------------------------------
Possible reason(s):
LabVIEW: Serial port overrun error.
=========================
LabVIEW: The system caused the network connection to be aborted.
Come posso risolvere
un problema di questo tipo?
----------------------------------------
AUTORE: 645
DATA :12/11/2009 - 12:49:15
----------------------------------------
Prova a vedere http://forums.ni.com/ni/board/message?b ... .id=197618
----------------------------------------
AUTORE: 2784
DATA :12/11/2009 - 12:52:45
----------------------------------------
[quote="MagicBotolo":1b3ln8n8]Prova a vedere http://forums.ni.com/ni/board/message?b ... .id=197618[/quote:1b3ln8n8]
grazie magic..lo leggo e lo rileggo però non riesco ad evitare questo errore..il mio programma si connette a multimetri e da essi prelevo dati tramite modbus/tcp..ma ora mi da questo errore sul TCP write quando cerco di prelevare anche altri dati dal sistema...
----------------------------------------
AUTORE: 645
DATA :12/11/2009 - 14:02:36
----------------------------------------
Nel senso che tu usi un WRITE per inviare la richiesta allo strumento e anzichè ricevere i dati salta fuori l'errore?
----------------------------------------
AUTORE: 2784
DATA :12/11/2009 - 16:14:21
----------------------------------------
[quote="MagicBotolo":3bvy4m4n]Nel senso che tu usi un WRITE per inviare la richiesta allo strumento e anzichè ricevere i dati salta fuori l'errore?[/quote:3bvy4m4n]
in pratica apro la connessione tcp dove è presente un tcp write che dà problemi..mi dà questo errore...non riceve i dati ma dà l errore! come se ci fosse un problema di modbus..
----------------------------------------
AUTORE: 2784
DATA :18/11/2009 - 09:56:19
----------------------------------------
possibile sia un problema di connessione tcp/ip? dal tcp write mi dà fuori l errore..
----------------------------------------
AUTORE: 2784
DATA :22/01/2010 - 15:19:20
----------------------------------------
il problema non è stato risolto..aumentando il tempo di campionamento con cui prelevo i dati dai multimetri digitali in uscita dalla tcp/ip mi dà questo errore...helpppp
----------------------------------------
AUTORE: 645
DATA :25/01/2010 - 13:39:30
----------------------------------------
Scusa la domanda... Hai controllato che il multimetro sia impostato per trasmettere dati sulla connessione TCP?
Perchè a volte gli strumenti devono essere impostati perchè non riconoscono in automatico una connessione... e se non viengono impostati LabView prova ad aprire il collegamento, non riesce e ti blocca prima di poter fare qualsiasi operazione.
----------------------------------------
AUTORE: 2784
DATA :25/01/2010 - 14:39:39
----------------------------------------
[quote="MagicBotolo":3o3jpz2t]Scusa la domanda... Hai controllato che il multimetro sia impostato per trasmettere dati sulla connessione TCP?
Perchè a volte gli strumenti devono essere impostati perchè non riconoscono in automatico una connessione... e se non viengono impostati LabView prova ad aprire il collegamento, non riesce e ti blocca prima di poter fare qualsiasi operazione.[/quote:3o3jpz2t]
si magic...tutto ok..a bassi valori di tempo di campionamento funziona tutto regolarmente...se salgo oltre il minuto però..ecco l errore..
----------------------------------------
AUTORE: 645
DATA :26/01/2010 - 13:07:30
----------------------------------------
Con la frase "tempo di campionamento superiore al minuto" intendi dire che acquisisci i dati ad intervalli tra uno e l'altro superiori al minuto o acquisisci dati per un minuto e poi elabori?
----------------------------------------
AUTORE: 2784
DATA :26/01/2010 - 13:26:38
----------------------------------------
[quote="MagicBotolo":2ktdnpn2]Con la frase "tempo di campionamento superiore al minuto" intendi dire che acquisisci i dati ad intervalli tra uno e l'altro superiori al minuto o acquisisci dati per un minuto e poi elabori?[/quote:2ktdnpn2]
l intervallo tra l uno e l altro
----------------------------------------
AUTORE: 645
DATA :26/01/2010 - 15:50:03
----------------------------------------
Te l'ho chiesto perchè non capivo bene... cioè, se aumenti l'intervallo di tempo tra un intervallo e l'altro il VI restituisce errore?
Potrebbe essere un problema riguardante i timeout della comunicazione...
Prova a controllare se il tuo strumento o il pc hanno limiti di timeout nella comunicazione?
Utilizzi un convertitore Modbus / TCP-IP?
----------------------------------------
AUTORE: 2784
DATA :26/01/2010 - 15:56:24
----------------------------------------
[quote="MagicBotolo":3fmzc4cg]Te l'ho chiesto perchè non capivo bene... cioè, se aumenti l'intervallo di tempo tra un intervallo e l'altro il VI restituisce errore?
Potrebbe essere un problema riguardante i timeout della comunicazione...
Prova a controllare se il tuo strumento o il pc hanno limiti di timeout nella comunicazione?
Utilizzi un convertitore Modbus / TCP-IP?[/quote:3fmzc4cg]
Li ho tolti tutti per non creare problemi..uso le librerie modbus..in pratica apro la connessione TCP IP con gli strumenti, uso le librerie modbus ricavo il dato salvo su un file e attendo..di solito la prima rilevazione è ok, ma dopo un tempo di campionamento elevato restituisce questo errore 62...come se saltasse la comunicazione con qualcosa..a tempi di campionamento bassi, 0,1 minuti (anche se l'acquisizione per tutto quello che il programma deve fare avviene ogni 20 secondi) questa cosa non accade..
----------------------------------------
AUTORE: 645
DATA :27/01/2010 - 09:07:58
----------------------------------------
Questo è il tuo VI?
http://forums.ni.com/ni/attachments/ni/ ... agine2.JPG
Ho trovato la discussione nel forum NI cercando il problema...
Se sì ti consiglio di fare le letture in un altro modo: dal manuale dello strumento puoi ricavare quanti bytes vengono inviati dallo strumento in seguito ad una richiesta.
Nell'immagine vedo che tu leggi 7 bytes, fai un'elaborazione e poi leggi ancora.
Prova a leggere direttamente tutto il pacchetto (guarda se sul manuale dello strumento, sotto la voce "Comunicazione" o simile, ti viene indicato il numero di bytes restituiti... potrebbero esserci valori iniziali, indicatori dello strumento, la misura, valori finali).
Poi considera solo i caratteri relativi al valore desiderato (la potenza nell'esempio).
Ps: che strumento stai usando?
----------------------------------------
AUTORE: 2784
DATA :27/01/2010 - 10:13:44
----------------------------------------
[quote="MagicBotolo":12n2im8h]Questo è il tuo VI?
http://forums.ni.com/ni/attachments/ni/ ... agine2.JPG
Ho trovato la discussione nel forum NI cercando il problema...
Se sì ti consiglio di fare le letture in un altro modo: dal manuale dello strumento puoi ricavare quanti bytes vengono inviati dallo strumento in seguito ad una richiesta.
Nell'immagine vedo che tu leggi 7 bytes, fai un'elaborazione e poi leggi ancora.
Prova a leggere direttamente tutto il pacchetto (guarda se sul manuale dello strumento, sotto la voce "Comunicazione" o simile, ti viene indicato il numero di bytes restituiti... potrebbero esserci valori iniziali, indicatori dello strumento, la misura, valori finali).
Poi considera solo i caratteri relativi al valore desiderato (la potenza nell'esempio).
Ps: che strumento stai usando?[/quote:12n2im8h]
Si..mi sembra che i bytes siano otto..possibile?
Uso un PR300 yokogawa
----------------------------------------
AUTORE: 645
DATA :27/01/2010 - 15:19:50
----------------------------------------
Secondo il manuale https://y-link.yokogawa.com/YL022.po?V_ ... uage_id=EN
direi che i caratteri sono di più:
Nel capitolo 7 c'è un esempio con la lettura della potenza attiva:
STX + DG + 0 + n.° stazione + dato + checksum + ETX + CR
che in caratteri dovrebbe essere:
1 + 2 + 1 + 2 + variabile + 2 + 1 + 1
Nel caso di potenza attiva il blocco "variabile" dovrebbe essere composto da 9 caratteri.
Quindi io direi che puoi provare a leggere 19 caratteri e poi selezioni solo quelli relativi alla potenza.
Fai così: invia la richiesta al multimetro e leggi tutta la stringa che ti invia come risposta. Quando avrai capito quanti caratteri ti arrivano esattamente (anche in funzione del dato che chiedi) puoi sistemare il VI per realizzare la versione definitiva.
----------------------------------------
AUTORE: 2784
DATA :27/01/2010 - 15:48:05
----------------------------------------
[quote="MagicBotolo":11qhvhfw]Secondo il manuale https://y-link.yokogawa.com/YL022.po?V_ ... uage_id=EN
direi che i caratteri sono di più:
Nel capitolo 7 c'è un esempio con la lettura della potenza attiva:
STX + DG + 0 + n.° stazione + dato + checksum + ETX + CR
che in caratteri dovrebbe essere:
1 + 2 + 1 + 2 + variabile + 2 + 1 + 1
Nel caso di potenza attiva il blocco "variabile" dovrebbe essere composto da 9 caratteri.
Quindi io direi che puoi provare a leggere 19 caratteri e poi selezioni solo quelli relativi alla potenza.
Fai così: invia la richiesta al multimetro e leggi tutta la stringa che ti invia come risposta. Quando avrai capito quanti caratteri ti arrivano esattamente (anche in funzione del dato che chiedi) puoi sistemare il VI per realizzare la versione definitiva.[/quote:11qhvhfw]
oddio quindi dici di provare a ottenere tutti i caratteri?e li leggo come? con una stringa?
----------------------------------------
AUTORE: 645
DATA :28/01/2010 - 08:31:10
----------------------------------------
Sì, poi vai a lavorare sulla stringa per estrarre solo la parte che ti serve.
----------------------------------------
AUTORE: 2784
DATA :28/01/2010 - 09:04:20
----------------------------------------
[quote="MagicBotolo":19f6cl2u]Sì, poi vai a lavorare sulla stringa per estrarre solo la parte che ti serve.[/quote:19f6cl2u]
ODDIO...non ci so lavorare con le stringhe..come faccio a prendere dalla stringa il dato?
Scusa la mia ignoranza..
----------------------------------------
AUTORE: 645
DATA :29/01/2010 - 08:42:05
----------------------------------------
Il sistema migliore è guardare tra gli esempi di LabView cercando quelli riferiti all'uso di stringhe.
Altrimenti se sbirci nel forum dovresti trovare qualche discussione sull'argomento.
Comunque guarda nella paletta delle stringhe e, magari con l'Help, vedrai che molte funzioni sono compresibili.
Se dopo aver creato un VI c'è qualcosa che non funziona puoi postare un'immagine così la vediamo!
----------------------------------------
AUTORE: 2784
DATA :29/01/2010 - 16:45:39
----------------------------------------
[quote="MagicBotolo":s4vi7gpx]Il sistema migliore è guardare tra gli esempi di LabView cercando quelli riferiti all'uso di stringhe.
Altrimenti se sbirci nel forum dovresti trovare qualche discussione sull'argomento.
Comunque guarda nella paletta delle stringhe e, magari con l'Help, vedrai che molte funzioni sono compresibili.
Se dopo aver creato un VI c'è qualcosa che non funziona puoi postare un'immagine così la vediamo!
[/quote:s4vi7gpx]
ok ci provo...
----------------------------------------
================================================================================
creare il front panel dopo il block diagram!
================================================================================
AUTORE: 2802
DATA :13/11/2009 - 14:32:44
----------------------------------------
volevo sapere se è possibile creare il front panel di un VI dopo aver creato il suo block diagram. Non mi è chiaro come il VI possa individuare le corrispondenze tra i controllori e gli indicatori del front panel e i blocchi del block diagram.
----------------------------------------
AUTORE: 645
DATA :13/11/2009 - 15:54:07
----------------------------------------
Nel momento in cui crei il Block Diagram, sul Front Panel viene creato il riferimento della variabile utilizzata. Perciò la creazione dei due Panel è simultanea. Viceversa puoi creare elementi sul Front Panel e vedere sul Block Diagram i blocchi corrispondenti.
Se vuoi puoi rendere invisibili i controlli e gli indicatori: a questo punto hai l'elemento sul Block Diagram ma non vedi il corrispondente elemento sul Front Panel.
----------------------------------------
================================================================================
Acquisizione segnale e calcolo ampiezza
================================================================================
AUTORE: 2550
DATA :13/11/2009 - 18:18:25
----------------------------------------
Ciao a tutti.
Rieccomi a chiedere ancora una volta il vostro prezioso aiuto.
Ecco il problema. Devo acquisire un segnale come quello riportato nell'immagine allegata e calcolarne il valore RMS sia nel tempo t1 che nel tempo t2. In pratica il segnale, che adesso ho simulato, ha un tempo t1<30ms e t2 compreso tra 80 e 200ms. Per l'acquisizione utilizzo un cDaq-9174 con il modulo Ni 9201. Purtroppo al momento non ho qui l'hardware di acquisizione che mi arriverà a fine novembre (speriamo!) e non posso effettuare i test. Per questo motivo sto cercando di portarmi il più possibile avanti con il lavoro, visto che devo consegnarlo entro metà dicembre.
Ho pensato ad una possibile soluzione, e vi allego il vi, ma dubito che possa funzionare con la temporizzazione di 1ms che ho impostato.
In pratica, all'arrivo del segnale di Test In corso, dovrebbe cominciare la memorizzazione dei dati nell'array "Campioni Corrente di picco" e, all'arrivo del segnale "Finecorsa Bobina" dovrebbe avviare il riempimento dell'array "Campioni Corrente a regime". Alla fine del test, andrei a prelevare i campioni memorizzati e ad effettuare i calcoli necessari.
Mi chiedevo se esistesse un'altra soluzione per acquisire questo segnale e per isolare le due parti che a me interessano (t1 e t2) per poter poi effettuare i dovuti calcoli. Qualcuno di voi può aiutarmi?
Mi scuso per il titolo del post ma non me ne è venuto in mente uno adeguato.
Grazie a tutti fin da ora per le risposte!
DVD
----------------------------------------
================================================================================
Guida Application builder
================================================================================
AUTORE: 2644
DATA :13/11/2009 - 19:52:27
----------------------------------------
Salve a tutti
leggendo vari post del forum ho notato che esiste una guida di ILVG sull'application builder ma non riesco a trovarla...
qualcuno può aiutarmi??
grazie a tutti
----------------------------------------
AUTORE: 2592
DATA :14/11/2009 - 12:42:05
----------------------------------------
Ciao Alduu,
la trovi a questo link:
http://zone.ni.com/devzone/cda/tut/p/id/3303
Andrea
----------------------------------------
AUTORE: 2644
DATA :15/11/2009 - 17:53:58
----------------------------------------
Grazie mille
era quella che avevo trovato...pensavo ce ne fosse un'altra.
Grazie ancora
----------------------------------------
AUTORE: 4
DATA :16/11/2009 - 22:29:30
----------------------------------------
credo che la guida a cui ti riferisci sia questa, anche se è aggiornata "solo" alla versione 8.2 è molto valida.
Ciao
----------------------------------------
AUTORE: 2644
DATA :17/11/2009 - 14:53:59
----------------------------------------
Grazie mille ale
----------------------------------------
================================================================================
Application builder report generation toolkit
================================================================================
AUTORE: 2644
DATA :15/11/2009 - 18:01:04
----------------------------------------
Salve a tutti
Ho un problema da risolvere...
devo creare un applicazione eseguibile di un progetto che utilizza il report generation toolkit...
qaundo vado a generare il preview mi da un warning: file name collision citato anche nel forum NI [url:xhj2oac3]http://digital.ni.com/public.nsf/allkb/2AE85CF95217E60786257540000D818C?OpenDocument#end[/url:xhj2oac3] , che propone una soluzione un po' azzardata da quello che ho capito.
conoscete altre soluzioni??
Grazie ancora
----------------------------------------
AUTORE: 2644
DATA :15/11/2009 - 22:17:14
----------------------------------------
Credo di aver risolto....
seguendo le istruzioni di questo tutorial [url:ptm5u9kz]http://zone.ni.com/reference/en-XX/help/372120A-01/lvrgthelp/rgt_stand_alone_apps/[/url:ptm5u9kz] , l'eseguibile funziona nonostante i warnings siano rimasti.
----------------------------------------
AUTORE: 2435
DATA :01/06/2010 - 11:32:40
----------------------------------------
Anche io ho avuto molti problemi con il report generation toolkit.....
Ho sentito la NI per risolvere il problema (uso LV8.6.1) ed è stata una sofferenza anche perchè ha comportamenti diversi a seconda dell'office installato...
Comunque hanno detto che questo problema è stato risolto per LV2009..
Da parte mia comunque sto evitando il più possibile di interfacciarmi direttamente con office(excel e word) salvando i dati in.csv..
Ho visto che con il passare degli anni(eserienza in vb)possono esserci moltio problemi di compatibilità che creano una grossa perdita di tempo nello sviluppo e riadattamento a una nuova piattaforma e/o nuovo pacchetto office..
----------------------------------------
AUTORE: 43
DATA :01/06/2010 - 11:58:22
----------------------------------------
[quote="nic81_2007":1ywnafx4]Anche io ho avuto molti problemi con il report generation toolkit.....
Ho sentito la NI per risolvere il problema (uso LV8.6.1) ed è stata una sofferenza anche perchè ha comportamenti diversi a seconda dell'office installato...
Comunque hanno detto che questo problema è stato risolto per LV2009..
Da parte mia comunque sto evitando il più possibile di interfacciarmi direttamente con office(excel e word) salvando i dati in.csv..
Ho visto che con il passare degli anni(eserienza in vb)possono esserci moltio problemi di compatibilità che creano una grossa perdita di tempo nello sviluppo e riadattamento a una nuova piattaforma e/o nuovo pacchetto office..[/quote:1ywnafx4]
Fa piacere vedere questi post su argomenti già trattati.
Cmq col LV8.6.1 una delle più grosse porcate di quel toolkit è che non è possibile inglobarlo nell'unico exe che ci si apetta ci creare dopo una compilazione
anzi il grande trucchetto NI è quello di rinominare le necessarie librerie di VI esterne da ".LLB" a ".dll", giusto per salvare la faccia.
http://digital.ni.com/public.nsf/allkb/ ... enDocument
Consiglio la visione di tutti i "related Link"
in Particolare
http://digital.ni.com/public.nsf/allkb/ ... enDocument
che vale per tutti coloro che usano "classi" in LabVIEW 8.x.x e che quindi comprende il Report Generation toolkit.
Per risolvere il problema con LabVIEW2009, hanno dovuto implementare la gestione di alberi di subdirectory dentro gli eseguibili e quindi, suppongo, anche dentro i file .llb (qualcuno mi conferma?)
bye
----------------------------------------
================================================================================
elaborazione immagini real time
================================================================================
AUTORE: 2266
DATA :16/11/2009 - 11:36:08
----------------------------------------
ciao a tutti,
vorrei sottoporvi il mio problema nella speranza di ricevere da voi qualche buona idea.
avrei bisogno un software (labview 7.0, purtroppo il laboratorio usa solo questa versione) in grado di acquisire con una webcam usb di ottima qualità l'immagine di un occhio e avvisare, "real time", in caso questa si muova più di un certo valore soglia.
per l'acquisizione ho trovato la "LabVIEW webcam library" (http://mindtrove.info/software/labview-webcam-library/, fondo pagina) con la quale acquisisco e visualizzo alla grande. dopodichè ho installato il pacchetto vision e qui cominciano i problemi.
non riesco infatti ad ottenere il formato che gli operatori per le coordinate di template richiedono in ingresso (credo sia "IMAQ image.ctl"), poichè la webcam mi genera dei "flat rgb image" che al massimo riesco a convertire in "picture" o "imagedata.ctl".
non ho ancora molta dimestichezza in questo settore di labview, confido quindi nelle vostre preziose competenze o idee...
(o magari addirittura qualche esempio.......
)
grazie a tutti in anticipo
----------------------------------------
AUTORE: 2266
DATA :16/11/2009 - 11:58:55
----------------------------------------
PS: ho postato anche in un altro topic che nelle ricerche precedenti mi era sfuggito, pensavo di cancellare questo ma non ho idea di come si faccia. mi scuso con gli amministratori per il disordine, non sono un abitudinario dei forum........
----------------------------------------
AUTORE: 278
DATA :16/11/2009 - 20:23:20
----------------------------------------
Ciao,
tempo fa mi sono divertito un po`con le webcam usb, ho trovato molto utili i driver Webcam USB forniti direttamente dal sito national [url=http://sine.ni.com/devzone/cda/epd/p/id/5030:d7low77k]qui[/url:d7low77k]
IMAQ USB Snap.vi (per singola immagine) e IMAQ USB Grab Aquire.vi (per un`acquisizione continua) ti restituiscono un`immagine in formato IMAQ, quindi potrai utilizzare le relative funzioni.
Molto utile il VI IMAQ USB Enumerate Cameras.vi che ti restituisce un`array con i nomi delle Webcam collegate al sistema, IMAQ USB Init.vi ti consente di aprire una sessione con la Webcam, ricordati di chiuderla quando hai finito
Puoi utilizzare questo toolkit con LV 7.0, ma per IMAQ devi possedere almeno la versione 7.1
Buon lavoro
----------------------------------------
AUTORE: 2266
DATA :17/11/2009 - 10:28:50
----------------------------------------
graziemille, la vision7.1 non la ho ma vedo se riesco a recuperarla in giro
----------------------------------------
================================================================================
Controllare l'uso della RAM
================================================================================
AUTORE: 2192
DATA :18/11/2009 - 12:54:52
----------------------------------------
Ciao a tutti,
ho un piccolo problema che spero mi aiutiate a risolvere.
Ho creato un Vi che acquisisce ogni 2 secondi una decina di dati (temperature e corrente) da strumenti vari.
Eseguo un po' di calcoli e salvo i dati in un file.
Oltre a questo però visualizzo i dati in un graph e in un array che ovviamente mantiene tutta la storia dei dati acquisiti.
Finchè il test dura anche 5 ore il discorso va bene. Poi è successo che il Vi ha lavorato per un paio di giorni e il PC è andato in dumping. Suppongo che la mole di dati acquisiti salvati nell'array e nel graph abbia intasato la memoria.
Ok, fin qui nessun problema. Se so che il test deve durare parecchio blocco la visualizzazione dei dati e salvo solo su file.
La domanda che segue è:
esiste un modo per analizzare in maniera programmatica la memoria e di conseguenza agire sul VI controllando una soglia di allarme? Praticamente creare una specie di task manager gestito con labview dove posso interagire con i livelli di utilizzo della memoria....
Vi ringrazio in anticipo per i consigli!
BYE
PS. uso LV 8.2
----------------------------------------
AUTORE: 301
DATA :19/11/2009 - 10:38:02
----------------------------------------
se guardi tra gli esempi di LV c'è proprio un task manager!
----------------------------------------
AUTORE: 2192
DATA :19/11/2009 - 11:01:39
----------------------------------------
Ciao!
grazie della dritta. L'ho trovato e provato. La CPU usage e il memory usage totale confrontati con il task manager corrispondono, ma i singoli valori del memory usage della lista processi non tornano... Non riesco a capire in che rapporto stanno. Ora provo a vedere se ci capisco qualcosa.
Grazie cmq!
D
----------------------------------------
AUTORE: 301
DATA :19/11/2009 - 11:11:55
----------------------------------------
Figùret!
----------------------------------------
================================================================================
Plottaggio in un graph i dati in funzione del tempo
================================================================================
AUTORE: 2771
DATA :23/11/2009 - 18:11:29
----------------------------------------
Salve a tutti.. Sono nuovo del forum e quindi approfitto dell'occasione per i saluti.
Veniamo al mio problema: Per la mia tesi di laurea sto costruendo un dispositivo che rileva la corrente che circola in un cavo e dopo i vari calcoli quali potenza dissipata ecc invio il dato via bluetooth.
In labview sto compilando il programma per la visualizzazione dei dati real-time. Vorrei sapere come fare a visualizzare in un grafico il dato che ricevo in corrispondenza dell'istante di tempo (ore:minuti) in cui appunto è stato ricevuto.
Il mio problema è che questi dati li invia il microcontrollore (PIC18F4550) circa ogni secondo e con il circa intendo che il tempo non è costante ma potrebbe variare (fino ad anche due secondi).
Ho provato ad usare un waveform graph mettendo come punto iniziale il tempo di inizio acquisizione (con un offset) ed in effetti il tutto sembrerebbe funzionare bene, ma dopo qualche minuto mi accorgo che non sono più in fase con il clock, appunto perchè le acquisizioni avvengono secondo tempi non costanti.
Esiste un modo per plottare questo valore ed il tempo in cui esso viene ricevuto dal read della seriale?
Grazie a tutti...
Demetrio
----------------------------------------
AUTORE: 645
DATA :24/11/2009 - 08:26:27
----------------------------------------
Secondo me puoi dare un'occhiata ai Chart o ai Grafici XY: in particolare a questi ultimi puoi passare le due coordinate del punto, dataora e valore.
----------------------------------------
AUTORE: 2771
DATA :24/11/2009 - 15:29:10
----------------------------------------
Ciao MagicBotolo, grazie per la risposta... Ma è possibile utilizzando un graph XY lavorare in real time? Io ho provato ad utilizzare allo scopo l'XY graph ma non ci sono riuscito.
Sapresti per caso come fare?
Grazie
Demetrio
----------------------------------------
AUTORE: 1078
DATA :25/11/2009 - 07:45:34
----------------------------------------
Si che è possibile, solitamente vedere l'aggiornamento di un grafico appena variano i dati non è molto efficente in termine di prestazioni e per questo si preferisce bufferizzare la cosa e visualizzarla in un secondo momento. Se crei un buffer che aggiorni punto punto e poi lo dai in pasto al grafico ottieni un aggiornamento costate del controllo. Se non ricordo male c'è un esempio in LV, lo dovresti trovare con il "Find Examples" digitando "buffer" nella casella search.
Ciao e buon lavoro.
----------------------------------------
AUTORE: 1078
DATA :25/11/2009 - 07:49:52
----------------------------------------
Ho dato un'occhio e potresti prendere spunto dall'esempio "Recent History buffer example", lo trovi come ti ho indicato nel post precedente, selezionando dall'eleco che ti appare nella casella "double click keyword(s)" la parola "buffers".
Ovviamente lo dovrai personalizzare a tuo piacimento...
Buon lavoro.
----------------------------------------
AUTORE: 2771
DATA :25/11/2009 - 10:55:33
----------------------------------------
Ciao Ricky, ho guardato gli esempi che mi hai indicato. Il problema fortunatamente l'ho risolto pensando alla tecnica degli esempi ma con un procedimento manuale. Di seguito ho inserito l'immagine con la soluzione che ho implementato così da aiutare magari chi avrà lo stesso problema. Poi sperimenterò il buffer come negli esempi che forse mi potrebbe rendere il processo meno oneroso da un punto di vista di memoria impegnata, anche se con i pc di oggi non penso ci siano problemi...
Grazie a tutti...
PS: Probabilemente richiederò ancora l'aiuto del forum... Naturalemente cercherò di dare il mio contributo ad altri problemi se ne sarò in grado
...
----------------------------------------
================================================================================
come leggere dati da un foglio excel ed integrare
================================================================================
AUTORE: 2484
DATA :24/11/2009 - 11:10:57
----------------------------------------
Salve, avrei la necessità di leggere i dati da un foglio excel ed effettuare una integrazione... sembra molto semplice, ma nn so da dove cominciare... chi può aiutarmi?
in realtà i segnali in volt rappresentano il voltaggio acquisito da un accelerometro ad un certo istante.
mi occorre la velocità, per questo dovrei integrare la funzione accelerazione, di cui però non dispongo. ho soltanto due colonne di dati: il tempo ed i volt ( che a meno di una costante rappresentano l'accelerazione acquisita).
chi può aiutarmi?
----------------------------------------
AUTORE: 1078
DATA :24/11/2009 - 12:02:11
----------------------------------------
Ciao Mistereko,
La lettura di dati (anche eterogenei) da file excel è un'argomento ampiamente trattato nel forum. Inserisci "excel" nella casella di ricerca e ti appariranno un mondo di soluzioni. A quel punto devi solo individuare quella che fa al caso tuo.
[quote="mistereko":3f4rdwxl]mi occorre la velocità, per questo dovrei integrare la funzione accelerazione, di cui però non dispongo. ho soltanto due colonne di dati: il tempo ed i volt ( che a meno di una costante rappresentano l'accelerazione acquisita).[/quote:3f4rdwxl]
Pe quanto riguarda l'integrazione... Per ottenere la corrispondenza velocità-accelerazione devi sapere almeno la velocità iniziale dell'oggetto, quella all'istante t0 dell'acquisizione da lì tramite un calcolo matematico puoi risalire a tutte le velocità punto punto. Con il processo inverso devi conoscere la velocita finale dell'oggetto, quindi quella all'istante tn.
----------------------------------------
AUTORE: 2484
DATA :25/11/2009 - 09:15:32
----------------------------------------
vorrei indicazioni più precise, per favore...non riesco a trovare nulla...
help me!!!!!!!!!!!!!!!!!!!!!
----------------------------------------
AUTORE: 129
DATA :10/12/2009 - 00:01:22
----------------------------------------
con read spreadshet file importi i dati in un array, dalle tue indicazioni si tratterà di due colonne.
Usa index array per ottenere la separazione delle due colonne (setta zero su index column della funzione index array), quindi esegui le operazioni che ti servono per ottenere la terza colonna, build array è la funzione che ti serve per ricostruire il tuo array da reinviare allo spreadsheet file con write to spreadsheet file.
comunque se insersci excel nella ricerca su questo forum trovi un infinità di esempi (prova anche excel labview su google).
----------------------------------------
================================================================================
modificare il front panel di un VI
================================================================================
AUTORE: 2802
DATA :25/11/2009 - 16:12:49
----------------------------------------
Ho creato un VI mediante NI-Motion assistant. Il front panel è vuoto. Modificando il block diagram in base alle mie esigenze compaiono automaticamente dei controlli nel front panel. Il problema è che questi controlli che compaiono nel front panel sono sparsi e non riesco facilmente a raggrupparli in un front panel compatto. Mi vergogno quasi a chiederlo perchè mi sembra banale ma non riesco. Anche evidenziando i controlli e spostandoli con le freccette il problema è che la finestra del front panel non sembra avere dimensioni finite quindi continuo a spostare ma non risolvo il problema.
----------------------------------------
================================================================================
inserire messaggi di errore
================================================================================
AUTORE: 2802
DATA :29/11/2009 - 23:20:26
----------------------------------------
Vorrei inserire dei messaggi di errore che compaiono ad esempio quando dal front panel inserisco un valore troppo alto di un certo parametro.Se ad esempio imposto una posizione di 30 mm e il mio stepper motor ha uno stroke di 20 mm cliccando sul controllo position del front panel dovrebbe comparire un errore del tipo: "Valore superiore al limite consentito di 20 mm "...o qualcosa del genere...
----------------------------------------
AUTORE: 2592
DATA :30/11/2009 - 10:47:45
----------------------------------------
Ciao,
guarda questo link che spiega come creare errori custom:
Custom Error Handling In LabVIEW
http://zone.ni.com/devzone/cda/tut/p/id/3209
In sostanza ti crei il tuo set di errori, salvi il file con il formato nomefile-errors.txt, riavvii LabVIEW e da quel momento se c'è un codice di errore pari al tuo codice custom LabVIEW lo gestisce come tale e ti ritorna il cluster d'errore.
Ciao,
Andrea
----------------------------------------
AUTORE: 927
DATA :01/12/2009 - 11:28:36
----------------------------------------
Un altro metodo che lì non dice è aggiungere in fondo al campo "source" di un errore la stringa <err> seguita dal messaggio personalizzato.
----------------------------------------
AUTORE: 129
DATA :09/12/2009 - 23:37:15
----------------------------------------
prova l'allegato , sfrutta la user32 di windows.
----------------------------------------
================================================================================
Open Config Data
================================================================================
AUTORE: 927
DATA :01/12/2009 - 11:17:40
----------------------------------------
Ho notato che convertendo i VI a Labview 9 i vecchi "Open Config Data" vengono sostituiti con un equivalente retrocompatibile, eppure non sembrano avere niente di diverso, qual è la novità?
----------------------------------------
================================================================================
Come usare la seriale per leggere un I/O da PLC
================================================================================
AUTORE: 1369
DATA :02/12/2009 - 08:59:52
----------------------------------------
Ciao, come posso leggere un segnale da un'uscita logica dal PLC?
Ho un PLC che mi setta una porta al livello alto ogni volta che accade un evento, vorrei leggere il verificarsi dell'evento con Labview via seriale...si può fare?
Ciao e grazie!
----------------------------------------
AUTORE: 2531
DATA :03/12/2009 - 10:36:03
----------------------------------------
Ciao,
anche se non sono un super esperto, vedo se riesco ad aiutarti, però prima occorre sapere che plc utilizzi.
----------------------------------------
AUTORE: 1369
DATA :03/12/2009 - 11:35:56
----------------------------------------
ciao, in realtà non penso sia importante il tipo di PLC, immaginavo di voler leggere lo stato logico di un contatto collegato tra RX e GND della seriale...
Ho studiato un po le RS232, il segnale va da -12 (Logico 1) a +12 (logico 0), ed è in codifica 8N1, quindi non credo sia possibile leggere lo stato di un bit settato sul pin RX della seriale...è un po più complesso per via della codifica 8N1...
----------------------------------------
AUTORE: 2531
DATA :03/12/2009 - 13:12:38
----------------------------------------
No, invece dipende dal plc che hai, ti riporto l'esempio di due plc che utilizzo, il primo è il plc panasonic FP0 (ma anche altri modelli) implementa un protocollo di comunicazione chiamato Mewtocol su rs232, che ti permette di inviare una stringa di comando per poter leggere o scrivere sui registri interni del plc, ad esempio se tu vuoi conoscere lo stato degli ingressi digitali, invii una stringa contenente dei campi di comando al plc e lui ti risponde con una stringa contenente il valore dei registri.
Altro esempio è il plc Siemens S7-200, che utilizza un protocollo di comunicazione proprietario denominato PPI, per poter comunicare con s7-200 si può utilizzare varie soluzioni (commerciali e non) ad esempio la libreria libnodave (liberamente scaricabile dal web), oppure utilizzare la modalita freeport della porta di programmazione.
Scusa se sono stato prolisso, ma era solo per dirti che in base al plc che si utilizza, si possono adottare varie soluzioni.
ciao
Max
----------------------------------------
AUTORE: 301
DATA :03/12/2009 - 14:51:11
----------------------------------------
Ciao, se guardi tra gli esempi di labview, troverai come poter effettuare la lettura degli stati logici dei pin delle porte seriali, ovviamente per quel che riguarda le tensioni in gioco devi fare moooolta attenzione!
Ciauz!
----------------------------------------
AUTORE: 482
DATA :04/12/2009 - 08:20:27
----------------------------------------
Qui si sta facendo confusione tra leggere lo stato logico di un segnale e lo stato logico di un PIN.
Il pin sulla seriale è vero, sipuo' leggere, ma quello che vuole fare max è leggere lo stato logico di un segnale del plc, che credo possa essere un pulsante o un led o che altro.
Per poterlo leggere interrogando il plc, si puo' fare tramite labview e seriale ma devi avere il driver opc che ti permette di comunicare con quel PLC. Questi driver sono inclusi nel pacchetto LabVIEW DSC, e forse sono acquistabili anche singolarmente.
Fatto sta che senza questi driver, non credo si possa comunicare con un PLC.
Purtroppo nella mia ignoranza, non ti so dire se si possa o meno comunicare direttamente via seriale sviluppando un vi che realizzi il protocollo richiesto come si fa normalmente con gli strumenti collegati alla usb o alla seriale.
----------------------------------------
AUTORE: 301
DATA :04/12/2009 - 08:33:58
----------------------------------------
[quote="avlas":1kpewyfq]ciao, in realtà non penso sia importante il tipo di PLC, immaginavo di voler leggere lo stato logico di un contatto collegato tra RX e GND della seriale...
Ho studiato un po le RS232, il segnale va da -12 (Logico 1) a +12 (logico 0), ed è in codifica 8N1, quindi non credo sia possibile leggere lo stato di un bit settato sul pin RX della seriale...è un po più complesso per via della codifica 8N1...[/quote:1kpewyfq]
A me sembrava che si volesse leggere uno stato su un pin della seriale.....se ho capito male sorry
.
Per comunicare via seriale con un plc, certamente serve un OPC e conoscere il protocollo di comunicazione!
Forse vale la pena che venga spiegato meglio il problema...
----------------------------------------
AUTORE: 1369
DATA :04/12/2009 - 11:34:03
----------------------------------------
alla fine go risolto, per vie traverse, ma ho risolto.
La questione è questa: ho un PLC Omron che mi chiude un contatto ogni volta che si verifica un evento (circa ogni 7 secondi), ed un PC deve leggere lo stato di questo bit e aggiornare il VI.
Purtroppo sul PC non ho una scheda I/O, ma solo una seriale libera, d'altro canto sul PLC non ho seriali disponibili...
Non c'è stato verso di leggere lo stato logico del RX sulla seriale dal PC per via della codifica 8N1 del'RS232...quindi che ho fatto?
La seriale invia di continuo sul TX una stringa fissa: quando si verifica l'evento, il PLC chiude il contatto e ponticella il TX con l'RX della seriale PC, il VI rimane in lettura...quindi ho una lettura dalla seriale nel momento in cui si verifica l'evento PLC!!!
Risolto e funziona!
Grazie a tutti per l'aiuto!
Ciao!
----------------------------------------
AUTORE: 1165
DATA :05/12/2009 - 01:50:42
----------------------------------------
avlas .. come hai fatto tu forse funziona e lo trovo anche ingegnoso e ricco di fantasia .. crei col piedino Tx il pacchetto di segnali che rileggi sul piedino Rx se ho capito bene .. ma comunque così ad occhio (andrebbe verificato) mi sembra un sistema laborioso e lento nelle risposte .. in definitiva tu vuoi solo leggere lo stato fisico di un terminale .. e trasformarlo nello stato logico ALTO o BASSO .. a parte il problema di adattamento dei livelli di tensione (che potresti risolvere benissimo con un optoisolatore tipo 4N30 o similari) mi sembra che tu possa risolvere direttamente il problema portando il tuo segnale adattato in tensione ad un qualsiasi piedino di ingresso della seriale (quelli di controllo del flusso per esempio, meglio del piedino dati) e rilggerti il suo stato in polling (non so se è anche attivabile una qualche funzione di interrupt o di event, informati per questo, ti renderebbe la gestione più semplice) .. sono riuscito a spiegarmi?
----------------------------------------
AUTORE: 660
DATA :11/12/2009 - 09:05:10
----------------------------------------
[quote="avlas":1rsfsgvv]alla fine go risolto, per vie traverse, ma ho risolto.
La questione è questa: ho un PLC Omron che mi chiude un contatto ogni volta che si verifica un evento (circa ogni 7 secondi), ed un PC deve leggere lo stato di questo bit e aggiornare il VI.
Purtroppo sul PC non ho una scheda I/O, ma solo una seriale libera, d'altro canto sul PLC non ho seriali disponibili...
Non c'è stato verso di leggere lo stato logico del RX sulla seriale dal PC per via della codifica 8N1 del'RS232...quindi che ho fatto?
La seriale invia di continuo sul TX una stringa fissa: quando si verifica l'evento, il PLC chiude il contatto e ponticella il TX con l'RX della seriale PC, il VI rimane in lettura...quindi ho una lettura dalla seriale nel momento in cui si verifica l'evento PLC!!!
Risolto e funziona!
Grazie a tutti per l'aiuto!
Ciao![/quote:1rsfsgvv]
Anche io ho usato plc omron serie CJ1M e non ho avuto nessun problema di comunicazione con la seriale, anche se era settata come 7E2 (mi sembra) basta che nel tuo VI configuri allo steso modo i parametri della seriale.
Se usi lo stesso PLC ti posso postare il VI.
Max
----------------------------------------
AUTORE: 1369
DATA :14/12/2009 - 10:10:17
----------------------------------------
Di sicuro la soluzione che ho implementato non è il meglio che si possa fare, ma considerato il tempo a disposizione e la difficoltà di modificare il SW sul PLC, ritengo che il funzionamento del sistema sia soddisfacente.
Ciao!!
----------------------------------------
================================================================================
Interfaccia inserimento dati.
================================================================================
AUTORE: 2435
DATA :02/12/2009 - 15:43:16
----------------------------------------
Ciao a tutti....
Vi espongo il mio problema:
Fino ad ora per l'inserimento dei dati da parte dell'operatore(si parla di anche più di 100 dati) ho utilizzato un controllo come le tabelle o le Multicolumn Listbox.
Il problema è che oltre a essere scomode l'operatore deve stare attento alla formattazione dei dati che inserisce.
Avevo pensato di utilizzare un cluster contenente controlli numerici stringhe ecc ma per gestire una grande quantità di dati non so se è il metodo più conveniente.
Nei vostri software come affrontate questo problema??
Avete qualche suggerimento???
grazie
----------------------------------------
AUTORE: 1369
DATA :02/12/2009 - 16:23:39
----------------------------------------
Ho avuto anch'io lo stesso problema in passato, l'ho risolto salvando le configurazioni su un file di testo...
Poi i parametri venivano caricati dai file di testo in cui erano salvate le diverse configurazioni.
----------------------------------------
AUTORE: 927
DATA :09/12/2009 - 09:52:12
----------------------------------------
Se vuoi che ci sia un'interfaccia utente, il cluster va bene. Oppure un Tab con i controlli spartiti in più pagine, a seconda dell'argomento. Con o senza interfaccia, il file di testo come già suggerito è molto utile (ci sono anche i VI per gestire i .INI)
----------------------------------------
AUTORE: 645
DATA :09/12/2009 - 15:51:51
----------------------------------------
Secondo me i TAB sono molto comodi se hai i dati divisi per tipologia: ogni pagina del TAB può contenere una serie di dati raggruppati per argomento (Dati dell'utilizzatore, descrizione dell'impianto, dimensionamento, parametri...). I file di testo sono comodi per memorizzare configurazioni da richiamare successivamente: per esempio puoi pensare un VI che chiede all'utente se vuole caricare una configurazione già usata (ripescando i dati da un file di testo, un TXT, non altri formati più complicati) o crearne una nuova.
E poi puoi prendere in considerazione l'uso di VI tipo PopUp per la creazione di una serie di maschere di inserimento dati: in questo modo guido l'utente nell'iserimento di tanti dati e, se prepari i controlli bene, puoi essere sicuro dell'integrità dei dati. Per questa soluzione dei guardare i Property Node legati al VI Server o utilizzare una serie di Prompt.
Ultimo commento: se con "uso dei cluster" intendi una struttura che accumula tutti i dati e poi li fornisce in pasto al VI prima di eseguire le operazioni devi tenere presente il fatto che la volta successiva i dati devono essere inseriti tutti nuovamente. Qui possono essere utili i file per memorizzazione.
Puoi anche pensare una struttura a TAB dove ogni scheda è visibile solo se quella prima è stata compilata tutta correttamente: nel passaggio tra una scheda e la successiva puoi memorizzare i dati in un file in modo da liberare la memoria. A livello di consumo di memoria mi viene in mente che se i dati sono tanti puoi avere difficoltà (consumi elevati) se dall'inizio alla fine della "fase di compilazione" ti porti dietro tutte le variabili. Con il rischio che se il pc si impalla perdi tutto e devi ricominciare... mentre con un file di appoggio puoi anche pensare di inserire valori "iniziali" nei vari campi.
Se poi i dati sono memorizzati in database o fogli di calcolo (per esempio nel caso l'utente debba inserire dati provenienti da altri calcoli) puoi pensare di automatizzare l'importazione dei valori.
----------------------------------------
AUTORE: 129
DATA :09/12/2009 - 23:05:03
----------------------------------------
Puoi tranquillamente utilizzare un cluster come elemento di un array se la tua necessità è quella di avere dati non omogenei e forzare la formattazione al tipo di dato.
Altrimenti puoi utilizzare un array per ogni singolo tipo di dato, quindi nascondere l'index e gestire programmaticamente il passaggio ad un diverso record.
----------------------------------------
================================================================================
Creazione Pacchetto Installazione con Runtime e Visa
================================================================================
AUTORE: 2550
DATA :03/12/2009 - 16:42:08
----------------------------------------
Ciao a tutti.
Rieccomi a chiedere il vostro aiuto.
Devo distribuire diverse piccole applicazioni sviluppate con labview. Il problema e che quando vado a creare l'installer, tra il runtime del labview 8.5 e visa, arrivo a creare pacchetti di 100Mb, quando l'applicazione è di pochi Mb.
Avevo pensato di creare un unico installer che contenesse solo i due runtime (labview e Visa) e poi di creare l'installer delle applicazioni includendo solo quest'ultime.
Quello che non so è se è realmente possibile creare l'istaller solo con i runtime.
Qualcuno di voi sa qualcosa in merito? Esistono già pacchetti di installazione dei soli runtime?
Grazie a tutti fin da ora
ciao
DVD
----------------------------------------
AUTORE: 278
DATA :03/12/2009 - 16:57:15
----------------------------------------
Ciao,
[quote:1ed5duoj]Qualcuno di voi sa qualcosa in merito? Esistono già pacchetti di installazione dei soli runtime?[/quote:1ed5duoj]
Certo, li puoi trovare sul sito NI.com, usa la funzione cerca
Buon lavoro
----------------------------------------
AUTORE: 2550
DATA :03/12/2009 - 18:18:49
----------------------------------------
Grazie per la celerissima risposta esodar!
Ho scaricato i run-time. Domani mattina li provo e vedo se vanno bene!
Grazie ancora.
Ciao
DVD
----------------------------------------
================================================================================
Tree Control: Evidenziare le righe
================================================================================
AUTORE: 278
DATA :15/12/2009 - 14:22:09
----------------------------------------
Ciao a tutti,
deve essere una cosa talmente banale che mi vergogno quasi a porvi il problema, ma dopo 6 anni che programmo con LV non mi è mai capitato di metterci + di 10 minuti per capire come settare le proprietà dei controlli.
Per inciso, è circa un'ora che cerco di evidenziare programmaticamente le righe in un tree control senza riuscirci!
Dettagliamo meglio il problema, ho un banalissimo tree control popolato da una lista di file recuperata da una directory, vorrei, tramite un controllo numerico, poter spostare programmaticamente la selezione blu dell'elemento, come quando la si seleziona con il mouse...
allego immagine....
Uso LV 9.0 e windows 7.....
----------------------------------------
AUTORE: 43
DATA :16/12/2009 - 11:33:47
----------------------------------------
[quote="esodar1981":r0hq2bcu]Ciao a tutti,
deve essere una cosa talmente banale che mi vergogno quasi a porvi il problema, ma dopo 6 anni che programmo con LV non mi è mai capitato di metterci + di 10 minuti per capire come settare le proprietà dei controlli.
Per inciso, è circa un'ora che cerco di evidenziare programmaticamente le righe in un tree control senza riuscirci!
Dettagliamo meglio il problema, ho un banalissimo tree control popolato da una lista di file recuperata da una directory, vorrei, tramite un controllo numerico, poter spostare programmaticamente la selezione blu dell'elemento, come quando la si seleziona con il mouse...
allego immagine....
Uso LV 9.0 e windows 7.....[/quote:r0hq2bcu]
Ciao
Complimenti per l'uso di LabVIEW tucheinain, io uso ancora, purtroppo, LV 8.6.1...
Ho ritrovato questo antico reperto sul mio PC.
[attachment=0:r0hq2bcu]dir-treeview.vi[/attachment:r0hq2bcu]
Era una risposta ad un post andato perduto. Roba fatta il Lv 7.1.
Attenzione! Può sembrare complicato, nella realtà è un "pezzo di torta" (piece of cake)!!
Fammi sapere se ciò fa al caso Tuo.
bye
P.S. : a proposito di pezzi di torta, questa mattina non ce l'ho fatta a fare colazione
P.S.2 (l'antica porta di tastiera e mouse): ne approfitto per augurare Buon Natale e Felice Anno Nuovo a tutti gli affiliati della setta "ILVG" ed alle rispettive famiglie
----------------------------------------
AUTORE: 278
DATA :16/12/2009 - 14:11:27
----------------------------------------
Eureka!!!
[quote:1h3go2pt]Fammi sapere se ciò fa al caso Tuo.[/quote:1h3go2pt]
Perfetto!!!! Grazie caro
[quote:1h3go2pt]P.S. : a proposito di pezzi di torta, questa mattina non ce l'ho fatta a fare colazione
[/quote:1h3go2pt]
Posso anche immaginare il perchè, hai presente la pubblicità del tizio che si sveglia con un cinghiale sullo stomaco??? Bhe, l'asino pesa molto di più
Ne approfitto pure io per salutare tutti gli utenti di ILVG e augurarvi Buon Natale e Felice Anno Nuovo!!!!
----------------------------------------
================================================================================
Multicolumn con check??
================================================================================
AUTORE: 2435
DATA :21/12/2009 - 15:47:56
----------------------------------------
Ciao sapete dirmi se è possibile inserire un campo check in una multicolumn???
grazie
----------------------------------------
AUTORE: 1078
DATA :23/12/2009 - 09:51:30
----------------------------------------
Prova a vedere se questo esempio può fare al caso tuo....
Ovvimaente dovrai personalizzarlo lavorandoci un pò su...
Buon lavoro.
----------------------------------------
================================================================================
Tip Strip in VI rientrante
================================================================================
AUTORE: 2550
DATA :30/12/2009 - 08:08:53
----------------------------------------
Ciao a tutti e auguri di buon Natale a tutti (anche se un po in ritardo).
Avrei bisogno del vostro prezioso aiuto per risolvere un piccolo problemino.
Dovrei cambiare il tip strip di alcuni controlli e di alcuni indicatori all'avvio di un vi rientrante, ma labview mi restituisce questo errore dal property node:
Error 1446
LabVIEW: Cannot change the description or tip strip of a control if it's used in a reentrant VI with multiple instances.
Il messaggio è abbastanza chiaro e esclude completamente questa possibilità.
Quello che vorrei sapere è se esiste qualche metodo alternativo o qualche opzione per portare a termine l'operazione.
Grazie a tutti fin da ora per le vostre risposte.
Auguri di Buon 2010 a Tutti!
Ciao
DVD
----------------------------------------
AUTORE: 129
DATA :01/01/2010 - 07:07:48
----------------------------------------
a freddo, e dopo un veglione che non mi vede proprio lucidissimo, perchè non usi nel vi una struttura a eventi e un messaggio generato al passaggio del mouse sul controllo.
ciao nicola
----------------------------------------
AUTORE: 129
DATA :03/01/2010 - 07:41:49
----------------------------------------
Che versioni di labview usi? nelle versioni più recenti c'è la possibilità di impostare "preallocate state for each clone" questo rende indipendenti i cloni dei vi e ti permette di settare i parametri.
Quindi devi usare questa impostazione per far funzionare l'editing del tip strip su Vi cloni.
----------------------------------------
AUTORE: 2550
DATA :04/01/2010 - 17:27:22
----------------------------------------
Ciao Nicola, Buon Anno. Io attualmente sto utilizzando la versione 8.5, e l'opzione "Preallocate clone for each instance" è già attivata per i vi interessati.
Ho provato anche con la versione 8.6, ma l'opzione che hai detto tu non l'ho trovata. Forse come mi hai suggerito dopo il veglione, potrei utlizzara una struttura a eventi. Sai se esiste qualcosina di gia fatto? altrimenti devo crearlo da zero.
ciao e grazie
----------------------------------------
AUTORE: 129
DATA :06/01/2010 - 05:37:42
----------------------------------------
Apri il vi, vai su file/property quindi execution, osserva dove c'è la reentrant execution ci sono due opzioni di default è "Preallocate memory for each istance", questa propietà è disponibile anche su LV8.5, però se mi dici che è già attivata mi sembra che ci sia dell'altro[attachment=1:38armexk]reentrant.png[/attachment:38armexk]
L'esempio con la event structure è questo [attachment=0:38armexk]change tip e description.png[/attachment:38armexk].
Auguri anche a te, anzi a tutti auguro buon anno e una befana senza carbone
----------------------------------------
AUTORE: 2550
DATA :11/01/2010 - 09:04:43
----------------------------------------
Ciao Nicola.
Sono stato fuori tutta la settimana e solo ora sono riuscito a leggere il post.
Purtroppo anche con le event structure il problema rimane sempre lo stesso. L'errore, infatti, deriva dal property node e quindi non credo sia aggirabile in questo modo.
Ho ricontrollato l'opzione ed è impostata esattamente come nell'immagine che hai allegato.
Al momento non mi vengono altre idee. Stanotte ci penso, nn si sa mai che la notte mi porti il consiglio giusto!
Ps. la befana è venuta e mi ha portato qualche cioccolatino e niente carbone.
ciao
DVD
----------------------------------------
AUTORE: 129
DATA :11/01/2010 - 22:49:05
----------------------------------------
Prova a postare il vi, io ho fatto una prova e a me funziona senza errore.
----------------------------------------
AUTORE: 2550
DATA :14/01/2010 - 15:51:13
----------------------------------------
Ciao. Purtroppo sono inpegnato in un altro lavoro enon ho trovato tempo per risponderti prima.
Ti allego un piccolo progettino fatto a posta per verificare questo problema.
In pratica il Vi "chiamante.vi" richiama il VI "rientrante". Quest'ultimo ha un pulsante "assegna tip" che scrive il testo contenuto nel campo "Tip Strip"
nella proprietà del campo Numeric. Ho implemementato anche la struttura che mi hai postato tu, quindi se passi con il mouse sul campo numeric ottieni lo stesso effetto della pressione del tasto. Il problema a me si evidenzia anche con questo vi.
Perdona se non è fatto a regola d'arte ma è stato fatto in 5 minuti tra una cosa e l'altra.
Fammi sapere se a te funziona.
Ciao e grazie
DVD
----------------------------------------
AUTORE: 2550
DATA :14/01/2010 - 16:06:54
----------------------------------------
dimenticato l'allegato...
----------------------------------------
AUTORE: 129
DATA :14/01/2010 - 21:44:08
----------------------------------------
Ho provato a far girare i vi e funzionano correttamente, non mi dà nessun errore.
----------------------------------------
AUTORE: 2550
DATA :15/01/2010 - 08:08:49
----------------------------------------
Ciao.
Davvero non ti dà nessun errore?
Che cosa strana. E allora perchè lo dà sempre?
Può influire il fatto che ho installato sia la 8.5 che la 8.6?
Mi sa che dovo provare su un altro pc con un'unica versione di labview installata.
tu hai qualche altra idea?
ciao e grazie
DVD
----------------------------------------
AUTORE: 129
DATA :16/01/2010 - 04:32:51
----------------------------------------
no purtroppo non ho nessuna idea,
Anche io ho diverse versioni installate sullo stesso PC, ho provato con la 8.6 e la 2009 e non mi dà errori.
----------------------------------------
AUTORE: 2550
DATA :17/01/2010 - 13:21:19
----------------------------------------
Ciao Nicola.
Ho provato anche io con la versione 8.6 e non mi da l'errore.
A questo punto sembra un baco o una limitazione dell'8.5.
devo verificare se è stato rilasciato qualche service pack o qualche patch per la 8.5 che risolva questo problema.
Se trovo qualcosa la posto qui.
grazie ancora!
ciao
DVD
----------------------------------------