# CPU Start/Stop mit libnodave und C#



## TESTER (4 April 2012)

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.


----------



## Jochen Kühner (5 April 2012)

TESTER schrieb:


> 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.
> 
> ...



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.


----------



## TESTER (5 April 2012)

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.


----------



## Jochen Kühner (5 April 2012)

Beispiele sind im Source dabei,  die bibliothek nutzt auch libnodave intern!


----------



## Jochen Kühner (5 April 2012)

Was für ein Os hast du? Win7? Wenn ja ist es 64 Bit?


----------



## mogel (5 April 2012)

Hallo Tester,

das 


TESTER schrieb:


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



... und das


Jochen Kühner schrieb:


> [...] 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


----------



## TESTER (6 April 2012)

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.


----------



## TESTER (13 April 2012)

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ß


----------



## Jochen Kühner (13 April 2012)

TESTER schrieb:


> 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?
> ...



normalerweise ja!


----------



## TESTER (13 April 2012)

Kann ich die Kommunikation mit testMPI.exe von libnodave testen?


----------



## Jochen Kühner (13 April 2012)

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!


----------



## TESTER (18 April 2012)

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


----------



## bike (18 April 2012)

TESTER schrieb:


> Mit der  Billiglösung(USB/RS232 - RS232/MPI) konnte ich über den SimaticManager  auf die CPU zugreifen.


Wenn der Chip in dem Wandler das mitmacht, dann wird es funktionieren.
Denn nicht jeder Wandler macht alles.


bike


----------



## TESTER (19 April 2012)

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


----------

