libnodave und .NET

Rio

Level-1
Beiträge
6
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,
ich habe eine kleine HMI in C# geschrieben um Daten aus einer "S7 314C-2 PN/DP" darzustellen. Zur Kommunikation benutze ich libnodave-0.8.4.6 auf einem Windows 7 Professional 32-Bit System. Die Daten werden jede Sekunde geholt und aktualisiert. Die Interaktion Winforms <> Datenmanager funktioniert auch ganz gut.
Allerdings fliegt mir die Anwendung nach etwa 10-15 Minuten auseinander mit folgenden Fehlermeldungen:
1.:
System.AccessViolationException: Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass


anderer Speicher beschädigt ist.
bei libnodave.daveConnection.daveDisconnectPLC(IntPtr dc)
bei libnodave.daveConnection.disconnectPLC() in c:\Users\Computer\BUGGIE\Automation\VisuaDotNet\SharpHMI\DATA\DRIVER\libnodave.net.cs:Zeile 346.
bei SharpHMI.DATA.CONTROLLER.S7.NODAVE.LanCPU.__S7LanClose() in c:\Users\Computer\BUGGIE\Automation\VisuaDotNet\SharpHMI\DATA\CONTROLLER


\S7\NODAVE\LanCPU.cs:Zeile 99.
bei SharpHMI.DATA.CONTROLLER.S7.NODAVE.BaseCPU.Read() in c:\Users\Computer\BUGGIE\Automation\VisuaDotNet\SharpHMI\DATA\CONTROLLER\S7\NODAVE


\BaseCPU.cs:Zeile 80.
bei SharpHMI.DATA.Manager.__readController(Object o) in c:\Users\Computer\BUGGIE\Automation\VisuaDotNet\SharpHMI\DATA\Manager.cs:Zeile 47.
bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
bei System.Threading.ThreadHelper.ThreadStart(Object obj)

oder 2.:
System.AccessViolationException: Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.
bei libnodave.pseudoPointer.daveFree(IntPtr p)
bei libnodave.pseudoPointer.Finalize() in c:\Users\Computer\BUGGIE\Automation\VisuaDotNet\SharpHMI\DATA\DRIVER\libnodave.net.cs:Zeile 232.



Es haengt also an der c-lib bzw. an der Speicherverwaltung .NET<>Native. Hat von euch evtl jemand eine Idee wie man das Problem fixen kann bzw. was man "kosten neutral" anstelle von libnodave.dll benutzen kann?

Vielen dank im voraus
Gruss Rio
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,

System.AccessViolationException: Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. ...
beim letzten Versuch mit libnodave auf etwas zuzugreifen ist was schief gelaufen. Darüber wurdest Du von libnodave aber schon informiert (Stichwort "Rückgabewert"). Einfach die Verbindung als abgebrochen deklarieren und neu aufbauen.

hand, mogel

BTW: bei mir war es immer ein Timeout - UMTS ist nicht so berauschend in Berlin
 
Hallo,
danke fuer die schnellen Antworten.

@ Jochen Kuehner:
Ich war so frei und habe mir die "libnodave_jfkmod(64).dll" und "libnodave_jfkmod.net.cs" aus der "DotNetSiemensPLCToolBoxLibrary" heraus kopiert und anstelle der original "libnodave" Dateien benutzt. Funktioniert bis jetzt (7394+s) super :D danke.

@ mogel:
Die Idee hatte ich auch schon und habe deshalb bei jedem Verbindungsaufbau neue Instanzen angelegt und nach Beendigung entsprechend verworfen. Hatte aber nicht den gewuenschten Erfolg :(

Gruss Rio
 
hallo zusammen habe mal eine frage zu .net
ich bin ein totaler anfänger in der . net sprache und weis leider nicht wie ich hierbei vorgehen soll. alle anleitungen, die ich finde sind für mich nicht zu gebrauchen. darum bitte ich hier um hilfe. kann mir jemand mal ein beispielprojekt senden mit eiem einfachen zugriff auf einen merker über iso on tcp und das mit der libnodave.net.dll ? oder gibts da ein buch, dass man kaufen kann.
ich benötige dies, um einzelne wörter aus der Cpu 315 schreiben und lesen zu können.
vielen dank im voraus
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo zusammen habe mal eine frage zu .net
ich bin ein totaler anfänger in der . net sprache und weis leider nicht wie ich hierbei vorgehen soll. alle anleitungen, die ich finde sind für mich nicht zu gebrauchen. darum bitte ich hier um hilfe. kann mir jemand mal ein beispielprojekt senden mit eiem einfachen zugriff auf einen merker über iso on tcp und das mit der libnodave.net.dll ? oder gibts da ein buch, dass man kaufen kann.
ich benötige dies, um einzelne wörter aus der Cpu 315 schreiben und lesen zu können.
vielen dank im voraus

schau dir mal meine connectionnlib an, da sind die verschiedensten beispielprogramme und auch ein ganz einfaches csharp beispiel dabei!
 
Hallo jochen. Vielen dank für di schnelle antwort. Ja deine biblithek habe ich gesehen. Nur verwendest du doch eine eigene dll und mit diesen aufruffen funkt das nicht. Wie gesagt bin totaler anfänger in .net programmierung. Ich verstehe das nicht so genau wie ich die libnodave.net dll in ein projekt einbinden muss und wie dann die verbindung gemach wird. Das kann doch nich so schwer sein, ich suche wahrscheinlich am falschen ort. Vielen dank schon mal im voraus. Gruss tinu
 
Also meie Bibliothek baut auch auf libnodave auf, verwendet aber eine modifizierte Version die um Routing und div weitere Kleinigkeiten erweitert wurde!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da du aber auch totaler Anfängert bist, empfehle Ich dir halt meine lib, da du dich um vieles was du bei libnodave machen musst nicht mehr selbst kümmern musst:

z.B. Verbindungskonfiguration:

Code:
[COLOR=#2B91AF][FONT=Consolas]Configuration[/FONT][/COLOR][COLOR=black][FONT=Consolas].ShowConfiguration([/FONT][/COLOR][COLOR=#A31515][FONT=Consolas]"SimpleCSharpDemonstrationConnection"[/FONT][/COLOR][COLOR=black][FONT=Consolas], [/FONT][/COLOR][COLOR=blue][FONT=Consolas]true[/FONT][/COLOR][COLOR=black][FONT=Consolas]);[/FONT][/COLOR]

Auslesen einer Variable

Code:
myConn = [COLOR=blue]new[/COLOR] [COLOR=#2b91af]PLCConnection[/COLOR]([COLOR=#a31515]"SimpleCSharpDemonstrationConnection"[/COLOR]);
myConn.Connect();
[COLOR=blue]var[/COLOR] tag = [COLOR=blue]new[/COLOR] [COLOR=#2b91af]PLCTag[/COLOR]([COLOR=#a31515]"MW88"[/COLOR]);
myConn.ReadValue(tag);
 
Hallo jochen sorry dass ich dich so oft störe, aber habe mir die Codes jetzt geholt. und leider hat der Code ZipHelper.cs gibt mir 11 fehler an. was muss ich da machen? und wenn ich dann keine Fehler mehr habe kann ich das projekt irgendwie beenden, damit ich deine .dll datei habe? weis nicht wie ich das machen muss. verwende visual studio C# und keine ahnung wie das geht. danke gruss Tinu
 
Hallo jochen sorry dass ich dich so oft störe, aber habe mir die Codes jetzt geholt. und leider hat der Code ZipHelper.cs gibt mir 11 fehler an. was muss ich da machen? und wenn ich dann keine Fehler mehr habe kann ich das projekt irgendwie beenden, damit ich deine .dll datei habe? weis nicht wie ich das machen muss. verwende visual studio C# und keine ahnung wie das geht. danke gruss Tinu

Kann ich mir im Moment nicht erklären, da bei mir alles Compiliert! Welche Visual Studio Version? Welches .NET Framework??

Du kannst aber auch die Dateien aus dem Ordner compiled verwenden...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bild.jpgHallo jochen sorry dass ich erst jetzt schreibe hatte leider keine zeit. habe deine lib. noch mals kopiert jetzt krieg ich nur noch diese Fehler(Bild). weis nicht was ich damit anfangen kann. Vieleicht sagt dir das mehr. ich benutze net frame 4.5 und visual studio Express 2012 für Desktop. Danke schon mal im voraus gruss steim18
 
Anhang anzeigen 19939Hallo jochen sorry dass ich erst jetzt schreibe hatte leider keine zeit. habe deine lib. noch mals kopiert jetzt krieg ich nur noch diese Fehler(Bild). weis nicht was ich damit anfangen kann. Vieleicht sagt dir das mehr. ich benutze net frame 4.5 und visual studio Express 2012 für Desktop. Danke schon mal im voraus gruss steim18

Findet er denn die SharpZip dll nicht? Schau mal unter References...
 
Bild1.jpgAlso danke für den Tip habe eine neue sharp zip lib heruntergeladen jetzt funktionierts, jetzt habe ich ein neues problem und auch da keine Ahnung was ich bei diesem Fehler machen muss. gruss steim18
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Anhang anzeigen 19956Also danke für den Tip habe eine neue sharp zip lib heruntergeladen jetzt funktionierts, jetzt habe ich ein neues problem und auch da keine Ahnung was ich bei diesem Fehler machen muss. gruss steim18

Keine Ahnung warum dieser Fehler bei dir kommt, bei mir compilierts unter .NET4 und 4.5! Warum musst du überhaupt die SharpZipLib runterladen? Die ist doch in meinem CodePlex Projekt dabei! Woher hast du denn mein Quellcode, lad doch einfach mal alles!
 
Ok jetzt funktionierts habe deine lib noch mals neu heruntergeladen und jetzt funktionierts. habe etwas falsch verstanden. kann jetzt compilieren. noch eine frage zum verwenden deiner lib muss ich jetzt nur noch eine windows form anwendung hinzufügen oder sonstwas. bin ich da richtig informiert? gruss steim18
 
Zuletzt bearbeitet:
Ok jetzt funktionierts habe deine lib noch mals neu heruntergeladen und jetzt funktionierts. habe etwas falsch verstanden. kann jetzt compilieren. noch eine frage zum verwenden deiner lib muss ich jetzt nur noch eine windows form anwendung hinzufügen oder sonstwas. bin ich da richtig informiert? gruss steim18

Schau doch mal in die Solution... Sind einige Beispielanwendungen dabei!
Darauf achten das das Programm als X86 compiliert wird! Die 64 Bit DLL von libnodave funktioniert noch nicht!
 
Zurück
Oben