Chenillard avec SHL
Chenillard avec SHL
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é : 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
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é : 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
-
- Dieu du process
- Messages : 981
- Inscription : 12 nov. 2015, 21:02
- Localisation : 45 - Loiret
- Contact :
Re: Chenillard avec SHL
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.
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.
Re: Chenillard avec SHL
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
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
Re: Chenillard avec SHL
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
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
-
- Mi homme - Mi automate
- Messages : 2076
- Inscription : 21 oct. 2015, 10:00
- Localisation : Ile de France
Re: Chenillard avec SHL
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.
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.
Dernière modification 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 !
Re: Chenillard avec SHL
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
Re: Chenillard avec SHL
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.
...
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.
...
Re: Chenillard avec SHL
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