Chenillard avec SHL

Forum traitant des automates industriels de marque Siemens.
NicoLasB
Asservi son premier moteur
Asservi son premier moteur
Messages : 26
Enregistré le : 28 janv. 2020, 14:42

Chenillard avec SHL

Message par NicoLasB »

Bonjour

J'ai besoin de faire un chenillard pour suivre un défaut sur une ligne de production de 60m
J'ai choisis de fait un bit par mettre, j'ai voulu utiliser 2 DINT, 1 DINT pour 32 mètres (pour faire un suivi sur la supervision)
J'ai choisi l'instruction SHL car je peut avoir plus d'un défaut sur la ligne en même temps a des position différentes.
A chaque avance de 1m de ma ligne cela décale le DINT.
Je n'arrive pas a faire que le dernier bit du 1er DINT passe dans le 1er bit du 2eme DINT, il arrive dans le 2eme bit du 2eme DINT
Voici ce que j'ai codé :
double SHL
double SHL
Avez vous une idée de mon erreur ?
Il y a t il un meilleur codage via d'autre instruction a utiliser ?

Merci d'avance de votre aide
Nico Las
MiGaNuTs
Maître du binaire
Maître du binaire
Messages : 498
Enregistré le : 12 nov. 2015, 21:02
Localisation : 45 - Loiret
Contact :

Re: Chenillard avec SHL

Message par MiGaNuTs »

A mon avis des erreurs il y'en a plusieurs.
Déjà il faut faire ton décalage de registre sur un événement, pas a chaque cycle, sinon ton registre aura la bonne valeur pendant un laps de temps assez court...
L'autre conseil c'est d'utiliser plutôt un dword qu'un dint, parce que quand le bit 31 va passer 1 ça va t' afficher des valeurs négatives et rendre le truc moins facile a interpréter.
NicoLasB
Asservi son premier moteur
Asservi son premier moteur
Messages : 26
Enregistré le : 28 janv. 2020, 14:42

Re: Chenillard avec SHL

Message par NicoLasB »

Je pense que le cadencement est bon, il y a d'autre réseaux plus haut.
La comparaison est valide que pendant un tour de cycle, dans la table de visualisation le décalage est correct, test fait avec la bit de cadencement à la seconde.
Par sécurité je suis passé en DWORD.
Je remplis a chaque fois le X0 du DWORD 1 et 2, dans la table de visualisation le bit X0 est toujours à 0 le chenillard commence toujours sur le bit 2.
J'ai du loupé un truc.
Merci
AC23
Forcené des structures
Forcené des structures
Messages : 174
Enregistré le : 29 mars 2021, 10:59

Re: Chenillard avec SHL

Message par AC23 »

l'entrée EN est bien attaquée par une impulsion sur front montant (ou descendant)?

Peux-tu mettre un screen avec la version DWORD?

Je viens de faire un test rapide en LD avec un contact en P, et ça fonctionne... bizarre
<< La vie d'un homme passe par trois phases : apprentissage, apprentissage et apprentissage. >>
Et j'ai même pas fini la première phase
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1772
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: Chenillard avec SHL

Message par philou77 »

Salut !
quand ton mot 1 est à 31, tu places 1 dans le mot 2
Puis tu décales le mot 1 ET le mot 2
Donc le mot 1 passe à 0 et le mot 2 de 1 à 2

Normal que tu ne voies pas le bit 1 du mot 2

edit :

copie le bit 31 du mot 1
Fais tes décalages mot 1 et mot 2
Le bit 1 du mot 2 = copie Mot 1 bit 31
Cela autorise plus d'un bit à 1 en même temps dans les 64 bits.

Ca devrait marcher.
Modifié en dernier par philou77 le 27 janv. 2022, 00:43, modifié 2 fois.
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
DurandO
Codeur fou
Codeur fou
Messages : 283
Enregistré le : 21 mars 2021, 15:31

Re: Chenillard avec SHL

Message par DurandO »

NicoLasB a écrit : 26 janv. 2022, 12:25 Il y a t il un meilleur codage via d'autre instruction a utiliser ?
Bonjour,
définis un tableau de bool par exemple TAB array [0..31] of bool
ensuite tu réalises le décalage en utilisant MOVE_BLK :
IN : TAB[0]
Count : 31
OUT : TAB[1]


Cela devrait marcher

Durand.O
NicoLasB
Asservi son premier moteur
Asservi son premier moteur
Messages : 26
Enregistré le : 28 janv. 2020, 14:42

Re: Chenillard avec SHL

Message par NicoLasB »

AC23 a écrit : 26 janv. 2022, 14:42 l'entrée EN est bien attaquée par une impulsion sur front montant (ou descendant)?

Peux-tu mettre un screen avec la version DWORD?

Je viens de faire un test rapide en LD avec un contact en P, et ça fonctionne... bizarre
Voici ce que j'ai fait:
SHL_Def2.PNG
DurandO
Codeur fou
Codeur fou
Messages : 283
Enregistré le : 21 mars 2021, 15:31

Re: Chenillard avec SHL

Message par DurandO »

Bonjour,
il te faut sauvegarder le bit 31 de mot 1 avant décalage pour le restituer en Bit 0 mot 2 après décalage.
De même, il faut renseigner Bit 0 mot 1 après décalage.
...
NicoLasB
Asservi son premier moteur
Asservi son premier moteur
Messages : 26
Enregistré le : 28 janv. 2020, 14:42

Re: Chenillard avec SHL

Message par NicoLasB »

DurandO a écrit : 26 janv. 2022, 19:28
NicoLasB a écrit : 26 janv. 2022, 12:25 Il y a t il un meilleur codage via d'autre instruction a utiliser ?
Bonjour,
définis un tableau de bool par exemple TAB array [0..31] of bool
ensuite tu réalises le décalage en utilisant MOVE_BLK :
IN : TAB[0]
Count : 31
OUT : TAB[1]


Cela devrait marcher

Durand.O
J'ai essayé cela fonctionne pour 64 bits.
Pareil le Tab[0] reste a 0
C'est le Tab[1] qui passe a 1
Je doit avoir un décalage au premier tour de cycle.
Je vais essayé avec un tableau de 65 bits et transférer les 64 derniers bit dans 2 double mot.

Merci
NicoLasB
Asservi son premier moteur
Asservi son premier moteur
Messages : 26
Enregistré le : 28 janv. 2020, 14:42

Re: Chenillard avec SHL

Message par NicoLasB »

DurandO a écrit : 28 janv. 2022, 13:55 Bonjour,
il te faut sauvegarder le bit 31 de mot 1 avant décalage pour le restituer en Bit 0 mot 2 après décalage.
De même, il faut renseigner Bit 0 mot 1 après décalage.
...
Ok, merci, je teste ça
Répondre