Modification de variables selon état d'un booléen

Forum traitant des automates industriels de marque Wago et du logiciel codesys
stempfer
Code sa première boucle
Code sa première boucle
Messages : 16
Inscription : 21 févr. 2017, 10:32
Localisation : Alsace

Re: Modification de variables selon état d'un booléen

Message par stempfer »

https://e-nautia.com/share/49162-9azw4bhu
Je débute dans la programmation,le projet grandit petit a petit pour alléger j'ai supprimé une partie de la visualisation. Sur la visualisation il y a le premier contact au dessus du bouton test tgbt qui est programmé pour la simulation, le programme PLC_Etat contiendra les bloc fonctionnels FBEtat que je souhaite placer. j'avais créé le programme dans un ficher vierge ou cela fonctionnait pour la rotation mais la couleur ne fonctionnait pas, j'ai recopié les mêmes lignes dans le programme final mais a ce moment ça marche plus je suis ouvert a toutes les idées
stempfer
Code sa première boucle
Code sa première boucle
Messages : 16
Inscription : 21 févr. 2017, 10:32
Localisation : Alsace

Re: Modification de variables selon état d'un booléen

Message par stempfer »

En testant la proposition de itasoft pour les lignes Rotation:=0.0; et Rotation:=30.0; j'ai du supprimer le point sinon il y avait une erreur et j'ai du inverser les lignes rotation et swcolor après plus d'erreur mais toujours le même
2017-04-27 23_29_22-CoDeSys - Template_PFC200modif 20170207.pro - [FBEtat {PLC_Etat.Etat1} (FB-ST)].png
2017-04-27 23_29_22-CoDeSys - Template_PFC200modif 20170207.pro - [FBEtat {PLC_Etat.Etat1} (FB-ST)].png (9.89 Kio) Consulté 3822 fois
résultat
Avatar de l’utilisateur
JAPIB
Aguerri de l'automation
Aguerri de l'automation
Messages : 84
Inscription : 20 oct. 2015, 23:32
Localisation : Lyon

Re: Modification de variables selon état d'un booléen

Message par JAPIB »

Bonsoir,
Les variables internes d'un bloc fonctionnel ne sont pas lisibles de l'extérieur du bloc. :shock:
Il faut déclarer Rotation et SwColor comme VAR_OUTPUT. :)

Par exemple :

Code : Tout sélectionner

========================================
FUNCTION_BLOCK FBEtat2
VAR_INPUT
	xEtat:BOOL;
END_VAR
VAR_OUTPUT
	Rotation:REAL;
	SwColor:DWORD;
END_VAR
--------------------------------------------------
IF xEtat THEN
	Rotation:=0;
	SwColor:=16#00FF0000;
ELSE
	Rotation:=-30;
	SwColor:=16#00000000;
END_IF;
========================================

Puis, dans le programme 
========================================
VAR
	MonFB:FBEtat2;
	Commande: BOOL;
	Tourne:REAL;(*A utiliser dans la visu*)
	Couleur:DWORD;(*A utiliser dans la visu*)
END_VAR
--------------------------------------------------
MonFB(xEtat:=toto , Rotation=>Tourne , SwColor=>Couleur );
========================================
Cordialement. :D
Avatar de l’utilisateur
filou59
Forcené des structures
Forcené des structures
Messages : 184
Inscription : 20 oct. 2015, 23:26
Localisation : Nord

Re: Modification de variables selon état d'un booléen

Message par filou59 »

Salut Japib

C'est peu etre preférable de faire comme tu l'as indiqué.
Par contre tu peux très bien utilisé les variables interne a l'exterieur d'un bloc.

En admettant que les variables soit déclarer en VAR, on peut les utiliser comme ceci :
MonFB.Rotation , MonFB.SwColor
Avatar de l’utilisateur
Cyril93
Maître du binaire
Maître du binaire
Messages : 484
Inscription : 29 oct. 2015, 14:22
Localisation : IDF

Re: Modification de variables selon état d'un booléen

Message par Cyril93 »

Salut,

JAPID on peux voir l'animation des var interne d'un FB sans souci ;)

stempfer ton code fonctionne sur le simulateur de codesys,
Etat.PNG
mais pour cela, il me semble qu'il faut éviter de se servir des appel de bloc par la configuration des tâches, le simulateur ne gère pas bien cette partie qui est fortement liée à la cible. Il faut mieux pour faire des tests par le simulateur passé les appel par le PLC_PRG. Sinon il te faut un api pour charger le programme et le tester.
Avatar de l’utilisateur
JAPIB
Aguerri de l'automation
Aguerri de l'automation
Messages : 84
Inscription : 20 oct. 2015, 23:32
Localisation : Lyon

Re: Modification de variables selon état d'un booléen

Message par JAPIB »

Salut Filou59
Parfaitement d'accord avec toi pour utiliser MonFB.Rotation , MonFB.SwColor.
On peut d'ailleurs ausi utiliser MonFB.xEtat pour commander le bloc !

Mais si on utilise plusieurs instances du bloc fonctionnel, parce qu'on à plusieurs éléments de visu à piloter, cela me semble plus "élégant" et simple d'utiliser des variables de sorties (et d'entrée).
D'ailleurs quand on utilise les blocs fonctionnels "standards" (tempos, compteurs, ..) c'est comme ça que l'on programme; il est vrai que dans ces cas là on à pas toujours accès aux variables internes.

Stempfer annonce lui même qu'il débute dans la programmation et il me semble qu'il faut lui donner de bonnes habitudes. (j'ai l'impression d'être un vieux professeur ... :oops: ).

Bon programme à tous :)
stempfer
Code sa première boucle
Code sa première boucle
Messages : 16
Inscription : 21 févr. 2017, 10:32
Localisation : Alsace

Re: Modification de variables selon état d'un booléen

Message par stempfer »

Merci a tous les participants,
après quelques temps loin du projet suite a de nombreux chantiers je tiens quand même a vous remercier pour votre aide et vous confirme que cela fonctionne totalement j'ai trouvé une erreur de saisie, je ne suis pas au bout du programme mais je n'abandonne pas ; la mise en service partielle se fera prochainement (si java me le permet) et le programme va continuer a évoluer tout en étant en service (c'est pas l'ideal j'en suis conscient, mais je compte si ça va utiliser un 2eme automate pour faire les essais avant le l'injecter dans l'automate principale)
Encore une fois un grand merci pour votre aide
Répondre