Archivage Sur S7-1200 (TIA V13)
Archivage Sur S7-1200 (TIA V13)
Bonjour,
je suis à la recherche d'une solution qui me permet d'archiver certaines données (en format Entier ou réel) dans un DB, et ce, à chaque top de 10 ou 15 min, j'ai déjà vue ça sur des S7-300 avec Step7 5.5 en utilisant l'adressage indirect et des registre à décalage, sauf que dans TIA et surtout avec le 1200 les fonction d'adressage indirect et les décalage ne peuvent pas être utilisée (d’après ma petite expérience).
alors si quelqu'un a une idée je suis preneur.
merci d'avance
@+
je suis à la recherche d'une solution qui me permet d'archiver certaines données (en format Entier ou réel) dans un DB, et ce, à chaque top de 10 ou 15 min, j'ai déjà vue ça sur des S7-300 avec Step7 5.5 en utilisant l'adressage indirect et des registre à décalage, sauf que dans TIA et surtout avec le 1200 les fonction d'adressage indirect et les décalage ne peuvent pas être utilisée (d’après ma petite expérience).
alors si quelqu'un a une idée je suis preneur.
merci d'avance
@+
Re: Archivage Sur S7-1200 (TIA V13)
Bonjour,
Alors l'adressage indirect sur S7-1200 est disponible au format PL7-PRO
Exemple:
%MW10 = %MW[%MW0];
Alors c'est possible faudrait que je retrouve l'email exemple que j'avais reçu a l'époque.
Bref grosso modo Siemens a développé une "boite fonction" permettant les équations arithmétiques d'un seul tenant (Comme avec PL7-PRO).
Je sais que ça existe, je sais juste plus ou ça se trouve XD (Comme d'hab quoi ^^)
A+
Mant'
Alors l'adressage indirect sur S7-1200 est disponible au format PL7-PRO
Exemple:
%MW10 = %MW[%MW0];
Alors c'est possible faudrait que je retrouve l'email exemple que j'avais reçu a l'époque.
Bref grosso modo Siemens a développé une "boite fonction" permettant les équations arithmétiques d'un seul tenant (Comme avec PL7-PRO).
Je sais que ça existe, je sais juste plus ou ça se trouve XD (Comme d'hab quoi ^^)
A+
Mant'
"Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément." Nicolas Boileau
L'urgence, c'est fait!
L'impossible, c'est en cours!
Pour les miracles, il faut prévoir un délai!
L'urgence, c'est fait!
L'impossible, c'est en cours!
Pour les miracles, il faut prévoir un délai!
Re: Archivage Sur S7-1200 (TIA V13)
bonjour, merci pour la réponse, et ça serai chic de ta part si tu pouvais me le refilé, ou même juste me donner une idée comment faire un truc dans le genre, car je projette d’utiliser des 1200 pour de la télégestion, et sans archivage local sur automate ça ne serait pas intéressant.
@+.
@+.
Re: Archivage Sur S7-1200 (TIA V13)
L'email que j'ai reçu d'un distributeur Siemens est le suivant:
Reste plus qu'a faire tourner le pointeur
A priori c'est utilisable a peu prêt n'importe ou dans le code, On a testé sur une fonction "Move" ça fonctionnaitVoici la syntaxe du pointeur pour un S7-1200
La voici donc:
"tableau".TEMP["index"]
tableau est le nom du DB
TEMP le nom de l'array dans le DB
index nom d'une variable API (mémento) déclaré en Int
Reste plus qu'a faire tourner le pointeur
"Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément." Nicolas Boileau
L'urgence, c'est fait!
L'impossible, c'est en cours!
Pour les miracles, il faut prévoir un délai!
L'urgence, c'est fait!
L'impossible, c'est en cours!
Pour les miracles, il faut prévoir un délai!
- itasoft
- Mi homme - Mi automate
- Messages : 7151
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Archivage Sur S7-1200 (TIA V13)
slts,
en PL7-PRO ça s'écris comme ça:
(* Décalage de la table de 1000 mots %MW0 à %MW999 *)
%MW1:999:=%MW0:999;
(* Enregistrement de la valeur en haut de la table *)
%MW0:=valeur
en PL7-PRO ça s'écris comme ça:
(* Décalage de la table de 1000 mots %MW0 à %MW999 *)
%MW1:999:=%MW0:999;
(* Enregistrement de la valeur en haut de la table *)
%MW0:=valeur
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Archivage Sur S7-1200 (TIA V13)
Merci Itasoft, mais ça ne m'avance pas trop , ce que je cherche c'est de programmer un décalage dans un DB à chaque Top d'une tempo par exemple
@+
@+
Re: Archivage Sur S7-1200 (TIA V13)
Bonjour,
J'avais créé un FB qui réalise ce que tu souhaites . Il enregistre un réel dans un DB soit sur changement d'état soit sur requete. C'est écrit en SCL. Pour l'importer, il faut aller dans "source externe" =>Ajouter nouveau fichier externe.
Test le bloc en mode simulation.
Attention, ce bloc ne gère pas les erreurs d'adressage du DB et de longueur du DB.
Cordialement.
J'avais créé un FB qui réalise ce que tu souhaites . Il enregistre un réel dans un DB soit sur changement d'état soit sur requete. C'est écrit en SCL. Pour l'importer, il faut aller dans "source externe" =>Ajouter nouveau fichier externe.
Code : Tout sélectionner
FUNCTION_BLOCK "FB209_RECORD_REAL"
TITLE = 'RECORD_REAL'
{ S7_Optimized_Access := 'FALSE' }
AUTHOR : DEHELL
FAMILY : DIAG
NAME : REC_REAL
VERSION : 1.0
VAR_INPUT
VALEUR : Real; // On peut changer en REAL ou DINT
NUM_DB : Int; // Numéro bloc de donnée
DEBUT_DB : DInt; // Adresse de début du DB
NBRE_MOT : DInt; // Nbre de capture
RESET_TBL : Bool; // Commande Raz du tableau
TOP_RECORD : Bool; // A chaque Top on enregistre "VALEUR" dans un DB
MODE_CHANGE : Bool; // si=1 alors "VALEUR" est stocké à chaque changement de la valeur de la variable Si=0 la valeur est stocké à chaque top record
END_VAR
VAR
INDICE : DInt; // indice de boucle
VAL_MEMO : Real; // valeur mémorisé en mode enregistrement sur changement de variable
Valeur_Nulle : Real; // Valeur nulle
DB_NR : DInt; // Numéro DB
END_VAR
BEGIN
#DB_NR:= INT_TO_DINT(#NUM_DB);
#Valeur_Nulle:=0.0;
IF #INDICE>=(#NBRE_MOT-#DEBUT_DB) THEN #INDICE:=0;END_IF;
//Enregistrement de valeur en mode top
IF #TOP_RECORD=TRUE AND NOT #MODE_CHANGE AND NOT #RESET_TBL THEN
POKE(area:=16#84,dbNumber:=#DB_NR,byteOffset:=(#DEBUT_DB+#INDICE),value:=#VALEUR);
#INDICE:=#INDICE+4;
END_IF;
//Enregistrement de valeur en mode changement de valeur
IF #TOP_RECORD=FALSE AND #MODE_CHANGE AND #VALEUR <> #VAL_MEMO AND NOT #RESET_TBL THEN
POKE(area:=16#84,dbNumber:=#DB_NR,byteOffset:=(#DEBUT_DB+#INDICE),value:=#VALEUR);
#INDICE:=#INDICE+4;
#VAL_MEMO:=#VALEUR;
END_IF;
//Raz de la table de valeur
IF #RESET_TBL= TRUE THEN #INDICE:=0;
FOR
#INDICE:=0 TO #NBRE_MOT BY 4 DO
POKE(area:=16#84,dbNumber:=#DB_NR,byteOffset:=(#DEBUT_DB+#INDICE),value:=#Valeur_Nulle);
END_FOR;
END_IF;
END_FUNCTION_BLOCK
Attention, ce bloc ne gère pas les erreurs d'adressage du DB et de longueur du DB.
Cordialement.
Re: Archivage Sur S7-1200 (TIA V13)
hello,
au lieu de déplacer un certain volume de données, fais plutôt un "buffer" (tableau) circulaire.
tu gères un pointeur (un indice de tableau par ex) qui indique la position de la nouvelle donnée à archiver.
tu gères un autre pointeur (ou une taille de tableau) qui indique le début des données archivées.
à chaque enregistrement, tu incrémentes tes pointeurs (le pointeur de début uniquement si le buffer est plein) et tu fais un modulo de la taille du tableau pour reboucler.
c'est tout simple et beaucoup plus efficace.
le seul avantage à décaler les données (et non les pointeurs) c'est quand les données sont plus souvent lues séquentiellement qu'écrites.
@+
au lieu de déplacer un certain volume de données, fais plutôt un "buffer" (tableau) circulaire.
tu gères un pointeur (un indice de tableau par ex) qui indique la position de la nouvelle donnée à archiver.
tu gères un autre pointeur (ou une taille de tableau) qui indique le début des données archivées.
à chaque enregistrement, tu incrémentes tes pointeurs (le pointeur de début uniquement si le buffer est plein) et tu fais un modulo de la taille du tableau pour reboucler.
c'est tout simple et beaucoup plus efficace.
le seul avantage à décaler les données (et non les pointeurs) c'est quand les données sont plus souvent lues séquentiellement qu'écrites.
@+
- itasoft
- Mi homme - Mi automate
- Messages : 7151
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Archivage Sur S7-1200 (TIA V13)
slts,
mais l'avantage du décalage est que tu as toutes les données a même endroit et t'as pas besoin de pointeur,
surtout que c'est la machine qui les décale et t'as pas besoin de faire d'efforts musculaires.
LOL
mais l'avantage du décalage est que tu as toutes les données a même endroit et t'as pas besoin de pointeur,
surtout que c'est la machine qui les décale et t'as pas besoin de faire d'efforts musculaires.
LOL
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Archivage Sur S7-1200 (TIA V13)
mouais, mais la boucle pour le déplacement il faut quand même l'écrire (avec un pointeur
)
oui oui je sais PL7-Pro ... avec un adressage direct suivi de ":" ... c'est fini ça (équivalent de BLK_MOVE sur SIEMENS)
même sur unity il faut faire une boucle
tout dépend du volume de données, du temps de cycle acceptable ...
après on peut aussi faire ça :
avec un copier/coller on ne se fatigue pas trop ... ok je sors
![M. Vert :mrgreen:](./images/smilies/icon_mrgreen.gif)
oui oui je sais PL7-Pro ... avec un adressage direct suivi de ":" ... c'est fini ça (équivalent de BLK_MOVE sur SIEMENS)
même sur unity il faut faire une boucle
tout dépend du volume de données, du temps de cycle acceptable ...
après on peut aussi faire ça :
Code : Tout sélectionner
tableau[0] := tableau[1];
tableau[1] := tableau[2];
...