Page 1 sur 1

Ecrire un byte dans le 2e octet d'un mot.

Posté : 18 sept. 2019, 16:14
par maxpeigne
Bonjour à tous,

Sous codesys (SEW Movisuite), je cherche à écrire un octet dans les 8 derniers bits d'un mot.
J'ai fais un essais, la syntaxe est considérée comme bonne, mais j'ai un doute que cela fonctionne:
2019-09-18 16_09_12-Clipboard.png
2019-09-18 16_09_12-Clipboard.png (1.49 Kio) Vu 5068 fois
Savez vous me dire si cela va fonctionner?
Sinon connaissez vous une alternative?

Merci.

Re: Ecrire un byte dans le 2e octet d'un mot.

Posté : 18 sept. 2019, 16:52
par filou59
Salut

Concernant ta syntaxe, je ne sais pas si c'est possible, car pour moi la syntaxe %xxx.8 c'est pour acceder a un bit, je n'ai vu ca que sur des bits sous codesys, par exemple :
%MX1.15, pour acceder au bit 15 du du mot %W1

Pour ton SEW tu es sur que tu as autre chose sur le Mot ? genre des 0 a la place ca ne va pas ?
Car je vien de regarder comment j'avais procédé sur du SEW, et il y avait un mot par fonction (Vitesse/Commande/Rampe)

Re: Ecrire un byte dans le 2e octet d'un mot.

Posté : 18 sept. 2019, 17:02
par maxpeigne
Merci pour ta réponse.

Sur les autres bits du mot j'ai quelque chose; et il est préférable de ne pas les déplacer:
2019-09-18 16_57_42-Clipboard.png
2019-09-18 16_57_42-Clipboard.png (7.57 Kio) Vu 5062 fois
Sinon j'étais en train de regarder du coté du SHL, du genre:

Code : Tout sélectionner

%QW106 := bLongTeteCodeDef;
%QW106 := SHL(%QW106,8);

Re: Ecrire un byte dans le 2e octet d'un mot.

Posté : 18 sept. 2019, 21:33
par JAPIB
Bonsoir
Ya quelque chose qui m'intrigue dans vos adresses (ou bien je n'ai pas bien compris le problème)
Dans l'exemple donné, %QB106 est déjà un octet et non pas un mot.
%QB désigne un octet, %QW désigne un mot de 16 bits, %QD désigne un mot de 32 bits.
A vérifier, suivant la version de CODESYS (V2 ou V3) et suivant le fabricant, mais les mots sont composés de 2 octets :
Et on peut accéder directement aux octets d'un mot avec adresse.

1°) CODESYS V2 : si la case "adressement des octets" (configuration de la cible) est cochée.
%QW0 est composé de %QB0 (poids faible) et %QB1 (poids fort)
%QW2 est composé de %QB2 (poids faible) et %QB3 (poids fort)
Le numéro du mot indique le premier octet utilisé (poids faible)

2°) CODESYS V2 : si la case "adressement des octets" (configuration de la cible) n'est pas cochée.
%QW0 est composé de %QB0 (poids faible) et %QB1 (poids fort)
%QW1 est composé de %QB2 (poids faible) et %QB3 (poids fort)
Le numéro du mot doit être x2 pour connaître le premier octet utilisé (poids faible)

3°) Avec CODESYS V3 on retrouve, de base la solution du 2°, sans que cela ne soit modifiable.
Par contre certains fabricants on choisit la solution 1°et on ne peut pas modifier non plus. Donc bien lire la documentation.

Bon courage

Re: Ecrire un byte dans le 2e octet d'un mot.

Posté : 19 sept. 2019, 09:14
par maxpeigne
Merci pour vos réponses,

Je viens de trouver cela dans la doc de SEW movisuite:
2019-09-19 09_11_43-Clipboard.png
Plus qu'a trouver si je suis en BYTE ADDRESSING ou WORD ORIENTED IEC ADDRESSING...

Re: Ecrire un byte dans le 2e octet d'un mot.

Posté : 19 sept. 2019, 09:44
par itasoft
slts,
disons que en PL7 j'écrirais:

MON_MOT :=(MON_MOT AND 16#FF00) OR MON_BYTE ;