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

Ergebnis 1 bis 7 von 7

Thema: B&R : Variablenbezug eines zweiten Programms im ersten Programm

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

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Schönen gutenTag allerseits

    Ich habe gerade eine Test-Lizenz vom B&R Automation Studio in der Version4.1 aufgespielt
    und versuche gerade auf meine reale Test-PLC X20 1583 ein Test Programm zuschreiben.

    Meine 3 Test-programme die ich angelegt habe ( in ST ) sollen untereinanderkommunizieren.
    Maschine 3 ( Programm 3 ) darf erst starten wenn Maschine 2 ( Programm 2 ) dieRückmeldung Running ausgibt,
    Maschine 2 erst wenn Maschine 1 ( Programm 1 ) die Rückmeldung Running ausgibtund so weiter....

    ABER: Ich bekomme einfach nicht raus wie ich es schaffe in einem Programm eineVariable von einem anderen Programm einzulesen,
    wie ich das bisher immer im TIA gemacht habe.
    Muss ich bei ALLEN Programmen Globale Variablen verwenden?
    Wenn ja wie sorge ich dafür das er Globale nimmt und keine lokalen?

    Ich wäre für einen Tip oder die Lösung sehr dankbar.
    Inzwischen zweifel ich an mir selbst und überlege ob ich nicht alles in TIA umsetze ,
    da funktioniert das wenigstens .....
    Personalführung ist die Kunst, den Mitarbeiter so schnell über den Tisch zu ziehen, daß er die Reibungshitze als Nestwärme empfindet.
    Zitieren Zitieren B&R : Variablenbezug eines zweiten Programms im ersten Programm  

  2. #2
    Registriert seit
    04.01.2015
    Beiträge
    63
    Danke
    0
    Erhielt 18 Danke für 17 Beiträge

    Standard

    Globale Variablen
    Unter Logical View hast du oben Global.var. Hier einen Doppelklick.
    Im Fenster dann Add Varibale (rechte Maustaste) und Variable einfügeln

    Lokale Variablen
    Gleiches wie oben nur hier beim Tasknamen unter Taskname.var die lokale Variable einfügen.

    Verwendung
    Variablennamen angeben. Egal ob Lokal oder Global.
    Wenn gleicher Name verwendet wird, wird die Lokale Variable verwendet (Bitte im AS Help nachsehen)

    Mit einer CASE anweisung im Step 0 nach der Running Variable abfragen. Wenn Running = 1 auf Step2 springen.

  3. Folgender Benutzer sagt Danke zu roger34 für den nützlichen Beitrag:

    B.S.84 (12.02.2015)

  4. #3
    Registriert seit
    04.01.2015
    Beiträge
    63
    Danke
    0
    Erhielt 18 Danke für 17 Beiträge

    Standard

    Hallo

    Weiss nicht ob die Anzeige jetzt stimmt und die Bilder richig geladen sind
    [CODE]
    PROGRAM _INIT

    Running1 := 0;
    SW := 0;
    Count := 0;
    Start := 0;
    (* TODO : Add your code here *)


    END_PROGRAM
    PROGRAM _CYCLIC

    CASE SW OF
    0:
    Count := 0;
    IF Start = 1 THEN
    SW := 1;
    END_IF
    1:
    Start := 0;
    IF Count < 10 THEN
    Count := Count + 1;
    Running1 := 0;
    ELSE
    Running1 := 1;
    SW := 2;
    END_IF
    2:

    END_CASE

    gCount1 := Count;


    (* TODO : Add your code here *)


    END_PROGRAM


    [CODE\]

    Trace.JPGGlobalVar.JPGLokalVar.JPG

  5. Folgender Benutzer sagt Danke zu roger34 für den nützlichen Beitrag:

    B.S.84 (12.02.2015)

  6. #4
    Registriert seit
    04.01.2015
    Beiträge
    63
    Danke
    0
    Erhielt 18 Danke für 17 Beiträge

    Standard

    Muss noch Code einfügen üben

    Init Program 1
    Code:
    PROGRAM _INIT
    
    
    (* TODO : Add your code here *)
        Running1 := 0;
        SW := 0;
        Count := 0;
        Start := 0;
    
    END_PROGRAM
    Cyclic Programm 1
    Code:
    PROGRAM _CYCLIC
    
        CASE SW OF
            0:
                Count := 0;
                IF Start = 1 THEN
                    SW := 1;
                END_IF
            1:
                Start := 0;
                IF     Count < 10 THEN
                    Count := Count + 1;
                    Running1 := 0;
                ELSE
                    Running1 := 1;
                    SW := 2;
                END_IF
            2:
            
        END_CASE
        
        gCount1 := Count;
        
        
    (* TODO : Add your code here *)
    
    
    END_PROGRAM
    Init Program 2
    Code:
    PROGRAM _INIT
    
        Running2 := 0;
        Count := 0;
        SW := 0;
    (* TODO : Add your code here *)
    
    
    END_PROGRAM
    Cyclic Program 2
    Code:
    PROGRAM _CYCLIC
        
    (* TODO : Add your code here *)
        CASE SW OF
        0:
            Count := 0;
            IF Running1 = 1 THEN
                SW := 1;
            END_IF
        1:
            IF     Count < 10 THEN
                Count := Count + 1;
                Running2 := 0;
            ELSE
                Running2 := 1;
                SW := 2;
            END_IF
        2:
        END_CASE
        
        gCount2 := Count;
    
    
    END_PROGRAM

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

    B.S.84 (12.02.2015)

  8. #5
    Avatar von B.S.84
    B.S.84 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.10.2014
    Beiträge
    7
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Vielen Dank roger34 ,ich werde das gleich mal ausprobieren.
    Personalführung ist die Kunst, den Mitarbeiter so schnell über den Tisch zu ziehen, daß er die Reibungshitze als Nestwärme empfindet.

  9. #6
    Avatar von B.S.84
    B.S.84 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.10.2014
    Beiträge
    7
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich habe inzwischen in einer Hilfe die Definition gefunden

    Gültigkeit der Variablen
    ist in der AS Hilfe 4.1.5.13 erklärt unter:

    Programmierung >> Variablen und Datentypen >> Bezugsrahmen (Scope) von Deklarationen

    EDIT :
    Nach einem Rückruf bei B&R steht fest das es nur wie von Roger 34 beschrieben gearbeitet werden kann.
    Es ist nur möglich mit übergeordneten Variablen einer Projektstruktur zur arbeiten , untergeordnete oder gleichwertige Variablen in der Projektstruktur können nicht aufgerufen und verwendet werden.
    Dementsprechend werde ich es so machen wie Roger 34 beschrieben hat , ich werde ALLE Status Running in einer übergeordnete Globale Variable verwenden müßen.
    Geändert von B.S.84 (12.02.2015 um 11:16 Uhr)
    Personalführung ist die Kunst, den Mitarbeiter so schnell über den Tisch zu ziehen, daß er die Reibungshitze als Nestwärme empfindet.

  10. #7
    Registriert seit
    08.03.2010
    Ort
    BaWü
    Beiträge
    131
    Danke
    10
    Erhielt 13 Danke für 11 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Als Anmerkung:

    Es gibt eine Möglichkeit auf Globale Variablen zu verzichten: PV Mapping.

    Dadurch können lokale Variablen zwischen 2 Tasks ausgetauscht werden ( eine lokale Var wird einer anderen Var zugewiesen über das Mappingfile). Man kann damit zwar nicht die gleiche Variable nehmen, aber man hat zum einen keine Globalen Variaben zum anderen hat man gleichzeitig eine Definierte Schnittstelle im Task geschaffen, an die man schnell einen anderen Task anhängen kann.

    Eine weitere Möglichkeit wären "Paketglobale Variablen". Diese sind auf der Steuerung trotzdem globale Variablen, aber der Compiler überwacht, dass nur Task innerhalb des Pakets diese Variablen verwenden.

Ähnliche Themen

  1. Antworten: 15
    Letzter Beitrag: 11.02.2014, 09:48
  2. erklären eines Programms
    Von woseitsihr im Forum Programmierstrategien
    Antworten: 2
    Letzter Beitrag: 01.07.2010, 15:42
  3. Simulation eines S7 Programms
    Von DerPraktikant im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 09.12.2008, 10:03
  4. Archivierung eines S7 Programms
    Von 1schilcher im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 09.03.2007, 08:15

Stichworte

Lesezeichen

Berechtigungen

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