トリガーされたアラームに関連付けられた行を特定します。 アラームがトリガーされたときに呼び出されるハンドラーは、ポイントに関する情報、特に qc_sample (および qc_firstRow qc_lastRow) を受け取ります。 グラフが 1 つだけの場合は、これで完璧なはずです。 個々の測定値がある場合、サンプルはテーブルの行を識別します。 残念ながら、多くのグラフに分割された BY 列があります。 この場合、qc_sample は各チャートのサンプルを参照するため、対応する行をテーブルに取得することが困難になります。 簡単に入手する方法はありますか?
はい、アラーム スクリプトは、'qc_sample' の値を 'By' 変数のレベルに関連付けることができる明白な方法が (私にとって . . . ) ないという点で、鈍器であるように見えます。データテーブル内の適切な行。
ただし、スクリプト内で他に何が起こっているかによっては、「プロセス スクリーニング」を使用して必要なものを取得できる場合があります。 以下のスクリプトを実行すると、ログと作成される 2 つの「詳細」テーブルを検査できます。
NamesDefaultToHere(1);
// Make some data
dt = NewTable("Alarms",
NewColumn("By", Numeric, Nominal, Formula(RandomInteger(1,2))),
NewColumn("Data", Numeric, Continuous, Formula(RandomNormal(0,1)))
);
dt << addRows(1000);
// Use process screening invisibly to get the details of all alarms (one table for each level of the 'By' variable)
ps = dt << Process Screening( Y(Column(dt, "Data")), By(Column(dt, "By")), Invisible );
dtList = ps << saveDetailsTable;
Report(ps[1]) << closeWindow;
// Control chart with alarm script
cc = dt << Control Chart(
Chart Col( :Data, Individual Measurement, Moving Range ),
By( :By ),
Alarm Script(
Write(
"Out of Control for test ",
qc_test,
" in column ",
qc_col,
" in sample ",
qc_sample,
"\!N"
)
)
);
// Turn on Test 1
cc << Test 1(1);