Step 7 FC für Verwendung in KOP/FUP optimieren

fraschfn

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe einen FC mit einem Rückgabewert vom Typ BOOL.
Dieser soll nun in KOP/FUP auf einer 300er SPS (Step 7 V5.5) verwendet werden.
Scheinbar kann ich aber an Ausgängen nur den ENO verschalten, nicht RET_VAL.

In SCL geht das, da kann ich z.B. schreiben
A := myFC(23) AND M4.5;

Die Anforderung hier ist aber, dass man es auch in KOP/FUP gut verwenden können soll.

Als Beispiel mal ein Aufruf. Da ich RET_VAL nicht direkt mit dem EN von MOVE verbinden kann, brauche ich die Zwischenvariable.
Zudem muss man noch - um alles in Netzwerk zu bekommen - den Trick mit der Dummy-Und-Verknüpfung einfügen...

Geht das prinzipiell nicht, oder gibt's da einen Trick?

Schon mal vielen Dank im Voraus.
 

Anhänge

  • kop fup fc.jpg
    kop fup fc.jpg
    99,9 KB · Aufrufe: 88
Zuletzt bearbeitet:
Ich würde prinzipiell nicht so programmieren, dieses bedingte bearbeiten von Bausteinen (FC1) ist ein Graus, zumindest m.M. nach.
Die Frage ist eher warum Du den RET_VAL nicht mit dem EN verbinden kannst.
Wo ist eine Dummy-Und-Verknüpfung?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Im FC mit "---(SAVE)" den RET_VAL an ENO ausgeben, dann kann das Ergebnis in FUP/KOP direkt vom ENO weiterverschaltet werden:
Code:
   #IN1      #IN2    #RET_VAL
---| |-------| |-------(#)-------(SAVE)

Allerdings hat der Baustein dann immer noch einen (in FUP/KOP eigentlich unnötigen) Ausgang RET_VAL, der mit einer (Dummy-)Variable beschaltet werden muß. Dafür ist er aber in FUP/KOP/AWL/SCL aufrufbar inklusive Ergebnisrückgabe.
Code:
     +------------+
     |   "MyFC"   |       M1.3      M1.4
-----|EN       ENO|-------| |-------( )
     |            |
M1.1-|IN1         |
     |     RET_VAL|-#dummyBit
M1.2-|IN2         |
     +------------+


Man kann auch den Ausgang/Return RET_VAL weglassen und das Ergebnis nur über ENO zurückgeben, dann kann man aber in AWL und SCL den Rückgabewert nicht mehr direkt einer Variale zuweisen sondern muß nach dem Bausteinaufruf das BIE abfragen ("U BIE"). Der Ausgang ENO kann nicht umbenannt werden.
Code:
   #IN1      #IN2
---| |-------| |-------(SAVE)
Code:
     +------------+
     |   "MyFC"   |       M1.3      M1.4
-----|EN       ENO|-------| |-------( )
     |            |
M1.1-|IN1         |
     |            |
M1.2-|IN2         |
     +------------+


PS: Verknüpfungen links/vor dem FC-Aufruf nicht am EN machen, denn dann wird der FC gar nicht aufgerufen und die Weiter-Verknüpfung hinter dem FC verknüpft nicht den ENO des nicht aufgerufenen FC sondern den Zustand am EN des FC - also FALSE.

Harald
 
Zuletzt bearbeitet:
...
[Gelöscht, da Haralds Beitrag übersehen, in dem das Gleiche schon steht]


Beim FC noch das Schlüsselwort VOID verwenden, damit kein RetVal mehr erzeugt wird.
 
Zuletzt bearbeitet:
Neuer Stand

Bei der bedingten Bearbeitung gebe ich Dir recht.
Das ist noch ein Fehler, eigentlich sollte der Baustein noch einen "Enable" Eingang haben und EN immer gesetzt sein.

Im Bild unten habe ich das korrigiert.

Ich habe gerade hier: http://www.sps-forum.de/simatic/20270-scl-den-bie-eno-manipulieren.html herausgefunden, dass ich mein Ergebnis auf ENO legen kann, das wäre zwar etwas zweckentfremdet (da ENO ja eigentlich für Fehler ist) aber sollte funktionieren.

Auch das ist im Bild schon enthalten.

Die das Dummy-Und (jetzt vielmehr ein Dummy-Oder) ist ganz rechts. Es wird nur verodert, damit man mehrere Pfade in einem Netzwerk haben kann.

Mir ist auch aufgefallen, dass wenn bei einem Baustein ENO schon verschalten ist, man EN (oder andere Eingänge) nicht mehr verschalten kann.

Dass man nun auch noch die Variable "inStep" ersetzt wird wohl nicht gehen...
Ebensowenig, dass ich statt ENO RET_VAL benutzen kann.
KOP Ansicht geht auch nicht, nur FUP...

Man muss halt auch Kompromisse eingehen können ;)


FC KOP FUP 2.jpg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die ausführliche Antwort Harald.

Das mit dem ENO löst einen Teil des Problems. Das mit RET_VAL könnte ich so lösen, dass ich zwei Varianten des FCs erstelle: einen mit RET_VAL, einen ohne - das wäre akzeptabel.

Ich habe noch einmal ein Bild angehängt.

Im Prinzip soll das obere Netzwerk das gleiche machen, wie das untere (und daher auch ähnlich aussehen).

Das Problem ist, dass die FCs in jedem Fall aufgerufen werden müssen und der rechte wird ja jetzt nur aufgerufen, wenn der links ENO = 1 zurückgibt.

Hast Du da noch eine Idee?
 

Anhänge

  • kop fup fc 3.jpg
    kop fup fc 3.jpg
    97,2 KB · Aufrufe: 33
Das Problem ist, dass die FCs in jedem Fall aufgerufen werden müssen und der rechte wird ja jetzt nur aufgerufen, wenn der links ENO = 1 zurückgibt.
Ich habe Dir schon oben geschrieben, dass das eine ungünstige Art zu programmieren ist.
Warum machst Du beim (Bsp FC1) nicht einen separaten Eingang WFIH (Waitung for Input High) und schnürlst das VKE Ergebnis darauf (also zB das CMP==I), dann wird der Baustein aufgerufen und kannst im Baustein das Eingangsbit ja auch entsprechend verwenden.
 
Hallo Borromeus,

Ich will ja auch gar nicht den EN beschalten.

Wie mache ich das aber in KOP? Ich vermute, der beschaltet da immer selbst EN und das kann ich auch nicht änder, oder?
 

Anhänge

  • kop fup fc 3.jpg
    kop fup fc 3.jpg
    97,2 KB · Aufrufe: 16
Zurück
Oben