Habituellement je programme en fonction bloc, mais la fonction que je veux faire dépasse les capacité de mon API.
Du coup je m'attaque à le faire en IL. Et la dernière fois que j'ai fait de l'IL c'était en TP en 1ère ou un Terminale.
Ce que je veux faire :
J'ai un automate qui reçoit l'état de 250 autres API. Chaque API envoient de quoi faire 8 alarmes : lifebit, niveau 0, 1 et 2, mode Urgence, Mode manuel, erreut T66x, info Libre.
Je veux savoir combien j'ai d'alarmes actives pour chaque type (lifebit, niveau, etc)
Les bits de mes alarmes sont adressés : Automate 1 : Flag 20 à 27,
Automate 2 : Flag 30 à 37;
Etc
Ce que je veux donc faire (en gros, si c'était en C, ça ressemblerait à ça):
Code : Tout sélectionner
Tampon1 =0 ;
Compteur =0;
For (cpt, 1, 250)
{
If (F 20 + Compteur) ==1 Then
{
Tampon1++ ;
}
compteur = compteur +10;
cpt ++;
}
Nombre_Alarmes = Tampon1;
Et j'y arrive pas en IL.
Code : Tout sélectionner
LD PCD.Alarme.Nb.Niveau_0.Temp ;
0
LD Compteur ;
0
LD PCD.Alarme.Test.Niveau_0 ;
1
LD Result_N0 ;
0
CompteurBis LDEF R 0
ResultBis LDEF R 0
SymbolB LDEF R 0
$FOR CompteurBis = 0 .. 20
XLA SymbolB ;
F 20 + Compteur
Compteur DEF Compteur+10
$IF SymbolB = 1 ;
INC PCD.Alarme.Nb.Niveau_0.Temp
$ENDIF
$ENDFOR
COPYX Result_N0
PCD.Alarme.Nb.Niveau_0.Value
Bref, si vous savez comment faire je prends