前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【剑控享成】闲谈EPOS和FB284的前世今生

【剑控享成】闲谈EPOS和FB284的前世今生

作者头像
剑指工控
发布2021-11-09 10:12:25
6.6K3
发布2021-11-09 10:12:25
举报
文章被收录于专栏:剑指工控

JZGKCHINA

工控技术分享平台

1

前情提要

上期我们讲解了《使用FB38002 (Easy_SINA_Pos库)对V90PN进行控制》,通过那篇文章,大家发现FB38002的应用与FB284一样,都是基于DPRD_DAT和DPWR_DAT两个一致性读写指令操控111报文实现的,今天,我们讲解不使用官方库自己编写类似FB284的功能块控制V90伺服!

1

一、SINAMICS驱动器的EPOS功能

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

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

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

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

(2) 运行程序段

(3) 回参考点

(4) 点动

(5) 运行到固定挡块

1

二、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指令。

图1:驱动库调用原理

1

三、V90PN 通过111报文定位的实现过程

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

1. 111报文

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

图2:111报文IQ地址

过程数据通道

地址

信号

描述

数据类型

PLC-驱动器

PZD1

QW64

STW1

控制字1

U16

PZD2

QW66

POS_STW1

基本定位器的控制字1

U16

PZD3

QW68

POS_STW2

基本定位器的控制字2

U16

PZD4

QW70

STW2

控制字2

U16

PZD5

QW72

OVERRIDE

位置速度倍率

U16

PZD6

QD74

MDI_TARPOS

MDI位置

I32

PZD7

PZD8

QD78

MDI_VELOCITY

MDI速度

I32

PZD9

PZD10

QW82

MDI_ACC

MDI加速度倍率

U16

PZD11

QW84

MDI_DEC

MDI减速度倍率

U16

PZD12

QW86

USER

用户定义接受字

U16

驱动器-PLC

PZD1

IW68

ZSW1

状态字1

U16

PZD2

IW70

POS_ZSW1

基本定位器的状态字1

U16

PZD3

IW72

POS_ZSW2

基本定位器的状态字2

U16

PZD4

IW74

ZSW2

状态字2

U16

PZD5

IW76

MELDW

消息字

U16

PZD6

ID78

XIST_A

位置实际值A

I32

PZD7

PZD8

ID82

NIST_B

转速实际值B

I32

PZD9

PZD10

IW86

FAULT_CODE

故障代码

U16

PZD11

IW88

WARN_CODE

报警代码

U16

PZD12

IW90

USER

用户定义发送字

U16

表3: 111报文数据格式

2. EPOS功能、111报文及FB284对应关系

EPOS的几种运行模式就是通过对111报文的IO读写实现的,对应关系如表4/5所述。

FB284管脚

111报文

Q区地址

EPOS功能描述

输入参数/控制数据

1

EnableAxis

STW1.0

Q65.0

接通电机/轴使能

2

ConfigEPos.%X0

STW1.1

Q65.1

1=OFF2(自由停车)无效

3

ConfigEPos.%X1

STW1.2

Q65.2

1=OFF3(快速停车)无效

4

STW1.3

Q65.3

允许运行(可以使能脉冲)

5

CancelTransing

STW1.4

Q65.4

0=拒绝执行任务 1=不拒绝执行

6

IntermediateStop

STW1.5

Q65.5

0=暂停运行任务 1=不暂停

7

ExecuteMode

STW1.6

Q65.6

激活运行任务

STW1.11

Q64.3

启动回参考点命令

POS_STW2.1

Q69.1

设置参考点

8

AckError

STW1.7

Q65.7

故障确认

9

JOG1

STW1.8

Q64.0

正向点动使能(信号源1)

10

JOG2

STW1.9

Q64.1

反向点动使能(信号源2)

11

STW1.10

Q64.2

1=PLC控制

12

POS_STW1.0-1.5

Q67.0-5

选择运行程序段编号

13

POS_STW1.8

Q66.0

1=绝对定位 0=相对定位

14

Positive

POS_STW1.9

Q66.1

两个位组合 0-最短距离绝对定位1-正方向,2-负方向

15

Negative

POS_STW.10

Q66.2

16

ConfigEPos.%X8

POS_STW1.12

Q66.4

1 =连续接受设定值(可以实时改变)0 = STW1.6从 0 变为 1 后,才接收位置设定值的修改。

17

POS_STW1.14

Q66.6

1=信号调整 0=信号定位

18

POS_STW1.15

Q66.7

1 = MDI 选择 0=运行程序段

19

ConfigEPos.%X6

POS_STW2.2

Q69.2

1=参考点挡块激活(原点开关信号)

20

FlyRef

POS_STW2.8

Q68.0

1=运行中回零(被动回零)0=不选择运行中回零(主动回零)

21

Positive/Negative

POS_STW2.9

Q68.1

1=在负方向搜索参考点 0=在正方向

22

ConfigEPos.%X2

POS_STW2.14

Q68.6

1=激活软限位开关

23

ConfigEPos.%X3

POS_STW2.15

Q68.7

1=激活硬件限位

24

Position

MDI_TARPOS

QD74

ModePos=1 或2 时的位置设定值ModePos=6 时的程序段号

25

Velocity

MDI_VELOCITY

QD78

ModePos=1、2、3 时的速度设定值

26

OverV

OVERRIDE

QW72

速度倍率

27

OverAcc

MDI_ACC

QW82

加速度倍率

28

OverDec

MDI_DEC

QW84

减速度倍率

表4: 111报文控制字详细描述

FB284管脚

111报文

I区地址

EPOS功能描述

输出参数/状态数据

1

AxisEnabled

ZSW1.2

I69.2

驱动已使能

2

AxisError

ZSW1.3

I69.3

驱动故障

3

AxisWarn

ZSW1.7

I69.7

驱动报警

4

AxisPosOk

ZSW1.10

I68.2

轴的目标位置到达

5

AxisRef

ZSW1.11

I68.3

回零位置设置

8

ActPosition

XIST_A

ID78

当前位置

ActVelocity

NIST_B

ID82

当前速度

9

EPosZSW1

EPOS ZSW1的状态

10

EPosZSW2

EPOS ZSW2的状态

12

ActFault

FAULT_CODE

IW86

当前的故障代码

ActWarn

WARN_CODE

IW88

当前的报警代码

表5: 111报文状态字详细描述

3.EPOS各功能配合111报文的具体实现

(1)一致性读写

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

图2:一致性读写指令

(2)轴使能

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

图3:V90PN轴使能

(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三种,如表6所示。

表6:MDI的控制

(5)回原点(主动)如表7所示

表7:主动回原

(6)直接设置参考点

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

(7)运行程序段如表8所示

表8:运行程序段

(8)点动/速度如表9所示

表9:点动速度

(9)点动/增量如表10所示

表10:点动增量

(10)设定值实时更改

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

4.程序编写注意事项

要注意运行模式切换时报文相关控制位的复位,这样不会导致现有模式的状态干扰到下一模式,比如点动模式里正转和反转位(STW1.8和STW1.9)在其他模式里就要程序里将其置0。下面是编写用于EPOS运行FB的部分程序,未考虑报警等处理,只是实现基本功能演示,实际项目中我们都是用官方的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;

图4:“自制FB284”功能块

作 者 简 介

郭老师

电气自动化专业培训师

西门子工业专家

工业自动化控制系统专家

曾担任某研究院电气所副所长,擅长系统技术架构设计与开发,精通西门子、施耐德电气、罗克韦尔等各主流品牌全集成自动化系统的设计、编程、调试,包括西门子博途自动化平台、施耐德Modicon和Somachine平台等,涉及浮法玻璃生产、除尘环保、天然气能源、卷绕机械、涂装、非标流水线等多个行业。

2014/2016/2018连续三届荣获西门子颁发的“西门子工业专家”称呼,2016和2018年连续两届应邀在西门子工业专家会议上演讲。

往期回顾

S7-200SMART连接V90PN伺服编程调试实战

为啥要出S210——之S210 硬件介绍

使用FB38002对V90PN进行控制

S7-200SMART和S7-1200之间的ModbusTCP通讯

S7-1200常用的几种诊断方法

姿势已摆好

就等你点啦

更多资讯 请关注我们

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 剑指工控 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 上期我们讲解了《使用FB38002 (Easy_SINA_Pos库)对V90PN进行控制》,通过那篇文章,大家发现FB38002的应用与FB284一样,都是基于DPRD_DAT和DPWR_DAT两个一致性读写指令操控111报文实现的,今天,我们讲解不使用官方库自己编写类似FB284的功能块控制V90伺服!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档