简单梳理下EPOS和FB284

已锁定

刚刚入门

  • 帖子

    2083
  • 精华

    23
  • 被关注

    110

论坛等级:至圣

注册时间:2009-10-24

白金 白金 如何晋级?

简单梳理下EPOS和FB284

33405

27

2019-12-12 09:07:43

star star star star

一、SINAMICS驱动器的EPOS功能

EPOS(基本位置控制)是位置环在驱动器侧,由驱动器自身完成位置闭环控制的功能。SINAMICS驱动器里S系列(S110、S120)以及V90PN都内置了此功能,而G120系列中CU250S-2需要通过购买授权和CF卡方式获得该功能。

图1:西门子驱动器EPOS功能

基本定位器功能包括以下几个模式:

(1)   设定值直接给定/MDI

(2)   运行程序段

(3)   回参考点

(4)   点动

(5)   运行到固定挡块

二、TIA Portal 驱动库程序

FB284属于TIA Portal提供的驱动库程序,用于基于博途编程环境的S7-1200、S7-1500、S7-300/400等SIMATIC控制器对G/S120、V90等SINAMICS驱动器的基本定位控制。目前博途驱动库主要包含以下三种类型的功能块:

图2:博途常用驱动库

上面提到了循环和非循环数据交换,在功能块里是如何实现的?实际上FB284/FB285用到了DPRD/DAT和DPWR_DAT指令,即“读取标准DP从站的一致性数据”,而FB286/287则使用了RDREC指令和WRREC指令,如图3所示。

图3:博途驱动库调用原理                                       

说明一下:

(1)博途DPWD/DAT和DPWR_DAT指令前身其实就是经典STEP7 V5里的SFC14和SFC15。大家用DP通信控制变频器等应该都用过,在PROFIBUS或PROFINET网络中主站读取或者写入从站(大于4个字节)连续的数据需要使用 SFC14/SFC15,当然也有个别CPU型号可以不需要。

(2)博途RDREC和WRREC指令前身则是经典STEP7 V5里的SFC58和SFC59。

三、FB284的实现过程(以V90PN为例)

如上所述FB284库实际上就是通过一致性读写指令去对111报文的IO进行操作,下面我们自己做一个简单的FB来实现FB284基本功能,主要给大家分析如何对报文操作。

1、111报文

因为是操作111报文,所以我们首先需要了解该报文的详细信息,111报文是带扩展功能定位运行报文,常用于EPOS的控制。111报文在通信组态时映射的IO地址如图4所示,我们实际上就是对此IO的操作,可以看到111报文是12个接受/发送字,每个控制/状态字的含义可以查找V90或G120/S120手册。

图4:111报文映射IO地址

2. FB284管脚、111报文、EPOS功能间的对应关系,如图5/6所示。

图5:控制输出对应关系

图6:状态反馈对应关系

3.EPOS各功能配合111报文控制V90PN的具体步骤

(1)一致性读写

前面说过通过DPWD/DAT和DPWR_DAT指令实现,如图7所示。

图7:一致性读取指令

(2)轴使能

伺服各种运动模式运行的前提就是先使能接通电机,这里就要提到大家耳熟能详的16#047E和16#047F了。大家用西门子G120包括V20变频器都很清楚这是停止(OFF1)和正转启动控制字,再加上速度给定就可以启停运行了。同样基于SINAMICS平台的V90PN伺服也是如此,区别就是伺服轴需要激活不同的运行任务,所以STW1.6一开始是0,由后面具体任务控制。这样V90轴使能就是把16#047E/16#047F控制字里的第6位改为0,也就是16#043E/16#043F。当然驱动器断电后再上电也需要先赋值停止控制字才能转入启动,轴使能程序如图8所示。

图8:轴使能

(3)设定值和反馈值

位置设定值单位是LU,速度的设定值是1000LU/分钟,111报文的OverV控制字10进制整数16384(十六进制16#4000)对应100%的速度设定值,最大设定速度是十进制32767(对应200%)。而实际速度(反馈值)因为是双字,所以十六进制的40000000H 对应100%的速度基准值(P2000的参数值),实际速度值处理程序如下所示。

#Vel_act.%W0 := "111".R[8];

#Vel_act.%W1 := "111".R[7];

#TR[0] := DINT_TO_REAL(#Vel_act);

#TR[1] :=#参考转速 *(#TR[0] / 1073741824);  //16#40000000H//

#当前速度 := REAL_TO_DINT(#TR[1]);

(4)MDI控制

MDI指设定值直接给定,就是通过外部给定来控制驱动器,包括FB284里的运行模式1、2、3三种,如图9所示。

图9:MDI的模式控制

(5)回原点(主动)如图10所示

图10:主动回原点

(6)直接设置参考点

实际就是直接将POS_STW2.1置1。

(7)运行程序段如图11所示

图11:运行程序段

(8)点动/速度如图12所示

图12:点动速度

(9)点动/增量如图13所示

图13:点动增量

(10)设定值实时更改

有时我们需要在当前任务还没结束时触发新的任务(就是加载新的设定值),这时只需要POS_STW1.12置1即可(FB284里的ConfigEPos.%X8就是对应该位)。

4.程序编写注意事项

要注意运行模式切换时报文相关控制位的复位,这样不会导致现有模式的状态干扰到下一模式,比如点动模式里正转和反转位(STW1.8和STW1.9)在其他模式里就要程序里将其置0。下面是编写用于EPOS运行FB的部分程序(参考了FB284),未考虑报警还有容错等处理,只是实现基本功能演示。实际项目中我们都是用官方的FB284库,考虑更全面周到,逻辑更严谨,而且FB284库的程序代码在博途里也能看到。

IF #MODE = 2 THEN

    "111".W[1].%X9 := 0;

    "111".W[1].%X10 := 0;

    "111".W[1].%X12 := #连续接受设定值;

    "111".W[1].%X14 := 0;

    "111".W[1].%X15 := 1;

    "111".W[2].%X2 := 0;

    "111".W[0].%X11 := 0;

    "111".W[0].%X6 := #定位启动;

    "111".W[2].%X5 := 0;

    "111".W[1].%X8 := 1;

    "111".W[0].%X8 := 0;

    "111".W[0].%X9 := 0;

    "111".W[2].%X9 := 0;

    "111".W[2].%X1 := 0;

    IF #TB[3] THEN

        "111".W[0].%X6 := 0;

    END_IF;

END_IF;

IF #MODE = 3 THEN

    IF #正方向 AND NOT #负方向 THEN

        "111".W[1].%X9 := 1;

        "111".W[1].%X10 := 0;

    ELSIF #负方向 AND NOT #正方向 THEN

        "111".W[1].%X9 := 0;

        "111".W[1].%X10 := 1;

    END_IF;

    IF #拒绝任务 THEN

        "111".W[0].%X4 := 0;

    ELSE

        "111".W[0].%X4 := 1;

    END_IF;

    IF #暂停任务 THEN

        "111".W[0].%X5 := 0;

    ELSE

        "111".W[0].%X5 := 1;

    END_IF;

    "111".W[1].%X12 := #连续接受设定值;

    "111".W[0].%X11 := 0;

    "111".W[2].%X2 := 0;

    "111".W[1].%X14 := 1;

    "111".W[1].%X15 := 1;

    "111".W[0].%X6 := #定位启动;

    "111".W[2].%X5 := 0;

    "111".W[0].%X8 := 0;

    "111".W[0].%X9 := 0;

    "111".W[2].%X9 := 0;

    "111".W[2].%X1 := 0;

END_IF;

IF #MODE = 4 THEN

    IF #正方向 AND NOT #负方向 THEN

        "111".W[2].%X9 := 0;

    ELSIF #负方向 AND NOT #正方向 THEN

        "111".W[2].%X9 := 1;

    ELSE

        "111".W[2].%X9 := 0;

    END_IF;

    "111".W[1].%X9 := 0;

    "111".W[1].%X10 := 0;

    "111".W[1].%X12 := 0;

    "111".W[2].%X2 := #原点开关;

    "111".W[0].%X11 := #定位启动;

    "111".W[2].%X5 := 0;

    "111".W[0].%X8 := 0;

    "111".W[0].%X9 := 0;

"111".W[2].%X1 := 0;

图14:自制的简易类FB284功能块

个人总结:大家知道西门子驱动器都叫SINAMICS系列,所有产品遵循通用的平台架构设计,EPOS是SINAMICS里的一个标准功能。实际上就是在变频器速度控制(通过1#报文)基础上扩展了位置控制(通过111报文)就变成了EPOS(基本定位控制),无论是什么驱动器还是离不开电流环-速度环-位置环这样一个由内及外的套路。FB284的使用跟速度控制一样很简单,因为最核心的位置环是伺服完成的,我们仅仅是操作了一下报文而已。当然PLC负责位置环也是一样(比如工艺对象),核心的位置环也是PLC系统内部完成的,我们只是调用了PLCOPEN指令完成一些逻辑控制。


简单梳理下EPOS和FB284 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有8577条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。