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

Ergebnis 1 bis 9 von 9

Thema: FC (KOP): Temporäre Variablen initialisieren

  1. #1
    Kallemann Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo.

    Ich habe hier eine FC, in der eine temporäre Variable vom Typ Boolean deklariert ist. Von Zeit zu Zeit nimmt diese Variable beim Aufruf der Funktion den zufälligen Wert "True" an, was nicht passieren darf. Momentan behelfe ich mir damit, die Variable im ersten Netzwerk zurückzusetzen, wenn sie den Wert "True" hat, ich denke aber, dass das so nicht wirklich "richtig" ist. Ich verwende meistens SCL, da wär's einfach. Aber KOP

    Wie initialisiert man eigentlich temporäre Variablen in einer mit KOP geschriebenen FC?

    Vielen Dank für Eure Hilfe. VG, Carsten.
    Zitieren Zitieren Gelöst: FC (KOP): Temporäre Variablen initialisieren  

  2. "Oh mei ... wenn du mit den Temp-Var richtig umgehen würdest, so würde das was vielleicht zufällig von irgendwo drinnen steht schlicht irrelevant sein,
    weil korrekt umgehen ganz einfach nichts anderes heißt, wie IMMER (bei Verwendung der VAR) zuerst schreiben und danach lesen ... folglich ist auch vollkommen egal was vor dem Schreiben von irgendwo her vielleicht zufällig für Werte anliegen.
    Das ist in SCL übrigens präzise die selbe Problematik (ganz im Gegenteil durch die üblichen IF Then Konstruckte ist es eigentlich sogar noch einfacher "Fehler" zu machen).

    xMyTemp ist eine Bool-Var.

    U xMyTemp
    UN xMyTemp
    = xMyTemp //ist jetzt immer LOW

    O xMyTemp
    ON xMyTemp
    = xMyTemp //ist jetzt immher HIGH

    Jetzt einfach auf KOP umschalten und et voila.

    Mfg
    Manuel"


  3. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Hallo,
    du mußt einfach nur dafür sorgen, dass sie vor der ersten Verwendung definiert zugewiesen wird / worden ist.
    Das kann auch ein Rücksetzen im ersten Netzwerk sein - besser wäre aber ein zuweisen (also das, was in AWL dem = entspricht).
    So, wie du es beschreibst, würde ich sagen, dass mit der Variablen in dem FC nicht korrekt umgegangen wird ...

    Gruß
    Larry

  4. #3
    Kallemann Gast

    Standard

    Hallo.

    Irgendwo in der Siemens-Hilfe habe ich gelesen, dass temporäre Variablen immer initialisiert werden sollen, weil sie durchaus zufällige Werte annehmen können. Ich bin sicher, dass ich korrekt mit der Variablen in der FC umgehe.

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    besser wäre aber ein zuweisen (also das, was in AWL dem = entspricht).
    Ja, aber wie?

    VG Carsten

  5. #4
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.713
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard

    Zitat Zitat von Kallemann Beitrag anzeigen
    Ja, aber wie?
    In dem die Zuweisung wirklich in jedem Zyklus erfolgt.
    Wenn diese z.B. innerhalb eines IF..Then-Konstrukt steht, ist das in der Regel nicht gegeben. Das entspreche eher dem Setzen/Rücksetzen.
    PS: Du verwendest ja KOP statt SCL. Ich dachte anders herum.
    Dann ist es noch einfacher: Das entsprechende Netzwerk mit der Zuweisung (=) abschließen und das Netzwerk nicht überspringen.


    Wäre es eventuell möglich, den Code des FCs (als AWL-Text) zu posten? Dann ist es einfacher, konkret zu helfen.
    Geändert von hucki (27.10.2014 um 18:34 Uhr)

  6. #5
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.726
    Danke
    314
    Erhielt 1.519 Danke für 1.282 Beiträge

    Standard

    Oh mei ... wenn du mit den Temp-Var richtig umgehen würdest, so würde das was vielleicht zufällig von irgendwo drinnen steht schlicht irrelevant sein,
    weil korrekt umgehen ganz einfach nichts anderes heißt, wie IMMER (bei Verwendung der VAR) zuerst schreiben und danach lesen ... folglich ist auch vollkommen egal was vor dem Schreiben von irgendwo her vielleicht zufällig für Werte anliegen.
    Das ist in SCL übrigens präzise die selbe Problematik (ganz im Gegenteil durch die üblichen IF Then Konstruckte ist es eigentlich sogar noch einfacher "Fehler" zu machen).

    xMyTemp ist eine Bool-Var.

    U xMyTemp
    UN xMyTemp
    = xMyTemp //ist jetzt immer LOW

    O xMyTemp
    ON xMyTemp
    = xMyTemp //ist jetzt immher HIGH

    Jetzt einfach auf KOP umschalten und et voila.

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  7. #6
    Kallemann Gast

    Standard

    Es stellt sich jedesmal wieder als Fehler heraus in diesem Forum Fragen zu stellen.

  8. #7
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.726
    Danke
    314
    Erhielt 1.519 Danke für 1.282 Beiträge

    Standard

    Zitat Zitat von Kallemann Beitrag anzeigen
    Es stellt sich jedesmal wieder als Fehler heraus in diesem Forum Fragen zu stellen.
    Das würde ich jetzt ebenfalls ganz simpel mit "Kommt auf die Frage an" beantworten.

    Für dein beschriebenes Verhalten gibt es genau 3 Möglichkeiten, wobei du 2 davon vollständig selbst in der Hand hast, und bei einer hast du mit AWL rumgespielt und die Warnung ignoriert.

    1. Lesen vor Schreiben
    2. Nur Lesen, ohne Schreiben im konkreten Zyklus
    Streng genommen ist also 1/2 eigentlich das gleiche.
    3. In der AWL-Ansicht Temp-Var hinzufügen (deklarieren), obwohl KOP bzw. FUP bereits Temp-Var (Absolut) bei Bausteinaufrufen verwendet.

    Initialisieren in des Wortes eigentlichem Sinn ist nicht notwendig.

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  9. #8
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.713
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard

    Zitat Zitat von Kallemann Beitrag anzeigen
    Es stellt sich jedesmal wieder als Fehler heraus in diesem Forum Fragen zu stellen.


    Darf man fragen, wieso "jedesmal wieder"?
    Immerhin hast Du in der Vergangenheit auch "Danke" für die Antworten auf Deine Fragen verteilt.

  10. #9
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Kallemann Beitrag anzeigen
    Es stellt sich jedesmal wieder als Fehler heraus in diesem Forum Fragen zu stellen.
    Das mußt du mir bitte einmal genauer erklären ...
    Ich kann beim besten Willen an den gegebenen Antworten nichts ehrenrühriges erkennen - im Gegenteil : sie bezogen sich exakt auf deine Problemstellung.
    Du hast natürlich in einem Recht - du solltest hier im Forum keine Fragen stellen, wenn du die Antworten und die daraus resultierenden Vorschläge dann sowieso nicht hören willst ...

    Gruß
    Larry

Ähnliche Themen

  1. Temporäre Variablen im OB1
    Von BadTaste im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 21.03.2012, 20:26
  2. Variablen initialisieren
    Von thomassc im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 29.07.2010, 12:40
  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
  •