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

Ergebnis 1 bis 9 von 9

Thema: Daten aus einer S7300 in Excel importireren

  1. #1
    Registriert seit
    10.07.2013
    Beiträge
    215
    Danke
    6
    Erhielt 46 Danke für 34 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich habe ein Problem bei dem ich eure Hilfe bedarf.

    Ich möchte Messwerte die in einem DB vorliegen in Excel importieren und richtig darstellen.
    Das importieren funktioniert dank libnodave.
    Nur die Zahlen werden mir nicht richtig dargestellt, die Werte liegen im DB als Real zahl vor in Excel bekomme ich aber z.B für den Wert 1,11 die Zahl 1066275963.

    Ich habe schon in VBA die Zahl von Singel in Double geändert aber ohne Veränderung.

    Was kann man noch ändern oder einstellen das er mir die richtige Zahl anzeigt


    Mein aktueller Code:
    Private Sub CommandButton4_Click()

    On Error GoTo Err:

    Dim i As Double

    If (CPU_Connected = True) Then

    TextBox1.Text = Val(CPU.DD(1, 0))
    TextBox2.Text = Val(CPU.DD(1, 4))
    TextBox3.Text = Val(CPU.DD(1, 8 ))
    TextBox4.Text = Val(CPU.DD(1, 12))


    GoTo Ende
    End If
    Err:

    Ende:

    End Sub

    Bitte um Hilfe

    Christoph
    Zitieren Zitieren Daten aus einer S7300 in Excel importireren  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.291 Danke für 2.660 Beiträge

    Standard

    Spontan: wie ist denn die Ausgabezelle formatiert?
    Dann verwirrt: ich mache ja viel mit Excel und LibnoDave, doch Code der wie Deiner aussieht, habe ich da noch nie gebraucht.

    Bei mir sieht das etwa so aus: REAL aus S7 in Excel-Zelle einlesen
    Code:
    '... Verbindung aufbauen (ph, di, dc) ...
    If res = 0 Then ' Verbindung zur CPU erfolgreich aufgebaut
    
        Do 'für vorzeitiges Beenden bei Fehlern
            res2 = daveReadBytes(dc, daveDB, 123, 0, 30, 0)
            If res2 <> 0 Then Exit Do 'Fehler beim Lesen
    '...
            Cells(zeile, spalte) = daveGetFloat(dc)
    '...
        Loop While 0 = 1 ' NIE wiederholen
        If res2 <> 0 Then 'Lesefehler aufgetreten ?
            resmb = MsgBox(daveStrError(res2), vbExclamation, "Fehler bei Datenlesen PLC_1:DB123...")
        End If
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #3
    Wetzelaer ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    10.07.2013
    Beiträge
    215
    Danke
    6
    Erhielt 46 Danke für 34 Beiträge

    Standard

    Formatierung steht Momentan auf Standart es hilft aber auch nix die zu ändern hab das schon Probiert.

    War ein Fehler von mir das ist gar kein Libnodave das ist etwas von IBH Softec.

  4. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.291 Danke für 2.660 Beiträge

    Standard

    Damit nicht noch mehr Leute sich umsonst Gedanken machen: Wie heißt denn das "etwas" von IBH Softec?

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. #5
    Wetzelaer ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    10.07.2013
    Beiträge
    215
    Danke
    6
    Erhielt 46 Danke für 34 Beiträge

    Standard

    Ich habe einen IBH link da sind Beispiele für Excel, Access und vieles mehr dabei.

    Noch eine Idee zu meinem Problem?


    Sent from my iPhone using Tapatalk
    Geht nicht gibt's nicht

  6. #6
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.291 Danke für 2.660 Beiträge

    Standard

    Gibt es bei IBH keine Funktion, die den 32Bit-Wert als Datentyp Single zurückgibt??
    Läßt sich vielleicht bei der Deklaration der von VBA genutzten IBHNET.DLL-Funktion tricksen?

    Alternativ sollte dies funktionieren:
    Code:
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
    
    
    Private Sub CommandButton4_Click()
    Dim tempRaw32 As Long
    Dim tempSingle As Single
      
    On Error GoTo Err:
       
     If (CPU_Connected = True) Then
       tempRaw32 = CPU.DD(1, 0)
       CopyMemory tempSingle, tempRaw32, 4
       TextBox1.Text = tempSingle
    
       tempRaw32 = CPU.DD(1, 4)
       CopyMemory tempSingle, tempRaw32, 4
       TextBox2.Text = tempSingle
    
       tempRaw32 = CPU.DD(1, 8)
       CopyMemory tempSingle, tempRaw32, 4
       TextBox3.Text = tempSingle
    
       tempRaw32 = CPU.DD(1, 12)
       CopyMemory tempSingle, tempRaw32, 4
       TextBox4.Text = tempSingle
    
       GoTo Ende
     End If
    Err:
          
    Ende:
    
    End Sub
    PS: Wozu die Val-Funktion in Deinem Code nützlich sein soll, das weiß wohl anscheinend nur IBH.
    Wenn Du eine REAL-Zahl mit Nachkommastellen anzeigen willst, dann ist Val() geradezu schädlich, weil es die Nachkommastellen abschneidet.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  7. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    Wetzelaer (23.02.2014)

  8. #7
    Wetzelaer ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    10.07.2013
    Beiträge
    215
    Danke
    6
    Erhielt 46 Danke für 34 Beiträge

    Standard

    Super danke das funktioniert


    Sent from my iPhone using Tapatalk
    Geht nicht gibt's nicht

  9. #8
    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

    @Harald: Val schneidet keine Nachkommastellen ab sondern gibt den Wert, in der Regel einer Zahl die als Text vorliegt, zurück.
    Rainer Hönle
    DELTA LOGIC GmbH

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

  10. Folgender Benutzer sagt Danke zu Rainer Hönle für den nützlichen Beitrag:

    PN/DP (23.02.2014)

  11. #9
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.291 Danke für 2.660 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    OK, da hab ich wohl die nicht ganz eindeutige Excel2002-Hilfe zur Val-Funktion missverstanden.
    Zitat Zitat von VBA 6.0 - Val-Funktion
    Die Val-Funktion liest die Zeichen einer Zeichenfolge bis zum ersten Zeichen, das nicht als Teil einer Zahl interpretiert werden kann. Symbole und Zeichen, die oft als Teil eines numerischen Wertes erkannt werden (z.B. Währungssymbole und Kommas), werden nicht erkannt.
    Ein schneller praktischer Test zeigt: die Nachkommastellen werden abgeschnitten - doch genauere Analyse zeigt: da kann Val() tatsächlich nicht dafür sondern die implizite Typkonvertierung, weil die Zahl nicht als String sondern schon als Zahl vorliegt.
    Code:
    Dim tempSingle As Single
    
    tempSingle = 123.456
    Cells(1, 1) = tempSingle            'Anzeige: 123,456001
    Cells(2, 1) = Val(tempSingle)       'Anzeige: 123
    
    Cells(3, 1) = Val(Str(tempSingle))  'Anzeige: 123,456
    Was ich aber meinte: Was macht es für einen Sinn, einen Long-Wert implizit in einen String umzuwandeln, damit er mittels Val in einen geeigneten numerischen Wert umgewandelt wird, der wiederum implizit in einen String umgewandelt wird, damit er einer Text-Eigenschaft zugewiesen werden kann ...

    So wie die Val-Funktion im Beispielcode von IBH benutzt wird und vom TE übernommen wurde, würden die Nachkommastellen entfernt werden - falls die IBH-Library einen Single liefern würde. Ob die das jemals getestet haben?

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  12. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    Rainer Hönle (23.02.2014)

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 10.10.2012, 15:01
  2. Daten zu excel aus Steuerung/TP177B color
    Von Murksi im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 14.04.2008, 11:54
  3. Antworten: 3
    Letzter Beitrag: 15.04.2007, 01:26
  4. Antworten: 1
    Letzter Beitrag: 15.01.2007, 07:30
  5. Import von Daten aus DB in Excel
    Von Anonymous im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 11.11.2003, 15:55

Lesezeichen

Berechtigungen

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