Copie des bits de DB dans des variables WORD
Copie des bits de DB dans des variables WORD
Bonsoir à tous,
Etant donné que WinCC impose l'utilisation des variables de type INT/WORD pour la déclaration d'alarmes, je souhaiterais avoir votre avis/solution à ma difficulté.
J'ai un bloc de données DB1 ARRAY de UDT (ma structure de données UDT dans laquelle il y a un bit d'alarme).
Dans chaque élément de tableau pour chaque entrée TOR, j'ai la variable DI_Alarm qui est en fait sensé déclencher une alarme TOR si cette variable est à 1.
Pour chaque élément de mon DB1, j'ai un bit d'alarme. Sauf que je ne peux pas l'utiliser dans WinCC V14 comme alarme puisqu'on impose une variable de type INT pour une alarme TOR.
J'ai fait remonter cette structure de données sur TIA Portal parceque j'ai des faceplates qui utilisent la même structure de données.
Je souhaite donc copier les bits de ma structure de données dans des variables de types INT, et remonter ces variables sur WinCC pour définir mes alarmes. Comment faire ? Je sens que le SCL va sûrment être obligatoire mais peut être vous avez déjà été confrontés au même problème.
Etant donné que WinCC impose l'utilisation des variables de type INT/WORD pour la déclaration d'alarmes, je souhaiterais avoir votre avis/solution à ma difficulté.
J'ai un bloc de données DB1 ARRAY de UDT (ma structure de données UDT dans laquelle il y a un bit d'alarme).
Dans chaque élément de tableau pour chaque entrée TOR, j'ai la variable DI_Alarm qui est en fait sensé déclencher une alarme TOR si cette variable est à 1.
Pour chaque élément de mon DB1, j'ai un bit d'alarme. Sauf que je ne peux pas l'utiliser dans WinCC V14 comme alarme puisqu'on impose une variable de type INT pour une alarme TOR.
J'ai fait remonter cette structure de données sur TIA Portal parceque j'ai des faceplates qui utilisent la même structure de données.
Je souhaite donc copier les bits de ma structure de données dans des variables de types INT, et remonter ces variables sur WinCC pour définir mes alarmes. Comment faire ? Je sens que le SCL va sûrment être obligatoire mais peut être vous avez déjà été confrontés au même problème.
Re: Copie des bits de DB dans des variables WORD
je sais pas combien d'alarme tu as, mais je pense qu'il faut que tu écrives tes bits d'alarmes dans un mot.
Je m'explique:
Imaginons que tu as 32 alarmes.
tu écris tes variables d'alarmes dans un tableau de bit:
Ensuite tu écris un mot suivant ton tableau d'alarme:
Voilà, maintenant tu as un mot avec tes 32 alarmes, donc 1 bit = 1 alarmes.
Ton DB_DI.DI.DI[1].DI_ALARME sera sur le bit 0 du mot #Mot_alm.
Donc, si ton mot vaut 1, ton bit 1 est activé, si il vaut 2, ton bit 2 est activé, si il vaut 3 tes bits 1 et 2 sont activés etc...
Voilà j’espère t'avoir aidé.
Si tu as des questions je suis dispo, c'est une méthode, sûrement que quelqu'un d'autre en aura une autre .
il y a autant de façon de coder qu'il y a d'automaticien ^^.
Je m'explique:
Imaginons que tu as 32 alarmes.
tu écris tes variables d'alarmes dans un tableau de bit:
Code : Tout sélectionner
//Ecriture des alarmes dans un tableau de bit
#Alm[1] := DB_DI.DI.DI[1].DI_ALARME
#Alm[2] := DB_DI.DI.DI[2].DI_ALARME
#Alm[3] := DB_DI.DI.DI[3].DI_ALARME
...
...
...
#Alm[32] := DB_DI.DI.DI[32].DI_ALARME
Ensuite tu écris un mot suivant ton tableau d'alarme:
Code : Tout sélectionner
//Ecriture du mot d'alarme
#Mot_alm := 0;
FOR #i := 0 TO 31
DO
IF #Alm[#i]
THEN
#Mot_alm := #Mot_alm OR 16#0001;
END_IF;
#Mot_alm := ROR(IN := #Mot_alm , N := 1);
END_FOR;
Ton DB_DI.DI.DI[1].DI_ALARME sera sur le bit 0 du mot #Mot_alm.
Donc, si ton mot vaut 1, ton bit 1 est activé, si il vaut 2, ton bit 2 est activé, si il vaut 3 tes bits 1 et 2 sont activés etc...
Voilà j’espère t'avoir aidé.
Si tu as des questions je suis dispo, c'est une méthode, sûrement que quelqu'un d'autre en aura une autre .
il y a autant de façon de coder qu'il y a d'automaticien ^^.
Re: Copie des bits de DB dans des variables WORD
Je te remercie infiniment.
Je vais mettre ca dans la logique, ta solution répond a mon besoin.
Pour ecrire les variables d'alarmes je compte passer par une boucle en faisant varier i.
Je vais mettre ca dans la logique, ta solution répond a mon besoin.
Pour ecrire les variables d'alarmes je compte passer par une boucle en faisant varier i.
- itasoft
- Mi homme - Mi automate
- Messages : 7035
- Inscription : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Copie des bits de DB dans des variables WORD
slts,
ceci dit, c'est pas comme ça que l'on traite le problème:
l'entrée alarme la copier dans ta structure et en même temps dans un bit d'un mot spécifique ALARMES
commencer par se structurer soi même, LOL
ceci dit, c'est pas comme ça que l'on traite le problème:
l'entrée alarme la copier dans ta structure et en même temps dans un bit d'un mot spécifique ALARMES
commencer par se structurer soi même, LOL
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Copie des bits de DB dans des variables WORD
Itasoft, le bit DI[1].DI_ALARM est en fait la condition qui doit declencher l'alarme.
Ce bit existe dans un DB DI lui meme etant un tableau d'une structure UDT.
L'idee est de creer un nouveau tableau qui ne contient que des alarmes et de recopier ces alarmes dans des mots qui seront utilises sur WinCC.
Ce bit existe dans un DB DI lui meme etant un tableau d'une structure UDT.
L'idee est de creer un nouveau tableau qui ne contient que des alarmes et de recopier ces alarmes dans des mots qui seront utilises sur WinCC.
- itasoft
- Mi homme - Mi automate
- Messages : 7035
- Inscription : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Copie des bits de DB dans des variables WORD
slrs,
OK,
j'avais compris que c’était une entrée TOR qui déclenchais l'alarme
OK,
j'avais compris que c’était une entrée TOR qui déclenchais l'alarme
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr