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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 20 von 20

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

  1. #11
    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


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    nun funktioniert es auch bei mir.
    vielen dank für die hilfe!
    habe jede menge gelernt dabei.

    gruß frank

  2. #12
    Registriert seit
    20.04.2007
    Beiträge
    25
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    wer kann mir helfen,ich habe mir die Komponete runtergeladen und wollte nun mal ausprobieren.Das Demoprogramm läuft so das ich sagen kann das die Verbindung steht.Da ich Delphi 5 benutze kann ich das Demoprogramm selbst nich comilieren.Mit dem Package hatte ich auch einige schwierigkeiten.Ich binn nun soweit das ich eine Verbindung bekomme jedoch werden keine Daten ausgelesen.Kann mir jemand mal ein kleines Beispielprogramm in Delphi anzeigen wie ich über Iso Tcp einfach einen Input auslese damit ich weiter komme.Ich hatte auch beim Package compilieren Schwierigkeiten er merkelte Plongint an das ich dann in Longint geändert hatte.Liegt hier der Fehler.Gibt es auch einen anderen Weg die DLL zu nutzen.Freue mich über jede hilfe.
    Zitieren Zitieren libnodave für delphi  

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

    Standard

    Zitat Zitat von emsbootsmann Beitrag anzeigen
    wer kann mir helfen,ich habe mir die Komponete runtergeladen und wollte nun mal ausprobieren.Das Demoprogramm läuft so das ich sagen kann das die Verbindung steht.Da ich Delphi 5 benutze kann ich das Demoprogramm selbst nich comilieren.Mit dem Package hatte ich auch einige schwierigkeiten.Ich binn nun soweit das ich eine Verbindung bekomme jedoch werden keine Daten ausgelesen.Kann mir jemand mal ein kleines Beispielprogramm in Delphi anzeigen wie ich über Iso Tcp einfach einen Input auslese damit ich weiter komme.Ich hatte auch beim Package compilieren Schwierigkeiten er merkelte Plongint an das ich dann in Longint geändert hatte.Liegt hier der Fehler.Gibt es auch einen anderen Weg die DLL zu nutzen.Freue mich über jede hilfe.
    Ich bin nicht der Delphi-Fachmann, das ist AFK. Ein PLongint wird wohl ein Zeiger of Longint sein. Ihn durch Longint zu ersetzen liefert wohl die gleiche Speichergröße (32bit), sollte aber anderswo zu Meckereien führen (in Pascal mehr als in C) und ist sicher nicht im Sinne des Erfinders. Da würde ich eher versuchen, die Definition nachzuliefern:
    Type Plongint =Longint;
    oder so.

  4. #14
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.264
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    Plongint ist in nDelphi7 in System definiert, kann durchaus sein, daß es das so in Delphi5 noch nicht gab.
    Der ganze Abschnitt sieht so aus:

    (*$HPPEMIT 'namespace System' *)
    (*$HPPEMIT '{' *)
    (*$HPPEMIT ' typedef int *PLongint;' *)
    (*$HPPEMIT '}' *)
    PLongint = ^Longint;
    {$EXTERNALSYM PLongint}
    PInteger = ^Integer;
    PCardinal = ^Cardinal;
    PWord = ^Word;
    PSmallInt = ^SmallInt;
    PByte = ^Byte;
    PShortInt = ^ShortInt;
    PInt64 = ^Int64;
    PLongWord = ^LongWord;
    PSingle = ^Single;
    PDouble = ^Double;
    PDate = ^Double;
    PDispatch = ^IDispatch;
    PPDispatch = ^PDispatch;
    PError = ^LongWord;
    PWordBool = ^WordBool;
    PUnknown = ^IUnknown;
    PPUnknown = ^PUnknown;
    {$NODEFINE PByte}
    PPWideChar = ^PWideChar;
    PPChar = ^PChar;
    PPAnsiChar = PPChar;
    PExtended = ^Extended;
    PComp = ^Comp;
    PCurrency = ^Currency;
    PVariant = ^Variant;
    POleVariant = ^OleVariant;
    PPointer = ^Pointer;
    PBoolean = ^Boolean;
    Man kann das ganze natürlich auch "zu Fuß" machen, dazu mußt du nodave.pas einbinden und dir am Besten mal das Beispiel für Pascal ansehen, da sollten die wesentlichen Sachen drin sein. Zuerst würde ich aber versuchen die Delphi-Komponente zum laufen zu bringen, die ist prima gemacht und funktioniert gut. PLongint ist eigentlich nicht wichtig, da es nur in Funktionen vorkommt, die du wahrscheinlich gar nicht benötigst.

    {
    PLC program read functions:
    }
    function initUpload(dc:PdaveConnection; blockType:char; blockNr:longint; uploadID:Plongint):longint;stdcall;
    external LibName {$ifdef WIN32} name 'initUpload'{$ENDIF};

    function doUpload(dc:PdaveConnection; more:Plongint; buffer:PPuc; len:Plongint; uploadID:longint):longint;stdcall;
    external LibName {$ifdef WIN32} name 'doUpload'{$ENDIF};

    function endUpload(dc:PdaveConnection; uploadID:longint):longint;stdcall;
    external LibName {$ifdef WIN32} name 'endUpload'{$ENDIF};
    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. #15
    Registriert seit
    19.09.2005
    Ort
    Freudenstadt
    Beiträge
    811
    Danke
    64
    Erhielt 101 Danke für 64 Beiträge

    Standard

    Zitat Zitat von emsbootsmann Beitrag anzeigen
    Mit dem Package hatte ich auch einige schwierigkeiten.
    Das kann auch nicht funktionieren, das Package ist nur für Lazarus (steht auch in der Hilfe). Bei Delphi bräuchte man für jede Version ein eigenes Package, und dadurch wird es dann auch kaum einfacher als das Einbinden der Komponente in ein vorhandenes Package.

    Zitat Zitat von emsbootsmann Beitrag anzeigen
    Kann mir jemand mal ein kleines Beispielprogramm in Delphi anzeigen wie ich über Iso Tcp einfach einen Input auslese damit ich weiter komme.
    Dafür ist eigentlich das Demo-Programm gedacht ...

    Zitat Zitat von emsbootsmann Beitrag anzeigen
    Ich hatte auch beim Package compilieren Schwierigkeiten er merkelte Plongint an das ich dann in Longint geändert hatte.Liegt hier der Fehler.
    Glaube ich nicht, denn die von Ralle bereits aufgezählten Funktionen werden von der Komponente gar nicht verwendet.

    Zitat Zitat von emsbootsmann Beitrag anzeigen
    Gibt es auch einen anderen Weg die DLL zu nutzen.Freue mich über jede hilfe.
    Direkt mit den Funktionen in NoDave.pas, aber meiner Meinung nach ist es mit der Komponente einfacher ...

    Ich kann die Kompatibilität zu Delphi 5 leider nicht mehr herstellen, da ich selbst keinen Zugriff mehr auf Delphi 5 habe. Vermutlich ist es aber gar nicht schwer, das selbst zu bewerkstelligen. Delphi wird wahrscheinlich meckern, daß es irgendwelche Units nicht findet. Diese müssen dann nur aus der Uses-Liste entfernt werden. Danach kommt dann Mecker wegen nicht deklarierter Prozeduren, Funktionen oder Klassen. Jeweils aus der Delphi-Hilfe heraussuchen, in welchen Units diese sich befinden, und die in der Uses-Liste eintragen. Bei Definitionen wie PLongInt, die in Delphi 5 noch fehlen, einfach mal nach der korrekten Definition googeln, und die dann hinzufügen. Dann sollte es kompilieren und auch funktionieren.


    Aus dem 43°C heißen Indien:

    Gruß Axel
    Man muß sparn wo mn knn!

  6. #16
    Registriert seit
    20.04.2007
    Beiträge
    25
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ich brauche nochmal hilfe,ich habe von Frank noch was gemailt bekommen was mir sehr geholfen hat jedoch habe ich immer noch ein Problem.
    Ich möchte jetzt z.B. den E1.0 auslesen.Ich habe es mit NoDave.ReadByte versucht ohne erfolg,dann habe ich mit Getbit versucht ohne erfolg.Wenn ich nach der Demo gehe bekomme ich mit meiner 315 auch andere Werte als in der S7 Status Variable.Kann mir jemand helfen,hab die ganze Nacht verzweifelt versucht.Danke
    Zitieren Zitieren brauche nochmal hilfe  

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

    Standard

    Zitat Zitat von emsbootsmann Beitrag anzeigen
    Ich möchte jetzt z.B. den E1.0 auslesen.Ich habe es mit NoDave.ReadByte versucht ohne erfolg,dann habe ich mit Getbit versucht ohne erfolg.
    Die Komponente liest immer mit NoDave.ReadBytes von der SPS. Wenn Du Bits auswerten willst, dann mußt Du die entsprechenden Bytes zuerst mit NoDave.ReadBytes in den Puffer übertragen, und dann mit NoDave.GetBit das entsprechende Bit aus dem Puffer lesen.

    Zitat Zitat von emsbootsmann Beitrag anzeigen
    Wenn ich nach der Demo gehe bekomme ich mit meiner 315 auch andere Werte als in der S7 Status Variable.
    Verstehe ich nicht. Was für eine 315 ist es denn, und mit welchem Protokoll läuft die Verbindung ?


    Gruß Axel
    Man muß sparn wo mn knn!

  8. #18
    Registriert seit
    20.04.2007
    Beiträge
    25
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    danke an Frank der mir seine Demo zur Verfügung gestellt hat und so die entscheidene Hilfe gegeben hat.Das mit den falschen Werten hat sich auch aufgeklärt , ich hatte hier das mit dem Dbnummer:=0 überlesen.
    Danke nochmals an alle die mir geholfen haben.
    Zitieren Zitieren jetzt funktionierts  

  9. #19
    Registriert seit
    20.04.2007
    Beiträge
    25
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich habe in meinem S7 Programm Datenbausteine,mir ist nun aufgefallen wenn ich mich ausgeloggt habe das später die Dateninhalte der DB's alle auf Null waren.Ist jemanden das auch passiert.Ich lese nur EB und Ab aus verwende aber vorhert immer DBnummer:=0; da ja sonst falsche Werte eingelesen wurden.Vielleicht jemand eine Idee.
    Zitieren Zitieren problem mit Datenbausteine  

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von emsbootsmann Beitrag anzeigen
    Ich habe in meinem S7 Programm Datenbausteine,mir ist nun aufgefallen wenn ich mich ausgeloggt habe das später die Dateninhalte der DB's alle auf Null waren.Ist jemanden das auch passiert.Ich lese nur EB und Ab aus verwende aber vorhert immer DBnummer:=0; da ja sonst falsche Werte eingelesen wurden.Vielleicht jemand eine Idee.
    Auf Ausgänge habe ich bisher nur mal testweise mit meiner Delphi-Demo geschrieben, dabei ist mir so ein Verhalten zumindest nicht augefallen. Auf DBs schreibe ich aber häufig rum, dabei ist sowas noch nie passiert.

    Bist Du sicher, daß nicht zufällig jemand zur gleichen Zeit die Datenbausteine neu auf die SPS geladen hat ?

    Hast Du schon im Diagnosepuffer der CPU nach einem Hinweis gesucht ?


    Gruß Axel
    Man muß sparn wo mn knn!

Ä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
  •