# Einschaltverzpgerung für FB blink(util.lib)



## bleri (12 April 2011)

Hallo,

bin gerade dabei einen Wassereinlauf zu programmieren. Für den Wassereinlauf sollen Impulse an die Steuerung gesendet werden, dass habe ich auch mit blink aus der util bib hinbekommen. Ich möchte allerdings auch eine EInschaltverzögerung einbauen um Fehler zu simulieren.

Habe den Baustein TON verwendet aber irgendwie macht er nicht was er soll.

Kann mir da einer von euch helfen? Vielen Dank


----------



## Cerberus (12 April 2011)

Aktualisierst du deinen TON, bevor du ihn abfrägst? Kannst du evtl. deinen Code posten?


----------



## bleri (12 April 2011)

Ich habe mal ein Bild gemacht...


----------



## PN/DP (12 April 2011)

bleri schrieb:


> Habe den Baustein TON verwendet aber irgendwie macht er nicht was er soll.


Kannst Du das "irgendwie" vielleicht etwas präzisieren?

Daß der "impulseingang" länger als die TON-Zeit true sein muß ist Dir sicherlich bekannt.

Harald


----------



## bleri (12 April 2011)

Also so wie ich es jetzt gemacht habe, hat die Verzögerung kein Effekt.

Und wie meinst du das, dass der "impulseingang" langer als die TON Zeit true sein muss?

Bin seit einer Woche mit der Programmierung von SPS dabei und deshalb noch nicht soviel Erfahrung. Brauche das fur meine Bachelorarbeit.


----------



## gloeru (12 April 2011)

2-3 Bemerkungen:
1. Bist du dir bewusst, dass du in einem FB (Funktionsbaustein) arbeitest? - Ich würde dir empfehlen, zuerst die ganze Sache in einem Programm zu machen, und erst danach die Implementation in einen FB.
2. Am Ausgang ET vom TON kannst du die abgelaufene Zeit anschauen. Ist für Debugging noch so praktisch!

```
ET    : TIME;    (* elapsed time *)
```
3. Den Eingang (impulseingang) muss während der ganzen Zeit T#5s TRUE sein.


----------



## bleri (12 April 2011)

Ja das ist mir bewußt. Ich nutze den Baustein in einem weiteren Programm. Also der Eingang wird von einer Steuerung angeschaltet und bleibt deshalb auch an. Sollte ich den TON in meinem PrOgramm reinnehmen, also bevor ich auf den FB Impulse zugreife?


----------



## bleri (12 April 2011)

Haste vielleicht eine andere idee


----------



## bleri (12 April 2011)

Im Anhang hab ich mein Programm eingefügt. Vielleicht hilft euch das etwas mehr.


----------



## gloeru (12 April 2011)

nimm mal Zeiten, die du von Auge sehen kannst (2-3 Sekunden) und wenn du online bist, versuche die Signale zu verfolgen. Verwende dazu die diversen Tools von TwinCAT. Nimm mal die Ablaufkontrolle oder setzen BreakPoints. Wenn nichts hilft, gehst du halt mit Einzelschritten daran. 
P.S. Versuch dir mit den zur Verfügung stehenden Mittel möglichst selbst zu helfen, sonst wird deine BA-Arbeit ziemlich mühsam. Und versuche die Probleme viel genauer zu beschreiben. (So als Tipp unter Studenten ;-))


----------



## bleri (12 April 2011)

Ja werd das morgen mal weiter ausprobieren. 

Problem:
Ich möchte Fehler simulieren bei einem Wassereinlauf. Ein Fehler kann unteranderem durch die Einschaltverögerung simuliert werden, dabei soll der Nutzer den Wert für PT später selber festlegen. Es funktioniert soweit alles nur halt diese Einschaltverzögerung.

Ich werd morgen mal kurz Posten ob ich es geschafft habe. Danke erstmal...


----------



## PN/DP (12 April 2011)

bleri schrieb:


> Also so wie ich es jetzt gemacht habe, hat die Verzögerung kein Effekt.
> 
> Und wie meinst du das, dass der "impulseingang" langer als die TON Zeit true sein muss?


Der von Dir gewählte Bezeichner "impulseingang" suggeriert, daß an diesem FB-Eingang Impulse anliegen.
Tatsächlich ist es aber ein Freigabesignal für die Impulsausgabe.

Was Du programmiert hast, das funktioniert so:
Wenn der Eingang KL1702_DI_230V_14 5 Sekunden lang ununterbrochen true ist, dann beginnt der BLINK-Baustein "test" mit der Impulserzeugung mit den vorgegebenen Puls-/Pause-Zeiten T_1 und T_0. (30ms sind heftig kurz, ist das tatsächlich so gewollt?)
Sobald KL1702_DI_230V_14 false wird, stoppt die Impulsausgabe. Für eine erneute Impulsausgabe muß KL1702_DI_230V_14 wieder 5 Sekunden ununterbrochen true sein.

Ist das genau das, was Du willst?
Wenn Du etwas anderes willst, dann beschreibe die von Dir gewünschte Funktion genauer.

Eventuell ist es sogar so, daß der Impulsausgang, während KL1702_DI_230V_14 false ist, so bleibt, wie er zuletzt war und nicht unbedingt auf false wechselt (TwinCAT kenne ich nicht und mein Codesys ist ziemlich lange her).

Ansonsten kann ich mich nur den Tips von gloeru anschließen und empfehlen, das Programm mit sichtbar langen Zeiten zu simulieren und zu beobachten.

Wie kurz sind eigentlich die Impulse Deiner Wasser-Zähler? Können die Zählimpulse sicher mit den Klemmen erfasst und im Programm verarbeitet werden?

Harald


----------



## bleri (13 April 2011)

Er soll nur zu Beginn 5 s warten bis er die Impulse erzeugt und nicht später wiederholen wenn der Eingang auf False war.

Der Impulsausgang bleibt nicht so wie er zuletzt war, dass habe ich mit AND nach dem Blink abgefangen, das funktioniert auch so wie ich es haben will.

Also das mit der Impulsdauer ist schon richtig der soll mir 1400 Impulse in einer recht kurzen Zeit erzeugen. Ich habe 5 V klemmen verwendet und das funktioniert wunderbar. 

Ich mochte halt zu Beginn der Impulse einmal eine Verzögerung einbauen, um ein Fehler zu simulieren. Der Impulseingang geht dabei auch wieder im False Zustand nur soll er dann nicht wieder 5 s warten, dass wäre nicht nötig.

Ich hoffe ihr habt mich jetzt besser verstanden.


----------



## gloeru (13 April 2011)

Sehe ich das richtig, dass dein Problem ist, dass die Zeitverzögerung TON nur einmalig gestartet werden soll, und der Rest funktioniert?


----------



## bleri (13 April 2011)

Ja genau es soll nur einmalig ausgeführt werden


----------



## PN/DP (13 April 2011)

Dann brauchst Du eben noch eine Hilfsvariable (BOOL), die sich merkt, ob es "das erste mal" oder die folgenden Male sind.
Irgendwann muß die Hilfsvariable dann auch wieder rückgesetzt werden, wenn es ein nächstes "erstes mal" geben soll.

```
+---+         test
                        impulseingang-|   |     +-----------+
                 verz                 | & |     |   BLINK   |
              +-------+     enable    |   |-----|ENABLE  OUT|----impulsausgang
              |  TON  |     +----+    |   | T_0-|TIMELOW    |
impulseingang-|IN    Q|-----|S  Q|----|   | T_1-|TIMEHIGH   |
         T#5s-|PT   ET|-    |    |    +---+     +-----------+
              +-------+     |    |
                            |    |
                        ???-|R   |
                            +----+
```
Oder mit einem zusätzlichen FB-Input "erstes_mal":

```
+---+         test
                        impulseingang-|   |     +-----------+
                 verz                 | & |     |   BLINK   |
              +-------+               |   |-----|ENABLE  OUT|----impulsausgang
              |  TON  |     +----+    |   | T_0-|TIMELOW    |
impulseingang-|IN    Q|-----|    |----|   | T_1-|TIMEHIGH   |
         T#5s-|PT   ET|-    | >1 |    +---+     +-----------+
              +-------+     | =  |
                            |    |
                 erstes_mal-o    |
                            +----+
```

Harald


----------



## bleri (13 April 2011)

Danke Harald, kann es leider gerade nicht ausprobieren weil meine SPS spinnt. Ich kann mich mit ihr nicht mehr verbinden. Die fährt normal hoch und dann blinken auf einmal viele Klemmen. Kein Plan womit das zusammen hängt, werd morgen mal bei Beckhoff anrufen.


----------



## Pietpinguin (14 April 2011)

Du solltest noch bedenken, dass der Impulsausgang beim wegschalten des Enable-Eingang (von BLINK) auf true stehenbleiben kann!


----------



## bleri (14 April 2011)

Pietpinguin schrieb:


> Du solltest noch bedenken, dass der Impulsausgang beim wegschalten des Enable-Eingang (von BLINK) auf true stehenbleiben kann!



Ja habe ich dran gedacht, dafür habe ich ein AND nach dem BLINK verwendet. Über einen Schalter regel ich das dann.


----------



## bleri (14 April 2011)

Hallo Harald,

ich hab es etwas anders gemacht. Hab den RS Baustin vor dem TON eingefügt um mit der Hilfsvariable(danke für den TIPP) die Verzögerung mehrmals zu starten, also damit setzt ich ET wieder zurück.

Vielen Dank nochmal.


----------



## PN/DP (14 April 2011)

bleri schrieb:


> ich hab es etwas anders gemacht. Hab den RS Baustin vor dem TON eingefügt


OK, das kann man auch so machen. Dadurch funktioniert Deine Variante im Detail ein klein wenig anders als meine.

Wenn man bei meiner Variante während aktivem impulseingang ein Reset des enable-Hilfsmerkers auslöst, dann wird die Impulsausgabe für die Dauer der TON-Restzeit bzw. danach für die Dauer des ruckset-Signals unterbrochen.

Bei Deiner Variante wird bei einem Reset die Impulsausgabe auf jeden Fall für 10s unterbrochen.

Harald


----------

