SPS Datenaufzeichnung

KMWA

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

ich bin erst gerade auf dieses Forum gestoßen und würde Hilfe zu einer Datenaufzeichnung meiner gemessenen Werte brauchen.
Ich bin nicht sehr bewandert in diesem Thema, aber hoffe dass ihr mir helfen könnt.

Mein kleines Programm macht das:
PROGRAM_INIT

HTC_heater_switch:=FALSE;
HTC_heater_out
:=FALSE;

analog_pressure_input;
analog_temperature_input;

pressure_bar;
temperature_celsius;


analog_status_input_1;


p_module_ok;
p_heater;
q_heater;
s_heater;
i_heater;
u_heater;
i_n_heater;




PWM.Enable:=
1;
PWM.Period:=
20;
PWM.MinPulseWidth:=
5;
(*PWM.DutyCycle:=50;*)


HeaterStep:=STATE_OFF;









END_PROGRAM


PROGRAM
_CYCLIC

T_lowerLimit:=T_Soll-T_lowerRange;
T_upperLimit
:=T_Soll+T_upperRange;

PWM();



IFHTC_heater_switch=TRUETHENHTC_heater_on:=TRUE;
ELSEHTC_heater_on:=FALSE;
END_IF;

CASEHeaterStepOF

STATE_OFF:

HTC_heater_out
:=FALSE;
IFtemperature_celsius<T_lowerLimitANDHTC_heater_on=TRUETHENHeaterStep:=STATE_ON;
ELSEHeaterStep:=STATE_OFF;
END_IF;

STATE_ON:

HTC_heater_out
:=PWM.Out;
IFtemperature_celsius>T_upperLimitORHTC_heater_on=FALSETHENHeaterStep:=STATE_OFF;
ELSEHeaterStep:=STATE_ON;
END_IF;

END_CASE;





pressure_bar:=
(INT_TO_REAL(analog_pressure_input)/32768*50)+0.454;
temperature_celsius
:=INT_TO_REAL(analog_temperature_input)/10;




END_PROGRAM

Ich benötige eine Aufzeichnung der gemessenen Werte in welcher Form auch immer. Muss dann Diagramme erstellen... ;)

Danke
 
Hallo,

da stellen sich erstmal diverse Fragen:
- wie viele Werte (Druck und Temperatur?)
- wie oft sollen die gemessen werden (alle Sekunde, alle Millisekunde, alle Stunde, ...)
- wie lange sollen die gemessen werden?
- wie oft willst Du die Daten als Diagramm darstellen: Auf Abruf (HMI), einmalig, weil Du was testest, mehrfach?

Wenn Du schnell und lange messen willst, sowie die Daten oft auslesen und darstellen willst, würde ich mir Gedanken über einen separaten Datenlogger machen.
Wenn Du die einmalig auslesen willst, könnte man das z.B. über einen Datenbaustein mit X Speicherplätzen machen.
Wenn Du das über ein HMI auslesen willst, könntest Du auch einen Trend im HMI mitschreiben lassen...

Da gibt es viele unterschiedliche Möglichkeiten. Was für welchen Fall gut oder geeignet ist, entscheiden die Fragen oben und der Geldbeutel...

Gruß
JS
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

danke für die Antwort.
-Werte: Druck, Temperatur und heizung ein oder aus
-alle 15 sekunden
-min 5 h
-diagramme nur einmalig, bzw will die werte schon iwo gespeichert haben (editor file oder excel)

am liebsten wäre es mir wenn die daten in einem file mitgeschrieben werden.

danke
lg
 
Dein Code entbehrt nicht einer gewissen Unübersichtlichkeit ... :(
Du solltest so vorgehen :
- ein Array definieren des gewünschten Datentyps und in passender Größe
- eine Index-Variable definieren, die du in jedem Zyklus erhöhst und die bestimmt, wohin der jeweils eingelesene Wert im Array geschrieben werden soll

... und jetzt die Kür :
Du baust dir einen FB in dem das alles stattfindet, der die Daten hält und der ggf. auch eine Auswertung macht ...

Gruß
Larry
 
Hallo,

ich kenne mich nun leider nicht mit Phoenix aus. Da es aber mit "PC WORX" programmiert wird, vermute ich, daß es auf VxWorks basiert, einem Echtzeitbetriebssystem. Deshalb vermute ich, daß Du dort auch selbst Dateien erzeugen kannst.
Alle 15s ist für Dateioperationen in Ordnung. Trotzdem mußt Du mal damit rechnen, daß aus irgendeinem Grund das Schreiben verzögert wird.
Daher solltest Du zuerst, wie Larry schon schrieb, in ein Array schreiben, von wo Du dann entweder alle 15s jeden einzelnen Wert oder nach einer bestimmten Zeit (z.B. nach einer Minute) dann vier Werte auf einmal schreibst. Das Array wäre dann ein Umlaufpuffer. D.h. in Datei geschriebene Werte werden wieder im Puffer überschrieben.

Da Du beim Schreiben i.d.R. selbst definierst, was und wie Du das schreibst, würde ich das als CSV-Datei, also Kommaseparierte Werte, ausgeben. Dann kannst Du das in Excel einlesen und damit machen, was Du willst, inkl. Diagrammen.

Ich hoffe, das hilft erst einmal, ein Konzept zu erstellen. Die Umsetzung mußt Du dann mal gucken, welche Befehle Phoenix bereitstellt.

Gruß
JS
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also PC Worx wurde von KW-Software entwickelt und stammt von Multiprog ab. Das hat mit VxWorks rein garnichts zutun.

Du kannst mit Hilfe der FILE-FBs (FILE_OPEN, FILE_WRITE, FILE_CLOSE, ...) eine CSV-Datei schreiben. Die nutzt ich auch dafür.
 
Zuletzt bearbeitet:
Hallo KMWA,

ich kann meinen Vorrednern nur zustimmen. Bevor wir dir helfen können, solltest du dir überlegen was du haben möchtest.

Wenn du die Werte "nur" in einer Datei haben willst, die dann beispielsweise per Excel ausgewertet werden kann, dann empfehle ich dir die Idee von Mobi und unsere File Bausteine. Mit dieser Lösung werden die Werte in eine Datei auf der Steuerung geschrieben die dann bspw. per FTP abgeholt werden kann. Das schöne an dieser Lösung ist, dass keine weiteren Tools und damit Kosten auf dich zukommen.
Die Werte können natürlich auch über andere Bibliotheken in SQL basierten Datenbanken gepseichert werden. Da brauchst du natürlich eine SQL/MySQL Datenbank.

Wenn du dir die Werte dauerhaft in einem Diagramm anschauen willst, könntest du unser WebVisit verwenden. Damit könntest du eine Visualisierung erstellen die auf dem Webserver der Steuerung läuft und dir ein diagramm der Werte anzeigt. Gespeichert würden die Werte dann immernoch über die File oder SQL Bausteine.

Die ganz schicke Lösung wäre unsere Visualisierungssoftware Visu+. Damit kannst du dir die Werte in einem Diagramm anzeigen lassen und in nahezu beliebigen Datenbankformaten abspeichern. Neben dem reinen darstellen der Werte kannst du dann natürlich auch Alarme etc. aus den Werten generieren. Hierfür bräuchtest du dann noch ein extra Anzeigegerät, da Visu+ nicht Web basiert ist.

Ich hoffe eine dieser Möglichkeiten trifft ungefähr das was du dir vorgestellt hast.

Gruß
Mark


p.s.: PC Worx hat tatsächlich nichts mit VxWorks zu tun ;)
 
Zurück
Oben