ST* problème mémoire

Aide à la résolution d'exercices ou devoirs en automatisme industriel, electrotechnique, régulation, electronique.
happyjer
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 127
Enregistré le : 24 janv. 2016, 21:35

ST* problème mémoire

Message par happyjer »

Bonjour, voici un bout de mon 1ér programme en ST
Je bidouille depuis un moment avec les M/MW qui ne "s'actualisent pas" je sais pas comment expliquer.
Je cherche des conseils ou méthode pour palier a ce genre de problème. Je sais que le problème viens aussi du fait qu'en st le programme lit lignes par lignes.
Ici par exemple MW4 ne passe jamais a un a cause de Mw1 et si je met Mw1:=0 alors mon mw1 restera toujours a 0 je me mord la queue en quelque sorte.

Code : Tout sélectionner

(*Demande de remplissage Sac*)
FM(CLK:=Demande_Remplissage,Q=>);
IF FM.Q AND Presence_Sac1 AND Presence_Sac2 AND Nv_PT=100 THEN
	MW1:=1;
END_IF;

(*Commande Moteur Ecluse*)			
IF MW1 THEN
	WCMD_VAR_ECLUSE:=15;//Sens Avant Ecluse
	LSP_VAR_ECLUSE:=50;//Vitesse en x0.1Hz
	MW3:=0;
	MW4:=0;
END_IF;

IF MW3 OR MW4 THEN
	MW1:=0;
LSP_VAR_ECLUSE:=0;//Arrêt moteur Ecluse
END_IF;
		
(*Arret Temporisé Ecluse pour Vidage*)
TPInst4(IN := Position_Ecluse, PT:= T#5S); 
MW115 :=TPInst4.Q;
FD(CLK:=MW115,Q=>);
IF MW115 THEN
	MW1:=0;
	MW3:=1;
	ELSIF FD.Q THEN
MW3:=0;
MW1:=1;
END_IF;

(*Petite Trémie vide*)
IF Nv_PT =0 AND NOT Position_Ecluse AND NOT MW1 THEN
	MW4:=1;
END_IF;
Avatar du membre
Mantysse
Dieu du process
Dieu du process
Messages : 752
Enregistré le : 20 oct. 2015, 08:17
Localisation : MiP

Re: ST* problème mémoire

Message par Mantysse »

Salut

Et si tu fais un truc du genre?

Code : Tout sélectionner

(*Commande Moteur Ecluse*)         
IF MW1=1 THEN
   WCMD_VAR_ECLUSE:=15;//Sens Avant Ecluse
   LSP_VAR_ECLUSE:=50;//Vitesse en x0.1Hz
   MW3:=0;
   MW4:=0;
END_IF;
A+
"Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément." Nicolas Boileau

L'urgence, c'est fait!
L'impossible, c'est en cours!
Pour les miracles, il faut prévoir un délai!
happyjer
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 127
Enregistré le : 24 janv. 2016, 21:35

Re: ST* problème mémoire

Message par happyjer »

Non :( quand mon niveau arrive a zero MW4 passe bien a 1 mais MW1 reste a 1 donc le moteur ne s'arrête pas.
Avatar du membre
Mantysse
Dieu du process
Dieu du process
Messages : 752
Enregistré le : 20 oct. 2015, 08:17
Localisation : MiP

Re: ST* problème mémoire

Message par Mantysse »

Re,

C'est un exercice je t'ai juste donné une piste sur la synthaxe...
Mais il faut conditionner tes mots... ils peuvent avoir plusieurs valeurs 1, 2, 3, 4 etc... je trouve ça étrange que ça passe au compilateur d'ailleurs
"Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément." Nicolas Boileau

L'urgence, c'est fait!
L'impossible, c'est en cours!
Pour les miracles, il faut prévoir un délai!
Avatar du membre
JC87
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1953
Enregistré le : 20 oct. 2015, 13:00
Localisation : Nouvelle Aquitaine

Re: ST* problème mémoire

Message par JC87 »

Mantysse a écrit :Re,

je trouve ça étrange que ça passe au compilateur d'ailleurs
Bonjour,

En effet ça m'interpelle aussi, un mot c'est une valeur numérique pas booléenne, si on écrit "if mw" on teste quelle valeur ? c'est sur quel automate ce code ?

JC
"On veut faire du zéro défaut mais on a zéro bonhomme et zéro budget, et bien à la fin on a zéro résultat..."
happyjer
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 127
Enregistré le : 24 janv. 2016, 21:35

Re: ST* problème mémoire

Message par happyjer »

Oui un MW est une valeur numérique je me suis trompé a la place de prendre des M, mais j'avais également essayé cela mais ca ne marche pas. Ici dans ma liste des variables mes MW sont déclaré comme étant des BOOL, mais je vais modifier et retravailler avec des M booléens.
je code sur somachine avec un hmiscu8a5.

EDIT: Un screen peut être que ca aidera (je suis repassé avec des M)
http://www.noelshack.com/2016-07-1455624890-prg.jpg
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2087
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: ST* problème mémoire

Message par philou77 »

salut !
ton %M1 et remis à 1 dans le esle if de l'arrêt temporisé (ligne 70)
Donc au tour de cycle suivant ton LSP est remis à 50....
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
happyjer
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 127
Enregistré le : 24 janv. 2016, 21:35

Re: ST* problème mémoire

Message par happyjer »

Effectivement mais si je l'enlève mon arrêt temporisé ne fonctionne plus comme il ce doit.
Avatar du membre
Cyril93
Maître du binaire
Maître du binaire
Messages : 484
Enregistré le : 29 oct. 2015, 14:22
Localisation : IDF

Re: ST* problème mémoire

Message par Cyril93 »

Salut,

Tu peux utiliser une instruction CASE pour une séquence cela simplifie souvent,
sinon écrit tes équation sur ton pilotage variateur
par exemple

Code : Tout sélectionner


IF M1 AND M3=FALSE AND M4=FALSE THEN
	WCMD_VAR_ECLUSE:=15;//Sens Avant Ecluse
   	LSP_VAR_ECLUSE:=50;//Vitesse en x0.1Hz
ELSE 
 	WCMD_VAR_ECLUSE:=0;
   	LSP_VAR_ECLUSE:=0;
END_IF 	
  
Puis tu fait tes équations pour M1, M3 et M4

exemple :

Code : Tout sélectionner

(*Petite Trémie vide*)
IF Nv_PT =0 AND NOT Position_Ecluse AND NOT MW1 THEN (* je sais pas pourquoi tu conditionnes avec MW1 ? *)
   MW4:=1;
ELSE 
   MW4:=0;
END_IF;
Donc si MW4 est un bool :

Code : Tout sélectionner

(*Petite Trémie vide*)
MW4:= Nv_PT =0 AND NOT Position_Ecluse;
happyjer
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 127
Enregistré le : 24 janv. 2016, 21:35

Re: ST* problème mémoire

Message par happyjer »

Bonjour Cyril93, en utilisant votre syntaxe mon programme semble mieux fonctionner. Je ne crie pas victoire de suite mais cela semble aller dans le bon sens. Je vais donc coder comme ça et voir si tous fonctionne car ceci n'entait qu'une infime partie du code. Merci encore a tous pour votre aide et au prochain debug! :D
Répondre