<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to CSV Daten einlesen.</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/c60c5efbbf/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/c60c5efbbf/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Deutsch/thread/c60c5efbbf/</id><updated>2020-02-28T09:08:01.014000Z</updated><subtitle>Recent posts to CSV Daten einlesen.</subtitle><entry><title>CSV Daten einlesen.</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/c60c5efbbf/?limit=25#34e4" rel="alternate"/><published>2020-02-28T09:08:01.014000Z</published><updated>2020-02-28T09:08:01.014000Z</updated><author><name>Dennis Lo</name><uri>https://forge.codesys.com/u/dennis-lo/</uri></author><id>https://forge.codesys.comb496fb59dfbb3fa5707c9d251c43de2e42e9c9d1</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi,&lt;br/&gt;
die PLM_Csv.lib habe ich bei der Firma Sabo und der Steuerung PLM 700 bekommen.&lt;/p&gt;
&lt;p&gt;mfg&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>CSV Daten einlesen.</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/c60c5efbbf/?limit=25#fead" rel="alternate"/><published>2020-02-28T09:07:54.294000Z</published><updated>2020-02-28T09:07:54.294000Z</updated><author><name>franzhoepfinger</name><uri>https://forge.codesys.com/u/franzhoepfinger/</uri></author><id>https://forge.codesys.comcb27690729bad1b81dbc297ce83a30ae1cd3c01b</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;PLM_Csv.lib ? &lt;/p&gt;
&lt;p&gt;wo gibt es die ? bzw. mit welcher Steurung wird die mitgeliefert ?!?&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>CSV Daten einlesen.</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/c60c5efbbf/?limit=25#d8b5" rel="alternate"/><published>2020-02-28T09:07:51.820000Z</published><updated>2020-02-28T09:07:51.820000Z</updated><author><name>Dennis Lo</name><uri>https://forge.codesys.com/u/dennis-lo/</uri></author><id>https://forge.codesys.comc4239cec8643397ee7e1c32fdb541648448d595a</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo,&lt;/p&gt;
&lt;p&gt;es gibt die Möglichkeit, jedes mal von der ersten Zeile an zu lesen und solange zu lesen, bis du in deiner Zeile angekommen bist.&lt;br/&gt;
Das geht über die PLM_Csv.lib und der Funktion csv_read.&lt;/p&gt;
&lt;p&gt;Mal ein Bespiel:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;csv_read&lt;/span&gt;.&lt;span class="nv"&gt;set_tabchar&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;TabChar&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;59&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;; (* TabChar 59 ist das Semikolon *)&lt;/span&gt;
         &lt;span class="k"&gt;FOR&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="nv"&gt;TO&lt;/span&gt; &lt;span class="nv"&gt;GV_Write_Index&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;DO&lt;/span&gt;  &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;GV_Write_Index&lt;/span&gt; &lt;span class="nv"&gt;ist&lt;/span&gt; &lt;span class="nv"&gt;die&lt;/span&gt; &lt;span class="nv"&gt;Nummer&lt;/span&gt; &lt;span class="nv"&gt;der&lt;/span&gt; &lt;span class="nv"&gt;letzten&lt;/span&gt; &lt;span class="nv"&gt;Messung&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; 
            &lt;span class="nv"&gt;csv_read&lt;/span&gt;.&lt;span class="nv"&gt;read_val_tab&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
               &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;STRING_TO_WORD&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;csv_read&lt;/span&gt;.&lt;span class="nv"&gt;val_str&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;  &lt;span class="nv"&gt;GV_Write_Index&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;120&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
                     &lt;span class="nv"&gt;csv_read&lt;/span&gt;.&lt;span class="nv"&gt;read_val_tab&lt;/span&gt;&lt;span class="c1"&gt;;                                                                           (*DL: er sucht den Wert und setz ihn als Variable*)&lt;/span&gt;
                     &lt;span class="nv"&gt;csv_read&lt;/span&gt;.&lt;span class="nv"&gt;read_val_tab&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
                     &lt;span class="nv"&gt;csv_read&lt;/span&gt;.&lt;span class="nv"&gt;read_val_tab&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
                     &lt;span class="nv"&gt;GV_Kurve&lt;/span&gt;[&lt;span class="mi"&gt;1&lt;/span&gt;]:&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;STRING_TO_REAL&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;csv_read&lt;/span&gt;.&lt;span class="nv"&gt;val_str&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;CONST_Measure_To_Trend&lt;/span&gt;&lt;span class="o"&gt;*-&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;.&lt;span class="mi"&gt;03907204&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;GV_Range_Multiplier&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
                  &lt;span class="k"&gt;FOR&lt;/span&gt; &lt;span class="nv"&gt;x&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="nv"&gt;TO&lt;/span&gt; &lt;span class="mi"&gt;120&lt;/span&gt; &lt;span class="k"&gt;DO&lt;/span&gt;
                     &lt;span class="nv"&gt;csv_read&lt;/span&gt;.&lt;span class="nv"&gt;read_val_crlf&lt;/span&gt;&lt;span class="c1"&gt;;                                                               (*DL: Alle Folgewerte werden eingesetzt*)&lt;/span&gt;
                     &lt;span class="nv"&gt;csv_read&lt;/span&gt;.&lt;span class="nv"&gt;read_val_tab&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
                     &lt;span class="nv"&gt;csv_read&lt;/span&gt;.&lt;span class="nv"&gt;read_val_tab&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
                     &lt;span class="nv"&gt;csv_read&lt;/span&gt;.&lt;span class="nv"&gt;read_val_tab&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
                     &lt;span class="nv"&gt;csv_read&lt;/span&gt;.&lt;span class="nv"&gt;read_val_tab&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
                     &lt;span class="nv"&gt;GV_Kurve&lt;/span&gt;[&lt;span class="nv"&gt;x&lt;/span&gt;]:&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;STRING_TO_REAL&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;csv_read&lt;/span&gt;.&lt;span class="nv"&gt;val_str&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;CONST_Measure_To_Trend&lt;/span&gt;&lt;span class="o"&gt;*-&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;.&lt;span class="mi"&gt;03907204&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;GV_Range_Multiplier&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
                  &lt;span class="nv"&gt;END_FOR&lt;/span&gt;
               &lt;span class="nv"&gt;END_IF&lt;/span&gt;
            &lt;span class="nv"&gt;csv_read&lt;/span&gt;.&lt;span class="nv"&gt;read_val_crlf&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;In diesem Beispiel werden die letzten  120 Werte ausgelesen und im Array GV_Kurve[x] gespeichert. Also kann man genau die Zeilen raussuchen die man haben will, besonders leicht fällt es natürlich, wenn der erste Wert eine Zeilennummer oder eine Uhrzeit ist an der man die gewünschte Zeile einsehen möchte.&lt;/p&gt;
&lt;p&gt;Nachteil: Bei sehr vielen Messungen dauert es etwas, bis die CPU das komplette file von oben nach unten gelesen hat, bis es an der gewünschten Position angekommen ist. Dürfte hier aber kein Problem sein, weil die Paar sekündchen kann man einmal täglich denke ich mal gerne warten, nur bei dauerhafter Anwendung gehts es irgendwann auf die Nerven.&lt;/p&gt;
&lt;p&gt;mfg&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>CSV Daten einlesen.</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/c60c5efbbf/?limit=25#3378" rel="alternate"/><published>2020-02-28T09:07:44.928000Z</published><updated>2020-02-28T09:07:44.928000Z</updated><author><name>Karle</name><uri>https://forge.codesys.com/u/karle/</uri></author><id>https://forge.codesys.comb3431a950f22a4b9744696d8fc556bfd36190dbd</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo,&lt;br/&gt;
wir verwenden auch MI , habe auch ab und zu mit logging zu tun.&lt;br/&gt;
Ich kenne nur die Variante das File inne Struktur oder Array komplett einzulesen und dann den gesuchten Eintrag hinterher raussuchen. File Write geht ja anhängend !&lt;br/&gt;
Freue mich über jede Anregung zu dem Thema .&lt;br/&gt;
Gruß !&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>CSV Daten einlesen.</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/c60c5efbbf/?limit=25#fd4e" rel="alternate"/><published>2020-02-28T09:07:42.341000Z</published><updated>2020-02-28T09:07:42.341000Z</updated><author><name>DIN</name><uri>https://forge.codesys.com/u/din/</uri></author><id>https://forge.codesys.com680892d10b96cddf1ca0730a44819402d0ef4a68</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo&lt;/p&gt;
&lt;p&gt;Ich schreibe täglich zur gleichen Uhrzeit Messwerte in eine Datei. &lt;/p&gt;
&lt;p&gt;Die gespeicherten Messwerte möchte ich mir Tageweise aufrufen.&lt;/p&gt;
&lt;p&gt;Über SysFileRead kann ich immer nur "alle" gespeicherten Werte auslesen. Gibt es eine Möglichkeit das auslesen auf eine bestimmte Zeile der CSV-Datei zu beschränken?&lt;/p&gt;
&lt;p&gt;Ich verwende die XV 200 von Micro Innovation.&lt;/p&gt;
&lt;p&gt;Danke.&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>