Page 1 sur 1

Problème Langage ST

Posté : 20 nov. 2016, 15:14
par dellkarim
Bonjour tout le monde,

Dans le cadre de mon travail, j’étais amené a faire une analyse d'un programme sous PL7 Pro pour résoudre un petit problème de communication en Modbus entre l'automate et un boitier de mesure de température, le bloc qui récupère les données de ce boitier est écrit en ST ,présenté comme suivant

Les variables suivantes : station, Module, Esclave et Timeout sont déclarées comme entrées (WORD).
Si je me trompe pas la variable "Adresse" est un tableau c'est ça ? mais ce que je comprend pas c'est que à la fin dans la fonction READ_VAR elle va prendre quelle valeur ?

Donc si juste vous pouvez me clarifier cela , je serai très reconnaissant.

Merci pour votre aide.

IF Exec AND NOT Eant_exe THEN
(* préparation de la table adresse *)
Adresse[0]:=16#0600;

Motrav:=SHL(Station,8);
Adresse[1]:=Reseau OR Motrav;

Motrav:=SHL(Module,8);
Adresse[2]:=Rack OR Motrav;

Motrav:=SHL(Esclave,8);
Adresse[3]:=Voie OR Motrav;

Adresse[4]:=16#0000;
Adresse[5]:=16#0000;

(* paramétrage time-out en 1/10s *)
Gestion[2]:=Timeout;

(* lancer fonction de lecture *)
READ_VAR (Adresse,Objet,Adress,Nombre,Recep,Gestion);

END_IF;

Re: Problème Langage ST

Posté : 20 nov. 2016, 23:49
par itasoft
Slts,
C’est un adressage en dynamique ,
c’est pour que avec la même instruction READ_VAR il peut s’adresser à plusieurs esclaves différents sur plusieurs réseaux,
encore un tordu, de plus c’est pas bon car avant de lancer une requête il faut tester la non présence du bit d’activité (Gestion :X0) sinon ça peut les empiles jusqu’au blocage.


(* lancer fonction de lecture *)
IF NOT Gestion[0]:X0 THEN
Gestion:4=0;
Gestion[2]:=Timeout;
READ_VAR (Adresse,Objet,Adress,Nombre,Recep,Gestion);
END_IF;

Re: Problème Langage ST

Posté : 21 nov. 2016, 07:00
par maxpeigne
Gestion est une longueur de 4 mots, Eant_exe est certainement le X0 du 1er mot.