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

Ergebnis 1 bis 4 von 4

Thema: Entprellung vieler Eingänge bei ILC 150 ETH

  1. #1
    Registriert seit
    07.09.2011
    Beiträge
    145
    Danke
    0
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen!

    Ich bin gerade dabei mir zu überlegen wie ich am besten ca. 70 Eingänge entprelle...

    Muss ich jeden Eingang mit einem eigenen Debounce bearbeiten oder kann die SPS vielleicht das selber?
    Oder kann man das in einer FOR Schleife machen?

    Wenn man das mit einem Debounce für jeden Eingang macht kommt ja ganz schön viel Code zusammen.

    EDIT:
    Vielleicht so?
    Code:
    TYPE
     S_BIT : STRUCT
       EDGE : BOOL;
       Q : BOOL;
       tn : UDINT;   
     END_STRUCT;
    END_TYPE
    TYPE
     INPUTS_DW : Array[0..31] OF S_BIT;
     INPUTS_BYTE : Array[0..7] OF S_BIT;
    END_TYPE
    Code:
    IF NOT init THEN
     FOR i := 0 TO 31 DO
      inp[i].EDGE := FALSE;
      inp[i].Q := FALSE;
     END_FOR;
     init := TRUE;
    END_IF;
      
    T_PLC_MS(); (* read system timer *)
    tx := T_PLC_MS.T_PLC_MS;
    FOR i := 0 TO 31 DO
     (* set edge if input got high *)
     IF BIT_OF_DWORD(INPUTS,i) THEN
      IF NOT inp[i].EDGE THEN
       inp[i].EDGE := TRUE;
       inp[i].tn := tx;
      END_IF;
     END_IF;
     (* check inputs with high edge if debounce time elapsed *)
     IF BIT_OF_DWORD(INPUTS,i) AND inp[i].EDGE THEN
      IF tx - inp[i].tn >= TIME_TO_UDINT(Entprellzeit) THEN
       inp[i].Q := TRUE;
      END_IF;
     ELSIF NOT BIT_OF_DWORD(INPUTS,i) THEN (* check if input is false *)
      inp[i].EDGE := FALSE;
      inp[i].Q := FALSE;
     END_IF;
    END_FOR;
    BIT1 := inp[0].Q;
    BIT2 := inp[1].Q;
    BIT3 := inp[2].Q;
    BIT4 := inp[3].Q;
    BIT5 := inp[4].Q;
    BIT6 := inp[5].Q;
    BIT7 := inp[6].Q;
    BIT8 := inp[7].Q;
    BIT9 := inp[8].Q;
    BIT10 := inp[9].Q;
    BIT11 := inp[10].Q;
    BIT12 := inp[11].Q;
    BIT13 := inp[12].Q;
    BIT14 := inp[13].Q;
    BIT15 := inp[14].Q;
    BIT16 := inp[15].Q;
    BIT17 := inp[16].Q;
    BIT18 := inp[17].Q;
    BIT19 := inp[18].Q;
    BIT20 := inp[19].Q;
    BIT21 := inp[20].Q;
    BIT22 := inp[21].Q;
    BIT23 := inp[22].Q;
    BIT24 := inp[23].Q;
    BIT25 := inp[24].Q;
    BIT26 := inp[25].Q;
    BIT27 := inp[26].Q;
    BIT28 := inp[27].Q;
    BIT29 := inp[28].Q;
    BIT30 := inp[29].Q;
    BIT31 := inp[30].Q;
    BIT32 := inp[31].Q;
    Geändert von Portisch (18.02.2014 um 15:16 Uhr)
    Zitieren Zitieren Entprellung vieler Eingänge bei ILC 150 ETH  

  2. #2
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.293
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard

    Ich weiß zwar nicht wozu es dienen soll ALLE Eingänge zu entprellen, aber versuch mal in der Hardwarekonfig beim Interbus das über die Vorgabezykluszeit zu machen.
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

  3. #3
    Portisch ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.09.2011
    Beiträge
    145
    Danke
    0
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Die Vorgabezykluszeit beeinflusst dann aber alle Module, oder?

    Es sind soviele Eingänge zu entprellen, da soviele Taster an der SPS hängen - sprich ganzes Haus.

  4. #4
    Portisch ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.09.2011
    Beiträge
    145
    Danke
    0
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Als Hinweis:
    Habe nun einen eigenen Thread der mit 10ms Zykluszeit läuft. Dort wird im ersten Durchlauf die Flanke überprüft und wenn im zweiten Durchlauf (also 20ms später) der Input immer noch High ist wird er weitergereicht. Andere Lösungen forderten ca. 30% CPU Last. Mit dieser Methode ~0,1% - also eigentlich nichts.

Ähnliche Themen

  1. Hausautomatesierung mit ILC 150 ETH
    Von Chris.1987 im Forum PHOENIX CONTACT
    Antworten: 8
    Letzter Beitrag: 30.01.2014, 10:51
  2. ILC 150 ETH Webserver
    Von Portisch im Forum Sonstige Steuerungen
    Antworten: 205
    Letzter Beitrag: 29.07.2013, 13:43
  3. ILC 150 ETH - Automatische Fehlermeldung
    Von Der Fischer im Forum Sonstige Steuerungen
    Antworten: 4
    Letzter Beitrag: 08.04.2013, 10:06
  4. ILC 150 ETH an Fritzbox 7270
    Von Mobi im Forum Sonstige Steuerungen
    Antworten: 3
    Letzter Beitrag: 19.05.2011, 13:36
  5. Phoenix ILC 150 ETH + Stromüberwachung
    Von underxpressure im Forum PHOENIX CONTACT
    Antworten: 11
    Letzter Beitrag: 03.12.2010, 13:48

Lesezeichen

Berechtigungen

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