So verwenden Sie JSL, um Grenzwerte in der IR-Kontrollkarte abzurufenHallo,
Angenommen, ich habe eine Grenzwerttabelle mit mehreren Parameterspalten gespeichert, wie unten gezeigt. Gibt es eine Möglichkeit, diese Datei einzulesen und die Grenzwerte mithilfe von JSL auf ein IR-Diagramm für die passenden Parameter anzuwenden?

Laut dem folgenden Beitrag gibt es keine Möglichkeit, die Funktion „Get Limits“ aus dem Control Chart-Dialogfeld mithilfe von JSL aufzurufen. In diesem Fall wurde vorgeschlagen, die Grenzwerte fest zu kodieren.
Wie-man-Grenzen-für-die-Fähigkeit-auf-der-IR-Kontrollkarte erhält
Ich denke, ich muss die Grenzwertdatei einlesen, Sigma, Avg, LCL und UCL als Variablen erfassen und sie dann für jeden Parameter an die Diagrammspalte übergeben.Wenn dies der einzige Weg ist, was wäre dann der effizienteste Weg, es anzugehen?
Sehen Sie sich unten ein Beispiel für den Code für einen einzelnen Kontrolldiagrammparameter mit fest codiertem Phasenpegel und Grenzwerten an:
Control Chart(
Sample Label( :WEEK ),
Phase( :YEAR ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col(
:P1,
Individual Measurement(
Test 1( 1 ),
Test 2( 1 ),
Test 5( 1 ),
Test 6( 1 ),
Phase Level(
"2019",
Sigma( 0.0106958422036977 ),
Avg( 5.59766666666667 ),
LCL( 5.56557914005557 ),
UCL( 5.62975419327776 )
)
)
)
);
Vielen Dank im Voraus.
Ry
Betreff: So verwenden Sie JSL, um Grenzwerte in der IR-Kontrollkarte abzurufenExzellent! Das hat mich auf den richtigen Weg gebracht.
Danke schön!
Betreff: So verwenden Sie JSL, um Grenzwerte in der IR-Kontrollkarte abzurufenSie können JSL mit dem Befehl „Get Limits“ für eine IR-Kontrollkarte verwenden.In dem Beitrag, auf den Sie verwiesen haben, ging es um Spezifikationsgrenzen und nicht um Kontrollgrenzen.Wenn Sie Kontrollgrenzen haben, können Sie die folgende JSL mit dem Befehl „Get Limits“ verwenden.
dt = Open("$SAMPLE_DATA/Quality Control/Coating.jmp");
obj = Control Chart(
Sample Size( Column(dt, "Sample") ),
Chart Col( :Weight, XBar, R ),
Get Limits(
"$SAMPLE_DATA/Quality Control/CoatingLimits.jmp"
)
);
Betreff: So verwenden Sie JSL, um Grenzwerte in der IR-Kontrollkarte abzurufen
Not Found in access or evaluation of 'Control Chart' , Bad Argument( {:Month Alerted, :YEAR} ), Control Chart(/*###*/Sample Label( :Month Alerted ),
Phase( :YEAR ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col(
:Grand Total,
Individual Measurement(
Test 1( 1 ),
Test 2( 1 ),
Test 5( 1 ),
Test 6( 1 ),
Phase Level(
"2019",
Sigma( 9843.52246062887 ),
Avg( 54802.5935983333 ),
LCL( 25272.0262164467 ),
UCL( 84333.1609802199 )
)
)
)
)
Meine Spalten sind „Monatalarmiert“. Der Spaltendateninhalt beträgt 12 Monate in diesem Format 2019-04, daher habe ich die Beispielbezeichnung in „Monatalarmiert“ geändert.
Der nächste Teil ist das JAHR und die Phase, die nicht mit meinen Daten übereinstimmen. Ich denke also, dass es dort nicht funktioniert?
Die Grenzen liegen bei mehreren Spalten, aber jede mit einer anderen Überschrift. Idealerweise möchte ich nicht jede Spaltenüberschrift schreiben.
Ich brauche auch die Größe (500.175), bin mir aber nicht sicher, wo diese in den Code passt und in der Datentabelle speichert.
Ich habe versucht, den Kontrolldiagramm-Generator zu verwenden, konnte aber die Grenzwerte nicht hinzufügen. Ich wähle die Datei aus, aber danach passiert nichts. Was bedeutete, dass ich kein Skript bekommen konnte.
Vielen Dank – ich habe das Skript angehängt
Betreff: So verwenden Sie JSL, um Grenzwerte in der IR-Kontrollkarte abzurufenWelche Fehlermeldungen erhalten Sie im Protokoll?Betreff: So verwenden Sie JSL, um Grenzwerte in der IR-Kontrollkarte abzurufenHallo, ich bin auf diese Lösung gestoßen und habe versucht, sie zu implementieren, aber sie funktioniert bei mir nicht. Sie öffnet die Dateien, die ich oben im Skript angegeben habe, fährt aber nicht mit dem Rest des Skripts fort. Es könnte etwas mit dem Phasenteil zu tun haben, aber ich verstehe nicht ganz, woher das kommt? Ich danke Ihnen für Ihre HilfeBetreff: So verwenden Sie JSL, um Grenzwerte in der IR-Kontrollkarte abzurufenVielen Dank für die schnelle Antwort, Jim.Ich habe versucht, die Kontrollgrenzen und die Sigma-Eigenschaft festzulegen und habe eine Fehlermeldung erhalten für:
too many arguments in access or evaluation of 'Expr' , Expr/*###*/(Column( finalDt, colNamesList[i] ) <<
Set Property(
"Control Limits",
{Individual Measurement( Avg( __avg__ ), LCL( __LCL__ ), UCL( __UCL__ ) )}
), Column( finalDt, colNamesList[i] ) << Set Property( "Sigma", __sigma__ ))Das Problem bestand darin, dass ich versuchte, zwei verschiedene Spalteneigenschaften im selben Ersatzausdruck zu definieren.Nach der Aufteilung in zwei Evaluierungen funktioniert es.Siehe unten.
Current Data Table( finalDt );
Wait(0);
// Get list of columns to chart
colNameList = finalDt << get column names( continuous, string );
// Loop across all of the columns and create the charts
For( i = 2, i <= N Items( colNameList ), i++,
// If limits exist for the current column, then process
If( Try( Column( dtLimits, colNameList[i] ) << get name ) != "",
// get the limits needed
// sigma
theSigma = Column( dtLimits, colNameList[i] )[(dtLimits << get rows where( :_LimitsKey == "_Std Dev" ))[1]];
theAvg = Column( dtLimits, colNameList[i] )[(dtLimits << get rows where( :_LimitsKey == "_Mean" ))[1]];
theLCL = Column( dtLimits, colNameList[i] )[(dtLimits << get rows where( :_LimitsKey == "_LCL" ))[1]];
theUCL = Column( dtLimits, colNameList[i] )[(dtLimits << get rows where( :_LimitsKey == "_UCL" ))[1]];
Eval(
Substitute(
Expr( __process__ << Set Property("Control Limits", {Individual Measurement( Avg( __avg__ ), LCL( __LCL__ ), UCL( __UCL__ ))})),
Expr( __process__ ), Parse( ":" || colNameList[i] ),
Expr( __avg__ ), theAvg,
Expr( __LCL__ ), theLCL,
Expr( __UCL__ ), theUCL
)
);
Eval(
Substitute(
Expr( __process__ << Set Property("Sigma", __sigma__)),
Expr( __process__ ), Parse( ":" || colNameList[i] ),
Expr( __sigma__ ), theSigma,
)
);
)
);Nochmals vielen Dank für Ihre schnelle Hilfe.
Ry
Betreff: So verwenden Sie JSL, um Grenzwerte in der IR-Kontrollkarte abzurufenWenn Sie die Kontrollgrenzen für eine IR-Karte interaktiv festlegen und dann die folgende JSL verwenden, um die Grenzen abzurufen,
:columnname <<GET property=""></GET>
Die für die Column-Eigenschaft hinterlegte Struktur wird angezeigt
{Individual Measurement(
Avg( 62.55 ),
LCL( 51.574420384821 ),
UCL( 73.525579615179 )
)}
Alles, was Sie tun müssen, ist, die Informationen aus Ihrer Grenzwertdatentabelle zu lesen, dann die obige Struktur zu erstellen und sie an die Spalte der Messdatentabelle zu übergeben.Unten ist eine Modifikation meines vorherigen Skripts, mit der Ausnahme, dass es die Kontrollgrenzen ausfüllt, anstatt die Kontrollkarten auszuführen
Names Default To Here( 1 );
dt = Open( "path to data table" );
dtLimits = Open( "path to limits table" );
// Get list of columns to chart
colNameList = dt << get column names( continuous, string );
// Loop across all of the columns and create the charts
For( i = 1, i <= N Items( colNameList ), i++,
// If limits exist for the current column, then process
If( Try( Column( dtLimits, colNameList[i] ) << get name ) != "",
// get the limits needed
theAvg = Column( dtLimits, colNameList[i] )[(dtLimits << get rows where( _LimitsKey == "_Mean" ))[1]];
theLCL = Column( dtLimits, colNameList[i] )[(dtLimits << get rows where( _LimitsKey == "_LCL" ))[1]];
theUCL = Column( dtLimits, colNameList[i] )[(dtLimits << get rows where( _LimitsKey == "_UCL" ))[1]];
Eval(
Substitute(
Expr(
__Process__ << set property(
"Control Limits",
{Individual Measurement( Avg( __avg__ ), LCL( __LCL__ ), UCL( __UCL__ ) )}
)
),
Expr( __process__ ), Parse( ":" || colNameList[i] ),
Expr( __avg__ ), theAvg,
Expr( __LCL__ ), theLCL,
Expr( __UCL__ ), theUCL
)
);
)
);Betreff: So verwenden Sie JSL, um Grenzwerte in der IR-Kontrollkarte abzurufenHallo Jim,
Können Sie mir zeigen, wie ich die erste von Ihnen erwähnte Methode angehen soll? Einlesen der Grenzwerte aus der Grenzwerttabelle und anschließendes Anwenden als Spalteneigenschaften.
Danke schön,
Ry
Betreff: So verwenden Sie JSL, um Grenzwerte in der IR-Kontrollkarte abzurufenDanke, Jim. Ich musste eine kleine Änderung an den Abschnitten „Get Rows Where( _LimitsKey == ...)“ vornehmen. Ich habe gerade den Doppelpunkt „:“ hinzugefügt, sodass daraus „Get Rows Where( :_LimitsKey == ...)“ wird. Dann hat alles funktioniert. Eine Frage allerdings. Das Skript generiert individuelle Fenster für jedes Parameterkontrolldiagramm. Gibt es eine Möglichkeit, ein Fenster mit gestapelten Kontrolldiagrammen für jeden Parameter zu erstellen (als ob ich im Dialogfeld „IR-Kontrolldiagramm“ mehrere Parameter ausgewählt hätte)?Betreff: So verwenden Sie JSL, um Grenzwerte in der IR-Kontrollkarte abzurufenEs gibt zwei grundlegende Möglichkeiten, dies zu tun.
- Lesen Sie die Daten aus der Grenzwerttabelle und speichern Sie die Grenzwerte dann als Spalteneigenschaften. Führen Sie dann die gewünschten Diagramme aus.
- Durchlaufen Sie die Spalten, die grafisch dargestellt werden sollen, lesen Sie die Grenzwerte aus der Grenzwerttabelle ein und fügen Sie sie in die JSL ein, um die Diagramme zu generieren.
Es ist die zweite dieser Methoden, die ich für das folgende Skript verwendet habe.Es sollte ein funktionierendes Skript sein, aber ohne Ihre Grenzwerttabelle und die tatsächliche Datentabelle kann es zu Störungen kommen.
Names Default To Here( 1 );
dt = Open( "path to data table" );
dtLimits = Open( "path to limits table" );
// Get list of columns to chart
colNameList = dt << get column names( continuous, string );
// Loop across all of the columns and create the charts
For( i = 1, i <= N Items( colNameList ), i++,
// If limits exist for the current column, then process
If( Try( Column( dtLimits, colNameList[i] ) << get name ) != "",
// get the limits needed
// sigma
theSigma = Column( dtLimits, colNameList[i] )[(dtLimits <<
get rows where( _LimitsKey == "_Std Dev" ))[1]];
theAvg = Column( dtLimits, colNameList[i] )[(dtLimits <<
get rows where( _LimitsKey == "_Mean" ))[1]];
theLCL = Column( dtLimits, colNameList[i] )[(dtLimits <<
get rows where( _LimitsKey == "_LCL" ))[1]];
theUCL = Column( dtLimits, colNameList[i] )[(dtLimits <<
get rows where( _LimitsKey == "_UCL" ))[1]];
Eval(
Substitute(
Expr(
Control Chart(
Sample Label( :WEEK ),
Phase( :YEAR ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col(
__process__,
Individual Measurement(
Test 1( 1 ),
Test 2( 1 ),
Test 5( 1 ),
Test 6( 1 ),
Phase Level(
"2019",
Sigma( __sigma__ ),
Avg( __avg__ ),
LCL( __LCL__ ),
UCL( __UCL__ )
)
)
)
)
),
Expr( __process__ ), Parse( ":" || colNameList[i] ),
Expr( __sigma__ ), theSigma,
Expr( __avg__ ), theAvg,
Expr( __LCL__ ), theLCL,
Expr( __UCL__ ), theUCL
)
);
)
);