Step 7 El.Arbeit von S0 Schnittstelle Berechnen.

knollsimi

Level-1
Beiträge
81
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo freunde.

Ich bin gerade an einem Projekt mit einer S7- 315 eine S0 Schnittstelle auszuwerten. Die Impulse der Schnittstellen kommmen im 1,5sekunden Takt (also kein Problem für die Eingangskarte).
Die Momenatne Leistung habe ich schon ausgewertet, möchte jedoch noch die El.Arbeit berechnen.
Ich habe mit das inzwischen so gedacht: Die Impulspause zeit (impulszeit bis der nächste Impuls kommt, ist 300KW) plus die 300KW pro Impuls. Warum kann ich dann nicht wie folgt vorgehen?

U E0.1
L MD 214
L 300.0
+R
T MD 214

Mir wird im MD 214 nicht immer die 300.0 Addiert. Sporadisch einmahl mehr und einmal weniger.
Muss ich das Ergebnis in ein anderes MD zwischenspeichern?
Wie könnte ich das Lösen?

Danke und LG
 

Anhänge

  • Ell.Arbeit berechenen.PNG
    Ell.Arbeit berechenen.PNG
    4,5 KB · Aufrufe: 16
Stichwort Flanke für den Impuls.
Im Augenblick ist es so, wenn der Impuls im nächsten Zyklus noch ansteht (keine Ahnung wie lang der ist), wird nochmal 300 addiert, obwohl Du nur einen Impuls hattest.
Befass Dich bitte mit dem Thema Flankenauswertung.
Snippets sollte die SUFU mehr als genug liefern.

Ansonsten hast Du hoffentlich keine Adressüberschneidungen. MD214 belegt MB214,215,216 und 217 bzw. MW214 und 216.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Es ist außerdem eher suboptimal Zähler mit REAL zu realisieren, irgendwann gehen die 3E+2 im Exponenten der großen Zahl verloren.
Zähle einfach die Impulse, wenn es ganz einfach und struckturiert sein soll mit den IEC CTU.

Zur Anzeige mit irgend einem Zählerfaktor multiplizieren kannst du das dann hinterher immer noch.

P.S. So ganz nachvollziehbar, weswegen du in der Lage bist aus dem Zeitabstand der Pulse eine Leistung zu berechnen, jedoch an einem simplen Zähler scheiterst, kann ich derzeit auch nicht so wirklich ...
 
Ich bin gerade an einem Projekt mit einer S7- 315 eine S0 Schnittstelle auszuwerten. Die Impulse der Schnittstellen kommmen im 1,5sekunden Takt (also kein Problem für die Eingangskarte).
Es ist auch nicht nur der Takt das Problem, sondern meistens die Pulsdauer. Wenn nach Norm, dann darf diese bis zu 30 ms "kurz" sein, je nach Zykluszeit kann das schon zu kurz sein. Ich hatte auch schon Geräte, da war die Pulsdauer noch kürzer eingestellt, konnte man aber anpassen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es ist auch nicht nur der Takt das Problem, sondern meistens die Pulsdauer. Wenn nach Norm, dann darf diese bis zu 30 ms "kurz" sein, je nach Zykluszeit kann das schon zu kurz sein. Ich hatte auch schon Geräte, da war die Pulsdauer noch kürzer eingestellt, konnte man aber anpassen.
Genau das ist ja in seiner FehlerBeschreibung auch enthalten:
Mir wird im MD 214 nicht immer die 300.0 Addiert. Sporadisch einmahl mehr und einmal weniger.
Mal mehr (zu langer Impuls) und mal weniger (zu kurzer Impuls).
Der mal zu lange und mal zu kurze Impuls liesse sich - selbst bei einer konstanten ImpulsDauer - durch eine stark schwankende ZyklusZeit erklären.
Mal ist die Zeit von zwei aufeinander folgenden Zyklen zu kurz, um (ohne FlankenErkennung) nicht mehr als nur einen einzigen Impuls zu zählen,
Mal ist die ZyklusZeit zu lang, um überhaupt einen Impuls zu erkennen.
 
Es ist außerdem eher suboptimal Zähler mit REAL zu realisieren, irgendwann gehen die 3E+2 im Exponenten der großen Zahl verloren.
Zähle einfach die Impulse, wenn es ganz einfach und struckturiert sein soll mit den IEC CTU.

Zur Anzeige mit irgend einem Zählerfaktor multiplizieren kannst du das dann hinterher immer noch.

P.S. So ganz nachvollziehbar, weswegen du in der Lage bist aus dem Zeitabstand der Pulse eine Leistung zu berechnen, jedoch an einem simplen Zähler scheiterst, kann ich derzeit auch nicht so wirklich ...
Stichwort Flanke für den Impuls.
Im Augenblick ist es so, wenn der Impuls im nächsten Zyklus noch ansteht (keine Ahnung wie lang der ist), wird nochmal 300 addiert, obwohl Du nur einen Impuls hattest.
Befass Dich bitte mit dem Thema Flankenauswertung.
Snippets sollte die SUFU mehr als genug liefern.

Ansonsten hast Du hoffentlich keine Adressüberschneidungen. MD214 belegt MB214,215,216 und 217 bzw. MW214 und 216.
Adressüberschneidungen sind keine Vorhanden, schon überprüft,
Genau das ist ja in seiner FehlerBeschreibung auch enthalten:

Mal mehr (zu langer Impuls) und mal weniger (zu kurzer Impuls).
Der mal zu lange und mal zu kurze Impuls liesse sich - selbst bei einer konstanten ImpulsDauer - durch eine stark schwankende ZyklusZeit erklären.
Mal ist die Zeit von zwei aufeinander folgenden Zyklen zu kurz, um (ohne FlankenErkennung) nicht mehr als nur einen einzigen Impuls zu zählen,
Mal ist die ZyklusZeit zu lang, um überhaupt einen Impuls zu erkennen.
Wenn der Impuls zu kurz wäre dann könnte ich aber auch nicht die aktuelle Leistung berechnen. Diese stimmt mit dem Zähler überein. Adressüberschneidungen habe ich keine. Danke
 
Wenn der Impuls zu kurz wäre dann könnte ich aber auch nicht die aktuelle Leistung berechnen.
Stimmt, wenn der Impuls regelmässig zu kurz wäre, würdest Du die Impulse gar nicht oder bestenfalls sporadisch in der SPS wahrnehmen können.
Folglich wären die Werte, die Du ermittelst, in der Summe immer kleiner, als Du erwartest.
Diese stimmt mit dem Zähler überein.
Gilt diese Aussage erst jetzt, weil Du inzwischen die FlankenAuswertung eingebaut hast?
Oder hast Du mittlerweile den Tipp berücksichtigt, zum Aufsummieren keine REAL-Variable zu benutzen?
Oder beides?

Oder ist die Aussage aus Deinem Beitrag #1 ...
Mir wird im MD 214 nicht immer die 300.0 Addiert. Sporadisch einmahl mehr und einmal weniger.
... so zu verstehen, dass die "verpassten" Impulse und die doppelt gezählten im Endeffekt "die Waage halten" und dadurch zufällig doch immer richtig addiert wird?

Oder gibt es eine andere Erklärung - die Du uns vorenthältst - dafür, dass Dein Problem, das Du im Beitrag #1 schilderst, jetzt gar kein Thema mehr zu sein scheint? :unsure:

PS:
Adressüberschneidungen sind keine Vorhanden, schon überprüft,
Es waren schon viele davon überzeugt, dass sie überprüft haben und keine Überschneidungen feststellen konnten.
Und dennoch hatte sich irgendwo eine Überschneidung/DoppelBelegung "versteckt".
Man verzeihe uns deshalb bitte, wenn wir dieses Thema routinemässig "hochspielen".
Die Erfahrungen sprechen zumindest dafür, dieses Thema nicht leichtfertig zu verdrängen. ;)
 
Wenn Du oben prinzipiell die Impulse für die Arbeit aufsummierst, fehlt mir immer noch die Flanke. Bei kurzen Zyklen summierst Du sonst mehrfach.
Die Impulse bzw. die Anzahl der Impulse summiert er aber nur dann auf, wenn er mit FlankenAuswertungen arbeitet.
Ansonsten könnte ein und derselbe Impuls mehrfach gezählt werden.

Leider hat sich knollsimi nur zweimal geäussert.
In Beitrag #1 beklagt er ein Problem.
In Beitrag #7 lässt er durchblicken, dass das Problem eigentlich gar nicht existiert. :unsure:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich Flankenauswertung einbaue wird der die Addition gar nicht mehr erst Freigegeben.
Woran merkst Du das? Da die Addition nur in einem Zyklus ausgeführt wird, wirst Du das kaum beobachten können. Erhöht sich der Wert in MD214 nicht mehr? Ist vielleicht der M220.0 an der Programmstelle immer 1 ?

Harald
 
Sorry, AWL hab ich schon seeehr lange nicht mehr gemacht.
Gehört nach FP M220.0 nicht noch ein U M220.0 vor den bedingten Sprung?
Ich mein, da sollte bewusst ein VKE erzeugt werden, was Du weiterverwendest.

In AWL hab ich auf FP und FN immer verzichtet und die Flanke zu Fuß ausgewertet. Da sieht man das mit dem Gültigkeitsbereich des VKE IMHO besser.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber der M220.0 bleibt auf 0
Du beobachtest nur mit Deinen Augen? Und erwartest, daß Du so auch ganz kurze Pulse sehen kannst? :cool:
Wenn man ganz sicher sehen will, ob ein Bool-Wert sich kurz geändert hat oder nicht, dann ist ein bewährtes Vorgehen, den Wert auf einen (sonst unbenutzten) Zähler zu geben und schauen ob sich der Zählerwert ändert, z.B.:
Code:
U  M220.0
ZV Z1

Wie sieht der Code aus, der direkt vor Deinem Code steht? Nicht daß da vielleicht ein VKE verschleppt wird.
Wie groß ist die Zykluszeit Deines SPS-Programms?

Gehört nach FP M220.0 nicht noch ein U M220.0 vor den bedingten Sprung?
Der Code ist korrekt. Sehr wahrscheinlich programmiert der Kollege in FUP oder KOP und präsentiert uns hier die AWL-Ansicht des FUP/KOP-Codes.

Harald
 
Gehört nach FP M220.0 nicht noch ein U M220.0 vor den bedingten Sprung?
NEIN! M220.0 ist der Merker, der sich den Zustand von E0.1 für die Abfrage im nächsten Zyklus merken soll.
Ich mein, da sollte bewusst ein VKE erzeugt werden, was Du weiterverwendest.
Tut er ja sozusagen, indem er das VKE direkt nach dem FP auswertet, bevor es "verfälscht" werden kann.
In AWL hab ich auf FP und FN immer verzichtet und die Flanke zu Fuß ausgewertet. Da sieht man das mit dem Gültigkeitsbereich des VKE IMHO besser.
GeschmacksSache. Ich plädiere gern dafür, FlankenAuswertungen zu Fuss zu programmieren, damit man die Funktionsweise versteht und insbesondere die Bedeutung des "FlankenMerkers", hier der M220.0. Der FlankenMerker darf keinesfalls anderweitig verwendet/verändert werden.
 
Oh sorry. Ich sag ja, FP/FN hab ich nie verwendet.
Lag wahrscheinlich auch daran, dass ich AWL meist auf der S7-200 gemacht hab. Da war das Flankenhandling gewöhnungsbedürftig mit FP bzw P.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Habe jetzt mal alles in Fub ungewaldelt und um ganz sicher zu gehen alle Merker neu benannt und einen anderen Datentyp genommen… Abgesehen davon, dass mit klar war dass der Datentyp noch weniger weit zählen wird. Ich habe es sogar geschafft einen screenshot zu machen wenn der E0.1 1 wird. Also sollte der Impuls wirklich lang genug sein um ihn zu verarbeiten
 

Anhänge

  • 47805FD8-29C3-4CC9-B93F-0520A67059EE.jpeg
    47805FD8-29C3-4CC9-B93F-0520A67059EE.jpeg
    85,8 KB · Aufrufe: 23
Ich habe es sogar geschafft einen screenshot zu machen wenn der E0.1 1 wird. Also sollte der Impuls wirklich lang genug sein um ihn zu verarbeiten
An Deinem Screenshot sieht man doch, dass die 300 erfolgreich auf die 1604 addiert wurde, also die Addition einmalig aktiviert wurde.
Was willst Du mehr?
Der Impuls dürfte also lang genug sein, dass die CPU ihn wahrgenommen hat. Aber das heisst nicht, dass er lang genug ist um dies auch am Bildschirm anzuzeigen.

Die Darstellung auf dem Bildschirm ist so langsam im Vergleich zu den RechenOperationen der SPS, dass Du einerseits keine Wunder erwarten darfst, aber andererseits auch nicht alles auf die Langsamkeit Deiner Augen/Deines Gerhins schieben musst.
 
Zuletzt bearbeitet:
Zurück
Oben