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

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

Thema: Funktionsbaustein verändert seine Ausgänge, obwohl er nicht mehr aufgerufen wird.

  1. #1
    Registriert seit
    13.01.2010
    Beiträge
    56
    Danke
    11
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi,

    kennt jemand eine Situation in der das Möglich ist? Also ich rufe einen Baustein in einem bestimmten zustand auf, dieser meldet zurück das er aktiv ist (output-Variable). Im nächsten Zustand rufe ich den Baustein nicht mehr auf, und frage die Output-Variable ab die dann plötzlich zurückgesetzt ist und eine andere Output- Variable plötzlich gesetzt. d.h. der Baustein hat seine Ausgänge verändert ohne aufgerufen worden zu sein....

    viele Grüße
    Zitieren Zitieren Funktionsbaustein verändert seine Ausgänge, obwohl er nicht mehr aufgerufen wird.  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.170
    Danke
    922
    Erhielt 3.287 Danke für 2.656 Beiträge

    Standard

    Ein anderer Programmteil schreibt auf die Variablen oder ein Kommunikationspartner (Visu?) von außerhalb der CPU?

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #3
    Registriert seit
    13.01.2010
    Beiträge
    56
    Danke
    11
    Erhielt 3 Danke für 3 Beiträge

    Standard

    ich wünschte es wäre so einfach
    Nein, es handelt sich um einen lokal aufgerufenen Funktionsbaustein, MT_ScsData von Rexroth zum Aulesen von Sercos- Parametern.
    dazu müsste der Baustein ja schon global aufgerufen werden, das das so zutreffen könnte. Ich habe dieses verhalten bisher noch nie gesehen.
    Sehr eigenartig. Wenn ich direkt hinter dem Baustein einen Breakpoint setze, so hat er seinen Output "Active" gesetzt, wenn ich dann den baustein nicht mehr aufrufe, ist der Ausgang plötzlich nicht mehr gesetzt. Ich frage mich halt wie das überhaupt möglich ist, da ja nur darauf gearbeitet werden kann, wenn der Baustein ausgeführt wird.


    Oder gibt es Bausteine, die temporäre Ausgänge besitzen. Und bei dem Baustein den ich nutze handelt es sich um einen solchen?
    Geändert von Daxgehtsteil (18.07.2015 um 11:22 Uhr)

  4. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.170
    Danke
    922
    Erhielt 3.287 Danke für 2.656 Beiträge

    Standard

    Meinst Du einen Output des FB oder eine an dem Output angeschlossene Variable?

    Wenn der FB nicht aufgerufen wird, dann wird auch nicht der Zustand der FB-Ausgänge in die angeschlossenen Variablen kopiert. Wenn die angeschlossene Variable eine TEMP-Variable ist, dann hast Du das selbe Problem wie mit jeder TEMP-Variable, deren Inhalt unbestimmt ist, solange ihr nicht in dem selben Programmdurchlauf etwas zugewiesen wurde.

    Wenn Du den Zustand des Ausgangs eines FB bzw. einer FB-Instanz wissen willst ohne die Instanz aufzurufen, dann kannst Du direkt den Ausgang abfragen: Instanzname.Output

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. #5
    Registriert seit
    13.01.2010
    Beiträge
    56
    Danke
    11
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Wenn Du den Zustand des Ausgangs eines FB bzw. einer FB-Instanz wissen willst ohne die Instanz aufzurufen, dann kannst Du direkt den Ausgang abfragen: Instanzname.Output
    genau das mache ich ja, aber seltsamerweise wird genau der output verändert, obwohl die instanz selbst nicht mehr aufgerufen wird.


    fbReadScsData(
    Start := true,
    Mode := 5,
    StandardsParam:= 'S',
    DataAddr := ADR(aSCSCycData),
    Size := SIZEOF(aSCSCycData)
    );

    if not fbReadScsData.Active
    then
    do something.....
    fbReadScsData(Start:=false);
    end_if

    es handelt sich um diese Active- Variable. den Aufruf habe ich gesataltet wie oben gezeigt. Dabei ist mir aufgefallen das der Baustein so nie feritg wird, das heißt active nicht zruückgesetzt wird. Durch ausprobieren habe ich dann festgestellt, das er nur beim Wechsel des Sps- Zyklus das Signal wegnimmt, und zwar bevor ich den Baustein nochmal aufrufe!! Ich kenne den genauen Sinn dahinter nicht, aber dann brauche ich keine Variable gestalten, die mir sagt wann der Baustein fertig ist, wenn das dann so nicht funktioniert.
    Geändert von Daxgehtsteil (18.07.2015 um 18:10 Uhr)

  6. #6
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Kommt drauf an was der Baustein intern so treibt.
    Wenn er beispielsweise eine Systemfunktion die einmalig angestoßen wurde verwendet, wird diese vom Betriebssystem auch weiter ausgeführt ohne dass der Baustein der die Funktion angestoßen hat aufgerufen wird.
    Bekommt die Systemfunktion dann beispielsweise Zeiger auf bestimmte Adressen übermittelt, so wird diese ihre Daten nach Beendigung auf diese Variablen schreiben. Dann hättest du eine Änderung ohne dass du den eigentlichen Baustein aufrufst.

    Sercos hört sich ja nach Kommunikation an, darum könnte das durchaus so ein Szenario sein.

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

    Daxgehtsteil (18.07.2015)

  8. #7
    Registriert seit
    13.01.2010
    Beiträge
    56
    Danke
    11
    Erhielt 3 Danke für 3 Beiträge

    Standard

    ja ich habe auch so ein dumpfes Gefühl, das dort irgendwie soetwas passiert. Aber wenn dem so ist, dann ist das doch Wahnsinn...
    Ich muss mich doch darauf verlassen könnnen, das ein Baustein mir sauber zurückmeldet wann er fertig ist...
    Sonst ist doch diese "Active" Output varialbe auch zwecklos...

  9. #8
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Die Funktion hat doch einen extra Parameter "Start".
    Es ist bei vielen Funktionen so, dass diese nur zuverlässig funktionieren wenn sie nur über ihre Parameter gesteuert werden, und nicht einfach übersprungen werden. Das ist beispielsweise bei den diversen IEC-Timern auch so (TON, TOF, etc.).

  10. #9
    Registriert seit
    13.01.2010
    Beiträge
    56
    Danke
    11
    Erhielt 3 Danke für 3 Beiträge

    Standard

    ja natürlich. Stimme ich dir zu. Aber ein TON gibt iwann seinen Ausgang "Q" zurück. D.h. ich kann den baustein mit TRUE am Eingang "IN" starten und definiert warten bis der Baustein den ausgang setzt und ihn anschließend wieder zurücksetzen, in dem ich ihn mit ton(in:=false) aufrufe. bei diesem bAustein hier ist das nicht so. Der wird einfach nicht fertig, es sei denn der SPS zyklus wechselt und dann ist die Variable sofort zurückgesetzt, auch ohne Aufruf des Bausteins mit "FALSE" an seinem Start- Eingang. Für mich ist das kein sauberer Handshake.

  11. #10
    Registriert seit
    13.09.2007
    Beiträge
    566
    Danke
    50
    Erhielt 65 Danke für 57 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Moin
    Welche emulation? Ich kenne keine Hardware emulation!
    Also funktioniert das mit den Bausteinen nicht. Ab den indradrive cs kannst du im Drive den Motor emulieren. Nur Geschwindigkeit oder zyklische lagesollwertvorgabe.



    Sent from my iPhone using Tapatalk

Ähnliche Themen

  1. Step 7 FB wird nicht richtig aufgerufen
    Von ladychaos im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 25.03.2015, 09:45
  2. Antworten: 5
    Letzter Beitrag: 14.08.2013, 17:27
  3. Programm wird nicht aufgerufen
    Von Bensen83 im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 05.09.2011, 21:44
  4. Grenzwertbaustein wird nicht aufgerufen
    Von lexx1984 im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 06.10.2010, 13:09
  5. Antworten: 19
    Letzter Beitrag: 28.03.2010, 13:05

Lesezeichen

Berechtigungen

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