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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Baustein mit IN & OUT Paramtern, oder INOUT`erstellen?

  1. #1
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    `Hallo Leute, ich habe mal eine geschmacksfrage für euch.

    Ich habe nen Baustein, welcher folgende Parameter liest:

    Parameter A, Parameter B, Parameter C

    Er schreibt zusätzlich Parameter D und Parameter E

    Wie würdet Ihr es progrommieren:

    1. 3 Eingänge und 2 Ausgänge

    2. Einen Eingang mit Struktur (enthält Parameter A,B und C) und einen Ausgang mit Struktur (Enthält Parameter D und E)

    3. Einen INOUT Mit einer Sruktur (Enthält Parameter A, B, C, D und E)

    Danke für Eure Meinungen
    Zitieren Zitieren Baustein mit IN & OUT Paramtern, oder INOUT`erstellen?  

  2. #2
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    745
    Danke
    27
    Erhielt 164 Danke für 142 Beiträge

    Standard

    Wenn das aufrufende Programm die selben Daten mit mehreren aufgerufenen FB's austauscht, z. B. Maschinen-PRG <-> Arbeitsstations-FB's, bevorzuge ich Variante 3.
    Ansonsten eher 1.
    2 ist vor allem bei Eingängen ungünstig, weil man beim FB-Aufruf dann keine einzelnen Elemente des Structs übergeben kann. Bei Ausgängen mache ich das dagegen schon mal, wenn die Ausgangsstruktur vor allem dazu dient, als Ganzes an weitere FB's übergeben zu werden.

  3. #3
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Zitat Zitat von StructuredTrash Beitrag anzeigen
    2 ist vor allem bei Eingängen ungünstig, weil man beim FB-Aufruf dann keine einzelnen Elemente des Structs übergeben kann.
    Das sollte ja der Sinn meiner Überlegung sein, dass ich eben nicht so viele Eingänge habe.
    Denn wenn ich eine Struktur mit 10 Variablen habe, ist es doch schöner diese Struktur zu übergeben, als 10 mal die einzelen Variablen, oder habe ich dich da falsch verstanden?

  4. #4
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    745
    Danke
    27
    Erhielt 164 Danke für 142 Beiträge

    Standard

    Wenn bei JEDEM Aufruf ALLE Eingangsvariablen übergeben werden sollen, kann man sie dafür in ein Struct packen. Wenn nicht, sind einzelne Variablen besser.

  5. #5
    Registriert seit
    09.11.2007
    Ort
    Rhein Main (Darmstadt)
    Beiträge
    663
    Danke
    61
    Erhielt 112 Danke für 80 Beiträge

    Standard

    Zitat Zitat von StructuredTrash Beitrag anzeigen
    Wenn bei JEDEM Aufruf ALLE Eingangsvariablen übergeben werden sollen, kann man sie dafür in ein Struct packen. Wenn nicht, sind einzelne Variablen besser.
    INOUT als struct ist immer beste Wahl, und in der CoDeSys ST Umgebung die einzige Parameter Übergabe "Per Reference" sonst immer "Per Value"

    genaueres: http://de.wikipedia.org/wiki/Referenzparameter

    http://blog.gungfu.de/archives/2005/...-by-reference/

    oder kurz gesagt, wer es einsetzt und versteht, wo der Unterschied liegt, bekommt schnellere Zykluszeiten.
    Als Freelancer immer auf der Suche nach interessanten Projekten.

  6. #6
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Was würdest du denn sagen, wenn ich eine Struckt habe, welche ich an einen FB übergebe und diese in diesem verarbeitet wird.
    Bspw. Für Eine Ventilansteuerung. Ist es dann sinnvoll eine Variable von diesem Strukttyp zu erstellen und an die FB instanz zu übergeben.

    So dass ich im programm mit der strukt arbeite.

    ODER:

    Wäre es vielleicht sinnvoll auf die übergabe und deklaration der variable zu verzichten und imKompletten programm einfach auf die einzelnen Parameter der instanz zuzugreifen?

    Ich mache mal ein Beispiel:

    Ich habe eine Instanz Ventil_1 und eine Variable Status.

    Nun möchte ich mittels Aktion das Ventil ansteuern. und auf den Status reagieren.


    1. Variante (Mit Variable)

    Ventil_1.vor();

    IF Status = Position_erreicht THEN
    .
    .
    .


    2. Variante (direkt auf Instanzen zugreifen)

    Ventil_1.vor();

    IF Ventil_1.Status = Position_erreicht THEN
    .
    .
    .




    Also Bei Variante 2 greife ich direkt auf den Status der Instazn zu und habe somit schon eine optische Zuordnung. (Finde ich zumindest).


    Was findet ihr besser, bzw. Sinnvoller?
    Nachteil ist eben, wenn ich keine Ausgänge anlege, sieht man auch nicht, was an dem FB alles für Werte abrufbar sind.
    Eine weitere Möglichkeit wäre den FB mit ein und Ausgängen zu versehen, jedoch diese nicht zu beschalten und trotzdem direkt auf die Instanzen zuzugreifen. So würde man wenigstens die Ausgänge sehen (Ist aber auch etwas unschön, da man auf die Idee kommen könnte, wenn der Ausgang nicht belegt ist wird er auch nicht verwendet. Was meint ihr?
    Zitieren Zitieren Überhaupt eingaben???  

  7. #7
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.181
    Danke
    923
    Erhielt 3.288 Danke für 2.657 Beiträge

    Standard

    Willst Du die IN/OUT-Signale am Baustein-Aufruf online beobachten? ---> Variante 1

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. #8
    Registriert seit
    12.04.2010
    Beiträge
    300
    Danke
    22
    Erhielt 54 Danke für 52 Beiträge

    Standard

    Hallo,
    also meine Präferenz bei der Datenhaltung ist die Zusammenfassung aller Daten in logischen Einheiten (also Strukturen).

    Wenn die Parameter A,...E logisch zusammen gehören (also z.B. Laufzeitvariablen eines Ventils) dann in einem Datentyp zusammengefasst. Dieser als Pointer an alle FUBs übergeben die damit irgendwie arbeiten können / müssen.

    Damit kann man Online auch direkt nur die Variablen-Instanz beobachten und muss nicht einmal die Eingänge von einem Fub und dann wieder Ausgänge von einem anderen FUB beobachten.

    Für Diagnosezwecke (bei Projekterstellung usw. ) kann man auch mal ganz schnell interne Variablen in die Struktur einbinden und man kann auch diese dann ganz eindeutig mit den Parametern diagnostizieren...

    Die Übergabeliste an den Fub bleibt somit auch schlank und auf wenige Pointer beschränkt.

    bg
    bb

  9. #9
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.181
    Danke
    923
    Erhielt 3.288 Danke für 2.657 Beiträge

    Standard

    Zitat Zitat von bits'bytes Beitrag anzeigen
    Damit kann man Online auch direkt nur die Variablen-Instanz beobachten und muss nicht einmal die Eingänge von einem Fub und dann wieder Ausgänge von einem anderen FUB beobachten.
    Kannst Du mir mal bitte einen Screenshot vom Online-Beobachten der Variablen machen?

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  10. #10
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    angenommen ich würde gerne einen FB schreiben, welcher ein ventil ansteuert (vor und zurueck).

    Würdet ihr es so machen, dass ich bools als ansteuerbefehle habe und diese dann mit if ... then abfrage und den ausgang dem entsprechende setze,

    oder würdet ihr da irgendwie ne aktion oder so erstellen? Bspw. aktion Ventil.vor();

    Das blöde wäre dann natürlich wieder, dass ich einmal die Variable hätte (IN_OUT) und einmal die instanz mit der aktion. --> eine sache mit 2 unterschiedlichn namen ansprechne gefällt mir dann nicht so.

    Was meint ihr?
    Zitieren Zitieren Ventilbaustein  

Ähnliche Themen

  1. Hilfedatei für Baustein erstellen
    Von dentech im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 19.07.2012, 01:18
  2. Antworten: 7
    Letzter Beitrag: 02.05.2012, 11:38
  3. FCs erstellen / baustein
    Von waldy im Forum Stammtisch
    Antworten: 29
    Letzter Beitrag: 26.09.2008, 22:33
  4. PCS7 konformen Baustein erstellen
    Von AndreasBr im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 18.10.2007, 09:30
  5. aus Baustein FC1 Zustandsgraph erstellen?
    Von Tommes im Forum Programmierstrategien
    Antworten: 3
    Letzter Beitrag: 23.02.2006, 19:19

Lesezeichen

Berechtigungen

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