Messwerte Loggen, keine Daten in Struct

MichaelSeiffert

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> 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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

danke für die Antwort.
Hmm, das is ne gute Frage...

Ich dachte das funktioniert mir dem vorhandenen:

LD Daten
ST Liste[Index]


Was mir noch aufgefallen ist:
Beim Anlegen von dem Struct konnte ich die Daten nicht aus den Globalen Variablen auswählen.
Ich hab sie einfach per Hand rein geschrieben.
Kann es damit zu tun haben? Muss ich die erst deklarieren wie z.B. ein Baustein?
 
.. Ich bin jetzt nicht der AWL Freak, aber mit LD Daten lädst Du die Daten und schiebst sie mit ST Liste[index] an die richtige Stelle im Array.
.. wenn in Daten aber nichts sinnvolles gespeichert ist, wird genau das in's Array geschoben.
.. die Variablen sind lokal definiert, deshalb sind sie nicht bei Globalen sondern bei lokalen Variablen zu finden.
.. bei TC2 hast Du die Reiter POUs, Data Types, Visualisations und Resources. Dein Struct legst Du normalerweise unter Data Types an, die Globalen Variablen definierst Du bei Resources.
.. probier mal die Programmiersprache ST aus. Dazu gibt es eine Referenz im infosystem von Beckhoff.
 
Zurück
Oben