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

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

Thema: Referenz von NC Achse killen Beckhoff

  1. #1
    Registriert seit
    20.05.2007
    Beiträge
    301
    Danke
    38
    Erhielt 6 Danke für 6 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo. Benutze folgenden Baustein.
    Wie kann ich die Referenz zurücksetzen/killen?
    So das ich isRef = False bekomme.

    Code:
    FUNCTION_BLOCK McAxisKernel
    (*
    Servo Achse
    
    Der Funktionsbaustein erlaubt die Ansteuerung einer NC-Achse als
    - Einzelachse
    *)
    
    VAR_INPUT
        startMode    :E_STARTMODE;    (*Beschreibung: Siehe 'Datentypen'*)
                                    (*Refer to: 'Data types'*)
        zero            :BOOL;        (*Vor dem nächsten Positionierstart die relative Istposition = 0 setzen*)
        refCam            :BOOL;        (*Referenznocke*)
        start            :BOOL;        (*Start Positionierung / Abbruch wenn Signal zurückgesetzt wird
                                    Fahrprofil mit Geschwindigkeit, Beschleunigung und Ruck*)
        stop            :BOOL;        (*Unterbrechung / Fortsetzung Positionierung*)
        jogPos            :BOOL;        (*Tippen endlos plus mit Tippgeschwindigkeit*)
        jogNeg            :BOOL;        (*Tippen endlos minus mit Tippgeschwindigkeit*)
        jogPosInc        :BOOL;        (*Tippen inkrementell plus mit Tippgeschwindigkeit*)
        jogNegInc        :BOOL;        (*Tippen inkrementell minus mit Tippgeschwindigkeit*)
        couple            :BOOL;        (*Kopplung ein / aus*)
        extSetpoint        :BOOL;        (*Externe Sollwertvorgabe ein / aus*)
        initPos            :BOOL;        (*Istposition setzen, Referenznocke*)
        setTarg            :BOOL;        (*Neue Zielposition während der Bewegung vorgeben*)
        fastStop        :BOOL;        (*Stop einer Bewegung mit max. Rampe (Achs-Parameter)*)
        reset            :BOOL;        (*Fehler quittieren*)
        parInit            :BOOL;        (*Achs-Parameter auslesen*)
    
    (*Vorbedingungen zum Verfahren der Achse*)
        enAxis             :BOOL;        (*Achse Freigabe*)
        enPlus            :BOOL;        (*Achse Fahrfreigabe plus Richtung*)
        enMinus            :BOOL;        (*Achse Fahrfreigabe minus Richtung*)
    
    (*Fahrdaten der Achse*)
        targPos            :LREAL;        (*Achse Zielposition [EINH]*)
        velo            :REAL;        (*Achse Geschwindigkeit [EINH/s]*)
        acc                :REAL;        (*Achse Beschleunigungsrampe [EINH/s²] / Default (-1)*)
        dec                :REAL;        (*Achse Bremsrampe [EINH/s²] / Default (-1)*)
        jerk            :REAL;        (*Achse Ruckbegrenzung [EINH/s³] / Default (-1)*)
        jogIncTargPos    :LREAL;        (*Tippen inkrementell Schrittweite [EINH]*)
        jogVelo            :REAL;        (*Tippen Geschwindigkeit [EINH/s]*)
        over            :REAL:=100;    (*Achse Geschwindigkeitsoverride [%]*)
        ratioNum        :INT:=1;    (*Achse Getriebekopplung Faktor Zähler*)
        ratioDenum        :INT:=1;    (*Achse Getriebekopplung Faktor Nenner*)
    END_VAR
    
    VAR_IN_OUT
        axisRefIn        :NCTOPLC_AXLESTRUCT;    (*Achse NC->PLC zyklische Kopplung*)
        axisRefOut        :PLCTONC_AXLESTRUCT;    (*Achse PLC->NC zyklische Kopplung*)
        masterAxisRefIn    :NCTOPLC_AXLESTRUCT;    (*Leitachse NC->PLC zyklische Kopplung*)
    END_VAR
    
    VAR_OUTPUT
        stopped        :BOOL;        (*Achse Stillstand*)
        isZero        :BOOL;        (*Achse in Nullposiiton (= ZeroPos)*)
        isRef        :BOOL;        (*Achse ist referenziert*)
        isCoupled    :BOOL;        (*Achse ist gekoppelt*)
        isSync        :BOOL;        (*Achse ist tabellengekoppelt*)
        isExtSetpoint    :BOOL;    (*Externe Sollwertvorgabe aktiv*)
        ncEnabled    :BOOL;        (*Achse betriebsbereit und freigegeben*)
        relPos        :LREAL;        (*Istposition relativ [EINH]*)
        actPos        :LREAL;        (*Istposition absolut [EINH]*)
        busy        :BOOL;        (*Achsbaustein aktiv*)
        done        :BOOL;        (*Im Ziel, Bewegung beendet, rechnerisch*)
        inPos        :BOOL;        (*Im Zielfenster, physikalisch*)
        constVelo    :BOOL;        (*Fahren mit konstanter Geschwindigkeit*)
        movePos        :BOOL;        (*Fahren in Richtung plus*)
        moveNeg        :BOOL;        (*Fahren in Richtung minus*)
        ncError        :BOOL;        (*Achse Fehler*)
        ncErrId        :UDINT;        (*Achse Fehler-Nummer: Die Beschreibung zur Fehlernummer
                                    kann dem TwinCat Information System entnommen werden.
                                    Suchen -> <errorId>*)
        parValid    :BOOL;        (*Achs-Parameter sind gültig ausgelesen*)
        maxNcVelo    :LREAL;        (*Parametrierte Maximalgeschwind. [EINH/s]*)
        maxNcAcc    :LREAL;        (*Parametrierte Beschleunigung [EINH/s²]*)
        maxNcDec    :LREAL;        (*Parametrierte Verzoegerung [EINH/s²]*)
        maxNcJerk    :LREAL;        (*Parametrierter Ruck [EINH/s³]*)
        limitNeg    :LREAL;        (*SW Limit negativ [EINH]*)
        limitPos    :LREAL;        (*SW Limit positiv [EINH]*)
    END_VAR
    
    VAR
        state            :STRUCT_MC_STATE;            (*Zustand: Achsbaustein*)
        logState        :ARRAY[-4..0] OF STRUCT_MC_STATE;            (*Zustand: Achsbaustein*)
        stateMotion        :INT;                        (*Zustand Motion*)
        stateMcFb        :INT;                        (*Zustand MC FB*)
        stateInitParams    :INT;                        (*Zustand: ActInitParams*)
        xReadParVelo    :MC_ReadParameter;            (*Achs-Parameter Geschwindigkeit lesen *)
        xReadParAcc        :MC_ReadParameter;            (*Achs-Parameter Beschleunigung lesen *)
        xReadParDec        :MC_ReadParameter;            (*Achs-Parameter Verzögerung lesen *)
        xReadParJerk    :MC_ReadParameter;            (*Achs-Parameter Ruck lesen *)
        xReadParLimPos    :MC_ReadParameter;            (*Achs-Parameter Limit positiv lesen *)
        xReadParLimNeg    :MC_ReadParameter;            (*Achs-Parameter Limit negativ lesen *)
        xPower            :MC_Power;                    (*MC Achse einschalten*)
        xReadStatus        :MC_ReadStatus;                (*MC Bewegungszustand lesen*)
        xReset            :MC_Reset;                    (*MC Achse Reset*)
        xReadAxisError    :MC_ReadAxisError;            (*MC Achsfehler lesen*)
        xReadActualPosition    :MC_ReadActualPosition;    (*MC Istposition lesen*)
        xMoveAbsolute    :MC_MoveAbsolute;            (*MC Positionieren absolut*)
        xMoveAbsoluteOrRestart    :MC_MoveAbsoluteOrRestart;    (*Positionieren absolut mit neuer Zielposition*)
        xMoveRelative    :MC_MoveRelative;            (*MC Positionieren relativ*)
        xMoveVelocity    :MC_MoveVelocity;            (*MC Fahren mit konstanter Geschwindigkeit*)
        xNewPosAndVelo    :MC_NewPosAndVelo;            (*MC Geschwindigkeit und Position bei Dauerlauf ändern*)
        xHome            :MC_Home;                    (*MC Referenzfahrt*)
        xSetActualPosition    :MC_SetActualPosition;    (*MC Isposition setzen*)
        xChangeDynParam    :MC_ChangeDynParam;            (*MC Beschleunigungsparameter ändern*)
        xStop            :MC_Stop;                    (*MC Stop*)
        xGearIn            :MC_GearIn;                    (*MC Getriebekopplung statisch einschalten*)
    (*    xGearInPos        :MC_GearInPos;        *)        (*MC Getriebekopplung dynamisch einschalten*)
    (*    xGearOut        :MC_GearOut;*)                (*MC Getriebekopplung ausschalten*)
        xGearOutExt        :MC_GearOutExt;                (*MC Getriebekopplung ausschalten, neue Zielgeschwindigkeit*)
    (*    xCamIn            :MC_CamIn;            *)        (*MC Tabellenkopplung einschalten*)
    (*    xCamOut            :MC_CamOut;            *)        (*MC Tabellenkopplung ausschalten*)
        xExtSetPointGenEnable    :MC_ExtSetPointGenEnable;    (*MC Externe Sollwertvorgabe einschalten*)
        xExtSetPointGenDisable    :MC_ExtSetPointGenDisable;    (*MC Externe Sollwertvorgabe ausschalten*)
        startPos        :LREAL;                        (*Absolutposition gespeichert beim Start [EINH]*)
        parInitTrig        :R_TRIG;                    (*Impuls Parameter initialisieren*)
        veloAtStart        :REAL;                        (*Geschwindigkeit bei Bewegungsstart [EINH/s]*)
        accAtStart        :REAL;                        (*Beschleunigung bei Bewegungsstart [EINH]/s*)
        decAtStart        :REAL;                        (*Verzoegerung bei Bewegungsstart [EINH/s²]*)
        jerkAtStart        :REAL;                        (*Ruckwert bei Bewegungsstart [EINH/s³]*)
        tNcEnableOn        :TP;                        (*Achse zuschalten Togglesignal ON*)
        tNcEnableOff    :TP;                        (*Achse zuschalten Togglesignal OFF*)
        tNcEnableOnTime    :TIME := T#2s;                (*Zeit Achse zuschalten ON*)
        tNcEnableOffTime:TIME := T#1s;                (*Zeit Achse zuschalten OFF*)
        veloChange        :BOOL;                        (*Fahrgeschwindigkeit wurde geändert*)
        dynamicChange    :BOOL;                        (*Dynamik (acc,dec,jerk) wurde geändert*)
    END_VAR
    
    VAR CONSTANT
        ZERO_POS        :LREAL:=0;                    (*Achse Nullposition [EINH]*)
        MODULO_RANGE    :LREAL:=360;                (*Modulobereich [EINH]*)
    END_VAR
    (*
    Die Achskommandos sind als Zustandsautomat der Motion Control Bausteine programmiert.
    
    Bibliotheken:    
    TwinCat        TcMc.lib
                TcMath.lib
    
    Bausteine:
                AxisModuloTargPos
    
    
    Achsparameter, die beim Start der Steuerung ausgelesen werden
    
    maxNcVelo        Einlesen beim ersten Aufruf: Parametrierte Maximalgeschwind. [EINH/s]
    maxNcAcc        Einlesen beim ersten Aufruf: Parametrierte Beschleunigung [EINH/S²]
    maxNcDec        Einlesen beim ersten Aufruf: Parametrierte Verzoegerung [EINH/S²]
    maxNcJerk        Einlesen beim ersten Aufruf: Parametrierter Ruck [EINH/S³]
    limitNeg        SW Limit negativ [EINH]
    limitPos        SW LIMIT positiv [EINH]
    Zitieren Zitieren Referenz von NC Achse killen Beckhoff  

  2. #2
    Registriert seit
    06.06.2008
    Beiträge
    13
    Danke
    3
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo

    die Referenz von Achsen lässt sich über ADS Befehle löschen.
    Angehängte Grafiken Angehängte Grafiken

  3. #3
    Avatar von Anaconda55
    Anaconda55 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    20.05.2007
    Beiträge
    301
    Danke
    38
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Was wird denn bei Sizeof und ADR angegeben?

  4. #4
    Registriert seit
    06.07.2007
    Beiträge
    2.811
    Danke
    174
    Erhielt 274 Danke für 253 Beiträge

    Standard

    So wie es aussieht den Wert den du schreiben möchtest. Wenns um einen Reset geht, dann würde ich mal behaupten, dass es funktioniert, wenn du eine Variable "Wert" anlegst und diese mit "0" initialisierst. Diese Variable würde ich dann wie im Bild oben verwenden.
    A programmer is just a tool which converts caffeine into code.

  5. #5
    Registriert seit
    06.06.2008
    Beiträge
    13
    Danke
    3
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo

    war nicht schnell genung aber der Kolllege Cerberus hat damit vollkommen Recht.

  6. #6
    Registriert seit
    06.07.2007
    Beiträge
    2.811
    Danke
    174
    Erhielt 274 Danke für 253 Beiträge

    Standard

    Freut mich, dass ich trotz keiner Ahnung von NC-Achsen weiterhelfen konnte!
    A programmer is just a tool which converts caffeine into code.

  7. #7
    Avatar von Anaconda55
    Anaconda55 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    20.05.2007
    Beiträge
    301
    Danke
    38
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Könnt ihr mir hierzu mal bitte ein Beispiel in ST geben?

  8. #8
    Registriert seit
    06.07.2007
    Beiträge
    2.811
    Danke
    174
    Erhielt 274 Danke für 253 Beiträge

    Standard

    Als erstes bindest du die Lib "TcBase.lib" ein. Dann kannst du folgenden Code verwenden:
    Code:
    VAR
       FB_ADSWrite: FW_ADSWRITE;
       AchseID: UDINT;
       Wert: INT := 0;
    END_VAR
     
     
    FB_ADSWrite(sNetId:= '',
                nPort:= 500,
                nIdxGrp:= AchseID + 16#4200,
                nIdxOffs:= 16#1B,
                cbWriteLen:= SIZEOF(Wert),
                pWriteBuff:= ADR(Wert),
                bExecute:= TRUE,
                tTimeout:= t#2s,
                bBusy=> ,
                bError=> ,
                nErrId=> );
     
    IF NOT FB_ADSWrite.bBusy THEN
         FB_ADSWrite(bExecute:= FALSE);
    END_IF
    PS:
    Ich habe einfach das Bitmap von Zickenbändiger in ST umgesetzt.
    A programmer is just a tool which converts caffeine into code.

  9. #9
    Avatar von Anaconda55
    Anaconda55 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    20.05.2007
    Beiträge
    301
    Danke
    38
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Okay. Hab ich auch so umgesetzt.

    Aber es funktioniert nicht. Erhalte den Fehlerint 6
    Muss eine sNetId vergeben werden?

  10. #10
    Registriert seit
    06.07.2007
    Beiträge
    2.811
    Danke
    174
    Erhielt 274 Danke für 253 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Könnte auch am Port liegen.
    Mal ne Frage: Hast du unter deinen E/A-Geräten irgendwo ein Reiter "ADS" und wenn ja, was steht da für ein Port und eine NetId drin? Mit denen würde ich es jetzt so aus dem Stehgreif auch mal probieren.
    A programmer is just a tool which converts caffeine into code.

Ähnliche Themen

  1. Strukturierter Text Referenz und Funktionen
    Von Netwalker im Forum CODESYS und IEC61131
    Antworten: 10
    Letzter Beitrag: 13.04.2010, 17:45
  2. BoschRexroth Regler als SPS-Achse fahren, nicht als NC-Achse.
    Von Tuxi im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 23.10.2009, 14:13
  3. Problem mit Beckhoff Achse AX5203
    Von Anaconda55 im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 02.02.2009, 14:12
  4. Linearachse, Geber und Referenz
    Von Drain im Forum Antriebstechnik
    Antworten: 12
    Letzter Beitrag: 27.10.2008, 13:06
  5. Referenz für verwendete UDT anzeigen ?
    Von Unregistrierter gast im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 29.08.2006, 09:37

Lesezeichen

Berechtigungen

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