Subscribe Bookmark RSS Feed

Control Chart builder not capturing details in script?

saspecvd

Occasional Contributor

Joined:

Dec 29, 2016

So I'm trying to somewhat automate my sustaining review of all my process charts for limit changes.

 

So a few problems I'm running into with control chart builder:

1.  When splitting the chart data by process type, my chart settings (Moving Range, Standard Dev) are not transferred to the dozens of newly created charts

2.  When capturing the script for this, it does not specify the charting types, like Moving Range.

3.  After completion, I would like to export this as a table of charted control and Centerline limits, by ProcessChart.

 

So I'm setting up ControlChartBuilder like this:

  • y-axis = my value data
  • x-axis = date/unique run/timestamp

I then set up the builder as:

  • Shewhart Variables
  • Statistic=Average
  • Limits[1]=Moving Range
  • Points[2]=Standard Deviation
  • Limits[2]=Standard Deviation

And then I select my process type and click "BY" to split the data into its respective groups.  The dozens of new charts don't have the same settings and when I look at the script, it doens' t contain the chart settings.

Control Chart Builder(
	Size( 534, 464 ),
	Show Control Panel( 0 ),
	Show Capability( 0 ),
	Variables(
		Subgroup( :Timestamp ),
		Subgroup( :Lot_Slot, Position( 1 ) ),
		Y( :Value )
	),
	Chart( Position( 1 ), Limits( Sigma, Zones( 1 ) ) ),
	Chart(
		Position( 2 ),
		Points( Statistic( "Standard Deviation" ) ),
		Limits( Sigma, Show Center Line( 0 ) )
	),
	Where( :ProcessStep == "UniqueProcess1" )
);

SO here's the script that comes out of this, but its not capturing "Moving Range" as my Limits[1] selection on the main chart.

 

How could I get this fixed?

And to address the first issue, how could I tweak this script to run through all my "UniqueProcess" types in the final line (Where....), to create a separate chart for each process type?  And then also output a table with the limit values for each process chart?

 

 

 

4 REPLIES
saspecvd

Occasional Contributor

Joined:

Dec 29, 2016

 

this is what I'm looking at

image.png

ian_jmp

Staff

Joined:

Jun 23, 2011

I didn't get all the nuances of what you are asking, but this code might help you:

NamesDefaultToHere(1);

// Get some semiconductor data
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
// Make some charts for each lot using the 'By' role
cb = dt << Control Chart Builder(
					Show Control Panel( 0 ),
					Variables( Y( :NPN1 ) ),
					Chart( Position( 1 ), Limits( Sigma( Moving Range ), Spec Limits( 0 ) ) ),
					Chart( Position( 2 ), Limits( Sigma( Moving Range ), Spec Limits( 0 ) ) ),
					By( :lot_id )
				);
// Get the report for the first level of the 'By' variable
ccRep1 = Report(cb[1]);
// Get the limits table for ALL levels of the 'By' variable
dtLimits = ccRep1[TableBox(1)] << makeCombinedDataTable;
dtLimits << setName("Limits Table for All Lots");
saspecvd

Occasional Contributor

Joined:

Dec 29, 2016

Awesome.  This almost works for what I need.  I edited a bit and it works great so far, just missing a few extra things.  On the example script, it looks like the SPEC Limits are embeded into the value columns.  It looks like this allows the script to then output histograms as well.  I guess I need to read how to embed my limits in.  I am pulling multiple product data with different limits though, so this might not work well.  

 

Maybe need to get it to just reference other columns (I have USL, Target, LSL already pulled) rather than embedding.  Also, is there a way to display proposed/calculated control limits on that histogram output?

 

So I have columns:

y-axis:  Values/data

x-axis:  2 layers.  Lot_slot unique & TimeStamp

split it up BY:  product type

I changed the charts to a Xbar/MR chart and a Standard Dev chart. --> this matches the original control chart builder

 

NamesDefaultToHere(1);

// Get some semiconductor data
dt = Open("C:\Limit Changes\t-90 data.jmp");
// Make some charts for each lot using the 'By' role
cb = dt << Control Chart Builder(
					Show Control Panel( 0 ),
					Variables( 
							Subgroup( :TimeStamp ),
							Subgroup( :Lot_Slot, Position( 1 ) ),
							Y( :Value ) 
							),
					Chart( Position( 1 ), Limits( Sigma( Moving Range ), Spec Limits( 0 ) ) ),
					Chart( Position( 2 ), Points( Statistic( "Standard Deviation" ) ), Limits( Sigma, Spec Limits( 0 ), Show Center Line( 0 ) ) ),
					By( :Product )
				);
// Get the report for the first level of the 'By' variable
ccRep1 = Report(cb[1]);
// Get the limits table for ALL levels of the 'By' variable
dtLimits = ccRep1[TableBox(1)] << makeCombinedDataTable;
dtLimits << setName("Limits Table for All Lots");

I figure I also need to add in:

  • popup window to select data file
  • popup to select  y-axis columns
  • popup to select the multiple levels of x-axis groupings columns
  • popup to select the 'BY' column selection (multiple selections?  By1, By2,...)
  • pull/display the current SPEC Limits, Target in the summary Limits Table
ian_jmp

Staff

Joined:

Jun 23, 2011

All of these requirements you mention can be met with some JSL, and similar things have been done many times by many people. But the details will depend on the workflow you want, where the limits are stored and so on. If you are not already, you should be aware of the rather wonderful add in from txnelson for managing Spec limits. You can easily add the limits to a histogram by adding reference lines to the axis.