Page 1 sur 1

CoDeSys Programmation

Posté : 06 juin 2016, 14:03
par Psdnn
Bonjour,

Je souhaiterais faire une programmation sur le logiciel CoDeSys Version 2.3.9.42.3 que j'utilise en lien avec l'interface EasyBuilder Pro.

Est-il possible défaire en sorte que sous l'interface Easy Builder Pro je programme des interrupteurs allant de 1 à 8 avec chacun pour adresse %MX199.0 à %MX199.7. Si je clique sur le bouton que j'aurais préalablement programmer en %MX198.0 par exemple je vais changer de plage de variables. C'est à dire que j'ai 8 variables sur ma page et que si je clic sur ce bouton j'ai 8 autres variables qui vont apparaître sur mon écran (que la aussi j'aurait préalablement programmer par exemple de %MX200.0 %MX200.7).


Pour ce la j'ai une liste de variables allant par exemple de %MX199.0 à %MX199.7. Et d'avoir deux autres variables tel que %MX198.0 et %MX198.1.


Je cherche à faire cela pour que si je dois réutilisé ce programme avec d'autres variables qu'il y en ai plus au moins je n'ai pas à rentrée chaque adresse sous EasyBuilder à chaque fois.

Sous EasyBuilder Pro cela doit donner quelque chose comme:

Crée une interface avec des interrupteurs par exemple E1,E2...

Et de cliquer sur une flèche pour que cela fasse défilé les différents interrupteurs mais sans changer de fenêtre.

Je ne sais pas si c'est possible de faire cela sous Easy Builder Pro ou CoDeSys et si c'est possible sous les 2 quel est le mieux ?

Je ne sais pas si j'ai bien su m'exprimer car je trouve cela assez complexe à expliquer en quelques ligne.

Merci d'avance pour vos réponses.

Re: CoDeSys Programmation

Posté : 06 juin 2016, 19:21
par philou77
Salut,

en effet pas clair ;)

mais le mieux est de faire afficher des bits fixes par easybuilder (genre %MW200.0 à %MW200.7).

et utiliser un transfert dans codesys :
transfert des bits fixes vers les bits de destination selon ton choix
condition 1 = transfert %MW200 dans %MW198
condition 2 = transfert %MW200 dans %MW199

attention aux conditions de reset car cette méthode ne 'scan' qu'un seul mot.

autre méthode
faire tes 8 boutons pour %MW198.xx
utiliser le bit activation et visibilité avec ta condition 1
faire 8 autres boutons pour %MW199.xx
utiliser le bit activation et visibilité avec ta condition 2
superposer les boutons sur un même écran (seul seront actifs et visibles ceux dont la condition est vrai )



cordialement

Re: CoDeSys Programmation

Posté : 07 juin 2016, 11:15
par Psdnn
Je vous remercie d'avoir pris le temps de me répondre.

Re: CoDeSys Programmation

Posté : 09 juin 2016, 09:31
par Postit
Bonjour à tous,

Tout d'abord je débute sous codesys et ne connaît donc pas trop ce logiciel.

J'aimerais savoir comment vous faites pour transférer les bits fixes dans la destination que l'on veut et surtout est-ce possible de le faire sur front montant si oui comment ?

Merci de votre réponse.

Re: CoDeSys Programmation

Posté : 09 juin 2016, 09:40
par Cyril93
Salut,

Quelle version de codesys ?
Front montant c'est dans la biblio standard de 3S. (R_TRIG)
Pour l'autre question j'ai pas trop saisi qu'appel tu les bits fixe et quel est la destination que tu veux ??

Re: CoDeSys Programmation

Posté : 09 juin 2016, 09:45
par Postit
.

Re: CoDeSys Programmation

Posté : 11 juin 2016, 13:53
par Cyril93
Salut,

La première méthode tu peux faire en ST :

Code : Tout sélectionner

IF condition1 THEN
	%MW198:=%MW200;
	%MW199:=0;
ELSIF condition2 THEN
	%MW199:=%MW200;
	%MW198:=0;
ELSE
	%MW198:=0;
	%MW199:=0;
END_IF;
La deuxième ce n'est que de l'animation de visibilité coté IHM

Pour la première méthode ce qui peux être intelligent c'est d'utiliser un pointeur et de décaler l'adresse de destination par rapport à l'adresse d'origine. Ce qui donne beaucoup plus de liberté.

Re: CoDeSys Programmation

Posté : 14 juin 2016, 14:53
par Postit
.

Re: CoDeSys Programmation

Posté : 14 juin 2016, 17:13
par Cyril93
Je suis désolé mais c'est pas clair ton truc. C'est un ARRAY OF BOOL c'est ça ??
Ou est l’intérêt de recopier bit par bit alors que tout est au format mot ?

ça c'est la première méthode mais avec un pointeur peux être que ça peux t'aider :

Code : Tout sélectionner

FUNCTION_BLOCK ADD_DYN
VAR_INPUT
	Source: BYTE;
	Destination: POINTER TO BYTE;
	Decalage: WORD;
END_VAR
VAR_OUTPUT
END_VAR
VAR
	i: WORD;
	oldDecalage: WORD;
END_VAR


IF decalage <> oldDecalage THEN
	FOR i:=1 TO oldDecalage DO
		Destination:=Destination+1;
	END_FOR;
	oldDecalage:=Decalage;
	Destination^:=0;
ELSE
	FOR i:=1 TO Decalage DO
		Destination:=Destination+1;
	END_FOR;
	Destination^:=Source;
END_IF;

decalage0.PNG
decalage5.PNG