Step 7 Inkrementalgeber "simulieren" als Takt für eine Messung

Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,
ein 64mm Artikel benötigt bei hoher Geschwindigkeit 130ms.
Das würde bedeuten das ein 5mm kleinerer Artikel ca. 120ms benötigt. Das scheint mir schwierig zu werden zu unterscheiden. Ich werde in der nächsten Nachtschicht mal einen SFC64 in einen OB35 und oder OB40 legen. Mal sehen was so geht. Ich habe es nur kurz getestet und mir scheint das es in der Anzeige auch nur in 10ms Schritten geht. Ich habe zb im OB40 1s000ms und als nächstes wieder 1s000ms und dann 1s010ms. Zb 1s005ms habe ich nie gesehen. Also entweder keine Äbderung oder wieder 10ms.
 
Zuletzt bearbeitet:
Der Aufrufzyklus der Zeitmessung muss ntürlich 1ms sein, wenn zeitgesteuert bzw. die Interruptbearbeitung der Lichtschranken muss höher sein als das Prozess-Programm.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe die LS auf einen Interrupteingang gelegt(E124.0). Die Verzögerung habe ich bei Standartmäßig bei 3ms gelassen. Dann im OB40 den Eingang einmal mit pos. und einmal mit neg. Flanke auf jeweils einen SFC64 gegeben. Die 1000stel Sekunden Stelle ist immer bei 0. Ich habe nie 1s002 oder so. Immer 1s000ms, 1s010ms, 1s020ms.
Oder liegt das an der Flankenauswertung die ich mit drin habe?
 
Nochmal: Was für eine S7-300 hast Du genau? Bei manchen älteren CPU liefert der SFC64 die Zeit nur mit einer Auflösung von 10ms.

Fragst Du im OB40 die OB-Startinfo welcher Eingang den OB40 ausgelöst hat ab oder direkt die Peripherie PEW124? E124.0 darfst Du nicht auswerten, weil der im PAE liegt, was nur im Rhythmus des OB1 aktualisiert wird.

Harald
 
Hallo Harald,
eine 313C. Aber :icon_redface: die Nachtschicht ist vielleicht auch nicht optimal zum denken. „Natürlich“ habe ich E genommen und nicht PEW
Ich teste das heute Nacht nochmal.

Vielen Dank schon mal an alle die mir hier so fleißig helfen!

Michael
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich glaub ich würde da direkt auf die FM-Baugruppe ausweichen. Die hat extra dafür Eingänge um die Tore zum Zählen zu starten / zu stoppen. Selbst wenn das jetzt nur zum Spielen ist. Später wirst du es höchstwahrscheinlich sowieso brauchen.

-chris
 
Ich würde da eine alarmfähige Eingangsbaugruppe nehmen, die Flanken der LS lösen dann einen Alarm-OB (OB 40 wenn ich mich recht erinnere) aus, und dann in dem OB den Zeitstempel auswerten.

Frank
 
Zeitmessung im OB40

Hallo Michael

wenn ich zweimal frage "welche S7-300 genau" dann meine ich eigentlich eine Anwort wie: "6ES7 313-.....-.... Firmware Vx.y.z"
Entschuldige, daß ich das nicht so i...sicher dazugeschrieben hatte. ;)


Hier ein Beispiel für eine Zeitmessung im OB40 (Dauer eines 1-Signals) Dazu löst der E124.0 bei steigender und fallender Flanke einen Prozessalarm (den OB40) aus:
Code:
//OB40: Zeitmessung E124.0
      L     #OB40_IO_FLAG
      L     B#16#54                     //Eingangsbaugruppe PE...
      <>I
      SPB   ENDE

      L     #OB40_MDL_ADDR
      L     124                         //E 124
      <>I
      SPB   ENDE

      L     #OB40_POINT_ADDR
      UD    DW#16#1                     //E124.0 hat OB40 ausgelöst?
      SPZ   ENDE

//E124.0 hat OB40 ausgelöst ...
      L     PEW  124
      UW    W#16#100                    //2#00000001_00000000 E124.0
      U     <>0                         //... und ist jetzt 1 ?
      =     #FP                         //steigende Flanke

      CALL  "TIME_TCK"                  //SFC64 Systemzeit lesen
       RET_VAL:=#TIME_TCK

      L     #TIME_TCK                   //0 bis max. 2.147.483.647 ms
      U     #FP                         //steigende Flanke?
      SPBN  MDIF
      T     "Time_Start_ms"             //Anfangszeit merken (z.B. in einem MD... oder DBx.DBDy)
MDIF: L     "Time_Start_ms"
      -D
      SPPZ  MTIM                        //TIME_TCK Überlauf?
      +     L#-2147483648               //= DW#16#80000000
MTIM: T     "Time_ms"                   //Zeitdauer (z.B. MD... oder DBx.DBDy)

ENDE: SET

Nachtrag: siehe hier für das Programmbeispiel in einer in KOP/FUP darstellbaren Variante
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Michael

wenn ich zweimal frage "welche S7-300 genau" dann meine ich eigentlich eine Anwort wie: "6ES7 313-.....-.... Firmware Vx.y.z"
Entschuldige, daß ich das nicht so i...sicher dazugeschrieben hatte. ;)

Harald

Oh Gott, ja sorry. 313-5BE01-0AB0 V2.0.11
Vielen Dank für den Code, ich hoffe ich komme die Nacht dazu, dann teste ich das gleich mal!

Michael
 
Dachte ich es mir doch, daß Du mit so einem ollen Schätzchen experimentierst... :cool:
Bei Deiner CPU hat SFC64 "TIME_TCK" nur 10 ms Granularität.
1 ms Granularität gibt es bei S7-300 erst ab Firmware V2.6 z.B. ab 313-5BF03 (der Nachfolger Deiner CPU)

Harald

Guten Morgen,
zu dem Ergebnis zu dem Du wahrscheinlich durch wissen/lesen gekommen bist, bin ich dann in der Nacht durch testen gekommen. Dein Code hat, wie erwartet, sehr gut Funktioniert.
Dann muss ich mal sehen wie weit ich so komme. Sonst muss ich offizell etwas besorgen lassen, dann vielleicht gleich mit Inkrementalgeber.

OK, dann danke ich allen recht herzlich für die Hilfe bei meinem Problem

Viele Grüße

Michael
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
ist die systemzeit der cpu auch nur auf die 10ms genau oder dort auf 1ms?

einfach mal im ob1
L LB 18 //milisekunden (zehntel und hundertstel)
BTI
L LB 19 //linke tetrade: milisekunden (tausendstel); rechte tetrade: wochentag 1=sonntag
L W#16#F0
UW
BTI
 
Tip: wenn man im OB40 testweise mit der Uhrzeit arbeiten will, dann kann man direkt #OB40_DATE_TIME auswerten
Code:
L LW18        //ms + Wochentag von #OB40_DATE_TIME
SRW 4
BTI
T #MyTime_ms  //0 .. 999 ms


Ich habe hier eine 314C-2DP (314-6CF00) V1.0.5
- SFC64 TIME_TCK liefert nur 10ms Auflösung
- SFC1 READ_CLK und #OBxx_DATE_TIME liefern 1ms Auflösung

Harald
 
Zurück
Oben