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

Ergebnis 1 bis 8 von 8

Thema: Hilfe beim programmcode (scl)

  1. #1
    Registriert seit
    03.09.2013
    Beiträge
    93
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten Tag
    Ich bin zur zeit an einem 4 gewinnt an der arbeit und habe schwirigkeiten beim programm.
    Das ganze werde ich mit einem SIMIT-Modell simulieren deswegen keine Hardwareprobleme. Die Eingänge sind 7 Schalter und ein Reset.
    Dann habe ich noch 2 Ausgangswörter.
    Am anfang möchte ich nur mit einem Spieler testen d.h. ich versuche alle LED nur Grün auf zu leuchten.
    Ich muss an dem SIMIT-Modell nur die Ausgangswörter geben das heist der Einte ist für die Horizontal und der andere Vertikal. Wenn ich jetzt zum Beispiel ein 1 und 1 als wort rausgebe dann ist der Schnittpunkt von den Beiden gemeint.
    Habe zwei Arrays weil der einte ist für alles d.h. er speichert die Zustände von den beiden Spieler. Und der Andere ist nur für den Grünen der Rote array fehlt deswegen nicht beachten.
    Ich habe jetzt angefangen zu programmieren, aber es funktioniert einfach nicht.

    Code:
    IF #eingang_1 = TRUE THEN       
      #horizontal:= 1;        
      ELSIF       
      #eingang_2 = TRUE THEN        
      #horizontal:= 2;        
      ELSIF       
      #eingang_3 = TRUE THEN        
      #horizontal:= 3;        
      ELSIF       
      #eingang_4 = TRUE THEN        
      #horizontal:= 4;        
      ELSIF       
      #eingang_5 = TRUE THEN        
      #horizontal:= 5;        
      ELSIF       
      #eingang_6 = TRUE THEN        
      #horizontal:= 6;        
      ELSIF       
      #eingang_7 = TRUE THEN        
      #horizontal:= 7;
    END_IF;    
     
           
    #x:=#horizontal;        
    #y:=#vertikal;        
           
    FOR #x := 1 TO 7 BY 1 DO            // Alles mit Null füllen        
      FOR #y := 1 TO 6 BY 1 DO;       
        #LED_Speicher[#y,#x] := 0;        
      END_FOR;          
    END_FOR;        
           
    FOR #y := 1 TO 6 BY 1 DO        
      IF #y = 0  THEN       
        #Grüner_speicher[#horizontal,#vertikal] := 1;
       END_IF;       
    END_FOR;
    Wenn ihr noch weiter Angaben braucht bescheid geben.
    Zitieren Zitieren Hilfe beim programmcode (scl)  

  2. #2
    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 bkizilkaya Beitrag anzeigen
    Code:
    FOR #y := 1 TO 6 BY 1 DO        
      IF #y = 0  THEN       
        #Grüner_speicher[#horizontal,#vertikal] := 1;
       END_IF;       
    END_FOR;
    Erklär' mal, was Du hier programmieren wolltest.

    #y soll lt. FOR-Schleife Werte von 1 bis 6 annehmen und innerhalb dieser Schleife fragst Du ab, ob #y=0 ist.
    Damit kannst Du Dir die ganze Schleife sparen, denn #y ist nie 0, sondern 1 bis 6!

  3. #3
    Registriert seit
    25.11.2008
    Ort
    Westpfalz
    Beiträge
    1.550
    Danke
    187
    Erhielt 212 Danke für 186 Beiträge

    Standard

    Zitat Zitat von bkizilkaya Beitrag anzeigen

    Code:
           
    #x:=#horizontal;        
    #y:=#vertikal;        
           
    FOR #x := 1 TO 7 BY 1 DO            // Alles mit Null füllen        
      FOR #y := 1 TO 6 BY 1 DO;       
        #LED_Speicher[#y,#x] := 0;        
      END_FOR;          
    END_FOR;        
           
    FOR #y := 1 TO 6 BY 1 DO        
      IF #y = 0  THEN       
        #Grüner_speicher[#horizontal,#vertikal] := 1;
       END_IF;       
    END_FOR;
    Außerdem könnte hier das Array vertauscht sein.
    and we all support the team (S.King - Die Arena)

  4. #4
    Registriert seit
    03.09.2013
    Beiträge
    93
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Guten Tag

    Es tut mir leid das ich wenig angaben hatte im Anhang findet ihr eine Skizze.

    Das programm soll so laufen zuerst werde ich alle LED auf null setzen d.h. alle ausgangswörter = 0

    Danach wenn ich irgend ein schalter betätige dann sucht es einen leeren platz (LED) von der entsprechenden Vertikale.

    Ich hoffe ihr versteht es.

    Gruss





    Skizze.doc

  5. #5
    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 bkizilkaya Beitrag anzeigen
    Ich hoffe ihr versteht es.
    Wir verstehen schon, wollen aber nicht Deine Arbeit machen.
    Das nützt Dir ja nicht so viel.



    Was mir mehr Sorgen macht - verstehst Du, was Du da programmierst?
    Da Du auf beide Antworten nicht mal reagierst, vermute ich mal, das dem nicht so ist!

    Noch mal nähere Anmerkungen zu Deinem Programm:
    Zitat Zitat von bkizilkaya Beitrag anzeigen
    Code:
    
    IF #eingang_1 = TRUE THEN       
      #horizontal:= 1;        
      ELSIF       
      #eingang_2 = TRUE THEN        
      #horizontal:= 2;        
      ELSIF       
      #eingang_3 = TRUE THEN        
      #horizontal:= 3;        
      ELSIF       
      #eingang_4 = TRUE THEN        
      #horizontal:= 4;        
      ELSIF       
      #eingang_5 = TRUE THEN        
      #horizontal:= 5;        
      ELSIF       
      #eingang_6 = TRUE THEN        
      #horizontal:= 6;        
      ELSIF       
      #eingang_7 = TRUE THEN        
      #horizontal:= 7;
    END_IF;                             //hier wird #horizontal ein Wert zugewiesen,
                                        //je nachdem, welcher Eingang gesetzt ist.
                                        //sicher nicht die schönste Möglichkeit, aber noch OK
     
           
    #x:=#horizontal;                    //hier wird dieser ermittelte Wert an #x übergeben        
    #y:=#vertikal;                      //hier wird ein Wert an #y übergeben, woher auch immer der kommt
                                        //diese beiden Zeilen werden durch die nächsten sofort wieder hinfällig,
                                        //weil diese Zuweisungen durch die nächsten beiden FOR-Schleifen sofort
                                        //wieder überschrieben werden
           
    FOR #x := 1 TO 7 BY 1 DO            // Alles mit Null füllen   #x bekommt neue Werte zugewiesen (löscht die alten!)
      FOR #y := 1 TO 6 BY 1 DO;         //                         #y bekommt neue Werte zugewiesen (löscht die alten!)                          
        #LED_Speicher[#y,#x] := 0;      //prüfen, ob das Array mit min. [1 ..6, 1 ...7] angelegt wurde
                                        //Siehe Hinweis von Mäuseklavier
      END_FOR;                          //Das Nullen an sich sollte aber noch klappen, vorausgesetzt Dein Array passt
    END_FOR;        
           
    FOR #y := 1 TO 6 BY 1 DO            // #y bekommt die Werte 1, 2, 3, 4, 5 und 6 der Reihe nach zugewiesen
      IF #y = 0  THEN                   // #y = 0 ? Wie soll das gehen?
                                        // Siehst Du eine 0 in der Werte-Aufzählung der FOR-Schleife?
        #Grüner_speicher[#horizontal,#vertikal] := 1;   //Das wird nie ausgeführt!!!
                                                        //außerdem hast Du hier horizontal und vertikal im Vergleich 
                                                        //zu den Angaben bei LED_Speicher vertauscht?!
                                                        //Siehe Hinweis von Mäuseklavier
       END_IF;       
    END_FOR;
    Du solltest erst mal Deine eigene Logik aufräumen, dann geht's hier sicher auch weiter.



    PS: Zeilenweises Kommentieren hilft oft, Logikprobleme zu erkennen! Und zwar auch dem Programmschreiber selbst!

    Außerdem gehört zum Code immer auch die Variablendeklaration! Ist bei TIA etwas mühseliger zu posten, aber da hätte Mäuseklavier z.B. nicht nur vermuten müssen, sondern hätte gesehen, ob's passt.

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

    Sinix (25.09.2013)

  7. #6
    Registriert seit
    03.09.2013
    Beiträge
    93
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Ok habe überarbeitet aber ich kriege einfach den Letzten teil nicht hin.

    gruss

  8. #7
    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 bkizilkaya Beitrag anzeigen
    Ok habe überarbeitet
    Ich seh' nix.



  9. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.399 Danke für 1.999 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Naja ... es gibt in der gleichen Sache noch einen anderen Thread. Da wurden von Thomas und mir gestern auch ein "paar" Probleme aufgezeigt, die in diesen Code immer noch präsent sind.
    Vielleicht sind irgendwelche Bemühungen unsererseits, sofern sie nicht die Arbeit für den TE erledigen, "Perlen vor die Säue geworfen" - ich mag mich aber auch täuschen.

    @TE:
    Eine der wichtigsten Spielregeln hier im Forum ist, wenn man nach Rat fragt, wenigstens über die gegebenen Ratschläge nachzudenken und eventuell auch zu versuchen, sie umzusetzen ...

    Gruß
    Larry

  10. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    Sinix (25.09.2013)

Ähnliche Themen

  1. SCL: Warnung beim Compilieren
    Von tarzipan7 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 06.03.2015, 11:34
  2. Problem mit zu großem Programmcode! Hilfe bei Vereinfachung gesucht!
    Von KingHelmer im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 04.10.2012, 12:31
  3. Hilfe beim Schaltplan
    Von Techniker2012 im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 06.03.2012, 09:29
  4. SCL-Programmcode
    Von hobel im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 17.07.2006, 22:03
  5. Brauche Hilfe bei SCL.SFC Aufrufen in SCL
    Von Gerold im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 06.10.2005, 10:47

Lesezeichen

Berechtigungen

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