TIA String als Eingang

PCS7

Level-1
Beiträge
37
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

habe in TIA v15.1 an jedem Antriebsbausteine einen String Input um den TAK zuzuweisen, kann allerdings diesen von Außen nicht beschreiben.
Ist das ein Bug?

MfG
PCS7
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist es vielelicht an einem InOut? dann kann man den nicht fest beschreiben.

Ansonsten müsste es mit Hochkommata gehen. Beispiel aus SCL
Code:
"fcBauTelKopf"(isSender:='PLC001',
                       isEmpfänger:='MFR001',
                       iiTelLänge:=146,
                       isQuittyp:='QE',
                       isQuitStatus:='  ',
                       isTeletyp:='SNS_FAB',
                       oaTelekopf=>#saTelekopf,
                       ioiSeqNr:=#ioiSeqNr);

Der gleiche Baustein kann auch in KOP mit festen String beschrieben werden.

Hockomma ist das Ding das man mittels Shift + # (Raute) erhält.
 
Zuletzt bearbeitet:
Der Baustein ist Ursprünglich von Siemens erstellt, jedoch angepasst, da mir gewisse Funktionen nicht zusagten oder fehlten.
Es ist ein Input. Im DB vom FB kann ich den Namen ändern, jedoch nicht direkt am Bausteinanschluss.
Es handelt sich um eine 300er CPU. Siehe Bilder.


String am Eingang.JPGString im DB geschrieben.JPGDeklaration.JPG
 
Zuletzt bearbeitet:
Ich verstehe nicht recht den Unterschied zwischen Bild 1 und Bild 2. Ist im zweiten dem String schon in der Deklaration ein Startwert zugeordnet und im ersten nicht?

Ich würde den String mal mit Länge definieren ( z.B. String[20]). Vielleicht liegt da das Problem, daß er ohne Startwert die Länge 0 hat und damit kein String mit Länge > 0 zugewiesen werden kann.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,
Ich würde den String mal mit Länge definieren ( z.B. String[20]). Vielleicht liegt da das Problem, daß er ohne Startwert die Länge 0 hat und damit kein String mit Länge > 0 zugewiesen werden kann.
also ein String ohne Startwert hat die Länge 254 Byte - 2 Byte Header (Länge String / genutzte Zeichen) ...
Ich glaube eher, dass du dort keine Konstante beschalten darfst, finde in der Hilfe aber keinen Beleg dazu. Du könntest die Konstante 'H_26882' einfach mal in einen Temp-String Moven und dann an deinem FB beschalten.
 
Hallo,

in SCL kann ich den Eingang beschalten, nur nicht in Kop, FUB oder AWL, da erscheint die Fehlermeldung "unzulässiger Parameterzuweisung".
Die Beschaltung aus einem DB funktioniert auch ohne Probleme. Habe einen FB erstellt ohne Funktion, nur den Stringeingang, selber Effekt.

In TIA gibt es nur noch STRING, String[20] wird nicht akzeptiert.

Richtig erkannt Ingmar64 Bild 1 habe ich den String direkt am Eingang beschaltet und im 2. als Startwert im zugehörigen Instanzdatenbaustein (Bildbeschriftung).
 
Zuletzt bearbeitet:
Ich kann in Step 7 bei einer 300 überhaupt keine Strings direkt am Eingang angeben. Fehlermeldung lautet Typenkonflik. String[8] passt nicht zum formalen Parametertypen String [8].

Wenn ich die Strings als Startwerte in einem DB habe kann ich die DB Variable angeben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nun, in TIA geht es. Und dann erwarte ich auch diesen Parameter direkt zuweisen zu können. Ist doch umständlich einen DB mit den Stringwerten zu belegen, diese zuzuweisen und dann am zugehörigen FB verschalten. Im DB steht der Wert direkt am Ausgang. Andernfals, könnte der Wert ja verändert werden.
Ebenfalls sehr nachteilig in TIA ist das der Ausgang nur beobachtet werden kann, wenn dieser verschaltet ist, doch das steht auf einem anderem Blatt.
 
Eben mal kurzen Test mit V15.1 gemacht:

1500er CPU: Direktangabe von Stringwerten am Bausteineingang funktioniert
300er CPU: Direktangabe führt zu Typkonflikt, Stringkonstanten können auch nicht angegeben werden, bleibt also nur der Weg über einen DB

Nebenbei: im Vereinbarungsteil kann ich bei FC keine Stringlänge definieren bei FB aber schon
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nun, in TIA geht es. Und dann erwarte ich auch diesen Parameter direkt zuweisen zu können. Ist doch umständlich einen DB mit den Stringwerten zu belegen, diese zuzuweisen und dann am zugehörigen FB verschalten. Im DB steht der Wert direkt am Ausgang. Andernfals, könnte der Wert ja verändert werden.
Ebenfalls sehr nachteilig in TIA ist das der Ausgang nur beobachtet werden kann, wenn dieser verschaltet ist, doch das steht auf einem anderem Blatt.

Vielleicht benutzt TIA im Kompatibilitätsmodus mit der 300er CPU ja die Funktion wie bei Step 7 und da ging das noch nie, deshalb geht es auch in TIA nicht. Es geht ja nicht darum dass TIA das für die 1200er und 1500er kann, sondern was der Compiler dahinter kann. Und die werden den Compiler für die 300er sicherlich nicht umgebaut haben, nur weil es jetzt TIA ist.

Der Ausgang konnte auch in Step7 nur beobachtet werden wenn er beschaltet ist.
Ich hab zu dem Fall immer ne Temporäre Wegwerfvariable im Baustein gemacht und an alle unbenutzten Ausgänge des Typs drangehängt. Wobei ich mir denke, wenn ich den Wert wissen will, muss ich ihn ja sowieso woanders abfragen, also muss da eh ne Variable dran.

Von Erwartungshaltungen habe ich mich bei Siemens Produkten schon verabschiedet.
Wer Produkte auf den Markt bringt, die bei der normalen Benutzung durch unfiligrane Elektriker oder außerhalb des Labors schon zerbrechen, von dem muss man schon nichts mehr erwarten. Sei es nun Software oder Hardware.
 
Zuletzt bearbeitet:
So wie ich das sehe:
Instance ist 256 Byte groß. Ein kompletter String eben. Wenn der direkt beschaltet werden soll, müssen auch die Anzahl Zeichen da dran geschrieben werden. Wenn eine Variable übergeben soll üblicherweise ebenfalls.
Eine freie Definition von 'H_26882' an einen String ist somit nicht erlaubt und ergibt den Typkonflikt weil unterschiedliche Länge/Größe.
Versuch eben den String auf String[8] (Instance) zu ändern, dann kann der Aussen beschaltete übergeben werden, musst Dich aber an die 8 Zeichen halten. Spart auch Speicher.

Ansonsten im IDB des FB angeben, dort wird es funktionieren, hast Du ja schon gemacht.

Ob es früher auch schon so war weiß ich nicht, habe Lappy grade nicht an. Aber ich hatte mit ner S7-1200 auch schon das Problem das ich nen String[10] nicht an einen String[20] bzw. String übergeben durfte. Es musste die gleiche Länge haben.

edit:
Das es in SCL funktioniert liegt daran das SCL üblicherweise auch ohne "Real_to_int" klarkommt weil es...sagen wir mal...mitdenkt.
 
Nun,

also ist es nicht möglich, schade.


@Zombie
In Step7 zeigte er die Ausgänge auch im unbeschalteten Zustand an. Mehrfach schon auf Baustelle gemacht. Wenn ich einen Baustein entwerfe oder abändere will ich alle Ausgänge zur Funktionsüberprüfung sehen, ob die dann verwendet werden oder nicht.

Danke für Eure Beiträge. Hab die Frage auch an den Support gestellt, mal sehen was die zurück schreiben.
 
Zuletzt bearbeitet:
Zurück
Oben