# libnodave und S7Online nur mit MPI&Profibus oder auch per TCP/IP?



## bool (9 Mai 2010)

Hallo zusammen,

ich wollte mal fragen wie es aussieht wenn ich mich auf den S7ONLINE Accesspoint vom SIMATIC aufsattle und dort aktuell kein MPI Device aktiviert ist sondern TCP/IP über eine Netzwerkkarte ausgewählt ist.

Bei mir funktioniert dann seltsamerweise der Verbindungsaufbau an sich, da ich ja aber über S7Online keine IP Adresse adressiere, gibt es ja auch keinen definierten Zielpunkt und meine Leseversuche via dc.execReadRequests erhalten nur die -128 als Dankeschön.

Das bedeutet dann wohl, dass TCP/IP über S7ONLINE nicht funktionert.
Wie kann ich dann aber eine solche Fehlkonfiguration frühzeitig erkennen und den Benutzer darauf hinweisen bevor dieser sinnlose Leseversuche startet?

Welche Kommunikationsarten über welche Interfaces funktionieren mit S7Online und welche nicht? Wie detektiere ich welche grade ausgewählt ist? Über die Registry? Wenn ja wie und wo?

Danke bereits im voraus für jede Info.

Gruss,

bool


----------



## Jochen Kühner (9 Mai 2010)

*Nein...*

Soweit Ich weiss wird nur MPI und Profibus Kommunikation über S7Online unterstützt!

Kannst ja mal auch meine LibNoDaveConnectionLibrary anschauen, bin gerade dran ein Teil der LibNoDave Funktionalität zu Kappseln!


----------



## bool (9 Mai 2010)

Jochen Kühner schrieb:


> Soweit Ich weiss wird nur MPI und Profibus Kommunikation über S7Online unterstützt!


 
Hallo Jochen, Danke für die Bestätigung meiner Annahme betreffs TCP over S7Online.
Ich habe mir inzwischen auch schon eine Möglichkeit gebastelt welche es mir erlaubt den ausgewählten Device der SIMATIC PG/PC-schnittstellenkonfiguration aus der registry auszulesen und den Anwender rechtzeitig darauf hinzuweisen und den Verbindungsversuch abzubrechen.

Hier ein Auszug aus dem VB 2008 Express Programmcode:
(Ob der Registrykey allgemein gültig ist kann ich nicht sagen, bei mir jedoch funktioniert es ganz gut. Über Feedback ob dieser Key prinzipiell so verwendet werden kann, wäre ich aucf jeden Fall dankbar.)

Imports Microsoft.Win32 ' for registry access
...
DimS7Online_accesspoint AsString 'wird über eine Textbox bedient, jedoch eigentlich immer "S7ONLINE"
...
Dim MyKey As RegistryKey
Dim act_S7Online_adapter AsString
MyKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Siemens\SINEC\LogNames\" & S7Online_accesspoint)
If MyKey IsNothingThen
Me.Statusleiste.Text = "Open S7Online Connection canceled because SIMATIC PG/PC Interface is not installed!"
WriteDebugInfo("Open S7Online Connection canceled because SIMATIC PG/PC Interface is not installed!")
ReturnFalse
ExitFunction
EndIf
act_S7Online_adapter = CStr(MyKey.GetValue("LogDevice", "NA"))
MyKey.Close()
If act_S7Online_adapter = "NA"Then
Me.Statusleiste.Text = "Open S7Online Connection canceled because SIMATIC PG/PC Interface registry value LogDevice is not installed!"
WriteDebugInfo("Open S7Online Connection canceled because SIMATIC PG/PC Interface registry value LogDevice is not installed!")
ReturnFalse
ExitFunction
EndIf
If InStr(act_S7Online_adapter, "TCP") > 0 Or InStr(act_S7Online_adapter, "ISO") > 0 Then
Me.Statusleiste.Text = "S7Online is not working with ISO or TCP protocoll! Please select a MPI/Profibus adapter before trying again!"
WriteDebugInfo("S7Online is not working with ISO or TCP protocoll! Please select a MPI/Profibus adapter before trying again!")
ReturnFalse
ExitFunction
EndIf
...



Jochen Kühner schrieb:


> Kannst ja mal auch meine LibNoDaveConnectionLibrary anschauen, bin gerade dran ein Teil der LibNoDave Funktionalität zu Kappseln!


Danke, werde ich mir gerne anschauen. Wo kann ich diese finden?

Gruss,

bool


----------



## Rainer Hönle (9 Mai 2010)

bool schrieb:


> Danke, werde ich mir gerne anschauen. Wo kann ich diese finden?
> 
> Gruss,
> 
> bool


Hier im Forum natürlich: hier ...


----------



## Jochen Kühner (9 Mai 2010)

*Jo..*

ist ja nicht so das er noch nicht in dem Thread dazu geschrieben hat.


----------



## tflueckiger (22 Juni 2010)

*LibNoDaveConnectionLibrary*

Hallo Jochen

Ich verwende LibNoDaveConnectionLibrary zur Visulaisierung einer Simatic S7 Anpage. In der Version, welche auf deinem Blog heruntergeladen werden kann, wird nun ständig versucht, ein Wert aus der Registry zu laden unter dem Schlüssen: SOFTWARE\\Siemens\\SINEC. Das führt bei mir zu einem Fehler. Muss hier irgendwelche Siemens Software vorinstalliert sein, damit die Library verwendet werden kann. Oder kann ich die betreffenden Teile "EntryPoint" einfach auskommentieren?

Gruss Thomas


----------



## Jochen Kühner (22 Juni 2010)

*Hmmm...*

Also Ich würde lieber das Problem beheben... Meine Connection Lib sollte auch gehen wenn es nicht installiert ist.

Ich hatte noch ein Fehler:

In der ConnectionEditor.cs in der SaveSettings muss 
myconfig.EntryPoint = lstListEntryPoints.SelectedItem.ToString(); 
durch
 if (lstListEntryPoints.SelectedItem != null)
                myConfig.EntryPoint = lstListEntryPoints.SelectedItem.ToString();
ersetzt werden.

Dann läufts bei mir auch wenn Ich die Siemens Registry Schlüssel lösche...

Probiers mal... Oder sag mir wo es noch eine Exception gibt!


----------



## tflueckiger (22 Juni 2010)

Danke für die schnelle Antwort. So funktionierts auch ohne die Software. Nun gibts noch ein paar Probleme, so dass der ausgewählte ComPort nicht gespeichert wird. Wenn man in der Methode SaveSettings() die Zeile
_myConfig.ComPort = lstLIBNODAVELokalCOMPort.SelectedText;_
durch
_myConfig.ComPort = lstLIBNODAVELokalCOMPort.SelectedItem.ToString();_
ersetzt und in der Methode LoadSettings() die Zeile
_lstLIBNODAVELokalCOMPort.SelectedText = myConfig.ComPort;_
durch
_lstLIBNODAVELokalCOMPort.SelectedItem = myConfig.ComPort;_
dann geht das mit dem ComPort auch.

Selbes Problem auch bei ComParity und bei ComSpeed, hab ich aber nicht angebpasst, da ich das nicht brauche.

Hast hier eine fantastische Arbeit gemacht mit der Library! Kompliment!

Gruss Thomas


----------



## Jochen Kühner (22 Juni 2010)

tflueckiger schrieb:


> Danke für die schnelle Antwort. So funktionierts auch ohne die Software. Nun gibts noch ein paar Probleme, so dass der ausgewählte ComPort nicht gespeichert wird. Wenn man in der Methode SaveSettings() die Zeile
> _myConfig.ComPort = lstLIBNODAVELokalCOMPort.SelectedText;_
> durch
> _myConfig.ComPort = lstLIBNODAVELokalCOMPort.SelectedItem.ToString();_
> ...



Ja, das hab ich ganz vergessen da ich das nie benutze! Werd es aber heute noch einbauen...

Wenn du sonst noch Fehler merkst, lass es mich wissen. Nur zu Info: Vor allem der multipleWriteRequest mit mehreren Variablen ist noch nicht ausgiebig getestet!

Aber Ich arbeite an allen Ecken und Enden!


----------



## tflueckiger (22 Juni 2010)

Gibt es einen Ort, wo man jeweils Deine aktuellen versionen herunterladen kann? Sourceforge oder codeplex? Würde deine Änderungen jeweils gerne übernehmen.
Werde in den nächsten Tagen vielleich ab und zu noch einige Fragen zur Library haben, da ich die gern standardmässig in einigen Kundenprojekten einsetzen würde.
Wenn Du möchtest, kann ich Dir gefundenen Fehler auch direkt mailen, meine Adresse ist tflueckiger ät f-in.ch.

Danke und Gruss
Thomas


----------



## Jochen Kühner (22 Juni 2010)

*Ja*

Ja, im Moment gibts die aktuelle Version immer hier: http://jfk-solutions.de/


----------

