Copie d'un tableau dans un autre

Partie du forum pour tout ce qui concerne les interfaces homme machine ou IHM. Forum, conseil, astuce et entraide sur les interface homme machine ou IHM tels que les magelis, KEP, proface, XBT, .
Avatar du membre
Béryl
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1956
Enregistré le : 20 oct. 2015, 12:00
Localisation : localhost

Copie d'un tableau dans un autre

Message par Béryl »

Bonjour à tous,

Dans Vijeo Designer, je cherche à copier un tableau interne dans un tableau externe lors de l'appui sur un bouton.
Je voudrais que le tableau externe soit aussi copié dans celui interne lors de l'affichage de la page (c'est un paramétrage d'installation avec ou sans sauvegarde)
Je ne trouve pas. Obligé de passer par un script ?
Bien sûr, je pourrais gérer cela par l'automate (57 sous Unity), mais ça m'oblige à créer un tableau de plus dans celui-ci alors que ça pourrait très bien être pris en compte par l'IHM (HMIGTO 6330) en local.

Si quelqu'un a une idée, je prends !
Merci.
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7806
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: Copie d'un tableau dans un autre

Message par itasoft »

slts,
Sur Vijeo-designer ya pas d'autres solutions que de passer par un Script

exemple de script


int X=0;

// Tableau interne
int[] TBLOC;

//Copie du Tableau automate %MW100:16 dans le Bloc Tampon
TBLOC=BlockINT01.getIntValues();

//Boucle copier dans le tableau externe dans le tableau interne
for (X=0;X<16;X++)
{
TAB_INTERNE[X].write(TBLOC[X]);
}
Automaticien privé (de tout)
itasoft@free.fr
Avatar du membre
Béryl
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1956
Enregistré le : 20 oct. 2015, 12:00
Localisation : localhost

Re: Copie d'un tableau dans un autre

Message par Béryl »

Merci Itasoft !

Plusieurs questions : je vois que tu passes par un blockINT. Quelle est la différence entre un blockINT et un Array[] of INT dont chaque élément pointe vers un mot de l'automate ?
Autre point : pourquoi passer par un bloc tampon (d'ailleurs que fait exactement TBLOC=BlockINT01.getIntValues();) ?
Enfin, se basant sur Java, la méthode clone() fonctionne-t-elle sous Vijéo Designer (je ne l'ai pas sous la main au moment où j'écris ces lignes) ?
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7806
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: Copie d'un tableau dans un autre

Message par itasoft »

slts,
Quelle est la différence entre un blockINT et un Array[]
Les blockINT se mettent à jour plus rapidement que les ARRAY

d'ailleurs que fait exactement TBLOC=BlockINT01.getIntValues();
ça copie le Block dans un tableau local (plus rapide)

le Java de Vijeo c'est un Java dépouillé, ya pas de Clone()

//==========================================================
//Boucle copier le tableau externe dans le tableau interne
for (X=0;X<16;X++)
{
TAB_INTERNE[X].write(TAB_EXTERNE[X].GetIntValue());
}

en faisant comme ça, ça charge dans la mémoire les deux tableaux à chaque tour.
ceci dit, c'est pas génant, comme je fais moi c'est pour le FUN,
LOL
//=====================================================================

Conseil 1:
Pour la rapidité d'acquisition il est forment conseillé d'utiliser des variables automate consécutives
sinon ça demande trop de requêtes

Conseil 2:
dans un Script,Ne jamais faire des écritures de variables externes (%MW) en permanence, ça monopolise la COM avec l'API
(ne le faire que sur un changement d'état)
Automaticien privé (de tout)
itasoft@free.fr
Avatar du membre
Béryl
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1956
Enregistré le : 20 oct. 2015, 12:00
Localisation : localhost

Re: Copie d'un tableau dans un autre

Message par Béryl »

Merci pour tes réponses Itasoft !
Si on peut faire un TBLOC=BlockINT01.getIntValues(); on doit pouvoir faire un BlockINT01=TBLOC.getIntValues(); et éviter la boucle, non ?

Tiens, d'ailleurs, où trouve-t-on la doc du langage de script de Vijéo Designer ?
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7806
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: Copie d'un tableau dans un autre

Message par itasoft »

slts,
non ça marche pas ça,
pour la Doc il faut avoir des bases en Java sinon ya pas grand chose sur la doc de Vijeo
Automaticien privé (de tout)
itasoft@free.fr
Avatar du membre
Béryl
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1956
Enregistré le : 20 oct. 2015, 12:00
Localisation : localhost

Re: Copie d'un tableau dans un autre

Message par Béryl »

Rahh, je m'en sors pas...

Code : Tout sélectionner

//Copie du Tableau interne dans le tableau externe
int X=0;

for (X=0;X<15;X++)
{
Affectations[X].write(Affectations_temp[X].GetIntValue());
}
... me sort une erreur "Erreur S8037: [Commutateur01- Script] [Ligne:13] Le type «Tag.INTEGER» n'est pas un type de tableau."

Mon bloc externe (Affectations) et mon tableau interne (Affectation_temp) sont de type UINT.
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7806
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: Copie d'un tableau dans un autre

Message par itasoft »

slts,
si "Affectation" c'est un Block alors il faut prendre l'exemple n°1

cliquer dessus pour agrandir
Block1.JPG
Block2.JPG
Automaticien privé (de tout)
itasoft@free.fr
Avatar du membre
Béryl
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1956
Enregistré le : 20 oct. 2015, 12:00
Localisation : localhost

Re: Copie d'un tableau dans un autre

Message par Béryl »

Déjà : getIntValue(), avec un g minuscule, ça va mieux :oops:
Ensuite, je veux copier mon tableau interne déclaré dans mes variables (Affectation_temp), dans le block externe (Affectations).
C'est marrant parce que si je prends un tableau pointant vers des %M à la place du block, ça marche.

Autrement dit :

Affectations[X].write(Affectations_temp[X].getIntValue())

Si le premier terme est un tableau, ça marche ; si c'est un block j'ai l'erreur " Le type «Tag.INTEGER» n'est pas un type de tableau"

Je vais peut-être me passer des blocks ;)
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7806
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: Copie d'un tableau dans un autre

Message par itasoft »

slts,
oui c'est le mieux, LOL
Automaticien privé (de tout)
itasoft@free.fr
Répondre