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

Seite 1 von 5 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 42

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

  1. #1
    Registriert seit
    05.03.2012
    Beiträge
    147
    Danke
    27
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Moin, ich würde gerne mal wissen ob einer von euch den Fehler bei meinem primitiven Zähler findet. Is nur ein Testprogramm. Das Ding mag einfach nicht hochzählen. In AWL klappts! Ich wills aber in SCL machen weil ich mich da bisschen besser auskenne. Habe das Programm schon mit sämtlichen Vorlagen verglichen die ich habe. Da kann doch auch garnet viel verkehrt gemacht werden. Null Compiler Fehler, aber das Ding bewegt sich nicht. Ratlosigkeit macht sich breit... Muss leider so gehen, weil ich weder screenshots hochladen noch Anhänge verwalten kann. Der Tag fängt gut an...FUNCTION FC1 : void
    VAR_TEMP

    END_VAR
    IF m7.0 THEN
    mw12:=mw12 + 1;
    END_IF;
    END_FUNCTION
    Zitieren Zitieren Zähler will nicht hochzählen in SCL!  

  2. #2
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.572
    Danke
    63
    Erhielt 259 Danke für 219 Beiträge

    Standard

    Ich sehe kein "BEGIN".

    Ist das der ganz Code?
    Wird der FC aufgerufen?
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  3. #3
    Registriert seit
    14.05.2012
    Beiträge
    157
    Danke
    28
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Baustein aufgerufen?
    Geht das so überhaupt, kannst jetzt nicht Testen aber müsste das dann nicht My_INT := Word_To_Int(%MW12) +1 ; sein? Also My_Int dann hald auch dein MW12 aber als INT "deklariert" ...

    Und "Begin" fehlt auch, wie Tigerente1974 schon festgestellt hat.

    Und M7.0 sollte dann eine Flanke sein, sonst zählt er dauernd hoch
    Geändert von Django2012 (31.07.2013 um 09:34 Uhr)

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

    Standard

    Der Beginn steht in dem Fall direkt hinter "der Tag fängt gut an" in einer Zeile oben drüber!
    Ich weiß, das steht blöd da, aber irgendwie kann ich nie ne neue Zeile anfangen wenn ich ein neues Thema erstelle, warum auch immer!
    Baustein wird aufgerufen ja...Das MW12 ist ja in der Symboltabelle richtig deklariert und man muss meines Wissens das dann nicht noch einmal direkt in SCL machen.

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

    Standard

    Sorry Leute, es lag irgendwie an dem Bausteinaufruf. Habe den gerade nochmal gemacht! Nun geht's aber fragt mich bitte nicht warum.

  6. #6
    Registriert seit
    09.08.2006
    Beiträge
    3.629
    Danke
    912
    Erhielt 656 Danke für 542 Beiträge

    Standard

    Naja hin oder her... ich würde es so machen:

    Code:
    FUNCTION_BLOCK FB600
    TITLE   = 'ZAEHLER1'
    // Baustein für einen Zähler
    NAME    : ZAEHLER1
    FAMILY  : Familie
    AUTHOR  : Firma
    VERSION : '0.1'
    
    VAR_INPUT
        Bedingung : BOOL := FALSE;     //Bedingung für das Zählen
    END_VAR
    
    VAR_OUTPUT
        Zaehler  : DINT :=0;           //Zählerstand
    END_VAR
    
    VAR
        Zaehler_stat  : DINT :=0;      //Zählerstand statische Variable
        Bedingung_old : BOOL := FALSE; //Flankenerkennung
    END_VAR    
        
    BEGIN;
    // Zählen
    IF Bedingung AND NOT Bedingung_old THEN
        Zaehler_stat:= Zaehler_stat+1;
    END_IF;
    
    // Flankenerkennung
    Bedingung_old:= Bedingung;
    
    // Ausgabe an Bausteinausgänge
    Zaehler:= Zaehler_stat;
     
    END_FUNCTION_BLOCK

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

    Standard

    Bitte löschen!
    Geändert von Tommy843 (31.07.2013 um 13:40 Uhr)

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

    Standard

    Kleine Zwischenfrage,
    Ich würde jetzt gerne in SCL dividieren und möchte den Endwert beispielsweise als Real in ein MD24 schreiben. Ich muss doch eigentlich das Ergebnis erst in Real wandeln, wenn ich kurz davor stehe es in meinen MD24 zu schreiben. Oder ist das falsch weil durch die Division schon Real entsteht und müsste das dann schon vor der Division in Real wandeln?

    Anderes Beispiel als oben:

    IF mw10=60 THEN
    mw20:=(WORD_TO_INT(mw16+mw18)); //MW20 als Datentyp INT, MW16+MW18 als WORD
    md24:=(INT_TO_REAL(mw20/mw12)); //MW 12 als Datentyp INT, MD24 als REAL
    END_IF;

    Oder hab ich da falsche Konvertierungsbefehle? Der Fehler liegt laut Compiler in der oberen Zeile beim MW18! Was mach ich falsch?

  9. #9
    Registriert seit
    09.08.2006
    Beiträge
    3.629
    Danke
    912
    Erhielt 656 Danke für 542 Beiträge

    Standard

    Irgendwie ist das Käse, so mit den Merkern zu arbeiten. Nimm nen FB und interne Variablen für die ganzen Berechnungen. Und alles was Du von Aussen brauchst mit Baustein/ausgängen.

    Bei Dir weiss kein Mensch, was in den Merkern für ein Format steht und ob da die Rechnung sinnvoll ist oder nicht.

    Zur Division: wenn Du nicht in REAL dividierst sondern in INT verlierst Du die Kommastellen... ob das so gewollt ist?
    Code:
    INT_TO_REAL(mw20/mw12)
    hier wird zuerst dividiert und dann erst gewandelt.

    Gruß.

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

    Tommy843 (31.07.2013)

  11. #10
    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
    Zitat Zitat von ducati Beitrag anzeigen
    Irgendwie ist das Käse, so mit den Merkern zu arbeiten. Nimm nen FB und interne Variablen für die ganzen Berechnungen.
    Gruß.
    Is ja alles schön und gut wenn das für dich Käse ist, aber ich bin da noch nicht so fitt drin und hab das bisher immer so gemacht weil ich's nachvollziehen kann!
    Aber das mit dem dividieren ist logisch, werd's mir merken.

Ä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
  •