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

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

Thema: Zugriff mit libnodave (unter Delphi) auf S7-CP443-1

  1. #1
    Registriert seit
    20.04.2006
    Ort
    Falkenhagen
    Beiträge
    150
    Danke
    28
    Erhielt 26 Danke für 24 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich versuche jetzt schon seit 5 Wochen mit libnodave Daten aus meiner S7 (mit CP 443-1) über das ISO on TCP zu lesen, aber es klappt einfach nicht (bekomme nur komische Werte die ich nicht interpretieren kann ). Mit dem mitgelieferten Beispiel komme ich auch irgendwie nicht zurecht. Habe zwischenzeitlich schon mal mit AG-Link den gleichen Versuch gestartet - mit Erfolg, alles ziemlich einfach. Für meinen privaten Gebrauch ist die .dll aber nicht finanzierbar. Vielleicht kann mir ja jemand eine Starthilfe geben oder evtl. ein einfaches Sample wie ich die Kommunikation aufbauen kann und die gelesenen Werte zu verstehen habe.
    Nutze die Delphi Komponente TNoDave und möchte z.B MW0 auslesen.
    Gruß
    Frank
    Zitieren Zitieren Zugriff mit libnodave (unter Delphi) auf S7-CP443-1  

  2. #2
    Registriert seit
    19.09.2005
    Ort
    Freudenstadt
    Beiträge
    811
    Danke
    64
    Erhielt 101 Danke für 64 Beiträge

    Standard

    Für das genannte Beispiel mußt Du mit meiner Komponente folgendes machen:
    • das entsprechende Protokol (daveProtoISOTCP) auswählen,
    • die IP-Adresse des CP-443 eintragen (der Port wird bei Auswahl des Protokolls automatisch eingetragen),
    • die Rack- und Slot-Nr. der CPU angeben (bei einer 400er meistens CPURack 0 und CPUSlot 3),
    • als Area den Merkerbereich (daveFlags) auswählen,
    • die Anzahl der zu lesenden Bytes in BufLen eintragen (2 für ein Merkerwort),
    • in BufOffs eintragen, ab welcher Offsetadresse gelesen werden soll (MW0 liegt an Offset 0),
    • ggf. bei Interval eintragen, in welchem Abstand (in ms) erneut gelesen werden soll,
    • Active auf True setzen.

    Dann sollten entweder in der Eigenschaft Buffer die beiden Bytes des Merkerwortes als Hex-Werte angezeigt werde, oder in der Eigenschaft LastError der Fehlercode und in LastErrMsg die Fehlermeldung stehen. Wenn das fehlerfrei funktioniert (LastError = 0), dann kannst Du in Deinem Programmcode das Merkerwort mit TNoDave.GetWord(0) das Merkerwort auslesen.

    Wenn das bei Dir nicht funktioniert, dann brauche ich ein paar mehr Infos, um Dir helfen zu können:
    • Wie sind die Eigenschaften von TNoDave eingestellt ?
    • Welche "komischen Werte" bekommst Du geliefert ?
    • Was steht in LastError/LastErrorMsg ?
    • Was passiert im Demo-Programm ?


    Gruß Axel

    PS: AGLink ist für privat zu teuer, aber eine 400er CPU mit CP-443 usw. ist nicht zu teuer ? Hast Du eine besonders günstige Bezugsquelle für Siemens-Hardware ?
    Man muß sparn wo mn knn!

  3. #3
    Avatar von Frank
    Frank ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    20.04.2006
    Ort
    Falkenhagen
    Beiträge
    150
    Danke
    28
    Erhielt 26 Danke für 24 Beiträge

    Standard

    Erstmal vielen Dank für die schnelle Antwort. Ich habe es eben nochmal genau der Anleitung entsprechend probiert, leider immer noch ohne Erfolg.

    Zitat Zitat von afk
    Wenn das bei Dir nicht funktioniert, dann brauche ich ein paar mehr Infos, um Dir helfen zu können:
    • Wie sind die Eigenschaften von TNoDave eingestellt ?
    • Welche "komischen Werte" bekommst Du geliefert ?
    • Was steht in LastError/LastErrorMsg ?
    • Was passiert im Demo-Programm ?
    Zu den Fragen habe ich mal zwei Screenshots angehängt. Im DemoProgramm versuche ich die MW2..MW8 auszulesen. Dabei wird exemplarisch:

    NoDave.Active:= true;
    NoDave.Connect(...);

    Schleife
    Var[x]:=NoDaveGetWord(Adresse);

    NoDave.Disconnect;
    NoDave.Active:= false;

    Würde Dir auch gern das Projekt für eine Analyse zu Verfügung stellen.
    Wenn ich es richtig verstanden habe, werden schon mit der Eigenschaft NoDave.Active Werte gelesen. Wofür ist dann NoDave.Connect? Kann man vielleicht auch beim einbinden der Komponente in Delphi was falsch machen?


    Zitat Zitat von afk
    PS: AGLink ist für privat zu teuer, aber eine 400er CPU mit CP-443 usw. ist nicht zu teuer ? Hast Du eine besonders günstige Bezugsquelle für Siemens-Hardware ?
    Die Steuerung ist eine (Dauer-)Leihgabe meiner Firma, wenn eine in den Anlagen kaputt geht ist sie weg.

    Viele Grüße und ein schönes WE
    Frank
    Angehängte Grafiken Angehängte Grafiken

  4. #4
    Registriert seit
    19.09.2005
    Ort
    Freudenstadt
    Beiträge
    811
    Danke
    64
    Erhielt 101 Danke für 64 Beiträge

    Standard

    Zitat Zitat von Frank
    Würde Dir auch gern das Projekt für eine Analyse zu Verfügung stellen.
    Ich hab Dir dazu was per PN geschickt.

    Zitat Zitat von Frank
    Wenn ich es richtig verstanden habe, werden schon mit der Eigenschaft NoDave.Active Werte gelesen. Wofür ist dann NoDave.Connect?
    Active ist für die Bedienung im Objektinspektor, Connect für den Aufruf aus dem ProgrammCode heraus gedacht. Funktional ist kein Unterschied, beim Setzen von Active auf True wird intern Connect aufgerufen.

    Zitat Zitat von Frank
    Kann man vielleicht auch beim einbinden der Komponente in Delphi was falsch machen?
    Nichts, was mir bekannt wäre.

    Mir ist in Deinem Screenshot vom Objektinspektor aufgefallen, daß Du CPUSlot=4 eingetragen hast, steckt in Slot 4 wirklich die CPU oder steckt da der CP ?
    Du mußt bei ISO over TCP unbedingt den Slot der CPU in CPUSlot eintragen, sonst fühlt sich die CPU nicht angesprochen und antwortet nicht.

    Außerdem hast Du Interval=1 eingestellt, das bedeutet, daß die Komponente versucht, alle 1ms die aktuellen Werte von der SPS einzulesen (oder so schnell wie möglich, falls 1ms zu kurz ist). Da solltest Du besser einen deutlich höheren Wert eintragen, z.B. 1000 für 1 Sekunde. Wenn Dir das nicht schnell genug ist, dann kannst Du den Wert immer noch runtersetzen, sobald die Kommunikation korrekt funktioniert.

    Aus dem anderen Screenshot werde ich nicht so richtig schlau, da ich mit Deinen Meldetexten nur zum Teil was anfangen kann.


    Gruß Axel
    Man muß sparn wo mn knn!

  5. #5
    Avatar von Frank
    Frank ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    20.04.2006
    Ort
    Falkenhagen
    Beiträge
    150
    Danke
    28
    Erhielt 26 Danke für 24 Beiträge

    Standard

    so habe jetzt nach einigen Anlaufschwierigkeiten und netter Unterstützung
    von Axel mal einiges ausprobiert (Testprogramm liest 4 MW's aus der Steuerung mit libnodave und zum Vergleich wird auch mit AG-Link gelesen). Folgendes Ergebnis habe ich auf der Reise durch unsere
    Werkshalle erhalten:


    CPU Rack Slot Status
    313C 0 2 ok
    416 0 3 nicht ok
    316 0 2 ok
    318 0 2 nicht ok
    314 0 2 ok
    315-2DP 0 2 ok
    416 0 4 nicht ok
    414 0 3 nicht ok
    314C-2DP 0 2 ok


    nicht OK = es werden falsche Werte gelesen

    Die 318 und die 400’er Reihe haben meiner Kenntnis nach die gleiche Architektur.
    Nun ist die Frage – liegt es am Unterschied der beiden Reihen oder ist da was in
    der .dll nicht ok? Hat schon mal jemand erfolgreich mit libnodave über ISO over TCP auf eine 400'er zugegriffen?

    Gruß
    Frank

  6. #6
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Bei den verwendeten 400ern: Welches Netzteil kam jeweils zum Einsatz? Wie kommt die CPU auf Slot 4? Das wirkliche "nicht ok" das mich stutzen lässt ist das der 318 auf R/S 0/2. Die 300er ist standardmäßig immer auf Slot 2 erreichbar da es keine realen Steckplätze gibt.
    Liefert AGLInk dasselbe wie die VAT bei Siemens?
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  7. #7
    Registriert seit
    19.09.2005
    Ort
    Freudenstadt
    Beiträge
    811
    Danke
    64
    Erhielt 101 Danke für 64 Beiträge

    Standard

    Zitat Zitat von Frank
    Nun ist die Frage – liegt es am Unterschied der beiden Reihen oder ist da was in der .dll nicht ok? Hat schon mal jemand erfolgreich mit libnodave über ISO over TCP auf eine 400'er zugegriffen?
    Bei mir funktioniert libnodave per ISO over TCP mit folgenden Hardware-Kombinationen:
    • Siemens CPU 416/2-DP mit CP-443
    • Siemens CPU 416/2-DP mit NetLink
    • VIPA CPU 315 SB mit interner Ethernet-Schnittstelle
    • VIPA CPU 315 SB mit NetLink
    • Siemens CPU 315/2-DP mit CP-343
    • diverse Siemens CPUs der 300er-Reihe mit NetLink


    Gruß Axel
    Man muß sparn wo mn knn!

  8. #8
    Avatar von Frank
    Frank ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    20.04.2006
    Ort
    Falkenhagen
    Beiträge
    150
    Danke
    28
    Erhielt 26 Danke für 24 Beiträge

    Standard

    Zitat Zitat von Rainer Hönle
    Bei den verwendeten 400ern: Welches Netzteil kam jeweils zum Einsatz? Wie kommt die CPU auf Slot 4? Das wirkliche "nicht ok" das mich stutzen lässt ist das der 318 auf R/S 0/2. Die 300er ist standardmäßig immer auf Slot 2 erreichbar da es keine realen Steckplätze gibt.
    Liefert AGLInk dasselbe wie die VAT bei Siemens?
    Das Netzteil kann ich gerade nicht bennenen, da ich gerade unterwegs bin, könnte ich aber nachholen. Hat das Netzteil Einfluß auf die ganze Geschichte?
    Die CPU ist einfach so auf Slot 4 - muss ja funktionieren, wenn man es einstellen kann.
    AG-Link liefert immer die korrekten Werte --> arbeitet sehr zuverlässig, nur halt zu teuer für zu Hause zum basteln. Ich habe bei den Versuchen jeweils die VAT, AG-Link und libnodave zum vergleichen herangezogen, und dabei die MW's 2..8 ausgelesen.

  9. #9
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Zitat Zitat von Frank
    Das Netzteil kann ich gerade nicht bennenen, da ich gerade unterwegs bin, könnte ich aber nachholen. Hat das Netzteil Einfluß auf die ganze Geschichte?
    Die CPU ist einfach so auf Slot 4 - muss ja funktionieren, wenn man es einstellen kann.
    AG-Link liefert immer die korrekten Werte --> arbeitet sehr zuverlässig, nur halt zu teuer für zu Hause zum basteln. Ich habe bei den Versuchen jeweils die VAT, AG-Link und libnodave zum vergleichen herangezogen, und dabei die MW's 2..8 ausgelesen.
    Nur die Breite des Netzteiles, davon hängt bei der 400er die richtige Slotnummer ab. Und wenn die CPU wirklich in Slot 4 steckt und die richtigen Werte liefert ist ja alles in Ordnung.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  10. #10
    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
    Die Sache scheint sich aufgeklärt zu haben:
    Bei daveReadBytes(dc, area, DBnummer, start, len) muß der Parameter DBnummer 0 sein, wenn area nicht daveDB, also Datenbaustein ist. Manche/Alle 300er scheinen trotzdem Daten zu liefern, während die 400er das genau nehmen.

Ähnliche Themen

  1. Libnodave unter delphi 2006 ohne Komponente
    Von emsbootsmann im Forum Hochsprachen - OPC
    Antworten: 3
    Letzter Beitrag: 04.03.2010, 19:52
  2. s7 online zugriff via cp443-1 und ethernet
    Von mknoellner im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 04.05.2009, 08:01
  3. Delphi Zugriff auf Simatic Net OPC Server
    Von marco195 im Forum Simatic
    Antworten: 32
    Letzter Beitrag: 29.08.2006, 11:58
  4. Schneller Zugriff auf S5/S7 Daten (VB,Excel,C++, Delphi,C#)
    Von Anonymous im Forum Werbung und Produktneuheiten
    Antworten: 6
    Letzter Beitrag: 19.10.2005, 15:58
  5. Libnodave mit CP443-1 ISO
    Von Roman_kr im Forum Simatic
    Antworten: 32
    Letzter Beitrag: 15.09.2005, 10:17

Lesezeichen

Berechtigungen

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