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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Umgang mit indirekt adressierten Timern

  1. #1
    Registriert seit
    19.12.2006
    Beiträge
    185
    Danke
    25
    Erhielt 26 Danke für 21 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    da ich in einem selbst erstellten FC´s einen Timer benötige, kam mir die Idee die Timeradresse indirekt zu adressieren. Ich lege aussen am FC dann nur noch ein Int an.

    Im FC lade ich dann die IN Variable in eine temporäre und weise diese dann dem Timer zu:

    Code:
    //indirekte Zeitadresse laden
          L     #ADR_TIMER
          T     #ADR_TIMER_TMP
    
    
     L     #TIME_VERZ_FEHLER
          SE    T [#ADR_TIMER_TMP]
    
    
    
     U     T [#ADR_TIMER_TMP]
    
    //tu was...
    Leider ist der verwendete Timer so nicht mehr den Referenzdaten zu entnehmen. Der spätere Anwender müsste dann also genau wissen was er macht (z.B. bei Programmänderungen...) um nicht einen schon benutzten Timer ein zweites mal zu benutzen.

    Was haltet ihr davon / wie haltet ihr das in der Praxis?


    Der Variablentyp IN: TIMER bringt leider keine Abhilfe.
    Der Timer läuft dann einfach nicht los.
    Vielleicht mache ich da auch einen großen Fehler ?
    Bei einem Test mit einem FB statt FC funktioniert die TIMER Variable auch nicht


    Über Tips, Meinungen und Kniffe würde ich mich sehr freuen!


    Daniel


    Simatic Manager V5.4 SP4
    CPU 313C, 3152-DP
    PLCSIM
    Zitieren Zitieren Umgang mit indirekt adressierten Timern  

  2. Folgender Benutzer sagt Danke zu mkd für den nützlichen Beitrag:


  3. #2
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    ein vorschlag:

    in FBs die IEC-timer verwenden z.B. SFB4 "TON" und als multiinstanz einbinden.

    in FCs bau ich mir die timer gern selber über den cpu-takt ...

    ...so und jetz können die anderen über sinn und unsinn von s5-timern referrieren
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  4. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    Hallo,
    das wäre nicht mein Fall ...

    Wenn du es unbedingt so machen willst, warum übergibst du dem FC den Timer nicht als IN-Parameter ? Also :
    Code:
    Var_Input 
       Timer_Nr  : Timer ;
    Dann hättest du das Ding auch wieder in den Querverweisen.

    Eine weitere Möglichkeit wäre mit den IEC-Timern zu arbeiten (z.B. SFB4). Das ist aber eigentlich eher etwas in einem FB, da man den Timer dort mit in die Instanz einbinden kann ...


    Nachsatz:
    4L war etwas schneller ...

    Gruß
    LL

  5. #4
    mkd ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.12.2006
    Beiträge
    185
    Danke
    25
    Erhielt 26 Danke für 21 Beiträge

    Standard

    Hallo,

    Zitat Zitat von vierlagig Beitrag anzeigen
    ein vorschlag:

    in FCs bau ich mir die timer gern selber über den cpu-takt ...

    referrieren
    O.K. dann brauche ich aber doch auch noch eine Puffer Variable vom Typ IN_OUT in der ich im Sekundentakt zähle, somit würde ich unter Umstäden wieder einen FB mitschleppen.

    Oder verstehe ich dich falsch?

  6. #5
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    nein, verstehst das nicht falsch, aber ich schreib lieber eine variable mehr als inout, als gefahr zu laufen, dass irgendwer daher kommt und die timer die ich verwende an anderer stelle nochmal verwendet ... bevor ich eine globale programmierung ändere guck ich auch erst, ob die adressen, die ich verwenden möchte schon benutzt sind, bei indirekter timer und zähleradressierung ist das nicht möglich, außer du legst dir eine liste an, in der alle indirekt verwendeten aufgelistet sind ...

    [edit] habs jetzt nicht getestet, aber ich glaube ich hab bullshit erzählt, wenn ich T23 am IN übergebe, wird das natürlich auch referenziert, oder? dann gilt obiges nur für merker und andere indirekte zugriffe [/edit]
    Geändert von vierlagig (22.08.2008 um 13:57 Uhr)
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  7. #6
    Registriert seit
    11.05.2005
    Ort
    Baden-Württemberg
    Beiträge
    669
    Danke
    113
    Erhielt 153 Danke für 124 Beiträge

    Standard

    hi,

    mit IN-Timer sollte das klappen.
    Folgendes läuft bei mir:

    Code:
    FUNCTION FC 1 : VOID
    TITLE =
    { S7_language := '7(1) Deutsch (Deutschland)  16.08.2008  13:59:15' }
    VERSION : 0.1
     
    VAR_INPUT
      START : BOOL ; 
      ZEITGLIED : TIMER ; 
    END_VAR
    VAR_OUTPUT
      QZEIT : BOOL ; 
    END_VAR
    BEGIN
    NETWORK
    TITLE =
          L     S5T#10S; 
          U     #START; 
          SE    #ZEITGLIED; 
          U     #ZEITGLIED; 
          =     #QZEIT; 
    END_FUNCTION
    Gruß

    Micha

  8. #7
    mkd ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.12.2006
    Beiträge
    185
    Danke
    25
    Erhielt 26 Danke für 21 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Hallo,
    das wäre nicht mein Fall ...

    Wenn du es unbedingt so machen willst, warum übergibst du dem FC den Timer nicht als IN-Parameter ? Also :
    Code:
    Var_Input 
       Timer_Nr  : Timer ;
    Dann hättest du das Ding auch wieder in den Querverweisen.

    Eine weitere Möglichkeit wäre mit den IEC-Timern zu arbeiten (z.B. SFB4). Das ist aber eigentlich eher etwas in einem FB, da man den Timer dort mit in die Instanz einbinden kann ...


    Nachsatz:
    4L war etwas schneller ...

    Gruß
    LL
    Der Timer als IN Parameter funktioniert nicht
    Ich lege einfach eine IN Variable vom Typ Timer an, und schreibe dann:

    Code:
     Var_Input 
       Timer_Nr  : Timer ;
    
    L S5T#3s
    SE T Timer_Nr
    //usw.
    Am Bausteinaufruf gebe ich dann Timer_Nr z.B. T20.

    Kann mir jemand sagen was ich falsch mache?

  9. #8
    Registriert seit
    11.05.2005
    Ort
    Baden-Württemberg
    Beiträge
    669
    Danke
    113
    Erhielt 153 Danke für 124 Beiträge

    Standard

    das T ist falsch.

    Nur die Variable angeben...

  10. #9
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Hier mal zwei Programmbeispiele für die Verwendung von Timern als Eingangsparameter an einem FC:

    http://www.sps-forum.de/showpost.php...37&postcount=8

    http://www.sps-forum.de/showpost.php...70&postcount=9

    Gruß Ki

  11. #10
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Und hier noch ein weiteres Programmbeispiel für die Verwendung von Timern als Eingangsparameter an einem FB:

    http://www.sps-forum.de/showpost.php...8&postcount=43

    Ich persönlich würde aber bei einem FB mit einem IEC-Timer SFB4 TON als Multiinstanz arbeiten:

    http://www.sps-forum.de/showpost.php...3&postcount=31

    Gruß Kai

Ähnliche Themen

  1. Umgang mit CPU 315F-2DP
    Von Oest im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 05.02.2010, 13:54
  2. Antworten: 4
    Letzter Beitrag: 05.09.2007, 00:15
  3. Hilfe !! Umgang mit Uhrzeit
    Von 78tiom im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 05.06.2007, 15:21
  4. UDT praktischer Umgang
    Von Anonymous im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 20.04.2007, 20:25
  5. Umgang mit Echtzeituhr bei S7-200
    Von Anonymous im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 20.04.2005, 15:14

Lesezeichen

Berechtigungen

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