Forum Italiano sui Prodotti NI

annulla
Visualizzazione dei risultati per 
Cerca invece 
Intendevi dire: 

Passare da tempo a coordinate angolari

Buonasera,

 

mi scuso per il titolo del post ma non mi viene in mente nulla di migliore.

Vi espongo il mio problema,cui non riesco a trovare soluzione. Devo eseguire il post-process di un segnale prelevato da un motore e variabile nel tempo,ed il mio file è costituito da due colonne,una relativa appunto al tempo e l'altra al segnale in oggetto. Conosco gli istanti di tempo al quale l'albero si trova in una posizione precisa e la velocità di rotazione.Quello che vorrei fare è passare dalla coordinata tempo alla coordinata angolare, ma proprio non riesco a legare il tempo agli angoli facendo in  modo che questi varino in un range 0°/720° (o -360° / +360°).

In pratica sul mio waveform graph visualizzo la forma d'onda relativa al segnale,con inizio ad un tempo generico e fine ad un tempo generico,ma vorrei aggiungere una scala relativa alla posizione angolare.

Possibile legare in questo modo tempo e angoli?

grazie mille

 

Salvatore

0 Kudos
Messaggio 1 di 9
5.859Visualizzazioni

Ciao Salvatore,

se conosci la velocità di rotazione e la posizione iniziale, dal tempo riesci facilmente a ricavare la posizione angolare per ogni istante di tempo.

se vuoi poi visualizzare due assi X sul grafico, puoi cliccare con il tasto destro del mouse su un numero dell'asse x attuale e selezionare "Duplicate Scale".

Ciao!

 

Licia

0 Kudos
Messaggio 2 di 9
5.854Visualizzazioni

Ciao Licia,

 

grazie per la risposta. Anche a me l'unica idea che era venuta era quella di acquisire il primo valore corrispondente alla posizione nota fino al tempo corrispondente a due giri completi (i 720° di cui parlavo) ed aggiungere una ulteriore scala sul waveform (0/720° appunto). Purtroppo però la posizione nota varia a seconda dei dati che analizzo,quindi di volta in volta dovrei andare a vedere qual'è il tempo a cui la posizione è nota,inserirlo nel programma e da lì cominciare l'analisi del segnale. 

Io mi chiedevo se era possibile ricavare una vera e propria funzione matematica che legasse il tempo alla posizione angolare,in modo da non dover essere vincolato, dovrebbe quindi essere una funzione periodica.

Grazie per l'aiuto!

Salvatore

0 Kudos
Messaggio 3 di 9
5.850Visualizzazioni

Ciao Salvatore,

ma la velocità angolare è nota e costante? In tal caso, la relazione che lega tempo a posizione angolare è una semplice proporzione.

Ciao!

 

Licia

0 Kudos
Messaggio 4 di 9
5.847Visualizzazioni

Ciao Licia

 

cerco di spiegare più dettagliatamente il problema. Ho un motore che gira all'incirca a 1500 giri/min (la velocità non è esattamente costante,può variare di poco,ad esempio 1530-1470 rpm, ma io per semplificare la assumo costante) ed acquisisco un segnale con una frequenza di 204800Hz. Ho una serie di file contenenti ognuno circa 50 cicli motore e con la mia struttura event (quella dell'altro posto che ho scritto) leggo un numero di campioni pari ad un ciclo del motore (facendo i calcoli sono circa 16000 campioni), corrispondente a due giri dell'albero,quindi a 720°. Ho inoltre un altro file che mi riporta il tempo al quale inizia un ciclo,cioè il punto 0° per intenderci. Per cui se comincio la lettura del file esattamente da quel tempo e leggo i circa 16000 valori,aggiungendo semplicemente una scala ho risolto il problema. In questo modo però:

1. Devo modificare tutti i file da processare e fare in modo che inizino tutti al tempo relativo al punto 0°,che devo trovare di volta in volta nell'altro file (avevo pensato di scrivere una parte di codice che acquisisse come primo valore quello relativo al tempo a 0°, ma tale tempo come dicevo varia da file a file)

2. Se volessi prendere un numero di campioni minore per analizzare più dettagliatamente una parte di un ciclo,vado a perdere l'informazione relativa agli angoli.

Per questo motivo se trovassi la funzione che lega istante per istante tempo e posizione angolare (non velocità angolare) avrei risolto entrambi i problemi.

Non so se mi sono espresso bene,magari è una sciocchezza ma non riesco ad uscirmene.

Grazie ancora !

Salvatore

0 Kudos
Messaggio 5 di 9
5.843Visualizzazioni

Ciao Salvatore,

forse non mi è del tutto chiaro il problema, ma se la velocità di rotazione è nota e costante, la relazione tra gradi e tempo è immediata:

1500 giri/min = 9000 gradi/s

Quindi:

posizione angolare = (9000 * tempo [s]) gradi

Dovrai ovviamente sommare la posizione in gradi al tempo 0s.

Sto forse sottovalutando o male interpretando qualcosa?

Ciao,

 

Licia

Messaggio 6 di 9
5.839Visualizzazioni

Ciao Licia

si,effettivamente la relazione è quella che hai scritto,solo che io vorrei che mentre la scala dei tempi avanza con i cicli successivi (ad esempio il primo ciclo si svolge tra 0 e 1 secondo, il secondo tra 1 e 2 secondi, ecc.), quella angolare vari sempre tra 0 e 720°, mentre con la relazione da te scritta anche gli angoli avanzano (ad esempio al terzo ciclo avrei 1440°-2160°).
Adesso che ci penso,creando un contatore per il ciclo motore, potrei scalare questi valori (dividerli per il numero del ciclo) e sottraendo la posizione angolare relativa al tempo 0s,avere quindi la scala variabile sempre tra 0 e 720°.
A questo punto mi sorgono un quesito e un problema, il quesito è come faccio a far diventare l'array che ho ottenuto una scala del mio waveform graph?
Il problema invece che pensavo fosse di minore entità è relativo alla velocità di rotazione non "abbastanza costante", perchè (ho calcolato che) al variare del tempo del ciclo,varia ovviamente la velocità di rotazione,quindi i gradi al secondo e con essa il numero di campioni per ciclo
0,08 s/ciclo -> 1500 rpm -> 9000 °/s -> 16384 sample/ciclo
0.0805 s/ciclo -> 1490 rpm -> 8940 °/s -> 16493 sample/ciclo
Inserendo nel programma i dati relativi alla velocità di 1500 rpm dopo un paio di cicli,non mi trovo più con i valori,nel senso che la scala angolare non è più coerente con il segnale...
Mi sa che al mio problema non vi è soluzione!
Comunque grazie per l'aiuto che mi hai dato e che mi stai dando!

0 Kudos
Messaggio 7 di 9
5.825Visualizzazioni

Ciao Salvatore,

per avere l'array dei dati di poisizione come asse x del grafico, potresti plottare i dati su un XY Graph, che accetta come tipo di dato un cluster di array dei campioni dell'asse x e array dei campioni dell'asse y.

Ciao!

 

Licia

0 Kudos
Messaggio 8 di 9
5.823Visualizzazioni

Ciao Licia,

grazie di tutto,sei stata di grande aiuto!

 

Salvatore

0 Kudos
Messaggio 9 di 9
5.820Visualizzazioni