TIA S7-1500 indexierte Timer

vollmi

Level-3
Beiträge
5.435
Reaktionspunkte
1.409
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi

Ich bin grad über n nettes Gimmick gestolpert. Timer (TP, TON, TOF) kann man offenbar in Globalen DBs als Arrays anlegen (stand auch mal im Forum).

Das hier funktioniert:
Code:
FOR #index := 0 TO 100 DO
    "timers.tons[[COLOR=#FF0000]0[/COLOR]]".TON(IN :="timers".stcTON[#index].IN,
                             PT := "timers".stcTON[#index].PT,
                             Q => "timers".stcTON[#index].Q);
END_FOR;

Das hier kann man aber nicht übersetzen
Code:
FOR #index := 0 TO 100 DO
    "timers.tons[[COLOR=#ff0000]#[/COLOR][COLOR=#ff0000]index[/COLOR]]".TON(IN :="timers".stcTON[#index].IN,
                             PT := "timers".stcTON[#index].PT,
                             Q => "timers".stcTON[#index].Q);
END_FOR;

Die andere Frage ist dann, gibt es eine Möglichkeit so ein Array of Timer in einer Instanz anzulegen?

mfg René
 
Ich bin grad über n nettes Gimmick gestolpert. Timer (TP, TON, TOF) kann man offenbar in Globalen DBs als Arrays anlegen (stand auch mal im Forum).
In der Tat... ;)
http://www.sps-forum.de/simatic/50733-sfb4-ton-sfb5-tof-usw-post533813.html#post533813

Das hier kann man aber nicht übersetzen
Code:
FOR #index := 0 TO 100 DO
    "timers.tons[[COLOR=#ff0000]#[/COLOR][COLOR=#ff0000]index[/COLOR]]".TON(IN :="timers".stcTON[#index].IN,
                             PT := "timers".stcTON[#index].PT,
                             Q => "timers".stcTON[#index].Q);
END_FOR;
Die andere Frage ist dann, gibt es eine Möglichkeit so ein Array of Timer in einer Instanz anzulegen?
Das fixe Indexieren geht für Arrays in GlobalDbs als auch im STAT-Bereich.

OK, auf die Idee die dynamisch zu indexieren bin ich noch nicht gekommen....
Ich kann es (in FUP probiert und nicht innerhalb einer Schleife) allerdings schon dynamisch übersetzen, siehe Screenshot.
Ob die Sache ne gute Idee ist...?

S71500_IECTIMER_ARRAY.jpg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
LoL ich krieg plaque. In FUP kann ichs auch. In SCL gehts nicht, da kann ich nichtmal ein array of ton in stat oder INOUT deklarieren. Die Siemensianer haben ja wohl den Schuss nicht gehört.

Ich hab eben schon öfters ganze Arrays die abgearbeitet werden und in denen ich gleich noch eine Zeit Einlocke. Derzeit mach ich das mit ner Incrementierung pro Teil. Aber eben. mit nem echten Timer wärs nett gewesen.

Ich wusste doch ich hab davon im Forum gelesen. Aber wenn man sich das nur aufn PostIt notiert ;)

mfG René
 
Zuletzt bearbeitet:
Wäre wohl wieder was für den Support.

Kriegst du Sie in SCL gar nicht dynamisch indexiert, also auch nicht außerhalb der Schleife?
Hab grad schlecht Zeit zum probieren.

Versuch mal folgendes in SCL...
Anstatt einem Array[1..20]_of_IEC_TIMER nimm mal ein Array[1..20]_of_STRUCT/UDT on pack dort einen einzelnen IEC_TIMER rein.
Vielleicht lässt sich der SCL-Compiler überlisten. :ROFLMAO:
 
Cool, wenn ich den timer in ner Struktur verstecke. Dann kann ich das in Static deklarieren. Der Aufruf gelingt mir aber trotzdem nicht.

Code:
        #[COLOR=#ff0000][U]timers[0].TONer.TON[/U][/COLOR](IN := #timers[#index].stcTON.IN,
                         PT := #timers[#index].stcTON.PT);  // "Fehler unbekannte anweisung"
    
        #timers[0].TONer.IN := #testbool; // direkte TON instanz
        #timers[0].booean := true; // variable in gleicher ebene wie TON

er zeigt mir zwar fehler unbekannte anweisung. Erkennt aber dass es sich um einen Timer handeln muss. denn er sagt welche elemente vorhanden wären. Ist doch zum Kotzen.

mfG René
 
Zuviel Werbung?
-> Hier kostenlos registrieren
er zeigt mir zwar fehler unbekannte anweisung. Erkennt aber dass es sich um einen Timer handeln muss. denn er sagt welche elemente vorhanden wären. Ist doch zum Kotzen.
Hab's auch grad probiert. Beim setzen der ( nach dem .TON schlägt er zwar brav das IN, PT, Q, ET vor aber das war's dann auch.
Weiter komm ich auch nicht.
 
Zurück
Oben