Globale Variablen, Fehler

Anonymous
2009-02-01
2009-02-04
  • Anonymous - 2009-02-01

    Originally created by: Wu Fu

    Hallo zusammen,

    ich habe immer wieder Probleme mit Globalen Variablen. Vieleicht kennt ja jemand die Probleme und kann mit weiter helfen.

    1. Um eine Variable in verschiedenen Unterprogrammen verwenden zu können deklariere ich diese als Global. Die Variable kann ich auch in jedem Programm forcen, allerdings wird die Variable nicht weiterverwendet. Beispiel: Im Program 1 schreibe ich die Variable X und im Program 2 werte ich die Flanke der Variable X aus. Egal ob ich die Variable X im Program 1 oder 2 force die Flanke wird nicht ausgewertet. Ersetze ich die Variable X im Programm 2 durch eine lokale Variable Y, kann ich diese problemlos forcen. Geforcte Variablen, die in verschiedenen Programmen verwendet werden, werden anscheinend in den Bausteinen nicht weiter verwendet.

    2. Dieses Problem knüpft an das erste an. Lass ich im Programm 2 die Flankenauswertung auf eine Lokale Variable Z schreiben, kann ich diese auch nicht forcen. Ich möchte die Variable Z (Flankenauswertung) einfach im selben Programm 2 und/oder Verknüpfen, aber die Bausteine regieren nicht. Verwende ich anstelle er globalen Variable X wieder die lokale Variable Y kann ich auch die Flankenauswertung Z forcen.

    3. Deklariere ich einen Hardwareausgang als globale Variable und lasse beim Übersetzen das Programm nach mehrfachem schreiben auf Ausgang überprüfen taucht auch ein Fehler auf. Es wird an erster Stelle immer die Variable und an zweiter _global_init aufgeführt, damit kann ich leider nichts anfangen. Weiß jemand was das bedeuten soll? Im Anhang ein Bild der Meldung.

    4. Im selben Bild habe ich noch ein Problem dargestellt. Verwende ich Globale Variablen in verschieden Tasks (Wetter/Main) wird die Warnung konkurrierender Zugriff ausgegeben. Stellt dies ein Problem dar?

    Ich hoffe ich habs einigermaßen verständlich erklärt und irgendjemand weiß Rat.

    Mit freundlichen Grüßen

    IMG: GlobaleVariable.JPG

    IMG: Warnungen.JPG

     
  • Erik Böhm - 2009-02-03

    Moin

    Wieso liegen denn deine Varialen alle auf festen Adressen ? Muss das sein ?

    Ich denke das würde das Problem schon lösen. Ich (und auch keiner den ich kenne) hab noch nie Probleme mit Globalen Variablen gehabt.

    Gruss

    Erik

     
  • Anonymous - 2009-02-03

    Originally created by: Wu Fu

    Hallo, danke für deine Antwort.

    Die Variablen die auch auf eine feste Adresse gelegt habe möchte ich über Modbus visualisieren, deswegen die Zuweisung.

    Die Variable aus dem Screenshot Frg_Somernacht_OL die ich nicht forcen kann hat keine feste Adresse.

    mfg

     
  • Erik Böhm - 2009-02-04

    Hi

    Forcen wird ja jeweils am Anfang und am Ende des Zyklus ausgeführt.

    Wenn dein Baustein zwischendrin was anderes reinschreibt, dann ist das eben so...

    Dann musst du an dieser Stelle einen Breakpoint setzen um die Variable wirklich an diesem Punkt zu überschreiben.

    Wo diese _global_init Funktion herkommt weiss ich auch nicht (wenn du sie nicht eingebunden hast). Was ist denn das für ne Steuerung ?

    Schon mal den Hersteller gefragt ?

    Konkurrierender Zugriff ist so lange kein Problem, solange er nur lesend ist. Lesen können prinzipiell alle zu jeder Zeit. Taskübergreifend würde ich aber trotzdem zu INPUT / OUTPUT Variablen raten.

    Gruss

    Erik

     

Log in to post a comment.