# libnodave und SoftPLC



## bike (8 April 2008)

Hallo 

die Idee mit einer freien Bibliotek finde genial und freue mich, dass es so etwas gibt.
Wenn möglich würde/werde ich helfen diese weiter zu entwickeln.

Jetzt zu meinem Problem:
Wie kann ich aus einer SoftPLC Daten für eine Visualiserung auslesen.
Mit IBHNet und Adresse 127.0.0.1 geht nicht.
Mit S7Online kann ich die PLC starten und stoppen, wenn ich versuche daten zu schreiben kommt ein Fehler -128, beim lesen kommt die Meldung keine Verbindung.

Kann mir jeman einen Tipp geben wo ich ansetzen kann?
Gibt es irgendwo eine Beschreibung der Fehlernummern?

Das Ziel diese Projektes soll sein eine Visualisierung unabhängig von der Hardware zu entwickeln.
Als Entwicklungsumgebung nutze ich zur Zeit Delphi, Lazarus ist für die Weiterentwicklung vorgesehen.

Danke für Tiipps und Hinweise


Bike


----------



## Zottel (8 April 2008)

Welche SoftPLC? Siemens geht nicht über normale Schnittstellen. Die haben eine propietäre Schnittstelle zu s7online. Die SoftSPS von IBH geht auch über TCP/IP. Sie kann einen CPx43 emulieren.


----------



## bike (8 April 2008)

Die PLC ist eine 416 von IBH.
Leider geht die Emulation über CPx43 nicht.
Ich habe den Treiber integriert in SoftPLC.
Ich habe sowohl mit der IP 127.0.0.1 als auch mit fester IP es versucht.

Das Versuchsprogramm von Delphi sagt "keine Verbindung"
Steuern kann ich die PLC, nur Daten kann ich nicht schreiben/lesen


bike


----------



## Zottel (8 April 2008)

bike schrieb:


> Die PLC ist eine 416 von IBH.
> Leider geht die Emulation über CPx43 nicht.
> Ich habe den Treiber integriert in SoftPLC.
> Ich habe sowohl mit der IP 127.0.0.1 als auch mit fester IP es versucht.
> ...


1. Verwende bitte testISO_TCP.exe. Zu Delphi-Programmen (deine eigenen oder die mitgelieferte Komponente) kann ich wenig sagen.
2. Was heißt " Steuern kann ich die PLC"?
 Mittels libnodave? 
Wenn ja, aber "nur Daten kann ich nicht schreiben/lesen": Die Daten müssen auch da sein (Datenbausteine muß man erst anlegen). Deshalb lesen meine Testprogramme immer auch Merker von niedrigen Adressen, die sind ja immer da.
3. Eventuell meinst du mit "Steuern kann ich die PLC", und, mittels libnodave mal als bejaht angenommen, gar nicht die CPU? Wenn Rack/Slot nicht die CPU sondern den CP ansprechen, kommt auch eine Verbindung zustande.
4. Was meinst du mit "steuern"? In Siemens Step7 bezeichnet "steuern" das Schreiben von Werten vom PG aus...oder meinst du start/run umschalten?
Ob man einen CP start/run umschalten kann, habe ich gerade nicht im Kopf. Daten zum schreiben/lesen hat er nicht.


----------



## afk (9 April 2008)

Ich kenne die SoftSPS von IBH nicht, aber mit der von Deltalogic hatte ich das mal getestet, und sowohl libnodave als auch die Delphi-Demoapplikation liefen auf Anhieb und problemlos. Die Kommunikation lief über den emulierten CP auf die eingestelle IP-Adresse, und das richtige Protokoll ist in dem Fall ISver_TCP.

Gruß Axel


----------



## bike (9 April 2008)

Hallo und guten Morgen,

Danke für die schnelle Antworten.:-D 
Ich habe das kompilierte Delphi Beispiel verwendet. Da erscheint die Meldung keine Verbindung



Zottel schrieb:


> 2. Was heißt " Steuern kann ich die PLC"?
> Mittels libnodave?


Ja, mit libnodave. Ich kann die PLC in Stop und run setzen. 



Zottel schrieb:


> 3. Eventuell meinst du mit "Steuern kann ich die PLC", und, mittels libnodave mal als bejaht angenommen, gar nicht die CPU? Wenn Rack/Slot nicht die CPU sondern den CP ansprechen, kommt auch eine Verbindung zustande.


 
Ich kann doch bei einer SoftPLC keine Slot ansprechen, sondern nur die Steuerung. 

Ich werde den Hinweis als Protokoll ISver_TCP zu verwenden noch weiter austesten.
Im debugmodus, werde ich dann mehr Informationen bekommen.
Die Ergebnisse werde ich dann hier reinstellen.

Danke

Danke

bike


----------



## bike (14 April 2008)

Hallo und guten Morgen,

also ich habe jetzt so weiter getestet und festgestellt, dass die SoftPLC nicht den richtigen Status zurückgibt. Das heisst z.B. die Angabe der Zykluszeit stimmt nicht. Dies ist aber auch bei dem Simatic Manger so, also kein Fehler der Bibliothek, sondern eher eine Eigenheit der SoftPLC.
Das Schreiben und lesen von einzelnen Merkern und DB funktioniert mit ISOoverIP.
Auch kann mit dem Delphi Beispiel aus der PLC gelesen und geschrieben werden, obschon angezeigt wird: keine Verbindung.

Ein Danke die Entwickler dieser Bibliotekt.



bike


----------



## wynandreas (14 April 2008)

*NoDaveRead*

haloo,, 
ich habe auch die Schwierigkeiten, um Datei von SPS mit Libnodave auszulesen.
dafür, hab ich ein Gelesenen-programm geschrieben, aber das Ergebnis war nicht ganz richtig.
hat jemand vllt. eine IDEE um das Problemm zu lösen?

wayan


----------



## afk (14 April 2008)

Ganz klar ersichtlich, der Fehler steckt in Zeile 42.

Und unbedingt ein Handtuch einpacken ...    


Gruß Axel

PS: Anders ausgedrückt: Mehr Infos, sonst können wir nicht helfen !


----------



## Buckl (29 April 2008)

Wenn Du auf die Soft SPS von IBH zugreifen wills, so nimm doch einfach die Mitgeliferte PLC32.dll.


```
{ =========================================================================== }
{                        P L C 3 2 . P A S                                    }
{                                                                             }
{  Name        : PLC32.PAS                                                    }
{  Autor       : Thomas Seip, IBH softec GmbH                                 }
{                Daniel Trautmann, IBH softec GmbH                            }
{  Erstellt    : 29.01.1998                                                   }
{  Version     : 2.06                                                         }
{  Datum       : 24.05.2006                                                   }
{                                                                             }
{  Aenderungen : Datum        Kommentar                                       }
{                                                                             }
{                                                                             }
{  Beschreibung                                                               }
{  ------------                                                               }
{                                                                             }
{  DLL-Schnittstelle zur S5-Realtime-SPS S5-PLC43  (NT) und S5-PLC45  (NT).   }
{  DLL-Schnittstelle zur S7-Realtime-SPS S7-PLC315 (NT) und S7-PLC416 (NT).   }
{                                                                             }
{  Erzeugt mit Borland Delphi 4.0 (32-Bit)                                    }
{                                                                             }
{ =========================================================================== }



{ *************************************************************************** }
{                       Funktionen zur Datenuebertragung                      }
{ *************************************************************************** }

{  R e a d V a l:
   Liest einen Wert von der SPS.
   Parameter:  typ:      'E' = Eingang
                         'A' = Ausgang
                         'M' = Merker
                         'S' = S-Merker (nur S5 !)
                         'Z' = Zaehler     nur 16-Bit-Zugriff
                         'T' = Zeit        nur 16-Bit-Zugriff
                         '?' = Absolut  (nur S5 !)
                         'D' = Datenwort oder Datendoppelwort (abhaengig von size)
                               auf Wortadresse (S5 Kompatibel) 
                         'R' = Datenbyte rechts   (nur S5 !)
                         'L' = Datenbyte links    (nur S5 !)
                         'B' = Datenbit,-byte,-wort,-doppelwort (abhaengig von size)
                               auf Byteadresse (S7 Kompatibel, nur S7 !)
                         'P' = P_Parameter (nur S7 ab Version 3 !)
               nr:       Adresse
               DBNr:     Datenbaustein Nummer, (S5: wenn DX, dann DBNr>255), nur 'D', 'L', 'R', 'B'
               size:     Anzahl der Bits:  0..7 = Bit Nr 0..7, nur 'E', 'A', 'M', 'S', 'D', 'B'
                                           8    = 1 Byte
                                           16   = 1 Wort
                                           32   = 1 Doppelwort
               val:      Gelesener Wert.

               Rückgabe: 0, wenn Fehler.
}
```

Wenn Du hilfe brauchst, melde Dich. Bin ab Montag wieder ON (Hoffentlich )


----------

