国产尺码和欧洲尺码表CCTV,特别黄的视频免费播放,成人午夜精品无码区久久,SM高潮失禁调教强制抬腿器,国产精产国品一二三产区区别

您好,歡迎訪問泰安宏盛自動化科技有限公司!
20年專注工控自動化研發(fā)制造 系統(tǒng)設計\制作\安裝一條龍服務
全國咨詢熱線:18605386049
當前位置: 首頁 > 技術資料 > 程序案例

V90通過工藝對象在1200上的使用 _

作者:小編 時間:2025-07-17 11:50:02 點擊:次

配置CU參數

  • 打開V-Assistant,新建工程
  • 選擇驅動
  • 選擇電機型號
  • 選擇控制模式

V90伺服定位控制方式分為兩種,一種是通過工藝對象,另外一種是通過EPOS標準塊:
a.如果選用工藝對象控制伺服電機,控制模式選用速度控制。報文選用標準報文3.
b.如果選用EPOS標準塊控制伺服電機,控制模式選用基本定位器控制(EPOS)。報文選用報文111.

  • 設置PROFINET

注意:PN站名和IP地址要和博圖組態(tài)一致。在配置完設備名稱以及 IP 地址之后,必須保存參數并重啟驅動來激活配置。

  • 設置參數

由于 S7-1200 軸工藝對象中已經組態(tài)了軸運行的加減速時間,所以在SINAMICS V-ASSISTANT 側激活斜坡功能模塊并將斜坡上升時間和斜坡下降時間設置為 0.0000 S

  • 設置限值:扭矩和速度參數查閱電機銘牌或手冊填寫。
  • 優(yōu)化電機(動態(tài)調式):

動態(tài)剛度等級:這是優(yōu)化V90伺服電機的動態(tài)性能參數,數值越高,電機的動態(tài)相應特性越好。但是,過高的動態(tài)響應特性會引起電機的諧振,導致整個控制系統(tǒng)不穩(wěn)定,根據擺動的需求選擇合適的范圍。
電機優(yōu)化的旋轉角度:絕對值型編碼器建議為180°,增量型編碼器建議為720°
電機優(yōu)化時正反轉運行的最長時間:通常按照默認的2000毫秒填寫即可。

配置工藝對象

  • 添加工藝對象,選擇TO_PosotioningAxis
  • 常規(guī)設置,選擇PROFIDrive
  • 驅動器設置,選擇標準報文3

  • 設置編碼器,選擇PROFINET上的裝置
  • 編碼器選擇”的步驟和驅動器設置步驟一樣。
  • 填寫拓展參數,絲杠一轉的位移
  • 位置限制設置

如果系統(tǒng)有限位開關要勾選“啟用硬限位開關”并且填入開關的符號地址。當限位開關感應到后,伺服電機立即停止。此時伺服讀取的當前位置會發(fā)生變化,和實際數值不符,需要讓電機反方向運轉,離開限位開關,并斷電重啟。

  • 動態(tài)常規(guī)設置

加減速度的斜坡時間設置為0.1,可以時伺服電機快速啟動和停止。此處是設置伺服電機的啟動和停止時間。

  • 主動回原點設置

系統(tǒng)如果有原點開關,需要勾選“通過數字量輸入使用原點開關”,并輸入開關地址。
只對主動回原點參數進行設置,被動回原點采用默認。

  • 隨動誤差設置

當運行伺服電機提示超出范圍錯誤時,可以通過修改“最大隨動誤差”和“隨動誤差”參數來解決錯誤。

  • 電機抱閘功能:
    • 對于 400 V 系列伺服驅動,電機抱閘接口(X7)集成在前面板。將其與帶抱閘的伺服電機連接即可使用電機抱閘功能。
    • 對于 200 V 系列伺服驅動,沒有集成單獨的抱閘接口。為使用抱閘功能,需要通過控制狀態(tài)接口(X8)將驅動連接至第三方設備。
    • 電機抱閘用于在伺服系統(tǒng)未激活(如,伺服系統(tǒng)斷電)時,停止運動負載的非預期運動(如,在重力作用下的掉落)。伺服電機在斷電后可能因為其自身重量或者受到外力而發(fā)生意外移動。
    • 帶抱閘版本的伺服電機中內置了抱閘:

    以上是伺服控制器X8接口
    抱閘僅用實現(xiàn)于“保持”功能,即僅用于保持負載的靜止狀態(tài)。不得用于對運動中的負載進行制動。只能對已停止的電機使用抱閘。
    抱閘在電機斷電的同時即激活。

    控制程序

    REGION 動作路徑長度,最大設置不能超過18
        IF #H_Collection.ButtonAndStatus.In_MoveNumber_Mannual > 18 THEN
            #H_Collection.ButtonAndStatus.In_MoveNumber_Mannual := 18;    END_IF;    
    END_REGIONREGION 邏輯處理
        // 手動    #MannualStart := #In_Mode.ManualMode AND #In_MoveCondition AND #H_Collection.ButtonAndStatus.Button_Mannual;
        
        //自動    #AutoStart := #In_Mode.AutoMode AND #In_MoveCondition AND #In_MoveAutoCondition AND #InOut_MoveAuto;
        
        //Home
        #JogHome := #In_Mode.ManualMode AND #In_HomeCondition AND (#H_Collection.ButtonAndStatus.Button_Home OR #In_Mode.HomeMode);END_REGIONREGION JOG點動
        
        //硬限位激活    IF #In_HwLimitActive THEN
            //上限        IF #H_Collection.ButtonAndStatus."Button_JOG+" AND #In_Mode.ManualMode THEN
                #Velocity := #H_Collection.ButtonAndStatus.In_Value_JogVel;            IF #In_Axis.PositionLimits_HW.MaxSwitchLevel THEN
                    #"JOG+" := #H_Collection.ButtonAndStatus."Button_JOG+";            ELSE
                    #"JOG+" := FALSE;            END_IF;        ELSE
                #"JOG+" := FALSE;        END_IF;
            //下限        IF #H_Collection.ButtonAndStatus."Button_JOG-" AND #In_Mode.ManualMode THEN
                #Velocity := #H_Collection.ButtonAndStatus.In_Value_JogVel;            IF #In_Axis.PositionLimits_HW.MinSwitchLevel THEN
                    #"JOG-" := #H_Collection.ButtonAndStatus."Button_JOG-";            ELSE
                    #"JOG-" := FALSE;            END_IF;        ELSE
                #"JOG-" := FALSE;        END_IF;
            
        //軟限位激活    ELSE
            //上限        IF #H_Collection.ButtonAndStatus."Button_JOG+" AND #In_Mode.ManualMode THEN
                #Velocity := #H_Collection.ButtonAndStatus.In_Value_JogVel;            IF #In_Axis.ActualPosition < #In_Axis.PositionLimits_SW.MaxPosition THEN
                    #"JOG+" := #H_Collection.ButtonAndStatus."Button_JOG+";            ELSE
                    #"JOG+" := FALSE;            END_IF;        ELSE
                #"JOG+" := FALSE;        END_IF;
            //下限        IF #H_Collection.ButtonAndStatus."Button_JOG-" AND #In_Mode.ManualMode THEN
                #Velocity := #H_Collection.ButtonAndStatus.In_Value_JogVel;            IF #In_Axis.ActualPosition > #In_Axis.PositionLimits_SW.MinPosition THEN
                    #"JOG-" := #H_Collection.ButtonAndStatus."Button_JOG-";            ELSE
                    #"JOG-" := FALSE;            END_IF;        ELSE
                #"JOG-" := FALSE;        END_IF;    END_IF;
        
        //按鈕防錯    IF #H_Collection.ButtonAndStatus."Button_JOG+" AND #H_Collection.ButtonAndStatus."Button_JOG-" THEN
            #H_Collection.ButtonAndStatus."Button_JOG+" := FALSE;        #H_Collection.ButtonAndStatus."Button_JOG-" := FALSE;    END_IF;END_REGIONREGION 回原點
        //1.模式0:絕對式直接回零,把當前位置直接設置為0.0,重啟后恢復當前位置值
        //2.模式1:相對式直接回零:把當前位置值+Position值作為原點
        //3.模式2:被動回原點:按照工藝組態(tài)回原點,回原點后把當前位置設置為Position值
        //4.模式3:主動回原點:按照工藝組態(tài)回原點,回原點后把當前位置設置為Position值
        //5.模式7:絕對編碼器值回原點:將當前位置設置為Position值,計算出絕對偏移值并保存:例:當伺服處于機械零點時,此時歸位,伺服會把當前值設置為Position值(校零)
        //6.選擇絕對值式伺服電機無原點開關時,回原點模式選擇7。
        //7.選擇增量式伺服電機有原點開關時,回原點模式選擇3。END_REGIONREGION 手動移動到位    IF #MannualStart AND #Enable.Status AND NOT #Pluse[0] THEN
            IF #H_Collection.ButtonAndStatus.In_MoveNumber_Mannual < 0 THEN
                #H_Collection.ButtonAndStatus.In_MoveNumber_Mannual := 0;        END_IF;        
            IF #H_Collection.ButtonAndStatus.In_MoveNumber_Mannual > 18 THEN
                #H_Collection.ButtonAndStatus.In_MoveNumber_Mannual := 18;        END_IF;        #Absolute_Pos_OK := FALSE;        #Velocity := #H_Collection.ButtonAndStatus.In_Value_AbsVel;        #AbsPos := #H_Collection.ButtonAndStatus.In_Value_AbsPosition[#H_Collection.ButtonAndStatus.In_MoveNumber_Mannual];        #MC_MoveAbsolute_Excute := #MannualStart;    END_IF;    #Pluse[0] := #MannualStart;    
        IF NOT #MannualStart AND #Pluse[1] THEN
            #MC_MoveAbsolute_Excute := FALSE;    END_IF;    #Pluse[1] := #MannualStart;        
    END_REGIONREGION 自動移動到位    IF #AutoStart AND #Enable.Status AND NOT #Pluse[2] THEN
            IF #InOut_MoveNumber_Auto < 0 THEN
                #InOut_MoveNumber_Auto := 0;        END_IF;        
            IF #InOut_MoveNumber_Auto > 18 THEN
                #InOut_MoveNumber_Auto := 18;        END_IF;        #Absolute_Pos_OK := FALSE;        #Velocity := #H_Collection.ButtonAndStatus.In_Value_AbsVel;        #AbsPos := #H_Collection.ButtonAndStatus.In_Value_AbsPosition[#InOut_MoveNumber_Auto];        #MC_MoveAbsolute_Excute := #InOut_MoveAuto;    END_IF;    #Pluse[2] := #AutoStart;    
        IF NOT #AutoStart AND #Pluse[3] THEN
            #MC_MoveAbsolute_Excute := FALSE;    END_IF;    #Pluse[3] := #MannualStart;    
    END_REGIONREGION 運行中    
        #Running := #Absolute.Busy OR #Home.Busy OR #JOG.Busy;    
    END_REGIONREGION 絕對定位到位    #Timer1(IN:= ABS_REAL(#In_Axis.ActualPosition-#AbsPos)<10 AND (NOT #Absolute_Pos_OK) AND (NOT #Absolute.Busy),            PT:=T#500MS);    IF #Timer1.Q THEN
            #Absolute_Pos_OK := TRUE;    ELSIF #Running THEN
            #Absolute_Pos_OK := FALSE;    END_IF;    
    END_REGIONREGION 初始化
        //初始化    IF #In_Mode.ManualMode AND NOT #Pluse[4] THEN
            #InOut_MoveAuto := FALSE;        #Absolute_Pos_OK := FALSE;    END_IF;    #Pluse[4] := #In_Mode.ManualMode;END_REGIONREGION 示教模式
        
        //處理示教點信號    IF #H_Collection.ButtonAndStatus.In_TeachNumber < 0 THEN
            #H_Collection.ButtonAndStatus.In_TeachNumber := 0;    ELSIF
            #H_Collection.ButtonAndStatus.In_TeachNumber > 18 THEN
            #H_Collection.ButtonAndStatus.In_TeachNumber := 18;    END_IF;
        //開始示教    IF #In_Mode.ManualMode AND NOT #Running AND
            #Enable.Status AND #H_Collection.ButtonAndStatus.Button_Teach AND (NOT #Pluse[5])    THEN
            #H_Collection.ButtonAndStatus.In_Value_AbsPosition[#H_Collection.ButtonAndStatus.In_TeachNumber] := #In_Axis.ActualPosition;    END_IF;    #Pluse[5] := #H_Collection.ButtonAndStatus.Button_Teach;    
    END_REGIONREGION 軸控制
        // Statement section REGION
        //**************************軸使能****************************    #MC_Power_Instance(Axis := #In_Axis,                       Enable := #In_Enable,                       StartMode := #In_MC_Power_StartMode,                       StopMode := #In_MC_Power_StopMode,                       Status => #Enable.Status,                       Busy => #Enable.Busy,                       Error => #Enable.Error,                       ErrorID => #Enable.ErrorID,                       ErrorInfo => #Enable.ErrorInfo);
        
        //***************************軸復位****************************    #MC_Reset_Instance(Axis := #In_Axis,                       Execute := #In_Mode.Reset,                       Restart := #In_MC_Reset_Restart,                       Done => #Reset.Done,                       Busy => #Reset.Busy,                       Error => #Reset.Error,                       ErrorID => #Reset.ErrorID,                       ErrorInfo => #Reset.ErrorInfo);
        
        //*****************************軸原點**************************    #MC_Home_Instance(Axis := #In_Axis,                      Execute := #JogHome,                      Position := #In_MC_Home_Position,                      Mode := #In_MC_Home_Mode,                      Done => #Home.Done,                      Busy =>#Home.Busy,                      CommandAborted => #Home.CommandAborted,                      Error => #Home.Error,                      ErrorID => #Home.ErrorID,                      ErrorInfo => #Home.ErrorInfo,                      ReferenceMarkPosition => #Home.ReferenceMarkPosition);
        
    
        
        //*****************************軸JOG*******************************    #MC_MoveJog_Instance(Axis := #In_Axis,                         JogForward := #"JOG+",                         JogBackward := #"JOG-",                         Velocity := #Velocity,                         PositionControlled := #In_MC_MoveJog_PositionControlled,                         InVelocity => #JOG.inVelocity,                         Busy => #JOG.Busy,                         CommandAborted => #JOG.CommandAborted,                         Error => #JOG.Error,                         ErrorID => #JOG.ErrorID,                         ErrorInfo => #JOG.ErrorInfo);
        
        //***************************軸絕對定位***************************    #MC_MoveAbsolute_Instance(Axis := #In_Axis,                              Execute := #MC_MoveAbsolute_Excute,                              Position :=#AbsPos,                              Velocity := #Velocity,                              Direction := #In_MC_MoveAbsolute_Direction,                              Done => #Absolute.Done,                              Busy =>#Absolute.Busy,                              CommandAborted => #Absolute.CommandAborted,                              Error => #Absolute.Error,                              ErrorID => #Absolute.ErrorID,                              ErrorInfo => #Absolute.ErrorInfo);
        
        //***************************暫停軸***********************************    #Auto_TRIAG(CLK:=#In_Mode.AutoMode);    
        #Mannual_TRIG(CLK:=#In_Mode.ManualMode);    
        #MC_Halt_Instance(Axis := #In_Axis,                      Execute := (#In_Enable OR #Auto_TRIAG.Q OR #Mannual_TRIG.Q),                      Done => #Halt.Done,                      Busy => #Halt.Busy,                      CommandAborted => #Halt.CommandAborted,                      Error => #Halt.Error,                      ErrorID => #Halt.ErrorID,                      ErrorInfo => #Halt.ErrorInfo);    
    END_REGION//*****************************反饋輸出*******************************REGION 輸出    #Out_ActualVelocity := #In_Axis.ActualVelocity;    #Out_ActualPosition := #In_Axis.ActualPosition;    #Out_Running := #Running;    #Out_Abs_PosOK := #Absolute_Pos_OK;    #Out_Enabled := #Enable.Status;    #Out_Home := #Home.Done;END_REGION//**********************************報警**************************#Alarm := #In_Alarm OR #Enable.Error OR #Reset.Error OR #JOG.Error OR #Absolute.Error OR #Halt.Error;IF #Alarm THEN
        #Out_Alarm := TRUE;ELSIF NOT #Alarm AND #In_Mode.Reset THEN
        #Out_Alarm := FALSE;END_IF;
    
    //**********************************HMI Collection**************************
    //輸出#H_Collection.Enable := #Enable;#H_Collection.Reset := #Reset;#H_Collection.Home := #Home;#H_Collection.JOG := #JOG;#H_Collection.Absolute := #Absolute;#H_Collection.Halt := #Halt;#H_Collection.ButtonAndStatus.Out_ActualVelocity := #In_Axis.ActualVelocity;#H_Collection.ButtonAndStatus.Out_ActualPosition := #In_Axis.ActualPosition;
    • 對于MC_Home的Mode接口的解釋:
      • 0:絕對式直接歸位:新的軸位置為參數“Position”位置的值。例:假如當前位置為20.00,此時回原點把當前的位置設置成原點,位置為0.00。但是此時斷電在重啟,當前位置又恢復為20.00.
      • 1:相對式直接歸位:新的軸位置等于當前軸位置 + 參數“Position”位置的值。例:假如當前位置為20.00,此時回原點,為20.00+0.0(Position的參數)=20.00。
      • 2:被動回原點:將根據軸組態(tài)進行回原點?;卦c后,將新的軸位置設置為參數“Position”的值.
      • 3:主動回原點: 按照軸組態(tài)進行回原點操作。回原點后,將新的軸位置設置為參數“Position”的值。
      • 7: 絕對編碼器調節(jié)(絕對): 將當前的軸位置設置為參數“Position”的值。計算出的絕對值偏移值保持性地保存在 CPU 內。 (<軸名稱>.StatusSensor.AbsEncoderOffset)例:當伺服處在機械零點位置時,此時歸位,伺服會把當前位置設置為0(Position的參數)。
      • 注意:選擇絕對值式伺服電機無原點開關時,回原點模式選擇7;選擇增量式伺服電機有原點開關時,回原點模式選擇3。

    關于工藝對象(TO)

    • 當基本定位控制方案時由S7-1200/S7-1500 PLC通過PROFINET通信連接S120/V90 PN 驅動實現(xiàn)定位功能時,位置控制器可以在PLC中也可以在驅動器中,他們分別對應于PLC的工藝對象(TO)及驅動中的基本定位功能(EPOS)。
      • PLC的工藝對象(TO):此種定位控制時將位置閉環(huán)放在PLC中執(zhí)行,此種方式回占用PLC資源,因此根據型號不同,PLC最大帶軸數量也有很大差別。如下圖:。不過使用S7-1500/1500T PLC通過工藝對象(TO)方式控制V90的優(yōu)點是除了可以實現(xiàn)單軸基本定位功能外,還可以實現(xiàn)齒輪同步,凸輪同步等高級位置控制功能。注意:由于S7-1500及V90 PN支持PROFINET IRT通信,使用工藝對象(TO)的方式可以實現(xiàn)高動態(tài),高精度的位置控制。
      • 驅動中的基本定位功能(EPOS):V90 PN驅動器內部集成了基本定位控制器(EPOS),激活后可以通過EPOS功能是想單軸的點動、回零、程序步、相對定位及絕對定位等操作。此時,位置閉環(huán)由驅動器本身完成,PLC只需通過報文發(fā)送啟動命令、定位速度、目標位置等信息至驅動器即可。此種控制方式優(yōu)點在于,基本定位功能不會占用PLC資源,PLC控制的軸的最大數量主要受PLC本身所能連接的PROFINENT站點數量的限制,缺點在于只能實現(xiàn)單軸的定位。在博圖中推薦使用驅動庫中基于111報文的功能塊FB284控制V90 PN實現(xiàn)基本定位控制。

    關于絕對值編碼器的校準

    • 通過工藝對象的方式控制V90 PN,但是絕對值編碼器無法校準,V90 PN的ABS功能怎么找不到,還有調試軟件中的絕對值編碼器校準怎么也是灰的。這是因為通過工藝對象的方式所使用的V90控制模式是速度模式,是沒有激活位置控制器的,所以驅動端的絕對值編碼器校準是不起作用的。如果箱給絕對值編碼器進行校準,那么需要在PLC側去執(zhí)行,這里要用到的就是MC_HOME塊,在MODE管腳要選6或7(結合平時的項目調試,選7適用)。


    QQ在線咨詢
    聯(lián)系電話
    17658151177
    售后服務
    17658151177
    本站訪客:1172