Datenbaustein per TCP/IP auslesen mit C#

Darkhobbit

Level-1
Beiträge
10
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich möchte Daten direkt aus einem Datenbaustein mit einem PC Programm auslesen ohne dabei AGSend/AGReceive zu benutzen. In der SPS ist eine CP343 eingebaut.
Mein Problem ist, dass ich dazu keinerlei Unterlagen oder Beispiele finde, wie ich unter C# eine Verbindung aufbauen und auf Daten zugreifen kann. Was noch hinzukommt ist, das ich diese Verbindungssachen selber Programmieren möchte.
Kann mir da einer von Euch weiterhefen, evtl. mit Links oder Beispielen.
Ich bin für jede Hilfe dankbar.
MfG
Darkhobbit
 
Darkhobbit schrieb:
Mein Problem ist, dass ich dazu keinerlei Unterlagen oder Beispiele finde, wie ich unter C# eine Verbindung aufbauen und auf Daten zugreifen kann.
Schon mal libnodave ausprobiert ?
Da sind auch Beispiele für C# dabei.

Gruß Axel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Axel,

erst einmal Danke für die schnelle Antwort,nein, ich habe libnodave noch nicht ausprobiert. Ich dachte es gäbe auch einfache FAQ's zu diesem Thema. Bei libnodave handelt es sich um eine ganze API, wobei die dll selbst in c++ ist, soweit ich das beurteilen kann.
Ich habe es aber runtergeladen und probiere mal die Beispiele aus.
 
Darkhobbit schrieb:
Ich dachte es gäbe auch einfache FAQ's zu diesem Thema. Bei libnodave handelt es sich um eine ganze API, wobei die dll selbst in c++ ist, soweit ich das beurteilen kann.
Die dll hat Zottel in C geschrieben, damit sie aus möglichst vielen Programmiersprachen heraus verwendet werden kann. Und eine API brauchst Du schon,wenn Du nicht das ganze Kommunikationsprotokoll nachprogrammieren willst. Und da hat uns Zottel zum Glück eine Menge Arbeit abgenommen, vor allem, da das Protokoll nicht offengelegt ist. Ein FAQ zum Thema "Wie implementiere ich eine S7-Kommunikation ohne API" wirst Du also vergeblich suchen.


Gruß Axel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich bin neu hier und wollte ein paar Tests mit libnodave machen (C#). Allerdings wenn ich das Testprogramm aufrufe bekomme ich immer folgende Fehlermeldung:
Code:
Unbehaldelte Ausnahme: System.DllNotFoundExeption: Die DLL (libnodave.dll) kann nicht geladen werden. 
at libnodave.openSocket(Int32 port, String portName)
at test.Main(String[] args)
Die Dll ist aber in dem Ordner vorhanden. Was mache ich falsch?

Gruß MiNati
 
Sollte dann eigentlich gehen, aber du könntest ja die DLL mal zusätzlich in das Windows-Verzeichnis kopieren. Dann muß die DLL gefunden werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich das Projekt in C# nachbaue kommt beim starten folgende Fehlermeldung:
Code:
Die DLL libnodave.dll: Das angegebene Modul wurde nicht gefunden. (Ausnahme von HRESULT: 0x8007007E) kann nicht geladen werden.
 
Wie genau machst du den DLL-Import?

Code:
// Externe dll-Funktion Importieren

  [DllImport("Name.dll")]
  protected static extern int dll_Funktionsname(Datentyp Parametername);
  // Methode die es ermöglicht von C# aus auf die dll 
  // zuzugreifen
  public int Funktionsname_in_C_sharp()
  {
    return dll_funktionsname(Übergabeparamter);
  }

http://msdn.microsoft.com/de-de/library/bb979589.aspx#ID0E4D
 
Datenbaustein auslesen...

Hallo Zusammen,

ich habe das selbe Problem, dass ich aus der S7 einen Datenbaustein auslesen möchte (bzw. muss). Libnodave habe ich soweit zum laufen bekommen.

Das oben beschrieben Problem ist einfacher zu lösen, wenn man die libnodave.dll UND die libnodave.net.dll in das Projekt integriert (oder in den Debug-, bzw. Release-Ordner kopiert). Dann wird sie von der Assembly gefunden. (Bestimmt bereits gelöst)

Nun zu meiner Frage: Wie kann ich einen kompletten Datenbaustein (z.B. mit dem "Name" DB822) auslesen? Die Struktur des Bausteins wird mir noch mitgeteilt, allerdings weiß ich keine Anfangsadresse o.ä. - nur die Bezeichnung.

Vielen Dank für eure Hilfe!
 
Zurück
Oben