故事作者:刚刚入门

最近创作

看看TA的故事

【征文】DB_ANY在运动控制结构化批处理编程中的应用

已锁定

刚刚入门

  • 帖子

    2083
  • 精华

    23
  • 被关注

    112

论坛等级:至圣

注册时间:2009-10-24

白金 白金 如何晋级?

【征文】DB_ANY在运动控制结构化批处理编程中的应用

13098

5

2019-07-25 14:09:42

star star star star star

一、运动控制结构化批处理编程的需求

目前大家用西门子博途控制器+V90PN做项目越来越多,如果走工艺对象的话就必须采用PLC-OPEN运控指令编程,程序里轴数量较多的话会每根轴重复调用MC_Power、MC_Absolute等指令,同时产生大量的背景数据块。我们大家都熟悉西门子的结构化批量编程套路:建一个标准FB,然后通过SCL语言的FOR循环Array of FB进行多重背景的数组调用,这样100个对象FB块的调用一个FOR 循环语句就完事了。那么这个套路能否用在运动控制编程中的,实际上焦点就是TO_PositioningAxis(包括TO_CommandTable)这个数据类型作为参数时支不支持多重实例的Array,实际是不支持的。如图1所示。但不要紧,可以用DB_ANY这个数据类型来转换,从S7-1200 V4.2开始,DB_ANY可以在运动控制中使用,它可以使用在形参为TO_PositioningAxis和TO_CommandTable类型的实参处,包括以下几种:

(1) 当FC/FB的输入形参数据类型为TO_PositioningAxis时,外部实参可以使用DB_ANY数据类型的变量。
(2) 在MC_MoveAbsolute/MC_MoveRelative指令的参数Axis处,实参可使用DB_ANY数据类型的变量。
(3) 当FC/FB的输入形参数据类型为TO_CommandTable时,外部实参可使用DB_ANY数据类型的变量。
(4) 在MC_CommandTable指令的参数CommandTable处,实参可直接使用DB_ANY数据类型的变量。

图2显示了支持多重实例的DB_ANY。

图1:定位轴数据类型不支持多重实例

图2:支持多重实例的DB_ANY

二、运动控制程序使用DB_ANY的调用结构

大家注意看上面第(2)条,只有绝对运动和相对运动指令的参数Axis处,实参才可以直接使用DB_ANY数据类型。其他的指令比如使能(MC_Power)、点动(MC_MoveJog)等的参数Axis处如果实参直接填DB_ANY,CPU会报错,如图3和4所示,原因是MC_Power/MC_Reset/MC_Home指令的参数Axis,类型为TO_Axis。而MC_Halt/MC_MoveVelocity/MC_MoveJog/MC_ChangeDynaic指令的参数Axis,类型为TO_SpeedAxis。    

图3:如果MC_POWER指令使用DB_ANY实参

图4:下载到CPU后报错

解决方法:这时我们增加一个FC进行转换,MC_Power等指令在这个FC里进行调用(使用参数实例),这个转换FC再使用DB_ANY作为接口参数被上级FB调用。这样绕开了MC_Power等指令无法直接使用DB_ANY类型的矛盾,程序调用结构如图5所示。为了方便,我们实际在程序中把几个转换FC合并在一起用一个FC实现。

图5:程序的调用结构

三、具体实例化实现过程

下面以笔者手上的两台伺服松下A6和西门子V90PN来进行具体实践,松下A6采用PTO脉冲控制,V90PN采用PROFINET通信控制。

(1)对两台伺服建立TO_PoistioningAxis轴工艺对象进行控制,如图6所示。

图6:建立2个伺服定位轴工艺对象

(2)建立数据块,包括DB_ANY数组和实参用的数据变量,如图7所示。实参数组长度是8,可以处理8根轴,但实际只用了2根轴,所以DB_ANY数组长度是2。为了方便,将各运动指令的参数都设置成PLC数据类型,这样DB块里引用会很快捷。

图7:运动控制参数数据块

(3)在启动OB里(OB100)将实际工艺对象DB赋值给DB_ANY,如图8所示。

图8:赋值DB_ANY

(4)建立转换FC程序,在里面调用MC_Power等指令。

我们把实际应用中常用的MC_Power、MC_Reset、MC_ReadParam(读实际距离、速度)等指令都放进去,注意在该FC中调用上述运动控制指令FB时选择“参数实例”,如图9所示。

图9:对MC_Power等FB的调用

同时在FC接口处定义相关输入输出变量,用于实际参数控制,如图10所示,转换FC程序如图11所示。

图10:转换FC参数接口

图11:转换FC程序

(5)在FB中对转换FC和绝对/相对运动指令进行数组调用。

注意在FB的静态变量中建立多重背景,如图12所示,数组调用程序如图13所示。

 

图12:FB静态变量中多重背景

图13:FB程序调用

(6)运行测试

将PLC与松下A6伺服和V90PN连接后进行程序测试,图14就是两台伺服同时点动的测试运行图。

图14:运行测试

至此,DB_ANY在运动控制结构化编程中的应用就结束了,当项目中轴数量较多时这种结构化编程还是有一定优势的,特别是使用了S7-1500PLC的项目。但MC_Power等指令无法直接使用DB_ANY实参还是带来了许多不方便(转换有点繁琐),期待西门子后续能有所改进。

文章思路实际来自全球技术资源条目号109750880的文档,我只是手上有设备进行了实际测试应用而已,在西门子现在这种什么都安排好的产品应用模式里,只要照搬就行了。

【征文】DB_ANY在运动控制结构化批处理编程中的应用 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

网友专栏

共有3233条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

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