17838383235
新闻中心
1FL6066-1AC61-2LH1现货西门子代理
发布时间:2024-05-20        浏览次数:8        返回列表

西门子V90伺服问题的解决:参考点不能断电保存和不能多次执行寻参指令的问题




"三阶段"工程师之路

1、基础阶段:博途PLC的系统化与专项学习。

2、中级阶段:博途实例与C#基础学习视频,完成OT与IT融合化学习。

3、阶段:博途的标准化编程方法学习。

标准化方法之路!

一、概述

       SINAMICS V90是西门子推出的一款小型、高效便捷的伺服系统。2016年7月底,推出了带PROFINET接口的V90驱动器,配合SIEMENS PLC, 能够组成一套完善的、经济的、可靠的运动控制解决方案, 轻松实现位置控制,速度控制,扭矩控制等多种控制方式。

PN控制V90伺服,可设置报文111,PZD12/12,通过官方提供的FB284功能块进行控制。

图片

在使用定位模式EPOS控制时,需要先进行回参考点操作。如伺服驱动带增量式编码器,共计三种回参考点模式可用:

· 通过数字量输入信号 REF 设置回参考点

· 通过外部参考点挡块(信号 REF)和编码器零脉冲回参考点

· 仅通过编码器零脉冲回参考点

如伺服驱动带值编码器,共计三种回参考点模式可用。也可以通过 BOP 功能"ABS"调整值编码器(将当前位置设为零位)。详细信息可参见章节"调整值编码器" 。

通过设置参数 p29240 可以选择其中一种模式:

图片

值编码器回参考点模式

如连接值编码器,三种回参考点模式可用。可以通过参数 p29240 选择不同的回参考点模式。当 p29240 = 1 或 2 时,仅能在使用“ABS”功能之前执行回参考点操作。一旦使用“ABS”功能,这两种回零方式将不再生效。

二、存在问题

      根据现场调试发现,在V90的使用中,使用值编码器时,发现有两个问题

  •      执行回参考点动作后,设备重新上电,参考点丢失。需要在调试软件“V-ASSISTANT”中点击“保存参数到ROM”按钮。

  • 图片


    2.      在执行寻找外部信号REF设置参考点后,不能触发第二次寻找参考点指令。 

          官方提供的FB38000功能块,只能解决个问题,将当前位置记为“0”点,并执行

    “保存至ROM”,并不能执行寻找参考点的功能。

    同时FB38000,官方提供使用方法,需要在中断OB中调用。实际使用效果,反馈时间很长,大约要3,4秒。

    图片


    三、解决办法

           为了解决存在问题,在阅读V90参数手册后,总结这两个问题的解决方法:

           需要使用FB功能块 SINA_PARA_S (FB287)

    图片

    过程中用到如下参数:

        P2507 值编码器状态

    值编码器寻参后,不能被第二次触发寻参,是由于P2507已被更改为3。如想再次进行寻找参考点指令,需要将此参数的值改为0。

    在寻参指令运行结束后,将P2507数值改为2,会将当前位置记为P2599的预设值。


    图片


    图片

    P0971 存储驱动对象参数

        将寻参后的编码器数值保存至ROM,伺服断电后,参考点不会丢失。

        将P0971写入1,激活保存参数功能。


    图片


    四、总结调用参数过程,总结如下:

    值回零,在p2507为3时,不能执行回零动作。

    仅在p2507为1时,才能执行回零动作

    回零流程:

    1.将p2507改为1

    2.执行回零动作

    3.将p2599改为0(参考点坐标值)

    4.将p2507改为2(执行值校准)

    5.将p971改为1(保存参数从RAM至ROM)


    五、应用效果

           在项目中使用效果,伺服使用值编码器,并使用传感器作为REF信号时。执行回参考点动作后,参数可以保存至ROM。设备重新上电后,不用重新回参考点。

          在有回参考需求时,可通过在HMI上的按钮激活回参动作,并在回参动作后,自动执行修改相关参数指令。解决了不能多次执行回参考点的问题。

    由于V90伺服控制器的保存参数功能需要大约2,3秒。寻参动作完成标志变量会在伺服回零动作完成后2,3秒亮起,而在手动模式下,这种延时并不会对其他操作造成大的影响。


    六、参考测试后的程序


    图片


    图片


    IF #sCtrl.sFindRef AND #ref_set.Step = 0 THEN

        #ref_set.done := false;


        #ref_set.Step := 10;

    END_IF;


    IF NOT #sCtrl.sFindRef THEN

        #ref_set.Step := 0;

        #ref_set.Ref_active := FALSE;

        #ref_set.Servo_disable := FALSE;

        #ref_set.SINA_PARA_start := false;

    END_IF;


    REGION p2507_to_1

        //p2507 set to 1

        IF #ref_set.Step = 10 AND NOT #SINA_PARA_S.Start THEN

            #ref_set.Servo_disable := true;


            #ref_set.Step += 1;

        END_IF;


        IF #ref_set.Step = 11 AND NOT #SINA_PARA_S.Start AND NOT #SINA_POS.AxisEnabled THEN

            #SINA_PARA_S.ReadWrite := 1;

            #SINA_PARA_S.Parameter := 2507;

            #SINA_PARA_S.ValueWrite1 := 1.0;

            #SINA_PARA_S.ValueWrite2 := 1;


            #ref_set.SINA_PARA_start := true;

        END_IF;


        IF #ref_set.Step = 12 AND #SINA_PARA_S.Busy THEN

        END_IF;


        IF #ref_set.Step = 13 AND #SINA_PARA_S.Done AND NOT #SINA_PARA_S.Error THEN

            #ref_set.SINA_PARA_start := false;

            #ref_set.Servo_disable := FALSE;

            #ref_set.Step := 20;

        END_IF;


    END_REGION


    REGION active REF move

        //active ref move

        IF #ref_set.Step = 20 AND NOT #SINA_PARA_S.Start AND #SINA_POS.AxisEnabled THEN

            #ref_set.Ref_active := TRUE;

        END_IF;


        IF #ref_set.Step = 21 AND NOT #SINA_POS.AxisRef THEN

        END_IF;


        IF #ref_set.Step = 22 AND #SINA_POS.AxisRef THEN

            #ref_set.Ref_active := FALSE;

            #ref_set.Step := 30;

        END_IF;


    END_REGION


    REGION p2599_to_0

        //p2599 set to 0

        IF #ref_set.Step = 30 AND NOT #SINA_PARA_S.Start THEN


        END_IF;


        IF #ref_set.Step = 31 AND NOT #SINA_PARA_S.Start AND NOT #SINA_POS.AxisEnabled THEN

            #SINA_PARA_S.Parameter := 2599;

            #SINA_PARA_S.ValueWrite1 := 0.0;

            #SINA_PARA_S.ValueWrite2 := 0;


        END_IF;


        IF #ref_set.Step = 32 AND #SINA_PARA_S.Busy THEN

        END_IF;


        IF #ref_set.Step = 33 AND #SINA_PARA_S.Done AND NOT #SINA_PARA_S.Error THEN

            #ref_set.Step := 40;

        END_IF;


    END_REGION


    REGION p2507_to_2

        //p2507 set to 1

        IF #ref_set.Step = 40 AND NOT #SINA_PARA_S.Start THEN


        END_IF;


        IF #ref_set.Step = 41 AND NOT #SINA_PARA_S.Start AND NOT #SINA_POS.AxisEnabled THEN

            #SINA_PARA_S.ValueWrite1 := 2.0;

            #SINA_PARA_S.ValueWrite2 := 2;


        END_IF;


        IF #ref_set.Step = 42 AND #SINA_PARA_S.Busy THEN

        END_IF;


        IF #ref_set.Step = 43 AND #SINA_PARA_S.Done AND NOT #SINA_PARA_S.Error THEN

            #ref_set.Step := 50;

        END_IF;


    END_REGION


    REGION p971 to 1

        //p2599 set to 0

        IF #ref_set.Step = 50 AND NOT #SINA_PARA_S.Start THEN


        END_IF;


        IF #ref_set.Step = 51 AND NOT #SINA_PARA_S.Start AND NOT #SINA_POS.AxisEnabled THEN

            #SINA_PARA_S.Parameter := 971;


        END_IF;


        IF #ref_set.Step = 52 AND #SINA_PARA_S.Busy THEN

        END_IF;


        IF #ref_set.Step = 53 AND #SINA_PARA_S.Done AND NOT #SINA_PARA_S.Error THEN

            #ref_set.Step := 99;

        END_IF;


    END_REGION


    REGION end

        IF #ref_set.Step = 99 THEN

            #ref_set.done := TRUE;

            #ref_set.SINA_PARA_start := FALSE;

        END_IF;


    END_REGION


    //SINA_PARA_S

    #SINA_PARA_S(Start:=#ref_set.SINA_PARA_start,

                 AxisNo:=16#02,

                 hardwareId:=#HW_access);


    图片


    五、总结调用参数过程,总结如下:

    值回零,在p2507为3时,不能执行回零动作。

    仅在p2507为1时,才能执行回零动作

    回零流程:

    1.将p2507改为1

    2.执行回零动作

    3.将p2599改为0(参考点坐标值)

    4.将p2507改为2(执行值校准)

    5.将p971改为1(保存参数从RAM至ROM)


    六、应用效果




    核心提示:西门子PLC代理,西门子变频器代理,西门子伺服电机代,西门子工控机代理,西门子触摸屏代理
    刚发布的文章
    联系方式
    • 地址:中国(湖南)自由贸易试验区长沙片区开元东路1306号开阳智能制造产业园(一期)4#栋301
    • 手机:17838383235
    • 联系人:徐嘉泉
    新闻分类
    最新发布
    企业新闻
    站内搜索