Schleife für 100 Impulszähler

fish78
2008-05-06
2008-05-07
  • fish78 - 2008-05-06

    Hallo zusammen

    habe ich momentam umgefähr 100 Impulszähler,

    und habe schon Baustein Fb_ImpulseCounter bei Wago gefunden.

    Ich habe für jede Impulszähler eine Baustein Fb_ImpulseCounter gebracht.(Imsgesamt mehr als 200 Bausteine und meisten sind selbe).

    Gibt es eine Möglichkeit,dass vielleicht eine Schleife schreiben kann,

    oder vielleicht eine dynamische Variable erzeugen kann,damit die Bausteine sparen kann.

    nicht jedes mal mit Hand eingeben.

     
  • gravieren - 2008-05-06

    Sag doch mal, was du machen willst.

    Wie schnell kommen die Impulse ?

    Wie lange stehen diese an ?

    Welche Genauheit / Zuverlässigkeit wird verlangt.

     
  • fish78 - 2008-05-06

    gravieren hat geschrieben:
    Sag doch mal, was du machen willst.
    Wie schnell kommen die Impulse ?
    Wie lange stehen diese an ?
    Welche Genauheit / Zuverlässigkeit wird verlangt.

    Hi gravieren

    anbei ist mein Programm,aber noch nicht komplett fertig.

    Habe ich bei PLC_PRG schon umgefähr 200 Zeile.

    Ich meine,kann mann die Zeile reduzieren?

    Vielleicht kann man eine Schreife schreiben?

    Die sind alle Stromimpulszaehler.

    Impulszaehler.pro [447.46 KiB]

     
  • gravieren - 2008-05-06

    Hi

    Vorweg: Der 750-638 zählt von sich aus OHNE das mann "grundsätzlich" mitzählen muss.

    D.h. Bei richtiger Parametrisierung zählt jeder 750-638 bis 16 bit Datenbreite.

    Was willst DU eigentlich machen ?

    Willst du in einer Schleife alle Werte addieren ?

    Unterschiedliche Bewertungen der Zähler machen ?

    Gruppensummen erzeugen ?

    Aktuelle Verbrauchsleistung bestimmen ?

     
  • gravieren - 2008-05-06

    Zur Info:

    Speicherwert ist 16 bit breit.

    Eine Umwandelung erfolgt durch:

    Speicherwert 1 := Speicherwert1_high1 * 256 + Speicherwert1_low1

    Die Umwandelung zur Anzeige erfolgt dann mit WORD_TO_STRING

     
  • gravieren - 2008-05-06

    Eine Abfrage / Anzeige kann unter der Programiersprache ST erfolgen.

    (Z.b. Ablegen in einem Array)

    Nur solltest du wissen, was du eigentlich machen willst.

     
  • gravieren - 2008-05-06

    Wenn du nur z.b. 5 oder 10 Zähler gleichzeitig sehen willst, kannst du diese werte in ein Array abspeichern in Anzeigen.

    Vorteil:

    • Schleifenabfrage möglich.

    • Du brauchst nur 5 oder 10 Werte in der VISU anlegen.

    Weiterblättern der ANzeige mit z.b. 2 VISU-pfeilen möglich.

    (Vorherigen 5, Nächsten 5, Zähleranfang, Zählerende)

    • Du könntest den Zählern auch nahmen aus einem STRING-Array geben.
     
  • fish78 - 2008-05-06

    gravieren hat geschrieben:
    Hi
    Vorweg: Der 750-638 zählt von sich aus OHNE das mann "grundsätzlich" mitzählen muss.
    D.h. Bei richtiger Parametrisierung zählt jeder 750-638 bis 16 bit Datenbreite.
    Was willst DU eigentlich machen ?
    Willst du in einer Schleife alle Werte addieren ?
    Unterschiedliche Bewertungen der Zähler machen ?
    Gruppensummen erzeugen ?
    Aktuelle Verbrauchsleistung bestimmen ?

    Hi gravieren

    Die Hardware brauche ich zuerst nicht berĂĽcksichtigen.

    Die Frage ist,die Anzahl von Impulszähler ist noch nicht festgelegt.

    manchmal 100 ,manchmal 80.

    Kann man so machen?Die Anzahl von Impulszähler als dynamische Variable machen,und wenn ich 80 eingeben,es wird nur 80 Zähler erzeugen.

    Bei Visu gibt es kein Problem.

    Aber bei PLC_PRG kann man irgendwo ändern?(hier meine ich die Schreife)

    Späte wenn ich 100 eingeben,dann erzeugen automatisch 100 Zähler.

    Nicht wie jetzt ,wenn mehrere Zähler braucht,muss man immer mit Hand die Bausteine einfügen.

     
  • gravieren - 2008-05-06

    @fish78

    Zitat:
    Aber bei PLC_PRG kann man irgendwo ändern?(hier meine ich die Schreife)
    Unter FUP gibt es KEINE "Schleifen".

    Schleife unter ST:

    FOR Zaehler:=1 TO 80 BY 1 DO
        Var1:=Var1*2;
    END_FOR;
    
     
  • fish78 - 2008-05-06

    gravieren hat geschrieben:
    @fish78
    Unter FUP gibt es KEINE "Schleifen".
    Schleife unter ST:

    FOR Zaehler:=1 TO 80 BY 1 DO
        Var1:=Var1*2;
    END_FOR;
    

    Hi gravieren

    diese Code kenne ich noch,aber das Problem ist,ob die Baustein Fb_ImpulseCounter reduzieren kann,oder Baustein Fb_ImpulseCounter von Anzahl des Impulszählers abhängen kann.

    Bei ST können wir Array machen, wieviele Variablen wir haben,brauchen wir entsprechende Baustein Fb_ImpulseCounter .

    Aber momentam die Anzahl von Baustein Fb_ImpulseCounter bei mir ist festgelegt,kann man die Anzahl von Baustein Fb_ImpulseCounter auch zugreifen oder ändern.

    oder es ist ganz kompliziert?

     
  • gravieren - 2008-05-06

    Vorab, warum benötigst du 20 Bibliotheken ?

    Lies dir mal die Funktionsbeschreibung "Fb_ImpulseCounter" durch.

    Dieser Baustein ist für das Zählen von Impulsen zuständig.

    Die gezählten Impulse werden dann bewertet.

    Also Funktion Fb_ImpulseCounter :

    SPS-Zyklus läuft.

    Abfrage ob Impuls kommt.

    Ja, erhöhe den Wert von"Fb_ImpulseCounter".

    Ausgangssignal --> Anzahl der Impuls * Zählerkonstante.

    SPS ist in Stop.

    Keine Abfrage, deshab verlust der Impulse

    ABER:

    Du hast Hardwarezähler, ist die bessere Alternative.

    Ist auch NICHT Zeitkritisch.

    (Sollten die Impulse mit z.b. 15 Hz ankommen)

    (und die Zykluszeit ist hoch verlierst du mit den)

    (Hardwarezählern KEINE Impulse)

     
  • gravieren - 2008-05-06

    Irgendwie weisst du immer noch NICHT was du willst.

    (Oder ich verstehe es einfach nicht )

    Mein Lösungsansatz sähe so aus:

    1.

    Hardwarezähler besorgen.

    Vorteil:

    Impulse bis 500 Hz können registriert werden.

    Keine zusätzlichen Funktionsbausteine notwendig.

    Impulse werden auch bei CPU in Stop weitergezählt.

    Z.b. Umprogrammieren der Visu, des SPS-Programms ...

    O.K. Du verwendest den 750-638

    Den "Fb_ImpulseCounter" benötigst du NICHT

    (Für was auch, das Zählen macht der Zähler)

    2.

    Auslesen der Zählerwerte des 750-638.

    Jetzt weisst du wieviele Impulse du bekommen hast.

    Verbrauch berechnen.

    Z.b.

    Zählerkonstante 2,5 KW pro Impuls.

    Du hast 55 Impulse * 2,5 KW --> 137.5 KW

    Je nach Anzahl der Impulse u.u. den 750-638 auf Ăśberlauf prĂĽfen.

    FERTIG !

     
  • gravieren - 2008-05-06

    Achso, mit dem "Fb_ImpulseCounter" willst du dir die "Aktuelle Leistung" anzeigen lassen ?

    (Nicht den Verbrauch)

    Geht ohne den "Fb_ImpulseCounter" in einer Schleife.

    Z.b. alle 5 Sekunden abfragen.

    ("alter ZS" - "neue ZS") * Konstantinterval.

    P.S: Ich vermute, dass "Fb_ImpulseCounter" bei 100 Instanzen etliche Impulswerte verliert und somit "Mist" anzeigen wird.

    P.P.S: Vie hoch ist deine Zykluszeit bei 100 Zählern mit "Fb_ImpulseCounter" ?

     
  • fish78 - 2008-05-07

    Hi gravieren

    vielen Dank fĂĽr deine Antworten und BemĂĽhung.

    Es gibt jetzt 84 Stromzähler bei uns.

    Ich werde den aktuelle Zählerwert und monatlische Zählerwert von jedem Zähler in Visu darstellen.

    Die aktuelle Zählerwert kann ich durch 750-638 auslesen.

    Bei die Umwandlung von Zählerwert zu Gebrauchsleistung muss für jeden Zähler eine Zeile Programm schreiben.

    Es nötigt 84 Zeilen.

    Aber der monatlische Zählerwert muss durch Baustein "Fb_ImpulseCounter" rechnen.

    Ich habe einfach für jeden Zähler ein Baustein "Fb_ImpulseCounter" verwendet.

    Es braucht noch 84 Zeilen zu schreiben.

    Spät werde Anzahl von Zähler ändern.Vielleicht gibt es mehr als 100 Stromzähler oder wenig als 84 Stromzähler.

    Deswege denke ich,vielleicht kann ich ein ST Programm schreiben.

    Damit werden alle Werte in eine Arrayfunktion geschrieben.

    Dann in PLC_PRG braucht man vielleicht nur eine Zeile fĂĽr Umwandlung und eine Zeile fĂĽr Baustein "Fb_ImpulseCounter" zu schreiben.

    Die Funktion von "Fb_ImpulseCounter" hat mir kein Problem,also meine Frage geht nich um Baustein "Fb_ImpulseCounter".

    P.S: die Zykluszeit werde ich spät eingeben.

    P.S spät werde ich mehrere Projekte rein bringen und entwickeln,deswegen brauche ich so viele Bibliotheke.

    Noch mal Daaaaaaaaaaaank

     

Log in to post a comment.