[Ecostruxure Control Expert] [Tuto] Chenillard pour requêtes Read_Var

Sous forum réservé aux tutoriaux concernant les produits de la marque Schneider
Répondre
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7089
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

[Ecostruxure Control Expert] [Tuto] Chenillard pour requêtes Read_Var

Message par itasoft »

Chenillard pour le séquencement des requêtes READ_VAR / WRITE_VAR
---------clic dessus pour zoom------------
Chenillard.JPG
-----------sans le bit horloge--------
Chenillard2.JPG
c'est le IoScanning à la mano
Automaticien privé (de tout)
itasoft@free.fr
psytoon
Code son premier grafcet
Code son premier grafcet
Messages : 47
Enregistré le : 15 juin 2022, 18:08

Re: [Ecostruxure Control Expert] [Tuto] Chenillard pour requêtes Read_Var

Message par psytoon »

Bonjour

pour lancer des requêtes de communication sur un même port il faut cadencer les envois. En effet une requête prend plusieurs cycles à l'automate pour la créer et faire l'envoi. Du coup si à chaque cycle automate on demande à lancer une requête la carte va très vite se retrouver saturée de demandes. On le voit par le voyant qui va progressivement augmenter la fréquence de clignotement.
C'est pour cela que l'on crée un chenillard qui envoie requête après requête. On attend la fin de l'envoi d'une requête pour demander une nouvelle. Pas tous en même temps c'est comme à la cantine en rang à la file un par un.
Et là on est pas mal.
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7089
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: [Ecostruxure Control Expert] [Tuto] Chenillard pour requêtes Read_Var

Message par itasoft »

slts,
ça c'est vrai si on ne conditionne pas la requête avec le bit d'activité, not %MW40.0
Avec le test du bit d’activité la requête suivante ne se fait que si la précédente se termine (si la voie est libre)
Automaticien privé (de tout)
itasoft@free.fr
Avatar du membre
Béryl
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1682
Enregistré le : 20 oct. 2015, 12:00
Localisation : localhost

Re: [Ecostruxure Control Expert] [Tuto] Chenillard pour requêtes Read_Var

Message par Béryl »

Voici un extrait d'un DFB que j'ai codé pour communiquer avec des M172 sur des tours de refroidissement.
L'entrée "Valid" débloque une partie du code, "Taille_Registre" fixe le nombre de pas du chenillard. "Raz_req" remet les compteurs de requêtes à zéro.
"Write_Done" indique que la requête d'écriture (non présente dans cet exemple à part le mot de vie) s'est bien déroulée.
Le mot de vie est un INT qui tourne de 0 à 9.
Aucune horloge. Le chenillard se décale dès que la requête en cours est terminée.
Le code est plus complet que ça, c'est juste un extrait.

Code : Tout sélectionner

If Valid Then
	
	(* Gestion de la communication *)
	Tab_Gest[2] := Timeout_Req ;
	If Not Tab_Gest[0].0 Then (* Si aucune requête n'est en cours *)

		(* Gestion du registre des requêtes *)
		Registre := SHL (IN := Registre, N := 1); (* Décallage du registre *)
		If Registre = 0 Or INT_TO_REAL(Registre) >= 2.0 ** Taille_Registre Then Registre := 1; End_If;

		Case Registre Of
			1: READ_VAR (Adresse, '%MW', 9108, 2, Tab_Gest, Tab_ES); (* Lecture des 2 mots d'image des E/S *)

			2: READ_VAR (Adresse, '%MW', 9110, 2, Tab_Gest, Tab_Def); (* Lecture des 2 mots d'image des défauts *)

			4: READ_VAR (Adresse, '%MW', 9113, 15, Tab_Gest, Tab_Div); (* Lecture des 15 mots d'image de lecture *)

			8: READ_VAR (Adresse, '%MW', 9130, 15, Tab_Gest, Tab_Etat); (* Lecture des 15 mots d'image d'états *)

			16: READ_VAR (Adresse, '%MW', 9152, 1, Tab_Gest, Tab_Read_Vie); (* Lecture du mot de vie *)

			32: WRITE_VAR (Adresse, '%MW', 9153, 1, Tab_Write_Vie, Tab_Gest); (* Ecriture du mot de vie *)
		End_Case;	

		(* Compteurs des requêtes *)
		If Not Raz_Req Then
			INC_UDINT (Cpt_Req_Tot);
			If Tab_Gest[1] = 0 Then 
				INC_UDINT (Cpt_Req_Ok);
			Else
				INC_UDINT (Cpt_Req_Nok);
			End_If;
		End_If;

	End_If ;

	
	(* Contrôle du mot de vie *)
	T_Com (IN := Tab_Read_Vie[0] <> Tab_Write_Vie[0], PT := INT_TO_TIME(Timeout_Vie), Q => Defaut_Com);

	If Tab_Read_Vie[0] = Tab_Write_Vie[0] Then 
		INC_INT (Tab_Write_Vie[0]);
		If Tab_Write_Vie[0] >= 10 Then Tab_Write_Vie[0] := 0; End_If;
	End_If;
Else
	Defaut_com := Write_done := False;
End_If;
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7089
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: [Ecostruxure Control Expert] [Tuto] Chenillard pour requêtes Read_Var

Message par itasoft »

slts,
c'est bien d'avoir pensé au mot de vie on a tendance à l'oublier , plus sur que le mot de vie tu meurs
Automaticien privé (de tout)
itasoft@free.fr
Uphelus
Code son premier grafcet
Code son premier grafcet
Messages : 50
Enregistré le : 02 janv. 2019, 08:35

Re: [Ecostruxure Control Expert] [Tuto] Chenillard pour requêtes Read_Var

Message par Uphelus »

Bonjour,

Personnellement, lors d'échange entre 2 équipements uniquement, j'ai une préférence pour le bit de vie: Le maitre le met à 0 et l'esclave le mets à 1. Ainsi les 2 équipements peuvent voire si l'autre est fonctionnel.

L'inconvénient: il faut autant de bit de vie que d'équipements et dans les systèmes à interconnexion complexe cela devient rapidement des usine à gaz.
Répondre