<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to PFC200 rundet falsch (REAL_TO_INT)</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/3441de16fe/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/3441de16fe/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Deutsch/thread/3441de16fe/</id><updated>2021-07-08T14:08:26.119000Z</updated><subtitle>Recent posts to PFC200 rundet falsch (REAL_TO_INT)</subtitle><entry><title>PFC200 rundet falsch (REAL_TO_INT)</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/3441de16fe/?limit=25#02bc" rel="alternate"/><published>2021-07-08T14:08:26.119000Z</published><updated>2021-07-08T14:08:26.119000Z</updated><author><name>jago85</name><uri>https://forge.codesys.com/u/jago85/</uri></author><id>https://forge.codesys.com3eeef0badfbbd1103107e42eda91f41a30c8995e</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo Marcel, hallo Ian,&lt;/p&gt;
&lt;p&gt;danke für den Hinweis. Ich habe soeben den Entsprechenden Hinweis in der CODESYS-Dokumentation zur Target-Abhängigkeit gefunden. So richtig logisch finde ich das allerdings nicht. Sollte das Laufzeitsystem nicht genau solche plattformabhängigen Eigenheiten vereinheitlichen. Damit verhalten sich die Programme unterschiedlich auf verschiedenen Targets.&lt;/p&gt;
&lt;p&gt;Und: Warum rundet REAL_TO_LINT dann anders als REAL_TO_INT?&lt;/p&gt;
&lt;p&gt;Erschwerend kommt hinzu, dass es keine echte ROUND-Funktion gibt (kenne ich zumindest noch nicht). In der Lib FloatingPointUtils gibt es nur die Funktionen CEIL, FLOOR und TRUNCATE. Wenn die Konvertierung dies erledigen würde, wäre das kein Problem. Aber so fehlt mir nach wie vor ein Workaround, da ich leider darauf angewiesen bin, dass mein Programm mathematisch korrekt rundet.&lt;/p&gt;
&lt;p&gt;Mir fällt nur sowas hier ein:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="err"&gt;    IF ABS(x - FLOOR(x)) &amp;gt;= 0.5 THEN&lt;/span&gt;
&lt;span class="err"&gt;        RES := CEIL(x);&lt;/span&gt;
&lt;span class="err"&gt;    ELSE&lt;/span&gt;
&lt;span class="err"&gt;        RES := FLOOR(x);&lt;/span&gt;
&lt;span class="err"&gt;    END_IF&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Gibt es bessere Vorschläge?&lt;/p&gt;
&lt;p&gt;VG,&lt;br/&gt;
Jan&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>PFC200 rundet falsch (REAL_TO_INT)</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/3441de16fe/?limit=25#e9c4" rel="alternate"/><published>2021-07-08T09:01:07.287000Z</published><updated>2021-07-08T09:01:07.287000Z</updated><author><name>i-campbell</name><uri>https://forge.codesys.com/u/i-campbell/</uri></author><id>https://forge.codesys.comc78195e33f88e0141b4de66be8599aad4d80e79a</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Kein Bug, das ist wie ARM FPU funktioniert:&lt;br/&gt;
&lt;a href="https://developer.arm.com/documentation/dui0475/k/floating-point-support/ieee-754-arithmetic-and-rounding" rel="nofollow"&gt;https://developer.arm.com/documentation/dui0475/k/floating-point-support/ieee-754-arithmetic-and-rounding&lt;/a&gt;&lt;br/&gt;
1. Wenn xxx.5, Round to even.&lt;br/&gt;
2. Sonst Round to nearest.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>PFC200 rundet falsch (REAL_TO_INT)</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/3441de16fe/?limit=25#64e7" rel="alternate"/><published>2021-07-08T06:48:49.179000Z</published><updated>2021-07-08T06:48:49.179000Z</updated><author><name>m.prestel</name><uri>https://forge.codesys.com/u/mprestel/</uri></author><id>https://forge.codesys.com9a82556406738d0579e367af7c9ba7cd79e68e46</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo Jan,&lt;br/&gt;
melde den Fehler doch bitte mit Projekt über den Store -&amp;gt; Contact/Service/Support.&lt;br/&gt;
Da wird man dir auch sagen können, ob es einen Workaround/Fehler bereits gibt.&lt;/p&gt;
&lt;p&gt;LG&lt;br/&gt;
Marcel&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>PFC200 rundet falsch (REAL_TO_INT)</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/3441de16fe/?limit=25#1033" rel="alternate"/><published>2021-07-08T06:21:36.279000Z</published><updated>2021-07-08T06:21:36.279000Z</updated><author><name>jago85</name><uri>https://forge.codesys.com/u/jago85/</uri></author><id>https://forge.codesys.com5964a32ed6e79302346bb43bde20717cbedb77fe</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;wir haben festgestellt, dass unser Steuerungsprogramm in manchen Fällen falsch rundet. Daraufhin haben wir ein Testprogramm erstellt, welches das Problem bestätigt. Das Ergebnis ist mit REAL_TO_INT oder LREAL_TO_INT das gleiche. Es wird nicht bei jeder Zahl bei x.5 aufgerundet.&lt;br/&gt;
Getestet: CODESYS for PFC200 4.0.1.0 / 3.5.15.0&lt;br/&gt;
&lt;img src="./attachment/round_pfc200.PNG" width="50%"/&gt;&lt;/p&gt;
&lt;p&gt;Wenn man das Programm auf CODESYS for Windows laufen lässt, passt das Ergebnis.&lt;/p&gt;
&lt;p&gt;Ist das Problem bekannt? Gibt es einen Workaround oder Bugfix?&lt;br/&gt;
&lt;img src="./attachment/round_win.PNG" width="50%"/&gt;&lt;/p&gt;
&lt;p&gt;VG,&lt;br/&gt;
Jan&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>