# VB.Net Visu auf Vipa SPS über Libnodave



## Turbman (28 Juli 2005)

Hi, als erstes will ich sagen das ich hier neu bin und finde das Forum sehr Informativ.
Nun zu meinem Problem.

Ich habe eine VB.Net Visualisierung einer Anlage über das IBH-Netlink Kabel das auf eine Siemens SPS über den MPI Port zugreift estellt.
Da wir aber in Zukunft vorhaben die Anlagen mit der Vipa SPS CPU 315SB auszustatten, fragte ich mich ob das nicht vieleicht schneller und kostengünstiger (da IBH-Kabel oder OPC-Server entfallen) über den LAN Port der CPU mit der Libnodave dll für Win32 zu realisieren wäre.

Da die Visualisierung schon steht und die Prototypanlage mit dem IBH Kabel realisiert wurde, würde ich gerne wissen wie der Aufruf der Libnodave Win32.dll in VB.Net aussieht.
Die dll als Verweis einzufügen funktioniert leider nicht.

Ich hoffe hier kann mir jemand helfen.


----------



## lorenz2512 (28 Juli 2005)

Hallo,
da wirst Du wohl auf Zottel warten müßen (das ist der Entwickler von Libnodave), für VB.NET ist noch keine fertige Applikation greifbar  , wenn ich das richtig Überblicke (hab erst angefangen) ist die dll in C, müßte sich also auch einbauen lassen, na und dann kommt die ganze Deklarationsgeschichte. Wenn Du da was halbwegs brauchbares zustande bekommst wäre ich sehr interessiert, denn ich habe rumgegooglet und auf den englisch sprachigen Seiten, liest man "ist ganz einfach, das auf VB umzustricken" ein Beispiel habe ich aber noch nirgends entdecken können (wohl doch nicht sooooo einfach).


----------



## Turbman (28 Juli 2005)

Ja, gegooglet hab ich deswegen auch schon.
Beispiele dafür such man wirklich vergebens.
Werde auf jeden fall auch selbst mal ersuchen die dll zu deklarieren.
Wenn ich Erfolg habe werde ich es hier Posten.
Wenn aber jemand anderes das schon gemacht haben sollte wäre ich dankbar für ein paar Informationen.


----------



## lorenz2512 (28 Juli 2005)

Hallo,
hier waren schon einige im Forum die wollten Libnodave in Java einbauen oder dorthin einbauen, hat man nie wieder was von gehört, deshalb ist Zottel wohl etwas entäuscht (zu Recht)wenn er versucht den Leuten zu helfen und kurz vor Schluß hauen Sie in den Sack.


----------



## seeba (28 Juli 2005)

Mich würde es ebenfalls interessieren.


----------



## Zottel (28 Juli 2005)

Der aktuellen Version von libnodave liegen Beispiele in C# bei. Soweit ich das sehe, kann ja in .NET etwas in jeder Sprache geschrieben werden und mit jeder anderen benutzt werden. Es sollte also möglich sein, daß du dir anhand der C#-Beispiele ein Assembly "baust", das von VB.NET aufgerufen wird und seinerseits Libnodave aufruft.
Die direkte Zusammenarbeit mit VB scheitert daran, daß VB sich mit Fehler 49 über "falsche Aufrufkonvention" oder so ähnlich beschwert. Das liegt wiederum (nach meinem gegenwärtigen Wissensstand, Ich muß mich erst schlau machen bezüglich Microsoft Compilern) daran, daß es verschiedene Arten gibt, C-Funktionen zu deklarieren (ohne Zusatz, __stdcall, __cdecl) u.s.w..
Ich habe letzte Woche mit Excel und VBA probiert. Es geht erst, wenn ich libnodave neu übersetze und alle Aufrufe mit __stscall versehe.
Diese Version ist noch nicht veröffentlicht, weil ich zunächst ausprobieren wollte, daß es keine anderen Nachteile bringt.


----------



## lorenz2512 (28 Juli 2005)

Hallo,
ich habe es doch gewußt, Du hast ein Herz für die Vb'ler, damit öffnet sich deine Anwendung einer sehr großen Masse.


----------



## seeba (28 Juli 2005)

Zottel schrieb:
			
		

> Der aktuellen Version von libnodave liegen Beispiele in C# bei. Soweit ich das sehe, kann ja in .NET etwas in jeder Sprache geschrieben werden und mit jeder anderen benutzt werden. Es sollte also möglich sein, daß du dir anhand der C#-Beispiele ein Assembly "baust", das von VB.NET aufgerufen wird und seinerseits Libnodave aufruft.
> Die direkte Zusammenarbeit mit VB scheitert daran, daß VB sich mit Fehler 49 über "falsche Aufrufkonvention" oder so ähnlich beschwert. Das liegt wiederum (nach meinem gegenwärtigen Wissensstand, Ich muß mich erst schlau machen bezüglich Microsoft Compilern) daran, daß es verschiedene Arten gibt, C-Funktionen zu deklarieren (ohne Zusatz, __stdcall, __cdecl) u.s.w..
> Ich habe letzte Woche mit Excel und VBA probiert. Es geht erst, wenn ich libnodave neu übersetze und alle Aufrufe mit __stscall versehe.
> Diese Version ist noch nicht veröffentlicht, weil ich zunächst ausprobieren wollte, daß es keine anderen Nachteile bringt.



Werde ich gleich mal ausprobieren. Hab hier ja Zugriff auf VS.NET ENT ARCH. Deine lib unterstützt ja ISO over TCP, oder?


----------



## Zottel (28 Juli 2005)

lorenz2512 schrieb:
			
		

> Hallo,
> ich habe es doch gewußt, Du hast ein Herz für die Vb'ler, damit öffnet sich deine Anwendung einer sehr großen Masse.


Anfangs war ich der Meinung, daß es recht, wenn ich die C-Quellen zur Verfügung stelle. Jeder, der schon einmal eine Funktion in C geschrieben und aus VB aufgerufen hat, sollte die nötigen Anpassungen schneller und leichter vornehmen können...
Genauso mit der Portierung von Linux nach Windows.
Ok, ich finde mich damit ab, daß ihr alle "Fertigfutter" braucht...


----------



## lorenz2512 (28 Juli 2005)

Hallo Zottel,
deine Leidensfähigkeit ist noch lange nicht ausgereizt, gib doch mal EXCEL oder Word Kurse bei der KVHS und Du würdest beten einen von UNS Dussels dabei zu haben


----------



## Zottel (28 Juli 2005)

lorenz2512 schrieb:
			
		

> Hallo Zottel,
> deine Leidensfähigkeit ist noch lange nicht ausgereizt, gib doch mal EXCEL oder Word Kurse bei der KVHS und Du würdest beten einen von UNS Dussels dabei zu haben


Ich glaube, ich würde manchem raten, doch lieber Papier und Bleistift zu nehmen...
Hier etwas "Halbfertigfutter": Die mit __stdcall kompilierte .dlll sowie ein Programm, das aus  Excel libnodave nutzt. Es enhält für viele der wichtigsten Funktionen die VB-Deklarationen.


----------



## lorenz2512 (28 Juli 2005)

Hallo Zottel,
hab mir das Modul angeschaut, einfach PRIMA, das ist schon wo man sich heimisch fühlt. Und nimm das alles nicht tragisch, bist eben eine Minderheit. :lol:  Ich glaube heute hast Du ein paar Leute glücklich gemacht.


----------



## Zottel (28 Juli 2005)

So, und nachdem das Zeug nun in 90 Minuten 52 mal heruntergeladen wurde, wünsche ich mir auch ein paar Rückmeldungen.


----------



## lorenz2512 (28 Juli 2005)

Hallo,
nun sei doch nicht so ungeduldig, habe jetzt  keine S7 zur verfügung, aber wenn ich schon mal sehe das der Comm-port angesprochen wird.....


----------



## Zottel (28 Juli 2005)

lorenz2512 schrieb:
			
		

> Hallo,
> nun sei doch nicht so ungeduldig, habe jetzt  keine S7 zur verfügung, aber wenn ich schon mal sehe das der Comm-port angesprochen wird.....


Na ja, ich meine nicht dich, sondern in 1.Linie die 53 anderen. Zum einen meine ich, daß durch vorangegangene Diskussionen der Eindruck entstehen konnte, Libnodave sei schwer zu handhaben oder funktioniere nur manchmal oder nicht bei jedem. Da würden Erfolgsmeldungen eine schöne Ergänzung ergeben.
Zum anderen habe ich selbst letzte Woche zum 1.Mal VBA angefaßt. Daher können mir VBA-Füchse bestimmt noch Tipps geben. EXCEL-Füchse könnten Beispiele schicken, was sie damit anfangen.
Schließlich würde mich auch interessieren, ob jemand Libnodave unter Windows CE oder Windows mobile einsetzen konnte.


----------



## Anonymous (28 Juli 2005)

wo kann ich das runterladen?


----------



## Zottel (28 Juli 2005)

Attachments kannst du nur sehen und runterladen, wenn du angemeldet bist. Du kannst es aber auch auf
http://libnodave.sf.net
unter "Patches" finden. Zunächst dem Link "Download Archives" folgen.


----------



## jonko (28 Juli 2005)

jetzt geht es, danke.


----------



## Anonymous (28 Juli 2005)

ja leider kein komplettes Excel-Projekt, aber ausbaufähig.


----------



## seeba (28 Juli 2005)

So MPI läuft... Und wie das ganz jetzt über ISO over TCP?


----------



## Zottel (28 Juli 2005)

Unter den Deklarationen fehlt noch die funktion openSocket, um eine TCP/IP-Verbindung herzustellen. Das Ergebnis von openSocket benutzt du in daveNewinterface, so wie vorher das von setport.
die Deklaration von openSocket sollte in etwa so aussehen:

function openSocket(byVal port As Long, byVal peer As String) Alias "_openSocket@8" As Long

Schau dir am besten die C-Quellen von testMPI.c und testISO_TCP.c im Verzeichnis simplified an.
Und du mußt daveProtoISO_TCP als protokoll angeben.


----------



## Zottel (28 Juli 2005)

Noch etwas "Fertigfutter": Die folgende Datei enthält eine Variante von sub readFromPLC, die erfolgreich mit IBH-NetLink gelaufen hat.
Damit habt ihr gültige Deklarationen von openSocket und daveSetTimeout. Die sind in gleicher Weise für ISO over TCP zu gebrauchen. Hatte aber keine SPS mit Ethernet oder CP zur Hand.


----------



## Lazarus™ (28 Juli 2005)

Hi Zottel,

da ich nun wieder etwas mehr Zeit für "Hobby"    habe, werde ich mal sehen, ob es nicht noch eine Aufgabe für mich gibt. Du weisst, mein Steckenpferd ist Pascal/Delphi. Wir hatten ja schon mal geplaudert, mich würde ein Interface zum CP5611 und USB interessieren...
Also über RS232 läuft das LinNoDave ja echt Supi und macht auch nach SPS-Ausfall wieder weiter...

Gruß

Lazarus

P.S.: Meine Webpage wird eventuell auch wiederbelebt, aber mit breiter gefächerten Themen  :wink:


----------



## Zottel (29 Juli 2005)

Lazarus™ schrieb:
			
		

> Hi Zottel,
> da ich nun wieder etwas mehr Zeit für "Hobby"    habe, werde ich mal sehen, ob es nicht noch eine Aufgabe für mich gibt. Du weisst, mein Steckenpferd ist Pascal/Delphi. Wir hatten ja schon mal geplaudert, mich würde ein Interface zum CP5611


Na ja, von dem CP5611 bin ich nicht so begeistert:
Unter Windows könnte man die vorhandenen Treiber und Bibliotheken nutzen. So macht das AgLink wahrscheinlich auch. Unter LINUX muß man bei 0 beginnen. Brächte man eine hypothetische Linux-Lösung nach Windows, vertrüge es sich nicht mehr mit Step7 oder anderen Produkten, die auf den Siemens-Treibern aufsetzen.
Lohnt der doppelte Aufwand?
Im Prinzip ist der CP5611 wohl ein Profibus-Master ASIC (hab die Typenbezeichnug vergessen), das mit einem PCI-Interface verbandelt ist. Das ASIC ist dokumentiert und die Dokumetation frei zugänglich. Wenn man wüßte, wie seine Register und der dual-port-Speicher in den PCI-Adressraum eingeblendet werden, könnte man Software dafür schreiben. Leider hat das ASIC so wenige lesbare Register, noch dazu solche, deren Inhalt nach einem Reset definiert wäre, daß es etwas schwer herauszufinden ist.
CP5611 paßt nicht ins Notebook. CP5511 paßt nicht in einen Desktop-PC.
Wenn ich einen PC in eine Maschine/Produktionshalle stelle, ist es das beste, er hat keine eingebaute Zusatzhardware und bootet vom Netzwerk. Dann kann man einfach einen anderen hinstellen, keine Bastelei, keine Installation.


> und USB interessieren...


Hier wird es richtig interessant: 
CP an USB wäre also ideal. Nun gibt es ja USB/MPI(Profibus)-Adapter. Leider sind das jedoch alles serielle Adapter. Das bedeutet, die USB-Seite muß dazu bereit sein, einzelne Zeichen zu empfangen. Im Prinzip ein Interrupt pro Zeichen (vom FIFO abgesehen).
Man müßte also nur mal einen USB-Profibus Adapter konstruieren, der als "Netzwerkkarte" agiert, also grundsätzlich ganze Pakete behandelt.
USB1.1 ist mit 12MBaud genauso schnell wie Profibus, mindestens USB2.0 kann auch noch den eventuellem Overhead verlustfrei behandeln.
Rezepte:
1. Die ordentliche Lösung: Einen USB2.0--Chip und ein Profibus-ASIC verbinden. 
2. Die Billig.Lösung, etwas langsamer und nicht Profibus-zertifiziert: USB 1.x und Profibus auf einem Mikrocontroller implementieren. Gäbe immer noch ein ordentlich schnelles Programmierwerkzeug.


> Also über RS232 läuft das LinNoDave ja echt Supi und macht auch nach SPS-Ausfall wieder weiter...


Über Ethernet auch. Und mit USB-MPI-Adaptern, die einen COM-Port emulieren sollte es auch keine Probleme geben...aber danke, daß du es sagst; ich meinte schon, die Diskussion von Problemen rückte Libnodave in ein schlechtes Licht.


----------



## Lazarus™ (29 Juli 2005)

Zottel, vielleicht hast du recht und ich knicke die CP5611 idee. Aber an der USB Variante bleibe ich mal dran. Also mein Siemens USB Konverter arbeitet irgendwie nicht als Com-Port, weil Schnittstelle ist USB (?). Und genau das meinte ich... Na ich bleibe da mal fleissig ;-)

Also ich meinte auch nicht Ethernet geht schlecht *gggg*  Ich habe es nur noch nicht benutzt/getestet...  Also meine Meinung ist eben, das LibNoDave besser ist als Prodave, da nicht erst so eine fette Software installiert wird und Prodave wird nicht mehr weiterentwickelt, habe ich gehört. Deine Lib wohl schon. UND (!) nicht als Hauptgrund, aber deine lib ist Free...  Was nicht heissen soll, das du nicht doch ein paar von diesen kleinen bunten Zetteln mit verschiedenen Zahlen drauf verdient hast ;-)

Kurz: Die Diskussion über gut und schlecht ist eigentlich quatsch, da es einfach ein klares GUT gibt ...


----------



## Zottel (29 Juli 2005)

Lazarus™ schrieb:
			
		

> ...Also mein Siemens USB Konverter arbeitet irgendwie nicht als Com-Port, weil Schnittstelle ist USB (?). Und genau das meinte ich... Na ich bleibe da mal fleissig ;-)


Was ist das für ein Ding? Bestellnummer? Kostenpunkt? Ist es vewrgleichbar schnell mit einem CP?


----------



## Lazarus™ (29 Juli 2005)

SIMATIC PC Adapter USB V1.2    6ES7972-0CB20-0XA0

·	Der Betrieb an homogenen PPI-Netzen wurde realisiert
·	Der PC Adapter USB gibt den MPI-Bus frei, wenn er allein im Ring ist und „PG/PC ist einziger Master am Bus“ deaktiviert ist (gilt bei den Schnittstellenparametrierungen „PC Adapter (MPI)“ und „PC Adapter (PROFIBUS)“.
Der PC Adapter USB gibt immer den MPI-Bus frei, wenn er allein im Ring ist und die Schnittstellenparametrierungen „PC Adapter(AUTO)“ verwendet wird.
·	Der PC Adapter USB kann an PROFIBUS-Netze, bei denen die höchste Teilnehmeradresse zwischen 1 und 126 mit einer Schrittweite von 1 eingestellt ist, betrieben werden.

Maximale Geschwindigkeit 1,5MBit auf RS485 / 12MBit auf USB Seite (?)


----------



## Seppl (29 Juli 2005)

Zottel schrieb:
			
		

> Nun gibt es ja USB/MPI(Profibus)-Adapter. Leider sind das jedoch alles serielle Adapter.



Guten Tag, 

der USB-Adapter von Siemens hat keinen virtuellen Serielltreiber sondern wird direkt angesprochen.



			
				Zottel schrieb:
			
		

> 1. Die ordentliche Lösung: Einen USB2.0--Chip und ein Profibus-ASIC verbinden.
> 2. Die Billig.Lösung, etwas langsamer und nicht Profibus-zertifiziert: USB 1.x und Profibus auf einem Mikrocontroller implementieren. Gäbe immer noch ein ordentlich schnelles Programmierwerkzeug.



Bei Delta Logic habe ich für sowas eine Werbung gesehen, bis 480 MBit Datenrate, über USB 2.0. Muss da mal fragen ob das Teil auch mit dem Simaticmanager funzt.


----------



## Zottel (8 August 2005)

Ich habe die Attachments hier gelöscht. Es gibt nun eine "offizielle" Version 0.7.2 mit VB-Unterstützung. Benutzer sollten sich diese besorgen, weil sie fast alle Funktionen unterstützt und (bei richtiger Verwendung) benutzten Speicher auch wieder freigibt und Strings richtig nach VB kopiert.


----------



## Gerhard Bäurle (16 August 2005)

Seppl schrieb:
			
		

> Bei Delta Logic habe ich für sowas eine Werbung gesehen, bis 480 MBit Datenrate, über USB 2.0. Muss da mal fragen ob das Teil auch mit dem Simaticmanager funzt.



Mahlzeit,

die 480 Mbit/s gelten nur für die USB-Seite, PROFIBUS 
halt mit 12 MBit/s und automatischer Erkennung der 
Übertragungsrate.

Die Software von Siemens wird natürlich unterstützt,
hier ist die Freigabetabelle:

http://www.deltalogic.de/software/s7-net_freigabe.htm

Sollten Sie eine Hard- und/oder Software haben die 
nicht unterstützt wird, bitte eine nachricht per E-mail 
an support@deltalogic.de oder hier ins Forum.

Viele Grüße

Gerhard Bäurle


----------



## Zottel (16 August 2005)

> ...die 480 Mbit/s gelten nur für die USB-Seite, PROFIBUS
> halt mit 12 MBit/s und automatischer Erkennung der
> Übertragungsrate.


Und, was für eine "Geräteklasse" ist es? Serielle Schnittstelle, Netzwerkkarte oder noch etwas ganz anderes?


----------



## Gerhard Bäurle (17 August 2005)

Zottel schrieb:
			
		

> Und, was für eine "Geräteklasse" ist es? Serielle Schnittstelle, Netzwerkkarte oder noch etwas ganz anderes?



Es ist ein USB-Gerät, wird direkt angesprochen. Leider 
ist mir nicht bekannt, um welche vom USB Implementers 
Forum definierte Geräteklasse (HID, CDC, ...) es 
sich handelt.

Viele Grüße

Gerhard Bäurle


----------



## repök (25 Juli 2007)

*Hab da auch fehler 49....*

Ich bin was VB.net und c# und soweiter ziemlich am anfang. Daher die frage : Wie bekomme ich diesen fehler weg? 
Es geht um zugriff über s7online mit libnodave 0.8.4. Die Testprogramme laufen. Hab in Excel auf einem anderen rechner was gemacht, geht auch.
Und nu??


----------

