Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 37

Thema: WIE Aufruf organisieren?

  1. #1
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo liebe Profis,

    brauche mal wieder einen Denkansatz ...


    Es gibt in einer Anlage (bis jetzt) sieben FB's (= 7 Varianten), in denen jeweils Schrittketten programmiert sind. Leider sind die Schrittketten in jeder Variante unterschiedlich, so dass hier ein Multiinstanzaufruf entfällt.

    Jede Variante kann über das Display angewählt werden; d.h. es ist IMMER nur einer der sieben FB's aktiv!


    Meine Frage dazu:

    Kann ich an jeden FB die gleichen Aktualparameter (z.B. Merker für Ventile) anschreiben, da ja immer nur ein FB zur gleichen Zeit aktiv ist - oder wird das dann ein Kuddelmuddel?
    LG
    spirit
    Zitieren Zitieren WIE Aufruf organisieren?  

  2. #2
    Registriert seit
    16.11.2007
    Beiträge
    64
    Danke
    2
    Erhielt 8 Danke für 6 Beiträge

    Standard

    Das wäre m.M.n. durchaus sinnvoll, nur müssen dann die Aufrufe der inaktiven FB übersprungen werden, damit sie nicht dazwischenpfuschen.
    Aber sind die Unterschiede so groß, daß man sie nicht innerhalb der SK abfangen kann (Verzweigung, Bedingte Aktion und/oder Rezept, das die Abweichungen enthält)? Das würde ich bevorzugen, auch schon wegen der einfacheren Wartung. erfahrungsgemäß ändert sich nämlich genau das was in allen Varianten gleich ist ...

  3. #3
    Registriert seit
    03.12.2008
    Beiträge
    652
    Danke
    154
    Erhielt 184 Danke für 112 Beiträge

    Standard

    Zitat Zitat von spirit Beitrag anzeigen
    Kann ich an jeden FB die gleichen Aktualparameter (z.B. Merker für Ventile) anschreiben, da ja immer nur ein FB zur gleichen Zeit aktiv ist - oder wird das dann ein Kuddelmuddel?
    Dir muss halt klar sein, dass die Merker "kleben bleiben" wenn der FB nicht mehr bearbeitet wird.
    Aber ich denke das weißt Du schon.

    Wenn Du bei jedem "FB Wechsel" am Anfang der Schrittkette einen Initialschritt machst, wo alle betroffenen
    Merker erst mal plattgemacht werden geht das schon.
    Kommt halt auch drauf an wie viele Ventile (Merker) das eigentlich sind.
    Kann unter Umständen schon unübersichtlich werden und wenn noch ein Ventil dazukommt musst Du
    unter Umständen alle 7 Schrittketten-FBs anpacken.

    Ich mach das eigentlich immer so, dass für jedes Ventil einen kleinen FC habe.
    (Also natürlich immer den selben FC, nur unterschiedlich beschalten)
    An diesen FC wird die Betriebsart (Hand/Auto) geschrieben und die entsprechende Anforderung (Auto ANF GST,
    Auto ANF AST, Hand ANF GST, Hand ANF AST, Spule GST, Spule AST)

    In deinem Fall würde sich wahrscheinlich eigener FB/FC anbieten wo die Zuweisung für alle Ventile erfolgt.
    Geändert von Paul (14.07.2016 um 11:21 Uhr)

  4. #4
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard

    Zitat Zitat von Paul Beitrag anzeigen
    Dir muss halt klar sein, dass die Merker "kleben bleiben" wenn der FB nicht mehr bearbeitet wird.
    Aber ich denke das weißt Du schon.
    Ja, daher könnte man/frau an dieser Stelle evtl. auf den Vorschlag von 'Ingmar64' zurückkommen:

    Zitat Zitat von Ingmar64 Beitrag anzeigen
    Das wäre m.M.n. durchaus sinnvoll, nur müssen dann die Aufrufe der inaktiven FB übersprungen werden, damit sie nicht dazwischenpfuschen.
    Wäre doch dann insgesamt ein ganz passabler Weg, oder?
    LG
    spirit

  5. #5
    Registriert seit
    21.11.2014
    Beiträge
    227
    Danke
    7
    Erhielt 30 Danke für 28 Beiträge

    Standard

    Zitat Zitat von Ingmar64 Beitrag anzeigen
    Das wäre m.M.n. durchaus sinnvoll, nur müssen dann die Aufrufe der inaktiven FB übersprungen werden, damit sie nicht dazwischenpfuschen.
    Alternativ müsste man die Ausgänge der inaktiven abläufe Abschalten. Dann könnten alle Ausgänge auf Temp-Variablen geschrieben und verodert weiter gegeben werden. Siehe dazu Hilfe -> Suche -> "Zero_Op"

    Ist ne nette Alternative zu Jumps. Wird der Aufruf in SCL gemacht, ist das überspringen weniger ein Problem, da einfach eine Case-Anweisung genutzt werden kann.

  6. #6
    Registriert seit
    13.10.2007
    Beiträge
    11.950
    Danke
    2.746
    Erhielt 3.245 Danke für 2.143 Beiträge

    Standard

    Ich würde Ventile oder Aktoren überhaupt nicht in der Schrittkette verschalten,
    wie schon gesagt wegen des Klebenbleibens, wenn du dich nicht darauf geachtet
    hast, das abzufangen.

    Meiner Ansicht nach ist es besser, wenn du jeder Schrittkette bzw. FB einen eigenen
    DB spendierst.

    Die beschaltung der Aktoren, also von dir angesprochenen Venitle, machst du dann
    nur an einer Stelle in deinen Programm, legst dann Freigaben wie Not-Aus, Endlagen
    und was weiß ich davor und dann die Variablen die von den Schrittketten erzeugt
    wurden.

    So hast du Sicherheit das dein Aktor auch wirklich abschaltet bei Aus oder Endlage
    und du kannst besser erkenn, in welcher Schrittkette du murks gemacht hast.
    - - -
    Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel.

  7. #7
    Registriert seit
    21.11.2014
    Beiträge
    227
    Danke
    7
    Erhielt 30 Danke für 28 Beiträge

    Standard

    Sofern die Schrittkette in Graph programmiert ist, lässt TIA ohnehin keine Multiinstanz zu.

  8. #8
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard

    Zitat Zitat von rostiger Nagel Beitrag anzeigen
    Ich würde Ventile oder Aktoren überhaupt nicht in der Schrittkette verschalten,
    wie schon gesagt wegen des Klebenbleibens, wenn du dich nicht darauf geachtet
    hast, das abzufangen.

    Meiner Ansicht nach ist es besser, wenn du jeder Schrittkette bzw. FB einen eigenen
    DB spendierst.

    Die beschaltung der Aktoren, also von dir angesprochenen Venitle, machst du dann
    nur an einer Stelle in deinen Programm, legst dann Freigaben wie Not-Aus, Endlagen
    und was weiß ich davor und dann die Variablen die von den Schrittketten erzeugt
    wurden.

    So hast du Sicherheit das dein Aktor auch wirklich abschaltet bei Aus oder Endlage
    und du kannst besser erkenn, in welcher Schrittkette du murks gemacht hast.


    Aber das Problem des "Klebenbleibens" würde sich ja auch nicht ändern, wenn ich stattdessen (immer die gleichen) Variablen für die jeweiligen Ventile an den FB schreibe. Wenn schon, dann müsste ich ja für jeden FB-Aufruf unterschiedliche Variablen benutzen - und genau das wollte ich eigentlich vermeiden.


    Eine weitere Möglichkeit:

    Wie wäre es denn, wenn ich ALLE Schrittketten (in SCL programmiert) in einem einzigen FB programmiere und dann die jeweilige SK über die entspr. Bedingung und den Befehl "WHILE DO" aktiviere? Dann könnte ich an diesen FB einmalig Variablen für die Ventile anschreiben und in einem separaten FC mit den Ausgängen verschalten.


    Also um es klar zu machen, ich möchte mir einfach ersparen, dass ich für jede SK eines FB's unterschiedliche Namen für die Variablen der Ventile vergeben muss ...
    Geändert von spirit (14.07.2016 um 12:39 Uhr)
    LG
    spirit

  9. #9
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.621
    Danke
    397
    Erhielt 2.376 Danke für 1.982 Beiträge

    Standard

    Ich weiß ja nicht, wie dein Baustein so aufgebaut ist. Du kannst aber m.E. selbstverständlich 7 Bausteine mit der gleichen E/A-Beschaltung haben, von denen dann nur jeweils einer läuft. Das könntest du durchaus über eine Freigabe an den Baustein regeln - der Baustein braucht dann ja innen nicht mehr weiter bearbeitet zu werden. Aber vielleicht postest du mal etwas dazu ...

    Gruß
    Larry

  10. #10
    Registriert seit
    21.11.2014
    Beiträge
    227
    Danke
    7
    Erhielt 30 Danke für 28 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Code:
    CASE _variable_name_ OF
        1:  // Statement section case 1
            call dein_aufruf;
        2:  // Statement section case 2
            call dein_aufruf;
        ELSE  // Statement section ELSE
            ;
    END_CASE;
    Dann kannst du auch einfach alle gleich beschalten. Nicht schön, aber machbar. Die Schrittketten brauchst du nicht in SCL zu schreiben, da geht auch jede andere Sprache. Machst du den Aufruf in FUP oder AWL, musst du das über Jumps lösen, geht aber auch. Allerdings bekommst du zum dank einen Teller Spaghetti von demjenigen, der da mal Fehler suchen muss.

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 04.12.2013, 14:28
  2. Simotion SCOUT Organisieren
    Von tisler im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 11.02.2011, 07:09
  3. Aufruf von Methoden wie in C
    Von zergi im Forum CODESYS und IEC61131
    Antworten: 8
    Letzter Beitrag: 05.07.2010, 16:54
  4. SFC0 Aufruf - Wie häufig?
    Von HarryH im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 31.03.2010, 18:23
  5. Wie oft FC1/FC2 aufruf?
    Von Kojote im Forum Feldbusse
    Antworten: 1
    Letzter Beitrag: 04.11.2004, 09:33

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •