Files
Codesys-Library-Atom-Modbus/compat/AtomModbus-Compatible.export
T
2026-09-30 21:17:41 -06:00

5531 lines
299 KiB
Plaintext

<ExportFile>
<StructuredView Guid="{21af5390-2942-461a-bf89-951aaf6999f1}">
<Single xml:space="preserve" Type="{3daac5e4-660e-42e4-9cea-3711b98bfb63}" Method="IArchivable">
<Null Name="Profile" />
<List2 Name="EntryList">
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">True</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">98ed6c72-1d8a-444d-b9fb-44a679624f78</Single>
<Single Name="ParentGuid" Type="System.Guid">00000000-0000-0000-0000-000000000000</Single>
<Single Name="Name" Type="string">6-Comms</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties">
<Entry>
<Key>
<Single Type="System.Guid">829a18f2-c514-4f6e-9634-1df173429203</Single>
</Key>
<Value>
<Single Type="{829a18f2-c514-4f6e-9634-1df173429203}" Method="IArchivable">
<Dictionary Type="{fa2ee218-a39b-4b6d-b249-49dbddbd168a}" Name="ParentObjects">
<Entry>
<Key>
<Single Type="System.Guid">21af5390-2942-461a-bf89-951aaf6999f1</Single>
</Key>
<Value>
<Single Type="System.Guid">e59dc300-e37a-4c37-997b-021563304d7e</Single>
</Value>
</Entry>
</Dictionary>
</Single>
</Value>
</Entry>
</Dictionary>
<Single Name="TypeGuid" Type="System.Guid">738bea1e-99bb-4f04-90bb-a7a567e74e3a</Single>
<Null Name="EmbeddedTypeGuids" />
<Single Name="Timestamp" Type="long">639034841590379670</Single>
</Single>
<Single Name="Object" Type="{738bea1e-99bb-4f04-90bb-a7a567e74e3a}" Method="IArchivable">
<Single Name="StructuredViewGuid" Type="System.Guid">21af5390-2942-461a-bf89-951aaf6999f1</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">e59dc300-e37a-4c37-997b-021563304d7e</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
<Single Name="ParentGuid" Type="System.Guid">00000000-0000-0000-0000-000000000000</Single>
<Single Name="Name" Type="string">ModbusMaster</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties">
<Entry>
<Key>
<Single Type="System.Guid">829a18f2-c514-4f6e-9634-1df173429203</Single>
</Key>
<Value>
<Single Type="{829a18f2-c514-4f6e-9634-1df173429203}" Method="IArchivable">
<Dictionary Type="{fa2ee218-a39b-4b6d-b249-49dbddbd168a}" Name="ParentObjects">
<Entry>
<Key>
<Single Type="System.Guid">21af5390-2942-461a-bf89-951aaf6999f1</Single>
</Key>
<Value>
<Single Type="System.Guid">98ed6c72-1d8a-444d-b9fb-44a679624f78</Single>
</Value>
</Entry>
</Dictionary>
</Single>
</Value>
</Entry>
</Dictionary>
<Single Name="TypeGuid" Type="System.Guid">738bea1e-99bb-4f04-90bb-a7a567e74e3a</Single>
<Null Name="EmbeddedTypeGuids" />
<Single Name="Timestamp" Type="long">639034841590449813</Single>
</Single>
<Single Name="Object" Type="{738bea1e-99bb-4f04-90bb-a7a567e74e3a}" Method="IArchivable">
<Single Name="StructuredViewGuid" Type="System.Guid">21af5390-2942-461a-bf89-951aaf6999f1</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">98ed6c72-1d8a-444d-b9fb-44a679624f78</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">f228f401-6c74-4359-8ff1-b15b675180a4</Single>
<Single Name="ParentGuid" Type="System.Guid">00000000-0000-0000-0000-000000000000</Single>
<Single Name="Name" Type="string">atMbClientToString</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties">
<Entry>
<Key>
<Single Type="System.Guid">829a18f2-c514-4f6e-9634-1df173429203</Single>
</Key>
<Value>
<Single Type="{829a18f2-c514-4f6e-9634-1df173429203}" Method="IArchivable">
<Dictionary Type="{fa2ee218-a39b-4b6d-b249-49dbddbd168a}" Name="ParentObjects">
<Entry>
<Key>
<Single Type="System.Guid">21af5390-2942-461a-bf89-951aaf6999f1</Single>
</Key>
<Value>
<Single Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
</Value>
</Entry>
</Dictionary>
</Single>
</Value>
</Entry>
</Dictionary>
<Single Name="TypeGuid" Type="System.Guid">2db5746d-d284-4425-9f7f-2663a34b0ebc</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
</Array>
<Single Name="Timestamp" Type="long">639034841591030946</Single>
</Single>
<Single Name="Object" Type="{2db5746d-d284-4425-9f7f-2663a34b0ebc}" Method="IArchivable">
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">{attribute 'qualified_only'}
{attribute 'strict'}
TYPE atMbClientToString :
(
noneOk := 0,
someOk := 1,
allOk := 2
);
END_TYPE
</Single>
<Single Name="LineInfoPersistence" Type="string">f228f401-6c74-4359-8ff1-b15b675180a4_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">11</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">43f52a7a-cd45-4c0a-8652-9b18c69324d7</Single>
<Single Name="ParentGuid" Type="System.Guid">00000000-0000-0000-0000-000000000000</Single>
<Single Name="Name" Type="string">atMBExceptionCodes</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties">
<Entry>
<Key>
<Single Type="System.Guid">829a18f2-c514-4f6e-9634-1df173429203</Single>
</Key>
<Value>
<Single Type="{829a18f2-c514-4f6e-9634-1df173429203}" Method="IArchivable">
<Dictionary Type="{fa2ee218-a39b-4b6d-b249-49dbddbd168a}" Name="ParentObjects">
<Entry>
<Key>
<Single Type="System.Guid">21af5390-2942-461a-bf89-951aaf6999f1</Single>
</Key>
<Value>
<Single Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
</Value>
</Entry>
</Dictionary>
</Single>
</Value>
</Entry>
</Dictionary>
<Single Name="TypeGuid" Type="System.Guid">2db5746d-d284-4425-9f7f-2663a34b0ebc</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
</Array>
<Single Name="Timestamp" Type="long">639034841590519807</Single>
</Single>
<Single Name="Object" Type="{2db5746d-d284-4425-9f7f-2663a34b0ebc}" Method="IArchivable">
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">{attribute 'qualified_only'}
// {attribute 'strict'} NOT strict so can set with modbusFB.ExceptionCodes.
TYPE atMBExceptionCodes :
(
// Local / transport-level (non-Modbus) result
TIMEOUT := -1, // Communication timeout / no response
// Modbus exception codes (returned in exception response PDU)
RESPONSE_SUCCESS := 16#00, // Everything OK (no exception)
ILLEGAL_FUNCTION := 16#01, // Function code not supported by slave
ILLEGAL_DATA_ADDRESS := 16#02, // Data address not valid for slave (out of range / not mapped)
ILLEGAL_DATA_VALUE := 16#03, // Data value not valid (bad length/value/etc.)
SLAVE_DEVICE_FAILURE := 16#04, // Unrecoverable error while performing the requested action
ACKNOWLEDGE := 16#05, // Request accepted; processing started (use to avoid master timeout)
SLAVE_DEVICE_BUSY := 16#06, // Slave busy (e.g. long operation in progress); retry later
MEMORY_PARITY_ERROR := 16#08, // Memory parity error (special case; historically for FC 20/21)
GATEWAY_PATH_UNAVAILABLE := 16#0A, // Gateway problem: path unavailable / misconfigured / overloaded
GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND := 16#0B // Gateway problem: target device did not respond
);
END_TYPE
</Single>
<Single Name="LineInfoPersistence" Type="string">43f52a7a-cd45-4c0a-8652-9b18c69324d7_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">78</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Single Name="ParentGuid" Type="System.Guid">00000000-0000-0000-0000-000000000000</Single>
<Single Name="Name" Type="string">atMbClient</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties">
<Entry>
<Key>
<Single Type="System.Guid">24568a24-c491-472c-a21f-ee5d33859fab</Single>
</Key>
<Value>
<Single Type="{24568a24-c491-472c-a21f-ee5d33859fab}" Method="IArchivable">
<Single Name="MemoryReserveForOnlineChange" Type="int">1024</Single>
<Single Name="ExcludeFromBuild" Type="bool">False</Single>
<Single Name="External" Type="bool">False</Single>
<Single Name="EnableSystemCall" Type="bool">False</Single>
<Single Name="CompilerDefines" Type="string" />
<Single Name="LinkAlways" Type="bool">False</Single>
<Array Name="Undefines" Type="string" />
</Single>
</Value>
</Entry>
<Entry>
<Key>
<Single Type="System.Guid">829a18f2-c514-4f6e-9634-1df173429203</Single>
</Key>
<Value>
<Single Type="{829a18f2-c514-4f6e-9634-1df173429203}" Method="IArchivable">
<Dictionary Type="{fa2ee218-a39b-4b6d-b249-49dbddbd168a}" Name="ParentObjects">
<Entry>
<Key>
<Single Type="System.Guid">21af5390-2942-461a-bf89-951aaf6999f1</Single>
</Key>
<Value>
<Single Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
</Value>
</Entry>
</Dictionary>
</Single>
</Value>
</Entry>
</Dictionary>
<Single Name="TypeGuid" Type="System.Guid">6f9dac99-8de1-4efc-8465-68ac443b7d08</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639251309599709549</Single>
</Single>
<Single Name="Object" Type="{6f9dac99-8de1-4efc-8465-68ac443b7d08}" Method="IArchivable">
<Single Name="SpecialFunc" Type="{0db3d7bb-cde0-4416-9a7b-ce49a0124323}">None</Single>
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF nativeMode THEN
nativeCycle();
RETURN;
END_IF;
//Modbus connection
//Connects to a modbus slave
//2024-11-23 ATM Cleaned up code
//2024-12-23 CWD Add statistics
//2025-06-18 CWD Add Get priorities and interval working together
//2026-03-26 ATM Clean up code, more testing
//2026-04-03 ATM Now Client makes the requests, calling this just passes data. Dynamically allocated requests
// ===== Main function call =====
IF (in_resetStats) THEN
resetStats();
in_resetStats := FALSE;
END_IF
// ===== Connect and disconnect logic =====
//Timer to trigger a connection if not connected for to long
reconnectTimer(
IN := NOT client.xConnect AND NOT client.xConnected AND NOT client.xError,
PT := RECONNECT_DELAY
);
//Timer to trigger a disconnection if connect fails
disconnectTimer(
IN:=client.xConnect AND NOT client.xConnected,
PT:=DISCONNECT_DELAY
);
//All requests offline timer
allRequestsOfflineTON(
IN := allRequestsOffline AND client.xConnected,
PT := ALL_OFFLINE_DELAY
);
//Destroy Client delay timer
recreateClientDly(
IN:=destroyClient,
PT:=RECREATE_CLIENT_DELAY
);
IF disconnectTimer.Q OR allRequestsOfflineTON.Q OR client.xError OR recreateTest THEN
//All requests are offline
//Connection attempt failed so disconnect
//If Client has error then disconnect
connect := FALSE;
recreateTest := FALSE;
destroyClient := TRUE;
setAllRequestsOffline();
ELSIF reconnectTimer.Q AND NOT destroyClient THEN
//If not connected then attempt connect
connect := TRUE;
connectCnt := connectCnt + 1; //for debugging
END_IF;
IF recreateClientDly.Q THEN
destroyClient := FALSE;
recreateClient();
END_IF;
// If some reason gets stuck at busy, (This shouldnt happen, but force a reconnect).
forceConnect(
in := connect &lt;&gt; client.xConnect,
pt := FORCE_RECONNECT_DELAY
);
// Only flip status of xConnect if no current request is active.
IF (connect &lt;&gt; client.xConnect) AND_THEN (allRequestsComplete OR forceConnect.Q) THEN
client.xConnect := connect;
END_IF
// Moved this lower down, so xConnect happens one scan sooner.
client();
// If there are no requests, dont neeed to even do anything.
IF requestCnt = 0 THEN
numMsgSent := 0;
numMsgReply := 0;
allRequestsOnline := 0;
allRequestsOffline := 0;
RETURN;
END_IF
requestNotExecutingTON(IN := NOT requestExecuting, PT := NEXT_REQUEST_DELAY); //Only delaying 1 ms. This may not do much, was put in during testing, but now it almost seems unnecesary
// ===== Execute next request =====
IF connect AND client.xConnect AND client.xConnected AND (requestNotExecutingTON.Q OR NEXT_REQUEST_DELAY = T#0MS) THEN
//Find the lowest priority of overdue requests
nextIdx := -1;
priorityLowest := PRIORITY_NONE;
highestTimeSinceRun := 0;
FOR i := 0 TO UINT_TO_DINT(requestCnt)-1 DO
IF (requests[i]^.in_priorityCurrent &lt; priorityLowest
OR (requests[i]^.in_priorityCurrent = priorityLowest AND requests[i]^.stats.sinceLastExec &gt; highestTimeSinceRun))
AND requests[i]^.stats.sinceLastExec &gt; TIME_TO_UDINT(requests[i]^.in_minDelay) THEN
priorityLowest := requests[i]^.in_priorityCurrent;
highestTimeSinceRun := requests[i]^.stats.sinceLastExec;
nextIdx := i;
END_IF
END_FOR
//Decriment all request priorities by one.
IF priorityLowest &lt; PRIORITY_NONE AND priorityLowest &gt; 0 THEN //Only if priority
FOR i := 0 TO UINT_TO_DINT(requestCnt)-1 DO
requests[i]^.in_priorityCurrent := requests[i]^.in_priorityCurrent - 1;
IF requests[i]^.in_priorityCurrent &lt; 0 THEN
requests[i]^.in_priorityCurrent := 0;
END_IF
END_FOR
END_IF
IF nextIdx &gt;= 0 THEN
activeIndex := nextIdx;
END_IF
END_IF
processAllRequests();
allRequestsOnline := (activeReqCnt &gt; 0) AND (onlineCnt = activeReqCnt);
allRequestsOffline := (activeReqCnt &gt; 0) AND (onlineCnt = 0);
// ===== Client statistics =====
//Get a sum of done and error counts from all requests
reqErrSum := 0;
reqDoneSum := 0;
FOR i := 0 TO UINT_TO_DINT(requestCnt)-1 DO
reqDoneSum := reqDoneSum + requests[i]^.stats.doneCnt;
reqErrSum := reqErrSum + requests[i]^.stats.errorCnt;
//copy stats to array for debugging
reqStats[i] := ADR(requests[i]^.stats);
END_FOR
//Every time the tx message counter changes increment msg count and add last transaction time
IF client.udiNumMsgSent &lt;&gt; msgCountLast THEN
msgCountLast := client.udiNumMsgSent;
msgTimeSum := msgTimeSum + client.udiLastTransactionTime;
msgCountSum := msgCountSum + 1;
END_IF
//Every 1 second compute statistics
pulse();
IF pulse.T_Sec_OS THEN
msgLastSecondCnt := msgCountSum;
msgCountSum := 0;
msgLastSecondTime := msgTimeSum;
msgTimeSum := 0;
END_IF
numMsgSent := client.udiNumMsgSent;
numMsgReply := client.udiNumMsgReply;
</Single>
<Single Name="LineInfoPersistence" Type="string">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">{attribute 'monitoring_display' := 'toString'}
{attribute 'no_assign'}
FUNCTION_BLOCK ABSTRACT atMbClient
VAR_INPUT
{attribute 'symbol' := 'none'}
in_timeout: TIME := T#0MS; // If this is set, this will be used on requests, otherwise it will be calculated from in_dataRate.
{attribute 'symbol' := 'none'}
in_resetStats: BOOL; // Set this bool to true to reset statistics.
END_VAR
VAR_OUTPUT
{attribute 'symbol' := 'none'}
msgLastSecondCnt: UDINT; //Messages in the last second
{attribute 'symbol' := 'none'}
msgLastSecondTime: UDINT; //Total amount of time for all messages sent last second in ms
{attribute 'symbol' := 'none'}
numMsgSent: UDINT;
{attribute 'symbol' := 'none'}
numMsgReply: UDINT;
{attribute 'symbol' := 'none'}
allRequestsOnline: BOOL; //All requests are working
//{attribute 'symbol' := 'none'}
reqStats: ARRAY[0..99] OF POINTER TO atMbRequestStats; // For debugging modbus requests
END_VAR
VAR
{attribute 'symbol' := 'none'}
datarate: DINT := 0; //Bits per second data rate. Used to calculate reply timeout. Based on amount of time to transmit holding register read for max amount of registers. Default 154705 for Modbus TCP = 17ms to transmit 2650 bits
{attribute 'symbol' := 'none'}
client: REFERENCE TO ModbusFB.Client; // This is generated internally, no need to set.
{attribute 'symbol' := 'none'}
connectCnt: DINT; //Number of connection attempts
{attribute 'symbol' := 'none'}
initDone: BOOL;
{attribute 'symbol' := 'none'}
disconnectTimer: TON; //Connecting but not connected delay
{attribute 'symbol' := 'none'}
reconnectTimer: TON; //Not connecting and not connected delay
{attribute 'symbol' := 'none'}
msgCountLast: UDINT; //Last message count
{attribute 'symbol' := 'none'}
msgCountSum: UDINT; //Message count accumulator
{attribute 'symbol' := 'none'}
msgTimeSum: UDINT; //Amount of time for messsages accumulator
{attribute 'symbol' := 'none'}
pulse: atPulse; //Pulse generator
{attribute 'symbol' := 'none'}
requests: ARRAY[0..99] OF POINTER TO atMbReqBase; //list of request to direct
{attribute 'symbol' := 'none'}
requestCnt: UINT; //Number of active requests
{attribute 'symbol' := 'none'}
reqDoneSum: UDINT; //Count of done result on all requests
{attribute 'symbol' := 'none'}
reqErrSum: UDINT; //Count of error result on all requests
{attribute 'symbol' := 'none'}
i: DINT; //Loop variable
{attribute 'symbol' := 'none'}
nextIdx: DINT := -1; //Index of the active request
{attribute 'symbol' := 'none'}
priorityLowest: INT; //lowest request priority
{attribute 'symbol' := 'none'}
highestTimeSinceRun: UDINT; //lowest request priority
{attribute 'symbol' := 'none'}
allRequestsOfflineTON: TON; //All requests are offline delay
{attribute 'symbol' := 'none'}
requestNotExecutingTON: TON; //Delay after there are no requests execting
{attribute 'symbol' := 'none'}
recreateClientDly: TON; //Delay to make new client after force fail
{attribute 'symbol' := 'none'}
allRequestsOffline: BOOL; //All requests are offline
{attribute 'symbol' := 'none'}
connect: BOOL; // this is more of a "Request to connect, Requet to disconnect", will drop xConnect once all requests are done, wont start requests unless this is true.
{attribute 'symbol' := 'none'}
forceConnect: TON; //If after 5 seconds, all requests are still ofline, just force a reconnect.
test1: REAL;
test2: REAL;
destroyClient: BOOL;
recreateTest: BOOL;
END_VAR
VAR CONSTANT
{attribute 'symbol' := 'none'}
NEXT_REQUEST_DELAY: TIME := T#0MS; // Dont seem to need a delay
{attribute 'symbol' := 'none'}
RECONNECT_DELAY: TIME := T#500MS;
{attribute 'symbol' := 'none'}
DISCONNECT_DELAY: TIME := T#500MS;
{attribute 'symbol' := 'none'}
RECREATE_CLIENT_DELAY: TIME := T#1000MS;
{attribute 'symbol' := 'none'}
ALL_OFFLINE_DELAY: TIME := T#2S;
{attribute 'symbol' := 'none'}
FORCE_RECONNECT_DELAY: TIME := T#1S;
{attribute 'symbol' := 'none'}
PRIORITY_NONE: INT := 32767;
END_VAR
VAR
nativeMode : BOOL;
nativeHandle : UDINT;
nativeIP : DWORD;
nativePort : UINT;
nativeNowUs : SYSTIME;
nativeNowMs : ULINT;
nativeStatus : ARRAY[0..23] OF UDINT;
nativeActiveIndex : DINT := -1;
nativeSelected : POINTER TO atMbReqBase;
nativeResultReady : BOOL;
nativeFinishedIndex : DINT := -1;
nativeCallResult : UDINT;
nativeWindowStart : ULINT;
nativePrevConnected : BOOL;
nativeEnable : BOOL := TRUE;
nativeConnectTimeout : UDINT := 2000;
nativeRetryDelay : UDINT := 1000;
nativeHoldUncertainWrites : BOOL := FALSE;
END_VAR
VAR_INPUT
{attribute 'symbol' := 'none'}
nativeIO : ARRAY[0..1999] OF WORD;
{attribute 'symbol' := 'none'}
nativeActiveRequest : POINTER TO atMbReqBase;
{attribute 'symbol' := 'none'}
nativeArgUnit : BYTE;
{attribute 'symbol' := 'none'}
nativeArgFunction : BYTE;
{attribute 'symbol' := 'none'}
nativeArgAddress : UINT;
{attribute 'symbol' := 'none'}
nativeArgQuantity : UINT;
{attribute 'symbol' := 'none'}
nativeArgTimeout : UDINT := 1000;
{attribute 'symbol' := 'none'}
nativeSent : UDINT;
{attribute 'symbol' := 'none'}
nativeReplied : UDINT;
{attribute 'symbol' := 'none'}
nativeWindowCount : UDINT;
{attribute 'symbol' := 'none'}
nativeWindowTime : UDINT;
END_VAR
VAR_OUTPUT
out_connected : BOOL;
out_connectionState : UDINT;
out_lastNativeError : UDINT;
out_socketError : UDINT;
out_reconnectCount : UDINT;
out_registrationFull : BOOL;
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">3369</Single>
<Single Name="POULevel" Type="{8e575c5b-1d37-49c6-941b-5c0ec7874787}">Standard</Single>
<List Name="ChildObjectGuids" Type="System.Collections.ArrayList" />
<Single Name="AddAttributeSubsequent" Type="bool">False</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">17c2ab7a-4d60-48ec-966f-339ec83a75e9</Single>
<Single Name="ParentGuid" Type="System.Guid">00000000-0000-0000-0000-000000000000</Single>
<Single Name="Name" Type="string">atMbClientRTU</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties">
<Entry>
<Key>
<Single Type="System.Guid">24568a24-c491-472c-a21f-ee5d33859fab</Single>
</Key>
<Value>
<Single Type="{24568a24-c491-472c-a21f-ee5d33859fab}" Method="IArchivable">
<Single Name="MemoryReserveForOnlineChange" Type="int">1024</Single>
<Single Name="ExcludeFromBuild" Type="bool">False</Single>
<Single Name="External" Type="bool">False</Single>
<Single Name="EnableSystemCall" Type="bool">False</Single>
<Single Name="CompilerDefines" Type="string" />
<Single Name="LinkAlways" Type="bool">False</Single>
<Array Name="Undefines" Type="string" />
</Single>
</Value>
</Entry>
<Entry>
<Key>
<Single Type="System.Guid">829a18f2-c514-4f6e-9634-1df173429203</Single>
</Key>
<Value>
<Single Type="{829a18f2-c514-4f6e-9634-1df173429203}" Method="IArchivable">
<Dictionary Type="{fa2ee218-a39b-4b6d-b249-49dbddbd168a}" Name="ParentObjects">
<Entry>
<Key>
<Single Type="System.Guid">21af5390-2942-461a-bf89-951aaf6999f1</Single>
</Key>
<Value>
<Single Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
</Value>
</Entry>
</Dictionary>
</Single>
</Value>
</Entry>
</Dictionary>
<Single Name="TypeGuid" Type="System.Guid">6f9dac99-8de1-4efc-8465-68ac443b7d08</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639207574649591897</Single>
</Single>
<Single Name="Object" Type="{6f9dac99-8de1-4efc-8465-68ac443b7d08}" Method="IArchivable">
<Single Name="SpecialFunc" Type="{0db3d7bb-cde0-4416-9a7b-ce49a0124323}">None</Single>
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">//Modbus connection
//Connects to a modbus slave
//2024-06-27 CWD Initial create
//2024-11-13 CWD Fix problem with not connecting properly on power up
//2024-11-15 ATM Move from structure to defaults.
//2024-11-23 ATM Cleaned up code
//2026-04-03 ATM Now Client makes the requests, calling this just passes data. Dynamically allocated requests
IF NOT setupClient() THEN
RETURN;
END_IF
//Set dataRate
//This is based on an 8 byte request and a 255 byte reply
dataRate := in_baudRate;
// ===== Initialization =====
// if the param changes, force a reinit
IF _client^.iPort &lt;&gt; in_port
OR _client^.dwBaudrate &lt;&gt; in_baudRate
OR _client^.byDataBits &lt;&gt; in_dataBits
OR _client^.eParity &lt;&gt; in_parity
OR _client^.eStopBits &lt;&gt; in_stopBits THEN
initDone := FALSE;
END_IF;
IF NOT initDone THEN
initDone := TRUE;
//Other configuration parameters
_client^.iPort := in_port;
_client^.dwBaudrate := in_baudRate;
_client^.byDataBits := in_dataBits;
_client^.eParity := in_parity;
_client^.eStopBits := in_stopBits;
_client^.eDTRcontrol := 0;
_client^.eRTScontrol := 0;
_client^.eRTUASCII := 0;
_client^.udiLogOptions := ModbusFB.LoggingOptions.All;
_client^.xConnect:=FALSE;
END_IF
SUPER^();</Single>
<Single Name="LineInfoPersistence" Type="string">17c2ab7a-4d60-48ec-966f-339ec83a75e9_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">{attribute 'no_assign'}
FUNCTION_BLOCK atMbClientRTU EXTENDS atMbClient
VAR_INPUT
{attribute 'symbol' := 'none'}
in_port: BYTE := 0; //0=None, 1,2,3,4
{attribute 'symbol' := 'none'}
in_baudRate: UINT := 9600; //4800, 9600, 19200, 38400, 57600, 115200
{attribute 'symbol' := 'none'}
in_parity: BYTE := 0; //0=None, 1=Odd, 2=Even
{attribute 'symbol' := 'none'}
in_dataBits: BYTE := 8; //8=8
{attribute 'symbol' := 'none'}
in_stopBits: BYTE := 1; //1=OneStopBit, 2=One5StopBits, 3=TwoStopBits
END_VAR
VAR
{attribute 'symbol' := 'none'}
_client: POINTER TO ModbusFB.ClientSerial;
END_VAR</Single>
<Single Name="LineInfoPersistence" Type="string">17c2ab7a-4d60-48ec-966f-339ec83a75e9_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">607</Single>
<Single Name="POULevel" Type="{8e575c5b-1d37-49c6-941b-5c0ec7874787}">Standard</Single>
<List Name="ChildObjectGuids" Type="System.Collections.ArrayList" />
<Single Name="AddAttributeSubsequent" Type="bool">False</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">269ad87c-8ffe-4a28-9e12-2f2da3f7c570</Single>
<Single Name="ParentGuid" Type="System.Guid">00000000-0000-0000-0000-000000000000</Single>
<Single Name="Name" Type="string">atMbClientTCP</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties">
<Entry>
<Key>
<Single Type="System.Guid">24568a24-c491-472c-a21f-ee5d33859fab</Single>
</Key>
<Value>
<Single Type="{24568a24-c491-472c-a21f-ee5d33859fab}" Method="IArchivable">
<Single Name="MemoryReserveForOnlineChange" Type="int">1024</Single>
<Single Name="ExcludeFromBuild" Type="bool">False</Single>
<Single Name="External" Type="bool">False</Single>
<Single Name="EnableSystemCall" Type="bool">False</Single>
<Single Name="CompilerDefines" Type="string" />
<Single Name="LinkAlways" Type="bool">False</Single>
<Array Name="Undefines" Type="string" />
</Single>
</Value>
</Entry>
<Entry>
<Key>
<Single Type="System.Guid">829a18f2-c514-4f6e-9634-1df173429203</Single>
</Key>
<Value>
<Single Type="{829a18f2-c514-4f6e-9634-1df173429203}" Method="IArchivable">
<Dictionary Type="{fa2ee218-a39b-4b6d-b249-49dbddbd168a}" Name="ParentObjects">
<Entry>
<Key>
<Single Type="System.Guid">21af5390-2942-461a-bf89-951aaf6999f1</Single>
</Key>
<Value>
<Single Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
</Value>
</Entry>
</Dictionary>
</Single>
</Value>
</Entry>
</Dictionary>
<Single Name="TypeGuid" Type="System.Guid">6f9dac99-8de1-4efc-8465-68ac443b7d08</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639207574649747183</Single>
</Single>
<Single Name="Object" Type="{6f9dac99-8de1-4efc-8465-68ac443b7d08}" Method="IArchivable">
<Single Name="SpecialFunc" Type="{0db3d7bb-cde0-4416-9a7b-ce49a0124323}">None</Single>
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">nativeMode := TRUE;
nativeIP := SHL(BYTE_TO_DWORD(in_ipAddress[0]),24) OR
SHL(BYTE_TO_DWORD(in_ipAddress[1]),16) OR
SHL(BYTE_TO_DWORD(in_ipAddress[2]),8) OR BYTE_TO_DWORD(in_ipAddress[3]);
nativePort := in_port;
nativeConnectTimeout := MAX(UDINT#1,TIME_TO_UDINT(in_connectTimeout));
nativeRetryDelay := MAX(UDINT#1,TIME_TO_UDINT(in_reconnectDelay));
nativeHoldUncertainWrites := in_holdUncertainWrites;
IF nativeHandle &lt;&gt; 0 AND ((nativeEndpointIP &lt;&gt; nativeIP) OR
(nativeEndpointPort &lt;&gt; nativePort) OR (nativeConfigConnect &lt;&gt; nativeConnectTimeout) OR
(nativeConfigRetry &lt;&gt; nativeRetryDelay) OR NOT in_enable) THEN
nativeRelease();
END_IF;
nativeEndpointIP := nativeIP; nativeEndpointPort := nativePort;
nativeConfigConnect := nativeConnectTimeout; nativeConfigRetry := nativeRetryDelay;
nativeEnable := in_enable;
IF in_baudrate &lt;&gt; 0 THEN dataRate := in_baudrate; ELSE dataRate := 105200; END_IF;
SUPER^();</Single>
<Single Name="LineInfoPersistence" Type="string">269ad87c-8ffe-4a28-9e12-2f2da3f7c570_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">{attribute 'no_assign'}
FUNCTION_BLOCK atMbClientTCP EXTENDS atMbClient
VAR_INPUT
{attribute 'symbol' := 'none'}
in_ipAddress: ARRAY[0..3] OF BYTE; // TCP IP Address
{attribute 'symbol' := 'none'}
in_port: UINT := 502; // TCP port
{attribute 'symbol' := 'none'}
in_baudrate: UINT := 0; // Set this if using RS485 to TCP Converter, used to calculate timeout.
END_VAR
VAR
{attribute 'symbol' := 'none'}
_client: POINTER TO ModbusFB.ClientTCP;
END_VAR
VAR_INPUT
in_enable : BOOL := TRUE;
in_connectTimeout : TIME := T#2S;
in_reconnectDelay : TIME := T#1S;
in_holdUncertainWrites : BOOL := FALSE;
END_VAR
VAR
nativeEndpointIP : DWORD;
nativeEndpointPort : UINT;
nativeConfigConnect : UDINT;
nativeConfigRetry : UDINT;
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">269ad87c-8ffe-4a28-9e12-2f2da3f7c570_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">1168</Single>
<Single Name="POULevel" Type="{8e575c5b-1d37-49c6-941b-5c0ec7874787}">Standard</Single>
<List Name="ChildObjectGuids" Type="System.Collections.ArrayList" />
<Single Name="AddAttributeSubsequent" Type="bool">False</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Single Name="ParentGuid" Type="System.Guid">00000000-0000-0000-0000-000000000000</Single>
<Single Name="Name" Type="string">atMbReqBase</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties">
<Entry>
<Key>
<Single Type="System.Guid">24568a24-c491-472c-a21f-ee5d33859fab</Single>
</Key>
<Value>
<Single Type="{24568a24-c491-472c-a21f-ee5d33859fab}" Method="IArchivable">
<Single Name="MemoryReserveForOnlineChange" Type="int">1024</Single>
<Single Name="ExcludeFromBuild" Type="bool">False</Single>
<Single Name="External" Type="bool">False</Single>
<Single Name="EnableSystemCall" Type="bool">False</Single>
<Single Name="CompilerDefines" Type="string" />
<Single Name="LinkAlways" Type="bool">False</Single>
<Array Name="Undefines" Type="string" />
</Single>
</Value>
</Entry>
<Entry>
<Key>
<Single Type="System.Guid">829a18f2-c514-4f6e-9634-1df173429203</Single>
</Key>
<Value>
<Single Type="{829a18f2-c514-4f6e-9634-1df173429203}" Method="IArchivable">
<Dictionary Type="{fa2ee218-a39b-4b6d-b249-49dbddbd168a}" Name="ParentObjects">
<Entry>
<Key>
<Single Type="System.Guid">21af5390-2942-461a-bf89-951aaf6999f1</Single>
</Key>
<Value>
<Single Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
</Value>
</Entry>
</Dictionary>
</Single>
</Value>
</Entry>
</Dictionary>
<Single Name="TypeGuid" Type="System.Guid">6f9dac99-8de1-4efc-8465-68ac443b7d08</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639207574649837310</Single>
</Single>
<Single Name="Object" Type="{6f9dac99-8de1-4efc-8465-68ac443b7d08}" Method="IArchivable">
<Single Name="SpecialFunc" Type="{0db3d7bb-cde0-4416-9a7b-ce49a0124323}">None</Single>
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">//Modbus request
//Makes a request using the start and quantity, puts the result into data
//2024-06-27 CWD Initial create
//2024-11-15 ATM Moved from Work to main for easier debugging
//2024-11-23 ATM Cleaned up code, added start array position
//2025-10-28 CWD Updated to reduce symbol usage
IF NOT __ISVALIDREF(client) THEN
RETURN;
END_IF
//Add this request to the clients request array
client.addRequest(THIS);
//fault logic
//Fault if error
//errTrig(CLK := stats.reqError);
//IF errTrig.Q THEN
// out_fault := TRUE;
//END_IF
//not faulted if a succesfull request
//doneTrig(CLK := stats.reqDone);
// also clear fault if not active
//IF doneTrig.Q OR NOT stats.active THEN
// out_fault := FALSE;
//END_IF
IF in_quantity &lt;= dataSize THEN
stats.reqLength := in_quantity;
ELSE
stats.reqLength := dataSize;
END_IF;</Single>
<Single Name="LineInfoPersistence" Type="string">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">{attribute 'no_assign'}
FUNCTION_BLOCK ABSTRACT atMbReqBase
VAR_INPUT
{attribute 'symbol' := 'none'}
client: REFERENCE TO atMbClient; // Instance of atMBClient
{attribute 'symbol' := 'none'}
in_startAddr: UINT;
{attribute 'symbol' := 'none'}
in_quantity: UINT;
{attribute 'symbol' := 'none'}
in_dataOffset: UINT; // Offset position for data into array.
{attribute 'symbol' := 'none'}
in_unitId: BYTE := 0;
{attribute 'symbol' := 'none'}
in_timeout: SYSTIME := 0; // timeout in ms, if not set, will be 1ms less than interval.
{attribute 'symbol' := 'none'}
in_minDelay: TIME := T#10MS; // This is the minimum delay between queries, only relevent if high priority.
{attribute 'symbol' := 'none'}
in_prioritySetpoint: INT := 50; // this requests priority compared to other requests. Lower value is higher priority.
{attribute 'symbol' := 'none'}
in_priorityCurrent: INT; //Current priority. This is decrimented and the request is executed when at zero.
{attribute 'symbol' := 'none'}
stats: atMbRequestStats; //Request stats
END_VAR
VAR_OUTPUT
//{attribute 'symbol' := 'none'}
//out_fault: BOOL;
END_VAR
VAR
{attribute 'symbol' := 'none'}
dataSize: UINT;
//{attribute 'symbol' := 'none'}
//quantUsed: UINT;
//{attribute 'symbol' := 'none'}
//doneTrig: R_TRIG; //Succesful request trigger
//{attribute 'symbol' := 'none'}
//errTrig: R_TRIG; //Error request result trigger
{attribute 'symbol' := 'none'}
request: REFERENCE TO ModbusFB.ClientRequest;;
END_VAR
VAR
nativeFunction : BYTE;
nativeCount : UINT;
nativeOffset : UINT;
nativeInFlight : BOOL;
nativeReadComplete : BOOL;
nativeCopyAllowed : BOOL;
nativeWriteHold : BOOL;
nativeStartMs : ULINT;
nativeLoop : DINT;
nativeRC : UDINT;
END_VAR
VAR_OUTPUT
out_nativeError : UDINT;
out_socketError : UDINT;
out_writeUncertain : BOOL;
out_validData : BOOL;
out_dataAgeMs : ULINT;
out_stale : BOOL := TRUE;
out_parameterError : BOOL;
END_VAR
VAR_INPUT
in_staleAfter : TIME := T#2S;
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">3210</Single>
<Single Name="POULevel" Type="{8e575c5b-1d37-49c6-941b-5c0ec7874787}">Standard</Single>
<List Name="ChildObjectGuids" Type="System.Collections.ArrayList" />
<Single Name="AddAttributeSubsequent" Type="bool">False</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">a77a90fd-541d-4ce9-ad97-7024224bbab4</Single>
<Single Name="ParentGuid" Type="System.Guid">00000000-0000-0000-0000-000000000000</Single>
<Single Name="Name" Type="string">atMbReqReadCoil</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties">
<Entry>
<Key>
<Single Type="System.Guid">24568a24-c491-472c-a21f-ee5d33859fab</Single>
</Key>
<Value>
<Single Type="{24568a24-c491-472c-a21f-ee5d33859fab}" Method="IArchivable">
<Single Name="MemoryReserveForOnlineChange" Type="int">1024</Single>
<Single Name="ExcludeFromBuild" Type="bool">False</Single>
<Single Name="External" Type="bool">False</Single>
<Single Name="EnableSystemCall" Type="bool">False</Single>
<Single Name="CompilerDefines" Type="string" />
<Single Name="LinkAlways" Type="bool">False</Single>
<Array Name="Undefines" Type="string" />
</Single>
</Value>
</Entry>
<Entry>
<Key>
<Single Type="System.Guid">829a18f2-c514-4f6e-9634-1df173429203</Single>
</Key>
<Value>
<Single Type="{829a18f2-c514-4f6e-9634-1df173429203}" Method="IArchivable">
<Dictionary Type="{fa2ee218-a39b-4b6d-b249-49dbddbd168a}" Name="ParentObjects">
<Entry>
<Key>
<Single Type="System.Guid">21af5390-2942-461a-bf89-951aaf6999f1</Single>
</Key>
<Value>
<Single Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
</Value>
</Entry>
</Dictionary>
</Single>
</Value>
</Entry>
</Dictionary>
<Single Name="TypeGuid" Type="System.Guid">6f9dac99-8de1-4efc-8465-68ac443b7d08</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502146913881</Single>
</Single>
<Single Name="Object" Type="{6f9dac99-8de1-4efc-8465-68ac443b7d08}" Method="IArchivable">
<Single Name="SpecialFunc" Type="{0db3d7bb-cde0-4416-9a7b-ce49a0124323}">None</Single>
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF __ISVALIDREF(client) AND_THEN client.nativeMode THEN
out_parameterError := (UINT_TO_DINT(in_dataOffset) &lt; LOWER_BOUND(data,1)) OR
(UINT_TO_DINT(in_dataOffset) &gt; UPPER_BOUND(data,1));
IF out_parameterError THEN dataSize := 0;
ELSE dataSize := DINT_TO_UINT(UPPER_BOUND(data,1) - UINT_TO_DINT(in_dataOffset) + 1);
END_IF;
SUPER^();
RETURN;
END_IF;
//Modbus request input registers
//2024-11-16 CWD Added read coil
//2024-11-23 ATM Cleaned up code, added start array position
//2025-10-28 CWD Updated to reduce symbol usage
//2026-04-03 ATM Now Client makes the requests, calling this just passes data. Dynamically allocated requests
//Verify data size is large enough, if not then only get as many registers that will fit.
dataSize := DINT_TO_UINT(UPPER_BOUND(data,1) - LOWER_BOUND(data,1) + 1);
SUPER^();
</Single>
<Single Name="LineInfoPersistence" Type="string">a77a90fd-541d-4ce9-ad97-7024224bbab4_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">{attribute 'no_assign'}
FUNCTION_BLOCK atMbReqReadCoil EXTENDS atMbReqBase
VAR_IN_OUT
// ARRAY[] OF BOOL to hold received data
{attribute 'symbol' := 'none'}
data: ARRAY[*] OF BOOL;
END_VAR
VAR_OUTPUT
END_VAR
VAR
{attribute 'symbol' := 'none'}
readCoilReq: POINTER TO ModbusFB.ClientRequestReadCoils;
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">a77a90fd-541d-4ce9-ad97-7024224bbab4_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">193</Single>
<Single Name="POULevel" Type="{8e575c5b-1d37-49c6-941b-5c0ec7874787}">Standard</Single>
<List Name="ChildObjectGuids" Type="System.Collections.ArrayList" />
<Single Name="AddAttributeSubsequent" Type="bool">False</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">1a3278f4-a658-407c-968a-21aa53361562</Single>
<Single Name="ParentGuid" Type="System.Guid">00000000-0000-0000-0000-000000000000</Single>
<Single Name="Name" Type="string">atMbReqReadDiscrete</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties">
<Entry>
<Key>
<Single Type="System.Guid">24568a24-c491-472c-a21f-ee5d33859fab</Single>
</Key>
<Value>
<Single Type="{24568a24-c491-472c-a21f-ee5d33859fab}" Method="IArchivable">
<Single Name="MemoryReserveForOnlineChange" Type="int">1024</Single>
<Single Name="ExcludeFromBuild" Type="bool">False</Single>
<Single Name="External" Type="bool">False</Single>
<Single Name="EnableSystemCall" Type="bool">False</Single>
<Single Name="CompilerDefines" Type="string" />
<Single Name="LinkAlways" Type="bool">False</Single>
<Array Name="Undefines" Type="string" />
</Single>
</Value>
</Entry>
<Entry>
<Key>
<Single Type="System.Guid">829a18f2-c514-4f6e-9634-1df173429203</Single>
</Key>
<Value>
<Single Type="{829a18f2-c514-4f6e-9634-1df173429203}" Method="IArchivable">
<Dictionary Type="{fa2ee218-a39b-4b6d-b249-49dbddbd168a}" Name="ParentObjects">
<Entry>
<Key>
<Single Type="System.Guid">21af5390-2942-461a-bf89-951aaf6999f1</Single>
</Key>
<Value>
<Single Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
</Value>
</Entry>
</Dictionary>
</Single>
</Value>
</Entry>
</Dictionary>
<Single Name="TypeGuid" Type="System.Guid">6f9dac99-8de1-4efc-8465-68ac443b7d08</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502147014015</Single>
</Single>
<Single Name="Object" Type="{6f9dac99-8de1-4efc-8465-68ac443b7d08}" Method="IArchivable">
<Single Name="SpecialFunc" Type="{0db3d7bb-cde0-4416-9a7b-ce49a0124323}">None</Single>
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF __ISVALIDREF(client) AND_THEN client.nativeMode THEN
out_parameterError := (UINT_TO_DINT(in_dataOffset) &lt; LOWER_BOUND(data,1)) OR
(UINT_TO_DINT(in_dataOffset) &gt; UPPER_BOUND(data,1));
IF out_parameterError THEN dataSize := 0;
ELSE dataSize := DINT_TO_UINT(UPPER_BOUND(data,1) - UINT_TO_DINT(in_dataOffset) + 1);
END_IF;
SUPER^();
RETURN;
END_IF;
//Modbus request input registers
//2024-06-27 CWD Initial Create
//2024-10-21 CWD Set udiTimeout to 0 as this was causing problems with detecting an actual no reply timeout from the slave
//2024-11-15 ATM Moved from Work to main for easier debugging
//2024-11-23 ATM Cleaned up code, added start array position
//2025-10-28 CWD Updated to reduce symbol usage
//2026-04-03 ATM Now Client makes the requests, calling this just passes data. Dynamically allocated requests
//Verify data size is large enough, if not then only get as many registers that will fit.
dataSize := DINT_TO_UINT(UPPER_BOUND(data,1) - LOWER_BOUND(data,1) + 1);
SUPER^();</Single>
<Single Name="LineInfoPersistence" Type="string">1a3278f4-a658-407c-968a-21aa53361562_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">{attribute 'no_assign'}
FUNCTION_BLOCK atMbReqReadDiscrete EXTENDS atMbReqBase
VAR_IN_OUT
// ARRAY[] OF BOOL to hold received data
{attribute 'symbol' := 'none'}
data: ARRAY[*] OF BOOL;
END_VAR
VAR_OUTPUT
END_VAR
VAR
{attribute 'symbol' := 'none'}
readDiscreteReq: POINTER TO ModbusFB.ClientRequestReadDiscreteInputs;
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">1a3278f4-a658-407c-968a-21aa53361562_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">184</Single>
<Single Name="POULevel" Type="{8e575c5b-1d37-49c6-941b-5c0ec7874787}">Standard</Single>
<List Name="ChildObjectGuids" Type="System.Collections.ArrayList" />
<Single Name="AddAttributeSubsequent" Type="bool">False</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">73b10819-9112-4811-9583-e2735d2b13ea</Single>
<Single Name="ParentGuid" Type="System.Guid">00000000-0000-0000-0000-000000000000</Single>
<Single Name="Name" Type="string">atMbReqReadHolding</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties">
<Entry>
<Key>
<Single Type="System.Guid">24568a24-c491-472c-a21f-ee5d33859fab</Single>
</Key>
<Value>
<Single Type="{24568a24-c491-472c-a21f-ee5d33859fab}" Method="IArchivable">
<Single Name="MemoryReserveForOnlineChange" Type="int">1024</Single>
<Single Name="ExcludeFromBuild" Type="bool">False</Single>
<Single Name="External" Type="bool">False</Single>
<Single Name="EnableSystemCall" Type="bool">False</Single>
<Single Name="CompilerDefines" Type="string" />
<Single Name="LinkAlways" Type="bool">False</Single>
<Array Name="Undefines" Type="string" />
</Single>
</Value>
</Entry>
<Entry>
<Key>
<Single Type="System.Guid">829a18f2-c514-4f6e-9634-1df173429203</Single>
</Key>
<Value>
<Single Type="{829a18f2-c514-4f6e-9634-1df173429203}" Method="IArchivable">
<Dictionary Type="{fa2ee218-a39b-4b6d-b249-49dbddbd168a}" Name="ParentObjects">
<Entry>
<Key>
<Single Type="System.Guid">21af5390-2942-461a-bf89-951aaf6999f1</Single>
</Key>
<Value>
<Single Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
</Value>
</Entry>
</Dictionary>
</Single>
</Value>
</Entry>
</Dictionary>
<Single Name="TypeGuid" Type="System.Guid">6f9dac99-8de1-4efc-8465-68ac443b7d08</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502147099228</Single>
</Single>
<Single Name="Object" Type="{6f9dac99-8de1-4efc-8465-68ac443b7d08}" Method="IArchivable">
<Single Name="SpecialFunc" Type="{0db3d7bb-cde0-4416-9a7b-ce49a0124323}">None</Single>
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF __ISVALIDREF(client) AND_THEN client.nativeMode THEN
out_parameterError := (UINT_TO_DINT(in_dataOffset) &lt; LOWER_BOUND(data,1)) OR
(UINT_TO_DINT(in_dataOffset) &gt; UPPER_BOUND(data,1));
IF out_parameterError THEN dataSize := 0;
ELSE dataSize := DINT_TO_UINT(UPPER_BOUND(data,1) - UINT_TO_DINT(in_dataOffset) + 1);
END_IF;
SUPER^();
RETURN;
END_IF;
//Modbus request input registers
//2024-06-27 CWD Initial Create
//2024-10-21 CWD Set udiTimeout to 0 as this was causing problems with detecting an actual no reply timeout from the slave
//2024-11-15 ATM Moved from Work to main for easier debugging
//2024-11-23 ATM Cleaned up code, added start array position
//2025-10-28 CWD Updated to reduce symbol usage
//2026-04-03 ATM Now Client makes the requests, calling this just passes data. Dynamically allocated requests
//Verify data size is large enough, if not then only get as many registers that will fit.
dataSize := DINT_TO_UINT(UPPER_BOUND(data,1) - LOWER_BOUND(data,1) + 1);
SUPER^();</Single>
<Single Name="LineInfoPersistence" Type="string">73b10819-9112-4811-9583-e2735d2b13ea_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">{attribute 'no_assign'}
FUNCTION_BLOCK atMbReqReadHolding EXTENDS atMbReqBase
VAR_IN_OUT
// ARRAY[] OF UINT to hold received data
{attribute 'symbol' := 'none'}
data: ARRAY[*] OF UINT;
END_VAR
VAR_OUTPUT
END_VAR
VAR
{attribute 'symbol' := 'none'}
readHoldReq: POINTER TO ModbusFB.ClientRequestReadHoldingRegisters;
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">73b10819-9112-4811-9583-e2735d2b13ea_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">173</Single>
<Single Name="POULevel" Type="{8e575c5b-1d37-49c6-941b-5c0ec7874787}">Standard</Single>
<List Name="ChildObjectGuids" Type="System.Collections.ArrayList" />
<Single Name="AddAttributeSubsequent" Type="bool">False</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">a5dbc9b0-a1a1-4281-a685-ec85b35bb866</Single>
<Single Name="ParentGuid" Type="System.Guid">00000000-0000-0000-0000-000000000000</Single>
<Single Name="Name" Type="string">atMbReqReadInput</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties">
<Entry>
<Key>
<Single Type="System.Guid">24568a24-c491-472c-a21f-ee5d33859fab</Single>
</Key>
<Value>
<Single Type="{24568a24-c491-472c-a21f-ee5d33859fab}" Method="IArchivable">
<Single Name="MemoryReserveForOnlineChange" Type="int">1024</Single>
<Single Name="ExcludeFromBuild" Type="bool">False</Single>
<Single Name="External" Type="bool">False</Single>
<Single Name="EnableSystemCall" Type="bool">False</Single>
<Single Name="CompilerDefines" Type="string" />
<Single Name="LinkAlways" Type="bool">False</Single>
<Array Name="Undefines" Type="string" />
</Single>
</Value>
</Entry>
<Entry>
<Key>
<Single Type="System.Guid">829a18f2-c514-4f6e-9634-1df173429203</Single>
</Key>
<Value>
<Single Type="{829a18f2-c514-4f6e-9634-1df173429203}" Method="IArchivable">
<Dictionary Type="{fa2ee218-a39b-4b6d-b249-49dbddbd168a}" Name="ParentObjects">
<Entry>
<Key>
<Single Type="System.Guid">21af5390-2942-461a-bf89-951aaf6999f1</Single>
</Key>
<Value>
<Single Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
</Value>
</Entry>
</Dictionary>
</Single>
</Value>
</Entry>
</Dictionary>
<Single Name="TypeGuid" Type="System.Guid">6f9dac99-8de1-4efc-8465-68ac443b7d08</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502147179217</Single>
</Single>
<Single Name="Object" Type="{6f9dac99-8de1-4efc-8465-68ac443b7d08}" Method="IArchivable">
<Single Name="SpecialFunc" Type="{0db3d7bb-cde0-4416-9a7b-ce49a0124323}">None</Single>
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF __ISVALIDREF(client) AND_THEN client.nativeMode THEN
out_parameterError := (UINT_TO_DINT(in_dataOffset) &lt; LOWER_BOUND(data,1)) OR
(UINT_TO_DINT(in_dataOffset) &gt; UPPER_BOUND(data,1));
IF out_parameterError THEN dataSize := 0;
ELSE dataSize := DINT_TO_UINT(UPPER_BOUND(data,1) - UINT_TO_DINT(in_dataOffset) + 1);
END_IF;
SUPER^();
RETURN;
END_IF;
//Modbus request input registers
//2024-06-27 CWD Initial Create
//2024-10-21 CWD Set udiTimeout to 0 as this was causing problems with detecting an actual no reply timeout from the slave
//2024-11-15 ATM Moved from Work to main for easier debugging
//2024-11-23 ATM Cleaned up code, added start array position
//2025-10-28 CWD Updated to reduce symbol usage
//2026-04-03 ATM Now Client makes the requests, calling this just passes data. Dynamically allocated requests
//Verify data size is large enough, if not then only get as many registers that will fit.
dataSize := DINT_TO_UINT(UPPER_BOUND(data,1) - LOWER_BOUND(data,1) + 1);
SUPER^();</Single>
<Single Name="LineInfoPersistence" Type="string">a5dbc9b0-a1a1-4281-a685-ec85b35bb866_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">{attribute 'no_assign'}
FUNCTION_BLOCK atMbReqReadInput EXTENDS atMbReqBase
VAR_IN_OUT
// ARRAY[] OF UINT to hold received data
{attribute 'symbol' := 'none'}
data: ARRAY[*] OF UINT;
END_VAR
VAR_OUTPUT
END_VAR
VAR
{attribute 'symbol' := 'none'}
readInputReq: POINTER TO ModbusFB.ClientRequestReadInputRegisters;
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">a5dbc9b0-a1a1-4281-a685-ec85b35bb866_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">167</Single>
<Single Name="POULevel" Type="{8e575c5b-1d37-49c6-941b-5c0ec7874787}">Standard</Single>
<List Name="ChildObjectGuids" Type="System.Collections.ArrayList" />
<Single Name="AddAttributeSubsequent" Type="bool">False</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">48b508fd-2131-484c-ba4a-20e61e66a5b2</Single>
<Single Name="ParentGuid" Type="System.Guid">00000000-0000-0000-0000-000000000000</Single>
<Single Name="Name" Type="string">atMbRequestStats</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties">
<Entry>
<Key>
<Single Type="System.Guid">829a18f2-c514-4f6e-9634-1df173429203</Single>
</Key>
<Value>
<Single Type="{829a18f2-c514-4f6e-9634-1df173429203}" Method="IArchivable">
<Dictionary Type="{fa2ee218-a39b-4b6d-b249-49dbddbd168a}" Name="ParentObjects">
<Entry>
<Key>
<Single Type="System.Guid">21af5390-2942-461a-bf89-951aaf6999f1</Single>
</Key>
<Value>
<Single Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
</Value>
</Entry>
</Dictionary>
</Single>
</Value>
</Entry>
</Dictionary>
<Single Name="TypeGuid" Type="System.Guid">6f9dac99-8de1-4efc-8465-68ac443b7d08</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502147425423</Single>
</Single>
<Single Name="Object" Type="{6f9dac99-8de1-4efc-8465-68ac443b7d08}" Method="IArchivable">
<Single Name="SpecialFunc" Type="{0db3d7bb-cde0-4416-9a7b-ce49a0124323}">None</Single>
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">SysTimeGetUs(TSSus);
IF (reqLength = 0) THEN
active := FALSE;
doneCnt := 0;
errorCnt := 0;
lastErrorId := modbusFB.Error.OK;
lastExceptionCode := atMBExceptionCodes.RESPONSE_SUCCESS;
execute := FALSE;
online := FALSE;
offline := FALSE;
reqDone := FALSE;
reqBusy := FALSE;
reqError := FALSE;
sinceLastExec := 0;
RETURN;
END_IF
active := TRUE;
inDoneDeb(in_raw := reqDone, in_delOn := T#0S, in_DelOff := lightOn);
reqDoneLight := inDoneDeb.out_val;
inBusyDeb(in_raw := reqBusy, in_delOn := T#0S, in_DelOff := lightOn);
reqBusyLight := inBusyDeb.out_val;
inErrDeb(in_raw := reqError, in_delOn := T#0S, in_DelOff := lightOn);
reqErrorLight := inErrDeb.out_val;
//Debounced execute indicator for debbugging
executeDeb(in_raw := _execute, in_delOn := T#0S, in_DelOff := lightOn);
executeLight := executeDeb.out_val;
//Set online status
IF nativeResponseSeen OR doneCntRst &gt;=3 THEN
online := TRUE;
offline := FALSE;
END_IF
//Set online status
IF NOT nativeResponseSeen AND errorCntRst &gt;= 3 THEN
online := FALSE;
offline := TRUE;
END_IF
//Record start time in ms on execute rising edge
executeTrig(CLK := execute);
IF executeTrig.Q THEN
interval := ULINT_TO_UDINT((TSSus - lastReqStart)/1000);
lastReqStart := TSSus;
END_IF
//Offline count
offlineTrig(CLK := NOT online);
IF offlineTrig.Q THEN
offlineCnt := offlineCnt + 1;
END_IF
//Calculate ms since last execute
//If the last request start is more then 1 minute ago then set it for 1 minute
IF TSSus &gt;= lastReqStart THEN
IF TSSus - lastReqStart &gt; 60000000 THEN lastReqStart := TSSus - 60000000; END_IF;
ELSE lastReqStart := TSSus;
END_IF;
sinceLastExec := ULINT_TO_UDINT((TSSus - lastReqStart)/1000);
</Single>
<Single Name="LineInfoPersistence" Type="string">48b508fd-2131-484c-ba4a-20e61e66a5b2_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">{attribute 'monitoring_display' := 'toString'}
{attribute 'no_assign'}
FUNCTION_BLOCK atMbRequestStats
VAR_INPUT
lastErrorId: modbusFB.Error; //Last error id
lastExceptionCode: atMBExceptionCodes; //Last modbus exception code. These are the standard modbus exceptions.
lastValidDuration: UDINT; // How long last transaction took (ms)
longestValidDuration: UDINT; //Longest valid duration (ms)
interval: UDINT; // Start-to-start interval (ms)
offlineCnt: UINT; //Count of how many times this request has gone offline
doneCnt: UDINT; // Count of successful request
errorCnt: UDINT; // Count of failed requests
doneCntRst: UDINT; // Count of succesful requests, resets on error result
errorCntRst: UDINT; // Count of failed requests, resets on succesful request
sinceLastExec: UDINT; // Time since the last start (ms)
timeoutCnt: UDINT;
reqLength: UINT; //Number of registers requested in request, used to calc active.
END_VAR
VAR_OUTPUT
executeLight: BOOL; //Execute that stays on momentarily
reqDoneLight: BOOL; //Request done that stays on momentarily
reqErrorLight: BOOL; //Request error that stays on momentarily
reqBusyLight: BOOL; //Request busy that stays on momentarily
online: BOOL; //Online means the requests are being replied to normally or with modbus exceptions. Communications are ok.
offline: BOOL; //Opposite of online, but starts out as false on program start.
active: BOOL; // This is true if its actually being used, and not having a count of 0 on the request.
executeMbFb: BOOL;
END_VAR
VAR
{attribute 'symbol' := 'none'}
inDoneDeb: atDebounce;
{attribute 'symbol' := 'none'}
inErrDeb: atDebounce;
{attribute 'symbol' := 'none'}
inBusyDeb: atDebounce;
{attribute 'symbol' := 'none'}
executeDeb: atDebounce;
toString: STRING(20);
{attribute 'symbol' := 'none'}
executeTrig: R_TRIG; //Execute trigger
{attribute 'symbol' := 'none'}
offlineTrig: R_TRIG; //Offline trigger
{attribute 'symbol' := 'none'}
lastReqStart: SYSTIME; //time of start of last request
{attribute 'symbol' := 'none'}
TSSus: SYSTIME;
_execute: BOOL; //Execute trigger and status. Turn on to trigger request. Will turn off when request is complete
_reqDone: BOOL; //Request done
_reqBusy: BOOL; //Request busy
_reqError: BOOL; //Request error
END_VAR
VAR CONSTANT
{attribute 'symbol' := 'none'}
lightOn: TIME:= T#100MS; //Light on time for debug indicators
END_VAR
VAR_INPUT
nativeResponseSeen : BOOL;
nativeLastSuccessMs : ULINT;
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">48b508fd-2131-484c-ba4a-20e61e66a5b2_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">286</Single>
<Single Name="POULevel" Type="{8e575c5b-1d37-49c6-941b-5c0ec7874787}">Standard</Single>
<List Name="ChildObjectGuids" Type="System.Collections.ArrayList" />
<Single Name="AddAttributeSubsequent" Type="bool">False</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">f6ee860b-0951-41d0-93d8-6436c681d8f1</Single>
<Single Name="ParentGuid" Type="System.Guid">00000000-0000-0000-0000-000000000000</Single>
<Single Name="Name" Type="string">atMbReqWriteCoil</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties">
<Entry>
<Key>
<Single Type="System.Guid">24568a24-c491-472c-a21f-ee5d33859fab</Single>
</Key>
<Value>
<Single Type="{24568a24-c491-472c-a21f-ee5d33859fab}" Method="IArchivable">
<Single Name="MemoryReserveForOnlineChange" Type="int">1024</Single>
<Single Name="ExcludeFromBuild" Type="bool">False</Single>
<Single Name="External" Type="bool">False</Single>
<Single Name="EnableSystemCall" Type="bool">False</Single>
<Single Name="CompilerDefines" Type="string" />
<Single Name="LinkAlways" Type="bool">False</Single>
<Array Name="Undefines" Type="string" />
</Single>
</Value>
</Entry>
<Entry>
<Key>
<Single Type="System.Guid">829a18f2-c514-4f6e-9634-1df173429203</Single>
</Key>
<Value>
<Single Type="{829a18f2-c514-4f6e-9634-1df173429203}" Method="IArchivable">
<Dictionary Type="{fa2ee218-a39b-4b6d-b249-49dbddbd168a}" Name="ParentObjects">
<Entry>
<Key>
<Single Type="System.Guid">21af5390-2942-461a-bf89-951aaf6999f1</Single>
</Key>
<Value>
<Single Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
</Value>
</Entry>
</Dictionary>
</Single>
</Value>
</Entry>
</Dictionary>
<Single Name="TypeGuid" Type="System.Guid">6f9dac99-8de1-4efc-8465-68ac443b7d08</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502147259331</Single>
</Single>
<Single Name="Object" Type="{6f9dac99-8de1-4efc-8465-68ac443b7d08}" Method="IArchivable">
<Single Name="SpecialFunc" Type="{0db3d7bb-cde0-4416-9a7b-ce49a0124323}">None</Single>
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF __ISVALIDREF(client) AND_THEN client.nativeMode THEN
out_parameterError := (UINT_TO_DINT(in_dataOffset) &lt; LOWER_BOUND(data,1)) OR
(UINT_TO_DINT(in_dataOffset) &gt; UPPER_BOUND(data,1));
IF out_parameterError THEN dataSize := 0;
ELSE dataSize := DINT_TO_UINT(UPPER_BOUND(data,1) - UINT_TO_DINT(in_dataOffset) + 1);
END_IF;
SUPER^();
RETURN;
END_IF;
//Modbus request input registers
//2024-06-27 CWD Initial Create
//2024-10-21 CWD Set udiTimeout to 0 as this was causing problems with detecting an actual no reply timeout from the slave
//2024-11-15 ATM Moved from Work to main for easier debugging
//2024-11-23 ATM Cleaned up code, added start array position
//2025-10-28 CWD Updated to reduce symbol usage
//2026-04-03 ATM Now Client makes the requests, calling this just passes data. Dynamically allocated requests
//Verify data size is large enough, if not then only get as many registers that will fit.
dataSize := DINT_TO_UINT(UPPER_BOUND(data,1) - LOWER_BOUND(data,1) + 1);
SUPER^();</Single>
<Single Name="LineInfoPersistence" Type="string">f6ee860b-0951-41d0-93d8-6436c681d8f1_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">{attribute 'no_assign'}
FUNCTION_BLOCK atMbReqWriteCoil EXTENDS atMbReqBase
VAR_IN_OUT
// ARRAY[] OF BOOL to hold received data
{attribute 'symbol' := 'none'}
data: ARRAY[*] OF BOOL;
END_VAR
VAR
{attribute 'symbol' := 'none'}
writeCoilsReq: POINTER TO ModbusFB.ClientRequestWriteMultipleCoils;
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">f6ee860b-0951-41d0-93d8-6436c681d8f1_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">206</Single>
<Single Name="POULevel" Type="{8e575c5b-1d37-49c6-941b-5c0ec7874787}">Standard</Single>
<List Name="ChildObjectGuids" Type="System.Collections.ArrayList" />
<Single Name="AddAttributeSubsequent" Type="bool">False</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">bb7e18ba-2018-4681-875e-de1f291019ef</Single>
<Single Name="ParentGuid" Type="System.Guid">00000000-0000-0000-0000-000000000000</Single>
<Single Name="Name" Type="string">atMbReqWriteHolding</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties">
<Entry>
<Key>
<Single Type="System.Guid">24568a24-c491-472c-a21f-ee5d33859fab</Single>
</Key>
<Value>
<Single Type="{24568a24-c491-472c-a21f-ee5d33859fab}" Method="IArchivable">
<Single Name="MemoryReserveForOnlineChange" Type="int">1024</Single>
<Single Name="ExcludeFromBuild" Type="bool">False</Single>
<Single Name="External" Type="bool">False</Single>
<Single Name="EnableSystemCall" Type="bool">False</Single>
<Single Name="CompilerDefines" Type="string" />
<Single Name="LinkAlways" Type="bool">False</Single>
<Array Name="Undefines" Type="string" />
</Single>
</Value>
</Entry>
<Entry>
<Key>
<Single Type="System.Guid">829a18f2-c514-4f6e-9634-1df173429203</Single>
</Key>
<Value>
<Single Type="{829a18f2-c514-4f6e-9634-1df173429203}" Method="IArchivable">
<Dictionary Type="{fa2ee218-a39b-4b6d-b249-49dbddbd168a}" Name="ParentObjects">
<Entry>
<Key>
<Single Type="System.Guid">21af5390-2942-461a-bf89-951aaf6999f1</Single>
</Key>
<Value>
<Single Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
</Value>
</Entry>
</Dictionary>
</Single>
</Value>
</Entry>
</Dictionary>
<Single Name="TypeGuid" Type="System.Guid">6f9dac99-8de1-4efc-8465-68ac443b7d08</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502147339348</Single>
</Single>
<Single Name="Object" Type="{6f9dac99-8de1-4efc-8465-68ac443b7d08}" Method="IArchivable">
<Single Name="SpecialFunc" Type="{0db3d7bb-cde0-4416-9a7b-ce49a0124323}">None</Single>
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF __ISVALIDREF(client) AND_THEN client.nativeMode THEN
out_parameterError := (UINT_TO_DINT(in_dataOffset) &lt; LOWER_BOUND(data,1)) OR
(UINT_TO_DINT(in_dataOffset) &gt; UPPER_BOUND(data,1));
IF out_parameterError THEN dataSize := 0;
ELSE dataSize := DINT_TO_UINT(UPPER_BOUND(data,1) - UINT_TO_DINT(in_dataOffset) + 1);
END_IF;
SUPER^();
RETURN;
END_IF;
//Modbus request input registers
//2024-06-27 CWD Initial Create
//2024-10-21 CWD Set udiTimeout to 0 as this was causing problems with detecting an actual no reply timeout from the slave
//2024-11-15 ATM Moved from Work to main for easier debugging
//2024-11-23 ATM Cleaned up code, added start array position
//2025-10-28 CWD Updated to reduce symbol usage
//2026-04-03 ATM Now Client makes the requests, calling this just passes data. Dynamically allocated requests
//Verify data size is large enough, if not then only get as many registers that will fit.
dataSize := DINT_TO_UINT(UPPER_BOUND(data,1) - LOWER_BOUND(data,1) + 1);
SUPER^();</Single>
<Single Name="LineInfoPersistence" Type="string">bb7e18ba-2018-4681-875e-de1f291019ef_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">{attribute 'no_assign'}
FUNCTION_BLOCK atMbReqWriteHolding EXTENDS atMbReqBase
VAR_IN_OUT
// ARRAY[] OF UINT to hold received data
{attribute 'symbol' := 'none'}
data: ARRAY[*] OF UINT;
END_VAR
VAR_OUTPUT
END_VAR
VAR
{attribute 'symbol' := 'none'}
writeHoldReq: POINTER TO ModbusFB.ClientRequestWriteMultipleRegisters;
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">bb7e18ba-2018-4681-875e-de1f291019ef_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">164</Single>
<Single Name="POULevel" Type="{8e575c5b-1d37-49c6-941b-5c0ec7874787}">Standard</Single>
<List Name="ChildObjectGuids" Type="System.Collections.ArrayList" />
<Single Name="AddAttributeSubsequent" Type="bool">False</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">9499c60e-03a2-49d0-b086-43990a018e20</Single>
<Single Name="ParentGuid" Type="System.Guid">00000000-0000-0000-0000-000000000000</Single>
<Single Name="Name" Type="string">To_IPAddress</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties">
<Entry>
<Key>
<Single Type="System.Guid">829a18f2-c514-4f6e-9634-1df173429203</Single>
</Key>
<Value>
<Single Type="{829a18f2-c514-4f6e-9634-1df173429203}" Method="IArchivable">
<Dictionary Type="{fa2ee218-a39b-4b6d-b249-49dbddbd168a}" Name="ParentObjects">
<Entry>
<Key>
<Single Type="System.Guid">21af5390-2942-461a-bf89-951aaf6999f1</Single>
</Key>
<Value>
<Single Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
</Value>
</Entry>
</Dictionary>
</Single>
</Value>
</Entry>
</Dictionary>
<Single Name="TypeGuid" Type="System.Guid">6f9dac99-8de1-4efc-8465-68ac443b7d08</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639034841590489804</Single>
</Single>
<Single Name="Object" Type="{6f9dac99-8de1-4efc-8465-68ac443b7d08}" Method="IArchivable">
<Single Name="SpecialFunc" Type="{0db3d7bb-cde0-4416-9a7b-ce49a0124323}">None</Single>
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string"> //Convert parameters to array
To_IPAddress[0] := byte1;
To_IPAddress[1] := byte2;
To_IPAddress[2] := byte3;
To_IPAddress[3] := byte4;
</Single>
<Single Name="LineInfoPersistence" Type="string">9499c60e-03a2-49d0-b086-43990a018e20_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">FUNCTION To_IPAddress : ARRAY[0..3] OF BYTE
VAR_INPUT
byte1: BYTE;
byte2: BYTE;
byte3: BYTE;
byte4: BYTE;
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">9499c60e-03a2-49d0-b086-43990a018e20_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">168</Single>
<Single Name="POULevel" Type="{8e575c5b-1d37-49c6-941b-5c0ec7874787}">Standard</Single>
<List Name="ChildObjectGuids" Type="System.Collections.ArrayList" />
<Single Name="AddAttributeSubsequent" Type="bool">False</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">8fc52b24-7436-4d4a-8b03-aa43d42302d0</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">9e99e368-853f-485b-911f-d9a2a4e46434</Single>
<Single Name="ParentGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Single Name="Name" Type="string">addRequest</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502146468437</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF request = 0 THEN RETURN; END_IF;
IF requestCnt &gt; 0 THEN
FOR i := 0 TO UINT_TO_DINT(requestCnt)-1 DO
IF request = requests[i] THEN RETURN; END_IF;
END_FOR;
END_IF;
IF requestCnt &gt;= 100 THEN
out_registrationFull := TRUE;
RETURN;
END_IF;
requests[requestCnt] := request;
requestCnt := requestCnt + 1;</Single>
<Single Name="LineInfoPersistence" Type="string">9e99e368-853f-485b-911f-d9a2a4e46434_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">//Adds the specified request to the global list
METHOD PUBLIC addRequest
VAR_INPUT
request: POINTER TO atMbReqBase;
END_VAR
VAR
i: UINT := 0;
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">9e99e368-853f-485b-911f-d9a2a4e46434_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClient</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">685f7c69-c46a-4b34-b5e2-fb848c593f3e</Single>
<Single Name="ParentGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Single Name="Name" Type="string">processAllRequests</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148036583</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF requestCnt = 0 OR requestCnt &gt; 100 THEN RETURN; END_IF;
FOR i := 0 TO UINT_TO_DINT(requestCnt)-1 DO
IF requests[i] &lt;&gt; 0 THEN
requests[i]^.processRequest();
END_IF;
END_FOR;</Single>
<Single Name="LineInfoPersistence" Type="string">685f7c69-c46a-4b34-b5e2-fb848c593f3e_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD processAllRequests
VAR_INPUT
END_VAR
VAR
i: DINT; // Loop bstisnlr
END_VAR</Single>
<Single Name="LineInfoPersistence" Type="string">685f7c69-c46a-4b34-b5e2-fb848c593f3e_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClient</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">39769d9e-08c1-472d-82ef-25c66891a065</Single>
<Single Name="ParentGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Single Name="Name" Type="string">recreateAllRequests</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148056585</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF requestCnt = 0 OR requestCnt &gt; 100 THEN RETURN; END_IF;
FOR i := 0 TO UINT_TO_DINT(requestCnt)-1 DO
IF requests[i] &lt;&gt; 0 THEN
requests[i]^.recreateRequest();
END_IF;
END_FOR;</Single>
<Single Name="LineInfoPersistence" Type="string">39769d9e-08c1-472d-82ef-25c66891a065_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD PROTECTED recreateAllRequests
VAR_INPUT
END_VAR
VAR
i : DINT;
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">39769d9e-08c1-472d-82ef-25c66891a065_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClient</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">60fd3bf3-849f-4af3-a1a5-18a73fd7b7fc</Single>
<Single Name="ParentGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Single Name="Name" Type="string">recreateClient</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639207574648119824</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string" />
<Single Name="LineInfoPersistence" Type="string">60fd3bf3-849f-4af3-a1a5-18a73fd7b7fc_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD ABSTRACT recreateClient
VAR_INPUT
END_VAR</Single>
<Single Name="LineInfoPersistence" Type="string">60fd3bf3-849f-4af3-a1a5-18a73fd7b7fc_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClient</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">a7e27967-573f-4f9f-86e7-dd569b8cd943</Single>
<Single Name="ParentGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Single Name="Name" Type="string">resetStats</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148096636</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF nativeMode THEN
nativeSent := 0; nativeReplied := 0;
nativeWindowCount := 0; nativeWindowTime := 0;
msgLastSecondCnt := 0; msgLastSecondTime := 0;
numMsgSent := 0; numMsgReply := 0;
FOR i := 0 TO UINT_TO_DINT(requestCnt)-1 DO
requests[i]^.stats.resetStats();
END_FOR;
RETURN;
END_IF;
connectCnt := 0;
val := ADR(client.udiNumMsgSent);
val^ := 0;
val := ADR(client.udiNumMsgReply);
val^ := 0;
FOR i := 0 TO UINT_TO_DINT(requestCnt)-1 DO
requests[i]^.stats.resetStats();
END_FOR;</Single>
<Single Name="LineInfoPersistence" Type="string">a7e27967-573f-4f9f-86e7-dd569b8cd943_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD resetStats
VAR_INPUT
END_VAR
VAR
i: DINT;
val: POINTER TO UDINT;
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">a7e27967-573f-4f9f-86e7-dd569b8cd943_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClient</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">ca1dfc70-ad93-43de-886d-39e56897aa6d</Single>
<Single Name="ParentGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Single Name="Name" Type="string">setAllRequestsOffline</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148106585</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF requestCnt = 0 OR requestCnt &gt; 100 THEN RETURN; END_IF;
FOR i := 0 TO UINT_TO_DINT(requestCnt)-1 DO
IF requests[i] &lt;&gt; 0 THEN
requests[i]^.stats.setClientOffline();
END_IF;
END_FOR;</Single>
<Single Name="LineInfoPersistence" Type="string">ca1dfc70-ad93-43de-886d-39e56897aa6d_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD PROTECTED setAllRequestsOffline : BOOL
VAR_INPUT
END_VAR
VAR
i: DINT;
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">ca1dfc70-ad93-43de-886d-39e56897aa6d_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClient</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">d12c9bf2-320f-4e95-badb-68a2357c5783</Single>
<Single Name="ParentGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Single Name="Name" Type="string">setupClient</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639207574648239962</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF nativeMode THEN
setupClient := nativeHandle &lt;&gt; 0;
RETURN;
END_IF;
// Only create request if doesnt exist
IF NOT __ISVALIDREF(client) THEN
recreateClient();
IF NOT __ISVALIDREF(client) THEN
atGVL.dynamicAllocationFail.in_raw := TRUE;
setupClient := FALSE;
RETURN;
END_IF
END_IF
setupClient := TRUE;</Single>
<Single Name="LineInfoPersistence" Type="string">d12c9bf2-320f-4e95-badb-68a2357c5783_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD setupClient : BOOL
VAR_INPUT
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">d12c9bf2-320f-4e95-badb-68a2357c5783_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClient</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">5cc2fe1e-bdb2-429a-84e1-63e783ea3b32</Single>
<Single Name="ParentGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Single Name="Name" Type="string">activeIndex</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">5a3b8626-d3e9-4f37-98b5-66420063d91e</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
</Array>
<Single Name="Timestamp" Type="long">639034841590625089</Single>
</Single>
<Single Name="Object" Type="{5a3b8626-d3e9-4f37-98b5-66420063d91e}" Method="IArchivable">
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">PROPERTY activeIndex : DINT</Single>
<Single Name="LineInfoPersistence" Type="string">5cc2fe1e-bdb2-429a-84e1-63e783ea3b32_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">1</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClient</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">456b4953-57c9-4f76-ab5b-0db456dd9b58</Single>
<Single Name="ParentGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Single Name="Name" Type="string">activeReqCnt</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">5a3b8626-d3e9-4f37-98b5-66420063d91e</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502146293051</Single>
</Single>
<Single Name="Object" Type="{5a3b8626-d3e9-4f37-98b5-66420063d91e}" Method="IArchivable">
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">PROPERTY PRIVATE activeReqCnt : UINT</Single>
<Single Name="LineInfoPersistence" Type="string">456b4953-57c9-4f76-ab5b-0db456dd9b58_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">1</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClient</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">4d9d378a-f256-4f23-b835-539ee9e287c3</Single>
<Single Name="ParentGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Single Name="Name" Type="string">allRequestsComplete</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">5a3b8626-d3e9-4f37-98b5-66420063d91e</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502147921016</Single>
</Single>
<Single Name="Object" Type="{5a3b8626-d3e9-4f37-98b5-66420063d91e}" Method="IArchivable">
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">{attribute 'symbol' := 'none'}
PROPERTY PRIVATE allRequestsComplete : BOOL</Single>
<Single Name="LineInfoPersistence" Type="string">4d9d378a-f256-4f23-b835-539ee9e287c3_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">2</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClient</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">89742962-f9b6-46c2-b9a5-b7e298f8495d</Single>
<Single Name="ParentGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Single Name="Name" Type="string">onlineCnt</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">5a3b8626-d3e9-4f37-98b5-66420063d91e</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
</Array>
<Single Name="Timestamp" Type="long">639034841590755417</Single>
</Single>
<Single Name="Object" Type="{5a3b8626-d3e9-4f37-98b5-66420063d91e}" Method="IArchivable">
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">{attribute 'symbol' := 'none'}
PROPERTY onlineCnt : DINT//Count of requests that are online</Single>
<Single Name="LineInfoPersistence" Type="string">89742962-f9b6-46c2-b9a5-b7e298f8495d_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">3</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClient</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">27292866-0bc0-4848-a965-64c51a0bf960</Single>
<Single Name="ParentGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Single Name="Name" Type="string">requestExecuting</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">5a3b8626-d3e9-4f37-98b5-66420063d91e</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
</Array>
<Single Name="Timestamp" Type="long">639034841590845466</Single>
</Single>
<Single Name="Object" Type="{5a3b8626-d3e9-4f37-98b5-66420063d91e}" Method="IArchivable">
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">{attribute 'symbol' := 'none'}
PROPERTY PRIVATE requestExecuting : BOOL //There is at least one request executing</Single>
<Single Name="LineInfoPersistence" Type="string">27292866-0bc0-4848-a965-64c51a0bf960_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">3</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClient</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">4950a3a1-f54f-434d-9252-b61a6cb4663d</Single>
<Single Name="ParentGuid" Type="System.Guid">17c2ab7a-4d60-48ec-966f-339ec83a75e9</Single>
<Single Name="Name" Type="string">recreateClient</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639207574649617058</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">old_client_id := _client;
_client := __NEW(ModbusFB.ClientSerial);
IF _client = 0 THEN
atGVL.dynamicAllocationFail.in_raw := TRUE;
END_IF;
client REF= _client^;
connect := FALSE;
IF old_client_id &lt;&gt; 0 THEN
__DELETE(old_client_id);
old_client_id := 0;
END_IF
recreateAllRequests();</Single>
<Single Name="LineInfoPersistence" Type="string">4950a3a1-f54f-434d-9252-b61a6cb4663d_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD recreateClient
VAR_INPUT
old_client_id: POINTER TO ModbusFB.ClientSerial;
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">4950a3a1-f54f-434d-9252-b61a6cb4663d_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">17c2ab7a-4d60-48ec-966f-339ec83a75e9</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClientRTU</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">e8c6c80b-7bdb-4108-987e-4af107de4377</Single>
<Single Name="ParentGuid" Type="System.Guid">17c2ab7a-4d60-48ec-966f-339ec83a75e9</Single>
<Single Name="Name" Type="string">toString</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">5a3b8626-d3e9-4f37-98b5-66420063d91e</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
</Array>
<Single Name="Timestamp" Type="long">639207574650142720</Single>
</Single>
<Single Name="Object" Type="{5a3b8626-d3e9-4f37-98b5-66420063d91e}" Method="IArchivable">
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">{attribute 'symbol' := 'none'}
PROPERTY toString : atMbClientToString //Client request status noneOk = no requests working, someOk = some requests are working some are failing, allOk = all requests are working </Single>
<Single Name="LineInfoPersistence" Type="string">e8c6c80b-7bdb-4108-987e-4af107de4377_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">3</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">17c2ab7a-4d60-48ec-966f-339ec83a75e9</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClientRTU</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">79dfe91d-6dbc-46b0-866c-4b880e44e02b</Single>
<Single Name="ParentGuid" Type="System.Guid">269ad87c-8ffe-4a28-9e12-2f2da3f7c570</Single>
<Single Name="Name" Type="string">recreateClient</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639207574649757233</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">nativeRelease();
// Next scan creates a fresh native context with current endpoint settings.</Single>
<Single Name="LineInfoPersistence" Type="string">79dfe91d-6dbc-46b0-866c-4b880e44e02b_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD recreateClient
VAR
END_VAR</Single>
<Single Name="LineInfoPersistence" Type="string">79dfe91d-6dbc-46b0-866c-4b880e44e02b_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">269ad87c-8ffe-4a28-9e12-2f2da3f7c570</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClientTCP</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">a77f3143-e2cf-48a4-bafd-a0c18a11faeb</Single>
<Single Name="ParentGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Single Name="Name" Type="string">busy</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148176670</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">stats.reqBusy := in;
IF NOT in THEN
RETURN;
END_IF;</Single>
<Single Name="LineInfoPersistence" Type="string">a77f3143-e2cf-48a4-bafd-a0c18a11faeb_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD busy : BOOL
VAR_INPUT
in: BOOL;
END_VAR
VAR
executeTime: ULINT;
replyTimeoutTime: ULINT;
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">a77f3143-e2cf-48a4-bafd-a0c18a11faeb_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqBase</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">5350a8fa-8297-42db-b185-fcb966e45684</Single>
<Single Name="ParentGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Single Name="Name" Type="string">completeRequest</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148196661</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">done(request.xDone);
err(in := request.xError, errorId := request.eErrorId, exceptionCode := request.eException);
busy(in := request.xBusy);
stats();
IF (atGVL.reset) THEN
// request.AbortModel();
request.ResetModel(TRUE);
END_IF</Single>
<Single Name="LineInfoPersistence" Type="string">5350a8fa-8297-42db-b185-fcb966e45684_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD completeRequest
VAR_INPUT
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">5350a8fa-8297-42db-b185-fcb966e45684_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqBase</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">3bfc4f72-6ee6-4e83-9bf3-99339b388eac</Single>
<Single Name="ParentGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Single Name="Name" Type="string">done</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148206667</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">stats.reqDone := in;
IF NOT in THEN
RETURN;
END_IF
//Set priority for next request
in_priorityCurrent := in_prioritySetpoint;</Single>
<Single Name="LineInfoPersistence" Type="string">3bfc4f72-6ee6-4e83-9bf3-99339b388eac_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD done
VAR_INPUT
// Done state
in: BOOL;
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">3bfc4f72-6ee6-4e83-9bf3-99339b388eac_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqBase</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">d7c69d5d-5192-4bf1-96fc-9ef0da66a62c</Single>
<Single Name="ParentGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Single Name="Name" Type="string">err</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148226656</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">stats.reqError := in;
IF NOT in THEN
RETURN;
END_IF
//Update error info
stats.lastErrorId := errorId;
stats.lastExceptionCode := ANY_TO_BYTE(exceptionCode);
//Since we are here there was an exception. If the modbus response is 0, that means no modbus communication happened, so we are offline. If we would have had a succesful communication we would have got a actual modbus error.
//IF stats.lastExceptionCode = atMBExceptionCodes.RESPONSE_SUCCESS THEN
//Since there was no response from the device set the priority to higher number priority
// in_priorityCurrent := in_prioritySetPoint * 5;
//END_IF
//Set priority for next request, priority gets higher after each error result
priorityMultiplier := UDINT_TO_INT(stats.errorCntRst);
IF priorityMultiplier &gt; 3 THEN
priorityMultiplier := 3;
END_IF
// set multiplier to exponential retry.
in_priorityCurrent := 10 * priorityMultiplier * priorityMultiplier;
//in_priorityCurrent := in_prioritySetpoint * priorityMultiplier;
// NO idea what Reset Model does, hoping it fixes comms issues
// request.ResetModel(TRUE); // I dont think this helped</Single>
<Single Name="LineInfoPersistence" Type="string">d7c69d5d-5192-4bf1-96fc-9ef0da66a62c_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD err
VAR_INPUT
// Error state
in: BOOL;
errorId: modbusFB.Error; //modbusFB error ID
exceptionCode: modbusFB.ExceptionCodes; //ModbusFB exception code
END_VAR
VAR
priorityMultiplier: INT; //Raise priority when not response
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">d7c69d5d-5192-4bf1-96fc-9ef0da66a62c_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqBase</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">109d8e00-bf23-4306-a8d5-764aa6a03235</Single>
<Single Name="ParentGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Single Name="Name" Type="string">processRequest</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148246723</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string" />
<Single Name="LineInfoPersistence" Type="string">109d8e00-bf23-4306-a8d5-764aa6a03235_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD ABSTRACT processRequest
VAR_INPUT
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">109d8e00-bf23-4306-a8d5-764aa6a03235_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqBase</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">f64e9d26-0b0d-4e83-b6b3-1cfb43d906f8</Single>
<Single Name="ParentGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Single Name="Name" Type="string">recreateRequest</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148266663</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string" />
<Single Name="LineInfoPersistence" Type="string">f64e9d26-0b0d-4e83-b6b3-1cfb43d906f8_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD ABSTRACT recreateRequest : POINTER TO ModbusFB.ClientRequest
VAR_INPUT
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">f64e9d26-0b0d-4e83-b6b3-1cfb43d906f8_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqBase</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">db40c392-b461-4198-851d-85857ed98ccf</Single>
<Single Name="ParentGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Single Name="Name" Type="string">setupClient</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148276644</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF __ISVALIDREF(client) AND_THEN client.nativeMode THEN
setupClient := FALSE; // Native path has no ModbusFB request object.
RETURN;
END_IF;
// Only create request if doesnt exist
IF in_request = 0 THEN
in_request := recreateRequest();
IF in_request = 0 THEN
atGVL.dynamicAllocationFail.in_raw := TRUE;
setupClient := FALSE;
RETURN;
END_IF
END_IF
IF NOT __ISVALIDREF(mbsClient) THEN
setupClient := FALSE;
RETURN;
END_IF
request REF= in_request^;
setupClient := TRUE;
RETURN;</Single>
<Single Name="LineInfoPersistence" Type="string">db40c392-b461-4198-851d-85857ed98ccf_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD setupClient : BOOL
VAR_INPUT
in_request: POINTER TO ModbusFB.ClientRequest;
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">db40c392-b461-4198-851d-85857ed98ccf_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqBase</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">6159c037-e399-466d-8108-0c4f6570f9b2</Single>
<Single Name="ParentGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Single Name="Name" Type="string">mbsClient</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">5a3b8626-d3e9-4f37-98b5-66420063d91e</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
</Array>
<Single Name="Timestamp" Type="long">639207574650298004</Single>
</Single>
<Single Name="Object" Type="{5a3b8626-d3e9-4f37-98b5-66420063d91e}" Method="IArchivable">
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">PROPERTY PROTECTED mbsClient : REFERENCE TO ModbusFB.Client</Single>
<Single Name="LineInfoPersistence" Type="string">6159c037-e399-466d-8108-0c4f6570f9b2_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">1</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqBase</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">4f361885-f95c-4244-84d6-8c3b6b9b8a18</Single>
<Single Name="ParentGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Single Name="Name" Type="string">replyTimeout</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">5a3b8626-d3e9-4f37-98b5-66420063d91e</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
</Array>
<Single Name="Timestamp" Type="long">639034841591196333</Single>
</Single>
<Single Name="Object" Type="{5a3b8626-d3e9-4f37-98b5-66420063d91e}" Method="IArchivable">
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">//Calculates the reply timout setting
PROPERTY PROTECTED replyTimeout : UDINT</Single>
<Single Name="LineInfoPersistence" Type="string">4f361885-f95c-4244-84d6-8c3b6b9b8a18_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">2</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqBase</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">ea5277e9-2ae8-417f-a88d-b571902c7d71</Single>
<Single Name="ParentGuid" Type="System.Guid">a77a90fd-541d-4ce9-ad97-7024224bbab4</Single>
<Single Name="Name" Type="string">processRequest</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639163341699321592</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF __ISVALIDREF(client) AND_THEN client.nativeMode THEN
nativeCopyAllowed := (UINT_TO_DINT(nativeOffset) &gt;= LOWER_BOUND(data,1)) AND
(UINT_TO_DINT(nativeOffset) + UINT_TO_DINT(nativeCount) - 1 &lt;= UPPER_BOUND(data,1));
nativeProcess(1);
IF nativeReadComplete AND nativeCopyAllowed THEN
FOR nativeLoop := 0 TO UINT_TO_DINT(nativeCount)-1 DO
data[UINT_TO_DINT(nativeOffset)+nativeLoop] := client.nativeIO[nativeLoop] &lt;&gt; 0;
END_FOR;
END_IF;
RETURN;
END_IF;
IF NOT setupClient(readCoilReq) THEN
RETURN;
END_IF
//Do request processing
readCoilReq^(
rClient := mbsClient,
xExecute := stats.execute,
udiTimeOut := 0,
uiUnitId := in_unitId,
udiReplyTimeout := replyTimeout,
uiStartItem := in_startAddr,
uiQuantity := stats.reqLength,
pData := ADR(data[in_dataOffset])
);
completeRequest();</Single>
<Single Name="LineInfoPersistence" Type="string">ea5277e9-2ae8-417f-a88d-b571902c7d71_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD processRequest
</Single>
<Single Name="LineInfoPersistence" Type="string">ea5277e9-2ae8-417f-a88d-b571902c7d71_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">a77a90fd-541d-4ce9-ad97-7024224bbab4</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqReadCoil</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">2c4e80c5-f4e7-4d01-97ec-5317c7e780b3</Single>
<Single Name="ParentGuid" Type="System.Guid">a77a90fd-541d-4ce9-ad97-7024224bbab4</Single>
<Single Name="Name" Type="string">recreateRequest</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148331930</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF __ISVALIDREF(client) AND_THEN client.nativeMode THEN
IF client.nativeActiveRequest = THIS THEN client.recreateClient(); END_IF;
nativeInFlight := FALSE;
recreateRequest := 0;
RETURN;
END_IF;
IF readCoilReq &lt;&gt; 0 THEN
__DELETE(readCoilReq);
readCoilReq := 0;
END_IF
readCoilReq := __NEW(ModbusFB.ClientRequestReadCoils);
recreateRequest := readCoilReq;</Single>
<Single Name="LineInfoPersistence" Type="string">2c4e80c5-f4e7-4d01-97ec-5317c7e780b3_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD recreateRequest : POINTER TO ModbusFB.ClientRequest
VAR_INPUT
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">2c4e80c5-f4e7-4d01-97ec-5317c7e780b3_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">a77a90fd-541d-4ce9-ad97-7024224bbab4</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqReadCoil</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">9df094f9-a173-4520-816f-7badcbb1bd34</Single>
<Single Name="ParentGuid" Type="System.Guid">1a3278f4-a658-407c-968a-21aa53361562</Single>
<Single Name="Name" Type="string">processRequest</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639163341699461941</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF __ISVALIDREF(client) AND_THEN client.nativeMode THEN
nativeCopyAllowed := (UINT_TO_DINT(nativeOffset) &gt;= LOWER_BOUND(data,1)) AND
(UINT_TO_DINT(nativeOffset) + UINT_TO_DINT(nativeCount) - 1 &lt;= UPPER_BOUND(data,1));
nativeProcess(2);
IF nativeReadComplete AND nativeCopyAllowed THEN
FOR nativeLoop := 0 TO UINT_TO_DINT(nativeCount)-1 DO
data[UINT_TO_DINT(nativeOffset)+nativeLoop] := client.nativeIO[nativeLoop] &lt;&gt; 0;
END_FOR;
END_IF;
RETURN;
END_IF;
IF NOT setupClient(readDiscreteReq) THEN
RETURN;
END_IF
//Do request processing
readDiscreteReq^(
rClient := mbsClient,
xExecute := stats.execute,
udiTimeOut := 0,
uiUnitId := in_unitId,
udiReplyTimeout := replyTimeout,
uiStartItem := in_startAddr,
uiQuantity := stats.reqLength,
pData := ADR(data[in_dataOffset])
);
completeRequest();</Single>
<Single Name="LineInfoPersistence" Type="string">9df094f9-a173-4520-816f-7badcbb1bd34_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD processRequest
</Single>
<Single Name="LineInfoPersistence" Type="string">9df094f9-a173-4520-816f-7badcbb1bd34_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">1a3278f4-a658-407c-968a-21aa53361562</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqReadDiscrete</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">d34866d4-1134-4650-b3d6-2e19d2fd09d1</Single>
<Single Name="ParentGuid" Type="System.Guid">1a3278f4-a658-407c-968a-21aa53361562</Single>
<Single Name="Name" Type="string">recreateRequest</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148362063</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF __ISVALIDREF(client) AND_THEN client.nativeMode THEN
IF client.nativeActiveRequest = THIS THEN client.recreateClient(); END_IF;
nativeInFlight := FALSE;
recreateRequest := 0;
RETURN;
END_IF;
IF readDiscreteReq &lt;&gt; 0 THEN
__DELETE(readDiscreteReq);
readDiscreteReq := 0;
END_IF
readDiscreteReq := __NEW(ModbusFB.ClientRequestReadDiscreteInputs);
recreateRequest := readDiscreteReq;</Single>
<Single Name="LineInfoPersistence" Type="string">d34866d4-1134-4650-b3d6-2e19d2fd09d1_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD recreateRequest : POINTER TO ModbusFB.ClientRequest
VAR_INPUT
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">d34866d4-1134-4650-b3d6-2e19d2fd09d1_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">1a3278f4-a658-407c-968a-21aa53361562</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqReadDiscrete</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">7b978176-d206-4509-b9d8-7908d33a9a74</Single>
<Single Name="ParentGuid" Type="System.Guid">73b10819-9112-4811-9583-e2735d2b13ea</Single>
<Single Name="Name" Type="string">processRequest</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148402056</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF __ISVALIDREF(client) AND_THEN client.nativeMode THEN
nativeCopyAllowed := (UINT_TO_DINT(nativeOffset) &gt;= LOWER_BOUND(data,1)) AND
(UINT_TO_DINT(nativeOffset) + UINT_TO_DINT(nativeCount) - 1 &lt;= UPPER_BOUND(data,1));
nativeProcess(3);
IF nativeReadComplete AND nativeCopyAllowed THEN
FOR nativeLoop := 0 TO UINT_TO_DINT(nativeCount)-1 DO
data[UINT_TO_DINT(nativeOffset)+nativeLoop] := WORD_TO_UINT(client.nativeIO[nativeLoop]);
END_FOR;
END_IF;
RETURN;
END_IF;
IF NOT setupClient(readHoldReq) THEN
RETURN;
END_IF
//Do request processing
readHoldReq^(
rClient := mbsClient,
xExecute := stats.execute,
udiTimeOut := 0,
uiUnitId := in_unitId,
// udiReplyTimeout := 1 * 1000 * 1000,
udiReplyTimeout := replyTimeout,
uiStartItem := in_startAddr,
uiQuantity := stats.reqLength,
pData := ADR(data[in_dataOffset])
);
completeRequest();</Single>
<Single Name="LineInfoPersistence" Type="string">7b978176-d206-4509-b9d8-7908d33a9a74_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD processRequest
</Single>
<Single Name="LineInfoPersistence" Type="string">7b978176-d206-4509-b9d8-7908d33a9a74_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">73b10819-9112-4811-9583-e2735d2b13ea</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqReadHolding</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">52ffdba7-bf4a-4746-924c-8b86df6d9a83</Single>
<Single Name="ParentGuid" Type="System.Guid">73b10819-9112-4811-9583-e2735d2b13ea</Single>
<Single Name="Name" Type="string">recreateRequest</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148422060</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF __ISVALIDREF(client) AND_THEN client.nativeMode THEN
IF client.nativeActiveRequest = THIS THEN client.recreateClient(); END_IF;
nativeInFlight := FALSE;
recreateRequest := 0;
RETURN;
END_IF;
IF readHoldReq &lt;&gt; 0 THEN
__DELETE(readHoldReq);
readHoldReq := 0;
END_IF
readHoldReq := __NEW(ModbusFB.ClientRequestReadHoldingRegisters);
recreateRequest := readHoldReq;</Single>
<Single Name="LineInfoPersistence" Type="string">52ffdba7-bf4a-4746-924c-8b86df6d9a83_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD recreateRequest : POINTER TO ModbusFB.ClientRequest
VAR_INPUT
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">52ffdba7-bf4a-4746-924c-8b86df6d9a83_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">73b10819-9112-4811-9583-e2735d2b13ea</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqReadHolding</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">1004c837-fbef-45ee-986d-977343f4bd8f</Single>
<Single Name="ParentGuid" Type="System.Guid">a5dbc9b0-a1a1-4281-a685-ec85b35bb866</Single>
<Single Name="Name" Type="string">processRequest</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148442038</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF __ISVALIDREF(client) AND_THEN client.nativeMode THEN
nativeCopyAllowed := (UINT_TO_DINT(nativeOffset) &gt;= LOWER_BOUND(data,1)) AND
(UINT_TO_DINT(nativeOffset) + UINT_TO_DINT(nativeCount) - 1 &lt;= UPPER_BOUND(data,1));
nativeProcess(4);
IF nativeReadComplete AND nativeCopyAllowed THEN
FOR nativeLoop := 0 TO UINT_TO_DINT(nativeCount)-1 DO
data[UINT_TO_DINT(nativeOffset)+nativeLoop] := WORD_TO_UINT(client.nativeIO[nativeLoop]);
END_FOR;
END_IF;
RETURN;
END_IF;
IF NOT setupClient(readInputReq) THEN
RETURN;
END_IF
//Do request processing
readInputReq^(
rClient := mbsClient,
xExecute := stats.execute,
udiTimeOut := 0,
uiUnitId := in_unitId,
udiReplyTimeout := replyTimeout,
uiStartItem := in_startAddr,
uiQuantity := stats.reqLength,
pData := ADR(data[in_dataOffset])
);
completeRequest();</Single>
<Single Name="LineInfoPersistence" Type="string">1004c837-fbef-45ee-986d-977343f4bd8f_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD processRequest
</Single>
<Single Name="LineInfoPersistence" Type="string">1004c837-fbef-45ee-986d-977343f4bd8f_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">a5dbc9b0-a1a1-4281-a685-ec85b35bb866</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqReadInput</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">9903b949-e1b9-4e0b-a98f-b6f745ad3605</Single>
<Single Name="ParentGuid" Type="System.Guid">a5dbc9b0-a1a1-4281-a685-ec85b35bb866</Single>
<Single Name="Name" Type="string">recreateRequest</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148462074</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF __ISVALIDREF(client) AND_THEN client.nativeMode THEN
IF client.nativeActiveRequest = THIS THEN client.recreateClient(); END_IF;
nativeInFlight := FALSE;
recreateRequest := 0;
RETURN;
END_IF;
IF readInputReq &lt;&gt; 0 THEN
__DELETE(readInputReq);
readInputReq := 0;
END_IF
readInputReq := __NEW(ModbusFB.ClientRequestReadInputRegisters);
recreateRequest := readInputReq;</Single>
<Single Name="LineInfoPersistence" Type="string">9903b949-e1b9-4e0b-a98f-b6f745ad3605_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD recreateRequest : POINTER TO ModbusFB.ClientRequest
VAR_INPUT
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">9903b949-e1b9-4e0b-a98f-b6f745ad3605_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">a5dbc9b0-a1a1-4281-a685-ec85b35bb866</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqReadInput</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">94cb9a26-304d-46fc-a18d-a8ce0f1931ec</Single>
<Single Name="ParentGuid" Type="System.Guid">48b508fd-2131-484c-ba4a-20e61e66a5b2</Single>
<Single Name="Name" Type="string">resetStats</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148542250</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">doneCnt := 0;
doneCntRst := 0;
errorCnt := 0;
errorCntRst := 0;</Single>
<Single Name="LineInfoPersistence" Type="string">94cb9a26-304d-46fc-a18d-a8ce0f1931ec_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD resetStats
VAR_INPUT
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">94cb9a26-304d-46fc-a18d-a8ce0f1931ec_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">48b508fd-2131-484c-ba4a-20e61e66a5b2</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbRequestStats</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">b1508d1f-b7a7-40b5-b74f-3091afc5b834</Single>
<Single Name="ParentGuid" Type="System.Guid">48b508fd-2131-484c-ba4a-20e61e66a5b2</Single>
<Single Name="Name" Type="string">setClientOffline</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148552305</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">nativeResponseSeen := FALSE;
doneCntRst := 0;
online := FALSE;
offline := TRUE;</Single>
<Single Name="LineInfoPersistence" Type="string">b1508d1f-b7a7-40b5-b74f-3091afc5b834_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD setClientOffline : BOOL
VAR_INPUT
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">b1508d1f-b7a7-40b5-b74f-3091afc5b834_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">48b508fd-2131-484c-ba4a-20e61e66a5b2</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbRequestStats</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">1c6ab99e-dc71-45a2-a024-45cf65b9af99</Single>
<Single Name="ParentGuid" Type="System.Guid">48b508fd-2131-484c-ba4a-20e61e66a5b2</Single>
<Single Name="Name" Type="string">setToString</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148572279</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">toString := CONCAT('OK:', CONCAT(TO_STRING(doneCnt), CONCAT('/Er:', TO_STRING(errorCnt))));</Single>
<Single Name="LineInfoPersistence" Type="string">1c6ab99e-dc71-45a2-a024-45cf65b9af99_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD PRIVATE setToString : BOOL
VAR_INPUT
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">1c6ab99e-dc71-45a2-a024-45cf65b9af99_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">48b508fd-2131-484c-ba4a-20e61e66a5b2</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbRequestStats</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">89434b6a-7e3b-4095-9220-0a6fc3789a25</Single>
<Single Name="ParentGuid" Type="System.Guid">48b508fd-2131-484c-ba4a-20e61e66a5b2</Single>
<Single Name="Name" Type="string">execute</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">5a3b8626-d3e9-4f37-98b5-66420063d91e</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
</Array>
<Single Name="Timestamp" Type="long">639085160043399503</Single>
</Single>
<Single Name="Object" Type="{5a3b8626-d3e9-4f37-98b5-66420063d91e}" Method="IArchivable">
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">PROPERTY execute : BOOL</Single>
<Single Name="LineInfoPersistence" Type="string">89434b6a-7e3b-4095-9220-0a6fc3789a25_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">1</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">48b508fd-2131-484c-ba4a-20e61e66a5b2</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbRequestStats</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">13e3ae42-bdd9-49ee-b8c0-74b8339469cb</Single>
<Single Name="ParentGuid" Type="System.Guid">48b508fd-2131-484c-ba4a-20e61e66a5b2</Single>
<Single Name="Name" Type="string">reqBusy</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">5a3b8626-d3e9-4f37-98b5-66420063d91e</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
</Array>
<Single Name="Timestamp" Type="long">639085160043449644</Single>
</Single>
<Single Name="Object" Type="{5a3b8626-d3e9-4f37-98b5-66420063d91e}" Method="IArchivable">
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">PROPERTY reqBusy : BOOL</Single>
<Single Name="LineInfoPersistence" Type="string">13e3ae42-bdd9-49ee-b8c0-74b8339469cb_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">1</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">48b508fd-2131-484c-ba4a-20e61e66a5b2</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbRequestStats</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">80965ce1-9b6a-44d3-b272-a5c739ccbc70</Single>
<Single Name="ParentGuid" Type="System.Guid">48b508fd-2131-484c-ba4a-20e61e66a5b2</Single>
<Single Name="Name" Type="string">reqDone</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">5a3b8626-d3e9-4f37-98b5-66420063d91e</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
</Array>
<Single Name="Timestamp" Type="long">639085160043519638</Single>
</Single>
<Single Name="Object" Type="{5a3b8626-d3e9-4f37-98b5-66420063d91e}" Method="IArchivable">
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">PROPERTY reqDone : BOOL</Single>
<Single Name="LineInfoPersistence" Type="string">80965ce1-9b6a-44d3-b272-a5c739ccbc70_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">1</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">48b508fd-2131-484c-ba4a-20e61e66a5b2</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbRequestStats</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">30645d91-91c6-42eb-8399-c20f91ca0d3e</Single>
<Single Name="ParentGuid" Type="System.Guid">48b508fd-2131-484c-ba4a-20e61e66a5b2</Single>
<Single Name="Name" Type="string">reqError</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">5a3b8626-d3e9-4f37-98b5-66420063d91e</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
</Array>
<Single Name="Timestamp" Type="long">639085160043604994</Single>
</Single>
<Single Name="Object" Type="{5a3b8626-d3e9-4f37-98b5-66420063d91e}" Method="IArchivable">
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">PROPERTY reqError : BOOL</Single>
<Single Name="LineInfoPersistence" Type="string">30645d91-91c6-42eb-8399-c20f91ca0d3e_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="UniqueIdGenerator" Type="string">1</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">48b508fd-2131-484c-ba4a-20e61e66a5b2</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbRequestStats</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">fbb41e61-f245-4f4e-bcd0-218ede01fcda</Single>
<Single Name="ParentGuid" Type="System.Guid">f6ee860b-0951-41d0-93d8-6436c681d8f1</Single>
<Single Name="Name" Type="string">processRequest</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148472030</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF __ISVALIDREF(client) AND_THEN client.nativeMode THEN
nativeCopyAllowed := (UINT_TO_DINT(nativeOffset) &gt;= LOWER_BOUND(data,1)) AND
(UINT_TO_DINT(nativeOffset) + UINT_TO_DINT(nativeCount) - 1 &lt;= UPPER_BOUND(data,1));
IF stats.execute AND NOT nativeInFlight AND client.nativeSelected = THIS AND NOT out_parameterError THEN
FOR nativeLoop := 0 TO UINT_TO_DINT(stats.reqLength)-1 DO
client.nativeIO[nativeLoop] := BOOL_TO_WORD(data[UINT_TO_DINT(in_dataOffset)+nativeLoop]);
END_FOR;
END_IF;
nativeProcess(15);
RETURN;
END_IF;
IF NOT setupClient(writeCoilsReq) THEN
RETURN;
END_IF
//Do request processing
writeCoilsReq^(
rClient := mbsClient,
xExecute := stats.execute,
udiTimeOut := 0,
uiUnitId := in_unitId,
udiReplyTimeout := replyTimeout,
uiStartItem := in_startAddr,
uiQuantity := stats.reqLength,
pData := ADR(data[in_dataOffset])
);
completeRequest();</Single>
<Single Name="LineInfoPersistence" Type="string">fbb41e61-f245-4f4e-bcd0-218ede01fcda_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD processRequest
</Single>
<Single Name="LineInfoPersistence" Type="string">fbb41e61-f245-4f4e-bcd0-218ede01fcda_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">f6ee860b-0951-41d0-93d8-6436c681d8f1</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqWriteCoil</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">a861d6e2-2501-43dc-bb37-34509923450c</Single>
<Single Name="ParentGuid" Type="System.Guid">f6ee860b-0951-41d0-93d8-6436c681d8f1</Single>
<Single Name="Name" Type="string">recreateRequest</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148502269</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF __ISVALIDREF(client) AND_THEN client.nativeMode THEN
IF client.nativeActiveRequest = THIS THEN client.recreateClient(); END_IF;
nativeInFlight := FALSE;
recreateRequest := 0;
RETURN;
END_IF;
IF writeCoilsReq &lt;&gt; 0 THEN
__DELETE(writeCoilsReq);
writeCoilsReq := 0;
END_IF
writeCoilsReq := __NEW(ModbusFB.ClientRequestWriteMultipleCoils);
recreateRequest := writeCoilsReq;</Single>
<Single Name="LineInfoPersistence" Type="string">a861d6e2-2501-43dc-bb37-34509923450c_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD recreateRequest : POINTER TO ModbusFB.ClientRequest
VAR_INPUT
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">a861d6e2-2501-43dc-bb37-34509923450c_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">f6ee860b-0951-41d0-93d8-6436c681d8f1</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqWriteCoil</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">df9b4fd1-9d38-4a54-a7e5-264a94a756ac</Single>
<Single Name="ParentGuid" Type="System.Guid">f6ee860b-0951-41d0-93d8-6436c681d8f1</Single>
<Single Name="Name" Type="string">writeNow</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639034841591456658</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">nativeWriteHold := FALSE;
out_writeUncertain := FALSE;
in_priorityCurrent := 0;</Single>
<Single Name="LineInfoPersistence" Type="string">df9b4fd1-9d38-4a54-a7e5-264a94a756ac_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD writeNow : BOOL
VAR_INPUT
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">df9b4fd1-9d38-4a54-a7e5-264a94a756ac_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">f6ee860b-0951-41d0-93d8-6436c681d8f1</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqWriteCoil</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">76621df2-a77c-4e0a-aba0-e3e4a53bd278</Single>
<Single Name="ParentGuid" Type="System.Guid">bb7e18ba-2018-4681-875e-de1f291019ef</Single>
<Single Name="Name" Type="string">processRequest</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148512269</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF __ISVALIDREF(client) AND_THEN client.nativeMode THEN
nativeCopyAllowed := (UINT_TO_DINT(nativeOffset) &gt;= LOWER_BOUND(data,1)) AND
(UINT_TO_DINT(nativeOffset) + UINT_TO_DINT(nativeCount) - 1 &lt;= UPPER_BOUND(data,1));
IF stats.execute AND NOT nativeInFlight AND client.nativeSelected = THIS AND NOT out_parameterError THEN
FOR nativeLoop := 0 TO UINT_TO_DINT(stats.reqLength)-1 DO
client.nativeIO[nativeLoop] := UINT_TO_WORD(data[UINT_TO_DINT(in_dataOffset)+nativeLoop]);
END_FOR;
END_IF;
nativeProcess(16);
RETURN;
END_IF;
IF NOT setupClient(writeHoldReq) THEN
RETURN;
END_IF
//Do request processing
writeHoldReq^(
rClient := mbsClient,
xExecute := stats.execute,
udiTimeOut := 0,
uiUnitId := in_unitId,
udiReplyTimeout := replyTimeout,
uiStartItem := in_startAddr,
uiQuantity := stats.reqLength,
pData := ADR(data[in_dataOffset])
);
completeRequest();</Single>
<Single Name="LineInfoPersistence" Type="string">76621df2-a77c-4e0a-aba0-e3e4a53bd278_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD processRequest
</Single>
<Single Name="LineInfoPersistence" Type="string">76621df2-a77c-4e0a-aba0-e3e4a53bd278_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">bb7e18ba-2018-4681-875e-de1f291019ef</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqWriteHolding</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">bd7ff184-1747-404c-9fa0-1b728376c927</Single>
<Single Name="ParentGuid" Type="System.Guid">bb7e18ba-2018-4681-875e-de1f291019ef</Single>
<Single Name="Name" Type="string">recreateRequest</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148532258</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF __ISVALIDREF(client) AND_THEN client.nativeMode THEN
IF client.nativeActiveRequest = THIS THEN client.recreateClient(); END_IF;
nativeInFlight := FALSE;
recreateRequest := 0;
RETURN;
END_IF;
IF writeHoldReq &lt;&gt; 0 THEN
__DELETE(writeHoldReq);
writeHoldReq := 0;
END_IF
writeHoldReq := __NEW(ModbusFB.ClientRequestWriteMultipleRegisters);
recreateRequest := writeHoldReq;</Single>
<Single Name="LineInfoPersistence" Type="string">bd7ff184-1747-404c-9fa0-1b728376c927_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD recreateRequest : POINTER TO ModbusFB.ClientRequest
VAR_INPUT
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">bd7ff184-1747-404c-9fa0-1b728376c927_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">bb7e18ba-2018-4681-875e-de1f291019ef</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqWriteHolding</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">5f9160f9-c4a4-4f65-a74c-2838020397f3</Single>
<Single Name="ParentGuid" Type="System.Guid">bb7e18ba-2018-4681-875e-de1f291019ef</Single>
<Single Name="Name" Type="string">writeNow</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639034841591496600</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">nativeWriteHold := FALSE;
out_writeUncertain := FALSE;
in_priorityCurrent := 0;</Single>
<Single Name="LineInfoPersistence" Type="string">5f9160f9-c4a4-4f65-a74c-2838020397f3_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD writeNow : BOOL
VAR_INPUT
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">5f9160f9-c4a4-4f65-a74c-2838020397f3_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">bb7e18ba-2018-4681-875e-de1f291019ef</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqWriteHolding</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">0803920e-cc13-4b93-a08c-4d27afc1ff3c</Single>
<Single Name="ParentGuid" Type="System.Guid">5cc2fe1e-bdb2-429a-84e1-63e783ea3b32</Single>
<Single Name="Name" Type="string">Get</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">792f2eb6-721e-4e64-ba20-bc98351056db</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639034841590675071</Single>
</Single>
<Single Name="Object" Type="{792f2eb6-721e-4e64-ba20-bc98351056db}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF nativeMode THEN
activeIndex := nativeActiveIndex;
RETURN;
END_IF;
// ===== Test for any requests executing =====
FOR i := 0 TO UINT_TO_DINT(requestCnt)-1 DO
IF requests[i]^.stats.execute OR requests[i]^.stats.reqBusy THEN
activeIndex := i;
RETURN;
END_IF
END_FOR
activeIndex := -1;
</Single>
<Single Name="LineInfoPersistence" Type="string">0803920e-cc13-4b93-a08c-4d27afc1ff3c_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">VAR
i: DINT; //Loop variable
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">0803920e-cc13-4b93-a08c-4d27afc1ff3c_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="IsGet" Type="bool">True</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">5cc2fe1e-bdb2-429a-84e1-63e783ea3b32</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClient</Single>
<Single Type="string">activeIndex</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">3b82f264-e41e-461d-9beb-263305a22a8d</Single>
<Single Name="ParentGuid" Type="System.Guid">5cc2fe1e-bdb2-429a-84e1-63e783ea3b32</Single>
<Single Name="Name" Type="string">Set</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">792f2eb6-721e-4e64-ba20-bc98351056db</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639034841590705101</Single>
</Single>
<Single Name="Object" Type="{792f2eb6-721e-4e64-ba20-bc98351056db}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">// set request to active, which is how the active index gets calculated.
requests[activeIndex]^.stats.execute := TRUE;</Single>
<Single Name="LineInfoPersistence" Type="string">3b82f264-e41e-461d-9beb-263305a22a8d_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">VAR
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">3b82f264-e41e-461d-9beb-263305a22a8d_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="IsGet" Type="bool">False</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">5cc2fe1e-bdb2-429a-84e1-63e783ea3b32</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClient</Single>
<Single Type="string">activeIndex</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">cc024b23-e5fe-4958-ad80-513feea6aeab</Single>
<Single Name="ParentGuid" Type="System.Guid">456b4953-57c9-4f76-ab5b-0db456dd9b58</Single>
<Single Name="Name" Type="string">Get</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">792f2eb6-721e-4e64-ba20-bc98351056db</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502146383170</Single>
</Single>
<Single Name="Object" Type="{792f2eb6-721e-4e64-ba20-bc98351056db}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">cnt := 0;
IF requestCnt = 0 THEN
activeReqCnt := 0;
RETURN;
END_IF
FOR i := 0 TO UINT_TO_DINT(requestCnt)-1 DO
//Test for any offline request
IF requests[i]^.stats.active THEN
cnt := cnt + 1;
END_IF
END_FOR;
activeReqCnt := cnt;</Single>
<Single Name="LineInfoPersistence" Type="string">cc024b23-e5fe-4958-ad80-513feea6aeab_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">VAR
i: UINT; //Loop variable
cnt: UINT;
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">cc024b23-e5fe-4958-ad80-513feea6aeab_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="IsGet" Type="bool">True</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">456b4953-57c9-4f76-ab5b-0db456dd9b58</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClient</Single>
<Single Type="string">activeReqCnt</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">d59f404d-315d-4ea4-b16b-c8f0e8342d2e</Single>
<Single Name="ParentGuid" Type="System.Guid">4d9d378a-f256-4f23-b835-539ee9e287c3</Single>
<Single Name="Name" Type="string">Get</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">792f2eb6-721e-4e64-ba20-bc98351056db</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502147990941</Single>
</Single>
<Single Name="Object" Type="{792f2eb6-721e-4e64-ba20-bc98351056db}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF requestCnt = 0 THEN
allRequestsComplete := 0;
RETURN;
END_IF
FOR i := 0 TO UINT_TO_DINT(requestCnt)-1 DO
//Test for any offline request
IF requests[i]^.stats.execute OR requests[i]^.stats.reqDone OR requests[i]^.stats.reqBusy OR requests[i]^.stats.reqError THEN
allRequestsComplete := FALSE;
RETURN;
END_IF
END_FOR;
allRequestsComplete := TRUE;</Single>
<Single Name="LineInfoPersistence" Type="string">d59f404d-315d-4ea4-b16b-c8f0e8342d2e_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">VAR
i: UINT;
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">d59f404d-315d-4ea4-b16b-c8f0e8342d2e_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="IsGet" Type="bool">True</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">4d9d378a-f256-4f23-b835-539ee9e287c3</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClient</Single>
<Single Type="string">allRequestsComplete</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">dceb6b17-86bf-4543-9652-2fd2b943953c</Single>
<Single Name="ParentGuid" Type="System.Guid">89742962-f9b6-46c2-b9a5-b7e298f8495d</Single>
<Single Name="Name" Type="string">Get</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">792f2eb6-721e-4e64-ba20-bc98351056db</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502146538436</Single>
</Single>
<Single Name="Object" Type="{792f2eb6-721e-4e64-ba20-bc98351056db}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">cnt := 0;
IF requestCnt = 0 THEN
onlineCnt := 0;
RETURN;
END_IF
FOR i := 0 TO UINT_TO_DINT(requestCnt)-1 DO
//Test for any offline request
IF requests[i]^.stats.online THEN
cnt := cnt + 1;
END_IF
END_FOR;
onlineCnt := cnt;</Single>
<Single Name="LineInfoPersistence" Type="string">dceb6b17-86bf-4543-9652-2fd2b943953c_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">VAR
i: UINT; //Loop variable
cnt: UINT;
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">dceb6b17-86bf-4543-9652-2fd2b943953c_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="IsGet" Type="bool">True</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">89742962-f9b6-46c2-b9a5-b7e298f8495d</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClient</Single>
<Single Type="string">onlineCnt</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">0006696f-29e2-441e-a325-e3481d025cec</Single>
<Single Name="ParentGuid" Type="System.Guid">27292866-0bc0-4848-a965-64c51a0bf960</Single>
<Single Name="Name" Type="string">Get</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">792f2eb6-721e-4e64-ba20-bc98351056db</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639034841590890993</Single>
</Single>
<Single Name="Object" Type="{792f2eb6-721e-4e64-ba20-bc98351056db}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">// ===== Test for any requests executing =====
requestExecuting := activeIndex &lt;&gt; -1;</Single>
<Single Name="LineInfoPersistence" Type="string">0006696f-29e2-441e-a325-e3481d025cec_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">VAR
i: DINT; //Loop variable
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">0006696f-29e2-441e-a325-e3481d025cec_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="IsGet" Type="bool">True</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">27292866-0bc0-4848-a965-64c51a0bf960</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClient</Single>
<Single Type="string">requestExecuting</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">3d4da579-672d-4758-9b0f-e055a08e0da3</Single>
<Single Name="ParentGuid" Type="System.Guid">e8c6c80b-7bdb-4108-987e-4af107de4377</Single>
<Single Name="Name" Type="string">Get</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">792f2eb6-721e-4e64-ba20-bc98351056db</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639207574650278010</Single>
</Single>
<Single Name="Object" Type="{792f2eb6-721e-4e64-ba20-bc98351056db}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">//Calculation for tostring
IF onlineCnt = requestCnt THEN
toString := atMbClientToString.allOk;
ELSIF onlineCnt = 0 THEN
toString := atMbClientToString.noneOk;
ELSE
toString := atMbClientToString.someOk;
END_IF</Single>
<Single Name="LineInfoPersistence" Type="string">3d4da579-672d-4758-9b0f-e055a08e0da3_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string" />
<Single Name="LineInfoPersistence" Type="string">3d4da579-672d-4758-9b0f-e055a08e0da3_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="IsGet" Type="bool">True</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">e8c6c80b-7bdb-4108-987e-4af107de4377</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClientRTU</Single>
<Single Type="string">toString</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">4895a5bf-c631-4f8c-bee7-addb0b769548</Single>
<Single Name="ParentGuid" Type="System.Guid">6159c037-e399-466d-8108-0c4f6570f9b2</Single>
<Single Name="Name" Type="string">Get</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">792f2eb6-721e-4e64-ba20-bc98351056db</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639207574650328003</Single>
</Single>
<Single Name="Object" Type="{792f2eb6-721e-4e64-ba20-bc98351056db}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF NOT __ISVALIDREF(client) OR_ELSE NOT __ISVALIDREF(client.client) THEN
RETURN;
END_IF
mbsClient REF= client.client;</Single>
<Single Name="LineInfoPersistence" Type="string">4895a5bf-c631-4f8c-bee7-addb0b769548_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">VAR
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">4895a5bf-c631-4f8c-bee7-addb0b769548_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="IsGet" Type="bool">True</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">6159c037-e399-466d-8108-0c4f6570f9b2</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqBase</Single>
<Single Type="string">mbsClient</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">f54a4cd6-8540-4892-a914-4aac4f8d9018</Single>
<Single Name="ParentGuid" Type="System.Guid">4f361885-f95c-4244-84d6-8c3b6b9b8a18</Single>
<Single Name="Name" Type="string">Get</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">792f2eb6-721e-4e64-ba20-bc98351056db</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639034841591226460</Single>
</Single>
<Single Name="Object" Type="{792f2eb6-721e-4e64-ba20-bc98351056db}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">
IF in_timeout &gt; 0 THEN
//Explicitly set timout
replyTimeout := ANY_TO_UDINT((in_timeout) * 1000);
ELSE
// If client timeout is set, use that.
IF client.in_timeout &lt;&gt; T#0MS THEN
replyTimeout := TIME_TO_UDINT(client.in_timeout) * 1000;
ELSIF client.dataRate &lt;&gt; 0 THEN
//Data transmision time * 1.5 to get the timeout. Result is in ms
//8 byte request, then 255 byte reply = 2630 bits.
replyTimeout := REAL_TO_UDINT(2630 / DINT_TO_REAL(client.dataRate) * 1.5 * 1000000);
ELSE
//In case client datarate = zero
replyTimeout := 1000000; //1 second?
END_IF
END_IF
</Single>
<Single Name="LineInfoPersistence" Type="string">f54a4cd6-8540-4892-a914-4aac4f8d9018_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">VAR
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">f54a4cd6-8540-4892-a914-4aac4f8d9018_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="IsGet" Type="bool">True</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">4f361885-f95c-4244-84d6-8c3b6b9b8a18</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqBase</Single>
<Single Type="string">replyTimeout</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">465bf80a-0d6e-4363-ba1e-dd04aef379f7</Single>
<Single Name="ParentGuid" Type="System.Guid">89434b6a-7e3b-4095-9220-0a6fc3789a25</Single>
<Single Name="Name" Type="string">Get</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">792f2eb6-721e-4e64-ba20-bc98351056db</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639085160043419500</Single>
</Single>
<Single Name="Object" Type="{792f2eb6-721e-4e64-ba20-bc98351056db}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">execute := _execute;</Single>
<Single Name="LineInfoPersistence" Type="string">465bf80a-0d6e-4363-ba1e-dd04aef379f7_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">VAR
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">465bf80a-0d6e-4363-ba1e-dd04aef379f7_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="IsGet" Type="bool">True</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">89434b6a-7e3b-4095-9220-0a6fc3789a25</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbRequestStats</Single>
<Single Type="string">execute</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">8ff5fbe7-c047-436d-923c-942d0d66494c</Single>
<Single Name="ParentGuid" Type="System.Guid">89434b6a-7e3b-4095-9220-0a6fc3789a25</Single>
<Single Name="Name" Type="string">Set</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">792f2eb6-721e-4e64-ba20-bc98351056db</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639085160043439650</Single>
</Single>
<Single Name="Object" Type="{792f2eb6-721e-4e64-ba20-bc98351056db}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF reqDone OR reqError THEN
_execute := FALSE;
RETURN;
END_IF
_execute := execute; </Single>
<Single Name="LineInfoPersistence" Type="string">8ff5fbe7-c047-436d-923c-942d0d66494c_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">VAR
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">8ff5fbe7-c047-436d-923c-942d0d66494c_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="IsGet" Type="bool">False</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">89434b6a-7e3b-4095-9220-0a6fc3789a25</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbRequestStats</Single>
<Single Type="string">execute</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">db10f23e-d96b-4fd5-aec0-8b530ad288e1</Single>
<Single Name="ParentGuid" Type="System.Guid">13e3ae42-bdd9-49ee-b8c0-74b8339469cb</Single>
<Single Name="Name" Type="string">Get</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">792f2eb6-721e-4e64-ba20-bc98351056db</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639085160043479636</Single>
</Single>
<Single Name="Object" Type="{792f2eb6-721e-4e64-ba20-bc98351056db}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">reqBusy := _reqBusy;</Single>
<Single Name="LineInfoPersistence" Type="string">db10f23e-d96b-4fd5-aec0-8b530ad288e1_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">VAR
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">db10f23e-d96b-4fd5-aec0-8b530ad288e1_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="IsGet" Type="bool">True</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">13e3ae42-bdd9-49ee-b8c0-74b8339469cb</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbRequestStats</Single>
<Single Type="string">reqBusy</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">a239da3a-8f75-41da-a264-f06ca07143f4</Single>
<Single Name="ParentGuid" Type="System.Guid">13e3ae42-bdd9-49ee-b8c0-74b8339469cb</Single>
<Single Name="Name" Type="string">Set</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">792f2eb6-721e-4e64-ba20-bc98351056db</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639085160043499661</Single>
</Single>
<Single Name="Object" Type="{792f2eb6-721e-4e64-ba20-bc98351056db}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">_reqBusy := reqBusy;</Single>
<Single Name="LineInfoPersistence" Type="string">a239da3a-8f75-41da-a264-f06ca07143f4_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">VAR
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">a239da3a-8f75-41da-a264-f06ca07143f4_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="IsGet" Type="bool">False</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">13e3ae42-bdd9-49ee-b8c0-74b8339469cb</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbRequestStats</Single>
<Single Type="string">reqBusy</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">61db378f-6029-4712-b562-fea707e5698b</Single>
<Single Name="ParentGuid" Type="System.Guid">80965ce1-9b6a-44d3-b272-a5c739ccbc70</Single>
<Single Name="Name" Type="string">Get</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">792f2eb6-721e-4e64-ba20-bc98351056db</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639085160043539625</Single>
</Single>
<Single Name="Object" Type="{792f2eb6-721e-4e64-ba20-bc98351056db}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">reqDone := _reqDone;</Single>
<Single Name="LineInfoPersistence" Type="string">61db378f-6029-4712-b562-fea707e5698b_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">VAR
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">61db378f-6029-4712-b562-fea707e5698b_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="IsGet" Type="bool">True</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">80965ce1-9b6a-44d3-b272-a5c739ccbc70</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbRequestStats</Single>
<Single Type="string">reqDone</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">858ae7ab-7bd2-4c3e-9c4b-69064e0620a3</Single>
<Single Name="ParentGuid" Type="System.Guid">80965ce1-9b6a-44d3-b272-a5c739ccbc70</Single>
<Single Name="Name" Type="string">Set</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">792f2eb6-721e-4e64-ba20-bc98351056db</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502147505410</Single>
</Single>
<Single Name="Object" Type="{792f2eb6-721e-4e64-ba20-bc98351056db}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">_reqDone := reqDone;
IF (execute AND reqDone) THEN
// ===== Request has just completed succesfully =====
//Update last valid duration
lastValidDuration := ULINT_TO_UDINT((TSSus - lastReqStart)/1000);
IF lastValidDuration &gt; longestValidDuration THEN
longestValidDuration := lastValidDuration;
END_IF
//Counters
doneCnt := doneCnt + 1;
doneCntRst := doneCntRst + 1;
errorCntRst := 0;
//Update error info
lastErrorId := modbusFB.Error.OK;
lastExceptionCode := atMBExceptionCodes.RESPONSE_SUCCESS;
execute := FALSE;
setToString();
END_IF</Single>
<Single Name="LineInfoPersistence" Type="string">858ae7ab-7bd2-4c3e-9c4b-69064e0620a3_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">VAR
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">858ae7ab-7bd2-4c3e-9c4b-69064e0620a3_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="IsGet" Type="bool">False</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">80965ce1-9b6a-44d3-b272-a5c739ccbc70</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbRequestStats</Single>
<Single Type="string">reqDone</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">e44e83bd-8f84-4202-9ab4-784d09cf5506</Single>
<Single Name="ParentGuid" Type="System.Guid">30645d91-91c6-42eb-8399-c20f91ca0d3e</Single>
<Single Name="Name" Type="string">Get</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">792f2eb6-721e-4e64-ba20-bc98351056db</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639085160043645000</Single>
</Single>
<Single Name="Object" Type="{792f2eb6-721e-4e64-ba20-bc98351056db}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">reqError := _reqError;</Single>
<Single Name="LineInfoPersistence" Type="string">e44e83bd-8f84-4202-9ab4-784d09cf5506_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">VAR
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">e44e83bd-8f84-4202-9ab4-784d09cf5506_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="IsGet" Type="bool">True</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">30645d91-91c6-42eb-8399-c20f91ca0d3e</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbRequestStats</Single>
<Single Type="string">reqError</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">89b5f7bc-0c37-43f3-8984-14034b000d89</Single>
<Single Name="ParentGuid" Type="System.Guid">30645d91-91c6-42eb-8399-c20f91ca0d3e</Single>
<Single Name="Name" Type="string">Set</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">792f2eb6-721e-4e64-ba20-bc98351056db</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502147595513</Single>
</Single>
<Single Name="Object" Type="{792f2eb6-721e-4e64-ba20-bc98351056db}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">_reqError := reqError;
IF (execute AND reqError) THEN
// ===== Request has just completed with error =====
// Counters
errorCnt := errorCnt + 1;
errorCntRst := errorCntRst + 1;
doneCntRst := 0;
//Turn off execute
execute := FALSE;
//Since we are here there was an exception. If the modbus response is 0, that means no modbus communication happened, so we are offline. If we would have had a succesful communication we would have got a actual modbus error.
IF lastExceptionCode = atMBExceptionCodes.RESPONSE_SUCCESS THEN
timeoutCnt := timeoutCnt + 1;
lastExceptionCode := atMBExceptionCodes.TIMEOUT;
END_IF
setToString();
END_IF</Single>
<Single Name="LineInfoPersistence" Type="string">89b5f7bc-0c37-43f3-8984-14034b000d89_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">VAR
END_VAR
</Single>
<Single Name="LineInfoPersistence" Type="string">89b5f7bc-0c37-43f3-8984-14034b000d89_Decl_LineIds</Single>
</Single>
</Single>
<Single Name="IsGet" Type="bool">False</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">30645d91-91c6-42eb-8399-c20f91ca0d3e</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbRequestStats</Single>
<Single Type="string">reqError</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">f0be8440-a307-5b71-82c8-af27d8852e42</Single>
<Single Name="ParentGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Single Name="Name" Type="string">nativeCall</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148096636</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">nativeCall := CmpAtomModbus.atMbCall_cext(
command := command, handle := nativeHandle, ipAddress := nativeIP,
port := nativePort, unitId := nativeArgUnit, functionCode := nativeArgFunction,
startAddress := nativeArgAddress, quantity := nativeArgQuantity,
pData := ADR(nativeIO[0]), dataCapacity := 2000,
pStatus := ADR(nativeStatus[0]), statusCapacity := 24, nowMs := nativeNowMs,
connectTimeoutMs := nativeConnectTimeout, responseTimeoutMs := nativeArgTimeout,
retryDelayMs := nativeRetryDelay);</Single>
<Single Name="LineInfoPersistence" Type="string">f0be8440-a307-5b71-82c8-af27d8852e42_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD nativeCall : UDINT
VAR_INPUT
command : UDINT;
END_VAR</Single>
<Single Name="LineInfoPersistence" Type="string">f0be8440-a307-5b71-82c8-af27d8852e42_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClient</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">1233447d-8796-56cf-9291-c959801d2a63</Single>
<Single Name="ParentGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Single Name="Name" Type="string">nativeCycle</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148096636</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">SysTimeGetUs(nativeNowUs);
nativeNowMs := nativeNowUs / 1000;
IF in_resetStats THEN
resetStats();
in_resetStats := FALSE;
END_IF;
IF nativeHandle = 0 AND nativeEnable THEN
rc := nativeCall(1);
IF rc &lt;&gt; 0 THEN
out_lastNativeError := rc;
RETURN;
END_IF;
nativeHandle := nativeStatus[0];
nativeArgTimeout := 1000;
rc := nativeCall(9);
IF rc &lt;&gt; 0 THEN
out_lastNativeError := rc;
nativeCall(2); nativeHandle := 0;
RETURN;
END_IF;
nativeCall(3);
END_IF;
IF nativeHandle = 0 THEN
out_connected := FALSE;
out_connectionState := 0;
RETURN;
END_IF;
rc := nativeCall(5);
IF rc = 256 THEN
nativeHandle := 0;
IF nativeActiveRequest &lt;&gt; 0 THEN
nativeActiveRequest^.nativeFinish(10);
END_IF;
nativeActiveRequest := 0; nativeActiveIndex := -1;
RETURN;
ELSIF rc &lt;&gt; 0 THEN
out_lastNativeError := rc;
RETURN;
END_IF;
out_connectionState := nativeStatus[1];
out_connected := (nativeStatus[1] &gt;= 3) AND (nativeStatus[1] &lt;= 5);
out_lastNativeError := nativeStatus[6];
out_socketError := nativeStatus[7];
out_reconnectCount := nativeStatus[11];
IF nativePrevConnected AND NOT out_connected THEN
setAllRequestsOffline();
END_IF;
nativePrevConnected := out_connected;
nativeFinishedIndex := -1;
nativeResultReady := (nativeActiveRequest &lt;&gt; 0) AND
((nativeStatus[3] &lt;&gt; 0) OR (nativeStatus[4] &lt;&gt; 0));
IF nativeResultReady AND (nativeStatus[3] &lt;&gt; 0) AND (nativeStatus[18] &lt;= 4) THEN
rc := nativeCall(7);
IF rc &lt;&gt; 0 THEN
nativeStatus[3] := 0;
nativeStatus[4] := 1;
nativeStatus[5] := rc;
END_IF;
END_IF;
processAllRequests();
IF nativeResultReady THEN
nativeFinishedIndex := nativeActiveIndex;
nativeCall(10);
nativeActiveRequest := 0; nativeActiveIndex := -1;
nativeSelected := 0; nativeResultReady := FALSE;
END_IF;
IF nativeEnable AND nativeStatus[1] = 3 AND nativeActiveRequest = 0 THEN
best := -1; priority := 32767; age := 0;
FOR j := 0 TO UINT_TO_DINT(requestCnt)-1 DO
IF requests[j] &lt;&gt; 0 AND_THEN requests[j]^.stats.active
AND NOT requests[j]^.nativeWriteHold AND j &lt;&gt; nativeFinishedIndex THEN
IF requests[j]^.stats.sinceLastExec &gt;= TIME_TO_UDINT(requests[j]^.in_minDelay) THEN
IF (requests[j]^.in_priorityCurrent &lt; priority) OR
((requests[j]^.in_priorityCurrent = priority) AND
(requests[j]^.stats.sinceLastExec &gt; age)) THEN
best := j; priority := requests[j]^.in_priorityCurrent;
age := requests[j]^.stats.sinceLastExec;
END_IF;
END_IF;
END_IF;
END_FOR;
IF best &gt;= 0 THEN
IF priority &gt; 0 THEN
FOR j := 0 TO UINT_TO_DINT(requestCnt)-1 DO
IF requests[j]^.in_priorityCurrent &gt; 0 THEN
requests[j]^.in_priorityCurrent := requests[j]^.in_priorityCurrent - 1;
END_IF;
END_FOR;
END_IF;
nativeSelected := requests[best]; nativeActiveIndex := best;
nativeSelected^.stats.execute := TRUE;
nativeSelected^.processRequest();
IF nativeActiveRequest = 0 THEN
nativeActiveIndex := -1; nativeSelected := 0;
END_IF;
END_IF;
END_IF;
allRequestsOnline := (activeReqCnt &gt; 0) AND (onlineCnt = activeReqCnt);
allRequestsOffline := (activeReqCnt &gt; 0) AND (onlineCnt = 0);
numMsgSent := nativeSent; numMsgReply := nativeReplied;
FOR j := 0 TO UINT_TO_DINT(requestCnt)-1 DO
reqStats[j] := ADR(requests[j]^.stats);
END_FOR;
IF nativeWindowStart = 0 THEN nativeWindowStart := nativeNowMs; END_IF;
IF nativeNowMs - nativeWindowStart &gt;= 1000 THEN
msgLastSecondCnt := nativeWindowCount; msgLastSecondTime := nativeWindowTime;
nativeWindowCount := 0; nativeWindowTime := 0; nativeWindowStart := nativeNowMs;
END_IF;</Single>
<Single Name="LineInfoPersistence" Type="string">1233447d-8796-56cf-9291-c959801d2a63_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD nativeCycle
VAR
j : DINT;
best : DINT;
priority : INT;
age : UDINT;
rc : UDINT;
END_VAR</Single>
<Single Name="LineInfoPersistence" Type="string">1233447d-8796-56cf-9291-c959801d2a63_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">bc7fa96e-8ba3-4e3e-9cec-4d50ab57e6fa</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClient</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">c08712ba-3cf5-54e9-89a1-76a1c3183975</Single>
<Single Name="ParentGuid" Type="System.Guid">269ad87c-8ffe-4a28-9e12-2f2da3f7c570</Single>
<Single Name="Name" Type="string">nativeRelease</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148096636</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">IF nativeHandle &lt;&gt; 0 THEN
nativeCall(2);
IF nativeActiveRequest &lt;&gt; 0 THEN
nativeActiveRequest^.nativeFinish(10);
END_IF;
nativeHandle := 0;
END_IF;
nativeActiveRequest := 0; nativeSelected := 0; nativeActiveIndex := -1;
nativeResultReady := FALSE;
out_connected := FALSE; out_connectionState := 0;
setAllRequestsOffline();
FOR j := 0 TO UINT_TO_DINT(requestCnt)-1 DO
requests[j]^.invalidateNativeData();
END_FOR;
nativeRelease := TRUE;</Single>
<Single Name="LineInfoPersistence" Type="string">c08712ba-3cf5-54e9-89a1-76a1c3183975_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD nativeRelease : BOOL
VAR
j : DINT;
END_VAR</Single>
<Single Name="LineInfoPersistence" Type="string">c08712ba-3cf5-54e9-89a1-76a1c3183975_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">269ad87c-8ffe-4a28-9e12-2f2da3f7c570</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClientTCP</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">2a6d360f-01c4-5b27-81fa-337b6b33a1b6</Single>
<Single Name="ParentGuid" Type="System.Guid">269ad87c-8ffe-4a28-9e12-2f2da3f7c570</Single>
<Single Name="Name" Type="string">release</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148096636</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">in_enable := FALSE;
release := nativeRelease();</Single>
<Single Name="LineInfoPersistence" Type="string">2a6d360f-01c4-5b27-81fa-337b6b33a1b6_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD release : BOOL</Single>
<Single Name="LineInfoPersistence" Type="string">2a6d360f-01c4-5b27-81fa-337b6b33a1b6_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">269ad87c-8ffe-4a28-9e12-2f2da3f7c570</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClientTCP</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">b2fda51f-6f2a-5b12-bc9c-2985dd3a44b4</Single>
<Single Name="ParentGuid" Type="System.Guid">269ad87c-8ffe-4a28-9e12-2f2da3f7c570</Single>
<Single Name="Name" Type="string">FB_exit</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148096636</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">FB_exit := nativeRelease();</Single>
<Single Name="LineInfoPersistence" Type="string">b2fda51f-6f2a-5b12-bc9c-2985dd3a44b4_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD FB_exit : BOOL
VAR_INPUT
bInCopyCode : BOOL;
END_VAR</Single>
<Single Name="LineInfoPersistence" Type="string">b2fda51f-6f2a-5b12-bc9c-2985dd3a44b4_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">269ad87c-8ffe-4a28-9e12-2f2da3f7c570</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClientTCP</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">7568f58a-e795-5d22-a622-3f070deb32b0</Single>
<Single Name="ParentGuid" Type="System.Guid">269ad87c-8ffe-4a28-9e12-2f2da3f7c570</Single>
<Single Name="Name" Type="string">FB_reinit</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148096636</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">nativeHandle := 0;
nativeActiveRequest := 0; nativeSelected := 0; nativeActiveIndex := -1;
nativeResultReady := FALSE; nativePrevConnected := FALSE;
requestCnt := 0; out_registrationFull := FALSE;
FOR j := 0 TO 99 DO requests[j] := 0; reqStats[j] := 0; END_FOR;
FB_reinit := TRUE;</Single>
<Single Name="LineInfoPersistence" Type="string">7568f58a-e795-5d22-a622-3f070deb32b0_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD FB_reinit : BOOL
VAR
j : DINT;
END_VAR</Single>
<Single Name="LineInfoPersistence" Type="string">7568f58a-e795-5d22-a622-3f070deb32b0_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">269ad87c-8ffe-4a28-9e12-2f2da3f7c570</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbClientTCP</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">28ccddd0-4531-5168-aa3e-ac56dddcb68d</Single>
<Single Name="ParentGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Single Name="Name" Type="string">invalidateNativeData</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148096636</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">out_validData := FALSE;
out_stale := TRUE;</Single>
<Single Name="LineInfoPersistence" Type="string">28ccddd0-4531-5168-aa3e-ac56dddcb68d_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD PUBLIC invalidateNativeData</Single>
<Single Name="LineInfoPersistence" Type="string">28ccddd0-4531-5168-aa3e-ac56dddcb68d_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqBase</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">1c14b96c-a77e-5cd3-b853-c18bf9b5ea87</Single>
<Single Name="ParentGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Single Name="Name" Type="string">nativeFinish</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148096636</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">out_nativeError := result;
out_socketError := client.nativeStatus[7];
out_writeUncertain := nativeInFlight AND (client.nativeStatus[9] &lt;&gt; 0);
IF (result = 10) AND nativeInFlight AND (nativeFunction &gt;= 15) THEN
out_writeUncertain := TRUE;
END_IF;
IF out_writeUncertain AND client.nativeHoldUncertainWrites THEN
nativeWriteHold := TRUE;
END_IF;
stats.reqBusy := FALSE;
IF result = 0 THEN
duration := ULINT_TO_UDINT(client.nativeNowMs - nativeStartMs);
stats.lastValidDuration := duration;
IF duration &gt; stats.longestValidDuration THEN stats.longestValidDuration := duration; END_IF;
client.nativeReplied := client.nativeReplied + 1;
client.nativeWindowTime := client.nativeWindowTime + duration;
stats.nativeResponseSeen := TRUE;
IF nativeFunction &lt;= 4 THEN
nativeReadComplete := TRUE;
stats.nativeLastSuccessMs := client.nativeNowMs;
out_validData := TRUE;
END_IF;
done(TRUE);
ELSE
CASE result OF
1,258: mapped := ModbusFB.Error.RequestParameterError;
4,7: mapped := ModbusFB.Error.TcpSocketError;
5: mapped := ModbusFB.Error.TcpConnectTimeout;
6: mapped := ModbusFB.Error.ReplyTimeout;
8: mapped := ModbusFB.Error.InvalidReply;
9: mapped := ModbusFB.Error.RequestException;
10: mapped := ModbusFB.Error.RequestCancelled;
ELSE mapped := ModbusFB.Error.InternalError;
END_CASE;
ex := ModbusFB.ExceptionCodes.RESPONSE_SUCCESS;
IF result = 9 THEN
CASE client.nativeStatus[8] OF
1: ex := ModbusFB.ExceptionCodes.ILLEGAL_FUNCTION;
2: ex := ModbusFB.ExceptionCodes.ILLEGAL_DATA_ADDRESS;
3: ex := ModbusFB.ExceptionCodes.ILLEGAL_DATA_VALUE;
4: ex := ModbusFB.ExceptionCodes.SLAVE_DEVICE_FAILURE;
5: ex := ModbusFB.ExceptionCodes.ACKNOWLEDGE;
6: ex := ModbusFB.ExceptionCodes.SLAVE_DEVICE_BUSY;
8: ex := ModbusFB.ExceptionCodes.MEMORY_PARITY_ERROR;
10: ex := ModbusFB.ExceptionCodes.GATEWAY_PATH_UNAVAILABLE;
11: ex := ModbusFB.ExceptionCodes.GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND;
END_CASE;
client.nativeReplied := client.nativeReplied + 1;
stats.nativeResponseSeen := TRUE;
ELSE
stats.nativeResponseSeen := FALSE;
END_IF;
err(in := TRUE,errorId := mapped,exceptionCode := ex);
END_IF;
nativeInFlight := FALSE;
stats();</Single>
<Single Name="LineInfoPersistence" Type="string">1c14b96c-a77e-5cd3-b853-c18bf9b5ea87_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD nativeFinish
VAR_INPUT
result : UDINT;
END_VAR
VAR
mapped : ModbusFB.Error;
ex : ModbusFB.ExceptionCodes;
duration : UDINT;
END_VAR</Single>
<Single Name="LineInfoPersistence" Type="string">1c14b96c-a77e-5cd3-b853-c18bf9b5ea87_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqBase</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">fd4b7cdb-3c7f-5110-af32-341f71321132</Single>
<Single Name="ParentGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Single Name="Name" Type="string">nativeProcess</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148096636</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">nativeReadComplete := FALSE;
stats.reqDone := FALSE; stats.reqError := FALSE;
stats();
IF NOT client.out_connected THEN stats.setClientOffline(); END_IF;
IF client.nativeActiveRequest = THIS AND client.nativeResultReady THEN
IF (client.nativeStatus[3] &lt;&gt; 0) AND (nativeFunction &lt;= 4) AND NOT nativeCopyAllowed THEN
nativeFinish(1);
ELSE
nativeFinish(client.nativeStatus[5]);
END_IF;
RETURN;
END_IF;
IF stats.execute AND NOT nativeInFlight AND client.nativeSelected = THIS THEN
nativeFunction := functionCode;
nativeCount := stats.reqLength; nativeOffset := in_dataOffset;
nativeStartMs := client.nativeNowMs;
IF out_parameterError OR nativeCount = 0 THEN nativeFinish(1); RETURN; END_IF;
client.nativeArgUnit := in_unitId;
client.nativeArgFunction := functionCode;
client.nativeArgAddress := in_startAddr;
client.nativeArgQuantity := nativeCount;
client.nativeArgTimeout := MAX(UDINT#1,(replyTimeout + 999)/1000);
nativeRC := client.nativeCall(11);
IF nativeRC = 0 THEN nativeRC := client.nativeCall(6); END_IF;
IF nativeRC = 0 THEN
client.nativeActiveRequest := THIS;
nativeInFlight := TRUE;
stats.reqBusy := TRUE;
client.nativeSent := client.nativeSent + 1;
client.nativeWindowCount := client.nativeWindowCount + 1;
ELSE nativeFinish(nativeRC);
END_IF;
stats();
END_IF;
IF out_validData THEN
out_dataAgeMs := client.nativeNowMs - stats.nativeLastSuccessMs;
out_stale := out_dataAgeMs &gt; TIME_TO_UDINT(in_staleAfter);
ELSE out_stale := TRUE;
END_IF;</Single>
<Single Name="LineInfoPersistence" Type="string">fd4b7cdb-3c7f-5110-af32-341f71321132_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD nativeProcess
VAR_INPUT
functionCode : BYTE;
END_VAR</Single>
<Single Name="LineInfoPersistence" Type="string">fd4b7cdb-3c7f-5110-af32-341f71321132_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqBase</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
<Single Type="{6198ad31-4b98-445c-927f-3258a0e82fe3}" Method="IArchivable">
<Single Name="IsRoot" Type="bool">False</Single>
<Single Name="MetaObject" Type="{81297157-7ec9-45ce-845e-84cab2b88ade}" Method="IArchivable">
<Single Name="Guid" Type="System.Guid">9ee1081f-903d-595c-ab0c-17c64f4fbe75</Single>
<Single Name="ParentGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Single Name="Name" Type="string">FB_reinit</Single>
<Dictionary Type="{2c41fa04-1834-41c1-816e-303c7aa2c05b}" Name="Properties" />
<Single Name="TypeGuid" Type="System.Guid">f8a58466-d7f6-439f-bbb8-d4600e41d099</Single>
<Array Name="EmbeddedTypeGuids" Type="System.Guid">
<Single Type="System.Guid">a9ed5b7e-75c5-4651-af16-d2c27e98cb94</Single>
<Single Type="System.Guid">3b83b776-fb25-43b8-99f2-3c507c9143fc</Single>
</Array>
<Single Name="Timestamp" Type="long">639108502148096636</Single>
</Single>
<Single Name="Object" Type="{f8a58466-d7f6-439f-bbb8-d4600e41d099}" Method="IArchivable">
<Single Name="Implementation" Type="{3b83b776-fb25-43b8-99f2-3c507c9143fc}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">nativeInFlight := FALSE;
stats.execute := FALSE;
stats.reqBusy := FALSE;
stats.reqDone := FALSE;
stats.reqError := FALSE;
FB_reinit := TRUE;</Single>
<Single Name="LineInfoPersistence" Type="string">9ee1081f-903d-595c-ab0c-17c64f4fbe75_Impl_LineIds</Single>
</Single>
</Single>
<Single Name="Interface" Type="{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}" Method="IArchivable">
<Single Name="TextDocument" Type="{f3878285-8e4f-490b-bb1b-9acbb7eb04db}" Method="IArchivable">
<Single Name="TextBlobForSerialisation" Type="string">METHOD FB_reinit : BOOL</Single>
<Single Name="LineInfoPersistence" Type="string">9ee1081f-903d-595c-ab0c-17c64f4fbe75_Decl_LineIds</Single>
</Single>
</Single>
</Single>
<Single Name="ParentSVNodeGuid" Type="System.Guid">3ad7cda5-e8b7-44c8-b264-165eb4cd7d37</Single>
<Array Name="Path" Type="string">
<Single Type="string">atomLibrary</Single>
<Single Type="string">6-Comms</Single>
<Single Type="string">ModbusMaster</Single>
<Single Type="string">atMbReqBase</Single>
</Array>
<Single Name="Index" Type="int">-1</Single>
</Single>
</List2>
<Single Name="ProfileName" Type="string">CODESYS V3.5 SP21 Patch 4</Single>
</Single>
</StructuredView>
</ExportFile>