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

Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 33

Thema: Verständnisfrage zu TEMP-Variablen

  1. #11
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.192
    Danke
    925
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von spirit Beitrag anzeigen
    Frage: Wie müsste ich das dann umschreiben, dass ich #speicher als TEMP so an dieser Stelle einsetzen kann?
    Garnicht. Es geht nicht mit TEMP.
    Der Sinn des Codes ist es, einen Zustand der jetzt vorliegt mit einem Zustand der vorher vorlag zu vergleichen. Um zu wissen, welcher Zustand vorher vorlag ist es unumgänglich, den Zustand vorher zu speichern, damit man ihn später (also jetzt) auswerten kann. TEMP kann aber nicht zuverlässig speichern.


    Zitat Zitat von spirit Beitrag anzeigen
    Wenn ich das jetzt so mache, dann steht in der Temp-Variable ja kein zufälliger Wert mehr drin:

    Code:
          L     0
          T     #speicher          
    
          L     #speicher
          INVI  
          L     MW   200
          T     #speicher
          UW    
          U     <>0
          S     M     14.7

    Geht aber trotzdem nicht.
    Du kannst das Programm kürzen wie ein optimierender Compiler.
    Da du einen konstanten Wert 0 in #speicher schreibst, kannst Du ebensogut die Konstante 0 direkt nutzen, da wo Du #speicher danach benutzt:
    Code:
          L     0
    //      T     #speicher          
    //      L     #speicher
          INVI  
          L     MW   200
          T     #speicher
          UW    
          U     <>0
          S     M     14.7
    Jetzt steht da nur noch ein einsames unnützes Schreiben auf #speicher.
    - "L 0" + INVI ergibt immer 16#FFFF
    - MW200 UW 16#FFFF ergibt immer MW200 --> es wird immer nur MW200 mit sich selber verglichen - wie soll da eine Veränderung festgestellt werden können?

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  2. #12
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.192
    Danke
    925
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Zitat Zitat von nutellahase Beitrag anzeigen
    ... Mal abgesehen davon ob temp. Variable oder nicht aber so hat das Harald sicher nicht aufgeschrieben! Du schreibst immer den Inhalt von deinem MW 200 in deinen Speicher und das vor der Wortverknüpfung! Der Sinn dahinter ist ja dass du im Speicher dann deine geflankten Bits stehen hast .
    Doch, das hat Harald genauso aufgeschrieben.
    Der Sinn ist tatsächlich, den Inhalt des MW200 in den Speicher zu schreiben und sich zu merken, nicht die geflankten Bits.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #13
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Garnicht. Es geht nicht mit TEMP.
    Der Sinn des Codes ist es, einen Zustand der jetzt vorliegt mit einem Zustand der vorher vorlag zu vergleichen. Um zu wissen, welcher Zustand vorher vorlag ist es unumgänglich, den Zustand vorher zu speichern, damit man ihn später (also jetzt) auswerten kann. TEMP kann aber nicht zuverlässig speichern.

    Harald
    Ok, wenn es garnicht geht, dann gebe ich mich eben geschlagen!

    Ist ja echt eine verflixte Sache mit diesen blöden TEMP-Variablen...

    Was wäre denn dann für die Aussage von Larry

    "Eine Temp-Variable ist sinnvoll dann eingesetzt, wenn man sie z.B. zur Bildung eines Zwischen-Ergebnisses (ob nun Binär oder Dezimal ist unerheblich) verwendet, das man dann in der weiteren Folge des Bausteins (also nach der Wert-Zuweisung) weiter verwenden möchte."

    ein sinnvolles Beispiel mit Temp-Variablen aus der Praxis?

    Lieben Dank!
    LG
    spirit

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

    Standard

    Zitat Zitat von spirit Beitrag anzeigen
    Ok, das verstehe ich!

    Wenn ich das jetzt so mache, dann steht in der Temp-Variable ja kein zufälliger Wert mehr drin:

    Code:
          L     0
          T     #speicher          
    
          L     #speicher
          INVI  
          L     MW   200
          T     #speicher
          UW    
          U     <>0
          S     M     14.7

    Geht aber trotzdem nicht.

    Frage: Wie müsste ich das dann umschreiben, dass ich #speicher als TEMP so an dieser Stelle einsetzen kann?
    Klar geht das nicht, du hast wirklich keinen zufälligen Wert drin, aber immer eine 0, denn die schreibst du ja vorher rein.
    Temp kann man nicht verwenden, um sich Werte von einem Bausteinaufruf zum nächsten zu merken!
    Dazu muß man INOUT oder globale Variablen (globale Variablen sind eher schlechter Stil) nutzen oder man nimmt einen FB und nutzt darin die Statischen Variablen.
    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

  5. #15
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.626
    Danke
    377
    Erhielt 801 Danke für 642 Beiträge

    Standard

    Zitat Zitat von spirit Beitrag anzeigen
    Das ist nur eine Übung! Ich wollte das mit den TEMP-Var einfach nur mal verstehen...
    Mir ist es klar, dass es auch über IN_OUT geht. Hätte es halt gerne über Temp versucht. Insofern muss es doch auch irgendwie über Temp machbar sein, oder nicht?
    Grundsätzlich, mit in TEMP kann man nicht abspeichern zwischen Program-scans.
    Ein TEMP dient als Zwischenablage innerhalb von ein Baustein, und innerhalb von denselbe Program-scan.
    Ein TEMP muss immer mit code initialisiert werden bevor man es lesend verwendet.

    Vielleicht ist es besser zu erklären für was man ein TEMP verwenden kann, anstatt wozu man es nicht verwenden kann.
    Besipiele:
    1. Wenn man zig Anzahl BOOL Variabeln die alle TRUE sein muss um mehrere andere Programteile freigeben, dann kann man diese in ein TEMP BOOL sammeln, so das man nicht immer alle die Variabeln eintippen muss, sondern nur den TEMP Variabel.
    2. Wenn man Berechnungen mit Klammern macht, dann kann man mit TEMPs das Inhalt von ein Formel in kleinere Teilen zerlegen.
    Jesper M. Pedersen

  6. #16
    Registriert seit
    05.09.2011
    Beiträge
    176
    Danke
    43
    Erhielt 28 Danke für 20 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Doch, das hat Harald genauso aufgeschrieben.
    Der Sinn ist tatsächlich, den Inhalt des MW200 in den Speicher zu schreiben und sich zu merken, nicht die geflankten Bits.

    Harald
    Ok dann wird wohl der Befehl "U <> 0" dafür verantwortlich sein das hier eine Flankenerkennung bemerkt wird. In deiner FAQ steht der Code in AWL anders geschrieben und den dortigen Code find ich auf Anhieb ersichtlich! Sorry meinerseits spirit!

  7. #17
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.192
    Danke
    925
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Zitat Zitat von nutellahase Beitrag anzeigen
    Ok dann wird wohl der Befehl "U <> 0" dafür verantwortlich sein das hier eine Flankenerkennung bemerkt wird
    korrekt
    "UW" und danach "U <> 0"

    Jo, die FAQ sollte verständlich sein und den Vergleich zu FP/FN bieten.
    Die Programmsequenz für spirit habe ich optimiert (zwar etwas kürzer, aber eben nicht mehr ganz so verständlich), weil spirit die einzelnen Flankenbits nicht braucht sondern nur ein "Oder über alle Bits".

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    nutellahase (22.05.2014)

  9. #18
    Registriert seit
    05.09.2011
    Beiträge
    176
    Danke
    43
    Erhielt 28 Danke für 20 Beiträge

    Standard

    Danke Harald!

    Kannst du mir bitte noch eine Frage beantworten?

    Ich habe kürzlich ein Thread zum Thema Statuswort aufgemacht.

    Code:
    U <>0

    Dieser Befehl setzt ja die Erstabfrage nicht zurück (eg. logisch), d.h. wenn vor der Abfrage des Statuswortes das VKE nicht begrenzt wurde (z.B. durch Unachtsamkeit) kann es u.U. sein dass dann der Setzbefehl nicht funktioniert? Als Beispiel:

    Code:
    U "VKE 0"
    L     #speicher
    INVI  
    L     MW   200
    T     #speicher
    UW    
    U     <>0
    S     M     14.7
    Nach dem Setzbefehl erfolgt dann wieder eine Erstabfrage.

    mfg

  10. #19
    Registriert seit
    06.02.2012
    Beiträge
    102
    Danke
    4
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Ein Sinnvoller Einsatz von TEMP Variablen, welchen Larry bestimmt gemeint hat.
    Code:
    L ACTUAL_WERT
    L PROZENT
    +I
    T TEMP_WERT
    
    L ACTUAL_WERT
    L PROZENT_2
    +I
    T TEMP_WERT_2
    
    L TEMP_WERT
    L TEMP_WERT_2
    T OUT
    Dafür sind die Temp Variablen gedacht um in ein und demselben Baustein einen Zwischenspeicher zu generieren.

  11. #20
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.192
    Danke
    925
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ja, das ist genauso wie bei den "normalen" U-Befehlen. Wenn vorher keine VKE-Begrenzung war dann wird das vorher anstehende VKE mitverknüpft.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 11.03.2014, 10:04
  2. Frage zu Temp-Variablen...
    Von spirit im Forum Simatic
    Antworten: 66
    Letzter Beitrag: 07.02.2013, 12:14
  3. [B&R AS] Verständnisfrage Variablen
    Von b0zzen im Forum Sonstige Steuerungen
    Antworten: 2
    Letzter Beitrag: 29.09.2010, 20:52
  4. Temp Variablen
    Von centrox im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 23.02.2009, 16:05
  5. IN Variablen nach TEMP
    Von neuer_user im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 06.10.2006, 16:26

Lesezeichen

Berechtigungen

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