Escribir parámetros de posicionamiento con copia de seguridad
Esta instrucción se utiliza para escribir los siguientes parámetros de posicionamiento y datos de la tabla de posicionamiento con programas de usuario:
Información general como canales/ejes utilizados, números de repetición y códigos de error
Información del eje, como el estado de ejecución y el número de repetición actuales
Información de ajuste del eje, como los códigos de control de la salida de pulsos, los ajustes de retorno al origen y los ajustes de velocidad, aceleración y deceleración
Datos de la tabla de posicionamiento, como códigos y patrones de control, ajustes de velocidad, aceleración y deceleración
Esta instrucción escribe el número de palabras (n_Number) de los datos guardados en el área que empieza por s2_Start, y lo guarda en el área de memoria de posicionamiento que empieza por d_Offset. Para mantener los datos escritos incluso después de desconectar la alimentación, los datos pueden ser copiados adicionalmente en una zona de memoria permanente.
Entrada
Número de canal
Configurator PMX: SYS_PMX_CHANNEL_0–SYS_PMX_CHANNEL_3
Configurator PM7: SYS_PM7_AXIS_1–SYS_PM7_AXIS_8
Dirección de inicio de las áreas de la memoria de operación de la CPU en las que se almacenan los datos que se van a escribir (dirección origen)
Número de palabras a escribir
Área de memoria de posicionamiento:
Desplazamiento de la dirección de inicio de la memoria de posicionamiento de la CPU para guardar los datos escritos (dirección destino)
TRUE: Los datos se guardan automáticamente en el área de retención
Cuando se especifica 16#80 a 16#83 (Guardar en la flash ROM) para los 8 bits más altos del parámetro de entrada s1_Channel (el bit más significativo es 1), los datos especificados se escriben en la flash ROM de la CPU. La escritura en la flash ROM puede realizarse hasta 10000 veces. Se recomienda utilizar un flanco ascendente para evitar que la escritura en la flash ROM se ejecute de forma continua.
FALSE: Los datos no han sido copiados
si el número de canal especificado en s1_Channel no es válido
Si el offset de la memoria de posicionamiento especificado en d_Offset excede el límite del área de posicionamiento
si el número de canal especificado en s1_Channel no es válido
Si el offset de la memoria de posicionamiento especificado en d_Offset excede el límite del área de posicionamiento
Todas las variables de entrada y de salida utilizadas para la programación de esta función han sido declaradas en la Cabecera de la POU.Se utiliza la misma cabecera de la POU para todos los lenguajes de programación.
VAR
bWriteData: BOOL:=FALSE;
awData: ARRAY [0..9] OF WORD:=[10(0)];
END_VAR
VAR CONSTANT
bBACKUP_DATA: BOOL:=TRUE;
END_VAR
VAR
END_VAR
Cuando la variable bWriteData pasa de FALSE a TRUE, se ejecuta la función.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 7 ;
NETWORK_BODY
B(B_COMMENT,,ø^Settings for s1_Channel:ø^ PMX-Configurator: SYS_PMX_CHANNEL_0 ... SYS_PMX_CHANNEL_3ø^ PM7-Configurator: SYS_PM7_AXIS_1 ... SYS_PM7_AXIS_8ø^,2,1,49,6,);
L(1,0,1,7);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 9 ;
NETWORK_BODY
B(B_CONTACT,,bWriteData,9,1,11,3,R);
B(B_F,F385_Positioning_WriteData_Backup!,,20,0,37,9,,?DEN?Ds1_Channel?Ds2_Start?Dn_Number?Ds1_Area?Dd_Offset?Ds1_WriteToPersistentMemory?AENO);
B(B_VARIN,,SYS_PMX_CHANNEL_0,18,2,20,4,);
B(B_VARIN,,awData,11,3,13,5,);
B(B_F,Adr_Of_Var_I!,,13,3,20,5,,?D?C);
B(B_F,Size_Of_Var!,,13,4,20,6,,?D?C);
B(B_VARIN,,SYS_POSITIONING_AREA_AXIS_SETTING,18,5,20,7,);
B(B_VARIN,,155,18,6,20,8,);
B(B_VARIN,,bBACKUP_DATA,18,7,20,9,);
L(1,0,1,9);
L(1,2,9,2);
L(11,2,20,2);
L(13,4,13,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
(*Settings for s1_Channel:
PMX-Configurator: SYS_PMX_CHANNEL_0 ... SYS_PMX_CHANNEL_3
PM7-Configurator: SYS_PM7_AXIS_1 ... SYS_PM7_AXIS_8*)
if DF(bWriteData) then
F385_Positioning_WriteData_Backup(s1_Channel := SYS_PMX_CHANNEL_0,
s2_Start := Adr_Of_Var(awData),
n_Number := Size_Of_Var(awData),
s1_Area := SYS_POSITIONING_AREA_AXIS_SETTING,
d_Offset := 155,
s1_WriteToPersistentMemory := bBACKUP_DATA);
end_if;