Copie d'un tableau dans un autre
- Béryl
- Mi homme - Mi automate

- Messages : 1956
- Enregistré le : 20 oct. 2015, 12:00
- Localisation : localhost
Copie d'un tableau dans un autre
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.
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.
- itasoft
- Mi homme - Mi automate

- Messages : 7806
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Copie d'un tableau dans un autre
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]);
}
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
itasoft@free.fr
- Béryl
- Mi homme - Mi automate

- Messages : 1956
- Enregistré le : 20 oct. 2015, 12:00
- Localisation : localhost
Re: Copie d'un tableau dans un autre
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) ?
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) ?
- itasoft
- Mi homme - Mi automate

- Messages : 7806
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Copie d'un tableau dans un autre
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)
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
itasoft@free.fr
- Béryl
- Mi homme - Mi automate

- Messages : 1956
- Enregistré le : 20 oct. 2015, 12:00
- Localisation : localhost
Re: Copie d'un tableau dans un autre
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 ?
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 ?
- itasoft
- Mi homme - Mi automate

- Messages : 7806
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Copie d'un tableau dans un autre
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
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
itasoft@free.fr
- Béryl
- Mi homme - Mi automate

- Messages : 1956
- Enregistré le : 20 oct. 2015, 12:00
- Localisation : localhost
Re: Copie d'un tableau dans un autre
Rahh, je m'en sors pas...
... 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.
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());
}
Mon bloc externe (Affectations) et mon tableau interne (Affectation_temp) sont de type UINT.
- itasoft
- Mi homme - Mi automate

- Messages : 7806
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Copie d'un tableau dans un autre
slts,
si "Affectation" c'est un Block alors il faut prendre l'exemple n°1
cliquer dessus pour agrandir
si "Affectation" c'est un Block alors il faut prendre l'exemple n°1
cliquer dessus pour agrandir
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
- Béryl
- Mi homme - Mi automate

- Messages : 1956
- Enregistré le : 20 oct. 2015, 12:00
- Localisation : localhost
Re: Copie d'un tableau dans un autre
Déjà : getIntValue(), avec un g minuscule, ça va mieux
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
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
- itasoft
- Mi homme - Mi automate

- Messages : 7806
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Copie d'un tableau dans un autre
slts,
oui c'est le mieux, LOL
oui c'est le mieux, LOL
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr