FC in FC ?

Beiträge
95
Reaktionspunkte
3
Hallo Leute,
ich bräuchte mal euren Rat zu einer Programmierstrategie.
Normalerweise werden ja FBs in FCs und diese im OB aufgerufen.
z.B. FB(Schrittkette) im FC(Automatikbetrieb) im OB.
Wenn ich aber eine Routine (z.B. Bauteil einfördern) öfters verwenden möchte, kann ich dann den FC in einem Betriebsarten FC nochmals aufrufen?
z.B. : FB(Schrittkette) im FC(einfördern) im FC (Automatikbetrieb) im OB ?

Es geht darum ich habe viele Grund Routinen die Schrittkettenbasiert sind, die ich jedoch nur einmal schreiben möchte um Platz zu sparen.
Diese möchte ich in mehreren Betriebsarten aufrufen können.
Es wird immer nur eine Betriebsart aufgerufen.

Unbenannt.PNG

Oder gibt es da andere Strategien ?
Wäre diese Form auch IEC gerecht ?
Gruß und Danke

Software TIA V13
S7 1215c
 
Ohne allgemeingültigkeit.

üblicherweise werden im OB1 FBs aufgerufen in diesen je nach Anforderungen FCs oder FBs.

Du kannst FCs und FBs so oft und wo auch immer aufrufen wie du willst. Solange du sie kapselst. Also intern keine globalen Speicher verwendest.

Für mich hört sich jetzt das so an als wäre dein FB Schrittkette ein FB den du entweder im Einförderbetrieb oder im Automatikbetrieb aufrufen willst. einfach mit anderen Parametern. Ich nehme an die Schrittkette soll beim Wechseln von Automatik auf Einfördern seine Daten behalten und an der Stelle weiterarbeiten wo aufgehört wurde. Das kannst du so machen, macht die Sache aber nicht einfacher.

mfG René
 
es spricht nix dagegen einen FC in einen FC aufzurufen!

Im Prinzip ist es ja nur eigentlich ein Makro (Textersetzung).
Einigst was dabei zu beachten gilt, FC hat halt kein STATIC Bereich.
 
Im Prinzip würde es so aussehen :
Ich nehme einen Standart Schrittkenntenbaustein (FB). diesen füge ich in einen FC (Presse_Zyklisch_Durchfahren).
Bis hier jetzt alles ganz Normal.

Da ich den Baustein Presse_Zyklisch_Durchfahren in jeder betriebsart benötige ( Einricht,Auto,Zweihand......) und die Parameter im Programm nicht in jedem Baustein anpassen möchte .... Druck, Vordruck, Zeit, .....
Würde ich den FC Baustein Presse_Zyklisch_Durchfahren in die Betriebsarten (AUtomatik, Einricht ......) jeweils einfügen und ihn mit In VAriablen und Out Variablem versehen.
So das im Endeffeckt ich den FC Baustein Automatikbetrieb Aktiviere // in diesem Baustein dann den FC BAustein Presse_Zyklisch_Durchfahren // und von hier aus die Schrittkette aufgerufen wird.
 
Du kannst das grundsätzlich so machen. Ich persönlich würde aber stattdessen die Parameter (Schnittstelle) umladen wenn du die Betriebsart wechselt und den Baustein nur einmal aufrufen. Der Programmieraufwand ist derselbe aber IMHO wesentlich klarer.

mfG René
 
Nein ich denke du solltest die Bausteine aktiviert lassen. Aber du lädst die entsprechenden Parameter je nach Betriebsart.

Und stattdessen an Zyklisch_Durchfahren FB die Parameter per Move oder L/T übergibts je nach betriebsart.

Code:
      CALL  #Zyklisch_Durchfahren 
       IN :=


U #Einrichten 
spbn Einr
L Einricht.IN // Parameter für Einrichtbetrieb
t #Zyklisch_Durchfahren.IN
Einr: nop 0

U #Automatik
spbn Auto
L Automatik.IN // parameter für Automatikbetrieb
t #Zyklisch_Durchfahren.IN
Auto: nop 0

mfG René
 
Zurück
Oben