[Résolu] Programme TSX 3722 vers TM 262

Forum traitant des automates industriels de marque Schneider - Telemecanique
Theogar
Code son premier grafcet
Code son premier grafcet
Messages : 43
Enregistré le : 23 juil. 2024, 13:59

Re: Programme TSX 3722 vers TM 262

Message par Theogar »

Bonjour Itasoft,

Oui c'est bien du LADDER, je l'ai écrit en contact pace que je ne voulais pas surcharger mon message avec des photos. Mais justement je viens de voir que la seule photo que je voulais mettre ne s'affiche pas donc, je la remets ici.
Capture.PNG
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7806
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: Programme TSX 3722 vers TM 262

Message par itasoft »

je veux parler de sous EcoStruxure Machine Expert
Automaticien privé (de tout)
itasoft@free.fr
Theogar
Code son premier grafcet
Code son premier grafcet
Messages : 43
Enregistré le : 23 juil. 2024, 13:59

Re: Programme TSX 3722 vers TM 262

Message par Theogar »

Oui je suis aussi en LADDER sur Machine expert, mais j'ai aussi ce genre d'instructions en ST.
Je vous mets des exemples d'instructions de ce style ci-dessous:
LD_2.PNG
LD_2.PNG (11.45 Kio) Vu 1471 fois
LD.PNG
ST.PNG
ST.PNG (3.54 Kio) Vu 1471 fois
DurandO
Maître du binaire
Maître du binaire
Messages : 482
Enregistré le : 21 mars 2021, 15:31

Re: Programme TSX 3722 vers TM 262

Message par DurandO »

Bonjour,
Theogar a écrit : 30 déc. 2024, 11:52
Cette partie de programme permet la rotation d'une table. Cependant, je ne comprends pas ce qu'est :

Code : Tout sélectionner

%MW840[%MW26]:X2 
.
Je me corrige car le AND sur mots ne marche pas dans ce logiciel !
Voici la syntaxe pour reconduire le code proposé:

Code : Tout sélectionner

MW[840 + MW[26]].2 
Dans ce que tu viens de poster :
je vois que tu as du déclarer une variable de type structure d'où ta syntaxe variable.Machin : aucun intérêt, cela va surcharger pour rien.
Du coup, après avoir corrigé la déclaration, tu devrais remplacer variables.M21 par M21
Ensuite, à moins que tu ais trouvé une solution autre que ce que je t'ai proposé pour indexer, pourquoi écrire MW124 au lieu de MW[24] ?

Il est normal que Variables.MW880[Variables.MW26] fasse une erreur de syntaxe ==> à réécrire ainsi MW[880 + MW[26] suivant la logique que je t'ai présenté.

Si tu as retenu ma solution, alors, il ne pas faut déclarer à la fois le tableau et des variables INT comme MW24 qui ne ferait pas référence à MW[24] bien sur!
Modifié en dernier par DurandO le 31 déc. 2024, 11:50, modifié 1 fois.
DurandO
Maître du binaire
Maître du binaire
Messages : 482
Enregistré le : 21 mars 2021, 15:31

Re: Programme TSX 3722 vers TM 262

Message par DurandO »

DurandO a écrit : 31 déc. 2024, 10:14 Je ne connais pas ce logiciel.
A la place de

Code : Tout sélectionner

%MW840[%MW26]:X2 
En cherchant un peu, il suffit de l'écrire ainsi :

Code : Tout sélectionner

MW[840 + MW[26]].2
Avant de réécrire tout le programme, je te conseilles de tester chaque fonction en ligne avec l'automate ou simulation.
par exemple dans le cas présent , tu charge dans MW[840] à MW[846] les valeurs 0,1,2,4,8,16,32
puis tu force MW[26] aux valeurs 0,1,2,3,4,5,6 et tu vérifies que le contact est bien passant pour la valeur attendue (que je ne cite pas pour vérifier que tu as bien compris)
Theogar
Code son premier grafcet
Code son premier grafcet
Messages : 43
Enregistré le : 23 juil. 2024, 13:59

Re: Programme TSX 3722 vers TM 262

Message par Theogar »

Bonjour DurandO,

Merci beaucoup pour ton retour je vais essayer et tester tout ça.
Theogar
Code son premier grafcet
Code son premier grafcet
Messages : 43
Enregistré le : 23 juil. 2024, 13:59

Re: Programme TSX 3722 vers TM 262

Message par Theogar »

tu force MW[26] aux valeurs 0,1,2,3,4,5,6 et tu vérifies que le contact est bien passant pour la valeur attendue (que je ne cite pas pour vérifier que tu as bien compris)
En faisant les test ma sortie passe à 1 si MW[26] est égal à 3, mais je t'avouerais, je n'ai pas forcément compris la logique derrière ça :|
DurandO
Maître du binaire
Maître du binaire
Messages : 482
Enregistré le : 21 mars 2021, 15:31

Re: Programme TSX 3722 vers TM 262

Message par DurandO »

Theogar a écrit : 31 déc. 2024, 13:11 je n'ai pas forcément compris la logique derrière ça

Code : Tout sélectionner

MW[840 + MW[26]].2
Lorsque MW[26] = 3, tu obtiens 840 + 3 donc 843.
C'est MW[843].2 qui est alors testé(le bit 2).
Si tu écris les mots 840 à 846 en binaire avec les valeurs entières (les valeurs 0,1,2,4,8,16,32) tu obtiens ceci :

Code : Tout sélectionner

Bit       |x15 |x14 |x13 |x12 |x11 |x10 | x9 | x8 | x7 | x6 | x5 | x4 | x3 | x2 | x1 | x0
MW[840] = |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 
MW[841] = |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  1 
MW[842] = |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  1 |  0 
MW[843] = |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  1 |  0 |  0 
MW[844] = |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  1 |  0 |  0 |  0 
MW[845] = |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  0 |  1 |  0 |  0 |  0 |  0 
Est-ce plus clair?
Modifié en dernier par DurandO le 31 déc. 2024, 14:06, modifié 1 fois.
Theogar
Code son premier grafcet
Code son premier grafcet
Messages : 43
Enregistré le : 23 juil. 2024, 13:59

Re: Programme TSX 3722 vers TM 262

Message par Theogar »

Ah en effet je comprends mieux merci beaucoup DurandO :D
DurandO
Maître du binaire
Maître du binaire
Messages : 482
Enregistré le : 21 mars 2021, 15:31

Re: Programme TSX 3722 vers TM 262

Message par DurandO »

J'ai converti un projet SoMachineBasic dans lequel j'avais utilisé de l'indexage.
Après conversion, une opération de ce type :

Code : Tout sélectionner

%MW840[%MW26]
est reconduite ainsi :

Code : Tout sélectionner

PTR_MW840[MW26]
PTR_MW840 est une variable globale de type POINTER TO INT initialisée à ADR(MW840) en veillant bien à déclarer aussi la variable MW840 à l'adresse %MW840 !

C'est comme cela que l'on aurait du procéder. Ma méthode marche aussi en déclarant MW de type Array [0..2050] of INT à l'adresse %MW0.
A toi t'utiliser ce qui te conviens.

Si tu as SoMachineBasic, il peut être intéressant d'écrire 2 ou trois réseau avec les instructions que tu ne vois pas comment reconduire et ensuite tu converti dans Machine Expert.
Répondre