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

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

Thema: Zuweisung von werten auf Out-Variablen

  1. #11
    Registriert seit
    29.09.2008
    Ort
    Land der Frühaufsteher
    Beiträge
    104
    Danke
    6
    Erhielt 22 Danke für 21 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @forendiva

    Zitat Zitat von forendiva Beitrag anzeigen
    und jetzt gehst du zu deinem chef und sagst, dass du ganz dringend einen leergang brauchst!
    Doch nicht so böse, jeder hat mal angefangen.

    MfG
    FrankW

  2. #12
    Registriert seit
    28.03.2008
    Beiträge
    142
    Danke
    19
    Erhielt 25 Danke für 25 Beiträge

    Standard

    Zitat Zitat von Gerhard K Beitrag anzeigen
    du hast im OB1 die tempvariable #dummyint definiert und beschreibst sie durch dein out2 mit 2.dann steht die 2 natürlich da drinnen.egal wo du sie anlegst.wie schon oben beschrieben.nimm drei verschiedene und es passt.
    Ja und setzte in den FC3 vor Deinen Code einfach ein:

    Code:
    L   0
    T   #Out1
    T   #Out2
    T   #Out3

  3. #13
    Avatar von blasterbock
    blasterbock ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.07.2007
    Ort
    Burbach
    Beiträge
    366
    Danke
    81
    Erhielt 34 Danke für 32 Beiträge

    Standard

    Ich habe in einem älteren Programm einen Multiplexer gefunden, der auf die gezeigte Art arbeitet. Ich sehe, dass es schon seit Jahren funktioniert.

    Aber darum geht es nicht.

    Das Compilat im Speicher kann nicht wissen, welche der Ausgangsvariablen es wann schreiben soll. Es existiert also ein fester Programmcode mit ebenso festen Zuweisungen. Auch wenn ich die Variable out3 nicht zuweise, wird trotzdem beim Aufruf des FC ein Wort im Stack für diesen Wert reserviert sein, mit einem beliebigen Inhalt.

    Wenn ich die Variable out3 im aufgerufenen Baustein explizit auf 0 setze, passiert das gleiche.

    @fd
    Kann ich den Lehrgang bei Dir machen ?

    @Boxhead
    Habe Deinen Vorschlag eben erst gesehen.
    Mein neues Beispiel macht genau Deinen Vorschlag.
    Das heißt out3 ist eine definierte Größe und müsste am Ausgang des FC als letzte Zuweisung der dummyint eine 0 annehmen.
    Angehängte Grafiken Angehängte Grafiken
    Geändert von blasterbock (02.12.2008 um 09:58 Uhr)
    Lieber Feste feiern, als feste arbeiten.

  4. #14
    Registriert seit
    29.09.2008
    Ort
    Land der Frühaufsteher
    Beiträge
    104
    Danke
    6
    Erhielt 22 Danke für 21 Beiträge

    Standard

    Geht es dir um eine Lösung oder um eine Diskussion.

    Zur Lösung solltest du die Hinweise annehmen und bei Diskussion: -> Mach den Lehrgang bei fd
    MfG
    FrankW

    ....Wer lesen kann ist klar im Vorteil.....

  5. #15
    Registriert seit
    01.11.2007
    Beiträge
    1.239
    Danke
    91
    Erhielt 407 Danke für 368 Beiträge

    Standard

    Ich bin auch an dem Lehrgang interessiert, denn ich teile die Verwunderung von blasterblock.
    Wenn alle OUT-Variablen einen definierten Wert im FC zugewiesen bekommen, würde ich erwarten, dass der dummyint nach dem Aufruf den Wert aus OUT3 enthält, weil ich denke, dass der als letzter aus dem FC "rauskommt".

    Grüße von HaDi

  6. Folgender Benutzer sagt Danke zu HaDi für den nützlichen Beitrag:

    blasterbock (02.12.2008)

  7. #16
    Avatar von blasterbock
    blasterbock ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.07.2007
    Ort
    Burbach
    Beiträge
    366
    Danke
    81
    Erhielt 34 Danke für 32 Beiträge

    Standard

    @FrankW
    Danke für Deine Hilfe gegenüber fd

    Mir geht es nicht um eine Diskussion.
    Bei einer SPS ist die letzte Zuweisung einer Variablen die gültige Zuweisung.
    Warum nicht bei Aufruf eines FC ?

    Wenn ich hinter das Netzwerk des letzten Beispiels an das Programmende ein

    L 0
    T out3

    schreibe, wird out3 auch am Augang richtig auf dummyint zugewiesen.
    Bei der Zuweisung im Netzwerk 1 funktioniert das nicht.

    @HaDi
    Wann machen wir den Lehrgang ?
    Lieber Feste feiern, als feste arbeiten.

  8. #17
    Registriert seit
    29.09.2008
    Ort
    Land der Frühaufsteher
    Beiträge
    104
    Danke
    6
    Erhielt 22 Danke für 21 Beiträge

    Standard

    "...Wichtiger Unterschied bei Ausgangsparametern von FC und FB
    In Funktionsbausteinen (FB) wird beim Zugriff auf Parameter die Kopie des
    Aktualparameters im Instanz-DB verwendet. Wird beim Aufruf eines FB ein
    Eingangsparameter nicht übergegeben bzw. im Baustein ein Ausgangsparameter
    nicht beschrieben, so werden die im Instanz-DB noch vorhandenen älteren Werte
    weiter verwendet (Instanz-DB = Gedächtnis des FB).
    Funktionen (FC) haben kein Gedächtnis. Die Versorgung der Formalparameter ist
    deshalb im Gegensatz zum FB nicht optional, sondern zwingend erforderlich. Der
    Zugriff auf FC-Parameter erfolgt über Adressen (bereichsübergreifende Zeiger).
    Wird als Aktualparameter ein Operand aus dem Bereich Daten (Datenbaustein)
    oder eine lokale Variable des rufenden Bausteins verwendet, wird für die
    Parameterübergabe eine Kopie des Aktualparameters in den Lokaldaten des
    rufenden Bausteins temporär gespeichert.
    Achtung
    Wird in einem solchen Fall ein OUTPUT Parmeter in einem FC nicht beschrieben,
    können die ausgegebenen Werte zufällig sein!
    Der für die Kopie bereitgestellte Bereich in den Lokaldaten des rufenden Bausteins
    wird mangels Zuweisung an den OUTPUT Parmeter nicht beschrieben und bleibt
    somit unverändert. Damit wird zufällig der in diesem Bereich stehende Wert
    ausgegeben, da Lokaldaten nicht automatisch mit z. B. 0 vorbelegt sind.
    Beachten Sie deshalb Folgendes:
    Initialisieren Sie wenn möglich OUTPUT Parameter.

    Setze- und Rücksetze-Befehle sind VKE-abhängig. Wird mit diesen Befehlen
    der Wert eines OUTPUT Parameters ermittelt, wird bei VKE = 0 kein Wert
    gebildet.

    Achten Sie darauf, dass - unabhängig von allen möglichen Programmpfaden
    innerhalb des Bausteins - die OUTPUT-Parameter auf jeden Fall beschrieben
    werden. Beachten Sie hierbei insbesondere Sprungbefehle sowie den ENOAusgang
    in KOP und FUP. Denken Sie auch an BEB und die Wirkung der
    MCR-Befehle.

    Hinweis
    Bei OUTPUT-Parametern eines FB bzw. INOUT-Parametern eines FC und FB
    können die ausgegebenen Werte zwar nicht zufällig sein, da hier ohne
    Beschreibung des Parameters der alte Ausgangswert bzw. der Eingangswert als
    Ausgangswert erhalten bleibt. Dennoch sollten Sie auch hier die oben gegebenen
    Hinweise beachten, um nicht unbeabsichtigt "alte" Werte weiter zu verarbeiten...."

    kleiner Auszug aus "Programmieren mit Step7" --> Outparameter setzen, basta!
    MfG
    FrankW

    ....Wer lesen kann ist klar im Vorteil.....

  9. #18
    Registriert seit
    08.10.2007
    Beiträge
    31
    Danke
    1
    Erhielt 5 Danke für 2 Beiträge

    Standard

    Kurze Lösung!

    Die FC Parameter werden als Zeiger übergeben. Daher zeigen Out1, out2 und out3 alle auf die gleiche Speicherzelle !!!!!
    Somit wird dummyInt mit dem letzten schreibzugriff auf eine der Variablen festgelegt.

    Siehe auch Text von FrankW wo die Zeiger erwähnt werden.

    Nebenbei sei der erwähnt, dass der Tonfall einiger Beiträge doch etwas daneben liegt!! Soll doch mal einer sagen, dass er der perfekte Programmierer
    ist. Wenn ich das mal von mir dachte, schlug zum Glück kurz danach die Maschine in die Wand ein und ich wuste direkt, dass ich doch nicht so perfekt bin!!
    Zitieren Zitieren Das ist doch alles nicht so schwer  

  10. Folgende 4 Benutzer sagen Danke zu WGertzen für den nützlichen Beitrag:

    blasterbock (02.12.2008),forendiva (02.12.2008),FrankW (02.12.2008),HaDi (02.12.2008)

  11. #19
    Registriert seit
    29.09.2008
    Ort
    Land der Frühaufsteher
    Beiträge
    104
    Danke
    6
    Erhielt 22 Danke für 21 Beiträge

    Standard

    Zitat Zitat von WGertzen Beitrag anzeigen
    Nebenbei sei der erwähnt, dass der Tonfall einiger Beiträge doch etwas daneben liegt!! Soll doch mal einer sagen, dass er der perfekte Programmierer
    ist. Wenn ich das mal von mir dachte, schlug zum Glück kurz danach die Maschine in die Wand ein und ich wuste direkt, dass ich doch nicht so perfekt bin!!
    OK, das Basta nehme ich zurück!
    MfG
    FrankW

    ....Wer lesen kann ist klar im Vorteil.....

  12. #20
    Registriert seit
    01.10.2007
    Ort
    Waiblingen
    Beiträge
    3.317
    Danke
    767
    Erhielt 536 Danke für 419 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ich glaube, über das hier geschilderte Phänomen bin ich auch schon mal gestolpert. Allerdings entzieht sich das meiner Alltagserfahrung, insbesondere, da ich praktisch ausschließlich FB in AWL mache ...

    Meine Idee: es handelt sich um einen Darstellungsfehler im Status. Die Variable #dummyint wird nur einmal gelesen und dann einmal richtig und zweimal falsch angezeigt. Ist die CPU auf Prozessbetrieb eingestellt?

    Derweil lese ich die gerade hinzugekommene Antwort von FrankW
    Outparameter setzen, basta!
    Hatten wir das nicht schon?
    @Boxhead
    Habe Deinen Vorschlag eben erst gesehen.
    Mein neues Beispiel macht genau Deinen Vorschlag.
    Das heißt out3 ist eine definierte Größe und müsste am Ausgang des FC als letzte Zuweisung der dummyint eine 0 annehmen.
    EDIT: während ich schrieb, hat WGertzen wohl schon gelöst ...
    Geändert von Perfektionist (02.12.2008 um 10:41 Uhr)

Ähnliche Themen

  1. bedingte Zuweisung im FUP?
    Von McNugget im Forum CODESYS und IEC61131
    Antworten: 21
    Letzter Beitrag: 26.11.2009, 11:16
  2. Ungültige Zuweisung, SCL
    Von petzi im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 18.05.2009, 13:55
  3. Zuweisung
    Von snowbda im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 03.12.2008, 15:11
  4. Zuweisung von Adressen
    Von buenne im Forum Simatic
    Antworten: 18
    Letzter Beitrag: 05.04.2007, 16:19
  5. Zuweisung von Hardware Eingängen
    Von chivas im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 19.10.2004, 16:35

Lesezeichen

Berechtigungen

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