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

Ergebnis 1 bis 9 von 9

Thema: Globale Variablen in einem PRG

  1. #1
    Registriert seit
    04.02.2013
    Beiträge
    271
    Danke
    12
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, ich habe in meinen Programmen für verschiedene Rubriken immer eigene GVLs erstellt. Bspw. Für die Achsen eine GVl_Motion.
    jetzt meinte ein Kollege er würde das nicht so toll finden, wenn es so viele GVLs gibt. Er mach die Variablen lieber direkt in die PRGs.
    ist es nicht aber so, dass ich Variablen in PRGs nur Global lesen kann, jedoch nicht Schreibens kann?
    ich meine mich mal dran erinnern zu können, dass dann irgendwie ne Fehlermeldung kommt wie in etwa

    Variable_xy ist kein Eingang von Prg_xy....



    Wisst ihr da genau bescheid? ... Wenn es auch über die PRGs gehen würde, wäre es natürlich super.
    Zitieren Zitieren Globale Variablen in einem PRG  

  2. #2
    Registriert seit
    12.05.2010
    Ort
    Dortmund
    Beiträge
    889
    Danke
    57
    Erhielt 121 Danke für 89 Beiträge

    Standard

    Wenn du die Variablen nur Lokal deklarierst, kann man sie auch nur dort verwenden (wie der Name schon sagt).
    Global...entsprechend GLOBAL
    Weil Denken die schwerste Arbeit ist, die es gibt, beschäftigen sich auch nur wenige damit.

  3. #3
    Registriert seit
    09.10.2013
    Beiträge
    1
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo, ich glaube mal gelesen zu haben, dass (vor allem bei sicherheitskritischen Applikationen) so gut wie möglich auf globale Variablen verzichtet werden sollte um die einzelnen PRGs besser voneinander zu trennen und Fehler zu vermeiden.

    Gesendet von meinem GT-I9105P mit Tapatalk-4 now Free

  4. #4
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.733
    Danke
    317
    Erhielt 1.522 Danke für 1.283 Beiträge

    Standard

    Zitat Zitat von SY50 Beitrag anzeigen
    Wisst ihr da genau bescheid? ... Wenn es auch über die PRGs gehen würde, wäre es natürlich super.
    Also im Prinzip ist das was ich hier schreibe jetzt natürlich teilweise Off-Topic, aber ich konnte mich wirklich nicht beherrschen!
    Du hast das also mit einem Kollegen diskutiert, hast das scheinbar nicht so ganz begriffen, und versuchst dich jetzt hier jetzt an total aus dem Zusammenhang gerissenen Spekulationen zu orientieren, was du bzw. dein Kollege jetzt überhaupt gemeint haben hätte können.
    Klär das doch einfach mit dem entsprechenden Kollegen, wenn er sowas "behauptet" wird er das ja wohl auch irgendwie erklären können.


    Prinzipiell ist zu sagen, das ein PRG unter Codesys z.B. auch nur ein FB mit genau einer Instanz ist, mit allen Konsequenzen bezüglich Variablenzugriff.
    Der wörtliche Wortlaut der Codesys-Hilfe:
    "Ein Programm ist ein Baustein, der bei der Ausführung einen oder mehrere Werte liefert. Programme sind Global im gesamten Projekt bekannt."

    Es ist also durchaus möglich von überall z.B. so zuzugreifen:
    MyPRG.MyVar
    wobei dann MyVar ein IN/OUT/INOUT/VAR des PRG MyPRG ist.
    Ob das jetzt deshalb schöner ist oder wird, sei dahingestellt.

    Mfg
    Manuel
    Geändert von MSB (09.10.2013 um 21:30 Uhr)
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  5. #5
    SY50 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    04.02.2013
    Beiträge
    271
    Danke
    12
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von MSB Beitrag anzeigen
    Prinzipiell ist zu sagen, das ein PRG unter Codesys z.B. auch nur ein FB mit genau einer Instanz ist, mit allen Konsequenzen bezüglich Variablenzugriff.
    Der wörtliche Wortlaut der Codesys-Hilfe:
    "Ein Programm ist ein Baustein, der bei der Ausführung einen oder mehrere Werte liefert. Programme sind Global im gesamten Projekt bekannt.

    Es ist also durchaus möglich von überall z.B. so zuzugreifen:
    MyPRG.MyVar
    wobei dann MyVar ein IN/OUT/INOUT/VAR des PRG MyPRG ist.
    Ob das jetzt deshalb schöner ist oder wird, sei dahingestellt.

    Mfg
    Manuel
    Und genau das stimmt eben nicht. Denn auf FBs kann ich eben nicht mit FBInstanz.myvar zugreifen, wenn die Variable im Var.....End_Var Bereich deklariert wurde. .... Bei PRGs funktioniert das, so wie du es auch geschrieben hast, allerdings wenn die Variablen keine in, oder Input sind, dann nur lesend. Wenn ich aber eine Variable habe, welche ich im automatikablauf beschreiben will, dann muss ich das ja in mehreren PRGs machen (mehrere automatikprogramme). Also müsste ich global schreibend zugreifen können. Das geht doch nur über GVLs, oder etwa doch über PrG variablen?

  6. #6
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.733
    Danke
    317
    Erhielt 1.522 Danke für 1.283 Beiträge

    Standard

    Und wo deklarierst du deine FB-Instanz?
    Doch sicherlich in einem PRG.

    Also dann halt so:
    MyPRG.MyInstanz.MyFBVar

    Und das ist wie geschrieben absolut global möglich, also an jeder Stelle, in jeden Task, egal wo im Projekt.

    Natürlich ist dabei sowohl lesender als auch schreibender Zugriff möglich, jedoch wenn z.B. IN oder IN-OUT Variablen beim Aufruf mit Operanden versorgt werden, natürlich quasi wirkungslos.
    Geändert von MSB (09.10.2013 um 22:52 Uhr)
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  7. #7
    SY50 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    04.02.2013
    Beiträge
    271
    Danke
    12
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Also ich habe ein PRG, wenn ich in diesem eine Variable deklariere, dann kann ich von außerhalb nicht darauf zugreifen, da bekomme ich die Fehlermeldung "PRG.myvar ist kein Eingang von PRG"
    Wenn das bei dir funktioniert, dann sage mir sofort wie

  8. #8
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    750
    Danke
    27
    Erhielt 165 Danke für 143 Beiträge

    Standard

    Dann deklariere die PRG-Variablen, auf die Du von aussen schreiben willst, doch als VAR_INPUT. Das würdest Du bei einem FB doch auch tun.

  9. #9
    SY50 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    04.02.2013
    Beiträge
    271
    Danke
    12
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Genau das wollte ich ja eben nicht tun

Ähnliche Themen

  1. Auf interne PRG Variablen zugreifen
    Von Bensen83 im Forum CODESYS und IEC61131
    Antworten: 10
    Letzter Beitrag: 28.11.2012, 10:51
  2. mehrere Instanzen/globale variablen/hauptprogramm
    Von blackedding im Forum CODESYS und IEC61131
    Antworten: 5
    Letzter Beitrag: 18.07.2011, 09:57
  3. PC Worx Globale Variablen Deklarieren
    Von salbeibombe im Forum Sonstige Steuerungen
    Antworten: 1
    Letzter Beitrag: 19.02.2011, 18:00
  4. Globale Variablen initialisieren
    Von softwareheini im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 24.01.2010, 15:04
  5. Globale Variablen
    Von wroky im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 03.06.2009, 22:33

Lesezeichen

Berechtigungen

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