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

Ergebnis 1 bis 4 von 4

Thema: Motorbaustein

  1. #1
    Registriert seit
    17.06.2010
    Beiträge
    10
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Idee


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Welche Anforderungen sollte ein Motorbaustein grundsätzlich haben? Sollte man diesen in einem FC oder FB schreiben?

    Die Anforderung an dem Motor ist eine Paletten Rollenbahn mit Riemenantrieb, diese Fördert nur in eine Richtung. Hat aber teilweise Pneumatisch angesteuerte Stops, wo die Paletten aufgehalten werden. und dann wenn die nächste Sektion frei ist weiter gefördert werden.

    Für den Stop möchte ich einen separaten Baustein erstellen.
    Ach ja diesen Baustein möchte ich später dazu nutzen um ihn im Programm später mehrmals aufzurufen.
    Zitieren Zitieren Motorbaustein  

  2. #2
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  3. #3
    Registriert seit
    16.05.2007
    Ort
    im Stahlwerk...
    Beiträge
    1.178
    Danke
    120
    Erhielt 429 Danke für 236 Beiträge

    Standard

    Hallo. Trotz der etwas dürftig ausgeführten Information zur Aufgabenstellung sollte ein Motorbaustein meiner Meinung nach folgende Funktionen (mindestens) erfüllen:
    • Umschaltung Ein/Zweirichtungsantrieb
    • Lokal, fern Hand(HMI) und Automatikbetrieb
    • Einschaltveriegelung(en)
    • Störquittierung am Baustein
    • Laufzeitüberwachung (über Schützrückmeldung ect.)
    • evtl. Meldefähig durch Integration von Alarm8
    • Software-Notaus
    Ausführungsart würde ich immer ein FB nehmen, da bausteinintern meist Flanken, u. Speicherfunktionen benutzt werden müssen. Den FB dann in einem übergeordneten FB als Multiinstanz aufrufen - und Zack!- fertig...

    Gruß Approx
    Nihil est in cpu, quod non fuerit in intellectu" - Nichts ist in der CPU, was nicht (zuvor) im Verstand war.

  4. #4
    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


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Code:
    *
    FUNCTION_BLOCK "M_1DRCT"
    TITLE =1 DIRECTION DRIVE
    //this simple function_block realize the control of a one direction drive.
    //all functions of the drive are monitored and avaible at wRetVal.
    //an error also will switch off the EN0 of the function_block.
    //
    //wRetVal - status
    //----------------
    //0000 - enable and ready to go
    //0001 - start drive
    //0003 - start drive and contactor on
    //0007 - drive run and all functions ok
    //
    //wRetVal - error
    //---------------
    //8000 - no extern enable
    //8001 - protectswitch off
    //8002 - repairswitch off
    //8003 - protectswitch and repairswitch off
    //8004 - contactor had not switched in time or is gone
    //8005 - motioncontrol had not switched in time or is gone
    //
    //DATE:     05.08.2008
    //AUTHOR:   4lagig
    //VERSION:  V0.1 BasicVer
    AUTHOR : '4lagig'
    VERSION : 0.1
    
    
    VAR_INPUT
      xPlcPulse : BOOL ;	//plug the Mx.0 with 10Hz here
      xEnable : BOOL ;	//extern enable input (1=ON)
      xProtectSwitch : BOOL ;	//(1=OK)
      xRepairSwitch : BOOL ;	//(1=OK)
      xContactor : BOOL ;	//(1=ON)
      xMotionControl : BOOL ;	//(1=OK)
      xStart : BOOL ;	//(1=START)
      iContactorTime : INT ;	//normally a small number, maybe 10 (mean 1s)
      iMotionControlTime : INT ;	//a little more than the time the drive needs to run fullspeed
    END_VAR
    VAR_OUTPUT
      xContactorOut : BOOL ;	//the output for the drive
      wRetVal : WORD ;	//status/error information
    END_VAR
    VAR
      xHelpFlagEnable : BOOL ;	
      xHelpFlagPlcPulse : BOOL ;	
      xTimeEnable : BOOL ;	
      xAllFine : BOOL ;	
      iTimer : INT ;	
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
         
    // 
    //enable and init the function_block
    // 
    
          UN    #xEnable; //if enable false then
          R     #xAllFine; //reset intern start enable
          R     #xContactorOut; //make sure contactor is off
          SPBN  nore; 
          L     W#16#8000; 
          T     #wRetVal; //write status information
          SPA   end; //and leave the function
    
    nore: UN    #xStart; //if start not and
          SPBN  ston; 
          R     #xTimeEnable; 
          L     W#16#0; //only enable and all switches on
          T     #wRetVal; //wRetVal = 0000
    NETWORK
    TITLE =
    
    //
    //init and take ready for trigger
    //
    
    ston: U     #xEnable; //enable true
          U     #xStart; //and start
          FP    #xHelpFlagEnable; //new
          SPBN  nonw; 
          L     W#16#1; //then
          T     #wRetVal; //write status information
          L     0; //initialize
          T     #iTimer; //timer with zero
          S     #xTimeEnable; //and make enable
          S     #xAllFine; //set the intern enable
    NETWORK
    TITLE =
    
    // 
    //check the function
    // 
    
    nonw: UN    #xProtectSwitch; 
          SPBN  pok; 
          L     W#16#8001; //if protectswitch off
          UN    #xRepairSwitch; 
          SPBN  ron; 
          L     W#16#8003; //if protectswitch and repairswitch off
    ron:  T     #wRetVal; //write error information
          R     #xAllFine; 
          R     #xContactorOut; //make sure contactor is off
          SPA   err; //and leave the function
    
    pok:  UN    #xRepairSwitch; 
          SPBN  rok; 
          L     W#16#8002; //if repairswitch off
          T     #wRetVal; //write error information
          R     #xAllFine; 
          R     #xContactorOut; //make sure contactor is off
          SPA   err; //and leave the function
    NETWORK
    TITLE =
    
    // 
    //trigger the drive
    // 
    
    rok:  U     #xStart; //if start on
          U     #xAllFine; //and intern enable also
          =     #xContactorOut; //do the drive
    NETWORK
    TITLE =
    
    // 
    //start the timer for drive connections
    // 
    
          U     #xTimeEnable; 
          U     #xAllFine; //the intern enable
          U     #xPlcPulse; //do with the PlcPulse
          FP    #xHelpFlagPlcPulse; 
          SPBN  equ; 
          L     #iTimer; //a timer
          +     1; 
          T     #iTimer; 
    NETWORK
    TITLE =
    //
    //stop if neccessary - contactor
    //
    equ:  U(    ; 
          L     #iTimer; //if the time
          L     #iContactorTime; //bigger than the settime
          >=I   ; //for the contactor
          )     ; 
          UN    #xContactor; //and the contactor off
          SPBN  cook; 
          L     W#16#8004; //write wRetVal
          T     #wRetVal; 
          R     #xAllFine; //and reset the intern enable
          SPA   err; 
    NETWORK
    TITLE =
    //
    //write status, if contactor OK
    //
    cook: U     #xContactor; 
          U     #xStart; 
          SPBN  noco; //contactor on
          L     W#16#3; //means 3
          T     #wRetVal; 
    NETWORK
    TITLE =
    //
    //stop if neccessary - motion control
    //      
    noco: U(    ; 
          L     #iTimer; //if the time
          L     #iMotionControlTime; //bigger than the settime
          >=I   ; //for the motion control
          )     ; 
          UN    #xMotionControl; //and the motion control
          SPBN  mook; 
          L     W#16#8005; //write wRetVal
          T     #wRetVal; 
          R     #xAllFine; //and reset the intern enable
          SPA   err; 
    NETWORK
    TITLE =
    //
    //write status if motion control OK
    //
    mook: U     #xMotionControl; 
          U     #xStart; 
          SPBN  tim; //motion control on
          L     W#16#7; //means 7
          T     #wRetVal; 
    NETWORK
    TITLE =
    //
    //stop the timer
    //
    tim:  L     #iMotionControlTime; //the big time
          L     100; //+100
          +I    ; 
          L     #iTimer; 
          <=I   ; 
          SPBN  end; 
          SET   ; 
          R     #xTimeEnable; //switch off the timer
    NETWORK
    TITLE =
    // 
    //EN0-handling
    // 
    
    end:  L     #wRetVal; //if the wRetVal
          L     W#16#8000; //bigger than 8000
          >D    ; //then is an error
          SPB   err; //and the EN0 are false
          SET   ; //else the EN0 are true
          SAVE  ; 
    err:  NOP   0; 
    END_FUNCTION_BLOCK
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

Ähnliche Themen

  1. motorbaustein s7
    Von William700 im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 28.03.2008, 09:16

Lesezeichen

Berechtigungen

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