<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Real per Modbus auslesen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/65dd5ca195/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/65dd5ca195/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Deutsch/thread/65dd5ca195/</id><updated>2020-02-28T12:59:29.903000Z</updated><subtitle>Recent posts to Real per Modbus auslesen</subtitle><entry><title>Real per Modbus auslesen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/65dd5ca195/?limit=25#de26" rel="alternate"/><published>2020-02-28T12:59:29.903000Z</published><updated>2020-02-28T12:59:29.903000Z</updated><author><name>cali</name><uri>https://forge.codesys.com/u/cali/</uri></author><id>https://forge.codesys.com3131b15552535b0e05867494a93f074a87d93478</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Der Einwand ist völlig berechtigt. &lt;/p&gt;
&lt;p&gt;Ich habe diese Modbus-DLL eingebunden:  &lt;a class="" href="http://www.nmodbus.com" rel="nofollow"&gt;http://www.nmodbus.com&lt;/a&gt;&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;TcpClient&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;TcpClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;"192.168.1.1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;502&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;ModbusIpMaster&lt;/span&gt; &lt;span class="n"&gt;master&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ModbusIpMaster&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CreateIp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; 
&lt;span class="p"&gt;...&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Beispiele findet man auch unter dem Link! Leider kann ich nur bis Merkerwort 86 auslesen. Unterstützt werden sollten 4095. Lösung habe ich noch keine.&lt;/p&gt;
&lt;p&gt;Gruß&lt;/p&gt;
&lt;p&gt;Cali&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Real per Modbus auslesen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/65dd5ca195/?limit=25#27bc" rel="alternate"/><published>2020-02-28T12:59:27.310000Z</published><updated>2020-02-28T12:59:27.310000Z</updated><author><name>cmoeller</name><uri>https://forge.codesys.com/u/cmoeller/</uri></author><id>https://forge.codesys.com9ceec0087cee333379e57c3b5401678a2fa858ec</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo Cali,&lt;/p&gt;
&lt;p&gt;schön das du auch eine Lösung gefunden hast.&lt;/p&gt;
&lt;p&gt;Um deine Frage zu beantworten wäre es hilfreich zu wissen wo man die Klasse ModbusUtility findet und von welchem Typ "master" ist.&lt;/p&gt;
&lt;p&gt;Gruss cmoeller&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Real per Modbus auslesen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/65dd5ca195/?limit=25#540e" rel="alternate"/><published>2020-02-28T12:59:20.019000Z</published><updated>2020-02-28T12:59:20.019000Z</updated><author><name>cali</name><uri>https://forge.codesys.com/u/cali/</uri></author><id>https://forge.codesys.comf4ada34dc98543a5b73c3c2df55a4ee5979ba29b</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hier die Lösung:&lt;/p&gt;
&lt;p&gt;damit werden die ersten 10 Merkerwörter in das Array ushort gelesen und anschließend als double ausgegeben.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nt"&gt;ushort&lt;/span&gt;&lt;span class="cp"&gt;[]&lt;/span&gt; &lt;span class="nt"&gt;registers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nt"&gt;master&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ReadHoldingRegisters&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;12288&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;10&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="nt"&gt;double&lt;/span&gt; &lt;span class="nt"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nt"&gt;ModbusUtility&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GetSingle&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;registers&lt;/span&gt;&lt;span class="cp"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="cp"&gt;]&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;registers&lt;/span&gt;&lt;span class="cp"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="cp"&gt;]&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="nt"&gt;System&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;WriteLine&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Gelesener Wert:"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="nt"&gt;System&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;WriteLine&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;value&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Frage: Warum funktioiniert das nur bis Wort 86? Laut Wago Doku sollte das bis Wort 4095 funktionieren. Auch das einlesen ab einem höheren Startregister klappt nicht.&lt;/p&gt;
&lt;p&gt;Grüße&lt;/p&gt;
&lt;p&gt;Cali&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Real per Modbus auslesen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/65dd5ca195/?limit=25#0ac9" rel="alternate"/><published>2020-02-28T12:59:17.267000Z</published><updated>2020-02-28T12:59:17.267000Z</updated><author><name>cmoeller</name><uri>https://forge.codesys.com/u/cmoeller/</uri></author><id>https://forge.codesys.com0bd9a8918a5a20713568be5fc551b9161f0bebbd</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo Cali,&lt;/p&gt;
&lt;p&gt;der Datentyp "REAL" in CoDeSys ist ein 32BitWert und besteht aus Vorzeichen(1 Bit), Exponent(8 Bit) und Mantisse(23).&lt;/p&gt;
&lt;p&gt;Es handelt sich um eine Gleitkommazahl mit einfacher Genauigkeit.&lt;/p&gt;
&lt;p&gt;In der dotnet Welt entspricht das dem Datentyp "Single" bzw. "float".&lt;/p&gt;
&lt;p&gt;Um aus C# per Modbus einen REAL-Wert zu lesen müssen zwei Register-Werte(16Bit) geholt, die Byteorder zurecht gebogen und ein Typecast nach "Single" durchgeführt werden.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ss"&gt;(&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;4&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
{
   &lt;span class="nv"&gt;MyByteArray&lt;/span&gt;[&lt;span class="mi"&gt;0&lt;/span&gt;] &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;this&lt;/span&gt;.&lt;span class="nv"&gt;m_readBuffer&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;1&lt;/span&gt;]&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;MyByteArray&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;this&lt;/span&gt;.&lt;span class="nv"&gt;m_readBuffer&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="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;MyByteArray&lt;/span&gt;[&lt;span class="mi"&gt;2&lt;/span&gt;] &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;this&lt;/span&gt;.&lt;span class="nv"&gt;m_readBuffer&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;3&lt;/span&gt;]&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;MyByteArray&lt;/span&gt;[&lt;span class="mi"&gt;3&lt;/span&gt;] &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;this&lt;/span&gt;.&lt;span class="nv"&gt;m_readBuffer&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;2&lt;/span&gt;]&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;RealData&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;4&lt;/span&gt;] &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;BitConverter&lt;/span&gt;.&lt;span class="nv"&gt;ToSingle&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;MyByteArray&lt;/span&gt;, &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;                         &lt;/span&gt;
}
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Persönlich arbeite ich lieber mit Ganzzahlen, bei denen ich das Komma durch anschliessendes multiplizieren oder dividieren einfüge.&lt;/p&gt;
&lt;p&gt;Gruss Christoph&lt;/p&gt;
&lt;p&gt;&lt;a class="" href="https://forum-de.codesys.com//download/file.php?id=422" rel="nofollow"&gt;VC7App1.zip &lt;span&gt;&lt;span&gt;[122.13 KiB]&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Real per Modbus auslesen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/65dd5ca195/?limit=25#57a3" rel="alternate"/><published>2020-02-28T12:59:10.064000Z</published><updated>2020-02-28T12:59:10.064000Z</updated><author><name>cali</name><uri>https://forge.codesys.com/u/cali/</uri></author><id>https://forge.codesys.com3e1ce01735dbdeb28f1aca980c932475b894eeb2</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo,&lt;/p&gt;
&lt;p&gt;ich verwende die Wago 750-841 zusammen mit der mbt.dll. Ich lese mittels c# die digitalen eingange aus. Das funktioniert. Aber wie lese ich Realwerte aus der Wago? Es handelt sich scheinbar um 32 Bit Werte, von denen immer nur 16 Bit ausgelesen werden können. Wie wandel ich diese in double um? Evt hat jemand eine Stück Code greifbar.&lt;/p&gt;
&lt;p&gt;Danke &amp;amp; Grüße&lt;/p&gt;
&lt;p&gt;Cali&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>