-> Hier kostenlos registrieren
Ich überlege schon wie ich die Auftragsliste Steuere, also über eine If Anweisung oder über eine FOR-Schleife.
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
STRUCT typMsg
sTopic: STRING;
sMessage: STRING;
END_STRUCT
STRUCT typBuffer
iPosition: INT;
aMsg: ARRAY[1..MAX_MSG] OF typMsg;
END_STRUCT
myBuffer: typBuffer;
PROGRAM Test
VAR
//Publish Test
oFbPublish: WagoAppCloud.FbPublishMQTT_2 (eConnection:= 1);
xMyTrigger : BOOL := FALSE;
dwBusyCounter : DWORD := 0;
dwErrorCounter : DWORD := 0;
dwBytesCount : DWORD;
xTaster1: BOOL;
xTest: BOOL;
sTopictoPublish: STRING(255):= '';
aBufferData: POINTER TO BYTE;
sMessage: STRING;
BufferData: typBuffer;
ptSource: POINTER TO BYTE; // Quellpointer
ptDestination: POINTER TO BYTE; // Zielpointer
END_VAR
// Trigger MQTT publish
oFbPublish(sTopic := ,
eQualityOfService := 1,
dwSize := dwBytesCount,
aData := ,
xTrigger := xMyTrigger);
FOR BufferData.iPosition :=1 TO 100 DO
IF BufferData.iPosition >100 THEN
BufferData.iPosition:= 1;
ELSIF BufferData.iPosition <100 AND oFbPublish.xTrigger = FALSE THEN
ptSource:=ADR(sMessage);
ptDestination:=ADR(aDaten);
oFbPublish.xTrigger := TRUE;
END_IF
END_FOR
Das steht ja schon in den vergangenen Posts und bringt den Kollegen hier nicht weiter.Jetzt misch ich mich auch mal ein:
Bedingung für Publish ist ja im Prinzip ein auslösendes Event.
Je nach Verarbeitung auf dem anderem System (Visualisierung, Leitsystem) kann auf der SPS eine Queue sinnvoll sein.
Sowas macht man normalerweise mit einem FIFO.
BufferData.aMsg[1].sMessage := TO_STRING (GVL.rWohnzimmer_Licht_Haenge_Value);
BufferData.aMsg[1].sTopic := '1.Etage/Wohnzimmer/Licht1/state';
BufferData.aMsg[2].sMessage := TO_STRING (GVL.rWohnzimmer_Licht_Spots_Value);
BufferData.aMsg[2].sTopic := '1.Etage/Wohnzimmer/Licht2/state';
BufferData.aMsg[3].sMessage :=TO_STRING( GVL.rKizi1_Licht_Value);
BufferData.aMsg[3].sTopic := '1.Etage/Kinderzimmer1/Licht1/state';
BufferData.aMsg[4].sMessage :=TO_STRING( GVL.rKizi2_Licht_Value);
BufferData.aMsg[4].sTopic := '1.Etage/Kinderzimmer2/Licht1/state';
BufferData.aMsg[5].sMessage :=TO_STRING( GVL.rFlur_Licht_Value);
BufferData.aMsg[5].sTopic := '1.Etage/Flur/Licht1/state';
BufferData.aMsg[6].sMessage :=TO_STRING( GVL.rKueche_Licht_Value);
BufferData.aMsg[6].sTopic := '1.Etage/Küche/Licht1/state';
BufferData.aMsg[7].sMessage :=TO_STRING( GVL.rklFlur_Licht_Value);
BufferData.aMsg[7].sTopic := '1.Etage/kleinerFlur/Licht1/state';
BufferData.aMsg[8].sMessage :=TO_STRING( GVL.rBad_Licht_Value);
BufferData.aMsg[8].sTopic := '1.Etage/Bad/Licht1/state';
Jep.Meinst du mit FIFO = First in First out und FILO = First in Last out?
Also ich würde die Werte gerne alle 500 ms - 1s die Werte verschicken.
Natürlich kann man auch nur nach Wertänderungen senden, das würde die Netzwerklast etwas herunter setzten.
Willst du das wegen des Clients (Handy, Tablet, ...) so häufig senden, damit das schnell bei Verbindung die aktuellen Werte bekommt?Also ich würde die Werte gerne alle 500 ms - 1s die Werte verschicken.
Natürlich kann man auch nur nach Wertänderungen senden, das würde die Netzwerklast etwas herunter setzten.
Wir verwenden essentielle Cookies, damit diese Website funktioniert, und optionale Cookies, um den Komfort bei der Nutzung zu verbessern.
Siehe weitere Informationen und konfiguriere deine Einstellungen