Frequenzmessung swingt

awe_wolfsburg

Level-1
Beiträge
39
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen...

Ich mache jetzt einfache Step 7 Programm mit counter module fm350-1 um ein Frequenz zu messen.

Ich habe schon die pulse von der Frequenzgenerator bekommen. Diese Pulse zeigt im DB1.DBD 34 (endlöse Zählen). STS_Gate DB1.DBX 43.6 (Status software Gate) mache ich immer TRUE. Um eine Frequenz zu messen, brauche ich ein Timer und Zähler. MW3 zeigt meine Zähler W#16#....und MD5 zeigt meine Frequenz im DW#16#......(Alles in VAT 1 im Anhang)

Mein Problem ist, Meine Frequenz im MD5 swingt so stark und so langsam(ca 5 minute) bis zum richtige Frequenz wie im Frequenzgenerator zu bekommen. Ich habe noch keine Regelung im mein Programm machen. Ich glaube die Baugruppe Swingt!

Hier ist mein Programm und VAT1

danke
 

Anhänge

  • fc2_in_f.zip
    525,2 KB · Aufrufe: 8
  • frequenz swingt...JPG
    frequenz swingt...JPG
    139,9 KB · Aufrufe: 55
Hi,

entferne mal die Merkerwort Überschneidungen

Netzwerk 4:
Code:
      L     DB1.DBD   34
      L     [COLOR=Red][B]MW     3[/B][/COLOR]
      /D    
      L     10
      /D    
      T     MD     5

Netzwerk 5:
Code:
      CALL  "CNT_CTL1"
       DB_NO   :=2
       SW_GATE :=FALSE
       GATE_STP:=FALSE
       OT_ERR_A:=[COLOR=Red][B]M3.0[/B][/COLOR]
       SET_DO0 :=[COLOR=Red][B]M3.1[/B][/COLOR]
       SET_DO1 :=[COLOR=Red][B]M3.2[/B][/COLOR]
       OT_ERR  :=[COLOR=Red][B]M3.3[/B][/COLOR]
       L_DIRECT:=[COLOR=Red][B]M3.4[/B][/COLOR]
       L_PREPAR:=[COLOR=Red][B]M3.5[/B][/COLOR]
       T_CMP_V1:=[COLOR=Red][B]M3.6[/B][/COLOR]
       T_CMP_V2:=[COLOR=Red][B]M3.7[/B][/COLOR]
       C_DOPARA:=[COLOR=Red][B]M4.0[/B][/COLOR]
       RES_SYNC:=[COLOR=Red][B]M4.1[/B][/COLOR]
       RES_ZERO:=[COLOR=Red][B]M4.2[/B][/COLOR]

Die fehlerhaften stellen hab ich rot markiert. Zugriffe alla MW3 oder MD5 macht man eigentlich nicht, schöner ist es Zahlen zu verwenden die durch 2 teilbar sind. ;)

Gruss Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe Schon die Merker korrigiert. Aber meine Frequenz ist noch swingt. Ich glaube die probleme liegt an der Zähler oder Timer.

Ich will ein Timer machen, jede Sekunde es Zählt die Impulsen. Und jede Sekunde bekomme ich die Zählerstand Z 1, 2, 3, 4, usw. Von diese Timer und Zählen, mache ich einfache mathematische Funktion um ein Frequenz zu berechnet.

Frequenz= [Impuses/(1s*Zählerstand)]

Hilft mir bitte...

Hier ist mein fc2, Timer und Zähler
 

Anhänge

  • call fc2.JPG
    call fc2.JPG
    119,7 KB · Aufrufe: 19
  • Timer.JPG
    Timer.JPG
    127,8 KB · Aufrufe: 17
  • Zähler und Frequenz.JPG
    Zähler und Frequenz.JPG
    119,6 KB · Aufrufe: 14
:confused: und die ganze Schnittstelle des Bausteins ist mit M7.0 beschaltet ...?

Mach dein Programm doch mal so :
Schritt 1 : Zähler reset - wenn Reset = OK dann Schritt 2
Schritt 2 : Zeit ablaufen lassen - wenn abgelaufen, dann Schriitt 3
Schritt 3 : Rechnen - wenn berechnet dann Schritt 1

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... versuch doch einfach mal den vorgeschlagenen Ablauf umzusetzen ...
Und ja ... ich würde an dem Koppel-FC nur die Aktion starten, die du wirklich benötigst ...

Gruß
Larry
 
ich würde dir sogar vorschlagen anstelle von Timern das ganze Programm in einen Weckalarm OB (z.B. OB30) zu packen.

Dann kannst du den Vorschlag von Larry Laffer ungefähr so vereinfachen:

Schritt 1 : Rechnen
Schritt 2 : Zähler reset
 
können Sie mir ein einfacher Rechnen und Zähler reset programm geben. Ich habe viele über die Zähler und Timer probiert, aber bekomme ich keine Lösung. bitte..
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe leider keine grosse Erfahrung mit den Zähler-Karten, versuche dir aber mit ein paar Stickworten auf die Sprünge zu helfen.

Um das Ganze schnell zu machen würde ich OB35 wählen mit voreinstellung 100ms. Darin würde ich im Netzwerk 1 den schnellen Zähler auslesen, im Netzwerk 2 die Frequenz berechnen und im Netzwerk 3 denn Zähler wieder reseten.


Berechnung im NW2 müsste dann so aussehen:
Code:
L #Temp_Wert             // Lokalvariable mit Zählerwert aus NW1
DTR                            // Umrechnung vom Doppelwort zu Real
L 10                            // 0,1s = 100ms
*D
T MD10                       // Frequenz Ausgabe in Hertz


Keine Gewähr für die Berechnung, die Schulzeit ist schon lange her
 
Zuletzt bearbeitet:
können Sie mir ein einfacher Rechnen und Zähler reset programm geben. Ich habe viele über die Zähler und Timer probiert, aber bekomme ich keine Lösung. bitte..

Kannst du keine Schrittkette programmieren ?
Soll jetzt noch einer kommen und dir das Programm fertig machen ? Vielleicht auch noch deine restliche Arbeit machen und du brauchst hinterher nur noch den Gehaltsscheck abholen ?
Denk bitte mal dran - nur selber machen macht schlau ...!!!

@Züttu:
Ich würde das mit der OB-Programmierung hier mal lassen. Optimieren könnte man dann ggf. hinterher immer noch - wenn es denn eine Optimierung ist ...
 
hallo...

Ich mache für jede Sekunde eine Zähler. Diese Zähler zählt bis zum 100.Zähler und danach reset. Fangt die Zähler wieder von 1 an.

Mein Problem ist, mein Zähler reset nach dem 100 Zähler bzw 100 Sekunde, aber mein Impulses zählt weiter. Ich muss mein Impulses auch nach dem 100 Zähler bzw 100 Sekunde reset, um eine richtige Frequenz zu berechnet. Aber habe ich kein Idee das zu machen. Hilft mir, ich bin bin kein Erfahrene Benutzer im SPS.

danke..
 

Anhänge

  • NW 3.JPG
    NW 3.JPG
    129,6 KB · Aufrufe: 17
  • NW 4 und 5.JPG
    NW 4 und 5.JPG
    128,5 KB · Aufrufe: 13
  • NW 5 und 6.JPG
    NW 5 und 6.JPG
    120,5 KB · Aufrufe: 13
:confused::confused::confused: tut mir leid ... mit dem Programm kann ich nichts anfangen.
Warum machst du es nicht so, wie ich es dir im Beitrag #4 vorgeschlagen habe ...?

Gruß
Larry
 
Ich habe schon viel mal probieren, aber bekomme ich keine Lösung.
Meine letzte Frage ist, wie kann ich meine Impuls von geber reset machen. Ich kann diese Wert von DBI. DBD 34 (DINT Type) lesen. Ich will meine Impulse nach dem 100s Reset machen und danach wieder starten von 0.
 
Hallo,
um die Zählerkarte zu löschen (ich hatte angenommen, dass du das schon könntest) mußt du folgendes machen :
- den Ladewert auf 0 bringen (DBD 0 des Koppelbereichs)
- das SW-Tor schliessen
- das Bit Load_Val setzen (Bit 15.0 des Koppelbereichs)
der Zähler hat das angenommen, wenn du auf der Rückmeldung_Load (Bit 15.0 des koppelbereichs Lesen) ein True hast.
Nun kannst du den Load_Val wieder auf False bringen und das SW_Tor wieder schliessen ...

Gruß
Larry

Nachsatz:
ich arbeite übrigens NICHT mit den mitgelieferten FB / FC's - somit bezieht sich mein Beitrag auch nicht auf diese sondern die grundsätzliche Vorgehensweise ...
 
Zurück
Oben