Ho una tabella dati che ha incrementi di tempo da 0 -> n per ogni passaggio per una serie di diversi passaggi.
Chiedendosi se c'è un bkm da scrivere per fare in modo che il tempo di ogni passaggio inizi all'ora di fine del passaggio precedente.
aka:
attualmente: step1, time = 0 -> 7, step2, time = 0 -> 12
obiettivo: step1, time = 0 -> 7, step2, time7 -> 19
Consigli?
Colonne:
Etichetta sensore | Valore | tempo | Passo
Ecco una tabella dati di esempio e un semplice script che regolerà l'ora in cui il passaggio cambia.Lo script visualizza prima la tabella dei dati per 10 secondi, in modo da poter vedere come appare la tabella originale, quindi va avanti ed esegue il piccolo script per regolare i valori temporali.
Names Default To Here( 1 );
dt = New Table( "example",
Add Rows( 42 ),
New Column( "time",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 1,
2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
)
),
New Column( "Step",
Character,
"Nominal",
Set Values(
{"Step1", "Step1", "Step1", "Step1", "Step1", "Step1", "Step1", "Step1",
"Step2", "Step2", "Step2", "Step2", "Step2", "Step2", "Step2", "Step2",
"Step2", "Step2", "Step2", "Step2", "Step2", "Step3", "Step3", "Step3",
"Step3", "Step3", "Step3", "Step3", "Step3", "Step3", "Step3", "Step3",
"Step3", "Step3", "Step3", "Step3", "Step3", "Step3", "Step3", "Step3",
"Step3", "Step3"}
)
)
);
wait(10);
For Each Row(
If( Row() == 1,
adder = 0,
If( Lag( :step ) != :step,
adder = :time[Row() - 1]
)
);
:time = :time + adder;
);funziona benissimo! Sto notando solo un piccolo problema. all'incremento di tempo in cui il passo cambia, ripete il valore del tempo, invece di aumentare. Sto ancora cercando di capire la funzione LAG. Qualche consiglio?

Infine, qualche suggerimento per aggiungere i marcatori dell'asse x nello script per etichettare i blocchi della traccia?
Posso creare nuove colonne per min / max locali in base al passaggio n., Ma non so come inserirle in un'etichetta dell'asse.


Per quanto riguarda il tuo primo problema, il tuo requisito per l'incremento tra i passaggi era
obiettivo: step1, time = 0 -> 7, step2, time7 -> 19
Nota, il valore del tempo era lo stesso per l'ultimo valore nel primo passaggio, così come per la prima volta nel secondo passaggio.
Se si desidera aumentare tra i passaggi, è sufficiente modificare il valore del sommatore su qualsiasi incremento aggiuntivo desiderato
adder = :time[Row() - 1] + 1
Non capisco cosa chiedi quando dici " l'aggiunta di indicatori dell'asse x nello script per etichettare i blocchi della traccia ".
Infine, tutte le funzioni, come Lag () sono documentate nell'indice di scripting, disponibile nel menu a discesa Guida.