# an 840D PLC Daten auslesen für C++ Programm



## D_Lar (14 März 2011)

Hallo,

hab mal ne Frage: Ich möchte an der 840D PLC Daten auslesen um in einer exe Datei auf darau zuzugreifen (C++). Es soll eine Anzeige der Variablen werden.
Wie kann ich das am besten machen? Hat von euch jemand schon Erfahrung damit?


----------



## bike (14 März 2011)

D_Lar schrieb:


> Hallo,
> 
> hab mal ne Frage: Ich möchte an der 840D PLC Daten auslesen um in einer exe Datei auf darau zuzugreifen (C++). Es soll eine Anzeige der Variablen werden.
> Wie kann ich das am besten machen? Hat von euch jemand schon Erfahrung damit?



Ja, habe ich.
Was willst du auslesen?
Auf der 840d läuft ein ncdde Server.
Da kannst du über DDE sehr komfortabel darauf zugreifen.


bike


----------



## D_Lar (14 März 2011)

hallo bike,

danke für deine schnelle Antwort. Ich möchte eine GUI als Visualisierung erstellen. Dabei möchte ich auf folgende Daten zugreifen:

- interne Antriebsgrößen z.B. Drehmoment
- PLC Daten: Werte aus einem Datenbaustein auslesen / evtl schreiben

Geht das über den ncdde Server?


----------



## Rainer Hönle (14 März 2011)

Geht auch mit ACCON-AGLink z. B. über TCP/IP (sl), NetLink (pl) oder die eingebaute Karte der PCU (pl).


----------



## D_Lar (14 März 2011)

Rainer Hönle schrieb:


> Geht auch mit ACCON-AGLink z. B. über TCP/IP (sl), NetLink (pl) oder die eingebaute Karte der PCU (pl).



ja, stimmt, aber ich möchte wirklich nur eine simple Visuallisierung machen. Eine Antriebsvariable und vielleicht 3-5 PLC Variablen, dass wäre alles was ich anzeigen will. Wie ich es sehe, würde ich nur einen absolut kleinen Teil dieser Biblioteken benutzen.
Eine andere Lösung wäre mir lieber


----------



## Rainer Hönle (14 März 2011)

Dann bleibt erst einmal nur der DDE-Server. Aber Achtung: dort sind auch viel mehr Funktionen drin und die Aufgabe macht dann auch nur einen kleinen Teil aus ;-)


----------



## D_Lar (15 März 2011)

Hallo, 

ich habe mir auch überlegt, es mit DDE zu  versuchen. Wenn ich eine HIM Advanced habe müsste der ncdde-Server ja  laufen, oder?

Folgenden Beispielcode hab ich in einer Doku gefunden (für C++):


DWORD idInst; // erzeugt mit DdeInitialize
HSZ hszService, hszTopic, hszItem; // String Handles
HCONV hConv; // Conversation Handle

hszService = DdeCreateStringHandle ( idInst , ”ncdde” , NULL );
hszTopic = DdeCreateStringHandle ( idInst , ”NCU840D” , NULL );
hszItem = DdeCreateStringHandle ( idInst , 
       Ä”/Channel/GeometricAxis/toolBaseDistToGo[1]” , NULL );

hConv = DdeConnect(idInst,hszService,hszTopic,NULL);
// Verbindungsaufbau zum Server
// Hotlink folgt
if ( DdeClientTransaction ( (LPBYTE)NULL , 0 , hConv , hszItem,
       ÄCF_TEXT ,XTYP_ADVSTART|XTYP_ACKREQ , 1000 , NULL )
       Ä==TRUE) { } // Hotlink Aufbau erfolgreich


Ist das der richtige Weg? Oder verbergen sich dahinter noch ungeahnte Schwierigkeiten, um  an die PLC Variablen zu kommen? Oder würdet ihr einen ganz anderen Weg nehmen?
Ich hab zwar schon viel in C++ Programmiert, aber das ist für mich doch etwas Neuland.


----------

