CPU Start/Stop mit libnodave und C#

TESTER

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

Ich arbeite derzeit an meiner Studienarbeit und möchte gerne aus einem Anwenderprogramm auf die Prozessdaten einer Siemens CPU zugreifen. Bei der Recherche bin ich auf die Bibliothek libnodave gestoßen. Als Einstieg habe ich versucht die CPU in Start bzw. Stop zu schalten. Dazu habe ich die Anwendung testMPI verwendet da mein PC über Seriel/MPI-Adapter mit der CPU verbunden ist. Nach mehreren Versuchen konnte ich die CPU nach Wunsch starten und stoppen. Jetzt möchte ich im 2.Schritt dieselbe Funktion mit einem Anwenderprogramm realisieren. Dazu soll jeweils mit einem Button Start und einem Button Stop die CPU gestartet bzw. gestoppt werden. Als Grundlage verwende ich das Beispielprogramm simpleMPI.cs. Das Programm lässt sich eigentlich problemlos starten. Ich scheitere jedoch beim Verbindungsaufbau. Ich denke es liegt an libnodave.setPort(). Diese Funktion gibt immer -1 zurück.

fds.rfd = libnodave.setPort("COM1", "19200", 'O');

Vielleicht kann mir jemand eine Tipp geben bzw. sagen ob mein Ansatz mit simpleMPI.cs grundsätzlich richtig ist.
Ich bin für jede Hilfe dankbar da ich noch so viele C# Kenntnisse habe.
 
Hallo,

Ich arbeite derzeit an meiner Studienarbeit und möchte gerne aus einem Anwenderprogramm auf die Prozessdaten einer Siemens CPU zugreifen. Bei der Recherche bin ich auf die Bibliothek libnodave gestoßen. Als Einstieg habe ich versucht die CPU in Start bzw. Stop zu schalten. Dazu habe ich die Anwendung testMPI verwendet da mein PC über Seriel/MPI-Adapter mit der CPU verbunden ist. Nach mehreren Versuchen konnte ich die CPU nach Wunsch starten und stoppen. Jetzt möchte ich im 2.Schritt dieselbe Funktion mit einem Anwenderprogramm realisieren. Dazu soll jeweils mit einem Button Start und einem Button Stop die CPU gestartet bzw. gestoppt werden. Als Grundlage verwende ich das Beispielprogramm simpleMPI.cs. Das Programm lässt sich eigentlich problemlos starten. Ich scheitere jedoch beim Verbindungsaufbau. Ich denke es liegt an libnodave.setPort(). Diese Funktion gibt immer -1 zurück.

fds.rfd = libnodave.setPort("COM1", "19200", 'O');

Vielleicht kann mir jemand eine Tipp geben bzw. sagen ob mein Ansatz mit simpleMPI.cs grundsätzlich richtig ist.
Ich bin für jede Hilfe dankbar da ich noch so viele C# Kenntnisse habe.

Geht denn der Adapter mit dem Simatic Manager? Die Baudrrate und Parität im Simatic Manager sind gleich? Was ist es denn für ein Adapter, orginal Siemens?

PS: Wenn du C# mit libnodvae verwenden willst, probiers mal mit meiner ConnectionLib (http://siemensplctoolboxlib.codeplex.com/) dann brauchst du dich um vieles lowLevel zeugs nicht zu kümmern.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Herr Kühner,

vielen Dank für ihre schnelle Antwort.

Der Adapter funktioniert. Er wurde schon mit dem Simatic Manager getestet und wie bereits erwähnt, funktioniert er auch mit dem Testprogramm "testMPI" von libnodave. Damit konnte ich die CPU abwechselnd in den Zustand Start und Stop schalten. Der Adapter ist original von Siemens (6ES7 972-0CA23-0XA0). Da die Hochschule keine Geld hat muss die Lösung für den Zugriff auf Prozessdaten einer CPU natürlich kostengünstig sein. Daher der Versuch mit libnodave. Kann ich denn mit der ConnectionLib das gleiche Ergebnis erzielen wie mit libnodave? Gibt es Beispiele um sich darin einzuarbeiten bzw. meine Anwendung darauf aufzubauen?

Nochmals vielen Dank für ihre Antwort.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Tester,

das
[...] da ich noch so viele C# Kenntnisse habe.

... und das
[...] Wenn ja ist es 64 Bit?

falls Du ein 64 Bit BS hast, dann stelle mal das Build von "Any CPU" auf "x86" um. AFAIR gibt es libnodave nur für 32 Bit. Wenn Dein Build auf "Any CPU" steht und Du ein 64 Bit BS nutzt, dann versucht Dein 64 Bit Programm eine 32 Bit DLL zu laden. Das geht nicht.

hand, mogel
 
Im moment programmiere ich auf einem Win7 Rechner mit 64 Bit. Entwicklungsumgebung ist Visual Studio 2010.
Die .exe wird jedoch auf einem XP Rechner ausgeführt da dieser eine serielle Schnittstelle hat und mit der CPU verbunden ist. Da es sich dabei um einen Hochschulrechner handelt befindet sich derzeit noch keine Entwicklungsumgebung darauf. Ich hoffe das zeitnah eine installiert wird.
Dadurch sind zur Zeit vernünftige Tests schwierig.

Vielen Dank für die Antworten. Werde versuchen die Vorschläge umzusetzen.
 
Hallo,

bin leider immer noch in der Anfangsphase meiner Studienarbeit. Nachdem jetzt endlich auf dem Schul-PC Visual Studio installiert wurde kann ich auch die Beispiele der libnodave.dll und DotNetPLCToolBoxLib näher untersuchen. Da es an der Hochschule derzeit nur einen Seriell/MPI-Adapter von Siemens gibt möchten wir diesen gerne durch einen USB/MPI-Adapter, ebenfalls von Siemens, ersetzen.
Könne alle Funktionen von libnodave und DotNetPLCToolBox auch mit dem USB/MPI Adapter verwendet werden?

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

bin leider immer noch in der Anfangsphase meiner Studienarbeit. Nachdem jetzt endlich auf dem Schul-PC Visual Studio installiert wurde kann ich auch die Beispiele der libnodave.dll und DotNetPLCToolBoxLib näher untersuchen. Da es an der Hochschule derzeit nur einen Seriell/MPI-Adapter von Siemens gibt möchten wir diesen gerne durch einen USB/MPI-Adapter, ebenfalls von Siemens, ersetzen.
Könne alle Funktionen von libnodave und DotNetPLCToolBox auch mit dem USB/MPI Adapter verwendet werden?

Gruß

normalerweise ja!
 
Puh, das weiss ich nicht, denke aber schon. Aber du kannst auch die Beispielprogramme in meiner Bibliothek verwenden, in dem Konfig dialog, in dem man die Verbindung einstellt, kann man sie auch testen!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Folgender Stand meiner Studienarbeit:
1. Siemens USB/MPI-Adapter mit libnodave/testS7online.exe erfolgreich getestet.
2. Eine kleine Anwendung geschrieben mit der ich die CPU in die Zustände Start/Stop schalten kann und Werte aus einem DB lesen kann. Die Kommuniktion erfolgt mit einem RS232/MPI-Adapter von Siemens.

Soweit so gut. Ich hab jedoch noch folgende offenen Punkte.
Die Anwendung soll später auf einem beliebigen Laptop gestartet und von dort auf die angeschlossene CPU zugegriffen werden.
Problem ist, dass die Hochschule derzeit nur einen Siemens RS232/MPI-Adapter besitzt. Da an Laptop's nur noch selten eine COM-Schnittstelle zu finden ist gibt es die Möglichkeit einen USB/R232-Adapter zu kaufen und den vorhandenen Siemens RS232/MPI-Adapter weiter zu verwenden oder einen Siemens USB/MPI-Adapter für teures Geld zu kaufen. Mit der Billiglösung(USB/RS232 - RS232/MPI) konnte ich über den SimaticManager auf die CPU zugreifen. Mit der Testanwendung von libnodave testMPI.exe konnte ich jedoch keine Verbindung herstellen. Ist mit dieser Konstellation überhaupt eine Verbindung mit libnodave möglich? Für Antworten und Anregungen wäre ich sehr dankbar.

Tester
 
Hallo bike,

vielen Dank für die Antwort.

Wie gesagt, mit der Billiglösung kann ich auf die CPU über SimaticManager zugreifen. Meine Frage ist vielmehr ob damit auch libnodave funktioniert? Mit der testMPI-Anwendung von libnodave bekomme ich keine Verbindung zustande. Andernfalls müsste die Hochschule den USB/MPI-Adapter kaufen. Zusätzlich wäre für mich noch interessant ob libnodave mit den verschiedenen Adaptern von Siemens auch ohne SimaticManager und nur mit dem dazugehörigen Treiber funktioniert?

Gruß Tester
 
Zurück
Oben