[M340] Communication RS232 de caractères

Forum traitant des automates industriels de marque Schneider - Telemecanique
Répondre
Luvidia
Apprend le binaire
Apprend le binaire
Messages : 7
Enregistré le : 17 févr. 2022, 15:33

[M340] Communication RS232 de caractères

Message par Luvidia »

Bonjour à tous,

je commence un projet sur M340 (Control Expert TRIAL) consistant en partie à migrer un projet de TSX (Pl7 Pro) vers le nouveau M340.
J'ai notamment de la communication RS232. Le code initial utilisait des instructions ST du type:


%MB100:4 := Debut_Trame;
%MB104:2 := Milieu_Trame;
%MB106:6 := Fin_Trame;

Message_a_envoyer := %MB100:12 ;

OUT_IN_CHAR(ADR#2.1.SYS,2,Message_a_envoyer:12,Message_a_recevoir:14,Activite:4);




(j'ai vu que le OUT_IN_CHAR était remplacé par PRINT_CHAR et INPUT_CHAR désormais)
Le message est une chaîne de caractères.

Cependant, je ne peux visiblement plus utiliser les instructions du type %MB100:4, le ':' est considéré comme une erreur de syntaxe ou bien 'L'utilisation d'instruction de saut est inhibée'.
Comment puis-je continuer à faire la même opération sur mes octets sans avoir d'erreur ?

De plus, j'ai une erreur 'l'utilisation de tableaux dynamique est inhibée' sur la partie ADDM('0.0.0') lorsque j'écris la ligne:
PRINT_CHAR(ADDM('0.0.0'),Message_a_envoyer:12,Activite:4);

Comment cela se fait-il sachant que j'ai pourtant recopié l'exemple de l'aide de Control Expert ?

Merci pour vos réponses,

Luvidia
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7807
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: [M340] Communication RS232 de caractères

Message par itasoft »

slts
Message_a_envoyer := %MB100:12 ;
Message_a_recevoir:= ?????????????????????????????????????????
Automaticien privé (de tout)
itasoft@free.fr
Luvidia
Apprend le binaire
Apprend le binaire
Messages : 7
Enregistré le : 17 févr. 2022, 15:33

Re: [M340] Communication RS232 de caractères

Message par Luvidia »

Bonjour, le message_a_recevoir devrait plutôt s'appeler 'message_recu' puisqu'il est écrit par la fonction OUT_IN_CHAR lorsque le deuxième paramètre est à 1 ou 3. La doc de PL7 précise que la variable doit quand même être indiquée (mais vide) s'il n'y a pas de message à recevoir.

Je n'ai pas mis l'intégralité du code évidemment mais plus haut j'ai une ligne qui initialise le contenu de mon message:
Message_a_recevoir:16:='';
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7807
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: [M340] Communication RS232 de caractères

Message par itasoft »

slts,
ya un message à recevoir ou ya pas de message à recevoir ?????????????,

Message_a_recevoir:= %MB???:14 ;
Automaticien privé (de tout)
itasoft@free.fr
Luvidia
Apprend le binaire
Apprend le binaire
Messages : 7
Enregistré le : 17 févr. 2022, 15:33

Re: [M340] Communication RS232 de caractères

Message par Luvidia »

Dans le cas d'un envoi, il n'y a pas de message à recevoir. Cependant, sur Pl7, la fonction OUT_IN_CHAR (qui fait l'envoi, la réception ou bien les deux à la fois) oblige qu'il y ai une variable de renseignée. Ici, cette variable s'appelle Message_a_recevoir mais demeurera vide car je ne cherche qu'à envoyer.
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7807
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: [M340] Communication RS232 de caractères

Message par itasoft »

---clic pour zoom---
01.JPG
-
03.JPG
Automaticien privé (de tout)
itasoft@free.fr
Luvidia
Apprend le binaire
Apprend le binaire
Messages : 7
Enregistré le : 17 févr. 2022, 15:33

Re: [M340] Communication RS232 de caractères

Message par Luvidia »

Merci pour votre réponse,

malheureusement cela ne me permet pas de résoudre mon problème.
En effet, pour simplifier, ma trame a une taille variant de 16 à 18 caractères. Elle est adressé en %MB270. Elle se compose de 3 parties:

- Début de la trame de 11 caractères (11 octets fixe) allant de %MB270 à %MB280. Dans le code original, cela est noté: %MB270:11. Le message est écrit en dur dans le code et ne dépend pas d'une variable.

- Le code à transmettre faisant 4, 5 ou 6 caractères suivant les conditions. Pour cela, on récupère une chaîne, qui fait initialement 8 caractères, et on en extrait soit les 4, 5 ou 6 premiers pour les mettre dans notre trame. La plage peut aller jusqu'à %MB286

- La fin de la trame, faisant 2 ou 3 caractères suivant les conditions. La plage va, pour le message le plus court, de %MB284 à %MB285 et pour le plus long à %MB286 à %MB87. Le message est écrit en dur dans le code et ne dépend pas d'une variable.

Je suis donc obligé de faire des opérations sur des string pour ne sélectionner que la plage d'octets qui m'intéresse. D'où le fait que le code original contienne la notation %MB272:4 par exemple pour pouvoir sélection les octets de %MB272 à %MB275 ou bien ChaineDeCaractere:3 pour sélectionner les 3 premiers caractères contenus dans la variable ChaineDeCaractere.

Cette syntaxe (le ':') ne fonctionne plus sous Control Expert et je souhaiterais savoir quelle syntaxe (si plus de syntaxe, quel stratagème?), je peux utiliser pour sélectionner des plages d'adresses.
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2142
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: [M340] Communication RS232 de caractères

Message par philou77 »

Salut !

Aller dans les options du projet, onglet variables et autoriser les tableaux dynamiques !
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Luvidia
Apprend le binaire
Apprend le binaire
Messages : 7
Enregistré le : 17 févr. 2022, 15:33

Re: [M340] Communication RS232 de caractères

Message par Luvidia »

Merci, j'ai fait cela et l'erreur 'l'utilisation de tableaux dynamique est inhibée' n'apparaît plus. Cependant, je ne peux toujours pas utiliser l'instruction %MB100:4 sur mes octets ou sur mes chaînes de caractères.
Y a-t-il autre chose que je dois faire ?
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7807
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: [M340] Communication RS232 de caractères

Message par itasoft »

slts,
il faut tout reprendre tout le traitement des chaines par %MBxxx par le traitement chaines de caracteres façon unity
Automaticien privé (de tout)
itasoft@free.fr
Répondre