C++ TwinCat PLC

hellrazz

Level-1
Beiträge
22
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi alle.

Was bei mir richtig funktioniert ist:
Ich kann mit mein PC mit Beckhoff kommunizieren und alle Beckhoff Teilen kann ich auch in der System Manager von Twincat sehen.

Was nicht funktioniert:
Ich habe ein Signalgenerator mit C++ Konsulanwendung geschrieben. Ich will die Ausgangswerte meine C++ Programm in Analog Ausgang von Beckhoff Klemmen zB EL 4114 messen (mit digitale Oszilloscope)


1) Ist das überhaupt möglich?
2) Wenn ja wie?

Ich hoffe, dass ich mit solche Anfänger Fragen euch nicht beleidigt habe!!
 
Ja das geht.

Du kannst mit Twincat ADS direkt aus C++, Delphi, C#, Labview ...... auf die Variablen in deinem SPS Programm zugreifen.
Hier jetzt zu erklären wie genau das geht, würde wohl den Rahmen sprengen, zumal es da verschiedene Lösungen gibt.

Such einfach mal im Beckhoff Infosys nach ADS oder C++. Es gibt da auch schon ein paar fertige Beispiele von Beckhoff.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Neue Problembeschreibung

Ich habe was anderes überlegt.
Ich habe ein Beispiel von Twincat gefunden. In diese Beispiel schreibt man irrgend eine Variable in irrgend eine Klemme.

Ich will das mit EL 4114 einbinden und dort mein Variable messen.

Alles läuft richtig bis Port Einstelleung. Ich weiss nicht wie ich die richtige Addresse von EL4114 in mein Programm schreiben soll.

hier ist C++ Code:
=======================================================
#include <iostream>
#include <conio.h>
#include <windows.h>
#include "c:\twincat\ads api\tcadsdll\include\tcadsdef.h"
#include "c:\twincat\ads api\tcadsdll\include\tcadsapi.h"

using namespace std;

void main()
{
long nErr, nPort;
AmsAddr Addr;
PAmsAddr pAddr = &Addr;
DWORD dwData;

// 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;

// Read and diplay values from MD0
do
{
nErr = AdsSyncReadReq(pAddr, 0x4020, 0x0, 0x4, &dwData);
if (nErr) cerr << "Error: AdsSyncReadReq: " << nErr << '\n';
cout << dwData << '\n';
cout.flush();
}
while (getch() == '\r'); // Read next value (Carriage return is delimitter) , stop reading otherwise

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

Ich glaube, dass ich bei (AdsSyncReadReq) was ändern muss aber ich weiss nicht wie.

Hier ist was ich über EL 4114 in Twincat finde

ADS info: Port: 300, IGrp: 0x11004, IOffs: 0x1A, Len: 2
 
Zurück
Oben