Page 1 sur 1

comment vérifier la connexion d'une entrée et utiliser sa valeur sans variable intermédiaire

Posté : 01 août 2024, 11:46
par rmoreno
Bonjour, j'essaie de créer un bloc pour faire la somme de 3 entrées réelles, les deux premières sont obligatoires mais la troisième est optionnelle, dans mon code je dois vérifier que la troisième entrée est connectée, si oui je l'ajoute, et si non je dois juste ajouter 0. Je dois faire cela sans utiliser de variables intermédiaires, voici la solution que j'ai mais la syntaxe n'est pas correcte, une idée de comment je peux corriger le code ?

resultat:= Entree1 + Entree2 +
(IF IS_PAR_CON(Entree3) THEN Entree3; ELSE 0 END_IF;);

Re: comment vérifier la connexion d'une entrée et utiliser sa valeur sans variable intermédiaire

Posté : 01 août 2024, 12:02
par MiGaNuTs
En supposant que ton IS_PAR_CON vaux soit 0, soit 1 tu peut faire

Code : Tout sélectionner

resultat = entrée1 + entrée2 + (IS_PAR_CON * entrée3);
Mais bon, un bon vieux if propre c'est bien plus 'joli' pour celui que repasse derrière quelques années plus tard.

Code : Tout sélectionner

if toto then
  resultat = entrée1 + entrée2 + entrée3
else
  resultat = entrée1 + entrée2
end if
Vouloir tout coder sur une seule ligne ça sert juste a te la péter.

Re: comment vérifier la connexion d'une entrée et utiliser sa valeur sans variable intermédiaire

Posté : 01 août 2024, 13:36
par rmoreno
merci

Re: comment vérifier la connexion d'une entrée et utiliser sa valeur sans variable intermédiaire

Posté : 01 août 2024, 13:45
par Guigui744
Bonjour,

J'aurai fait comme ca:

IF IS_PAR_CON(Entree3) THEN
resultat:= Entree3;
ELSE
resultat:=0.0;
END_IF;

resultat:= Entree1 + Entree2 + resultat;

Je trouve plus lisible

Re: comment vérifier la connexion d'une entrée et utiliser sa valeur sans variable intermédiaire

Posté : 01 août 2024, 14:14
par Béryl
rmoreno a écrit : 01 août 2024, 11:46 resultat:= Entree1 + Entree2 +
(IF IS_PAR_CON(Entree3) THEN Entree3; ELSE 0 END_IF;);
C'est une forme de structure de contrôle que l'on retrouve dans certains langages comme le E ou les C et PHP sous une syntaxe différente.
Très pratique, mais malheureusement pas intégré dans le structuré normé de nos automates !
Les codes ci-dessus sont tout aussi corrects.

Re: comment vérifier la connexion d'une entrée et utiliser sa valeur sans variable intermédiaire

Posté : 02 août 2024, 08:54
par Laurent
Salut,

Code : Tout sélectionner

resultat = entrée1 + entrée2 + SEL( G := IS_PAR_CON, IN0 := 0, IN1 := entrée3 );

Re: comment vérifier la connexion d'une entrée et utiliser sa valeur sans variable intermédiaire

Posté : 02 août 2024, 10:43
par Béryl
Laurent a écrit : 02 août 2024, 08:54

Code : Tout sélectionner

resultat = entrée1 + entrée2 + SEL( G := IS_PAR_CON, IN0 := 0, IN1 := entrée3 );
Intéressant !
Je ne connaissais pas cette instruction SEL qui fait le job.
Certes, moins lisible qu'un IF, mais plus compact.

Re: comment vérifier la connexion d'une entrée et utiliser sa valeur sans variable intermédiaire

Posté : 02 août 2024, 13:26
par itasoft
Béryl a écrit : 02 août 2024, 10:43
Laurent a écrit : 02 août 2024, 08:54

Code : Tout sélectionner

resultat = entrée1 + entrée2 + SEL( G := IS_PAR_CON, IN0 := 0, IN1 := entrée3 );
Intéressant !
Je ne connaissais pas cette instruction SEL qui fait le job.
Certes, moins lisible qu'un IF, mais plus compact.
-----------------
je ne connaissais pas non plus, comment j'ai pu faire pour m'en passer ? je me le demande, lol

Re: comment vérifier la connexion d'une entrée et utiliser sa valeur sans variable intermédiaire

Posté : 02 août 2024, 21:26
par DurandO
Bonjour,
itasoft a écrit : 02 août 2024, 13:26 je ne connaissais pas non plus, comment j'ai pu faire pour m'en passer ?
On ai pas au bon de nos surprises face à cette ingénierie de l’innovation!
Faire autrement pour faire la même chose : ça change tout.

Re: comment vérifier la connexion d'une entrée et utiliser sa valeur sans variable intermédiaire

Posté : 12 sept. 2024, 11:23
par andala
DurandO a écrit : 02 août 2024, 21:26 Bonjour,
itasoft a écrit : 02 août 2024, 13:26 je ne connaissais pas non plus, comment j'ai pu faire pour m'en passer ?
On ai pas au bon de nos surprises face à cette ingénierie de l’innovation!
Faire autrement pour faire la même chose : ça change tout.
Oui apres... c'est le but d'u langage de programmation : au lieu d'ecrire en langage machine, on ecrit en ladder/ST/IL etc....