Struct ads::client::Client

source ·
pub struct Client { /* private fields */ }
Expand description

Represents a connection to a ADS server.

The Client’s communication methods use &self, so that it can be freely shared within one thread, or sent, between threads. Wrappers such as Device or symbol::Handle use a &Client as well.

Implementations

Open a new connection to an ADS server.

If connecting to a server that has an AMS router, it needs to have a route set for the source IP and NetID, otherwise the connection will be closed immediately. The route can be added from TwinCAT, or this crate’s udp::add_route helper can be used to add a route via UDP message.

source is the AMS address to to use as the source; the NetID needs to match the route entry in the server. If Source::Auto, the NetID is constructed from the local IP address with .1.1 appended; if there is no IPv4 address, 127.0.0.1.1.1 is used.

The AMS port of source is not important, as long as it is not a well-known service port; an ephemeral port number > 49152 is recommended. If Auto, the port is set to 58913.

If you are connecting to the local PLC, you need to set source to Source::Request. This will ask the local AMS router for a new port and use it as the source port.

Since all communications is supposed to be handled by an ADS router, only one TCP/ADS connection can exist between two hosts. Non-TwinCAT clients should make sure to replicate this behavior, as opening a second connection will close the first.

Return the source address the client is using.

Get a receiver for notifications.

Return a wrapper that executes operations for a target device (known by NetID and port).

The local NetID 127.0.0.1.1.1 is mapped to the client’s source NetID, so that you can connect to a local PLC using:

let client = Client::new("127.0.0.1", ..., Source::Request);
let device = client.device(AmsAddr::new(AmsNetId::local(), 851));

without knowing its NetID.

Low-level function to execute an ADS command.

Writes a data from a number of input buffers, and returns data in a number of output buffers. The latter might not be filled completely; the return value specifies the number of total valid bytes. It is up to the caller to determine what this means in terms of the passed buffers.

Trait Implementations

Executes the destructor for this type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.