[M340] Amelioration programmation en ST

Forum traitant des automates industriels de marque Schneider - Telemecanique
Répondre
Avatar du membre
andala
Créateur de langage
Créateur de langage
Messages : 505
Enregistré le : 19 déc. 2016, 10:24
Localisation : Atlantide

[M340] Amelioration programmation en ST

Message par andala »

Bonjour à tous,
Je vous demande conseil sur le code suivant concernant une mesure de poids d'un element qui s'enregistre dans une BDD:

Code : Tout sélectionner

IF poids_mesure = 0.0 AND En_auto (*Si aucune meule detecté et si la machine fonctionne*)
	THEN 	Top_mesure :=1 ; (*Alors j'autorise la mesure*)
END_IF;

WHILE BDD_poids_enregistrement[index_poids] > 0 AND index_poids <= 200 DO (*Verifie si un emplacement est vide et si le tableau n'est pas plein*)
	index_poids := index_poids + 1;
END_WHILE;

IF poids_mesure < Poids_coherent_min AND poids_mesure > Poids_coherent_max 
	THEN	Top_mesure :=0 ;
		Discordance_poids:=1;
END_IF;


IF poids_mesure > Poids_mini  AND BDD_poids_enregistrement[index_poids] = 0 AND Top_mesure =1 (*Si le poids mesuré est superieur au poids minimum attendu et si la valeur de la BDD correspondante est bien vide (a 0) et que j'autorise une mesure*)
	THEN 	BDD_poids_enregistrement[index_poids] := poids_mesure;
		Top_mesure :=0; (*alors J'inscrit la mesure kdans la BDD a l'index corespondant puis j'interdit une nouvelle mesure*)
END_IF;

IF index_poids = 200 AND BDD_poids_enregistrement[index_poids] > 0 (*Si mon index depasse la valeur du tableau, j'interdit une nouvelle mesure*)
	THEN 	Top_mesure :=0 ;
		Alerte_BDD_pleine := 1;
END_IF;
Pensez-vous qu'il y a moyen de l'optimiser ? le code fonctionne mais je recherche juste une amélioration si il y en a une que vous voyez
Même s'il ne s'agit que de petites modifications, je suis preneur :D

Merci d'avance, comme toujours ;)
Modifié en dernier par andala le 19 déc. 2023, 17:30, modifié 1 fois.
Une bonne action en entraine toujours une autre
Avatar du membre
djé
Dieu du process
Dieu du process
Messages : 864
Enregistré le : 20 oct. 2015, 09:55
Localisation : Bretagne, Pays de la Loire, Nantes
Contact :

Re: [M340] Amelioration programmation en ST

Message par djé »

Salut,

Une remarque: éviter de (ne jamais) faire une comparaison de type "égalité" sur un Type Réel.
En théorie ça marche, en pratique moins : tu prends le risque de ne jamais avoir exactement la valeur comparée (+/-0.000001 au lieu de 0.0 par exemple)
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.

Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
Cedric39
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 134
Enregistré le : 05 déc. 2015, 09:47

Re: [M340] Amelioration programmation en ST

Message par Cedric39 »

Bonjour,

Il est assez hazardeu de comparer a 0 en effet. Surtout pour une balance qui revient rarement a sa tare.

je ferai : IF poids_mesure< Poid_Balance_Vide

il y a aussi des chances de donner une valeur erronée pour une pesée au défilé sur un tapis ou rouleaux en se fiant seulement au poid mini et maxi attendu. n'y a t'il pas un risque que le produit ne soit pas complètement sur la balance et que des qu'on a le poids mini attendu, on écrit celui ci ? (mémoriser la valeur max pendant la mesure si impossible de faire un top mesure par capteurs ou autre ?)


Je doute que le code ST fonctionne et remplisse le tableau avec les valeurs attendu

Et un tableau de valeur a consulter sur un IHM n'est pas une base de donnée. L'ihm est quel model ? il ne sais pas écrire un csv ou autre manière ?
Avatar du membre
andala
Créateur de langage
Créateur de langage
Messages : 505
Enregistré le : 19 déc. 2016, 10:24
Localisation : Atlantide

Re: [M340] Amelioration programmation en ST

Message par andala »

Cedric39 a écrit : 20 déc. 2023, 08:34 Il est assez hasardeux de comparer a 0 en effet. Surtout pour une balance qui revient rarement a sa tare.
Oui du coup c'est ce que j'ai fait
Une bonne action en entraine toujours une autre
Répondre