Page 1 sur 2

incrémentation dans un DB

Posté : 16 avr. 2019, 16:11
par Lamasspacho
Bonjour,

Je suis sur un petit projet, on a une imprimante à jet d'encre (Markem imaje), un automate S7-300, 1 carte d'entrée et 1 carte de sortie.

On a toujours une imprimante en zone de maintenance, et pour éviter que l'encre ne sèche, on voudrai la faire fonctionner automatiquement pendant un certain temps.

Donc :
  • Démarrage de l'imprimante
  • Fonctionnement de l'impression par impulsion
  • Arrêt de l'imprimante
Je fait le démarrage et l'arrêt simplement par appui sur un bouton poussoir.
L'impulsion ce fait avec un mémento de cadence.

Pour tout ça, c'est fait.
Mais comme ça été un peu trop rapide à mon goût, j'ai voulu me compliquer la tâche.

C'est à dire, récupérer le nombre d'impulsion et le stocker.

J'enregistre donc mon mémento de cadence dans un MW, puis que j'envoie dans mon DB.

J'incrémente avec une addition toute simple, et je l'envoi avec un move.
Jusque là, ça va !

Par contre, je voudrai faire en sorte que ce nombre enregistré ne soit pas écraser à chaque fois par le nouveau.
--> Donc il faut incrémenté le DB.

Et là ça bloque. C'est le drame. *musique sinistre*

j'ai créé plusieurs ligne dans mon DB, mais je ne vois pas comment faire pour enregistrer mon nombre dans la ligne suivante.

Je me dit qu'il faut utiliser une boucle, mais j'avoue que je ne sais pas trop comment la faire.
En sachant que je programme sur Step7.

Donc comment je peux incrémenter un DB pour enregistrer mon MW dedans ?

Si j'ai été assez clair... j'espère :?

Re: incrémentation dans un DB

Posté : 16 avr. 2019, 16:54
par Boris87
Salut,

Dans ta boucle, il faut que tu utilises l'adresse de ton DB en format pointeur.
J'ai pas d'exemples à te donner mais regarde dans la doc de Step 7, ça devrais répondre à ton problème

Bon courage

Re: incrémentation dans un DB

Posté : 16 avr. 2019, 17:29
par Boris87
Du coup j'ai fait un exemple :D
Plus qu'a mixer ça avec ta boucle pour incrémenter de 2 la zone du DB à écrire (40 dans mon exemple, puis 42, 44 etc)

Re: incrémentation dans un DB

Posté : 18 avr. 2019, 14:07
par Lamasspacho
Alors, j'ai essayé ta solution, mais je n'arrive pas à décaler mon DB.

J'enregistre toujours sur la même ligne.

Pour décaler dans le DB, on fait bien

Code : Tout sélectionner

AUF DB 1
L 0
SLW 2
Mais ce ne serai que pour décaler d'une fois au final...

Re: incrémentation dans un DB

Posté : 18 avr. 2019, 14:29
par djé
Salut,

L'instruction SLW3 c'est pour mettre la valeur décimal au format "Pointeur" qui utilise un format octet.bit
Il faut la garder telle quelle.

EN gros ton code devrait être:

Code : Tout sélectionner

si condition de déclenchement :

	Code de contrôle de dépassement d'index (sinon plantage CPU!) et remise à valeur initiale si dépassement.

	L monIndex (Variable au format Décimal)
	SLW 3 (> mise au format pointeur)
	LAR1

... ton code ....

puis incrémentation de l'index
	L monIndex
	L 1
	+I
	T monIndex
	

Re: incrémentation dans un DB

Posté : 20 avr. 2019, 09:40
par josé
bonjour
je pense que l'incrémentation serais plutôt

L #index
L P#1.0
+ D

Re: incrémentation dans un DB

Posté : 24 avr. 2019, 06:17
par djé
Salut José,

Oui ça pourrait être comme ça si tu bosses au format pointeur et dans ce cas pas besoin de SLW3.

D'ailleurs on a tous les deux faux car l’incrémentation devrait se faire de 2 en 2 si on travaille sur des mots.
Il y a plusieurs solutions.

Re: incrémentation dans un DB

Posté : 24 avr. 2019, 19:25
par josé
:oops:
pas fait attention au début du code...

Re: incrémentation dans un DB

Posté : 29 avr. 2019, 08:52
par Lamasspacho
Bonjour,

Après plusieurs essaies (infructueux malheureusement), je n'y arrive toujours pas.

Je parviens à utiliser la première variable, mais impossible d'utiliser la deuxième.

Un collègue me parlait d'utiliser un deuxième DB et de faire mon décalage avec un BLKMOVE.

Je l'ai vu sur TIA, mais je n'ai pas trouvé la fonction sur step7 :oops:

Re: incrémentation dans un DB

Posté : 29 avr. 2019, 08:59
par djé
Salut,

Poste ton code que l'on jette un œil.