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

Ergebnis 1 bis 9 von 9

Thema: Deklarieren von temporären Variablen unter Step 7 5.5

  1. #1
    Registriert seit
    05.03.2014
    Ort
    D - 74074 Heilbronn
    Beiträge
    4
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen!

    Ich bin noch ganz am Anfang meiner Programmiererkarriere, habe jetzt ein Problem bei meinen Hausaufgaben.
    Ich nutze Siemens Step 7 5.5 SP3 auf Win7Pro 32BIT, habe damit schon ein paar Aufgaben gelöst. Nun hatte ich eine Aufgabe soweit auch schon fertig, in der es darum geht den FB R_Trig nachzubauen, wozu eine temporäre Variable genutzt werden muss. Im ersten Anlauf hatte ich durch Zufall den Reiter mit der Möglichkeit die Variable zu setzen, danach habe ich das ganze Projekt nochmals neu erstellen wollen, schaffe es aber nicht mehr die temporäre Variable zu deklarieren.

    Kann mir bitte jemand sagen, wie ich an den Deklarationsteil in Step 7 (Umgebung\Schnittstelle\TEMP) herankomme? (Ein paar Screenshots wären schön.)
    Ich habe sämtliche Menüs, Dokus und im Netz zu findende Beiträge abgesucht, konnte aber nur Angaben zu älteren Step 7 Versionen finden, die auch nicht die Herangehensweise für die temporären Variablen erklärten.

    Vielen Dank im Voraus für Eure Hilfe...
    Zitieren Zitieren Deklarieren von temporären Variablen unter Step 7 5.5  

  2. #2
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.572
    Danke
    63
    Erhielt 259 Danke für 219 Beiträge

    Standard

    Die Deklaration befindet sich quasi "oberhalb" des Bereichs für den Programmcode. Platziere mal den Mauszeiger ganz oben auf den "Rand" des Codefensters. Dann zieh den Rand nach unten.
    Aber Vorsicht! R_TRIG und TEMP klingt so, als würdest Du in eine Falle stolpern. TEMP-Variablen sind nicht geeignet, weil sie den Wert nicht speichern können.
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

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

    IchhabdamalneFrage (06.03.2014)

  4. #3
    Registriert seit
    05.03.2014
    Ort
    D - 74074 Heilbronn
    Beiträge
    4
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Tigerente1974!

    Vielen Dank erst einmal für Deine Hilfe, auf das Herunterziehen der Leiste wäre ich selbst nicht drauf gekommen. Mit dem Tip hast Du mir sehr geholfen, denn über den Zugang zu diesen Einstellungen findet man keine Doku. Da hätte Siemens die Optik mal etwas besser gestalten können.
    Zu der Warnung bezüglich der temporären Variablen kann ich Dir auch noch etwas zurückgeben. Bei mir wird die Verwendung einer temporären Variablen in der Aufgabenstellung aufgelistet. Dies aber in Zusammenhang mit der Nutzung des OB31, der lt. Aufgabe einen festen Zyklus von einer Sekunde hat. Die Angabe stimmt zwar nicht, bei mir wurden dafür 2000 ms angezeigt, aber der feste Zyklus ermöglicht für diese kleine Lernaufgabe die Auswertung einer steigenden Flanke. Es funktioniert gut, so lange der Eingangspuls auch lang genug ist. Einen kurzen Wisch am Eingang registriert die Funktion jedenfalls nicht.
    Das Bildungsinstitut, bei dem ich mein Fernstudium absolviere, sagt jedoch auch schon, daß die Aufgaben nicht unbedingt praxisnah sind.
    Ich selbst bin beruflich als Inbetriebnehmer für Industrieanlagen unterwegs, derartige Lösungen mit Zykluszeiten von 2 Sekunden wären für uns gar nicht akzeptabel, da in zwei Sekunden schon zuviel passiert.

    Soweit noch ein Mal: Vielen Dank!!!

    Wünsche Dir immer korrekt gestzte Bits...

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

    Standard

    Zu der Warnung bezüglich der temporären Variablen kann ich Dir auch noch etwas zurückgeben. Bei mir wird die Verwendung einer temporären Variablen in der Aufgabenstellung aufgelistet
    Es muss ein fehler bei der Aufgabesteller sein. Er meint vielleicht ein "Zwischenvariabel" oder sowas, nicht ein TEMP Variabel.
    Ein temporäre (TEMP) Variabel kann absolut nicht verwendet werden um ein Flankenauswertung zu machen.

    Obwohl es scheint zu funktionieren, dann ist es sicherlich nur weil das Anwenderprogram sehr einfach ist.
    Das Programspeicher, wo die TEMP Variabeln geschrieben sind, wird in dein Fall nicht von andere Programbausteine überschrieben. Vielleicht gibt es nur OB1 und noch ein Baustein. Auf den Grund funktioniert es zufällig in diesen Fall. Aber in ein 'richtigen' Program wurde es nicht funktionieren.
    Du musst entweder ein STAT Variabel in den Baustein deklarieren (wenn FB), oder ein freien DB oder Merker verwenden (wenn FC oder OB).
    Jesper M. Pedersen

  6. #5
    Registriert seit
    11.03.2011
    Beiträge
    384
    Danke
    32
    Erhielt 80 Danke für 69 Beiträge

    Standard

    Bei TEMP-Variablen ist der Inhalt zufällig, wenn der Baustein aufgerufen wird. Daher sollte der erste Zugriff auf eine TEMP-Variablen immer schreibend erfolgen.

  7. #6
    Registriert seit
    05.03.2014
    Ort
    D - 74074 Heilbronn
    Beiträge
    4
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Die Aufgabe ist schon korrekt gestellt, sie dient eben nur der Schulung im Umgang mit den Programmierwerkzeugen.
    Wie bereits erwähnt muss für die kleine Funktion der OB31 verwendet werden, da er eine hohe feste Zykluszeit von 2 Sekunden hat. Würde man die Funktion mit dem Standard OB1 programmieren, dann würde man nie das Setzen des Ausganges sehen können. Es ist nur eine Spielerei für den Anfang, in der Praxis nicht verwendbar.

    Man programmiert zwei Netzwerke, im ersten Netzwerk wird der Eingang "IN" mit der Negierung der TEMP-Variablen "IN_OLD" AND-verknüpft und damit der Ausgang "OUT" gebildet. Im zweiten Netzwerk wird der Eingang "IN" mit sich selbst AND-verknüpft und das Ergebnis der TEMP-Variablen "IN_OLD" zugewiesen.

    In der Simulation muss man den Eingang "IN" mindestens für einen halben Zyklus high setzen, damit der Ausgang "OUT" für einen Zyklus des OB31 high wird. Lässt man den Eingang "IN" für längere Zeit high, so sieht man, dass für einen Zyklus der Ausgang "OUT" gesetzt wird und dann wieder auf low zurückfällt.
    Das klappt nur durch die langsame Abarbeitung.

    Wie gesagt: Ist nur eine Spielerei zu Schulungszwecken...

  8. #7
    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 IchhabdamalneFrage Beitrag anzeigen
    Man programmiert zwei Netzwerke, im ersten Netzwerk wird der Eingang "IN" mit der Negierung der TEMP-Variablen "IN_OLD" AND-verknüpft und damit der Ausgang "OUT" gebildet. Im zweiten Netzwerk wird der Eingang "IN" mit sich selbst AND-verknüpft und das Ergebnis der TEMP-Variablen "IN_OLD" zugewiesen.

    ...

    Das klappt nur durch die langsame Abarbeitung.
    Aber auch bei langsamer Abarbeitung im OB31 ist nicht sicher gestellt, das die Zuweisung für "IN_OLD" im nächsten Zyklus noch gültig ist!
    (Der OB verlängert nur die Sichtbarkeit der Flanke. Er verändert aber nicht das Verhalten der Variablen.)

    Wenn sonst weiter nichts programmiert ist, kann das offensichtlich klappen. Das ist jedoch reiner Zufall! Mit Beendigung des Bausteins, in dem die Temp-Variable deklariert ist (hier der OB31) wird der Speicherplatz für die Temp-Variable wieder zur allgemeinen Verwendung für alle anderen Bausteine freigegeben. Wenn man Glück hat, verwendet jedoch kein anderer Baustein diesen Speicherplatz, so dass er beim nächsten Aufruf des Bausteins noch seinen Inhalt hat.

    Jedoch hat man nicht immer Glück im Leben.

    Deshalb finde auch ich es keinesfalls korrekt, so eine Programmierweise auch noch zu lehren. Nicht mal als schlechtes Beispiel würde ich das zeigen.

    Wenn Du hier mal die Suche bemühst, wirst Du feststellen, das sich gefühlt die Hälfte der Threads genau um dieses Problem der temporären Variablen dreht. Vergiss also lieber diesen Sch... und gewöhn' Dir gleich die richtige Verwendung von Variablen an.


    In diesem Fall wäre z.B. eine globale Variable für IN_OLD angebracht.

  9. #8
    Registriert seit
    05.03.2014
    Ort
    D - 74074 Heilbronn
    Beiträge
    4
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Hucki!

    Zum einen ging es mir bei meiner Fragestellung hier nicht um das Thema TEMP-Variablen und ob und wie man damit sinnvoll programmiert, sondern darum eine Antwort darauf zu erhalten, wie ich diese Variable deklarieren kann, da bei mir im Step7 das Fenster dazu nicht zu sehen war.
    Zum anderen habe ich die anderen Forenbeiträge zum Thema TEMP-Variablen bei meiner Suche schon gelesen. Was für den Einsatz im Feld, bzw. der Programmierung von Maschinen, an denen eventuell auch Menschenleben hängen können, richtig ist, das hätte mir aber nicht dabei geholfen einer klaren Aufgabenstellung nachzukommen, die die Verwendung einer TEMP-Variablen vorsah. Die Aufgabe ist entsprechend den Vorgaben korrekt gelöst.

    Ich habe mit meinem Fernlehrgang erst begonnen, gewöhne mich so langsam an die Tools wie Step7, TIA-Portal und CoDeSys. Zum Lernprozess sollten dann meiner Meinung nach auch solche nicht praxisgerechten Dinge gehören.
    Es nützt nichts, von einem System nur zu lernen, wie man es richtig bedient, man muss auch lernen, wie man es nicht bedienen sollte.
    Wenn es soetwas wie die TEMP-Variablen gibt, dann muss man auch lernen, wozu sie da sind, und wie man mit ihnen umgeht oder eben auch nicht.

    Aber trotzdem vielen Dank für Deine Einwände



    Meine hier gestellte Frage wurde korrekt und ausreichend von Tigerente1974 beantwortet.
    Wie idealerweise mit kurzfristig zu speichernden Werten umzugehen ist, dass wird in vielen anderen Forenbeiträgen behandelt und sollte an dieser Stelle nicht zu weiteren Diskussionen führen.

  10. #9
    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
    Der Vorwurf geht auch nicht an Dich, sondern an den Unterricht der Fernschule.
    Ich find' das mehr als fahrlässig. Auch wenn der Hauptsinn das Erstellen und Verwenden lokaler Variablen ist, gibt es dafür sicher auch fachlich richtige Aufgaben. Du hast den Fehler durch Belesen erkannt, aber wieviele Schüler vor und nach Dir übernehmen das so in ihr Grundwissen?

    Zitat Zitat von IchhabdamalneFrage Beitrag anzeigen
    Die Aufgabe ist schon korrekt gestellt, ...
    Und an Deiner Stelle würde ich beim Abgeben der Aufgabe auch darauf hinweisen, das und warum das Verwenden der Temp-Variable für diese Aufgabe eben nicht korrekt ist.



    Zitat Zitat von IchhabdamalneFrage Beitrag anzeigen
    Meine hier gestellte Frage wurde korrekt und ausreichend von Tigerente1974 beantwortet.
    Wie idealerweise mit kurzfristig zu speichernden Werten umzugehen ist, dass wird in vielen anderen Forenbeiträgen behandelt und sollte an dieser Stelle nicht zu weiteren Diskussionen führen.
    Und weil Dein Problem bereits mit der ersten Antwort gelöst wurde und das auch andere Suchende so nachvollziehen können, können wir hier im Anschluss auch darauf hinweisen, dass - und diskutieren, warum - ein Lehrinstitut solche fachlich inkorrekten Aufgaben verwendet.

Ähnliche Themen

  1. TIA Variablen Deklarieren TIA V12 SP1
    Von Rauchegger im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 18.09.2013, 22:02
  2. Step 7 Übertragen von Temporären Variablen des OB86
    Von CZach001 im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 22.04.2013, 12:42
  3. TRysim - kann keine Variablen deklarieren
    Von alb im Forum PC- und Netzwerktechnik
    Antworten: 2
    Letzter Beitrag: 16.08.2011, 09:15
  4. PC Worx Globale Variablen Deklarieren
    Von salbeibombe im Forum Sonstige Steuerungen
    Antworten: 1
    Letzter Beitrag: 19.02.2011, 18:00
  5. Antworten: 6
    Letzter Beitrag: 15.06.2005, 11:47

Lesezeichen

Berechtigungen

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