-> Hier kostenlos registrieren
Hallo,
Bisher habe ich nur in ST programmiert und soll mich nun in der S7 einarbeiten deshalb habe ich zwei einfache Fragen:
Meine Steuerung ist eine S7 315 DP.
Das Programm soll in AWL geschrieben werden.
Problem 1:
Ich habe im DB14 ein Array [0...15] of Int. in diesem möchte ich über eine Variable ein einzelnes Element auslesen.
In ST wäre das folgendermaßen:
Wertx:=Array[variable_X];
Mein zweites Problem ist etwas komplexer. Hier habe ich ebenfalls ein Array [0...6] of Int. Dieses möchte ich mit einer Schleife durchlaufen und Bitweise abfragen. Sollte ein Bit true sein möchte ich die Bittnummer in einen anderes Array mit 16 Feldern schreiben.
Beispiel:
Das Bit 5, 16, 25 ,33 und 36 ist true.
(0000 0100 0000 0000 1000 0000 0100 0000 0100 1000 ..........)
Dann soll in einen Integer die ersten 5 bits true gesetzt werden. (0000 0000 0001 1111) bei 6 Bits die true sind dem entsprechend die ersten sechs.
Das Array soll dann so aussehen.
Array[0] := 5;
Array[1] := 16;
Array[2] := 25;
Array[3] := 33;
Array[4] := 36;
Sollten mehr als 16 Bits true sein, werden ab dem 16. Bit, diese nicht mehr beachtet.
Vielen Dank für eure Hilfe im Voraus. Und denkt daran ich bin nicht besonders fit beim S7 programmieren
.
Bisher habe ich nur in ST programmiert und soll mich nun in der S7 einarbeiten deshalb habe ich zwei einfache Fragen:
Meine Steuerung ist eine S7 315 DP.
Das Programm soll in AWL geschrieben werden.
Problem 1:
Ich habe im DB14 ein Array [0...15] of Int. in diesem möchte ich über eine Variable ein einzelnes Element auslesen.
In ST wäre das folgendermaßen:
Wertx:=Array[variable_X];
Mein zweites Problem ist etwas komplexer. Hier habe ich ebenfalls ein Array [0...6] of Int. Dieses möchte ich mit einer Schleife durchlaufen und Bitweise abfragen. Sollte ein Bit true sein möchte ich die Bittnummer in einen anderes Array mit 16 Feldern schreiben.
Beispiel:
Das Bit 5, 16, 25 ,33 und 36 ist true.
(0000 0100 0000 0000 1000 0000 0100 0000 0100 1000 ..........)
Dann soll in einen Integer die ersten 5 bits true gesetzt werden. (0000 0000 0001 1111) bei 6 Bits die true sind dem entsprechend die ersten sechs.
Das Array soll dann so aussehen.
Array[0] := 5;
Array[1] := 16;
Array[2] := 25;
Array[3] := 33;
Array[4] := 36;
Sollten mehr als 16 Bits true sein, werden ab dem 16. Bit, diese nicht mehr beachtet.
Vielen Dank für eure Hilfe im Voraus. Und denkt daran ich bin nicht besonders fit beim S7 programmieren
.