<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Ansprechen der seriellen Schnittstelle</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/b33581cd2c/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/b33581cd2c/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Deutsch/thread/b33581cd2c/</id><updated>2020-02-28T14:07:24.886000Z</updated><subtitle>Recent posts to Ansprechen der seriellen Schnittstelle</subtitle><entry><title>Ansprechen der seriellen Schnittstelle</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/b33581cd2c/?limit=25#c0be" rel="alternate"/><published>2020-02-28T14:07:24.886000Z</published><updated>2020-02-28T14:07:24.886000Z</updated><author><name>buschi</name><uri>https://forge.codesys.com/u/buschi/</uri></author><id>https://forge.codesys.comc12acca2da26249af2be2daa044687eaa89393f8</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Mhh. Mal schauen, wir haben jetzt nen Termin mit den Herstellern. Vielleicht können die uns nen Tipp geben.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Ansprechen der seriellen Schnittstelle</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/b33581cd2c/?limit=25#122a" rel="alternate"/><published>2020-02-28T14:07:17.315000Z</published><updated>2020-02-28T14:07:17.315000Z</updated><author><name>Erik Böhm</name><uri>https://forge.codesys.com/u/erik-boehm/</uri></author><id>https://forge.codesys.comc1c48579b4e8f95c411cc5a743940410b6eb511a</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Moin&lt;/p&gt;
&lt;p&gt;Genau so läufts bei uns auf der RTE auch. Sowohl unter Windows als auch unter Linux.&lt;br/&gt;
Bis von SysComSetSettings eine Rückgabe kommt, kanns aber auch mehrere Zyklen dauern.&lt;/p&gt;
&lt;p&gt;Gruß Erik&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Ansprechen der seriellen Schnittstelle</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/b33581cd2c/?limit=25#81b2" rel="alternate"/><published>2020-02-28T14:07:14.700000Z</published><updated>2020-02-28T14:07:14.700000Z</updated><author><name>buschi</name><uri>https://forge.codesys.com/u/buschi/</uri></author><id>https://forge.codesys.comf108e65c9661e4a962251f6658cea5397f43f07d</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Vielen Dank für die Info. Hab das jetzt mal entsprechend geändert. Also, der Handle ist positiv, Wert z.B. 7780.&lt;br/&gt;
Aber bPortState bleibt auf False und wird durch SysComSetSettings nicht geändert, auch nicht, wenn das danach im Zyklus irgendwann aufgerufen wird. &lt;/p&gt;
&lt;p&gt;Muss ich vielleicht irgendwas in der Konfiguration ändern?&lt;br/&gt;
Also ich habe hier einen kleinen Embedded PC, in dem zwei CAN Anschlüsse per PCI Karte eingebaut wurden. Zusätzlich sind noch zwei normale COM Anschlüsse vorhanden. Die Steuerung selbst läuft in der RTE.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Ansprechen der seriellen Schnittstelle</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/b33581cd2c/?limit=25#ab52" rel="alternate"/><published>2020-02-28T14:07:07.208000Z</published><updated>2020-02-28T14:07:07.208000Z</updated><author><name>Erik Böhm</name><uri>https://forge.codesys.com/u/erik-boehm/</uri></author><id>https://forge.codesys.comc2e252f64e96d98321c22af9656a6f63cfe9430f</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Moin&lt;/p&gt;
&lt;p&gt;Bei mir sieht das so aus:&lt;/p&gt;
&lt;p&gt;p_Comsettings.Port          := iPort;&lt;br/&gt;
p_Comsettings.dwBaudRate    := dwBaudrate;&lt;br/&gt;
(&lt;em&gt;p_Comsettings.cByteSize       := cByteSize; &lt;/em&gt;)&lt;br/&gt;
p_Comsettings.byParity      := byParity;&lt;br/&gt;
p_Comsettings.byStopBits    := byStopBits;&lt;br/&gt;
p_Comsettings.dwScan            := 0;&lt;/p&gt;
&lt;p&gt;dwPortHandle    := SysComOpen(p_Comsettings.Port);&lt;br/&gt;
IF dwPortHandle &amp;lt;&amp;gt; 16#FFFFFFFF THEN&lt;br/&gt;
    bPortState  := SysComSetSettings(dwPortHandle, ADR(p_Comsettings));&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c"&gt;(* COM erfolgreich geöffnet *)&lt;/span&gt;
&lt;span class="n"&gt;IF&lt;/span&gt; &lt;span class="n"&gt;bPortState&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="c"&gt;(* COM SetSettings erfolgreich beendet. *)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Erst Port erfolgreich öffnen (das kann mehr als einen Zyklus dauern), dann PortSettings&lt;/p&gt;
&lt;p&gt;Gruß Erik&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Ansprechen der seriellen Schnittstelle</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/b33581cd2c/?limit=25#18ef" rel="alternate"/><published>2020-02-28T14:07:04.571000Z</published><updated>2020-02-28T14:07:04.571000Z</updated><author><name>buschi</name><uri>https://forge.codesys.com/u/buschi/</uri></author><id>https://forge.codesys.com92d089cf098aaa6fff3af5a5a24033378e8720ec</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hab gesehen, dass der Code etwas verändert wurde.&lt;/p&gt;
&lt;p&gt;ComSettings : COMSETTINGS;&lt;br/&gt;
&lt;em&gt; : &lt;/em&gt;;&lt;br/&gt;
= ComSettings Ex : COMSETTINGS EX&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(ghCOM, ADR(&lt;/em&gt;)); =&lt;br/&gt;
SysComSetSettings Ex(ghCOM, ADR(ComSettings Ex));&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Ansprechen der seriellen Schnittstelle</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/b33581cd2c/?limit=25#db9c" rel="alternate"/><published>2020-02-28T14:06:57.300000Z</published><updated>2020-02-28T14:06:57.300000Z</updated><author><name>buschi</name><uri>https://forge.codesys.com/u/buschi/</uri></author><id>https://forge.codesys.com2c94622026a2cc0505ce044769975926a44ff89a</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Guten Morgen,&lt;/p&gt;
&lt;p&gt;ich versuche mit CoDeSys die serielle Schnittstelle eines IPCs anzusprechen. Funktionieren tut das leider nicht wirklich. Genauer gesagt kann ich noch nicht mal sagen, was nicht funktioniert, also ob nicht gesendet oder nicht empfangen wird (ist auch am Gerät nicht sichtbar ob irgendwas passiert). Ich spreche ein Steuerungsmodul für verschiedenere Temperaturmessgehänge an. Testweise hab ich auch mal ein .Net Programm geschrieben, bei diesem bekomme ich auch eine Antwort. Vielleicht hat irgendwer von euch Tipps, was ggf. falsch sein kann?&lt;/p&gt;
&lt;p&gt;Parameter im .Net Programm waren mit der Baudrate 9600, 8 Datenbits, 1 Stopbit, kein Paritätsbit eingestellt.&lt;br/&gt;
Als Befehl wird der String "57 65 6E 6E 65 47 0001 00 00 00 05 00 00 00 00" (ja, in der Mitte die 0001 ist so richtig) gefolgt von einem LF (Char Zeichen 10) abgesetzt.&lt;/p&gt;
&lt;p&gt;Zum Senden hab ich folgenden Code geschrieben:&lt;br/&gt;
PROGRAM PLC_PRG&lt;br/&gt;
VAR&lt;br/&gt;
    ComSettings : COMSETTINGS;&lt;br/&gt;
    _ : _;&lt;br/&gt;
    bInit : BOOL := TRUE;&lt;br/&gt;
    bWrite : BOOL := TRUE;&lt;br/&gt;
    End_init: BOOL;&lt;br/&gt;
    port : PORTS:=COM1;&lt;br/&gt;
    nWrite : DWORD;&lt;br/&gt;
    WriteBuffer : STRING;&lt;br/&gt;
END_VAR&lt;/p&gt;
&lt;p&gt;IF bInit THEN&lt;br/&gt;
    ghCOM:=SysComOpen(Port:=port);&lt;br/&gt;
    ComSettings.dwBaudRate := 9600;&lt;br/&gt;
    ComSettings.byStopBits := 1;&lt;br/&gt;
    ComSettings.byParity := 0;&lt;br/&gt;
    ComSettings.Port := port;&lt;br/&gt;
    (&lt;em&gt; Einstellung für Data Bits? &lt;/em&gt;)&lt;br/&gt;
    (&lt;em&gt; SysComSetSettings(hCOM, ADR(ComSettings)); &lt;/em&gt;)&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c"&gt;(* Testweise mit _ *)&lt;/span&gt;
&lt;span class="o"&gt;_.&lt;/span&gt;&lt;span class="n"&gt;dwBaudRate&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="mi"&gt;9600&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;_.&lt;/span&gt;&lt;span class="n"&gt;byStopBits&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;_.&lt;/span&gt;&lt;span class="n"&gt;byParity&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="o"&gt;_.&lt;/span&gt;&lt;span class="n"&gt;Port&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;_.&lt;/span&gt;&lt;span class="n"&gt;cByteSize&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;_.&lt;/span&gt;&lt;span class="n"&gt;fOutxCtsFlow&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="o"&gt;_.&lt;/span&gt;&lt;span class="n"&gt;fDtrControl&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="o"&gt;_.&lt;/span&gt;&lt;span class="n"&gt;fDsrSensitivity&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="o"&gt;_.&lt;/span&gt;&lt;span class="n"&gt;fRtsControl&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="o"&gt;_.&lt;/span&gt;&lt;span class="n"&gt;fOutxDsrFlow&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="o"&gt;_(&lt;/span&gt;&lt;span class="n"&gt;ghCOM&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;bInit&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;/pre&gt;&lt;/div&gt;


&lt;p&gt;END_IF&lt;/p&gt;
&lt;p&gt;IF bWrite AND ghCOM &amp;gt; 0 THEN&lt;br/&gt;
    WriteBuffer:= CONCAT('57 65 6E 6E 65 47 0001 00 00 00 05 00 00 00 00', '$L'); (&lt;em&gt; $L=Zeilenvorschub $N=Neue Zeile $R=Zeilenumbruch &lt;/em&gt;)&lt;br/&gt;
    nWrite := SysComWrite(dwHandle:=ghCOM, dwBufferAddress:=ADR(WriteBuffer),&lt;br/&gt;
        dwBytesToWrite:=LEN(WriteBuffer), dwTimeOut:=0);&lt;br/&gt;
        (&lt;em&gt; nWrite ist danach größer 0 &lt;/em&gt;)&lt;br/&gt;
    bWrite:=FALSE;&lt;br/&gt;
END_IF&lt;/p&gt;
&lt;p&gt;Zum Lesen habe ich mittlerweile ein eigenes Programm erstellt:&lt;/p&gt;
&lt;p&gt;IF ghCOM &amp;gt; 0 THEN&lt;br/&gt;
    nRead := SysComRead(dwHandle:=ghCOM, dwBufferAddress:=ADR(ReadBuffer), dwBytesToRead:=100, dwTimeout:=1000);&lt;br/&gt;
    IF nRead &amp;gt; 0 THEN&lt;br/&gt;
        gsRead := ReadBuffer;&lt;br/&gt;
    END_IF&lt;br/&gt;
END_IF&lt;/p&gt;
&lt;p&gt;ghCOM = global Double&lt;br/&gt;
gsRead = global String&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>