incrémentation dans un DB

Forum traitant des automates industriels de marque Siemens.
Lamasspacho
Code sa première boucle
Code sa première boucle
Messages : 11
Inscription : 11 mars 2019, 16:14
Localisation : Les Andelys

incrémentation dans un DB

Message 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 :?
Le temps, c'est de l'argent. Ça n'a jamais été aussi vrai qu'en bourse.
Boris87

Re: incrémentation dans un DB

Message 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
Dernière modification par Boris87 le 17 avr. 2019, 10:09, modifié 1 fois.
Boris87

Re: incrémentation dans un DB

Message 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)
Pièces jointes
Pointeur.png
Lamasspacho
Code sa première boucle
Code sa première boucle
Messages : 11
Inscription : 11 mars 2019, 16:14
Localisation : Les Andelys

Re: incrémentation dans un DB

Message 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...
Le temps, c'est de l'argent. Ça n'a jamais été aussi vrai qu'en bourse.
Avatar de l’utilisateur
djé
Dieu du process
Dieu du process
Messages : 776
Inscription : 20 oct. 2015, 09:55
Localisation : Bretagne, Pays de la Loire, Nantes

Re: incrémentation dans un DB

Message 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
	
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.

Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
Avatar de l’utilisateur
josé
Codeur fou
Codeur fou
Messages : 263
Inscription : 20 oct. 2015, 17:02

Re: incrémentation dans un DB

Message par josé »

bonjour
je pense que l'incrémentation serais plutôt

L #index
L P#1.0
+ D
Créateur de pannes ...
Avatar de l’utilisateur
djé
Dieu du process
Dieu du process
Messages : 776
Inscription : 20 oct. 2015, 09:55
Localisation : Bretagne, Pays de la Loire, Nantes

Re: incrémentation dans un DB

Message 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.
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.

Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
Avatar de l’utilisateur
josé
Codeur fou
Codeur fou
Messages : 263
Inscription : 20 oct. 2015, 17:02

Re: incrémentation dans un DB

Message par josé »

:oops:
pas fait attention au début du code...
Créateur de pannes ...
Lamasspacho
Code sa première boucle
Code sa première boucle
Messages : 11
Inscription : 11 mars 2019, 16:14
Localisation : Les Andelys

Re: incrémentation dans un DB

Message 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:
Le temps, c'est de l'argent. Ça n'a jamais été aussi vrai qu'en bourse.
Avatar de l’utilisateur
djé
Dieu du process
Dieu du process
Messages : 776
Inscription : 20 oct. 2015, 09:55
Localisation : Bretagne, Pays de la Loire, Nantes

Re: incrémentation dans un DB

Message par djé »

Salut,

Poste ton code que l'on jette un œil.
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.

Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
Répondre