<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Modbus TCP client reconnection problem</title><link href="https://forge.codesys.com/forge/talk/CODESYS-V2/thread/e4b047d577/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/CODESYS-V2/thread/e4b047d577/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/CODESYS-V2/thread/e4b047d577/</id><updated>2025-03-18T10:17:47.451000Z</updated><subtitle>Recent posts to Modbus TCP client reconnection problem</subtitle><entry><title>Modbus TCP client reconnection problem</title><link href="https://forge.codesys.com/forge/talk/CODESYS-V2/thread/e4b047d577/?limit=25#234a" rel="alternate"/><published>2025-03-18T10:17:47.451000Z</published><updated>2025-03-18T10:17:47.451000Z</updated><author><name>fmon</name><uri>https://forge.codesys.com/u/fmon/</uri></author><id>https://forge.codesys.com5172973c7454de1768ef026b6bfd0c26d3ce73df</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Problem solved&lt;/p&gt;
&lt;p&gt;The client modbus cycle time was linked to a task at 500ms. Whereas the channel modbus was at 200ms. Certainly problem of packages synchronisation.&lt;/p&gt;
&lt;p&gt;I let the client modbus cycle time to be handled by itself (See attachement) --&amp;gt; "Use the bus cyle time parameters" (traduce from french)&lt;br/&gt;
See attachement&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Modbus TCP client reconnection problem</title><link href="https://forge.codesys.com/forge/talk/CODESYS-V2/thread/e4b047d577/?limit=25#c2a2" rel="alternate"/><published>2025-03-17T08:52:51.295000Z</published><updated>2025-03-17T08:52:51.295000Z</updated><author><name>fmon</name><uri>https://forge.codesys.com/u/fmon/</uri></author><id>https://forge.codesys.comc27bc43371785528f998e99e2d79df8f97014b27</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I am using codesys Modbus TCP client (4.4.0.0) to communicate with a python modbus server (package pyModbusTCP). &lt;/p&gt;
&lt;p&gt;I first start my python server on the distant machine.&lt;br/&gt;
After a fresh codesys compilation, a plc connection/transfer and a PLC run, the modbus connection is OK. Every time in this context the connection is created correctly.&lt;/p&gt;
&lt;p&gt;When I shut down the server, the modbus connection falls, that is normal.&lt;br/&gt;
When I restart the python server, impossible to recreate the modbus connexion. With the client autoreconnection, I see on my server that the client tries to connect but unsuccesfully. I have the following message :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;DEBUG:pyModbusTCP.server:accept new connection from ClientInfo(address='192.168.1.20', port=33476)&lt;br/&gt;
DEBUG:pyModbusTCP.server:Exception during request handling: NetworkError('recv return null')&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I tried to stop the codesys client and to restart it with these commands :&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nv"&gt;Modbus_TCP_Client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;xStop&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;True&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;Or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;False&lt;/span&gt;
&lt;span class="nv"&gt;Modbus_TCP_Client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;Enable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;True&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;Or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;False&lt;/span&gt;
&lt;span class="nv"&gt;Modbus_TCP_Server&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;Enable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;True&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;Or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;False&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I tried to confirm the error manually to force reconnection with:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nv"&gt;Modbus_TCP_Server_Motors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;xConfirmError&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I tried also this command to STOP/RESET/START client and server (codesys side) but nothing happens :&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nv"&gt;status_client&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;Modbus_TCP_Client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SetCommunicationState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;eRequestedState&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;DED&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;DEVICE_TRANSITION_STATE&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;STOP&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;RESET&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;amp;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;START&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The answer of this function when executed is "status_client = NOT_SUPPORTED". Is it normal ?&lt;/p&gt;
&lt;p&gt;It seems that is a socket problem, but I do not understand if it is on the client or server side.&lt;br/&gt;
I tried a modbus simulator called "ananas.exe" and the result is the same. Impossible to get a modbus client reconnection.&lt;/p&gt;
&lt;p&gt;What is different at the first client connection and at a reconnection attempt ?&lt;/p&gt;
&lt;p&gt;Thanks for your help&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>