libnodave Byte in Wert umwandeln VB.Net

kiter20

Level-1
Beiträge
18
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Abend,

ich bin auf der Suche nach Hilfe beim umwandel von den Werten die libnodave von der Logo8 bekommt,
in das jeweilig richtige Format.

Zb. hatte ich im VM die Zeit einer Einschaltverzögerung hinterlegt, diese steht auf 3 Sec.
Nun bekomme ich den Wert 44.
Wie bekomme ich dort 3 Sec. raus??

Ich möchte auch an dieser Stelle ganz ehrlich sein. Ich verstehe von diesen ganzen Bit´s und Byte´s kein Stück.:rolleyes:
Das bekomm ich nicht in meinen Schädel.

kiter20
 
Zuletzt bearbeitet:
Okay,
also "Word" muss ich mir mit

(dc.getU16)

holen ? Ist das korrekt?

Da bekomme ich dann bei 3 sec. einen Wert von 11504.
Wie wird das jetzt zu 3 sec. ?

kiter20
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Einen 16bit Integer holt man sich mit
Code:
Public Shared Function getS16from(ByVal b() As Byte, ByVal pos As Integer) As Integer
aus dem Buffer.

Ob du aus dem V- Memory der Logo überhaupt lesen kannst, weiß ich nicht.
in der Datei "area.html" sind die Speicherbereiche dargestellt. Orientiere dich mal an einer S7-200 V-Memory.
Poste doch mal die Variablendeklaration aus Logosoft und deinen Code von .Net zum lesen.

Holger
 
Die Variablen:
VMemory.jpg

Code:
   dc.readBytes(daveDB, 1, 0, 1, readByte)
                TextBox1.Text += CStr(dc.getS16At(0)) & vbCrLf

In diesem Fall bekomme ich 496


Ein leises: aaaaaahhhhhhhh ich dreh durch:shock:
So viele Möglichkeiten. Wann soll ich nur was nehmen. Gibt es dazu eine Doku? :confused:

 
Zuletzt bearbeitet:
Versuche mal folgendes:
Code:
Dim VM_Wert As Integer
Dim Buffer(9999) As Byte

res = dc.readBytes(libnodave.daveDB, 1, 0, 2, Buffer)
VM_Wert = libnodave.getS16from(Buffer, 0)

Holger
 
So,weiter geht´s.

Wie kann ich denn ein integer in word umwandeln?
Ich möchte jetzt gerne einen Wert in den vm Berreich schreiben.

kiter20
 
Wie kann ich denn ein integer in word umwandeln?
Eigentlich nur bedingt.
Ein Integer stellt eine Ganzzahl dar. Wobei bei .NET ein Integer eine 32bit Zahl ist. In der SPS Welt ist ein Integer meistens nur 16bit lang.
Ein Word ist eigentlich keine Zahl sondern eine Ansammlung von einzelnen Bit's. Normalerweise 16bit lang.
Wenn du also in der Logo von einem Integer sprichst ist das Gegenstück in .NET ein Short.
Mal ein Link zu Datentypen in .NET https://msdn.microsoft.com/de-de/library/47zceaw7.aspx

Umwandlung einer Zahl in ein Word
Code:
Dim Var_Short as Short = 1234
Dim Var_Word as UShort
Var_Word = CUShort(Var_Short)
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber wie pack ich das denn nun in ein array?
Damit ich das schreiben kann?

Code:
                Dim Var_Short As Short = 30
                Dim Var_Word As UShort
                Var_Word = CUShort(Var_Short)

                dc.writeBytes(libnodave.daveDB, 1, 0, 2, Var_Word)
 
Zurück
Oben