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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Auf interne PRG Variablen zugreifen

  1. #1
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo ich habe mein PLC_PRG und ein PRG Namens Schiebetuer.

    In dem PRG Schiebetuer habe ich eine Variable Ventil.

    Wie kann ich nun im PLC_PRG auf die Variable Ventil zugreifen? Ich habe es mit Schiebetuer.Ventil versucht, aber ohne Erfolg? die variable wir bei dem "." Operator schon garnicht angezeigt. ((


    Hat jemand ne Idee, woran das liegt? Ich dachte PRG Variablen kann man über den PRG Namen ansprechen?
    Zitieren Zitieren Auf interne PRG Variablen zugreifen  

  2. #2
    Registriert seit
    13.01.2005
    Ort
    Allgäu
    Beiträge
    146
    Danke
    4
    Erhielt 23 Danke für 18 Beiträge

    Standard

    Hallo,

    eigentlich sollte das mit Schiebetuer.Ventil schon funktionieren. Hast du das einfach mal auf die Steuerung geladen? Die Anzeige mit dem "." ist ja nur eine Editierhilfe.

    Gruß
    M_o_t

  3. #3
    Registriert seit
    29.09.2006
    Beiträge
    368
    Danke
    0
    Erhielt 41 Danke für 38 Beiträge

    Standard

    PrgName.VarName lesend sollte funktionieren.

  4. #4
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    also es funktioniert so halb

    Ich gebe Das Schiebetuer. ein ... dann kommt kein weitere Vorschlag in der austovervollständigung, wenn ich dann den namen der variable eingebe (ventil) gefolgt von einem "."
    .... dann erscheint wieder die autovervollständigung. warum denn nicht von der variable?????


    Weil sie keine in oder OUT ist ????? oder warum?
    Zitieren Zitieren Funtioniert so halb ;-)  

  5. #5
    Registriert seit
    01.10.2009
    Ort
    Regensburg
    Beiträge
    77
    Danke
    8
    Erhielt 11 Danke für 11 Beiträge

    Standard

    Willst du lesend oder schreibend auf die Variable zugreifen?

    Bei schreibenden Zugriff wird so ein Zugriff nicht funktionieren.
    Du kannst Dir aber eine Input und eine Output Variable für dein PRG bauen und das Schalten im PRG machen. Ist besonders für den der nach Dir den Code pflegen muss hilfreich

    cheers

  6. #6
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    also sobald ich nach dem "PRG_NAMEN" einen "." eingebe bekomme ich nichts nagezeigt. weder lesend noch schreibend.
    @ DaHauer, was meintest du mit "Das Schalten im PRG machn"????

  7. #7
    Registriert seit
    01.10.2009
    Ort
    Regensburg
    Beiträge
    77
    Danke
    8
    Erhielt 11 Danke für 11 Beiträge

    Standard

    Naja statt extern eine Variable zu beschreiben z.B. (MAIN.bVar1 := xxx) könntest du dem PRG eine INPUT Variable spendieren und mit hilfe dieser Input Variable innerhalb des betreffenden PRGs das Schreiben erledigen.

    Das unten stehende Beispiel soll nur deutlich machen was ich meine,, bitte nicht an den Namen stören

    Code:
    PROGRAM prg_Potlife
    VAR_INPUT
        strHeader                    : str_DeviceHeader;
        wNozzleMaskActive    : WORD := 15;    (* nozzles used to dispense *)
        wNozzleMaskMax        : WORD := 15;    (* nozzles configured *)
        bDispenseDone            : BOOL;    (* call me when its done *)
        bRinseDone                : BOOL;    (* when it all began, this flag resets the whole nozzle array to actual time *)
        rDispenseAmount        :    REAL := 0.5;    (* amount to dispense *)
        rTubeAmount                : REAL := 2;    (* max content of mixing tube *)
        tNearExpired            : TIME := t#60s;
        tPotlife                    : TIME := t#10m;
    END_VAR
    VAR
        rTubeAmountCalc : REAL;
    END_VAR
    
    (* hier können ja noch Bedingungen etc. stehen *)
    rTubeAmountCalc := rTubeAmount;

    Ich finde so sieht auch jemand, der das Projekt nicht kennt, gleich welche Variablen der Aussenwelt zur Verfügung stehen und Du hast kein Theater mit Schreibrechten auf die Variable.

    cheers

  8. #8
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    OK, so könnte man es machen, aber wenn ich viele Variablen habe, dann habe ich ja auch viele INPUTS, sieht das dann nicht relativ unschön aus?

    Ps.
    Ist es bei Codesys generell so, das Variablen, welche im Block
    VAR
    .
    .
    .
    END_VAR

    deklariert sind außerhalb des Bausteins nicht sichtbar sind. bzw. nicht in der autovervollständigung sind?
    Denn man kann ja trotzdem drauf zugreifen, man bekommt sie eben nur nicht in der autovervollständigung
    Geändert von Bensen83 (28.11.2012 um 10:41 Uhr)
    Zitieren Zitieren Ok  

  9. #9
    Registriert seit
    01.10.2009
    Ort
    Regensburg
    Beiträge
    77
    Danke
    8
    Erhielt 11 Danke für 11 Beiträge

    Standard

    Dann kannst du das auch in ein STRUCT packen und das Übergeben, sieht im Code etwas hübscher aus.
    Aber solange klar ist was da als Eingang und Ausgang übergeben wird sparst Du Dir mit Sicherheit die Suche wenn du in nem halben Jahr nochmal in den Code reinschauen musst.

  10. #10
    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


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Bensen83 Beitrag anzeigen
    OK, so könnte man es machen, aber wenn ich viele Variablen habe, dann habe ich ja auch viele INPUTS, sieht das dann nicht relativ unschön aus?

    Ps.
    Ist es bei Codesys generell so, das Variablen, welche im Block
    VAR
    .
    .
    .
    END_VAR

    deklariert sind außerhalb des Bausteins nicht sichtbar sind. bzw. nicht in der autovervollständigung sind?
    Denn man kann ja trotzdem drauf zugreifen, man bekommt sie eben nur nicht in der autovervollständigung
    Wenn du nun mal von außen auf Variablen zugreifen möchtest, dann mach es auch über die dafür vorgesehenen INPUT/OUTPUT/IN_OUT.
    Die internen variablen sind aus gutem Grund geschützt, das erspart uns bei Codesys die Streitereien, die es wegen der Step7-IDB-Variablen immerzu gibt.
    Außerdem wirst du so gezwungen, deinen Code ein wenig strukturierter zu schreiben, da du dir Gedanken über die nötigen Schnittstellenvariablen machen mußt. Deine Nachfolger am Code werden es sicher zu schätzen wissen.
    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

Ähnliche Themen

  1. Antworten: 12
    Letzter Beitrag: 18.05.2011, 23:57
  2. Antworten: 9
    Letzter Beitrag: 21.01.2009, 21:10
  3. Antworten: 0
    Letzter Beitrag: 05.08.2008, 00:16
  4. Antworten: 2
    Letzter Beitrag: 06.02.2008, 12:08
  5. auf TEMP Variablen zugreifen
    Von serdnar im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 06.10.2006, 14:07

Lesezeichen

Berechtigungen

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