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

Seite 3 von 5 ErsteErste 12345 LetzteLetzte
Ergebnis 21 bis 30 von 42

Thema: Zähler will nicht hochzählen in SCL!

  1. #21
    Tommy843 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.03.2012
    Beiträge
    147
    Danke
    27
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Mal so rein Informationstechnisch. Das soll dann irgendwann mal zur Anzeige eines Gesamtmaschinentaktes am Panel führen. Ich hab mir das jetzt als Stückzahl pro Minute ausgerechnet, funktioniert auch so einwandfrei. Aber is der Maschinentakt nicht eher die Geschwindigkeit der Maschine an sich? Es gibt nicht zufällig irgendwelche Vorgaben diesbezüglich aus irgendwelchen Normen an die man sich zu halten hat?

    Habe gerade meinen Chef nochmal gefragt, ist so wie ich mir das gedacht habe richtig. Würde mich dennoch interessieren ob ihr da andere Varianten kennt

  2. #22
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.848
    Danke
    402
    Erhielt 2.430 Danke für 2.025 Beiträge

    Standard

    Tja ... also ... Machinentakt = Arbeit.
    In Arbeit steckt immer die Zeit mit drin.
    Ob du aber nun Stück/Minute oder Stück/Stunde oder Stück/Schicht oder m³/Zeit machst - das bleibt bei dir oder den Forderungen, die du erfüllen sollst ...

    Gruß
    Larry

  3. #23
    Tommy843 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.03.2012
    Beiträge
    147
    Danke
    27
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Tja ... also ... Machinentakt = Arbeit.
    In Arbeit steckt immer die Zeit mit drin.
    Ob du aber nun Stück/Minute oder Stück/Stunde oder Stück/Schicht oder m³/Zeit machst - das bleibt bei dir oder den Forderungen, die du erfüllen sollst ...

    Gruß
    Larry
    Danke Larry,
    so in etwa hab ich mir das fast schon gedacht...

  4. #24
    Tommy843 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.03.2012
    Beiträge
    147
    Danke
    27
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Sooo Ducati,
    was hältst du denn davon? Funktioniert sogar prima! Ich überlege gerade welche Teile meines Programms ich noch genauso übersichtlich umschreiben kann.
    Aber danke nochmal für den Denkanstoß...

    Code:
    TITLE = 'Taktzähler'
    // Baustein-Kommentar ...
    VERSION : '0.1'
    AUTHOR  : 'Autor'
    NAME    : 'Firma'
    
    
    // Bausteinparameter
    VAR_INPUT
        Takt                :BOOL:=false;        //Takt zum Zählen
        Komplett_Reset      :BOOL:=false;        //Komplettes Rücksetzen der Zähler
    END_VAR
    
    VAR_OUTPUT
        MaschinenTakt       :REAL:=0;            //Maschinentakt
    END_Var
    
    VAR
        Sekunden            :INT:=0;             //Sekundenzähler
        Minuten             :INT:=0;             //Minutenzähler
        Stueck_Links        :WORD:=0;            //Stückzahl linke Maschine
        Stueck_Rechts       :WORD:=0;            //Stückzahl rechte Maschine
        Stueckzahl          :INT:=0;             //Stückzahl Gesamt
        Geschwindigkeit     :REAL:=0;            //Maschinentakt
        Zaehler_Links       :WORD;
        Zaehler_Rechts      :WORD;
    END_VAR
    
    IF Takt THEN Sekunden:=Sekunden+1;           //Sekunden hochzählen bis 60
    ELSIF Sekunden=60 OR Komplett_Reset THEN Sekunden:=0;
    END_IF;
    IF Sekunden=60 THEN Minuten:=Minuten+1;      //Minuten hochzählen bis ?????
    ELSIF Komplett_Reset THEN Minuten:=0;
    END_IF;
    
    IF Sekunden=60 THEN
        Stueckzahl:=((WORD_TO_INT(Stueck_Links))+(WORD_TO_INT(Stueck_Rechts)));
        Geschwindigkeit:=(INT_TO_REAL(Stueckzahl))/(INT_TO_REAL(Minuten));
    END_IF;
    
    //Ausgabe an Bausteinausgänge
    MaschinenTakt:=Geschwindigkeit;
    
    //Zähler
    Zaehler_Links:=S_CU(C_NO:= Z1, CU:=M9.7, S:=M9.6, PV:=0,R:=M0.1,CV:=Stueck_Links);
    Zaehler_Rechts:=S_CU(C_NO:= Z2, CU:=M13.7, S:=M9.6, PV:=0,R:=M0.1,CV:=Stueck_Rechts);
    
    END_FUNCTION_BLOCK

  5. #25
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.666
    Danke
    791
    Erhielt 663 Danke für 501 Beiträge

    Standard

    Wieso definierst du Variablen die du eh nur Ganzzahlig brauchst nicht direkt als INT?

    Dieser Teil:
    Code:
    //Zähler
    Zaehler_Links:=S_CU(C_NO:= Z1, CU:=M9.7, S:=M9.6, PV:=0,R:=M0.1,CV:=Stueck_Links);
    Zaehler_Rechts:=S_CU(C_NO:= Z2, CU:=M13.7, S:=M9.6, PV:=0,R:=M0.1,CV:=Stueck_Rechts);
    Verhindert das du deinen geschriebenen Baustein mehr als einmal aufrufen kannst.
    Erstens sind Zähler Imho nicht nötig. Denn eine simple Zählfunktion ist in SCL wenige Zeilen lang.
    Und wenn man diese doch benutzt, nutzt man keine Globalen Merker im Baustein und auch keine globale Zähleradressierung, die sollte über die Schnittstelle kommen.

    ABer am besten nutzt du gleich einen IEC Zähler "CTU" "CTD" SFB0 und 1

    mfg René

  6. Folgender Benutzer sagt Danke zu vollmi für den nützlichen Beitrag:

    ducati (01.08.2013)

  7. #26
    Registriert seit
    09.08.2006
    Beiträge
    3.680
    Danke
    921
    Erhielt 669 Danke für 549 Beiträge

    Standard

    Zitat Zitat von vollmi Beitrag anzeigen
    Wieso definierst du Variablen die du eh nur Ganzzahlig brauchst nicht direkt als INT?
    Jo, oder DINT wenns größer als 32000 werden könnte.

    Code:
    Zaehler_Links:= Zaehler_Links+1;
    Gruß.

  8. Folgender Benutzer sagt Danke zu ducati für den nützlichen Beitrag:

    vollmi (01.08.2013)

  9. #27
    Tommy843 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.03.2012
    Beiträge
    147
    Danke
    27
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von vollmi Beitrag anzeigen
    Wieso definierst du Variablen die du eh nur Ganzzahlig brauchst nicht direkt als INT?
    Ich würde mal sagen, Gewohnheit oder Aufgrund von Erfahrungen wo ich dachte das es anders nicht geht.
    Zitat Zitat von vollmi Beitrag anzeigen
    Dieser Teil:
    Code:
    //Zähler
    Zaehler_Links:=S_CU(C_NO:= Z1, CU:=M9.7, S:=M9.6, PV:=0,R:=M0.1,CV:=Stueck_Links);
    Zaehler_Rechts:=S_CU(C_NO:= Z2, CU:=M13.7, S:=M9.6, PV:=0,R:=M0.1,CV:=Stueck_Rechts);
    Verhindert das du deinen geschriebenen Baustein mehr als einmal aufrufen kannst.
    Erstens sind Zähler Imho nicht nötig. Denn eine simple Zählfunktion ist in SCL wenige Zeilen lang.
    Und wenn man diese doch benutzt, nutzt man keine Globalen Merker im Baustein und auch keine globale Zähleradressierung, die sollte über die Schnittstelle kommen.

    ABer am besten nutzt du gleich einen IEC Zähler "CTU" "CTD" SFB0 und 1

    mfg René
    Was meinst du mit verhindert? Könntest du das genauer erläutern...
    Aber mit der Zählfunktion hast du echt recht!
    Ich glaub das bau ich nochmal um, hab wohl einfach nicht nachgedacht und die Sachen stumpf übertragen...

    MFG

  10. #28
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.666
    Danke
    791
    Erhielt 663 Danke für 501 Beiträge

    Standard

    Zitat Zitat von Tommy843 Beitrag anzeigen
    IWas meinst du mit verhindert? Könntest du das genauer erläutern...
    Da z.B. Z1 systemweit nur einmal verwenden kann. Gibt es konflikte wenn du den Baustein zweimal aufrufst (weil du z.B. mit einer SPS zwei Bänder zählen willst) Denn jedesmal wird auf Z1 zugegriffen, von beiden Aufrufen.

    Ich nehme an die Merker sind irgendwelche Rückmeldungen von Aktoren oder Sensoren? Dann werden die von aussen an den Baustein angeklemmt, entweder bei IN einen Eingang dafür deklakrieren oder halt mit INOUT eine Schnittstelle definieren auf die du dann auch schreiben kannst.

    Wie weiter vorne schon erwähnt, ziehe ich INOUT auch als Speicherschnittstelle für den Zählerstand vor, da könntest du dann auch einen Remanenten DB oder Merker anhängen damit du den Zählerstand beim konsistenten Laden deines FB und IDB verlierst.

    mfG René

  11. Folgender Benutzer sagt Danke zu vollmi für den nützlichen Beitrag:

    Tommy843 (01.08.2013)

  12. #29
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.769
    Danke
    447
    Erhielt 930 Danke für 749 Beiträge

    Standard

    Zitat Zitat von vollmi Beitrag anzeigen
    ... damit du den Zählerstand beim konsistenten Laden deines FB und IDB verlierst.
    Kann es sein, dass da ein "nicht" fehlt?



  13. Folgender Benutzer sagt Danke zu hucki für den nützlichen Beitrag:

    vollmi (01.08.2013)

  14. #30
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.666
    Danke
    791
    Erhielt 663 Danke für 501 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    oh das is mir glaub ich runtergefallen *bück*

Ähnliche Themen

  1. Step 7 Zähler in SCL
    Von spirit im Forum Simatic
    Antworten: 59
    Letzter Beitrag: 19.07.2013, 07:17
  2. SCL Zähler/Timerproblem
    Von bayernburn im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 14.06.2012, 08:18
  3. in SCL Bitadressen hochzählen
    Von JOKER83 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 04.06.2009, 22:44
  4. Zähler in SCL
    Von Felse im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 09.03.2009, 16:49
  5. Hochzählen mit FP geht nicht.
    Von jackjones im Forum Programmierstrategien
    Antworten: 5
    Letzter Beitrag: 14.10.2008, 18:54

Lesezeichen

Berechtigungen

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