<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to ModbusFB Library Problems</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/6ee945022e/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Engineering/thread/6ee945022e/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Engineering/thread/6ee945022e/</id><updated>2022-02-19T04:14:22.484000Z</updated><subtitle>Recent posts to ModbusFB Library Problems</subtitle><entry><title>ModbusFB Library Problems</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/6ee945022e/?limit=25#f791/b938/778f/fbc7" rel="alternate"/><published>2022-02-19T04:14:22.484000Z</published><updated>2022-02-19T04:14:22.484000Z</updated><author><name>matthew</name><uri>https://forge.codesys.com/u/matthew/</uri></author><id>https://forge.codesys.coma4a8a67118c3f183e2a6663c786da6d097961117</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi dFx,&lt;/p&gt;
&lt;p&gt;Can you not pass the whole struct as an In/Out and every FB have a connection to that struct? &lt;br/&gt;
What I'm thinking is every slave already has an unique ID/Address and in the Modbus_Client_Serial FB having a FOR loop looking for these IDs may have 8 devices all with different addresses and store them in an array and then use another FOR loop based on the size of that array to trigger the slave devices in sequence based on there address and when that device FB is done it goes on to the next device FB? I haven't dealt with comms stuff in the past and the correct way todo this. &lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>ModbusFB Library Problems</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/6ee945022e/?limit=250#f791/b938/778f" rel="alternate"/><published>2022-02-18T09:56:14.944000Z</published><updated>2022-02-18T09:56:14.944000Z</updated><author><name>dFx</name><uri>https://forge.codesys.com/u/dfx/</uri></author><id>https://forge.codesys.com50c0b4507552bd78da31d1659d87a2b3090c14f8</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Pointers are not a big deal. &lt;a class="" href="https://help.codesys.com/webapp/_cds_datatype_pointer;product=codesys;version=3.5.14.0" rel="nofollow"&gt;See help&lt;/a&gt;&lt;br/&gt;
For instance, you may have a struct, for the queue elements.&lt;br/&gt;
Lets say you need to know the type of work (read/write), the data to be written or read.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="err"&gt;STRUCT ModbusQueueItem&lt;/span&gt;
&lt;span class="err"&gt;    TypeOfWork : INT;&lt;/span&gt;
&lt;span class="err"&gt;    pData : Pointer TO BOOL; // Data pointer for boolean data&lt;/span&gt;
&lt;span class="err"&gt;    szData : INT; // Size of data&lt;/span&gt;
&lt;span class="err"&gt;END_STRUCT&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;So In case of Read, just provide the pData to pData of ClientRequestReadDiscreteInputs, given that your RELAY block did correctly set the item using ADR(YourData).&lt;/p&gt;
&lt;p&gt;This is only a draft, not real code, so there maybe adjustements to do on types.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>ModbusFB Library Problems</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/6ee945022e/?limit=25#f791/b938" rel="alternate"/><published>2022-02-18T09:25:36.287000Z</published><updated>2022-02-18T09:25:36.287000Z</updated><author><name>matthew</name><uri>https://forge.codesys.com/u/matthew/</uri></author><id>https://forge.codesys.com368bb90dd59074feebac317b4c8550dc520c9480</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi dFx,&lt;/p&gt;
&lt;p&gt;Thanks, that makes perfect sense and I should have picked up on that one. Would you have an example of setting up a queue with the pointers? I haven't used pointers or anything like that before so wouldn't know where to start. I'm trying todo it dynamically so I can easily add more of the same devices or different devices in the future without much modification to the project. &lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>ModbusFB Library Problems</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/6ee945022e/?limit=250#f791" rel="alternate"/><published>2022-02-18T09:11:26.852000Z</published><updated>2022-02-18T09:11:26.852000Z</updated><author><name>dFx</name><uri>https://forge.codesys.com/u/dfx/</uri></author><id>https://forge.codesys.com0d16f6881cd26aba71cea5913d61d1eba0fd2c53</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;You cannot execute 2 functions at the same time on the same port. You have to sequence each request.&lt;/p&gt;
&lt;p&gt;I would call the read/write inside the MODBUS_CLIENT_SERIAL and then provide a queue for the MODBUS_RELAY FBs. Then just place a request with its parameters in the queue with MODBUS_RELAY, process them in MODBUS_CLIENT_SERIAL, using pointers for in/out data, and also results. This way the asking RELAY FB could be aware his request have been processed.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>ModbusFB Library Problems</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/6ee945022e/?limit=25#0ed4" rel="alternate"/><published>2022-02-18T08:27:27.522000Z</published><updated>2022-02-18T08:27:27.522000Z</updated><author><name>matthew</name><uri>https://forge.codesys.com/u/matthew/</uri></author><id>https://forge.codesys.com7cddf5f4b60a5548396866a978a9c84f68124693</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I'm having a few issues with the ModbusFB Library. I'm trying to create some reusable function blocks for devices I use quite often. The below is just a simple Modbus Relay board with 2x Inputs and 2x Relay Outputs. &lt;/p&gt;
&lt;p&gt;My Function blocks works with one SerialClient connection, as soon as I link the second ClientSerial to the second FB I get error 56 which is reply timeout. Both FBs work if I connect each one independantly, just can't have both connected together. &lt;/p&gt;
&lt;p&gt;[-img src=CodeSys ModbusFB Issue.png width=50%: missing =-]&lt;/p&gt;
&lt;p&gt;Here is the ClientSerial ModbusFB &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;FUNCTION_BLOCK&lt;/span&gt; &lt;span class="n"&gt;Modbus_Client_Serial&lt;/span&gt;
&lt;span class="n"&gt;VAR_INPUT&lt;/span&gt;
    &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nb"&gt;Serial&lt;/span&gt; &lt;span class="n"&gt;Client&lt;/span&gt; &lt;span class="n"&gt;Setup&lt;/span&gt;
    &lt;span class="n"&gt;ComPort&lt;/span&gt;   &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;BaudRate&lt;/span&gt;  &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;DWORD&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;DataBits&lt;/span&gt;  &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BYTE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;Parity&lt;/span&gt;    &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BYTE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;StopBits&lt;/span&gt;  &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BYTE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;RtuAscii&lt;/span&gt;  &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ModbusFB&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RtuAscii&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;xConnect&lt;/span&gt;  &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;Auto&lt;/span&gt; &lt;span class="n"&gt;Reconnect&lt;/span&gt; &lt;span class="k"&gt;Until&lt;/span&gt; &lt;span class="n"&gt;Device&lt;/span&gt; &lt;span class="k"&gt;Found&lt;/span&gt;
    &lt;span class="n"&gt;AutoReconnect&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="k"&gt;Reset&lt;/span&gt; 
    &lt;span class="k"&gt;Reset&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;END_VAR&lt;/span&gt;

&lt;span class="n"&gt;VAR_IN_OUT&lt;/span&gt;  
    &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="k"&gt;Connect&lt;/span&gt; &lt;span class="n"&gt;Client&lt;/span&gt; &lt;span class="k"&gt;Between&lt;/span&gt; &lt;span class="n"&gt;ModbusFBs&lt;/span&gt;
    &lt;span class="n"&gt;ClientSerial&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ModbusFB&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ClientSerial&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;END_VAR&lt;/span&gt; 

&lt;span class="n"&gt;VAR_OUTPUT&lt;/span&gt;
    &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;Errors&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;FBs&lt;/span&gt;
    &lt;span class="n"&gt;Error&lt;/span&gt;    &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;ErrorID&lt;/span&gt;  &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;END_VAR&lt;/span&gt;
&lt;span class="n"&gt;VAR&lt;/span&gt;
    &lt;span class="n"&gt;initDone&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;ClientConnected&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;ClientErrorCnt&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;UINT&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;CasePos&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;END_VAR&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Here is the code &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;This&lt;/span&gt; &lt;span class="nt"&gt;FB&lt;/span&gt; &lt;span class="nt"&gt;Uses&lt;/span&gt; &lt;span class="nt"&gt;SysCom&lt;/span&gt; &lt;span class="nt"&gt;please&lt;/span&gt; &lt;span class="nt"&gt;see&lt;/span&gt; &lt;span class="nt"&gt;CodeSys&lt;/span&gt; &lt;span class="nt"&gt;ModbusFB&lt;/span&gt; &lt;span class="nt"&gt;for&lt;/span&gt; &lt;span class="nt"&gt;more&lt;/span&gt; &lt;span class="nt"&gt;information&lt;/span&gt;

&lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;NOT&lt;/span&gt; &lt;span class="nt"&gt;initDone&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
    &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;First&lt;/span&gt; &lt;span class="nt"&gt;Scan&lt;/span&gt;
    &lt;span class="nt"&gt;initDone&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;TRUE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;CasePos&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;0&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;END_IF&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Call&lt;/span&gt; &lt;span class="nt"&gt;Client&lt;/span&gt; 
&lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Check&lt;/span&gt; &lt;span class="nt"&gt;Client&lt;/span&gt; &lt;span class="nt"&gt;is&lt;/span&gt; &lt;span class="nt"&gt;Connected&lt;/span&gt;
&lt;span class="nt"&gt;ClientConnected&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xConnected&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="nt"&gt;CASE&lt;/span&gt; &lt;span class="nt"&gt;CasePos&lt;/span&gt; &lt;span class="nt"&gt;OF&lt;/span&gt;

&lt;span class="nt"&gt;0&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Step&lt;/span&gt; &lt;span class="nt"&gt;0&lt;/span&gt; &lt;span class="nt"&gt;Setup&lt;/span&gt; &lt;span class="nt"&gt;Serial&lt;/span&gt; &lt;span class="nt"&gt;Client&lt;/span&gt;
    &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;   
        &lt;span class="nt"&gt;iPort&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;ComPort&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; 
        &lt;span class="nt"&gt;dwBaudrate&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;BaudRate&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; 
        &lt;span class="nt"&gt;byDataBits&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;DataBits&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; 
        &lt;span class="nt"&gt;eParity&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;Parity&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; 
        &lt;span class="nt"&gt;eStopBits&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;StopBits&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;  
        &lt;span class="nt"&gt;eRtuAscii&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;RtuAscii&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="nt"&gt;CasePos&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;10&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Move&lt;/span&gt; &lt;span class="nt"&gt;to&lt;/span&gt; &lt;span class="nt"&gt;step&lt;/span&gt; &lt;span class="nt"&gt;10&lt;/span&gt; &lt;span class="nt"&gt;to&lt;/span&gt; &lt;span class="nt"&gt;setup&lt;/span&gt; &lt;span class="nt"&gt;Client&lt;/span&gt; &lt;span class="nt"&gt;Connect&lt;/span&gt;  

&lt;span class="nt"&gt;10&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Step&lt;/span&gt; &lt;span class="nt"&gt;10&lt;/span&gt; &lt;span class="nt"&gt;Connect&lt;/span&gt; &lt;span class="nt"&gt;The&lt;/span&gt; &lt;span class="nt"&gt;Client&lt;/span&gt;
    &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;xConnect&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
        &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xConnect&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="nt"&gt;TRUE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;ELSE&lt;/span&gt; 
        &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xConnect&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="nt"&gt;FALSE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;END_IF&lt;/span&gt;


    &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xError&lt;/span&gt; &lt;span class="nt"&gt;OR&lt;/span&gt; &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;eErrorID&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;0&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
        &lt;span class="nt"&gt;CasePos&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;1000&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nt"&gt;Process&lt;/span&gt; &lt;span class="nt"&gt;Error&lt;/span&gt;
    &lt;span class="nt"&gt;END_IF&lt;/span&gt;

&lt;span class="nt"&gt;1000&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Step&lt;/span&gt; &lt;span class="nt"&gt;1000&lt;/span&gt; &lt;span class="nt"&gt;Process&lt;/span&gt; &lt;span class="nt"&gt;Errors&lt;/span&gt;
    &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Process&lt;/span&gt; &lt;span class="nt"&gt;Client&lt;/span&gt; &lt;span class="nt"&gt;Connection&lt;/span&gt; &lt;span class="nt"&gt;Errors&lt;/span&gt;
    &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xError&lt;/span&gt; &lt;span class="nt"&gt;OR&lt;/span&gt; &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;eErrorID&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;0&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;

        &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;AutoReconnect&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
            &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Errors&lt;/span&gt; &lt;span class="nt"&gt;from&lt;/span&gt; &lt;span class="nt"&gt;the&lt;/span&gt; &lt;span class="nt"&gt;Client&lt;/span&gt; &lt;span class="nt"&gt;Functions&lt;/span&gt; &lt;span class="nt"&gt;Reset&lt;/span&gt; &lt;span class="nt"&gt;The&lt;/span&gt; &lt;span class="nt"&gt;Client&lt;/span&gt; &lt;span class="nt"&gt;and&lt;/span&gt; &lt;span class="nt"&gt;repeat&lt;/span&gt; &lt;span class="nt"&gt;until&lt;/span&gt; &lt;span class="nt"&gt;no&lt;/span&gt; &lt;span class="nt"&gt;error&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt; &lt;span class="nt"&gt;No&lt;/span&gt; &lt;span class="nt"&gt;Error&lt;/span&gt; &lt;span class="nt"&gt;Flag&lt;/span&gt; &lt;span class="nt"&gt;Active&lt;/span&gt; &lt;span class="o"&gt;)&lt;/span&gt;
            &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xConnect&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;FALSE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="nt"&gt;CasePos&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;10&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nt"&gt;Try&lt;/span&gt; &lt;span class="nt"&gt;to&lt;/span&gt; &lt;span class="nt"&gt;reconnect&lt;/span&gt; &lt;span class="nt"&gt;the&lt;/span&gt; &lt;span class="nt"&gt;client&lt;/span&gt; 
        &lt;span class="nt"&gt;ELSE&lt;/span&gt; 
            &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;ClientErrorCnt&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nt"&gt;5&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
                &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Try&lt;/span&gt; &lt;span class="nt"&gt;to&lt;/span&gt; &lt;span class="nt"&gt;reconnect&lt;/span&gt; &lt;span class="nt"&gt;the&lt;/span&gt; &lt;span class="nt"&gt;client&lt;/span&gt; &lt;span class="nt"&gt;5x&lt;/span&gt; &lt;span class="nt"&gt;then&lt;/span&gt; &lt;span class="nt"&gt;create&lt;/span&gt; &lt;span class="nt"&gt;error&lt;/span&gt; &lt;span class="nt"&gt;flag&lt;/span&gt;
                &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xConnect&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;FALSE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
                &lt;span class="nt"&gt;ClientErrorCnt&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;ClientErrorCnt&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nt"&gt;1&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
                &lt;span class="nt"&gt;CasePos&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;10&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nt"&gt;Try&lt;/span&gt; &lt;span class="nt"&gt;to&lt;/span&gt; &lt;span class="nt"&gt;reconnect&lt;/span&gt; &lt;span class="nt"&gt;the&lt;/span&gt; &lt;span class="nt"&gt;client&lt;/span&gt;
            &lt;span class="nt"&gt;ELSE&lt;/span&gt;  
                &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Set&lt;/span&gt; &lt;span class="nt"&gt;Error&lt;/span&gt; &lt;span class="nt"&gt;to&lt;/span&gt; &lt;span class="nt"&gt;TRUE&lt;/span&gt; &lt;span class="nt"&gt;and&lt;/span&gt; &lt;span class="nt"&gt;display&lt;/span&gt; &lt;span class="nt"&gt;ErorrID&lt;/span&gt; 
                &lt;span class="nt"&gt;Error&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;TRUE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
                &lt;span class="nt"&gt;ErrorID&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;eErrorID&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
                &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xConnect&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;FALSE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

                &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;Reset&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt; 
                    &lt;span class="nt"&gt;Error&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;FALSE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
                    &lt;span class="nt"&gt;ErrorID&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;0&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
                    &lt;span class="nt"&gt;ClientErrorCnt&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;0&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
                    &lt;span class="nt"&gt;CasePos&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;0&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Reset&lt;/span&gt; &lt;span class="nt"&gt;Serial&lt;/span&gt; &lt;span class="nt"&gt;Client&lt;/span&gt; &lt;span class="nt"&gt;Parameters&lt;/span&gt; &lt;span class="nt"&gt;incase&lt;/span&gt; &lt;span class="nt"&gt;of&lt;/span&gt; &lt;span class="nt"&gt;changes&lt;/span&gt; 
                &lt;span class="nt"&gt;END_IF&lt;/span&gt;
            &lt;span class="nt"&gt;END_IF&lt;/span&gt;
        &lt;span class="nt"&gt;END_IF&lt;/span&gt;
    &lt;span class="nt"&gt;END_IF&lt;/span&gt;


&lt;span class="nt"&gt;END_CASE&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Here is the Relay Board Code&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nt"&gt;FUNCTION_BLOCK&lt;/span&gt; &lt;span class="nt"&gt;Modbus_Relay_x2&lt;/span&gt;
&lt;span class="nt"&gt;VAR_INPUT&lt;/span&gt;

    &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Slave&lt;/span&gt; &lt;span class="nt"&gt;Address&lt;/span&gt; &lt;span class="nt"&gt;ID&lt;/span&gt;
    &lt;span class="nt"&gt;UnitID&lt;/span&gt;    &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;UINT&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Auto&lt;/span&gt; &lt;span class="nt"&gt;Reconnect&lt;/span&gt; &lt;span class="nt"&gt;Until&lt;/span&gt; &lt;span class="nt"&gt;Device&lt;/span&gt; &lt;span class="nt"&gt;Found&lt;/span&gt;
    &lt;span class="nt"&gt;AutoReconnect&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Reset&lt;/span&gt; 
    &lt;span class="nt"&gt;Reset&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Relay&lt;/span&gt; &lt;span class="nt"&gt;Control&lt;/span&gt;
    &lt;span class="nt"&gt;Relay_1_On&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;Relay_2_On&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="nt"&gt;END_VAR&lt;/span&gt;

&lt;span class="nt"&gt;VAR_IN_OUT&lt;/span&gt;  
    &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Connect&lt;/span&gt; &lt;span class="nt"&gt;Client&lt;/span&gt; &lt;span class="nt"&gt;Between&lt;/span&gt; &lt;span class="nt"&gt;ModbusFBs&lt;/span&gt;
    &lt;span class="nt"&gt;ClientSerial&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;ModbusFB&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ClientSerial&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;END_VAR&lt;/span&gt; 

&lt;span class="nt"&gt;VAR_OUTPUT&lt;/span&gt;
    &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Errors&lt;/span&gt; &lt;span class="nt"&gt;from&lt;/span&gt; &lt;span class="nt"&gt;FBs&lt;/span&gt;
    &lt;span class="nt"&gt;Error&lt;/span&gt;    &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;ErrorID&lt;/span&gt;  &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;INT&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Optocoupler&lt;/span&gt; &lt;span class="nt"&gt;Inputs&lt;/span&gt;
    &lt;span class="nt"&gt;Input_1_Status&lt;/span&gt;  &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;Input_2_Status&lt;/span&gt;  &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="nt"&gt;END_VAR&lt;/span&gt;
&lt;span class="nt"&gt;VAR&lt;/span&gt;
    &lt;span class="nt"&gt;initDone&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;ClientConnected&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;ErrorCnt&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;UINT&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;FbErrorID&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;INT&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;DataCoils_Inputs&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;ARRAY&lt;/span&gt; &lt;span class="cp"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="nx"&gt;..7&lt;/span&gt;&lt;span class="cp"&gt;]&lt;/span&gt; &lt;span class="nt"&gt;OF&lt;/span&gt; &lt;span class="nt"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;Relay1_FC05&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;ModbusFB&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ClientRequestWriteSingleCoil&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;Relay2_FC05&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;ModbusFB&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ClientRequestWriteSingleCoil&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;Inputs_FC02&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;ModbusFB&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ClientRequestReadDiscreteInputs&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;  

    &lt;span class="nt"&gt;CasePos&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;INT&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="nt"&gt;END_VAR&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Here is the Code&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;This&lt;/span&gt; &lt;span class="nt"&gt;FB&lt;/span&gt; &lt;span class="nt"&gt;Uses&lt;/span&gt; &lt;span class="nt"&gt;SysCom&lt;/span&gt; &lt;span class="nt"&gt;please&lt;/span&gt; &lt;span class="nt"&gt;see&lt;/span&gt; &lt;span class="nt"&gt;CodeSys&lt;/span&gt; &lt;span class="nt"&gt;ModbusFB&lt;/span&gt; &lt;span class="nt"&gt;for&lt;/span&gt; &lt;span class="nt"&gt;more&lt;/span&gt; &lt;span class="nt"&gt;information&lt;/span&gt;

&lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;NOT&lt;/span&gt; &lt;span class="nt"&gt;initDone&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
    &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;First&lt;/span&gt; &lt;span class="nt"&gt;Scan&lt;/span&gt;
    &lt;span class="nt"&gt;initDone&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;TRUE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;CasePos&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;0&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;END_IF&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="nt"&gt;ClientConnected&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xConnected&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="nt"&gt;CASE&lt;/span&gt; &lt;span class="nt"&gt;CasePos&lt;/span&gt; &lt;span class="nt"&gt;OF&lt;/span&gt;

&lt;span class="nt"&gt;0&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Step&lt;/span&gt; &lt;span class="nt"&gt;0&lt;/span&gt; &lt;span class="nt"&gt;Initiate&lt;/span&gt; &lt;span class="nt"&gt;Functions&lt;/span&gt;
    &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Setup&lt;/span&gt; &lt;span class="nt"&gt;Relay&lt;/span&gt; &lt;span class="nt"&gt;1&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt; &lt;span class="nt"&gt;Address&lt;/span&gt; &lt;span class="nt"&gt;offset&lt;/span&gt; &lt;span class="nt"&gt;0&lt;/span&gt; &lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="nt"&gt;Relay1_FC05&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;  
        &lt;span class="nt"&gt;rClient&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; 
        &lt;span class="nt"&gt;uiUnitId&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;UnitID&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;  
        &lt;span class="nt"&gt;uiItem&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;0&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

    &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Setup&lt;/span&gt; &lt;span class="nt"&gt;Relay&lt;/span&gt; &lt;span class="nt"&gt;2&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt; &lt;span class="nt"&gt;Address&lt;/span&gt; &lt;span class="nt"&gt;offset&lt;/span&gt; &lt;span class="nt"&gt;1&lt;/span&gt; &lt;span class="o"&gt;)&lt;/span&gt;    
    &lt;span class="nt"&gt;Relay2_FC05&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;  
        &lt;span class="nt"&gt;rClient&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; 
        &lt;span class="nt"&gt;uiUnitId&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;UnitID&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;  
        &lt;span class="nt"&gt;uiItem&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;1&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

    &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Setup&lt;/span&gt; &lt;span class="nt"&gt;Optocoupler&lt;/span&gt; &lt;span class="nt"&gt;Inputs&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt; &lt;span class="nt"&gt;Store&lt;/span&gt; &lt;span class="nt"&gt;Bits&lt;/span&gt; &lt;span class="nt"&gt;in&lt;/span&gt; &lt;span class="nt"&gt;an&lt;/span&gt; &lt;span class="nt"&gt;Array&lt;/span&gt; &lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="nt"&gt;Inputs_FC02&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;  
        &lt;span class="nt"&gt;rClient&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; 
        &lt;span class="nt"&gt;uiUnitId&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;UnitID&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; 
        &lt;span class="nt"&gt;uiStartItem&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; 
        &lt;span class="nt"&gt;uiQuantity&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;8&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; 
        &lt;span class="nt"&gt;pData&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;ADR&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;DataCoils_Inputs&lt;/span&gt;&lt;span class="cp"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="cp"&gt;]&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
    &lt;span class="nt"&gt;CasePos&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;20&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Begin&lt;/span&gt; &lt;span class="nt"&gt;Processing&lt;/span&gt; &lt;span class="nt"&gt;Modbus&lt;/span&gt; &lt;span class="nt"&gt;Data&lt;/span&gt;

&lt;span class="nt"&gt;10&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Step&lt;/span&gt; &lt;span class="nt"&gt;10&lt;/span&gt; &lt;span class="nt"&gt;Reconnect&lt;/span&gt; &lt;span class="nt"&gt;SerialClient&lt;/span&gt;
    &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xConnect&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;TRUE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xConnected&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
        &lt;span class="nt"&gt;CasePos&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;20&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; 
    &lt;span class="nt"&gt;ELSE&lt;/span&gt;
        &lt;span class="nt"&gt;CasePos&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;1000&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Client&lt;/span&gt; &lt;span class="nt"&gt;failed&lt;/span&gt; &lt;span class="nt"&gt;to&lt;/span&gt; &lt;span class="nt"&gt;connect&lt;/span&gt; &lt;span class="nt"&gt;move&lt;/span&gt; &lt;span class="nt"&gt;to&lt;/span&gt; &lt;span class="nt"&gt;errors&lt;/span&gt;
    &lt;span class="nt"&gt;END_IF&lt;/span&gt; 


&lt;span class="nt"&gt;20&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Step&lt;/span&gt; &lt;span class="nt"&gt;20&lt;/span&gt; &lt;span class="nt"&gt;Process&lt;/span&gt; &lt;span class="nt"&gt;Relay&lt;/span&gt; &lt;span class="nt"&gt;1&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt; &lt;span class="nt"&gt;Modbus&lt;/span&gt; &lt;span class="nt"&gt;Function&lt;/span&gt; &lt;span class="nt"&gt;Code&lt;/span&gt; &lt;span class="nt"&gt;05&lt;/span&gt; &lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;ClientConnected&lt;/span&gt; &lt;span class="nt"&gt;AND&lt;/span&gt; &lt;span class="nt"&gt;NOT&lt;/span&gt; &lt;span class="nt"&gt;Relay1_FC05&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xExecute&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt; 
        &lt;span class="nt"&gt;Relay1_FC05&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xExecute&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;TRUE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="nt"&gt;END_IF&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;Relay1_FC05&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xExecute&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;

        &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;Relay1_FC05&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xBusy&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
            &lt;span class="nt"&gt;Relay1_FC05&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xExecute&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;FALSE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;END_IF&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

        &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;Relay_1_On&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
            &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Coil&lt;/span&gt; &lt;span class="nt"&gt;Write&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt; &lt;span class="nt"&gt;Turn&lt;/span&gt; &lt;span class="nt"&gt;on&lt;/span&gt; &lt;span class="nt"&gt;Relay&lt;/span&gt; &lt;span class="nt"&gt;1&lt;/span&gt; &lt;span class="o"&gt;)&lt;/span&gt;
            &lt;span class="nt"&gt;Relay1_FC05&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;xValue&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;TRUE&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
                &lt;span class="nt"&gt;rClient&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="nt"&gt;ELSE&lt;/span&gt;
            &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Coil&lt;/span&gt; &lt;span class="nt"&gt;Write&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt; &lt;span class="nt"&gt;Turn&lt;/span&gt; &lt;span class="nt"&gt;off&lt;/span&gt; &lt;span class="nt"&gt;Relay&lt;/span&gt; &lt;span class="nt"&gt;1&lt;/span&gt; &lt;span class="o"&gt;)&lt;/span&gt;
            &lt;span class="nt"&gt;Relay1_FC05&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;xValue&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;FALSE&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
                &lt;span class="nt"&gt;rClient&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;    
        &lt;span class="nt"&gt;END_IF&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; 
        &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Move&lt;/span&gt; &lt;span class="nt"&gt;to&lt;/span&gt; &lt;span class="nt"&gt;next&lt;/span&gt; &lt;span class="nt"&gt;Data&lt;/span&gt; &lt;span class="nt"&gt;Set&lt;/span&gt; 
        &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;Relay1_FC05&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xDone&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
            &lt;span class="nt"&gt;Relay1_FC05&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xExecute&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;FALSE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="nt"&gt;CasePos&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;30&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nt"&gt;Relay&lt;/span&gt; &lt;span class="nt"&gt;2&lt;/span&gt;
        &lt;span class="nt"&gt;END_IF&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; 
        &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Process&lt;/span&gt; &lt;span class="nt"&gt;Errors&lt;/span&gt;
        &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;Relay1_FC05&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xError&lt;/span&gt; &lt;span class="nt"&gt;OR&lt;/span&gt; &lt;span class="nt"&gt;Relay1_FC05&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;eErrorID&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;0&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
            &lt;span class="nt"&gt;Relay1_FC05&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xExecute&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;FALSE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="nt"&gt;FbErrorID&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;Relay1_FC05&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;eErrorID&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="nt"&gt;CasePos&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;1000&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;END_IF&lt;/span&gt;
    &lt;span class="nt"&gt;END_IF&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="nt"&gt;30&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Step&lt;/span&gt; &lt;span class="nt"&gt;30&lt;/span&gt; &lt;span class="nt"&gt;Process&lt;/span&gt; &lt;span class="nt"&gt;Relay&lt;/span&gt; &lt;span class="nt"&gt;2&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt; &lt;span class="nt"&gt;Modbus&lt;/span&gt; &lt;span class="nt"&gt;Function&lt;/span&gt; &lt;span class="nt"&gt;Code&lt;/span&gt; &lt;span class="nt"&gt;05&lt;/span&gt; &lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;ClientConnected&lt;/span&gt; &lt;span class="nt"&gt;AND&lt;/span&gt; &lt;span class="nt"&gt;NOT&lt;/span&gt; &lt;span class="nt"&gt;Relay2_FC05&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xExecute&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt; 
        &lt;span class="nt"&gt;Relay2_FC05&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xExecute&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;TRUE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;END_IF&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;Relay2_FC05&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xExecute&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;

        &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;Relay2_FC05&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xBusy&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
            &lt;span class="nt"&gt;Relay2_FC05&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xExecute&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;FALSE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

        &lt;span class="nt"&gt;END_IF&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

        &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;Relay_2_On&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
            &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Coil&lt;/span&gt; &lt;span class="nt"&gt;Write&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt; &lt;span class="nt"&gt;Turn&lt;/span&gt; &lt;span class="nt"&gt;on&lt;/span&gt; &lt;span class="nt"&gt;Relay&lt;/span&gt; &lt;span class="nt"&gt;2&lt;/span&gt; &lt;span class="o"&gt;)&lt;/span&gt;
            &lt;span class="nt"&gt;Relay2_FC05&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;xValue&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;TRUE&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
                &lt;span class="nt"&gt;rClient&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="nt"&gt;ELSE&lt;/span&gt;
            &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Coil&lt;/span&gt; &lt;span class="nt"&gt;Write&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt; &lt;span class="nt"&gt;Turn&lt;/span&gt; &lt;span class="nt"&gt;off&lt;/span&gt; &lt;span class="nt"&gt;Relay&lt;/span&gt; &lt;span class="nt"&gt;2&lt;/span&gt; &lt;span class="o"&gt;)&lt;/span&gt;
            &lt;span class="nt"&gt;Relay2_FC05&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;xValue&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;FALSE&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
                &lt;span class="nt"&gt;rClient&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
        &lt;span class="nt"&gt;END_IF&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; 
        &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Move&lt;/span&gt; &lt;span class="nt"&gt;to&lt;/span&gt; &lt;span class="nt"&gt;next&lt;/span&gt; &lt;span class="nt"&gt;Data&lt;/span&gt; &lt;span class="nt"&gt;Set&lt;/span&gt; 
        &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;Relay2_FC05&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xDone&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
            &lt;span class="nt"&gt;Relay2_FC05&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xExecute&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;FALSE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="nt"&gt;CasePos&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;40&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nt"&gt;Opto&lt;/span&gt; &lt;span class="nt"&gt;Inputs&lt;/span&gt;
        &lt;span class="nt"&gt;END_IF&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; 
        &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Process&lt;/span&gt; &lt;span class="nt"&gt;Errors&lt;/span&gt;
        &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;Relay2_FC05&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xError&lt;/span&gt; &lt;span class="nt"&gt;OR&lt;/span&gt; &lt;span class="nt"&gt;Relay2_FC05&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;eErrorID&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;0&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
            &lt;span class="nt"&gt;Relay2_FC05&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xExecute&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;FALSE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="nt"&gt;FbErrorID&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;Relay2_FC05&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;eErrorID&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="nt"&gt;CasePos&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;1000&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;END_IF&lt;/span&gt;
    &lt;span class="nt"&gt;END_IF&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="nt"&gt;40&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Step&lt;/span&gt; &lt;span class="nt"&gt;40&lt;/span&gt; &lt;span class="nt"&gt;Process&lt;/span&gt; &lt;span class="nt"&gt;Inputs&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt; &lt;span class="nt"&gt;Modbus&lt;/span&gt; &lt;span class="nt"&gt;Function&lt;/span&gt; &lt;span class="nt"&gt;Code&lt;/span&gt; &lt;span class="nt"&gt;02&lt;/span&gt; &lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;ClientConnected&lt;/span&gt; &lt;span class="nt"&gt;AND&lt;/span&gt; &lt;span class="nt"&gt;NOT&lt;/span&gt; &lt;span class="nt"&gt;Inputs_FC02&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xExecute&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt; 
        &lt;span class="nt"&gt;Inputs_FC02&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xExecute&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;TRUE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="nt"&gt;END_IF&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;Inputs_FC02&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xExecute&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;

        &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;Inputs_FC02&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xBusy&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
            &lt;span class="nt"&gt;Inputs_FC02&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xExecute&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;FALSE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;END_IF&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Read&lt;/span&gt; &lt;span class="nt"&gt;Coils&lt;/span&gt; &lt;span class="nt"&gt;from&lt;/span&gt; &lt;span class="nt"&gt;Optocouplers&lt;/span&gt;
        &lt;span class="nt"&gt;Inputs_FC02&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;rClient&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 

        &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;Inputs_FC02&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xDone&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
            &lt;span class="nt"&gt;Inputs_FC02&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xExecute&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;FALSE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Read&lt;/span&gt; &lt;span class="nt"&gt;The&lt;/span&gt; &lt;span class="nt"&gt;Status&lt;/span&gt; &lt;span class="nt"&gt;of&lt;/span&gt; &lt;span class="nt"&gt;the&lt;/span&gt; &lt;span class="nt"&gt;Inputs&lt;/span&gt;
            &lt;span class="nt"&gt;Input_1_Status&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;DataCoils_Inputs&lt;/span&gt;&lt;span class="cp"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="cp"&gt;]&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="nt"&gt;Input_2_Status&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;DataCoils_Inputs&lt;/span&gt;&lt;span class="cp"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="cp"&gt;]&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="nt"&gt;CasePos&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;20&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nt"&gt;Return&lt;/span&gt; &lt;span class="nt"&gt;to&lt;/span&gt; &lt;span class="nt"&gt;the&lt;/span&gt; &lt;span class="nt"&gt;start&lt;/span&gt; &lt;span class="nt"&gt;of&lt;/span&gt; &lt;span class="nt"&gt;the&lt;/span&gt; &lt;span class="nt"&gt;stack&lt;/span&gt;
        &lt;span class="nt"&gt;END_IF&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; 
        &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Process&lt;/span&gt; &lt;span class="nt"&gt;Errors&lt;/span&gt;
        &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;Inputs_FC02&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xError&lt;/span&gt; &lt;span class="nt"&gt;OR&lt;/span&gt; &lt;span class="nt"&gt;Inputs_FC02&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;eErrorID&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;0&lt;/span&gt;  &lt;span class="nt"&gt;THEN&lt;/span&gt;
            &lt;span class="nt"&gt;Inputs_FC02&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xExecute&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;FALSE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="nt"&gt;FbErrorID&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;Inputs_FC02&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;eErrorID&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="nt"&gt;CasePos&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;1000&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;END_IF&lt;/span&gt;
    &lt;span class="nt"&gt;END_IF&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;


&lt;span class="nt"&gt;1000&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Step&lt;/span&gt; &lt;span class="nt"&gt;1000&lt;/span&gt; &lt;span class="nt"&gt;Process&lt;/span&gt; &lt;span class="nt"&gt;Errors&lt;/span&gt;

    &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;AutoReconnect&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
        &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Errors&lt;/span&gt; &lt;span class="nt"&gt;from&lt;/span&gt; &lt;span class="nt"&gt;the&lt;/span&gt; &lt;span class="nt"&gt;Modbus&lt;/span&gt; &lt;span class="nt"&gt;Functions&lt;/span&gt; &lt;span class="nt"&gt;Reset&lt;/span&gt; &lt;span class="nt"&gt;The&lt;/span&gt; &lt;span class="nt"&gt;Client&lt;/span&gt; &lt;span class="nt"&gt;and&lt;/span&gt; &lt;span class="nt"&gt;repeat&lt;/span&gt; &lt;span class="nt"&gt;until&lt;/span&gt; &lt;span class="nt"&gt;device&lt;/span&gt; &lt;span class="nt"&gt;found&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt; &lt;span class="nt"&gt;No&lt;/span&gt; &lt;span class="nt"&gt;Error&lt;/span&gt; &lt;span class="nt"&gt;Flag&lt;/span&gt; &lt;span class="nt"&gt;Active&lt;/span&gt; &lt;span class="o"&gt;)&lt;/span&gt;
        &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xConnect&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;FALSE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="nt"&gt;CasePos&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;10&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nt"&gt;Try&lt;/span&gt; &lt;span class="nt"&gt;to&lt;/span&gt; &lt;span class="nt"&gt;reconnect&lt;/span&gt; &lt;span class="nt"&gt;the&lt;/span&gt; &lt;span class="nt"&gt;client&lt;/span&gt; 
    &lt;span class="nt"&gt;ELSE&lt;/span&gt; 
        &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;ErrorCnt&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nt"&gt;5&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt;
            &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Try&lt;/span&gt; &lt;span class="nt"&gt;to&lt;/span&gt; &lt;span class="nt"&gt;resolve&lt;/span&gt; &lt;span class="nt"&gt;the&lt;/span&gt; &lt;span class="nt"&gt;Error&lt;/span&gt; &lt;span class="nt"&gt;5x&lt;/span&gt; &lt;span class="nt"&gt;then&lt;/span&gt; &lt;span class="nt"&gt;create&lt;/span&gt; &lt;span class="nt"&gt;Error&lt;/span&gt; &lt;span class="nt"&gt;Flag&lt;/span&gt;
            &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xConnect&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;FALSE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="nt"&gt;ErrorCnt&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;ErrorCnt&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nt"&gt;1&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="nt"&gt;CasePos&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;10&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nt"&gt;Try&lt;/span&gt; &lt;span class="nt"&gt;to&lt;/span&gt; &lt;span class="nt"&gt;reconnect&lt;/span&gt; &lt;span class="nt"&gt;the&lt;/span&gt; &lt;span class="nt"&gt;client&lt;/span&gt;
        &lt;span class="nt"&gt;ELSE&lt;/span&gt; 
            &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Set&lt;/span&gt; &lt;span class="nt"&gt;Error&lt;/span&gt; &lt;span class="nt"&gt;to&lt;/span&gt; &lt;span class="nt"&gt;TRUE&lt;/span&gt; &lt;span class="nt"&gt;and&lt;/span&gt; &lt;span class="nt"&gt;display&lt;/span&gt; &lt;span class="nt"&gt;ErorrID&lt;/span&gt; 
            &lt;span class="nt"&gt;Error&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;TRUE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="nt"&gt;ErrorID&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;FbErrorID&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="nt"&gt;ClientSerial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;xConnect&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;FALSE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

            &lt;span class="nt"&gt;IF&lt;/span&gt; &lt;span class="nt"&gt;Reset&lt;/span&gt; &lt;span class="nt"&gt;THEN&lt;/span&gt; 
                &lt;span class="nt"&gt;Error&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;FALSE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
                &lt;span class="nt"&gt;ErrorID&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;0&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
                &lt;span class="nt"&gt;ErrorCnt&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;0&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
                &lt;span class="nt"&gt;CasePos&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;10&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nt"&gt;Reconnect&lt;/span&gt; &lt;span class="nt"&gt;Client&lt;/span&gt;
            &lt;span class="nt"&gt;END_IF&lt;/span&gt;
        &lt;span class="nt"&gt;END_IF&lt;/span&gt;
    &lt;span class="nt"&gt;END_IF&lt;/span&gt;          



&lt;span class="nt"&gt;END_CASE&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;I have also tested using the original ModbusFB.ClientSerial Function Block and I get the exact same results. I have tried with 2x ClientSerial for each function block and still get the same error. Seems like I can only use 1x ClientSerial with 1x Function Block&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>