Ri: Hai bisogno di aiuto con JSL per la formula della temperatura compensata dalla pressione- Leggere la Guida allo scripting nella libreria di documentazione di JMP scaricata durante l'installazione di JMP
- Posso aiutarti un po 'con l'interfaccia utente, ma " Calcola la temperatura compensata dalla pressione per ogni riga utilizzando diverse istruzioni IF ed espressioni matematiche utilizzando i dati dell'interfaccia utente. "è troppo vago per guidarti davvero.

Ecco il JSL per quanto sopra. Dovrai solo prendere le informazioni dalla finestra e inserirle nelle tue formule. Leggere le sezioni nella documentazione sulla finestra di dialogo delle colonne () e sulla nuova colonna ()
names default to here(1);
dtList = New Table("Example Data",
new column("Temperature"),
new column("Pressure")
);
dlg = Column Dialog(
temperatureCol = ColList( "Temperature", Min Col( 1 ), Max Col( 2 ), Data Type( "Numeric" ) ),
pressureCol = ColList( "Pressure", Max Col( 1 ), Modeling Type( {"Continuous", "Multiple Response"} ) ),
Line Up( 2,
Text Box( "Reference Pressure" ), refPressure = EditNumber( . ),
Text Box( "Conversion Factor" ), conFactor = EditNumber( . ),
Text Box( "Purity Factor" ), purFactor = EditNumber( . )
));
show(dlg);Ri: Hai bisogno di aiuto con JSL per la formula della temperatura compensata dalla pressioneFreddo! non sono sicuro di aver mai usato la finestra di dialogo delle colonne, ma sembra perfetta per questo lavoro.
Dopo aver eseguito l'esempio di Jim, prova un codice come questo per aggiungere una colonna formula alla tua tabella.
Eval( // run the code below
Eval Expr( // convert the Expr(...) below into a hard coded value
// eval(evalexpr(expr(...))) is a pattern for getting values from the dlg INTO
// A FORMULA. if you follow this pattern, the formula will be self contained.
dtList << New Column( "adjusted",
formula( // random formula that uses all the variables AND shows an if() stmt
If( Expr( dlg["refPressure"] ) > Expr( dlg["pressureCol"][1] ),
Expr( dlg["temperatureCol"][1] ) + // first item of list
Expr( dlg["pressureCol"][1] ) + //
Expr( dlg["conFactor"] ) + // simple value
Expr( dlg["purFactor"] ) + //
Expr( dlg["refPressure"] )// do the ususal stuff...
, // else refPressure <= pressureCol...
Expr( dlg["temperatureCol"][1] ) + // first item of list
Expr( dlg["pressureCol"][1] ) + //
Expr( dlg["conFactor"] ) + // simple value
Expr( dlg["purFactor"] ) + //
Sqrt( Expr( dlg["refPressure"] ) )// do something extra for low ref
)
)
)
)
);Ci sono molte cose in corso qui.
- formula () non valuta il suo argomento, quindi devi dargli un aiuto
- Ricorro alla tecnica eval (evalexpr (expr (...))). Ci sono altri modi.
- hai detto che ti serve un if (...) quindi ne ho fatto uno. Puoi usare qualsiasi JSL che ti piace che produce un numero semplice per un risultato. Il risultato di un if () è l'ultimo valore che calcola.
- se hai bisogno di usare una variabile più di una volta nella tua formula, guarda la formula sopra.
- Chiaramente la mia formula non è quella che cerchi!
- Per formule semplici, non hai bisogno di tutte le cose di evalexpr. la formula (: pressione *: temperatura) funziona bene. Ma in questo esempio, non conosci i nomi delle colonne; invece conosci il nome di una variabile che contiene il nome della colonna.
per riferimento, il dlg restituisce questo elenco:
// this is what the dlg returns; the columns are a list of 1 item
// and the parameters are simple values:
//
// {temperatureCol = {:Temperature}, pressureCol = {:Pressure},
// Text Box, refPressure = 3, Text Box, conFactor = 33,
// Text Box, purFactor = 333, Button( 1 )}Infine, assicurati di guardare la formula che hai creato utilizzando l'editor di formule per assicurarti che sia davvero quello che ti aspetti!
Click the + next to the column name to open the formula in the editorClick the + next to the column name to open the formula in the editorFare clic sul + accanto al nome della colonna per aprire la formula nell'editor
Ri: Hai bisogno di aiuto con JSL per la formula della temperatura compensata dalla pressioneCiao,
Cosa intendi con " Temperatura compensata dalla pressione "? Dettagli più specifici sarebbero più facili per il supporto
Ri: Hai bisogno di aiuto con JSL per la formula della temperatura compensata dalla pressione @txnelson @Craige_Hales
Grazie mille ad entrambi! Questo è esattamente ciò di cui avevo bisogno. Questo potrebbe non essere ottimale, ma ho finito per creare colonne intermedie con formule per derivare la temperatura compensata dalla pressione (pct). Non volevo più colonne intermedie nella mia tabella dati, quindi ho rimosso la formula dal pct e ho eliminato le colonne intermedie. Se dovessi aggiungere più righe di dati, dovrò rieseguire lo script.
Ho incollato il codice che mi è venuto in mente di seguito (ma nota che ho dovuto modificare tutte le costanti / coefficienti poiché è per il mio lavoro)
//Script for creating a pressure compensated temperature tag
//Rev 1 8/25/20
names default to here(1);
/*dtList = New Table("Example Data",
new column("Temperature"),
new column("Pressure")
);*/
dtList = CurrentDataTable();
dlg = Column Dialog(
temperatureCol = ColList( "Temperature", Max Col( 1 ), Modeling Type( {"Continuous", "Multiple Response"} ) ),
pressureCol = ColList( "Pressure", Max Col( 1 ), Modeling Type( {"Continuous", "Multiple Response"} ) ),
Line Up( 2,
Text Box( "Reference Pressure" ), refPressure = EditNumber( . ),
Text Box( "Conversion Factor" ), conFactor = EditNumber( 1 ),
Text Box( "Purity Factor" ), purFactor = EditNumber( 1 ),
Text Box( "Pressure Units"), unitsP = comboBox( {"Gauge","Absolute"}),
Text Box( "PComp Tag Name"), pcompTag = EditText( "PComp Tag" )
),
Text Box("
**Reference Pressure is the base pressure and must be in the same units as the pressure tag.
**Pressure Units is a logical to indicate if the pressure being measured is absolute or gauge. For most
situations, the pressure will be measure in terms of gauge. However, vacuum pipestills typically use absolute.
**PComp Tag Name will be the column name of the new Pressure Compensate Temperature tag.
"),
);
show(dlg);
//Absolute needs to be 0 and Gauge needs to be 1. The combo box has Absolute as 2 and Gauge as 1,
If( dlg["unitsP"] == 1, dlg["unitsP"] = 1, dlg["unitsP"] = 0 );
//Write("unitsP equals: ", dlg["unitsP"]);
Eval( // run the code below
Eval Expr( // convert the Expr(...) below into a hard coded value
// eval(evalexpr(expr(...))) is a pattern for getting values from the dlg INTO
// A FORMULA. if you follow this pattern, the formula will be self contained.
dtList << New Column( "PA",
formula( // random formula that uses all the variables AND shows an if() stmt
Expr( dlg["purFactor"] ) *
(Expr( dlg["unitsP"] ) + Expr( dlg["pressureCol"][1] ) * Expr( dlg["purFactor"] ) / 12)
)
)
)
);
Eval( // run the code below
Eval Expr(
dtList << New Column( "PB",
formula( // random formula that uses all the variables AND shows an if() stmt
Expr( dlg["refPressure"] ) * Expr( dlg["conFactor"] ) / 12 + Expr( dlg["unitsP"] )
)
)
)
);
Eval(
Eval Expr(
dtList << New Column( "TA",
formula( // random formula that uses all the variables AND shows an if() stmt
Expr( dlg["temperatureCol"][1] ) + 400
)
)
)
);
New Column( "AA",
formula(
If( :PA >= 1.1111 ,
(4 - LOG10(:PA)) / (2000 - 25*LOG10(:PA)) - 0.0001
, // else
(3- LOG10(:PA)) / (2000 - 25*LOG10(:PA)) - 0.0001
)
)
);
New Column( "AB",
formula(
If( :PB >= 1.1111 ,
(4 - LOG10(:PB)) / (2000 - 25*LOG10(:PB)) - 0.0001
, // else
(3 - LOG10(:PB)) / (2000 - 100*LOG10(:PB)) - 0.0001
)
)
);
New Column( "DEN",
formula(
:AB / :AA * ((1.1 / :TA) - 0.0001) + 0.0001
)
);
New Column( "TB",
formula(
1.1 / :DEN - 400
)
);
Column("TB") << delete formula;
Column("TB") << Set Name( dlg["pcompTag"] );
dtList << delete columns( {"PA","PB","TA","AA","AB","DEN"} );Hai bisogno di aiuto con JSL per la formula della temperatura con compensazione della pressioneCiao,
Sto cercando un esempio o qualche guida su come iniziare a scrivere JSL per la seguente temperatura con compensazione della pressione:
- Crea un'interfaccia utente per selezionare una colonna di temperatura e una colonna di pressione. L'utente può inoltre inserire una pressione di riferimento, un fattore di conversione e un fattore di purezza.
- Calcola la temperatura con compensazione della pressione per ogni riga utilizzando diverse istruzioni IF ed espressioni matematiche utilizzando i dati dell'interfaccia utente.
- Crea una nuova colonna e riempila con la temperatura compensata dalla pressione calcolata sopra.
Qualsiasi aiuto è apprezzato!
Ingegneria della qualità e dei processi