# CX1000-Zugriff mit Delphi ohne TwinCat und ohne Modbus



## jank-automation (7 Juni 2008)

Hallo.

Ich möchte mit einem Delphiprogramm (nicht .net) auf einen CX1000 zugreifen.
Dieser läuft mit XP emb. kann ich aber auch auf CE umstellen.
Der Zugriff mit Modbus funktioniert sicher, ist aber zu aufwendig und begrenzt.
Ich möchte auf Array´s ist den globalen Variablen zugreifen.
Den Rechner, auf dem das Programm laufen soll,
möchte ich aber vor TwinCat verschonen!!!

Hat dazu jemand Erfahrungen?

Danke


----------



## drfunfrock (7 Juni 2008)

Das Stichwort ist das ADS-Protokoll. Dazu gibt es Info bei Beckhoff und diverse Threads hier. Es gibt DLL's als auch .Net-Interfaces.


----------



## jank-automation (8 Juni 2008)

*ADS-Protokoll*

Das alles auf das ADS-Protokoll hinausläuft, habe ich mir gedacht.
Kann ich das in mein Delphiprojekt so einbinden, das ich keine TwinCat-Installation benötige?
Ziel soll sein, daß ich mein Programm auf einen USB-Stick lege,
und dann an einem beliebigem Rechner "mal schnell" auf den CX1000 zugreife.
(Delphi 2007, nicht .net)
Bei Zugriff über Modbus habe ich das so gemacht.
Da die Datenmengen aber stark zunehmen, stoße ich da an Grenzen.
Die Unterstützung von Beckhoff ...

Noch einige Worte "Warum Delphi?".
1. Es ist bezahlt.
2. Ich kann damit umgehen (außer ADS).
3. Viele Daten sollen in Grafiken dargestellt und aufgezeichnet werden.
4. Wenn ich meinem Kunden Lizenzkosten berechne, kann ich sie behalten.


----------



## Jush (8 Juni 2008)

Hallo,

Ich habe ebenso ein Program erstellt, das ohne TwinCat mit einer Beckhoff Steuerung kommunizieren kann. Mein Ausweg war ebenso Modbus, da die OCX und die dll beide TwinCat erforderen.

Laeuft deine Modbus-Kommunikation ueber Seriell oder TCP?
TCP ist auch bei Modbus wesentlich schneller.

Warum Delphi, C++ usw.??
Weil damit alles wesentlich schneller und flexibler laeuft als "normale" HMI loesungen. 

MfG


----------



## Zottel (8 Juni 2008)

Wie Dr funfrock schon sagte, gibt es von Beckhoof eine dll für das ADS Protokoll. Die kannst du auch von Delphi aus benutzen.
Solltest du das nicht nicht wollen: Ich habe mir mal meine eigene Bibliothek geschrieben, um ADS von Linux aus zu benutzen. Allerdings in C.


----------



## jank-automation (9 Juni 2008)

Noch ein Wort zu Delphi:
Ich habe versucht mit WinCC auf eine S7-200 zuzugreifen
und im Sekundentakt 8 Analogwerte aufzuzeichnen und als Grafik anzuzeigen.
Mein schöner Pentium IV hat das nicht geschaft (abgestürzt).
Dann habe ich das gleiche mit Delphi versucht.
Jetzt schaft das ein alter Pentium I der noch rumstand.
Es ist sicher an manchen Stellen aufwendiger,
aber man hat mehr Möglichkeiten.

Bei Beckhoff kann man mit der dll ohne TwinCat zugreifen.
Nur der Zugriff auf Variablenname geht nicht.
Ich möcht gern auf Arrays zugreifen.
Das ist einfach viel weniger Aufwand als bei Modbus.
Modbus lief bei mir über TCP.
Der Vorteil von Modbus ist, daß ich so auch auf Wago oder andere zugreifen kann.

Ich suche also den Zugriff auf Beckhoff-Arrays
aus Delphi ohne TwinCat.


----------



## Jush (9 Juni 2008)

Hallo,

Im Moment screibe ich ein Programm in Delphi 2006, das mit der dll (TcAdsDll.dll) auf Variablennamen zugreift.

//Variablen definieren
arrHMI_ActValues: array[1..25] of Integer;
Handle_arrHMI_ActValues: Integer;
const sarrHMI_ActValues: array[0..25] of Char = '.arrHMI_ActValues'; //Symbol Name in der SPS  

//Handle anfordern
AdsResult := AdsSyncReadWriteReq(@LocalAddr, ADSIGRP_SYM_HNDBYNAME, 0, sizeof(Handle_arrHMI_ActValues), @Handle_arrHMI_ActValues, SizeOf(sarrHMI_ActValues), @sarrHMI_ActValues);

//Variable lesen  
AdsResult := AdsSyncReadReq( @LocalAddr, ADSIGRP_SYM_VALBYHND, frmMain.Handle_arrHMI_ActValues, sizeof(frmMain.arrHMI_ActValues), @frmMain.arrHMI_ActValues);

//Handle freigeben
AdsResult := AdsSyncWriteReq( @LocalAddr, ADSIGRP_RELEASE_SYMHND, 0, sizeof(Handle_arrHMI_ActValues), @Handle_arrHMI_ActValues);


Meines wissens nach wird die Namenaufloesung in der SPS selber gemacht, und nicht mit der dll.
Die kleine SPS-Typen von Beckhoff haben diese Funktion leider nicht implementiert.

Bist Du dir sicher, dass die dll ohne TwinCat laeuft?


----------



## jank-automation (9 Juni 2008)

Das werde ich nochmal prüfen müssen!

Ich habe jetzt schon so viele Wege versucht,
daß ich bald schon kein Lust mehr habe.

Aber der Kunde zwingt mich mich Geld dazu,
was soll ich machen.:-D


----------



## drfunfrock (9 Juni 2008)

Der Grund warum die Demo-Version immer mitinstalliert wird, dass dort auch die ADS-Bibliotheken und der Router mit installiert werden. Man kann diese auch getrennt von Twin-Cat für einen kleinen Preis bei Beckhoff beziehen. Soweit ich es aber weiss, benötigt man immer einen ADS-Router und der ist in der Demo von TwinCat eingebaut. Vielleicht ist der auch in der TwinCat-Lib von Beckhoff drin?

Allerdings würde ich beim Lesen die Notification-Methode vorziehen, weil das weniger Ressourcen benötigt.


----------



## jank-automation (9 Juni 2008)

Jetzt weiß ich es wieder!

Ohne TwinCat nutzt man den Webservice.

Aber das geht laut Beckhoff nur mit Delphi8.net.
Ich möchte es aber gern mit Delphi2007 für Win32 machen.


----------

