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

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 31

Thema: Bei einer Funktion mit Merkern oder über die Schnittstelle TEMP programmieren?

  1. #1
    Registriert seit
    02.11.2011
    Beiträge
    10
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen

    ich habe eine Funktion geschrieben um ein Display anzusteuern aber nun ist mir aufgefallen das ich alles mit Merkern gelöst habe.

    Wenn ich nun öfters diese Funktion in anderen FB's benutze überschneiden sich doch die Merker oder?

    Sollte ich also die Merker durch diese Temporalen Werte ersetzen die man in der Schnittstelle vorgeben kann oder gibts es keine Überschneidung.

    gruß Dirk
    Zitieren Zitieren Bei einer Funktion mit Merkern oder über die Schnittstelle TEMP programmieren?  

  2. #2
    Registriert seit
    26.05.2009
    Beiträge
    541
    Danke
    35
    Erhielt 78 Danke für 69 Beiträge

    Standard

    (Temp)oralen Werte


    Hast du einen FC oder FB benutzt?
    Über temporäre Variablen zu gehen ist schlecht.
    Bei FB´s würde ich dir die statischen Variablen (liegen dann in dem DB) empfehlen.
    Die temporären sind zu unsicher bzw. gehen gar nicht wie du dir das eventuell vorstellst.

    Oder du bleibst bei den Merkern. Das geht auch.

    Gruß wolder
    Wenn du denkst du denkst, dann denkst du nur, dass du denkst, denn beim Denken der Gedanken, kommt dir der Gedanke, dass das Denken der Gedanken ein gedankenloses Denken ist

  3. #3
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.626
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard

    Zitat Zitat von EDirk Beitrag anzeigen
    Wenn ich nun öfters diese Funktion in anderen FB's benutze überschneiden sich doch die Merker oder?
    Ja.
    Zitat Zitat von EDirk Beitrag anzeigen
    Sollte ich also die Merker durch diese Temporalen Werte ersetzen die man in der Schnittstelle vorgeben kann...
    Kommt darauf an: Du solltest dabei immer bedenken, dass die temporären Variablen nur innerhalb eines Aufrufs ihre Gültigkeit behalten und zugewiesen werden müssen, bevor man sie verknüpft, da sie sonst undefinierte Zustände haben, deswegen sind sie denkbar ungeeignet um irgendetwas von einem Zyklus / Aufruf in den nächsten mitzunehmen. Dies verdient besondere Beachtung bei SR-Gliedern und Flankenauswertungen, muss aber auch an vielen anderen Stellen bedacht werden.
    Du könntest aber auch einen FB verwenden und Deine Variable als STAT anstelle von TEMP deklarieren, dann werden sie im Instanzdatenbaustein abgelegt und stehen beim nächsten Aufruf mit dem selben IDB wieder zur Verfügung.
    Gruß
    Michael

  4. #4
    EDirk ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    02.11.2011
    Beiträge
    10
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Die Funktion habe ich in einen FC geschrieben und nun möchte ich diese Funktion mehrmals in den FB's verwenden.Aber wenn sich die Merker überschneiden gibt es ja Chaos.

    Was ergibt das dann für einen Sinn eine Funktion schreiben zu können wenn man sie dann nicht mehrmals benutzen kann?

    Es wäre ja nicht schlimm wenn der Baustein nach einmal aufrufen wieder alles vergisst.

    Die Funktion ist für eine Segmentanzeige die Analog angesteuert wird. Es wird also ein Realwert in BCD Code gewandelt und zum Display gegeben.

    Die Funktion (Display) muss schon mehrere Zyklen durchlaufen also habe ich da wohl doch ein Problem oder?
    Geändert von EDirk (21.11.2011 um 14:21 Uhr)

  5. #5
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.626
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard

    Zitat Zitat von EDirk Beitrag anzeigen
    ... Also würden mir doch die temporären Daten reichen oder?
    Kann ich Dir so genau nicht sagen.
    Gibt es irgendetwas in Deinem Baustein, was Du im nächsten Aufruf wieder brauchst?
    Wenn nicht, dann hast Du wahrscheinlicht recht.
    Du könntest es einfach ausprobieren: Mach eine Kopie von Deinem Baustein, bau ihn auf TEMP um, ruf ihn zweimal mit völlig unterschiedlichen Werten auf und schau Dir an ob er noch sauber arbeitet.
    Gruß
    Michael

  6. #6
    Registriert seit
    06.02.2009
    Beiträge
    28
    Danke
    3
    Erhielt 6 Danke für 3 Beiträge

    Standard

    Ja, wenn ein FC mehrmals aufgerufen wird, werden die Merker in diesem entsprechend mehrmals aufgerufen und geändert. Gilt auch für Timer/ Zähler.

    Weiterhin: In einem FC wird der Zustand der Temp- Variablen nicht gespeichert, sprich im nächsten Zyklus stehen dort undefinierte Werte. Nimmst du einen FB, dann werden die Temp- Variablen gespeichert, und zwar in den entsprechenden DB, der beim Aufruf des FB angegeben wird.

    Wie wäre es, wenn du den FC (oder FB) mit IN / Out- Variablen ansteuerst, sprich alle Eingangssignale des FC über IN-Variablen, alle Ausgangszustände über OUT- Variablen übergeben. Im FC dann nur Merker oder TEPM- Variablen für interne Signale verwenden. Dann sollte es keine Probleme geben.
    Ritterlicher Verfechter der nachvollziehbaren und übersichtlichen Programmierung

    >>> Das Problem steht zu 95% vor der Maschine

    Meine Umgebung (meistens): Win XP, S7 V5.4 SP5, 840D sl, Transline

  7. #7
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Zitat Zitat von EDirk Beitrag anzeigen
    Die Funktion habe ich in einen FC geschrieben und nun möchte ich diese Funktion mehrmals in den FB's verwenden.Aber wenn sich die Merker überschneiden gibt es ja Chaos.

    Was ergibt das dann für einen Sinn eine Funktion schreiben zu können wenn man sie dann nicht mehrmals benutzen kann?

    Es wäre ja nicht schlimm wenn der Baustein nach einmal aufrufen wieder alles vergisst.

    Die Funktion ist für eine Segmentanzeige die Analog angesteuert wird. Es wird also ein Realwert in BCD Code gewandelt und zum Display gegeben.

    Die Funktion (Display) muss schon mehrere Zyklen durchlaufen also habe ich da wohl doch ein Problem oder?
    Beispiel für einen FC: Berechnung eines Volumens aus Länge, Breite und Höhe...
    Werte vorn rein, hinten wieder raus und der Fall ist erledigt.

    Beispiel für einen FB: Stern-Dreieck-Anlauf:
    Start und Sternzeit vorn rein, Schütze hinten raus UND mittlerweile verstrichende Sternzeit im Instanz-DB merken weil man sie ja nächstes Mal wieder braucht.
    mfG Aventinus

  8. #8
    Registriert seit
    24.03.2009
    Beiträge
    1
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Du kannst ja vor der Bearbeitung deiner neuen Funktion die verwendeten Merker zuerst temporär speichern und nach der Bearbeitung die temporären Werte wieder auf die Merker zurückschreiben. Daann musst du an deinem Baustein nichts ändern.

  9. #9
    EDirk ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    02.11.2011
    Beiträge
    10
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ja In/Out benutze ich so das die Ein und Ausgänge Flexibel sind.
    Ich habe in der Funktion einen Zähler der bis 20 zählen muss . Zählt der dann normal durch oder fängt der immer dann wieder bei 0 an?

    Weil dann würde das Display nicht funktionieren.

    ---------------------------------------------------------------------------------------------------

    Werde sonst einfach die Funktion vom FC in einen FB packen und diesem dann bei jedem neuen Aufruf einen anderen DB zuordnen.
    Ist glaub ich auch eine Lösung
    Geändert von EDirk (21.11.2011 um 14:44 Uhr)

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Vielleicht noch eine "Entscheidungshilfe" ob FC oder FB:

    Für den FC muss man keinen IDB anlegen, dafür kann der FC aber auch nichts "speichern". Das Anlegen von IDB´s kann man mit Multiinstanzen etwas vereinfachen, ist aber irgendwie nicht jedermanns Sache.
    Soll die "Ausgangsvariable" mehrfach im Programm benutzt werden, ist es sinnvoll einen FC zu nehmen und eine globale Variable an die IN/OUT-Schnittstelle anzuschließen. Nachteil: Man muss bei jedem Aufruf des Bausteins eine Variable antragen, das kann schon mal in Schreibarbeit ausarten...

    Für den FB spricht ganz klar, dass er Werte über mehr als einen Zyklus "abspeichern" kann. Die beschriebene Variante eine Globalvariable an IN/OUT zu deklarieren geht natürlich auch, macht aber den Vorteil eines FB zunichte.

    Es kommt also im wesentlichen darauf an, ob:
    - die Variable mehrfach (in weiteren Bausteinen) gebraucht wird
    - die Variable länger als 1 Zyklus gespeichert werden muss.
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

Ähnliche Themen

  1. Antworten: 10
    Letzter Beitrag: 28.02.2011, 12:11
  2. Antworten: 6
    Letzter Beitrag: 05.07.2007, 21:59
  3. Steuerung einer Mühle-über SPS oder PC ?
    Von walterschuch im Forum Simatic
    Antworten: 38
    Letzter Beitrag: 01.04.2006, 14:49
  4. B & R über serielle Schnittstelle programmieren
    Von Kobold im Forum Sonstige Steuerungen
    Antworten: 12
    Letzter Beitrag: 18.11.2005, 12:49
  5. Programmieren einer S7 über Ethernet
    Von Balou im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 01.08.2004, 18:00

Lesezeichen

Berechtigungen

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