Step 7 Step7 PEW oder akku bitweise auslesen

schneijo

Level-2
Beiträge
69
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, wie kann man ein PEW oder den Akku1 bitweise auslesen? Ich möchte einzelne Bits aus den Prozesseingangswörtern auswerten. Die PEW´s können recht einfach in den Akku oder in Lokaldaten eines FC´s geschrieben werden. Nur wie spreche ich die einzelnen Bits an? Vielen Dank und viele Grüße schneijo
 
OK, ansprechen eines Bits aus PEW4000 geht ja eigentlich ganz einfach:

U E 4000.0

oder ist der Eingangsbereich nicht gleich dem Prozesseingangsbereich?
Was ist also der unterschied zwischen

L PEW 4000
&
L EW 4000

Wenn es einen Unterschied gibt, wie komme ich dann an Bits aus dem PEW?
Die Bits aus EW kann ich ja sehr einfach über U E 4000.1 ansprechen.

Grüße Johannes
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo.

Also ich leg dazu ein Array an mit [0..7] oder [0..15] of Bool.
Dann lese ich die PEB / PEW mit folgenden Code ein:

Code:
      LAR1  P##PEWxy
      L     PEB  329
      T     B [AR1,P#0.0]

Dann kannst du ganz normal darauf zugreifen.

Also Eingang E329.0 wäre dann PEWxy[0].

Code:
U PEWxy[0]
= irgendwas

Gruß
 
OK, ansprechen eines Bits aus PEW4000 geht ja eigentlich ganz einfach:

U E 4000.0

oder ist der Eingangsbereich nicht gleich dem Prozesseingangsbereich?
Was ist also der unterschied zwischen

L PEW 4000
&
L EW 4000

Wenn es einen Unterschied gibt, wie komme ich dann an Bits aus dem PEW?
Die Bits aus EW kann ich ja sehr einfach über U E 4000.1 ansprechen.

Grüße Johannes


Also der unterschiet ist der das du mit EW auf das Eingangswort zugreifst das durch das Prozessabbild aktualisiert wird!
Mit PEW jedoch greift du auf den aktuellen Zustand des EW zu! Somit auf den Zustand an der aktuellen Code Position.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
das PEW100 mußt du schon direkt laden ( L PEW100) und in dem kannst du auch ganz sicher so auf die Bits zugreifen(U E100.0), da das unter Garantie im Prozessabbild liegt.
In dem Beispiel von SCM ist PEWxy das in den Lokaldaten deklarierte Array ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Peripherieadressen außerhalb des Prozessabbildes können nicht bitweise angesprochen werden. Sie müssen zunächst in der in HW Konfig festgelegten Modulgröße bzw. Konsistenzgröße eingelesen werden (L PEW, L PED, SFC14) und können danach auf die einzelnen Bits getestet werden, z.B. mit einer Bitmaske.

Harald
 
Anwendung findet meine Methode dann wenn ich Bausteine nicht im OB1 aufrufe sondern in Weckalarmen!
Da will ich ja nicht die Eingänge vom Prozessabbild aktualisiert haben sondern am Anfang des aufgerufenen Baustein.
Ebenso werden die Ausgänge so am Ende des Bausteins geschrieben da dann auch direkt auf das PEB bzw. PEW.

Oder verwendet ihr in den Weckalarm Bausteinen auch die E/A vom Prozessabbild des OB1???

Gruß
 
Zuletzt bearbeitet:
Oder verwendet ihr in den Weckalarm Bausteinen auch die E/A vom Prozessabbild des OB1???
Jo, prinzipiell erstmal ja. Kommt aber immer drauf an, was Du warum machen willst.

Gibt ja auch noch TPA, welche man einem Weckalarm zuordnen kann.

Direkt die Peripherie lesen ist etwas "aktueller" Da ja seit dem letzten OB1-Beginn ja schon evtl. einige ms vergangen sind. Auf der anderen Seite sind die mit PEW zu verschiedenen Zeitpunkten des Zyklus gelesenen Eingänge somit nicht "konsistent" Wenn Du z.B. 2 mal PEW0 im selben Zyklus liest, kann es sogar sein, das die Werte unterschiedlich sind.

Also PEW verwende ich nur, wenn es auf die einige ms aktuellere Lesen/Schreiben ankommt. Oder bei alten CPU wo das Prozessabbild zu klein ist.

Gruß.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Genau um das gehts wenn es drauf ankommt.
Wenn ich Bausteine im 5ms Interrupt aufrufe will ich aktuelle Istzustände ddder Eingänge haben!
Und dann übernehme ich ahlt nur die eingänge die ich brauche! Ich mache ja nicht
Code:
L PEW 100
T EW 100

sondern so wie vorher von mir geschrieben!
Und dann auch nur bei Baustein Anfang die Eingänge und bei Ende die Ausgänge!
somit is während dem Baustein konsistent!
Da der Weckalarm ja eine höhere Priorität hat als der OB1.
TPA bei der 300 ist sehr eingeschränkt!!!

Gruß
 
Wenn ich Larry und auch andere hier früher schon richtig verstanden habe, wird durch L PEW100 auch das EW100 mitaktualisiert...

Ich nutze Weckalarme nur, wegen des konstanten Zyklus, da kommts mir meist nicht auf die "Aktualität" an. Weiterhin stehen in meinem OB1 meist nur 2-3 Codezeilen, so dass der OB1 ne Zykluszeit von weniger als 1ms hat. somit ist beim Aufruf des Weckalarms eh alles aktuell :)

gruß.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wo rufst du dann deine ganzen Bausteine auf??
Wenn nicht im OB1??
in den Weckalarmen... ist CFC bzw. PCS7 da ist das Standard. In den verwendeten Bausteinen/Bibliotheken sind halt viele Timer oder Berechnungen, welche die Sampletime benutzen: z.B.

Code:
zeit:= zeit+sampletime;

Gruß.
 
Ja gut dann reden wir von grundlegend verschiedenen Sachen!

Mein OB1 hat bis zu 30ms..

Dann gibts 5 bzw. 10ms Interrupt!!

Gruß
 
Man muss halt verstehen wies funktioniert, und dann schauen, was man machen will :)

Bei PCS7 laufen halt langsame Sachen (Temperaturmessungen) in z.B. 1000ms Weckalarmen und schnelle Sachen (Druckregelung) in z.B. 100ms Weckalarmen.

Hat alles seine Vor/Nachteile... Der Grund für die Weckalarme ist aber wie gesagt die Verwendung der Abtastzeit in den (SCL-)Bausteinen.

Gruß.
 
Hallo,
unabhängig davon, wie schnell der zeit-OB ist (bei mir ist der auch meißt schneller wie der OB1-Zyklus) kann ich ein PEW im Prozessabbild immer in das Prozessabbild aktualisieren - das schadet doch nichts (und das restliche zyklische Programm bekommt dann sogar ggf. noch etwas aktuellere Eingänge präsentiert) und stört auch keine mögliche Kapselung ...

Gruß
Larry
 
Das mache ich ungern!

Denn wenn der Zeit OB das restliche unterbricht! Ich dann im Zeit OB einen Eingang Aktualisiere der nicht nur dort verwendet ist könnte es je nach Programmierung Probleme im restlichen Programm geben!

Das funktionen ausgeführt werden aber nicht vollständig weil zwischen durch der Zeit OB einen anderen Zustand der Eingänge aktualisiert...

Gruß
 
Zurück
Oben