-> Hier kostenlos registrieren
Hallo,
ich habe folgendes Problem, ich bekomme von der SPS einen INT-Wert zwischen 0-300. Die Werte 1-300 sollen eine Störmeldung ausgeben,
also habe ich nun 300 interne Variablen (Stoerung_1 bis Stoerung_300) angelegt, welche dann auf 1 gesetzt werden, wenn der jeweilige INT-Wert geschickt wird (also INT-Wert = 3, Störmeldung Nr. 3 wird ausgegeben)
Was soweit kein Problem darstellt, jedoch möchte ich nun, wenn der INT-Wert 0 wird, auch alle Störmeldungen quittieren, bzw. alle Störbits 0 setzen, was ich mit einer for-schleife geplant hatte,
jedoch scheint es nur bis etwa 200 zu funktionieren, danach stürzt WinCC (SCRIPT) immer ab...hätte hier vielleicht jemand eine Idee wie man es besser machen könnte, bzw. was das Problem sein könnte?
Hier ein Beispiel, wie ich es lösen wollte:
Vielen Dank im Voraus,
mfG
ich habe folgendes Problem, ich bekomme von der SPS einen INT-Wert zwischen 0-300. Die Werte 1-300 sollen eine Störmeldung ausgeben,
also habe ich nun 300 interne Variablen (Stoerung_1 bis Stoerung_300) angelegt, welche dann auf 1 gesetzt werden, wenn der jeweilige INT-Wert geschickt wird (also INT-Wert = 3, Störmeldung Nr. 3 wird ausgegeben)
Was soweit kein Problem darstellt, jedoch möchte ich nun, wenn der INT-Wert 0 wird, auch alle Störmeldungen quittieren, bzw. alle Störbits 0 setzen, was ich mit einer for-schleife geplant hatte,
jedoch scheint es nur bis etwa 200 zu funktionieren, danach stürzt WinCC (SCRIPT) immer ab...hätte hier vielleicht jemand eine Idee wie man es besser machen könnte, bzw. was das Problem sein könnte?
Hier ein Beispiel, wie ich es lösen wollte:
Code:
#define TAG_1 "Stoerung_Test"
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
char StoerNr[64] ="Stoerung_";
char Var[301][64];
char num[301];
int i=0;
if (GetTagByte(TAG_1) == 0)
{
for(i = 1; i <= 301; i++){
sprintf(num, "%i", i);
strcpy(Var[i],StoerNr);
strcat(Var[i],num);
#define TAG_Num Var[i]
SetTagBit(TAG_Num,0); //Return-Type: BOOL
}
}
else if (GetTagByte(TAG_1) == 1)
{
SetTagBit("Stoerung_1",1); //Return-Type: BOOL
}
else if (GetTagByte(TAG_1) == 2)
{
SetTagBit("Stoerung_2",1); //Return-Type: BOOL
}
Vielen Dank im Voraus,
mfG