-> 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:
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
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