<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to SPS absturz nach Pointer dereferenzierung</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/fca8271c77/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/fca8271c77/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Deutsch/thread/fca8271c77/</id><updated>2020-02-28T08:06:04.181000Z</updated><subtitle>Recent posts to SPS absturz nach Pointer dereferenzierung</subtitle><entry><title>SPS absturz nach Pointer dereferenzierung</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/fca8271c77/?limit=25#283a" rel="alternate"/><published>2020-02-28T08:06:04.181000Z</published><updated>2020-02-28T08:06:04.181000Z</updated><author><name>schmokie</name><uri>https://forge.codesys.com/u/schmokie/</uri></author><id>https://forge.codesys.come32aacf2e869c8ed31faa6f86d68218cb3793ff5</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;hat leider etwas länger gedauert, hab nun aber endlich mal wieder die Zeitgefunden weiter zu machen. Danke für die Antwort Erik Böhm.&lt;br/&gt;
Was genau das Problem ist weis ich bis lang leider immer noch nicht. Habe es auch ohne Variablen bei der Indizierung versucht also&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;SerData&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ascii_word&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;aber auch dann stürzt die SPS ab. Ich hab es jetzt einfach anders gelöst. Da es funktioniert hat wenn ich nicht auf die Arrayelemente des Pointers zugegriffen habe, habe ich den Pointer einfach auf die Zieladresse gelegt und die Daten in den Pointer geschrieben.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;   &lt;span class="nv"&gt;ascii_ptr&lt;/span&gt;:&lt;span class="nv"&gt;POINTER&lt;/span&gt; &lt;span class="nv"&gt;TO&lt;/span&gt; &lt;span class="nv"&gt;STRING&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;i&lt;/span&gt;: &lt;span class="nv"&gt;INT&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;;      (*Schleifenzählvariable*)&lt;/span&gt;
   &lt;span class="nv"&gt;k&lt;/span&gt;: &lt;span class="nv"&gt;INT&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;;      (*Schleifenzähl-Konstante*)&lt;/span&gt;
&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;Ü&lt;span class="nv"&gt;bertragen&lt;/span&gt; &lt;span class="nv"&gt;der&lt;/span&gt; &lt;span class="nv"&gt;E&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;Mailadressen&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
   &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;SerData&lt;/span&gt;[&lt;span class="mi"&gt;203&lt;/span&gt;].&lt;span class="mi"&gt;11&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;TRUE&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
      &lt;span class="k"&gt;FOR&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="nv"&gt;TO&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="k"&gt;DO&lt;/span&gt;
         &lt;span class="nv"&gt;ascii_ptr&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;SerData&lt;/span&gt;[&lt;span class="mi"&gt;36&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;]&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
         &lt;span class="nv"&gt;ascii_ptr&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;E_Mail_Adressen&lt;/span&gt;[&lt;span class="nv"&gt;i&lt;/span&gt;]&lt;span class="c1"&gt;;&lt;/span&gt;
      &lt;span class="nv"&gt;END_FOR&lt;/span&gt;
      &lt;span class="nv"&gt;SerData&lt;/span&gt;[&lt;span class="mi"&gt;203&lt;/span&gt;].&lt;span class="mi"&gt;11&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;FALSE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;END_IF&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Geht jetzt wunderbar. Mich würde allerdings immer noch interessieren warum die SPS abstürzt sobald ich auf Elemente des Arrays, auf das der Pointer zeigt, zugreifen möchte. Falls jemand noch eine Idee hat würde ich mich freuen wenn er diese hier reinschreibt.&lt;/p&gt;
&lt;p&gt;Gruß&lt;/p&gt;
&lt;p&gt;Tobias&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>SPS absturz nach Pointer dereferenzierung</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/fca8271c77/?limit=25#ea84" rel="alternate"/><published>2020-02-28T08:06:01.792000Z</published><updated>2020-02-28T08:06:01.792000Z</updated><author><name>Erik Böhm</name><uri>https://forge.codesys.com/u/erik-boehm/</uri></author><id>https://forge.codesys.com3bec4114909209ddd2bf31bc2d9393b2fe38458c</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Mahlzeit&lt;/p&gt;
&lt;p&gt;Bei mir funktioniert das einwandfrei. Sowohl in der Simulation als auch auf der RTE.&lt;br/&gt;
Einen Wago Koppler hab ich grad nicht.&lt;/p&gt;
&lt;p&gt;Bei der Berechnung &lt;span&gt;[36+14*i+k]&lt;/span&gt; beachtest du schon Punkt vor Strich ?&lt;br/&gt;
Sonst könnte das Array evtl. überschrieben werden.&lt;/p&gt;
&lt;p&gt;Gruß&lt;br/&gt;
Erik&lt;/p&gt;
&lt;p&gt;&lt;img alt="IMG: PointerTest.png" rel="nofollow" src="https://forum-de.codesys.com//download/file.php?id=763"/&gt;&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>SPS absturz nach Pointer dereferenzierung</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/fca8271c77/?limit=25#8132" rel="alternate"/><published>2020-02-28T08:05:54.771000Z</published><updated>2020-02-28T08:05:54.771000Z</updated><author><name>schmokie</name><uri>https://forge.codesys.com/u/schmokie/</uri></author><id>https://forge.codesys.coma1d4a873542ef2a48e70a5e7a9a6d32be0f68b88</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo,&lt;/p&gt;
&lt;p&gt;unsere Wago 750-841 sendet bei Sensor- oder anderen Fehlern eine E-Mail an eine im Programm hinterlegte Adresse. Damit nicht immer das Programm neu aufgespielt werden muss wenn sich die Adresse ändert wollte ich dem Nutzer die Möglichkeit bieten die Adresse über das vorhandene Touch-Panel zu ändern. Dieses ist per Modebus an die SPS angeschlossen. Die Verbindung innerhalb des Programms erfolgt über den TERMINAL_MODBUSSLAVE_RTU (FB).&lt;br/&gt;
Zunächst habe ich die E-Mailadressen deklariert:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;E_Mail_Adressen&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ARRAY&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;..&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="n"&gt;OF&lt;/span&gt; &lt;span class="n"&gt;STRING&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&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="err"&gt; &lt;/span&gt;&lt;span class="o"&gt;(*&lt;/span&gt; &lt;span class="n"&gt;Beinhaltet&lt;/span&gt; &lt;span class="n"&gt;die&lt;/span&gt; &lt;span class="n"&gt;E&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Mailadressen&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="err"&gt;ü&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="n"&gt;den&lt;/span&gt; &lt;span class="n"&gt;Versand&lt;/span&gt; &lt;span class="n"&gt;der&lt;/span&gt; &lt;span class="n"&gt;Fehler&lt;/span&gt; &lt;span class="n"&gt;E&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Mails&lt;/span&gt;&lt;span class="o"&gt;*)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Da über den TERMINAL_MODBUSSLAVE_RTU nur &lt;span style="color: #0000FF;"&gt;WORD&lt;/span&gt; Daten übertragen werden können wollte ich den String über einen Pointer zerlegen.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;ascii_word&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;POINTER&lt;/span&gt; &lt;span class="n"&gt;TO&lt;/span&gt; &lt;span class="n"&gt;ARRAY&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;..&lt;/span&gt;&lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="n"&gt;OF&lt;/span&gt; &lt;span class="n"&gt;WORD&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c"&gt;(*Übertragen der E-Mailadressen*)&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="n"&gt;IF&lt;/span&gt; &lt;span class="n"&gt;SerData&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;203&lt;/span&gt;&lt;span class="o"&gt;].&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;TRUE&lt;/span&gt; &lt;span class="n"&gt;THEN&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="n"&gt;FOR&lt;/span&gt; &lt;span class="n"&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="n"&gt;TO&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="n"&gt;DO&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="err"&gt; &lt;/span&gt;&lt;span class="n"&gt;ascii_word&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;ADR&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;E_Mail_Adressen&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&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="err"&gt; &lt;/span&gt;&lt;span class="n"&gt;FOR&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="n"&gt;TO&lt;/span&gt; &lt;span class="mi"&gt;14&lt;/span&gt; &lt;span class="n"&gt;DO&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="err"&gt;  &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="n"&gt;SerData&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;36&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;ascii_word&lt;/span&gt;&lt;span class="o"&gt;^[&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="o"&gt;];&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="c"&gt;(*Hier Stürzt die SPS ab*)&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="err"&gt; &lt;/span&gt;&lt;span class="n"&gt;END_FOR&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="n"&gt;END_FOR&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="n"&gt;SerData&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;203&lt;/span&gt;&lt;span class="o"&gt;].&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;FALSE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="n"&gt;END_IF&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Es klappt bis an die Stelle, an der ich den Pointer dereferenzieren möchte. An dieser Stelle stürzt die SPS ab und die LEDs blicken rot.&lt;/p&gt;
&lt;p&gt;Das Problem tritt allerdings nur dann auf, wenn ich auf ein Arrayelement des Pointers zugreifen möchte. Es geht wenn ich den kompletten Inhalt verschiebe:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;test&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;ARRAY&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;..&lt;/span&gt;&lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="n"&gt;OF&lt;/span&gt; &lt;span class="n"&gt;WORD&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;test&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;ascii_word&lt;/span&gt;&lt;span class="o"&gt;^;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Deshalb vermute ich, das ich beim dereferenzieren etwas falsch mache. Ich habe nur keine Ahnung was.&lt;/p&gt;
&lt;p&gt;Ich hoffe das mir jemand weiterhelfen kann.&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>