Programmierungs-Problem

Seiten: 1 | (2)
Zurück zur Übersicht

Henning

08.01.10 21:20

Also, eine hardwaremäßige Änderung kommt leider nicht in Frage.

Das ganze muss sich im Programm abspielen.



Simon

08.01.10 21:30

Hat eine SPS eigentlich Timer?

Gruß

Simon

Henning

08.01.10 21:32

Alles was du brauchst, von Millisekunden bis Tage...

Simon

08.01.10 21:52

Dann ist es doch einfach, 50Hz sind ja kein Hexenwerk... Erster Impuls kommt, Timer starten und mit Ende des Impulses stoppen. Wenn im Bereich 50Hz (muß man dann anhand der Timerfrequenz umrechnen) dann irgend ne Variable hochzählen. Wenn nicht, dann Variable wieder auf Null. Schafft Dein Signal 100 mal dieses Kriterium zu erfüllen, dann war das Signal sauber. Und nen Ausgang auch zeitverzögert zu setzen, das mute ich Dir jetzt mal so zu.

Gruß

Simon

Henning

08.01.10 21:58

Ist das ganze Industrietauglich, und auch in Bezug auf Veränderungen im Signal durch Leitungskapazitäten umsetzbar? Deshalb wollte ich sparsam mit allem sein was mit Zeiten zu tun hat... bis auf die 2 Sekunden

Licht_tim

08.01.10 22:01

Problem ist ja, das es keine genauen 50Hz sind.

Ich hab noch was:

Hab ich das richt erfasst:?
Wenn min 2S das Sigal da ist, schaltet ein Merker, fehlt das Signal länger als 2S wird der Merker wieder zurückgestzt. Mal einzelne verirrte Signale haben keine Auswirkung, kleine Aussetzter im Signal ebenfalls nicht.

ich hab mal was mit LOGO Soft zusammengeklickt, Step7 hab ich auf meinem Notebook nicht, aber das lässt sich ja übertragen.

Funktion.
B001 wird gesetzt sobald ein Impuls kommt.
Bleibt es bei dem einen Impuls, so schaltet nach 2S B003 ein und setzt das Flipflop zurück. Wenn jedoch ein weiterer Impuls kommt (innerhalb von 2S) wird B003 zurückgesetzt.
Wenn B001 länger als 2S gesetzt ist, schaltet die Einschaltverzögerung B002 ein und setzt das Flipflop B004 (dein Merker).
Wenn länger als 2S kein weiterer Impuls "rein kam", schaltet B003 ein und setzt B004 wiederzurück.

Die beiden Zeiten dürfen eigentlich nicht gleich sein, B002 muss minimal länger als B003 sein.

Das Signal muss min 0,5 Hz haben.



Simon

08.01.10 22:05

Leitungskapazitäten können Dir nur das Signal etwas verschleifen. Damit bekommst Du etwas zeitlichen Versatz. Normalerweise kann man das vernachlässigen, aber es ist Deine Aufgabe, das in der Software zu berücksichtigen. Du kannst selbst über Schwellen bei der Methode entscheiden, was Du zulässt, und was nicht.

Gruß

Simon

Zabex

08.01.10 22:19

Stell dir einen Eimer mit Füllstandsanzeige vor.
Der Zufluss entspricht dem Pulsgeber und es gibt einen konstantem Abfluss. Der Merker wird gesetzt bei Eimer voll und gelöscht bei Eimer leer.

Voraussetzung: Deine Zykluszeit ist schnell genug, dass Du die 50 Hz Pulse sauber verarbeiten kannst (also <= 10ms).

Annahme: Zykluszeit=5ms(also 200Hz)

Den Puls würde ich über eine Flankenerkennung auf einen Zähler geben. Der Zähler zählt bei jeder Flanke 8 rauf und in jedem Zyklus 1 runter. Erreicht er Null, geht der Merker aus, erreicht er 400, geht er an.

Hier der Versuch, das in ST auszudrücken:
VARpuls at %I*:BOOL; (* Phys. Pulseingang *)flanke: R_TRIG;level:INT:=0;merker:BOOL;END_VARIF level > 0 THENlevel:= level - 1; ELSEmerker:=FALSE;END_IFflanke(CLK:=puls);IF flanke.Q THEN IF level < 400 THENlevel:=level + 8;ELSE merker:=TRUE;END_IFEND_IF(* Ärkx, ohne IDE-Unterstützung den Kram von Hand zu schreiben ist ja echt ätzend! *)

Was passiert da: Nach 2s Pulserei ist der Zähler 100 x 8 =800 hochgezählt
und gleichzeitig um 2 x 200 =400 runtergezählt. (200 ist natürlich die Zyklusfrequenz). Also steht der Zähler dann auf 400 und der Merker geht an.
Nach 2s pulsfreier Zeit ist der Zähler von 400 wieder auf 0 gelaufen und der Merker geht aus.

Fehlen ein paar Pulse, dauert es halt etwas länger als 2 Sekunden, bis der merker angeht. Ist er an und es kommen noch sporadich Pulse, dauert es ebenfalls etwas länger, bis der Merker wieder aus geht.

Hope that helps.

Gruß,
Zabex

Henning

08.01.10 22:22

Das sieht beides schon sehr gut aus, ich probiere mal eben die Lösung von Tim, Sag mir mal bitte aber eben noch was B003 für ein Baustein ist.

Gruß

Licht_tim

08.01.10 22:25

B003 ist eine speichernde Einschaltverzögerung, da nur speichernde zurücksetzbar sind.




Zuletzt bearbeitet: 08.01.10 22:30 von Licht_tim

gafu

09.01.10 00:28

hmm. du hast entweder 0V oder 24V 50Hz positive pulse..

warum machst du nicht einfach ne gleichrichterbrücke oder gar ne einzelne diode an den eingang, und nen elko mit paar wenigen uF ?

dann haste 0V/24V Gleichspannung, ideal für die SPS.. die zwei sekunden kannste dann in software lösen. (merker setzen sobald 24V da, wenn nach 2s immernoch da, dann weiter).

Wenn mal ein einzelner puls fehlt kannste den kondi halt entsprechend auslegen das er das überbrückt.

Henning

09.01.10 00:41

Wie gesagt, an der Hardware konnte ich nichts verändern, da hängen noch ganz andere Sachen dran, sonst wäre die Lösung einfacher gewesen.

Habe aber anscheinend eine Lösung für das Problem gefunden. So simpel wie einfach. Beinhaltet 2 Ausschaltverzögerungen, und eine Einschaltverzögerung. Ein RS dahinter, und gut.

Der gepulste Eingang tastet immer wieder eine Ausschaltverzögerung mit 500ms auf.
An der Ausschaltverzögerung hängt eine Einschaltverzögerung mit 2s. Schaltet die Averz für min. 2s durch, RS-Flipflop ein.

Ebenfalls am Ausgang der Averz. eine zweite Ausschaltverzögerung, mit 2s. Bleibt das Signal der 1. Averz aus, schaltet die zweite durch, und setzt negiert den R-Eingang des RS-FF.

Die erste Averz. dient also mit den 500ms (könnte wohl auch kleiner gewählt werden...) die kurze Unterbrechung im Eingangssignal zu überbrücken.

War gar nicht so schwerAber hätte ohne die Beiträge hier nie funktioniert. Dankeschön.

Zabex

09.01.10 00:57

Grenzbetrachtung: Vier Einzelpulse in 500ms Abstand gehen dann als gültiges Signal durch. Prüfe, ob das tolerierbar ist!

gafu

09.01.10 00:57

ein softwarekondensator

sehr schön.

Henning

09.01.10 11:50

Das ganze fällt dann unter Inbetriebnahme, muss man sehen. Ich kann ja theoretisch bis 20ms runter gehen, also wäre ich mit 100ms immer noch auf der sicheren Seite, das muss man dann mal an der Anlage probieren.

Zurück zur Übersicht
Seiten: 1 | (2)