Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 4 von 5 ErsteErste ... 2345 LetzteLetzte
Ergebnis 31 bis 40 von 47

Thema: Libnodave Version 0.8

  1. #31
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Mußte nochmal anfangen mit schreiben, beim Testen hat es mit das XP zerhauen .

    Also, wenn Step7 online ist, bricht beim Connect über libnodave und s7onlinx.dll die Verbindung von Step7 ab, libnodave meldet wechselnd -124 und -128. Wenn ich zuerst die Verbindung mit libnodave aufbaue, kann ich anschließend mit Step7 online gehen, darf aber libnodave nicht stoppen, da es dann nicht nocheinmal zu einer Verbindung bewegt werden kann (-124, -12. Klar kann ich die Verbindung offen lassen, aber sie muß auch ordentlich abgebaut werden können. Wenn jemand ausversehen das Kabel abzieht und dann wieder ansteckt nehme ich normalerweise (prodave) die Verbindung wieder auf und weiter geht es.
    Ich werde mal weitertesten, was passiert, wenn ich grundsätzlich einmal die Verbindung aufbaue und dann stehen lasse.

    Test: Ja, nachdem man die Verbindung gestört hat muß man dann das Programm schließen, hmm.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  2. #32
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Zitat Zitat von Ralle
    Mußte nochmal anfangen mit schreiben, beim Testen hat es mit das XP zerhauen .
    Und ich dachte schon, Windows wäre inzwischen soweit, daß eine Amok laufende Anwendung nicht mehr das System zerschießt.
    Also, wenn Step7 online ist, bricht beim Connect über libnodave und s7onlinx.dll die Verbindung von Step7 ab...
    Sehe ich mir heute abend an.
    Test: Ja, nachdem man die Verbindung gestört hat muß man dann das Programm schließen, hmm.
    Abgesehn davon, das Libnodave wahrscheinlich noch nicht jeden Fehler korrekt erkennt:
    Wenn daveReadBytes einen Fehler meldet, der mit der Verbindung zu tun hat (und nicht damit, daß es einen DB nicht gibt oder er nicht genug Daten enthält), solltest du in folgender Reihenfolge die Verbindung abbauen und eine ganz neue aufbauen können:
    Code:
    daveDisconnectPLC(dc) // auch wenn's noch nichts tut
    daveFree(dc)  
    // wenn es jetzt oder als Folge dieses Aufrufs von daveFree einen Zugriffsfehler gibt, dann
    // müßte es so sein, daß ein Zeiger auf den Pufferspeicher in daveConnection an s7onlinx.dll
    // übergeben wurde und s7onlinx.dll ihn noch für gültig hält.
    daveDisconnectAdapter
    daveFree(di) ;
    fds.rfd=openS7online("name"),
    fds.wfd=fds.rfd;
    di=daveNewInterface(fds...);
    daveInitAdapter(di);
    dc=daveNewConnection(di)
    daveConnectPLC(dc);
    Wenn das nicht geht wegen dem vermuteten Problem, daß die s7Onlinx noch im Besitz eines Puffers ist, könnte es so gehen:
    Code:
    daveDisconnectPLC(dc) // auch wenn's noch nichts tut
    daveDisconnectAdapter
    daveFree(dc)  
    daveFree(di) ;
    fds.rfd=openS7online("name"),
    fds.wfd=fds.rfd;
    di=daveNewInterface(fds...);
    daveInitAdapter(di);
    dc=daveNewConnection(di)
    daveConnectPLC(dc);
    Geht auch das nicht, laß einfach daveFree() weg und guck was passiert. Ich weiß, das macht Löcher in den Speicher, aber es sind jedesmal nur 2-3 kByte, das kann ein heutiger PC längere Zeit verkraften. Und wenn du die Anwendung beendest, holt sich Windows den Speicher schon wieder.
    [/code]

  3. #33
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    Danke Zottel, das werde ich mal testen.
    Im Moment mache ich es nach deinem 1. Tip, wenn die Verbindung einmal aufgebaut ist, lasse ich sie stehen. Wenn DaveReadBytes einen Fehler bringt (Kabel ab) , bau ich die Verbindung komplett ab und später wieder auf. Nach einem Fehler kann ich eigenartiger Weise die Verbindung immer (15 mal probiert) aufbauen, ohne daß die Anwendung abschmiert. So geht es immerhin ersteinmal, vielleicht findest du mit den Hinweisen auch noch etwas.
    Erstmal super, daß es überhaut geht, daß kann man nicht von vielen Alphas (ich meine den s7Onlinx.dll Zugriff) sagen .
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  4. #34
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    @Zottel

    Die Funktion ReadBytes bringt mir bei daveProtoS7Online immer die Daten der ersten angelegten DaveConn (mit daveNewConnection) zurück, egal ob ich eine zweite erzeugt habe und von dieser auch die Daten lesen will.
    Die beiden Rückgabewerte von daveNewConnection sind jeweils unterschiedlich und es gab keine Fehlermeldung.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  5. #35
    Registriert seit
    25.07.2005
    Ort
    Vogelsbergkreis
    Beiträge
    1.717
    Danke
    48
    Erhielt 68 Danke für 60 Beiträge

    Standard

    @ Zottel: mal kurz zu Bits... wie kann ich da nun 1 oder 0 auslesen? Array und dann aussuchen?

  6. #36
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Zitat Zitat von seeba
    @ Zottel: mal kurz zu Bits... wie kann ich da nun 1 oder 0 auslesen? Array und dann aussuchen?
    Aus dem Ergebnis von daveReadBytes:
    b=daveGetU8(dc) //holt ein Byte
    if (b & 12 bit7=1; else bit7=0;

    Aus dem Ergebnis von daveReadBits:
    b=daveGetU8(dc) //holt ein Byte
    if (b =0) bitx=1; else bitx=0;
    bitx ist halt das, dessen Adresse du gelesen hast.
    Und um es nochmal deutlich zu sagen: Die S7 liefert bei readBits ein Byte zurück. Wenn es nicht 0 ist, ist das Bit 1.
    Beispiele sind testMPI.c, vielleicht auch in testMPI.cs.

  7. #37
    Registriert seit
    25.07.2005
    Ort
    Vogelsbergkreis
    Beiträge
    1.717
    Danke
    48
    Erhielt 68 Danke für 60 Beiträge

    Standard

    Code:
    Imports System
    Imports System.Threading
    
    Class test
    	Shared fds As libnodave.daveOSserialType
    	Shared di As libnodave.daveInterface
    	Shared dc As libnodave.daveConnection
    	Shared rack As Integer = 0
    	Shared slot As Integer = 2
    
    	Public Shared Function Main(ByVal args As String()) As Integer
    		Dim i As Integer
    		Dim a As Integer = 0
    		Dim j As Integer
    		Dim res As Integer
    		Dim b As Integer = 0
    		Dim c As Integer = 0
    		Dim d As Single = 0
    		fds.rfd = libnodave.openSocket(102, "192.168.0.241")
    		fds.wfd = fds.rfd
    		If fds.rfd > 0 Then
    			di = New libnodave.daveInterface(fds, "IF1", 0, libnodave.daveProtoISOTCP, libnodave.daveSpeed187k)
    			di.setTimeout(1000000)
    			dc = New libnodave.daveConnection(di, 0, rack, slot)
    			Do
    				If 0 = dc.connectPLC Then
    					res = dc.readBytes(libnodave.daveDB, 50, 0, 10, Nothing)
    					If res = 0 Then
    						a = dc.getS32
    						b = dc.getS32
    						c = dc.getS32
    						d = dc.getFloat
    						Console.WriteLine("FD0: " + a.ToString)
    						Console.WriteLine("FD4: " + b.ToString)
    						Console.WriteLine("FD8: " + c.ToString)
    						Console.WriteLine("FD12: " + d.ToString)
    					Else
    						Console.WriteLine("error " + res.ToString + " " + libnodave.daveStrerror(res))
    					End If
    				End If
    				Thread.Sleep(100)
    			Loop Until 1 < 0
    			dc.disconnectPLC
    			libnodave.closePort&#40;fds.rfd&#41;
    		Else
    			Console.WriteLine&#40;"Couldn't open TCP connaction to PLC"&#41;
    			Return -1
    		End If
    		Return 0
    	End Function
    End Class
    Jetzt versuch ich mal die Werte dauernd zu aktualisieren... Sprich Endlos-Schleife! Einmal geht's und das zweite Mal geht's nicht mehr!

  8. #38
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Code:
        If 0 = dc.connectPLC Then
       Do
        res = dc.readBytes&#40;libnodave.daveDB, 50, 0, 10, Nothing&#41;
    ...
        Thread.Sleep&#40;100&#41;
       Loop Until 1 < 0
       dc.disconnectPLC
    Jedes connectPLC belegt eine Verbindung ind der CPU!
    Liest keiner die Beispielprogramme?
    Die benchmarks (testXXX -b lesen) auch wiederholt in Schleifen!

  9. #39
    Registriert seit
    25.07.2005
    Ort
    Vogelsbergkreis
    Beiträge
    1.717
    Danke
    48
    Erhielt 68 Danke für 60 Beiträge

    Standard

    Zitat Zitat von Zottel
    Code:
        If 0 = dc.connectPLC Then
       Do
        res = dc.readBytes&#40;libnodave.daveDB, 50, 0, 10, Nothing&#41;
    ...
        Thread.Sleep&#40;100&#41;
       Loop Until 1 < 0
       dc.disconnectPLC
    Jedes connectPLC belegt eine Verbindung ind der CPU!
    Liest keiner die Beispielprogramme?
    Die benchmarks (testXXX -b lesen) auch wiederholt in Schleifen!
    Zottel, das Problem ist einfach, dass jeder die Beispielprogramme liest, welche er versteht! Das ist bei mir VB.NET und etwas C#! Du solltest nicht erwarten, dass jeder alle Beispiele lesen will und kann!

  10. #40
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von seeba
    Zottel, das Problem ist einfach, dass jeder die Beispielprogramme liest, welche er versteht! Das ist bei mir VB.NET und etwas C#! Du solltest nicht erwarten, dass jeder alle Beispiele lesen will und kann!
    Nein, da hast du wohl recht, aber ich habe auch schon eine Menge Bibliotheken und Sachen von anderen Leuten benutzt und meiner Meinung nach war und ist das meiste davon zwar vielleicht von mehr Dokumentation begleitet, aber im Programmtext weitaus schlechter kommentiert.
    Wenn ich mehr Dokumentation schreibe, bekomme ich das Problem, die Dokumentation auf dem Stand des Programmcodes zu halten. Doppelte Arbeit

    Trotzdem sind mit jedem release neue Readmes und FAQs dabei.

    Das Programm testMPI.cs in Dot.Net/CS enthält die Benchmarks auch. Daß sie nun ausgerechnet im VB.net-Beispiel nicht drin sind, liegt daran daß der VB-Compiler von MONO (freier Dot.Net-Nachbau) noch ziemlich unfertig ist und mit längeren Programmen gar nicht klar kommt. Und ich will keine Programme verteilen, die ich selbst nicht ausprobieren kann.

    Was mich ein bißchen nervt, ist daß kaum etwas zurückkomt, was die Entwicklung von Libnodave voranbringt (es gibt einige wenige rühmliche Ausnahmen).
    Andererseits erhalte ich häufig Anfragen (ich meine jetzt nicht deine), wo ich denke, ich muß das ABC des Programmierens erklären. Jemand auf dem Level vieler Fragesteller käme sicher auch mit keinem kommerziellen Produkt zurecht.
    Dann geht mir durch den Kopf, daß so einer sowas wohl auch nicht kaufen würde, weil ihm das durchaus klar ist. Aber weil Libnodave nichts kostet, lädt es Hans und Franz zum Probieren runter und fragt dann, wie sein Compiler funktioniert oder so was.

Ähnliche Themen

  1. LibNoDave aktuelle Version "hängt"
    Von Lazarus™ im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 24.02.2011, 22:58
  2. Neue Version meines LibNoDave Datenbank Protokollers...
    Von Jochen Kühner im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 16.03.2009, 13:38
  3. Neues libnodave Version (woher?)
    Von BorisDieKlinge80 im Forum Hochsprachen - OPC
    Antworten: 79
    Letzter Beitrag: 02.02.2009, 14:48
  4. PCS7 Version 7.0 und CPU 414-3 Version 4.0/4.1
    Von tobias1036 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 23.09.2008, 17:55
  5. Libnodave Version 0.8.4.4
    Von Zottel im Forum Werbung und Produktneuheiten
    Antworten: 0
    Letzter Beitrag: 08.02.2008, 16:55

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •