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:
Savez vous me dire si cela va fonctionner?
Sinon connaissez vous une alternative?
Merci.
Ecrire un byte dans le 2e octet d'un mot.
- maxpeigne
- Créateur de langage
- Messages : 712
- Inscription : 11 oct. 2015, 17:31
- Localisation : Nord pas de calais
Ecrire un byte dans le 2e octet d'un mot.
http://automacile.fr - Site et tutoriels sur l'arduino.
Re: Ecrire un byte dans le 2e octet d'un mot.
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)
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)
- maxpeigne
- Créateur de langage
- Messages : 712
- Inscription : 11 oct. 2015, 17:31
- Localisation : Nord pas de calais
Re: Ecrire un byte dans le 2e octet d'un mot.
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:
Sinon j'étais en train de regarder du coté du SHL, du genre:
Sur les autres bits du mot j'ai quelque chose; et il est préférable de ne pas les déplacer:
Sinon j'étais en train de regarder du coté du SHL, du genre:
Code : Tout sélectionner
%QW106 := bLongTeteCodeDef;
%QW106 := SHL(%QW106,8);
http://automacile.fr - Site et tutoriels sur l'arduino.
Re: Ecrire un byte dans le 2e octet d'un mot.
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
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
- maxpeigne
- Créateur de langage
- Messages : 712
- Inscription : 11 oct. 2015, 17:31
- Localisation : Nord pas de calais
Re: Ecrire un byte dans le 2e octet d'un mot.
Merci pour vos réponses,
Je viens de trouver cela dans la doc de SEW movisuite: Plus qu'a trouver si je suis en BYTE ADDRESSING ou WORD ORIENTED IEC ADDRESSING...
Je viens de trouver cela dans la doc de SEW movisuite: Plus qu'a trouver si je suis en BYTE ADDRESSING ou WORD ORIENTED IEC ADDRESSING...
http://automacile.fr - Site et tutoriels sur l'arduino.
- itasoft
- Mi homme - Mi automate
- Messages : 7035
- Inscription : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Ecrire un byte dans le 2e octet d'un mot.
slts,
disons que en PL7 j'écrirais:
MON_MOT :=(MON_MOT AND 16#FF00) OR MON_BYTE ;
disons que en PL7 j'écrirais:
MON_MOT :=(MON_MOT AND 16#FF00) OR MON_BYTE ;
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr