アラーム スクリプトがファイルに書き込まれません。やあ、
以下のようなアラーム スクリプトで苦労しています。この CuSum チャートは 7 つのアラームを生成しているため、ログ ファイルを生成する必要がありますが、生成されないか、スクリプトが実行されるたびに生成されないため、奇妙です。何が起こっているのか、何かアイデアはありますか? バージョン 17.2 pro を使用しています。
名前はデフォルトでここに設定されます( 1 );
dt = Open( "$SAMPLE_DATA/Quality Control/Oil1 Cusum.jmp" );
obj = dt << CUSUM管理図(
Y( :重量 )、
H(2)、
下側(1)
ターゲット(8.1)、
K(0.025)、
シグマ(0.02)、
ヘッドスタート( 0.05 )、
アラームスクリプト(
内容 = Substitute( "サンプル ^QCSAMPLE の列 ^QCCOL の ^QCTEST。",
"^QCTEST", 選択( qc_test,
「管理限界を1点超える」
"^QCCOL", qc_col,
"^QCSAMPLE", char(qc_sample));
filename = ファイルパスを変換します("$TEMP/test log.txt", absolute);
if (ファイルが存在する(ファイル名), テキストファイルを保存(ファイル名, 内容, モード("追加")), テキストファイルを保存(ファイル名, 内容));
)、
);
// テスト1をオンにする
obj << テスト1(1);
自動化とスクリプトRe: アラーム スクリプトがファイルに書き込まれません。私は管理図の専門家ではありませんが、以下を追加することでファイルの書き込みを開始することができました。
Test beyond limits( 1 )
CUSUM管理図の仕様
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Quality Control/Oil1 Cusum.jmp" );
obj = dt << CUSUM Control Chart(
Y( :weight ),
H( 2 ),
Lower Side( 1 ),
Target( 8.1 ),
K( 0.025 ),
Sigma( 0.02 ),
Head Start( 0.05 ),
Test beyond limits( 1 ),
Alarm Script(
contents = Substitute( "^QCTEST in column ^QCCOL in sample ^QCSAMPLE.",
"^QCTEST", Choose( qc_test, "One point beyond the control limits" ),
"^QCCOL", qc_col,
"^QCSAMPLE", Char( qc_sample )
);
filename = Convert File Path( "$TEMP/test log.txt", absolute );
If( File Exists( filename ),
Save Text File( filename, contents, Mode( "Append" ) ),
Save Text File( filename, contents )
);
),
);
// Turn on Test 1
obj << Test 1( 1 );

PS JMP コードを追加するときは、プレビュー ページの上部にある JSL アイコンを使用してください。これにより、JSL の表示がはるかに読みやすく、理解しやすくなります。
Re: アラーム スクリプトがファイルに書き込まれません。こんにちは、ジムさん
ありがとうございます。しかし、それは私が探していたものではありません。以下の管理図では、下の縦線で示されているように、シフトが検出されるポイントが 7 つあります。 
次に、以下のコードで ReportOut データテーブルに 7 行のデータが入力され、検出されたシフトごとにアラーム スクリプトが 1 回実行されることを期待していました。
Names Default To Here( 1 );
ReportOutDataTable = New Table( "ReportOut",
//Add Rows(1),
New Column( "Name",
Character,
"Nominal",
)
);
dt = Open( "$SAMPLE_DATA/Quality Control/Oil1 Cusum.jmp" );
ReportOUtDataTable = Data Table("ReportOut");
obj = dt << CUSUM Control Chart(
Y( :weight ),
H( 2 ),
Lower Side( 1 ),
Target( 8.1 ),
K( 0.025 ),
Sigma( 0.02 ),
Head Start( 0.05 ),
//Test beyond limits( 1 ),
Alarm Script(
ReportOutDataTable<<ADD rows=""></ADD>However looks like the alarm script wont run at all, unless Test beyond limits (1) is used. This then results in all points out of control in the chart being circled (71 in my example) , and therefore 71 rows of data being added to my ReportOut Data table.
Ultimately, I want the alarm script to run only when a shift is detected, and then output information on the shift to a ReportOut Data table, with information like the Sample Number on which the shift was detected. Maybe I'm misunderstanding how the Alarm script is indented to function?
Re: アラーム スクリプトがファイルに書き込まれません。おそらく、shift "test" はアラームとは見なされないため、アラーム スクリプトはトリガーされません。
Re: アラーム スクリプトがファイルに書き込まれません。可能性はありますが、CuSum グラフの目的はデータのシフトを検出することであり、これは Jmp では上記のように紫色の縦線で示されることを考えると奇妙に思えます。ユーザーがアラーム スクリプトを実行するのは、データのシフト時です。
Re: アラーム スクリプトがファイルに書き込まれません。そうかもしれませんが、現在のところ、シフト変更ではなくアラームでのみトリガーされるようです。おそらく、「シフト変更スクリプト」または同様のもののサポートを得ることを期待して、ウィッシュリスト項目を作成しますか? 現在、それらを別のテーブルに取得し、テーブルに基づいて独自のアクションをトリガーできます。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Quality Control/Oil1 Cusum.jmp");
obj = dt << CUSUM Control Chart(
Y(:weight),
H(2),
Lower Side(1),
Target(8.1),
K(0.025),
Sigma(0.05),
Head Start(0.05)
);
dt_summary = obj << Save Summaries;
r = dt_summary << Get Rows Where(Is Missing(:Shift Start));
dt_summary << Delete Rows(r)