Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 8 von 8

Thema: fertiger Sinusgenerator Baustein?

  1. #1
    Registriert seit
    08.12.2008
    Beiträge
    23
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,
    kann mir jemand weiterhelfen?

    Hat jemand von euch schon mal einen Sinusgenerator programmiert (zb in AWL)?

    Möchte eine Frequenz vorgeben und die oberer Schwelle sowie die untere Schwelle frei eingeben können.

    Habe schon gegooglet, aber leider erfolglos.

    Gruß
    Daniel
    Zitieren Zitieren fertiger Sinusgenerator Baustein?  

  2. #2
    Registriert seit
    31.05.2007
    Ort
    Hagen
    Beiträge
    66
    Danke
    12
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Such mal in der LIB hier nach einem Generator.
    Ist in SCL OS programmiert.

    http://www.oscat.de

  3. #3
    Geisti ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.12.2008
    Beiträge
    23
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Habe mir die ZIP Datei für Step7 runtergeladen und mit SIMATIC Manager geöffnet,
    aber leider finde ich nicht den benötigten Baustein (laut Doku sollte der Funktionsbaustein "GEN_SIN" der Richtige sein) nicht in der Bibliothek. Wie bekomme ich dieses FB?

  4. #4
    Registriert seit
    01.08.2005
    Beiträge
    149
    Danke
    0
    Erhielt 20 Danke für 19 Beiträge

    Standard

    Hier haben Kollegen aus Dänemark und der Ukraine was für dich: http://www.plctalk.net/qanda/showthread.php?p=241300

    Ich persönlich bin kein Freund von Oscat obwohl die da was wirklich tolles machen.
    Aber ich wollte mal eben einen kleinen Baustein in ein bestehendes Projekt einbinden - kann man fast vergessen - für eine kleine Funktion (Sommerzeit / Winterzeit) muss man ca. 15 Bausteine in das Projekt einbinden - die natürlich alle Bausteinnummern verwenden die ich schon hatte.

    Ich denke wenn man mit Oscat arbeiten will, muss man erst ALLE Bausteine in das Projekt holen und die freien Bereiche mit seinem eigenen Programm ausfüllen.

    Viel Erfolg mit einem Generator!

  5. #5
    Registriert seit
    28.02.2006
    Ort
    Ostsee 5 min zum Strand
    Beiträge
    780
    Danke
    92
    Erhielt 110 Danke für 98 Beiträge

    Standard

    Zitat Zitat von Geisti Beitrag anzeigen
    Habe mir die ZIP Datei für Step7 runtergeladen und mit SIMATIC Manager geöffnet,
    Welch Version hast du denn?`Bei mir in der 3.11 ist er dabei FB100

    Code:
    FUNCTION_BLOCK GEN_SIN
    TITLE = 'GEN_SIN'
    //
    //this signal generator generates a sine wave output. The sine wave signal is defined by period time (PT), 
    //amplitude (AM), offset (OS) and a specific delay for the output signal (DL).
    //The Output waveform will have its max peak at AM/2 + OS and its minimum peak at -AM/2 + OS. 
    //The delay input can delay a signal up to PT, this can be useful to synchronize different generators 
    //and generate interleaving signals. A Cos wave can be generated accordingly.
    //in addition to a analog output Out there is a second boolean output Q with the corresponding binary signal.
    // 
    //uses: T_PLC_MS [FC64]
    //      STIME [FB64],IDB_STIME [DB64]
    //      MODR [FC97]
    //      FLOOR2 [FC82] 
    //      MULTIME [FC203]
    //      SIGN_R [FC109]
    //
    VERSION : '1.6'
    AUTHOR  : oscat
    NAME    : GEN_SIN
    FAMILY  : SIGGEN
    
    VAR_INPUT
        PT : TIME;
        AM : REAL := 1.0;
        OS : REAL;
        DL : REAL;
    END_VAR
    VAR_OUTPUT
        Q : BOOL;
        OUT : REAL;
    END_VAR
    CONST
        PI2 := 6.28318530717958647692528676655900576;    (* PI * 2 *)
    END_CONST
    VAR
        tx : TIME;
        last : TIME;
        init : BOOL;
        temp : REAL;
    END_VAR
    
    BEGIN
    
    (* read system time and prepare input data *)
    tx := DINT_TO_TIME(DWORD_TO_DINT(T_PLC_MS())) - last;
    DL := modR(in:=dl,divi:=1.0);
    IF dl < 0.0 THEN dl := 1.0 - dl; END_IF;
      
    (* init section *)
    IF NOT init THEN
        init := TRUE;
        last := tx;
        tx := t#0s;
    END_IF;
      
    (* add last if one cycle is finished *)
    IF tx >= pt THEN
        last := last + pt;
        tx := tx - pt;
    END_IF;
      
    (* generate sine wave *)
    IF pt > t#0s THEN temp := SIN(PI2 * DINT_TO_REAL(TIME_TO_DINT(tx + multime(t:=pt,M:=dl))) / DINT_TO_REAL(TIME_TO_DINT(pt))); END_IF;
    out := am * 0.5 *  temp + os;
    
    (* boolean output Q *)
    q := NOT sign_R(temp);
      
      
    (* revision history
    hm  22. jan 2007    rev 1.0
        original version
    
    hm  17 sep 2007 rev 1.1
        replaced time() with t_plc_ms for compatibilitx reasons
    
    hm  27. nov 2007    rev 1.2
        avoid divide by 0 when pt = 0
    
    hm  6. jan 2008     rev 1.3
        improved performance
    
    hm  16. mar. 2008   rev 1.4
        added type conversion to avoid warnings under codesys 3.0
    
    hm  18. oct. 2008   rev 1.5
        using math constants
    
    hm  11. mar. 2009   rev 1.6
        changed real constants to use dot syntax
    
    *)
    END_FUNCTION_BLOCK
    Geändert von Nordischerjung (15.06.2010 um 13:25 Uhr)
    Gruß von der Ostsee

    Nordischerjung
    _____________________

    Wenn man seinem Paßbild ähnlich zu sehen beginnt, sollte man schleunigst Urlaub machen. (Vico Torriani, schw. Entertainer)

    Ich habe eine Diät gemacht und fettem Essen und Alkohol abgeschworen - in zwei Wochen verlor ich 14 Tage. (Joe E. Lewis)

  6. #6
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Zitat Zitat von BPlagens Beitrag anzeigen
    ...Aber ich wollte mal eben einen kleinen Baustein in ein bestehendes Projekt einbinden - kann man fast vergessen - für eine kleine Funktion (Sommerzeit / Winterzeit) muss man ca. 15 Bausteine in das Projekt einbinden - die natürlich alle Bausteinnummern verwenden die ich schon hatte.

    Ich denke wenn man mit Oscat arbeiten will, muss man erst ALLE Bausteine in das Projekt holen und die freien Bereiche mit seinem eigenen Programm ausfüllen...
    Hi,

    die Bausteinnummern lassen sich am einfachsten mit SCL ändern, dazu einfach die entsprechende Nummer im Symboleditor ändern und den Baustein mit SCL neu übersetzen.

    Gruss Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  7. #7
    Registriert seit
    12.01.2009
    Ort
    Österreich
    Beiträge
    132
    Danke
    25
    Erhielt 5 Danke für 5 Beiträge

    Standard

    Hallo


    Da gibts ne lib von Goetz da wär so ein Taktgenerator drinnen


    Lg Backdoor
    Angehängte Dateien Angehängte Dateien

  8. #8
    Registriert seit
    01.08.2005
    Beiträge
    149
    Danke
    0
    Erhielt 20 Danke für 19 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @Dalbi

    Ja danke -ist klar! Aber ich habe kein SCL da es bei unseren Kunden eigentlich nie erlaubt ist.

    Aber wenn man mal sieht was der FB100 alles braucht:
    Code:
    //uses: T_PLC_MS [FC64]
    //      STIME [FB64],IDB_STIME [DB64]
    //      MODR [FC97]
    //      FLOOR2 [FC82] 
    //      MULTIME [FC203]
    //      SIGN_R [FC109]
    6 Bausteine und 1 DB und davon 4 in einem Bereich den fasst jeder eh schon verwendet hat.

    Hier mal die Lösung vom Kollegen Jesper:
    Code:
    What is stopping you ?
     
    Oh well, here we go:
     
    Set the setpoint for an IEC timer to whatever full period the sinus curve must have. Then program it to restart when it times up.
    If it is set to 30 seconds for example, it will go through 0-30000 milliseconds.
     
    //This is the part where you calculate the radians:
    //(TimedTime/Fullcycletime) x 2 x Pi
    L "Timer".ET
    DTR
    L "Timer".PT
    DTR
    /R
    L 6.2831853 // 2 x pi
    *R
    T "rRadians"
     
    // this is the part where you generate the sinus value
    L "rRadians"
    SIN
    T "rAmplitude"
    Das sind nur 11 Zeilen Code ohne 6 andere Bausteine (stimmt nicht ganz - da auch ein IEC-Timer hergenommen wird) zu benötigen.
    11 Zeilen (kann man sogar noch kürzen) + 1 IEC Timer finde ich deutlich effektiver.

    Aber ich sage es nochmal - die Oscat Leute machen eine Tolle Sache - aber mal eben eine Funktion ins eigene Projekt übernehmen ist so fast nicht möglich.

    cu
    Geändert von BPlagens (18.06.2010 um 09:26 Uhr)

Ähnliche Themen

  1. Sonnenuntergang; Fertiger Baustein?
    Von Hanf_Lolly im Forum Simatic
    Antworten: 30
    Letzter Beitrag: 15.09.2014, 20:07
  2. fertiger Datenbaustein Lenze 8400
    Von Dominique Wiemann im Forum Antriebstechnik
    Antworten: 11
    Letzter Beitrag: 11.09.2011, 20:57
  3. RTC-Baustein
    Von Bambam im Forum CODESYS und IEC61131
    Antworten: 0
    Letzter Beitrag: 15.09.2010, 14:52
  4. Ist ein fertiger Regelbaustein überhaupt nötig?
    Von stephan282 im Forum Simatic
    Antworten: 32
    Letzter Beitrag: 05.11.2007, 20:06
  5. hilfe bei fast fertiger sps aufgabe
    Von renshy im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 07.02.2007, 12:11

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •