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

Ergebnis 1 bis 8 von 8

Thema: Problem mit 2 gleichen FC´s

  1. #1
    Registriert seit
    14.07.2005
    Beiträge
    298
    Danke
    27
    Erhielt 18 Danke für 15 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich bin gerade am verzweifeln mit einem FC. Genauer gesagt mit zwei gleichen FC´s. Zu Beginn muss ich noch erwähnen das ich mich mit FC´s und FB´s noch nicht wirklich beschäftigt habe und gerade meine ersten Gehversuche in dieser Richtung mache. (Also bitte verzeiht mir meine Unwissenheit )

    Zur Steuerung von zwei Servomotoren habe ich mir einen FC geschrieben und dann einmal kopiert.

    Beide FC´s (FC100 und FC101) sollen permanent bearbeitet werden und auf ein Start-Signal hin eine bestimmte Aktion ausführen.

    Mein Problem besteht jetzt leider darin das, sobald ich den einen FC starte (#Y_START), der andere (FC101) genau die gleiche Ausgabe hat (jedenfalls an den Ausgängen (#Y_OUT und #X_OUT).

    Aber ich versteh einfach nicht warum!
    Kann mir da jemand von euch weiterhelfen???

    Im Anhang hab ich die Bausteine FC40 (Aufruf), FC100 und FC101 als AWL Quelle gepostet (einfach umbenennen).

    Vielen Dank schon mal im vorraus.

    P.S.: Mir ist gerade noch aufgefallen das bei beiden FC´s die Variablen gleich heißen. Das hatte ich Testweise schon mal geändert (s.Bild NW2.jpg) hatte aber auch keinen Erfolg.

    Gruß smartie
    Angehängte Grafiken Angehängte Grafiken
    Angehängte Dateien Angehängte Dateien
    Geändert von smartie (08.07.2008 um 21:18 Uhr)
    Zitieren Zitieren Problem mit 2 gleichen FC´s  

  2. #2
    Registriert seit
    03.01.2006
    Ort
    Im sonnigen Süden von Österreich!
    Beiträge
    1.377
    Danke
    227
    Erhielt 182 Danke für 167 Beiträge

    Standard

    Hallo!

    Ich habe das Programm nur kurz mal überflogen aber ich glaube dein Problem liegt in den Temp - Variablen.
    Du hast für Temp - Variablen Setzen und Rücksetzen verwendet und das würde nur funktionieren wenn du die Variablen am Anfang von deinem Programm rücksetzt sonst kann es passieren das die Lokaldaten von deinem vorhergehenden FC schon gesetzt sind.

    godi

  3. #3
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    da die FC´s beide das gleiche machen, hätte einer gereicht ... einfach X und Y weglassen ... das klärt jtzt zwar noch nicht dein problem - welches ich noch NICHT wirklich verstehe - trägt aber vielleicht zum verständnis von funktionen bei ...

    Zitat Zitat von godi Beitrag anzeigen
    Du hast für Temp - Variablen Setzen und Rücksetzen verwendet und das würde nur funktionieren
    setzen und rücksetzen funktioniert soweiso nur auf out und inout in FC's und zusätzlich STAT in FB's ... verrückte welt ... aber das mit der lokalen adressierung ála L 0.0 könnte eines der probleme sein!
    Geändert von vierlagig (08.07.2008 um 21:25 Uhr)
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

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

    Standard

    Du darfst keine temporären Variablen setzen, und dann erwarten, daß diese Variablen im nächsten Zyklus noch den korrekten Wert haben.

    Im gleichen Zusammenhang steht damit, daß eine, im Baustein FC100 gesetzte TempVar

    S #Y_TTemp_OUT4;

    im gleich darauf folgenden Baustein FC101 auch gesetzt ist, da dieser Baustein ja seine Variablen genauso auf den Lokaldatenstack packt. Die Bausteine sind identisch, kein anderer Baustein überschreibt zufällig dazwischenliegend die Lokaldaten, also liegen diese Lokaldaten in beiden Bausteinen praktisch auf den selben Adressen und damit auf den selben Bits.

    Entweder du nimmst FB und packst die Variablen

    Y_Temp_Pos_erreicht : BOOL ;
    Y_TTemp_OUT1 : BOOL ;
    Y_TTemp_OUT2 : BOOL ;
    Y_TTemp_OUT3 : BOOL ;
    Y_TTemp_OUT4 : BOOL ;

    in den Stat-Bereich, oder du legst noch ein weiteres Wort als "Speicher" (INOUT) an den FC und nutzt die Bits dieses Wortes (Kannst natürlich auch 5 zusätzliche Bool anlegen, aber das sieht nicht so toll aus.)
    Geändert von Ralle (08.07.2008 um 21:27 Uhr)
    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. #5
    smartie ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    14.07.2005
    Beiträge
    298
    Danke
    27
    Erhielt 18 Danke für 15 Beiträge

    Standard

    Zitat Zitat von vierlagig Beitrag anzeigen
    da die FC´s beide das gleiche machen, hätte einer gereicht ... einfach X und Y weglassen
    Das hatte ich am Anfang ja auch, und testweise habe ich dann zwei FC´s mit unterschiedlicher Beschriftung erstellt.

    Zitat Zitat von vierlagig Beitrag anzeigen
    aber das mit der lokalen adressierung ála L 0.0 könnte eines der probleme sein!
    Steh grad am Schlauch, aber den Satz versteh ich net! *Schäm"



    Zitat Zitat von Ralle
    Im gleichen Zusammenhang steht damit, daß eine, im Baustein FC100 gesetzte TempVar S #Y_TTemp_OUT4;

    im gleich darauf folgenden Baustein FC101 auch gesetzt ist
    Ja, aber da heisst sie jetzt #X_TTemp_OUT4, das dürfte doch dann nichts machen, oder?


    Zitat Zitat von Ralle
    Entweder du nimmst FB und packst die Variablen

    Y_Temp_Pos_erreicht : BOOL ;
    Y_TTemp_OUT1 : BOOL ;
    Y_TTemp_OUT2 : BOOL ;
    Y_TTemp_OUT3 : BOOL ;
    Y_TTemp_OUT4 : BOOL ;

    in den Stat-Bereich
    Das bedeutet also, ich kann in FB´s alle Variablen im STAT Bereich setzen?
    Benötige ich dann auch einen DB zu meinem FB? - Ich nehme an JA.
    Wird der dann automatisch generiert?

    Sorry für meine Unwissenheit, dachte ich trau mich da mal ran und steh jetzt am Schlauch.

    Gruß smartie

  6. #6
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    Zitat Zitat von smartie Beitrag anzeigen
    Zitat Zitat von vierlagig Beitrag anzeigen
    aber das mit der lokalen adressierung ála L 0.0 könnte eines der probleme sein!

    Steh grad am Schlauch, aber den Satz versteh ich net! *Schäm"
    zum einen ist es unsauber lokale speicherbereiche direkt zu adressieren, zum anderen liegen die bereiche bei dir im temp-bereich und können nicht gesetzt und/oder rückgesetzt werden, da sie nur einen zyklus lang gültig sind!
    Zitat Zitat von smartie Beitrag anzeigen
    Das bedeutet also, ich kann in FB´s alle Variablen im STAT Bereich setzen?
    Benötige ich dann auch einen DB zu meinem FB? - Ich nehme an JA.
    Wird der dann automatisch generiert?
    die instanzen werden beim aufrauf und angabe des jeweiligen db`s automatisch generiert, eine andere möglichkeit stellt die multiinstanz dar ... suchfunktion dazu benutzen
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

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

    Standard

    Zitat Zitat von smartie Beitrag anzeigen
    Ja, aber da heisst sie jetzt #X_TTemp_OUT4, das dürfte doch dann nichts machen, oder?

    Gruß smartie
    Wie die heißt ist eigentlich egal, wichtig ist, daß sie vom LStack kommt und auf diesem auf einer bestimmten Stelle liegt. Den LStack beschmiert jeder FC/FB, ohne Rücksicht, deswegen heißt er ja Lokal.

    Zitat Zitat von smartie Beitrag anzeigen
    Das bedeutet also, ich kann in FB´s alle Variablen im STAT Bereich setzen?
    Benötige ich dann auch einen DB zu meinem FB? - Ich nehme an JA.
    Wird der dann automatisch generiert?

    Gruß smartie
    Wenn du einen FB in dein Programm einfügst und einen IDB angibst, den es noch nicht gibt und der keine Symbolik besitzt, die nicht auf diesen FB lautet, wird der DB erzeugt. (Step7 fragt dich!)

    Call FB100, DB100
    Geändert von Ralle (08.07.2008 um 21:48 Uhr)
    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

  8. #8
    smartie ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    14.07.2005
    Beiträge
    298
    Danke
    27
    Erhielt 18 Danke für 15 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    So jetzt gehts,

    ich habe mir einen FB angelegt den ich mir einmal kopiert habe und für
    jeden der beiden Antriebe hernehme.

    Ich habe alle TEMP Variablen aus dem FC in STAT Variablen am FB kopiert.

    Ich nehme an die muss ich irgendwie, wenn der FB das erste mal aufgerufen wird zurück setzen? Wie würde ich das dann machen? Gibts da ne einfache Möglichkeit, oder brauch ich das gar nicht?

    Ich schau mir das dann morgen mal an, für heute ist FEIERABEND !

    Vielen Dank euch allen für die schnelle Hilfe, Gute Nacht.

    Gruß smartie

Ähnliche Themen

  1. 2 Panels mit gleichen Funktionen
    Von Weschi im Forum HMI
    Antworten: 6
    Letzter Beitrag: 03.05.2011, 10:09
  2. Antworten: 6
    Letzter Beitrag: 07.02.2011, 07:49
  3. Antworten: 12
    Letzter Beitrag: 06.08.2009, 07:52
  4. Antworten: 5
    Letzter Beitrag: 15.05.2008, 10:08
  5. libnodave im gleichen Verzeichnis
    Von moeller im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 05.09.2006, 09:48

Lesezeichen

Berechtigungen

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