4 Werte vergleichen und den kleinsten bzw. größten Wert erhalten

superkato

Level-1
Beiträge
220
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich versuche gerade folgende Funktion in STEP7 zu programmieren.

Wir haben 4 Lampen. (A4.0 bis A4.4) . Jeder der Lampe hat einen Betriebsstundenzähler (M1.0 bis M1.4).

Jetzt soll verglichen werden welche der Lampen den größten/niedrigsten Betriebsstundenwert hat und dementsprechend aktiv/inaktiv geschaltet werden.

Ich wüsste wie man das in C/C++ (if else) realisiert aber wie soll das denn bitteschön in AWL bzw. FUP gehen?

Könnte mir da jemand vielleicht eine kleine Denkhilfe geben?

mfg
Sk

Fünf Lampen! nich 4 :D
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich versuche gerade folgende Funktion in STEP7 zu programmieren.

Wir haben 4 Lampen. (A4.0 bis A4.4) . Jeder der Lampe hat einen Betriebsstundenzähler (M1.0 bis M1.4).

Jetzt soll verglichen werden welche der Lampen den größten/niedrigsten Betriebsstundenwert hat und dementsprechend aktiv/inaktiv geschaltet werden.

Ich wüsste wie man das in C/C++ (if else) realisiert aber wie soll das denn bitteschön in AWL bzw. FUP gehen?

Könnte mir da jemand vielleicht eine kleine Denkhilfe geben?

mfg
Sk
Aua!
A4.0 bis A4.4 sind schon mal FÜNF und nicht VIER Ausgänge.
Und ein Bool als Betriebsstundenzähler ist auch ein Witz.
 
ja ich meinte eigentlich 5 Lampen und statt mx.x nennen wir es einfach mal "int".

Der Bubblesort ist cool! Gibts das auch in AWL ? Ich hab zwar keine Angst vor SCL aber ich hab schon alles andere in FUP/AWL gemacht.

danke für den Tipp!

mfg
Sk
 
ja ich meinte eigentlich 5 Lampen und statt mx.x nennen wir es einfach mal "int".

Der Bubblesort ist cool! Gibts das auch in AWL ? Ich hab zwar keine Angst vor SCL aber ich hab schon alles andere in FUP/AWL gemacht.

danke für den Tipp!

mfg
Sk

Also irgendwo in den Tiefen dies Forums gibt es das als AWL. Ich glaube unserer Freund Zottel hat das mal eingestellt.
 
Hallo superkato,
vergiss das gleich wieder, das war nur ein Witz.
Diesen Code kann man nicht mehr vernünftig lesen.
@4L, lass doch den Mist.

paule, mein lieber, DAS war kein witz! wenn man weiß, was man programmiert hat kann man es sehr wohl lesen, auch weil die lokaldatenbennenung erhalten bleibt... vielleicht sollte man sich herantasten, ja, aber ansonsten funktioniert die "methode" und die optimierung des AWL-codes kann man dann nach besonderen vorlieben und können durchführen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
und die optimierung des AWL-codes kann man dann nach besonderen vorlieben und können durchführen.
Sorry 4L,
aber das hat doch nichts mit vorlieben und können zu tun, das ist reine Schikane.
Die ganzen Kommentare die in SCL (liebevoll, mühsam, was auch immer) erstellt wurden sind weg.
Und warum soll man was optimieren und kommentieren was vorher schon da war?
Das ist einfach nur unkommentierter umständlicher kauderwelsch.
Ich glaube Dir auch sofort, dass ich Dir so eine übersetzte SCL > AWL Quelle schicken könnte und Du sie dann kommentieren könntest.
Aber ich bin auch davon überzeugt dass Du den gleichen SCL - Code (inklusive Kommentaren) mit einem Blick sehen und verstehen würdest.
 
nunja back2topic :D

es geht mir ja nich nur um das zählen und vergleichen...

ich denke ich müsste hier mal die vollständige logik beschreiben.

Der Reihenfolge nach:


Analogeingang liest den Helligkeitswert ein.
wenn IST-Wert < SOLL-Wert

Schalte Lampe mit den niedrigsten Betriebsstunden ein.
=> Funktion Betriebsstunden vergleich und dementsprechend die Lampe mit den niedrigsten BS. einschalten

15 Sek. später nochmal prüfen

wenn IST-Wert < SOLL-Wert
Weitere Lampe einschalten (von den inaktiven, die mit den niedrigsten BS).

wenn IST-Wert >= Soll-Wert

So lassen.

Wenn IST-Wert > Schwellwert_X

die Lampe mit den höchsten BS. abschalten.

15 Sek später prüfen, falls immer noch zu hoch dann ncoh eine abschalten.

falls IST-Wert kleiner SollWert dann
wieder die Lampe mit den niedrigsten BS einschalten.

usw...


kann man das überhaupt so in FUP/AWL realisieren?
Sollte ich das als Zustandsautomat realisieren?

mfg
SK
 
Zuviel Werbung?
-> Hier kostenlos registrieren
=superkato;322801

.......

kann man das überhaupt so in FUP/AWL realisieren?
Sollte ich das als Zustandsautomat realisieren?

mfg
SK

Die Antwort auf die erste Frage ist auf jedenfall JA wobei AWL einfacher ist. Es sollte aber auch in FUP gehen..... die 2. Frage verstehe ich nicht.

Wo siehst du denn das Problem ?
 
Das hat der TE schon , er hat aber gerade ein PRoblem in der Logik des Programms.

Wenn ich 4 lampen habe und jetzt 2 lampen laufen und die anderen 2 inaktiv sind, dann kann ich ja ein Bit setzen bzw. Merker um einen Status "aktiv bzw. inaktiv" zu symbolisieren.

wie kann ich aber jetzt realisieren, das nur die inaktiven lampen eingeschaltet werden sollen bzw. in die Einschaltauswahl sollen. Ich mein das so:

1) =>2 von 4 Lampen aktiv
2) => Lux wert sinkt
3) => Eine weitere Lampe soll aktiviert werden
4) => Prüfe welche Lampen inaktiv sind
5) => nehme die inaktiven Lampen
6) => vergleiche die Betriebsstunden und aktiviere die mit den geringsten Betriebsstunden.

wie realisiere ich denn Schritt 4 und 5 ?? Ich häng da seit Tagen dran :(
 
Zuletzt bearbeitet:
Zurück
Oben