루프 반복 [범위 확인]이미 채워진 사양 제한을 기반으로 범위 검사를 적용하는 지침이 필요합니다.
이 한 번의 테스트에는 87 개의 선별 제한이 있으며 스펙 제한을 설정하는 데 도움이되도록 범위 검사를 적용하고 싶습니다.
나는 내가 원하는 것을 스크립트로 사용할 수 있지만 Range Check (LELE (16, 46))를 적용하는 방법을 이해할 수 없다는 것을 안다.
시간 내 주셔서 감사합니다
// dtsplitmeas is the table that is split
cols = dtsplitmeas << get Column names( string );
// dtlim is _SPEC LIMITS_ .jmp attached to this thread
// dtrange is _RANGE CHECK_ .jmp attached to this thread
// Assign Spec Limit script
For( i = 1, i <= N Cols( dtsplitmeas ), i++,
limrow = Try( (dtlim << get rows where( dtlim:SPEC_COL_NAMES == cols[i] ))[1], . );
If( Is Missing( limRow ) == 0,
specs = {LSL( . ), USL( . ), Target( . ), Show Limits( 1 )};
specs["LSL"] = dtlim:LSL[limrow];
specs["USL"] = dtlim:USL[limrow];
Column( dtsplitmeas, Char( cols[i] ) ) << set property( "spec limits", Eval( specs ) );
);
);
다시 : 열을 통해 반복 [범위 확인]이것은 나를 위해 작동합니다. 시도를 변경하여 어떤 이유로 든 실패 할 경우를 대비 한 행을 가지고 있으며, 자동으로 오류를 전달하고 싶지는 않습니다.
Names default to here(1);
dtsplitmeas = Data Table("sample data");
dtlim = Data Table("_ SPEC LIMITS_");
dtrange = Data Table( "_ RANGE CHECK_" );
// dtsplitmeas is the table that is split
cols = dtsplitmeas << get Column names( string );
// dtlim is _SPEC LIMITS_ .jmp attached to this thread
// dtrange is _RANGE CHECK_ .jmp attached to this thread
// Assign Spec Limit script
For( i = 1, i <= N Cols( dtsplitmeas ), i++,
limrow = dtlim << get rows where( dtlim:SPEC_COL_NAMES == cols[i] );
If( nrows(limrow),
specs = {LSL( . ), USL( . ), Target( . ), Show Limits( 1 )};
specs["LSL"] = dtlim:LSL[limrow[1]];
specs["USL"] = dtlim:USL[limrow[1]];
Column( dtsplitmeas, Char( cols[i] ) ) << set property( "spec limits", Eval( specs ) );
//this assumes that the spec_col_names are exactly the same in both tables
Eval(EvalExpr(
Column( dtsplitmeas, char(cols[i])) << Set Property("Range Check",
LELE(Expr(dtrange:rangeA[limrow[1]]), Expr(dtrange:rangeB[limrow[1]]))
)
));
);
);다시 : 열을 통해 반복 [범위 확인]다음은이를 수행하는 방법의 한 예입니다.
Names Default To Here( 1 );
dtsplitmeas = Data Table( "sample data" );
dtrange = Data Table( "_ RANGE CHECK_" );
// dtsplitmeas is the table that is split
cols = dtsplitmeas << get Column names( string );
// dtlim is _SPEC LIMITS_ .jmp attached to this thread
// dtrange is _RANGE CHECK_ .jmp attached to this thread
// Assign Spec Limit script
For( i = 1, i <= N Cols( dtsplitmeas ), i++,
rangerow = Try( (dtrange << get rows where( dtrange:SPEC_COL_NAMES == cols[i] ))[1], . );
If( Is Missing( rangeRow ) == 0,
Eval(
Substitute(
Expr(
Column( dtsplitmeas, Char( cols[i] ) ) <<
Range Check( LELE( __low__, __high__ ) )
),
Expr( __low__ ), dtrange:rangeA[rangerow],
Expr( __high__ ), dtrange:rangeB[rangerow]
)
)
);
);다시 : 열을 통해 반복 [범위 확인]대단히 감사드립니다. 최대한 빨리 시도해 보겠습니다.
디.
다시 : 열을 통해 반복 [범위 확인]SPEC_COL_NAMES가 각 테이블에서 동일하기 때문에 rangeA와 rangeB를 동일한 테이블에 추가하고 spec_limits 외에 거기에서 끌어 올 수 있습니까?
다시 : 열을 통해 반복 [범위 확인]@txnelson
잠시 후에 당신은 differnt 열을 반복하고, 저널을 만들고, 그래프를 그린 다음 그 저널을 추가하는 훌륭한 스크립트를 제게 제공했습니다.
그러나 컨트롤 차트를 사용하여 동일한 작업을 수행하려고합니다. Yaxis에 대한 87 가지 표현식을 수행 할 수 있지만 동일한 개념을 제한 및 범위 검사에 적용 할 수 있는지 궁금합니다. 우리의 테스트는 점점 더 정교 해지고 있으며이 원본 게시물의 경우 504 가지의 심사 조건이 있습니다. 계산 된 출력 417 개를 포함한 87 개의 테스트 출력.
미리 감사드립니다.
doDistrPlot = Function(
{dtsplitmeas, Yaxis },
Eval(
Substitute(
Expr(
gb = Control Chart Builder(
Size( 734, 854 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables(
Y( Eval( Yaxis )) // Is evaluated in the same manner as the limits and range check.
),
Chart( Position( 1 ), Limits( Sigma( "Moving Range" ) ) ),
Chart( Position( 2 ), Limits( Sigma( "Moving Range" ) ) )
)
)
)
);
(gb << Top Report )[Text Box( 1 )] << Delete;
Report( gb )[Outline Box( 1 )] << Set Title( Eval Insert( Yaxis ) );
);
cols = dtsplitmeas << get Column names( string );
jjr1 = New Window( "Journal Window", << Journal );
For( i = 1, i <= N Cols( dtsplitmeas ), i++,
Yaxis = dtlim << Get Rows Where( dtlim:SPEC_COL_NAMES == cols[i] );
doDistrPlot( dtsplitmeas, Yaxis );
jjr1 << Append( Report( gb ) );
gb << Close Window;
);다시 : 열을 통해 반복 [범위 확인]Yaxis 값 하나만으로 함수를 실행하면 원하는 컨트롤 차트를 얻을 수 있습니까? 나는 그렇지 않다고 생각한다. 당신은 Eval (Substitute (Expr ())) 인스턴스를 가지고 있는데, 그것은 대체 요소가 지정되지 않았기 때문에 작동하지 않아야합니다.
함수를 실행하고 루핑을 추가하기 시작하려면 아기 단계를 수행해야합니다.
그러나 먼저, Scripting Guy를 통해 많은 시간을 할애해야한다고 생각합니다.
도움말 ==> 서적 ==> 스크립팅 가이드
다시 : 열을 통해 반복 [범위 확인]다시 한 번 도움을 주셔서 감사합니다. 그러나이 오류가 발생합니다 "열 'RF_IN_4_LPF_THRU BM_A_OUT S21 상태 1 @ 10.25GHz'의 범위를 벗어난 데이터가 누락 된 것으로 설정됩니다. 잇다?
내가 수동으로 범위를 설정할 때이 팝업을보고 기억 ... 네가 이걸 네 옆에서 도망 갔을 때 일어난거야?
참고 : 오류가 계속 발생합니다 ...