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

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

Thema: "globale" Konstanten bei S7-Projekten

  1. #1
    Registriert seit
    25.07.2008
    Beiträge
    48
    Danke
    4
    Erhielt 4 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo miteinander,

    ich hätte gerne von euch gewusst ob es bei Step7 möglich ist "globale" Konstanten zu definieren.

    Ich hätte auf diese Weise gerne ein paar Fehlermöglichkeiten im Zusammenhang ausgeschlossen.

    Beispiel:
    ich hätte gerne die Konstante ARRAY_MAX angelegt um dann mithilfe dieser die Größe eines Array zu definieren

    xyz:array[0..ARRAY_MAX]OF INT;

    und um sie an diversen Stellen im Projekt zum Beispiel hier

    for i:=0 to ARRAY_MAX do
    a:=a+xyz[i];
    end_for;


    Würde doch zum Beispiel Überläufe vermeiden helfen...

    Also geht das irgendwie? Über die Symboltabelle vielleicht?

    Danke und viele Grüße

    Herdi

    PS: Bei Codesys kann man alles was zwischen VAR_CONSTANT und END_VAR in den globalen Variablen deklariert ist für solche Sachen verwenden.
    Zitieren Zitieren "globale" Konstanten bei S7-Projekten  

  2. #2
    Registriert seit
    22.11.2005
    Ort
    kl.Odenwald
    Beiträge
    716
    Danke
    111
    Erhielt 85 Danke für 71 Beiträge

    Standard

    Nein-geht so leider nicht!
    Kannst evt einen CONST-DB anlegen, ist aber nur ne Krücke und nicht wirklich vor veränderungen geschützt.
    Oder du machst alles über eine SCL-Quelle.
    "Das Leben ist viel zu kurz, um schlecht zu essen !"
    (Johann Lafer zur SWR3 Grillparty)

  3. #3
    herdi ist offline Benutzer
    Themenstarter
    Registriert seit
    25.07.2008
    Beiträge
    48
    Danke
    4
    Erhielt 4 Danke für 2 Beiträge

    Standard

    Zitat Zitat von kiestumpe Beitrag anzeigen
    Nein-geht so leider nicht!
    Kannst evt einen CONST-DB anlegen, ist aber nur ne Krücke und nicht wirklich vor veränderungen geschützt.
    Oder du machst alles über eine SCL-Quelle.
    Kannst du mir eventl. kurz auf die Sprünge helfen wie das mit dem CONST-DB geht? Kann man die Werte dann schon zur Kompilierzeit verwenden um Arraygrößen festzulegen?

  4. #4
    Registriert seit
    18.03.2008
    Beiträge
    267
    Danke
    3
    Erhielt 26 Danke für 26 Beiträge

    Standard

    Kiestumpe meint,

    dass du einfach einen DB anlegen sollst, der die Werte deiner "Kontanten" enthält. Natürlich darfst du diese Werte zur Laufzeit nicht schreibend, wohl aber lesend bearbeiten.

    Dennoch sind die "Konstanten" dann nur auf einer CPU / einem Programm, also nicht im gesamten Projekt.
    Die Array grösse "dynamisch" nach einer Konstante zu definieren kann Siemens leider nicht!!!

  5. #5
    Registriert seit
    08.11.2006
    Ort
    Uckermark
    Beiträge
    903
    Danke
    201
    Erhielt 256 Danke für 208 Beiträge

    Standard

    Zitat Zitat von herdi Beitrag anzeigen
    Hallo miteinander,

    ich hätte gerne von euch gewusst ob es bei Step7 möglich ist "globale" Konstanten zu definieren.

    Ich hätte auf diese Weise gerne ein paar Fehlermöglichkeiten im Zusammenhang ausgeschlossen.

    Beispiel:
    ich hätte gerne die Konstante ARRAY_MAX angelegt um dann mithilfe dieser die Größe eines Array zu definieren

    xyz:array[0..ARRAY_MAX]OF INT;

    und um sie an diversen Stellen im Projekt zum Beispiel hier

    for i:=0 to ARRAY_MAX do
    a:=a+xyz[i];
    end_for;


    Würde doch zum Beispiel Überläufe vermeiden helfen...

    Also geht das irgendwie? Über die Symboltabelle vielleicht?

    Danke und viele Grüße

    Herdi

    PS: Bei Codesys kann man alles was zwischen VAR_CONSTANT und END_VAR in den globalen Variablen deklariert ist für solche Sachen verwenden.
    Deine Probleme hätte ich gern mal!
    nee,nee,nee....
    Neue Ideen begeistern jene am meisten, die auch mit den alten nichts anzufangen wussten.
    Karl Heinrich Waggerl (1897-1973)

  6. #6
    Registriert seit
    18.03.2008
    Beiträge
    267
    Danke
    3
    Erhielt 26 Danke für 26 Beiträge

    Standard

    Zitat Zitat von OHGN Beitrag anzeigen
    Deine Probleme hätte ich gern mal!
    nee,nee,nee....
    Also ich hab das Problem auch.
    Jeder der schon mal mit einer richtigen Hochsprache programmiert hat, würde das genau so machen wie herdi das beschreibt, Siemens ist da leider noch in der Steinzeit der Programmiereung... OHGN auch?

  7. #7
    Registriert seit
    08.11.2006
    Ort
    Uckermark
    Beiträge
    903
    Danke
    201
    Erhielt 256 Danke für 208 Beiträge

    Standard

    Was heißt "in der Steinzeit"?
    Ich muß zugeben, in Hochsprachen programmiere ich nicht. Aber warum soll denn so eine einfache "dumme" SPS auch unbedingt alle Vorzüge von Hochsprachen erfüllen können (müssen)?
    Eine globale Konstante würde ich mir in einem DB einfach selber definieren:
    Code:
    L   meine_Konstante               //eine beliebige Konstante
    T  "konstanten".konstante_1   // in Datenbaustein schreiben
    Also wozu braucht man das alles?
    .
    Neue Ideen begeistern jene am meisten, die auch mit den alten nichts anzufangen wussten.
    Karl Heinrich Waggerl (1897-1973)

  8. #8
    Registriert seit
    18.03.2008
    Beiträge
    267
    Danke
    3
    Erhielt 26 Danke für 26 Beiträge

    Standard

    Dieses Thema scheint sich zu einem Glaubenskampf zu entwickeln, was wir natürlich nicht möchten.

    Fakt ist, du kannst die Array-Grösse nicht mit einer Varaiblen (Konstanten) angeben, NUR durch einen expliziten Zahlenwert.
    Das Problem hierbei liegt einerseits bei der S7 an sich, da keine dynamische Speicherverwaltung möglich ist.
    Eine Definition mittels einer Konstanten aber hat nichts mit dynamischer Speicherverwaltung zu tun, der SCL Compiler unterstützt das nur leider nicht (wie so vieles andere, was nützlich wäre).

  9. #9
    Registriert seit
    08.11.2006
    Ort
    Uckermark
    Beiträge
    903
    Danke
    201
    Erhielt 256 Danke für 208 Beiträge

    Standard

    Zitat Zitat von Chefmech Beitrag anzeigen
    ....
    Fakt ist, du kannst die Array-Grösse nicht mit einer Varaiblen (Konstanten) angeben, NUR durch einen expliziten Zahlenwert.
    .....
    Das mit den Array-Grössen hatte ich in den vorhergehenden Beiträgen überlesen... Da hast Du natürlich recht.

    Aber ursprünglich ging es ja in diesem Thread um "globale Konstanten"....
    .
    Neue Ideen begeistern jene am meisten, die auch mit den alten nichts anzufangen wussten.
    Karl Heinrich Waggerl (1897-1973)

  10. #10
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.224
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Chefmech Beitrag anzeigen
    Dieses Thema scheint sich zu einem Glaubenskampf zu entwickeln, was wir natürlich nicht möchten.

    Fakt ist, du kannst die Array-Grösse nicht mit einer Varaiblen (Konstanten) angeben, NUR durch einen expliziten Zahlenwert.
    Das Problem hierbei liegt einerseits bei der S7 an sich, da keine dynamische Speicherverwaltung möglich ist.
    Eine Definition mittels einer Konstanten aber hat nichts mit dynamischer Speicherverwaltung zu tun, der SCL Compiler unterstützt das nur leider nicht (wie so vieles andere, was nützlich wäre).
    So ist das nun mal und wer genau hinsieht, wird entdecken, daß ist überall im Leben so Man kann nicht immer alle Vorteile genießen, muß auch Nachteile hinnehmen.

    Ich kann damit Leben, habe bisher niemals unbedingt und um jeden Preis dynamische Array benötigt (außer in Delphi und das ist nun mal kein SPS-Programm).

    Wer hat nicht schon den sturen, reichlich dummen SCL-Compiler verflucht. Den kann Siemens ruhig mal renovieren, dabei meine ich nicht einmal den Compiler an sich (ok, Debugmeldungen, Fehlermeldungen etc. dürfen ausführlicher sein), sondern vor Allem den Editor. Codevervollständigung, kontextsensitive Hilfe, farbliche Texthervorhebungen, etc. das wäre mir persönlich durchaus wichtiger, als Veränderungen an der Sprache an sich.

    Ich empfinde das auch nicht als Glaubenskrieg, hoffe aber immer noch inständig, daß die SPS-Programmiererei nicht den Hochsprachenprogrammierern in die Hände fällt. Denn, Speicherlecks, Progammabstürze, nicht durchschaubare Abläufe im Programm, Bluescreens bis hinunter zum Stillstand des Betriebssystems , all das ist bei einer normalen SPS und einem soliden Programm ebend nicht so leicht möglich, wie bei einem hochkomplexen Gigabytegroßen Betriebssystem inkl. Anwendungsprogramm. Und je mehr das Gespann Betriebssystem/Programm können muß, desto komplexer und fehleranfälliger wird das Ganze.
    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. "globale" RxPDO - EL6751
    Von Dave86 im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 13.09.2011, 09:22
  2. "Index Pulse", "Home Switch" und "Position Limit Switch"
    Von senmeis im Forum Antriebstechnik
    Antworten: 3
    Letzter Beitrag: 07.03.2011, 11:21
  3. WinCC V5.2 Server und "globale" TAGs
    Von repök im Forum HMI
    Antworten: 2
    Letzter Beitrag: 21.07.2009, 16:38
  4. Antworten: 2
    Letzter Beitrag: 14.12.2007, 15:09
  5. Antworten: 4
    Letzter Beitrag: 29.11.2006, 08:59

Lesezeichen

Berechtigungen

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