Écrire les paramètres de positionnement avec sauvegarde
Cette instruction est utilisée pour écrire les paramètres de positionnement et les données de la table de positionnement suivants avec des programmes utilisateur :
Informations générales telles que les voies/axes utilisés, les nombres de répétitions et les codes d’erreur
Informations sur les axes telles que l’état de l’exécution en cours et le nombre actuel de répétitions
Informations sur les paramètres des axes telles que les codes de contrôle de la sortie impulsionnelle, les paramètres de retour à l'origine, et les paramètres de vitesse, d’accélération et de décélération
Les données des tables de positionnement telles que les codes de contrôle et profils, les paramètres de vitesse, d’accélération et de décélération
Cette instruction écrit le nombre de mots (n_Number ) des données sauvegardées dans la zone à partir de l’adresse spécifiée par s2_Start et sauvegarde ces données dans la zone mémoire de positionnement à partir de l’offset de l’adresse indiqué par d_Offset. Pour garder les données écrites même après la mise hors tension de l’automate, les données peuvent être sauvegardées dans une zone mémoire persistante.
Entrée
Numéro de voie
Configurator PMX : SYS_PMX_CHANNEL_0–SYS_PMX_CHANNEL_3
Configurator PM7 : SYS_PM7_AXIS_1–SYS_PM7_AXIS_8
Adresse de départ des zones de la mémoire de travail dans l’unité centrale dans lesquelles les données à écrire sont sauvegardées (adresse source)
Nombre de mots qui doivent être écrits.
Zone mémoire de positionnement :
Offset de l’adresse de départ de la mémoire de positionnement dans l’unité centrale dans laquelle les données écrites sont sauvegardées (adresse de destination)
TRUE : Les données sont sauvegardées dans la zone maintenue.
En spécifiant 16#80 à 16#83 (enregistrer dans la FROM) pour les 8 bits de poids fort du paramètre d’entrée s1_Channel (le bit de poids fort étant 1), les données spécifiées sont écrites dans la mémoire flash de l’unité centrale. L’écriture dans la FROM peut être exécutée jusqu'à 10000 fois. Nous recommandons d’utiliser un front montant pour empêcher l’écriture continue dans la FROM.
FALSE : Les données ne sont pas sauvegardées.
Si le numéro de voie spécifié par s1_Channel est invalide.
Si l’offset de la mémoire de positionnement spécifié par d_Offset est en dehors de la limite autorisée pour la zone mémoire de positionnement
Si le numéro de voie spécifié par s1_Channel est invalide.
Si l’offset de la mémoire de positionnement spécifié par d_Offset est en dehors de la limite autorisée pour la zone mémoire de positionnement
Toutes les variables d’entrée et de sortie utilisées pour programmer cette fonction ont été déclarées dans l’en-tête du POU.Le même en-tête de POU est utilisé pour tous les langages de programmation.
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
La fonction est exécutée lorsque la variable bWriteData passe de FALSE à TRUE.
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;