Page 3 sur 4
Re: Programme TSX 3722 vers TM 262
Posté : 31 déc. 2024, 08:56
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.
Re: Programme TSX 3722 vers TM 262
Posté : 31 déc. 2024, 09:10
par itasoft
je veux parler de sous EcoStruxure Machine Expert
Re: Programme TSX 3722 vers TM 262
Posté : 31 déc. 2024, 09:42
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 (11.45 Kio) Vu 1467 fois

- ST.PNG (3.54 Kio) Vu 1467 fois
Re: Programme TSX 3722 vers TM 262
Posté : 31 déc. 2024, 10:14
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 :
.
Je me corrige car le AND sur mots ne marche pas dans ce logiciel !
Voici la syntaxe pour reconduire le code proposé:
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!
Re: Programme TSX 3722 vers TM 262
Posté : 31 déc. 2024, 11:02
par DurandO
DurandO a écrit : ↑31 déc. 2024, 10:14
Je ne connais pas ce logiciel.
A la place de
En cherchant un peu, il suffit de l'écrire ainsi :
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)
Re: Programme TSX 3722 vers TM 262
Posté : 31 déc. 2024, 11:27
par Theogar
Bonjour DurandO,
Merci beaucoup pour ton retour je vais essayer et tester tout ça.
Re: Programme TSX 3722 vers TM 262
Posté : 31 déc. 2024, 13:11
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

Re: Programme TSX 3722 vers TM 262
Posté : 31 déc. 2024, 13:51
par DurandO
Theogar a écrit : ↑31 déc. 2024, 13:11
je n'ai pas forcément compris la logique derrière ça
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?
Re: Programme TSX 3722 vers TM 262
Posté : 31 déc. 2024, 14:04
par Theogar
Ah en effet je comprends mieux merci beaucoup DurandO

Re: Programme TSX 3722 vers TM 262
Posté : 31 déc. 2024, 15:23
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 :
est reconduite ainsi :
Où
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.