-> Hier kostenlos registrieren
Hallo zusammen,
ich habe folgendes Problem, programmiert mit TIA V15.1 UPD2 auf einer 1517F-3 PN/DP:
Das Meldesystem ist mittels ProDiag realisiert und diese werden mittels Get_Alarm ausgelesen und in einen Puffer eingetragen, um diese an das MES zu übertragen.
Wenn nun eine Meldung die in dem Moment noch ansteht (State war 1, aber noch nicht 0) aus dem ProDiag entfernt wird, steht diese Datenleiche noch in dem Puffer und wird auch nicht entfernt, da diese Kombination aus ID_1 und ID_2 nicht mehr ihren State auf 0 ändern kann (da nicht mehr vorhanden). Dadurch entsteht über die Zeit Datenmüll der sich bisher nur über 2 Möglichkeiten bereinigen lässt:
1. Den Puffer_DB neu reinitialisieren. Dadurch sind die Altlasten entfernt, aber leider sind dadurch auch die Meldungen gelöscht, die aktuell anstehen. Da die Meldung über Get_Alarm bereits ausgelesen wurde, wird sie erst wieder ausgegeben, wenn sich der State zu 0 ändert, aber da die Meldung ja eh schon gelöscht wurde, kommt Sie nun erst beim nächsten State 1 wieder. Je nach aktuell anstehenden Meldungen entweder unschön oder zu dem Zeitpunkt nicht realisierbar.
2. Die CPU neu starten: Dadurch wird der DB auch reintialisiert und die aktuell anstehenden Meldungen werden nochmal als kommend deklariert (da die Signale ja auch wieder neu gebildet werden). Natürlich ist es unschön wegen einer Änderung am Meldesystem die CPU neu starten zu müssen.
Gibt es hierfür einen möglichen Ansatz? Kann man beispielsweise den Zustand der per Get_Alarm ausgegebenen Meldungen erneut abfragen oder möglicherweise mit einem anderen Baustein den Zustand der Meldung über die ID abfragen? Oder kann man ProDiag "initialisieren", sodass die Meldungen mittels Get_Alarm wieder ausgegeben werden um die nach der Änderung anstehenden Meldungen erneut in den Puffer schreiben zu können?
Vielen Dank im Voraus.
ich habe folgendes Problem, programmiert mit TIA V15.1 UPD2 auf einer 1517F-3 PN/DP:
Das Meldesystem ist mittels ProDiag realisiert und diese werden mittels Get_Alarm ausgelesen und in einen Puffer eingetragen, um diese an das MES zu übertragen.
Wenn nun eine Meldung die in dem Moment noch ansteht (State war 1, aber noch nicht 0) aus dem ProDiag entfernt wird, steht diese Datenleiche noch in dem Puffer und wird auch nicht entfernt, da diese Kombination aus ID_1 und ID_2 nicht mehr ihren State auf 0 ändern kann (da nicht mehr vorhanden). Dadurch entsteht über die Zeit Datenmüll der sich bisher nur über 2 Möglichkeiten bereinigen lässt:
1. Den Puffer_DB neu reinitialisieren. Dadurch sind die Altlasten entfernt, aber leider sind dadurch auch die Meldungen gelöscht, die aktuell anstehen. Da die Meldung über Get_Alarm bereits ausgelesen wurde, wird sie erst wieder ausgegeben, wenn sich der State zu 0 ändert, aber da die Meldung ja eh schon gelöscht wurde, kommt Sie nun erst beim nächsten State 1 wieder. Je nach aktuell anstehenden Meldungen entweder unschön oder zu dem Zeitpunkt nicht realisierbar.
2. Die CPU neu starten: Dadurch wird der DB auch reintialisiert und die aktuell anstehenden Meldungen werden nochmal als kommend deklariert (da die Signale ja auch wieder neu gebildet werden). Natürlich ist es unschön wegen einer Änderung am Meldesystem die CPU neu starten zu müssen.
Gibt es hierfür einen möglichen Ansatz? Kann man beispielsweise den Zustand der per Get_Alarm ausgegebenen Meldungen erneut abfragen oder möglicherweise mit einem anderen Baustein den Zustand der Meldung über die ID abfragen? Oder kann man ProDiag "initialisieren", sodass die Meldungen mittels Get_Alarm wieder ausgegeben werden um die nach der Änderung anstehenden Meldungen erneut in den Puffer schreiben zu können?
Vielen Dank im Voraus.