<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Profinet Azyklisch lesen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/fc78078ab6/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/fc78078ab6/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Deutsch/thread/fc78078ab6/</id><updated>2020-02-28T03:52:03.716000Z</updated><subtitle>Recent posts to Profinet Azyklisch lesen</subtitle><entry><title>Profinet Azyklisch lesen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/fc78078ab6/?limit=25#002f" rel="alternate"/><published>2020-02-28T03:52:03.716000Z</published><updated>2020-02-28T03:52:03.716000Z</updated><author><name>rKtiC</name><uri>https://forge.codesys.com/u/rktic/</uri></author><id>https://forge.codesys.comc4c165d245d4c6e9bdc925ca24b6278f6fedf465</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo,&lt;/p&gt;
&lt;p&gt;das war der Fehler. Ein Tauschen der Bytereihenfolge brachte den Erfolg.&lt;br/&gt;
Vielen Dank!&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Profinet Azyklisch lesen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/fc78078ab6/?limit=25#b6df" rel="alternate"/><published>2020-02-28T03:51:58.177000Z</published><updated>2020-02-28T03:51:58.177000Z</updated><author><name>eschwellinger</name><uri>https://forge.codesys.com/u/eschwellinger/</uri></author><id>https://forge.codesys.come2bc80343aea57b9f07c621eec0af45c857ea02f</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo,&lt;/p&gt;
&lt;p&gt;ich weiß nicht wie die Gleitkommazahl „4.0“ binär aussieht, aber Profinet verwendet (genau wie) IEC ISO/IEC/IEEE 60559 Single precision.&lt;br/&gt;
D.h. Vorzeichen + 7 Bit Exponent + 23 Bit Mantisse (siehe &lt;a class="" href="https://de.wikipedia.org/wiki/IEEE_754" rel="nofollow"&gt;https://de.wikipedia.org/wiki/IEEE_754&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Die Byte-Order ist bei Profinet immer Big-Endian !&lt;br/&gt;
(fürs Byte drehen gibt’s einen FB ByteBuffer in der MemUtils Lib)&lt;/p&gt;
&lt;p&gt;Hoffe das hilft dir so weiter....&lt;br/&gt;
Grüße&lt;br/&gt;
Edwin&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Profinet Azyklisch lesen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/fc78078ab6/?limit=25#273e" rel="alternate"/><published>2020-02-28T03:51:56.197000Z</published><updated>2020-02-28T03:51:56.197000Z</updated><author><name>rKtiC</name><uri>https://forge.codesys.com/u/rktic/</uri></author><id>https://forge.codesys.com491754ca9a719d8bb5a0750b82970e7575723f8a</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo zusammen,&lt;/p&gt;
&lt;p&gt;ich habe Probleme bei der Verwendung des Beispiels ProfinetAcyclicSP9. Ich würde gerne Daten azyklisch aus einem Profinetgerät auslesen.&lt;br/&gt;
Das Gerät ist angebunden und funktioniert. Für den azyklischen Datendienst habe ich folgende Angabe:&lt;/p&gt;
&lt;p&gt;Daraus folgt, dass ich von insgesamt 16 Byte die letzen 4 auslesen möchte, da dort die Daten stehen.&lt;br/&gt;
Daher würde ich den Code im obengenannten Beispiel wie folgt anpassen:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;SysMemCpy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ADR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;OrderID&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;ADR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;buffer&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;]),&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;(OrderID ist vom Typ REAL)&lt;/p&gt;
&lt;p&gt;Die auszulesende Variable habe ebenfalls angepasst zu rdrec.INDEX := TO_INT(16#123);&lt;/p&gt;
&lt;p&gt;Das schöne ist, dass Daten gelesen werden, jedoch sollte der ausgelesene Wert 4 sein. Hier scheint der ausgelesene Wert 64 zu sein.&lt;br/&gt;
Was bedeutet der Wert der in OrderID steht (4,89*10^-41)? Müsste SysMemCpy nicht den Wert aus dem Buffer in OrderID schreiben?&lt;/p&gt;
&lt;p&gt;Vielen Dank schon mal.&lt;/p&gt;
&lt;p&gt;rKtiC&lt;/p&gt;
&lt;p&gt;&lt;img alt="IMG: Bild" rel="nofollow" src="https://bwsyncandshare.kit.edu/dl/fiNfURGbTKKEMTd662dWZTQa/Azyklischer-Datendienst.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="IMG: Bild" rel="nofollow" src="https://bwsyncandshare.kit.edu/dl/fiEfjhJkzRmrixSMohrcAKtU/Codesys_betrieb.jpg"/&gt;&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>