Zugriff auf ein Array in der SPS
Aufgabe
In der SPS befindet sich ein Array, welches von Visual Basic mit einem Lesebefehl ausgelesen werden soll.
Beschreibung
In der SPS befindet sich ein Array mit 100 Elementen vom Typ Integer (2 Byte). Das Array wird in der SPS mit den Werten 3500 bis 3599 aufgefüllt.
In der Load-Ereignisfunktion vom Visual Basic-Programm wird als erstes der Handle der SPS-Variablen geholt. Beim Beenden des Programms wird dieser in der Unload-Ereignisfunktion wieder freigegeben.
Betätigt der Benutzer den Button auf der Form, so wird mit der Methode AdsSyncRead[Datatype]VarReq() das komplette Array aus der SPS in die Visual Basic Variable Data eingelesen.
Die Variable Data muss den gleichen Aufbau haben, wie die entsprechende Variable in der SPS; 100 Elemente vom Typ Integer (2 Byte). Die Längenangabe bei dem Methodenaufruf ist 200, da die Länge der angeforderten Daten 200 Byte (100 Elemente mit je 2 Byte) beträgt.
In der folgenden FOR-Schleife wird das Array aus der SPS in einem Listbox-Control angezeigt.
Visual Basic 6 Programm
Dim hVar As Long
Dim Data(100) As Integer
'--- wird beim Starten aufgerufen ---
Private Sub Form_Load()
'--- Exception freigeben --- AdsOcx1.EnableErrorHandling = True
Call AdsOcx1.AdsCreateVarHandle("Main.PLCVar", hVar)
End Sub
'--- wird beim Beenden aufgerufen ---
Private Sub Form_Unload(Cancel As Integer)
Call AdsOcx1.AdsDeleteVarHandle(hVar)
End Sub
'--- wird vom Bediener aufgerufen ---
Private Sub cmd_read_Click()
Dim intIndex As Integer
'--- Array komplett auslesen ---
Call AdsOcx1.AdsSyncReadIntegerVarReq(hVar, 200, Data(0))
'--- Array Elemente in Form anzeigen ---
lstArray.Clear
For intIndex = 0 To 99
lstArray.AddItem (CStr(intIndex) & Chr(vbKeyTab) & _ CStr(Data(intIndex)))
Next
End Sub
SPS-Programm
PROGRAM MAIN
VAR
PLCVar : ARRAY [0..99] OF INT;
Index: BYTE;
END_VAR
FOR Index := 0 TO 99 DO
PLCVar[Index] := 3500 + INDEX;
END_FOR
Sprache / IDE | Beispielprogramm auspacken |
---|---|
Visual Basic 6 |