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

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

Thema: Unzulässige Parameterversorgunge bei Übergabe von in_out var von Multiinst. FB zu FC

  1. #11
    Registriert seit
    15.05.2007
    Beiträge
    46
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hallo ralle und larry, vielen dank euch beiden für die raschen antworten.

    ich habe mir schon gedacht, dass das nicht so einfach ist (wie ralle sagt: allein schon wegen dem in_out verhalten).

    ich habe mich aus gründen der vereinfachung dazu entschlossen den fc im aufruf_FB, getriggert durch ein Bit aus der Multiinstanz, aufzurufen. ist glaube ich aus gründen der übersichtlichkeit und des fehlerhandlings die einzig richtige wahl.

    bg chris

  2. #12
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    ... dann wirst du auch umkopieren müssen ...

    Meine Idee an dieser Stelle war (aber das hängt halt stark von deiner Anwendung / Problemstellung ab), dass du die gleiche Instanz eines FB's mehrfach aufrufst. Über entsprechende Steuerbits (oder andere Schnittstellen-Variablen) sagst du dem FB, ob er Datenbereich 1 oder Datenbereich 2 benutzten soll - oder aber ob er dieses oder jenes mit den gleichen Daten anstellen soll.
    So etwas findet bei mir Anwendung. Der Vorteil hier ist, dass du in einem in sich geschlossenen Daten-Konstrukt arbeiten kannst und es hier auch mit den Zugriffen auf Daten-Inhalte etwas einfacher hast.

    Aber wie schon gesagt ... (s.o.)

    Gruß
    LL

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

    Standard

    Zitat Zitat von iga-graz Beitrag anzeigen
    Hallo zusammen, ich habe folgendes Problem.
    Hier noch mal mein Versuch die Struktur "grafisch" darzustellen:

    Aufruf FB

    Multiinstanz FB (inout array) --> FC (inout array)


    Nochmal das Problem aufzugreifen, die Länge des Array muss natürlich festgelegt werden.
    Aber wie wäre es, mit diesen Varianten:

    1. Array als UDT definieren und über diesen Umweg die Werte übergeben.
    2. Statt inout ein IN und OUT des gleichen Typ's, evt mit einem Steuerbit im FC, das angibt ob die OUT-DAten übernommen werden sollen oder nicht.

    Klar ist das etwas "Hand-am-Arm"... Prinzipiell finde ich die Idee der Kapselung aber schon in die richtige Richtung. BTW: In welchen Sprachen sind die Bausteine FB/FC gehalten. hth
    "Das Leben ist viel zu kurz, um schlecht zu essen !"
    (Johann Lafer zur SWR3 Grillparty)

  4. #14
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    @Kiestumpe:
    das war im Wesentlichen schon in dem Link enthalten, den Ralle im Beitrag #3 gepostet hat ...

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

    Standard

    Nur zur Hälfte, der 2.te Variante finde ich da nicht, oder habe ich was übersehen?
    "Das Leben ist viel zu kurz, um schlecht zu essen !"
    (Johann Lafer zur SWR3 Grillparty)

  6. #16
    Registriert seit
    15.05.2007
    Beiträge
    46
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Larry, ist ein sehr interessanter Ansatz mit deinem Vorschlag:
    ---
    Über entsprechende Steuerbits (oder andere Schnittstellen-Variablen) sagst du dem FB, ob er Datenbereich 1 oder Datenbereich 2 benutzten soll - oder aber ob er dieses oder jenes mit den gleichen Daten anstellen soll.
    ---

    Grundsätzlich ist ja schon durch den Aufruf der Multiinst. festgelegt welcher Datenbereich für die Instanz zur Verfügung steht.

    Aber dein Ansatz mit einem Steuerbit (oder ähnlichem) die Datenbereiche auszuwählen hört sich sehr interessant an.

    Wie setzt du diesen Ansatz dann bei dir programmtechnisch um?

    ad: kiestumpe

    der Vorschlag mit in und out getrennt ist auch sehr interessant, finde ich, da ja nur bei der Parameterübergabe von in_out ein DB-Pointer benutzt wird, bei in und out werden die Werte übergeben

    Auf jeden Fall ein grosses Danke für die rege Disskusion an alle.

  7. #17
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Hallo Chris,
    ich beschreibe dir mal anhand eines Beispiels, was ich (und wie ich es) mache.

    Ich habe einen FB "Kurven". Dieser hat unterschiedliche Steuer-Eingänge. Die 2 wichtigsten sind "Werte aufzeichnen" und "Kurve auswerten / glätten". Das "Werte aufzeichnen" passiert im OB35 und dort mache ich dann nicht viel mehr als "schreibe Wert in Speicher und erhöhe Pointer". Die Auswertung starte ich nicht dort, sondern in dem Ablauf-FC, der ursächlich die Geschichte startet. Der Grund dafür ist, dass die Auswertezeit (je nach CPU und Kurve) durchaus mal auf 300 - 500 ms hochlaufen kann. Das wäre für den OB35 das Aus - den FC stört das nicht. Entscheidend ist hier aber, dass ich beide Male auf die gleichen Datenbereiche zugreife und letztendlich die Auswertung davon erhalte (Quasi als Funktions-Ergebnis).

    Ich hoffe, das inspiriert dich weiter ...

    Gruß
    LL

  8. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    iga-graz (14.08.2008)

  9. #18
    Registriert seit
    15.05.2007
    Beiträge
    46
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo LL, danke für den Tip, ich verstehe schon das Konzept dahinter, einerseits hast du einen kurzen Aufruf des FB im Interrupt nur für die Datenaufzeichnung und andererseits für die Datenauswertung einen Aufruf der durchaus länger dauern darf im Aufruf FC. Und der Vorteil das immer die gleiche Datenbasis dahinter ist. Das kann ich glaube ich gut gebrauchen. Wie gesagt vielen Dank. Grüße chris

    ps: sorry ich wollte dir über den Danke Button antworten, aber das hat nicht geklappt.

Ähnliche Themen

  1. IN_OUT eines FB/FC
    Von Daimonion im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 03.11.2011, 16:18
  2. IN_OUT mit Indirekter Adressierung
    Von SCM im Forum Simatic
    Antworten: 24
    Letzter Beitrag: 14.10.2011, 12:07
  3. Mit BLKMOV im FB auf IN_OUT vom Typ UDT
    Von Johannes F im Forum Programmierstrategien
    Antworten: 8
    Letzter Beitrag: 17.12.2009, 13:27
  4. UDT als In_Out an Multiinstanz FB
    Von dirknico im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 01.10.2009, 12:28
  5. IN/OUT/IN_OUT/Temp Anfangswert definieren?
    Von Hawkster im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 28.11.2008, 21:52

Lesezeichen

Berechtigungen

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