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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 18 von 18

Thema: FB oder FC für Standartbausteine

  1. #11
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Der werte Kollege Hugo wohl in der IEC-Welt.

    Aber bis auf das "weiterhin kann ein funktionsbaustein mehrere ausgänge haben was eine funktion nicht kann" sind diese Informationen auch auf die S7 zu münzen. Bei der S7 kann auch eine Funktion mehrere Ausgänge haben als nur retval.

    "ein flip flop kann also nicht mit einer funktion gelöst werden, genausowenig ein betriebsstundenzähler" -> es sei den man verwendet globale variablen (sei es direkt oder per VAR_IN_OUT) aber mit den lokalen Speichermöglichkeiten des FC geht es nicht da keine statischen Variablen dabei sind.

    "gegensatz zur fuktion ist der funktionsbaustein immer im speicher wenn er einmal verwendet ist" und "funktionsbaustein kann sich zustände merken, weil er ja im speicher bleibt" -> Der lokale statische Variablenbereich bleibt im "Speicher" (bei der S7 eben einem DB).
    If you open your Mind too much, your Brain will fall out.

  2. #12
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.725
    Danke
    314
    Erhielt 1.519 Danke für 1.282 Beiträge

    Standard

    Mir wäre,
    egal bei welcher SPS noch nie begegnet, das eine Funktion nur einen Ausgang haben kann.

    Grundsätzlich wird bei einer Funktion (bei Siemens nur bei SCL) definiert welchen Rückgabewert diese haben soll.

    Das können die bekannten Standard-Datentypen sein, also z.B. BOOL, INT ...
    oder aber auch VOID, sein, also sozusagen nicht definiert.
    Wenn man eine Funktion vom Rückgabetyp VOID definiert, kann diese auch wieder "fast" beliebig viele Ausgänge haben.


    Das Argument mit den Speicher sparen, ist wohl so korrekt, weil eine Funktion im Gegensatz zu einem FB keine Instanz benötigt.
    Also bei einem FB belegt in jedem Fall die Instanz bei jedem Aufruf Speicher.
    Das dürfte dann, vom Speicher her betrachtet aber auch schon der einzige Unterschied sein.

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  3. #13
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Zitat Zitat von zotos Beitrag anzeigen
    Der werte Kollege Hugo wohl in der IEC-Welt.

    Aber bis auf das "weiterhin kann ein funktionsbaustein mehrere ausgänge haben was eine funktion nicht kann" sind diese Informationen auch auf die S7 zu münzen. Bei der S7 kann auch eine Funktion mehrere Ausgänge haben als nur retval.
    Es muß doch nicht der Retval sein.

    Zitat Zitat von zotos Beitrag anzeigen
    "ein flip flop kann also nicht mit einer funktion gelöst werden, genausowenig ein betriebsstundenzähler" -> es sei den man verwendet globale variablen (sei es direkt oder per VAR_IN_OUT) aber mit den lokalen Speichermöglichkeiten des FC geht es nicht da keine statischen Variablen dabei sind.
    Na also, mit einer IN_OUT geht auch das, obwohl die "Funktion nicht im Speicher bleibt".

    Zitat Zitat von zotos Beitrag anzeigen
    "gegensatz zur fuktion ist der funktionsbaustein immer im speicher wenn er einmal verwendet ist" und "funktionsbaustein kann sich zustände merken, weil er ja im speicher bleibt" -> Der lokale statische Variablenbereich bleibt im "Speicher" (bei der S7 eben einem DB).
    Was bleibt nun im Speicher die Funktion, oder die Variablen und was bleibt bei der S7 im Speicher. Hier kommt einiges gehörig durcheinander.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  4. #14
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    So nun hab ich den Salat, der zotos *heult* im Chat und ich muß mal klarstellen, daß meine Zitate von zotos mehr als Antwort an Hugo gedacht waren und nicht als Gegenrede zu den Argumenten von zotos.

    Hat das wer verstanden?
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  5. #15
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Selbstverständlich bleibt beim FB im Gegensatz zum FC der statische lokale Variablenbereich im speicher. Das hat nichts mit der Funktion (dem Programmcode) an sich zu tun wie die SPS-Hersteller das gelöst haben sieht man als Anwendungsprogrammierer eh nicht. Also Ralle es geht um die statischen Variablen.
    Jemand der die Unterschiede von einem FB zu einem FC nicht richtig kennt und nach Vor- und Nachteilen fragt, die es gar nicht gibt da die beiden Funktionen unterschiedliche Aufgaben gebiete haben, versteht auch nicht den Unterschied ob der Programmcode und/oder dessen Variablen im Speicher bleiben. Ich vermute mal das die meisten Hersteller für die Variablen einer Funktion (FC) einen festen Speicher haben und was man ja weis das man bei einem Funktionsblock (FB) für jede Instanz einen eigenen auch festen Speicherbereich im Speicher hält. Aber diese Diskusion nützt an der Stelle nichts. Der 0815S7 Programmierer rafft das eh nie ;o)
    If you open your Mind too much, your Brain will fall out.

  6. #16
    Registriert seit
    22.11.2005
    Ort
    kl.Odenwald
    Beiträge
    716
    Danke
    111
    Erhielt 85 Danke für 71 Beiträge

    Standard

    In der Regel werden die TEMP-Variablen auf dem STACK abgelegt, das Stack-Handling besitzt aber jeder Microcontroller und da in CPU ja letztlich auch die schwarzen Käfer eingebaut sind, wird's wohl analog sein.

    Allg. kann ich nur sagen, dass man mit den IN-OUTs sparsam umgehen sollte. Zum einen wird die Lesbarkeit m.E. eher schlechter, zum anderen der Speicherverbrauch, besonders bei UDT's unverhältnismäßig höher.
    Allerdings mal ein Flankenmerker, oder ne Zählvariable geht schon...

    just my 0.02 €
    "Das Leben ist viel zu kurz, um schlecht zu essen !"
    (Johann Lafer zur SWR3 Grillparty)

  7. Folgender Benutzer sagt Danke zu kiestumpe für den nützlichen Beitrag:

    zotos (24.08.2007)

  8. #17
    Registriert seit
    20.11.2004
    Ort
    Linz, OÖ
    Beiträge
    1.365
    Danke
    96
    Erhielt 177 Danke für 133 Beiträge

    Standard

    Zitat Zitat von Bitverbieger Beitrag anzeigen
    Ich möchte mir Standartfunktionsbausteine bauen für die klassischen Antriebsarten in Step7. Auch die Ansteuerung der Antriebe mittels Simocode sollten berücksichtigt werden, sowie über FU. Aber auch der klassische Weg für ältere Anlagen mit Schaltern am Schrank möchte ich berücksitigen.

    Nun, die grundsätzliche Frage:
    Wo überwiegen die Vorteile, wo die Nachteile?
    Das Erstellen der Bausteine wie, ist nicht das Problem.
    Ich möchte mich mur nicht in eine "Programmiersackgasse" begeben.
    Ich denke, bevor Du Dir diese Frage stellst, ist viel wichtiger, dass Du Dir im Klaren bist, was Du in einen Standardbaustein überhaupt alles reinpacken willst. Meiner Meinung nach macht es wenig Sinn, ganze Abläufe in einen FB zu packen, oder eine komplette Motorsteuerung, welche per Visu und per Taster und vielleicht auch noch per Codierschalter bedient werden kann.

    Bei uns werden Standardbausteine in der Regel als kleine Einheiten programmiert, welche sich bei Bedarf zusammenstöpseln lassen - und bei Bedarf auch erweitern.

    Ein Beispiel:
    Eine Gießanlage hat 50 Kühlkreise, welche im Prinzip gleich funktionieren. Man möchte natürlich nicht alles 50 mal Programmieren, da macht der Einsatz eines Standardbausteins sinn, welcher dann 50 mal aufgerufen wird.

    Oder:
    Zylinderansteuerung mit der ganzen Schalterüberwachungsgschichte dran. Hier macht es z.B. keinen Sinn, alle möglichkeiten (4/2-Wege-Ventil 5/2 Wege 5/3 Wege, 1 Schalter pro Seite, Schalter nur auf 1 Seite usw.) in einen FB reinzupacken. Spätestens wenn man dann einen Sonderzylinder hat und seinen FB daran anpasst wird man sich ärgern, dass man nun bei den FBs für 50 andere Zylinder einen Zeitstempelkonflikt hat. Hier ist sinnoll, 3 oder 4 Verschiebene Bausteine für verschiedene Zylinderkonstellationen zu machen.

    Beispiele, wo wir Standardfunktionen als FC verwenden sind z.B.
    - Berechnungen, Datenmanipulation (lineare Skalierung, Kennlinien verbiegen, Daten indiziert kopieren, ....)

    Beispiele für FB
    - Schnittstellenabwicklung eines FU oder eines Movimot. nur 1 FB, für jeden FU ein eigener Instanz-DB in dem die PE/PA-Daten und Soll/Istwerte liegen.
    - Funktionen, welche intern viele Statische Daten brauchen (z.B. Steuerung eines Prop-Ventils, 2-Punkt Regler)
    - Funktionen, welche Statistische Daten oder Diagnosedaten aufzeichnen (z.B. DP-Diagnose, Schrittkettendiagnose, Taktzeitmessung)

    Die dritte Variante, welche wir immer wieder einsetzen, ist die Mischform. Das Programm ist in einem FC geschrieben, ihm ist fix ein DB zugeordnet (welcher indiziert per AUF DI[#...] aufgerufen wird.). Diese Variante ist von der Bearbeitungszeit auf der CPU her schneller als ein FB und hat natürlich auf diverse Vor- und Nachteile.
    Vorteil sind
    - dass man im Instanz-DB die Daten ab DBX0.0 nutzen kann, auch wenn am FC IN und OUT-Daten verwendet werden
    - dass Adressregister 1 und 2 uneingeschränkt nutzbar sind
    - werden im Instanz-DB strukturelle Änderungen gemacht, muss nur der Instanz-DB neu generiert werden - nicht der FC-Aufruf
    Nachteile sind:
    - das gesamte Programm muss per DIX/DIW usw auf den DB zugreifen - eine gewissenhafte Dokumentation ist absolut notwendig
    Diese dritte Variante setzen wird in der Regel dann ein, wenn der Code im Standard-Baustein sehr Umfangreich ist. Der Instanz-DB wird als UDT deklariert - anschließend wird für jede Instanz ein DB vom Typ UDTxxx angelegt.

    mfg
    Maxl
    Bin aufgrund §2 der "Rechte des Betreibers" der Forum-Regeln nicht mehr aktiv, da nicht nicht akzeptiere, dass Informationen und Erkenntnisse ohne Quellangabe weitergegeben werden sollen. Jedem steht frei, auf die gleichen Erkenntnisse durch Eigenversuche zu kommen, vor allem Buchautoren.

  9. Folgender Benutzer sagt Danke zu Maxl für den nützlichen Beitrag:

    bosc5883 (04.04.2016)

  10. #18
    Bitverbieger ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    20.12.2006
    Beiträge
    275
    Danke
    20
    Erhielt 29 Danke für 27 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Vielen Dank für eure vielen Anregungen.
    Aufgrund des von Zotos gegründeten Stuhlkreis werde ich meinen, bereits
    begonnen, FC weiterentwickeln.

    Dank an alle Mitwirkenden, besonderer aber an Zotos
    Geändert von Bitverbieger (27.08.2007 um 23:23 Uhr)
    MFG
    Bitverbieger

    Gelingt Dir etwas auf Anhieb, so lass Dir Deine Verblüffung nicht anmerken.

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 02.08.2010, 23:43
  2. FC oder FB????
    Von HansMeiser im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 02.06.2009, 17:41
  3. S5timer oder SFB oder Selberbasteln
    Von rumpelix im Forum Programmierstrategien
    Antworten: 8
    Letzter Beitrag: 26.10.2008, 21:49
  4. AND oder OR
    Von Elton_500 im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 18.06.2008, 14:41
  5. Antworten: 5
    Letzter Beitrag: 15.04.2005, 15:19

Lesezeichen

Berechtigungen

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