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

Ergebnis 1 bis 7 von 7

Thema: Ich habe da ein kleines Problem......! Die Zeit läuft!

  1. #1
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,

    ich bin neu im SPS Bereich (Anfänger) und muss am Mo. ein kleines Programm in der Schule vorführen. Habe mich dazu bereit erklärt.
    (Berufsschulanfängern soll der Techniker in Datenverarbeitungstechnik schmackhaft gemacht werden)
    Hauptmerkmale sollen auf den Erklärungen von WHILE, CASE, IF, FOR liegen.

    Mit anderen Worten: Ich brauche ein kleines Programm in ST (Strukturierter Text) geschrieben in welchen diese Anweisungen vorkommen. Nichts besonderes, ein 20 Zeiler würde schon reichen (kann natürlich auch länger sein!). Kommentare wären super! Ich muss halt nur die Anweisungen anhand von Bsp. verständlich erklären. Der Vortrag soll max. den Umfang von 10-15 Min haben.

    Vielleicht hat jemand jaso etwas schon geschrieben? Erklären werde ich mir das schon selber, ich brauche halt nur das Bsp. Programm.

    Wäre super wenn mir da jemand unter die Arme greiffen würde...

    Vielen Dank im voraus.
    Daniel
    Zitieren Zitieren Gelöst: Ich habe da ein kleines Problem......! Die Zeit läuft!  

  2. "
    Zitat Zitat von Anonymous
    Danke Leute, nicht schlecht.
    Aber ich brauche etwas was in ST (Strukturierter Text) geschrieben ist.
    Ich muss es mit Beckhoff Software machen.
    Die Beispiele sind sehr gut (vom Umfang) nur in der falschen Sprache.
    Schafft es jemand bis 13h heute zu Antworten? Wäre super.

    Und hier mein eigener Versuch, nur ist da noch ein Bock drin, wenn man sich an die eigens erdachten Kommentare hällt...

    Der Programmtext ist mit Beckhoff geschrieben, weiß jemand wo der Fehler liegen könnte?

    PROGRAM MAIN
    VAR
    note: ARRAY[1..5] OF REAL;
    Ok, das ist eine Definition eines Arrays (Feldes). In manchen Sprachen muss der untere Index 0 sein.
    note1: REAL;
    note2: REAL;
    note3: REAL;
    note4: REAL;
    note5: REAL;
    Aber was sollen note1 bis note5 sein? Es sind NEUE real Variablen, haben nix mit einem (dem obigen) Feld zu tun und ich sehe nicht das Du sie verwendest.
    summe: REAL;

    i: INT;

    END_VAR

    note[1]:=2; (* Element 1 des ARRAY mit dem Namen feld "befüllt" mit Schulnoten*)
    note[2]:=2; (* Element 2 *)
    note[3]:=2; (* Element 3 *)
    note[4]:=2; (* Element 4 *)
    note[5]:=2; (* Element 5 *)

    i:=1; (*Laufvariable die den INDEX des ARRAYS note durchläuft beginnend bei 1*)

    WHILE note[i]>0 AND note[i]<7 DO (*Als Abbruchbedingung wird der Index des Arrays note verwendet*)
    (*Gewährleistung das nur Noten von 1 - 6 in die Berechnung einfliessen*)
    IF i >5
    Wenn I=5, kein Abbruch
    THEN EXIT;
    END_IF;
    Du must die Summe vor der Schleife auf 0 setzen, sonst kriegst Du Müll raus!
    summe:=summe+note[i]; (*Hier soll die verdammte Summe der Noten berechnet werden und der Durchschnitt*)
    Wenn I=5, Addition von note[5], das ist noch ok.
    Dann erhöhst Du I auf 6, und greifst in der While-Schleife auf note[6] zu, die es gar nicht gibt.
    (*ausgegeben werden => klappt nur nicht! Warum nicht?*)
    i:=i+1;

    END_WHILE

    Ich zähle auf Euch...
    Danke.
    [/quote]"


  3. #2
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    irgendwie spinnt meine kiste
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  4. #3
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    Hauptmerkmale sollen auf den Erklärungen von WHILE, CASE, IF, FOR liegen
    das sind wohl ehr befehle aus einer anderen sprache wie z.b. vbasic, c++ etc. und sind in der sps eigentlich nicht verfügbar. (evtl in scl)

    gängige befehle einer sps sind: und, oder, setze, rücksetze.
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  5. #4
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    aber hier trotzdem mal einige beispiele

    CASE
    Code:
    Im folgenden Programm wird die SELECT CASE-Anweisung verwendet, um, abhängig
    vom Eingabewert, verschiedene Aktionen zu starten&#58;
    
    ' Das Programm demonstriert verschiedene Formen der CASE-Bedingungen.
         INPUT "Geben Sie ein zu akzeptierendes Risiko ein &#40;1-10&#41;&#58; ", Total
         SELECT CASE Total
    
            CASE IS >= 10
               PRINT "Maximales Risiko und maximaler potentieller Gewinn."
               PRINT "Kaufen Sie Aktienpakete"
    
            CASE  6 TO 9
               PRINT "Hohes Risiko und hoher potentieller Gewinn."
               PRINT "Kaufen Sie Pfandbriefe."
    
            CASE  2 TO 5
               PRINT "Mittleres Risiko und mittlerer Gewinn."
               PRINT "Kaufen Sie Bundesschatzbriefe."
    
            CASE 1
               PRINT "Kein Risiko, kleiner Gewinn."
               PRINT "Kaufen Sie Gold."
    
            CASE ELSE
               PRINT "Antwort außerhalb des Bereiches."
    
         END SELECT
    IF THEN ELSE
    Code:
    Diese Beispiele zeigen die Benutzung einer einzeiligen und Block-
    IF...THEN...ELSE-Anweisung.
    
    Hier ist die einzeilige Form&#58;
    
    CLS    ' Lösche Bildschirm.
    DO
       INPUT "Eine Zahl eingeben, die größer als 0 und kleiner als 10000 ist&#58;",X
       IF X >= 0 AND X < 10000 THEN EXIT DO ELSE PRINT X;"Außerhalb des Bereichs"
    LOOP
    IF X<10 THEN Y=1 ELSE IF X<100 THEN Y=2 ELSE IF X<1000 THEN Y=3 ELSE Y=4
    PRINT "Die Zahl hat"; Y; "Ziffern"
    
    
    Hier ist die Block-Form, einfacher zu lesen und leistungsfähiger&#58;
    
    CLS    ' Lösche Bildschirm.
    DO
       INPUT "Eine Zahl eingeben, die größer als 0 und kleiner als 100000 ist&#58;", X
       IF X >= 0 AND X < 100000 THEN
          EXIT DO
       ELSE
          PRINT X; "Außerhalb des Bereichs"
       END IF
    LOOP
    
    IF X < 10 THEN
       Y = 1
    ELSEIF X < 100 THEN
       Y = 2
    ELSEIF X < 1000 THEN
       Y = 3
    ELSEIF X < 10000 THEN
       Y = 4
    ELSE
       Y = 5
    END IF
    PRINT "Die Zahl hat"; Y; "Ziffern"
    WHILE WEND
    Code:
    Der folgende Ausschnitt führt einen Bubblesort mit dem Datenfeld A$ durch.
    In der zweiten Zeile wird die Variable Tausch durch die Zuweisung eines
    Nicht-Null-Wertes wahr. Dies führt zu mindestens einem Durchlauf der
    WHILE...WEND-Schleife &#40;in einer DO...LOOP-Anweisung ist diese Konstruktion
    unnötigt&#41;. Wenn kein weiterer Tausch mehr erfolgt, sind alle Elemente von
    A$ sortiert, Tausch ist falsch &#40;gleich Null&#41; und das Programm fährt mit der
    auf WEND folgenden Zeile fort.
    
    ' Führe Bubblesort mit Datenfeld A$ durch.
    CONST FALSE=0, TRUE=NOT FALSE
    DIM A$&#40;4&#41;
    A$&#40;1&#41; = "Ulm"
    A$&#40;2&#41; = "Kempten"
    A$&#40;3&#41; = "München"
    A$&#40;4&#41; = "Isny/Allgäu"
    Max = UBOUND&#40;A$&#41;
    Tausch=TRUE           ' Führe ersten Schleifendurchlauf durch.
    WHILE Tausch          ' Sortiere bis keine Elemente mehr getauscht werden.
       Tausch=FALSE
       ' Vergleiche die Datenfeldwerte paarweise. Wenn zwei getauscht sind,
       ' wird der nächste Schritt erzwungen, indem Tausch TRUE gesetzt wird.
       FOR I = 2 TO Max
          IF A$&#40;I-1&#41; > A$&#40;I&#41; THEN
             Tausch = TRUE
             SWAP A$&#40;I - 1&#41;, A$&#40;I&#41;
          END IF
       NEXT
    WEND
    CLS
    FOR I = 1 TO 4
       PRINT A$&#40;I&#41;
    NEXT I
    END
    FOR NEXT
    Code:
    Dieses Beispiel druckt die ersten 11 Spalten des Pascal'schen Dreiecks&#58;
    
    'Druckt die ersten MAXSPALT Spalten des Pascal'schen Dreiecks,
    'in dem jede Zahl die Summe der Zahlen ist, die unmittelbar
    'über und unter der vorhergehenden Spalte stehen&#58;
    
    CLS                         ' Lösche Bildschirm.
    CONST MAXSPALT=11
    DIM A&#40;MAXSPALT,MAXSPALT&#41;
    FOR M = 1 TO MAXSPALT
        A&#40;M,1&#41; = 1 &#58; A&#40;M,M&#41; = 1 'Oberste und unterste Zahl
                                'in jeder Spalte ist 1.
    NEXT
    FOR M = 3 TO MAXSPALT
       FOR N = 2 TO M-1
          A&#40;M,N&#41; = A&#40;M-1,N-1&#41; + A&#40;M-1,N&#41;
       NEXT
    NEXT
    Startzeile = 13                'Gehe in die Mitte des Bildschirms.
    FOR M = 1 TO MAXSPALT
       Spalte = 6 * M
       Zeile = Startzeile
       FOR N = 1 TO M
          LOCATE Zeile,Spalte &#58; PRINT A&#40;M,N&#41;
          Zeile = Zeile + 2          'Zum Druck der nächsten Zahl
                                     '2 Zeilen tiefer gehen.
       NEXT
       PRINT
       Startzeile = Startzeile - 1   'Nächste Spalte beginnt 1 Zeile
                                     'über der vorangegangenen Spalte.
    NEXT
    das hab ich mal eben der hilfe von qbasic45 entnommen
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  6. #5
    Anonymous Gast

    Standard

    Danke Leute, nicht schlecht.
    Aber ich brauche etwas was in ST (Strukturierter Text) geschrieben ist.
    Ich muss es mit Beckhoff Software machen.
    Die Beispiele sind sehr gut (vom Umfang) nur in der falschen Sprache.
    Schafft es jemand bis 13h heute zu Antworten? Wäre super.

    Und hier mein eigener Versuch, nur ist da noch ein Bock drin, wenn man sich an die eigens erdachten Kommentare hällt...

    Der Programmtext ist mit Beckhoff geschrieben, weiß jemand wo der Fehler liegen könnte?

    PROGRAM MAIN
    VAR
    note: ARRAY[1..5] OF REAL;
    note1: REAL;
    note2: REAL;
    note3: REAL;
    note4: REAL;
    note5: REAL;
    summe: REAL;
    i: INT;

    END_VAR

    note[1]:=2; (* Element 1 des ARRAY mit dem Namen feld "befüllt" mit Schulnoten*)
    note[2]:=2; (* Element 2 *)
    note[3]:=2; (* Element 3 *)
    note[4]:=2; (* Element 4 *)
    note[5]:=2; (* Element 5 *)

    i:=1; (*Laufvariable die den INDEX des ARRAYS note durchläuft beginnend bei 1*)

    WHILE note[i]>0 AND note[i]<7 DO (*Als Abbruchbedingung wird der Index des Arrays note verwendet*)
    (*Gewährleistung das nur Noten von 1 - 6 in die Berechnung einfliessen*)
    IF i >5
    THEN EXIT;
    END_IF;
    summe:=summe+note[i]; (*Hier soll die verdammte Summe der Noten berechnet werden und der Durchschnitt*)
    (*ausgegeben werden => klappt nur nicht! Warum nicht?*)
    i:=i+1;

    END_WHILE

    Ich zähle auf Euch...
    Danke.

  7. #6
    Danielsun Gast

    Standard

    Zitat Zitat von Anonymous
    Danke Leute, nicht schlecht.
    Aber ich brauche etwas was in ST (Strukturierter Text) geschrieben ist.
    Ich muss es mit Beckhoff Software machen.
    Die Beispiele sind sehr gut (vom Umfang) nur in der falschen Sprache.
    Schafft es jemand bis 13h heute zu Antworten? Wäre super.

    Und hier mein eigener Versuch, nur ist da noch ein Bock drin, wenn man sich an die eigens erdachten Kommentare hällt...

    Der Programmtext ist mit Beckhoff geschrieben, weiß jemand wo der Fehler liegen könnte?

    PROGRAM MAIN
    VAR
    note: ARRAY[1..5] OF REAL;
    note1: REAL;
    note2: REAL;
    note3: REAL;
    note4: REAL;
    note5: REAL;
    summe: REAL;
    i: INT;

    END_VAR

    note[1]:=2; (* Element 1 des ARRAY mit dem Namen feld "befüllt" mit Schulnoten*)
    note[2]:=2; (* Element 2 *)
    note[3]:=2; (* Element 3 *)
    note[4]:=2; (* Element 4 *)
    note[5]:=2; (* Element 5 *)

    i:=1; (*Laufvariable die den INDEX des ARRAYS note durchläuft beginnend bei 1*)

    WHILE note[i]>0 AND note[i]<7 DO (*Als Abbruchbedingung wird der Index des Arrays note verwendet*)
    (*Gewährleistung das nur Noten von 1 - 6 in die Berechnung einfliessen*)
    IF i >5
    THEN EXIT;
    END_IF;
    summe:=summe+note[i]; (*Hier soll die verdammte Summe der Noten berechnet werden und der Durchschnitt*)
    (*ausgegeben werden => klappt nur nicht! Warum nicht?*)
    i:=i+1;

    END_WHILE

    Ich zähle auf Euch...
    Danke.

  8. #7
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Anonymous
    Danke Leute, nicht schlecht.
    Aber ich brauche etwas was in ST (Strukturierter Text) geschrieben ist.
    Ich muss es mit Beckhoff Software machen.
    Die Beispiele sind sehr gut (vom Umfang) nur in der falschen Sprache.
    Schafft es jemand bis 13h heute zu Antworten? Wäre super.

    Und hier mein eigener Versuch, nur ist da noch ein Bock drin, wenn man sich an die eigens erdachten Kommentare hällt...

    Der Programmtext ist mit Beckhoff geschrieben, weiß jemand wo der Fehler liegen könnte?

    PROGRAM MAIN
    VAR
    note: ARRAY[1..5] OF REAL;
    Ok, das ist eine Definition eines Arrays (Feldes). In manchen Sprachen muss der untere Index 0 sein.
    note1: REAL;
    note2: REAL;
    note3: REAL;
    note4: REAL;
    note5: REAL;
    Aber was sollen note1 bis note5 sein? Es sind NEUE real Variablen, haben nix mit einem (dem obigen) Feld zu tun und ich sehe nicht das Du sie verwendest.
    summe: REAL;

    i: INT;

    END_VAR

    note[1]:=2; (* Element 1 des ARRAY mit dem Namen feld "befüllt" mit Schulnoten*)
    note[2]:=2; (* Element 2 *)
    note[3]:=2; (* Element 3 *)
    note[4]:=2; (* Element 4 *)
    note[5]:=2; (* Element 5 *)

    i:=1; (*Laufvariable die den INDEX des ARRAYS note durchläuft beginnend bei 1*)

    WHILE note[i]>0 AND note[i]<7 DO (*Als Abbruchbedingung wird der Index des Arrays note verwendet*)
    (*Gewährleistung das nur Noten von 1 - 6 in die Berechnung einfliessen*)
    IF i >5
    Wenn I=5, kein Abbruch
    THEN EXIT;
    END_IF;
    Du must die Summe vor der Schleife auf 0 setzen, sonst kriegst Du Müll raus!
    summe:=summe+note[i]; (*Hier soll die verdammte Summe der Noten berechnet werden und der Durchschnitt*)
    Wenn I=5, Addition von note[5], das ist noch ok.
    Dann erhöhst Du I auf 6, und greifst in der While-Schleife auf note[6] zu, die es gar nicht gibt.
    (*ausgegeben werden => klappt nur nicht! Warum nicht?*)
    i:=i+1;

    END_WHILE

    Ich zähle auf Euch...
    Danke.
    [/quote]

Ähnliche Themen

  1. ProSave - kleines problem...
    Von Blut-Zwente im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 28.06.2011, 21:58
  2. Antworten: 0
    Letzter Beitrag: 14.04.2010, 05:33
  3. Kleines Problem
    Von ETim im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 03.08.2009, 10:13
  4. habe ein kleines problem
    Von sago im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 24.01.2009, 17:21
  5. Habe Zeit für ein paar Kleinprogramme / Projekte
    Von maxi im Forum Suche - Biete
    Antworten: 1
    Letzter Beitrag: 12.07.2007, 10:36

Lesezeichen

Berechtigungen

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