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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 27

Thema: Temporäre Variablen und bedingte Sprünge.. keine Funktion

  1. #11
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Kapitaen31 Beitrag anzeigen
    Code:
    Netzwerk1:
          U     DB55.DBX    1.1             // #D_schr_Anf
          O     
          U(    
          L     DB22.DBW   54               // DB50 alles auf null schreiben
          L     15
          ==I   
          )     
          U(    
          L     DB22.DBW   56
          L     0
          ==I   
          )     
          FP    M    103.3                  // Startstellung im DB 55
          O     
          U(    
          L     DB22.DBW   54
          L     30
          ==I                               // bei zu wenig Platz im DB 55 beenden
          )     
          U(    
          L     DB22.DBW   56
          L     0
          ==I   
          )     
          FP    M    103.4
          O     
          U(    
          L     DB22.DBW   54
          L     45
          ==I   
          )     
          U(    
          L     DB22.DBW   56
          L     0
          ==I   
          )     
          FP    M    103.5
          O     
          U     DB55.DBX    1.2             //  #D_schr_End
          =     #D_schr
    ...
    Ich würde mal vermuten, dass hier ein paar Klammern fehlen und dadurch der #D_schr_Anf (bzw. alles vor den Flankenbildungen) immer wieder mit in die weiteren Flankenbildungen einbezogen wird. PS: Und somit am Ende nur entweder die FP M103.5 oder #D_schr_End als ODER-Eingänge für den bedingten Sprung überbleiben.
    Aber so umfangreiche Verknüpfungen mach' ich persönlich lieber in KOP (da blick' ich schneller durch), vlt. hab' ich deshalb auch einen Denkfehler.


    Fragen:
    Wenn Du die ersten 3 Flanken als separate Verknüpfung auf eine temporäre Variable ausführst, warum machst Du das mit den Vergleichen nicht auch und bildest erst zum Schluß die Verknüpfung für den Sprung? Dann wird's doch auch übersichtlicher, oder?

    Und warum benutzt du nicht einen FB und machst die Flankenbildung mit statischen Variablen. Dann kann man z.B. auch die Temps zu den Statics umlegen und einfacher prüfen, an welcher genau es jetzt liegt.
    Geändert von hucki (08.08.2013 um 21:25 Uhr)

  2. #12
    Registriert seit
    23.11.2012
    Ort
    Österreich
    Beiträge
    147
    Danke
    48
    Erhielt 19 Danke für 19 Beiträge

    Standard

    Habe einen alten Thread gefunden in dem das Verhalten von Lokalvariablen schon mal besprochen wurde

    temporäre Lokalvariablen

    und einen Post

    Hans Berger schreibt in seinem AWL-SCL-Buch zum Thema "Temporäre Lokaldaten" auf S. 258:
    ".....Temporäre Lokaldaten sind Operanden, die im Lokaldaten-Stack (L-Stack) im Systemspeicher der CPU liegen. Das Betriebssystem der Zentralbaugruppe stellt die temporären Lokaldaten für jeden Codebaustein bei dessen Aufruf zur Verfügung. Die Werte im L-Stack sind beim Aufruf eines Bausteins quasi zufällig."

    In der STEP7-Hilfe ist unter dem Stichwort "temporäre Lokaldaten" zu lesen:
    "...Beim Erstellen von Organisationsbausteinen können Sie temporäre Variablen (TEMP) deklarieren, die nur während der Bearbeitung des Bausteins zur Verfügung stehen und dann wieder überschrieben werden. Vor dem ersten Zugriff müssen die Lokaldaten initialisiert werden. Außerdem benötigt jeder Organisationsbaustein für seine Startinformation 20 Lokaldaten-Byte.
    Die CPU besitzt einen begrenzten Speicher für die temporären Variablen (Lokaldaten) gerade bearbeiteter Bausteine. Die Größe dieses Speicherbereichs, des Lokaldaten-Stacks, ist CPU-abhängig. Der Lokaldaten-Stack wird zu gleichen Teilen unter den Prioritätsklassen aufgeteilt (Voreinstellung). Das bedeutet, jede Prioritätsklasse verfügt über einen eigenen Lokaldatenbereich. Damit ist gewährleistet, dass auch hochpriore Prioritätsklassen und ihre zugeordneten OBs Platz für ihre Lokaldaten zur Verfügung haben."

    Wenn das Speicherverhalten von irgendwelchen mehr oder weniger zufälligen Konstellationen abhängt, dann sollte man so wohl besser nicht programmieren.
    Geändert von kapo666 (08.08.2013 um 21:17 Uhr)

  3. #13
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    Zitat Zitat von kapo666 Beitrag anzeigen
    Wirklich? Auf meiner CPU 315-2 DP/PN funzt es nicht.

    Anhang 21435
    Und? Geht doch!
    Das VKE der FP geht nach einem Zyklus wieder auf 0, weil der Inhalt STA jetzt auch 1 ist.
    Hättest vlt. danach mit #m1 noch einen separaten Setzen-Befehl ausführen sollen, denn wer kann schon das Einschalten für einen Zyklus mit dem bloßen Auge erkennen.

  4. #14
    Registriert seit
    23.11.2012
    Ort
    Österreich
    Beiträge
    147
    Danke
    48
    Erhielt 19 Danke für 19 Beiträge

    Standard

    Haste recht. Mit der Zuweisung gehts nicht, aber habe es als Setzen geändert und es funktioniert immer noch nicht.
    Möglich das ich um diese Uhrzeit auch nicht mehr Denkfähig bin.

  5. #15
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    Zitat Zitat von kapo666 Beitrag anzeigen
    das Verhalten von Lokalvariablen
    Wenn ich das richtig überblickt habe, hat sich Kapitaen31 daran gehalten:
    Erst zugewiesen, dann gelesen.

    Wenn ich auch das richtig verstanden habe, hat er das Setzen erst heute mit den DBX eingetragen.

  6. #16
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    Zitat Zitat von kapo666 Beitrag anzeigen
    Haste recht. Mit der Zuweisung gehts nicht, aber habe es als Setzen geändert und es funktioniert immer noch nicht.
    Teste mal so:
    Code:
          U     M    400.0
          FP    M    400.1
          =     #m1
    
          U     M    400.3   // damit M400.2 nicht direkt das Ergebnis der Flanke bekommt
          =     M    400.4
    
          U     #m1
          S     M    400.2
    
    Und temporäre Variablen immer Zuweisen nicht Setzen/Rücksetzen, sonst können sie undefiniert sein!

    Aber fragt dazu nicht 00Alex!

  7. #17
    Kapitaen31 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.08.2013
    Ort
    Kiel
    Beiträge
    17
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von kapo666 Beitrag anzeigen
    sorry...ich wollte dir nicht zu nahe treten.
    Hi Kapo,

    alles kein Problem. Du tritts mir damit nicht zu nahe.... Du weißt ja auch nicht welches wissen ich habe...

    Zitat Zitat von kapo666 Beitrag anzeigen
    Wenn du für deinen Flankenmerker eine Lokalvariable benutzt, funktionierts.

    Habe es selber mal bei einer Schrittkette so programmiert gehabt und dadurch hat die Anlage ihren eigenen Kopf entwickelt. Seit dem bin ich mit Lokalvariablen vorsichtiger.

    Code:
    //geht nicht
          U     M    400.0
          FP    M    400.1
          =     #m1
    
    //funktioniert
          U     M    400.0
          =     #m1
    
          U     #m1
          FP    #m2
           =     #m3
    mfg
    Kapo
    Also ich hatte in dem gleichem Projekt, so ziemlich am Anfang, schon mal bei einer FP mit TempVar gearbeitet... Allerdings ging es dort gar nicht.... Deshalb benutze ich bei Flanken nur noch statische...
    Mein Gedanke war es halt, das ich Merker einspare.... zwar habe ich genug... aber das war halt mein Grundgedanke...

    Gruß
    Andreas

  8. #18
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    Zitat Zitat von Kapitaen31 Beitrag anzeigen
    Also ich hatte in dem gleichem Projekt, so ziemlich am Anfang, schon mal bei einer FP mit TempVar gearbeitet... Allerdings ging es dort gar nicht.... Deshalb benutze ich bei Flanken nur noch statische...
    Der Flankenmerker am FP/FN muss statisch, das Verknüpfungsergebnis kann bei Zuweisung temporär sein.


    Zitat Zitat von Kapitaen31 Beitrag anzeigen
    Mein Gedanke war es halt, das ich Merker einspare.... zwar habe ich genug... aber das war halt mein Grundgedanke...
    Ein Grund mehr für das:
    Zitat Zitat von hucki Beitrag anzeigen
    Und warum benutzt du nicht einen FB und machst die Flankenbildung mit statischen Variablen. Dann kann man z.B. auch die Temps zu den Statics umlegen und einfacher prüfen, an welcher genau es jetzt liegt.

  9. #19
    Kapitaen31 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.08.2013
    Ort
    Kiel
    Beiträge
    17
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo hucki,


    Zitat Zitat von hucki Beitrag anzeigen
    Ich würde mal vermuten, dass hier ein paar Klammern fehlen und dadurch der #D_schr_Anf (bzw. alles vor den Flankenbildungen) immer wieder mit in die weiteren Flankenbildungen einbezogen wird. PS: Und somit am Ende nur entweder die FP M103.5 oder #D_schr_End als ODER-Eingänge für den bedingten Sprung überbleiben.
    Aber so umfangreiche Verknüpfungen mach' ich persönlich lieber in KOP (da blick' ich schneller durch), vlt. hab' ich deshalb auch einen Denkfehler.
    Naja, mein Gedanke war halt, ich mache diese Verknüpfung mit einem ODER.... habe deinen Gedanke nicht unbedingt bedacht.... Werde ich gleich mal ausprobieren...bzw. morgen auf der Arbeit...

    Zitat Zitat von hucki Beitrag anzeigen
    Fragen:
    Wenn Du die ersten 3 Flanken als separate Verknüpfung auf eine temporäre Variable ausführst, warum machst Du das mit den Vergleichen nicht auch und bildest erst zum Schluß die Verknüpfung für den Sprung? Dann wird's doch auch übersichtlicher, oder?
    Darüber habe ich überhaupt keinen Gedanke verschwendet.... mhhhh.... Du hast aber vollkommen recht... wird auf jeden Fall übersichtlicher...

    Zitat Zitat von hucki Beitrag anzeigen
    Und warum benutzt du nicht einen FB und machst die Flankenbildung mit statischen Variablen. Dann kann man z.B. auch die Temps zu den Statics umlegen und einfacher prüfen, an welcher genau es jetzt liegt.
    Stimmt.... vielleicht mache ich das morgen früh schnell mal....
    Aber danke schon mal von Dir...

  10. #20
    Kapitaen31 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.08.2013
    Ort
    Kiel
    Beiträge
    17
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von hucki Beitrag anzeigen
    Wenn ich das richtig überblickt habe, hat sich Kapitaen31 daran gehalten:
    Erst zugewiesen, dann gelesen.

    Wenn ich auch das richtig verstanden habe, hat er das Setzen erst heute mit den DBX eingetragen.

    Hallo hucki,

    jein.... ich hatte gestern schon den Gedanke und auch schon geändert, aber hatte es dann auf der Arbeit nicht mehr ausprobiert, weil ich Schluß gemacht hatte..... die ganzen nullen und einsen konnte ich nicht mehr sehen....
    Heute morgen hatte ich es ausprobiert.... und damit läuft es..... aber eigentlich wollte ich es nicht so machen.... aber es bleibt mir erst mal nichts anderes übrig....

    Und ich habe auch immer darauf geachtet, das ich erst setze und dann lese...... das habe ich einmal bisher bei Temp falsch gemacht... und mir einen Wolf gesucht.... grrr..... seit dem bin ich diese Erfahrung auch reicher.....

Ähnliche Themen

  1. Temporäre Variablen im OB1
    Von BadTaste im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 21.03.2012, 20:26
  2. Antworten: 2
    Letzter Beitrag: 29.11.2011, 07:12
  3. Antworten: 1
    Letzter Beitrag: 19.09.2009, 13:07
  4. Zugriff auf Temporäre Variablen eines FC
    Von Fluffi im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 13.05.2009, 07:52
  5. Temporäre Variablen in einem FB
    Von CanYouHelpMe im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 20.10.2008, 11:24

Lesezeichen

Berechtigungen

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