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
Modification de variables selon état d'un booléen
-
- 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
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
résultatRe: Modification de variables selon état d'un booléen
Bonsoir,
Les variables internes d'un bloc fonctionnel ne sont pas lisibles de l'extérieur du bloc.
Il faut déclarer Rotation et SwColor comme VAR_OUTPUT.
Par exemple :
Cordialement.
Les variables internes d'un bloc fonctionnel ne sont pas lisibles de l'extérieur du bloc.
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 );
========================================
Re: Modification de variables selon état d'un booléen
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
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
Re: Modification de variables selon état d'un booléen
Salut,
JAPID on peux voir l'animation des var interne d'un FB sans souci
stempfer ton code fonctionne sur le simulateur de codesys,
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.
JAPID on peux voir l'animation des var interne d'un FB sans souci
stempfer ton code fonctionne sur le simulateur de codesys,
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.
Re: Modification de variables selon état d'un booléen
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 ... ).
Bon programme à tous
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 ... ).
Bon programme à tous
-
- 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
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
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