El script de alarma no escribe en un archivo.Hola,
Estoy teniendo problemas con un script de alarma, como el que se muestra a continuación. Este gráfico CuSum genera 7 alarmas y, por lo tanto, debería generar el archivo de registro, pero no lo hace, o no lo hace cada vez que se ejecuta el script, lo cual es extraño. ¿Alguna idea de lo que está sucediendo? Estoy usando la versión 17.2 pro.
Los nombres predeterminados están aquí (1);
dt = Open( "$SAMPLE_DATA/Control de Calidad/Oil1 Cusum.jmp" );
obj = dt << CUSUM Gráfico de control(
Y( :peso ),
H(2),
Lado inferior (1),
Objetivo(8.1),
K(0,025),
Sigma( 0,02 ),
Ventaja inicial (0,05),
Script de alarma(
contenido = Sustituir( "^QCTEST en la columna ^QCCOL en la muestra ^QCSAMPLE.",
"^QCTEST", Elija( qc_test,
"Un punto más allá de los límites de control")
"^QCCOL", qc_col,
"^QCSAMPLE", char( qc_sample ));
nombre_archivo = Convertir ruta de archivo("$TEMP/test log.txt", absolute);
si (Archivo Existe( nombre_archivo ), Guardar Archivo de Texto( nombre_archivo, contenido, Modo("Anexar") ), Guardar Archivo de Texto( nombre_archivo, contenido) );
),
);
// Activar la prueba 1
obj << Prueba 1(1);
Automatización y scriptingRe: El script de alarma no escribe en un archivo.No soy un experto en gráficos de control, sin embargo, pude activar la escritura del archivo agregando
Test beyond limits( 1 )
a la especificación del gráfico de control 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 );

PD: Utilice el ícono JSL en la parte superior de la página de vista previa al agregar su código JMP. Esto proporciona una visualización de su JSL mucho más fácil de leer y comprender.
Re: El script de alarma no escribe en un archivo.Hola Jim,
Gracias por eso. Pero no es exactamente lo que estaba buscando. En el gráfico de control que se muestra a continuación, hay 7 puntos en los que se detecta un cambio, como lo indican las líneas verticales a continuación. 
Entonces esperaba que mi código a continuación completara la tabla de datos ReportOut, con 7 filas de datos, con el script de alarma ejecutándose una vez por cada turno detectado.
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: El script de alarma no escribe en un archivo.Tal vez el cambio "prueba" no se considera una alarma y por eso no activará el script de alarma.
Re: El script de alarma no escribe en un archivo.Posiblemente, pero parecería extraño, dado que el propósito de un gráfico CuSum es detectar un cambio en los datos, y esto se indica en Jmp con las líneas violetas verticales como se muestra arriba. Es cuando un usuario desea que se ejecute el script de alarma cuando se produce un cambio en los datos.
Re: El script de alarma no escribe en un archivo.Puede ser, pero actualmente parece que solo se activa con alarmas, no con cambios de turno. ¿Quizás crear un elemento de lista de deseos con la esperanza de obtener soporte para "script de cambio de turno" o algo similar? Actualmente, puedes colocarlos en una tabla separada y activar tus propias acciones en función de la tabla.
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)