J'ai une table de données qui a des incréments de temps de 0 -> n pour chaque étape pour une série de plusieurs étapes.
Vous vous demandez s'il y a un bkm à script pour que chaque temps d'étape commence à l'heure de fin de l'étape précédente.
alias:
actuellement: step1, time = 0 -> 7, step2, time = 0 -> 12
objectif: step1, time = 0 -> 7, step2, time7 -> 19
Conseil?
Colonnes:
étiquette du capteur | Valeur | temps | Étape
Voici un exemple de tableau de données et un script simple qui ajustera l'heure à laquelle l'étape change.Le script affiche d'abord la table de données pendant 10 secondes, afin que vous puissiez voir à quoi ressemble la table d'origine, puis il continue et exécute le petit script pour ajuster les valeurs de temps.
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;
);cela fonctionne très bien! Je remarque juste un petit problème. à l'incrément de temps où l'étape change, il répète la valeur de temps, plutôt que l'incrémentation. J'essaie toujours de comprendre la fonction LAG. Des conseils?

Enfin, des conseils pour ajouter des marqueurs sur l'axe des x dans le script pour étiqueter les blocs de la trace?
Je peux créer de nouvelles colonnes pour le min / max local en fonction de l'étape #, mais je ne sais pas comment l'écrire dans une étiquette d'axe.


Concernant votre premier problème, votre exigence pour l'incrément entre les étapes était
objectif: step1, time = 0 -> 7, step2, time7 -> 19
Notez que la valeur de temps était la même pour la dernière valeur de la première étape, ainsi que pour la première fois de la deuxième étape.
Si vous souhaitez incrémenter entre les étapes, changez simplement la valeur de l'additionneur en fonction de l'incrément supplémentaire souhaité.
adder = :time[Row() - 1] + 1
Je ne comprends pas ce que vous demandez lorsque vous dites " ajout de marqueurs sur l'axe des x dans le script pour étiqueter les blocs de la trace ".
Enfin, toutes les fonctions, telles que Lag () sont documentées dans l'index de script, disponible dans le menu déroulant Aide.