Signalerfassung durch Mehrfachaufruf

homei

Level-1
Beiträge
100
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe das Problem, dass ein Lichtschrankensignal nur für 8 ms zur Verfügung steht. Aufgrund der Zykluszeit klappt es nicht, daß Signal sauber zu erfassen. Das Signal steht über Profibus als PEW zur Verfügung. Macht es Sinn, dieses in einem Zyklus (z.B. im OB1) mehrfach abzufragen? Wie lange dauert die Abfrage eines PAW (CPU 314, Bus 187 kbit/s bzw. 1,5 Mbit/s)

MfG homei
 
Was hast du denn da für ne Lichtschranke?
Ich kenne die meisten nur so dass die per Rädchen ne Signal-Verlängerung erlauben, so dass dein 8 ms Signal dann einstellbar bis zu max. 30 sec anstehen bleiben würde... (IFM zum Beispiel)
 
Relativ einfach kannst du deine Abfrage realisieren, wenn du nen Weck-OB (z.b.: OB35) dafür benutzt und den auf 6 oder 7 ms setzt.

Generell würde ich aber eher davon abraten weil diese Aufrufe die Gesamt-Ausführungszeit deines Programmes sehr in die Höhe schrauben.
 
Danke für den Hinweis,

jetzt kommt's noch anders:
Ich muss prüfen, ob in einem Zyklus die Lichtschranke garnicht, einmal oder mehrmals ausgelöst wurde. Das ist wahrscheinlich auch der Grund, weshalb der Impuls nur 8 ms lang ist.
Wie kann man das machen? Läßt sich das irgendwie vernünftig abfragen und dann zählen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
also über pb ist das mal sowieso ein problem. du musst die zykluszeit des bussen bedenken.
schau mal in der hw-konfig ob der eingang einen prozessalarm auslösen kann.
ansonsten evtl ein baugruppe setzen die das kann.
im alarm ob einen zähler hochzählen
am anfang des ob1 deinen zähler rücksetzen. am ende den zähler auslesen
 
Vielen Dank Volker,

jetzt habe ich erst mal die Richtung und muss die HW erweitern.

Das müssste ja mit einer 6ES7 321-7BH00-0AB0 (DI 16xDC24V, mit Prozeß- und Diagnosealarm) zu machen sein.

Einen Alarm-OB habe ich bisher noch nicht verwendet. Da muss ich erst mal sehen, welchen OB ich benutzen kann. In der verwendeten CPU (315 - PN/DP) sind alle bis auf OB 35 inaktiv. Den muss ich dann sicherlich verwenden und in dem OB den Zähler programmieren.

Ich gehe davon aus dass ich in der Eingangskarte den Prozessalarm für den entsprechenden Eingang aktivieren mus und dann der OB bei eíntreffen des Signals aufgerufen wird und damit das Problem erledigt ist. Oder ist das falsch?

MfG homei
 
nein. der ob35 ist ein weckalarm der zyklisch im eingestellten intervall aufgerufen wird.

bei der s7-300 wird der ob40 aufgerufen.

erzeuge mal einen ob40, geh drauf und drücke f1
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich gehe davon aus dass ich in der Eingangskarte den Prozessalarm für den entsprechenden Eingang aktivieren mus und dann der OB bei eíntreffen des Signals aufgerufen wird und damit das Problem erledigt ist. Oder ist das falsch?

soweit richtig, wenn ich mich nicht irre musst du den OB 40 verwenden.

EDIT: Volker war schneller
 
Hallo,
Ich danke Euch beiden.

Der OB40 scheint genau richtig zu sein. Brauch ich nun im OB 40 bei jedem Aufruf nur meinen Zählerwert zu erhöhen oder muss ich noch was beachten. (Prozessalarm auf der Eingangskarte habe ich schon aktiviert).
 
mehr brauchst du nicht machen.
sowenig code wie möglich, damit der ob schnell wieder verlassen wird, denn sollte deine ls einen neuen alarm auslösen während der ob40 bearbeitet wird, so geht dir dieser alarm verloren.
das kann man schön in der hilfe zu diesem baustein sehen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank Volker für Deine Hilfe.

Hast du einen Tipp, was zeitlich der kürzeste Code zur Ereigniszählung in diesem Fall sein könnte könnte. Eine Abfrage nach dem Eingang brauche ich doch nicht mehr zu machen, so lange ich den OB 40 nicht noch anderweitig nutze.

MfG homei
 
wenn der ob40 nur für diese einen eingang genutz wird, brauchst du die lokaldatenvariablen (wo ja steht wer´ausgelöst hat) nicht auszuwerten.

L MW 100
+ 1
T MW 100

du kannst aber auch in DW's schreiben.
das dauert zwar etwas länger aber wir sprechen hier von microsekunden je befehl ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
kleiner Hinweis noch am Rande: wenn im zyklischen Programm dann soetwas steht wie
Code:
L MW100
... // tue irgendwas
L 0
T MW100
kann es passieren, dass ein OB40-Aufruf, der zwischen L MW100 und T MW100 statt findet, vom zyklischen Programm (hochsporadisch) nicht erfasst wird.

Falls dies ein Problem darstellt, kann das mit SFC39-42 behoben werden.
 
Zurück
Oben