Impulsgeber(Frequenz und Breite) variabel in AWL programmieren?

Bosga

Level-1
Beiträge
21
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,
ich hab ein Problem mit AWL.
Bin ein totaler Neuling in Sachen AWL.
Habe eine Aufgabe bekommen die ich leider nicht lösen kann.
Aufgabe:
Es soll auf einen Ausgang (A0.0) einen Impuls geschaltet werden, der in der Länge(Frequenz) und in der Breite(Anhaltsdauer des Impuls) variabel einstellbar ist.
In CFC hätte ich einen Taktmerker(zb 100.2) auf einen
Timer_p(Mode1) geschaltet und dessen Ausgang auf A0.0.
Wobei diese Lösung, zumindest glaube ich das, auch nicht
ganz richtig wäre.
(Die Frequenz wäre nicht "ganz" variabel)
Über eure Hilfe wäre ich sehr dankbar!
Gruß
Bosga
 
Hallo Leute,
ich hab ein Problem mit AWL.
Bin ein totaler Neuling in Sachen AWL.
Habe eine Aufgabe bekommen die ich leider nicht lösen kann.
Aufgabe:
Es soll auf einen Ausgang (A0.0) einen Impuls geschaltet werden, der in der Länge(Frequenz) und in der Breite(Anhaltsdauer des Impuls) variabel einstellbar ist.
In CFC hätte ich einen Taktmerker(zb 100.2) auf einen
Timer_p(Mode1) geschaltet und dessen Ausgang auf A0.0.
Wobei diese Lösung, zumindest glaube ich das, auch nicht
ganz richtig wäre.
(Die Frequenz wäre nicht "ganz" variabel)
Über eure Hilfe wäre ich sehr dankbar!
Gruß
Bosga


Suchbegriff: Taktgenartor, Impulsgeber,Blinker.........
 
Aufgabe:
Es soll auf einen Ausgang (A0.0) einen Impuls geschaltet werden, der in der Länge(Frequenz) und in der Breite(Anhaltsdauer des Impuls) variabel einstellbar ist.

Code:
    UN    T      2
      L     S5T#1S   //ausschaltzeit
      SE    T      1
      U     T      1
      L     S5T#1S   //dauer des impulses
      SA    T      2
      U     T      2
      =     A      0.0

die "länge" ist hier die addition der beiden zeiten
 
Vielen Dank für die Hilfe!!!
Die letzte Lösung hat wunderbar geklappt.
Es ist mir Peinlich aber könntest du das bitte nochmal kurz erklären?
Scheint zwar wirklich simple zu sein, aber ganz hab ich es noch nicht verstanden. Ich tus mir einfach schwer mit AWL....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
na klar....

dir muss bewusst sein dass du eine ausschaltdauer und eine einschaltdauer benötigst.

hier ist anfangs des ersten zyklus der timer 1 (der einschaltverzögerte) vom timer 2 negiert. da ja timer 2 noch nicht "da" ist, laüft timer 1 gleich weg. erst nach der abgeleaufenen zeit bekommt timer 2 sein eingangsignal. jetzt läuft t2 weg und schaltet das eingangsignal für t1 wieder auf 0 bis der t2 (auschaltverzögert) nach seiner zeit wieder abgelaufen ist. nun fängt das ganze szenario wieder von vorn an...

du solltest dir vielleicht mal so nebenbei die schaltdiagramme der einzelnen timer anschaun dann wird dir dass sicher klar...
 
Code:
      UN    T      2
      L     S5T#1S   //ausschaltzeit
      SE    T      1
      U     T      1
      L     S5T#1S   //dauer des impulses
      SA    T      2
      U     T      2
      =     A      0.0

die "länge" ist hier die addition der beiden zeiten


Hi miteinander,

wenn ich jetzt hergehe und im ms bereich einen takt vorgeben will, sagen 50Hz, wie kann ich das mit meiner Zyklus Zeit vereinbaren ohne das ich Takte verliere??? :confused:

Servus.
 
hi

wenn mann eine variable zeit als gesamte periode vorgeben will (frequenz) dann muss man die impulsdauer von der vorgegebenen variablen zeit subtrahieren und das ergebnis auf den timer 1 der ausschaltzeit legen.

je grösser die impulsdauer/länge ist desto kleiner ist die ausschaltzeit bei einer fixen periodendauer (frequenz)

EDIT: für ms genaue takte würde ich die weckalarm ob's verwenden, manche machen das lieber im hauptzyklus obwohl man hier sehr vorsichtig sein muss bei der zyklusbelastung wenns um genaue gschichten geht.

grüsse
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier noch nen FB:
(kann nach der Übersetzung auch in FUP umgeschaltet werden)


Code:
FUNCTION_BLOCK "FB_RECT"
TITLE =Einstellbarer Rechteckgenerator
////Funktionsname: Rechteckgenerator
////
////Bibliothek: DIV
////
////Beschreibung: Funktion realisiert ein Rechteckgenerator mit einstellbaren 
//ON/OFF Zeiten, beginnend mit ON
AUTHOR : 'F.A.'
VERSION : 1.0


VAR_INPUT
  T_ON : TIME ;	//On-Time Rechteck
  T_OFF : TIME ;	//Off-Time Rechteck
END_VAR
VAR_OUTPUT
  RECT : BOOL ;	//Ausgang
END_VAR
VAR
  ON_TIMER : "TP";	
  OFF_TIMER : "TP";	
  ON : BOOL ;	
  OFF : BOOL ;	
END_VAR
BEGIN
NETWORK
TITLE =ON - Timer

      UN    #OFF; 
      =     L      0.0; 
      BLD   103; 
      CALL #ON_TIMER (
           IN                       := L      0.0,
           PT                       := #T_ON,
           Q                        := #ON);

      NOP   0; 
NETWORK
TITLE =OFF - Timer

      UN    #ON; 
      =     L      0.0; 
      BLD   103; 
      CALL #OFF_TIMER (
           IN                       := L      0.0,
           PT                       := #T_OFF,
           Q                        := #OFF);

      NOP   0; 
NETWORK
TITLE =Ausgang

      U     #ON; 
      =     #RECT; 
END_FUNCTION_BLOCK
 
Hallo,

diese Thema hat zwar einen Bart (2008 ) aber es trifft mein Problem absolut! Der AWL Code von "kiestumpe" einen Beitrag oberhalb ist genau was ich brauche.

Da ich keine bis geringe Ahnung von S7 habe wäre er für mich ideal. Wenn ich den Code als AWL Quelle in S7-SIMATIC einfüge und anschließend "übersetzen" lasse bekomme ich folgende Fehler:

test.JPG

Ich habe bei "TP" schon die " weggelassen, hilft nix. TP ist doch das TimePulse Modul oder? Habe in anderen Beispielprogrammen genau die gleiche TP Initialisierung gefunden.
Woran liegt das Problem?

Danke für eure Mühe!

Mfg Paul

PS: Habe in der Zeile "FUNCTION_BLOCK "FB_RECT"" das "FB-RECT" durch z.b. FB2 ersetzt, passt eh oder?
 
Du mußt in der Symboltabelle ein Symbol "TP" anlegen und diesem Symbol als Typ den TON aus der IEC-Library (SFB4). Oder du setzt statt "TP" in der Quelle direkt die Bausteinbezeichnung SFB4 ein.
 
Zuletzt bearbeitet:
Zurück
Oben