<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Mit einer Schleife MW Bereiche beschreiben</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/958d9d09ea/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/958d9d09ea/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Deutsch/thread/958d9d09ea/</id><updated>2020-02-28T07:21:42.299000Z</updated><subtitle>Recent posts to Mit einer Schleife MW Bereiche beschreiben</subtitle><entry><title>Mit einer Schleife MW Bereiche beschreiben</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/958d9d09ea/?limit=25#076f" rel="alternate"/><published>2020-02-28T07:21:42.299000Z</published><updated>2020-02-28T07:21:42.299000Z</updated><author><name>Gumpi</name><uri>https://forge.codesys.com/u/gumpi/</uri></author><id>https://forge.codesys.com736ca38ef227f8164101fe5a0872b8a0c9126395</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Das ist ja mal ne Chance mit Pointern zu prahlen &lt;/p&gt;
&lt;p&gt;Unter ST würde das so aussehen:&lt;/p&gt;
&lt;p&gt;var&lt;/p&gt;
&lt;p&gt;pt : pointer to byte;&lt;/p&gt;
&lt;p&gt;end_Var;&lt;/p&gt;
&lt;p&gt;for x:=100 to 300&lt;/p&gt;
&lt;p&gt;pt:=adr(%MB0)+x;&lt;/p&gt;
&lt;p&gt;pt^:=0;&lt;/p&gt;
&lt;p&gt;end_for;&lt;/p&gt;
&lt;p&gt;das Beispiel würde die Bytes 100 bis 300 mit Nullen beschreiben. das ^ nennt sich Inhaltsoperator.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Mit einer Schleife MW Bereiche beschreiben</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/958d9d09ea/?limit=25#b08b" rel="alternate"/><published>2020-02-28T07:21:35.923000Z</published><updated>2020-02-28T07:21:35.923000Z</updated><author><name>Uwe</name><uri>https://forge.codesys.com/u/uwe/</uri></author><id>https://forge.codesys.comf240a8716f6ca01f675b7f2c7814a8a34db6f304</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo gnassel,&lt;/p&gt;
&lt;p&gt;Modbus kennt nur Bit-Dienste und Wort-Dienste.&lt;/p&gt;
&lt;p&gt;Du kannst also via Modbus (über Wortdienste) nicht nur z.B. MB256 holen / schreiben sondern nur MW256 (also MB 512 / 513) oder&lt;/p&gt;
&lt;p&gt;MW128 also (MB 256 / 257).&lt;/p&gt;
&lt;p&gt;Das am Rande.&lt;/p&gt;
&lt;p&gt;Aber nun zum eigentlichen Problem.&lt;/p&gt;
&lt;p&gt;Du kannst ein ARRAY einfach in den Merkerbereich legen.&lt;/p&gt;
&lt;p&gt;z.B.   &lt;/p&gt;
&lt;p&gt;VAR&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;Merker&lt;/span&gt;  &lt;span class="k"&gt;AT&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="n"&gt;MB256&lt;/span&gt;   &lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="nb"&gt;ARRAY&lt;/span&gt;&lt;span class="p"&gt;[&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;10&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;OF&lt;/span&gt; &lt;span class="n"&gt;BYTE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;END_VAR&lt;/p&gt;
&lt;p&gt;und dann kannst du in einer Schleife natürlich auf Merker&lt;span&gt;[ i ]&lt;/span&gt; zugreifen.&lt;/p&gt;
&lt;p&gt;Vorsicht : wenn du ein Word-Array nimmst dann solltest du als Adresse auch %MW angeben&lt;/p&gt;
&lt;p&gt;und keine Byteadresse da es dir sonst passieren kann dass du ein Wort-Element auf eine&lt;/p&gt;
&lt;p&gt;ungerade Adresse legst (z.B.  Merker AT %MB1  : ARRAY&lt;span&gt;[0..10]&lt;/span&gt; OF WORD;  ).&lt;/p&gt;
&lt;p&gt;Die Folge wäre im Code ein Wortzugriff auf eine ungerade Byte-Adresse und das führt meist zum Absturz.&lt;/p&gt;
&lt;p&gt;Auch bei Strukturen muss man aufpassen (zusätzlich zu obigen Punkt können dort für das Wordalignment&lt;/p&gt;
&lt;p&gt;Füllbytes eingefügt werden).&lt;/p&gt;
&lt;p&gt;Uwe&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Mit einer Schleife MW Bereiche beschreiben</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/958d9d09ea/?limit=25#57b5" rel="alternate"/><published>2020-02-28T07:21:33.551000Z</published><updated>2020-02-28T07:21:33.551000Z</updated><author><name>gnassel</name><uri>https://forge.codesys.com/u/gnassel/</uri></author><id>https://forge.codesys.com55de235fb890959f0c966ab46852d0c5f2c0a413</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo,&lt;/p&gt;
&lt;p&gt;ich habe eine winzig kleine Frage:&lt;/p&gt;
&lt;p&gt;ich möchte Daten aus einem Feld via Modbus übertragen. Dazu verwende ich z.Z. folgenden Code:&lt;/p&gt;
&lt;p&gt;MB256:=DATA(1);&lt;/p&gt;
&lt;p&gt;MB257:=DATA(2);&lt;/p&gt;
&lt;p&gt;MB258:=DATA(3);&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;p&gt;Die Daten würde ich gern mit einer For/Next Schleifen umkopieren. &lt;/p&gt;
&lt;p&gt;Aber wie kann ich die EA/Modbusadressen mit einem Index z.b. DATA(t) versehen?&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>