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

Ergebnis 1 bis 3 von 3

Thema: REAL Werte mit Libnodave

  1. #1
    Registriert seit
    15.08.2011
    Beiträge
    3
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich hoffe ich bin hier im richtigen Forum denn ich bin mit meiner Weisheit langsam am Ende

    Ich versuche via Libnodave mehrere Real Werte aus meiner CPU auf den Rechner zu bekommen.
    Programmiert wird in VB.NET

    Vorab hier schonmal mein Code:

    Code:
    Public Class Form1
    
        Dim localMPI As Integer = 0, plcMPI As Integer = 2
        Dim fds As libnodave.daveOSserialType
        Dim di As libnodave.daveInterface
        Dim dc As libnodave.daveConnection
        Dim res As Integer = 1
        Private Declare Function daveGetU8from Lib "libnodave.dll" (ByRef buf As Byte) As Byte
        Private Declare Function daveGetS8from Lib "libnodave.dll" (ByRef buf As Byte) As Short
        Private Declare Function daveGetS16from Lib "libnodave.dll" (ByRef buf As Byte) As Short
        Private Declare Function daveGetS32from Lib "libnodave.dll" (ByRef buf As Byte) As Integer
        Private Declare Function daveGetFloatfrom Lib "libnodave.dll" (ByRef buf As Byte) As Single
        Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            Select Case fds.rfd  'Portstatus - lesen
                Case 0
                    txtFDS.Text = "Verbindung: Nicht verbunden"
                    txtFDS.BackColor = Color.Yellow
                    Timer2.Enabled = False
                Case Is > 0
                    txtFDS.Text = "Verbindung: OK"
                    txtFDS.BackColor = Color.Green
                    Timer2.Enabled = True
                Case Is < 0
                    txtFDS.Text = "Verbindung: Fehler"
                    Timer2.Enabled = False
                    txtFDS.BackColor = Color.Red
            End Select
            Select Case res
                Case 0
                    txtRES.Text = "SPS Antwort: OK"
                    txtRES.BackColor = Color.Green
                Case Is < 0
                    txtRES.Text = "SPS Antwort: Kann angegebene CPU nicht finden"
                    txtRES.BackColor = Color.Red
                Case Is > 0
                    txtRES.Text = "SPS Antwort: Keine Verbindung"
                    txtRES.BackColor = Color.Yellow
            End Select
        End Sub
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim IP As String
            IP = "192.168.0.100"
    
            fds.rfd = libnodave.openSocket(102, IP) 'Portstatus - lesen
            fds.wfd = fds.rfd 'Portstatus schreiben = Portstatus - lesen
            di = New libnodave.daveInterface(fds, "Mein Interface", localMPI, _
            libnodave.daveProtoISOTCP, libnodave.daveSpeed187k)
            di.setTimeout(1000000)
            res = di.initAdapter
            If res = 0 Then       'initAdapter OK
                ' Rack und Slot spielen keine Rolle bei diesem Protokoll
                dc = New libnodave.daveConnection(di, plcMPI, 0, 2)
                res = dc.connectPLC()
            End If
        End Sub
        
        
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Dim buf(52) As Byte
            res = dc.readBytes(libnodave.daveFlags, 183, 18, 52, buf)
            ListBox2.Items.Clear()
            ListBox2.Items.Add(daveGetFloatfrom(buf(0)))
            ListBox2.Items.Add(daveGetFloatfrom(buf(4)))
            ListBox2.Items.Add(daveGetFloatfrom(buf(8)))
            ListBox2.Items.Add(daveGetFloatfrom(buf(12)))
            ListBox2.Items.Add(daveGetFloatfrom(buf(16)))
            ListBox2.Items.Add(daveGetFloatfrom(buf(20)))
            ListBox2.Items.Add(daveGetFloatfrom(buf(24)))
            ListBox2.Items.Add(daveGetFloatfrom(buf(28)))
            ListBox2.Items.Add(daveGetFloatfrom(buf(32)))
            ListBox2.Items.Add(daveGetFloatfrom(buf(36)))
            ListBox2.Items.Add(daveGetFloatfrom(buf(40)))
            ListBox2.Items.Add(daveGetFloatfrom(buf(44)))
            ListBox2.Items.Add(daveGetFloatfrom(buf(48)))
        End Sub
    End Class
    Die benötigten werte stehen im DB183 von 18 - 70

    Der Code liefert zwar keine Fehler aber dafür komplett falsche Werte

    zb.:

    Laut Simatic Manager sollte bei 18.0 2730,0 stehen
    Mein Code Liefert 8,922067E-42
    Bei 22.0 Sollte 0 stehen
    Zurückgegeben wird -1,70172337E+38

    Ich verstehe den Fehler einfach nicht bin mir aber das ich den richtigen DB aufrufe und an den richtigen Positionen lese.
    Vielleicht findet ihr einen Fehler

    danke schonmal
    Bytes
    Zitieren Zitieren REAL Werte mit Libnodave  

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

    Standard

    Mit daveflags liest du von merkern und nicht von einem db!
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  3. Folgender Benutzer sagt Danke zu Jochen Kühner für den nützlichen Beitrag:

    Bytes (30.03.2012)

  4. #3
    Bytes ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.08.2011
    Beiträge
    3
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Natürlich du hast recht.. Wie konnte ich das nur übersehen...

    vielen Dank

Ähnliche Themen

  1. Real Werte in WinCC flexible
    Von Kaskade im Forum HMI
    Antworten: 3
    Letzter Beitrag: 16.09.2010, 11:12
  2. Byte werte in Real umrechen
    Von enter im Forum CODESYS und IEC61131
    Antworten: 7
    Letzter Beitrag: 25.06.2010, 09:09
  3. Libnodave Werte zyklisch auslesen mit VB
    Von Fluffi im Forum Hochsprachen - OPC
    Antworten: 4
    Letzter Beitrag: 26.07.2009, 18:33
  4. Werte aus einen DB mit libnodave
    Von magmaa im Forum Programmierstrategien
    Antworten: 18
    Letzter Beitrag: 21.07.2009, 19:00
  5. Antworten: 4
    Letzter Beitrag: 01.09.2008, 12:45

Lesezeichen

Berechtigungen

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