Hallo liebes SPS Forum,
ich bin Mechatronik Azubi im 2. Lehrjahr und habe ein Problem bei der Programmierung eines Programms für die Überwachung der Drehrichtung u. Drehzahl eines Drehstrommotors. Ich habe einen Motor auf eine Grundblatte montiert, und dazu zwei induktive Sensoren zur Auswertung der Drehrichtung u. der Drehzahl installiert. An der Welle des Motors habe ich eine Scheibe aus Kunststoff angebracht, an der an einer Stelle ein leitendes Blechteil angeschraubt ist. Im aktiven Betrieb läuft also das Stück Metall mit der Drehzahl x an meinen Sensoren vorbei, wodurch diese angesteuert werden.
Zum Realisierung benutze ich TiaPortal v13 und eine SPS vom Type CPU 314C-2 PN/DP. Das Programm für die Drehrichtungserkennung funktioniert, jedoch habe ich bei der Programmierung der Drehzahlüberwachung erhebliche Probleme.
Mein Programm soll folgende Funktion erfüllen:
Die Drehzahl, also die Nenndrehzahl des Motors, soll ausgelesen werde und im Fall einer Unterschreitung o. Überschreitung eines Sollwertes (den ich im OB angeben kann), soll eine Meldeleuchte dies melden. Diese Funktion soll im Betrieb des Motors durch einen Schalter aktiviert u. deaktiviert werden können.
Im Prinzip habe ich dies folgendermaßen realisiert: Ein Counter zählt über eine Zeit: X die Flanken meiner Sensoren (beide müssen aktiv sein). Die Werte werden in Vergleicher Bausteinen mit den Vorgabewerten verglichen und falls eine fehlerhafte Drehzahl vorliegt, wird die Meldeleuchte aktiviert. Diese wird wieder inaktiv, wenn in der nächsten "Auswertungsphase" die Drehzahl korrekt ist.
Ich wollte das Programm testen, jedoch erwies es sich als fehlerhaft. Im Anhang finden Sie Screenshots meines Funktionsbausteines und des OBs.
Der Zähler in Kombination mit dem Zeitglied funktioniert, heißt es werden 3s lang die eingehenden Flanken gezählt, bis die Zeit t abgelaufen ist. Daraufhin setzt sich das Zeitglied samt Counter zurück und die Auswertung beginnt von vorne. Im Moment des Setzens des Ausgang Q am Zeitglied in NW1, soll "tonZeitglied" (Q) in NW2 das Ergebnis der Vergleicher abfragen, wodurch die Meldeleuchte gesetzt o. rückgesetzt wird. (Beachte Screenshots im Anhang)
Ich habe den Verdacht, dass in NW1 nach dem Setzen von "tonZeitglied", das Signal Q nicht mehr in NW2 bei den Vergleicher Bausteinen "ankommt".
Ebenfalls gilt dies für die Zählerwerte,...
Generell vermute ich also, dass der Ausgang Q des Zeitbausteines aus NW1 nicht mehr in NW2 anliegt.
Ebenfalls, da ich versucht habe dies mit einem Speicherglied zu "fixen" indem ich das Signal von Q für NW2 speichere (nicht im Screenshot vorhanden), wurde mir im Diagnosefenster angezeigt, dass das von mir verwendete Gerät nicht in der Lage sei zwei Datentypen (ich vermute Int des Zählers und Time des Zeitbausteines) gemeinsam zu verarbeiten.
Mich würde daher brennend interessieren, ob der Fehler programmier- oder systembedingt ist und ob ich mit meiner Diagnose richtig liege.
Ich hoffe Sie können mir weiterhelfen, ich bin offen für alle Verbesserungsvorschläge. Meine Ausbilder haben nicht wirklich Zeit und meine Lehrer sind nicht in der Lage einen ausreichenden Unterricht zu führen. Ich bringe mir also sozusagen alles selber bei. Ich wäre ebenfalls sehr interessiert, wie ein Erfahrener Programmierer diese Aufgabe angehen würde und ob ich auf dem richtigen Weg bin...
Vielen Dank im voraus
Azubi94
ich bin Mechatronik Azubi im 2. Lehrjahr und habe ein Problem bei der Programmierung eines Programms für die Überwachung der Drehrichtung u. Drehzahl eines Drehstrommotors. Ich habe einen Motor auf eine Grundblatte montiert, und dazu zwei induktive Sensoren zur Auswertung der Drehrichtung u. der Drehzahl installiert. An der Welle des Motors habe ich eine Scheibe aus Kunststoff angebracht, an der an einer Stelle ein leitendes Blechteil angeschraubt ist. Im aktiven Betrieb läuft also das Stück Metall mit der Drehzahl x an meinen Sensoren vorbei, wodurch diese angesteuert werden.
Zum Realisierung benutze ich TiaPortal v13 und eine SPS vom Type CPU 314C-2 PN/DP. Das Programm für die Drehrichtungserkennung funktioniert, jedoch habe ich bei der Programmierung der Drehzahlüberwachung erhebliche Probleme.
Mein Programm soll folgende Funktion erfüllen:
Die Drehzahl, also die Nenndrehzahl des Motors, soll ausgelesen werde und im Fall einer Unterschreitung o. Überschreitung eines Sollwertes (den ich im OB angeben kann), soll eine Meldeleuchte dies melden. Diese Funktion soll im Betrieb des Motors durch einen Schalter aktiviert u. deaktiviert werden können.
Im Prinzip habe ich dies folgendermaßen realisiert: Ein Counter zählt über eine Zeit: X die Flanken meiner Sensoren (beide müssen aktiv sein). Die Werte werden in Vergleicher Bausteinen mit den Vorgabewerten verglichen und falls eine fehlerhafte Drehzahl vorliegt, wird die Meldeleuchte aktiviert. Diese wird wieder inaktiv, wenn in der nächsten "Auswertungsphase" die Drehzahl korrekt ist.
Ich wollte das Programm testen, jedoch erwies es sich als fehlerhaft. Im Anhang finden Sie Screenshots meines Funktionsbausteines und des OBs.
Der Zähler in Kombination mit dem Zeitglied funktioniert, heißt es werden 3s lang die eingehenden Flanken gezählt, bis die Zeit t abgelaufen ist. Daraufhin setzt sich das Zeitglied samt Counter zurück und die Auswertung beginnt von vorne. Im Moment des Setzens des Ausgang Q am Zeitglied in NW1, soll "tonZeitglied" (Q) in NW2 das Ergebnis der Vergleicher abfragen, wodurch die Meldeleuchte gesetzt o. rückgesetzt wird. (Beachte Screenshots im Anhang)
Ich habe den Verdacht, dass in NW1 nach dem Setzen von "tonZeitglied", das Signal Q nicht mehr in NW2 bei den Vergleicher Bausteinen "ankommt".
Ebenfalls gilt dies für die Zählerwerte,...
Generell vermute ich also, dass der Ausgang Q des Zeitbausteines aus NW1 nicht mehr in NW2 anliegt.
Ebenfalls, da ich versucht habe dies mit einem Speicherglied zu "fixen" indem ich das Signal von Q für NW2 speichere (nicht im Screenshot vorhanden), wurde mir im Diagnosefenster angezeigt, dass das von mir verwendete Gerät nicht in der Lage sei zwei Datentypen (ich vermute Int des Zählers und Time des Zeitbausteines) gemeinsam zu verarbeiten.
Mich würde daher brennend interessieren, ob der Fehler programmier- oder systembedingt ist und ob ich mit meiner Diagnose richtig liege.
Ich hoffe Sie können mir weiterhelfen, ich bin offen für alle Verbesserungsvorschläge. Meine Ausbilder haben nicht wirklich Zeit und meine Lehrer sind nicht in der Lage einen ausreichenden Unterricht zu führen. Ich bringe mir also sozusagen alles selber bei. Ich wäre ebenfalls sehr interessiert, wie ein Erfahrener Programmierer diese Aufgabe angehen würde und ob ich auf dem richtigen Weg bin...
Vielen Dank im voraus
Azubi94