Forum: Mikrocontroller und Digitale Elektronik SPS S7 Timer AWL 10ms verringern


von Hans W. (unifight)


Lesenswert?

Hallo liebe SPS-Freunde,

ich habe folgendes Problem:

Der Timer einer S7-400 kann in AWL-Sprache nur auf minimal 10ms gesetzt 
werden.

Meine SPS arbeitet mit einer Zykluszeit von 3ms.

Gibt es einen Trick wie ich diesen Timer auf 3-4ms herunter bekomme?

Ich habe nämlich eine Reihenfolge von Signalausgängen in 3-4ms-Takt 
abzuarbeiten...

Im schlimmsten Fall muß ich mehrere Schalter entlang der Strecke setzen 
um Interrupte auszulösen?!^^

Beste Grüße

Uni

von Andi_73 (Gast)


Lesenswert?

Die Timer der S7 haben eine minimale Auflösung von 10ms.
Ein Ausgang kann nicht schneller als die Zyluszeit x2 der CPU takten.
Die normalen Ausgänge können als maximale Frequenz 100Hz abgeben.

Da die Zykluszeit jedoch je nach SPS Programm nicht stabil ist
(siehe Diagnosepuffer / Zykluszeit max.) würde ich mich darauf nicht
verlassen.

Ich würde es mit einem Weckalarm von 3-4ms versuchen.

von Amateur (Gast)


Lesenswert?

Ich bin ein bisschen raus, aber gab es nicht mal einen sogenannten 
schnellen Interrupt.
Ansonsten: Ändert sich etwas, so wird ein Ausgang mit dem nächsten 
Zyklus geändert. Es ist also sinnlos zu versuchen schneller zu sein, da 
das Ereignis nicht früher nach "außen" geführt wird.

von Autor (Gast)


Lesenswert?

Frag am besten im Siemens Support Forum bzw. im SPS-Forum nach. Da wird 
dir geholfen :)

von Andi_73 (Gast)


Lesenswert?

Amateur schrieb:
> aber gab es nicht mal einen sogenannten
> schnellen Interrupt.

Ich kenne das mit den Interrupts nur so das sie grösser der maximalen
Zyluszeit liegen müssen. Sonst kann der Aufruf nicht garantiert werden.

Sonst stimme ich Amateur zu, die Zykluszeit ist x2 zu nehmen.

Als Versuch könnte man den Ausgang lesen, bei "0" auf "1" steuern.
im nächsten Zyklus wieder lesen und auf "0" steuern.
Alles im OB1 programmieren.

Als  AWL:

un a 100.0
=a 100.0
***

Hiermit müsstge die maximale mögliche Frequenz erreichbar sein.

von BirgerT (Gast)


Lesenswert?

Bei mir ist's schon 25 Jahre her mit S5 Programmierung..

Damals gab es einen Befehl, mitten im Zyklus das Prozeßwort 
direkt/sofort zu schreiben.
Ob das jetzt ein Systembefehl (wie TAK) oder normale AWL war, weiß ich 
nicht mehr.

Damals - da hatte man Zykluszeiten von 450ms..550ms; und Ohweh, wenn es 
mal 700ms waren, dann hüpfte das Material aus dem Aufzug oben wieder 
raus..

Zeitkritische Programmteile waren dann in einem PB programmiert, der 
dann mehrmals pro Zyklus (OB1) aufgerufen wurde, und eben dieses direkte 
Peripheriewort Schreiben (und Lesen?).

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.