TIA Einlesen von Frequenzausgängen ET200SP

Stefanyoo

Level-2
Beiträge
25
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe folgende Herausforderung und bin mir nicht sicher, ob das so funktionieren kann. Ich möchte von einem Durchflussmesser einen Frequenzausgang (1DI Standard von ET200SP) mit ca. 100Hz einlesen, bei Zykluszeit von ca. 50ms. Das sollte so nicht funktionieren. Gibt es noch eine andere Möglichkeit diese Frequenz einzulesen, unabhängig vom SPS Zyklus?

Ich würde mich sehr über eine Antwort freuen.

VG
 
Vielen Dank für die Hilfe.
@Holzmichl: Die Möglichkeit mit den Weckalarmen klingt gut. Mein Ziel ist es gar nicht die Impulse/Mengen zu zählen, sondern von 0..100Hz einen Leitwert von 0...50mS zu skalieren und sozusagen über die Frequenz den physikalischen Wert zu erhalten. Hast du da vlt. noch einen Einwand bzgl. Machbarkeit?
LG
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Einwand hab ich keinen, ob die Zykluszeit akzeptabel bleibt, hängt von der Anzahl der einzelnen Frequenzeingänge ab und von deiner CPU.
Ich hab sowas bei ner S7-1516F FW2.8 und 3 schnell eingelesenen Eingängen gemacht (aber mit mehr Auswertung) und hatte eine Erhöhung der Zykluszeit von ca 14-15ms auf 16-17ms gehabt.

Ich würde mir alle Sekunde den Wert in einen anderen Integer schieben und nullen.
Dann bist du aber immer eine Sekunde zu spät - ob das bei Dir funktioniert musst Du wissen.
 
Danke dir vielmals Michael, das hat mir weiter geholfen. Die "Verspätung" von 1 Sekunde ist nicht problematisch, genau wie Zykluszeit. Das ist bei unseren prozesstechnischen Anlagen eher zweitrangig :)
 
Wir bekommen bald die neuen Zählerkarten von Solidot für die XB6S Buskoppler mit Profinet oder Modbus TCP rein:

Die wären genau dafür ausgelegt, die sind extra für diese Anwendung entwickelt worden. Die haben 8 schnelle Zählereingänge (Einzelzähler) mit bis zu 1000 kHz und geben über Profinet oder Modbus direkt den Zählerwert und die aktuelle Frequenz aus.

Falls du Interesse hast, stellen wir gern mal einen zur Verfügung zum Testen, wenn die da sind. Das könnte deine Anwendung erleichtern.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mein Ziel ist es gar nicht die Impulse/Mengen zu zählen, sondern von 0..100Hz einen Leitwert von 0...50mS zu skalieren und sozusagen über die Frequenz den physikalischen Wert zu erhalten.
Das bedeutet, Du hast eine "MessVorrichtung", die einen Leitwert (bzw. Widerstand) misst und diesen in eine Frequenz umsetzt und ausgibt?
 
Hallo zusammen,

ich habe folgende Herausforderung und bin mir nicht sicher, ob das so funktionieren kann. Ich möchte von einem Durchflussmesser einen Frequenzausgang (1DI Standard von ET200SP) mit ca. 100Hz einlesen, bei Zykluszeit von ca. 50ms. Das sollte so nicht funktionieren. Gibt es noch eine andere Möglichkeit diese Frequenz einzulesen, unabhängig vom SPS Zyklus?

Ich würde mich sehr über eine Antwort freuen.

VG

Ich habe es so verstanden, dass du einen Durchflussmesser hast, der einfach einen 24 V DC Impuls pro Menge ausgibt, richtig? So einen haben wir schon mal in einem Projekt mit Öldosierung in der Lebensmittelindustrie bei einem Kunden gehabt. Der gibt dann z.B. 1400 Pulse pro Liter aus oder so? Ist es so ein Sensor?

Ist der PNP oder NPN? Bei uns war es damals NPN, das hatte uns überrascht und wir mussten es umverdrahten.
 
Einen Weckalarm OB auf 2ms stellen und in dem OB nur den Eingang mit : P einlesen, auf Flanke auswerten und per ADD-Befehl einen Wert erhöhen.
Alle weitere Auswertung im regulären Ablauf.
das macht aber nur Sinn, wenn man das Signal schneller als alle 2ms per Bus in die CPU eingelesen bekommt.
Daher die übliche Vorgehensweise, die Messung vorort (in einer Zählerklemme) machen und über Bus nur das Ergebnis abfragen. Dann reicht sicherlich eine Bus-Abfrage pro 200ms oder 1s aus.
 
Wir bekommen bald die neuen Zählerkarten von Solidot für die XB6S Buskoppler mit Profinet oder Modbus TCP rein:

Die wären genau dafür ausgelegt, die sind extra für diese Anwendung entwickelt worden. Die haben 8 schnelle Zählereingänge (Einzelzähler) mit bis zu 1000 kHz und geben über Profinet oder Modbus direkt den Zählerwert und die aktuelle Frequenz aus.

Falls du Interesse hast, stellen wir gern mal einen zur Verfügung zum Testen, wenn die da sind. Das könnte deine Anwendung erleichtern.
Bisher ist es nur eine einmalige Lösung für einen MIDM. Wenn wir das standardmäßig einsetzen würde ich gern nochmal Kontakt aufnehmen.
 
das macht aber nur Sinn, wenn man das Signal schneller als alle 2ms per Bus in die CPU eingelesen bekommt.
Daher die übliche Vorgehensweise, die Messung vorort (in einer Zählerklemme) machen und über Bus nur das Ergebnis abfragen. Dann reicht sicherlich eine Bus-Abfrage pro 200ms oder 1s aus.
Hi... Ist damit gemeint, dass man innerhalb von 2ms, bzw. 10ms in meinem Fall, das Ergebnis in ein Merkerword schreiben kann? Falls ja, wie lässt sich denn genau ermitteln, ob meine CPU das schafft? Gibt es da einen Parameter im Datenblatt?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
das macht aber nur Sinn, wenn man das Signal schneller als alle 2ms per Bus in die CPU eingelesen bekommt.
Daher die übliche Vorgehensweise, die Messung vorort (in einer Zählerklemme) machen und über Bus nur das Ergebnis abfragen. Dann reicht sicherlich eine Bus-Abfrage pro 200ms oder 1s aus.
Ich bin jetzt sehr einfach von der üblichen ET200SP-Station per Profinet ausgegangen mit einem DI 8 ST Modul, dass laut technischer Daten einen Signalwechsel innerhalb von 0,05ms erkennen kann (Entprellzeit der Karte justieren). Also von der HW überhaupt kein Problem, wenn man einen Peripherie-Zugriff auf den Eingang macht.
Wenn gefordert sind 100Hz zu erkennen, wäre das 1 Impuls alle 10ms. Da wären mir 5ms Takt zu grenzwertig, daher der Vorschlag mit 2ms.
Besser ist eine ET200SP 8xDI HighSpeed-Karte mit Betriebsart Zähler, das wäre dann ähnlich zu der von @spstiger beschriebenen Variante mit bis zu 10kHz.

(Zum mit Kanonen auf Spatzen kann man natürlich auch mit einer 24V-Counter-Karte arbeiten und Betriebsart Zählen oder Periodendauer einstellen. )
 
wie lässt sich denn genau ermitteln, ob meine CPU das schafft?
Das ist zunächst einfache Mathematik, die jeder Ingenieur oder SPS-Programmierer beherrschen und anwenden sollte.

Du hast in Beitrag #1 geschrieben, dass du über ET200SP (also Feldbus - Profinet? Profibus?) ein Signal von "ca. 100Hz" einlesen und die Frequenz messen willst "bei Zykluszeit von ca. 50ms". 100 Hz = Periodendauer 10 ms = alle 5 ms ändert sich das Signal. Das kann die SPS nicht normal erfassen bei 50 ms Zykluszeit - da können im ungünstigsten Fall 10 unerkannte Signalwechsel passiert sein. Also muss man irgendwie Zykluszeit-unabhängig messen - die klassische Aufgabe von schnellen Hardware-Zählern, die direkt in Hardware zählen und hochaufgelöst Zeit messen.

In gewissen Grenzen kann man noch tricksen und die SPS das Signal schneller erfassen als die Zykluszeit (z.B. mit einem Weckalarm OB). Das macht aber nur Sinn, wenn das Signal schneller an die SPS-CPU geliefert wird, als die SPS es auswerten will - Flaschenhälse Transport mit Feldbus und Signalerfassung mit Digitaleingang! Es macht keinen Sinn, ein Signal alle 2 ms zu lesen/abzutasten, wenn nur alle 20 ms ein neuer Zustand in der CPU ankommt. Also zunächst mal feststellen, wie schnell liefert der Feldbus in der Regel neue Signalzustände? Wie schnell erfasst der Digitaleingang (siehe dessen Datenblatt)? Falls das Profinet jede 1 ms aktualisiert und die Digitaleingangskarte die 1 ms auch schafft, dann kann man das Signal in der CPU alle 2 ms abtasten (wie in #3 vorgeschlagen). Du willst aber nicht einfach Impulse zählen, die mindestens 5 ms lang sind, sondern die Frequenz messen. Da musst du schon mal mindestens 1 s lang mitzählen, um zu erfassen, ob in der Sekunde 10 (±1) oder 100 (±1) Impulse waren. Da hast du eine Auflösung/Messunsicherheit von ±1 = 1 Hz. Brauchst du es genauer, dann musst du länger zählen - vielleicht 10 Sekunden lang? Kann dein Prozess so lange auf einen neuen Messwert warten? Ändert sich die Signalfrequenz in den 10 Sekunden? Frequenzmessung über Pulszählung erfasst die Durchschnittsfrequenz während der Messzeit. Reicht diese langsame Signalerfassung? Wenn nicht, dann musst du schneller erfassen und vorverarbeiten mit Hardware-Zählern. Das Messergebnis braucht dann nur z.B. alle 0,5 oder 1 Sekunden abgeholt werden und nicht jede ms. Und die CPU hat keinen Stress mit andauernden Programmunterbrechungen durch Weckalarme.

Hardware-Zähler zählen unabhängig von einer Abtastzeit und messen Zeit sehr hochaufgelöst in µs oder gar ns. Da wird ein genaueres Ergebnis schneller vorliegen. Jetzt also ins Datenblatt des Hardware-Zählers schauen, was der so kann.
 
Zuletzt bearbeitet:
muss der MID so viele Impulse liefer (und so schnell)? die Ausgänge von MID kann man doch meist in weiten Bereichen umparametrieren.

Du schreibst du benötigst die Werte nicht unmittelbar (>=1s ok)

Dann kann man den MID meist auch anders paramtrieren und mit ganz normalen DI einlesen.

Ich kenne das so:
aktueller Durchfluss wird als Analogwert (0(4)-20mA) erfasst -> schnell und passt
Die genaue Menge wird zB alle 10m³ als 10 Impulse mit ausreichend langsamer Impulszeiten ausgegeben -> "langsamer" DI reicht, die Genauigkeit liegt im MID

jetzt muss man nur den MID so parametrieren das die Werte zum Prozess passen
 
Zurück
Oben