-> Hier kostenlos registrieren
Hallo Harald
Heute hatte ich Zeit mir dein Programm mal anzuschauen. Im großen und ganzen hab ich verstanden wie du die Meldungen verarbeitest, allerdings funktioniert die Flankenauswertung für die Neuwertmeldung bei mir nicht.
Um nur die Flankenauswertung zu testen hab ich folgendes gemacht:
Neues Programm angelegt:
OB1
FC15
Den DB "DB_Meldungen" hab ich unverändert übernommen. Alle Bits im EW0 auf 1 gesetzt. In PLCSIM geladen und dann E0.0 auf 0 gesetzt. Jetzt hätte doch eigentlich M5.0 auf 1 gehen müssen, macht er aber erst, wenn E0.0 wieder 1 wird. Das würde ja bedeuten, dass die Neuwertmeldung erst beim "Gehen" und nicht beim "Kommen" der Störung aktiviert wird. Hab ich da wieder einen Denkfehler?
Gruß
bastler
Heute hatte ich Zeit mir dein Programm mal anzuschauen. Im großen und ganzen hab ich verstanden wie du die Meldungen verarbeitest, allerdings funktioniert die Flankenauswertung für die Neuwertmeldung bei mir nicht.
Um nur die Flankenauswertung zu testen hab ich folgendes gemacht:
Neues Programm angelegt:
OB1
Code:
call FC15
Code:
NW1
//Filter aktive Meldungen + Flanke Meldung "kommt"
L EW0 //alle Meldungen jetzt = 1
L "DB_Meldungen".Ignore[1] //ignore=1
INVI //-> ignore=0
UW //-> filtern [COLOR=Blue]
T #ErrMsg_akt_1 //aktive Meldungen jetzt = 1
L "DB_Meldungen".ErrMsg[1] //Meldungen vorher
INVI //vorher = 0
UW //-> neu = 1[/COLOR]
U <>0
= #Temp_Neustoer //AKKU1 Bits=1: Meldung "kommt" (neu) //-> die zugehörigen "OPQuit[x].y" löschen //-> die anderen "OPQuit[x].y" beibehalten/übernehmen
INVI //-> NICHT neu = 1
L "DB_Meldungen".OPQuit[1] //Quit irgendein OP UW //nicht neue beibehalten
T "DB_Meldungen".OPQuit[1] //neue löschen
T "DB_Meldungen".ErrMsg[5] //OPQuit zu AQuit -> alle OP [COLOR=blue]
L #ErrMsg_akt_1 //aktive Meldungen jetzt
T "DB_Meldungen".ErrMsg[1] //-> Meldungen vorher + OP[/COLOR]
NW2
L #Temp_Neustoer
S M5.0
Gruß
bastler