# Einstieg in Beckhoff ADS



## entenhausen_dd (13 Oktober 2010)

Hi Leute,

also hier ein neuer Thread zu folgendem Thema.
Ich möchte gerne meine Beckhoff CX5010-1111 von extern aus steuern können.
Ich habe gelesen das geht über Visual Basic und .Net in Verbindung mit ADS. Hat da jemand ein Beispiel dafür um einen Taster aus der Kommandozeile zu betätigen. Das würde mir riesig helfen.


----------



## Chräshe (13 Oktober 2010)

Sieh mal hier oder hier  nach…


----------



## entenhausen_dd (13 Oktober 2010)

Ja,da habe ich mich schon schlau gemacht, aber wie schaut nun das Progamm aus um einen Taster anzusteueren. Das ganze soll dann über eine .exe ablaufen oder über die Kommandozeile


----------



## Diesla (13 Oktober 2010)

Hallo,

also wie die Implementrierung unter Visual Basic aussieht, kann ich dir nicht sagen. Ich programmiere nur in C++.
Ich bilde in meinen C++-Programmen immer die Funktion einer SPS nach. D.h. ich lese zunächst das PAE ein (das sind eben irgendwelche Eingänge, Merker, usw.) Dann folgt die eigentliche Programmbearbeitung. Zum Schluss schreibe ich dann das PAA, gebe also die VKE's auf die Ausgänge oder Merker. Um das ganze unkompliziert hinzukriegen, habe ich die Funktionen für ADS, die es von Beckhoff ja gibt in eine Klasse verpackt. Diese Klasse (CEingabeausgabe) definiert für die Datentypen bool, int, float, und long folgende Methoden: 
- Zustand von der Hardware einlesen
- Get- und Set-Methoden
- Zustand auf Hardware ausgeben

Man kann die Funktionen natürlich auch verwenden, ohne sie zusammen in eine Klasse zu verpacken. Das ist im folgenden Programm z.B. bei den Funktionen zum Öffnen und Schließen des ADS-Ports der Fall.

Hier mal ein Beispielprogramm 

void main()
{


//Ether-CAT - Variablen
long nErr, nPort;
AmsAddr Addr;
PAmsAddr pAddr = &Addr;

//Benutzervariablen
CEingabeausgabe Eingang00;
CEingabeausgabe Eingang01;
CEingabeausgabe Ausgang00;
CEingabeausgabe Ausgang01;
CEingabeausgabe Analogeingang1;
CEingabeausgabe Analogausgang1;
CEingabeausgabe Analogeingang2;
CEingabeausgabe Analogausgang2;


//Schleife, die das ständige Wiederholen des Programms sicherstellt
while (1 == 1)
{ 

// Open communication port on the ADS router
nPort = AdsPortOpen();
nErr = AdsGetLocalAddress(pAddr);
if (nErr) cerr << "Error: AdsGetLocalAddress: " << nErr << '\n';
pAddr->port = AMSPORT_R0_PLC_RTS1;

//PAE einlesen
Eingang00.ADSEinganglesenbool(pAddr, 0xF021, 0x190, 0x1);
Eingang01.ADSEinganglesenbool(pAddr, 0xF021, 0x191, 0x1);
Analogeingang1.ADSEinganglesenint(pAddr, 0xF020, 0x64, 0x2);
Analogeingang2.ADSEinganglesenint(pAddr, 0xF020, 0x66, 0x2);

//Hier muss die Programmlogik hin!

//PAA schreiben
Ausgang00.ADSAusgangschreibenbool(pAddr, 0xF031, 0x194, 0x1, Ausgang00.Getboolwert() );
Analogausgang1.ADSAusgangschreibenint(pAddr, 0xF030, 0x78, 0x2, Analogausgang1.Getintwert() );
 


// Close the communication port
nErr = AdsPortClose();
if (nErr) cerr << "Error: AdsPortClose: " << nErr << '\n';



}


----------



## entenhausen_dd (14 Oktober 2010)

Diesla schrieb:


> Hallo,
> 
> also wie die Implementrierung unter Visual Basic aussieht, kann ich dir nicht sagen. Ich programmiere nur in C++.
> Ich bilde in meinen C++-Programmen immer die Funktion einer SPS nach. D.h. ich lese zunächst das PAE ein (das sind eben irgendwelche Eingänge, Merker, usw.) Dann folgt die eigentliche Programmbearbeitung. Zum Schluss schreibe ich dann das PAA, gebe also die VKE's auf die Ausgänge oder Merker. Um das ganze unkompliziert hinzukriegen, habe ich die Funktionen für ADS, die es von Beckhoff ja gibt in eine Klasse verpackt. Diese Klasse (CEingabeausgabe) definiert für die Datentypen bool, int, float, und long folgende Methoden:
> ...


Hallo Diesla,

kannst du mir für dein Beispielprojekt evtl. das ganze Visual Studio Projekt zukommen lassen. Das Problem, so viel Erfahrung habe ich noch nicht mit Visual Studio. Vielleicht hast du auch ein Beispielprojekt wo du über die Kommandozeile einen bestimmten Taster ansprichst den du dann aktivierst (das gleiche als wenn man auf einen Taster draufdrück und auch als Unterschied diesen mal lange betätigt)
Danke dir


----------



## Diesla (4 November 2010)

Hallo,

entschuldige bitte, habe die letzten Wochen nicht mehr in's Forum geschaut. Wenn's dir noch was nutzt, kann ich dir morgen, wenn ich wieder am richtigen Rechner bin was schicken.


----------



## tom_x (5 November 2010)

Wenn du auf die Beckhoff-PLC mit einem Browser (Javascript) zugreifen willst, hätte ich auch was.


----------



## entenhausen_dd (5 November 2010)

Hallo Leute,

bin für jede Hilfe dankbar. Wenn jemand Beispiele für mich hat, nur her damit (evtl. auch ne kleine Hilfe wär net schlecht )
Damit ihr den Hintergrund versteht:
Möchte über Sprachsteuerung mein Licht steuern.
Das heißt:
Sprachsoftware auf Windows -> Befehlseingabe der Sprache gibt in Windows irgendein Kommando an die Beckhoff das z.B. das Licht einschaltet, dimmt, oder irgendwas.
Sollte dies nur in Visual Basic gehen, dann wär mir ein Beispiel sehr recht. Eine kleine Hilfe noch dazu wie ich Visual Basic mit der Beckhoff verbinde wär auch net schlecht.


----------



## Doofundstinkt (29 März 2011)

*Zugriff per JavaScript*

Hallo,

ich könnte noch ein paar Anfänger- Tips gebrauchen.

Ich hab das Beispiel ADS mit JavaScript jetzt auf meinen CX zum Laufen gebracht.

 [FONT=&quot]http://infosys.beckhoff.com/content/1031/tcsample_webservice/html/webservice_samplejs.html?id=10643[/FONT] 

Er kriegt die Verbindung hin und ruft Daten ab. Allerdings liegt die HTML Seite und die JavaScript - Datei momentan auf dem CX.

Ich hatte die Hoffnung, dass ich die beiden Dateien bzw. später die gesamte Homepage auf meinem Datenserver im Netzwerk bereitstellen kann (QNAP TS 109). Von da aus will ich dann mit allen Rechnern im Netzwerk, Android - Handys und natürlich dem IPAD auf die Visualisierung surfen.

Aber: Vom Datenserver ruft die Seite keine Daten ab. Ich bin davon ausgegangen, dass JavaScript Clientseitig arbeitet und der Datenserver für die Bereitstellung nichts können muss.

Was mache ich falsch? Lässt sich das Problem lösen?

Gruß

Ingo


----------



## tom_x (30 März 2011)

Du machst nichts falsch, es ist sogar alles in bester Ordnung. Ich hab dir auf deine Frage im SPS@Home-Forum was geschrieben. Für Android und Ipad hätte ich auch noch einen Tipp. Du musst dich nur entscheiden, in welchem Forum es weiter gehen soll.


----------



## Doofundstinkt (30 März 2011)

Hallo Tom,

besten Dank. Wenn das so ist, schließen wir diesen Thread und machen bei SPS@Home weiter. 

Gruß

Ingo


----------

