Page 1 sur 1

[Ecostruxure Control Expert] Indexage des variables

Posté : 08 nov. 2022, 09:43
par Oliver
Bonjour,

J'ai un problème de compréhension sur l'indexage des variables.

Voici un bout de programme qui permet d'écrire des messages sur un afficheur de marque Siebert.

Code : Tout sélectionner

		(* Présence Alarme avec Variables *)
	Ecran_index:=FIND_EQ_ARINT(CW50,Walmpre);

	(* Affectation d'un numéro de message *)
	IF Ecran_index=-1 THEN
		Ecran_Ligne3:=Walmpre;
	ELSE
		Ecran_Ligne3:=CW70[Ecran_index]+%MW0[CW90[Ecran_index]]-1;
	END_IF;

Ecran_index est un INT (%MW661)
CW50 est un ARRAY OF INT 0..19 (non localisé)
CW70 est un ARRAY OF INT 0..19 (non localisé)
CW90 est un ARRAY OF INT 0..19 (non localisé)
Walmpre est un INT (%MW90)
Ecran_ligne3 est un INT (%MW651)

Donc selon moi :
Ecran_index recherche dans CW50 une valeur égale à Walmpre. Dans mon programme CW50 n'est jamais écris.
Quand Ecran_index trouve une valeur identique, il prend la valeur de la rangée ou il y à égalité.

Ensuite Ecran_ligne3 est égale à = %MW(valeur de Ecran index) + %MW(valeur de Ecran index) - 1.

Ai-je bien compris ?

Re: [Ecostruxure Control Expert] Indexage des variables

Posté : 08 nov. 2022, 14:14
par itasoft
Ecran_ligne3 := CW70(valeur de Ecran index) + %MW0(CW90(Ecran_index))-1;.

Re: [Ecostruxure Control Expert] Indexage des variables

Posté : 08 nov. 2022, 14:47
par Oliver
itasoft a écrit : 08 nov. 2022, 14:14 Ecran_ligne3 := CW70(valeur de Ecran index) + %MW0(CW90(Ecran_index))-1;.
Pourrais-tu développer ? Je comprends pas.

Est-ce que tu es d'accord avec ce principe :

A := B [C]
Si B a pour adresse %MW1
et C est égale à 1
alors A:= %MW1[10] donc A:= %MW11

C'est bien ça ?

Re: [Ecostruxure Control Expert] Indexage des variables

Posté : 15 nov. 2022, 15:29
par andala
Oliver a écrit : 08 nov. 2022, 14:47 A := B [C]
Si B a pour adresse %MW1
et C est égale à 1
alors A:= %MW1[10] donc A:= %MW11

C'est bien ça ?
Si C=10 est non pas 1 alors oui

Re: [Ecostruxure Control Expert] Indexage des variables

Posté : 17 nov. 2022, 14:12
par Oliver
Oui effectivement.

DU coup est ce que ma théorie du premier post est juste ?

Re: [Ecostruxure Control Expert] Indexage des variables

Posté : 17 nov. 2022, 15:34
par philou77
Salut

ARINT est un tableau de INT

donc CW50 est un tableau de INT
pour le reste on voit pas les déclarations donc on peut pas savoir

Ensuite Ecran_ligne3 est égale à = %MW(valeur de Ecran index) + %MW(valeur de Ecran index) - 1.

Non, le deuxième terme est doublement indexé !

Ecran_ligne3 est égale à =CW70(valeur de Ecran index)+ %MW0(CW90(valeur de Ecran index)) - 1

Re: [Ecostruxure Control Expert] Indexage des variables

Posté : 22 nov. 2022, 10:20
par Oliver
Bonjour,

Voici la déclarations

Ecran_index est un INT (%MW661)
CW50 est un ARRAY OF INT 0..19 (non localisé)
CW70 est un ARRAY OF INT 0..19 (non localisé)
CW90 est un ARRAY OF INT 0..19 (non localisé)
Walmpre est un INT (%MW90)
Ecran_ligne3 est un INT (%MW651)

Je suis d'accord pour le deuxième terme, sauf que CW90 est un variable non localisée, donc cela revient à 0 ??

Re: [Ecostruxure Control Expert] Indexage des variables

Posté : 22 nov. 2022, 10:28
par philou77
Re !

Non localisé signifie que l’on ne connaît pas l’adresse physique de la variable, on y accède uniquement par son nom ( CW90[x] dans ton cas )

Walmpre qui est localisée, on peut y accéder par son nom ou son adresse %MW90.