<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to ModbusTCP Sensorabfrage Error illegal Funktion</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/7a38a19e89/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/7a38a19e89/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Deutsch/thread/7a38a19e89/</id><updated>2023-01-24T14:03:29.239000Z</updated><subtitle>Recent posts to ModbusTCP Sensorabfrage Error illegal Funktion</subtitle><entry><title>ModbusTCP Sensorabfrage Error illegal Funktion</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/7a38a19e89/?limit=25#cbcd" rel="alternate"/><published>2023-01-24T14:03:29.239000Z</published><updated>2023-01-24T14:03:29.239000Z</updated><author><name>andrax</name><uri>https://forge.codesys.com/u/andrax/</uri></author><id>https://forge.codesys.com937fe559cf6095d48ef6d3b854da742bc1795684</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Ah Ok Danke,&lt;/p&gt;
&lt;p&gt;die Funktion MEM.PackWordsToDword... kannte ich noch gar nicht.&lt;br/&gt;
Also mit den Pointer und dereferenzieren greift man direkt auf die Speicheradresse&lt;br/&gt;
und hat sozusagen Zugriff auf die Rohdaten.&lt;br/&gt;
Aber warum macht man das?&lt;br/&gt;
Das erschließt sich mir nicht.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>ModbusTCP Sensorabfrage Error illegal Funktion</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/7a38a19e89/?limit=25#9b97" rel="alternate"/><published>2023-01-24T11:24:28.342000Z</published><updated>2023-01-24T11:24:28.342000Z</updated><author><name>Fless</name><uri>https://forge.codesys.com/u/fless/</uri></author><id>https://forge.codesys.com7555e44fd3d5d45b3f4c53098300b925e058ec9c</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Alternativ kannst du die 'CAA Memory' Bibliothek nutzen.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="err"&gt;rawDWord := MEM.PackWordsToDword(wHighWord:= UpperByte , wLowWord := LowerByte );&lt;/span&gt;
&lt;span class="err"&gt;MEM.MemMove(pSource := ADR(rawDWord), pDestination := ADR(Daten), uiNumberOfBytes := SIZEOF(Daten));&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;PS:&lt;br/&gt;
pt := ADR(X); // schreibt die Speicheradresse von x in then Pointer pt&lt;br/&gt;
DW_TO_REAL := pt^; // schreibt den Wert der an der Speicheradresse pt steht in DW_TO_REAL&lt;br/&gt;
// dereferenziert den Pointer&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>ModbusTCP Sensorabfrage Error illegal Funktion</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/7a38a19e89/?limit=25#0630" rel="alternate"/><published>2023-01-24T06:12:57.223000Z</published><updated>2023-01-24T06:12:57.223000Z</updated><author><name>andrax</name><uri>https://forge.codesys.com/u/andrax/</uri></author><id>https://forge.codesys.com33f446355e42cee4490e40c0561adc34c38a91e6</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo zusammen,&lt;/p&gt;
&lt;p&gt;fast vergessen mich zu melden.&lt;br/&gt;
Ich hab mittlerweile das Problem gelöst.&lt;br/&gt;
Die Falsche Darstellung konnte ich mit OSCAT lösen&lt;br/&gt;
So sieht mein Code jetzt aus:&lt;br/&gt;
FUNCTION_BLOCK ModbusKonverter&lt;br/&gt;
VAR_INPUT&lt;br/&gt;
    LowerByte : WORD; //CD&lt;br/&gt;
    UpperByte : WORD; //AB&lt;br/&gt;
END_VAR&lt;br/&gt;
VAR_OUTPUT&lt;br/&gt;
    Daten : REAL;&lt;br/&gt;
END_VAR&lt;br/&gt;
VAR&lt;br/&gt;
    rawLowerByte : DWORD;&lt;br/&gt;
    rawUpperByte : DWORD;&lt;br/&gt;
END_VAR&lt;/p&gt;
&lt;p&gt;rawLowerByte := WORD_TO_DWORD(LowerByte);&lt;br/&gt;
rawUpperByte := SHL(WORD_TO_DWORD(UpperByte),16);&lt;br/&gt;
Daten := oscat_basic.DW_TO_REAL(rawLowerByte OR rawUpperByte);&lt;/p&gt;
&lt;p&gt;PS:&lt;br/&gt;
Mir ist allerdings unklar wie oscat_basic.DW_TO_REAL funktioniert.&lt;br/&gt;
Evtl. kann mir jemand folgende Codezeilen erklären?&lt;br/&gt;
pt := ADR(X);&lt;br/&gt;
DW_TO_REAL := pt^;&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>ModbusTCP Sensorabfrage Error illegal Funktion</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/7a38a19e89/?limit=25#8eb8" rel="alternate"/><published>2023-01-11T14:30:06.073000Z</published><updated>2023-01-11T14:30:06.073000Z</updated><author><name>andrax</name><uri>https://forge.codesys.com/u/andrax/</uri></author><id>https://forge.codesys.comba5029091426a89a7d288eaed3e628ca9be1464c</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;OK ich habs... fast.&lt;br/&gt;
Ich muss die Register 0x7010 und 0x7011 auslesen und entsprechend zusammensetzen.&lt;br/&gt;
AB CD &amp;gt;&amp;gt;&amp;gt; CDAB&lt;br/&gt;
Hab ich über eine Funktion gelöst.&lt;br/&gt;
Ist zwar jetzt nicht die sauberste lösung, aber funktioniert:&lt;br/&gt;
END_VAR&lt;br/&gt;
VAR_OUTPUT&lt;br/&gt;
    Daten : LREAL;&lt;br/&gt;
END_VAR&lt;br/&gt;
VAR&lt;br/&gt;
    rawLowerByte : DWORD;&lt;br/&gt;
    rawUpperByte : DWORD;&lt;/p&gt;
&lt;p&gt;END_VAR&lt;/p&gt;
&lt;p&gt;rawLowerByte := WORD_TO_DWORD(LowerByte);&lt;br/&gt;
rawUpperByte := SHL(WORD_TO_DWORD(UpperByte),16);&lt;br/&gt;
Daten := DWORD_TO_LREAL(rawLowerByte OR rawUpperByte);&lt;/p&gt;
&lt;p&gt;Allerdings habe ich jetzt ein Darstellungsproblem:&lt;br/&gt;
Aus der Bytefolge (16#3F970A3D) Bekomme ich ein UINT32 Wert = 1.07E+09 (1066863165)&lt;br/&gt;
Richtig wäre aber FLOAT = 1.18 &lt;/p&gt;
&lt;p&gt;Wie kann ich das Umstellen, bzw. richtig darstellen?&lt;/p&gt;
&lt;p&gt;Grüße&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>ModbusTCP Sensorabfrage Error illegal Funktion</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/7a38a19e89/?limit=25#2f32" rel="alternate"/><published>2023-01-11T08:53:18.614000Z</published><updated>2023-01-11T08:53:18.614000Z</updated><author><name>andrax</name><uri>https://forge.codesys.com/u/andrax/</uri></author><id>https://forge.codesys.com60bf3e6e0c2366c1fc9f11317599dbc780730d85</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Ich brauche doch noch einmal Hilfe.&lt;br/&gt;
Die Eingangsdaten müssen konvertiert werden.&lt;br/&gt;
Ich hätte jetzt angenommen, dass nach little/big endian BBAA &amp;gt;&amp;gt; AABB konvertiert werden muss.&lt;br/&gt;
Dass Messgerät zeigt auf Kanal 1 (0x7010) 1,75 bzw. 1,76 an.&lt;br/&gt;
Meine Eingangsdaten schwanken zwischen 16#47AE bzw. 16#8F5C&lt;br/&gt;
Aber egal wie ich die Bytes schiebe, ich bekomme kein sinnvolles Ergebnis welches mit den Messdaten korrespondiert.&lt;br/&gt;
Wie muss ich das richtig konvertieren?&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>ModbusTCP Sensorabfrage Error illegal Funktion</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/7a38a19e89/?limit=25#b20d" rel="alternate"/><published>2023-01-10T06:37:30.302000Z</published><updated>2023-01-10T06:37:30.302000Z</updated><author><name>andrax</name><uri>https://forge.codesys.com/u/andrax/</uri></author><id>https://forge.codesys.com90a27991365946ef8a314c71e02deb30d11e0249</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Dankeschön&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>ModbusTCP Sensorabfrage Error illegal Funktion</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/7a38a19e89/?limit=25#624b" rel="alternate"/><published>2023-01-10T05:53:02.805000Z</published><updated>2023-01-10T05:53:02.805000Z</updated><author><name>eschwellinger</name><uri>https://forge.codesys.com/u/eschwellinger/</uri></author><id>https://forge.codesys.com5b66a91f3ce15571479e3081f15134de58124ed5</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;...wie immer mappen und in den Pou's verwenden nur dann werden die auch aktualisiert.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>ModbusTCP Sensorabfrage Error illegal Funktion</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/7a38a19e89/?limit=25#e059" rel="alternate"/><published>2023-01-10T05:52:54.699000Z</published><updated>2023-01-10T05:52:54.699000Z</updated><author><name>eschwellinger</name><uri>https://forge.codesys.com/u/eschwellinger/</uri></author><id>https://forge.codesys.comeb163c42ee193224df8295df7b6fb681b02083c2</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;...wie immer mappen und in den Pou's verwenden nur dann werden die auch aktualisiert.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>ModbusTCP Sensorabfrage Error illegal Funktion</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/7a38a19e89/?limit=25#b102" rel="alternate"/><published>2023-01-10T05:45:18.103000Z</published><updated>2023-01-10T05:45:18.103000Z</updated><author><name>andrax</name><uri>https://forge.codesys.com/u/andrax/</uri></author><id>https://forge.codesys.comf786f73414bf4dd9ed551cd79314aee2fe708566</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo Herr Schwellinger,&lt;/p&gt;
&lt;p&gt;sie hatten Recht.&lt;br/&gt;
Es muss Functions Code 3 verwendet werden.&lt;br/&gt;
Zusätzlich muss das das Register 0x7010 in Hex 16#1B62 gewandelt werden.&lt;br/&gt;
Ich bin hier zufällig darauf gestoßen.&lt;/p&gt;
&lt;p&gt;Eine Frage noch.&lt;br/&gt;
Da ich mich zum ersten mal mit Modbus beschäftige.&lt;br/&gt;
Wo sehe ich die einlaufenden Daten, oder muss ich diese explizit auffrischen?&lt;/p&gt;
&lt;p&gt;Grüße&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>ModbusTCP Sensorabfrage Error illegal Funktion</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/7a38a19e89/?limit=25#22e0" rel="alternate"/><published>2023-01-09T06:25:08.554000Z</published><updated>2023-01-09T06:25:08.554000Z</updated><author><name>andrax</name><uri>https://forge.codesys.com/u/andrax/</uri></author><id>https://forge.codesys.comb6aadb453eff408e80f917981a8762a1d8927e97</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Ja die Runtime war gestoppt, bzw. über die Console beendet.&lt;br/&gt;
Ich habe jetzt noch 2 Ideen:&lt;br/&gt;
Den Netzwerkverkehr über Wireshark beobachten.&lt;br/&gt;
Den Wlanadapter deaktivieren.&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>