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

Seite 5 von 5 ErsteErste ... 345
Ergebnis 41 bis 48 von 48

Thema: Nie mehr als zwei Ausgänge setzen können.

  1. #41
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.619
    Danke
    776
    Erhielt 646 Danke für 492 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von JesperMP Beitrag anzeigen
    Weil du so kundig bist, weist du ob man auch globale Konstanten deklarieren kann ?
    Soweit ich weiss, geht das nur in TIA. Dort ist das dann übrigens auch die einzige Möglichkeit Konstanten zu definieren.
    Konstanten in Bausteinen gibt es da dann nicht mehr.

    mfG René

  2. #42
    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 vollmi Beitrag anzeigen
    Soweit ich weiss, geht das nur in TIA. Dort ist das dann übrigens auch die einzige Möglichkeit Konstanten zu definieren.
    Konstanten in Bausteinen gibt es da dann nicht mehr.
    Da könnte man ja noch mit leben, wenn man trotzdem die Arrays damit deklarieren könnte. Geht aber leider nicht.

  3. #43
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.624
    Danke
    377
    Erhielt 801 Danke für 642 Beiträge

    Standard

    Danke hucki für den Link. Diesen Anleitung scheint besser zu sein als der Online-Hilfe.

    Eigentlich gefällt es mir besser mit globalen Konstanten.
    //
    Da könnte man ja noch mit leben, wenn man trotzdem die Arrays damit deklarieren könnte. Geht aber leider nicht.
    Argh ! Es ist genau dort wo es den grössten Anwendung hätte. Ein Schritt vor und zwei zurück.
    Geändert von JesperMP (10.01.2014 um 16:20 Uhr)
    Jesper M. Pedersen

  4. #44
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.619
    Danke
    776
    Erhielt 646 Danke für 492 Beiträge

    Standard

    Zitat Zitat von hucki Beitrag anzeigen
    Da könnte man ja noch mit leben, wenn man trotzdem die Arrays damit deklarieren könnte. Geht aber leider nicht.
    Ehrlichgesagt hab ich ein Array noch nie als Konstante gebraucht. Wie muss man sich dessen Anwendung vorstellen?

    Ich persönlich ziehe es ausserdem vor Konstanten im Baustein zu haben. Ich will Bausteine von Projekt zu Projekt kopieren können ohne mich noch um externe Variabletabellen kümmern zu müssen.

    Ich mache konstanten mittlerweile in den Temp der Schnittstelle und weise ihnen konstanten zu Beginn des Bausteins zu.

    mfG René

  5. #45
    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 vollmi Beitrag anzeigen
    Ehrlichgesagt hab ich ein Array noch nie als Konstante gebraucht. Wie muss man sich dessen Anwendung vorstellen?
    Hier im Thread haben wir ja gerade ein sehr gutes Beispiel dafür:
    Zitat Zitat von hucki Beitrag anzeigen
    ...
    Code:
    FUNCTION_BLOCK "X_aus_N"
    
    CONST
        N:=  5;                                                                 // Anzahl Ein-/Ausgänge
        XS:= 2;                                                                 // Standard-Anzahl max. eingeschalteter Ausgänge
    END_CONST
    
    VAR_INPUT
        IN:     ARRAY [1 .. N] OF BOOL;                                         // Neuer Zustand der Eingänge
        X:      INT;                                                            // Anzahl max. eingeschalteter Ausgänge
    END_VAR
    
    VAR_OUTPUT
        OUT:    ARRAY [1 .. N] OF BOOL;                                         // Ausgänge
    END_VAR
    
    VAR
        IN_OLD: ARRAY [1 .. N] OF BOOL;                                         // letzter Zustand der Eingänge
        ORDER:  ARRAY [1 .. N] OF INT;                                          // Speicher für Einschaltreihenfolge
    END_VAR
    ...
    ...
    Neben den ganzen Schleifen im Programm hängen auch 4 Arraygrößen von der Anzahl der zu verwendenden Ein-/Ausgänge ab. Da war es bei Classic wirklich toll, die Konstanten noch vor den Variablen im Baustein festlegen zu können. Und das ist ja nur ein kleiner Baustein (vor allem, wenn ich's mit dem Aufwand bei der LOGO! vergleiche).

    Auch die Spielfeldgröße bei "4 gewinnt" war ausschlaggebend für die nötige Größe der Arrays und den dann im Programm folgenden Schleifen:
    Zitat Zitat von hucki Beitrag anzeigen
    PS: Es gehen damit auch solch nette Sachen (aus der "4 gewinnt"-Sache):
    Code:
    CONST
        Spalten:= 7;                                                                    // Anzahl Spalten
        Zeilen := 6;                                                                    // Anzahl Zeilen
    END_CONST
    
    VAR
        SPIELFELD:   ARRAY [1 .. Spalten, 1 .. Zeilen] OF INT;                          // Spielfeld               (7 Spalten,  6 Zeilen)
        SPIELZUEGE:  ARRAY [1 .. Spalten * Zeilen, 0 .. 3] OF INT;                      // Speicher Spielzüge (max. 7 Spalten x 6 Zeilen = 42 Spielzüge,
    ...
    Man kann also die nötigen Arraygrößen bei Classic sogar mit mehreren Konstanten berechnen.


    Ohne die Konstanten würde so bei der Arraygröße der Spielzüge einfach eine 42 stehen, von der man nicht auf den ersten Blick die Herkunft und somit bei Veränderung der Spielfeldgröße die Notwendigkeit der Anpassung erkennt.


    PS: Entsprechendes Kommentieren hilft natürlich.



    Zitat Zitat von vollmi Beitrag anzeigen
    Ich persönlich ziehe es ausserdem vor Konstanten im Baustein zu haben. Ich will Bausteine von Projekt zu Projekt kopieren können ohne mich noch um externe Variabletabellen kümmern zu müssen.

    Wobei dieser Thread wieder auch ein Beispiel für globale Konstanten ist, da in meiner Variante die Anzahl der zu verwendenden Ein-/Ausgänge auf beide FBs Einfluss hat. Am Besten wäre also, wenn man beide Möglichkeiten hätte, wie es bei den Variablen ja auch möglich ist.

    Aber gerade für das Kopieren von Projekt zu Projekt sind die lokalen Konstanten bei Classic ein riesen Vorteil, wenn nach dem Kopieren Anpassungen gemacht werden müssen, wie das Beispiel Spielfeldgröße bei "4 gewinnt". Neue Anzahl Zeilen und Spalten festlegen und alles davon Abhängige, einschließlich Arraygrößen, sind dafür passend.

    Allerdings war der Hauptnutzen der Konstanten wirklich für die Werte, die zum Zeitpunkt der Übersetzung feststehen mussten, wie eben die Arraygrößen (und davon abhängige Sachen, wie oben die Schleifen).




    Zitat Zitat von vollmi Beitrag anzeigen
    Ich mache konstanten mittlerweile in den Temp der Schnittstelle und weise ihnen konstanten zu Beginn des Bausteins zu.
    Da man die (globalen) Konstanten eh' nicht für die Array-Deklaration nutzen kann, ist das in meinen Augen auf jeden Fall eine gute Alternative. Das wäre eine Art von "Konstante", die ich bkizilkaya für TIA in Post #35 empfohlen hatte.
    Alternativ verwende ich Input-Variablen mit Standardwert.

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

    vollmi (10.01.2014)

  7. #46
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.619
    Danke
    776
    Erhielt 646 Danke für 492 Beiträge

    Standard

    Zitat Zitat von hucki Beitrag anzeigen
    Auch die Spielfeldgröße bei "4 gewinnt" war ausschlaggebend für die nötige Größe der Arrays und den dann im Programm folgenden Schleifen:
    Man kann also die nötigen Arraygrößen bei Classic sogar mit mehreren Konstanten berechnen.
    Ahh jetzt versteh ich. Ja das ist natürlich sinnvoll. Ich hab mich grad gefragt was man mit einem array aus z.B. 20 konstant gleich vorgegebenen Werten anfangen will

    mfG René

  8. #47
    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 vollmi Beitrag anzeigen
    Ahh jetzt versteh ich. Ja das ist natürlich sinnvoll. Ich hab mich grad gefragt was man mit einem array aus z.B. 20 konstant gleich vorgegebenen Werten anfangen will
    Und ich verstehe jetzt erst den eigentlichen Sinn Deiner Nachfrage:
    Zitat Zitat von vollmi Beitrag anzeigen
    Ehrlichgesagt hab ich ein Array noch nie als Konstante gebraucht.
    Klassisches Aneinandervorbeireden.

    Also für alle anderen, die es noch interessert und denen das neu ist:
    Die Konstante wird für die Arraygröße(n) bei der Deklaration verwendet (nicht für den Arrayinhalt).

    Da die Arraygröße zum Zeitpunkt des Übersetzens feststehen muss, können Variablen bis dato dafür nicht verwendet werden.
    Und genau dieses Problem war Inhalt dieses Threads: Array variabler Länge an FB übergeben (TIA 12, SCL, S7-1200 & S7-1500).
    Geändert von hucki (10.01.2014 um 21:21 Uhr) Grund: Smiley und Ergänzung eingefügt

  9. #48
    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
    Um wieder zum Thema zurück zu kehren:
    Zitat Zitat von bkizilkaya Beitrag anzeigen
    ...
    Code:
    ...
    // reseten
    IF "reset" THEN
    FOR #k := 1 TO 5 BY 1 DO
      #ORDER[#k] := 0;
    END_FOR;
    END_IF;
    Wieviel Sinn macht denn bei dieser Anwendung ein Reset?

    Wenn alle Schalter wieder aus sind, ist auch das Array ORDER wieder genullt.
    Sind noch Schalter beim RESET an, müssen sie eh' noch ausgeschaltet werden, um eine neue positive Flanke zu erkennen.

    Oder war das nur für die Fehlversuche beim Programmieren gedacht?

Ähnliche Themen

  1. Step 5 Ausgänge setzen/rücksetzen
    Von hoffi im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 07.01.2014, 12:22
  2. Antworten: 5
    Letzter Beitrag: 08.10.2013, 09:47
  3. Ausgänge im EG können nicht angesteuert werden
    Von antares24 im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 07.05.2012, 20:27
  4. Antworten: 5
    Letzter Beitrag: 09.03.2010, 08:20
  5. Antworten: 10
    Letzter Beitrag: 28.04.2008, 22:17

Lesezeichen

Berechtigungen

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