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

Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 37

Thema: WIE Aufruf organisieren?

  1. #21
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    954
    Danke
    178
    Erhielt 23 Danke für 22 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Larry Laffer Beitrag anzeigen
    So in etwa würde ich es machen. Du kannst die unterschiedlichen Bausteine an ihrem Aufruf überpringen oder ihnen eine Freigabe geben und dann innen den ganzen Code überspringen (entweder mit einem GOTO :Ende oder mit einem IF dass die komplette innere Bearbeitung ausklammert). WHILE DO verbietet sich hier doch wohl von selbst ...

    Gruß
    Larry
    Warum verbietet sich denn WHILE DO - es ist doch eine "Durchführungsbedingung", d.h., solange die Bedingung anliegt, wird der Code innerhalb dieses Befehls bearbeitet ... oder verstehe ich das jetzt total falsch?
    LG
    spirit

  2. #22
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    954
    Danke
    178
    Erhielt 23 Danke für 22 Beiträge

    Standard

    Zitat Zitat von hucki Beitrag anzeigen
    Nicht wenn dieser FB vom FC aufgerufen wird.
    Wo soll denn der FC den Rückgabewert vom INOUT des FBs speichern?

    Wenn Du z.B. aus dem IN des FCs auch einen INOUT machst, dann kann das Ergebnis des FBs weiter (in diesem Fall an den DB) durchgereicht werden.

    Danke hucki,

    den ersten Teil habe ich jetzt verstanden!


    Ursprünglich habe ich ja in dem FC KEINE Variablen deklariert und rufe hier die SK-FB's auf.

    Mit der Variable hapert es noch ... also müsste ich im Aufruf-FC eine INOUT-Variable (z.B. "variable") deklarieren, und an diese den DB anbinden?

    Code:
    #variable := "AchsDB".Velocity;
    Und diese #variable dann in der Aufrufzeile an die INOUT-Variable des FB's setzen. Ist das so gemeint?
    LG
    spirit

  3. #23
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.360
    Danke
    397
    Erhielt 822 Danke für 665 Beiträge

    Standard

    Zitat Zitat von spirit Beitrag anzeigen
    Warum verbietet sich denn WHILE DO - es ist doch eine "Durchführungsbedingung", d.h., solange die Bedingung anliegt, wird der Code innerhalb dieses Befehls bearbeitet ... oder verstehe ich das jetzt total falsch?
    Ja, aber innerhalb eines Zyklusses!
    Die Schrittketten sollen doch sicher über mehrere Zyklen laufen, oder?

  4. #24
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.360
    Danke
    397
    Erhielt 822 Danke für 665 Beiträge

    Standard

    Zitat Zitat von spirit Beitrag anzeigen
    Ursprünglich habe ich ja in dem FC KEINE Variablen deklariert und rufe hier die SK-FB's auf.

    Mit der Variable hapert es noch ... also müsste ich im Aufruf-FC eine INOUT-Variable (z.B. "variable") deklarieren, und an diese den DB anbinden?
    Du kannswt die DB-Variable auch direkt an die FBs übergeben, wenn der FC eh' nur zum Aufruf dieser FBs dient.
    Warum wolltest Du das denn über IN(OUT)s des FCs machen?

  5. #25
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    954
    Danke
    178
    Erhielt 23 Danke für 22 Beiträge

    Standard

    Zitat Zitat von hucki Beitrag anzeigen
    Du kannswt die DB-Variable auch direkt an die FBs übergeben, wenn der FC eh' nur zum Aufruf dieser FBs dient.
    Warum wolltest Du das denn über IN(OUT)s des FCs machen?
    Also ich glaube, jetzt verstehe ich irgendwas komplett falsch!

    An die INOUT-Var des FB's komme ich doch erst beim Aufruf desselben heran und das ist doch nur im Aufruf-FC der Fall.

    An welcher Stelle sonst könnte ich denn die DB-Variable DIREKT an die FB's übergeben?
    LG
    spirit

  6. #26
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.360
    Danke
    397
    Erhielt 822 Danke für 665 Beiträge

    Standard

    Ich hoffe, wir reden nicht irgendwo aneinander vorbei.

    1. nur einmaliger Aufruf des FC je Zyklus
    2. Im FC werden die FBs mit INOUTs aufgerufen

    Richtig?


    Dann kannst Du doch beim Aufruf der FBs dessen INOUTs statt mit Lokalvariablen des FCs auch direkt mit den DB-Variablen füttern.
    Geändert von hucki (14.07.2016 um 21:53 Uhr) Grund: 1. konkretisiert

  7. #27
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    954
    Danke
    178
    Erhielt 23 Danke für 22 Beiträge

    Standard

    Zitat Zitat von hucki Beitrag anzeigen
    Ich hoffe, wir reden nicht irgendwo aneinander vorbei.

    1. Start FC
    2. Im FC werden die FBs mit INOUTs aufgerufen

    Richtig?


    Dann kannst Du doch beim Aufruf der FBs dessen INOUTs statt mit Lokalvariablen des FCs auch direkt mit den DB-Variablen füttern.
    Glaube es ist schon zu spät für mich ... echt peinlich, sorry!

    Ja, richtig - im FC sollen per IF-ELSIF-Anweisungen diese sieben Schrittketten-FB's aufgerufen werden. Siehe mein Post #14!

    Wenn ich nun einen FB im FC aufrufe (bzw. dessen Instanz-DB), dann muss ich ja alle deklarierten Variablen IN, OUT, INOUT versorgen.


    Am Ende des Aufrufs steht nun die besagte INOUT-Variable, an die ich die DB-Variable bringen möchte:

    Position := ... ?

    Wenn ich nun schreibe

    Position := "AchsDB".Velocity

    dann meckert TIA und wir haben ja auch schon den Grund dafür herausgefunden.

    Wie sonst könnte ich nun an "Position" direkt die DB-Variable bringen?
    Geändert von spirit (14.07.2016 um 22:06 Uhr)
    LG
    spirit

  8. #28
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.360
    Danke
    397
    Erhielt 822 Danke für 665 Beiträge

    Standard

    Zitat Zitat von spirit Beitrag anzeigen
    Am Ende des Aufrufs steht nun die besagte INOUT-Variable, an die ich die DB-Variable bringen möchte:

    Position := ... ?

    Wenn ich nun schreibe

    Position := "AchsDB".Velocity

    dann meckert TIA und wir haben ja auch schon den Grund dafür herausgefunden.
    Das sollte aber eigentlich gehen.

    Wie sehen denn die Deklarationen von "Position" und "AchsDB".Velocity aus?
    Sind die wirklich gleich?
    Ist Position wirklich INOUT und nicht nur OUT (dann wäre die Übergabe nicht mit := sondern mit =>)?

  9. #29
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    954
    Danke
    178
    Erhielt 23 Danke für 22 Beiträge

    Standard

    Zitat Zitat von hucki Beitrag anzeigen
    Das sollte aber eigentlich gehen.

    Wie sehen denn die Deklarationen von "Position" und "AchsDB".Velocity aus?
    Sind die wirklich gleich?
    Ist Position wirklich INOUT und nicht nur OUT (dann wäre die Übergabe nicht mit := sondern mit =>)?
    Schön, zumindest sprechen wir ja schon mal von dem Selben ...

    Ja, Position ist 100%ig ein INOUT - und bei der Übergabe steht auch := und nicht =>

    Beide Variablen sind als DINT deklariert. Das Seltsame ist ja auch, wenn ich den FB z.B. direkt im OB1 (FUP) aufrufe, dann ist alles ok und TIA meckert nicht!

    Wenn ich den Aufruf aber, wie beschrieben, unter SCL im FC mache, dann bekomme ich einen Fehler und die entsprechende Zeile ist rot unterstrichen.


    Nachtrag:

    Wenn ich mich richtig erinnere, ich hatte heute den Aufruf auch mal in SCL in einem FB gemacht und da war besagte Zeile "nur" gelb unterstrichen und ohne Fehlermeldung übersetzt. Also muss das irgendwie mit dem Aufruf im FC zu tun haben ... warum auch immer ...
    Geändert von spirit (14.07.2016 um 22:42 Uhr)
    LG
    spirit

  10. #30
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.360
    Danke
    397
    Erhielt 822 Danke für 665 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Nur noch mal zu Sicherheit - der DB ist ein globaler DB? Weil Du dabei was von IN schreibst.

Ä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
  •