libads icon indicating copy to clipboard operation
libads copied to clipboard

Implementation of BECKHOFF's ADS protocol.

libAds :: IMPLEMENTATION OF BECKHOFF'S ADS PROTOCOL

libads's purpose is to provide a way to comunicate with the Beckhoff's Automation modules. They comunicate via TCP/IP packets, using an open[1] specification format: ADS.[2]

ADS stands for "Automation Device Specification".

This is a library that was started by Thomas Hergenhahn, as part of Visual[3].

BUILD

clone the git repository present in github: https://github.com/gass/libads build with: autoreconf -i -s ./configure make make install

if you want to activate debug, please use: ./configure CFLAGS='-DADSDebug=ADSDebugAll' or some more selective debug: ADSDebugOpen ADSDebugPacket ADSDebugByte ADSDebugAnalyze ADSDebugPrintErrors

by default debug is: ADSDebugNone

To make a full test, it should be configured with: ./configure CFLAGS='-DADSDebug=ADSDebugAll -Wall -Werror'

TESTS AND EXAMPLES

There are a few test cases in the test directory. In the examples directory there is a working ADS server: ADSserver. Must be called: ./ADSserver 48898 48898

The client is AdsClient: ./AdsClient

It connects to it self, so the server must be running.

CONTACT AND DISCUSSION

You can contact the authors, but it is preferred to use the general mailling list: List email address: [email protected] Lista archive: http://groups.google.com/group/beckhoff-linux

WHAT IS LIBADS

LibAds is a 2 layer library:

  • a low level api
  • a higher level api, compatible with the oficial Beckhoff's Api[4]

LibAds is distributed under LGPLv3.

STATE OF LIBADS

the ADS protocol is implemented, as client, by 2 components:

  • A router (ADS router)
  • client API (oficial api)

The router is a daemon (in windows is a service) that manages conections to the ADS servers. This router is accessed by the AdsAPI.

Currently, libads does not have a router, so the api it self manages (badly) the connections. The best approach is to use the lower level api.

FUTURE

Further development is needed to do 3 things:

  • finnish the support of the official Ads API.
  • review the code (that is a mess) and implement a better logging and error management.
  • develop an Ads Router

All all functions, except the notification, where tested with a Beckhoff BC9000.

[1] "Open" as in "They provide the specification" [2] http://www.beckhoff.com/download/Document/Software/TwinCAT/1033/TcAdsCommon.pdf [3] http://sourceforge.net/projects/visual [4] http://www.beckhoff.com/download/Document/Software/TwinCAT/1033/TcAdsDll.pdf