回复:S7-200Smart子程序编程思路之三

已锁定

holdkcsxyz

西门子1847工业学习平台

  • 帖子

    1561
  • 精华

    24
  • 被关注

    162

论坛等级:至圣

注册时间:2015-06-03

钻石 钻石 如何晋级?

发布于 2023-03-21 13:00:51

5楼

      本贴针对上贴优化了减速算法的尾差处理,使得当变量#减速总距确定时,变量#减速次数的值每次测试都是同一个值(位置定,时间定),尾差处理也使得减速结尾即将停车的时候尽量让SMD72不减速到1这样平滑度和时间稍优,初步做到了定位定时。以下贴出一个全局变量版本的例程。

(一)中断定位梯形减速过程简单推导(考虑V减速始速和V减速尾速)

T形减速计算:计算中既有浮点数又有整数,这是非常有必要的,原因是一个脉冲不差要求要用整数加减;而减速过程的精密计算需要用浮点数来运算,最终再化成整数,并做尾差处理;所以浮点数和整数都要用。

1:位推算速:SMW68由SMD72配合Ts==2ms推出,目前简单点就是SMD72/Ts后续可能要缩放处理;

2:减速算法:

01:刚开始进入减速段,S减速总距=减速梯形或三角形面积=(Vmax+Vmin)*T减速总时/2,Vmax==V减速始速;Vmin==V减速尾速(一般等于0.0);Vmax=V减速始速就是在定时中断的中断初始的瞬间采样到的SMW68;以采样时间Ts==2ms将S减速总距划分成n个梯形,最后一个梯形上底长度==0本质是三角形;

02:Ts==2ms,Vmax,Vmin,S减速总距四个参数知道;

03:则算出T减速总时==2S减速总距/(Vmax+Vmin);

04:计算减速度a,每小段梯形的下底长度Vn,上底长度Vn+1;面积Sn;

05:减速度a=(Vmax-Vmin)/T减速总时=(Vmax-Vmin)*(Vmax+Vmin)/(2*S减速总距);

06:Vn==Vmax-(n*Ts*a);(n=0,1,2......)n=0时Vn==Vmax;

07:Vn+1==Vn-a*Ts==Vmax-((n+1)*Ts*a);(这两个公式是理想T梯形等价,S曲线不等价)

08:Sn=(Vn+Vn+1)*Ts/2;

09:Sn= {2Vmax-(2n+1)*Ts*a}*Ts/2={2Vmax-(2n+1)*Ts*(Vmax-Vmin)*(Vmax+Vmin)/(2*S减速总距)}*Ts/2

      最终得到:Sn={4Vmax*S减速总距-(2n+1)*Ts*(Vmax-Vmin)*(Vmax+Vmin)}*Ts/(4*S减速总距)

10:浮点数:减速次数:就是n==0,1,2,3,......

算出来的Sn做尾差判断处理以后才能赋值给SMD72;并对SMD72进行下限幅值限幅成1;

尾差处理:就是结尾的几个算出的减速脉冲数加上位置动差不能超过设定位置,否则就会过冲几个脉冲,必须进行简单的加减运算处理过冲,这样的简单处理是非常正确且必要的,这也是需要仔细考虑的。

(二)例程说明:例程经过多次实践测试,自测是正确可用的,减速算法正确,程序一个脉冲也不差,同一个减速距离,减速次数多次测试都是同一个值,说明既能准确控制位置,整个中断定位期间的时间也是非常确定的。即:例程1完成了中断定位准确的定位,且整个定位时间完全可控且确定。仅供参考。

中断定位T形减速.zip

1:初始化必要参数

采样速度=1000.0ms/s

减速尾速=0.0mm/ms

总减速距=5.0mm

脉冲毫米=425.0pp/mm(机械减速比脉冲分辨率等决定)

设定位置==125000==294.117647mm

采样毫秒=2.0ms

初始脉冲=109pp/(2ms)

2:初始化2ms的中断和PTO使能位

3:由位置推算速度SMD72推导SMW68

4:减速算法见以上10点

5:定时中断中 运动启停初始化一些标志位


6:定时中断中最主要的运动程序


后续将测试一个中断定位距离一定:S定;且约束定位时间一定:T定,这要求动态计算S总减速距......

进一步是S定,T定,Vmin定且不等于0.0......



评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有9022条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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