================================================================================
comandare un triac con un NI9472
================================================================================
AUTORE: 3965
DATA :09/01/2014 - 15:24:05
----------------------------------------
Salve,
Lavoto con un cDAQ 9178: sto cercando di generare un segnale a 50Hz per attivare un triac e controllare i volt di alimentazione di una lamopada: insomma un dimmer...
Per generare il treno d'impulsi uso un NI9472 e con questo riesco a generare un segnale a 50Hz. Inoltre ho a disposizione un segnale 0-5V per lo zero crossing con la rete. Questo segnale lo sto leggendo con un NI9225. Il problema adesso è sincronizzare i 2 segnali e poter variare la loro fase del treno d'impulsi.
L'unica possibilitá che vedo per ritardare il treno d'impulsi e Initial delay , ma che è disponibile solo per lo start iniziale..
Non so come fare. Qualcuno ha un' idea?
----------------------------------------
AUTORE: 1670
DATA :15/01/2014 - 15:58:12
----------------------------------------
Scusami stepsan,
ti chiedo se puoi salvare il file nella versione LV 2011, così posso vedere se riesco ad aiutarti; ho anche una domanda: che risoluzione(in tempo) deve avere il dimmer ?
In genere una regolazione dal 1% al 100% è sufficiente quindi mi aspetto una risoluzione max di 100 microsec.
Grazie
----------------------------------------
================================================================================
Leggere contenuto di un programma labview
================================================================================
AUTORE: 10897
DATA :15/01/2014 - 15:12:50
----------------------------------------
Salve a tutti, sono nuovo del forum ed ovviamente scrivo per chiedere l'aiuto degli esperti!
Sono talmente ignorante e "fuori posto" relativamente a labview che non ho provato neanche a cercare la soluzione...per favore portate pazienza e cercate di farmi capire col cucchiaino
In pratica nella mia azienda abbiamo un software che gestisce la produzione da circa 15 anni che lavora sotto DB FileMaker, a corredo di questo programma all'epoca la software house ci diede due applicativi in labview che interrogavano e scrivevano sul DB.
Adesso ci vediamo costretti ad aggiornare il nostro Filemaker dalla versione 5 alla 13. E siamo costretti a capire cosa c'è dentro questi applicativi in labview o cosa fanno per poterli ricreare o quanto meno modificare per non perdere i collegamenti al DB Filemaker.
Dalla software house(che è sempre la stessa) ci dicono che la persona che si occupava di ciò è andata via, non hanno sorgenti e non sono in grado di aiutarci.
Ora non mi voglio dilungare oltre, anche se sono a disposizione per qualsiasi chiarimento .
La mia domanda è: Posso "vedere il contenuto" di questi applicativi?
----------------------------------------
AUTORE: 301
DATA :15/01/2014 - 15:54:40
----------------------------------------
Purtroppo, senza tanti giri di parole, la risposta è no.....
Purtroppo non c'è modo di "debuildare" un eseguibile fatto con il LabView.....
Aris
----------------------------------------
AUTORE: 10897
DATA :15/01/2014 - 16:12:43
----------------------------------------
Grazie per la risposta, ma che delusione...
Ma neanche a voler contattare che ne so la NI direttamente si può fare niente?? Il fatto è che all'epoca spendemmo un bel po' di soldini per questo software ed onestamente perderli così è proprio un peccato...
----------------------------------------
AUTORE: 301
DATA :15/01/2014 - 16:22:24
----------------------------------------
Non so cosa dire, anche da queste cose si riconosce (a mio avviso) la serietà di una azienda, non mi sembra vero che una SW House possa dirti che non ha i sorgenti!
Ma come lavorano?!?!
In ogni caso, credo proprio ci sia nulla da fare, un exe non può essere debuildato.
Ma tu sei sicuro che con la nuova versione del DB non vada il programma?
Aris
----------------------------------------
AUTORE: 1078
DATA :21/01/2014 - 16:07:17
----------------------------------------
Se posso aggiungere qualcosa...
Non solo non è possibile debuildare un exe Labview (nemmeno la NI è in grado di farlo) ma, oltretutto, se dovessi avere i sorgenti senza evenutali password (perchè iVI possono essere protetti con PWD) non sarebbe possibile accedere al BD e quindi sarebbero inutilizzabili....
Aggiungendomi alla polemica: Ma che software haouse e???
La cosa che mi viene da pensare è che in realtà voi abbiate solo una "licenza" di quel software e non i diritti di sviluppo, altrimenti i sorgenti avreste dovuto averli voi e non la software house!! NON so se è chiaro!
----------------------------------------
AUTORE: 129
DATA :21/01/2014 - 20:34:12
----------------------------------------
A questo punto ci sono solo due strade:
1) Verificare, come già detto sopra, se il programma così com'è può essere configurato per dialogare con la nuova versione di DB FileMaker.
2) Rifarsi fare il programma partendo dall'applicazione esistente (sempre che l'HW esistente non sia obsoleto, in pratica che ne valga la pena).
Sono d'accordo con Ricky per quanto riguarda le differenze tra acquistare solo l'applicazione o una licenza di sviluppo con sorgenti.
Nicola
----------------------------------------
================================================================================
Acceleratore/contagiri
================================================================================
AUTORE: 10902
DATA :22/01/2014 - 17:08:28
----------------------------------------
[attachment=0:2wfhc97n]Esercizio_acc-contagiri.pdf[/attachment:2wfhc97n]
Salve tutti,
io ho cominciato da poco ad usare il Labview quindi sto imparando le cose base di questo programma.Per il momento non so come fare questo esercizio
----------------------------------------
AUTORE: 482
DATA :23/01/2014 - 07:04:53
----------------------------------------
Beh mi sembra che tu sia un po' generico nella richiesta.
Cosa vuol dire "non so come fare"?
Se è un esercizio presumo sia stato dato in seguito a delle lezioni, quindi i concetti base per realizzare questo esercizio dovresti averli.
E visto che non siamo qui per regalar ela pappa pronta, presumo che il tuo problema si amettere insieme le nozioni che dovresti già avere.
Quindi procediamo per punti e poni delle domande specifiche cosi' magari possiamo aiutarti senza farti evitare di studiare
----------------------------------------
AUTORE: 129
DATA :23/01/2014 - 16:46:46
----------------------------------------
Io inizierei col disporre sul pannello i controlli e ragionare su quello che dovranno fare.
poi passi nel diagramma e inizi a crearti il codice, seguendo le indicazioni che mi sembrano veramente molto chiare del tuo pdf.
Per esempio il cambio: disponi due pulsanti 1 per UP e uno per DWN, [b:2gbw6tvx]OGNI VOLTA [/b:2gbw6tvx]che premi il tasto + [b:2gbw6tvx]devi incerementare[/b:2gbw6tvx] un indice che sarà [b:2gbw6tvx]moltiplicato per i giri[/b:2gbw6tvx] ecc.
Prima di ogni cosa creati però un ciclo di funzionamento per l'applicazione (MAI RUN CONTINUO) : un while loop con un pulsante di stop e un temporizzatore (Wait) per contenere la tua applicazione.
----------------------------------------
================================================================================
Programmare motore passo passo
================================================================================
AUTORE: 10906
DATA :28/01/2014 - 16:38:03
----------------------------------------
ciao a tutti! sono nuovo del forum ho iniziato da poco a usare labview seguendo i corsi core1 e core2 quindi mi scuso subito se non capirò subito quello che mi risponderete o se non riesco a spiegarmi bene.
detto questo, devo programmare un motorino passo passo in modo che faccia un tot di rotazioni in un verso e un tot in un altro per un numero determinato di cicli.
ad esempio che faccia 5 scatti ognuno di un determinato angolo in senso orario, poi altri 5 in senso antiorario, e tutto questo per ad esempio dieci volte.
inoltre servirebbe che si possano cambiare questi cicli di default del programma anche col programma in esecuzione e col motorino in movimento. ad esempio se durante l 'esecuzione mi accorgo che conviene fare più cicli, o più scatti in un senso o cambiare l'angolo dello scatto posso farlo? e come?
e giusto per aggiungere carne al fuoco, si può fare in modo che fra uno scatto e un altro possa trascorrere un determinato tempo? dai corsi che ho seguito mi sembra di si ma non saprei come.
se avete suggerimenti o spiegazioni da darmi in merito, o esempi di programmi, non esitate ad aiutarmi sono un po in crisi
so che comunque è richiesto un linguaggio particolare per comprendere il tutto, ma se per favore potete essere più espliciti possibili sarebbe meglio proprio perchè ho appena iniziato a smanettare con labview.
se avete bisogno di maggior chiarezza in merito al mio problema ditemelo
vi ringrazio in anticipo per l'attenzione
----------------------------------------
AUTORE: 482
DATA :29/01/2014 - 07:16:46
----------------------------------------
Io prima di mettermi a programmare cercherei di mettere giu' uno schema sequenziale di cosa deve fare il tuo programma.
Innanzitutto far ruotare il motore.
A)Inizio Ciclo principale
1° ciclo interno
1- far ruotare il motore verso DX
2- attesa
fine 1° ciclo interno
2° ciclo interno
1- far ruotare il motore verso SX
2- attesa
fine 2° ciclo interno
B)attesa
C)fine ciclo principale
i punti 1 e 2 di ogni ciclo interno avranno dei loro controlli a schermo che permettono di:
1- stabilire di quanto ruotare (angolo o tempo che sia)
2- stabilire quanto attendere tra uno scatto e l'altro
Ogni ciclo, interno ed esterno avrà un suo controllo per stabilire quante volte va ripetuto il ciclo.
QUindi prima di iniziare la programmazione vera e propria potresti imbastire una struttura di questo tipo che poi andrai a riempire con il codice necessario a far ruotare fisicamente il motore.
Per esempio potresti sostituire il motore con un indicatore numerico al quale sommi o sottrai 1 ad ogni step del ciclo.
----------------------------------------
AUTORE: 10906
DATA :30/01/2014 - 15:51:51
----------------------------------------
allora innanzi gepponline tutto grazie davvero per il suggerimento, ho seguito il tuo consiglio e ho preparato un programmino con i cicli come mi hai detto tu.
una struttura for loop per la rotazione in senso orario seguito da un for loop per quella in senso antiorario.
il numero di passi/step del motore da compiere in un senso o nell' altro è controllato da dei controlli sul front panel e corrisponde quindi al numero di cicli da eseguire rispettivamente nelle due strutture for loop.
entrambe le strutture sono contenute da una for loop più grande che comanda quante volte bisogna eseguire le operazioni nelle strutture al suo interno.
ho inoltre inserito dei controlli per temporizzare i cicli.
allego il file così si capisce di cosa sto parlando, se volete dargli un'occhiata, è proprio un programmino semplice semplice.
per verificarne la funzionalità ho inserito delle operazioni di somma da iterare nei vari cicli.
fatto questo utile passaggio mi servirebbe ora una mano per programmare fisicamente lo spostamento del motore, penso che l'idea migliore sia di creare a questo punto un subVI che imposti la rotazione di un passo in un verso del motore e di quanto deve ruotare, il tutto da inserire in ognuna delle due strutture for loop.
queste strutture già pronte diranno quanti passi fare in un senso e quanti nell'altro. se avete suggerimenti, consigli,esempi già pronti, idee diverse sono ben accetti
----------------------------------------
================================================================================
schede 7330 + driver 7604
================================================================================
AUTORE: 10870
DATA :30/01/2014 - 15:12:40
----------------------------------------
Salve a tutti.
Devo fare un semplice programma per gestire 4 assi di motori passo passo (e.s. 4 passi cw / 2passi ccw).
Ho provato a muovere gli assi con il measurement ed automation ed e' tutto ok anche se non sono riuscito a dare il reverse per far giarae il motore dal verso opposto.
Purtroppo ho labview 8 e non ho trovato esempi per questo tipo di gestione.
Ho cominciato a scrivere il software inizializzando la scheda 7330 e impostando i parametri del 7604 ma non riesco a capire la logica per far muovere i motori o meglio la sequenza di comandi/vi da mettere nel ciclo.
Qualcuno mi sa' dare un suggerimento ? Grazie
Marco
----------------------------------------
================================================================================
simulation pid
================================================================================
AUTORE: 10911
DATA :01/02/2014 - 10:22:29
----------------------------------------
Salve,
sono nuovo di questo forum e alle prime armi con Labview. vorrei chiedervi un aiuto: vorrei effettuare la simulazione di un controllo PID con Labview, e lo sto facendo basandomi su un esempio trovato nello stesso software, che si chiama "On-Off Controller". chiaramente l esempio mostra un controllo On-Off di temperatura all interno di una casa. partendo da questo esempio ho voluto vedere cosa succedeva utilizzando un controllo PID, e ho quindi effettuato alcune modifiche. non sono però del tutto convinto di aver proceduto nel migliore dei modi. avrei quindi diverse domande da porvi, e vi allego anche il VI da me realizzato finora:
1) il blocchetto PID può comunicare direttamente con la funzione di trasferimento rappresentativa della camera? oppure devo utilizzare un generatore di impulsi?
2) per simulare l'immissione di calore, devo cmq utilizzare qualcosa che simuli una produzione di calore oppure no?
3) il blocco integratore posizionato successivamente alla funzione di trasferimento ha uno scopo ben preciso?
4) esiste un modo per effettuare il tuning su Labview partendo dalla funzione di trasferimento del sistema?
scusate se sono stato prolisso. spero in un vostro cortese aiuto. Grazie
Alessandro
----------------------------------------
================================================================================
coordinate 3d da file e colorazione
================================================================================
AUTORE: 10912
DATA :02/02/2014 - 15:28:56
----------------------------------------
Salve a tutti, avrei bisogno di un consiglio: ho delle coordinate x,y,z su un file di testo, rappresentanti un centinaio di punti nello spazio. Vorrei disegnare un oggetto 3d che contenga questi punti (supponiamo che ogni punto sia una piccola sfera), poi avrei bisogno che ognuna di queste sfere possa essere colorata a seconda di un certo ingresso (in real-time). E' possibile secondo voi?
Grazie mille!
L
----------------------------------------
AUTORE: 43
DATA :03/02/2014 - 11:30:11
----------------------------------------
[quote="lucacrippa":2bip14cq]Salve a tutti, avrei bisogno di un consiglio: ho delle coordinate x,y,z su un file di testo, rappresentanti un centinaio di punti nello spazio. Vorrei disegnare un oggetto 3d che contenga questi punti (supponiamo che ogni punto sia una piccola sfera), poi avrei bisogno che ognuna di queste sfere possa essere colorata a seconda di un certo ingresso (in real-time). E' possibile secondo voi?
Grazie mille!
L[/quote:2bip14cq]
mmmmm.
Sei sicuro che LabVIEW sia lo strumento giusto per fare questo disegno 3D?
la vedo dura....
Ma vuoi disegnare un oggetto "wire frame" o comprensivo di "facce" di un ipotetico solido?
riguardo poi le sfere... no si può fare, penso.. Puoi avere dei marker bidimensionali colorati in funzione della quota Z.....
se invece usassi un semplice intensity chart?
bye
----------------------------------------
AUTORE: 10912
DATA :14/02/2014 - 15:29:09
----------------------------------------
Sì ce l'ho fatta, non è stato molto difficile in realtà.
Eh, usiamo strumentazione national instruments e tutta la data acquisition è fatta con labview...
----------------------------------------
AUTORE: 1078
DATA :17/02/2014 - 10:19:14
----------------------------------------
Bello... potrebbe servire anche a me!
Posteresti un VI di esempio su come si fa?
----------------------------------------
================================================================================
Array stringhe come ingresso Invoke Node
================================================================================
AUTORE: 10913
DATA :03/02/2014 - 14:25:38
----------------------------------------
Salve a tutti, sono nuovo del forum e alle prime armi con la "programmazione" in Labview.
Vi illustro il mio problema (probabilmente la richiesta sembrerà banale):
ho scritto un semplice programmino (di cui allego la foto) che fa semplicemente il ping di un indirizzo IP e mi restituisce un led verde in caso di esito positivo.
Poichè devo pingare più indirizzi, e volevo evitare di ridondare il codice, volevo fare in modo di utilizzare la stessa VI utilizzando più ingressi (string costant) e più relative uscite (led).
Attendendo una risposta vi ringrazio in anticipo.
----------------------------------------
AUTORE: 43
DATA :03/02/2014 - 16:42:35
----------------------------------------
Racchiudi quello che hai postato in un ciclo for.
l'arrey di stringhe (input) e quello di booleani (output) devono stare all'esterno del ciclo.
Per evitare inutili e pericolosi parallelismi, ti consiglio di connettere gli errori fra una chiamata e la successiva.
è cmq più pulito distruggere i Reference creati al termine, cioè dopo la ricezione della risposta al ping, sfruttando proprio la "catena" degli errori.
bye
----------------------------------------
AUTORE: 1078
DATA :05/02/2014 - 16:16:11
----------------------------------------
Io metterei all'esterno del ciclo for (come suggerito da paracarro) anche il costruttore dell'oggetto [i:2ofgug2i]Ping[/i:2ofgug2i] ([b:2ofgug2i]Costructor Node[/b:2ofgug2i]) e il [b:2ofgug2i]Close reference[/b:2ofgug2i] ad esso riferito. Ricordati però che per evitare il problema del loop con zero elementi, devi passare il riferimento del al Ping ottenuto dal costructor node come [b:2ofgug2i]Shift Register[/b:2ofgug2i].
----------------------------------------
================================================================================
fit non lineare per spettro luce bianca
================================================================================
AUTORE: 10915
DATA :05/02/2014 - 14:59:37
----------------------------------------
Buongiorno a tutti, sono nuova nel forum e inesperta di labview.
Avrei bisogno di eseguire un fit di uno spettro di luce bianca, per monitorare come cambia nel tempo il punto di flesso di un dip (picco verso il basso) presente in esso (mi aspetto uno shift laterale durante la prova sperimentale).
Premetto che lo spettrometro è già connesso con labview e una .vi appositamente creata me lo mostra in tempo reale.
Inoltre, spulciando qua e là, ho notato che in molti parlano di "nonlinear Levenberg-Marquardt" per fit di questo tipo, può andare bene anche se la curva non ha una forma regolare tipo gaussiana o lorentziana?
Grazie,
Ciao
----------------------------------------
================================================================================
Eseguire un Pannello frontale in un altro
================================================================================
AUTORE: 10918
DATA :09/02/2014 - 09:53:16
----------------------------------------
E' possibile eseguire un secondo pannello frontale (e quindi le operazioni associate) in un altro pannello frontale principale?
Caso pratico. Ho una VI principale (Es. MAIN.VI) con la sua interfaccia grafica formata da 6 diverse tab ognuna con la propria funzionalità. In una di queste tab ho la necessità di mostrare ed eseguire un'altra interfaccia grafica di un'altra VI (Calcola.VI).
Ho creato un pannello SubVI in MAIN:VI in cui visualizzo la grafica della VI secondaria (Calcola.VI) ma non viene eseguita, quindi i pulsanti sono disabilitati e non esegue nessun calcolo.
Spero qualcuno abbia già affrontato questo problema e sappia illuminarmi!
----------------------------------------
AUTORE: 43
DATA :10/02/2014 - 08:30:15
----------------------------------------
[quote="Fpas":1hz1p039]E' possibile eseguire un secondo pannello frontale (e quindi le operazioni associate) in un altro pannello frontale principale?
Caso pratico. Ho una VI principale (Es. MAIN.VI) con la sua interfaccia grafica formata da 6 diverse tab ognuna con la propria funzionalità. In una di queste tab ho la necessità di mostrare ed eseguire un'altra interfaccia grafica di un'altra VI (Calcola.VI).
Ho creato un pannello SubVI in MAIN:VI in cui visualizzo la grafica della VI secondaria (Calcola.VI) ma non viene eseguita, quindi i pulsanti sono disabilitati e non esegue nessun calcolo.
Spero qualcuno abbia già affrontato questo problema e sappia illuminarmi![/quote:1hz1p039]
IN LabVIEW è possibile eseguire una interfaccia FP (FrontPanel) dentro un'altra utilizzando il controllo "SubPanel" (menu del FP -> Containers -> Subpanel).
Non ho capito invece come è "sincronizzato" il subVI edil VI principale, se il subVI deve girare in parallelo ed ogni tanto sideve sincronizzare oppure se deve essere richiamato normalmente come una sottofunzione.
In questo secondo caso , è sufficiente attivare i seguenti attributi del subVI:
Da FP: tasto dx del mouse sull'icona in alto a dx scegliere "VI Properties..."
dal pannello che appare scegliere come "Category" "Windows Appearance" e premere il tasto "Customize..."
Nel nuovo popup abilitare "Show Front Panel when Called" e quindi abilitare "Close afterwards if originally closed" e confermare premendo il tasto "OK" (premere OK anche nel pannello sottostante)
In questo modo il pannello del tuo subVI apparirà qundo verrò chiamato e scomparirà al termine della chiamata.
Non puoi spiegare meglio il contesto per farci capire cosa deve fare?
bye
----------------------------------------
AUTORE: 10918
DATA :10/02/2014 - 16:00:53
----------------------------------------
Hai già risposto alla mia domanda ampiamente e dettagliatamente e ho pure risolto il mio problema.
Ho creato una VI principale. Nel front panel principale devo visualizzare un front panel di una VI secondaria. La SubVI viene eseguita quando è chiamata e chiusa al termine della sua esecuzione. Al termine dell'esecuzione della SubVI si deve ritornare alla VI principale (La home della VI principale).
Ti ringrazio infinitamente Paracarro. Inoltre spero che possa servire anche a qualcun'altro quanto hai scritto.
----------------------------------------
================================================================================
custom text markers x controllo knob
================================================================================
AUTORE: 43
DATA :14/02/2014 - 10:30:04
----------------------------------------
Agemdo sulle proprietà di un controllo\indicatore di tipo Knob (si trova nel menu FP "Numeric"), è abbastanza facile assegnare delle label ad ogni valore possibile del knob, come se si trattasse di un controllo Ring.
Diverso è assegnare gli stessi testi e valori programmaticamente.
La soluzione non è per niente banale.
[url=http://digital.ni.com/public.nsf/allkb/D7A31B0D15E20FDB86256EDF007EA122:3oj9p9tc]Qua[/url:3oj9p9tc] c'è il link alla spiegazione di come procedere, mentre in allegato c'è un esempio.
[attachment=0:3oj9p9tc]xRicky.vi[/attachment:3oj9p9tc]
Spero possa essere utile a qualcuno.
----------------------------------------
AUTORE: 660
DATA :21/02/2014 - 20:48:20
----------------------------------------
Beh... al momento non mi serve però, come si dice, prendi l'arte e mettila da parte...
Grazie
Max
----------------------------------------
================================================================================
label per oggetto 3d
================================================================================
AUTORE: 10912
DATA :14/02/2014 - 15:06:24
----------------------------------------
Buonasera!
Ho creato un vi che, a fronte di un file di coordinate x,y,z, mi crea 110 sferette in un grafico 3D, disposte in simmetria sferica. Vorrei fare in modo che, al click su un bottone booleano, possano essere visualizzate anche le coordinate, magari sotto forma di testo, accanto ad ogni sferetta.
E' possibile?
Grazie!
----------------------------------------
AUTORE: 43
DATA :17/02/2014 - 13:00:35
----------------------------------------
Per aggiugere delle scritte ad un grafico 2D o 3D potresti usare i cursori.
Ti consiglio di valutare alternative al metodo che vuoi implementare xkè le scritte potrebbero sovrapporsi fino ad essere illeggibili.
Un cursore "snap to plot" x esempio, potrebbe essere una valida alternativa.
Oppure usare una list box con la lista completa dei punti. Clickando nella list box si potrebbe evidenziare in qualche modo il punto(dimensione, colore) selezionato.
bye
----------------------------------------
AUTORE: 10912
DATA :20/02/2014 - 15:53:56
----------------------------------------
come posso fare?
----------------------------------------
AUTORE: 43
DATA :21/02/2014 - 08:07:33
----------------------------------------
[quote="lucacrippa":dc3bpyyo]come posso fare?[/quote:dc3bpyyo]
Devi aggiungere programmaticamente cursori uno per ogni punto.
Il testo della label di ogni cursore conterrà il testo da visualizzare.
I cursori devono essere fissi (locked) per cui non deve essere possibile alcuna interazione con l'operatore che vede il grafico.
Ogni cursore deve essere praticamente invisibile (disabilitare visualizzazione crossair).
bye
----------------------------------------
================================================================================
Case structure
================================================================================
AUTORE: 10874
DATA :19/02/2014 - 18:32:28
----------------------------------------
Ragazzi ho un problema con LabVIEW. Ho un vettore colonna e poi ho uno scalare pari a -1. Vorrei che quando tutte le celle del vettore colonna sono uguali a -1 voglio che si attivi il true (o false) è lo setto di un case structure. Però quando faccio questa cosa mi esce un errore e mi dice che ho collegato due terminali di dimensioni differenti. Come posso fare per by-passare il problema? Qual' è il problema?
Grazie mille a chi mi da un aiuto o comunque un informazione.
----------------------------------------
AUTORE: 482
DATA :20/02/2014 - 07:31:20
----------------------------------------
non vedendo l'esempio ipotizzo solo una soluzione.
Vai sul blocchetto dell'uguale che presumo tu abbia messo.
Clikka col destro sul terminale di uscita e seleziona concatenate input o se è già selezionato deselezionalo e dovrebbe risolversi il problema.
Se cosi' non è, prova a postare un esempio per far capire meglio la situazione.
----------------------------------------
AUTORE: 43
DATA :20/02/2014 - 08:20:21
----------------------------------------
[quote="Mark87g":1pv9zgbb]Ragazzi ho un problema con LabVIEW. Ho un vettore colonna e poi ho uno scalare pari a -1. Vorrei che quando tutte le celle del vettore colonna sono uguali a -1 voglio che si attivi il true (o false) è lo setto di un case structure. Però quando faccio questa cosa mi esce un errore e mi dice che ho collegato due terminali di dimensioni differenti. Come posso fare per by-passare il problema? Qual' è il problema?
Grazie mille a chi mi da un aiuto o comunque un informazione.[/quote:1pv9zgbb]
Come dice geppo le informazioni che ci metti a disposizione sono poche, ma, a domanda generica si deve dare una risposta altrettanto generica.
L'errore che ti viene segnalato indica che stai mettendo un array di valori dove andrebbe infilato un valore singolo. Il paragone "calzante" è che tu vuoi "mettrre non tanto 1 piede in 2 scarpe, ma 2 o + piedi in 1 scarpa".
Va da se che devi racchiudere il tuo "case" dentro una struttura iterativa tipo while o for che ti consente di effettuare una scelta(case) per ogni elemento del tuo array.
bye
----------------------------------------
================================================================================
Data dashboard e shared variables
================================================================================
AUTORE: 10926
DATA :21/02/2014 - 19:34:31
----------------------------------------
Buonasera,
avete presente la recente app di National Instruments "Data dashboard"? Ecco, io ho acquistato la rivista ufficiale di LAbview dove ho trovato un interessante tutorial per compiere i primi passi con tale App. Il problema per me si pone nel momento in cui devo collegare la mia shared variable al tablet. Non capisco quale indirizzo di quale server devo inserire nell'apposito spazio nella applicazione android.
Qualche idee?
----------------------------------------
AUTORE: 482
DATA :24/02/2014 - 07:05:40
----------------------------------------
Si ipotizza che l'pplicazione labview che gira e che fornisce i valori da visualizzare funga da server.
Quindi è l'indirizzo di quel pc che deve essere innanzitutto pubblico se vuoi raggiungerlo tramite internet e non tramite una LAN aziendale e poi su quel pc dovrai avviare la pubblicazione delle shared variable.
----------------------------------------
AUTORE: 10926
DATA :24/02/2014 - 18:06:50
----------------------------------------
Quindi come faccio a rendere il mio indirizzo pubblico?
----------------------------------------
AUTORE: 482
DATA :25/02/2014 - 07:10:09
----------------------------------------
Ci sono diversi modi, uno tra questi è il DDSN.
Ma ti conviene cercare con Google perchè questo esula dall' argomento labview e non vorrei dire castronerie visto che conosco la procedura con DDSN ma non l'ho mai fatto nella pratica.
----------------------------------------
================================================================================
PXI 2510
================================================================================
AUTORE: 2196
DATA :24/02/2014 - 09:03:24
----------------------------------------
Ciao,
se sulla pxi 2510 tramite labview 2012 e niswitch provo ad aprire un certo numero di relays mi appare comare l'errore con il codice hex BFFA423. Mai capitato a nessuno ?
----------------------------------------
================================================================================
Problema di variabili su un programma di etichette
================================================================================
AUTORE: 10927
DATA :25/02/2014 - 15:14:41
----------------------------------------
Buongiorno,
ho seriamente la necessità di risolvere un problema che è uscito durante lo sviluppo di un programma per la realizzazione di etichette. Premetto che sono un neofita in materia!!!!!
Il problema è il seguente: se il programma viene fatto girare tramite l'highlight o step by step (i tre pulsanti) il tutto funziona altrimenti il programma fa stampare delle informazioni non corrette, tranne una che la considera sempre (ALIMENTAZIONE).
Nella speranza che qualcuno mi possa aiutare vi allego il programma.
Grazie 1000
----------------------------------------
AUTORE: 482
DATA :26/02/2014 - 08:26:42
----------------------------------------
Ci ho provato, ma è un Vi con troooooooppe cose e troppi vi e controlli mancanti.
QUindi partiamo per grandi linee.
Il primo suggerimento è ISOLARE il problema.
Devi cercare di toglier etutto il superfluo e arrivare fino al punto in cui funziona correttamente, magari collegando delle costanti al posto di controlli ecc.
Solitamente il comportamento che descrivi avviene quando non c'e' sincronizzazione tra le procedure che possono essere eseguite contemporaneamente e che se non collegate in qualche modo non puoi stabilire quale verrà eseguita per prima.
Quindi direi di iniziare ad individuare quali procedure sono in parallelo e capire se c'e' qualche scrittura su una stessa variabile ad esempio che puo' compromettere il corretto funzionamento.
Un esempio puo' essere, Creo un case di inizializzazioen delle variabili e in parallelo un case che mi setta le variabili ad un valore letto da file.
Se non metto un filo che collega l'inizializzazione alla lettura del file, le due cose potrebbero invertirsi, quindi leggere prima dal file e poi inizializzarle e quindi perderei la lettura.
Spero di essere stato chiaro.
----------------------------------------
AUTORE: 10927
DATA :26/02/2014 - 08:54:50
----------------------------------------
Ciao,
ti ringrazio per i suggerimenti.. nel frattempo ho capito il dove si trova il problema ma non so come risolverlo!!! Il problema è nel SubVi della Stampa, è in questo punto che se eseguo l'applicazione, senza debug passo passo, leggo i valori di default del SubVi e non mi aggiorna i valori che ho inserito da Front Panel del Vi principale. L'unico dato che mi viene sempre aggiornato è il dato ALIMENTAZIONE che è un enum!!Perchè non mi aggiorna gli altri dati?? Ti ringrazio per l'aiuto e ti allego il file del SubVi
----------------------------------------
AUTORE: 482
DATA :26/02/2014 - 10:18:08
----------------------------------------
Nel tuo VI ci sono due grossi problemi.
1) come ti dicevo, non c'e' sequenzialità. Tu associ i valori ai controlli e contemporaneamente lanci la stampa, quindi basta che crei una sequence in cui nel primo step metti la'ssegnazione dei valori e nel secondo lanci la stampa.
2) Passi i valori al subvi tramite variabili globali. Non è un metodo molto ortodosso ed efficace. La soluzione ottimale è collegare gli oggetti del front panel a dei terminali del subvi e collegare dall'esterno direttamente i fili a quei valori cosicchè nel vi dovrai solo lanciare la stampa e non fare l'assegnazione dei valori.
----------------------------------------
AUTORE: 10927
DATA :26/02/2014 - 11:07:34
----------------------------------------
Grazie mille sei stato gentilissimo....adesso funziona!!!
Buona giornata
Ivan
----------------------------------------
================================================================================
Aprire contenuto URL tramite proxy
================================================================================
AUTORE: 482
DATA :26/02/2014 - 10:13:01
----------------------------------------
...ma ciao!
vorrei realizzare un Vi che vada a leggermi il sorgente di una certa URL per poi fare la manipolazione dei dati che leggo.
Il problema è che ho provato diverse soluzioni ma mi davano tutte errore, al che ho ipotizzato che fosse per la questione proxy.
Sapete se c'e' modo di settare i parametri del proxy in qualch emodo per accedere ad una URL?
----------------------------------------
AUTORE: 301
DATA :28/02/2014 - 08:14:21
----------------------------------------
Ciao gepponline,
vedi il link sotto, spero ti sia di aiuto....
[url:39n12pga]http://digital.ni.com/public.nsf/allkb/C5F92CF005F0BD9F862568580001AD41[/url:39n12pga]
----------------------------------------
================================================================================
lettura array
================================================================================
AUTORE: 7113
DATA :01/03/2014 - 10:25:12
----------------------------------------
Ciao a tutti,
scusate se è una domanda banale ma sono nuovo di LabView.
Ho letto un file .txt a 2 colonne con 'Read From Spreadsheet File.vi' impostato come stringa e l'ho copiato in un indicatore array, fino a qui tutto bene.
Ora vorrei leggere l'array per analizzare i dati, come posso fare?
Non vorrei rileggere continuamente il file.
Grazie
----------------------------------------
AUTORE: 645
DATA :01/03/2014 - 14:02:43
----------------------------------------
Il blocco di lettura dati da un foglio di calcolo ti restituisce un array: utilizzando il filo collegato all'array porti in giro nel VI la variabile e non rileggi più il file.
----------------------------------------
AUTORE: 7113
DATA :01/03/2014 - 15:10:18
----------------------------------------
Ok grazie faccio un pò di prove
----------------------------------------
================================================================================
Simboli speciali
================================================================================
AUTORE: 10927
DATA :05/03/2014 - 11:24:38
----------------------------------------
Qualcuno sa come possono essere inseriti i seguenti caratteri speciali: ≈ ≡ Ω
Ho provato con font Arial e su Word il codice ASCII funziona (Alt + 8776, Alt + 8801 e Alt + 8486)mentre sul FP non corrisponde al valore indicato. Inoltre ho provato anche a fare un banalissimo COPIA-INCOLLA ma non funziona, mi fa vedere "?".
----------------------------------------
AUTORE: 645
DATA :06/03/2014 - 18:38:28
----------------------------------------
Hai provato a modificare il carattere del controllo o dell'indicatore dal menù?
----------------------------------------
AUTORE: 10927
DATA :07/03/2014 - 07:31:12
----------------------------------------
Se cambio il font dal menu mettendo Symbol riesco a fare solamente l'OHM e non gli altri caratteri e oltre a questo il problema è che devo permettere all'utente la possibilità di fare copia/incolla di questi caratteri speciali in diversi controlli/indicatori che hanno un font classico tipo Arial.
Aiutoooo grazie
----------------------------------------
AUTORE: 129
DATA :18/04/2014 - 22:25:51
----------------------------------------
Dovresti passare con la codifica ASCII con byte array to string, però è a 8bit e il simbolo dell'ohm non c'è nella tabella a 8bit.
Altrimenti passi per l'impostazione del font in symbol vedi [url=http://forums.ni.com/t5/LabVIEW/How-to-display-ohm-sign-in-string-indicator/td-p/978340:3700z8qz]qui.[/url:3700z8qz]
----------------------------------------
AUTORE: 10927
DATA :22/04/2014 - 07:21:40
----------------------------------------
Ti ringrazio
----------------------------------------
================================================================================
Misura Time Delay tra ingresso e risposte in uscita.
================================================================================
AUTORE: 10930
DATA :06/03/2014 - 17:11:17
----------------------------------------
Ciao a tutti,
non sono ancora espertissima con Labview e dovrei implementare una soluzione che faccia la seguente cosa:
Ho una scheda NI DAQ 6351. Devo generare un'onda quadra a 45 Hz e inviarla ad una piattaforma con un PLC e due stazioni di I/O. Quindi, sulla piattaforma, avrò un ingresso e tre uscite di risposta a quest'onda
Sulla mia scheda DAQ, invece, avrò l'uscita, che collegherò direttamente ad un ingresso del DAQ in modo da usarlo come segnale di riferimento, e la stessa andrà anche su uno dei dispositivi della piattaforma, e i tre ingressi (che saranno le 3 risposte provenienti dalla piattaforma), quindi 4 ingressi in totale (il mio riferimento e le tre risposte).
Il mio problema è cercare di calcolare, per ogni fronte di salita di ogni canale di ingresso al daq, il tempo di ritardo tra questo e il relativo fronte di salita del riferimento. Dovrò acquisire 10.000 fronti per ogni canale di ingresso (cioè per le tre onde quadre di risposta) e calcolare, quindi, 10.000 tempi di ritardo per ogni canale.
Questo, lo dovrò fare sia per il caso di segnali tutti analogici che segnali tutti digitali.
Attualmente questa cosa viene fatta manualmente, con l'uso di un generatore d'onda ed un oscilloscopio. Io devo sostituire il generatore e l'oscilloscopio con il DAQ NI e automatizzare questo tipo di test.
Spero di avere illustrato il problema abbastanza chiaramente e di non essere stata troppo confusionaria e che qualcuno mi possa dare una mano......visto che dovrei fare il tutto entro la prossima settimana
!!
GRAZIE MILLE IN ANTICIPO
.
----------------------------------------
AUTORE: 301
DATA :07/03/2014 - 07:08:15
----------------------------------------
Buon giorno!
Bèh, a grandi linee ti direi di trattare i tuoi 4 segnali in maniera separata e di crearti un "semplice" contatore che si azzera sul fronte di salita del segnale di riferimento e ti restituisce il valore AL fronte di salita del tuo segnale.
Ti allego un piccolo esempio di un modulo timer....
Aris
----------------------------------------
AUTORE: 10930
DATA :11/03/2014 - 21:11:03
----------------------------------------
Ciao Aris,
grazie dell'aiuto.Darò un'occhiata al più presto
----------------------------------------
================================================================================
sbRIO 9636 interfaccie
================================================================================
AUTORE: 674
DATA :17/03/2014 - 07:37:33
----------------------------------------
Buongiorno a tutti, volevo sapere se qualcuno di voi è a conoscenza di schede per interfacciare gli I/O digitali della sbRIO 9636 con il mondo industriale ( i soliti +24V ).
Non mi risulta che National abbia costruito nessuna daughter board per questa sbRIO.
Ringrazio in anticipo eventuali suggerimenti.
Grazie
Whisky
----------------------------------------
================================================================================
Interpretazione e compilazione
================================================================================
AUTORE: 10932
DATA :17/03/2014 - 10:06:28
----------------------------------------
Buongiorno a tutti,
sono nuovo del forum, e avrei una domanda per voi esperti. Mi sembra di aver letto su labviewworld che LabVIEW è compilato e non interpretato. Qualcuno mi ha detto che il linguaggio G viene trasformato in C e poi compilato. Ma allora, perchè i vi vengono eseguiti all'interno di LabVIEW stesso e non viene creato un .exe (in Windows)? LabVIEW non fa da interprete?
Grazie
----------------------------------------
AUTORE: 1323
DATA :17/03/2014 - 14:36:19
----------------------------------------
Ciao,
se vuoi maggiori dettagli sul compilatore di LabVIEW le puoi trovare qui:
http://www.ni.com/white-paper/11472/it/
Invece per creare un eseguibile è necessario l'Application Builder, che è incluso nel pacchetto LabVIEW Professional ed invece disponibile come pacchetto a pagamento opzionale per LabVIEW Base e Full; le istruzioni su come usarlo sono qui:
www.ni.com/white-paper/4039/en/
Ciao!
----------------------------------------
AUTORE: 10932
DATA :20/03/2014 - 09:33:54
----------------------------------------
Grazie per la risposta, anche se la pagina che hai indicato riguardante il compilatore è proprio quella che avevo letto su labviewworld. Quello che capisco è che, senza l'Application Builder, si compila il vi senza creare l'eseguibile. Si può parlare a questo punto di compilazione? Qual è la funzione di LabVIEW in fase di esecuzione, quando il vi viene eseguito al suo interno? Se non è quella di interprete, che funzione ha?
Grazie
Ciao
----------------------------------------
AUTORE: 10932
DATA :23/03/2014 - 14:32:50
----------------------------------------
Nessuno mi sa dire niente?
----------------------------------------
AUTORE: 129
DATA :24/03/2014 - 22:08:36
----------------------------------------
In ogni caso è compilato, anche se come dici nella fase di editing o sviluppo in G non ci sono fasi simili alla compilazione di un exe.
----------------------------------------
================================================================================
reset array
================================================================================
AUTORE: 7113
DATA :22/03/2014 - 10:14:44
----------------------------------------
Ciao a tutti,
ho un problema con gli array (scusate se è banale?)
1 - leggo delle stringhe da un file e le inserisco in un array (build array)
2 - leggo un secondo file e inserisco le stringhe nel solito array
mi trovo nell'array sia le stringhe del primo file che del secondo file.
Vorrei invece avere soltanto le stringhe dell'ultimo file letto.
Ho pensato di riscrivere le stringhe dalla prima riga, però se l'ultimo file letto ha meno stringhe di quello precedente mi potrei trovare comunque alcune stringhe non desiderate.
Dovrei fare un reset dell'array prima di leggere i file in modo da avere sempre un array vuoto, Come posso fare?
----------------------------------------
AUTORE: 3428
DATA :22/03/2014 - 12:44:07
----------------------------------------
prima colleghi una costante array vouta all'array e poi inserisci il secondo file
----------------------------------------
AUTORE: 7113
DATA :22/03/2014 - 16:26:17
----------------------------------------
Ok, ho provato ma il feedback note che uso nel build array rimane all'ultimo valore inserito nell'array, si riazzera solo quando chiudo l'applicazione.
Altri suggerimenti?
Grazie
----------------------------------------
AUTORE: 3428
DATA :23/03/2014 - 15:34:54
----------------------------------------
Ti invio un esmpio di quello che dicevo.
----------------------------------------
AUTORE: 7113
DATA :23/03/2014 - 17:03:32
----------------------------------------
OK grazie molto utile,
se a qualcuno potesse interessare ho risolto anche sostituendo il feedback con un ciclo indicizzato
----------------------------------------
================================================================================
Basi gestione GPIB
================================================================================
AUTORE: 10938
DATA :28/03/2014 - 22:34:51
----------------------------------------
Ciao a tutti,
Sono alle prime armi con Labview , arrivo dalla programmazione in VB 6.
Sono alla ricerca di documentazione relativa alla gestione di strumentazione via Gpib . In rete non riesco a trovare niente di chiaro, solo accenni e niente di più. Potete darmi qualche dritta?
Grazie Daniele
----------------------------------------
AUTORE: 645
DATA :29/03/2014 - 11:17:40
----------------------------------------
Ciao,
hai guardato http://forums.ni.com/t5/Instrument-Cont ... -p/1052421 per un inizio sul driver necessario e https://www.ni.com/gettingstarted/setup ... onnect.htm per farsi un'idea?
Che strumenti hai a disposizione? Utilizzi qualche scheda in particolare?
LabView permette la comunicazione con sistemi esterni con modalità molto simili tra loro indipendentemente dal tipo di bus: apri il collegamento, leggi o scrivi valori, chiudi il collegamento alla fine. Utilizzando i blocchi dedicati al tipo di comunicazione scelta.
----------------------------------------
AUTORE: 10938
DATA :29/03/2014 - 20:47:37
----------------------------------------
Grazie,
Darò un'occhiata . Dispongo e devo interfacciarmi con oscilloscopi, generatori di funzioni , alimentatori , multimetri analizzatori di spetto ecc.....
Ciao ed ancora grazie
----------------------------------------
AUTORE: 645
DATA :31/03/2014 - 18:07:36
----------------------------------------
Nei manuali degli strumenti dovresti trovare le stringhe alfanumeriche da inviare allo strumento per chiedere dati e informazioni tramite comunicazione seriale. Altrimenti puoi utilizzare i blocchi GPIB di LabView.
----------------------------------------
================================================================================
"Select vi..." da tasto dx che non funziona!
================================================================================
AUTORE: 3428
DATA :31/03/2014 - 10:29:11
----------------------------------------
Ciao,
non mi funzionava più il select vi con il tasto destro ovvero mi fa selezionare la vi dal browse ma non me la fa nè vedere nè appoggiare sul block diagram.
Stessa cosa con il select control...
L'unico modo per aggiungere una vi è farlo direttamente con il drag e drop o da cartella di windows o da progetto e capite che non è perniente comodo..
Ho disinstallato e reinstallato labview e il tutto è tornato a funzionare normalmente fino al collegamento del secondo monitor al pc e da li in poi non ha più funzionato un'altra volta!!!
Ho dato un'occhiata sul web e sembra essere veramentre il secondo monitor attaccato al pc ma non ci sono altre info sulla soluzione.
Ho già cancellato il file LABVIEW.ini ma non risolve.
Scollegando il monitor non funziona ugualmente anche riavviando il pc e lasciandolo scollegato..
Windows 7 professional x64
Labview 2010 sp1
Help!!
----------------------------------------
AUTORE: 3428
DATA :31/03/2014 - 11:08:56
----------------------------------------
http://forums.ni.com/t5/LabVIEW/select- ... -p/2050596
http://forums.ni.com/t5/LabVIEW/Right-c ... -p/1893769
i link
----------------------------------------
AUTORE: 301
DATA :01/04/2014 - 07:19:32
----------------------------------------
Credo sia proprio un bego (direi della 2013).
Succede anche a me.....
Aris
----------------------------------------
AUTORE: 3428
DATA :01/04/2014 - 07:22:51
----------------------------------------
della 2013????
io ho LV 2010 sp1!
----------------------------------------
AUTORE: 301
DATA :01/04/2014 - 07:24:13
----------------------------------------
Madooooooo, no no, io l'ho notato sul 2013 fresco fresco.....
e direi che non mi era mai successo prima.....
Aris
----------------------------------------
AUTORE: 3428
DATA :01/04/2014 - 07:41:39
----------------------------------------
bene.. salterò anche il 2013 come installazione!!
----------------------------------------
================================================================================
System Exec e Win7
================================================================================
AUTORE: 2196
DATA :01/04/2014 - 17:01:44
----------------------------------------
Ho un eseguibile sviluppato in labview che usa il system exec per lanciare un programma esterno. Il problema è il seguente con XP funziona alla grande mentre con Windows 7 l'applicazione esterna viene chiusa subito dopo il lancio.
Dentro il system exec uso cmd c "path+nomeexe"
----------------------------------------
AUTORE: 301
DATA :02/04/2014 - 07:16:34
----------------------------------------
Prova con il comando (all'interno di system exec):
start (spazio) programma.exe
Usi un 64 bit?
Io non avevo trovato particolari problemi.....
Aris
----------------------------------------
AUTORE: 2196
DATA :02/04/2014 - 09:34:24
----------------------------------------
[quote="aris":34pnjpln]Prova con il comando (all'interno di system exec):
start (spazio) programma.exe
Usi un 64 bit?
Io non avevo trovato particolari problemi.....
Aris[/quote:34pnjpln]
Avevo già provato e non cambia niente. Si è un 64 bit se lancio applicazione amano non cambia niente
----------------------------------------
AUTORE: 2196
DATA :02/04/2014 - 09:37:24
----------------------------------------
Spiego meglio quello che ho scritto se l'applicazione eterna non labview la lancio amano sul 64 bit funziona senza problemi.
----------------------------------------
AUTORE: 301
DATA :02/04/2014 - 10:21:00
----------------------------------------
si si, era chiaro...
Quando avvii tu il programma, ti chiede la conferma dei diritti? (intendo il so).....
Aris
----------------------------------------
AUTORE: 2196
DATA :02/04/2014 - 11:02:54
----------------------------------------
[quote="aris":30tvzvww]si si, era chiaro...
Quando avvii tu il programma, ti chiede la conferma dei diritti? (intendo il so).....
Aris[/quote:30tvzvww]
Visto che usa un socket mi chiede l'autorizzazione relativa al firewall ma lo fa anche se la lancio da dentro il labview.
----------------------------------------
AUTORE: 301
DATA :02/04/2014 - 11:10:33
----------------------------------------
l'unica cosa che sono riuscito a trovare è di creare una shortcut del programma che vuoi lanciare, darle i diritti per venire sempre lanciata come amministratore e lanciare quella tramite il system exec (anche se mi sembra che non sia il tuo caso).
Altro dubbio è: ovviamente avrai provato a lanciare l'applicazione dal prompt dei comandi e tutto funziona, giusto?!?!
Credo che i vari casini nascano dalle path di esecuzione del "cmd" richiamato da system exec (tra le cartelle dei programmi x64 e x86....).
Aris
----------------------------------------
AUTORE: 2196
DATA :02/04/2014 - 13:57:13
----------------------------------------
intanto grazie per l'aiuto
[quote="aris":2qchhx7d]l'unica cosa che sono riuscito a trovare è di creare una shortcut del programma che vuoi lanciare, darle i diritti per venire sempre lanciata come amministratore e lanciare quella tramite il system exec (anche se mi sembra che non sia il tuo caso).[/quote:2qchhx7d]
Proverò anche se non sono convinto. Altrimenti non dovrebbe funzionare nemmeno se lo lancio tramite un file batch
[quote:2qchhx7d]
Altro dubbio è: ovviamente avrai provato a lanciare l'applicazione dal prompt dei comandi e tutto funziona, giusto?!?![/quote:2qchhx7d]
Esatto
[quote:2qchhx7d]
Credo che i vari casini nascano dalle path di esecuzione del "cmd" richiamato da system exec (tra le cartelle dei programmi x64 e x86....).[/quote:2qchhx7d]
Avevo trovato anche io quella guida NI ma non credo sia il mio caso. Li fa riferimento ad un programma che si trova dentro system
----------------------------------------
AUTORE: 301
DATA :02/04/2014 - 14:16:07
----------------------------------------
mi posti il linke della guida (a dire il vero non ho nemmeno visto il sito della NI, tanti mi sa di un "problema" di sistema....).
Maaaaaa "la domanda nasce spontanea", se proprio te la vedi brutta, perchè non richiami il batch?!?!
Aris
----------------------------------------
AUTORE: 2196
DATA :02/04/2014 - 17:39:16
----------------------------------------
http://digital.ni.com/public.nsf/allkb/ ... 8000569993
----------------------------------------
================================================================================
Accellerometro NXT (Legway)
================================================================================
AUTORE: 10941
DATA :03/04/2014 - 16:30:06
----------------------------------------
Salve a tutti, sono nuovo e spero di scrivere nella sezione giusta!
Spero di trovare qualcuno che mi sappia dare qualche risposta che mi possa aiutare ad ultimare questo mio progetto fatto di lego!
Allora lavoro con Labview 2010 con le Toolkit NXT, adesso dopo aver trovato qualcosa in rete e aver fatto qualche modifica sono riuscito a collegare i motori per gli assi X,Y,Z e fin qui tutto bene, ho regolato la velocità anche se a me interessa principalmente in questo momento che lui stia in equilibrio, qualcuno per caso ha qualche software già ultimato del legway da farmi vedere così magari per farmi un'idea?
grazie a tutti quelli che mi aiuteranno
----------------------------------------
================================================================================
Dritta per monitoraggio e controllo impianto solare conNIUSB
================================================================================
AUTORE: 10942
DATA :07/04/2014 - 19:30:04
----------------------------------------
Ciao a tutti,
Sono uno studente all'ultimo anno dell'ITIS che tra poco avrà un esame importante: la prova orale.
Come materiale per l'orale ho l'intenzione di portare il controllo e il monitoraggio di un impianto solare, nel mio caso (per farla semplice) di un modulo solare da appena 60W.
Per il controllo e il monitoraggio, mi hanno assegnato la scheda di acquisizione dati NI USB6211.
La mia curiosità e la mia principale preoccupazione è:
È possibile effettuare il controllo e il monitoraggio tramite questa scheda?
Mi potete per favore dare una dritta su come fare?
Ho a disposizione Labview 2010 e la scheda NI USB6211 oltre che da un Ups e da un inverter.
----------------------------------------
AUTORE: 482
DATA :08/04/2014 - 07:03:21
----------------------------------------
La domanda è un po' vaga.
Cosa intendi per "controllo e monitoraggio"?
cosa devi controllare e cosa devi monitorare?
----------------------------------------
AUTORE: 10942
DATA :08/04/2014 - 16:21:36
----------------------------------------
Devo controllare la potenza in uscita del pannello solare, quindi la tensione e la corrente, oltre a questo devo monitorare se il pennello e l'ups funzionano oppure no.
Più o meno come quest'immagine:
[img:1sn8i18m]http://usdsudanpower.files.wordpress.com/2010/10/block-diagram1.png[/img:1sn8i18m]
----------------------------------------
AUTORE: 482
DATA :09/04/2014 - 07:27:18
----------------------------------------
La risposta alla prima domanda è SI, è possibile effettuare il controllo TRAMITE questa scheda MA innanzitutto se devi leggere delle correnti dovrai avere un convertitore perchè questa scheda legge solo tensioni +/- 10VDC
Per monitorare l'ups dovrai passare da una seriale o una USB o qualsiasi altra cosa ma non Hai poi parlato di pennello, immagino fosse pannello..beh per capire se funzionano leggerai i parametri di tensione in uscita no? quindi è già fatto.
Quindi, riassumendo, mi pare che parti da una base molto fumosa.
La prima cosa che devi fare è analizzare su carta il tuo progetto e stabilire quanti e che tipo di ingressi e uscite hai bisogno. Poi da li si puo' andare avanti.
----------------------------------------
AUTORE: 10942
DATA :14/04/2014 - 18:52:22
----------------------------------------
Innanzitutto grazie per avermi risposto cosi velocemente.
(comunque intendevo pannello non so perchè ho scritto pennello hahahaha)
Comunque secondo te un corvertitore DC LM2596S dovrebbe andare bene?L
'unica mia perplessità sta nella corrente che mi sembra un pò alta in uscita...
Grazie ancora
----------------------------------------
AUTORE: 482
DATA :15/04/2014 - 07:13:54
----------------------------------------
A vederlo cosi' sembra avere un range di uscita regolabile e quindi puo' fare al caso tuo...ma magari potresti anche farti un partitore di tensione.
Sta di fatto che non ti risolve i problemi del monitoraggio dell'ups, della corrente ecc...
----------------------------------------
AUTORE: 129
DATA :18/04/2014 - 14:48:15
----------------------------------------
Come dice Geppo, devi partire da una lista almeno metti i dati caratteristici di quello che hai a disposizione, così saprai quello che ti manca e che caratteristiche deve avere.
LA scheda ok sappiamo avera possibilità di controllo e acquisizione 0:10V (attenzione ai mA in uscita, che se passi da un convertitore non saranno più troppo un problema).
INVERTER: Come si interfaccia? 0:10V DC? BUS? ha un segnale da leggere per capire dove è?
UPS : come sopra
Fai uno schemino di quelli che sono i collegamenti per renderti conto dei canali necessari.
Ciao, Nicola
----------------------------------------
================================================================================
Differenza fra FPGA e Scan Engine in RealTime
================================================================================
AUTORE: 10906
DATA :08/04/2014 - 15:24:52
----------------------------------------
salve a tutti, ho seguito un corso real time per labview dove ci facevano programmare l'accensione, monitoraggio, raccolta dati e spegnimento di una specie di camera climatica composta da una ventola e una lampadina. è stato tutto molto chiaro ma c'è un problema: tutto è stato fatto col supporto di scan engine.
invece io dovrei programmare un motore passo passo in real time con cRio e col modulo NI 9501 che non supporta lo scan engine e quindi bisogna programmare con l'FPGA.
qualcuno che magari ha avuto esperienza col modulo 9501 sa dirmi cosa si intende col "programmare con l FPGA" e come bisogna fare?
perchè avendo seguito il corso con lo scan engine ho capito come si usa lo scan engine, i controlli e le variabili della lampadina e della ventola venivano fuori automaticamente.
mentre con l FPGA come si programmano i controlli ( in questo caso accensione spegnimento senso di rotazione e angolo di rotazione del motore ) da mettere nel block diagram?
insomma quale è la differenza fra scan engine e FPGA?
qualcuno può aiutarmi?
grazie
----------------------------------------
AUTORE: 301
DATA :09/04/2014 - 07:12:35
----------------------------------------
Buon giorno!
Bèh, a grandi linee ti posso solo dire che parlando di "RealTime" ed "FPGA", si parla di due mondi assolutamente diversi.
In estrema sintesi, lo scan engine del modulo real time è una sorta di buffer sul quale (da real time) vai a prendere i valori dei canali del tuo sistema (vedi impostazioni, velocità di aggiornamento, ecc.), mentre l'FPGA è un'altro "essere" che esiste (credo di default) sui CRio e che va programmato a se!
L'FPGA è una vera e propria scheda che puoi programmare a tuo piacimento alla quale poi ti puoi interfacciare tramite real time (o pc, se hai schede per pc).
Questo, ovviamente, in estrema sintesi, come si programma l'FPGA......bèh, li si apre un'altro universo......
Aris
----------------------------------------
AUTORE: 482
DATA :09/04/2014 - 07:20:17
----------------------------------------
sei sicuro che c'e' un cRIO che non supporta il RT?
che cRIO usi?
----------------------------------------
AUTORE: 10906
DATA :09/04/2014 - 15:13:08
----------------------------------------
grazie ad entrambi per la risposta. da quello che mi avevano detto al corso, per la mia applicazione (muovere e controllare il motore) io non dovrei programmare l'FPGA, in quanto esistono dei VI di esempio specifici per NI 9501 (che allego) già programmati tramite FPGA. questi VI andrebbero poi inseriti nel main programma del target real time come se fossero dei subVI e il programma principale andrebbe sviluppato come un normale programma real time labview ( time loop e determinismo...) senza FPGA. è possibile fare così oppure ho capito male? questi programmi VI che ho trovato nel find example, effettivamente cosa fanno?
il cRio è il 9074 e supporta il RT. forse mi sono spiegato male io, intendevo che il modulo NI 9501 non è compatibile con Scan Engine
grazie
----------------------------------------
AUTORE: 301
DATA :09/04/2014 - 15:27:27
----------------------------------------
Ciao, premetto che ho dato un'occhiata veloce solo ad uno dei vi che hai postato, ma ti posso dire:
1_il set di vi che hai trovato, sono dei programmi per FPGA (gia fatti) e per RT.
2_Il Vi per FPGA va scaricato nell'FPGA stesso ad inizio esecuzione (RT), poi ti puoi interfacciare con questo (da RT) tramite gli indicatori/controlli del vi FPGA (oppure tramite code FPGA ma direi che non è il tuo caso).
3_Non trovi la scheda nello scan engine per quello che ti dicevo, la scheda FPGA è un essere a se, quindi le modalità di interfacciamento con essa te le devi programmare.
In pratica, in cio che hai trovato, vai a scaricare il FW sull'FPGA, fai partire il programma sul RT e questi due ASSIEME (comunicando tra di loro) faranno andare il tuo stepper (FPGA gestisce le uscite e la logica di funzionamento, ilRT gli passa i valori di set e legge eventuali segnali).
Aris
----------------------------------------
AUTORE: 1323
DATA :10/04/2014 - 14:37:10
----------------------------------------
Ciao,
magari ti può aiutare anche un tutorial molto approfondito sull'uso di CompactRIO, lo puoi trovare qui:
http://www.ni.com/compactriodevguide/i/
Fammi sapere se ti è di aiuto!
Ciao
Matteo
----------------------------------------
AUTORE: 10906
DATA :23/04/2014 - 16:26:11
----------------------------------------
Grazie a tutti per l aiuto.
Ho trovato un manuale National Instruments dove mi dicono di usare l esempio "Stepper Drive (Getting Started).lvproj" installato in <labview>\examples\motion\
UDV\Stepper Drive (Getting Started) directory.
Io ho sia labview 2010 che 2012 ma non sono riuscito a trovare questo esempio nel finding examples.
Qualcuno potrebbe gentilmente cercarlo e passarmelo?
----------------------------------------
AUTORE: 482
DATA :24/04/2014 - 07:05:15
----------------------------------------
Ha installato il pacchetto motion?
----------------------------------------
AUTORE: 10906
DATA :19/05/2014 - 14:40:31
----------------------------------------
installando il pacchetto motion ho trovato il progetto d'esempio a cui mi riferivo ( Stepper Drive (Getting Started).lvproj). con l'interactive test panel sono riuscito per il momento a muovere il motore. si pone ora questo problema: mi serve ora che il motore faccia un tot di step ( di una determinata quantità di gradi e a una determinata velocità ) in un verso e un tot nel verso opposto per un tot numero di cicli e che il tutto possa essere determinato e controllato da un front panel sull'host (pc), quindi senza usare l'interactive test panel. dove devo agire in questo progetto e come devo programmare?
----------------------------------------
AUTORE: 482
DATA :20/05/2014 - 08:23:37
----------------------------------------
mi sembra che questa domanda sia OFF topic e soprattutto troppo vaga per poter dare una risppsta. Ti consiglio di aprire un nuovo topic con un nuovo oggetto e specificare bene quello che sai fare e cosa devi realizzare.
Perchè la tua ultima domanda sembraun po':
Voglio costruire una moto. Cosa devo fare?
La risposta generica alle tue domande sarebbe:
devi creare un VI programmando in labview
----------------------------------------
AUTORE: 10906
DATA :26/05/2014 - 14:58:27
----------------------------------------
ho fatto come hai detto, ho spostato tutto nel modo più dettagliato possibile in viewtopic.php?f=1&t=5964
----------------------------------------
================================================================================
Misuratore di portata / timer
================================================================================
AUTORE: 10944
DATA :15/04/2014 - 21:06:24
----------------------------------------
Salve a tutti,
sono nuovo del forum e da poco ho iniziato ad utilizzare labview come software per l'acquisizione dati. Ho bisogno del vostro aiuto per sapere come risolvere il problema che ho con la realizzazione di un misuratore di portata tramite labview. Mi spiego meglio. Ho la necessità di avviare un ciclo principale che inizia a contare il tempo da zero quando clicco sul tasto "shift register" e dopodichè ogni qual volta clicco sul tasto "Ok differenza" ottengo l'intertempo tra l''ultima volta nella quale è stata effettuata la differenza e il tempo attuale. Cioè parto con il conteggio del tempo ad inizio ciclo e poi di volta in volta cliccando su "ok differenza" ottengo il tempo trascorso tra un click e l'altro. Però avrei bisogno che ogni volta in cui clicco su "ok differenza" il ciclo mi cancelli il vecchio intertempo e mi conteggi solo il nuovo, mentre il timer principale continua a scorrere. Spero di essere stato chiaro nella spiegazione. Qui sono presenti gli screenshot del ciclo realizzato ma che non funziona esattamente come vorrei. Potete darmi dei suggerimenti? Vi ringrazio infinitamente in anticipo per la vostra disponibilità!!!
Francesco
SITUAZIONE INIZIALE
[url=http://img103.imagevenue.com/img.php?image=581186877_Iniziale_122_960lo.jpg:2whvicsv][img:2whvicsv]http://img103.imagevenue.com/loc960/th_581186877_Iniziale_122_960lo.jpg[/img:2whvicsv][/url:2whvicsv]
AVVIO CICLO PRINCIPALE
[url=http://img23.imagevenue.com/img.php?image=581189340_Avviomisuratore_122_441lo.jpg:2whvicsv][img:2whvicsv]http://img23.imagevenue.com/loc441/th_581189340_Avviomisuratore_122_441lo.jpg[/img:2whvicsv][/url:2whvicsv]
CICLO PER INTERTEMPI
[url=http://img239.imagevenue.com/img.php?image=758120167_misurazioneportataintermedia_122_588lo.jpg:2whvicsv][img:2whvicsv]http://img239.imagevenue.com/loc588/th_758120167_misurazioneportataintermedia_122_588lo.jpg[/img:2whvicsv][/url:2whvicsv]
----------------------------------------
AUTORE: 10944
DATA :15/04/2014 - 21:06:59
----------------------------------------
e questo invece è il mio front panel
FRONT PANEL
[url=http://img238.imagevenue.com/img.php?image=581197948_frontpanel_122_13lo.jpg:3o20jqpy][img:3o20jqpy]http://img238.imagevenue.com/loc13/th_581197948_frontpanel_122_13lo.jpg[/img:3o20jqpy][/url:3o20jqpy]
----------------------------------------
AUTORE: 482
DATA :16/04/2014 - 07:43:11
----------------------------------------
Innanzitutto direi che hai usato troppi tick counter.
Ne basta uno.
Ho buttato giu' un esempio veloce. L'unico difetto che parte subito a contare ma poi lo puoi resettare quando vuoi.
Nota che ho usato dei pulsanti di tipo latch cioè che appena vengono letti ritornano allo stato originale.
L'allegato è uno snippet, cioè un immagine che una volta salvata sul tuo pc, se la trascini nel block diagram ti crea il vi.
----------------------------------------
AUTORE: 10944
DATA :16/04/2014 - 11:32:40
----------------------------------------
[quote="gepponline":1ax9sdm5]Innanzitutto direi che hai usato troppi tick counter.
Ne basta uno.
Ho buttato giu' un esempio veloce. L'unico difetto che parte subito a contare ma poi lo puoi resettare quando vuoi.
Nota che ho usato dei pulsanti di tipo latch cioè che appena vengono letti ritornano allo stato originale.
L'allegato è uno snippet, cioè un immagine che una volta salvata sul tuo pc, se la trascini nel block diagram ti crea il vi.[/quote:1ax9sdm5]
Ciao, grazie mille per la tua disponibilità! Ho seguito le tue istruzioni per utilizzare lo snippet, però una volta che lo trascino sul block diagram resta solo un'immagine, infatti il front panel corrispondente è vuoto
ECCO COME MI COMPARE
[url=http://img127.imagevenue.com/img.php?image=763403277_Immagine_122_254lo.jpg:1ax9sdm5][img:1ax9sdm5]http://img127.imagevenue.com/loc254/th_763403277_Immagine_122_254lo.jpg[/img:1ax9sdm5][/url:1ax9sdm5]
----------------------------------------
AUTORE: 10944
DATA :16/04/2014 - 11:52:44
----------------------------------------
Ho notato che nel menù EDIT non ho la voce CREATE VI SNIPPET FROM SELECTION. Il fatto che stia utilizzando la versione prova di 30 giorni può bloccarmi alcune funzioni del programma? La versione del Labview che sto utilizzando è la 8.5
----------------------------------------
AUTORE: 482
DATA :17/04/2014 - 07:21:32
----------------------------------------
e già allora il problema puo' essere quello.
----------------------------------------
AUTORE: 10944
DATA :17/04/2014 - 15:13:04
----------------------------------------
Ciao geppo, ho attivato la versione prova di labview e neanche nella full version ho la possibilità di creare degli snippet. Evidentemente con la versione 8.5 non è possibile crearli, infatti neanche nell'help si riesce a trovare qualcosa sugli snippet.
Purtroppo anche quando apro l'ultimo tuo file che mi hai allegato non riesco ad utilizzarlo forse per incompatibilità tra la tua e la mia versione di Labview
Scusa se ti sto facendo perdere tempo!!!
[url=http://img128.imagevenue.com/img.php?image=735501310_labView_122_161lo.jpg:2zkackwz][img:2zkackwz]http://img128.imagevenue.com/loc161/th_735501310_labView_122_161lo.jpg[/img:2zkackwz][/url:2zkackwz]
----------------------------------------
AUTORE: 482
DATA :18/04/2014 - 07:08:04
----------------------------------------
eh no...è salvato in 2009....
rieccolo
----------------------------------------
AUTORE: 129
DATA :18/04/2014 - 14:09:11
----------------------------------------
Ciao,
non riesco a salvare nella tua versione, per cui ti allego l'immagine con i casi .
Nell'esempio che ti propongo io c ti ho messo solo la parte della gestione del timer:
- Resetta il tempo quando premi ShiftRegister
- Registra l'intertempo e resetta quando premi Differenza
Ho messo l'array per visualizzare tutti i tempi misurati tra ogni click di "Differenza".
[attachment=0:rvmkvplc]EsempioTimer.PNG[/attachment:rvmkvplc]
----------------------------------------
AUTORE: 10944
DATA :17/05/2014 - 10:42:31
----------------------------------------
Ragazzi scusate per il ritardo, grazie davvero ad entrambi per la disponibilità!
----------------------------------------
================================================================================
fabmaster in lv
================================================================================
AUTORE: 10946
DATA :22/04/2014 - 07:11:02
----------------------------------------
Salve sto realizzando un progetto in labview dove in base ad una gesstione degli errori vorrei poter visualizzare il fabmaster della main board con il componente evidenziato. Sto cercando di trovare dei VI dei viewer dei fabmaster ma niente. Avete dei consigli o suggerimenti?
grazie
----------------------------------------
================================================================================
labview 2013 runtime e dynamic vi
================================================================================
AUTORE: 129
DATA :28/04/2014 - 09:38:22
----------------------------------------
Non so se capita solo a me o anche a voi, sto cercando di compilare un eseguibile con due vi chiamati dinamicamente, con call by reference.
Tutto funziona sul labview, ma quando vado in runtime, non mi esegue i vi chiamati dinamicamente e non mi da neanche errori che mi permettano di capire cosa stia accadendo.
Ovviamente i VI li ho caricati nell' always included...
Qualcuno ci ha già sbattuto la testa?
----------------------------------------
AUTORE: 301
DATA :29/04/2014 - 18:42:09
----------------------------------------
Ciao Nicola,
come crei il path per chiamare i vi?
Non ho ancora buildato nulla con il 2013.....
Aris
----------------------------------------
AUTORE: 129
DATA :02/05/2014 - 11:08:00
----------------------------------------
Gli metto il path, considerando anche il path di destinazione nell' applicazione finale.
Ho comunque capito dove sbagliavo, era dovuto al fatto che quando creavo l'exe, non ho associato una directory di destinazione (rimaneva in spunta l'eseguibile) e quindi non mi creava i vi dinamici nella cartella di supporto. Ora che ho spuntato la cartella corretta, mi crea i vi e tutto funziona.
Insomma funziona, peccato che ora mi crasha il runtime con un bell errore "non continuable exception 0xC0000025, quando tento di chiudere il vi chiamato dinamicamente...Ma questo è un altro topic
Grazie Aris
----------------------------------------
AUTORE: 301
DATA :02/05/2014 - 12:17:55
----------------------------------------
Mmmmhhh, non è che per caso chiud il reference dopo la chiamata al vi.....
Aris
----------------------------------------
AUTORE: 129
DATA :02/05/2014 - 22:48:39
----------------------------------------
Si, ma non capisco perchè non doverla chiudere.
----------------------------------------
AUTORE: 129
DATA :02/05/2014 - 23:20:35
----------------------------------------
Aris, è vero che facendo così non mi compare l'errore(
), ma il vi rimane in memoria presentando sui pannelli grafici e numeri della precedente chiamata.
Grazie mille come sempre, ciao..
----------------------------------------
AUTORE: 301
DATA :03/05/2014 - 07:42:34
----------------------------------------
Beh, devi gestire la chiusura dei vi chiamati (e relativo ref)all'interno dei vi stessi...
Se ti fanno vedere il num della chiamata, significa che ti rimangono in memoria, quindi non eono stati chiusi....
Aris
----------------------------------------
AUTORE: 129
DATA :03/05/2014 - 20:52:38
----------------------------------------
Hai ragione, ho risolto impostando il call setup .
Grazie Aris
----------------------------------------
================================================================================
conversione da Labview 7.1 a Labview 10
================================================================================
AUTORE: 10870
DATA :29/04/2014 - 12:51:24
----------------------------------------
Ciao a tutti.
Come da oggetto nel titolo cerco suggerimenti per la conversione di un programma scritto in labview 7 per farlo girare su una versione piu' aggiornta. Se provo gia' ad aprirlo con Labview 8 o fino alla 10 mi segnala errori nei VI ( non possono essere eseguiti ).
Questo software non e' stato scritto da me ed e' molto complesso ( active X, web server, ecc...ecc... ) Ho provando sia ad aprirlo con la versione 8 che salvarlo come vi da distribuire ma mi accade una cosa stranissima: se vado a scorrere fino all'ultimo subVI contenuto nel VI in cui mi da' l'errore e apro il diagramma quello della versione 7 e' completamente diversa da quello aperto nella versione 10 o 8, sono VI di Labview e non Vi creati da utenti. Se brutalmente copio il solo l'ultimo subvi dalla versione 7 e lo copio su un altro pc con la versione 10 ed apro il diagramma sono completamente diversi pur non dandomi errori.Aprendo il il diagramma sul VI che non parte c'e' una scritta rossa 8.6.
Sapete darmi qualche suggerimento a parte riscrivere di sana pianta il codice dei sub VI ?
Grazie
Marco
----------------------------------------
AUTORE: 482
DATA :06/05/2014 - 09:58:24
----------------------------------------
...ma ciao!
non ho capito molto dei vari passaggi che hai fatto.
Posso dirti pero' che alcuni errori possono essere dati da VI obsoleti tipo quelli dei controlli delle schede DAQ che se lavori su un sistema windows 7 o superiore non esistono piu' e non possono essere installati
----------------------------------------
AUTORE: 43
DATA :14/05/2014 - 13:48:55
----------------------------------------
[quote="zingaia":15eb9u45]Ciao a tutti.
Come da oggetto nel titolo cerco suggerimenti per la conversione di un programma scritto in labview 7 per farlo girare su una versione piu' aggiornta. Se provo gia' ad aprirlo con Labview 8 o fino alla 10 mi segnala errori nei VI ( non possono essere eseguiti ).
Questo software non e' stato scritto da me ed e' molto complesso ( active X, web server, ecc...ecc... ) Ho provando sia ad aprirlo con la versione 8 che salvarlo come vi da distribuire ma mi accade una cosa stranissima: se vado a scorrere fino all'ultimo subVI contenuto nel VI in cui mi da' l'errore e apro il diagramma quello della versione 7 e' completamente diversa da quello aperto nella versione 10 o 8, sono VI di Labview e non Vi creati da utenti. Se brutalmente copio il solo l'ultimo subvi dalla versione 7 e lo copio su un altro pc con la versione 10 ed apro il diagramma sono completamente diversi pur non dandomi errori.Aprendo il il diagramma sul VI che non parte c'e' una scritta rossa 8.6.
Sapete darmi qualche suggerimento a parte riscrivere di sana pianta il codice dei sub VI ?
Grazie
Marco[/quote:15eb9u45]
ciao Marco.
mi sa che titocca postare il VI che contiene quell'errore x poterci dare un'occhiata.
Per quello che mi è dato modo di sperimentare, ci sono delle differenze nell'esecuzione dinamica dei subVI (quelli che si mandano in esecuzione con il metodo "run") ed in particolare sono state introdotte le" ottimizzazioni" che potrebbero pregiudicare il funzionamento di un VI che nella vecchia versione LV era perfetto.
Riguardo gli ActiveX non penso ci siano problemi di compatibilità e riguardo web server non saprei
facci vedere!!
bye
----------------------------------------
================================================================================
Temporizzatore di stato
================================================================================
AUTORE: 10870
DATA :14/05/2014 - 11:08:14
----------------------------------------
Salve a tutti,
avrei bisogno di scrivere un Vi che mi servirà per simulare la chiusura e apertura temporizzata di un interruttore tramite stato false e true, questa andra' integrato in un altro programma che mi scriverà su un file log quale interruttore e' stato aperto e per quanto tempo.In allegato c'e' la bozza di VI che ho scritto ma ho un problema : il primo frame conta fino n secondi per simulare lo standby del pulsante dopodiche' mi attiva il pulsante, il frame dopo conta fino a n secondi per simulare quanto e' stato attivo il pulsante, il terzo frame mi rimanda in stato false il pulsante. Come posso fare per dire al pulsante ( in questo caso led di stato ) torna allo stato false ?
Grazie
----------------------------------------
AUTORE: 3428
DATA :14/05/2014 - 15:29:03
----------------------------------------
avevo già qualcosa che fa al caso tuo...
----------------------------------------
================================================================================
Aiuto Vi per USB-6008
================================================================================
AUTORE: 4047
DATA :15/05/2014 - 10:08:06
----------------------------------------
Ciao a tutti, sono registrato da molto tempo ma non ho mai avuto modo di scrivere.
Sono un vero principiante in questo linguaggio di programmazione ma per un favore ad un amico, ho deciso di aiutarlo in un suo progetto
.
Cercando di riassumere ho una scheda embedded (non so se posso fare il nome) completamente programmata in C da me, alla quale devo attaccare il DAQ USB-6008 come generatore di segnali.
Per essere più chiari necessiterei di un aiuto per costruire un programma in LabView con interfaccia grafica nel quale posso scegliere, scrivendo in due riquadri, il tempo in cui un'onda quadra rimane up e il tempo down (praticamente il duty cicle, ma espresso in due caselle separate con valori in millisecondi).
Questa onda nel momento in cui ha valore 1 mi deve mandare up un'uscita digitale del DAQ e quando ha valore 0 mandare up una seconda uscita. Logicamente o una o l'altra, non avro mai la situazione di entrambe le uscite a 0 o a 1.
Necessiterò anche una terza casella per dire quanti cicli dovranno essere fatti (al fine dei quali il programma si fermerà automaticamente) e una quarta per introdurre un valore di tempo che starà ad indicare il ritardo di esecuzione da un ciclo ad un altro. Questo valore potrà essere 0 come 10000mS ad esempio.
Infine un pulsante di start e uno di stop per far partire il programma o fermarlo manualmente.
Chiedo scusa della punteggiatura/lessico o ripetizioni ma ho scritto tutto questo mentre sono in metro
Spero possiate aiutarmi, nel mentre auguro a tutti una buona giornata
----------------------------------------
AUTORE: 645
DATA :25/05/2014 - 22:57:07
----------------------------------------
In pratica devi passare i valori dell'onda al blocco che genera l'onda stessa. Se prendi il blocco che si occupa di generare segnali (Express o non) vedrai che i parametri che puoi configurare sono in parte quelli che hai elencato.
Per il numero di cicli ti consiglierei di utilizzare un ciclo FOR da far girare un numero di volte pari ai cicli che desideri.
Puoi inserire tutto (configurazione e ciclo FOR) in un ciclo WHILE che continua a funzionare fino a quando si preme un pulsante STOP.
----------------------------------------
AUTORE: 4047
DATA :27/05/2014 - 13:47:08
----------------------------------------
OK grazie della dritta nel fine settimana appena avrò due minuti di tempo mi ci dedico e provo sicuramente!
Nel frattempo grazie ancora
----------------------------------------
================================================================================
Iniziare con il Labview
================================================================================
AUTORE: 10953
DATA :15/05/2014 - 10:08:58
----------------------------------------
Salve a tutti,
sono alle prese con il Labview da pochissimo tempo. Anzi diciamo che dovrei installarlo ancora, e la versione che ho al momento è quella del 2013. Volevo sapere la differenza tra 32bit e 64 bit. Inoltre il mio computer da lavoro ha ancora XP e prima di iniziare l'installazione mi chiedevo se il SO supporta tale versione di Labview.
Grazie mille a chiunque mi risponderà e scusatemi per la domanda forse banale.
----------------------------------------
AUTORE: 4047
DATA :15/05/2014 - 16:24:33
----------------------------------------
Su Xp usa x32, anche se dovrebbe rilevartelo in automatico.
A te fondamentalmente non cambia nulla da x32 a x64.
Buon proseguimento
----------------------------------------
AUTORE: 129
DATA :17/05/2014 - 07:03:30
----------------------------------------
Dipende dal PC che hai, in particolare il processore, se a 64 BIT o 32BIT.
Ovviamente su 64BIT gira un 32BIT mentre diversamente no.
----------------------------------------
AUTORE: 301
DATA :19/05/2014 - 10:29:48
----------------------------------------
Aggiungo che (vedi una discussione di qualche tempo fa), se crei un eseguibile con LV 64bit ti girerà solamente su macchine con lo stesso tipo di processore, mentre un exe buildato con LV32bit non avrà questo "problema".....
Aris
----------------------------------------
================================================================================
Stringa di connessione a Database
================================================================================
AUTORE: 4153
DATA :16/05/2014 - 16:52:01
----------------------------------------
Ciao,
dovrei collegarmi con LV2012 + DB Connectivity Toolkit a un Database MS SQL Server 2008.
L'obbiettivo sarebbe quello di poter effettuare configurare la modalita' nel modo meno vincolante possibile ovvero attraverso una stringa di connessione del tipo "Data Source=SERVER NAME INSTANCE;Persist Security Info=True;User ID=USERNAME;Password=PASSWORD etc etc" (di tipo ADO?).
Ho provato utilizzando il VI DB TOOLS OPEN CONNECTION e funziona solo creando un file .udl, oppure con una stringa di connessione che pero' (se ho ben capito) dovrebbe far riferimento al Driver ODBC.
Secondo voi e' possibile utilizzare invece una stringa di connessione tipo quella sopracitata, che contenga già tutte le info necessarie?
Grazie mille in anticipo a chi sapra' darmi qualche ragguaglio.
Giovanni
----------------------------------------
AUTORE: 129
DATA :17/05/2014 - 06:50:57
----------------------------------------
Ciao,
quel blocchetto è un polimorfo, per cui se fai tasto destro selezioni select type : string.
detto ciò password e user li devi inserire direttamente nei terminali a loro dedicati, dentro infatti ti crea poi lui la stringa.
Non so invece per la stringa persyst....
Nella tua stringa forse devi specificare un provider es:
Provider=sqloledb;Data Source=myServerAddress......
Ciao, Nicola
----------------------------------------
AUTORE: 4153
DATA :21/05/2014 - 08:29:20
----------------------------------------
Grazie Nicola! infatti mancava la stringa "Provider=sqloledb"... thanks!
----------------------------------------
================================================================================
OPC Server e PLC S7-1200
================================================================================
AUTORE: 10954
DATA :19/05/2014 - 15:40:27
----------------------------------------
Ciao a tutti.
Ho realizzato un collegamento tra S7-1200 e OPC Server 2013 sulla mia LAN e funziona tutto correttamente.
Riesco a fare la stessa cosa attraverso internet. ?
(S7-1200+router -> router+OPC Server 2013 )
Grazie!!
----------------------------------------
AUTORE: 645
DATA :22/05/2014 - 20:53:09
----------------------------------------
Se non sbaglio il plc s7-1200 è dotato di porta Ethernet: puoi collegare il plc al router dopo aver configurato la porta stessa con un indirizzo IP.
Dal tuo pc puoi accedere al router utilizzando un indirizzo IP statico (se non ne hai uno puoi provare a contattare la compagnia che ti fornisce il servizio internet o cercare qualche sito o qualche servizio on line, sia gratuito che a pagamento).
A questo punto dovresti poter accedere al plc dall'esterno: eventualmente inserisci l'indirizzo IP selezionato per il plc nella DMZ del router o crea qualche regola particolare per consentire l'accesso.
----------------------------------------
AUTORE: 10954
DATA :26/05/2014 - 08:58:37
----------------------------------------
[quote="MagicBotolo":2eg9xsqk]Se non sbaglio il plc s7-1200 è dotato di porta Ethernet: puoi collegare il plc al router dopo aver configurato la porta stessa con un indirizzo IP.
Dal tuo pc puoi accedere al router utilizzando un indirizzo IP statico (se non ne hai uno puoi provare a contattare la compagnia che ti fornisce il servizio internet o cercare qualche sito o qualche servizio on line, sia gratuito che a pagamento).
A questo punto dovresti poter accedere al plc dall'esterno: eventualmente inserisci l'indirizzo IP selezionato per il plc nella DMZ del router o crea qualche regola particolare per consentire l'accesso.[/quote:2eg9xsqk]
Grazie, per la risposta. Ho risolto cmq il mio problema. Ho aperto la porta 102 sul router del PLC e fatto il NAT sul suo IP. Ho configurato l'IP del router nel PLC!
Ciao
----------------------------------------
AUTORE: 10973
DATA :26/06/2014 - 15:52:54
----------------------------------------
Se non dovesse essere possibile aprire porte sul firewall, è possibile utilizzare un programma che realizza un OPC Tunnel. Si può utilizzare l'[url=http://industrial.softing.com/en/products/functionality/software/opc-middleware/opc-easy-connect-suite-sw-package-to-optimize-opc-communication.html:366c5xu9]Easy Connect Suite[/url:366c5xu9], installando il software sul client e sul server
----------------------------------------
================================================================================
Comunicazione I/O server modbus
================================================================================
AUTORE: 10955
DATA :22/05/2014 - 12:14:38
----------------------------------------
Ciao a tutti,
ho un problema tra la comunicazione di un analizzatore di rete (Janitza UMG 604) e Labview.
Il dispositivo è collegato ad un router via RJ-45 ed usa un protocollo Modbus Ethernet
Questo è il manuale Modbus-adress del dispositivo: http://www.janitza.de/fileadmin/files/10410060.pdf
La comunicazione avviene perfettamente, avendo un PC connesso in rete allo stesso router, ma non riesco a trovare i dati che mi interessano. Questi valori che vorrei leggere sono: Voltage L1-N (indirizzo 19000); Apparent current, L1-N (indirizzo 19012); Real power L1-N (indirizzo 19020); Reactive power L1 (fundamental comp.) (indirizzo 19036); Real energy L1 (indirizzo 19054); CosPhi; UL1 IL1 (fundamental comp.) (indirizzo 19044)
Ecco i passi che svolgo:
Creo un nuovo progetto da Labview
Create New I/O Server
Seleziono Modbus ed inserisco l'IP del dispositivo (il resto lo lascio come da defaut)
Poi da modbus tasto destro "Create bound variables" ed alla schermata successiva seleziono il campo F3000001-F365534 ed inserisco un numero di items
A questo punto facendo "Deploy All" e dalla barra "Tools->Distributed System Manager" visualizzo alcuni dati inviati dall'apparecchio ma in una sequenza disordinata. (Avviene in sostanza una mappatura disordinata che non rispecchia gli indirizzi modbus indicati nel manuale)
Ne ho riconosciuto uno in F300014 che è il valore Voltage L1-N che nel manuale dice trovarsi all'indirizzo modbus 19000!
Ora vorrei capire come posso prendere SOLTANTO quei valori che mi interessano, c'è un modo per scrivere l'indirizzo modbus del/dei dato/i che mi interessano?
Spero possiate aiutarmi grazie
----------------------------------------
AUTORE: 645
DATA :22/05/2014 - 20:48:27
----------------------------------------
Guarda se qui: http://www.modbus.org/docs/Modbus_Appli ... V1_1b3.pdf
trovi qualche informazione in merito alle corrispondenze tra indirizzi di lettura e scrittura. In ModBus l'indirizzo "19" dovrebbe riguardare la lettura dei registri.
----------------------------------------
AUTORE: 482
DATA :23/05/2014 - 07:16:46
----------------------------------------
non ho capito perchè crei un I/O server.... il tuo pc è un client dello strumento no?
Premetto che io quando devo comunicare in modbus uso il tool apposta
----------------------------------------
AUTORE: 10955
DATA :23/05/2014 - 08:37:54
----------------------------------------
Ciao,
intanto vi ringrazio per le risposte tempestive! Vi premetto che non conosco per niente il modbus, è la prima volta che mi son avvicinato a questo protocollo. Per il resto ho seguito dei video tutorial trovati su youtube che mi hanno fatto scegliere questa strada.... in sostanza il pc con labview deve interrogare questo dispositivo connesso in rete e leggere alcuni valori che come vi dicevo, nel manuale che ho allegato (url) dice che si trovano dall'indirizzo 19000 in poi.... ora, seguendo quella procedura mi chiedo dove e come devo inserire questi indirizzi??? grazie esiste un altro metodo? avevo visto in giro che esiste anche una libreria modbus, che ho scaricato e vista, ma non trovo molti tutorial chiari online e peraltro per fare una comunicazione via ethernet. spero possiate aiutarmi. grazie!
----------------------------------------
AUTORE: 482
DATA :26/05/2014 - 07:25:02
----------------------------------------
Prova con questo!
http://www.ni.com/example/29756/en/
all'interno troverai un vi chiamato "MB ethernet example slave" che dovrebbe farti funzionare tutto correttamente.
----------------------------------------
AUTORE: 10955
DATA :26/05/2014 - 22:28:31
----------------------------------------
grazie del prezioso consiglio, ho risolto!
----------------------------------------
================================================================================
Eliminazione elementi nulli array
================================================================================
AUTORE: 10957
DATA :22/05/2014 - 17:23:34
----------------------------------------
Scusate per la domanda probabilmente banalissima ma ho un'array con molti elementi pari a zero e dovrei eliminarli tutti ottenendo l'array di soli elementi diversi da zero. Come posso fare?
----------------------------------------
AUTORE: 482
DATA :23/05/2014 - 07:10:03
----------------------------------------
un bel for, uno shift register e una comparazione
----------------------------------------
AUTORE: 3428
DATA :24/05/2014 - 13:22:12
----------------------------------------
come diceva geppo..
----------------------------------------
================================================================================
Acquisizione-Generazione segnale su banco oleodinamico
================================================================================
AUTORE: 10944
DATA :23/05/2014 - 20:59:22
----------------------------------------
Salve a tutti,
avrei bisogno di un vostro aiuto per quanto riguarda la generazione ed acquisizione di un segnale per due valvole distributrici proporzionali presenti su un banco oleodinamico con una scheda di acquisizione National Instruments.
Tempo fa ho realizzato un programma di generazione ed acquisizione segnale SINUSOIDALE per una sola valvola distributrice proporzionale su cui ho effettuato delle sperimentazioni utilizzando 4 diversi canali di acquisizione: PRESSIONE A MONTE DEL CIRCUITO, PRESSIONE INTERMEDIA, SEGNALE INVIATO AL DISTRIBUTORE e per ultimo SPOSTAMENTO DEL CURSORE DELLA VALVOLA. Qui di seguito c'è il programma che ho realizzato qualche tempo fa.
[url=http://postimg.org/image/u93u6yaa9/:3gwqrmsp][img:3gwqrmsp]http://s16.postimg.org/u93u6yaa9/generazione_acquisizione.jpg[/img:3gwqrmsp][/url:3gwqrmsp]
qui potete vedere meglio la parte del programma che si riferisce alla generazione del vecchio segnale sinusoidale:
[url=http://postimg.org/image/z5vv4wxkz/:3gwqrmsp][img:3gwqrmsp]http://s29.postimg.org/z5vv4wxkz/generazione.jpg[/img:3gwqrmsp][/url:3gwqrmsp]
Ora sono stati aggiunti un'altra valvola proporzionale ed un cilindro collegata ad essa. Qui di seguito potete vedere lo schema del circuito.
[url=http://postimg.org/image/npfztwxa9/:3gwqrmsp][img:3gwqrmsp]http://s8.postimg.org/npfztwxa9/banco.jpg[/img:3gwqrmsp][/url:3gwqrmsp]
Adesso con la nuova configurazione del banco ho bisogno di:
-Inviare un segnale a gradino alla prima valvola proporzionale (cioè devo fare in modo di inviare un segnale costante per un certo periodo di tempo)
-Per quanto riguarda la seconda valvola collegata al cilindro avrei bisogno di inviarle un segnale che sia dato dalla differenza di pressione tra PRESSIONE INTERMEDIA e PRESSIONE PRESENTE NEL CILINDRO;
quindi collegherò sul banco un pressostato per la misurazione della pressione intermedia ed un pressostato che misuri la pressione esercitata nel cilindro, più gli altri per acquisire i vari dati.
Potete aiutarmi in qualche modo?? Vi ringrazio anticipatamente.
----------------------------------------
AUTORE: 482
DATA :27/05/2014 - 08:00:22
----------------------------------------
Mi smebra tu abbia ben chiaro il da farsi, labview sembra che lo sai usare. Non è chiaro che tipo di aiuto hai bisogno.
Forse se non ho capito male, il problema che hai al momento è che tu acquisisci i vari segnali e alla fine li salvi su file tabulato ma nel mentre non ci fai niente, invece adesso devi prendere i segnali e farli interagire con altri.
Quindi non sapendo cosa hai bisogno posso dirti solo che il segnale che prima generavi una volta prima del ciclo, ora dovrai generarlo continuativamente all'interno del ciclo in base alle uscite che leggi.
Aggiungo, dal tuo vi presumo che tu stia usando delle schede vecchie. Se non è cosi' e le tue schede sono compatibili con i diver DAQmx ti consiglio di modificare il tuo vi e passare a daqmx perchè s epoi passi a win 7 o superiori i traditional daq non saranno piu' disponibili.
----------------------------------------
AUTORE: 10944
DATA :27/05/2014 - 13:10:57
----------------------------------------
Ciao, si hai centrato perfettamente il problema.
Fino ad ora ho solamente generato e scritto su file i dati acquisiti. Ciò che non riesco a capire come fare è la parte relativa alla "retroazione", cioè prendere il segnale acquisito da un pressostato (in questo caso quello che misura la pressione intermedia), sottrarlo al segnale acquisito dal pressostato presente nel cilindro, ed infine inviare questa differenza come segnale di input alla valvola direzionale, oltre che scriverlo su file.
In più non ho mai utilizzato due valvole contemporaneamente quindi mi trovo parecchio in difficoltà
----------------------------------------
AUTORE: 482
DATA :28/05/2014 - 07:11:25
----------------------------------------
Non aspettarti di trvarti il vi già fatto. Non ho il tempo per farlo.
Ti posso suggerire che tutto quello che devi fare già ce l'hai. Devi solo portare tutto all'interno del ciclo while.
I vari blocchi config e clear restano fuori perchè vanno fatti solo all'inizio e alla fine del programma.
Ma i blocchi read e write restano all'interno del ciclo.
Quindi:
Config Write e config read fuori dal ciclo.
Entri nel ciclo while
READ dei segnali che ti interessano
Sottrazione dei due segnali
Inviare il risultato alla valvola e al file.
fuori dal ciclo poi metti i blocchi clear.
P.S. se i segnali che leggi li leggi dalla stessa scheda basterà un blocco read che nel config avrà indicati i segnali che ti interessano.
Se leggi da due schede diverse avrai bisogno di un altra linea con i rispettivi config, read e clar.
----------------------------------------
AUTORE: 10944
DATA :29/05/2014 - 12:52:44
----------------------------------------
Ciao geppo, questo è quello che sono riuscito a fare. cosa ne pensi? Si, la scheda di acquisizione che utilizzo è la stessa sia per l'invio che per l'acquisizione dei segnali. Ci sono degli errori?? martedì lavorerò sul banco, quindi sto cercando di fare il possibile per preparare il tutto. Grazie infinite per il supporto tecnico che mi stai dando!!
[url=http://postimg.org/image/hal5362vl/:3oz43xc2][img:3oz43xc2]http://s16.postimg.org/hal5362vl/Immagine.jpg[/img:3oz43xc2][/url:3oz43xc2]
----------------------------------------
AUTORE: 301
DATA :29/05/2014 - 18:09:54
----------------------------------------
Scusate,
mi intrometto solo un'attimo.....direi che almeno un errore (grosso) c'è.
I controlli Device, channels e numero di punti da acquisire, vanno messi all'esterno del while, altrimenti non funzionerà nulla.
Un'altra cosa (ma non sono molto sgamato con i traditional), lo start e clear del AI vanno sempre messi all'esterno del ciclo, all'interno esegui solo la lettura del task.
Ultima postilla, se hai task che lavorano a frequenze diverse, dovresti farli girare in cicli paralleli, non tutti dentro ad uno unico!
Detto questo......mi tolgo dalle****
Aris
----------------------------------------
AUTORE: 482
DATA :30/05/2014 - 07:01:47
----------------------------------------
confermo quanto detto da Aris
----------------------------------------
AUTORE: 10944
DATA :30/05/2014 - 09:12:52
----------------------------------------
[quote="aris":o3cikazg]Scusate,
mi intrometto solo un'attimo.....direi che almeno un errore (grosso) c'è.
I controlli Device, channels e numero di punti da acquisire, vanno messi all'esterno del while, altrimenti non funzionerà nulla.
Un'altra cosa (ma non sono molto sgamato con i traditional), lo start e clear del AI vanno sempre messi all'esterno del ciclo, all'interno esegui solo la lettura del task.
Ultima postilla, se hai task che lavorano a frequenze diverse, dovresti farli girare in cicli paralleli, non tutti dentro ad uno unico!
Detto questo......mi tolgo dalle****
Aris[/quote:o3cikazg]
Aris grazie per il suggerimento, si scrive in un forum proprio per ascoltare i consigli di tutta le persone disposte a darteli come gepponline
Tornando al programma che ho scritto. Purtroppo posso utilizzare il labview solo stando in laboratorio e ci tornerò martedì 3 visto che lunedì è festivo. Apporterò le modifiche che mi avete suggerito che mi avete suggerito, perchè non avendo con me la scheda di acquisizione, come ben sapete, non mi è possibile utilizzare parecchie funzioni.
Mi sono reso conto di aver commesso un grosso errore, cioè il segnale generato dalla differenza dei segnali è frutto della sottrazione del segnale in ingresso generato per la valvola proporzionale e di un segnale acquisito, invece dev'essere il frutto della differenza di due segnali acquisiti (pressione intermedia-pressione cilindro), quindi lo correggerò appena possibile. Volevo chiedervi un paio di cose:
- al di là dell'errore che ho commesso col termine sottraente, la logica con cui leggo i due segnali che mi interessa elaborare, li sottraggo e poi li aggiungo al file dei segnali semplicemente acquisiti, è corretta?
- come segnali in ingresso del while ho sempre utilizzato sinusoidi (che sicuramente sono più "complesse" da generare di quanto lo sia un segnale costante), ora mi servirebbe utilizzare un segnale a gradino in cui mi sia possibile creare un ciclo di segnali costanti, ad esempio: 8 volt per 4 secondi e dopo i 4 secondi, inviare 0V per 3 secondi. E' possibile oppure posso effettuare solo prove "spezzando il ciclo" ovvero effettuare prima una prova inviando 8 V per 4 secondi e poi un'altra prova inviando un secondo segnale per un altro intervallo di tempo?
Grazie mille!!!
----------------------------------------
AUTORE: 301
DATA :30/05/2014 - 10:40:12
----------------------------------------
La risposta è....."con il Labview si fa tutto"!(o quasi)
Scherzi a parte, è assolutamente fattibile quello che vuoi fare, solo che si deve lavorare sulla struttura del codice...e non è cosi "semplice" da spiegare.....
Ultima cosa (ieri ho dato solo un'occhiata veloce) riguardando il diagram che hai postato.....sei sicuro di quello che hai fatto?!?!
Operazioni sui segnali a parte, devi vedere il tuo codice come:
1_Inizializzazione
Metti tutto il codice che inizializza SOLO UNA VOLTA le funzioni che userai per tutta la durata del tuo "programma".
2_Esecuzione:
scrivi il codice (tipicamente dentro un wile) che verrà ripetuto per certa durata.
3_Chiusura:
chiudi tutti i riferimenti che hai aperto, chiudi le funzioni, liberi la memori da dati che hai caricato, ecc....
Se guardi l'immagine che hai postato, bèh, in realtà, andrai a salvare solamente i dati derivanti dall'ultima esecuzione del while...
Aris
----------------------------------------
AUTORE: 10944
DATA :30/05/2014 - 12:14:03
----------------------------------------
[quote="aris":pl63vrdu]La risposta è....."con il Labview si fa tutto"!(o quasi)
Scherzi a parte, è assolutamente fattibile quello che vuoi fare, solo che si deve lavorare sulla struttura del codice...e non è cosi "semplice" da spiegare.....
Ultima cosa (ieri ho dato solo un'occhiata veloce) riguardando il diagram che hai postato.....sei sicuro di quello che hai fatto?!?!
Operazioni sui segnali a parte, devi vedere il tuo codice come:
1_Inizializzazione
Metti tutto il codice che inizializza SOLO UNA VOLTA le funzioni che userai per tutta la durata del tuo "programma".
2_Esecuzione:
scrivi il codice (tipicamente dentro un wile) che verrà ripetuto per certa durata.
3_Chiusura:
chiudi tutti i riferimenti che hai aperto, chiudi le funzioni, liberi la memori da dati che hai caricato, ecc....
Se guardi l'immagine che hai postato, bèh, in realtà, andrai a salvare solamente i dati derivanti dall'ultima esecuzione del while...
Aris[/quote:pl63vrdu]
Capisco la difficoltà nello spiegare il da farsi tramite messaggio. Gli step 1 - 2 e 3 sono rispettati nel vecchio programma dove utilizzavo un input sinusoidale, che ho postato nel primo messaggio del topic?
----------------------------------------
AUTORE: 482
DATA :03/06/2014 - 08:02:57
----------------------------------------
no.
Gli step sono rispettati per quanto riguarda la generazione ma non riguardo la lettura.
La lettura è fatta tutta all'interno del while.
Mentre i config e i close dovrebbero strae al di fuori del ciclo e il salvataggio del file dovrebbe stare all'interno se vuoi salvare continuamente sul file.
----------------------------------------
================================================================================
Gestire lampeggio led
================================================================================
AUTORE: 10961
DATA :26/05/2014 - 13:44:07
----------------------------------------
Salve a tutti,
Sono un principiante e avrei bisogno di un vostro aiuto: Attualmente vorrei far lampeggiare solo il led con un ritardo di 500ms, questo avviene ma influenzando tutto il programma.
Esiste un modo per isolare solo la parte che a me interessa?
Ringrazio per l'attenzione
----------------------------------------
AUTORE: 3428
DATA :26/05/2014 - 17:11:45
----------------------------------------
ho risposto a qualcosa di simile pochi giorni fà, guarda un pò se può esserti d'aiuto...
viewtopic.php?f=1&t=5952
----------------------------------------
AUTORE: 10961
DATA :27/05/2014 - 08:51:23
----------------------------------------
Ciao renaso, vorrei far lampeggiare il led senza far ritardare di (500ms) tutto il programma.
Allego il programmma
Grazie
----------------------------------------
AUTORE: 129
DATA :27/05/2014 - 09:33:12
----------------------------------------
Se per influenzare il programma intendi non fare girare un ciclo a 500ms, puoi usare n iterazioni da 100ms.
Per esempio gli matti un case, un comparatore e un incremento, nel case false, incrementa di 1 e visualizza lo stato precedente, nel case true resetta il coteggio e visualizza levento che vuoi dare al led.
Ovviamente devi impostare per esempio il timer a 100ms e una costante sul comparatore di 5, in modo che il comparatore non dia true finchè l'incremento non è arrivato a 5...
----------------------------------------
AUTORE: 301
DATA :27/05/2014 - 12:43:55
----------------------------------------
Visto che hai fatto una sorta di modulo, devi controllare il tempo trascorso, non mettere un ritardo.
Fai accendere il led se dall'ultima chiamata sono passati piu di 500 ms, stessa cosa per lo spegnimento.
Se vuoi mettere un ritardo, allora devi creare un loop parallelo nel "main" che esegua solo questa funzione.
Aris
----------------------------------------
AUTORE: 10961
DATA :27/05/2014 - 13:21:43
----------------------------------------
Questa è la via più breve?
[quote:2z1vmsh9]Se vuoi mettere un ritardo, allora devi creare un loop parallelo nel "main" che esegua solo questa funzione.
[/quote:2z1vmsh9]
Puoi farmi un esempio?
Ti ringrazio
----------------------------------------
AUTORE: 301
DATA :27/05/2014 - 13:25:47
----------------------------------------
ooooook,
ti allego il tuo vi modificato.
Aris
----------------------------------------
AUTORE: 10961
DATA :27/05/2014 - 13:45:49
----------------------------------------
OK, ma la frequenza del lampeggio non è modificabile
se tolgo il timer la frequenza del led è sempre la stessa
Grazie
----------------------------------------
AUTORE: 10961
DATA :27/05/2014 - 13:51:58
----------------------------------------
Poi se porto il timer a 1000ms ritarda tutto il programma sfasandomi il conteggio.
Il timer dovrebbe comandare solo il lampeggio del led
----------------------------------------
AUTORE: 301
DATA :27/05/2014 - 13:56:59
----------------------------------------
Se vuoi mettere la frequenza modificabile,metti un confronto con un controllo.
Per quanto riguarda il ritardo del programma.....non capisco cosa intendi, non c'è nessun timer.
Aris
----------------------------------------
AUTORE: 10961
DATA :27/05/2014 - 14:16:21
----------------------------------------
Scusami, per timer intendo l'orologio da polso
Ho notato che non modifica la frequenza del led
----------------------------------------
AUTORE: 301
DATA :27/05/2014 - 14:29:37
----------------------------------------
Perdonami, ma proprio stiamo parlando 2 lingue diverse.
La funzione "orologio da polso" non la conosco proprio.
Credo di iniziare a capire ora......
per mandare in run il programma, utilizzi le "due freccette che si rincorrono", vero?
In ogni caso, il codice che ti ho postato, fa lampeggiare il led a 500ms (come avevi chiesto) e non interferisce con l'esecuzione del codice.
Se vuoi variare la frequenza del lampeggìo, o fare altre modifiche.....sta a te.
Aris
----------------------------------------
AUTORE: 10961
DATA :27/05/2014 - 14:41:12
----------------------------------------
Aris intedo questo orologio da polso.
Se modifico il tempo(aumento o diminusico i ms) non rallenta la frequenza del led ma quella del programma.
Ultimo aiuto, la variabile reset dentro il case come hai fatto a crearla?
Ti ringrazio per l'aiuto
----------------------------------------
AUTORE: 301
DATA :27/05/2014 - 14:58:49
----------------------------------------
Chiedo venia, era rimasto dal vi originale.
Il wait, lo devi proprio togliere!
La frequenza di lampeggio la cambi andando a variare le "scritte" del case (..499, 500..).
La costante di cui parli è un enum.
La cosa fondamentale è che quello che hai fatto, NON è un programma ma un moudolo (o functional global), in pratica una funzione dotata di memoria fatta per essere richiamata all'interno di un programma!
La domanda che ti ho posto prima (se lo mandi in run con il "run continuously"), è perchè è sbagliato fare in questo modo!
Aris
----------------------------------------
AUTORE: 10961
DATA :27/05/2014 - 15:26:37
----------------------------------------
[quote:1743a6fi]
La domanda che ti ho posto prima (se lo mandi in run con il "run continuously"), è perchè è sbagliato fare in questo modo!
[/quote:1743a6fi]
Per risolvere questo problema dovrei inserire il tutto in un ciclo while giusto?
Ciao e grazie
----------------------------------------
AUTORE: 301
DATA :27/05/2014 - 15:36:57
----------------------------------------
si
----------------------------------------
AUTORE: 10961
DATA :27/05/2014 - 15:39:55
----------------------------------------
Ti ringrazio molto
Ciao
----------------------------------------
AUTORE: 301
DATA :28/05/2014 - 07:10:15
----------------------------------------
Di nulla.
Il giusto metodo per richiamare il tuo vi è quello in allegato.
Aris
----------------------------------------
AUTORE: 10961
DATA :28/05/2014 - 09:33:55
----------------------------------------
Ciao Aris grazie, ho aggiunto anche un beep come segnale acustico, ma una volta arrivato al tempo impostato si crea il ritardo causato (penso) dai ms del beep, come posso risolvere questo problema?
Devo usare lo stesso metodo che hai usato te per il led?
Ciao
----------------------------------------
AUTORE: 301
DATA :28/05/2014 - 10:41:11
----------------------------------------
In questo caso, hai inserito una funzione alla quale specifichi una durata ben definita.
Se non vuoi che il codice "chiamante" risenta dell'attesa per l'esecuzione di questa funzione, la devi scorporare e farla eseguire PARALLELAMENTE al "codice primario".
Per rispondere a cio che chiedi, No, il metodo che ho usato io in questo caso non funziona, non cosi, almeno.
Dovresti chiamare la funzione di "Beep" in maniera dinamica (all'interno dello stesso modulo), o (come sopra) richiamarla nel codice "primario" all'interno di un while parallelo a quello dove gira il timer.
Aris
----------------------------------------
AUTORE: 10961
DATA :28/05/2014 - 15:00:49
----------------------------------------
Il parallelo il dinamico?
Sinceramente ho capito ben poco di quello che mi hai detto anche perchè non ho esperienza, ma ho risolto così
ora devo capire come far oscillare il suono.
Manca il file audio poichè L’estensione wav non è permessa
----------------------------------------
AUTORE: 10961
DATA :29/05/2014 - 07:53:21
----------------------------------------
Ho provato su win8 il programma, ma ho notato che labview mi dice che il formato del file audio non è valido.
Invece su winxp funziona bene... Misteri dell'informatica
----------------------------------------
================================================================================
modificare Stepper Drive.lvproj
================================================================================
AUTORE: 10906
DATA :26/05/2014 - 14:56:51
----------------------------------------
salve a tutti,
devo pilotare un motore passo passo utilizzando cRIO 9074 e il modulo NI 9501. ho a disposizione il programma Stepper Drive (Getting Started).lvproj, che si trova negli esempi avendo installato il pacchetto NI motion.
con questo programma attraverso l'interactive test panel sono riuscito a muovere il motore però in un solo verso e non nell'altro, e per attivare e fermare il movimento del motore devo sempre schiacciare "start" e "stop" pertanto non ho il movimento preciso del mototre che desidero.
il mio obbiettivo pertanto è di modificare il progetto di partenza in modo da avere un pannello frontale sull' host (pc), quindi non usando l'interactive test panel, che abbia i seguenti controlli/indicatori:
- il motore deve muoversi di un determinato numero di gradi e a una data velocità ogni volta e poi fermarsi per tot tempo per poi ripetere tutto per un numero indicato di volte, prima in senso orario e poi antiorario
- un controllo per determinare di quanti gradi deve ruotare il motore
- un controllo per determinare la velocità
- un controllo per determinare quanti spostamenti deve fare in senso orario e quanti in senso antiorario
- un controllo per determinare quanto tempo deve trascorrere fra due successivi spostamenti del motore ( questo perchè successivamente in questo tempo fra gli spostamenti ci deve essere una acquisizione con una bilancia elettronica )
-facoltativo, un grafico che indichi la traiettoria del motore nel tempo
- pulsante di stop per poter bloccare tutto anche se non sono finiti i cicli
praticamente dovrebbe funzionare così, ad esempio do l'avvio e il motore in automatico fa 5 spostamenti ognuno di 30 gradi nel verso antiorario, poi 6 sempre di 30 nel verso antiorario e poi ripete il tutto per 10 volte a una velocità impostata. fra uno spostamento e l'altro passano 3 secondi nei quali la bilancia fa l'acquisizione.
pensavo di modificare il progetto attraverso dei cicli while loop, ma non saprei da che parte iniziare.
qualcuno dando una occhiata al progetto potrebbe darmi qualche consiglio almeno su come iniziare? ( quale punto del progetto sarebbe da modificare, qualche consiglio per il front panel sull' host, dove andare a mettere i while loop ecc ecc...)
grazie
----------------------------------------
================================================================================
Come creare l'eseguibile
================================================================================
AUTORE: 10961
DATA :30/05/2014 - 21:12:32
----------------------------------------
Ciao a tutti, ho provato a creare l'eseguibile è ho notato che il file audio non lo sento in più mi rimane in alto il menù.
Mi date una mano?
Uso Labview 2013
Vi ringrazio
----------------------------------------
AUTORE: 482
DATA :03/06/2014 - 07:58:08
----------------------------------------
1)Il file audio come lo richiami? dandogli un percorso completo o relativo?
2) Il menu in alto resta perchè l'eseguibile non fa altro che rendere "automatica" la pressione della freccetta di RUN, quindi s etu non vuoi vedere il menu in alto e altre cose della finestra, prima di creare l'eseguibile devi andare sull'icona in alto a destra del vi, clikkare col destro, poi VI properties e poi window apparence e da li seleziioni le caratteristiche che dovrà avere il tuo front panel.
----------------------------------------
AUTORE: 10961
DATA :03/06/2014 - 10:35:24
----------------------------------------
Ok grazie Geppo...il primo punto l'ho risolto il secondo no
Non passo tutto il percorso del file, ma solo il nome del file audio wav
----------------------------------------
AUTORE: 10961
DATA :03/06/2014 - 11:26:05
----------------------------------------
L'eseguibile funzionera su tutti i computer senza dover installare nessun runtime?
Ringrazio tutti
----------------------------------------
AUTORE: 129
DATA :03/06/2014 - 17:19:42
----------------------------------------
Il RT di Labview è obbligatorio per far girare eseguibili fatti in labview, deve essere installato su tutti i PC che usano quel eseguibile.
----------------------------------------
AUTORE: 10961
DATA :04/06/2014 - 09:07:56
----------------------------------------
Grazie Nicola,
è possibile installare il runtime assieme all'eseguibile? senza dover passare al cliente prima il runtime e poi l'eseguibile?
----------------------------------------
AUTORE: 4
DATA :04/06/2014 - 09:28:16
----------------------------------------
Io ti consiglio di dare una lettura a questo documento viewtopic.php?f=34&t=2740
Ciao
----------------------------------------
AUTORE: 10961
DATA :05/06/2014 - 08:52:38
----------------------------------------
Ciao, non riesco a sentire l'audio quando creo l'eseguibile.
Cosa sbaglio?
Ringrazio per l'attenzione
----------------------------------------
AUTORE: 4
DATA :05/06/2014 - 09:50:05
----------------------------------------
Molto probabilmente è perchè il tuo sw una volta compilato, non trova il file dove dovrebbe essere.
I path in labview funzionano in modo differente a seconda che ti trovi in modalità sviluppo o in eseguibile.
Leggi questo documento che spiega bene la cosa.
http://digital.ni.com/public.nsf/allkb/ ... F4006BE363
Ciao
----------------------------------------
AUTORE: 10961
DATA :06/06/2014 - 08:53:31
----------------------------------------
Grazie Ale,
Attualmente ho risolto in qs modo indicando tramite finestra di dialogo il percorso del file audio.
Quando eseguo il run senza inserire il percorso del file in automatico mi genera l'errore indicandomi che non esiste il percorso di un file audio, ho gestito il problema con un if un comparatore e una messagebox, però il messaggio una volta richiamato rimane sempre attivo come faccio a togliere tale condizione? Dovrebbe uscire dalla condizione con un return ma in labview come lo indico?
Grazie
----------------------------------------
AUTORE: 4
DATA :06/06/2014 - 21:10:39
----------------------------------------
Se il pezzo di codice che fa appareire il popup è dentro un while (non lo capisco dall'immagine che hai allegato) e non esci dal while, è normale che il popup si aprirà ad ogni giro di questo, il caso di errore devi terminare il while stesso.
Ciao
----------------------------------------
AUTORE: 10961
DATA :09/06/2014 - 09:05:28
----------------------------------------
Grazie ale,
Poniamo il caso di consegnare questo programma a un cliente, nel momento in cui non verra inserito il nome del file uscirà il messaggio indicando tale problema facendolo uscire dal progamma e nel momento in cui uscirà dal programma vedrà la freccia (run) e tutto il menù.
Il cliente non deve preoccuparsi di farlo ripartire e ancor meno di vedere il menù in alto, premetto che ho impostato wondow appearance come dialog.
Ringrazio per l'aiuto
----------------------------------------
AUTORE: 4
DATA :10/06/2014 - 08:00:48
----------------------------------------
Ciao devi chiamare, alla fine dell'esecuzione del tuo sw e come ultima funzione, "quit labview" (application control>quit labview)
----------------------------------------
AUTORE: 10961
DATA :11/06/2014 - 10:53:25
----------------------------------------
Ciao Ale,
Ti ringrazio per la pazienza ma non riesco a capire: con altri linguaggi di programmazione tipo vbnet o c#... capita spesso di controllare un errore con un pop-up tipo: Attenzione non hai inserito un numero o altro... e nel momento in cui premo OK non si riverifica più tale evento fino a quando non si ripresenta l'errore.
Attualmente a mio avviso non è carino uscire dal programma con quit-labview solo perchè esce un semplice avviso.
Non riesco a gestire il problema (sicuramente banale per te) ma non per me
Se hai tempo di guardare l'allegato del precedente post e poi darmi delle dritte te ne sarei grato.
Ciao
----------------------------------------
AUTORE: 129
DATA :11/06/2014 - 17:53:02
----------------------------------------
Ti devi creare tu il popup come in vb fai il MSGBOX(.....) qui vai nella palette dialog e user interface e usi una delle Dialog che ti propone, queste hanno l'uscita del tasto che premi, con questo gestisci il comportamento della tua applicazione.
Altrimenti puoi crearti un vi, che andrai con propietà/apparence DIALOG, in modo che ti crea un vi modale(va sopra tutti quelli in esecuzione) e li puoi sbizzarirti a controllare i vari casi di errore che vuoi prevedere.
Quello che ti diceva Ale era per chiduere la main chiudendo la finestra e quindi l'esecuzione dell'applicazione a RunTime.
----------------------------------------
AUTORE: 482
DATA :12/06/2014 - 07:11:22
----------------------------------------
Credo ci sia un problema di fondo che non stai capendo.
Non è questione di VB o C# il problema è che il tuo software non è fatto correttamente.
Hai un errore in un ciclo while quindi è normalissimo e lofarebbe anche con VB o qualunque altro linguaggio di continuare a spararti fuori l'errore.
Quindi quello che devi fare è modificare la struttura del tuo programma.
Ad esempio:
Hai un percorso di file non valido? Prima dai l'errore e subito dopo fai scegliere un percorso valido.
ALternativa è usare gli eventi, quindi ad un certo evento vai ad aprire quel file. Se quel file non c'e', esce l'errore e una volta chiuso non si ripresenta piu' finchè non succede qualche altro evento.
Dimentica il quit labview. Non ti serve in questo caso. Ti è stato suggerito perchè tu hai chiesto questa cosa:
"nel momento in cui non verra inserito il nome del file uscirà il messaggio indicando tale problema facendolo uscire dal progamma e nel momento in cui uscirà dal programma vedrà la freccia (run) e tutto il menù" che non è assolutamente quello che devi fare.
----------------------------------------
================================================================================
Aiuto su un esempio!!
================================================================================
AUTORE: 10964
DATA :01/06/2014 - 15:38:06
----------------------------------------
ciao ragazzi, sono nuovo del forum...prima di tutto vi ringrazio per le molteplici informazioni che divulgate gratuitamente.
passi al dunque, mi potreste aiutare con questo esercizio??
"Determinare l’intervallo di tempo tra due pressioni dello stesso tasto."
io pensavo di mettere sul front panel un solo tasto (start/stop) e un numeric indicator, per visualizzare il tempo!
grazie a tutti
----------------------------------------
AUTORE: 482
DATA :03/06/2014 - 07:55:31
----------------------------------------
con o senza event case?
----------------------------------------
AUTORE: 10964
DATA :03/06/2014 - 15:44:06
----------------------------------------
con o senza, è indifferente, sinceramente preferirei con gli event case...anche perchè non ho capito bene come funzionano!
grazie
----------------------------------------
AUTORE: 129
DATA :03/06/2014 - 17:18:08
----------------------------------------
Immagino tu intenda un pulsante quindi vai a misurare il tempo intercorso tra due pressioni ON dello stesso.
Ti allego un esempio, ho messo due shift register uno per contare il numero di pressioni e uno per totalizzare il tempo.
Vedi se fa al caso tuo
----------------------------------------
AUTORE: 10964
DATA :03/06/2014 - 19:55:24
----------------------------------------
semplicemente perfetto...quello che non ho capito è come fai con un solo event case a distinguere i due casi:
-prima pressione, quindi parti il timer;
-seconda pressione, quindi stop timer e stampa!!
me lo spiegheresti??
grazie, comunque
----------------------------------------
AUTORE: 129
DATA :03/06/2014 - 21:57:33
----------------------------------------
Sono contento ti sia servito.
All'avvio inizializzo i due shift register, i quali hanno uno il compito di contatore in avanti di 1, l'altro di cronometro.
Alla prima pressione quindi il contatore è azzerato verifica se = 1(perchè al primo è 0);se False incrementa il contatore e non aggiorna il registro del Tick Count.
Alla seconda pressione il contatore si trova a 1 quindi la comparazione = è vera e passa a true il CASE, azzerando il contatore(per i successivi eventi) quindi esegue la differnza tra il tick count nuovo e quello in memoria calcolando appunto il tempo trascorso, per i successivi cicli, viene passato il tick count.... e così via.
Altro piccolo dettaglio è il fatto di tenere l'indicatore volutamente all'interno del case, per congelarlo fino ad una nuova doppia pressione.
Ciao
----------------------------------------
AUTORE: 10964
DATA :03/06/2014 - 22:26:23
----------------------------------------
ottima spiegazione!
grazie a te ancora per l'aiuto..alla prossima
----------------------------------------
================================================================================
Aiuto su progetto con comunicazione seriale.
================================================================================
AUTORE: 10965
DATA :05/06/2014 - 10:26:52
----------------------------------------
Buongiorno a tutti,
Sono nuovo del forum e spero di poter ricevere informazioni utili per quanto riguarda il mio progetto, spero in generale di poter aiutare altri utenti anche se la vedo dura visto i miei primi approci a LabView.
vi descrivo un attimo il progetto per poi seguire con le domande.
Allora ho costruito un circuito elettronico che all'inizio doveva essere diagnosticato con VB poi succesivamente nel tempo libero per sperimentazione ho provato anche con labview e i risultati non sono niente male, solo che ci sono alcune cose che andrebbero perfezzionate.
Allora il circuito in pratica mi rimanda su seriale attraverso interrogazione una stringa contenente i valori che io devo "elaborare".
La stringa è così composta : "001;002;003;004;005;006;007;." dove i primi sei gruppi di cifre indicano dei numeri decimali mentre il settimo gruppo indica in numero binario lo stato di tre led.
un esempio reale di stringa è ad esempio "256;450;180;040;020;200;101;."
sono riuscito a comunicare con il mio dispositivo e ad estrarre in modo coretto tutti i miei valori per poi rappresentarli attraverso strumenti, spie ed un grafico.
però il mio progetto presenta dei problemi:
1. non riesco a fare un tasto che mi permetta di far partire o fermare il ciclo di lettura a mio piacimento, devo usare quello del programma. se provo a mettere un tasto di stop sul while loop non fà assolutamente niente.
2. per adesso uso un Waveform Chart per rappresentare i 9 segnali (6 analogici e 3 digitali inserendo un offset per quelli digitali, vorrei riuscire ad usare il mixed signal graph ma anche attraverso gli esempi non riesco.
3. non riesco ad associare l'asse x (quello del tempo) all'orario dal computer.
4. vorrei poter inserire due scale per l'asse y ma non riesco.
5. vorrei dopo aver inserito un tasto di stop scansione che il programma mi salvi in automatico un report in excel. ancor meglio se poi questo report possa essere richiamato per essere rivisualizzato.
6. uso la schermata fatta a tendine in cui in una ho gli strumenti (principalmente barre) ed in un'altra il grafico. Vorrei che cambiando il colore ad una traccia sul grafico si cambi in automatico il colore anche sullo strumento nell'altra finestra.
se io creo un property node dal grafico con il colore della linea non mi fà selezionare di quale linea io voglio il colore e quindi non riesco a fare questa associazione.
vi ringrazio anticipatamente
Federico
----------------------------------------
AUTORE: 4
DATA :17/06/2014 - 13:42:06
----------------------------------------
Ciao come consiglio per ora posso solo darti quello di dividere questo post in tanti diversi, uno per ogni domanda cercando di circoscrivere il più possibile i singoli problemi.
Così è troppo generico e difficilmente avrai risposte.
Ciao
----------------------------------------
================================================================================
salvare file su cartella
================================================================================
AUTORE: 10966
DATA :06/06/2014 - 08:15:51
----------------------------------------
buongiorno,io ho fatto un programma che mi salva i dati in uscita su un file, però in questo file a fianco di ogni numero salvato devo inserirci il nome, esempio:
66489 a fianco a questo numero devo inserire c0...non so come fare
invio un allegato per farmi capire meglio
----------------------------------------
AUTORE: 4
DATA :06/06/2014 - 08:31:17
----------------------------------------
Ciao devi usare la funzione di salvataggio in modalità "string" (tasto dx->select type->string)
Poi ti costruisci il tuo array di stringhe a patire dai numeri, a questo aggiungi la colonna con i nomi delle righe e lo passi alla funzione di salvataggio.
Ciao
----------------------------------------
AUTORE: 10966
DATA :06/06/2014 - 08:40:34
----------------------------------------
ma devo crearmi un altra stringa di numeri?
e poo per unirla con la stringa di nomi le concateno?
scusa le domande ma sono alle prime armi con il programma...
----------------------------------------
AUTORE: 10966
DATA :06/06/2014 - 10:11:18
----------------------------------------
potresti inviarmi gentilmente un esempio pratico?
ti ringrazio in anticipo
----------------------------------------
AUTORE: 4
DATA :06/06/2014 - 21:08:07
----------------------------------------
Ciao guarda la funzione che usi per salvare dentro come converte i numeri in stringa, l'esempio ce l'hai già li.
All'array di stringhe che crea quel pezzo di codice devi appendere l'arrei con i nomi che vuoi associare alle righe
Ciao
----------------------------------------
================================================================================
codici errore
================================================================================
AUTORE: 10966
DATA :11/06/2014 - 08:41:14
----------------------------------------
Buongiorno, io dovrei associare dei codici di errore di un programma a dei messaggi personalizzati, in pratica per ogni codice devo visualizzare il suo messaggio d errore...come si fa?
grazie in anticipo
----------------------------------------
AUTORE: 301
DATA :11/06/2014 - 10:52:15
----------------------------------------
I codici di errore che vuoi manipolare, sono quelli standard delle funzioni di labview o ne vuoi creare/gestire dei nuovi?
Nel primo caso, puoi lavorare semplicemente con le funzioni dei cluster andando a modificare il camo testo dell'errore.
Nel secondo, le strade sono 2:
1_ datti una letta all'help di labview "error codes, defining custom".
2_crei un file (testo, html, ini, ecc) e crei una struttura con codici errore e descrizione.Con questo metodo, ovviamente, devi anche crearti una "libreria" apposta per poterli gestire (caricare da file, cercare il testo in base al codice).
Aris
----------------------------------------
AUTORE: 10966
DATA :11/06/2014 - 11:26:34
----------------------------------------
grazie mille
----------------------------------------
================================================================================
Gestione punto decimale nel Read Buffer VISA
================================================================================
AUTORE: 10969
DATA :11/06/2014 - 12:52:01
----------------------------------------
Salve a tutti, sono nuovo del forum e quasi nuovo dell'ambiente Labview.
Ho realizzato l'interfacciamento e il controllo di uno strumento tramite seriale.
Interrogando tale strumento con comandi SCPI, lo stesso restituisce (come definito nel manuale) un valore con punto decimale (es. 10.2).
[b:22hk9rcp]Ciò comporta un errore sul Error della function VISA.[/b:22hk9rcp]
Per quanto riguarda l'invio dei comandi, questa situazione l'ho evitata, imponendo nullo il "byte count", e accontentandomi solo dell'invio senza risposta da parte dello strumento.
Grazie
----------------------------------------
AUTORE: 10961
DATA :11/06/2014 - 13:35:22
----------------------------------------
Ciao hai installato i drive Visa?
http://www.ni.com/download/ni-visa-5.2/3337/en/
----------------------------------------
AUTORE: 10969
DATA :11/06/2014 - 13:38:01
----------------------------------------
Si installati. Premetto che la comunicazione seriale funziona perfettamente, in quanto invio comandi e ricevo risposte da e verso lo strumento.
L'unico problema sussiste quando, alcune interrogazioni SCPI prevedono una risposta da parte del device del tipo numero punto decimale.
----------------------------------------
AUTORE: 10969
DATA :11/06/2014 - 17:27:42
----------------------------------------
[quote="Isac":3qytfr1r]Ciao hai installato i drive Visa?
http://www.ni.com/download/ni-visa-5.2/3337/en/[/quote:3qytfr1r]
Ho perso qualche ora per capirci meglio. I driver VISA sono installati, e la comunicazione seriale funziona perfettamente.
Il problema si verifica quando, inviata un'interrogazione allo strumento, questo risponde con un valore provvisto di punto decimanale (es. 12.5).
Se pongo il valore del byte count a zero, allora tutto funziona, ma non leggo la risposta.
Se invece incremento il byte count, l'error in uscita della funzione VISA mi da un errore, e non ricevo nessuna risposta.
----------------------------------------
AUTORE: 129
DATA :11/06/2014 - 17:45:03
----------------------------------------
Hai provato con la funzione Bytes at Serial Port? ti restituisce il count disponibile sulla porta dopo la query.
Il bytes number che ottieni in uscita lo colleghi al count della VISA Read.
----------------------------------------
AUTORE: 10969
DATA :11/06/2014 - 17:54:29
----------------------------------------
[quote="nicola":1o847gmn]Hai provato con la funzione Bytes at Serial Port? ti restituisce il count disponibile sulla porta dopo la query.
Il bytes number che ottieni in uscita lo colleghi al count della VISA Read.[/quote:1o847gmn]
Si già provato.
Pomeriggio ho fatto un tentativo tramite i driver ufficiali dello strumento. In fase di interrogazione ottenevo lo stesso problema.
Se la risposta attesa è un numero intero (come da manuale) allora nessun errore e il read visa restituisce anche il valore.
Ma se la risposta è un numero decimale con punto, allora vien fuori l'errore.
----------------------------------------
AUTORE: 4
DATA :11/06/2014 - 23:36:34
----------------------------------------
Esattamente che codice errore ti ritorna?
Ciao
----------------------------------------
AUTORE: 10969
DATA :12/06/2014 - 08:54:15
----------------------------------------
[quote="ale914":lyog66pl]Esattamente che codice errore ti ritorna?
Ciao[/quote:lyog66pl]
Il codice errore è: -1073807339
In genere nelle acquisizioni tramite seriale, i valori decimali sono con la virgola (,) o con il punto (.) ?
Grazie
----------------------------------------
AUTORE: 301
DATA :12/06/2014 - 09:08:27
----------------------------------------
Quell'errore, pare essere di timeout.....hai provato ad aumentarlo?
hai per caso specificato un carattere di terminazione? (e per caso ci hai messo un punto?)
Dalla seriale, leggi sempre e comunque dei caratteri (virgola o punto che siano), se non hai detto di leggere quel carattere come carattere di terminazione, non dovrebbe dare problemi.
Magari prova a postare il vi incriminato (anche solo una replica solo di quella parte di codice)
Aris
----------------------------------------
AUTORE: 10969
DATA :12/06/2014 - 09:18:04
----------------------------------------
[quote="aris":2mc0vfhq]Quell'errore, pare essere di timeout.....hai provato ad aumentarlo?
hai per caso specificato un carattere di terminazione? (e per caso ci hai messo un punto?)
Dalla seriale, leggi sempre e comunque dei caratteri (virgola o punto che siano), se non hai detto di leggere quel carattere come carattere di terminazione, non dovrebbe dare problemi.
Magari prova a postare il vi incriminato (anche solo una replica solo di quella parte di codice)
Aris[/quote:2mc0vfhq]
Ti ringrazio per il supporto.
Ho provato ad aumentare il tempo di attesa in fase di write-read VISA, ma niente.
Se la risposta che attendo dallo strumento è un numero intero senza punto decimale, il problema non si presenta. E' questo che non mi spiego.
Come mai quando la risposta ricevuta è provvista di punto decimale, non posso leggere il read buffer perchè altrimenti si presenta l'errore?
Il carattere di terminazione è NewLine <NL>.
Il VI è semplicemente una lettura-scrittura dalla seriale VISA, niente di più, al momento ho messo da parte l'intero progetto e sto lavorando sulla sola comunicazione.
----------------------------------------
AUTORE: 301
DATA :12/06/2014 - 09:55:20
----------------------------------------
Come ti dicevo, i casi credo siano 2:
1_quando c'è un punto lo strumento mette qualche altro carattere nella stringa.
2_le funzioni di lettura male interpretano qualcosa.
Tu stai lavorando con le primitive dei VISA, vero?
non stiamo parlando di una libreria specifica dello strumento, giusto?
Aris
----------------------------------------
AUTORE: 301
DATA :12/06/2014 - 10:00:30
----------------------------------------
Prova a disabilitare il termination char (all'apertura della porta)ed a leggere tutti i caratteri che ti ritornano in risposta dallo strumento (byte at sarial port), per qualche strano motivo, potrebbe anche essere che se ti ritorna una stringa con "puno decimale" lo strumento non aggiunga la new line alla fine (ed il read vada in timeout).
Inutile specificare di impostare un ritardo tra la scrittura e la lettura......
Aris
----------------------------------------
AUTORE: 10969
DATA :12/06/2014 - 11:00:40
----------------------------------------
[quote="aris":g071ohjx]Prova a disabilitare il termination char (all'apertura della porta)ed a leggere tutti i caratteri che ti ritornano in risposta dallo strumento (byte at sarial port), per qualche strano motivo, potrebbe anche essere che se ti ritorna una stringa con "puno decimale" lo strumento non aggiunga la new line alla fine (ed il read vada in timeout).
Inutile specificare di impostare un ritardo tra la scrittura e la lettura......
Aris[/quote:g071ohjx]
Risolto!
Non è proprio un problema di ritardo tra Read-Write.
A quanto pare lo strumento preferisce più comandi nello stesso WRITE BUFFER;
come dire, se invio un solo comando allora ritorna l'errore,se invece aggiungo righe di codice, è come se si introducesse un ritardo, ma ho una risposta senza errore.
Tuttavia devo ancora capire il perchè non sempre ricevo un valore corretto, capita che mi ritrovi un "?" nella misurazione.
Sei stato gentilissimo.
----------------------------------------
AUTORE: 301
DATA :12/06/2014 - 11:03:47
----------------------------------------
il punto interrogativo potrebbe essere una risposta di "comando non capito".
Di nulla.
Aris
----------------------------------------
AUTORE: 10969
DATA :12/06/2014 - 11:56:20
----------------------------------------
[quote="aris":3e87a1sf]il punto interrogativo potrebbe essere una risposta di "comando non capito".
Di nulla.
Aris[/quote:3e87a1sf]
No scusa, non è un punto interrogativo,ma un punto e virgola.
Nella fase di interrogazione, si alterna una risposta con valore corretto e una risposta con punto e virgola(;) che anticipa il valore.
Esempio:
1misura 230.00
2misura ;230.0
...e così via.
Ma a questo punto sarà un problema dei comandi SCPI.
----------------------------------------
AUTORE: 4
DATA :12/06/2014 - 12:01:31
----------------------------------------
probabilmente leggi dal buffer un byte in meno, appunto il ; che alla seconda lettura è ancora li e viene letto per primo, alla seconda lettura infatti manca il secondo zero decimale.
Occhio che se succede questa cosa dopo n letture ti si disallinea tutto e molto probabilmente il parsing della risposta smetterà di funzionare.
----------------------------------------
AUTORE: 10969
DATA :12/06/2014 - 12:07:10
----------------------------------------
[quote="ale914":1hrqiger]probabilmente leggi dal buffer un byte in meno, appunto il ; che alla seconda lettura è ancora li e viene letto per primo, alla seconda lettura infatti manca il secondo zero decimale.
Occhio che se succede questa cosa dopo n letture ti si disallinea tutto e molto probabilmente il parsing della risposta smetterà di funzionare.[/quote:1hrqiger]
Immaginavo anche io qualcosa del genere, solo che se provo ad aggiungergli un byte alla prima lettura, mi da l'errore in uscita del read.
In pratica l'error OUT del write non corrisponde all'error IN del read; quest'ultimo lo devo settare con una costante in base alla previsione sulla lunghezza della risposta.
----------------------------------------
AUTORE: 301
DATA :12/06/2014 - 12:48:05
----------------------------------------
ma....lo hai messo un ritardo tra il read ed il write VISA?
Il discorso che facevi prima sull'aggiunta di codici nella stringa di comando mi suona strano.....
Aris
----------------------------------------
AUTORE: 10969
DATA :12/06/2014 - 13:28:25
----------------------------------------
[quote="aris":i14rmw6j]ma....lo hai messo un ritardo tra il read ed il write VISA?
Il discorso che facevi prima sull'aggiunta di codici nella stringa di comando mi suona strano.....
Aris[/quote:i14rmw6j]
Si si, il ritardo tra write e read c'è dall'inizio. Anzi, ho fatto più tentativi, con ritardi da 0ms a 6sec la comunicazione funziona a parte quell'alternarsi del puntoEvirgola.
Per quanto riguarda l'aggiunta di codici nella stringa di comando, ho dedotto che la prima riga nel readBuffer non viene letta, quindi va inserita o una riga di codice o semplicemente una NewLine prima del comando vero e proprio.
Constatavo inoltre, che quel puntoEvirgola non dovrebbe sussistere nella risposta, quindi suppongo che non sia rimasto in coda dalla lettura precedente.
----------------------------------------
AUTORE: 301
DATA :12/06/2014 - 13:35:58
----------------------------------------
hai provato a mettere il carattere di terminazione alla fine del comando?
mi sembra strano che "la rima riga non venga letta"
Aris
----------------------------------------
AUTORE: 4
DATA :12/06/2014 - 13:39:54
----------------------------------------
Anche a me sembra un comportamento anomalo, riesci a postare la parte di codice relativa alla comunicazione?
----------------------------------------
AUTORE: 10969
DATA :12/06/2014 - 13:46:43
----------------------------------------
[quote="ale914":3jijfjfn]Anche a me sembra un comportamento anomalo, riesci a postare la parte di codice relativa alla comunicazione?[/quote:3jijfjfn]
Ti riferisci al codice SCPI?
----------------------------------------
AUTORE: 4
DATA :12/06/2014 - 13:53:49
----------------------------------------
no, ai tuoi VI che implementano la comunicazione
----------------------------------------
AUTORE: 10969
DATA :12/06/2014 - 14:01:09
----------------------------------------
[quote="ale914":bn7ozrhg]no, ai tuoi VI che implementano la comunicazione[/quote:bn7ozrhg]
----------------------------------------
AUTORE: 4
DATA :17/06/2014 - 13:40:38
----------------------------------------
prova a modificare il tuo codice in modo da far leggere alla read tutti i byte sul buffer, usa la proprietà dei VISA "byte at port". Inoltre dopo la open e prima della write chiama la VISA flush I\O buffer per essere sicuro di avere un buffer pulito
Ciao
----------------------------------------
AUTORE: 10969
DATA :17/06/2014 - 13:44:27
----------------------------------------
[quote="ale914":x0hedlmx]prova a modificare il tuo codice in modo da far leggere alla read tutti i byte sul buffer, usa la proprietà dei VISA "byte at port". Inoltre dopo la open e prima della write chiama la VISA flush I\O buffer per essere sicuro di avere un buffer pulito
Ciao[/quote:x0hedlmx]
Ho risolto grazie. Era un problema anomalo del codice SCPI. Più in la mi concentrerò per capire perchè questo enigma nel codice.
----------------------------------------
AUTORE: 10969
DATA :17/06/2014 - 13:47:05
----------------------------------------
[quote="ale914":7keq2nod]prova a modificare il tuo codice in modo da far leggere alla read tutti i byte sul buffer, usa la proprietà dei VISA "byte at port". Inoltre dopo la open e prima della write chiama la VISA flush I\O buffer per essere sicuro di avere un buffer pulito
Ciao[/quote:7keq2nod]
Si, grazie per il consiglio. Ignoravo la VISA flush I/O, darò di certo un'occhiata, in quanto spesso mi ritrovo byte in coda della precedente interrogazione.
----------------------------------------
================================================================================
Sistema di controllo Impianti di depurazione
================================================================================
AUTORE: 10967
DATA :11/06/2014 - 14:52:22
----------------------------------------
Salve gente, sono nuovo del forum ed alle prime armi con labview. Per esigenze accademiche devo creare un programma che sia in grado di controllare ed ottimizzare i processi biologici negli impianti di depurazione, puntando anche al risparmi energetico.
All'interno del reattore biologico ho delle sonde (pH, ORP, conducibilità, temperatura).
Per quanto riguarda il controllo , vorrei acquisire i dati in realtime, avere la possibilità di salvarli in formato txt o cvs, ed avere una rappresentazione grafica dei profili dei segnali.
Per l'ottimizzazione ho già costruito una logica di processo su base derivativa e vorrei utilizzarla, sfruttando i profili dei segnali, per automatizzare i processi. In poche parole, studiare la pendenza dei profili e impostare automaticamente un tipo di processo piuttosto che un altro.
spero di essere stato chiaro
Mirko
----------------------------------------
AUTORE: 129
DATA :11/06/2014 - 17:35:28
----------------------------------------
Chiaro, ma non si capisce come possiamo aiutarti.
Quando dici real time, hai già qualche scheda? O devi scegliere la scheda?
Ciao, Nicola
----------------------------------------
AUTORE: 10967
DATA :11/06/2014 - 18:58:47
----------------------------------------
Ciao Nicola, grazie per aver risposto prontamente.
Ho un cRIO 9072, il cablaggio l'ho già fatto, ed ho anche aggiunto il dispositivo su MAX.
Manca il progetto....
Mirko
----------------------------------------
AUTORE: 482
DATA :12/06/2014 - 07:13:34
----------------------------------------
[quote="mirko84":3aan0is6]
Manca il progetto....
[/quote:3aan0is6]
si ma quindi?...cosa cerchi nel Forum? che tipo di aiuto hai bisogno?
Hai già la logica hai già il cRIO...presumo tu sappia programmare in labview...qual'e' il tuo problema?
----------------------------------------
AUTORE: 645
DATA :12/06/2014 - 23:13:49
----------------------------------------
Mmhh... Qui il progetto pronto non c'è ma sicuramente la possibilità di costruirlo insieme sì.
Leggi tutti i sensori? Dici che hai già cablato il CRIO, quindi a livello di collegamenti dovresti essere a posto.
Sia per gli ingressi che per le uscite?
Come implementi la logica nel CRIO? Quella che hai a disposizione è in un formato particolare? (per esempioo MatLab o altro programma...).
----------------------------------------
AUTORE: 129
DATA :13/06/2014 - 11:15:48
----------------------------------------
Si mi unisco ai miei colleghi sopra e ti dico.
Se vuoi un intervento da qualcuno di noi, nessun problema, puoi contattarci in privato.
Se invece cerchi solo un aiuto, inizia con focalizzare delle domande chiare, per esempio manca il progetto però vedi in MAX il dispositivo... bene:
Si può procedere in due modi:
1) crei un progetto vuoto e inizi a creare i vi etc etc.
2)Se hai una versione di labview recente, vai in file e Create Project ti esce una videata con dei framework già pronti, potresti scegliere in base al tuo caso per esempio LabVIEW FPGA Waveform Acquisition and Logging on CompactRIO
LabVIEW 2013 (se hai FPGA e RT modules installati).Questo ti crea un progetto con tutti i supporti, devi in ogni caso cambiare/inserire dove necessario, per esempio il vi di scrittura non lo trovi, ma sai dove posizionarlo e come strutturarlo con questo framework.
Ciao, Nicola
----------------------------------------
================================================================================
plottare solo alcune colonne di un array
================================================================================
AUTORE: 10970
DATA :12/06/2014 - 14:06:51
----------------------------------------
Salve gente,
come da titolo, non riesco a plottare sono alcune colonne di un array.
Importo un file txt con molte colonne, ma solo alcune di esse voglio rappresentarle graficamente.
Potreste aiutarmi??
In allegato il .vi
----------------------------------------
AUTORE: 10969
DATA :12/06/2014 - 14:16:47
----------------------------------------
[quote="iwa":3g0er67f]Salve gente,
come da titolo, non riesco a plottare sono alcune colonne di un array.
Importo un file txt con molte colonne, ma solo alcune di esse voglio rappresentarle graficamente.
Potreste aiutarmi??
In allegato il .vi[/quote:3g0er67f]
Questa è la soluzione che ho adottato io. Il subVI non lo ritrovo tra le function, ma l'ho preso da un esempio su internet.
Se trovo il nome del blocchetto ti farò sapere.
----------------------------------------
AUTORE: 10969
DATA :12/06/2014 - 14:24:25
----------------------------------------
[quote="iwa":3hunxmxk]Salve gente,
come da titolo, non riesco a plottare sono alcune colonne di un array.
Importo un file txt con molte colonne, ma solo alcune di esse voglio rappresentarle graficamente.
Potreste aiutarmi??
In allegato il .vi[/quote:3hunxmxk]
E' un index array; quando colleghi in ingresso l'array, permetterà di leggere sulla riga e/o colonna
----------------------------------------
AUTORE: 10970
DATA :12/06/2014 - 14:36:47
----------------------------------------
Perfetto!! grazie 1000!! ci smanetto un po'
----------------------------------------
AUTORE: 10969
DATA :12/06/2014 - 14:37:42
----------------------------------------
[quote="iwa":23zycgbw]Perfetto!! grazie 1000!! ci smanetto un po'[/quote:23zycgbw]
Buon lavoro
----------------------------------------
================================================================================
Controllare popup
================================================================================
AUTORE: 10961
DATA :14/06/2014 - 00:07:15
----------------------------------------
Ciao a tutti,
Ho provato varie soluzioni ma non riesco a chiudere il popup per poi darmi la possibilità di inserire il percoso del file.
Attualmete ho un problema sul secondo case structure, quando va in false gli passo un valore nullo e giustamente va in errore labview.
Ringrazio per l'attenzione
----------------------------------------
AUTORE: 129
DATA :14/06/2014 - 15:56:07
----------------------------------------
Se il problema è il fatto che non riesci a creare un modo per caricare il path del file audio prima di processarlo, basta che creai un while che racchiuda il controllo path ad esempio, gli metti un pulsante di conferma e un wait per temporizzarlo.
A questo punto una volta che il vi entra nella struttura si ferma finchè non dai conferma uscendo dal while appena creato.
Ciao, Nicola
----------------------------------------
AUTORE: 482
DATA :16/06/2014 - 07:14:23
----------------------------------------
Purtroppo il tuo vi è salvato in versione 2013 e non posso aprirlo.
Se puoi, salvalo per 2009 o 2012.
Ribadisco pero', pur non avendolo visto, che il tuo problema non è di programmazione ma di logica di funzionamento.
La logica dovrebbe essere:
-apro il vi
-in ingresso al ciclo while, inuno shift register, do il path del file audio
-apro il file audio
-SE ESISTE-> PLAY
-SE NON ESISTE
- messaggio di errore
- in seguito al messaggio di errore apro popup di scelta del file e mando il path allo shift register
A questo punto ripetendo il ciclo. se il nuovo percorso sarà corretto andrà in play, senno' ridarà l'errore ecc ecc...
Non so che librerie per l'audio stai usando, nel caso, ricordati che i blocchetti audio standard accettano i WAV e non gli mp3 ad esempio.
----------------------------------------
AUTORE: 10961
DATA :16/06/2014 - 08:01:26
----------------------------------------
Ecco ho inserito la versione 09
Si il file è un WAV.
Vi ringrazio
----------------------------------------
AUTORE: 10961
DATA :16/06/2014 - 15:04:30
----------------------------------------
OK ci sono quasi, ora se inserisco il blocco (Read Waveforms from File)
mi genera l'errore in allegato.
Quale oggetto dovrei per resituire in percorso allo shift register?
Ringrazio
----------------------------------------
AUTORE: 10961
DATA :16/06/2014 - 15:38:00
----------------------------------------
[quote:oroy9sbi]Quale oggetto dovrei per resituire in percorso allo shift register?
[/quote:oroy9sbi]
Scusate volevo scrivere: Quale oggetto dovrei inserire per restituire il percorso allo shift register?
----------------------------------------
AUTORE: 482
DATA :17/06/2014 - 07:13:43
----------------------------------------
un oggetto di tipo path.
E questo tipo di oggetto lo puoi ottenere o creando un subvi popup tuo ad hoc, oppure usando il blocchetto "File dialog" che trovi in file I/O->Adv file funcs
----------------------------------------
AUTORE: 10961
DATA :17/06/2014 - 15:57:50
----------------------------------------
Ciao,
Attualmente rimane questo problema: quando apro il file dialog e carico il il file, nel primo shift register non viene caricato il percorso del file e giustamente mi torna falso, indicandomi con popup che manca il file, ora come faccio a "popolare" la path?
ho provato con una varibile locale, ma niente non riesco.
Poi ho notato che premendo annulla sul file dialog mi va in errore come mai?
Allego solo una parte del programma, inerente al popup
Ringrazio
----------------------------------------
AUTORE: 482
DATA :18/06/2014 - 07:18:09
----------------------------------------
solito problema..non posso leggerlo...
Comunque.
Ovviamente il file dialog serve DOPO. Solo s equello di default non c'e'.
Quindi fuori dal ciclo devi collegare allo shift register il path di default.
Per quanto riguarda il file dialog è normale che se fai annulla dia errore perchè esci dal file dialog non restituendo nessun path.
Quindi dovrai gestire tramite un case l'uscita cancelled della dialog.
----------------------------------------
AUTORE: 10961
DATA :18/06/2014 - 09:51:33
----------------------------------------
Scusami Geppo, mi dimentico
Il file Dialog è già dopo.
allego versione 9
----------------------------------------
AUTORE: 482
DATA :19/06/2014 - 07:15:55
----------------------------------------
trovato l'ERRORONE!
tu colleghi lo shift register al path in ingresso, ma subito dopo il case interno è a FALSE e il path non passa ma è impostato su "use default if unwired" e quindi ritorna un path vuoto.
Idem dopo il dialog.
Tu invece vuoi che il path resti sempre in memoria dello shift register e quindi devi collegarlo in TUTTI gli stati dei vari case e sotto-case.
Una piccolezza che ti segnalo poi è che invece che usare un file path DIVERSO da costante filepath vuota, nella palette delle comparazioni c'e' un blocchetti che si chiama "empty String/path" che resta piu' elegante oltre anon dover creare una costante inutile.
----------------------------------------
AUTORE: 10961
DATA :19/06/2014 - 11:12:57
----------------------------------------
Ti ringrazio molto Geppo funziona
Ora ripete ogni 3 secondi il file, se volessi farlo suonare solo una volta?
ho provato a metterlo fuori dal ciclo while ma non è servito.
Grazie
----------------------------------------
AUTORE: 482
DATA :20/06/2014 - 07:13:43
----------------------------------------
beh sei in un ciclo while quindi traducendo in italiano:
fai QUESTA COSA finchè la condizione è vera.
Quindi per capire se ti serve un while e nel caso, quando uscirne, dipende dalla logica che deve avere il tuo programma.
Hai diverse cose da sistemare:
1) il play e il wait 3000ms non sono sequenzializzati, quindi non hai la certezza che prima faccia il play e poi attenda 3 secondi. Meglio metterli in sequenza.
2) dopo aver fatto il play devi uscire dal ciclo, quindi metti una costante a TRUE che si collega alla condizione di uscita.
3) una volta uscito fai lo stop.
----------------------------------------
================================================================================
start path
================================================================================
AUTORE: 7113
DATA :15/06/2014 - 10:20:58
----------------------------------------
Ciao a tutti
sto usando il Read From Spreadsheet File VI per leggere un file e voglio che quando mi chiede di selezionare il file la cartella aperta si quella che contiene il file.
Ho inserito sul Control Path il percorso su 'Proprietes - Start Path' ma non mi apre la cartella giusta,
mi sapete dire cosa sto sbagliando?
----------------------------------------
AUTORE: 10969
DATA :17/06/2014 - 13:39:25
----------------------------------------
Dalle [b:1gumqekv]proprietà[/b:1gumqekv] del Control, vai sulla linguetta [b:1gumqekv]Browser Options[/b:1gumqekv] e in basso trovi l'opzione [b:1gumqekv]Path Start[/b:1gumqekv].
----------------------------------------
AUTORE: 10969
DATA :17/06/2014 - 13:41:29
----------------------------------------
E ricorda di spuntare nel menu [b:3oshneal]Selection Mode[/b:3oshneal] la voce [b:3oshneal]Folders[/b:3oshneal]. Infine quando scegli la cartella, non devi cliccare su [b:3oshneal]Salva [/b:3oshneal]ma su [b:3oshneal]Current Folder[/b:3oshneal].
----------------------------------------
AUTORE: 7113
DATA :18/06/2014 - 18:46:34
----------------------------------------
prima di tutto grazie per il consiglio, ho fatto tutto ma continua ad aprire un'altra cartella
ho provato anche a selezionare un file specifico da aprire, in questo modo la prima volta che avvio Run mi apre la cartella giusta ma se chiudo e riavvio l'applicazione riapre l'ultima cartella che ho aperto
hai qualche idea?
----------------------------------------
AUTORE: 482
DATA :19/06/2014 - 07:04:38
----------------------------------------
Stai sbagliando qualcosa nella procedura.
Prova a scrivere, punto per punto quello che fai partendo dal control path vuoto.
----------------------------------------
AUTORE: 7113
DATA :19/06/2014 - 18:24:18
----------------------------------------
Ho creato un nuovo vi e come vedete vorrei che si aprisse la cartella "File1" invece si apre la cartella "File2"
non capisco cosa sto sbagliando!!!
----------------------------------------
AUTORE: 482
DATA :20/06/2014 - 07:14:59
----------------------------------------
purtroppo non posso aprirlo perchè è salvao in una versione troppo recente.
dovresti salvarlo in 2012 o 2009.
----------------------------------------
AUTORE: 7113
DATA :20/06/2014 - 17:58:25
----------------------------------------
eccolo
----------------------------------------
AUTORE: 482
DATA :23/06/2014 - 12:30:41
----------------------------------------
Il controllo di tipo path è settato su folder e come stat path "C:\Prova1\File1"
QUindi non ti restituirà mai il percorso giusto ad un file.
Devi dirgli come selction mode "files" dopodichè ti aprirà la cartella impostata (ammesso che esista).
----------------------------------------
AUTORE: 7113
DATA :23/06/2014 - 21:33:29
----------------------------------------
Ho provato anche a impostarlo su files o su files or folders, ho selezionato il file specifico ma apre sempre l'ultima cartella che stata aperta e non quella che ho impostato su start path.
sono sicuro che la cartella esista perchè ho fatto la ricerca con il tasto "browse".
Forse il problema viene dal "ReadFromSpreadsheetFile.vi" ??????
----------------------------------------
AUTORE: 482
DATA :24/06/2014 - 07:00:16
----------------------------------------
ccredo di aver capito dove sta il problema...
Tu lanci il vi col path vuoto al che è il vi spreadsheet cche apre il popup, il tuo controllo non centra piu' niente a quel punto.
E il vi spreadsheet apre proprio l'ultima ccartella aperta.
Tu hai due strade:
1) farcire il path control di default
2) impostare un file dialog che si apra alla prima esecuzione (e allora li si che puoi dirgli il path e il file di partenza)
----------------------------------------
AUTORE: 7113
DATA :24/06/2014 - 20:47:40
----------------------------------------
scusa ma non capisco, se imposto un file specifico da aprire, si aprirà sempre e solo quello
vorrei invece dare all'operatore la scelta di quale file aprire in quella cartella
puoi fare un esempio
grazie
----------------------------------------
AUTORE: 482
DATA :25/06/2014 - 07:07:54
----------------------------------------
E' proprio li il problema.
Tu hai collegato un controllo VUOTO in ingresso ad un subvi che va in esecuzione subito all'avvio.
Quindi il vi cosa fa:
1)prende il controllo vuoto
2)lo da in ingrsso al subvi
3)il subvi rileva un ingresso vuoto e apre IL SUO FILE DIALOG che apre l'utlima cartella aperta dal sistema operativo.
Se vuoi invece che si apra subito un dialog con le impostazioni che dai tu, NON DVEI USARE UN PATH CONTROL VUOTO ma un FILE DIALOG.
le impostazioni che dai al path control SERVONO SOLO QUANDO SCHICCI IL BOTTONCINO DI FIANCO AL CONTROLLO.
----------------------------------------
AUTORE: 7113
DATA :25/06/2014 - 20:44:34
----------------------------------------
OK, ho capito grazie
----------------------------------------
================================================================================
Array di intensity graph
================================================================================
AUTORE: 1670
DATA :18/06/2014 - 13:43:43
----------------------------------------
Ciao a tutti,
vi chiedo se c'è una soluzione per questo mio problema:
ho un array tridimensionale in cui le prime due dimensioni sono coordinata x e y di immagini di 512 x 512 pixels (il pixel è un integer16) e la terza dimensione è il numero di immagini. Il mio problema è che vorrei visualizzare le n immagini sul front panel una ad una (magari selezionate con un puntatore numerico). Avevo pensato ad un array di intensity graph, ma non sono riuscito a crearlo. Qualcuno ha già affrontato un problema simile e magari sa come risolverlo? Oppure qualcuno ha qualche altra idea.
Ringrazio in anticipo
----------------------------------------
AUTORE: 482
DATA :19/06/2014 - 07:07:33
----------------------------------------
Non ho capito, tu vuoi visualizzare le immagini o graficare il numero di immagini nell'array?
----------------------------------------
AUTORE: 4
DATA :19/06/2014 - 09:01:18
----------------------------------------
Secondo me ti basta usare un index arra indicizzando la terza dimensione, l'immagine ennesima, in questo modo estrai la tua matrice 2D 512x512 e la passi direttamente all'intensity graph
Ciao
----------------------------------------
AUTORE: 1670
DATA :19/06/2014 - 11:07:15
----------------------------------------
Si è vero Ale914, la soluzione era abbastanza logica e banale, qualche volta le cose semplici npn le vedo e immagino solo soluzioni complicate.
Grazie a te e anche a gepponline per la pronta risposta.
Buona giornata a tutti
----------------------------------------
================================================================================
Date Time picker
================================================================================
AUTORE: 482
DATA :20/06/2014 - 09:51:02
----------------------------------------
...ma ciao!
vorrei inserire in un mio progetto un controllo tipo calendario per selezionare una data.
Qualcuno ha esperienza in merito e sa consigliarmi qualcosa di veloce e pratico tra le varie soluzioni esistenti?
----------------------------------------
AUTORE: 301
DATA :20/06/2014 - 11:05:44
----------------------------------------
Un controllino ActiveX, date and time picker?!?!
Aris
----------------------------------------
AUTORE: 4
DATA :20/06/2014 - 11:25:37
----------------------------------------
Se usi il controllo LabVIEW "time stamp" hai già un bottoncino che fa apparire il calendario per selezionare la dava
----------------------------------------
AUTORE: 482
DATA :23/06/2014 - 11:31:51
----------------------------------------
Al momento sto usando il labview timestamp manon è che mi entusiasmi (tral'altro, arriveranno mai tutte le funzioni complete di conversione del formato timestamp!??!)
Ho provato l'activeX Calendar 12 e avevo un problema... se lo cravopoi creavo il property node value e cercavo di convertire il valore in uscita (variant) a stringa, mi dava errore.
Per farlo funzionare dovevo crare un blocchetto property da collegare al reference del controllo...come mai?
----------------------------------------
AUTORE: 4
DATA :24/06/2014 - 13:52:23
----------------------------------------
[quote="gepponline":3qefix2o]Al momento sto usando il labview timestamp manon è che mi entusiasmi (tral'altro, arriveranno mai tutte le funzioni complete di conversione del formato timestamp!??!)
[/quote:3qefix2o]
Cosa ti manca?
----------------------------------------
AUTORE: 482
DATA :24/06/2014 - 15:01:46
----------------------------------------
datime to string
datetime to number
il to datetime mi pare ci sia dalla versione 2009
----------------------------------------
AUTORE: 129
DATA :25/06/2014 - 08:31:11
----------------------------------------
Ma tu che versione LV usi?
Il time stamp lo imposti come solo data dalle propietà, poi con un "format DAte/time string" crei la stringa da utilizzare impostando il "time format string" con "%d/%m/%Y" per avere la data con un output tipo 25/06/2014, se vuoi l'anno con solo le ultime due cifre metti %y.
Ti allego un vi che avevo fatto anni fa con un activex. Non so se funziona bene, perchè l'ho trovato nel cassetto dei ricordi, però magari....
----------------------------------------
AUTORE: 482
DATA :25/06/2014 - 11:00:11
----------------------------------------
credo di aver capito il problema.
Creavo il property node del controllo activex invece che della classe specifica.
Questo faceva si che il Value restituito fosse un qualcosa non convertibile in stringa (che cosa pero'!??!)
Poi cos afarci con la stringa lo sapevo, ma non riuscivo a far uscire la stringa
Tral'altro preferisco il controllo tipo micrsoft datetime picker.
----------------------------------------
================================================================================
Errore 4810
================================================================================
AUTORE: 10961
DATA :21/06/2014 - 16:26:22
----------------------------------------
Ciao a tutti,
quando viene letto il file audio esce questo errore:
Error 4810 occurred at Play Sound File.vi
LabVIEW: (Hex 0x12CA) Cannot recognize sound format
Questo tipo di errore mi esce solo se uso win 8.1 su xp va tutto bene.
versione labview 2013.
Ringrazio
----------------------------------------
================================================================================
aiuto
================================================================================
AUTORE: 10964
DATA :23/06/2014 - 19:09:34
----------------------------------------
ragazzi, mi sto scervellando con uqesta traccia d'esame...ma non riesco proprio a risolverla!
riesco a fare qualcosa, ma mi blocca il vi.
come la risolvereste?
ecco la traccia:
http://imageshack.com/a/img822/3072/9d8s.jpg
grazie
----------------------------------------
AUTORE: 10964
DATA :23/06/2014 - 20:02:37
----------------------------------------
il software funziona...ma non riesco a graficare i punti!
boo
----------------------------------------
AUTORE: 482
DATA :24/06/2014 - 07:01:25
----------------------------------------
non lo posso aprire perchè è una versioen troppo recente di labview, ma per graficare dei punti basta collegare nello stesso punto dove aggiorni il valore diX un waveform chart.
----------------------------------------
AUTORE: 301
DATA :24/06/2014 - 08:23:01
----------------------------------------
E siamo alle solite.......
Hai inserito la "generazione" del grafico all'esterno del while loop, ed anche se hai inserito due funzioni d build array (altrimenti non funzionava)i tuoi 2 array sono comunque di 1 punto!!!!!!
Ti allego un esempio di xy.
Aris
----------------------------------------
AUTORE: 10964
DATA :24/06/2014 - 16:04:08
----------------------------------------
perfetto, grazie a te!!
sto labview ogni tanto mi grippa il cervello.
Ma l'esecuzione della traccia secondo te va bene?
o è meglio usare gli event case?
grazie
----------------------------------------
AUTORE: 301
DATA :25/06/2014 - 09:55:22
----------------------------------------
Sinceramente,non ho "studiato" la traccia, ma se fa quello che ti viene richiesto, è implicito che va bene.
Per quanto riguarda l'utilizzo di una event, non credo che nel tuo caso ti convenga, andresti a complicare troppo la struttura del programma....
Aris
----------------------------------------
AUTORE: 43
DATA :29/07/2014 - 14:58:01
----------------------------------------
ciao
Nell'esercizietto che ho visto nn mi è piaciuto il modo in cui hai gestito lo "stato di esecuzione" della graficata.
Ecco come lo farei io
[attachment=0:3740y2k4]traccia facebook1.vi[/attachment:3740y2k4]
anche se nn indicato nella specifica, nn mi piaceva nemmeno il fatto che fosse possibile decrementare il counter in "stato di esecuzione" fermo (stopped).
bye
----------------------------------------
================================================================================
Cartelle di windows e permessi utente
================================================================================
AUTORE: 4
DATA :24/06/2014 - 13:51:17
----------------------------------------
Ciao mi piacerebbe sapere se avete affrontato il problema di dover distribuire applicazioni per WIN7 che devono girare non coi diritti di amministrazione.
In questo caso sorgono vari problemi di accesso ai file\cartelle da parte dell'applicazione, quindi anche una semplice lettura di un file di configurazione o il salvataggio di dati potrebbero richiedere diverse accortezze.
Ho trovato questa discussione interessante [url:acevlgi4]http://lavag.org/topic/15694-windows-folders[/url:acevlgi4] ma non giunge a un punto secondo me, vorrei quindi sentire la vostra esperienza.
Ciao
----------------------------------------
AUTORE: 301
DATA :26/06/2014 - 15:20:52
----------------------------------------
Una possibile soluzione, potrebbe essere quella di garantire l'accesso (in fase di installazione da parte dell'amministratore) alle varie cartelle utilizzate dal programma (system exec, tramite in comando "icacls").....
Aris
----------------------------------------
AUTORE: 301
DATA :27/06/2014 - 11:08:49
----------------------------------------
Ale914,
traendo spunto da questo post, ho integrato la libreria per lo sharing delle cartelle con un vi che riesce a modificare i permessi utente su una cartella.
Vedi se questa strada ti convince....
Ti allego il file in 2012
Aris
----------------------------------------
AUTORE: 4
DATA :09/07/2014 - 09:22:39
----------------------------------------
Ciao Aris grazie per la libreria.
Non ho capito una cosa però, questa lib andrebbe eseguita con i permessi di amministratore quindi diciamo durante la fase di installazione, si dovrebbe quindi fare un piccolo exe che la integri e che venga lanciato dall'installer di labview come post-installazione? o ci sono altri modi?
Io sto studiando il problema ma mi sto orientano verso una soluzione che non tocca i permessi ma usa le risorse così come le trova quindi le cartelle come definite da windows.
Volevo trovare una soluzione generale per le ombinazioni Win XP\Win 7 e mono utente\multi utente ma non credo si possa fare soprattutto per quanto riguarda mono\multi utente.
----------------------------------------
AUTORE: 301
DATA :09/07/2014 - 14:14:46
----------------------------------------
L'idea è proprio quella,garantire i diritti in fase di installazione (come amministratore).
In questo modo, si da accesso completo alla cartella e files contenuti al programma.
Altre strade non ne vedo (meno tortuose,almeno), il tutto è fattibile anche con XP, cambiando un minimo il comando, ma non sono riuscito a verificarlo.
Aris
----------------------------------------
================================================================================
Inserire una data in un DB Oracle
================================================================================
AUTORE: 482
DATA :24/06/2014 - 14:58:44
----------------------------------------
...ma ciao!
devo inserire un valore in un campo di tipo data in un DB oracle.
Non ho trovato da nessuna parte documentazioni specifiche sui default di formattazione ma a quanto pare per avere il dato corretto nel database posso fare due tipi di insert:
INSERT INTO provadata VALUES ('2012/06/26')
oppure
INSERT INTO provadata VALUES (TO_DATE('26/06/2012', 'dd/mm/yyyy’))
Normalmente non specifico il TO_DATE perchè uso i blocchetti di insert del DB Toolkit che credo trattino tutti i campi come testo, in quel caso devo scrivere il dato con prima l'anno.
Vi torna questa cosa? Mi aspettavo che scrivendo la data in formato dd/mm/aaaa anche sopra funzionasse correttamente, ma cosi' non è e la "sintassi giusta" l'ho trovata per tentativi, sapete se si trova qualche specifica che giustifichi questo risultato?
----------------------------------------
AUTORE: 129
DATA :25/06/2014 - 08:07:23
----------------------------------------
Si secondo me (non conosco Oracle) è una questione di come il campo è stato impostato nel DataBase, quindi o utilizzi la formattazione definita (in questo caso aaaa/mm/dd) oppure devi in qualche modo modificarla attraverso SQL.
Io solitamente il campo data sul lato database lo lascio testo in modo che la formattazione la definisco in labview evitando errori su query.
Prova a vedere l'esempio parameterized.vi che fa parte del DB toolkit.
Nicola
----------------------------------------
AUTORE: 4
DATA :25/06/2014 - 08:24:04
----------------------------------------
[quote="nicola":2c9zus2t]
Io solitamente il campo data sul lato database lo lascio testo in modo che la formattazione la definisco in labview evitando errori su query.
[/quote:2c9zus2t]
Ma così facendo riesci poi a fare query con una clausula tipo [code:2c9zus2t]WHERE date BETWEEN yyyy/mm/dd AND yyyy/mm/dd[/code:2c9zus2t] ?
Ciao
----------------------------------------
AUTORE: 129
DATA :25/06/2014 - 08:39:41
----------------------------------------
Con Access funziona, non so con gli altri.
----------------------------------------
AUTORE: 482
DATA :25/06/2014 - 10:57:40
----------------------------------------
[quote="nicola":3b4pfzq4]Si secondo me (non conosco Oracle) è una questione di come il campo è stato impostato nel DataBase, quindi o utilizzi la formattazione definita (in questo caso aaaa/mm/dd) oppure devi in qualche modo modificarla attraverso SQL.[/quote:3b4pfzq4]
No , usare i campi di tipo data anzichè le date mi è impossibile perchè il DB è interrogato da mille altri programmi in piu' è sconsigliabile per questioni di indicizzazione e operazioni sulle date.
Detto questo pero' come dicevi è sicuramente un "problema" di formattazione, la quetsione pero' è che quel campo non è impostato in nessun modo specifico. E' stato creato e basta senza impostazioni quindi mi aspetto una struttura di default.
La documentazizone che ho trovato in giro pero' mi dice che le date di default in oracle sono in formato 12-mar-2020 invece io per farle funzionare devo metterle come 2020-03-12 o 2020/03/12
L'esempio che ha fatto ale funziona se usi la sintassi che ha usato lui, quindi prima l'anno, poi il mese e poi il giorno.
Perchè è corretto d aun punto di vista alfabetico, ma se metti prima il giorno e poi l'anno, un 23/01/2013 risulterà maggiore di un 21/01/2014 no?
Morale della favola, io ho torvato la soluzione, inserire in fomato yyyy-mm-dd ma vorrei capire perchè funziona e perchè devo usare quel formato
----------------------------------------
================================================================================
labview esportare text in memoria
================================================================================
AUTORE: 3375
DATA :28/06/2014 - 22:42:39
----------------------------------------
buongiorno e grazie anticipatamente
Devo fare una piccola applicazione per semplificarmi la vita....
in breve fare un testo lungo 150 caratteri numeri e lettere finito di farlo
devo selezionarlo e fare copia incolla ....
Al momenti dopo aver scritto il testo lo seleziono tutto e poi con il tasto destro del mouse faccio copia....vorrei semplicemente fare un pulsante che premuto il tasto mi selezioni tutto il testo e me lo metta in memoria del pc
in breve una funzione che mi faccia control+a e poi control+c
non sono riuscito a capire come poter riuscire a farlo fare a labview
grazie
----------------------------------------
AUTORE: 129
DATA :30/06/2014 - 04:02:08
----------------------------------------
Ciao, potresti mettere il key focus dell'elemento pe il ctrl-A, quindi usare il metodo clipboard.write per eseguire un ctl-c della selezione.
vedi immagine allegata..
----------------------------------------
================================================================================
Commento in un block diagram
================================================================================
AUTORE: 10948
DATA :01/07/2014 - 20:17:17
----------------------------------------
Salve,
come si fa a scrivere un commento in un block diagram?
Grazie a tutti.
----------------------------------------
AUTORE: 10969
DATA :01/07/2014 - 21:05:56
----------------------------------------
Se per commento intendi un testo oltre i blocchi funzionali, basta il doppio click in una parte vuota del block diagramma.
----------------------------------------
AUTORE: 129
DATA :02/07/2014 - 11:22:26
----------------------------------------
A parte il commento libero, si può visualizzare la label dei fili per esempio (vai sul filo, tasto destro e visible item/label), nelle versioni più recenti si possono aggiungere commenti visualizzando la subdiagram label(vai su un loop e tasto destro visible items/subdiagram label) o le label stesse dei loop(sempre visible items/label).
Puoi aggiungere decoration come le arrow per commentare con frecce.
Puoi rinominare le label dei subvi, mettendogli una descrizione personalizzata.
Ancora puoi colorare i loop.
[attachment=0:i02oby0b]Commentare il codice.PNG[/attachment:i02oby0b]
----------------------------------------
AUTORE: 10948
DATA :04/07/2014 - 13:24:05
----------------------------------------
Grazie mille, siete stati gentilissimi.
----------------------------------------
================================================================================
Acquisizione con CompactRio e modulo 9201
================================================================================
AUTORE: 10948
DATA :04/07/2014 - 13:36:58
----------------------------------------
Salve.
Stò cercando di acquisire una sinusoide con il CompactRio in FPGAmode.
Allego i vi del programma che ho scritto seguendo pari passo le guide NI:
-AnalogIn(FPGA)
-AnalogIn(Host)
COme risulto visualizzo una sinusoide ma con un basso numero di campioni, in allegato:
-out
Potete dirmi se mi sfugge qualche cosa?
Come faccio a gestire il numero di camioni da acquisire?
Grazie mille.
----------------------------------------
================================================================================
Comunicazione seriale asincrona
================================================================================
AUTORE: 10952
DATA :08/07/2014 - 12:06:52
----------------------------------------
Ciao a tutti, devo realizzare un'interfaccia grafica in LV per dialogare con un microcontrollore: il firmware del micro funziona e ho già fatto diverse prove con terminali come putty o realtherm. vorrei rifare lo stesso con LV. in particolare vorrei un front panel con dei pulsanti ad ognuno dei quali è associato un particolare messaggio che viene inviato al micro una volta premuto. ho usato un ciclo while e delle case structure associate ai valori booleani dei pulsanti ma non sempre il programma funziona bene e ogni tanto si impalla.
potreste dirmi come impostare un programma del genere?? io inizializzo source e parametri serial poi avvio il ciclo while con i vari casi.... appena posso posto il block diag
grazie
----------------------------------------
AUTORE: 129
DATA :08/07/2014 - 13:20:28
----------------------------------------
Prova a postare un immagine del diagramma.
Solitamente una gestione di interfaccia la puoi fare con una event case o una struttura case.
Se hai diversi pulsanti puoi sul diagramma raggrupparli con un bundle array, quindi con search 1darray cerchi quale è andato a true, quel numero lo associ allo stato della case equivalente alla stringa che devi inviare.
In ogni caso manda il diagramma anche una jpeg.
----------------------------------------
AUTORE: 10969
DATA :08/07/2014 - 14:42:55
----------------------------------------
[quote="rugrag":2y4ycllr]Ciao a tutti, devo realizzare un'interfaccia grafica in LV per dialogare con un microcontrollore: il firmware del micro funziona e ho già fatto diverse prove con terminali come putty o realtherm. vorrei rifare lo stesso con LV. in particolare vorrei un front panel con dei pulsanti ad ognuno dei quali è associato un particolare messaggio che viene inviato al micro una volta premuto. ho usato un ciclo while e delle case structure associate ai valori booleani dei pulsanti ma non sempre il programma funziona bene e ogni tanto si impalla.
potreste dirmi come impostare un programma del genere?? io inizializzo source e parametri serial poi avvio il ciclo while con i vari casi.... appena posso posto il block diag
grazie
[/quote:2y4ycllr]
Innanzitutto ti consiglio di iniziare con un solo comando, in modo tale da capire quale è il problema che fa impallare la comunicazione.
Se dici che qualche volta funziona, suppongo che la parte relativa al Serial VISA sia ok.
Valuta i ritardi tra read e write, e considera anche i ritardi richiesti dal uC nella comunicazione.
Nell'invio di comandi a remoto ho proceduto come hai descritto tu, cioè button T/F e Case Structure, e non ho avuto problemi. La soluzione del Bundle la vorrei valutare anche io, la trovo interessante.
Spiega meglio qual è l'errore che si presenta.
----------------------------------------
AUTORE: 129
DATA :11/07/2014 - 07:48:03
----------------------------------------
Un esempio di case numerico controllato da un insieme di pulsanti raccolti con il bundle array.
Il case -1 è default e rappresenta lo stato in cui nessun pulsante è premuto.
----------------------------------------
AUTORE: 10969
DATA :12/07/2014 - 17:51:47
----------------------------------------
Si perfetto. Qualcosa del genere l'ho realizzata utilizzando un Point Slide, al posto del Bundle array. Ogni valore associato ad un case, a cui è associato un comando.
----------------------------------------
================================================================================
visualizzare front panel globale
================================================================================
AUTORE: 3428
DATA :14/07/2014 - 15:12:10
----------------------------------------
Ciao,
è possibile visualizzare il front panel di un vi globale???
Avrei bisogno di poter forzare dei digitali quindi quando sono in ambiente no problem ma con l'exe iniziano i problemi..
Ho creato un vi che mi scrive in una tabella tramite il get value tutti i valori T/F e riesco anche a forzarli.. macchinosissimo oltre che illeggibile visto che va con il nome della label.
Visualizzando il front panel tutto sarebbe più semplice ma credo che non si possa fare...
Giusto???
----------------------------------------
AUTORE: 301
DATA :14/07/2014 - 15:28:39
----------------------------------------
Fare direi che si puo anche fare......ma di certo non è "comodo".
dovresti specificare l'azione desiderata per poi mandarlo in run.....
Diventa molto piu semplice se fai un vi con il FP ad Hoc e richiami la funzione della FGV che ti interessa.
Aris
----------------------------------------
AUTORE: 482
DATA :15/07/2014 - 07:09:06
----------------------------------------
Non credo usi le FGV ma le globali proprie di LabVIEW.
La risposta direi che è no, nel senso che quando compili l'eseguibile automaticamente il pannello delle variabili globali viene eliminato.
Quindi devi crearti un pannello gemello dove assegni ad ogni indicatore/controllo il valore della globale corrispondente.
----------------------------------------
AUTORE: 3428
DATA :15/07/2014 - 08:06:23
----------------------------------------
in questo caso no, non utilizzo FGV ma le uso eccome in altri progetti,
in quel caso sì, faccio il get e mostro a FP quello che mi restituisce.
In questo caso utilizzo globali proprietarie di labview perchè mi sembrava molto più scomodo gestire digitali con boundle e unboundle di un cluster su FGV (come farei a cercare dove viene settata una variabile??? mi cerco tutti i set della FGV?? con la globale faccio il find write o ovviamente sto attento al race condition)
la visualizzazione mi evitava di collegare più di 100 indicatori, con la FGV questo problema non sarebbe successo ma ripeto non saprei come trovare all'interno del codice il set di una di esse...
----------------------------------------
AUTORE: 129
DATA :16/07/2014 - 03:52:44
----------------------------------------
Potresti usare un subpanel e carichi il global.vi come insert vi.
Nell'immagine allegata usi un vi che incorpori un subpanel che chiama il pannello delle globali,coì non devi ricopiare tutti i controlli e le globali.
----------------------------------------
AUTORE: 3428
DATA :16/07/2014 - 08:15:25
----------------------------------------
Perfetto Nicola, grazie
Quello che mi serviva.. non ci avevo pensato!
----------------------------------------
================================================================================
CURVA CARATTERISTICA MOTORE ELETTRICO
================================================================================
AUTORE: 10977
DATA :16/07/2014 - 15:35:33
----------------------------------------
Ciao a tutti, sono l'ultima iscritta a questo forum!
Il mio problema è quello di ottenere in LABVIEW il grafico Coppia-velocità di un motore asincrono durante l'acquisizione ovvero mentre il motore del banco motori sta girando.
Premetto che non sono affatto esperta in Labview.
Ringrazio chiunque mi possa dare un'indicazione
----------------------------------------
AUTORE: 10969
DATA :16/07/2014 - 15:54:33
----------------------------------------
[quote="FEDERICA":3k4yw68x]Ciao a tutti, sono l'ultima iscritta a questo forum!
Il mio problema è quello di ottenere in LABVIEW il grafico Coppia-velocità di un motore asincrono durante l'acquisizione ovvero mentre il motore del banco motori sta girando.
Premetto che non sono affatto esperta in Labview.
Ringrazio chiunque mi possa dare un'indicazione[/quote:3k4yw68x]
Credo che la realizzazione del grafico coppia-velocità sia l'ultimo problema da affrontare. Innanzitutto dovresti individuare i sistemi di acquisizioni da interfacciare al calcolatore per la misura dei valori di velocità e di coppia. Successivamente studiando i datasheet, individui in che modo comunicano i sistemi di acquisizione, e a quel punto sposti le attenzioni su Labview.
----------------------------------------
AUTORE: 10977
DATA :17/07/2014 - 11:01:24
----------------------------------------
Il banco motori è costituito dal motore di trascinamento(Infranor FP-0055) , torsiometro (Kistler 4503 A) ed eventualmente si può collegare il motore freno (Magtrol AHB-6).
La scheda di acquisizione è la scheda NI cDAQ9188
----------------------------------------
AUTORE: 645
DATA :17/07/2014 - 20:29:42
----------------------------------------
Riesci a leggere i segnali acquisiti? Eventualmente con i VI Express per iniziare. Poi puoi utilizzare un grafico XY per accoppiare i segnali e disegnarli.
----------------------------------------
AUTORE: 10977
DATA :21/07/2014 - 11:17:25
----------------------------------------
non so come ottenere il grafico della coppia in funzione del tempo e quello di rpm in funzione del tempo per poi unirli ed ottenbere la coppia in funzione di rpm
----------------------------------------
AUTORE: 129
DATA :21/07/2014 - 23:25:39
----------------------------------------
Prova a postare uno screenshot del diagramma.
Puoi provare ad usare gli express-vi. come nell'immagine allegata.
----------------------------------------
AUTORE: 10977
DATA :22/07/2014 - 13:37:50
----------------------------------------
Ciao,allego proprio il VI che ho provato a fare ma che mi da molti errori tra cui:Error -200559 e Error -200279.
Ho capito che l'Error -200279 riguarda il buffer, cioè è un errore che compare se la frequenza di campionamento del task è troppo alta o se la lettura è troppo lenta, tuttavia non riesco a capire come ovviare a tale problema.
Nella parte superiore del .vi il simbolo "?" indica un blocchetto denominato "COUNT rpm" per misurare i rmp, il 60 in ingresso,indica gli impulsi per giro dell'encoder.
Nella parte inferiore il simbolo "?" indica un blocchetto denominato "COUNT NM" per misurare la coppia, in cui in ingresso ho la frequenza centrale di coppia= 100KHz e la sensibilità=0,125 Nm/KHz.
Per adesso il problema è quindi quello di ottenere il grafico della coppia nel tempo e degli rpm nel tempo.
Il problema successivo sarà quello di ottenere coppia in funzione di rpm.
Grazie per chiunque possa aiutarmi
----------------------------------------
================================================================================
Esecuzione parallela
================================================================================
AUTORE: 482
DATA :17/07/2014 - 14:13:33
----------------------------------------
cacchiocacchiocacchiocacchiocacchiocacchiocacchiocacchiocacchiocacchio!!
Ho un vuoto di memoria che mi lascia basito...
Non mi ricordo piu' come fare per far girare in contemporanea due subVI gestiti da un Event case...
Esempio:
menu1- apre vi popup con un elenco di cose
menu2- apre vi popup con un form d acompilare
Io voglio aprire col menu 1 l'elenco che contiene i dati e affiancarlo al vi del menu2 dove devo copiare i dati....
C'ho in mente un opzione tipo "non aspettare che il vi sia eseguito" ma non mi ricordo dove la trovo.....
Oppure mi sto confondendo e sta cosa non si puo' fare?
HELP!!!
----------------------------------------
AUTORE: 301
DATA :17/07/2014 - 15:25:13
----------------------------------------
Mah, cosi al volo direi che ti ricordi male.....
Una cosa di questo tipo la puoi fare solamente con delle chiamate dinamiche.....o sbaglio anche io?!?!
Aris
----------------------------------------
AUTORE: 645
DATA :17/07/2014 - 20:27:07
----------------------------------------
Non si trova nelle opzioni dei VI rientranti?
----------------------------------------
AUTORE: 129
DATA :18/07/2014 - 02:13:20
----------------------------------------
Non ho capito bene cosa devi fare, ma se usi eventi dinamici e chiamate dinamiche dovresti essere in grado di gestirle.
Ma tu cosa devi fare?
A pressione di MENU 1 si visualizza (in esecuzione) un elenco.
A pressione di MENU 2 si visuzlizza (in esecuzione) un form per inserimento dati.
In pratica due VI affiancati che però devono interagire fra loro per il discorso di inserimento da elenco?
Puoi passare anche le reference dei vi come registro eventi, in modo che ad ogni evento dinamico dei vi ricevi risposta sul main, quindi apertura,chiamata e passaggio dati sul primo al secondo e viceversa, e gestiti dalla event case del principale.
----------------------------------------
AUTORE: 482
DATA :18/07/2014 - 07:15:07
----------------------------------------
no, mi son spiegato male.. i due vi non interagiscono tra di loro.
Pero' ho bisogno di visualizzarli tutti e due a schermo affiancati.
Ho trovato l'opzione nell'event case che gli dice "non aspettare l'esecuzione del VI per procedere", solo che poi i subVI hanno a loro volta degli eventcase che mi sa che bloccano anche il main.
Adesso provo con la chiamata dinamica e vedo se mi risolve il problema ma il fatto che poi ci siano due VI in run con degli event case all'interno, ho paura che sia un problema.
----------------------------------------
AUTORE: 301
DATA :18/07/2014 - 07:18:33
----------------------------------------
No, quello no.
l'event case è legato solamente al vi in esecuzione (cattura gli eventi del "Proprio pannello), non dovrebbe dare problemi.
Aris
----------------------------------------
AUTORE: 43
DATA :22/07/2014 - 15:19:28
----------------------------------------
[quote="gepponline":39g5e630]cacchiocacchiocacchiocacchiocacchiocacchiocacchiocacchiocacchiocacchio!!
Ho un vuoto di memoria che mi lascia basito...
Non mi ricordo piu' come fare per far girare in contemporanea due subVI gestiti da un Event case...
Esempio:
menu1- apre vi popup con un elenco di cose
menu2- apre vi popup con un form d acompilare
Io voglio aprire col menu 1 l'elenco che contiene i dati e affiancarlo al vi del menu2 dove devo copiare i dati....
C'ho in mente un opzione tipo "non aspettare che il vi sia eseguito" ma non mi ricordo dove la trovo.....
Oppure mi sto confondendo e sta cosa non si puo' fare?
HELP!!![/quote:39g5e630]
Penso che quello a cui fai riferimento sia l'esecuzione di VI utilizzando il metodo "RUN" che ha come ingresso 2 booleani "wait Until Done" e "Dispose Ref".
per eseguire il VI in questione devi aprirlo con "OpenVI".
l'uso di VI rientranti consente di eseguire il medesimo VI in + "istanze" ma per fare ciò devi aprire il VI (con OpenVI) con un parametro numerico che non ricordo ma è ben documentato nell'help.
Infine penso che nelle ultime versioni di LabVIEW , se nn sbaglio, usare il metodo "Run" sia una pratica sconsigliata e che sia meglio optare x una + comoda "call and Forget" che trovi nel menu rilevante ed applicabile
----------------------------------------
AUTORE: 482
DATA :23/07/2014 - 07:42:32
----------------------------------------
Ottimo, grazie.
Non ho trovato nessuna "call and forget" esplicita e nessun menu "rilevante ed applicabile"
In compenso ho utilizzato questa soluzione che dovrebbe funzionare.
Non mi serve che siano rientranti, sono due VI differenti ma ho bisogno che siano a schermo e attivi nello stesso momento.
----------------------------------------
AUTORE: 43
DATA :23/07/2014 - 08:34:02
----------------------------------------
[quote="gepponline":3nhh1xuy]Ottimo, grazie.
Non ho trovato nessuna "call and forget" esplicita e nessun menu "rilevante ed applicabile"
In compenso ho utilizzato questa soluzione che dovrebbe funzionare.
Non mi serve che siano rientranti, sono due VI differenti ma ho bisogno che siano a schermo e attivi nello stesso momento.[/quote:3nhh1xuy]
toh! che strano... A me sembra che hai fatto proprio una "Call and Forget"
[attachment=0:3nhh1xuy]LV_CallAsync.png[/attachment:3nhh1xuy]
[attachment=1:3nhh1xuy]callAndForget.png[/attachment:3nhh1xuy]
----------------------------------------
AUTORE: 482
DATA :24/07/2014 - 07:10:29
----------------------------------------
Si si lo so, infatti dicevo ch enon ho trovato niente di esplicito su call and forget.
Tu parlavi di ""call and Forget" che trovi nel menu rilevante ed applicabile" ma non ho nessun menu con quel nome in LV 2012, allora ho trovato la call and forget come opzione.
Tral'altro non so se fa al caso mio comunque perchè non devo "dimenticarlo" ma registrarne un valore in uscita, quindi mi toccherà registrare l'uscita su una globale o qualcosa di simile.
----------------------------------------
AUTORE: 43
DATA :25/07/2014 - 09:22:25
----------------------------------------
[quote="gepponline":3jpzbd1y]Si si lo so, infatti dicevo ch enon ho trovato niente di esplicito su call and forget.
Tu parlavi di ""call and Forget" che trovi nel menu rilevante ed applicabile" ma non ho nessun menu con quel nome in LV 2012, allora ho trovato la call and forget come opzione.[/quote:3jpzbd1y]
ok lascia stare. Ho scritto volutamente una stronzata. "Rilevante" ed "applicabile" sono termini relativi a un certo modo di fare documentazione tecnica con la quale dovrò litigare a breve...
[quote="gepponline":3jpzbd1y]Tra l'altro non so se fa al caso mio comunque perchè non devo "dimenticarlo" ma registrarne un valore in uscita, quindi mi toccherà registrare l'uscita su una globale o qualcosa di simile.[/quote:3jpzbd1y]
Certo! Scegli il modo migliore per ri-sincronizzare il tuo codice dopo la chiamata asincrona
nn sto qua a spiegare le differenze evidenti fra metodo "run" e Async Call ma, sicuramente le Async Call sono un bel miglioramento...
bye
----------------------------------------
================================================================================
Installazione instrument driver
================================================================================
AUTORE: 10969
DATA :17/07/2014 - 19:01:10
----------------------------------------
Per installare i driver di uno strumento, ho copiato la relativa cartella contenente la libreria, nel percorso [i:u74r3ier]Labview/instr.lib[/i:u74r3ier].
Dopo aver riavviato il software ritrovo le palette all'interno del menu instrument, ma sono identificati da un punto interrogativo e quindi non funzionanti.
Quale potrebbe essere il motivo?
----------------------------------------
AUTORE: 129
DATA :18/07/2014 - 02:23:18
----------------------------------------
probabilmente la cartella non possiede i file .mnu impostati con i nuovi path.
Vai in edit palette e la riassoci alla palette.
Altrimenti le copi in user.lib e poi le associ alla palette instruments, questo è consigliabile perchè così usi solo la cartella user per i tuoi vi e un domani la puoi spostare comodamente in una nuova installazione.
----------------------------------------
AUTORE: 10969
DATA :18/07/2014 - 09:03:14
----------------------------------------
[quote="nicola":14xt23nv]probabilmente la cartella non possiede i file .mnu impostati con i nuovi path.
Vai in edit palette e la riassoci alla palette.
Altrimenti le copi in user.lib e poi le associ alla palette instruments, questo è consigliabile perchè così usi solo la cartella user per i tuoi vi e un domani la puoi spostare comodamente in una nuova installazione.[/quote:14xt23nv]
Grazie per il consiglio, ho riassociato le palette e funziona.
Scrivo il procedimento per chi magari incontra lo stesso problema:
1)Copiare la cartella con la libreria nella directory user.lib o instr.lib.
2)Menu: Tools---> Advanced -----> Edit Palette Set
3)portarsi al menu Instrument I/O, tasto dx ---> Insert Subpalette
4)selezionare "Link to an LBB e individuare la libreria copiata nella directory in precedenza.
5)Salvare i cambiamenti.
----------------------------------------
AUTORE: 301
DATA :18/07/2014 - 12:44:24
----------------------------------------
probabilmente non avevi copiato la cartella nel modo corretto ed il file .mnu non si trovava la gerarchia (delle cartelle) attesa.
Aris
----------------------------------------
================================================================================
Animazioni sul front panel!
================================================================================
AUTORE: 10964
DATA :18/07/2014 - 20:26:34
----------------------------------------
ciao ragazzi, sto automatizzando un impianto di movimentazione carichi e siccome vorrei collegarlo ad un pc, ho deciso di utilizzare labview!
detto brevemente devo pilotare 6 paranchi dotati di pinza, (ossia, sali/scendi e apri/chiudi pinza) che sono vincolati ad una rotaia, anche questa motorizzata naturalmente!
quello che voglio fare è fare un software per gestire tutto...e grazie ai vostri aiuti passati, ci sono riuscito...quello che non so fare è dotare il front panel di animazioni!
per intenderci, metre il paranco è in discesa, mi piacerebbe visualizzare un' immagine di un paranco, con una freccia che lampeggia verso il basso ad esempio...è possibile fare questo???
se si come si fa??
mi potreste postare un codice d'esempio?
scusate le molteplici domande
....grazie a tutti
----------------------------------------
AUTORE: 129
DATA :19/07/2014 - 11:57:30
----------------------------------------
Esistono dei controlli pict ring a cui per ogni valore numerico si possono associare delle picture come i frame di una gift per esempio.
ecco un video che ti può aiutare. https://www.youtube.com/watch?v=AmDLCsnOegw
Ciao Nicola
----------------------------------------
AUTORE: 10964
DATA :20/07/2014 - 20:15:54
----------------------------------------
Grazie a te...
----------------------------------------
AUTORE: 482
DATA :21/07/2014 - 07:10:41
----------------------------------------
Nel caso di un paranco che sale e scende un idea potrebbe eanche essere la customizzazione si un vertical slide, dove al posto del cursore gli metti il gancio del paranco
----------------------------------------
================================================================================
Lettura impulsi da sensore di portata
================================================================================
AUTORE: 10979
DATA :22/07/2014 - 23:24:35
----------------------------------------
Buona serata a tutti mi presento mi chiamo Giorgio e sto completando la gestione del mio acquario tramite Arduino e Labview ho già completato la parte che riguarda la gestione delle lampade, temperatura, PH e delle pompe ma l'altro giorno acquistando un YF-S201 (sensore magnetico ad impulsi di portata dell'acqua) ho iniziato a pensare che forse stavolta avevo bisogno di un aiuto, non riesco proprio ad impostare un subvi che mi permetta di leggere quanti impulsi emette in un determinato tempo per poi trasformarlo in litri/ora diciamo che mi accontenterei anche del solo utilizzo come flussostato per vedere se la pompa si dovesse fermare ma leggere addirittura la portata quindi verivicare sempre l'effettiva efficenza della pompa sarebbe il
Non plus ultra.
Ringrazio in anticipo qualsiasi anima pia voglia dai una mano..
----------------------------------------
AUTORE: 482
DATA :23/07/2014 - 07:12:49
----------------------------------------
...con Arduino direi che la funzione da usare potrebbe essere la Pulse In.
Oppure potrebbe interessarti questa:
http://it.emcelettronica.com/misure-di- ... reqmeasure
----------------------------------------
AUTORE: 10979
DATA :23/07/2014 - 09:32:55
----------------------------------------
Ottimo... E diciamo che in ci avrei anche il codice steso dal produttore a titolo di esempio.. La mia perplessità sorgeva in labview... Non mi pare di aver visto alcuna funzione in libreria eguagliavi le al pulsein del C.
Grazie ancora.
----------------------------------------
AUTORE: 482
DATA :24/07/2014 - 07:28:09
----------------------------------------
Non ho la libreria di Arduino sottomano pero' se non mi ricordo male, l'interfacciamento è fatto utilizzando un apposito firmware da caricare in arduino. Se modifichi quello inserendo una variabile di appoggio leggibile da labview forse risolvi.
Se ti va bene, qui trovi qualcuno che l'ha già fatto per te.
https://decibel.ni.com/content/message/38645
----------------------------------------
AUTORE: 10979
DATA :24/07/2014 - 18:47:32
----------------------------------------
Ero già arrivato a questa pagina nelle varie ricerche ... Ma sinceramente volevo vedere se c'era un altra soluzione visto che il firmware caricato ora non mi aveva dato alcun tipo di problema...
A questo punto proverò.. Ti aggiornerò su eventuali sviluppi per il momento grazie mille dell'aiuto!!
----------------------------------------
================================================================================
serial read event
================================================================================
AUTORE: 10964
DATA :23/07/2014 - 18:43:32
----------------------------------------
Ciao ragazzi, sto realizzando un vi con labview per interfacciarmi tramite seriale ad un microcontrollore.. Riesco a mandargli comandi senza problemi, però non riesco a settare un....passatemi il termine....interrupt su labview per la ricezione dei dati!
Praticamente sporadicamente il micro manda due byte sulla seriale e vorrei che labview, indipendentemente da quello che sta facendo, dovrebbe leggere sempre questi due byte!
Come posso fare?
Grazie a tutti per il vostro tempo...buona serata!
----------------------------------------
AUTORE: 43
DATA :25/07/2014 - 09:55:44
----------------------------------------
[quote="cocowest":28v5jfyw]Ciao ragazzi, sto realizzando un vi con labview per interfacciarmi tramite seriale ad un microcontrollore.. Riesco a mandargli comandi senza problemi, però non riesco a settare un....passatemi il termine....interrupt su labview per la ricezione dei dati!
Praticamente sporadicamente il micro manda due byte sulla seriale e vorrei che labview, indipendentemente da quello che sta facendo, dovrebbe leggere sempre questi due byte!
Come posso fare?
Grazie a tutti per il vostro tempo...buona serata![/quote:28v5jfyw]
ciao.
L'approccio più usato con LabVIEW nella comunicazione seriale, nn è la gestione di interrupt od eventi, ma piuttosto il polling.
la funzione di lettura di seriale "VISA Read" termina normalmente quando si verifica uno di questi 3 eventi:
- ricevuto il carattere terminatore (se abilitato)
- letti il numero di caratteri attesi
- raggiunto un tempo di timeout senza che le due condizioni precedenti siano state soddisfatte
A differenza della vita reale, nel tuo caso, bisogna tenere la porta (seriale) sempre ben aperta.(nella vita reale bisogna tenere la porta ben chiusa sennò entrano i ladri!!)
Al termine dell'invio dell'ultimo comando, si dà una bella spazzata (svuotare) il buffer in ricezione, si programma il timeout in ricezione (dipende dalla freq. di invio dei dati... 1 sec. può andare bene?), si disabilita la ricezione del terminatore.
Si esegue in loop la lettura della seriale, leggendo ogni volta 2 bytes.
Risultato: appenai 2 bytes saranno disponibilii la funzione di lettura li restituirà
Se entro <timeout> non saranno ricevuti, la funzione uscira con un errore di timeout facilmente riconoscibile grazie anche ad un booleano supplemenatre fra i parametri in uscita della funzione.
La funzione VISA Read tornerà subito a leggere altri 2 bytes perchè verrà reiterata.
bye
----------------------------------------
AUTORE: 10964
DATA :30/07/2014 - 09:18:39
----------------------------------------
Grazie a te e scusa il ritardo nel risponderti!
Un'altra domanda...
Siccome devo pilotare sei montacarichi da labview..per intenderci una cosa del genere:
https://imageshack.com/i/hj0RFOU9p
mi conviene fare un sub-vi...oppure come sto facendo al momento, ossia racchiudere ogni listato in un cluster e da li poi elaborarlo!
grazie
----------------------------------------
AUTORE: 43
DATA :30/07/2014 - 14:04:39
----------------------------------------
[quote="cocowest":27smr00b]Grazie a te e scusa il ritardo nel risponderti!
Un'altra domanda...
Siccome devo pilotare sei montacarichi da labview..per intenderci una cosa del genere:
https://imageshack.com/i/hj0RFOU9p
mi conviene fare un sub-vi...oppure come sto facendo al momento, ossia racchiudere ogni listato in un cluster e da li poi elaborarlo!
grazie[/quote:27smr00b]
ciao
Come regola generale, che vale x tutti i linguaggi di programmazione meglio evitare di ammassare tutto il codice in un unica funzione (main), ma spezzettarlo cmq in + parti possibilmente dando un significato logico al pezzo di codice che si vuole isolare e che deve essere facilmente riconoscibile dal nome che gli assegnarai.
Il codice sarà inevitabilmente + leggibile e interpretabile anche da chi nn lo ha sviluppato.
Con LabVIEW in particolare eviterai di scrollare nelle 4 direzioni alla riceca di parti di codice (evitare Diagrammi stile "lenzuolo") e potrai comodamente testare il funzionamento del tuo codice un pezzo x volta senza eseguire la tua applicazione al completo.
----------------------------------------
================================================================================
Acquisizione temporizzata
================================================================================
AUTORE: 10969
DATA :30/07/2014 - 09:51:06
----------------------------------------
Buongiorno a tutti, alle prese con la temporizzazione.
Spiego brevemente.
Il mio obiettivo è di interrogare 2 strumenti parallelamente, riceverne le misure ed esportarle su file di txt. Fin qui tutto bene.
Il problema è che dovrei fare il tutto in maniera temporizzata con cadenza di 1 secondo.
In una prima fase ho optato per un TIMED LOOP, ma raggiunto l'obiettivo finale con tutti i VI, mi rendo conto che la temporizzazione non è più rispettata.
Credo che la temporizzazione in Labview sia fondamentale, quindi suppongo che la soluzione ci sia, ma da novellino brancolo nel buio.
Inoltre ho qualche dubbio sul preciso funzionamento del TIMED LOOP.
Qualcuno può suggerirmi qualche soluzione?
Grazie
----------------------------------------
AUTORE: 43
DATA :30/07/2014 - 12:41:59
----------------------------------------
ciao
se tutto funziona ma la tempistica nn è rispettata hai solo una cosa da fare:
DEBUGGARE!!
tra l'altro questa è la normale attività di chi programma. Il tempo di sviluppo è quasi nullo...è tutto un continuo debug.
il fatto che i tempi nn siano rispettati può essere dovuto a varie cause:
- un loop che gira + velocemente degli altri può usare gran parte della CPU e nn lasciare tempo agli altri loop di girare. Questo poteva essere vero con le versioni di labview + vecchie e con CPU mono-core. Quindi questa è una causa possibile ma improbabile.
- il loop è mal temporizzato x cui può impiegare a girare + tempo del tempo riservato alla temporizzazione. se il loop che monitora la risorsa nn è sempre attivodall'avvio ma può essere acceso o spento mentre è in funzione, serve una macchina a stati (state machine) che gestisca lo stato di attivazione disattivazione e termine programma..ecc.
Comunque sia, fai attenzione all'esecuzione di subVI che vengono usati in + loop e che nn sono rientranti, in particolare se il SubVI è molto "pesante" nel tempo impiegato alla sua esecuzione:
I VI NON RIENTRANTI funzionano come una "risorsa semaforata", x cui la chiamata di un SubVI mentre è in corso un'altra chiamata in parallelo, dovrà attendere la conclusione della precedente chiamata prima di essere eseguita.
bye
----------------------------------------
AUTORE: 10969
DATA :30/07/2014 - 21:00:33
----------------------------------------
[quote="paracarro":1u82o8rl]ciao
se tutto funziona ma la tempistica nn è rispettata hai solo una cosa da fare:
DEBUGGARE!!
tra l'altro questa è la normale attività di chi programma. Il tempo di sviluppo è quasi nullo...è tutto un continuo debug.
il fatto che i tempi nn siano rispettati può essere dovuto a varie cause:
- un loop che gira + velocemente degli altri può usare gran parte della CPU e nn lasciare tempo agli altri loop di girare. Questo poteva essere vero con le versioni di labview + vecchie e con CPU mono-core. Quindi questa è una causa possibile ma improbabile.
- il loop è mal temporizzato x cui può impiegare a girare + tempo del tempo riservato alla temporizzazione. se il loop che monitora la risorsa nn è sempre attivodall'avvio ma può essere acceso o spento mentre è in funzione, serve una macchina a stati (state machine) che gestisca lo stato di attivazione disattivazione e termine programma..ecc.
Comunque sia, fai attenzione all'esecuzione di subVI che vengono usati in + loop e che nn sono rientranti, in particolare se il SubVI è molto "pesante" nel tempo impiegato alla sua esecuzione:
I VI NON RIENTRANTI funzionano come una "risorsa semaforata", x cui la chiamata di un SubVI mentre è in corso un'altra chiamata in parallelo, dovrà attendere la conclusione della precedente chiamata prima di essere eseguita.
bye[/quote:1u82o8rl]
Grazie per i consigli. Ho comunque risolto, c'erano un paio di wait annidati nelle libreria VI dello strumento, che non avevo inizialmente notato.
----------------------------------------
================================================================================
un consiglio
================================================================================
AUTORE: 7113
DATA :03/08/2014 - 10:09:59
----------------------------------------
ciao a tutti, vi chiedo un consiglio:
ho un pulsante all'interno di un loop che quando è 'true' invia dei dati '1' all'usb quando è 'false' invia i dati '2',
così facendo invio continuamente i dati '1' o '2' all'usb, vorrei invece inviare i dati solo una volta quando c'è il cambio di stato del pulsante.
Ho pensato di creare un variabile che mi indica il cambio di stato.
C'è un modo più elegante o semplice per farlo?
----------------------------------------
AUTORE: 10969
DATA :03/08/2014 - 13:03:25
----------------------------------------
[quote="tibe02":28wo7nf0]ciao a tutti, vi chiedo un consiglio:
ho un pulsante all'interno di un loop che quando è 'true' invia dei dati '1' all'usb quando è 'false' invia i dati '2',
così facendo invio continuamente i dati '1' o '2' all'usb, vorrei invece inviare i dati solo una volta quando c'è il cambio di stato del pulsante.
Ho pensato di creare un variabile che mi indica il cambio di stato.
C'è un modo più elegante o semplice per farlo?[/quote:28wo7nf0]
Non ho certezza che possa essere una soluzione, ma dal front panel ---> tasto dx sul pulsante di comando----> dalla voce "Mechanical Action" prova con altre tipologie di azione.
----------------------------------------
AUTORE: 482
DATA :04/08/2014 - 07:02:17
----------------------------------------
Quello che tu chiedi puo' essere fatto in due modi:
a) cambiando la mechanical action e mettendola su switch when pressed e poi tramite degli shift register verificare se lo stato del pulsante è cambiato
b)funzionamento "ad eventi".
Per realizzare il funzionamento ad eventi segui questa procedura:
1) crei un while loop con la condizione di uscita a false (cosi' ti resta sempre nel ciclo
2) inserisci una event structure nel ciclo
3)tasto dx sulla structure e scegli "add event"
4) selezioni il pulsante che ti interessa e come evento "value change"
5)setta la mechanical action su "switch when pressed"
----------------------------------------
AUTORE: 7113
DATA :04/08/2014 - 19:48:40
----------------------------------------
Ok, faccio un po di prove
----------------------------------------
================================================================================
Selezionare il primo giorno della settimana
================================================================================
AUTORE: 482
DATA :06/08/2014 - 13:08:49
----------------------------------------
...ma ciao!
Ho un controllo di tipo timestamp che devo utilizzare per far selezionare all'utente la settimana che si vuole analizzare.
Inizialmente avevo pensato di chiedere all'utente di selezionare sempre il lunedi' della settimana di riferimento, poi da li sommare 6 giorni e fare un controllo sulla data compresa tra il lunedi' e il sabato, ma come sappiamo l'utente non seguirà mai le istruzioni e quindi sto valutando di trovare un altra soluzione.
L'idea è che l'utente possa selezionare un giorno qualsiasi della settimana interessata e poi da li vado io a verificare quando è il lunedi' e quando è il sabato.
Detto questo, voi avete consigli alternativi?
Avete anche qualche suggerimento per individuare quando è lunedi' e quando sabato in maniera "semplice"?
Al momento l'ho fatto cosi' ma non so se sia la soluzione migliore.
Nello snippet c'e' solo come individuare il lunedi', poi il sabato basta sommare 6.
----------------------------------------
AUTORE: 129
DATA :11/08/2014 - 23:16:39
----------------------------------------
Visto che devi selezionare una settimana, ti proporrei un controllo calendario "monthView" che da in uscita la settimana del giorno selezionato.
----------------------------------------
AUTORE: 482
DATA :25/08/2014 - 07:10:48
----------------------------------------
me lo puoi salvare in versione? 2012
----------------------------------------
AUTORE: 43
DATA :25/08/2014 - 11:21:41
----------------------------------------
ciao
Trovare una soluzione al tuo problemas che sia bella e nel contempo semplice nn mi sembra possibile.
Penso che il tuo approccio sia il migliore anche se lo snippet che hai postato mi sembra che non funzioni per le settimane a cavallo di un cambio mese..
Ecco la mia soluzione che corregge questo piccolo problema
[attachment=0:2yljuk48]SempreLunedi.vi[/attachment:2yljuk48]
bye
----------------------------------------
AUTORE: 482
DATA :26/08/2014 - 07:13:43
----------------------------------------
perfetto. Grazie mille della risposta.
Effettivamente per le settimane a cavallo del mese sapevo che c'era il problema ma non l'avevo ancora affrontato e vedo che questa soluzione funziona quindi la porto a casa con piacere
----------------------------------------
================================================================================
sequence
================================================================================
AUTORE: 7113
DATA :10/08/2014 - 16:52:37
----------------------------------------
Ciao a tutti ho un'altra domanda
ho una stacked sequence con 3 frame
dopo eseguito il frame 3 voglio rifare eseguire il frame 2
come posso fare?
grazie
----------------------------------------
AUTORE: 10969
DATA :10/08/2014 - 19:28:47
----------------------------------------
[quote="tibe02":tp9298zl]Ciao a tutti ho un'altra domanda
ho una stacked sequence con 3 frame
dopo eseguito il frame 3 voglio rifare eseguire il frame 2
come posso fare?
grazie[/quote:tp9298zl]
La prima soluzione che mi viene in mente è quella di dividere i 3 frame in 1+2.
Il 1°frame in un loop con particolare condizione di uscita, mentre il 2°e 3° frame in un altro loop, in modo che il ciclo riparta dal 2°.
----------------------------------------
AUTORE: 129
DATA :11/08/2014 - 15:45:23
----------------------------------------
La soluzione è una macchina a stati, ovvero un while con uno shift register collegato al selector case, ogni caso manda sullo shift register il caso successivo che si vuole eseguire.
Solitamente si usa un enum control o una string per i messaggi di cambio stato.
----------------------------------------
================================================================================
write cluster to ini OPENG con array non funzionante!
================================================================================
AUTORE: 3428
DATA :27/08/2014 - 23:22:53
----------------------------------------
Ciao a tutti,
utilizzando la fantastica libreria openg ho trovato questo utilissimo vi che scrive (c'è anche l'analogo in lettura) un file .ini dando come ingresso alla funzione il cluster sotto forma di variant.
Fantastico funziona, ma non con gli array!
Il mio cluster è formato da diversi numerici e da un array, più precisamente da un array monodimensionale di cluster a sua volta.
quindi:
clusterMAIN
-->cluster con alcune info
-->array[clusterindex0,clusterindex1...]
solitamente da 4-5 elementi non di più.
Il cluster padre è un strict.type.def come i suoi figli.
Il mio problema è che se alla funzione write passo il cluster popolato, trasformato in variant, questa mi scrive il bellissimo ini con una voce che è l'array size e tutti i campi con i giusti valori.
Il read invece no ovvero, alla vi read come tipo di dati da leggere do in ingresso la costante dello stric.typedef del clusterMAIN, dove però l'array è per definizione un array vuoto, da 0 elementi.
Non sono andato a fondo ma credo che la dimensione dell'array che lui va a leggere la prende dal tipo di dato che si aspetta appunto di leggere (dato dal variant in ingresso), quindi essendo nel type def un array vuoto, lui mi restituisce un array vuoto in lettura anche se sul file ini ci sono scritti 4 indici, quindi 4 cluster dentro l'array.
Inoltre ho anche letto prima l'ini con le vi proprietarie per i file di configurazione leggendo appunto la chiave con la lunghezza dell'array e inizializzando il variant ad un array di lunghezza tale ma nulla, non và..
Qualcuno di voi ha avuto a che fare con questo problema???
Grazie
----------------------------------------
AUTORE: 482
DATA :28/08/2014 - 07:28:46
----------------------------------------
Non ho mai usato quel vi quindi non conosco il problema specifico, ma potrei consigliarti, se il problema è veramente quello della dimensione dell'array (che mi sembra ragionevole, soprattutto se l'array non è l'ultimo elemento) una soluzione astrusa....potresti inserire nel cluster un numero identificativo della dimensione dell'array, lo leggi una prima volta ed estrai questo numero (ottenendo pero' l'array con l'errore), poi alla seconda volta usi quel numero per costruire il typedef del blocchetto read.
----------------------------------------
AUTORE: 3428
DATA :28/08/2014 - 08:42:28
----------------------------------------
Già fatto, ma non funziona.
Leggo direttamente la chiave che salvo precedentemente con il write e inizializzo la lunghezza del typedef ma non funziona
----------------------------------------
AUTORE: 43
DATA :28/08/2014 - 09:22:23
----------------------------------------
Ciao renaso
la conversione dei dati contenuti in un cluster a file di testo .ini, è una funzionalità che attualmente utilizzo con un VI fatto in casa nn da me e che nn posso ne voglio postare.
Cmq in LAVA se ne parla se tu cerchi.
x Esempio qui
http://forums.openg.org/index.php?showtopic=299
si dice chiaramente che tutti i controlli nel cluster devono avere un nome(Label) altrimenti quella funzione nn funziona!!!
Nel tuo caso , se il tuo array ha una label, potresti provare a dare una label anche al singolo elemento dell'array
Insomma controlla tutti i tuoi campi in modo che nessun valore abbia una label nulla
bye
----------------------------------------
AUTORE: 482
DATA :29/08/2014 - 07:08:46
----------------------------------------
paracarro sempre one step beyond!
...detto questo mi domandavo...perchè utilizzi questa struttura col file .ini?
Perchè hai bisogno di manipolare o guardare il file al di fuori del programma?
Perchè senno' potresti tranquillamente usare un normalissimo write/read file e salvarlo con l'estensione .ini senza ricorrere a quella libreria la cui comodità è appunto quella di salvare il file seguendo una struttura leggibile anche all'esterno.
----------------------------------------
AUTORE: 43
DATA :29/08/2014 - 07:41:26
----------------------------------------
[quote="gepponline":3p7pbb1k]paracarro sempre one step beyond!
[/quote:3p7pbb1k]
e già..... e nn esagggggeriamo!!!!!!
[quote="gepponline":3p7pbb1k]...detto questo mi domandavo...perchè utilizzi questa struttura col file .ini?
Perchè hai bisogno di manipolare o guardare il file al di fuori del programma?
Perchè senno' potresti tranquillamente usare un normalissimo write/read file e salvarlo con l'estensione .ini senza ricorrere a quella libreria la cui comodità è appunto quella di salvare il file seguendo una struttura leggibile anche all'esterno.[/quote:3p7pbb1k]
E' veramente una storia molto lunga... si dovrebbe partire da circa 20 anni fa...
e nn ne ho proprio voglia!
Mi rendo conto di essere un po' stronzo, ma x me la discussione finisce qua
bye
----------------------------------------
AUTORE: 3428
DATA :29/08/2014 - 12:19:57
----------------------------------------
il punto è che il file di testo è meglio del binario in quanto ogni volta che cambio, aggiorno, inserisco o elimimo variabili nel typedef il binario si corrompe e tocca fare sempre un vi di conversione dal vecchio al nuovo typedef.
con la struttura a file di testo invece non ci sono problemi, quello che non trova nel cluster, non cercherà sul file e la scrittura funziona sempre.
Tutto quà
----------------------------------------
AUTORE: 482
DATA :01/09/2014 - 07:14:58
----------------------------------------
chiaro
----------------------------------------
AUTORE: 129
DATA :05/09/2014 - 08:07:58
----------------------------------------
Io non uso variant ma creo un controllo Cluster Type def, le label dei controlli devono avere lo stesso nome delle key del file ini.
A questo punto se voglio leggere il file ini per settare i valori del cluster, uso la property RefCluster/GetAllcontrol che mi da un array delle references dei controlli nel cluster (la passo in un cluster usando la property label in lettura) e la confronto con la key del file ini, se c'è corrispondenza la inserisco nel controllo.
----------------------------------------
================================================================================
Acquisto software di sviluppo e comunicazione con PLC
================================================================================
AUTORE: 10985
DATA :29/08/2014 - 11:14:39
----------------------------------------
Ciao a tutti,
sto valutando l'acquisto dell'ultima versione di Labview (la 2014) per l'azienda dove sono stato assunto da poco (attualmente ho la versione di prova di 45 giorni). Ho la necessità di creare uno SCADA che giri su PC che si interfacci con un PLC Siemens in maniera Stand alone (senza connessione di altri PLC o di una rete).
Da National Instruments mi è stato proposto l'acquisto di:
- Labview base 2014
- Application Builder per distribuire lo SCADA sulle varie macchine
- DSC + le relative licenze per ogni macchina che verrà distribuita
- OPC + le relative licenze per ogni macchina che verrà distribuita
Ora, in azienda non vogliono pagare la licenza per ogni sistema venduto (le 2 licenze insieme fanno 1800 euro...) e ho visto che c'è la possibilità di comunicare in MODBUS con il PLC (dico MODBUS perchè sul PLC ci sono già dei dispositivi collegati con questo protocollo).
Essendo il mio sistema non grandissimo, posso far senza OPC probabilmente.
Ho scaricato le MODBUS library pensando che potessi gestire tutto con quello, ma se vado nell'Help mi dice tra i requires "DSC Module or Real-Time Module"...
La mia domanda è:
Esiste un modo di comunicare in MODBUS col PLC senza passare dal DSC?
Oppure c'è un altro modo senza dover usare le licenze?
Qualcuno ha avuto esperienza in tal senso?
Cosa mi consigliate di fare?
A chiedere a National ho paura che non siano obiettivi e mi inducano ad acquistare per forza il DSC (un pacco da 2600 euro!!)
----------------------------------------
AUTORE: 645
DATA :30/08/2014 - 10:09:27
----------------------------------------
Ciao, purtroppo non so risponderti con certezza ma è un argomento che mi interessa e ho fatto qualche ricerca in passato.
Immagino tu sia partito da http://www.ni.com/example/29756/en/ e http://sine.ni.com/nips/cds/view/p/lang/it/nid/201711; la libreria dovrebbe funzionare senza RealTime o DSC. National consiglia DSC perchè è uno strumento completo (ed effettivamente permette di fare tante cose semplificando i collegamenti) ma per provare, o nel tuo caso se il sistema non è grande, credo che la libreria possa essere utile.
Immagino che dovrai lavorare sulla comunicazione ModBus con le regole e i passaggi che questo protocollo richiede per scambiare le informazioni: http://www.ni.com/white-paper/7675/en/
----------------------------------------
AUTORE: 482
DATA :01/09/2014 - 07:28:30
----------------------------------------
Io ho fatto alcune comunicazioni con PLC in modbus sia seriale che ethenet/ip e tutte utilizzando delle librerie esterne (gratuite) senza passare da OPC e DSC.
DSC è un bello strumento che pero' comporta un approccio diverso a quello che è la classica programmazione labview...lo rende molto piu' simile alla programmazione di un pannellino per pc. Di sicuro semplifica la gestione degli allarmi e altre cosine cosi', ma per le applicazioni che ho fatto io non c'e' mai stato bisogno/voglia di utilizzarlo anche per il costo delle licenze.
----------------------------------------
AUTORE: 43
DATA :01/09/2014 - 09:22:06
----------------------------------------
ciao bobo.
come dare torto alla tua azienda?
Secondo me è impossibile.
NI è una ottima azienda, ma nn può taglieggiare in questo modo chi lavora in economia.
l'alternativa è scegliere x esempio lo SCADA della Siemens cioè WIN CC.
Francamente nn conosco la politiche economiche dei tedeschi di Siemens , ma penso nn siano molto diverse da quelle degli americani.
Quindi "se" NI è fornitore adeguato solo x grandi clienti, "allora" è meglio x i piccoli arrangiarsi!!!
Dipende da quanto si sfrutta lo SCADA... LabVIEW DSC usa Citadel come DBMS che nn sembra una gran scelta...
in un NI-Day di qualche anno fa, a Roma, mi aveva avvicinato un a persona che diceva di usare DSC, e mi aveva confidato di essere stufo di DSC proprio x Citadel.
Il mio consiglio finale è di continuare ad usare LabVIEW se con LabVIEW ci si trova bene, ma di sfruttare il lavoro i tool gratuiti che si trovano in internet per l'acquisizione ed il salvataggio dei dati.
Con un po' di buona volontà e di pazienza si possono costruire degli SCADA fatti in casa che si sposano al meglio con le esigenze del cliente.
bye
----------------------------------------
AUTORE: 10878
DATA :01/09/2014 - 15:28:12
----------------------------------------
Ciao.
Come suggerito da qualcuno, io prenderei in considerazione WinCC della Siemens (ammesso che i tuoi sistemi equipaggino esclusivamente PLC Siemens).
Oltretutto l'ultimo IDE Siemens "TIA Portal" integra al suo interno il nuovo WinCC (si programmano PLC e pannellini con lo stesso ambiente).
Se invece sei deciso ad utilizzare Labview, io starei assolutamente alla larga dall'OPC, sia per questioni di costi licenze che per la sensazione di utilizzare uno strumento di cui non si ha una conoscenza totale (opinione personale).
Quello che ti consiglierei e' utilizzare le librerie standard Labview per la comunicazione TCP e UDP e di utilizzare PLC dotati di porta ethernet come tutto il nuovo gamma Siemens (1200, 1500), ma anche il vecchio ET200S.
La programmazione e' relativamente semplice e, per esperienza personale, il tutto e' affidabile.
Ciao.
----------------------------------------
AUTORE: 2587
DATA :03/09/2014 - 15:26:23
----------------------------------------
Ciao a tutti,
confermo in pieno quanto scritto da MagicBotolo.
Con LabVIEW ci sono diverse possibilità per la comunicazione Modbus. La prima è l'utilizzo delle funzionalità offerte dai moduli DSC e Real Time. Questa opzione (quella di più immediato utilizzo) richiede l'acquisto di licenze specifiche.
La seconda opzione è la liberia Modbus cui fate riferimento; per questa non sono necessarie licenze (non sono richiesti nè il modulo Real Time nè quello DSC).
Inoltre c'è sempre la possibilità di implemetare a basso livello la comunicazione Modbus sul protocollo specifico (TCP o seriale).
Se volete dare un occhiata questa pagina della Community NI
https://decibel.ni.com/content/docs/DOC-30140
riassume bene tutte le possibilità e contiene anche i link per il download della libreria...
.
Ciao Ciao
----------------------------------------
================================================================================
Inserimento valori in vettore con counter
================================================================================
AUTORE: 10984
DATA :31/08/2014 - 15:50:20
----------------------------------------
Salve a tutti. L'esercitazione su cui stò lavorando consiste nel realizzare un pulsante che funga da comando di memorizzazione di dati proveniente da un segnale simulato. In allegato travate sia il .vi che ho realizzato finora, e una immagine del diagramma a blocchi. In pratica quando premo il pulsante "registra" desidero che il valore istantaneo del segnale venga inserito in un vettore, alla posizione 0, e che alla seconda premuta del pulsante il nuovo valore venga registrato nella posizione 1 del vettore, e così via fino a che non premo il pulsante Stop. Ovviamente al nuovo run successivo il vettore si svuota ed è pronto per una nuova registrazione.
Detto questo vi elenco i problemi che non riesco a risolvere e a comprendere:
[b:32qodrfv]1 [/b:32qodrfv]- Dopo il run quando premo il pulsante registra per la prima volta, lo script mi memorizza correttamente il valore alla posizione 0, quando con il knob vado a modificare l'offset del segnale e premo registra, lo script mi memorizza il valore precedente (quello della posizione 0 per intenderci); per memorizzare il nuovo valore devo premere una seconda volta il pulsante registra, ma a questo punto ho 3 valori nel vettore di cui 2 (in posizione 0 e 1) avente lo stesso valore. Questo si ripete per ogni "registra successivo".
[b:32qodrfv]2 [/b:32qodrfv]- Quando premo il pulsante stop del mio pannello frontale il ciclo non si chiude, devo chiuderlo premendo lo stop generale di LabView.
[b:32qodrfv]3 [/b:32qodrfv]- Quando inserisco il case dentro il while il ciclo non è più continuo, cioè scandito dal tempo che ho definito nel while, ma avanza solo quando premo il pulsante collegato al case, impedendomi di visulaizzare nel grafico il valore del segnale in tempo reale.
Questi sono i problemi che stò cercando di risolvere ma sono bloccato, purtroppo la mia poca esperienza con questo software e la mia scarsa conoscenza della materia mi limitano nel svolgimento degli esercizi e quindi vi chiedo pazienza e vi ringrazio molto in anticipo della vostra disponibilità.
Cordiali saluti a tutti
----------------------------------------
AUTORE: 482
DATA :01/09/2014 - 07:23:10
----------------------------------------
Non posso aprire il vi ma riesco a veder elos creenshot del pannello e posso dirti che c'e' un errore macroscopico nel tuo VI e cioè che tu hai usato un EVENT CASE anzichè una CASE STRUCTURE.
Sostituisci l'event case e dovrebbe funzionare tutto, sia il salvataggio del dato che la scansione temporale.
Mi raccomando nel case false meetti la continuazione del filo e non usare il "default value".
Il problema dell stop invece direi che è dovuto al fatto che lo mandi in run con le freccette continue anzichè con la freccia normale. Essendo in un ciclo while l'esecuzione è già continua di suo, non devi usare le freccette continue (non si usano quasi mai se non per casi particolari di debug) che causano un comportamento diverso da quello del normale run.
----------------------------------------
AUTORE: 43
DATA :01/09/2014 - 09:01:53
----------------------------------------
ciao
Come ha ben notato geppo quell'event case sembra messo li a caso.
Non si capisce bene a cosa serva l'indice dell'array dato che per aggiungere un elemento in fondo al'array stesso, l'indice nn serve.
Sbagliata la Mechanical action del tasto, ma penso faccia parte del tentativo di uso dell'Event Case.
Risultato: bocciato
[attachment=0:ye4oz4ql]Into array2.vi[/attachment:ye4oz4ql]
Questa è la soluzione con l'aggiunta di un tasto di azzeramento. dell'array
P.S.:per visualizzare i dati generati dal knob, meglio usare un Chart al posto del Graph.
bye
----------------------------------------
AUTORE: 10984
DATA :10/09/2014 - 18:08:01
----------------------------------------
Grazie a tutti per il vostro aiuto, ora ho ben capito il meccanismo. A buon rendere
----------------------------------------
================================================================================
Problema con AppendTableToReport
================================================================================
AUTORE: 2565
DATA :04/09/2014 - 16:02:54
----------------------------------------
Ciao a tutti,
sto cercando di generare un file di report in word contenente delle tabelle di dati all'interno di una .VI che ho creato.
Sto utilizzando il NI_ReportGenerationToolkit e l'errore che visualizzo è il seguente:
[quote:1ac9h8it]Exception occured in Microsoft Word: Il metodo o la proprietà non è disponibile perchè gli Appunti sono vuoti o non validi.Help Path is wdmain11.chm and context 37373 in NI_ReportGenerationToolkit.lvlib:Word_Update_Table.vi->NI_Word.lvclass:Word Edit Cell ([str]).vi->Word 2010-AppendTableToReport.vi->Comp.vi[/quote:1ac9h8it]
Qualcuno di voi sa come posso ovviare a questo problema?
Grazie mille
----------------------------------------
AUTORE: 482
DATA :05/09/2014 - 07:01:38
----------------------------------------
...direi che dovresti postare l'estratto del tuo vi per poterti dare una mano...
----------------------------------------
AUTORE: 129
DATA :05/09/2014 - 08:01:49
----------------------------------------
Mi sembra dal messaggio che usi i vi per editare celle che hai già formattate in un template. Dovresti postare il codice e il template per capire meglio.
In ogni caso io ho abbandonato questa strada e lavoro con i Bookmarks.
Nicola
----------------------------------------
================================================================================
Selezione di punti su un XY-Graph con il cursore del mouse.
================================================================================
AUTORE: 10987
DATA :15/09/2014 - 14:28:28
----------------------------------------
Salve a tutti, sono nuova del forum e vorrei chiedervi un aiuto per una parte di un progetto, fatto in LabView, che stò realizzando per lavoro. Vi ringrazio in anticipo per la vostra disponibilità e premetto che sono una principiante ancora con questo software.
Comunque, ecco il problema:
"Tramite strumento di misura a 2 canali acquisisco dei dati in LV e li proietto su un XY-Graph dopo averli elaborati e inseriti in un opportuno vettore. I dati del primo canale, memorizzati nel primo vettore, formano la coordinata X mentre quelli del secondo canale, in un altro vettore, la coordinata Y. Come posso selezionare dei punti a mia scelta con il cursore del mouse, con un click sul punto del grafico, e registrarli in un vettore con l'aggiunta di un pulsante booleano? (Operazioe: Selezione punto con click del mouse sul grafico-->click del comando booleano per registrare il dato su un vettore)"
Accetto consigli e opinioni anche su come il lavoro a vostra opinione dovrebbe essere fatto nella maniera corretta.
Quindi vi ringrazio della disponibilità e spero di essere stata abbastanza chiara ed esaustiva e corretta nei termini, per qualsiasi chiarimento contattatemi.
Buon pomeriggio.
----------------------------------------
AUTORE: 482
DATA :16/09/2014 - 07:09:55
----------------------------------------
...ma ciao!
innanzitutto crea il cursore nel grafico.
Quando lo crei vedrai che ci sono un sacco di opzioni per il cursore. Importante per la tua applicazione credo sia di vincolare il cursore al PLOT in modo che non possano essere selezionati punti al di fuori del grafico.
Poi aggiustalo graficamente come meglio credi.
Dopodichè per lavorare sui cursori devi utilizzare i property node (per poter prelevare la posizione del cursore ad esempi.
Per creare i property node devi andare nel block diagram, clikkare col tasto destro sul grafico e fare Create->property node poi d ali potrai scegliere la proprietà che ti interessa.
Una volta che hai il property node che restituisce la posizione dle cursore non dovrai fare altro che, ad ogni pressione del pulsante, aggiungere all'array il nuovo valore.
----------------------------------------
AUTORE: 10987
DATA :16/09/2014 - 07:38:35
----------------------------------------
[quote="gepponline":3kxb6wh8]...ma ciao!
innanzitutto crea il cursore nel grafico.
Quando lo crei vedrai che ci sono un sacco di opzioni per il cursore. Importante per la tua applicazione credo sia di vincolare il cursore al PLOT in modo che non possano essere selezionati punti al di fuori del grafico.
Poi aggiustalo graficamente come meglio credi.
Dopodichè per lavorare sui cursori devi utilizzare i property node (per poter prelevare la posizione del cursore ad esempi.
Per creare i property node devi andare nel block diagram, clikkare col tasto destro sul grafico e fare Create->property node poi d ali potrai scegliere la proprietà che ti interessa.
Una volta che hai il property node che restituisce la posizione dle cursore non dovrai fare altro che, ad ogni pressione del pulsante, aggiungere all'array il nuovo valore.[/quote:3kxb6wh8]
Grazie mille gepponline, provo subito a fare quello che mi hai detto, sei stato molto gentile e chiaro. Grazie mille della disponibilità e della rapida risposta, eventualmente se avrò ancora bisogno scriverò in questo spazio. Un saluto e buona giornata.
----------------------------------------
================================================================================
Consiglio di programmazione
================================================================================
AUTORE: 10969
DATA :21/09/2014 - 14:21:49
----------------------------------------
Salve a tutti, estate finita e si riparte da Labview.
Avrei bisogno di un consiglio di programmazione per ovviare a problemi di ritardo nei tempi. Spiego brevemente:
Ho un VI in cui gestisco 2 strumenti collegati in seriale.
All'interno del VI oltre ai vari subVI c'è un unico ciclo while che cicla con un tempo pari ad 1sec.
In questo ciclo di un secondo vengono:
-Interrogati contemporaneamente gli strumenti su diverse porte com;
-I dati di risposta vengono trattati in parallelo e si svolgono alcune operazioni matematiche;
-Infine tutti i dati trattati vengono salvati su un file di testo.
Il tutto funziona perfettamente in termini di risultato atteso, ma al proseguire delle simulazioni, succede che qualcosa va storto e i dati che vengono salvati è come se impazzissero e non rispettano più l'ordine del punto decimale. [i:564935xh]Quindi per esempio se la misura attesa è 15.84 succede che mi ritrovo 15842310000000.00.[/i:564935xh]
[u:564935xh]La mia ipotesi è che a causa di ritardi diversi tra i 2 strumenti, non vi è una perfetta sincronizzazione nel parallelismo[/u:564935xh], quindi al crescere dei secondi di simulazione questi ritardi crescono e comportano gli errori.
Una mia idea era quella di [b:564935xh]non [/b:564935xh]elaborare tutti i dati contemporaneamente, ma salvarli prima in un array e poi trattarli in fase successiva. Ma non ho idea su come procedere.
Qualcuno ha consigli a proposito?
Grazie
----------------------------------------
AUTORE: 482
DATA :22/09/2014 - 07:06:49
----------------------------------------
..non saprei ma in base al risultato che ottieni, dubito sia un problema di parallelismo.
L'unica cosa che mi viene in mente è che non svuoti la seriale dopo la lettura e quindi restano dei dati in attesi sulla porta.
Ma come sempre, dovresti postare un estratto del tuo programma per poter valutare al meglio dove sia il problema.
----------------------------------------
AUTORE: 43
DATA :22/09/2014 - 07:48:00
----------------------------------------
[quote="faview":ea3s5g41].... [i:ea3s5g41]Quindi per esempio se la misura attesa è 15.84 succede che mi ritrovo 15842310000000.00.[/i:ea3s5g41] ...
[/quote:ea3s5g41]
ciao.
Devi postare il codice se vuoi ottenere un aiuto sensato.
bye
----------------------------------------
AUTORE: 10969
DATA :22/09/2014 - 10:24:35
----------------------------------------
[quote="gepponline":3dhxmlx4]..non saprei ma in base al risultato che ottieni, dubito sia un problema di parallelismo.
L'unica cosa che mi viene in mente è che non svuoti la seriale dopo la lettura e quindi restano dei dati in attesi sulla porta.
Ma come sempre, dovresti postare un estratto del tuo programma per poter valutare al meglio dove sia il problema.
[/quote:3dhxmlx4]
Avevi pienamente ragione, non era un problema di parallelismo.
Ho fatto una verifica a ritroso e alla fine ho scoperto che l'errore non è dovuto al codice ma alla stringa-risposta che lo strumento restituisce. Pare che di tanto in tanto faccia i capricci, comunque ho appena risolto, grazie.
p.s.
Non ho postato il codice per una questione di dimensione, non avendo idea nemmeno io di dove potesse essere l'errore.
----------------------------------------
AUTORE: 10969
DATA :23/09/2014 - 09:10:08
----------------------------------------
[quote="gepponline":3q6miytx]..non saprei ma in base al risultato che ottieni, dubito sia un problema di parallelismo.
L'unica cosa che mi viene in mente è che non svuoti la seriale dopo la lettura e quindi restano dei dati in attesi sulla porta.
Ma come sempre, dovresti postare un estratto del tuo programma per poter valutare al meglio dove sia il problema.
[/quote:3q6miytx]
Ritorno sui miei passi, il problema è risolto in parte. Ho capito che è dovuto ad un problema di comunicazione e non al resto del codice, ma ancora non riesco a risolverlo.
Per un attimo voglio escludere che sia lo strumento a non comunicare in maniera corretta, quindi mi concentro sulla [b:3q6miytx]comunicazione VISA seriale[/b:3q6miytx].
La mia domanda è:
-Se interrogo ciclicamente lo strumento, è necessario aprire e chiudere ogni volta le porte COM?
Mi spiego meglio: nella fase di request sulla seriale, in maniera ciclica il mio subVI ripete i 4 blocchetti [i:3q6miytx]Open, Write, Read, Close[/i:3q6miytx].
[u:3q6miytx]Può influire negativamente sulla comunicazione l'apertura e la chiusura continua della COM?[/u:3q6miytx]
Devo ammettere che la comunicazione seriale la trovo tanto semplice nell'impostazione ma altrettanto fastidiosa, in quanto di volta in volta ripresenta errori.
Grazie
----------------------------------------
AUTORE: 482
DATA :23/09/2014 - 09:48:53
----------------------------------------
non è necessario continuare ad aprire e chiudere la connessione a meno che tu non la debba usare ina ltri punti dell'applicazione.
L'ideale sarebbe avere un ciclo parallelo a tutto il resto che gestisce la comunicazione seriale
----------------------------------------
AUTORE: 43
DATA :24/09/2014 - 14:19:13
----------------------------------------
[quote="faview":2w8es6qo][quote="gepponline":2w8es6qo]..non saprei ma in base al risultato che ottieni, dubito sia un problema di parallelismo.
L'unica cosa che mi viene in mente è che non svuoti la seriale dopo la lettura e quindi restano dei dati in attesi sulla porta.
Ma come sempre, dovresti postare un estratto del tuo programma per poter valutare al meglio dove sia il problema.
[/quote:2w8es6qo]
Ritorno sui miei passi, il problema è risolto in parte. Ho capito che è dovuto ad un problema di comunicazione e non al resto del codice, ma ancora non riesco a risolverlo.
Per un attimo voglio escludere che sia lo strumento a non comunicare in maniera corretta, quindi mi concentro sulla [b:2w8es6qo]comunicazione VISA seriale[/b:2w8es6qo].
La mia domanda è:
-Se interrogo ciclicamente lo strumento, è necessario aprire e chiudere ogni volta le porte COM?
Mi spiego meglio: nella fase di request sulla seriale, in maniera ciclica il mio subVI ripete i 4 blocchetti [i:2w8es6qo]Open, Write, Read, Close[/i:2w8es6qo].
[u:2w8es6qo]Può influire negativamente sulla comunicazione l'apertura e la chiusura continua della COM?[/u:2w8es6qo]
Devo ammettere che la comunicazione seriale la trovo tanto semplice nell'impostazione ma altrettanto fastidiosa, in quanto di volta in volta ripresenta errori.
Grazie[/quote:2w8es6qo]
Ovviamente nn è necessario aprire e chiudere la porta seriale x ogni singolo scambio messaggi...
Ovviamente il fatto che apri e chiudi la porta seriale ha un suo peso...
Per esempio se il dispositivo che interroghi spedisce dati anche se nn richiesti.
Dal momento in cui una porta è aperta, i caratteri in arrivo vengono accumulati in un buffer in attesa che vengano letti, e quando viene chiusa il contenuto di tale buffer viene cancellato.
mi chiedevo invece se il l'error cluster fosse collegato in "catena" con gli altri error in modo che se la comunicazione nn va a buon fine tu possa sapere cosa è accaduto...
bye
----------------------------------------
AUTORE: 645
DATA :25/09/2014 - 18:59:09
----------------------------------------
Due pensieri: un ciclo di 1s per due interrogazioni seriali e relative elaborazioni potrebbe essere un po' troppo, prova ad aumentare i tempi. L'altra cosa è, come già detto, che aprire e chiudere la porta tutte le volte è un peso eccessivo per il VI. La porta può essere aperta all'inizio e chiusa alla fine.
Tra una lettura e l'altra prova a svuotare il buffer della porta dopo aver letto il dato.
----------------------------------------
AUTORE: 10969
DATA :26/09/2014 - 12:46:52
----------------------------------------
[quote="MagicBotolo":3krf9djd]Due pensieri: un ciclo di 1s per due interrogazioni seriali e relative elaborazioni potrebbe essere un po' troppo, prova ad aumentare i tempi. L'altra cosa è, come già detto, che aprire e chiudere la porta tutte le volte è un peso eccessivo per il VI. La porta può essere aperta all'inizio e chiusa alla fine.
Tra una lettura e l'altra prova a svuotare il buffer della porta dopo aver letto il dato.[/quote:3krf9djd]
Ringrazio tutti per l'aiuto.
Troppo per Labview intendi?
In parte ho risolto, come al solito qualche problema con il convertitore seriale, poi ho aumentato i ritardi in fase di interrogazione sempre mantenendomi nel secondo.
Per quanto riguarda l'open/close della COM, con uno strumento riesco ad evitare l'apertura e chiusura ciclica, con l'altro invece nulla.
Infatti, se riduco il loop di request al semplice Write/Read, si presentano errori di comunicazione.
----------------------------------------
AUTORE: 10969
DATA :26/09/2014 - 12:49:57
----------------------------------------
[quote="paracarro":2nk3nmpw][quote="faview":2nk3nmpw][quote="gepponline":2nk3nmpw]..non saprei ma in base al risultato che ottieni, dubito sia un problema di parallelismo.
L'unica cosa che mi viene in mente è che non svuoti la seriale dopo la lettura e quindi restano dei dati in attesi sulla porta.
Ma come sempre, dovresti postare un estratto del tuo programma per poter valutare al meglio dove sia il problema.
[/quote:2nk3nmpw]
Ritorno sui miei passi, il problema è risolto in parte. Ho capito che è dovuto ad un problema di comunicazione e non al resto del codice, ma ancora non riesco a risolverlo.
Per un attimo voglio escludere che sia lo strumento a non comunicare in maniera corretta, quindi mi concentro sulla [b:2nk3nmpw]comunicazione VISA seriale[/b:2nk3nmpw].
La mia domanda è:
-Se interrogo ciclicamente lo strumento, è necessario aprire e chiudere ogni volta le porte COM?
Mi spiego meglio: nella fase di request sulla seriale, in maniera ciclica il mio subVI ripete i 4 blocchetti [i:2nk3nmpw]Open, Write, Read, Close[/i:2nk3nmpw].
[u:2nk3nmpw]Può influire negativamente sulla comunicazione l'apertura e la chiusura continua della COM?[/u:2nk3nmpw]
Devo ammettere che la comunicazione seriale la trovo tanto semplice nell'impostazione ma altrettanto fastidiosa, in quanto di volta in volta ripresenta errori.
Grazie[/quote:2nk3nmpw]
Ovviamente nn è necessario aprire e chiudere la porta seriale x ogni singolo scambio messaggi...
Ovviamente il fatto che apri e chiudi la porta seriale ha un suo peso...
Per esempio se il dispositivo che interroghi spedisce dati anche se nn richiesti.
Dal momento in cui una porta è aperta, i caratteri in arrivo vengono accumulati in un buffer in attesa che vengano letti, e quando viene chiusa il contenuto di tale buffer viene cancellato.
mi chiedevo invece se il l'error cluster fosse collegato in "catena" con gli altri error in modo che se la comunicazione nn va a buon fine tu possa sapere cosa è accaduto...
bye[/quote:2nk3nmpw]
Di errori sostanziali segnalati dall'error cluster non ne avvengono. L'unico problema è che ogni tanto qualche errore di comunicazione si presenta, del tipo caratteri speciali inaspettati nella stringa ricevuta. Il mio dubbio è che fosse il convertitore serial/usb, che naturalmente hanno le loro magagne.
Grazie
----------------------------------------
================================================================================
Aiuto inserimento valori in array
================================================================================
AUTORE: 10940
DATA :24/09/2014 - 15:44:30
----------------------------------------
Buongiorno,
mi scuso se quella che sto per farvi è una domanda stupida ma è qualche giorno che sto sbattendo la testa per un problema in labview e quindi ho deciso di chiedere a voi
In pratica, ho un array numerico i cui elementi sono puntatori a delle posizioni di un altro array di stringhe. Io dovrei scrivere una stringa specifica (un testo standard) in ogni posizione indicata dal primo array. Come posso fare?
Vi faccio un esempio per capire. Se l'array numerico di puntatori fosse:
array1=(0,1,3,5)\
----------------------------------------
AUTORE: 482
DATA :25/09/2014 - 07:11:45
----------------------------------------
Innanzitutto per fare una cosa del genere la prima cosa che devi fare è creare un array delle dimensioni che ti servono pieno di stringhe vuote.
Per farlo c'e' la comodissima "Initialize array".
Da li basta usare il "replace array subset" per ogni elemento che devi inserire.
Per vedere come funzionano quei blocchetti basta che prima di selezionarli premi CTRL+H comparirà la finestra del context HElp che spiega a grandi linee gli ingressi e le uscite dei vari blocchetti. Se quella spiegazione non ti è chiara, basta premere su detailed help.
----------------------------------------
AUTORE: 43
DATA :25/09/2014 - 07:57:26
----------------------------------------
eccoti l'esempio
[attachment=0:3avoxtjd]UntitledX.vi[/attachment:3avoxtjd]
bye
----------------------------------------
================================================================================
Problemi con "Write to jpeg" dopo l'application Builder
================================================================================
AUTORE: 10985
DATA :25/09/2014 - 10:50:25
----------------------------------------
Ciao,
ho la necessità di salvare la schermata (printscreen) premendo un pulsante e nell'ambiente di sviluppo ci sono riuscito (vedi allegato).
[attachment=0:3d9pgmro]Write to jpeg.png[/attachment:3d9pgmro]
Il problema è quando passo all'application builder: dopo aver generato l'eseguibile e fatto partire il programma, alla pressione del tasto il programma non mi salva niente. Facendo un po' di debug ho visto che mi da un errore alla funzione "Write to jpeg". Ho provato a cambiare il tipo di conversione (usando anche write to png), il tipo di qualità dell'immagine, ho provato a mettere un path fisso, ma niente.
Negli help e su googolando non ho trovato niente che mi spiegasse questo fatto.
Qualcuno riesce a capire dove sto sbagliando?
PS: la mia versione di Labview è la 2013 a 64bit
----------------------------------------
AUTORE: 482
DATA :25/09/2014 - 14:37:31
----------------------------------------
sbaglio o a quella write to jpeg manca il percorso di salvataggio?
----------------------------------------
AUTORE: 10985
DATA :29/09/2014 - 08:28:29
----------------------------------------
Si si, manca perchè volevo far comparire in automatico la finestra per decidere dove salvare la JPEG. Ma anche con un percorso fisso, il problema persisteva.
Comunque ho trovato il motivo... il problema non è "write ti JPEG", ma la funzione "Clipboard get Image" che non è compatibile con l'Application Builder...
Ho risolto usando gli Invoke Node, strada più lunga, ma funziona!
----------------------------------------
AUTORE: 482
DATA :30/09/2014 - 07:08:05
----------------------------------------
...strano, io ho diversi eseguibili con quella funzione e non ho nessun problema...
----------------------------------------
================================================================================
Seriale Modbus MAster
================================================================================
AUTORE: 10962
DATA :07/10/2014 - 14:12:22
----------------------------------------
Ciao a tutti, vorrei fare un semplice programmino per comunicare con un UPS in Modbus.
Questo allegato è il programma, non riesco a farlo funzionare, mi da il seguente errore.
Error 56 occurred at RTU Data Unit.lvclass:Read ADU Packet.vi:5030001
Possible reason(s):
LabVIEW: The network operation exceeded the user-specified or system time limit.
Qualcuno sa aiutarmi?tutti i parametri di configurazione della seriale sono giusti perchè sono gli stessi che uso con Modbus Poll, cosi come gli holding register che vado a leggere
Grazie in anticipo!
----------------------------------------
AUTORE: 482
DATA :08/10/2014 - 07:05:38
----------------------------------------
Non posso aprire il vi perchè è in versione 13 e io ho la 12, ma leggendo cosi' l'errore, sembra un timeout nella risposta, quindi cosi' alla cieca potrei azzardare che sbagli a inviare il comando e quindi non ricevi nessuna risposta.
Eventualmente rimanda il vi in versione 2012 o precedente.
----------------------------------------
AUTORE: 10962
DATA :08/10/2014 - 08:24:08
----------------------------------------
Ciao e grzie per la risposta.
Questo in allegato dovrebbe essere la versione 2012. La parte modbus oggetto della discussione è quella nel while loop in basso.
----------------------------------------
AUTORE: 482
DATA :09/10/2014 - 07:13:30
----------------------------------------
..ma ciao!
quel vi è quasi inapribile nel senso che usi quasi esclusivamente degli addons che io non ho.
P.S. quando posti un VI per supporto, elimina tutta la parte che non interessa.
Detto questo, ho potuto notare un grandisimo errore nella tua comunicazione modbus e cioè che crei l'istanza modbus ad ogni ciclo.
La creazione dell'istanza deve essere prima di entrare nel ciclo e poi tramite shift register resa disponibile ad ogni ciclo.
----------------------------------------
AUTORE: 10962
DATA :09/10/2014 - 13:47:06
----------------------------------------
Ho corretto come da indicazioni, pero non funziona ancora, da il seguente errore:
Error 56 occurred at RTU Data Unit.lvclass:Read ADU Packet.vi:5030001
Possible reason(s):
LabVIEW: The network operation exceeded the user-specified or system time limit.
Ho tirato fuori dal ciclo while l'istanza ma nn ho capito cosa fare con gli shift register
----------------------------------------
AUTORE: 10962
DATA :09/10/2014 - 13:47:48
----------------------------------------
Allego il VI
----------------------------------------
AUTORE: 482
DATA :09/10/2014 - 14:50:14
----------------------------------------
E' in versione 13 e non posso aprirlo.
----------------------------------------
AUTORE: 10962
DATA :10/10/2014 - 07:46:08
----------------------------------------
Ecco, questo dovrebbe essere in versione 2012.
----------------------------------------
AUTORE: 482
DATA :10/10/2014 - 10:10:16
----------------------------------------
Non vedo nessun grosso errore nel tuo VI, quindi i dubbi che ho è che sbagli a leggere registro o sbagli l'operazione di lettura.
prova con questa applicazione a testare la comunicazione:
http://www.simplymodbus.ca/RTUmaster.htm
----------------------------------------
AUTORE: 10962
DATA :10/10/2014 - 15:04:31
----------------------------------------
Purtroppo con LabVIEW non funziona. Io come simulatore uso modbus pol e comunica. Allego alcuni screenshot.
Le cose che non mi tornano sono:
1-su labview non ho la possibilita di impostare 8 data bit
2-su labview non ho la possibilita di impostare un bit di stop
Quindi non so come siano settati questi 2 parametri
Inoltre, vorrei chiedervi, l'indirizzo di lettura modbus, in labview, è inteso in decimale o in HEX?
Grazie!
----------------------------------------
AUTORE: 482
DATA :13/10/2014 - 07:19:25
----------------------------------------
1 e 2) sbagli. Quelle sono impostazioni della porta seriale. I blocchetti modbus si limitano ad utilizzare quelli settati di default nella configurazione windows della porta seriale. In ogni caso, non ho il toolkit che usi tu installato, ma sono quasi sicuro che anche il toolkit Modubus abbia un VI per configurare i settaggi della porta seriale.
3) se hai questo dubbio, basta che clikki col tasto destro sul controllo dell'indirizzo e in display format selezioni come Type "Hexadecimal".
P.S. che toolkit modbus usi?
----------------------------------------
================================================================================
Abbinare tabella a menu a tendina
================================================================================
AUTORE: 10962
DATA :08/10/2014 - 16:20:16
----------------------------------------
Ciao,
come posso fare per selezionare le righe di una tabella di costanti tramite un menu a tendina?
Praticamente, con un menu a tendina scelgo il modello di UPS da testare, e a seconda del modello scelto, vorrei caricare alcuni dati di corrente, tensione ecc per fare delle soglie all'interno del programma.
Queste soglie appunto devono cambiare a seconda del tipo di UPS.
----------------------------------------
AUTORE: 482
DATA :09/10/2014 - 07:11:25
----------------------------------------
la risposta è "con un po' di programmazione".
mi spiego... la domanda è generica e quello che vuoi fare non immediato, quindi dovresti spiegare quali sono le tue lacune.
Nel senso...dove hai i dati di base?
Il menu a tendina deve mostrare tutti i dati o ogni dato deve avere una tendina?
L'idea di base dovrebbe essere che selezioni l'UPS, in base a quello che hai selezionato, carichi dei dati.
Una volta caricati i dati devi manipoalrli in base a quali vuoi visualizzare.
Per modificare le stringhe in una tendina devi usare il property node "Strings[]" e passargli un array di stringhe.
----------------------------------------
AUTORE: 1944
DATA :09/10/2014 - 09:49:38
----------------------------------------
Ciao.
Allego il sistema che uso io descritto anche da gepponline. Poi si possono fare anche dei pulsanti per gestire la tabella. Ad esempio: salva, carica, modifica, esporta, importa,... e tutto quello che vuoi.
Ho visto anche il post del modbus.
Sembra essere un problema di timeout della comunicazione.
Per lavoro io offro anche collaborazioni se serve.
----------------------------------------
AUTORE: 10962
DATA :09/10/2014 - 13:42:35
----------------------------------------
Grazie Fabio,
ho potuto dare solo un occhiata veloce perchè sono impegnato con un altro lavoro.
Mi sembra comunque molto simile a quello che voglio fare.
----------------------------------------
================================================================================
Generare Onda
================================================================================
AUTORE: 10995
DATA :09/10/2014 - 18:03:09
----------------------------------------
Salve a tutti, uso da poco labview per cui mi scuso se la domanda è banale; devo generare la seguente onda:
Si implementi un generatore di onda rettangolare di ampiezza di picco controllabile (valore di default 1, risoluzione 0.1, fondoscale 5) a frequenza controllabile (default 10 Hz risoluzione 1Hz) con durata 1 periodo (controllabile), con offset pari ad 1 (controllabile) e fase nulla (controllabile in gradi).
Ora per l'ampiezza utilizzo un controllo numerico non so però come inserire risoluzione e fondo scala; so che è possibile modificare il controllo per l'ampiezza ed inserire così lì risoluzione e fondo scala ma non so come si fa.
Spero qualcuno sappia aiutarmi
----------------------------------------
AUTORE: 482
DATA :10/10/2014 - 07:12:16
----------------------------------------
se per risoluzione si intendono gli step di valori nel controllo numerico, basta che vai nelle proprietà del controllo e sotto "Data Entry" setti Increment al valore che ti interessa.
----------------------------------------
AUTORE: 10995
DATA :10/10/2014 - 10:14:40
----------------------------------------
E invece per impostare il fondo scala? In altri esercizi invece mi viene fornito l'offset; anche quello come si imposta?
----------------------------------------
AUTORE: 482
DATA :10/10/2014 - 10:52:32
----------------------------------------
Li si tratta di programmazione, e vedendolo cosi' presumo sia un testo di esame o qualcosa del genere quindi si presume anche che tu abbia studiato i concetti che si richiedono...
Poi dipende se devi realizzare l'onda con le funzioni o se usi i blocchetti apposta di waveform generation in cui tutte le funzioni sono già implementate.
----------------------------------------
================================================================================
Sincronizzazione input output ed aggiornamento
================================================================================
AUTORE: 10996
DATA :14/10/2014 - 19:18:11
----------------------------------------
Salve a tutti.
Vorrei capire come posso modificare il .vi allegato (che si ritrova anche tra gli esempi di LabView) in modo che oltre ad avere una sincronizzazione tra input e output mi consenta di poter cambiare ad esempio l'ampiezza della sinusoide ed aggiornare quindi il segnale letto senza dover stoppare, settare nuovi valori di ampiezza e rilanciare il codice. Grazie
----------------------------------------
AUTORE: 645
DATA :07/12/2014 - 18:21:42
----------------------------------------
Hai allegato un pezzo di DAQmx... Per fare quello che dici tu devi preparare un ciclo che sfrutta generazione e visualizzazione del segnale. Puoi usare i blocchi DAQmx o gli ExpressVI se vuoi lavorare più rapidamente e non hai particolari esigenze di tempi e performance.
----------------------------------------
================================================================================
aiuto 3 esercizi che non ho capito e non riesco a fare
================================================================================
AUTORE: 11000
DATA :20/10/2014 - 14:25:12
----------------------------------------
ciao a tutti! Non riesco a fare questi 3 esercizi su lab view. vi invio in allegato il testo. fatemi sapere per favore! grazie mille in anticipo!!
----------------------------------------
AUTORE: 3428
DATA :20/10/2014 - 17:04:58
----------------------------------------
Ciao,
sono esercizi di estrema facilità ai quali dire che servono le basi di labview forse è troppo!
Il punto è: vuoi che te li facciamo noi?
Se così fosse ti sei iscritto nel posto sbagliato..
Se mi sono sbagliato io allora chiedi più precisamente cosa non riesci a fare.
----------------------------------------
AUTORE: 11000
DATA :20/10/2014 - 17:35:10
----------------------------------------
Ok hai ragione tu probabilmente. Il prof non ha spiegato queste cose e ho provato a chiedere qui perchè non ho idea di come si possano fare. Abbiamo cominciato a usare lab view neanche un mese fa facendo 2 ore a settimana. Se non mi volete/vuoi aiutare fa niente, mi sono iscritto al sito sbagliato forse! Scusate ma spero comunque in un vostro aiuto!
----------------------------------------
AUTORE: 645
DATA :20/10/2014 - 23:50:09
----------------------------------------
Ciao, quello che si intende è che questo è un forum, cioè un luogo dove discutere.
Soluzioni già pronte ne arrivano poche!
Comunque, direi che gli esercizi del file sono semplici come programmazione e prevedono alcuni concetti logici che dovresti aver già visto: sono cicli di operazioni (For o While in LabView) che contano ciò che succede o sommano numeri.
Per semplificare, il Duty Cicle in un ciclo indica la percentuale di tempo durante il quale un segnale rimane nello stato alto o basso: dato un tempo, ne calcoli una percentuale e quando il segnale è alto (1) accendi il Led.
----------------------------------------
AUTORE: 482
DATA :21/10/2014 - 07:17:37
----------------------------------------
Concordo in tutto e per tutto con Renaso e Magicbotolo, ma siccome ho 5 minuti da spendere vediamo se riesco a chiarirti un po' le idee sui tuoi esercizi.
Esercizio 1:
Frequenza 2Hz e duty cycle 50%. Questo vuol dire che la duraata del tutto è di 0,5 secondi (1/2hz).
Questi 0,5 secondi sevono essere 50% alti e 50% bassi (0,25 e 0,25).
Quindi fai un ciclo while, metti il led a TRUE, aspetti 0,25 secondi poi lo metti a false e aspetti altri 0,25 secondi, dopodichè il ciclo riparte.
Esercizio 2:
Fai un ciclo while, poi metti un case che ogni volta che lo premi prenda un indicatore e gli sommi 1.
Esrcizio 3:
..ho finito il tempo....pensaci tu
----------------------------------------
================================================================================
Sistema di controllo PID
================================================================================
AUTORE: 11001
DATA :22/10/2014 - 22:07:26
----------------------------------------
Salve, devo scrivere un sistema di controllo partendo con un set point di una temperatura alla quale voglio mantenere il mio sistema.
Non posso usare il toolkit PID ma devo calcolare i vari contributi dei metodi: proporzionale. integrativo e derivativo singolarmente.
secondo lo schema che ho allegato qui sotto. QUalche consiglio su come iniziare?
----------------------------------------
AUTORE: 482
DATA :23/10/2014 - 07:05:41
----------------------------------------
Beh direi che è tutto fatto e abbastanza chiaro in quello schema.
Devi copiarlo pari pari, l'unica nozione in piu' che ti posso dare è quella di andare nella palette "mathematics" e usare le funzioni già fatte per calcolare integrale e derivata.
----------------------------------------
AUTORE: 11001
DATA :23/10/2014 - 18:38:09
----------------------------------------
Mi è stata fatta richiesta di integrare e derivare pointbypoint. poi non lo so se quello che dici tu fa lo stesso.
Ho comunque completato l'esercizio... però ho riscontrato dei problemi: il primo è che non la Temperatura non si stabilizza al set poit fissato, il secondo è il case structure che penso di non averlo impostato bene... dove sto sbalgliando? premetto che non mi è molto chiaro il Range and Coerce(in particolare a cosa servono i limiti upper e lower???). XD
Avrei una domanda, ma come dt cosa dovrei mettere?
Questo è il diagram block
[url:2k30nz5s]http://tinyurl.com/kl8k9vd[/url:2k30nz5s]
questo invece è il front panel
[url:2k30nz5s]http://tinyurl.com/n8m3ux4[/url:2k30nz5s]
----------------------------------------
AUTORE: 645
DATA :23/10/2014 - 21:37:52
----------------------------------------
Mi sono permesso di modificarlo in questo modo.
Questo potrebbe essere il punto di partenza.
----------------------------------------
AUTORE: 482
DATA :24/10/2014 - 07:23:46
----------------------------------------
Non ho tempo di guardare il vi oggi quindi affidati a MagicBotolo che sicuramente la sua soluzione funziona
Intanto ti spiego l'"IN RANGE & Coerce".
Come dice il nome è un VI che controlla se la variabile in ingresso è NEL RANGE tra l'upper limit e il Lower limit e restituisce un booleanoc he ti indica se lo è o non lo è.
Nel caso non lo fosse, in uscita restituisce il valore massimo o il valore minimo indicati da upper e lower limit.
Un consiglio, quando c'e' un VI/blocchetto di cui non capisci il funzionamento, vagli sopra col mouse e premi CTRL + H compare una finestra popup che ne spiega in breve il funzionamento e da li eventualmente poi andare a vedere la spiegazione piu' dettagliata.
----------------------------------------
AUTORE: 11001
DATA :24/10/2014 - 12:35:47
----------------------------------------
Grazie magicbotolo per la risposta, ho provato a far girare quello che mi hai suggerito ma non penso che vada bene. Perchè nel grafico mi plotta solo valori di output dell'"IN RANGE & Coerce". ovvero 2 e 10, se il volore che entra è maggiore o minore dei limiti impostati.
Però a me serve plottare l'andamentoi della temperatura, nel tempo.Per esempio parto a 25°C e devo riscaldare un tino fino a 50°C, per questo penso sia necessario il case structure o mi sbaglio?. Ho riscritto il programma che allego qui sotto.
Ps. grazie gepponline per la spiegazione ora mi è molto chiaro cosa fa quel blocco.
----------------------------------------
AUTORE: 645
DATA :24/10/2014 - 22:31:38
----------------------------------------
Credevo dovessi avere in uscita valori compresi tra 2 e 10
Ho guardato la soluzione finale e mi sembra funzioni bene!
----------------------------------------
================================================================================
Problema Seriale
================================================================================
AUTORE: 11007
DATA :13/11/2014 - 11:33:25
----------------------------------------
Buongiorno a tutti,
sto cercando di far comunicare in seriale un microcontrollore con labview.
Labview invia una lettera su seriale e il micro risponde con 4 stringhe separate da un carriege return e un line feed.
Questa funzione la faccio ciclicamente all'interno di un while.
Il problema è che una volta fatto partire il programma le stringhe vengono correttamente visualizzate, ma non aggiornate! Labview mi fa vedere sempre le stringhe che legge al primo ciclo.
Il programma su micro funziona correttamente perchè se apro la porta seriale con un terminale vedo le stringhe che si aggiornano in continuazione.
All'interno del while ho solamente un Visa write, un Visa read e un temporizzatore da 250ms. L'inizializzazione della seriale la faccio fuori dal while e ho abilitato il char termination. Sbaglio qui???
Grazie
----------------------------------------
AUTORE: 482
DATA :14/11/2014 - 07:35:54
----------------------------------------
perchè hai abilitato il temrination char?
Cmq ovviamente se posti il tuo vi sarebbe tutto piu' chiaro.
----------------------------------------
AUTORE: 43
DATA :14/11/2014 - 10:08:38
----------------------------------------
[quote="Virtual Gamer":2ciybbmn]Buongiorno a tutti,
sto cercando di far comunicare in seriale un microcontrollore con labview.
Labview invia una lettera su seriale e il micro risponde con 4 stringhe separate da un carriege return e un line feed.
Questa funzione la faccio ciclicamente all'interno di un while.
Il problema è che una volta fatto partire il programma le stringhe vengono correttamente visualizzate, ma non aggiornate! Labview mi fa vedere sempre le stringhe che legge al primo ciclo.
Il programma su micro funziona correttamente perchè se apro la porta seriale con un terminale vedo le stringhe che si aggiornano in continuazione.
All'interno del while ho solamente un Visa write, un Visa read e un temporizzatore da 250ms. L'inizializzazione della seriale la faccio fuori dal while e ho abilitato il char termination. Sbaglio qui???
Grazie[/quote:2ciybbmn]
Per capire cosa stia succedendo si deve capire come funziona "VISA Read"
Basta leggere la prima frase del Detailed Help
[quote="Labview Help":2ciybbmn][b:2ciybbmn]VISA Read Details[/b:2ciybbmn]
This function might return less than the number of bytes requested if the function reaches the end of the buffer, reaches a termination character, or if a timeout occurs. The output error cluster indicates if a timeout has occurred.
[/quote:2ciybbmn]
Nel tuo caso, sembra di capire, la VISARead ritorni al momento della ricezione del carattere terminatore che, se nn specificato, è LF (0x0A).
Lo scenario possibile potrebbe essere questo:
LV--> Labview invia il carattere di sync (1)
LV-- resta in attesa per un certo tempo (di solito il timeout è nell'ordine di sec.) di ricevere X bytes dalla porta seriele
nel frattempo il micro riceve il byte e dopo poco invia le 4 stringhe.
LV <-- Labview riceve le 4 stringhe e le memorizza in un buffermentre la funzione VISARead restituisce solo la 1ma parte del messaggio fino al primo LF incontrato. Quindi la parte restante reterà nel buffer pronta x essere letta
LV--> Labview invia il carattere di sync (2)
LV <-- Labview legge la 2nda parte del msg senza attese xkè già presente nel buffer
LV--> Labview invia il carattere di sync (3)
LV <-- Labview legge la 3za parte del msg senza attese xkè già presente nel buffer
LV--> Labview invia il carattere di sync (4)
LV <-- Labview legge la 4ta ed ultima parte del msg senza attese xkè già presente nel buffer
nel frattempo il micro è probabilmente andato in tilt, xkè ha ricevuto il terzo byte mentre stava rispondendo al secondo interrupt sulla ricezine del secondo byte.
A prescindere dal comportamento di LabVIEW bisogna scrivere meglio il FW del micro.
bye
P.S.:Aumenta la temporizzazione da 250 msec a 2000 msec. per osservare meglio il comportamento del tuo SW.
E' possibile che rallentando molto l'esecuzione del loop, possa funzionare l'aggiornamento dei messaggi
----------------------------------------
AUTORE: 11007
DATA :16/11/2014 - 14:45:52
----------------------------------------
Grazie per informazioni e scusate se rispondo solo ora.
Paracarro mi hai illuminato....mi ero perso le prime due righe dell'help sul carattere di terminazione.
Ho risolto modificando Labview e lasciando cosi il codice del microcontrollore.
Vi allego la soluzione che ho trovato.
Grazie
[url:2n0nwrqv]http://imageshack.com/a/img905/1128/Go922B.jpg[/url:2n0nwrqv]
----------------------------------------
AUTORE: 43
DATA :17/11/2014 - 13:35:44
----------------------------------------
[quote="Virtual Gamer":2ki8xn9o]Grazie per informazioni e scusate se rispondo solo ora.
Paracarro mi hai illuminato....mi ero perso le prime due righe dell'help sul carattere di terminazione.
Ho risolto modificando Labview e lasciando cosi il codice del microcontrollore.
Vi allego la soluzione che ho trovato.
Grazie
[url:2ki8xn9o]http://imageshack.com/a/img905/1128/Go922B.jpg[/url:2ki8xn9o][/quote:2ki8xn9o]
Grazie x aver risposto.
Mi permetto di farti notare 2 piccole cose:
-la temporizzazione fatta con la funzione "Wait" messa in alto a sx viene eseguita in parallelo alla scrittura/lettura da Seriale.
E' NECESSARIO inserire un ritardo dopo la scrittura e precedente la lettura del buffer:
Ti consiglio di mettere una wait dentro una sequenza di LV che avrai cura di "far attraversare" da un filo (es. Error Cluster) che unisce i 2 VI fra i qauli si vuole mettere il ritardo
[attachment=0:2ki8xn9o]DelayBetweenWriteAndRead.png[/attachment:2ki8xn9o]
-la pausa di 500 ms messa nel ciclo for,viene eseguita 4 volte (2 sec di attesa)dopo che è stata effettuata la lettura, nn serve a nulla ed è meglio toglierla.
Io prob. avrei lasciato il carattere terminatore ed avrei effettuato 4 VISA Read in sequenza una dopo l'altra...
bye
----------------------------------------
AUTORE: 11007
DATA :22/11/2014 - 16:45:50
----------------------------------------
Grazie per i suggerimenti!
Il wait nel ciclo for lo usavo per "rallentare" il programma! Adesso metto subito quello dopo la scrittura.
----------------------------------------
================================================================================
excel con activex
================================================================================
AUTORE: 7113
DATA :16/11/2014 - 11:30:08
----------------------------------------
Ciao a tutti
sto leggendo un file excel con Excel._Worksheet e riesco a catturare il numero di righe e di colonne presenti sul file con Range_Rows_count e Range_Columns_count.
Per le righe nessun problema perchè sono indicizzate con numeri, le colonne però sono indicizzate con le lettere (A,B,C,D,ecc.), se devo leggere tutti i valori delle colonne come posso fare visto che il numero di colonne e espresso in valore numerico?
Mi spiego meglio, vedo che nel file ci sono 3 colonne (Range_Columns_count), devo leggere la colonna 2 che in excel è la B, c'è un modo per poter leggere non il numero della colonna ma il 'nome' della colonna?
Ho fatto la conversione da numeri a lettere ma non credo sia la soluzione migliore perchè ci possono essere moltissime colomme.
Mi sapete consigliare?
Grazie
----------------------------------------
AUTORE: 645
DATA :16/11/2014 - 21:10:14
----------------------------------------
Hai già guardato http://www.ni.com/example/27231/en/ ?
Puoi scaricare il file sulla destra, magari fa al caso tuo.
----------------------------------------
AUTORE: 7113
DATA :17/11/2014 - 18:20:59
----------------------------------------
Ok, ho visto, ma anche qui gli devi dare le lettere delle colonne che vuoi leggere e di conseguenza devi sapere prima quante colonne utilizzate ci sono nel file.
Altri consigli ?
----------------------------------------
AUTORE: 645
DATA :17/11/2014 - 22:27:52
----------------------------------------
Non ho provato ma se attivi lo stile R1C1 in Excel cambiano le cose?
Nel menù File --> Opzioni --> Formule puoi attivare lo stile di riferimento R1C1 che assegna numeri sia alle intestazioni delle righe che alle intestazioni delle colonne.
----------------------------------------
AUTORE: 129
DATA :17/11/2014 - 23:44:02
----------------------------------------
Potresti sempre convertire il numero in una corrispondente lettera, esempio crei un arri di lettere A,B,C... e con l'index array estrai la lettera corrispndente ad un numero.
----------------------------------------
AUTORE: 7113
DATA :22/11/2014 - 10:02:10
----------------------------------------
Infatti ho già fatto come consiglia Nicola, il problema potrebbe essere se ci sono più colonne di quelle che ho previsto nell'array.
Fortunatamente in questo caso penso che non avrò molte colonne, ne prevederò un po in più fino a che non troverò una soluzione migliore.
----------------------------------------
AUTORE: 1078
DATA :24/02/2015 - 08:57:39
----------------------------------------
Caio @tibe02,
Usando la proprietà [b:39uiv0dm]usedrange[/b:39uiv0dm] del foglio di lavoro, [b:39uiv0dm]_Worksheet[/b:39uiv0dm], dovresti avere nella proprietà colums il numero di colonne usate...
Hai provato così?
----------------------------------------
================================================================================
programmare esportazione dati in file .txt
================================================================================
AUTORE: 10906
DATA :17/11/2014 - 16:42:01
----------------------------------------
salve a tutti
espongo subito il mio problema: la mia applicazione prevede due main VI, uno real time e uno fpga (uso compact rio 9075)
ho necessità di salvare dati acquisiti dal VI real time in un file .txt, in modo che siano presenti due colonne di dati ben distinte e separate ognuna per il tipo di dato che viene acquisito ( ad esempio una colonna per la forza e una per l'accelerazione)
nella mia applicazione facendo girare il programma, dopo aver ottenuto il grafico sul front panel ho cliccato "export" ( un tasto che ho creato io sul front panel per esportare i dati del grafico su un file .txt) ma una volta aperto il file ho trovato i valori non in due colonne ma tutti mischiati fra loro e messi addirittura in riga, insomma erano inutilizzabili visto che non riuscivo a distinguerli e non potevo più copiarli su excel
come si può "formattare" la funzione di labview per avere i dati salvati su due colonne distinte?
se serve posso mandare uno screen per mostrare la funzione di esportazione che ho usato sul block diagram
----------------------------------------
AUTORE: 10969
DATA :17/11/2014 - 20:54:03
----------------------------------------
Con un semplice Write to Spreadsheet File.
Tramite Build Array concateni 2 valori alla volta e li colleghi all'ingesso 1D del Write Spreadsheet.
----------------------------------------
================================================================================
Leggere un file tabulato con caratteri delimitatori di testo
================================================================================
AUTORE: 482
DATA :18/11/2014 - 14:40:36
----------------------------------------
...ma ciao!
esiste un modo semplice pe rleggere dei file tabulati e specificare che se c'e' l'apice deve considerare il testo come unico elemento?
Sto importando una tabella ma ha delle caselle di testo con degli a capo e questo fa si che mi venga importata sballata perchè considera l'a capo come una nuova riga.
QUando esporto il file excel in CSV mi permette di scegliere oltre al tabulatore, un carattere per delimitare le caselle di testo, penso ci sia anche unmodo in labview per fare l'inverso.
Nelle funzioni legato agli spreadsheet ho trovato solo i caratteri delimitatori dei campi.
qualche idea?
----------------------------------------
AUTORE: 10969
DATA :18/11/2014 - 17:01:32
----------------------------------------
Una soluzione potrebbe essere far incrementare la riga in cui riscrive l'intero valore, solo quando il numero di apici letto è pari. Brevemente:
-Legge la prima riga e trova il primo apice (match in stringa) e nel frattempo lo riscrive.
-Se gli apici sono pari allora vuol dire che la riga letta è completa altrimenti
-Legge seconda riga e verifica
..e così via.
Questa è solo una possibile soluzione che mi è venuta.
----------------------------------------
AUTORE: 482
DATA :19/11/2014 - 06:58:50
----------------------------------------
quindi fare una lettura manuale di tutto il file campo per campo..mmhh...l'avevo già valutata ma me la tengo come ultima opzione. Mi sembra strano che non esista qualcosa di già pronto...speriamo
----------------------------------------
AUTORE: 10969
DATA :21/11/2014 - 12:43:55
----------------------------------------
Ma gli apici delimitano le tue caselle di testo di singole parole? Tipo:
[b:2kljtp5u]'pippo'
'wor
ld'
'ciao'
'he
llo'[/b:2kljtp5u]
perchè se così fosse, puoi esportare dal csv imponendo un tab come delimitatore, invece degli apici.
In questo modo dal file di testo puoi direttamente [i:2kljtp5u]trova e sostituisci[/i:2kljtp5u] in maniera veloce, ogni "a capo" con [i:2kljtp5u]vuoto[/i:2kljtp5u].
Alla fine ti dovresti trovare ogni a capo eliminato e quindi le parole unificate, mentre i tab li ritrovi come delimitatori tra una parola e l'altra.
Non so se mi sono spiegato a dovere
----------------------------------------
AUTORE: 10969
DATA :21/11/2014 - 12:49:02
----------------------------------------
..continua.
Dopo la sostituzione del "a capo" con niente ti troverai:
[b:89pxtt0q]pippo world ciao hello[/b:89pxtt0q]
Puoi successivamente fare una seconda sostituzione sempre con [i:89pxtt0q]trova e sostituisci[/i:89pxtt0q]
di ogni tab con un "a capo".
Può sembrare una soluzione un po' grezza, ma in fondo velocizzi il tutto lavorando semplicemente sul file di testo.
Oppure decidi di fare lo stesso lavoro tramite LabVIEW e riscrivere lo stesso file di testo in maniera ordinata, per poi riutilizzarlo per il tuo scopo.
----------------------------------------
AUTORE: 43
DATA :21/11/2014 - 16:47:28
----------------------------------------
[quote="gepponline":1bbeaugu]...ma ciao!
esiste un modo semplice pe rleggere dei file tabulati e specificare che se c'e' l'apice deve considerare il testo come unico elemento?
Sto importando una tabella ma ha delle caselle di testo con degli a capo e questo fa si che mi venga importata sballata perchè considera l'a capo come una nuova riga.
QUando esporto il file excel in CSV mi permette di scegliere oltre al tabulatore, un carattere per delimitare le caselle di testo, penso ci sia anche unmodo in labview per fare l'inverso.
Nelle funzioni legato agli spreadsheet ho trovato solo i caratteri delimitatori dei campi.
qualche idea?[/quote:1bbeaugu]
ciao Geppo
ho fatto qualche esperimento con MSExcel.
Ho notato che MSExcel mette i doppi apici all'inizio e fine del testo ogni volta che nel testo stesso sono presenti dei caratteri separatori.
Nel mio caso il separatore di fine riga è la coppia di \
\
(CR & LF), il separatore dei campi è la virgola (,) e il carattere di inizio/fine stringa è il doppio apice (").
Quindi.... questo è il VI definitivo per leggere un file CSV.
[attachment=0:1bbeaugu]realcsv.vi[/attachment:1bbeaugu]
buon we
bye
----------------------------------------
AUTORE: 482
DATA :24/11/2014 - 07:11:57
----------------------------------------
versione 2013. Purtroppo mi son fermato alla 2012 per il momento
faview, tutte le tue ipotesi cadono
i miei campi con l'a capo sono intere frasi.
Tipo:
"sono andato
al mare"
probabilmente chi aveva fatto il file l'aveva fatto per far stare il testo in una certa larghezza.
Il problema potrebbe nascere se nel file di testo dovessi avere a sua volta degli apici.
ad esempio:
"filiera da 2" 1/2
sulfurizzata"
aspetto di vedere il vi di paracarro.
----------------------------------------
AUTORE: 43
DATA :24/11/2014 - 08:05:46
----------------------------------------
[quote="gepponline":2sl999uf]versione 2013. Purtroppo mi son fermato alla 2012 per il momento
faview, tutte le tue ipotesi cadono
i miei campi con l'a capo sono intere frasi.
Tipo:
"sono andato
al mare"
probabilmente chi aveva fatto il file l'aveva fatto per far stare il testo in una certa larghezza.
Il problema potrebbe nascere se nel file di testo dovessi avere a sua volta degli apici.
ad esempio:
"filiera da 2" 1/2
sulfurizzata"
aspetto di vedere il vi di paracarro.[/quote:2sl999uf]
i doppi apici dentro la stringa vengono raddoppiati... quindi, nel file dovresti trovare
"filiera da 2"" 1/2
sulfurizzata"
[attachment=0:2sl999uf]realcsv.vi[/attachment:2sl999uf]
bye
----------------------------------------
AUTORE: 482
DATA :25/11/2014 - 07:31:54
----------------------------------------
Purtroppo non funziona.
Ho esportato il mio file in csv, ma come sospettavo, il carattere a capo e il carattere di terminazione linea è lo stesso e cioè \
non è differenziato come nel tuo esempio
Servirebbe una funzione che gli dica che se lo \
è all'interno di due apici lo deve ignorare o sostituire con qualcosa d'altro.
----------------------------------------
AUTORE: 43
DATA :25/11/2014 - 08:15:00
----------------------------------------
[quote="gepponline":z48xuywh]Purtroppo non funziona.
Ho esportato il mio file in csv, ma come sospettavo, il carattere a capo e il carattere di terminazione linea è lo stesso e cioè \
non è differenziato come nel tuo esempio
Servirebbe una funzione che gli dica che se lo \
è all'interno di due apici lo deve ignorare o sostituire con qualcosa d'altro.[/quote:z48xuywh]
Sostituisci il fine linea \
\
con il solo \
.
In alternativa se nn vuoi rendere pubblico il file csv, mandamelo in una email così capisco di cosa si tratta.
Tutti i file di testo in ambiente M$DOS/M$Windows sono terminati con CR seguito da LF (Unix/Linux solo LF, MAC solo CR). Nel mio esempio la funzione di ricerca token cerca la coppia di caratteri. Se il tuo file proviene da ambiente LINUX dove il terminatore è solo LF, metti \
al posto di \
\
: attenzione però che a quel punto \
nn è + un separatore...
----------------------------------------
AUTORE: 482
DATA :25/11/2014 - 09:01:59
----------------------------------------
...trovato l'inghippo! grazie del supporto.
Ingenuamente, per comodità mia copiavo e incollavo il testo contenuto nel file in un controllo di tipo stringa.
L'operazione di copy&paste modificava i caratteri speciali.
Leggendo direttamente il file, il problema non si presneta piu'
----------------------------------------
================================================================================
controllo generatore d onda e oscilloscopio
================================================================================
AUTORE: 11008
DATA :21/11/2014 - 17:25:57
----------------------------------------
Ciao a tutti, sono nuovo del forum perciò mi presento, mi chiamo Andrea ed all università ho iniziato da poco un corso che tratta labview. Recentemente abbiamo fatto un esercitazione in cui dovevo gestire oscilloscopio e generatore di segnali dal pc; ci sono riuscito ma vorrei che il graph che acquisisce il segnale dall oscilloscopio lo faccia in continuazione, perciò credo di non poterlo fare con una macchina a stati....voi avete qualche consiglio? Premetto che sto scrivendo dal cellulare, magari più tardi vi darò più dettagli sul progetto.
----------------------------------------
AUTORE: 645
DATA :22/11/2014 - 01:23:43
----------------------------------------
Ciao, aspettando ulteriori dettagli mi permetto di precisare che se dall'oscilloscopio acquisisci pacchetti di dati è corretto parlare di graph altrimenti per vedere un valore alla volta devi usare i chart.
----------------------------------------
AUTORE: 11008
DATA :22/11/2014 - 17:43:44
----------------------------------------
Grazie per la risposta tempestiva. Purtroppo ho sulla penna il progetto in 2014 ma sul mio pc ho la versione 2013 e non posso aprirlo se non all'università. In ogni caso la struttura era cosi impostata: ci sono due subVI con i rispettivi clustern, uno del generatore di segnale e uno dell oscilloscopio; questi due subVI vengono successivamente usati nel main e qui devo riuscire a far cambiare il graph che è presente nell'oscilloscopio ogni volta che tocco o l'oscilloscopio o il gen di sengale ed inoltre,(cosa che non sono riuscito a fare), devo fare in modo che il segnale sie preso continuamente dall'oscilloscopio, non solo una volta quando modifico i valori, cioè l'acquisizione deve essere continua. La cosa piu intuitiva sarebbe mettere un loop, ma cosi facendo funziona solo una volta perchè poi non esce piu dal loop. Sono riuscito a creare una struttura che stampa un'immagine fissa, quindi non continua, con una macchina a stati, come faccio adesso a renderla continua?
----------------------------------------
AUTORE: 11008
DATA :22/11/2014 - 17:53:27
----------------------------------------
Scusate avevo la versione 2013 ma non la avevo vista, ecco le immagini del progetto:
<a href="http://it.tinypic.com?ref=25s7es5" target="_blank"><img src="http://i59.tinypic.com/25s7es5.png" border="0" alt="Image and video hosting by TinyPic"></a>
----------------------------------------
AUTORE: 11008
DATA :22/11/2014 - 17:58:37
----------------------------------------
[img:2ao6hw42]http://i57.tinypic.com/4v0hdt.png[/img:2ao6hw42]
[img:2ao6hw42]http://i62.tinypic.com/nmj67t.png[/img:2ao6hw42]
[img:2ao6hw42]http://i59.tinypic.com/25s7es5.jpg[/img:2ao6hw42]
[img:2ao6hw42]http://i60.tinypic.com/icppa8.png[/img:2ao6hw42]
----------------------------------------
AUTORE: 645
DATA :22/11/2014 - 18:51:09
----------------------------------------
Allega le immagini ai post, così come le hai messe non si riescono a visualizzare completamente.
Se in un ciclo inserisci sia il generatore che l'oscilloscopio e il relativo grafico hai un'acquisizione continua, nel senso che avendo tutti i blocchi all'interno del ciclo ogni modifica viene presa in cosiderazione dal VI.
----------------------------------------
AUTORE: 11008
DATA :23/11/2014 - 08:32:51
----------------------------------------
ecco le immagini:
http://postimg.org/image/9ktntx9w7/
http://postimg.org/image/3xxawg7dj/
http://postimg.org/image/szzu9adsn/
http://postimg.org/image/q76mp9dg7/
In ogni caso, se inserisco nello stesso event i due subVI in ogni caso dovrei mettere un loop all interno di questo perchè ci sia una acquisizione continua, e in questo caso rimarrei "intrappolato" nel loop.
----------------------------------------
AUTORE: 482
DATA :24/11/2014 - 07:17:00
----------------------------------------
Credo ci sia un problema di fondo che va corretto subito.
Ho intravisto un event case all'interno della macchina a stati.
Levalo subito.
Una struttura event va gestita in un loop parallelo senno' blocca l'esecuzione di tutto.
Tieni un loop con l'event case che gestisce gli interventi dell'utente (eventi) e un loop con la macchina a stati che gira senza interruzioni.
----------------------------------------
AUTORE: 11008
DATA :24/11/2014 - 19:26:49
----------------------------------------
Grazie mille per le risposte tempestive!!
----------------------------------------
================================================================================
Data Dashboard e Android 5.0
================================================================================
AUTORE: 11004
DATA :25/11/2014 - 13:21:34
----------------------------------------
Da quando ho aggiornato il mio Nexus 7 ad Android 5.0 / Lollipop, il mio data dashboard crasha all'avvio.
Ho provato a disinstallare e reinstallare, ma ora si blocca sulla pagina di accettazione della licenza. In realtà appare solo una pagina bianca.
C'è qualche soluzione?
----------------------------------------
AUTORE: 43
DATA :26/11/2014 - 08:35:11
----------------------------------------
[quote="fisicozzi":5t6cei6s]Da quando ho aggiornato il mio Nexus 7 ad Android 5.0 / Lollipop, il mio data dashboard crasha all'avvio.
Ho provato a disinstallare e reinstallare, ma ora si blocca sulla pagina di accettazione della licenza. In realtà appare solo una pagina bianca.
C'è qualche soluzione?[/quote:5t6cei6s]
ciao
mi sa che 6 troppo avanti!!!
immagino che se posti in questo forum, avrai cercato info altrove senza successo...
io nn possiedo tablet e quindi nn posso sincerarmi del problema di persona.
Posso solo cercare in internet.
Infatti nn ho trovato nulla.
Ti consiglio di postare un messaggio in questo forum/community NI se nn lo hai già fatto.
https://decibel.ni.com/content/groups/s ... ns&start=0
bye
----------------------------------------
AUTORE: 11004
DATA :27/11/2014 - 11:09:50
----------------------------------------
In realtà da ieri è disponibile una nuova versione di DataDashboard che ha risolto quei bug di cui parlavo. Un plauso agli sviluppatori National.
----------------------------------------
================================================================================
Convoluzione
================================================================================
AUTORE: 11010
DATA :25/11/2014 - 16:04:02
----------------------------------------
Salve, io devo dare una convoluzione tra due segnali audio e poi l'uscita della convoluzione la devo elaborare con un blocco FS=Fluctuation Strength, ma in questo passaggio qualcosa non va credo sia un problema di conversione di dati, ma non capisco proprio quale sia l'errore. Premetto che un segnale arriva dalla scheda DAQ NI USB-4432 e l'altro segnale arriva da un file audio.wav. Qualchuno mi puo dire dove sbaglio? in allegato mando due immagini con lo schema perchè altrimenti era troppo grande da mandare il file.vi grazie Mille
Elisa Pozzati
----------------------------------------
AUTORE: 43
DATA :26/11/2014 - 08:49:56
----------------------------------------
[quote="Elisa87":2ewww4k0]Salve, io devo dare una convoluzione tra due segnali audio e poi l'uscita della convoluzione la devo elaborare con un blocco FS=Fluctuation Strength, ma in questo passaggio qualcosa non va credo sia un problema di conversione di dati, ma non capisco proprio quale sia l'errore. Premetto che un segnale arriva dalla scheda DAQ NI USB-4432 e l'altro segnale arriva da un file audio.wav. Qualchuno mi puo dire dove sbaglio? in allegato mando due immagini con lo schema perchè altrimenti era troppo grande da mandare il file.vi grazie Mille
Elisa Pozzati[/quote:2ewww4k0]
Ciao Elisa.
Purtroppo, x le info che scrivi sono insufficienti , a mio parere, x poter ricevere un aiuto in merito.
Tra l'altro mi sembra tu sia già a buon punto con il debug, dato che ritieni possa essere un problema di conversione dati.
Dato che il problema è di calcolo, ti consiglierei di confezionare un VI scarno (ridotto all'osso), enucleando la sola parte di codicce sospetta, salvandola come SubVI se nn lo è già...
Nei controlli di input puoi memorizzare i dati acquisiti tramite NIDAQ e/o caricati da .wav (oppure il risultato della convoluzione se è corretto) utilizzando "Save current values as default".
in questo modo potrai debuggare al meglio il tuo codice tralasciando la parte di acqusizione e letura file o calcolo convoluzione che ritieni funzionanti.
in questo caso potresti debuggare il tuo codice anche su un PC nn dotato di schede di acquisizione e senza file wav a corredo.
bye
----------------------------------------
AUTORE: 11010
DATA :26/11/2014 - 15:00:12
----------------------------------------
Purtroppo non posso salvare i dati perche devo fare un elaborazione in tempo reale. Il problema secondo me sta proprio nel blocco della convoluzione perche tutto quello che viene prima funziona e se scolego la convoluzione dal blocco FS e attacco questèultimo ad un altro segnale tutto il resto funziona quindi non riesco a capire dove sia il problema.
Purtroppo devo anche lasciare collegata la scheda DAQ perche è collegata al segnale audio che mi ho in ingresso essendo un segnale in tempo reale, ma non credo sa quello il problema visto che tutto il resto funziona
Elisa Pozzati
----------------------------------------
AUTORE: 43
DATA :26/11/2014 - 17:04:08
----------------------------------------
[quote="Elisa87":20dv7zbp]Purtroppo non posso salvare i dati perche devo fare un elaborazione in tempo reale. Il problema secondo me sta proprio nel blocco della convoluzione perche tutto quello che viene prima funziona e se scolego la convoluzione dal blocco FS e attacco questèultimo ad un altro segnale tutto il resto funziona quindi non riesco a capire dove sia il problema.
Purtroppo devo anche lasciare collegata la scheda DAQ perche è collegata al segnale audio che mi ho in ingresso essendo un segnale in tempo reale, ma non credo sa quello il problema visto che tutto il resto funziona
Elisa Pozzati[/quote:20dv7zbp]
Ma nooooo!!
Se il problema è legato alla velocità di esecuzione del codice posso essere daccordo con te.
Ma se il problema è legato al calcolo....beh!! basta "rallentare tutto" per osservare meglio i dettagli : è come lo "slow motion replay". Riavvolgi il nastro ed esegui il tutto step by step...
Comincia ad utilizzare gli strumenti di debug di LabVIEW: Probe, breakpoint e breakpoint condizionale.
Se nn hai troppo parallelisno (mi sembra sia il caso tuo), puoi provare ad eseguire il codice step by step quando serve.
E poi puoi sempre simulare le schede di acquisizione pescando i dati già acqusiti da file, avendo cura di salvarli prima.
bye
----------------------------------------
AUTORE: 482
DATA :27/11/2014 - 07:23:39
----------------------------------------
Se mandi l'output dell'acquisizione ad un terminale alla fine del ciclo con un indexing, e poi ad un indicatore, ti puoi creare da quello un controllo che contiene una serie di valori acquisiti.
Quell'indicatore poi puoi usarlo come Input in un vi di debug senza ricorrere ogni volta all'acquisizione in tempo reale.
----------------------------------------
AUTORE: 645
DATA :27/11/2014 - 21:33:56
----------------------------------------
Quando dici "non va" cosa intendi esattamente?
Che non riesci a far partire il VI o che saltano fuori dati strani?
Che cosa ti fa dire che potrebbe essere un problema di conversione? Te lo chiedo per ragionarci su.
----------------------------------------
================================================================================
TESTSTAND non riconosce il mio Development System
================================================================================
AUTORE: 11004
DATA :27/11/2014 - 11:19:02
----------------------------------------
Uso da un pò teststand con Labview 2012. Ieri ho installato per prova LV 2014, ma stamattina l'ho disistallato.
Dopodichè TestStand ha perso il riferimento con il Development System 2012.
Non riesco a trovare il modo per dire a TestStand che anche se ho disinstallato la versione 2014, ho ancora sulla mia macchina installata la versione 2013.
Grazie per l'aiuto
----------------------------------------
AUTORE: 43
DATA :27/11/2014 - 12:37:01
----------------------------------------
ciao.
il problema è chiaro, la soluzione boh!
io proverei a "riparare" Testsstand
Control Panel --> Programs and features -> National Indtruments Software
Poi clicco su
TestStand ...
Infine
Repair
nn garantisco niente...
bye
----------------------------------------
================================================================================
Sommatoria
================================================================================
AUTORE: 11008
DATA :28/11/2014 - 22:16:17
----------------------------------------
Non riesco a realizzare una sommatoria con labview.... so già che sara una cosa semplicissima ma ho qualche problema, innanzitutto ho un array di cui devo sommare l'elemento 1+(1+2)+(1+2+3)+(1+2+3+4)+----
i numeri che ho inserito sono gli elementi nell array, non numeri dentro l array stesso. Ho pensato di fare un quello che si vede in figura, solo che in questo modo passo tutto l'array e viene sommato 5 volte tutto questo, non un elemento alla volta:
[url=http://postimg.org/image/mh5y1eonl/:1vrr4q90][img:1vrr4q90]http://s8.postimg.org/mh5y1eonl/Cattura.jpg[/img:1vrr4q90][/url:1vrr4q90]
Come posso fare?
----------------------------------------
AUTORE: 11008
DATA :29/11/2014 - 07:59:53
----------------------------------------
Per capirci meglio, devo sviluppare la sommatoria di pagina 8 di questo pdf che vi passo, quella di k-1 per adesso, poi dovro metterla dentro al cos:
http://www.filedropper.com/caratterizzazioneadc20132014
----------------------------------------
AUTORE: 645
DATA :29/11/2014 - 16:14:57
----------------------------------------
Prova così. Il primo pezzo del VI crea un array (e puoi sostituire quello che vuoi e aggiungere gli eventuali termini da moltiplicare). Il secondo pezzo del VI crea la sommatoria, guarda se ho interpretato giusto.
----------------------------------------
AUTORE: 11008
DATA :29/11/2014 - 17:40:36
----------------------------------------
Perfetto
grazie mille!!!
----------------------------------------
AUTORE: 11008
DATA :29/11/2014 - 17:49:02
----------------------------------------
Io avevo trovato questa soluzione un po piu complicata:
[url=http://postimg.org/image/6tmm6p3zd/:6uwr0css][img:6uwr0css]http://s4.postimg.org/6tmm6p3zd/Cattura.jpg[/img:6uwr0css][/url:6uwr0css]
----------------------------------------
AUTORE: 11008
DATA :29/11/2014 - 17:59:02
----------------------------------------
Ho provato a implementare comunque la tua soluzione, ma non mi fa collegare gli array indicator, mi da le linee tratteggiare, inoltre non riesco ad aprire il tuo VI perchè probabilmente salvato in 2014, io ho la versione 2013.
----------------------------------------
AUTORE: 11008
DATA :29/11/2014 - 18:06:10
----------------------------------------
[quote="andrea080690":qnwwso7r]Ho provato a implementare comunque la tua soluzione, ma non mi fa collegare gli array indicator, mi da le linee tratteggiare, inoltre non riesco ad aprire il tuo VI perchè probabilmente salvato in 2014, io ho la versione 2013.[/quote:qnwwso7r]
Risolto il problema, sono riuscito a implementare anche la tua soluzione. Grazie ancora!
----------------------------------------
================================================================================
subvi di un vi clone/reentrant sono cloni?
================================================================================
AUTORE: 3428
DATA :02/12/2014 - 05:32:49
----------------------------------------
Salve vorrei chiedervi se un vi impostato clone imposta automaticamente il reentrant a tutti i subvi che contiene.
Esempio:
ho un vi X che esegue delle operazioni poi scrive su file con un vi Y in base agli ingressi. Il vi X è clone ma Y non lo è. Tutti i cloni attenderanno il loro turno per utilizzare Y o anche Y sarà clonato di conseguenza automaticamente a runtime?
Grazie
----------------------------------------
AUTORE: 43
DATA :02/12/2014 - 08:22:20
----------------------------------------
[quote="renaso":1mocmuuj]Salve vorrei chiedervi se un vi impostato clone imposta automaticamente il reentrant a tutti i subvi che contiene.
Esempio:
ho un vi X che esegue delle operazioni poi scrive su file con un vi Y in base agli ingressi. Il vi X è clone ma Y non lo è. Tutti i cloni attenderanno il loro turno per utilizzare Y o anche Y sarà clonato di conseguenza automaticamente a runtime?
Grazie[/quote:1mocmuuj]
A me nn risulta.
Dentro un VI rientrante è possibile chiamare VI nn rientranti. Mi sembra pure giusto e necessario. Per es., se ho una risorsa condivisa fra VI clone, potrebbe essere utile accedervi attraverso un VI nn rientrante che "semafora" la risorsa.
Dipende da quello che si vuole fare.
bye
----------------------------------------
AUTORE: 3428
DATA :02/12/2014 - 08:31:09
----------------------------------------
[quote="paracarro":ak29l9sb][quote="renaso":ak29l9sb]Salve vorrei chiedervi se un vi impostato clone imposta automaticamente il reentrant a tutti i subvi che contiene.
Esempio:
ho un vi X che esegue delle operazioni poi scrive su file con un vi Y in base agli ingressi. Il vi X è clone ma Y non lo è. Tutti i cloni attenderanno il loro turno per utilizzare Y o anche Y sarà clonato di conseguenza automaticamente a runtime?
Grazie[/quote:ak29l9sb]
A me nn risulta.
Dentro un VI rientrante è possibile chiamare VI nn rientranti. Mi sembra pure giusto e necessario. Per es., se ho una risorsa condivisa fra VI clone, potrebbe essere utile accedervi attraverso un VI nn rientrante che "semafora" la risorsa.
Dipende da quello che si vuole fare.
bye[/quote:ak29l9sb]
Si si ma infatti la mia era solamente una curiosità per sapere se devo impostare rientranti tutti i subvi o labview lo faceva da solo automaticamente..
Grazie paracarro
----------------------------------------
AUTORE: 43
DATA :02/12/2014 - 13:00:56
----------------------------------------
Curiosità x curiosità...
E' facilmente dimostrabile che la funzione accessibile da menu:
Edit --> Create SubVI
che è disponibile quando c'è qualcosa di selezionato nel diagramma (anche un solo spezzone di filo), crea in modo automatico un SubVI che eredita le proprietà del VI "genitore", in particolare quelle di "Execution".
Per cui, se si crea un SubVI dentro un VI rientrante con quella funzione, automaticamente , di default il subVI sarà rientrante.
Penso che tu volessi dire quello che ho scritto in questo post, ma nn lo avevo capito
bye
----------------------------------------
================================================================================
Digital waveforms campioni e linee
================================================================================
AUTORE: 3428
DATA :03/12/2014 - 03:55:02
----------------------------------------
Buongiorno,
so già che per un nuovo progetto andrò ad utilizzare un PXI e andrò ad acquisire delle linee digitali.
Mi sono costruito questo vi di esempio per graficare quello che acquisirò. Quello che mi chiedo è come posso fare per avere sull'asse X l'indice dei campioni invece che il tempo?
Scusate se la domanda è banale ma è la prima volta che utilizzo questo tipo di grafico
Grazie
----------------------------------------
AUTORE: 3428
DATA :03/12/2014 - 03:56:03
----------------------------------------
L'allegato...
----------------------------------------
AUTORE: 482
DATA :03/12/2014 - 07:34:42
----------------------------------------
Hai provato cambiando la modalità del subVI in Binary U8 todigital table?
----------------------------------------
AUTORE: 3428
DATA :03/12/2014 - 08:51:36
----------------------------------------
ahhaah nulla di più semplice..
Grazie
----------------------------------------
================================================================================
Configurazione DAQ Assistant PT100
================================================================================
AUTORE: 11009
DATA :04/12/2014 - 10:45:59
----------------------------------------
Ciao,
come da titolo, sto cercando di capire come configurare il DAQ Assistant per eseguire la lettura della temperatura usando una PT100.
http://uk.rs-online.com/web/p/platinum- ... s/3629935/
Questa è la PT100 in questione, e ho allegato lo screenshot del setup. Non riesco a capire cosa inserire nelle caselle "RTD type" "Iex Source" e "Iex Value".
Grazie
----------------------------------------
AUTORE: 11009
DATA :04/12/2014 - 10:46:29
----------------------------------------
[quote="Exelion":3ua18k3m]Ciao,
come da titolo, sto cercando di configurare il DAQ Assistant per eseguire la lettura della temperatura usando una PT100.
http://uk.rs-online.com/web/p/platinum- ... s/3629935/
Questa è la PT100 in questione, e ho allegato lo screenshot del setup. Non riesco a capire cosa inserire nelle caselle "RTD type" "Iex Source" e "Iex Value".
Grazie[/quote:3ua18k3m]
----------------------------------------
AUTORE: 11014
DATA :11/12/2014 - 10:08:02
----------------------------------------
Ho esattamente lo stesso problema di cui sopra collega, per favore aiutateci.
----------------------------------------
AUTORE: 301
DATA :11/12/2014 - 12:39:48
----------------------------------------
La termoresistenza, per essere letta, necessita di una corrente che la attraversi.
Il setup ti richiede la fonte della corrente (interna all'acquisitore stesso o esterna), ed il valore della corrente che andrai ad applicare (credo solo nel caso di fonte esterna), in modo da poter fare le giuste conversioni (conversione in tensione con la legge di ohm).
Aris
----------------------------------------
AUTORE: 11009
DATA :11/12/2014 - 23:23:42
----------------------------------------
Ok...allora io devo utilizzare una fonte di corrente esterna (la mia scheda non ne fornisce una interna). Che tipo di alimentatore devo usare? In laboratorio abbiamo un generatore di segnali e un alimentatore di tensione (con cui alimentiamo diversi sensori a 5Vdc). Può fare al caso mio?
Grazie
----------------------------------------
AUTORE: 301
DATA :11/12/2014 - 23:27:02
----------------------------------------
Direi di si....
Controlla solo la corrente tipica richiesta per il tutuo tipo di sensore.
Aris
----------------------------------------
AUTORE: 11009
DATA :12/12/2014 - 19:19:20
----------------------------------------
uhm, non riesco a trovare il dato da nessuna parte...il datasheet è quello linkato nel primo post. Suggerimenti?
In ogni caso se uso l'alimentatore quale tensione devo impostare? Anche questo dato non riesco a trovarlo.
Quello che mi stupisco che alla fine si tratta di una banale termoresistenza pt100...voglio dire, non credevo fosse un sensore così complicato da usare
eppure è quello che mi sta dando più rogne
----------------------------------------
AUTORE: 724
DATA :15/12/2014 - 09:11:28
----------------------------------------
Per poter usare la pt100 come sensore va creato intorno un minimo di circuito di condizionamento. In rete trovi molti esempi. La corrente che deve passare per la pt100 deve comunque essere piccola (mA) altrimenti scalda e falsi la misura di temperatura. In sostanza
devi sapere la corrente che circola nella pt100 e la tensione ai suoi capi così da calcolarne la resistenza e quindi la temperatura.
ciao,
----------------------------------------
================================================================================
Acquisizione da seriale e utilizzo event case
================================================================================
AUTORE: 10958
DATA :09/12/2014 - 09:37:48
----------------------------------------
Salve a tutti,
avrei bisogno di un vostro supporto, se possibile. Fino ad ora son riuscito ad effettuare alcune acquisizioni tramite USB senza la gestione dell'Event Case.
Ora, però, avrei la necessità di utilizzarlo per semplificare di molto la VI complessiva che devo realizzare.
Il problema che riscontro, purtroppo, è che il valore di "read buffer 2" non si aggiorna in modo costante ma visualizzo solamente un dato quando premo su Boolean. Vorrei che il dato si aggiorni in maniera continua e non solo una volta. Quali sono gli errori che commetto?
Grazie mille in anticipo!
----------------------------------------
AUTORE: 43
DATA :09/12/2014 - 13:18:28
----------------------------------------
ciao
riesco a capire quasi nulla ingrandendo l'immagine xkè è troppo sgranata, ma penso di averne intuito la sostanza:
- n. 1 mega-loopone (while) che racchiude il tutto e che termina, presumo, con la pressione di un tasto (booleano che esce dall'event case)
- n. 1 gestione di comunicazione seriale (la tua USB) con tanto di inizializzazione parametri seriali, Open, Read/Write e Close finale
- n.1 gestione eventi che gira parallela nello stesso mega-loopone alla gestione della seriale. Sembra che in questa gestione eventi nn sia gestito il timeout.
Il primo evidente problema è che l'event case è una struttura in attesa perenne che ci sia un evento di interfaccia. Nn gestendo un "timeout x questa attesa la funzione ti blocca tutta l'esecuzione del tuo loopone.
La cosa migliore sarebbe separare le due gestioni (eventi e seriale) in 2 loop paralleli, ma mi rendo conto che nn avendo capito cos'è una gestione eventi risulterebbe difficile gestire la sincronizzazione, x quanto semplice, di due processi concorrenti.
Quindi la soluzione + semplice e collegare in alto a sx dell'event case un valore di 500msec e aggiungere l'evento "Timeout" lasciandone vuoto il contenuto.
Dovrebbe funzionare il tutto
----------------------------------------
================================================================================
Web app con più client
================================================================================
AUTORE: 482
DATA :10/12/2014 - 11:20:48
----------------------------------------
.. Ma ciao! Ho appena sviluppato un applicazione per interrogare e gestire un db Oracle. Ora siccome ce l'avranno bisogno diversi utenti vorrei capire se c'è modo di trasformare il tutto in web app o qualcosa di simile. In passato ho usato il web server di labview ma permetteva l'accesso in controllo di un solo client alla volta. È ancora così? In alternativa cosa posso fare? Mi pare di aver visto un toolkit nello store che permette di trasformare tutto in web app. Funziona?.. Mi pare però costasse mica male. Suggerimenti?
----------------------------------------
AUTORE: 482
DATA :10/12/2014 - 13:20:28
----------------------------------------
AGGIORNAMENTO:
Ho trovato due toolkit nello store:
Labsocket
WebPager
Al momento ho optato per il secondo che costa eventualmente 1000 euro in meno dell'altro ed è compatibile con labview 2012 che ho attualmente installato. (l'altro vuole un 2013 o superiore..che c el'ho ma non ho voglia di installare)
Provo l'evaluation e vi faccio sapere
----------------------------------------
================================================================================
Tabcontrol nomi delle pagine
================================================================================
AUTORE: 238
DATA :15/12/2014 - 16:04:30
----------------------------------------
Qualcuno sa dirmi come si può modificare da programma i nomi delle pagine dei Tabcontrol
----------------------------------------
AUTORE: 482
DATA :16/12/2014 - 07:31:10
----------------------------------------
Non è cosi' immediata come procedura.
Dall'elenco delle pagine tiri fuori la pagina che ti interessa, poi rendi indipendente la Caption dalla Label e poi modifichi la caption.
Credoc he una volta resa indipendente la prima volta, non sia necessario ripetere quel passaggio.
Ti allego uno snippet. Se lo dragghi nel diagramma ti ricrea il codice.
----------------------------------------
AUTORE: 43
DATA :16/12/2014 - 08:23:41
----------------------------------------
grazie Geppo
Volevo aggiungere una curiosità
Parlando di "modifiche da programma" vorrei sottolineare che di questi testi (cioè i nomi dei tab) nn è possibile cambiare programmaticamente FONT.
Il font può essere cambiato solo manualmente da Front Panel.
bye.
----------------------------------------
================================================================================
Indicatore/Controllo nella stessa casella
================================================================================
AUTORE: 11007
DATA :20/12/2014 - 15:08:31
----------------------------------------
Buongiorno a tutti,
vorrei creare un vi che mostra dei valori e nello stesso tempo avere la possibilità di modificarli. Si può fare qualcosa che si comporta come indicatore e controllo allo stesso tempo???? In maniera da non dovere mettere un indicatore per visualizzare i dati e un controllo per modificarli.
Andrebbe bene anche una specie di "tabella" per la mia applicazione.
Aspetto vostri consigli,
Grazie
----------------------------------------
AUTORE: 43
DATA :22/12/2014 - 08:46:27
----------------------------------------
[quote="Virtual Gamer":2x5bwav0]Buongiorno a tutti,
vorrei creare un vi che mostra dei valori e nello stesso tempo avere la possibilità di modificarli. Si può fare qualcosa che si comporta come indicatore e controllo allo stesso tempo???? In maniera da non dovere mettere un indicatore per visualizzare i dati e un controllo per modificarli.
Andrebbe bene anche una specie di "tabella" per la mia applicazione.
Aspetto vostri consigli,
Grazie[/quote:2x5bwav0]
ciao.
Diciamo subito che quello che vorresti si può già fare.
Basta inserire un "Controllo" (cioè nn un indicatore).
Poi da diagramma cliccare con trasto dx del mouse sul controllo e nel menu che appare selezionare:
create --> Local Variable.
Verrà creata una variale locale del controllo che è di tipo indicatore.
Però...
Dipende sempre da quello che si vuole ottenere.
Se si tratta di un "Editing" statico potrebbe andare bene.
Mi spiego meglio: se mentre si modifica manualmente la tabella , questa nn varia automaticamente , allora un cotrollo che è anche indicatore può avere senso. Altrimenti meglio avere un indicatore tabella e a parte un controllo per la modifica manuale, magari grande come una sola cella della tabella.
bye buon natale
----------------------------------------
AUTORE: 1078
DATA :23/12/2014 - 09:42:35
----------------------------------------
Ciao Virtual Gamer,
Come sempre [b:3pyzm8bb][i:3pyzm8bb]@Paracarro[/i:3pyzm8bb][/b:3pyzm8bb] ha ragione. Secondo me però potresti fare qualcosa di più semplice usando le [b:3pyzm8bb]variabili locali[/b:3pyzm8bb] (quelle globali è meglio non usarle) e i [b:3pyzm8bb]property node[/b:3pyzm8bb] del controllo/indicatore che vuoi usare. Trovi un sacco di documentazione on line. Guardati in giro!
Buon Natale e buone feste.
----------------------------------------
AUTORE: 11007
DATA :27/12/2014 - 16:52:08
----------------------------------------
Grazie a tutti per le risposte,
appena avrò un pò di tempo farò qualche prova.
Buone feste!
----------------------------------------
================================================================================
Dimensioni immagine
================================================================================
AUTORE: 238
DATA :29/12/2014 - 10:55:14
----------------------------------------
devo modificare (stirare) un immagine (Jpg o BMP)da programma con fattori x & y non uguali (non Zoom)
Ho provato ad importare l´immagine su un indicatore Booleano pero le property sono solo in lettura!
----------------------------------------
AUTORE: 43
DATA :07/01/2015 - 15:41:50
----------------------------------------
[quote="Michele":8uv0xbkk]devo modificare (stirare) un immagine (Jpg o BMP)da programma con fattori x & y non uguali (non Zoom)
Ho provato ad importare l´immagine su un indicatore Booleano pero le property sono solo in lettura![/quote:8uv0xbkk]
Ci sei andato vicino!!!
Non devi usare le proprietà "Bounds.Area Height", "Bounds.Area Width",xkè sono readonly, ma "Button Size.Height" e "Button Size.Width".
bye
----------------------------------------
================================================================================
Problema Ethernet
================================================================================
AUTORE: 11020
DATA :29/12/2014 - 13:54:46
----------------------------------------
Un saluto a tutti.
Sono un novellinissimo di questo mondo.
Non ho mai usato labview e ora, per lavoro, dovrò iniziare ad utilizzarlo.
Parlando con il mio capo mi ha accennato che in futuro dovrò fare una cosa di questo tipo:
utilizzando labview che gira sul mio pc dovrò collegarmi via ethernet ad un plc B&R dal quale, via ethernet, dovrò andare a prendermi delle informazioni da salvare in un file.
Io labview non l'ho mai usato, ma ho provato a fare il semplice programmino del quale ora vi mando uno screenshot...
[img:d27yennx]http://i59.tinypic.com/2gsh62x.png[/img:d27yennx]
In pratica, mi sono inventato una simulazione client server sul mio pc.
Il server scriverà sulla linea ethernet il messaggio "Prova". Appena io clickerò il pulsante stop del while del server, partirà il mio client che andrà a leggere il messaggio scritto dal server.
Tralasciando quello che dovrò fare collegandomi al plc, perchè questo mio codice non funziona correttamente?!
Ogni tanto va, ogni tanto non va. Mi da l'errore 66. è capitato anche che mi uscisse l'errore 56.
Qualcono sa aiutarmi?!
Grazie mille a tutti.
E scusatemi per il disturbo.
----------------------------------------
AUTORE: 43
DATA :07/01/2015 - 16:14:18
----------------------------------------
Nn si può proprio dire che il Tuo VI "funzionicchia"...
C'è un enorme errore che ne pregiudica il funzionamento.
E' il filo blu che esce da un loop ed entra nell'altro loop...
in labview i fili determinano la sequenza di esecuzione delle funzioni.
- NON è possibile disegnare un filo in uscita da un blocchetto per farlo rientrare nel medesimo ne "direttamante" ne "indirettamante" (uscita di A in B. Uscita di B in C, uscita di C in A)
- se un filo unisse anche solo per attraversarle due strutture (loop, case o sequenza) ne determinerebbe la sequenza di esecuzione.
nel tuo caso i loop nn girano MAI in parallelo.
Potresti inserire nel Front panel 2 controlli uno in lettura ed uno in scrittura da usare separatamente nei 2 loop.
ti consiglio di visualizzare nel front Panel i contatori dei 2 loop
.
bye
----------------------------------------
================================================================================
Problema con inizializzazione cursore
================================================================================
AUTORE: 10987
DATA :31/12/2014 - 18:44:49
----------------------------------------
Buonasera a tutti e buona vigilia per il 2015.
Mi dispiace disturbare tutti voi ma avrei un problema per un progetto chemi è stato commissionato e che devo ultimare. In allegato ho inserito il file .vi che ho sviluppato per acquisire dei dati da due sensori e plottarli su un grafico. Mi è stato chiesto di eseguire alcune operazioni di processing su questi dati; su una di queste trovo difficoltà a relizzarla. Se date un'occhiata al front panel c'è un pulsante play e un pulsante pausa. Premendo questi due si comanda la "Registrazione dei dati". Il tutto funziona abbastanza bene, però mi è stato chiesto di inizializzare il cursone per ogni volta che tolgo la pausa. Ovvero, per iniziare la registrazione premo Play, e registru una prima serie di dati e premo pausa per bloccarla temporaneamente. Il cursore si posiziona sul primo dato raccolto. Quello che mi si chiede e di fare in modo che il cursore, quando ripremo pausa, si sposti automaticamenete sul primo dato della seconda raccolta di dati; o equivalentemente che il primo punto della seconda raccolta venga in qualche modo contrassegnato. E così dicendo per ogni volta che premo e ripremo pausa.
Detto ciò vi ringrazio per la pazienza e per la disponibilità mostrata e colgo l'occasione per porgere a tutti un felice inizio 2015. Buona serata.
----------------------------------------
AUTORE: 1078
DATA :12/01/2015 - 08:14:03
----------------------------------------
Ciao [b:27xtg5pd]@GlB90DS87[/b:27xtg5pd],
Non ho capito molto bene, quando parli di cursore intendi dire il cursore del grafico?
----------------------------------------