<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Timeout bei Bacnetclientreadproperty [gelöst]</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/e79df23d0d/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/e79df23d0d/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Deutsch/thread/e79df23d0d/</id><updated>2020-02-28T00:47:18.317000Z</updated><subtitle>Recent posts to Timeout bei Bacnetclientreadproperty [gelöst]</subtitle><entry><title>Timeout bei Bacnetclientreadproperty [gelöst]</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/e79df23d0d/?limit=25#2cba" rel="alternate"/><published>2020-02-28T00:47:18.317000Z</published><updated>2020-02-28T00:47:18.317000Z</updated><author><name>dirkf</name><uri>https://forge.codesys.com/u/dirkf/</uri></author><id>https://forge.codesys.combe97a2c4dd76976069ff0ef420744f4404e39e8d</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo.&lt;/p&gt;
&lt;p&gt;das Problem konnte glücklicherweise gelöst werden.&lt;br/&gt;
Warum es genau zum Timeout kam konnte ich nicht ermitteln. &lt;br/&gt;
Behoben wurde das ganze für die unter Windows10 installierte Version durch die Installation des Funktionupdates 1903.&lt;/p&gt;
&lt;p&gt;Dirk&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Timeout bei Bacnetclientreadproperty [gelöst]</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/e79df23d0d/?limit=25#4043" rel="alternate"/><published>2020-02-28T00:47:16.529000Z</published><updated>2020-02-28T00:47:16.529000Z</updated><author><name>ThK</name><uri>https://forge.codesys.com/u/thk/</uri></author><id>https://forge.codesys.comac7a041cf50cf723b642135a7138a59556910e86</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Moin Dirk,&lt;br/&gt;
das erste was mir auffällt, das Du "initDone" nicht zurück (bzw. auf TRUE) setzt. == &amp;gt;&amp;gt; RegisterToServer wird x-Mal ausgeführt&lt;/p&gt;
&lt;p&gt;Ich habe gerade noch mal den Code aus dem FAQ probiert, der arbeitet korrekt.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;fbReadProperty&lt;/span&gt;  &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BACnet&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;BACnetClientReadProperty&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;xReadExecute&lt;/span&gt;    &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;lrReadValue&lt;/span&gt;     &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;LREAL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;xInitDone&lt;/span&gt;       &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&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;IF NOT xInitDone THEN&lt;br/&gt;
    fbReadProperty.RegisterToServer(BACnet_Client);&lt;br/&gt;
    fbReadProperty(dwTargetDeviceNumber := 718,&lt;br/&gt;
                    objType := BACnet.CmpBACnet.IEC_BACNET_OBJECT_TYPE.OBJ_ANALOG_VALUE, &lt;br/&gt;
                    objInst := 1,&lt;br/&gt;
                    propID := BACnet.CmpBACnet.IEC_BACNET_PROPERTY_ID.PROP_PRESENT_VALUE);&lt;br/&gt;
    xInitDone := TRUE;&lt;br/&gt;
ELSE&lt;br/&gt;
    fbReadProperty(xExecute := xReadExecute);&lt;br/&gt;
    IF fbReadProperty.xDone THEN&lt;br/&gt;
        xReadExecute := FALSE;&lt;br/&gt;
        lrReadValue := BACnet.GetRealFromContents(fbReadProperty.result);&lt;br/&gt;
    END_IF&lt;br/&gt;
END_IF&lt;/p&gt;
&lt;p&gt;Auch der gesonderte Aufruf von "readProp();" erscheint mir überflüssig.&lt;/p&gt;
&lt;p&gt;Gruß, viel Erfolg&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Timeout bei Bacnetclientreadproperty [gelöst]</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/e79df23d0d/?limit=25#d85a" rel="alternate"/><published>2020-02-28T00:47:11.551000Z</published><updated>2020-02-28T00:47:11.551000Z</updated><author><name>dirkf</name><uri>https://forge.codesys.com/u/dirkf/</uri></author><id>https://forge.codesys.comb23d82a6ea668cf1b72084587c72d0d2226940f5</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo zusammen,&lt;/p&gt;
&lt;p&gt;ich arbeite mich grad in Bacnet ein und laufe auch direkt in eine Herausforderung.&lt;/p&gt;
&lt;p&gt;Ein im Codesys angelegter BACnet-Server mit einem analogen input läuft ohne Probleme und ich kann den hinterlegten Wert über das Beispiel auslesen. was für mich erstmal bedeutet der Code ist ok.&lt;/p&gt;
&lt;p&gt;Versuche ich jedoch einen Bacnet-Controller im lokalen Netz auszulesen bekomme ich laut eStatus im BACnetClientReadProperty einen timeout.&lt;br/&gt;
Das Anheben der Zeit bis zum timeout hatte auch keinen Erfolg. &lt;br/&gt;
Ein mitlaufender Wireshark zeigt sowohl den Request als auch die Rückmeldung des Controllers mit dem entsprechenden Wert an.&lt;br/&gt;
Nun stellt sich mir die Frage wo ich den Denkfehler begangan habe.&lt;/p&gt;
&lt;p&gt;Folgenden Code wird verwendet, vom Beispiel habe ich nur DeviceID und die ObjektID geändert.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;PROGRAM&lt;/span&gt; &lt;span class="nv"&gt;PLC_PRG&lt;/span&gt;
&lt;span class="nv"&gt;VAR&lt;/span&gt;
    &lt;span class="nv"&gt;initDone&lt;/span&gt; : &lt;span class="nv"&gt;BOOL&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;readProp&lt;/span&gt; : &lt;span class="nv"&gt;BACnet&lt;/span&gt;.&lt;span class="nv"&gt;BACnetClientReadProperty&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;readPropCnt&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;;&lt;/span&gt;
    &lt;span class="nv"&gt;readPropErrorCnt&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;;&lt;/span&gt;
    &lt;span class="nv"&gt;readPropCancelCnt&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;;&lt;/span&gt;
    &lt;span class="nv"&gt;readPropVal&lt;/span&gt; : &lt;span class="nv"&gt;REAL&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_VAR&lt;/span&gt;
&lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;NOT&lt;/span&gt; &lt;span class="nv"&gt;initDone&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
                &lt;span class="nv"&gt;readProp&lt;/span&gt;.&lt;span class="nv"&gt;RegisterToServer&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;BACnet_Server&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
                &lt;span class="nv"&gt;readProp&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;
                               &lt;span class="nv"&gt;dwTargetDeviceNumber&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2098177&lt;/span&gt;, &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nv"&gt;Controller&lt;/span&gt;
                               &lt;span class="nv"&gt;objType&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;BACnet&lt;/span&gt;.&lt;span class="nv"&gt;CmpBACnet&lt;/span&gt;.&lt;span class="nv"&gt;IEC_BACNET_OBJECT_TYPE&lt;/span&gt;.&lt;span class="nv"&gt;OBJ_ANALOG_VALUE&lt;/span&gt;,
                               &lt;span class="nv"&gt;objInst&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="nv"&gt;Temperaturf&lt;/span&gt;ü&lt;span class="nv"&gt;hler&lt;/span&gt; 
                               &lt;span class="nv"&gt;propID&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;BACnet&lt;/span&gt;.&lt;span class="nv"&gt;CmpBACnet&lt;/span&gt;.&lt;span class="nv"&gt;IEC_BACNET_PROPERTY_ID&lt;/span&gt;.&lt;span class="nv"&gt;PROP_PRESENT_VALUE&lt;/span&gt;,
                               &lt;span class="nv"&gt;nIndex&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_IF&lt;/span&gt;
&lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;readProp&lt;/span&gt;.&lt;span class="nv"&gt;xExecute&lt;/span&gt; &lt;span class="nv"&gt;AND&lt;/span&gt; &lt;span class="nv"&gt;readProp&lt;/span&gt;.&lt;span class="nv"&gt;xBusy&lt;/span&gt; &lt;span class="nv"&gt;AND&lt;/span&gt; &lt;span class="nv"&gt;readProp&lt;/span&gt;.&lt;span class="nv"&gt;iState&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
                &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;readPropCnt&lt;/span&gt; &lt;span class="nv"&gt;MOD&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;cancel&lt;/span&gt; &lt;span class="nv"&gt;every&lt;/span&gt; &lt;span class="nv"&gt;second&lt;/span&gt; &lt;span class="nv"&gt;request&lt;/span&gt;
                               &lt;span class="nv"&gt;readProp&lt;/span&gt;.&lt;span class="nv"&gt;xAbort&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;TRUE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
                               &lt;span class="nv"&gt;readPropCancelCnt&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;readPropCancelCnt&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
                &lt;span class="nv"&gt;END_IF&lt;/span&gt;
&lt;span class="nv"&gt;END_IF&lt;/span&gt;
&lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;NOT&lt;/span&gt; &lt;span class="nv"&gt;readProp&lt;/span&gt;.&lt;span class="nv"&gt;xExecute&lt;/span&gt; &lt;span class="nv"&gt;AND&lt;/span&gt; &lt;span class="nv"&gt;NOT&lt;/span&gt; &lt;span class="nv"&gt;readProp&lt;/span&gt;.&lt;span class="nv"&gt;xAborted&lt;/span&gt; &lt;span class="nv"&gt;AND&lt;/span&gt; &lt;span class="nv"&gt;NOT&lt;/span&gt; &lt;span class="nv"&gt;readProp&lt;/span&gt;.&lt;span class="nv"&gt;xDone&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
                &lt;span class="nv"&gt;readProp&lt;/span&gt;.&lt;span class="nv"&gt;xExecute&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;TRUE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
                &lt;span class="nv"&gt;readPropCnt&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;readPropCnt&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_IF&lt;/span&gt;
&lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;readProp&lt;/span&gt;.&lt;span class="nv"&gt;xExecute&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
                &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;readProp&lt;/span&gt;.&lt;span class="nv"&gt;xDone&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
                               &lt;span class="nv"&gt;readProp&lt;/span&gt;.&lt;span class="nv"&gt;xExecute&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;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;readProp&lt;/span&gt;.&lt;span class="nv"&gt;xError&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
                               &lt;span class="nv"&gt;readProp&lt;/span&gt;.&lt;span class="nv"&gt;xExecute&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;readPropErrorCnt&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;readPropErrorCnt&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
                &lt;span class="nv"&gt;END_IF&lt;/span&gt;
                &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;readProp&lt;/span&gt;.&lt;span class="nv"&gt;xAborted&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
                               &lt;span class="nv"&gt;readProp&lt;/span&gt;.&lt;span class="nv"&gt;xExecute&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;readProp&lt;/span&gt;.&lt;span class="nv"&gt;xAbort&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;span class="nv"&gt;END_IF&lt;/span&gt;
&lt;span class="nv"&gt;readProp&lt;/span&gt;&lt;span class="ss"&gt;()&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;readProp&lt;/span&gt;.&lt;span class="nv"&gt;xDone&lt;/span&gt; &lt;span class="nv"&gt;OR&lt;/span&gt; &lt;span class="nv"&gt;readProp&lt;/span&gt;.&lt;span class="nv"&gt;xError&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
                &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;readProp&lt;/span&gt;.&lt;span class="nv"&gt;xError&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
                               &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;handle&lt;/span&gt; &lt;span class="nv"&gt;error&lt;/span&gt;
                               &lt;span class="c1"&gt;;&lt;/span&gt;
                &lt;span class="k"&gt;ELSE&lt;/span&gt;
                               &lt;span class="nv"&gt;readPropVal&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;BACnet&lt;/span&gt;.&lt;span class="nv"&gt;GetRealFromContents&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;readProp&lt;/span&gt;.&lt;span class="nb"&gt;result&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
                &lt;span class="nv"&gt;END_IF&lt;/span&gt;
&lt;span class="nv"&gt;END_IF&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Der Controller liefert über Yabe (ein kleiner Bacnet explorer) Werte ab.&lt;/p&gt;
&lt;p&gt;Ich bin für jeden Wink und Hinweis dankbar.&lt;/p&gt;
&lt;p&gt;Dirk&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>