ADS Variablen Zugriff - Visual Basic

wolfi999

Level-1
Beiträge
55
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

Ich habe folgenden Aufbau:

Visual Basic Programm:

Dim hVar As Long
Dim VBVar As VBStruct

Private Sub cmdverbinden_Click()
Call AdsOcx1.AdsCreateVarHandle("Main.PLCVar", hVar)
lblVarlange.Caption = LenB(VBVar)
End Sub

Private Sub cmdtrennen_Click()
Call AdsOcx1.AdsDeleteVarHandle(hVar)
End Sub

Private Sub cmd_schreiben_sps_Click()
VBVar.VarInteger = CInt(txtInteger.Text)
VBVar.VarByte = CByte(txtByte.Text)
VBVar.VarDouble = CDbl(txtDouble.Text)

Call AdsOcx1.AdsSyncWriteIntegerVarReq(hVar, LenB(VBVar), VBVar.VarInteger)
End Sub

Visual Basic Struktur
Type VBStruct
VarInteger As Integer
VarDummy1 As Integer
VarByte As Byte
VarDummy2 As Byte
VarDummy3 As Byte
VarDummy4 As Byte
VarDouble As Double
End Type

Im SPS - Programm:
TYPE PLCStruct
STRUCT
PLCVarInteger : INT;
PLCVarDummy1 : INT;
PLCVarByte : SINT;
PLCVarDummy2 : SINT;
PLCVarDummy3 : SINT;
PLCVarDummy4 : SINT;
PLCVarDouble : LREAL;
END_STRUCT
END_TYPE

und

PROGRAM MAIN
VAR
PLCVar : PLCStruct;
END_VAR

Oben angeführtes Programm funktioniert einwandfrei. Sobald ich jedoch eine Bool Variable ins SPS - Programm schreiben möchte, funtkioniert das ganze nicht mehr. Im Visual Basic ist es doch so, dass für Bool variablen 2 byte in anspruchen genommen werden und im SPS lediglich 1Byte. Inwieweit muss ich das mit einer Dummy Variable auffüllen/ergänzen? Ich denke das ganze Alignment geschichte habe ich noch nicht ganz verstanden, denke ich.

- Wie müsste ich obigen Programm erweitern damit das mit bool auch funktioniert!!!
- Und wie müsste das Programm aussehen, wenn ich das ganze anstatt synchron zyklisch haben möchte??

Vielen Dank für eure Hilfe

mfg Wolfgang
 
hallo,

in der Struktur eine Bool - Variable habe ich gemeint.

Das Beispiel habe ich mir angesehen, da werden jedoch alle Datenformate rübergeschrieben, bis auf eine BOOL.

mfg
wolfi
 
Zurück
Oben