阿西莫特 发表于 2022-9-20 15:14

步进电机驱动器PVT插补案例-PUSIROBOT

<div class='showpostmsg'> 本帖最后由 阿西莫特 于 2022-9-20 15:27 编辑

<p><br />
<br />
&nbsp;&nbsp; &nbsp;1 概述<br />
1.1 示例目标<br />
<br />
&nbsp;&nbsp; &nbsp;本示例是为方便客户理解、应用PVT插补功能结合谱思小型步进电机驱动器,初步实现通过该机械手臂画直线功能。本示例控制部分采用谱思自主研发的高性能小型步进电机驱动器嵌入式控制模块,通过模块内部的运动控制算法实现对手臂的精确控制。<br />
&lt;/p&gt;<br />
&lt;p class=&quot;MsoNormal&quot;&gt;<br />
&nbsp;&nbsp; &nbsp;要理解PVT插补功能,前期需要对机械结构做运动学分析,该示例针对此机械结构给出了较为详细的演示步骤,但由于运动的多样性,为节省篇幅仅对某种运动情况做详细分析。<br />
&lt;/p&gt;<br />
文档描述针对谱思PMC007系列控制模块PVT插补功能,包括整体机构描述、运动图分析、P位置数据解析和V速度数据解析等。<br />
<br />
&nbsp;&nbsp; &nbsp;2 背景描述<br />
<br />
&nbsp;&nbsp; &nbsp;2.1 设备机构图<br />
<br />
<br />
&nbsp;&nbsp; &nbsp;该机构为3轴机械手臂,3号电机控制整体上下移动,1、2号电机分别控制与其相连的两轴转动,最终实现对G点的精确控制;那么G点要实现直线或者圆弧运动,就需要用到PVT插补<br />
<br />
&nbsp;&nbsp; &nbsp;2.2&nbsp;&nbsp;PVT简介<br />
<br />
<br />
&nbsp;&nbsp; &nbsp;PVT 是一种精确插补方式,广泛应用于伺服控制系统的轨迹规划。PMC007系列小型步进电机驱动器通过CAN 总线接收一系列的 PVT 点,每一个 PVT 点都由位置、速度、时间组成,PMC007控制器在这些点之间做精插补,以得到所需的运动轨迹。<br />
<br />
&nbsp;&nbsp; &nbsp;PVT 同步控制不仅能保证系统运行的平稳,而且能充分发挥系统资源潜能,提高系统的平均运行速度和系统生产效率,整体地提高运动系统的控制精度,使加速度曲线在拐点处平滑过渡。合理的进行插补控制是保证高速运动系统动态性能和稳态精度的重要环节。PMC007采用 PVT 精插补算法,利用系统的开放性,将上位机的粗插补与底层控制器的精插补有效结合,不仅使得复杂运动机构的插补运算平衡分布在工控网络,而且极大降低了总线通讯负荷,并使大规模节点数的网络同步控制变得简单可靠。<br />
<br />
&nbsp;&nbsp; &nbsp;通过为控制模块设定一系列PVT点,使得各个轴的电机能在同一时刻(T),以各自的目标速度(V),通过或到达各自的目标点(P)。<br />
<br />
使用时,通过对连续运动曲线进行离散化,间断地输入PVT 点,即可实现连续的PVT 运动,如下图所示。离散化的时间间隔△t越小(1ms&le;△t&le;1s),PVT点数越多,得到的曲线越平滑,但是给总线的带宽压力越大,所以需要根据网络上的轴数来做负荷平衡。在3个轴以内通常采用的时间间隔△t&asymp;20ms左右。<br />
<br />
<br />
&nbsp;&nbsp; &nbsp;2.3&nbsp;&nbsp;机构运动图解分析<br />
<br />
&nbsp;&nbsp; &nbsp;由图可以得知,要实现G点的直线或者圆弧运动,难点在于1、2号电机的控制,这里先让3号电机保持不动做运动分析,这种情况下俯视的机构示意图如下图所示:<br />
<br />
&nbsp;<br />
&nbsp;&nbsp; &nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;直线插补:<br />
<br />
&nbsp;&nbsp; &nbsp;要让G点走直线,那么G点坐标x与y的关系为:y=ax+b,由于机构的特殊性,a、b和x的取值范围不同计算公式也不相同,这里仅在0&lt;x&lt;l1&lt; span=&quot;&quot;&gt;的条件下做运动分析。<br />
<br />
&nbsp;&nbsp; &nbsp;G点走直线,需要系统对1、2号电机给出正确的PVT数据。<br />
<br />
&nbsp;&nbsp; &nbsp;3.1&nbsp;&nbsp;位置数据(P)解析:<br />
<br />
&nbsp;&nbsp; &nbsp;1、首先把y=ax+b这条直线在0&lt;x&lt;l1&lt; span=&quot;&quot;&gt;的范围内分成5000个点,只要G点依次通过这5000个点即可形成直线运动轨迹,对应的x值为X0 X1 X2 X3 &hellip;&hellip;.X4999 &lt;/x&lt;l1&lt;&gt;<br />
<br />
&nbsp;&nbsp; &nbsp;2、要得到1号电机与2号电机的位置数据,即是需要得到&phi;1与&phi;2的角度,通过每一个点的x值可以求得与其对应的&phi;1值与&phi;2值。<br />
<br />
&nbsp;&nbsp; &nbsp;3.1.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&phi;1值求法<br />
<br />
<br />
&nbsp;&nbsp; &nbsp;由图可知&phi;1=&phi;3+&phi;4<br />
<br />
<br />
&nbsp;&nbsp; &nbsp;&phi;4=arctan(-yL1+x)*(360/2&pi;)=arctan(-(ax+b)L1+x)*(360/2&pi;)<br />
<br />
<br />
&nbsp;&nbsp; &nbsp;&phi;3=arccos⁡(L42+L62-L522*L4*L6)*(360/2&pi;)<br />
<br />
&nbsp; &nbsp; =arccos⁡(1+a2x2+2ab+2L1x+L42+L12+b2-L522*L4*1+a2x2+2ab+2L1x+L12+b2)*(360/2&pi;)<br />
<br />
&nbsp;&nbsp; &nbsp;&phi;1= {arctan(-(ax+b)L1+x)+arccos⁡(1+a2x2+2ab+2L1x+L42+L12+b2-L522*L4*1+a2x2+2ab+2L1x+L12+b2)}*(360/2&pi;)<br />
<br />
&nbsp;&nbsp; &nbsp;3.1.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&phi;2值求法<br />
<br />
&nbsp;&nbsp; &nbsp;&phi;5=arctan(-yL1-x)*(360/2&pi;)=arctan(-(ax+b)L1-x)*(360/2&pi;)<br />
<br />
&nbsp;&nbsp; &nbsp;&phi;6=arccos⁡(L22+L72-L322*L2*L7)*(360/2&pi;)<br />
<br />
&nbsp;&nbsp; &nbsp;=arccos⁡(1+a2x2+2ab-2L1x+L22+L12+b2-L322*L2*1+a2x2+2ab-2L1x+L12+b2)*(360/2&pi;)<br />
<br />
&nbsp;&nbsp; &nbsp;&phi;2= {arctan(-(ax+b)L1-x)+arccos1+a2x2+2ab-2L1x+L22+L12+b2-L322*L2*1+a2x2+2ab-2L1x+L12+b2}*(360/2&pi;)<br />
<br />
&nbsp;&nbsp; &nbsp;3.2&nbsp;&nbsp;1、2号电机位置算法<br />
<br />
&nbsp;&nbsp; &nbsp;根据x值求出对应的&phi;1值与&phi;2值,再根据该值与初始位置值的角度差,即可求出需要的1号电机和2号电机的绝对位置,设一号电机初始位置角度值为&phi;10,2号电机初始位置角度值为&phi;20<br />
<br />
&nbsp;&nbsp; &nbsp;1号电机的绝对位置P为:&phi;1-&phi;10/(1.8细分)<br />
<br />
&nbsp;&nbsp; &nbsp;2号电机的绝对位置P为:&phi;2-&phi;20/(1.8细分)<br />
<br />
&nbsp;&nbsp; &nbsp;3.3&nbsp;&nbsp;速度数据(V)解析:<br />
<br />
&nbsp;&nbsp; &nbsp;角度对时间求导就是角速度,通过角速度就可以求到脉冲频率V,由于画直线的情况有很多种,这里仅在匀速画直线的情况下做分析,设画直线的速度为V1,<br />
<br />
&nbsp;&nbsp; &nbsp;令p=1+a2x2+2ab+2L1x+L42+L12+b2-L52<br />
<br />
&nbsp;&nbsp; &nbsp;Q=2*L4*1+a2x2+2ab+2L1x+L12+b2<br />
<br />
&nbsp;&nbsp; &nbsp;3.3.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1号电机角速度:<br />
<br />
&nbsp;&nbsp; &nbsp;&omega;1=d&phi;1dt=(d&phi;1dx)*(dxdt)=b-a*L1L1+x2+ax+b2-11-p2q2*21+a2x+2ab+2L1*q-2L42pqq2*3602&pi;*V1*(-ab/b&sup2;+b&sup2;/a&sup2;)<br />
<br />
&nbsp;&nbsp; &nbsp;3.3.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2号电机角速度:<br />
<br />
&nbsp;&nbsp; &nbsp;令u=1+a2x2+2ab-2L1x+L22+L12+b2-L32<br />
<br />
&nbsp;&nbsp; &nbsp;v=2*L2*1+a2x2+2ab-2L1x+L12+b2<br />
<br />
&nbsp;&nbsp; &nbsp;&omega;2=d&phi;2dt=(d&phi;2dx)*(dxdt)=-b-a*L1L1-x2+ax+b2-11-u2v2*21+a2x+2ab-2L1*v-2L22uvv2*3602&pi;*V1*(-ab/b&sup2;+b&sup2;/a&sup2;) QUOTE arctan(-(ax+b)L1+x)+arccos⁡(1+a2x2+2ab+2L1x+L42+L12+b2-L522*L4*1+a2x2+2ab+2L1x+L12+b2)<br />
&lt;/p&gt;<br />
&lt;p&gt;<br />
&nbsp;&nbsp; &nbsp;3.4&nbsp;&nbsp;1、2号电机脉冲频率(PPS)算法<br />
<br />
&nbsp;&nbsp; &nbsp;根据x值与已知的V1值求出对应的&omega;1值与&omega;2值,根据电机的固有属性换算出需要的PPS,也就是速度V<br />
<br />
&nbsp;&nbsp; &nbsp;1号电机速度V1=&omega;1*细分<br />
<br />
&nbsp;&nbsp; &nbsp;2号电机速度V2=&omega;2*细分<br />
<br />
&nbsp;&nbsp; &nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;具体PVT数据<br />
<br />
&nbsp;&nbsp; &nbsp;见附带Excel表格&lt;b&gt;&lt;b&gt;&lt;span&gt;&lt;/span&gt; &lt;/b&gt;&lt;/b&gt;&nbsp;<br />
&nbsp;</p>

<p>&nbsp;</p>

<p >&nbsp;</p>

<p >&nbsp;</p>

<p >1 概述<br />
1.1 示例目标</p>

<p >本示例是为方便客户理解、应用PVT插补功能结合谱思小型步进电机驱动器,初步实现通过该机械手臂画直线功能。本示例控制部分采用谱思自主研发的高性能小型步进电机驱动器嵌入式控制模块,通过模块内部的运动控制算法实现对手臂的精确控制。</p>

<p >要理解PVT插补功能,前期需要对机械结构做运动学分析,该示例针对此机械结构给出了较为详细的演示步骤,但由于运动的多样性,为节省篇幅仅对某种运动情况做详细分析。</p>

<p>文档描述针对谱思PMC007系列控制模块PVT插补功能,包括整体机构描述、运动图分析、P位置数据解析和V速度数据解析等。</p>

<p >&nbsp;</p>

<p >&nbsp;</p>

<p >2 背景描述</p>

<p >2.1 设备机构图</p>

<p >&nbsp;</p>

<p >&nbsp;</p>

<p >&nbsp;</p>

<p >该机构为3轴机械手臂,3号电机控制整体上下移动,1、2号电机分别控制与其相连的两轴转动,最终实现对G点的精确控制;那么G点要实现直线或者圆弧运动,就需要用到PVT插补</p>

<p >2.2&nbsp;&nbsp;PVT简介</p>

<p >PVT 是一种精确插补方式,广泛应用于伺服控制系统的轨迹规划。PMC007系列小型步进电机驱动器通过CAN 总线接收一系列的 PVT 点,每一个 PVT 点都由位置、速度、时间组成,PMC007控制器在这些点之间做精插补,以得到所需的运动轨迹。</p>

<p >PVT 同步控制不仅能保证系统运行的平稳,而且能充分发挥系统资源潜能,提高系统的平均运行速度和系统生产效率,整体地提高运动系统的控制精度,使加速度曲线在拐点处平滑过渡。合理的进行插补控制是保证高速运动系统动态性能和稳态精度的重要环节。PMC007采用 PVT 精插补算法,利用系统的开放性,将上位机的粗插补与底层控制器的精插补有效结合,不仅使得复杂运动机构的插补运算平衡分布在工控网络,而且极大降低了总线通讯负荷,并使大规模节点数的网络同步控制变得简单可靠。</p>

<p >通过为控制模块设定一系列PVT点,使得各个轴的电机能在同一时刻(T),以各自的目标速度(V),通过或到达各自的目标点(P)。</p>

<p>使用时,通过对连续运动曲线进行离散化,间断地输入PVT 点,即可实现连续的PVT 运动,如下图所示。离散化的时间间隔△t越小(1ms&le;△t&le;1s),PVT点数越多,得到的曲线越平滑,但是给总线的带宽压力越大,所以需要根据网络上的轴数来做负荷平衡。在3个轴以内通常采用的时间间隔△t&asymp;20ms左右。</p>

<p >&nbsp;</p>

<p >&nbsp;</p>

<p >&nbsp;</p>

<p >2.3&nbsp;&nbsp;机构运动图解分析</p>

<p >由图可以得知,要实现G点的直线或者圆弧运动,难点在于1、2号电机的控制,这里先让3号电机保持不动做运动分析,这种情况下俯视的机构示意图如下图所示:</p>

<p >&nbsp;</p>

<p >&nbsp;</p>

<p >&nbsp;</p>

<p >&nbsp;</p>

<p >3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;直线插补:</p>

<p >要让G点走直线,那么G点坐标x与y的关系为:y=ax+b,由于机构的特殊性,a、b和x的取值范围不同计算公式也不相同,这里仅在0<x<l1< span="">的条件下做运动分析。</x<l1<></p>

<p >G点走直线,需要系统对1、2号电机给出正确的PVT数据。</p>

<p >3.1&nbsp;&nbsp;位置数据(P)解析:</p>

<p >1、首先把y=ax+b这条直线在0<x<l1< span="">的范围内分成5000个点,只要G点依次通过这5000个点即可形成直线运动轨迹,对应的x值为X0 X1 X2 X3 &hellip;&hellip;.X4999</x<l1<></p>

<p >2、要得到1号电机与2号电机的位置数据,即是需要得到&phi;1与&phi;2的角度,通过每一个点的x值可以求得与其对应的&phi;1值与&phi;2值。</p>

<p >3.1.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &phi;1值求法</p>

<p >由图可知&phi;1=&phi;3+&phi;4</p>

<p >&phi;4=arctan(-yL1+x)*(360/2&pi;)=arctan(-(ax+b)L1+x)*(360/2&pi;)</p>

<p >&phi;3=arccos⁡(L42+L62-L522*L4*L6)*(360/2&pi;)</p>

<p >=arccos⁡(1+a2x2+2ab+2L1x+L42+L12+b2-L522*L4*1+a2x2+2ab+2L1x+L12+b2)*(360/2&pi;)</p>

<p >&phi;1= {arctan(-(ax+b)L1+x)+arccos⁡(1+a2x2+2ab+2L1x+L42+L12+b2-L522*L4*1+a2x2+2ab+2L1x+L12+b2)}*(360/2&pi;)</p>

<p >3.1.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &phi;2值求法</p>

<p >&phi;5=arctan(-yL1-x)*(360/2&pi;)=arctan(-(ax+b)L1-x)*(360/2&pi;)</p>

<p >&phi;6=arccos⁡(L22+L72-L322*L2*L7)*(360/2&pi;)</p>

<p >=arccos⁡(1+a2x2+2ab-2L1x+L22+L12+b2-L322*L2*1+a2x2+2ab-2L1x+L12+b2)*(360/2&pi;)</p>

<p >&phi;2= {arctan(-(ax+b)L1-x)+arccos1+a2x2+2ab-2L1x+L22+L12+b2-L322*L2*1+a2x2+2ab-2L1x+L12+b2}*(360/2&pi;)</p>

<p >3.2&nbsp;&nbsp;1、2号电机位置算法</p>

<p >根据x值求出对应的&phi;1值与&phi;2值,再根据该值与初始位置值的角度差,即可求出需要的1号电机和2号电机的绝对位置,设一号电机初始位置角度值为&phi;10,2号电机初始位置角度值为&phi;20</p>

<p >1号电机的绝对位置P为:&phi;1-&phi;10/(1.8细分)</p>

<p >2号电机的绝对位置P为:&phi;2-&phi;20/(1.8细分)</p>

<p >3.3&nbsp;&nbsp;速度数据(V)解析:</p>

<p >角度对时间求导就是角速度,通过角速度就可以求到脉冲频率V,由于画直线的情况有很多种,这里仅在匀速画直线的情况下做分析,设画直线的速度为V1,</p>

<p >令p=1+a2x2+2ab+2L1x+L42+L12+b2-L52</p>

<p >Q=2*L4*1+a2x2+2ab+2L1x+L12+b2</p>

<p >3.3.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1号电机角速度:</p>

<p align="left" >&omega;1=d&phi;1dt=(d&phi;1dx)*(dxdt)=b-a*L1L1+x2+ax+b2-11-p2q2*21+a2x+2ab+2L1*q-2L42pqq2*3602&pi;*V1*(-ab/b&sup2;+b&sup2;/a&sup2;)</p>

<p >3.3.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2号电机角速度:</p>

<p >令u=1+a2x2+2ab-2L1x+L22+L12+b2-L32</p>

<p >v=2*L2*1+a2x2+2ab-2L1x+L12+b2</p>

<p align="left" >&omega;2=d&phi;2dt=(d&phi;2dx)*(dxdt)=-b-a*L1L1-x2+ax+b2-11-u2v2*21+a2x+2ab-2L1*v-2L22uvv2*3602&pi;*V1*(-ab/b&sup2;+b&sup2;/a&sup2;) QUOTE arctan(-(ax+b)L1+x)+arccos⁡(1+a2x2+2ab+2L1x+L42+L12+b2-L522*L4*1+a2x2+2ab+2L1x+L12+b2)</p>

<p >3.4&nbsp;&nbsp;1、2号电机脉冲频率(PPS)算法</p>

<p >根据x值与已知的V1值求出对应的&omega;1值与&omega;2值,根据电机的固有属性换算出需要的PPS,也就是速度V</p>

<p >1号电机速度V1=&omega;1*细分</p>

<p >2号电机速度V2=&omega;2*细分</p>

<p >4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;具体PVT数据</p>

<p >见附带Excel表格</p>

<p>&nbsp;</p>

<p >&nbsp;</p>

<p>&nbsp;</p>

<p >&nbsp;</p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>
页: [1]
查看完整版本: 步进电机驱动器PVT插补案例-PUSIROBOT