技术论坛

用于200Smart控制V90PN的仿博途轴工艺对象MC指令

作者 主题
游侠

经验值: 458
发帖数: 50
精华帖: 3
主题:用于200Smart控制V90PN的仿博途轴工艺对象MC指令
精华帖精华帖星级3级 推荐帖


只看楼主 只看精华 楼主 2019-04-23 10:30:33

        200smart近期又火起来了,因为v2.4支持Profinet,能走Epos控制V90PN。编程软件里提供的Sian_Pos块其实是仅作为“驱动程序”,实现与V90驱动器的数据交互,具体实现各个运动功能,还需对Sina_Pos块里的各参数进行配置。为了方便使用,本人参照博途轴工艺对象里Motion Control指令,做了几个简单的功能块,以实现对伺服进行初始化、操作错误上报、运动参数设置、相对定位、绝对定位、寻找参考点、点动、增量点动。控制多台伺服直接对这些功能块进行多次调用即可。

        前期对200smart与v90PN的配置工作在此不赘述了,可以参考“刚刚入门”兄的精华帖“一步一步实战200smart与V90PN的定位控制”——http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1548104&b_id=64&b_sid=0&s_id=0&num=20#anch

        下面进入示例程序。在此假设控制一台伺服“轴1”。编程之前首先进行数据规划,将需要用到的变量建出来。把变量放在多个符号表里,便于查找和管理。在此创建三个符号表:dbSinaPosAxis1,用于轴1的Sina_Pos块;dbCtrlAixs1,用于轴1的控制命令;dbSystem,用于全程序使用。

        注:对于变量规划命名有两点小建议:

        1、多个对象的相同操作,假设同对对象1、对象2、对象3进行开启,则在建立对象1的变量时,命名为“start_对象1”,这样对象2、对象3直接复制粘贴对象1,把最后的数字改一下就行。

        2、长度为一个字的变量,地址用2的整数倍;长度为一个双字的变量,地址用4的整数倍。防止地址重叠。

dbSinaPosAxis1


dbCtrlAxis1

dbSystem

下面是Main程序总览

        时间有限,暂时发这么多,望大家理解。后续我会对每个功能块进行详细介绍。



 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1555359&b_id=64&s_id=0&num=16

奇侠

经验值: 7589
发帖数: 1989
精华帖: 0
回复:用于200Smart控制V90PN的仿博图轴工艺对象MC指令


只看楼主 只看精华 1楼 2019-04-23 11:08:55
多谢分享,把程序发上来啊
 
以下网友喜欢您的帖子:

  
游侠

经验值: 458
发帖数: 50
精华帖: 3
回复:用于200Smart控制V90PN的仿博图轴工艺对象MC指令
推荐帖


只看楼主 只看精华 楼主 2楼 2019-04-23 13:52:42

        在介绍运动控制功能块之前,先介绍一个小子程序TimeBase。它用来给整个程序提供一个100ms的定时时基,可避免在程序中,尤其是子程序中大量使用定时器。虽然这种方式计时不是太精确,但可满足大部分应用场合。

TimeBase

        这段程序可每隔100ms产生一个上升沿脉冲。如想实现计时功能,可建立一Int(长度为1个word)型变量wTon,使用“TB_100ms”去执行wTon的INC(自加1)操作,则wTon=1便是计时了100ms,wTon=10便是计时了1s。



 
以下网友喜欢您的帖子:

  
游侠

经验值: 458
发帖数: 50
精华帖: 3
回复:用于200Smart控制V90PN的仿博图轴工艺对象MC指令


只看楼主 只看精华 楼主 3楼 2019-04-23 14:20:31

        各运动控制功能块都存在几个共性问题,下面一一介绍。

        1、CmdAct:运行已激活。这是一个bool变量,可从Sina_Pos块的“Status_table”中的"Epos_zsw2"中读取。当驱动器正在执行运行任务时,该位置的状态是1。在本例程中,出于安全因素考虑,不允许在运行中切换运动模式,即仅当当前运动任务完成后,才允许切换模式。如有特殊应用需要,可删去此限制。

        2、AxisPosOk:定位完成。这个bool变量也是从“Status_table”中读取。只要轴使能,且伺服未处于运动状态,该位一直为1。仅当伺服开始运动时,才会置0,运动完成后又一直为1。因此为判断某一运动是否完成,取其上升沿。如在子程序中使用上升沿,在多次调用时会出错,所以取AxisPosOk的上升沿放到功能块外操作。

        3、AxisRef:已设置参考点。这个bool变量从"Status_table"中读取。当伺服执行了寻找参考点任务后会一直置1,执行寻找参考点任务时为0。我在程序中用"RefOk"表示,同AxisPosOk,取RefOk的上升沿放到功能块外操作。

        4、Enabled:已使能。bool型变量,从"Status_table"中读取。伺服使能时为1,未使能为0。本例程中所有的运动控制命令的前提是使能,否则,运动命令复位并报错。

        5、ActMode:当前操作模式。Int型变量,从"Status_table"中读取。这个我重点说明一下,这个ActMode把我狠狠坑了一把。开始在调试的时候,经常出现发出“跨模式”的运动命令,伺服不动作的情况,比如我刚刚执行了寻找参考点命令,这时操作模式是“4”,接下来想执行相对定位,模式是“1”,在发出相对定位命令后,伺服不动作,得再置位一次相对定位命令才会动作。后来我请教了一位前辈,他说V90伺服在切换模式后需要延时一小段时间模式才会生效。具体原因可能有两个:1、Profinet通信需要时间;2、V90驱动器切换模式需要时间。这两个原因,不管哪一个,都暴露出来一个小问题,就是从Sina_Pos块里读出的“当前模式”并不一定是驱动器中已经生效的操作模式。在此提个建议,希望西门子的技术专家能看到,就是让“ActMode”这个变量反映出来的是驱动器中的的确确已经生效的操作模式,这样能避免写很多延时程序。


 
以下网友喜欢您的帖子:

  
游侠

经验值: 458
发帖数: 50
精华帖: 3
回复:用于200Smart控制V90PN的仿博图轴工艺对象MC指令
推荐帖


只看楼主 只看精华 楼主 4楼 2019-04-23 14:40:41

        下面是各功能块程序,注释比较详细,请大家查阅,并希望大家提出宝贵意见。

1、MC_MoveRelative

功能块接口变量

功能块程序

2、MC_MoveAbsolute

功能块接口变量

功能块程序

3、MC_ToRef

功能块接口变量

功能块程序

4、MC_MoveJog

功能块接口变量

功能块程序

5、MC_MoveIncJog

功能块接口变量

功能块程序

6、MC_Initialize

注:200smart的Sina_Pos块有个特性,就是操作模式为0时,会报错“3,不支持的操作模式”,且无法使能,所以初始化时先任意给其赋值一个操作模式。因刚上电一般都需寻找参考点,所以这里把操作模式设置成“4”。

功能块接口变量

功能块程序

7、MC_MotionParam

注:这里是对伺服的速度、加减速百分比、相对定位、绝对定位的速度、位置进行设置

功能块接口变量

功能块程序

8、MC_OprateError

注:这个块反馈的是“操作错误”,因系统性错误,如伺服故障、到达硬限位等在驱动器的报警代码里都会体现,所以这里反馈的是“未使能便触发动作命令”、“速度、位置设定值超出允许范围”等操作性错误。

功能块接口变量

功能块程序

        这些子程序封装成库,后期就能随时调用了。



 
以下网友喜欢您的帖子:

  
至圣

经验值: 28623
发帖数: 5906
精华帖: 61
回复:用于200Smart控制V90PN的仿博图轴工艺对象MC指令


只看楼主 只看精华 5楼 2019-04-24 10:57:26

楼主挺不错的想法


欢迎交流,QQ:2301013064 邮箱:feige6@139.com
以下网友喜欢您的帖子:

  
至圣

经验值: 12688
发帖数: 2083
精华帖: 23
回复:用于200Smart控制V90PN的仿博途轴工艺对象MC指令


只看楼主 只看精华 6楼 2019-04-24 13:18:23

谢谢楼主的分享,很用心很详细,必须点赞!


 
以下网友喜欢您的帖子:

  
至圣

经验值: 13020
发帖数: 1815
精华帖: 22
回复:用于200Smart控制V90PN的仿博途轴工艺对象MC指令


只看楼主 只看精华 7楼 2019-04-24 15:46:32

这个不错,相对切绝对需要延时吗?


 
以下网友喜欢您的帖子:

  
游士

经验值: 188
发帖数: 26
精华帖: 0
回复:用于200Smart控制V90PN的仿博途轴工艺对象MC指令


只看楼主 只看精华 8楼 2019-05-07 11:04:57

帮助文件和系统手册中不是都有吗?


 
以下网友喜欢您的帖子:

  
至圣

经验值: 28623
发帖数: 5906
精华帖: 61
回复:用于200Smart控制V90PN的仿博途轴工艺对象MC指令


只看楼主 只看精华 9楼 2019-05-27 21:38:55

我感觉楼主挺牛的,要不直接甩去SINA_POS吧


欢迎交流,QQ:2301013064 邮箱:feige6@139.com
以下网友喜欢您的帖子:

  
新手

经验值: 45
发帖数: 1
精华帖: 0
回复:用于200Smart控制V90PN的仿博途轴工艺对象MC指令


只看楼主 只看精华 10楼 2019-07-15 17:16:39

楼主厉害!我想请问一下楼主,V90用的是绝对值编码器时如何通过PLC设置参考零点?使用模式7的话断电再上电它的当前位置值又回去了?有没有什么办法解决?谢谢


 
以下网友喜欢您的帖子:

  
游侠

经验值: 458
发帖数: 50
精华帖: 3
回复:用于200Smart控制V90PN的仿博途轴工艺对象MC指令


只看楼主 只看精华 楼主 11楼 2019-07-21 20:42:19
以下是引用利华在2019-07-15 17:16:39的发言 >10楼

楼主厉害!我想请问一下楼主,V90用的是绝对值编码器时如何通过PLC设置参考零点?使用模式7的话断电再上电它的当前位置值又回去了?有没有什么办法解决?谢谢

参照《V90_PN操作手册》的第“6.5.7”节。使用模式7回原点完成后,等电机完全停止,按照如下操作:


操作完毕后再将参数“P0977”设置为1并等待该参数自动复位为0。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 15669
发帖数: 644
精华帖: 0
回复:用于200Smart控制V90PN的仿博途轴工艺对象MC指令


只看楼主 只看精华 12楼 2019-07-23 21:11:40

多谢分享,谢谢


岂能尽如人意 但求无愧我心
以下网友喜欢您的帖子:

  
游侠

经验值: 336
发帖数: 29
精华帖: 0
回复:用于200Smart控制V90PN的仿博途轴工艺对象MC指令


只看楼主 只看精华 13楼 2019-08-01 11:07:52

谢谢楼主,收藏备用吧


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1190
发帖数: 570
精华帖: 4
回复:用于200Smart控制V90PN的仿博途轴工艺对象MC指令


只看楼主 只看精华 14楼 2020-01-14 15:12:09

好想下载源程序!


向前进
以下网友喜欢您的帖子:

  
侠士

经验值: 1677
发帖数: 377
精华帖: 2
回复:用于200Smart控制V90PN的仿博途轴工艺对象MC指令


只看楼主 只看精华 15楼 2020-02-05 14:40:41

是的,200SMART面向中国的低端市场,功能却越来越强大了,接地气啊!


我爱工控!尤爱西门子!
以下网友喜欢您的帖子:

  
侠士

经验值: 1677
发帖数: 377
精华帖: 2
回复:用于200Smart控制V90PN的仿博途轴工艺对象MC指令


只看楼主 只看精华 16楼 2020-02-05 15:00:33

不错的贴, 学习了,谢谢分享!


我爱工控!尤爱西门子!
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
用于200Smart控制V90PN的仿博途轴工艺对象MC指令
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。