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

Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 37

Thema: Umwandeln!

  1. #21
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.732
    Danke
    314
    Erhielt 1.519 Danke für 1.282 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zum SFB0,
    das Stichwort lautet Multiinstanz.
    Die Forumssuche sollte dabei helfen.

    Generell könnte ich mich aber nicht erinnern wann ich das letzte Mal Zähler benutzt habe,
    bei der S7 tendiere ich sogar zu nie, eigenlicht habe ich in letzter Zeit immer nur INT's oder DINT's inkrementiert.

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).
    Zitieren Zitieren Multiinstanz  

  2. #22
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    jetzt mal unabhängig davon wie sinnvoll ein zähler ist.

    typüberprüfung abschalten und den dez-ausgang benutzen. fertig.
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  3. #23
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Ich habe es ja nicht so mit der S7 aber wer keinen FB will (schau zu Ralle) der kann ja auch einen FC bauen und die VAR_IN_OUT als Speicher gebrauchen.

    Hier mal ein ganz einfacher (primitiver) ZV mit zwei IN_OUTs die eben mit statischer Variablen beschaltet sein müssen.

    Code:
    FUNCTION FC 66 : VOID
    
    VAR_INPUT
      ZV : BOOL ;   
      R : BOOL ;    
    END_VAR
    VAR_IN_OUT
      Count : INT ; 
      FPbit : BOOL ;    
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
          U     #ZV; 
          FP    #FPbit; 
          SPBN  M001; 
          L     #Count; 
          L     1; 
          +I    ; 
          T     #Count; 
    M001: CLR   ; 
          U     #R; 
          SPBN  M002; 
          L     0; 
          T     #Count; 
    M002: CLR   ; 
    
    END_FUNCTION
    If you open your Mind too much, your Brain will fall out.

  4. #24
    sr-83 ist offline Benutzer
    Themenstarter
    Registriert seit
    19.01.2007
    Beiträge
    69
    Danke
    10
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von IBFS Beitrag anzeigen
    nimm einfach einen ADD_I (Positiv-Addierer) und triggere den "EN" Eingang beim hochzählen
    und einen zweiten ADD_I (Negativ-Addierer) und triggere den "EN" Eingang beim runterzählen.




    IN1 belegt mit Aktuellem Zählwert (aus DB)

    IN2 belegt mit "1" (BZW MINUS 1 beim "Negativ-Addierer")

    OUT belegt mit Aktuellem Zählwert +/-1 (aus DB)


    kannst aber auch gleich alles mit ADD_D und DINT machen, denn sonst ist die Grenze +32767 / -32 768
    Ich habe mich für diese Lösung entschieden und funktioniert für meine Funktion super!

    Wo wir gleich beim Zählen sind! Ich habe einen Zähler programmiert der von 1 - 36 zählt! Es gibt ein Soll und IST Wert(Zählwert)! Ist der Soll unterschiedlich vom IST, nimmt er den kürzesten Weg zum Soll-Wert (z.b. IST = 2 , SOLL = 35 -> entsprechen rückwärts 3 Positionen ohne "0")
    Jetzt möchte ich gerne ein Merker melden lassen, wenn der IST-Wert sprich der Zählwert 2 Positionen vor dem Soll ist! Mein Problem ist wie ich das mache, wenn der Fall ist wie im Beispiel, dass der Zähler über 1 auf 35 zurückzählt bzw vorwärts 34 auf 3 oder so!?
    Hoffe ihr versteht mein Problem!

  5. #25
    Registriert seit
    30.06.2007
    Ort
    In der Pfalz
    Beiträge
    503
    Danke
    72
    Erhielt 77 Danke für 65 Beiträge

    Standard

    Zitat Zitat von sr-83 Beitrag anzeigen
    Ich habe mich für diese Lösung entschieden und funktioniert für meine Funktion super!

    Wo wir gleich beim Zählen sind! Ich habe einen Zähler programmiert der von 1 - 36 zählt! Es gibt ein Soll und IST Wert(Zählwert)! Ist der Soll unterschiedlich vom IST, nimmt er den kürzesten Weg zum Soll-Wert (z.b. IST = 2 , SOLL = 35 -> entsprechen rückwärts 3 Positionen ohne "0")
    Jetzt möchte ich gerne ein Merker melden lassen, wenn der IST-Wert sprich der Zählwert 2 Positionen vor dem Soll ist! Mein Problem ist wie ich das mache, wenn der Fall ist wie im Beispiel, dass der Zähler über 1 auf 35 zurückzählt bzw vorwärts 34 auf 3 oder so!?
    Hoffe ihr versteht mein Problem!
    So wie du es hier schon erklärt bekommen hast:
    http://www.sps-forum.de/showthread.p...=Positionieren
    nur mit 36 statt 20.

  6. #26
    sr-83 ist offline Benutzer
    Themenstarter
    Registriert seit
    19.01.2007
    Beiträge
    69
    Danke
    10
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ja aber das ist ja die Drehrichtungsentscheidung gewesen! Vll denk ich da auch zu kompliziert! Aber nun geht es ja um 2 Positionen davor bzw dahinter!

  7. #27
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Hier mal eine SCL Funktion die den kürzesten Abstand zwischen Soll und Ist berechnet.

    Code:
    FUNCTION FC55 : INT
    
    VAR_INPUT
      // input Variablen
      Range :INT;
      Soll  :INT;
      Ist   :INT;
    END_VAR
    
    
    VAR_TEMP
      // temporäre Variablen
      Delta :INT;  
    END_VAR
    
    IF ABS(Soll - Ist) < (Range / 2) THEN
      Delta := Soll - Ist;
    ELSE
      IF Soll - Ist > 0 THEN
        Delta := Soll - Ist  - Range;
      ELSE
        Delta := Soll - Ist + Range;
      END_IF;
    END_IF;
    
    FC55 := Delta;
    
    END_FUNCTION
    If you open your Mind too much, your Brain will fall out.

  8. #28
    sr-83 ist offline Benutzer
    Themenstarter
    Registriert seit
    19.01.2007
    Beiträge
    69
    Danke
    10
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von zotos Beitrag anzeigen
    Hier mal eine SCL Funktion die den kürzesten Abstand zwischen Soll und Ist berechnet.

    Code:
    FUNCTION FC55 : INT
    
    VAR_INPUT
      // input Variablen
      Range :INT;
      Soll  :INT;
      Ist   :INT;
    END_VAR
    
    
    VAR_TEMP
      // temporäre Variablen
      Delta :INT;  
    END_VAR
    
    IF ABS(Soll - Ist) < (Range / 2) THEN
      Delta := Soll - Ist;
    ELSE
      IF Soll - Ist > 0 THEN
        Delta := Soll - Ist  - Range;
      ELSE
        Delta := Soll - Ist + Range;
      END_IF;
    END_IF;
    
    FC55 := Delta;
    
    END_FUNCTION
    Habe das gerade mal versucht in AWL bzw mit Fup zu lösen, aber dafür fehlen mir ein paar Infos! Ich mag den SCL Stil ja auch am liebsten, weil ich früher mal mit Excel VB angefangen bin!
    Aber bei dieser Lösung,hmm! Range ist die Hälfte an Positionen oder? Also 18 !?? Bei IST=4 und SOLL= 5 z.B würde ja beide IF-Abfragen "Wahr" sein oder nicht?
    Wofür steht dieses ABS hinter dem ersten IF?

    Schöne Grüße

  9. #29
    Registriert seit
    03.01.2006
    Ort
    Im sonnigen Süden von Österreich!
    Beiträge
    1.377
    Danke
    227
    Erhielt 182 Danke für 167 Beiträge

    Standard

    Zitat Zitat von sr-83 Beitrag anzeigen
    Wofür steht dieses ABS hinter dem ersten IF?

    Schöne Grüße
    Hallo!

    Das ABS steht für Betrag.
    Also es wird der Betrag ausgerechnet. Der Wert kann nie Minus erreichen.

    godi

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

    sr-83 (03.09.2007)

  11. #30
    sr-83 ist offline Benutzer
    Themenstarter
    Registriert seit
    19.01.2007
    Beiträge
    69
    Danke
    10
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich spiel schon den ganzen Tag mit Excel rum, um eine Formel zu entwerfen und die dann in Fup zu realsieren bzw in AWl, aber da bin ich noch nicht so fit es zu schreiben! Aber irgendwie fehlt mir immer noch ein Lösungsansatz für die Aufgabe!

Ähnliche Themen

  1. Umwandeln Hex in Dez mit S7-300
    Von hubert im Forum Simatic
    Antworten: 19
    Letzter Beitrag: 29.07.2015, 16:00
  2. von FUB in SCL umwandeln ?
    Von feelix1 im Forum Simatic
    Antworten: 28
    Letzter Beitrag: 20.03.2008, 10:15
  3. Umwandeln
    Von isensa im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 24.07.2006, 00:59
  4. S5 umwandeln
    Von Holle6 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 14.09.2005, 06:06
  5. Int umwandeln
    Von kolbendosierer im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 28.03.2005, 13:16

Lesezeichen

Berechtigungen

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