Step 7 FB Datentyp STRING an eine IN Variable beschreiben

Elektro Wolf

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

ich wollte euch nach eure kurze Meinung fragen, ob das was ich vor habe tatsächlich nicht geht.
Ich möchte an einem Eingang eines Bausteins eine String Variable beschreiben und diese dann an ein Datenbaustein übergeben.

Folgende Bilder zur verdeutlichung:

Unbenannt.PNG

Unbenannt2.PNG

Es funktioniert offensichtlich nicht mit folgende Fehlermeldung: "Konstantenformat zu Datentyp STRING [3] paßt nicht zu formalem Typ STRING [32] des Formalparameters Bezeichnung"

Eine ähnliche Problematik wurde hier im Forum vor mehrere Jahren besprochen:

https://www.sps-forum.de/simatic/19060-fc-mit-einem-string-parameter-aufrufen.html

Da es mehrere Jahre zurückliegt, wollte ich nur nachfragen ob jemand evtl. eine gute Idee hätte.

Gruß Wolf
 
Hallo,
damals war es so, dass Step7-Classic bei der Form der Datenübergabe nicht wirklich einen String generieren wollte. Man mußte also über den Umweg einer Variablen gehen, die erst irgendwo angelegt werden mußte und der dann der Inhalt zugewiesen werden mußte.
Bei dir scheint es nun aber so zu sein (ich habe gerade kein TIA zur Hand um es nachstellen zu können), dass die Zwischenvariable erzeugt wird und nur nicht zur Parameter-Deklaration passt.
Was möchtest du denn alles so an den Baustein übergeben ? Also kann der IN deines Bausteins ggf. auch ein String[3] sein ? Ich könnte mir vorstellen, dass es dann eventuell funktioniert ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Larry,

ich möchte an den Baustein die Stringvariable, ein paar BOOL'sche Werte und Integerwerte übergeben.
Alles funktioniert bis auf diese Stringvariable.

Ich habe mal mit String [3] ausprobiert. Funktioniert auch nicht.
"Konstantenformat zu Datentyp STRING [3] paßt nicht zu formalem Typ STRING [3] des Formalparameters Bezeichnung"

Gruß Wolf
 
Guten Morgen,

also meines Wissens nach geht das so wie du das vor hast in der alten Welt (Step 7 5.x) nicht. Ich habe es gerade mal in TIA V14 SP1 getestet, da geht das.

In der alten Welt werden vermutlich nur Pointer auf eine entsprechende variable akzeptiert. Das heißt du könntest einfach z.B. eine Temporäre Variable vom gleichen Typ anlegen und die im Netzwerk vorher mit dem festen Schriftsatz beschreiben. In der alten Welt muss man glaube ich auch auf die Anzahl der Zeichen achten, also STRING[32] braucht auch einen STRING[32] und keinen STRING[3].

Gruß Christian

EDIT: Ob du auch auf die beiden HEADER Bytes des STRINGs achten musst weiß ich gerade nicht.
 
Ich meine, in irgendeiner Step7-classic-Dokumentation steht, daß die Übergabe von zusammengesetzten Datentypen (Beschaltung der Übergabe/Formalparameter mit Aktualparametern) nur symbolisch über einen Variablenname geht. Ich finde das jetzt allerdings nicht wieder.

Harald
 
Zuletzt bearbeitet:
Ich meine, in irgendeiner Step7-classic-Dokumentation steht, daß die Übergabe von zusammengesetzten Datentypen (Beschaltung der Übergabe/Formalparameter mit Aktualparametern) nur symbolisch über einen Variablenname geht. Ich finde das jetzt allerdings nicht wieder.

Das ist auch so ... es wird/wurde bei Classic nur der Pointer auf die Variable selbst übergeben. Wenn wir hier von Classic reden (ich hatte angenommen, dass es sich um TIA dreht) dann wird, wie schon von mir geschrieben, aus 'UMG' keine Hilfsvariable gebildet ...

Gruß
Larry
 
Ich glaube eher nicht das das was mit Pointer zu tun hat. Bei einem FB-IN wird auch ein String als Wert übergeben (in die Instanz kopiert) und kein Pointer. Im Step7 classic AWL/FUP/KOP-Editor ist die Übergabe von Konstanten zusammengesetzter Datentypen einfach nicht implementiert. In classic-SCL hingegen geht die Übergabe einer Stringkonstante, und ganz ohne Hilfsvariable.

Harald
 
Zurück
Oben