警报脚本未写入文件。你好呀,
我正在努力编写一个警报脚本,如下所示。此 CuSum 图表生成了 7 个警报,因此应该生成日志文件,但事实并非如此,或者每次运行脚本时都不会生成,这很奇怪。有人知道发生了什么吗?我使用的是 17.2 pro 版本。
名称默认为此处( 1 );
dt = Open( “$SAMPLE_DATA/Quality Control/Oil1 Cusum.jmp” ) ;
obj = dt << CUSUM 控制图(
Y(:权重),
H( 2 ),
下侧( 1 ),
目标( 8.1 ),
钾(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);
自动化和脚本回复:警报脚本未写入文件。我不是控制图专家,但是,我可以通过添加来触发文件的写入
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。
回复:警报脚本未写入文件。嗨吉姆,
谢谢。但这不是我想要的。在下面的控制图中,有 7 个点检测到偏移,如下方的垂直线所示。 
然后,我希望下面的代码能够填充 ReportOut 数据表,其中包含 7 行数据,并且每检测到一个班次,警报脚本就会运行一次。
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?
回复:警报脚本未写入文件。也许“测试”转变不被视为警报,所以它不会触发警报脚本。
回复:警报脚本未写入文件。可能,但看起来很奇怪,因为 CuSum 图的目的是检测数据的变化,这在 Jmp 中用垂直紫色线表示,如上所述。当数据发生变化时,用户会希望警报脚本运行。
回复:警报脚本未写入文件。可能是这样,但目前看来它只会在警报时触发,而不是在换班时触发。也许创建一个愿望清单项目,希望获得对“换班脚本”或类似内容的支持?目前,您可以将它们放入单独的表中,并根据表触发您自己的操作
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)