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

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

Thema: FC parametrieren Step7

  1. #21
    Registriert seit
    15.10.2007
    Ort
    St.Pölten
    Beiträge
    875
    Danke
    98
    Erhielt 200 Danke für 188 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wie dalbi schon sagt geht das so nicht.

    Du solltest in der Schnittstelle des FB eine IN Variable vom Typ BOOL deklarieren und diese für dein Signal vom FC verwenden.
    Beginne jeden Tag mit einem lächeln,es kann dir nämlich während des Tages sehr schnell vergehen.

  2. #22
    Registriert seit
    03.11.2006
    Ort
    Niedersachsen
    Beiträge
    1.126
    Danke
    170
    Erhielt 303 Danke für 259 Beiträge

    Standard

    Neue Quelle für einen FC.

    diesen FC rufst du 10 mal auf.
    Dann noch einen globalen-DB oder auch Merker für deine 10 Türen
    (10 Flankenmerker Tür auf und 10 Flankenmerker Tür zu)
    und 10 Merker die den Zustand der Türen speichern.
    door_auf: true =Tür auf
    door_auf: false =Tür zu

    du musst dann nur noch die 10 FC-Aufrufe mit den richtigen Variablen parametrieren

    Code:
    FUNCTION FC 1 : VOID
    TITLE =
    VERSION : 0.1
    
    
    VAR_INPUT
      Tuerschalter : BOOL ;    
    END_VAR
    VAR_IN_OUT
      door_auf : BOOL ;    
      Flankenmerker_auf : BOOL ;    
      Flankenmerker_zu : BOOL ;    
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
    //Tür auf
          U     #Tuerschalter; 
          FP    #Flankenmerker_auf; 
          S     #door_auf; 
    
    
    
    // Tür zu
          U     #Tuerschalter; 
          FN    #Flankenmerker_zu; 
          R     #door_auf; 
    
    
          SET   ; //ENO handling
          SAVE  ; 
    
    
    END_FUNCTION
    Gruß
    crash

    Ich bin nicht bekloppt,
    ich bin verhaltensoriginell!

  3. #23
    OKL ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    10.04.2010
    Beiträge
    132
    Danke
    15
    Erhielt 3 Danke für 2 Beiträge

    Standard

    Danke euch. Habe ich verstanden.

    Macht es aus eurer Sicht jetzt mehr Sinn, einen FB zu nehmen und für jede Tür den FB aufzurufen oder doch besser einen FC zu erstellen, der 10 Eingänge für alle Türen hat.

    ... hätte ich mein Zeug bloß nicht optimiert ...


    Sorry crash, habe deinen Beitrag beim Verfassen des Meinigen nicht lesen können, quasi erst danach gelesen. Werde mich dem Beispiel nun widmen. Danke.
    Geändert von OKL (11.04.2010 um 14:29 Uhr)

  4. #24
    Registriert seit
    03.11.2006
    Ort
    Niedersachsen
    Beiträge
    1.126
    Danke
    170
    Erhielt 303 Danke für 259 Beiträge

    Standard

    Ich würde die FC nehmen so wie in meinem letzten Post beschrieben
    dann brauchst du nicht 10 DBs dafür "verschwenden."
    Eine Multi-Instanz wäre auch möglich aber da du ja Anfänger bist lassen wir das.
    Gruß
    crash

    Ich bin nicht bekloppt,
    ich bin verhaltensoriginell!

  5. #25
    Registriert seit
    03.11.2006
    Ort
    Niedersachsen
    Beiträge
    1.126
    Danke
    170
    Erhielt 303 Danke für 259 Beiträge

    Standard

    Wie sind eigentlich deine Türschalter angeschlossen?
    Tür auf - Kontakt geöffnet
    Tür zu - Kontakt geschlossen
    oder anders herum?
    du musst das dann im FC eventuell noch anpassen.
    Gruß
    crash

    Ich bin nicht bekloppt,
    ich bin verhaltensoriginell!

  6. #26
    OKL ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    10.04.2010
    Beiträge
    132
    Danke
    15
    Erhielt 3 Danke für 2 Beiträge

    Standard

    Hallo Crash,

    Danke für das Beispiel. Ich habe auch nur eine alte 314er CPU mit 24kb RAM. Da spare ich auch lieber.

    Was ich nur nicht aus deinem Beispiel entnehme, welche Türnummer übergeben wird. Dies brauche ich... hier mein Beispiel des bereits demontierten FB100. In meiner Urfassung hatte ich noch einen In-Parameter mit TüraufZu. Ich habe eine 1 übergeben wenn auf und eine 0 wenn zu.

    Es war mal ein FC!

    Code:
    FUNCTION_BLOCK FB 100
    TITLE =
    VERSION : 0.1
     
    VAR_INPUT
      DOORNR : BYTE ; 
      AUF : BOOL ; 
    END_VAR
    VAR_TEMP
      ErrorVar : INT ; //Errorvar für sfc20
      ErrorVar2 : INT ; //Errorvar2
      Datum_und_Zeit : DATE_AND_TIME ; 
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    //Hier werde ich noch anhand der eingetragenen Tür (1 bis 10) mit einem Zeiger in 
    //in das entsprechende Fach eines DBs einen Wert aufsummieren...
    NETWORK
    TITLE =
          CALL "BLKMOV" (
               SRCBLK                   := P#DB99.DBX8.0 BYTE 1592,
               RET_VAL                  := #ErrorVar,
               DSTBLK                   := P#DB99.DBX0.0 BYTE 1592);
          NOP   0; 
    NETWORK
    TITLE =Letzten Datensatz eintragen 1a
    //Türennummer
          L     #DOORNR; 
          T     "LOG".Eintrag[200].door; 
          NOP   0; 
    NETWORK
    TITLE =Letzten Datensatz eintragen 2
    //Datum und Zeit Teil 1
          CALL "READ_CLK" (
               RET_VAL                  := #ErrorVar2,
               CDT                      := #Datum_und_Zeit);
          NOP   0; 
    NETWORK
    TITLE =Jahr eintragen
    //Jahr eintragen
    //
          L     LB     4; 
          BTI   ; 
          T     "LOG".Eintrag[200].JAHR; 
          NOP   0; 
    NETWORK
    TITLE =Monat eintragen
          L     LB     5; 
          BTI   ; 
          T     "LOG".Eintrag[200].MONAT; 
          NOP   0; 
    NETWORK
    TITLE =Tag einfügen
          L     LB     6; 
          BTI   ; 
          T     "LOG".Eintrag[200].TAG; 
          NOP   0; 
    NETWORK
    TITLE =Stunde einfügen
          L     LB     7; 
          BTI   ; 
          T     "LOG".Eintrag[200].Stunde; 
          NOP   0; 
    NETWORK
    TITLE =Minute einfügen
          L     LB     8; 
          BTI   ; 
          T     "LOG".Eintrag[200].Minute; 
          NOP   0; 
    NETWORK
    TITLE =Sekunden einfügen
          L     LB     9; 
          BTI   ; 
          T     "LOG".Eintrag[200].Sekunde; 
          NOP   0; 
    END_FUNCTION_BLOCK
    Habe irgendwo gelesen, dass ein FC am Eingang EN immer mit einem Signal versorgt werden sollte. Bist du auch dieser Meinung oder kann ich erst, nachdem der Türkontakt geöffnet/geschlossen wurde, diesen FB aufrufen.

    Werde erst einmal Kaffee-Trinken gehen - Besuch - komme heute Abend wieder.

    Sorry für meine sicherlich blöden Fragen.

    Diese Variante musste ich aber für Flanke positiv und negativ getrennt aufrufen, also je Tür 2 Mal den FC (war es ja mal) Deine Modifikation hilft, um diesen nur noch einmal aufrufen zu müssen...
    Geändert von OKL (11.04.2010 um 14:56 Uhr)

  7. #27
    OKL ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    10.04.2010
    Beiträge
    132
    Danke
    15
    Erhielt 3 Danke für 2 Beiträge

    Standard

    Ja, es sind Öffner, das heißt NC - Tür zu, Kontakt geschlossen - sonst könnte ja auch jemand das Kabel durchscheiden und es würde kein Alarmgetöse mehr geben. (Ist sowieso nur "Spielerei", habe hier keine Goldbarren versteckt

  8. #28
    Registriert seit
    03.11.2006
    Ort
    Niedersachsen
    Beiträge
    1.126
    Danke
    170
    Erhielt 303 Danke für 259 Beiträge

    Standard

    Zitat Zitat von OKL Beitrag anzeigen
    Ja, es sind Öffner, das heißt NC - Tür zu, Kontakt geschlossen - sonst könnte ja auch jemand das Kabel durchscheiden und es würde kein Alarmgetöse mehr geben. (Ist sowieso nur "Spielerei", habe hier keine Goldbarren versteckt
    dann musst du das noch ändern
    Code:
    //Tür auf
          U     #Tuerschalter; 
          FN    #Flankenmerker_auf; 
          S     #door_auf; 
    
    
    
    // Tür zu
          U     #Tuerschalter; 
          FP    #Flankenmerker_zu; 
          R     #door_auf;
    Gruß
    crash

    Ich bin nicht bekloppt,
    ich bin verhaltensoriginell!

  9. #29
    Registriert seit
    15.10.2007
    Ort
    St.Pölten
    Beiträge
    875
    Danke
    98
    Erhielt 200 Danke für 188 Beiträge

    Standard

    ist absolut nicht notwendig den EN zu belegen, wenn der baustein nicht nur nach einer bestimmten aktion bearbeitet werden soll.
    lg
    Beginne jeden Tag mit einem lächeln,es kann dir nämlich während des Tages sehr schnell vergehen.

  10. #30
    OKL ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    10.04.2010
    Beiträge
    132
    Danke
    15
    Erhielt 3 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo liebe geduldige Experten.

    Ich habe mich mit Sicherheit nicht so gut ausgedrückt. Versuche es aber mal so:

    Bisher habe ich ein lauffähgiges System. Verschiedene Alarm-Modus (verzögert, Alle Außentüren, Alle Türen) und ist der Alarm aktiviert - eine Tür (je nach Modus) öffnet sich, dann löst das aktustische Signal aus. Das ist alles schon ganz gut.

    Derzeit habe ich mehrere Netzwerke, in denen je Türöffnung eine positive und eine negative Flanke gebildet wird. Jeweils wird der FC1 aufgerufen (schon existent), der dann mit BlockMove die übergebenen Einträge in einen DB packt. Alles super. Also bei positiver Flanke wird derzeit der besagte FC aufgerufen - Inparameter Byte Türnummer, Inparameter Byte AufZu. In diesem Fall wird 0 gesetzt, weil ja die Tür aufging und daher 0. Weiterhin addiere ich derzeit im selben Netzwerk bei besagter positiver Flanke eine Zahl auf, ein anderer DB (zählt die Öffnungen, daher bei pos. Flanke) Es geht eine Verzweigung zur negativen Flanke, die nicht aufsummiert, aber wieder den FC1 aufruft, mit Paramter Türnummer und diesmal mit 1 bei Aufzu. Das realisiere ich mit jeder Tür - und ist mir zu fett. Daher dachte ich an den FC1 mit noch mehr Parameter. Da ein FC sich nichts merken kann, muss ich die Flanken mit übergeben. Sonst könnte ich einfach auf einen In-Parameter bei Öffnung das Signal draufgeben - werte die positive Flanke aus - und beim Schließen die negative Flanke auswerten. Aber in einem FC muss ich vorher nicht mit P und N, sondern mit der aufwändigeren Funktion realisieren. Wieder hätte ich für eine einzige Tür in einem Netzwerk so viele Elemente.

    Kann ich das nicht einfacher realisieren? Wie gesagt, das ist alles losgelöst von der eigentlichen Überprüfung auf Alarmierung. Tür geht auf - Eintrag in DB, Zählung DB, Tür geht zu - Eintrag in DB (soll alles der FC1 realisieren)




    Dankeschön für Ideen.
    Geändert von OKL (11.04.2010 um 21:17 Uhr)

Ähnliche Themen

  1. 2 – 10V Parametrieren
    Von David AU im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 16.04.2010, 11:17
  2. PID Parametrieren
    Von s.leuschke im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 09.09.2008, 10:21
  3. CP 544 neu parametrieren
    Von William700 im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 05.05.2008, 12:10
  4. AD 22100 an S5 parametrieren
    Von Emmpunkt im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 19.02.2005, 15:34
  5. FC1 und FC2 parametrieren
    Von Kojote im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 12.10.2004, 15:12

Lesezeichen

Berechtigungen

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