Problem bei String Übergabe in FBs/FCs

STEP7 ist die Programmiersprache der SIMATIC S7-Steuerungen. Allgemeine Fragen.
Antworten
SPS-Starter
SPSTreff-User
Beiträge: 3
Registriert: 21 Okt 2010, 10:04

Problem bei String Übergabe in FBs/FCs

Beitrag von SPS-Starter »

Hallo liebe WIN-SPS Gemeinde,
vorab bin noch ein relativer Grünschnabel.

Habe ein keines Problem mit dem übergeben von Strings in FBs oder FCs, dies können selbst geschrieben sein oder z. B der FC 17. Hier bei ist es egal ob ich den String in ‚einfachen‘ hoch Kommata Setzte oder „doppelten“. In der WIN-SPS Hilfe finde ich folgenden Hinweis (aus dem FC 17):

Allgemeiner Hinweis
Wenn beim Aufruf einer der folgenden FCs einem Formalparameter vom Datentyp STRING ein Aktualparameter zugewiesen wird, der im Lokaldatenbereich des aufrufenden Bausteins definiert wurde, muß folgendes beachtet werden:Vor dem FC-Aufruf muß in der temporären Variablen vom Datentyp STRING das Verwaltungsbyte "maximale Länge des Strings" mit der definierten Stringlänge beschrieben werden.
Eine STRING-Variable enthält zwei Längen: die maximale Länge (sie wird bei der Definition der Variablen in eckigen Klammern vorgegeben) und die aktuelle Länge (das ist die Anzahl der momentan gültigen Zeichen). Die aktuelle Länge ist kleiner oder gleich der maximalen Länge. Die Anzahl der durch eine Zeichenkette belegten Bytes ist um 2 größer als die maximale Länge.

Mir stellt sich die Frage ob ich mir einen ANY-Pointer für eine String bauen muss wie auch immer…


Gruß SPS-Starter

Benutzeravatar
Matthias
SPSTreff-Profi User
Beiträge: 288
Registriert: 19 Jun 2010, 11:16
Wohnort: Bretten
Kontaktdaten:

Beitrag von Matthias »

Strings werden üblicherweise in DBs angelegt:

Code: Alles auswählen

DATA_BLOCK DB1
AUTHOR:mh
FAMILY:nb
NAME:nb
VERSION:1.0
       STRUCT 
         s1:STRING[254]:='Hallo'  
         s2:STRING[254]:='Welt'  
       END_STRUCT 
BEGIN
       s1:='Hallo'
       s2:='Welt'
END_DATA_BLOCK
Dann können diese Strings aus dem DB an eine FC übergeben werden:

Code: Alles auswählen

       CALL FC        1
         in1:=DB1.s1
         in2:=DB1.s2
         identisch:=A0.0
Weitere Tipps:
- Strings können mit der Systemfunktion SFC20 kopiert werden
- Mit den IEC Funktionen (Siehe Bibliothek->IEC) sind viele Fuktionen für die Stringbehandlung vorhanden.


Hilft Ihnen das weiter?

Antworten