# Takt programmieren



## Axel (21 Juni 2007)

Hallo zusammen,

wie kenn ich denn einen Ausgang an der S7 takten? Der Ausgang soll 5 Sekunden gesetzt sein und danach 5 Sekunden im Sekunden-Takt blinken. Das setzen hab ich ja hinbekommen, aber das Takten nicht.
Kann mir da jemand einen Ratschlag geben?

Danke

Axel


----------



## godi (21 Juni 2007)

Hallo!

In der S7 gibt es Taktmerker. Einzustellen sind die in der Hardwarekonfiguration bei der CPU.
Die brauchst du einfach nur und-verknüpfen und schon blinkt der Ausgang

godi


----------



## Ralle (21 Juni 2007)

hier mal eine kleine Schmunzellösung, aber sie funktioniert:


```
FUNCTION FC 30 : VOID
TITLE =
VERSION : 0.1

BEGIN
NETWORK
TITLE =Sekundentakt erzeugen
//Man könnte natürlich auch den 500ms-Takt des Taktmerkerbytes aus der 
//Hardwarekonfig 
//nutzen!
      U     M      1.0; 
      UN    M      1.2; 
      L     S5T#500MS; 
      SE    T     10; 
      U     T     10; 
      =     M      1.2; 

NETWORK
TITLE =Startflanke Gesamt

      U     M      1.0; //Ablauf ein
      FP    M      1.1; 
      SPBN  KFL; 

      L     2#10101010101111111111; 
      T     MD    10; 

KFL:  NOP   0;
 
NETWORK
TITLE =Schieben der Bits

      U     M      1.2; 
      SPBN  KSCH; 

      L     MD    10; 
      SRD   1; 
      T     MD    10; 

KSCH: NOP   0; 

NETWORK
TITLE =Ausgang schalten

      U     M     13.0; 
      =     A      1.0; 

NETWORK
TITLE =Reset
//Wenn fertig, oder es wird abgeschaltet (M1.0 auf False) dann alles Reset
      U(    ; 
      L     MD    10; 
      L     0; 
      ==D   ; 
      )     ; 
      O     ; 
      UN    M      1.0; 
      SPBN  KRES; 

      CLR   ; 
      =     M      1.0; 

      L     0; 
      T     MD    10; 

KRES: NOP   0; 
END_FUNCTION
```
In eine Quelle einfügen und übersetzen.
Man kann natürlich auch mehrere Timer verwenden !


----------



## Kai (21 Juni 2007)

Axel schrieb:


> Der Ausgang soll 5 Sekunden gesetzt sein und danach 5 Sekunden im Sekunden-Takt blinken. Das setzen hab ich ja hinbekommen, aber das Takten nicht.


 
Hier mal eine Lösung mit 2 Taktgebern und 2 Binäruntersetzern.

Gruß Kai


----------



## Onkel Dagobert (21 Juni 2007)

*Kurzfassung für Schreibfaule ;-)*


```
//*** Zähler zurücksetzen
      L     Z     10
      L     10
      >=I   
      R     Z     10
 
//*** Zähler hochzählen
      U     "TAKT_1,00 Hz"
      ZV    Z     10
 
//*** Zähler auswerten
      L     Z     10
      L     5
      >=I   
      O     "TAKT_1,00 Hz"
      =     A      0.0
```
 

Gruß, Onkel


----------



## KartoffeL (21 Juni 2007)

*Hier mal ne Lösung von nem Azubi *


      U     E    124.0                  // Start
      FP    M      0.3
      S     M      0.0                  // Merker Dauerleuchten

      U     M      0.0
      L     S5T#5S
      SE    T      1

      U     T      1
      R     M      0.0
      S     M      0.1                  // Merker Blinken

      U     M      0.1
      FP    A    124.0
      ZV    Z      1

      L     Z      1
      L     5
      <=I   
      =     M      0.2                  // Zähler kleiner, gleich 5

// Ausgabe

      U     M      0.1                  // Merker Blinken
      U     M      0.2                  // Zähler kleiner, gleich 5
      U     M    100.7                  // 0,5 Hz Taktmerker
      O     M      0.0                  // Merker Dauerleuchten
      =     A    124.0

// Rücksetzten

      L     Z      1
      L     6
      >=I   

      R     Z      1
      R     M      0.0
      R     M      0.1
      R     M      0.2


----------



## KartoffeL (21 Juni 2007)

Die Lösung vom 

 gefällt mir!


----------



## borromeus (21 Juni 2007)

nicht ganz so kurz, aber mit Trigger E0.0

OB35, 1000ms

UN E 0.0 
R A 0.0
SPBN EXIT
L 2#1010101010111110
T MW 0
EXIT: L MW 0
SRW 1
T MW 0
SPP AUSG
R A 0.0
BEA 
AUSG: = A 0.0


;-)


----------



## Babsi (16 Juli 2007)

*Noch eine Frage zum gleichen Thema*

Nochmal eine Frage zum Takt - kann ich an den Ausgang auch eine Frequenz von 1 kHz anlegen? Habe eine CPU 314 IFM und will nen Schrittmotor damit ansteuern. Er bewegt sich zwar, aber leider nur sehr langsam. Wollte die FM 353 umgehen...vielleicht kann mir dabei ja wer helfen.
DANKE!


----------



## vollmi (16 Juli 2007)

Babsi schrieb:


> Nochmal eine Frage zum Takt - kann ich an den Ausgang auch eine Frequenz von 1 kHz anlegen? Habe eine CPU 314 IFM und will nen Schrittmotor damit ansteuern. Er bewegt sich zwar, aber leider nur sehr langsam. Wollte die FM 353 umgehen...vielleicht kann mir dabei ja wer helfen.
> DANKE!



Wenn Siemens ne Ausgangskarte mit integriertem Funktionsgenerator hat? Klar kein Problem.
Ansonnsten vergiss es. Du kannst froh sein wenn du einen normeln Peripherieausgang mit "sauberen" 20 Hz takten kannst.

mfG René


----------



## godi (16 Juli 2007)

Lade dir mal dieses Handbuch herunter. Vielleicht findest du ja was passendes.

godi


----------



## MSB (16 Juli 2007)

@vollmi
Ein wenig vorsichtig mit solchen Aussagen,
eine 31xC, also die Nachfolger der IFM-Typen, könnten
auf manchen Ausgängen bis zu 2,5kHz.

Die 314IFM aber leider nicht.

Mfg
Manuel


----------



## vollmi (16 Juli 2007)

MSB schrieb:


> @vollmi
> Ein wenig vorsichtig mit solchen Aussagen,
> eine 31xC, also die Nachfolger der IFM-Typen, könnten
> auf manchen Ausgängen bis zu 2,5kHz.
> ...




Aber doch nur auf Impulsausängen oder (Funktionsgenerator?)?
Die ausgänge kann trotzdem nicht wärend der Zykluszeit mehrmals schalten sondern bis zur nächsten Schalthandlung muss man wieder das Ende des Zyklus abwarten? Oder sehe ich das falsch?


----------



## MSB (16 Juli 2007)

Das steht dazu im Handbuch:

```
Pulsweitenmodulation

Ändern Sie während der laufenden Impulsausgabe den Ausgabewert, berechnet
die CPU die neue Impulspause und Impulsdauer sofort und schaltet den Ausgang
entsprechend. Dadurch kann sich die Periodendauer für eine Periode verlängern
oder verkürzen:
- Ändern Sie während der Impulspause und ist der neue Ausgabewert kleiner
als der alte, wird die Periodendauer einmalig verlängert, da die neue Pause
länger wird.
- Ändern Sie während der Impulspause und ist der neue Ausgabewert größer
als der alte, wird die Periodendauer einmalig verkürzt, da die neue Pause
kleiner wird.
- Ändern Sie während der Impulsdauer und ist der neue Ausgabewert kleiner als
der alte, kann sich die Periodendauer einmalig verlängern, da die neue Pause
länger wird.
- Ändern Sie während der Impulsdauer und ist der neue Ausgabewert größer als
der alte, bleibt die Periodendauer konstant.
```

So wie ich den Text interpretiere, kann ich den Ausgabewert quasi mit jedem Aufruf des SFB49 ändern,
also auch mehrmals im Zyklus.

Mit ein paar Tricks müsste man damit sogar halbwegs vernünftig positionieren können.

Mfg
Manuel


----------



## Anatol_r (21 Juli 2007)

*Noch ein Code*

Hier mal eine SCL-Lösung 



> FUNCTION_BLOCK Oszillator
> 
> TITLE = 'Oszillator'
> //Ein ständig laufender Oszillator.
> ...


----------



## osi (21 Juli 2007)

Kennst Du schon die OSCAT Library dort sind verschiedenste Taktgeber im Source code enthalten. Sogar Pulsweitenmodulatoren und sinus / Rechteckgeneratoren. Alles im Source Code
Die Lib kannst du dir downloaden unter WWW.OSCAT.DE
Das schönste ist es gibt auch ein excellentes Manual dazu


----------



## Babsi (22 Juli 2007)

*Oscat könnte so schön sein...*

...wenn man SCL könnte*g*
Kann mir wer nen Tipp geben, wie ich möglichst einfach die Funktion GEN_SQ in mein bestehendes Programm (mit AWLs programmiert) integrieren kann, so dass mir mein Dig.Ausgang an der SPS den gewünschten Takt (1 kHz) ausgibt?

DANKE


----------



## Jordy (22 Juli 2007)

Machs einfach so:

Ersteinmal einen Nadelimpuls bilden:

      UN    M     1.1                  
      L     S5T#100MS
      SE    T      1
      U     T      1
      =     M     1.1
//;
Jetz den Blinker bauen:
//;
      U     M     1.1                 
      UN    M     1.0
      S     M     1.0
      =     #Ein
      U     M     1.1
      UN    #Ein
      R     M     1.0


----------



## schwarzer_kater (22 Juli 2007)

Hier mal was ganz einfaches in FUP. Ist im Prinzip das gleiche wie die SCL-Lösung von Anatol r


----------



## kptlindemann (9 September 2008)

*1khz*

bekomm ich mir den timern in fup auch ein pwm-signal im 1khz bereich hin? oder muß ich diese speziell programmieren?


----------



## Manfred Stangl (9 September 2008)

mit timern nicht, das geht sich mit der zykluszeit nicht aus!


----------



## arcis (9 September 2008)

*+*

UN T100
L S5T#5S
SE T101

UN T100
L S5T#10S
SE T100

U T101
= M 100.0          // = Blinker


----------



## Manfred Stangl (9 September 2008)

@arcis:

Über diese Art Blinker gibt es im online Lehrgang von 4L eine schöne Aufgabe:



> Generiere 16 Puls-Pause-Bits als Merker mit den Puls-Pause-Werten: 1s, 2s, 4s, ... 32768s


 
zurück zu eigentlichen Frage:



> bekomm ich mir den timern in fup auch ein pwm-signal im 1khz bereich hin? oder muß ich diese speziell programmieren?


 
Frage an arcis:
Wie kann dein Progrämmchen 1 kHz blinken???


----------

