Open FloCD opened 1 year ago
2023-04-04T13:33:53+0200 Info: connection closed by remote
means the remote target has closed the TCP connection. Now, all your AdsDevice instances (routes) are invalid. You would have to delete all of them and add them back, to force AmsRouter to reestablish the TCP connection.
The AmsRouter class is no real ADS router like you find in TwinCAT. It is more an AMS -> TCP translator. Without any connection handling.
Your problem is similar to https://github.com/Beckhoff/ADS/issues/46 https://github.com/Beckhoff/ADS/issues/190
Yes I also think that this would be a possible way to resolve that issue. Are there any plans to enhance the library regarding this scenario? PS: I doubt that issue #190 is similar to mine, because in my scenario I connect to a different target, not localhost.
Hello,
i am currently testing the ADS library, especially reconnection behaviour and behaviour with more than one connection.
What works so far (in synchronous fashion):
Therefore I have (based on the example) written a small program which synchronously connects two connections to the same target. One Connection only connects initially, the second one reads values from the SPS and also tries to reconnect (when the SPS is going into config mode):
In the output the following happens:
My guess is that the AmsRouter still holds the connection opened by one of the connections and therefore does not permit a clean disconnect (see function AmsRouter::DeleteIfLastConnection() ).
If there is the need for more information I am happy to help!
All the best
Florian