<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Messwerte auslesen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/b27ef71965/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/b27ef71965/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Deutsch/thread/b27ef71965/</id><updated>2020-02-28T13:40:50.263000Z</updated><subtitle>Recent posts to Messwerte auslesen</subtitle><entry><title>Messwerte auslesen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/b27ef71965/?limit=25#0666" rel="alternate"/><published>2020-02-28T13:40:50.263000Z</published><updated>2020-02-28T13:40:50.263000Z</updated><author><name>Erik Böhm</name><uri>https://forge.codesys.com/u/erik-boehm/</uri></author><id>https://forge.codesys.comba82bdc9b797259ee0e63bb6b3322b65fce6f344</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Servus&lt;/p&gt;
&lt;p&gt;TON wäre eine Möglichkeit.&lt;/p&gt;
&lt;p&gt;Timer: TON;&lt;br/&gt;
(&lt;em&gt;-----------------------------&lt;/em&gt;)&lt;br/&gt;
Timer(IN := TRUE, pt := t#5s);&lt;br/&gt;
If Timer.Q then&lt;br/&gt;
   DateiSchreiben();&lt;br/&gt;
   case DateiSchreiben.iRetVal of&lt;br/&gt;
      1:  (&lt;em&gt; Datei korrekt geschrieben &lt;/em&gt;)&lt;br/&gt;
           Timer(IN := FALSE);&lt;br/&gt;
      else  (&lt;em&gt; Rückgabewert iRetVal meldet Fehler beim schreiben &lt;/em&gt;)&lt;br/&gt;
           Timer(IN := FALSE);&lt;br/&gt;
         ;    (&lt;em&gt;Fehlerbehandlung&lt;/em&gt;)&lt;br/&gt;
   end_case&lt;br/&gt;
end_if&lt;/p&gt;
&lt;p&gt;Hier besteht natürlich die Gefahr, das dein ARRAY voll ist bevor der Timer abgelaufen ist.&lt;br/&gt;
Drum würde ich auf jeden Fall auch noch den Füllstand des ARRAYs abfragen.&lt;/p&gt;
&lt;p&gt;Gruß&lt;br/&gt;
Erik&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Messwerte auslesen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/b27ef71965/?limit=25#4846" rel="alternate"/><published>2020-02-28T13:40:42.424000Z</published><updated>2020-02-28T13:40:42.424000Z</updated><author><name>Anonymous</name><uri>https://forge.codesys.com/u/*anonymous/</uri></author><id>https://forge.codesys.come9c2b1fc6834db639044329af3d05100a8bcab8a</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;&lt;em&gt;Originally created by:&lt;/em&gt; StephanH.&lt;/p&gt;
&lt;p&gt;Ok vielen dank schonmal.&lt;/p&gt;
&lt;p&gt;Soweit so gut. Ich habe mich für ein mehrdimensionales Array entschieden und das funktioniert auch wunderbar.&lt;br/&gt;
Mehrdimensional&lt;br/&gt;
rData: ARRAY&lt;span&gt;[1..200,1..200,1..200]&lt;/span&gt; of REAL := 600(0); (&lt;em&gt; TempOfen, TempReaktor, Druck &lt;/em&gt;)&lt;br/&gt;
Meine nächste Baustelle ist nun die zyklische Füllung und Leerung des Arrays in eine Datei. Ich habe da schon einiges versucht es will aber nicht so richtig klappen. &lt;br/&gt;
Wie kann man ich da nun eine Taktzeit vorgeben ? Geht das mit einem TON Datenbaustein?&lt;/p&gt;
&lt;p&gt;Gruß Stephan&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Messwerte auslesen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/b27ef71965/?limit=25#d694" rel="alternate"/><published>2020-02-28T13:40:39.582000Z</published><updated>2020-02-28T13:40:39.582000Z</updated><author><name>Erik Böhm</name><uri>https://forge.codesys.com/u/erik-boehm/</uri></author><id>https://forge.codesys.com9bb40d1e63a8d1514a5bc9a46d7f09be468484c7</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Moin&lt;/p&gt;
&lt;p&gt;Grundsätzlich kannst du das auf verschiedene Arten machen.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ARRAY(s)&lt;/li&gt;
&lt;li&gt;Eindimensional:&lt;br/&gt;
rTempOfen: ARRAY&lt;span&gt;[1..200]&lt;/span&gt; or REAL := 200(0.0);&lt;br/&gt;
rTempReaktor: ARRAY&lt;span&gt;[1..200]&lt;/span&gt; or REAL := 200(0.0);&lt;br/&gt;
rDruck: ARRAY&lt;span&gt;[1..200]&lt;/span&gt; or REAL := 200(0.0);&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;oder&lt;/p&gt;
&lt;p&gt;Mehrdimensional&lt;br/&gt;
rData: ARRAY&lt;span&gt;[1..200,1..200,1..200]&lt;/span&gt; of REAL := 600(0);   (&lt;em&gt; TempOfen, TempReaktor, Druck &lt;/em&gt;)&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Struktur&lt;br/&gt;
TYPE Data :&lt;br/&gt;
    STRUCT&lt;br/&gt;
                 rTempOfen: REAL := 0;&lt;br/&gt;
                 rTempReaktor: REAL := 0;&lt;br/&gt;
                 rDruck: REAL := 0;&lt;br/&gt;
    END_STRUCT&lt;br/&gt;
END_TYPE&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;und dann ein ARRAY draus machen:&lt;/p&gt;
&lt;p&gt;sData: ARRAY&lt;span&gt;[1..200]&lt;/span&gt; of Data.&lt;br/&gt;
Zugriff dann mit:&lt;br/&gt;
   sData&lt;span&gt;[42]&lt;/span&gt;.rTempOfen&lt;/p&gt;
&lt;p&gt;oder Struktur mit ARRAY's&lt;br/&gt;
TYPE Data :&lt;br/&gt;
    STRUCT&lt;br/&gt;
           rTempOfen: ARRAY&lt;span&gt;[1..200]&lt;/span&gt; or REAL := 200(0.0);&lt;br/&gt;
           rTempReaktor: ARRAY&lt;span&gt;[1..200]&lt;/span&gt; or REAL := 200(0.0);&lt;br/&gt;
           rDruck: ARRAY&lt;span&gt;[1..200]&lt;/span&gt; or REAL := 200(0.0);&lt;br/&gt;
    END_STRUCT&lt;br/&gt;
END_TYPE&lt;/p&gt;
&lt;p&gt;Zugriff dann mit:&lt;br/&gt;
   sData.rTempOfen&lt;span&gt;[42]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Es gibt vielfältige Möglichkeiten.&lt;/p&gt;
&lt;p&gt;Gruß Erik&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Messwerte auslesen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/b27ef71965/?limit=25#6d87" rel="alternate"/><published>2020-02-28T13:40:31.858000Z</published><updated>2020-02-28T13:40:31.858000Z</updated><author><name>Anonymous</name><uri>https://forge.codesys.com/u/*anonymous/</uri></author><id>https://forge.codesys.com3a9f8c2125efd58fb6b2e422c60ae5d0f92f4212</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;&lt;em&gt;Originally created by:&lt;/em&gt; StephanH.&lt;/p&gt;
&lt;p&gt;Nr.| T_O | T_R|  Druck |&lt;br/&gt;
1       |   22.5      |       4          |    7     |&lt;/p&gt;
&lt;p&gt;etc.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Messwerte auslesen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/b27ef71965/?limit=25#ccf1" rel="alternate"/><published>2020-02-28T13:40:29.037000Z</published><updated>2020-02-28T13:40:29.037000Z</updated><author><name>Anonymous</name><uri>https://forge.codesys.com/u/*anonymous/</uri></author><id>https://forge.codesys.comb05d999296a6c14eafd86e83176fc8b305c2f862</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;&lt;em&gt;Originally created by:&lt;/em&gt; StephanH.&lt;/p&gt;
&lt;p&gt;Hallo nochmal,&lt;/p&gt;
&lt;p&gt;ich habe nochmal einige grundlegende Fragen was die Erstellung eines Array´s angeht weil ich im programmieren nicht so wirklich fit bin bzw. noch nie war. Ich bräuchte glaube ich eigentlich eine eine Struktur wie ich glaube...&lt;/p&gt;
&lt;p&gt;Es soll mal so aussehen: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;Nr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;  &lt;span class="p"&gt;,&lt;/span&gt;     &lt;span class="n"&gt;Temperatur_Ofen&lt;/span&gt;   &lt;span class="p"&gt;,&lt;/span&gt;    &lt;span class="n"&gt;Temperatur_Reaktor&lt;/span&gt;     &lt;span class="p"&gt;,&lt;/span&gt;     &lt;span class="n"&gt;Druck&lt;/span&gt;
  &lt;span class="mi"&gt;1&lt;/span&gt;                 &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;                       &lt;span class="mi"&gt;22&lt;/span&gt;                              &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;
  &lt;span class="mi"&gt;2&lt;/span&gt;                 &lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;                       &lt;span class="mi"&gt;23&lt;/span&gt;                              &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;und so weiter.&lt;br/&gt;
Dieser soll halt zyklisch beschrieben und in eine Datei geleert werden, dabei handelt es sich bei den Temperaturen und dem Druck um globale Variablen. &lt;br/&gt;
Könnt ihr mir ein ansatz geben wäre wirklich dankbar.&lt;/p&gt;
&lt;p&gt;Gruß Stephan&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Messwerte auslesen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/b27ef71965/?limit=25#2fbd" rel="alternate"/><published>2020-02-28T13:40:21.287000Z</published><updated>2020-02-28T13:40:21.287000Z</updated><author><name>Erik Böhm</name><uri>https://forge.codesys.com/u/erik-boehm/</uri></author><id>https://forge.codesys.comc4d680a59f2ac3f6fe7ad11db4665d4ee041c2de</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Servus&lt;/p&gt;
&lt;p&gt;Das ist natürlich realisierbar, solange die gewünschte Abtastrate nicht kürzer ist als dein schnellster SPS-Zyklus.&lt;/p&gt;
&lt;p&gt;Schreib die Messwerte im schnellsten SPS-Zyklus in ein ARRAY.&lt;br/&gt;
Bei erreichen eines gewissen Füllstands wird der Inhalt dieses Arrays von einem niederprioren Task abgeholt und in eine Datei geschrieben.&lt;br/&gt;
Währenddessen füllt der schnelle Task das Array wieder von vorne.&lt;br/&gt;
Die Abtastrate hast du völlig selbst in der Hand. Musst ja nur über einen Timer bestimmen wann ins Array geschrieben wird.&lt;br/&gt;
Technisch überhaupt kein Problem, wenn man sich auskennt.&lt;/p&gt;
&lt;p&gt;Wir schreiben z.B. immer einen Ringpuffer von 2000 TRACE-Strings mit, der bei Bedarf per TCP ausgelesen werden kann.&lt;br/&gt;
Da können natürlich auch mehrere Einträge pro ms auftreten. Theoretisch auch alle 2000 'gleichzeitig'.&lt;/p&gt;
&lt;p&gt;Gruß&lt;br/&gt;
Erik&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Messwerte auslesen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/b27ef71965/?limit=25#add8" rel="alternate"/><published>2020-02-28T13:40:18.590000Z</published><updated>2020-02-28T13:40:18.590000Z</updated><author><name>Anonymous</name><uri>https://forge.codesys.com/u/*anonymous/</uri></author><id>https://forge.codesys.com161d1f1e520474715c8bf0f4c1d3bb425500de98</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;&lt;em&gt;Originally created by:&lt;/em&gt; StephanH.&lt;/p&gt;
&lt;p&gt;Ja nun ist das Problem, dass ich Abtastraten so um die 50 ms brauche. Ist das dann so realisierbar?&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Messwerte auslesen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/b27ef71965/?limit=25#8680" rel="alternate"/><published>2020-02-28T13:40:10.730000Z</published><updated>2020-02-28T13:40:10.730000Z</updated><author><name>Schuero</name><uri>https://forge.codesys.com/u/schuero/</uri></author><id>https://forge.codesys.com2ccc75141f71b26768a1d891c401c62cf6e29766</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo.&lt;/p&gt;
&lt;p&gt;Bei geringen Abtastraten &amp;gt;1 Minute könntest du über einen Trigger (FB Blink) deinen Messwerte in ein Array schreiben.&lt;br/&gt;
Dieses kann dann in eine Textdatei geschrieben werden. Diese Text Datei (entsprechend formartiert) als csv - Datei von Excel ausgewertet werden.&lt;/p&gt;
&lt;p&gt;Dieses Vorgehen habe ich mal mit einer Wago 750-841 realisiert. Geht ganz gut (zumindest läuft es bis jetzt ohne meckern  ) &lt;/p&gt;
&lt;p&gt;Gruß schuero&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Messwerte auslesen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/b27ef71965/?limit=25#eaa4" rel="alternate"/><published>2020-02-28T13:40:08.095000Z</published><updated>2020-02-28T13:40:08.095000Z</updated><author><name>Anonymous</name><uri>https://forge.codesys.com/u/*anonymous/</uri></author><id>https://forge.codesys.com579deee1a8a08270ca7c9238f6f469b5e06d6d9b</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;&lt;em&gt;Originally created by:&lt;/em&gt; StephanH.&lt;/p&gt;
&lt;p&gt;Hallo,&lt;br/&gt;
ich habe ein Problem was die Messwertauslesung angeht. Ich erläutere mal kurz was ich für ein System habe und was ich gern machen würde. Also ich nutze folgende ABB Hadware (CPU: AC500_PM573_ETH_V2.1 ;  AX521 ;  AI531;  DA501) und Software CoDeSys Version 2.3.9.28. Ich habe 2 Temperatursensoren und einen Drucksensor und ich würde die Messwerte gerne über einen Zeitraum von ca. 2 Stunden auslesen, dabei ist es wichtig, dass ich zwischendurch auch die Abtastrate ändern kann. Und ich möchte die Messerte dananch anschließend in excel öffnen. Gibt es dafür einen Funktionsbaustein der es mir erlaubt die Messwerte in eine Datei zu schreiben, oder erfolgt es über die Traceaufzeichnung oder ein Trenddiagramm in der Visualisierung. Mein Problem an der Traceaufzeichnung ist, dass der Ringspeicher der AC500 viel zu klein ist. Der müsste also irgendwie zyklisch ausgelesen werden und bei Bedarf müsste auch die Abtastrat variiert werden können.&lt;/p&gt;
&lt;p&gt;Ich bedanke mich für jede Unterstützung.&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>