-> Hier kostenlos registrieren
Moin Zusammen,
Ich habe wieder mal ein keines Problem beim Programmieren.
Erst mal mein Setting:
- CPU 1514SP-2 PN
- IM 155-6 PN ST (verbunden zur CPU über Profinet)
Mein Problem:
Ich habe drei LMQTT Clients in meinem Programm, diese haben einen valid Ausgang welcher sobald der Client verbunden ist auf TRUE schaltet.
Nun möchte ich sobald alle drei Clients verbunden sind (also alle drei Ausgänge valid auf TRUE sind) eine Nachricht senden. Jedoch soll die nachricht nur einmal gesendet weden (praktisch als Initialsierung). Die Nachricht kann erst wieder gesendet werden sobald einer (oder alle im Normalfall) der valid-Ausgänge an den Clients auf FALSE sind.
Aktuell ist es so (allerdings wird hier in jedem Zyklus geschickt, was natürlich nicht sein soll):
Latch_Set ist die Abfrage ob alle der drei Ausgänge valid sind
Output schaltet den Ausgang (ist eine InIOut variable)
latch_global war ein Test mit einer Variable die den Zustand speichern soll
Vielen Dank schon mal!
Fabi
Ich habe wieder mal ein keines Problem beim Programmieren.
Erst mal mein Setting:
- CPU 1514SP-2 PN
- IM 155-6 PN ST (verbunden zur CPU über Profinet)
Mein Problem:
Ich habe drei LMQTT Clients in meinem Programm, diese haben einen valid Ausgang welcher sobald der Client verbunden ist auf TRUE schaltet.
Nun möchte ich sobald alle drei Clients verbunden sind (also alle drei Ausgänge valid auf TRUE sind) eine Nachricht senden. Jedoch soll die nachricht nur einmal gesendet weden (praktisch als Initialsierung). Die Nachricht kann erst wieder gesendet werden sobald einer (oder alle im Normalfall) der valid-Ausgänge an den Clients auf FALSE sind.
Aktuell ist es so (allerdings wird hier in jedem Zyklus geschickt, was natürlich nicht sein soll):
Latch_Set ist die Abfrage ob alle der drei Ausgänge valid sind
Output schaltet den Ausgang (ist eine InIOut variable)
latch_global war ein Test mit einer Variable die den Zustand speichern soll
Code:
#Output := FALSE;
#LatchSet := (#PUB_valid AND
#SUB_valid AND
#PUB_MISC_valid);
IF #LatchSet AND NOT #Latch_global THEN
#Output := TRUE;
#Latch_global := TRUE;
END_IF;
IF NOT #PUB_valid OR NOT #SUB_valid OR NOT #PUB_MISC_valid THEN
#Output := FALSE;
#Latch_global := FALSE;
END_IF;
Vielen Dank schon mal!
Fabi