Probleme BLINK codesys v2.3

Forum traitant des automates industriels de marque Wago et du logiciel codesys
Répondre
Mrjack
Code son premier grafcet
Code son premier grafcet
Messages : 47
Enregistré le : 09 févr. 2017, 08:54

Probleme BLINK codesys v2.3

Message par Mrjack »

Bonjour à vous,

Je m'arrache les cheveux depuis des heures avec une fonction blink.
La fonction fonctionne bien, mais je n'arrive pas mettre la sortie false quand j'enlève l'entrée enable.
J'ai remarqué que quand je passe l'entrée enable à 0 quand la sortie blink est à 0, c'est ok.
Mais que je passe l'entrée enable à 0 alors que la sortie blink est à 1, la sortie blink reste à 1 (enable à 0 voir photo)!!!
Même si je rajoute un contact et que j'ouvre en même temps l'entrée EN...
Bref, comment arrêter une fonction blink?
Blink.JPG
Merci bien pour votre aide
LJ
wagodomo
Première mise en service
Première mise en service
Messages : 65
Enregistré le : 08 déc. 2015, 18:02

Re: Probleme BLINK codesys v2.3

Message par wagodomo »

...tu dois refaire une ligne avec un "et" dont les entrées seront ta sortie de blink et l'entrée du enable de blink.
Mrjack
Code son premier grafcet
Code son premier grafcet
Messages : 47
Enregistré le : 09 févr. 2017, 08:54

Re: Probleme BLINK codesys v2.3

Message par Mrjack »

Merci pour ta réponse, mais je n'ai pas compris...
blink1.JPG
genre ça?
Ou l'une ou l'autre, ou les deux ne fonctionnent pas car forcement la fonction ne démarre jamais.

Ou tu voulais dire autre chose?
Merci
Avatar du membre
JAPIB
Aguerri de l'automation
Aguerri de l'automation
Messages : 84
Enregistré le : 20 oct. 2015, 23:32
Localisation : Lyon

Re: Probleme BLINK codesys v2.3

Message par JAPIB »

Bonjour,
Eh oui le bloc fonctionnel BLINK fonctionne bizarrement.
Quand l'entrée ENABLE passe à 0 la sortie garde la dernière valeur pilotée, soit 0 soit 1. :o

Pour remédier à cela 2 solutions :

1°) En regardant le programme de ton premier message, il faut intercaler, entre la sortie Out du bloc Blink et ta variable Out_Blink1 une variable AgiB_Whist_Code_5.
Comme ça, quand AgiB_Whist_Code_5=1 ta variable Out_Blink1 clignote et quand AgiB_Whist_Code_5=0 Out_Blink1 passe bien à 0.
C'est ce que voulait dire Wagodomo.

2°) Solution qui correspond à l'aide en ligne de CoDeSys, et qui revient un peu au même.
- Faire clignoter le Blink en permanence en mettant l'entrée ENABLE à TRUE.
- Pour faire clignoter ta variable, écrire une équation du style :
Out_Blink1 = Blink_1.Out AND AgiB_Whist_Code_5;
(Je l'ai écrite en llangage ST pour plus de facilités sur le forum, mais tu peux l'écrire dans n'importe quel langage).
Et comme précédemment si AgiB_Whist_Code_5=1 alors Out_Blink1 clignote, si AgiB_Whist_Code_5=0, Out_Blink1égale 0 aussi.
cette solution est surtout intéressante si on veux créer un clignotant utilisé un grand nombre de fois (par exemple pour faire clignoter des voyants de défaut).

Cordialement. :D
Mrjack
Code son premier grafcet
Code son premier grafcet
Messages : 47
Enregistré le : 09 févr. 2017, 08:54

Re: Probleme BLINK codesys v2.3

Message par Mrjack »

Merci beaucoup pour ta réponse.
Je ne suis donc pas si fou...

Malheureusement cette fonction ne va donc pas m'aider pour générer des signaux type morse,
ma variable étant un bouton (un code morse) avec différents types de temps de sorties et de silence (buzz long et court)je ne peux pas la faire clignoter...
Je souhaite en appuyant sur un bouton, réaliser une séquence _... (biip,silence,bip,silence,bip,silence,bip) biip 2sec bip 1sec silence 1sec.
Cette séquence je dois la faire se répéter au choix toutes les 30sec, 60sec, 120 sec, ou instantané. (je recupère la valeur d'un mot que je compare et que je charge en TIME).
J'avais réussi avec différents blink simultanés (et décalés dans le temps forcement) mais quand je stoppe la séquence, ça bug (et j'ai compris grâce à toi pourquoi)
Si tu as une idée de départ pour ma séquence, je suis preneur.
Merci
Avatar du membre
JAPIB
Aguerri de l'automation
Aguerri de l'automation
Messages : 84
Enregistré le : 20 oct. 2015, 23:32
Localisation : Lyon

Re: Probleme BLINK codesys v2.3

Message par JAPIB »

Une idée rapide, au lieu d'utiliser le bloc fonctionnel BLINK tu peux utiliser 2 temporisations pour faire la même chose.
Petit exemple :
Clignotant.jpg
Tempo1 : Durée d'extinction.
Tempo2 : Durée d'allumage.
Le bit Tempo1.Q est le bit clignotant.
Il clignote tant que BP1=1. Quand BP1=0 Tempo1.Q=0
ChrisLBQ
Asservi son premier moteur
Asservi son premier moteur
Messages : 26
Enregistré le : 13 mars 2016, 16:11

Re: Probleme BLINK codesys v2.3

Message par ChrisLBQ »

Alors effectivement, le Blink est une fonction un peu curieuse qui se comporte comme une gourgandine, lorsque tu cesse de l'appeler, elle garde son dernier état connu...
Grand bien lui fasse, pour t'aider dans ton raisonnement,
Qu'est ce qu'un BLINK ? Ce n'est qu'un function block ! Parti de ce postulat, je peux donc dériver cette fonction pour la tordre à ma manière.
Pour se faire, Créer un FB comme suivant :

(Si les image te paraisse petite, CLIQUE DROIT + ouvrir dans un nouvel onglet)


Sur cette image tu constate que j'ai crée un nouveau POU - FB dans lequel j'appelle la fonction BLINK afin d'y dériver les IN and OUT
Image


Puis faire l'appel de ce function block dans ton programme que tu auras créer (sans oublier de l'instancier bien entendu)

Image

Si je comprend bien ta problématique bien entendu. Dans tout les cas mon FB fonctionne, dés que je lache l'input start, la sortie dégage comme désirée.

PS: Oui je bosse sur codesys 3.5... Mais la philosophie reste la même ;)
Mrjack
Code son premier grafcet
Code son premier grafcet
Messages : 47
Enregistré le : 09 févr. 2017, 08:54

Re: Probleme BLINK codesys v2.3

Message par Mrjack »

Merci beaucoup pour votre aide et vos lumières!!

Cela m'a été très utile.
Répondre