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

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

Thema: Prodave und VBA

  1. #11
    Kojote ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.08.2004
    Beiträge
    258
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hat nicht funktioniert mit dem zip

    2.Versuch


    neee geht nich....
    Angehängte Dateien Angehängte Dateien

  2. #12
    Kojote ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.08.2004
    Beiträge
    258
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ohhhh ging doch

  3. #13
    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

    Nix zip gefunden Kojote .

    Doch, dauert nur bis ae angezeigt wird .

    Danke.
    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. #14
    Registriert seit
    02.06.2005
    Beiträge
    12
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    >Nur mit dem Datenwort stimmt noch etwas nicht ; VBA muß
    >des wert durch 256 teilen damit der wert korrekt ist
    >Hab den Fehler noch nicht gefunden



    das hört sich so an als das die bits um 8 stellen verschoben sind
    evtl. sind das low und hight byte vertauscht?

  5. #15
    Registriert seit
    09.09.2004
    Beiträge
    14
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    @ renid55
    Du hast recht Low und High Byte sind vertauscht. Für die richtige Darstellung der Werte must du sie tauschen, dafür hat Prodave sogar eine Funktion müsste im Handbuch stehen.

    MfG

    Thomas

  6. #16
    Kojote ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.08.2004
    Beiträge
    258
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ja...ich denke es lieg an den vertauschten Bits.

    Steht auch so im Handbuch:
    db_read liest verkehrtrum.

    Aber mit der "dreh" funktion kf_floot (war es denke ich)
    haut es irgendwie nicht hin - ich erhalte nur müll

  7. #17
    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

    In Delphi mache ich das so:

    Daten mit Prodave-Mini einlesen und als Byte-Array abspeichern (db_read).
    Zum Wandeln in Gleitpunkt folgende zwei Funktionen.
    Die erste (alte) etwas umständlich, die zweite macht das Selbe, aber ganz einfach .

    Code:
    //Übergabe einer Gleitpunktzahl von S7 an Delphi
    //eingelesen werden 4 Byte, diese werden zu einer Integer-Zahl aufaddiert
    //und müssen dann in eine Delphi-Gleitpunktzahl umgewandelt werden
    function S7_Float_2(Daten: Integer): Real;
    var
      Exp, Mant, Count: Integer;
      Mant_r, D_Real: Real;
    begin
      Exp := ((Daten shl 1) shr 24) - 127;
      Mant := (Daten shl 9) shr 9;
    
      Mant_r := 0;
      Count := 1;
      while Count <= 23 do
      begin
        //nachsehen, ob Bit an Stelle Count 0 oder 1
        if &#40;&#40;Mant and &#40;1 shl &#40;23 - Count&#41;&#41;&#41; > 0&#41; then
          Mant_r &#58;= Mant_r + Power&#40;2 , -Count&#41;;
        Count &#58;= Count + 1;
      end;
      //eine echte Null erzeugen !!!
      if &#40;&#40;Exp = -127&#41; and &#40;Mant = 0&#41;&#41; then
        Mant_r &#58;= 0
      else
        Mant_r &#58;= 1 + Mant_r;
      D_Real &#58;= Mant_r * Power&#40;2, Exp&#41;;
      //Vorzeichen testen und einrechnen
      if &#40;&#40;Daten shr 31&#41; > 0&#41; then
        S7_Float_2 &#58;= -D_Real
      else
        S7_Float_2 &#58;= D_Real;
    end;
    Code:
    //Übergabe einer Gleitpunktzahl von S7 an Delphi, aber viel einfacher
    function S7_Float&#40;Daten&#58; Integer&#41;&#58; Real;
    var
      fiu&#58; single;
    begin
      move&#40;Daten,fiu,4&#41;; &#123; bloß keine impliziten Rechenoperationen durch casts! &#125;
      S7_Float &#58;= fiu;
    end;
    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

  8. #18
    Anonymous Gast

    Standard

    Ein Tipp.

    libnodave.dll

    Ort : googel
    Preis: 0€

    Beispiele in C++ und Delphi

    Verbindung mit TCP/IP ISO , TCP/IP IBH-Netlink, MPI,...

    Gruß

  9. #19
    Registriert seit
    02.06.2005
    Beiträge
    12
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hi ,
    kann man libnodave eigentlich auch in vb einbinden?

    gruß
    reinhard

Ähnliche Themen

  1. Prodave
    Von Ralle im Forum Hochsprachen - OPC
    Antworten: 8
    Letzter Beitrag: 04.10.2007, 13:32
  2. ProDave mit VB
    Von andrej_f im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 25.04.2007, 10:24
  3. PRODAVE
    Von Anonymous im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 02.04.2007, 15:10
  4. Prodave !!
    Von moojoe im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 02.04.2007, 08:29
  5. USB-Adapter für Prodave
    Von Kojote im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 16.06.2005, 07:39

Lesezeichen

Berechtigungen

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