Step 5 Byte-Parameter übergeben, FB und Formaloperanden, Substitutionsfehler, S5-95U

MarkV

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe ein Problem bei der Übergabe eines Bytes an einen Funktionsbaustein bzw. der dortigen Weiterverarbeitung. Was mache ich da denn falsch ? Nachfolgend ein minimiertes Beispiel, welches zu einem Substitutionsfehler auf meiner 95U führt.

Aufruf:
- - - - - - - - - - - - - - - - - - - - - - - - -
0000 :SPA FB 001
0001 NAME :BLINKY
0002 X1 > EB 21 (E/BY)
- - - - - - - - - - - - - - - - - - - - - - - - -

FB001:
- - - - - - - - - - - - - - - - - - - - - - - - -
NAME :BLINKY
BEZ :X1 E/A/D/B/T/Z: E BI/BY/W/D: BY

0008 :
0009 :S A 0.0
:;L KB 21 <<<< so gehts, Lämplis 0 2 4 werden high
000A :L = X1 <<<< USTACK sagt: SUF (Substitutionsfehler) bei Befehlsregister "L BA 0"
000B :T AB 32
000C :BE
- - - - - - - - - - - - - - - - - - - - - - - - -

schonmal vorab Danke für Tipps.
Grüße Mark
 
Zuletzt bearbeitet:
Gibt es auf Deiner SPS ein EB 21?
Funktioniert dies hier?:
Code:
000A      :L   EB 21
000B      :T   AB 32

Den Programmcode in [CODE]...[/CODE]-Tags einfügen (der #-Button), dann löscht der Beitragseditor die "überflüssigen" Leerzeichen nicht:
Code:
Aufruf:
- - - - - - - - - - - - - - - - - - - - - - - - - 
0000      :SPA FB 001
0001 NAME :BLINKY
0002 X1   >    EB 21                                (E/BY)
- - - - - - - - - - - - - - - - - - - - - - - - - 

FB001:
- - - - - - - - - - - - - - - - - - - - - - - - - 
     NAME :BLINKY
     BEZ  :X1        E/A/D/B/T/Z: E  BI/BY/W/D: BY
       
0008      :
0009      :S   A  0.0
          :;L   KB 21       <<<<     so gehts, Lämplis 0 2 4 werden high
000A      :L   =  X1      <<<<     USTACK sagt: SUF (Substitutionsfehler) bei Befehlsregister "L BA 0"
000B      :T   AB 32
000C      :BE
- - - - - - - - - - - - - - - - - - - - - - - - -

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Forumsystem löscht Dir die Zeilenumbrüche und Leerzeichen, weil Du für den Code nicht die entsprechenden Codetags verwendet hast! Wenn Du Programmbeispiele posten möchtest, verwende einfach den letzten Button (#) der 2. Iconreihe und der Editor erzeugt diese Tags:
Code:
0000 :SPA FB 001
0001 NAME :BLINKY
0002 X1 > EB 21 (E/BY)
....
Bei Deinem S5-Problem kann ich Dir leider nicht helfen.


PS: Da hab' ich am Handy wohl etwas lange gebraucht beim Tippen.
:(
 
Zuletzt bearbeitet:
Hallo,

es gab auch CPUs wo man keine Parameter per Schnittstelle übergeben konnte. Ob deine das kann sagt dir das Handbuch. In solchen Fällen wurden vor dem Aufruf Übergabemerker beschrieben, der FB aufgerufen und anschließend mit den Merker gearbeitet.

André
 
warum xxx nochmal löscht das Forumssystem alle Zeilenumbrüche ???
Wie/Woher kopierst Du den Programmcode in den Forums-Beitragseditor? Vielleicht nutzt Dein S5-Programmiersystem bzw. Dein Editor andere Steuerzeichen für Zeilenumbruch als der Beitragseditor und die Zeilenumbrüche werden deshalb beim Einfügen nicht richtig umgesetzt?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
wow, overnightexpress, soviele Antworten und das über Nacht :)) Danke !

@PN/DP:
jetzt wo Du es sagst, ja, der Fehler sitzt wieder vor dem Rechner, mit dem Eingangsbyte habe ich natürlich Blötzinn gebaut. Ich habe gar kein Eingang 2. Da sind zwei getrennte Propblemstellungen zusammengekommen. Einmal wollte ich einen Eingang 33 auf Ausgang 32 weiterleiten und ein anderes Mal wollte ich einen konstanten Wert 21 auf Ausgang 32 ausgeben. Schande über mich ;->

Ohne Parameterübergabe klappt es übrigens. Nur leider schaffe ich es partout nicht, einen Formaloperanden an einen Funktionsbaustein zu übergeben und dort weiterzuverwenden. Habe da wohl ein Verständnisproblem.

Korrigiere ich meinen Aufruf von zuvor EB 21 nach EB 33 erhalte ich aber dieselbe Fehlermeldung wie zu Anfang: SUF (Substitutionsfehler) bei Befehlsregister "L BA 0".

@sps-concept:
bei einem Parameter hatte ich mir damit geholfen, ihn vor dem FB Aufruf in den Akku1 zu laden. Ist aber nicht so schön. Ich verwende ein "AG 100U CPU 95" mit Softwarestand 0x2803, zweite CPU Kennung 0xFF01 .

Mark
 
Zurück
Oben