<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Direkt dargestellte Variablen und deren Lage im Speicher</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/ad44d3a02f/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/ad44d3a02f/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Deutsch/thread/ad44d3a02f/</id><updated>2020-02-28T17:13:44.105000Z</updated><subtitle>Recent posts to Direkt dargestellte Variablen und deren Lage im Speicher</subtitle><entry><title>Direkt dargestellte Variablen und deren Lage im Speicher</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/ad44d3a02f/?limit=25#c5d1" rel="alternate"/><published>2020-02-28T17:13:44.105000Z</published><updated>2020-02-28T17:13:44.105000Z</updated><author><name>Anonymous</name><uri>https://forge.codesys.com/u/*anonymous/</uri></author><id>https://forge.codesys.coma20feb568c6e498cfb414a715f3845b7680742aa</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;&lt;em&gt;Originally created by:&lt;/em&gt; Bernhard Werner&lt;/p&gt;
&lt;p&gt;Hallo CuBe,&lt;/p&gt;
&lt;p&gt;Auf CoDeSys-Systemen passt die Addresse von %MB0 normalerweise schon.&lt;/p&gt;
&lt;p&gt;ld 0&lt;/p&gt;
&lt;p&gt;st pointer&lt;/p&gt;
&lt;p&gt;wird auch auf einer SPS im Normalfall nicht funktionieren, weil der gültige Speicher nie bei 0 beginnt, ausserdem wird auf vielen CoDesys-basierten Systemen (insbesondere SoftSPS) der Speicher auch dynamisch alloziert.&lt;/p&gt;
&lt;p&gt;Aber jetzt müssen Sie mir schon noch erzählen wozu Sie einen Pointer auf den Anfang des Speichers brauchen.&lt;/p&gt;
&lt;p&gt;Bernhard Werner&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Direkt dargestellte Variablen und deren Lage im Speicher</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/ad44d3a02f/?limit=25#5c85" rel="alternate"/><published>2020-02-28T17:13:41.137000Z</published><updated>2020-02-28T17:13:41.137000Z</updated><author><name>CuBe</name><uri>https://forge.codesys.com/u/cube/</uri></author><id>https://forge.codesys.com1a712f8ed23cea3571ef187e55e446fade85271b</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Danke für die Auskunft.&lt;/p&gt;
&lt;p&gt;Gibt es denn eine sichere Methode die erste Speicherzelle zu Pointern?&lt;/p&gt;
&lt;p&gt;Zur Zeit nutze ich den Merkerbereich, indem ich mir auf %MB0 eine Variable lege, diese aufrufe und mir die Addresse geben lasse:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nt"&gt;Var&lt;/span&gt;
&lt;span class="nt"&gt;ErsteZelle&lt;/span&gt; &lt;span class="nt"&gt;AT&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;MB0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nd"&gt;BYTE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;PointerVorne&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;Pointer&lt;/span&gt; &lt;span class="nt"&gt;to&lt;/span&gt; &lt;span class="nt"&gt;BYTE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;End_Var&lt;/span&gt;
&lt;span class="nt"&gt;LD&lt;/span&gt; &lt;span class="nt"&gt;ErsteZelle&lt;/span&gt;
&lt;span class="nt"&gt;ADR&lt;/span&gt;
&lt;span class="nt"&gt;ST&lt;/span&gt; &lt;span class="nt"&gt;PointerVorne&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Da ich viel Offline Simmuliere, kann ich nicht einfach&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;LD&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="n"&gt;ST&lt;/span&gt; &lt;span class="n"&gt;PointerVorne&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;schreiben, da CoDeSys den simmulierten Speicher immer an einer anderen Stelle hat.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Direkt dargestellte Variablen und deren Lage im Speicher</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/ad44d3a02f/?limit=25#f90d" rel="alternate"/><published>2020-02-28T17:13:33.256000Z</published><updated>2020-02-28T17:13:33.256000Z</updated><author><name>Anonymous</name><uri>https://forge.codesys.com/u/*anonymous/</uri></author><id>https://forge.codesys.com38aa9cdca7d1eb90296f26029caa9bf3fabf5e4b</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;&lt;em&gt;Originally created by:&lt;/em&gt; Bernhard Werner&lt;/p&gt;
&lt;p&gt;Hallo CuBe,&lt;/p&gt;
&lt;p&gt;die Norm sagt hierzu gar nichts aus, und man kann auch nicht davon ausgehen.  Die Norm sagt nicht einmal etwas dazu wie die Merkeraddressen zueinander in Beziehung stehen.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Zitat:&lt;/strong&gt;&lt;br/&gt;
The manufacturer shall specify the correspondence between the direct representation of a variable&lt;br/&gt;
and the physical or logical location of the addressed item in memory, input or output.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Das ist alles was die Norm zu dem Thema sagt.&lt;/p&gt;
&lt;p&gt;Tatsächlich ist es in CoDeSys (2.3) normalerweise so, dass sich %MB0 vor allen frei vergebenen Variablen befindet. Aber natürlich darf ein Compiler den Merkerbereich auch hinter den frei vergebenen und wenn er will auch mittenrein, oder ganz woandershin (auf ein anderes Speichermedium) legen.&lt;/p&gt;
&lt;p&gt;Bernhard Werner&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Direkt dargestellte Variablen und deren Lage im Speicher</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/ad44d3a02f/?limit=25#d7fd" rel="alternate"/><published>2020-02-28T17:13:30.479000Z</published><updated>2020-02-28T17:13:30.479000Z</updated><author><name>CuBe</name><uri>https://forge.codesys.com/u/cube/</uri></author><id>https://forge.codesys.com76aafbacdd2537ea45c8237f6373fa5f2f9c1950</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Moin,&lt;/p&gt;
&lt;p&gt;ich suche nach einer (Literatur)Quelle, die mir sagt, dass %M?0 am Anfang des Speichers liegt.&lt;/p&gt;
&lt;p&gt;Heißt:&lt;/p&gt;
&lt;p&gt;Wenn ich eine Variable &lt;/p&gt;
&lt;p&gt;Test AT %MB0 : BYTE;&lt;/p&gt;
&lt;p&gt;deklariere, liegt die dann per Norm am Anfang des Speichers?&lt;/p&gt;
&lt;p&gt;Oder kann der Compiler die frei vergebenen Variablen vor den festen Bereich legen, und dann erst die fest vergebenen einordnen?&lt;/p&gt;
&lt;p&gt;Bzw. gibt es Compiler, die den Speicher der festen Variablen von hinten aufbauen?&lt;/p&gt;
&lt;p&gt;Vielen Dank schonmal für jede Hilfestellung.&lt;/p&gt;
&lt;p&gt;CuBe&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>