Implementation of BECKHOFF's ADS protocol.
C C++ R
Latest commit f824d8f Nov 10, 2014 @Gerhard-Vienna Gerhard-Vienna Merge pull request #10 from khReichel/MoreFunctionality
More functionality

README

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: beckhoff-linux@googlegroups.com
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