Step 7 Verarbeitung von schnellen Signalen ( ca. 1-2ms )

Xplosion

Level-1
Beiträge
202
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

wir bauen eine recht alte Maschine um. Diese wurde vorher mit einer Überwachung ausgestattet.

Diese Überwachung hat die Aufgabe, an einer drehenden Verseilmaschine die einzelnen Adern zu erkennen.
Über einen Triangulationssensor werden die Adern durch ein kurzes Sprungsignal erfasst.
Der Triangulationssensor kann eigentlich eine Distanz erkennen (0-10V). Er hat aber zusätzlich zwei Digitalausgänge, die mit einem Schwellwert programmiert werden können.

Dieses Digitalsignal wird auf eine Siemens Logo gegeben (schneller Eingang).
Sobald eine Ader am Sensor vorbeikommt, springt das Analogsignal kurz hoch und der Digitalausgang wird geschaltet.

Die Logo überwacht dann auf eine bestimmte Anzahl von Adern pro Umdrehung ( Umdrehungssignal kommt von einen Induktionssensor).
Sollte die Anzahl nicht richtig sein, wird die Maschine gestoppt.



Die Steuerung funktioniert soweit.

Allerdings soll die Maschine jetzt elektrisch komplett erneuert werden. Dazu werde ich eine S7-300 einsetzen.
Möchte natürlich möglichst nur eine Steuerung verwenden.
Vermute aber, dass das gesamte S7-Programm von der Zykluszeit höher liegen wird als die der Siemens Logo.
Die Logo hat ja nur ein Programm für die Adernüberwachung. Die S7 bekommt aber ein komplettes Programm für die gesamte Maschine.

Bei sehr dünnen Adern reagiert der Triangulationssensor nur extrem kurz. Deshalb sollte der Sensor doch am besten Zykluszeitenunabhängig ausgewertet werden oder?

Wie würdet ihr vorgehen, um das Problem zu lösen?

Nochmal zu den Anschlüssen:

1x Umdrehungssignal Induktionssensor (gibt pro Umdrehung ein kurzes Signal, geschätzt ca. 50-500ms, je nach Geschwindigkeit)
1x Digitalsignal Triangulationssensor ( pro Ader wird ein Impuls ausgegeben, je schneller die Maschine fährt und je dünner die Adern, desto kürzer das Signal, vermutlich 1-2ms mininmal, da der Sensor eine Ansprechzeit von 1ms hat)

Es soll auf jeden Fall ausgeschlossen werden, dass ein Signal wegen der Laufzeit der SPS nicht erkannt wird.

Programmfunktion:

Digitaleingang Triangulationssensor geht auf einen Zählerbaustein
Bei steigender Flanke des Induktionssensors ( für eine Umdrehung ) wird der aktuelle Zählwert gespeichert und danach zurückgesetzt.
Stimmt der aktuell abgespeicherte Wert mit dem Überwachungswert überein, dann ist alles in Ordnung.
Falls nicht, muss ein Fehlerzähler aktiviert werden. Der Fehlerzähler wird um eins erhöht. Ist bei der nächsten Umdrehung wieder alles in Ordnung, wird der Fehlerzähler um eins erniedrigt. Erreicht der Fehlerzähler den Wert X (z.b. 5), dann soll die Maschine abschalten.
 
Zuletzt bearbeitet:
Grundsätzlich kannst Du die Sache so angehen:
"Normales" S7-Programm schreiben.

Einen Weckalarm programmieren (ab 1ms).
Dort das PEW der zu überwachenden Eingänge einlesen.
Dort Deine Funktionen& Überwachungen programmieren.
Reaktion aufs PAW schreiben.

Edit:
als DE kommt zB eine 6ES7321-1BH10-0AA0 in Frage.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Gibt es keine Probleme, wenn ich den Weckalarm alle 1ms aufrufe?

Das Programm im Weckalarm darf dann aber nicht länger als 1ms zur Abarbeitung dauern,sonst würde er sich ja selbst aufrufen.
Außerdem bleibt dann ja nicht mehr allzuviel Zeit fürs normale Programm übrig.

Zählerkarte könnte ich auf jeden Fall einsetzen. Wäre jetzt auch mein Favorit.

@larzerus
Habt ihr keine Probleme damit? Ich hab zuerst einen Lasertaster von IFM eingesetzt. Da es aber so viel unterschiedliche Farben gibt (schwarz, weiß, transparent) und auch unterschiedliche Querschnitte (0,14² bis 16²) habe ich auf den Sick Triangulationssensor umgerüstet.

Vorher lief das System zu 90 Prozent mit dem Lasertaster. Der Triangulationssensor schafft fast 100%


Wie habt ihr das gelöst?
 
Du könntest ja auch eine Steuerung wählen die etwas leistungsfähiger ist und
die Zykluszeit zu vernachlässigen ist.
Dann sollte er eher eine CPU313C oder CPU314C nehmen, die kosten zwar etwas mehr als eine 315, haben dafür aber schon Zähler und Alarmeingänge an Bord. Da hätte der TE sogar die Möglichkeit, zu testen, was besser passt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
das wäre auch mein Gedanke.
Wenn Siemens dann mit einer CPU, die einen Weckalarm unter 1 ms zuläßt (ich glaube, die 319 kann das).
Ansonsten gibt es da ja auch noch ganz andere Hersteller (z.B. Beckhoff).

Gruß
Larry
 
Ich verwende nur eine S7-kompatible CPU (Insevis).
Diese besitzt eine 315er CPU

Hab aber bereits ein Modul mit Zählereingängen für diese CPU.
Denke, dass ich das mit diesen Modul löse.

Wie funktioniert das eigentlich? Programmiere ich das Modul genauso im Step7 wie die anderen Module?

Also einfach einen Zählerbaustein nehmen und diesen mit dem Eingang vom Zählermodul belegen oder gibt es dafür dann eine spezielle Bibliothek?
 
Lad Dir am besten das Handbuch der Zählerbaugruppe von der Siemens-Seite herunter. Da ist alles erklärt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@larzerus
Habt ihr keine Probleme damit? Ich hab zuerst einen Lasertaster von IFM eingesetzt. Da es aber so viel unterschiedliche Farben gibt (schwarz, weiß, transparent) und auch unterschiedliche Querschnitte (0,14² bis 16²) habe ich auf den Sick Triangulationssensor umgerüstet.
Vorher lief das System zu 90 Prozent mit dem Lasertaster. Der Triangulationssensor schafft fast 100%

Wie habt ihr das gelöst?

Bei uns gibts nur Kupfer oder Alu und und Querschnitte unter 2mm² gibts auch nicht Seekabel und kein Klingeldraht :p

Für die FM350 gibts ne Software zum parametrieren kann man bei Siemens runter laden.
 
Zuletzt bearbeitet:
.

Ein Weckalarm startet unabhängig vom Prozess in
äquidistanten Zeitabschnitten und ist für die Anwendung
des TE´s wohl weniger geeignet.

Die Lösung mit dem Prozessalarm und mit einer
alarmfähigen Baugruppe, die diesen Prozessalarm
und die entsprechende Reaktion daruf auslösen kann,
ist ein besserer Weg.

Die Lösung mit einer eigenständigen (Zähler-) Baugruppe
würde ich auch favorisieren.

Gruss
 
Ich verwende nur eine S7-kompatible CPU (Insevis).
Diese besitzt eine 315er CPU

Hab aber bereits ein Modul mit Zählereingängen für diese CPU.
Denke, dass ich das mit diesen Modul löse.


Wie funktioniert das eigentlich? Programmiere ich das Modul genauso im Step7 wie die anderen Module?

Also einfach einen Zählerbaustein nehmen und diesen mit dem Eingang vom Zählermodul belegen oder gibt es dafür dann eine spezielle Bibliothek?

Trotz der nicht verfügbaren Suchfunktion auf der Seite
deines Herstellers/Lieferanten sind dort Bibliotheken zu
lokalisieren, in denen du sicherlich Anwendungsbeispiele
erhältst (habe aber nicht konkret nachgeschaut).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... wie auch immer - ob Weckalarm oder Prozessalarm - man braucht auf alle Fälle eine schnelle CPU. Ob eine 315 das zu leisten im Stande ist möchte ich gefühlsmäßig "ein bißchen" anzweifeln ... 8)

Gruß
Larry
 
Da der TE bisher nicht gesagt hat, wie hoch die Taktfrequenz ist, ist die FRage, wie schnell die CPU sein muss, reines Rätselraten.
 
Bin gerade am Überlegen, ob ich nicht doch einen Weckalarm programmiere.

Müsste nur rausfinden, wie kurz das Signal des Sensors sein kann.

Die Zeiten zwischen den Impulsen sind ca. 30-40ms. ( Die Maschine dreht ca. 0,8mal/s , Adern können max. 30 drauf, die Adern sind gleichmäßig verteilt --> 30-40ms)

Das heißt doch, ich könnte einen Weckalarm aufrufen (z.b. alle 2ms) und dort nur das PEW einlesen. Sollte das entsprechende Bit 0 sein, wird nichts unternommen.
Ist das Bit 1, dann setze ich einen Merker und spring dann aus den Weckalarm raus.

Im normalen Programm wird der Merker dann einfach abgefragt, ausgewertet und danach zurückgesetzt.
Da ja zwischen zwei Impulsen mindestens 30ms liegen, kann ich sozusagen in Ruhe im normalen Programm die Verarbeitung fortsetzen.

Somit würde der Weckalarm zwar alle 2ms aufgerufen, aber die Bearbeitungszeit liegt wegen des kurzen Programms im µs-Bereich. Dadurch hat die SPS dann annähernd 2ms Zeit, das normale Programme abzuarbeiten.
Schätze mal, dass ich am Ende der Programmierung eine Laufzeit von 5ms habe.

Dann wird der Weckalarm innerhalb des normalen Programmablaufs 2-3mal aufgerufen.


Das könnte so funktionieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das heißt doch, ich könnte einen Weckalarm aufrufen (z.b. alle 2ms) und dort nur das PEW einlesen. Sollte das entsprechende Bit 0 sein, wird nichts unternommen.
Ist das Bit 1, dann setze ich einen Merker und spring dann aus den Weckalarm raus.

Im normalen Programm wird der Merker dann einfach abgefragt, ausgewertet und danach zurückgesetzt.
Da ja zwischen zwei Impulsen mindestens 30ms liegen, kann ich sozusagen in Ruhe im normalen Programm die Verarbeitung fortsetzen.
Davon mal abgesehen, dass ich es für eine seltsame Vorgehensweise halte, das mit einem Weckalarm zu machen, da meiner Meinung nach die Prozessalarme für diese Fälle optimal sind, wird das so, wie Du es beschreibst - unabhängig von Weck-oder Prozessalarm - nicht funktionieren.
Wenn Du im Weck- (oder Prozess-) alarm einen Merker setzt, den Du im zyklischen Programm abfragst, dann wird es zwangsläufig so kommen, dass Du während eines Zyklus mehrere Alarm-OB-Aufrufe hast. Wie willst Du dann unterscheiden, wie oft Dein Signal gekommen ist? Mit Abfragen und Merker setzen ist es hier nicht getan.
 
Hallo,
ich muß auch sagen, das ich zu einem Weckalarm tendieren würde.
Hier würde ich auch das mit dem PEW so machen, wie vom TE beschrieben und das sollte bei den genannten Zeiten auch kein Thema sein.
Allerdings hat Michael damit Recht, das allein ein "Merker setzen" nichts bringt. Der OB muß dann etwas aufrufen (z.B. einen FB) der die Auswertung macht und am Ende dann sein Signal bringt.

Gruß
Larry
 
Zurück
Oben