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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: LibnodaveConnection Library

  1. #1
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.746
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Arbeite gerade an einer Bibliothek um die Libnodave Kommunikation und Konfiguration zu kappseln. Dazu hat die DLL einen Dialog um die Verbindungen zu Konfigurieren so das dies nicht in jeder Anwendung wieder von vorne gemacht werden muss.

    Später kann ich so ganz leicht eine Configuration in mein Programm einbinden.
    Bsp:
    Code:
      LibNoDaveConnectionLibrary.Configuration.ShowConfiguration("JFK-TestConnection", true);
    auch der Verbindungsaufbau und auslesen von Werten wird dann einfach:
    Bsp:
    Code:
    private LibNoDaveConnection myConn = new LibNoDaveConnection("JFK-TestConnection");
    myConn.Connect();
    LibNoDaveValue myValue = LibNoDaveValue.GetLibNoDaveValueFromString("DB2.DBD4");
    myValue = myConn.ReadValue(myValue);
    label1.Text = myValue.Value.ToString();

    Achtung: Dies ist erstmal eine Vorabversion, es geht noch lange nicht alles....

    Diese dient nur dazu um mir Ideen und Vorschläge von euch anzuhören.

    Features:

    - Automatisches aufteilen von Variablen wenn ein ReadRequest zu viele Tags beinhalten würde oder die PDU Size überschritten werden würde! (Das aufteilen eines Tags kann blockiert werden!)
    - Verbindungskonfiguration kann über aussenstehendes Programm geändert werden, wenn neue Typen hinzukommen muss am Programm selbst nichts geändert werden...
    und viel mehr geplant!
    Geändert von Jochen Kühner (16.01.2011 um 12:35 Uhr)
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren LibnodaveConnection Library  

  2. #2
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.746
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    ich habe auch schon ein paar Fragen wo mir vielleicht jemand weiterhelfen kann.

    1.) Wie kann Ich die in PG/PC Schnittstelle definierten Verbindungen auslesen?
    (Hab in der Resitry gesucht, finde die dort aber nicht)
    -> Erledigt

    2.) Wie kann ich den Dialog PG/PC Schnittstelle von meiner Software aus öffnen?
    -> Erledigt

    3.) Wieso muss Ich neueren versionen der LibNoDave an S7Online eine HWND Übergeben und in früheren Versionen musste Ich das noch nicht!
    -> Erledigt

    4.) Hat jemand schon mal routing über LibNoDave Probiert, da gibt es ja einen Verbindungstyp dazu. Wie funzt das, was geht, was geht nicht?

    5.) Wie funktioniert das, wenn Ich von mehrern Addressen auf einmal lesen will (in einer PDU). Denke mit prepareReadRequest, aber wie??
    Hab da jetzt auch in der Hilfe was dazu gefunden, aber ist es nicht möglich bei diesem Lesevorgang in einen eigenen Buffer zu lesen?
    -> Hab Ich nun selbst gelöst bekommen!
    Geändert von Jochen Kühner (10.05.2010 um 13:18 Uhr)
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren Fragen.  

  3. #3
    Registriert seit
    25.08.2006
    Beiträge
    247
    Danke
    36
    Erhielt 64 Danke für 58 Beiträge

    Standard

    Moinsens,

    zu 2.)

    rundll32.exe shell32.dll, Control_RunDLL S7EPATDX.CPL

    Pylades

  4. Folgender Benutzer sagt Danke zu pylades für den nützlichen Beitrag:

    Jochen Kühner (06.05.2010)

  5. #4
    Registriert seit
    25.08.2006
    Beiträge
    247
    Danke
    36
    Erhielt 64 Danke für 58 Beiträge

    Standard

    zu 1.)

    HKEY_LOCAL_MACHINE\SOFTWARE\Siemens\SINEC\LogNames

    Pylades

  6. Folgender Benutzer sagt Danke zu pylades für den nützlichen Beitrag:

    Jochen Kühner (06.05.2010)

  7. #5
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.746
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Punkte 1 und 2 habe Ich gleich mal implementiert.

    Hab noch einen neuen 5ten Punkt.

    Jemand sonst noch irgendwelche Ideen?
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren Punkte...  

  8. #6
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.746
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Multiple Reads sind nun mal voröäufig implementiert, die implementierung ist bestimmt noch nicht der Weisheits letzter Schuss, aber es geht!
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren Multiple Reads...  

  9. #7
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Zitat Zitat von Jochen Kühner Beitrag anzeigen
    3.) Wieso muss Ich neueren versionen der LibNoDave an S7Online eine HWND Übergeben und in früheren Versionen musste Ich das noch nicht!
    Weil ansonsten die Handles, die zum Öffnen intern wohl nötig sind offen blieben und nach und nach mehr wurden, bis nichts mehr ging. (So ist mir das in Erinnerung) Ich hab es bisher immer nur geschafft, auf die 1. geöffnete Verbindung per S7Online zuzugreifen. Jede weitere SPS-Verbindung wurde geöffnet, enthielt dann aber die selben Daten, wie die erste SPS, also ist da irgend etwas im Argen. Kannst das ja gerne mal prüfen, vielleicht mache ich da auch etwas falsch!
    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

  10. #8
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.746
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Mal sehn, wenn Ich morgen @work dazu komme!
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren Mal sehn...  

  11. #9
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.746
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    6) Ich benutze einen Netlink lite, bekomme aber mit dem Netlink-Protokoll keine Verbindung, nur wenn ich ISO TCP nehme. Habe aber das Problem, das wenn Ich die Verbindung nicht sauber trenne, Ich den Netlink reseten muss, gibts da abhilfe?
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren Noch ein Problem...  

  12. #10
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.746
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Habe noch Probleme mit PrepareReadrequest und addVarToReadRequest

    Habe dieses Problem nur beim 2ten Aufruf der Funktionen. Es gehen ja mit einem Read Request bis zu 20 Variablen (nutze gearde max. 1. D.h. nach 18 Variablen führen Ich den Request aus, und starte dann mit einer neuen PDU! Die 18 liest er auch fehlerfrei, aber der 19ten kommt dann:

    The desired Adress is beyond limit for this PLC
    oder
    The desired item is not available in the PLC

    Hier noch ein Ausschnitt aus meinem Code:

    Code:
     //Count how Many Bytes from the PLC should be read and create a Byte Array for the Values
                int completeReadSize = 0;
                foreach (var libNoDaveValue in valueList)
                {
                    completeReadSize += libNoDaveValue._internalGetReadSize();
                }
                byte[] completeData = new byte[completeReadSize];
    
    
                //Get the Maximum Answer Len for One PDU
                int maxReadSize = _dc.getMaxPDULen() - 18;
    
    
                int akReadSize = 0;
                int positionInCompleteData = 0;
                int akVar = 0;
                int anzVar = 0;
                int anzReadVar = 0;
               
                libnodave.PDU myPDU = _dc.prepareReadRequest();
                
                //Todo Split the Read Value, if it does not fit into one PDU
                foreach (var libNoDaveValue in valueList)
                {
                    if (libNoDaveValue.LibNoDaveDataSource != LibNoDaveDataSource.Datablock && libNoDaveValue.LibNoDaveDataSource != LibNoDaveDataSource.InstanceDatablock)
                        libNoDaveValue.DatablockNumber = 0;
    
                    int readSize = libNoDaveValue._internalGetReadSize();
                    if (readSize + akReadSize > maxReadSize || anzReadVar == 18)
                    {                    
                        var rs = new libnodave.resultSet();
                        int res = _dc.execReadRequest(myPDU, rs);
                        if (res != 0)
                            throw new Exception("Error: " + libnodave.daveStrerror(res));
    
                       
    
                        //Save the Read Data to a User Byte Array (Because we use this in the libnodavevalue class!)
                        int akres = 0;
                        for (; akVar < anzVar; akVar++)
                        {                       
                            res = _dc.useResult(rs, akres++);
                            if (res != 0)
                                throw new Exception("Error: " + libnodave.daveStrerror(res));
    
                            for (int n = 0; n < valueList[akVar]._internalGetReadSize(); n++)
                            {
                                completeData[positionInCompleteData++] = Convert.ToByte(_dc.getU8());
                            }
                        }
                        rs = null;
                        myPDU = null;
                        myPDU = _dc.prepareReadRequest();
                        readSize = 0;
                        anzReadVar = 0;
                    }
    
                    akReadSize = akReadSize + readSize;
                    anzVar++;
                    anzReadVar++;
                    myPDU.addVarToReadRequest(Convert.ToInt32(libNoDaveValue.LibNoDaveDataSource), libNoDaveValue.DatablockNumber, libNoDaveValue.ByteAddress, readSize);
                }
    
                if(akReadSize>0)
                {
                    var rs = new libnodave.resultSet();
                    int res = _dc.execReadRequest(myPDU, rs);
                    if (res != 0)
                        throw new Exception("Error: " + libnodave.daveStrerror(res));                
    
                    //Save the Read Data to a User Byte Array (Because we use this in the libnodavevalue class!)
                    int akres = 0;
                    for (; akVar < anzVar; akVar++)
                    {                    
                        res = _dc.useResult(rs, akres++);
                        if (res != 0)
                            throw new Exception("Error: " + libnodave.daveStrerror(res));
    
                        for (int n = 0; n < valueList[akVar]._internalGetReadSize(); n++)
                        {
                            completeData[positionInCompleteData++] = Convert.ToByte(_dc.getU8());
                        }
                    }
                    rs = null;
                }
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren Probleme....  

Ähnliche Themen

  1. Help with the libnodave library
    Von vanvanero im Forum Simatic
    Antworten: 31
    Letzter Beitrag: 14.07.2011, 16:22
  2. LibnodaveConnection Library mit MC7 Umwandlung
    Von Jochen Kühner im Forum Hochsprachen - OPC
    Antworten: 12
    Letzter Beitrag: 25.08.2010, 23:29
  3. B&R AS 3.0.80 Check Library
    Von Willibald0 im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 10.03.2010, 22:44
  4. B&R Library Manager
    Von commander2000 im Forum Sonstige Steuerungen
    Antworten: 3
    Letzter Beitrag: 06.09.2008, 14:53
  5. FB in library???
    Von rene im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 24.10.2007, 08:22

Lesezeichen

Berechtigungen

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