MichaelSeiffert
Level-1
- Beiträge
- 6
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Moin Jungs,
ich hab ein Problem, nicht wirklich Ahnung, bin aber lernwillig und hoffe ihr könnt mir helfen
Ich hab ne CX9020 bei mir als Haussteuerung sitzen, was ich bis jetzt mit TwinCat2 programmiert hab (FBH, Licht, Raffstores...) funktioniert auch soweit.
Ich hab eine Wetterstation, die Analogwerte (0-10V) liefert von Windgeschwindigkeit, Temperatur, Helligkeit... Diese Daten möchte ich aufzeichnen und am Besten auf der 2. SD-Karte der CX speichern.
Da das alles auf einmal für mich zu viel ist dachte ich mir ich fang erst mal an und sammle die Daten.
Dabei stieß ich auf Array und Struct und hab nix verstanden... Jetzt is mir schon mal der Unterschied klar und ich hab mithilfe von euch dem Forum und Schulungsunterlagen einen Ansatz hin bekommen.
Alle 30s sollen die Messwerte im Struct gespeichert werden bis zum Maximum und dann der erste überschrieben werden.
Das ganze sieht bis jetzt so aus:
PROGRAM Datenlogger
VAR
Daten: Temperatur_Logger_Daten;
Liste: ARRAY [1..1000] OF Temperatur_Logger_Daten ;
Index: INT:=1;
Takt: TON;
END_VAR
LDN Takt.Q
ST Takt.IN
CAL Takt(PT := T#30s)
LDN Takt.Q
JMPC Ende
LD Daten
ST Liste[Index]
LD Index
ADD 1
ST Index
LD Index
EQ 1001
JMPCN Ende
LD 1
ST Index
ENDE:
RET
TYPE Temperatur_Logger_Daten
STRUCT
Temperatur: INT;
Zeitstempel: DT;
END_STRUCT
END_TYPE
Die Werte werden wenn ich online gehe schön alle 30s gespeichert, nur ist der Temperaturwert 0 und das Datum auf 1970...
In den Unterlagen hab ich gelesen das der erstellte Datentyp Struct in den globalen Variablen verfügbar ist. Bei mir leider nicht...
Muss ich das/den Struct noch irgendwie in den Globalen Variablen deklarieren?
Oder bin ich total auf dem Holzweg und der Ansatz is schon verkehrt?
Danke für Eure Mühe und Hilfe!
Gruß
Michael
ich hab ein Problem, nicht wirklich Ahnung, bin aber lernwillig und hoffe ihr könnt mir helfen
Ich hab ne CX9020 bei mir als Haussteuerung sitzen, was ich bis jetzt mit TwinCat2 programmiert hab (FBH, Licht, Raffstores...) funktioniert auch soweit.
Ich hab eine Wetterstation, die Analogwerte (0-10V) liefert von Windgeschwindigkeit, Temperatur, Helligkeit... Diese Daten möchte ich aufzeichnen und am Besten auf der 2. SD-Karte der CX speichern.
Da das alles auf einmal für mich zu viel ist dachte ich mir ich fang erst mal an und sammle die Daten.
Dabei stieß ich auf Array und Struct und hab nix verstanden... Jetzt is mir schon mal der Unterschied klar und ich hab mithilfe von euch dem Forum und Schulungsunterlagen einen Ansatz hin bekommen.
Alle 30s sollen die Messwerte im Struct gespeichert werden bis zum Maximum und dann der erste überschrieben werden.
Das ganze sieht bis jetzt so aus:
PROGRAM Datenlogger
VAR
Daten: Temperatur_Logger_Daten;
Liste: ARRAY [1..1000] OF Temperatur_Logger_Daten ;
Index: INT:=1;
Takt: TON;
END_VAR
LDN Takt.Q
ST Takt.IN
CAL Takt(PT := T#30s)
LDN Takt.Q
JMPC Ende
LD Daten
ST Liste[Index]
LD Index
ADD 1
ST Index
LD Index
EQ 1001
JMPCN Ende
LD 1
ST Index
ENDE:
RET
TYPE Temperatur_Logger_Daten
STRUCT
Temperatur: INT;
Zeitstempel: DT;
END_STRUCT
END_TYPE
Die Werte werden wenn ich online gehe schön alle 30s gespeichert, nur ist der Temperaturwert 0 und das Datum auf 1970...
In den Unterlagen hab ich gelesen das der erstellte Datentyp Struct in den globalen Variablen verfügbar ist. Bei mir leider nicht...
Muss ich das/den Struct noch irgendwie in den Globalen Variablen deklarieren?
Oder bin ich total auf dem Holzweg und der Ansatz is schon verkehrt?
Danke für Eure Mühe und Hilfe!
Gruß
Michael