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

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

Thema: Lokale Variablen werden nicht Beachtet/erkannt

  1. #11
    Kira77 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    24.05.2011
    Beiträge
    8
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ne das bringt mich i-wie nicht weiter
    oder ich schaffe nicht das so umzulenken damit es bei mir passt
    auf jeden fall habe ich jetzt mal test weise die variable global geschrieben um zu schauen ob der timer(immer noch lokal) funktioniert

    http://imageshack.us/f/863/zeitverzgerung1.png/
    das ist dabei rausgekommen
    wie ihr seht ist nach wie vor der timer nur mit ?? zu sehen

  2. #12
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    755
    Danke
    27
    Erhielt 166 Danke für 144 Beiträge

    Standard

    Beobachtest Du online wirklich die Instanz des FB's? Nachdem Du den FB offline editiert hast, musst Du online den FB noch einmal öffnen. Dann erscheint ein Auswahlfenster für die zu beobachtende Instanz, auch dann, wenn es im Projekt nur eine Instanz dieses FB's gibt.

  3. #13
    Kira77 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    24.05.2011
    Beiträge
    8
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ja ich habe beide instanzen mir schon angeschaut/aufgerufen wärend das programm online war und bei beiden ist der timer(lokal) nach wie vor mit fragezeichen versehen

    und mir fällt langsam nix mehr ein als für jede funktion einen eigenen globalen timer einzurichten
    nur würde es mich trotzdem interessieren warum es mit lokalen timern überhaupt nicht funktionieren will

    MfG Markus

  4. #14
    Registriert seit
    24.10.2010
    Beiträge
    52
    Danke
    0
    Erhielt 10 Danke für 9 Beiträge

    Standard

    Also der Fehler kann eigentlich nur bei dir liegen. Ich hab eben mal auf die Schnelle einen kleinen FB in ST mit einem TON gebastelt und da ist alles in bester Ordnung. Haben alle lokalen Variablen diese Fragezeichen oder nur die Timer (kann dein Bild leider nicht anschauen wg. Firewall)? Mit globalen Timern würde ich nicht anfangen.
    Geändert von tom_x (26.05.2011 um 08:22 Uhr)

  5. #15
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    755
    Danke
    27
    Erhielt 166 Danke für 144 Beiträge

    Standard

    Zitat Zitat von Kira77 Beitrag anzeigen
    mir fällt langsam nix mehr ein als für jede funktion einen eigenen globalen timer einzurichten
    nur würde es mich trotzdem interessieren warum es mit lokalen timern überhaupt nicht funktionieren will
    Muss funktionieren. Poste doch mal den kompletten Code des FB's und des aufrufenden Programms inkl. Variablendeklaration.

  6. #16
    Registriert seit
    24.10.2010
    Beiträge
    52
    Danke
    0
    Erhielt 10 Danke für 9 Beiträge

    Standard

    OK, hab jetzt das Bild dank Handy. Klarer Fall. Du bist, wie StructuredTrash schon sagte, in der Implementation, nicht in der Instanz. Alle deine lokalen Variablen haben Fragezeichen, die mit Status sind global, da sie oben in der Definition nicht auftauchen. Und, als endgültiger Beweis: Im Fenstertitel steht nur der Name des FB's und der Typ, nicht der Aufruf (muss in geschweiften Klammern stehen). Also, wenn du omline bist, Rechtsklick auf den Baustein in der Bausteinliste links und Instanz auswählen oder Baustein schließen und noch mal öffnen!

    Nebenbei, auf globale Variablen aus einem FB heraus zuzugreifen, ist laut IEC eigentlich nicht erlaubt, auch wenn es zumindest bei Beckhoff funtioniert. Das widerspricht der Kapselung und der Wiederververwendbarkeit. Deshalb gibts ja VAR_IN und VAR_OUT. Außerdem wird deine Timerinstanz vor der Übergabe der Parameter bearbeitet. Besser wäre es, diese beim Aufruf zu übergeben oder zumindest vorher.
    Geändert von tom_x (26.05.2011 um 09:20 Uhr)

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

    Kira77 (26.05.2011)

  8. #17
    Registriert seit
    02.02.2007
    Beiträge
    104
    Danke
    12
    Erhielt 16 Danke für 13 Beiträge

    Standard

    Hallo Kira,

    es mus funktionieren, da gibt es kein wenn und aber!
    irgendetwas machst Du falsch.

    Hier ein paar Tipps:

    Ruf den Timer so auf und nicht anders:
    Code:
    (*
    Timer;
    Timer.IN := bTest;
    Timer.PT:=t#10s;
    *)
    Timer(IN:=bTest , PT:=t#10s , Q=> , ET=> );
    Bei dir wird zu erst die Instanz aufgerufen und dann die Eingangsparameter beschrieben. Das macht mann nicht, so verlierst Du einen Zykus! Willlst Du das?

    Ausserdem haben wir mit deiner Schreibweise auch die Erfahrung gemacht, dass es zu Phänomenen kommen kann.
    Du kannst den Aufruf mit Eingangsparametern über F2 einfach einfügen.

    Ansonsten wie schon von anderen gesagt, die Instanz beobachten und nicht die Implementation.
    Gruß

    dummy
    Zitieren Zitieren Ein paar Tipps  

  9. Folgender Benutzer sagt Danke zu Dummy für den nützlichen Beitrag:

    Kira77 (26.05.2011)

  10. #18
    Kira77 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    24.05.2011
    Beiträge
    8
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Reden

    Vielen dank an alle
    Ich hab den dummen fehler von mir gefunden
    StructuredTrash hat mir direkt zum beginn die lösung gegeben
    ich habe die funktion in der, der timer sich befindet in ein funktionsbaustein gewandelt und dabei vergessen das diese funktion (die ja jetzt ein funktionsbaustein ist) von einer weiteren funktion aufgerufen wird konnte also nicht funktionieren
    habe jetzt alle nötigen funktionen in funktionsblöcke gewandelt und es funktioniert einwand frei
    vielen Dank noch mal an alle die sich die mühe gemacht haben
    MfG Markus

  11. #19
    Kira77 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    24.05.2011
    Beiträge
    8
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Daumen hoch


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Dummy Beitrag anzeigen
    Ruf den Timer so auf und nicht anders:
    Code:
    (*
    Timer;
    Timer.IN := bTest;
    Timer.PT:=t#10s;
    *)
    Timer(IN:=bTest , PT:=t#10s , Q=> , ET=> );
    Bei dir wird zu erst die Instanz aufgerufen und dann die Eingangsparameter beschrieben. Das macht mann nicht, so verlierst Du einen Zykus! Willlst Du das?
    Danke für den hinweis habe es im moment noch so wie zubeginn geschrieben und es klappt auch so aber es ist auf jeden fall sehr wertvolle information werde noch versuchen meine timer so umzuschreiben
    MfG Markus

Ähnliche Themen

  1. S7 MPI LAN Master werden nicht erkannt
    Von mariob im Forum Feldbusse
    Antworten: 0
    Letzter Beitrag: 24.05.2009, 13:54
  2. lokale Variablen auf Client
    Von derwestermann im Forum HMI
    Antworten: 0
    Letzter Beitrag: 06.03.2009, 13:47
  3. Lokale Variablen
    Von Mujo im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 23.08.2007, 18:53
  4. Warum muss der lokale Port angegeben werden?
    Von schatte im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 22.05.2007, 13:00
  5. Lokale Variablen in SCL
    Von Climber im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 05.02.2007, 11:57

Lesezeichen

Berechtigungen

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