Et200 L Pew T Ew

floppy

Level-1
Beiträge
86
Reaktionspunkte
16
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo S7-Profis.

Ich habe nicht wirklich ein Problem, ich bin nur neugierig. Und zwar habe ich neulich mal online in ein Programm einer 300er S7 geschaut und mich gewundert, das Eingänge an ET200-Stationen als Peripherieeingänge gelesen werden:

L PEW 1
T EW 1
U E1.0
UN M33.0
...
...
...
Bis jetzt dachte ich, das der Zugriff auf die Peripherie nur bei analogen Daten Sinn macht. Aber die Eingänge werden bitweise abgefragt. Bringt das vileicht Vorteile bei der Zykluszeit? Oder....?

Mit freundlichen Grüssen

Floppy
 
Hallo,

mit dem Befehl 'L PEW xx' holst Du die Daten direkt von der Karte
ab.

In deinem Beispiel hat jemand das Prozessabbild der Eingänge für EW1 selber aktualisiert.
Vor dem Aufruf von OB1 aktualisiert das Betriebssystem der CPU das Prozessabbild der Eingänge automatisch.

Die E/A-Bereiche für Analogperepherie liegen üblicher weise nicht im Bereich des zyklischen Prozessabbildes. Deshalb werden Analog-Eingänge mit dem Befehl 'L PEWxx' eingelesen.

MfG
manni199
 
Zuviel Werbung?
-> Hier kostenlos registrieren
L PEW 1
T EW 1

Bis jetzt dachte ich, das der Zugriff auf die Peripherie nur bei analogen Daten Sinn macht. Aber die Eingänge werden bitweise abgefragt. Bringt das vileicht Vorteile bei der Zykluszeit? Oder....?

Vorteile in der Zykluszeit, nicht wirklich

Sinn macht dieser Codeschnipsel z.b. bei der verwendung von Weckarlarmen (OB 35 usw.) die in kurzen Zeitabständen aufgerufen werden (kürzer als die OB 1 Zykluszeit) und in dennen Zeitkritische Funktionen laufen (z.B. schnelle Regler) die immer aktuelle Signale von den Eingängen benötigen.
 
Danke.
Nur, was bringt mir das für Vorteile? Bringt mir das Zykluszeitvorteile (Daten kommen über Profibus DP)? Warum werden die Eingänge nicht ganz normal angesprochen?
Maschine: PET-Füller mit Rinser für Getränkeabfüllung.
CPU: S7 315 2DP
DP: ET 200S

Danke.
 
Sorry, da hat jemand, während ich etwas geschrieben habe, einen Beitrag geschrieben. DANKE.
Ok.. Gibt es Bausteine die auf "interrupt" überwachen?

Davon abgesehen, macht es überhaupt Sinn etwas zu überwachen, das schneller als die Zykluszeit ist? Ich meine, kann eine S7 überhaupt sinnvoll auf PEW´s reagieren? Und interessenhalber: kann ich auf Peripherieausgänge schreiben ohne das die Zykluszeit Einfluss nimmt?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Davon abgesehen, macht es überhaupt Sinn etwas zu überwachen, das schneller als die Zykluszeit ist? Ich meine, kann eine S7 überhaupt sinnvoll auf PEW´s reagieren?

Ja klar macht das sinn, stell dir mal vor an einer "großen Anlage", hast du eine OB 1 Zykluszeit von 50 ms, hast dort aber einen Antrieb(Achse) der sehr genau geregelt werden muss. Dann kann man sowas zwar auf inteligente Antriebsregler auslagern, oder mit den Weckalarmen direkt in der SPS machen. Bei den Weckalarme die man z.b. alle 5ms startet, kann man aber nicht warten bis das Prozessabbild aktualisiert wird, man benötigt den aktuellen Zustand sofort, also direkt aus der Periferie lesen und schreiben.

Oder Anderes Beispiel: ein INI oder Lichtschranke die nur sehr kurz belegt wird, da reicht es manchmal nicht aus den Zyklisch abzufragen, den kann man dan in einem Weckarlarm abfragen(mit direktem Periferiezugriff).
(Für diesen Fall gibt es aber noch andere Möglichkeiten zur Verwirklichung)
 
Danke

Danke. Werde das mit Hilfe von Literatur ins Detail verfolgen.
Ich habe zwar mal 2 Semester Elotek studiert, aber ich bin trotzdem nur Instandhalter, der bei der Störungssuche den Ingeneurskram verstehen muss.
Danke!
 
Zuletzt bearbeitet:
Ok. Ich habe das heute noch einmal nachvollzogen. Im OB35 gibt es das "L PEW T EW" was mich so verwirrt hat. Sehe ich das richtig, das alle 30er OB´s Weckalarm-OB´s sind, welche alle X Sekunden quasi die zyklische Bearbeitung, also den OB1, unterbrechen um etwas abzufragen oder sonstwas zu tun. Und somit ja ohne den Zugriff auf die Peripheriedaten quasi nur "Konservendaten" aus dem Prozessabbild erhalten würden?

Sorry fürs nerven, aber wie schon geschrieben ist es nicht einfach als Instandhalter die, teilweise wahrscheinlich über Jahre perfektionierten, Programmierfähigkeiten von Profis bei der Störungssuche und bei evtl Änderungen zu verstehen.

:sb8:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo floppy,

dieses zusätzliche Einlesen der Peripheriedaten muss auch nicht unbedingt notwendig sein. Vielleicht wollte sich der Programmierer nur sicher sein, dass die Werte aktuell sind.
Oder er kommt noch aus alten SPS Zeiten, wo die Zykluszeit wesentlich länger sein konnte als heute bei einer normalen S7.
Die Zykluszeit zu wissen wäre interessant. Wenn der OB 35 in einem Zyklus mehrmals aufgerufen wird, macht es schon wieder Sinn.


Der OB 35 und alle anderen 30er OBs werden zyklisch (OB 30 = 5000ms bis OB 38 = 10ms Voreinstellung, das kann man auch ändern) aufgerufen. Der aktuelle Baustein wird unterbrochen. Der OB wird abgearbeitet (einschliesslich der dort aufgerufenen Bausteine. Dann wird das Programm an der Abbruchstelle fortgesetzt.
In anderen Welten nennt sich das halt Interrupt.
Man kann dies Funktion auch sperren, wenn man die Unterbrechung eines Bausteines vermeiden will.



Der LPEW T EW Befehl kann auch einen etwas kompliziteren Sinn haben:
Der OB 35 wird alle 100ms aufgerufen.

Sagen wir mal, Dein Programm hat eine Zykluszeit von 30 ms .
Ist zwar viel, macht's aber zum erklären einfacher.

Nach 3,3 Zyklen wird der OB 35 aufgerufen.
Nach 6,6 Zyklen wird der OB 35 aufgerufen.
Nach 9,9 Zyklen wird der OB 35 aufgerufen.
....

Beim Aufruf des OBs ist also irgendwann Dein Prozessabbild schon fast 30 ms "alt", also schon ein Drittel der Aufrufzeit des OB 35. Das kann schon Probleme verursachen.

Ist natürlich etwas vereinfacht, weil die Zyklen oft nicht exakt gleich lang sind.


Noch ne gaaaanz andere Idee::icon_idea:

Bei Inbetriebnahmen, wenn noch nicht alle Signale zur Verfügung stehen, mach ich auch schon mal sowas:

L PEW 0
L MW 0
UW
TEW 0

In einer VAT steuere ich dann die Bits im MW 0.
Dem Programm werden dann die Eingänge "vorgegaukelt" :D:cool:
Da werden jetzt bestimmt Viele :sm12:

Vielleicht ist das ein Überbleibsel von so was ähnlichem.
 
Vielen Dank!!!
Dann habe ich es verstanden. Warum der Programmierer das gemacht hat kann ich zwar nicht nachvollziehen, aber das ist mir eigentlich auch egal - ich muss ja nur grob verstehen.
Ein Überbleibsel ist das auf keinen Fall. Es handelt sich hierbei um Abfragen von Eingängen zur Überwachung.
 
Zuletzt bearbeitet:
Kann man mehrere periferie adressen in ein DB kopieren? wie geht das?
Ich habe Den Adressbereich von 340 - 403, geht das mit blockmove?
Danke im Voraus
HParsiegla
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kann man mehrere periferie adressen in ein DB kopieren? wie geht das?
Ich habe Den Adressbereich von 340 - 403, geht das mit blockmove?
Danke im Voraus
HParsiegla

Das könntest du z.b. so lösen:
Code:
      CALL    SFC   20
            SRCBLK  := P#E340.0 BYTE 64
            RET_VAL := MW98
            DSTBLK  := P#DB10.DBX 0.0 BYTE 64
Geht aber nur wenn der Addressbereich im Prozessabbild liegt.

Sonst kommt die Verwendung des SFC 14 in Frage (siehe dazu die Hilfefunktion von Step 7) oder auch dieses Siemens Beispiel
 
Zurück
Oben