<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Modbus RTU Synchronisierung]]></title><description><![CDATA[<p dir="auto">Gibt es eine Möglichkeit Skripte mit Adapter-Zugriffen zu synchronisieren? Z.B. via Semaphore oder Locking. Bei mir funktioniert das Setzen der Wallbox Stromvorgabe via serieller Modbus Schnittstelle sehr unzuverlässig. Anscheinend kollidiert die Vorgabe mit dem zyklischen Auslesen</p>
]]></description><link>https://forum.iobroker.net/topic/49652/modbus-rtu-synchronisierung</link><generator>RSS for Node</generator><lastBuildDate>Wed, 27 May 2026 16:32:37 GMT</lastBuildDate><atom:link href="https://forum.iobroker.net/topic/49652.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 24 Nov 2021 06:01:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Modbus RTU Synchronisierung on Sat, 27 Nov 2021 13:31:05 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/skippi" aria-label="Profile: skippi">@<bdi>skippi</bdi></a></p>
<p dir="auto">Ich habe mal die Parameter angesehen. Da gibt es mehrere Zeitangaben.</p>
<p dir="auto">Ob die Wartezeiten lesend und schreibend sich gegenseitig berücksichtigen, kann ich nicht sagen.</p>
<p dir="auto">Bei Node-Red gibt es weniger Zeiten zu konfigurieren. In Klammern sind meine Werte.<br />
Timeout (1000ms) für Geräte, die nicht antworten.<br />
Reconnect-Timeout (2000 ms) wenn der Bus wohl hängt.<br />
Queue Sendeverzögerung (200ms). Die Pause zwischen zwei Anfragen, egal, ob lesend oder schreibend.</p>
<p dir="auto">Die Geräte brauchen eine gewisse Zeit, um die Befehle abzuarbeiten. Z.B. Register lesen, in den Buffer kopieren und dann senden. Da ist mein Timeout von 1000ms schon recht großzügig.<br />
Die Queue Sendeverzögerung hatte ich schonmal testweise auf 1 ms runter. Das  geht, wenn man als Trigger zum Senden die Antwort der vorherigen Abfrage nutzt.</p>
<p dir="auto">Seit ich 7 Nodes auf den Bus "parallel" laufen habe, habe ich mich für 200ms entschieden. Der Queue läuft so nicht voll.</p>
<p dir="auto">Sieht in Node-Red so aus:<br />
<img src="/assets/uploads/files/1638019856023-modbus1.png" alt="modbus1.png" class=" img-fluid img-markdown" /><br />
<img src="/assets/uploads/files/1638019863139-modbus2.png" alt="modbus2.png" class=" img-fluid img-markdown" /></p>
]]></description><link>https://forum.iobroker.net/post/710764</link><guid isPermaLink="true">https://forum.iobroker.net/post/710764</guid><dc:creator><![CDATA[peterfido]]></dc:creator><pubDate>Sat, 27 Nov 2021 13:31:05 GMT</pubDate></item><item><title><![CDATA[Reply to Modbus RTU Synchronisierung on Fri, 26 Nov 2021 06:06:18 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/peterfido" aria-label="Profile: peterfido">@<bdi>peterfido</bdi></a><br />
Das Intervall steht schon auf 10s. Ich habe jetzt erstmal eine Schleife eingebaut, die prüft ob es funktioniert hat und es sonst nochmal versucht.<br />
Ich wollte ja nur wissen, ob jemand weiss wie man es ordentlich macht ...</p>
<p dir="auto">schedule("34 5 * * *", async function () {<br />
while (getState("modbus.0.holdingRegisters.101_ILadeV").val != 0) {<br />
setState("modbus.0.holdingRegisters.101_ILadeV"/<em>LadestromVorgabe</em>/, 0);<br />
await wait(11000);<br />
console.log(getState("modbus.0.holdingRegisters.101_ILadeV").val);<br />
}<br />
});</p>
<p dir="auto">Man sieht im Logging auch, daß es tatsächlich mehrere Durchläufe braucht:</p>
<p dir="auto">javascript.0 05:34:33.295	info	script.js.WBMorgenStop: 0<br />
javascript.0 05:34:22.289	info	script.js.WBMorgenStop: 16<br />
javascript.0 05:34:11.202	info	script.js.WBMorgenStop: 16</p>
]]></description><link>https://forum.iobroker.net/post/709587</link><guid isPermaLink="true">https://forum.iobroker.net/post/709587</guid><dc:creator><![CDATA[Skippi]]></dc:creator><pubDate>Fri, 26 Nov 2021 06:06:18 GMT</pubDate></item><item><title><![CDATA[Reply to Modbus RTU Synchronisierung on Wed, 24 Nov 2021 19:54:30 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/skippi" aria-label="Profile: skippi">@<bdi>skippi</bdi></a><br />
Wenn der Modbus Adapter Wartezeiten zwischen Anfragen bietet, würde ich die Mal hochdrehen.</p>
]]></description><link>https://forum.iobroker.net/post/709372</link><guid isPermaLink="true">https://forum.iobroker.net/post/709372</guid><dc:creator><![CDATA[peterfido]]></dc:creator><pubDate>Wed, 24 Nov 2021 19:54:30 GMT</pubDate></item><item><title><![CDATA[Reply to Modbus RTU Synchronisierung on Wed, 24 Nov 2021 08:57:42 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/peterfido" aria-label="Profile: peterfido">@<bdi>peterfido</bdi></a><br />
Ich nutze den ioBroker Modbus Adapter und schreibe via Blockly zu einer bestimmten Zeit (wenn der Nachtstomtarif endet) eine LadestromVorgabe von 0 in die Registerabbildung des Modbus-Adapters. Vor ioBroker hatte ich das via C-Programm mit libmodbus gemacht und das hat auch immer sicher funktioniert. Jetzt läuft natürlich die zyklische Broker Abfrage und ich vermute, daß es deshalb manchmal kollidiert - obwohl ja im Endeffekt alles via Modbusadapter transportiert wird.</p>
]]></description><link>https://forum.iobroker.net/post/708977</link><guid isPermaLink="true">https://forum.iobroker.net/post/708977</guid><dc:creator><![CDATA[Skippi]]></dc:creator><pubDate>Wed, 24 Nov 2021 08:57:42 GMT</pubDate></item><item><title><![CDATA[Reply to Modbus RTU Synchronisierung on Wed, 24 Nov 2021 07:27:39 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/skippi" aria-label="Profile: skippi">@<bdi>skippi</bdi></a><br />
Wie gehst du vor? Für Modbus nutze ich Node Red, da der Modbus Adapter damals nicht so wollte, wie gewünscht. Node Red liest inzwischen zwei unterschiedliche Stromzähler über einen LAN 2 RS485 Adapter fehlerfrei aus. Die Nachrichten kommen in einen Qeue und werden nach vorgegebener Pause abgearbeitet.</p>
<p dir="auto">Einer der Zähler zickt etwas rum, wenn ich zuviele Werte auf einmal abfrage. Häppchenweise geht's. Dem anderen Zähler macht das nix.</p>
]]></description><link>https://forum.iobroker.net/post/708931</link><guid isPermaLink="true">https://forum.iobroker.net/post/708931</guid><dc:creator><![CDATA[peterfido]]></dc:creator><pubDate>Wed, 24 Nov 2021 07:27:39 GMT</pubDate></item></channel></rss>