Fragen zur Variable 'String' in Step 7

Hallo,

ich habe mal wieder ein kleines Problemchen:
Ich möchte gerne einen 22 Byte langen String-Code (Variable vom Typ 'String[20]') von einem DB in einen anderen kopieren. Mit normalen Befehlen kann man aber nur max. Doppelworte kopieren. Also wie bekomme ich am besten 22 Byte wo anders hin kopiert??

2.Frage: Wie kann ich eigentlich in der Variablendeklaration einen String an den übergeordneten FC übergeben? Wenn ich die Variable String deklariere zeigt er mir die Länge 254 an (String[254]). Gebe ich für die 254 z.B. eine 20 ein wird die Variable ungültig.


Gruß Jörg
 
AW: Fragen zur Variable 'String' in Step 7

Hi!

Zu Frage 1: Stichwort Systemfunktion SFC20 BLKMOV (Block-Move); findest du in der Standardbibliothek von S7

Zu Frage 2: Versteh ich jetzt nicht ganz!

Gruß
berty
 
AW: Fragen zur Variable 'String' in Step 7

Hi!

Zu Frage 1: Stichwort Systemfunktion SFC20 BLKMOV (Block-Move); findest du in der Standardbibliothek von S7

Prima, dass ist selbsterklärend!

Zu Frage 2: Versteh ich jetzt nicht ganz!

Gruß
berty

Mal angenommen ich habe in einem DB eine Variable mit dem Namen 'Test' und dem Datentyp string[254] (also der maximalen Stringlänge). Wenn ich nun in einer FC (z.B. FC 1) unter Umgebung\Schnittstelle als Input-Variable ebenfalls eine Variable mit dem Namen 'Test' und dem Datentyp String einfüge und danach diesen FC z.B. im OB 1 aufrufe, kann ich dort der FC 1 die Variable aus dem DB übergeben. Dies funktioniert auch.
Möchte ich das ganze allerdings mit einem kürzeren String (string[20]) machen, so kann ich zwar im DB die kürzere Länge angeben, aber in o.g. FC 1 unter Umgebung\Schnittstelle wird der Datentyp string[20] rot, sobald ich die 20 für die 254 eingebe.


Gruß Jörg
 
AW: Fragen zur Variable 'String' in Step 7

Muss zu meiner Schande gestehen, dass mir das noch nie aufgefallen ist! :oops:
Ich denk mir mal, dass der FC hier ganz einfach die maximal mögliche Länge für diese Variable verwendet. Er kann ja nicht wissen, was ihm der Anwender bei der Parametrierung dieses FCs zum Fraß vorwirft.
 
AW: Fragen zur Variable 'String' in Step 7

Hallo,

schade, ich dachte ich hätte nur etwas falsch gemacht.

Eine Frage habe ich jetzt aber noch:
Im Anhang befindet sich ein PDF mit einem Screenshot wo ich in der FC 1 die FC 2 aufrufe und mit Variablen beschalte. Ich möchte nun gerne für den Ausdruck "DB2".Programm[1] für die [1] eine Variable einsetzen, gibt es da irgend eine Möglichkeit??

Gruß Jörg
 

Anhänge

  • FC 1.pdf
    46,2 KB · Aufrufe: 131
AW: Fragen zur Variable 'String' in Step 7

Da wirts du wohl Pech haben.
Das was du machen möchtest, nennt sich speicherindirekte Adressierung und ist nur bei Verwendung von Absolutadressen möglich.
Beispiel:
Du willst das DBB10 aus dem DB1 indirekt laden:
//Pointer vorbelegen, dazu Integerzahl in Pointerformat
//bringen (d.h. drei Stellen nach links schieben), oder optional
//gleich Pointerformat vorgeben mit:
// L P#10.0
// T MD 10 )
L 10
SLD 3
T MD 0

//DB1 aufschlagen und das Byte 10 laden:
AUF DB 1
L DBB [MD 10]
T AB 5

In deinem Fall müsstest du deine Programmnummer erst um 1 verringern und dann mit 40 multiplizieren, bevor du daraus ein Pointerformat machst, um über Absolutadressen indirekt zu arbeiten.
 
AW: Fragen zur Variable 'String' in Step 7

Hallo,

habs heute erfolgreich hinbekommen. Im Anhang der Ausdruck der FC 1.
Damit kann ich in der Anlage 80 Programme laden und speichern die jeweils 100 Byte Daten beinhalten. Und das ganze mit 5 kleinen Netzwerken, geil.

Danke für deine Hilfe, berty!! ;)


Gruß Jörg
 

Anhänge

  • FC1.pdf
    15,2 KB · Aufrufe: 228

Jobs

Jobmail abonieren - keine Jobs mehr verpassen:

Ich möchte die wöchentliche Jobmail erhalten und akzeptiere die Datenschutzerklärung.
Du kannst die Jobmail jederzeit über den Link in der Mail abbestellen.

Wir verwenden Sendinblue als unsere Marketing-Plattform. Wenn Du das Formular ausfüllst und absendest, bestätigst Du, dass die von Dir angegebenen Informationen an Mailchimp zur Bearbeitung gemäß den Nutzungsbedingungen übertragen werden.

Top