Ein bisschen unklar, was meinst du.
1 Zähler mit Lichtschranke von 1 bis 31
bei 1 - Leistung 100%
...
bei 10 - Leistung 81,1 % (so, einfach aktuelle Werte auf 0,977 multiplizieren und neue Wert bei Zähler + 1 bekommen)
...
bei 20 - Leistung 64,26 %
...
bei 31 - Leistung 50%
bei 32 - wieder Leistung 100 % und sofort macht Wert bei Zähler 1 auf "1" ?
Und bei Zähler 2 umgekehrt - von 50% bis 100% (bei Wert "1" bis "32") und bei "32" wieder zurück auf 50% ?
Ich würde folgende Code anbieten, wo I01 und I02 - Signale von Lichtschränke:
M01 := I01;
M05 := I02;
if M01 and NOT M02 then
MB10 := MB10 + 1; // Zähler 1
M02 := True;
if MB10 > 31 then
MB10 := 0;
end_if;
end_if;
MB12 := (1000 - MB10 * 16) / 10 ; // FU 1
if M05 and NOT M03 then
MB11 := MB11 + 1; // Zähler 2
M03 := True;
if MB11 > 31 then
MB11 := 0;
end_if;
end_if;
MB15 := (500 + MB11 * 16) / 10 ; // FU 2
M02 := I01;
M03 := I02;