# Rückmeldung von einem Netzwerk, zu einem andern in SCL



## Tmbiz (3 September 2019)

Hallo zusammen, 

für eine aktuelles Projekt (TIA 15.1, SCL, CPU 1500 Siemens), muss ich einen FB erstellen, denn ich dann im Hauptprogramm wiederverwende. 

Dieser FB soll drei Teile der Maschine steuern und regeln. Wobei Teil A die "Hoheit" hat und Teil B und C nur Befehle umsetzen. Nun ist es so, dass ich aber diverse Rückmeldungen an Teil A geben muss.

Hier im Schema:

Region A
(
Setze Befehl "fahre bis Position 12" an Region C
)

Region B
(

)

Region C
(
Führe Befehl von A aus und gibt eine Rückmeldung. 
)



Die Rückmeldungen können in verschiedenen Variationen auftauchen. Also z.B. Timeout, Fehler, Pos überfahren, Position erreicht.

Die Frage ist nun, wie kann man eine Rückmeldung geschickt aufbauen? Wäre es einfacher eine Var zu erstellen und je nach Status eine Zahl hineinzugehen? If Var Status = 1 bedeutet Timeout; If Var Status = 2 bedeutet Pos überfahren usw

Wie kann man hier eine sinnvolle Struktur erstellen, welche eine Statusübergabe einfach und übersichtlich macht?


----------



## vollmi (3 September 2019)

Ich würde da eine eine Variable in 16/32/64 Bit grösse nehmen je nachdem wieviele Befehle du wirklich hast. dann kannst du die Befehlscodierung auch gleich in den Konstanten der Schnittstelle festschreiben und direkt mit diesen vergleichen. 

Somit lässt du dir einfache Möglichkeiten offen die Befehle auch zu erweitern ohne n haufen Bitabfragen. Kannst vermutlich einiges in übersichtliche Cases statt IFs verpacken.


----------



## Tmbiz (3 September 2019)

Das was du schreibst, klingt vernünftig. Es ist auch wichtig, dass später ein Techniker mit dem Text klar kommt. Daher überlege ich nicht Zahlen zu übergeben sondern direkt einen Text. Was meinst du zu der Idee?


----------



## vollmi (3 September 2019)

Tmbiz schrieb:


> Das was du schreibst, klingt vernünftig. Es ist auch wichtig, dass später ein Techniker mit dem Text klar kommt. Daher überlege ich nicht Zahlen zu übergeben sondern direkt einen Text. Was meinst du zu der Idee?



Du meinst Strings? Und dann Stringcompares zu machen? Kann man machen, geht aber auf die Zykluszeit und belegt sehr viel Platz im Lokaldatenstack.
Ich denke wenn du die überlagerten Konstanten sauber beschriftest, hilft du dem Techniker viel ohne Systemrecourcen zu opfern.


----------



## Tmbiz (3 September 2019)

Ok. Danke für die Hinweise.


----------



## Blockmove (3 September 2019)

Für mich ein typisches Beispiel warum ich SCL für sowas nicht mag.
Letztlich ist es wahrscheinlich eine ganze normale Anlage mit mehreren Stationen. Parallele oder sequentielle Bearbeitung.
Übergabe von Start mit Parametern und eben Rückmeldung mit Status. 
Sowas löse ich am liebsten in Graph.


----------



## ms_gp (9 September 2019)

Wenn eine Station immer nur einen Befehl gleichzeitig ausführen kann, dann ist die Idee mit den Befehlskodierung schon richtig. Du definierst Dir Konstanten, die die Befehle/Funktionen darstellen. Dazu noch Start, Done, Busy, Flt, usw. Was man eben braucht um mit Station A die Funktionen steuern zu können.

Du arbeitest dann nur an der Schnittstelle zwischen den Stationen immer nur mit den Konstanten. Das hat den Vorteil, dass man sich die ganzen Verriegelungen von verschiedenen Funktionen sparen kann. Lesbar ist das eigentlich auch gut. Performance ist auch kein Problem.

Was allerdings Unsinn ist, dass es EIN FB sein soll, der 3 Anlagenteile steuern soll.
Da sind 3 FBs sicherlich sinnvoller. Und wenn aus den 3 Stationen 8 Stationen werden, dann kommen 5 FBs dazu und der für Station A wird erweitert. B und C bleiben unberührt.


----------



## Blockmove (10 September 2019)

ms_gp schrieb:


> Was allerdings Unsinn ist, dass es EIN FB sein soll, der 3 Anlagenteile steuern soll.
> Da sind 3 FBs sicherlich sinnvoller. Und wenn aus den 3 Stationen 8 Stationen werden, dann kommen 5 FBs dazu und der für Station A wird erweitert. B und C bleiben unberührt.



Manchmal vielleicht etwas zu einfach gedacht 
Ein übergeordneter Baustein zur Koordinierung der Stationen macht einem das Leben sehr oft leichter.
Gerade bei Schrittketten wird SCL sehr schnell sehr unübersichtlich. Schönes Beispiel sind parallele Abläufe.
Hier können weitere Bausteine für bessere Übersicht sorgen.

Gruß
Blockmove


----------

