SCL und If-Anweisung

Zuviel Werbung?
-> Hier kostenlos registrieren
Naja, wie gesagt, denke nicht das man sowas unbedingt in SCL machen soll. ... Aber zum Anfangen in der Programmiersprache geh ichs hald mal klein an :)
Was aber ne super sache ist , ist die FOR..... Funktion.... Also da brauchst mit Loop in AWL nicht anfangen. Meine pers. Meinung. Auch das die AWL Pointer Sache in SCL quasi rausfällt... I like :)
 
Zuletzt bearbeitet:
noch ein kleiner Einwurf.... wir haben in der Firma oft awl netzwerke die nur aus und / oder bestehen, mit 1000 Klammern und über 2 Bildschirmseiten... :) ohne Worte eigentlich, aber sowas find ich in SCL dann schon besser lesbar...

bspl.:
Code:
a8.0:= e10.1 & E10.2 OR e10.3 & e10.4 &NOT E10.6 OR e12.5 OR e13.5;
.... auch nicht schön, aber besser wie in AWL :)
 
Auf alle Fälle :)

hier jetzt nun meine 100 Punkte Frage......

Code:
FOR index:= 1 TO 5 BY 1 DO
    IF Meins.meins[index] = 2 THEN
        m100.0:=1;
       END_IF;
END_FOR;

wie krieg ich m100.0 automatisch wieder auf 0 ? Also meins.meins ist ein Array of Dint... wenn ich irgendwo testweise 2 reinschreibe wird 100.0 gesetzt.... aber bleibt dann da für immer...
Wenn ich Else oder Elseif benutze wird er nicht mehr gesetzt..... Das ist mir jetzt abschließend echt zu viel...
 
Was soll denn in M100.0 gekennzeichnet werden? Dass in dem Array eine Variable den Wert 2 hat?
Dann passt es doch so. Nur machst du die Suche nach der 2 doch hoffentlich nicht aus Spaß, sondern wirst an anderer Stelle die Information doch irgendwie weiterverarbeiten (IF M100.0 = true THEN ...) Und wenn du darauf reagiert hast setzt du das Bit (bei dir den Merker) wieder zurück.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So wie du jetzt geschrieben hast, habe ich das schon hinbekommen.
Aber es muss doch auch ne möglichkeit die Suche "immer" laufen zu lassen, und sobald sich etwas ändert, also keine 2 mehr findbar ist, muss der M100.0 wieder 0 werden?? Z.b. Ne Typdatenverwaltung, es ist jetzt nicht mehr Typ 2 angewählt sonder Typ 3 . Ja, blödes Beispiel, aber vom Prinzip her muss das doch irgendwie gehen??? Wahhh das SCL macht mich noch verrückt.
Mir gehts mehr um das "wie geht das... " als um "macht man das auch??".... zumindest jetzt noch.
 
Ok, Versuch ich. Also es gibt keine andere lösung, bzw. meine FOr If Anweisung ist korrekt? Dachte ich hab in der Anweisung nen Fehler drin?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Um zu beurteilen ob das richtig ist braucht man eine konkrete Aufgabenstellung.
Man kann nur sagen was dein Stück Programm macht: Wenn in einem der 5 Elemente im Array Meins.meins eine 2 enthalten ist, dann wird M100.0 auf true gesetzt. Wenn nicht, dann behält M100.0 seinen alten Wert.
 
Auf jeden Fall bist du "Sir" SCL . Du hast es voll drauf. Mein Held. bisschen witz, aber ist ernstgemeint. Danke für die Hilfe!. Wie lange machst du schon SCL ?
 
Soory Thomas, dein Tip mit dem Merker zurücksetzten funktioniert nicht. Hier das etwas modifizierte Beispiel.

Code:
  Data_Ar.w:=0;
    ;
    IF m2.0 THEN
        FOR index:= 1 TO 25 BY 1 DO
            IF Data_Ar.MeinArray[index] = 5 THEN
               Data_Ar.w:=100;
            END_IF;
        END_FOR;
   END_IF;
So bleibt Data_Ar.w immer 0 . Da setzt sich nichts . Data_Ar.W ist ein word.. HIIILLFEEE!!!

Und das geht auch nicht :
Code:
 IF m2.0 THEN
        FOR index:= 1 TO 25 BY 1 DO
            IF Data_Ar.MeinArray[index] = 5 THEN
               A8.0:=1;
            END_IF;
        END_FOR;
   END_IF;
A8.0 wird nie 1 wenn ich in VAT beobachte. Ich steig echt nicht mehr durch, was ist der Fehler?
 
Zuletzt bearbeitet:
Jetzt gehts. Sorry, ich hör jetzt auf und lass es gut sein fürs Wochenende. Wird einfach zu viel und die "Leichtsinnsfehler" werden immer mehr.
Ob1 sollte den FC auch aufrufen. Trotzdem Danke "Sir" SCL!!!
 
Zurück
Oben