⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linkage_8cpp-source.html

📁 美国COPLEY驱动器,程序开发工具之一.
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00256"></a>00256 <span class="comment">  */</span><a name="l00257"></a>00257 <span class="comment">/***************************************************************************/</span><a name="l00258"></a><a class="code" href="classLinkage.html#a21">00258</a> <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *<a class="code" href="classLinkage.html#a21">Linkage::GetPositionCommand</a>( <a class="code" href="classPointN.html">PointN</a> &amp;p )<a name="l00259"></a>00259 {<a name="l00260"></a>00260    <span class="keywordtype">int</span> axes = <a class="code" href="classLinkage.html#a20">GetAxesCount</a>();<a name="l00261"></a>00261    <a class="code" href="CML__Settings_8h.html#a14">CML_ASSERT</a>( axes &lt;= <a class="code" href="CML__Settings_8h.html#a6">CML_MAX_AMPS_PER_LINK</a> );<a name="l00262"></a>00262 <a name="l00263"></a>00263    <span class="keywordflow">if</span>( p.<a class="code" href="classPointN.html#a0">getDim</a>() != axes )<a name="l00264"></a>00264       <span class="keywordflow">return</span> &amp;<a class="code" href="classLinkError.html#s4">LinkError::AxisCount</a>;<a name="l00265"></a>00265 <a name="l00266"></a>00266    <a class="code" href="CML__Utils_8h.html#a11">uunit</a> pos[<a class="code" href="CML__Settings_8h.html#a6">CML_MAX_AMPS_PER_LINK</a>];<a name="l00267"></a>00267 <a name="l00268"></a>00268    <span class="keywordtype">int</span> i;<a name="l00269"></a>00269    <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *err;<a name="l00270"></a>00270 <a name="l00271"></a>00271    <span class="keywordflow">for</span>( i=0; i&lt;ampct; i++ )<a name="l00272"></a>00272    {<a name="l00273"></a>00273       err = amp[i]-&gt;<a class="code" href="classAmp.html#z2_4">GetPositionCommand</a>( pos[i] );<a name="l00274"></a>00274       <span class="keywordflow">if</span>( err )<a name="l00275"></a>00275       {<a name="l00276"></a>00276     LatchError( err, i );<a name="l00277"></a>00277     <span class="keywordflow">return</span> err;<a name="l00278"></a>00278       }<a name="l00279"></a>00279    }<a name="l00280"></a>00280 <a name="l00281"></a>00281    err = <a class="code" href="classLinkage.html#a22">ConvertAmpToAxisPos</a>( pos );<a name="l00282"></a>00282    <span class="keywordflow">if</span>( err )<a name="l00283"></a>00283    {<a name="l00284"></a>00284       LatchError( err, -1 );<a name="l00285"></a>00285       <span class="keywordflow">return</span> err;<a name="l00286"></a>00286    }<a name="l00287"></a>00287 <a name="l00288"></a>00288    <span class="keywordflow">for</span>( i=0; i&lt;axes; i++ )<a name="l00289"></a>00289       p[i] = pos[i];<a name="l00290"></a>00290 <a name="l00291"></a>00291    <span class="keywordflow">return</span> 0;<a name="l00292"></a>00292 }<a name="l00293"></a>00293 <a name="l00294"></a>00294 <span class="comment">/***************************************************************************/</span><span class="comment"></span><a name="l00295"></a>00295 <span class="comment">/**</span><a name="l00296"></a>00296 <span class="comment">  Set limits used for multi-axis point-to-point moves.</span><a name="l00297"></a>00297 <span class="comment"></span><a name="l00298"></a>00298 <span class="comment">  @param vel Maximum velocity</span><a name="l00299"></a>00299 <span class="comment">  @param acc Maximum acceleration</span><a name="l00300"></a>00300 <span class="comment">  @param dec Maximum deceleration</span><a name="l00301"></a>00301 <span class="comment">  @param jrk Maximum jerk</span><a name="l00302"></a>00302 <span class="comment">  @return An error object pointer, or NULL on success.</span><a name="l00303"></a>00303 <span class="comment">  */</span><a name="l00304"></a>00304 <span class="comment">/***************************************************************************/</span><a name="l00305"></a><a class="code" href="classLinkage.html#a7">00305</a> <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *<a class="code" href="classLinkage.html#a7">Linkage::SetMoveLimits</a>( <a class="code" href="CML__Utils_8h.html#a11">uunit</a> vel, <a class="code" href="CML__Utils_8h.html#a11">uunit</a> acc, <a class="code" href="CML__Utils_8h.html#a11">uunit</a> dec, <a class="code" href="CML__Utils_8h.html#a11">uunit</a> jrk )<a name="l00306"></a>00306 {<a name="l00307"></a>00307    <span class="keywordflow">if</span>( vel &lt;= 0 || acc &lt;= 0 || dec &lt;= 0 || jrk &lt;= 0 )<a name="l00308"></a>00308       <span class="keywordflow">return</span> 0;<a name="l00309"></a>00309 <a name="l00310"></a>00310    maxVel = vel;<a name="l00311"></a>00311    maxAcc = acc;<a name="l00312"></a>00312    maxDec = dec;<a name="l00313"></a>00313    maxJrk = jrk;<a name="l00314"></a>00314 <a name="l00315"></a>00315    <span class="keywordflow">return</span> 0;<a name="l00316"></a>00316 }<a name="l00317"></a>00317 <a name="l00318"></a>00318 <span class="comment">/***************************************************************************/</span><span class="comment"></span><a name="l00319"></a>00319 <span class="comment">/**</span><a name="l00320"></a>00320 <span class="comment">  Return the move limits currently set for this linkage.</span><a name="l00321"></a>00321 <span class="comment">  @param vel Returns maximum velocity</span><a name="l00322"></a>00322 <span class="comment">  @param acc Returns maximum acceleration</span><a name="l00323"></a>00323 <span class="comment">  @param dec Returns maximum deceleration</span><a name="l00324"></a>00324 <span class="comment">  @param jrk Returns maximum jerk</span><a name="l00325"></a>00325 <span class="comment">  @return An error object pointer, or NULL on success.</span><a name="l00326"></a>00326 <span class="comment">  */</span><a name="l00327"></a>00327 <span class="comment">/***************************************************************************/</span><a name="l00328"></a><a class="code" href="classLinkage.html#a8">00328</a> <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *<a class="code" href="classLinkage.html#a8">Linkage::GetMoveLimits</a>( <a class="code" href="CML__Utils_8h.html#a11">uunit</a> &amp;vel, <a class="code" href="CML__Utils_8h.html#a11">uunit</a> &amp;acc, <a class="code" href="CML__Utils_8h.html#a11">uunit</a> &amp;dec, <a class="code" href="CML__Utils_8h.html#a11">uunit</a> &amp;jrk )<a name="l00329"></a>00329 {<a name="l00330"></a>00330    vel = maxVel;<a name="l00331"></a>00331    acc = maxAcc;<a name="l00332"></a>00332    dec = maxDec;<a name="l00333"></a>00333    jrk = maxJrk;<a name="l00334"></a>00334    <span class="keywordflow">return</span> 0;<a name="l00335"></a>00335 }<a name="l00336"></a>00336 <a name="l00337"></a>00337 <span class="comment">/***************************************************************************/</span><span class="comment"></span><a name="l00338"></a>00338 <span class="comment">/**</span><a name="l00339"></a>00339 <span class="comment">  Move to a specified position.  This move uses the limits previously set using</span><a name="l00340"></a>00340 <span class="comment">  Linkage::SetMoveLimits.</span><a name="l00341"></a>00341 <span class="comment"></span><a name="l00342"></a>00342 <span class="comment">  @param p The point to move to.</span><a name="l00343"></a>00343 <span class="comment">  @param start If true (the default), the profile will be started by this call.</span><a name="l00344"></a>00344 <span class="comment">               If false, the profile will be uploaded, but not started.  In that case</span><a name="l00345"></a>00345 <span class="comment">               the move may be later started by a call to Linkage::StartMove.</span><a name="l00346"></a>00346 <span class="comment">  @return An error object pointer, or NULL on success.</span><a name="l00347"></a>00347 <span class="comment">  */</span><a name="l00348"></a>00348 <span class="comment">/***************************************************************************/</span><a name="l00349"></a><a class="code" href="classLinkage.html#a9">00349</a> <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *<a class="code" href="classLinkage.html#a6">Linkage::MoveTo</a>( <a class="code" href="classPointN.html">PointN</a> &amp;p, <span class="keywordtype">bool</span> start )<a name="l00350"></a>00350 {<a name="l00351"></a>00351    <span class="keywordflow">return</span> <a class="code" href="classLinkage.html#a6">MoveTo</a>( p, maxVel, maxAcc, maxDec, maxJrk, start );<a name="l00352"></a>00352 }<a name="l00353"></a>00353 <a name="l00354"></a>00354 <span class="comment">/***************************************************************************/</span><span class="comment"></span><a name="l00355"></a>00355 <span class="comment">/**</span><a name="l00356"></a>00356 <span class="comment">  Move to a point in space.  The number of dimensions of the point must equal</span><a name="l00357"></a>00357 <span class="comment">  the number of axes controlled by the Linkage (as returned by Linkage::GetAxesCount).</span><a name="l00358"></a>00358 <span class="comment"></span><a name="l00359"></a>00359 <span class="comment">  This method causes the linkage to perform a straight line move in N space </span><a name="l00360"></a>00360 <span class="comment">  from the present position to the specified point.  The move will be limited</span><a name="l00361"></a>00361 <span class="comment">  in velocity, acceleration &amp; jerk to the passed values.</span><a name="l00362"></a>00362 <span class="comment"></span><a name="l00363"></a>00363 <span class="comment">  The linkage is assumed to be at rest when this method is called.  If this isn't </span><a name="l00364"></a>00364 <span class="comment">  the case, then an error will result.</span><a name="l00365"></a>00365 <span class="comment"></span><a name="l00366"></a>00366 <span class="comment">  Note that this function causes a trajectory to be calculated and passed to the </span><a name="l00367"></a>00367 <span class="comment">  amplifiers as a series of PVT points.  This calculation requires floating point</span><a name="l00368"></a>00368 <span class="comment">  math, so this function is not available if floating point support has not been </span><a name="l00369"></a>00369 <span class="comment">  enabled in CML_Settings.h.</span><a name="l00370"></a>00370 <span class="comment"></span><a name="l00371"></a>00371 <span class="comment">  @param p The point in N space to move to.</span><a name="l00372"></a>00372 <span class="comment">  @param vel Maximum velocity</span><a name="l00373"></a>00373 <span class="comment">  @param acc Maximum acceleration</span><a name="l00374"></a>00374 <span class="comment">  @param dec Maximum deceleration</span><a name="l00375"></a>00375 <span class="comment">  @param jrk Maximum jerk</span><a name="l00376"></a>00376 <span class="comment">  @param start If true (the default), the profile will be started by this call.</span><a name="l00377"></a>00377 <span class="comment">               If false, the profile will be uploaded, but not started.  In that case</span><a name="l00378"></a>00378 <span class="comment">               the move may be later started by a call to Linkage::StartMove.</span><a name="l00379"></a>00379 <span class="comment"></span><a name="l00380"></a>00380 <span class="comment">  @return An error object pointer, or NULL on success.</span><a name="l00381"></a>00381 <span class="comment">  */</span><a name="l00382"></a>00382 <span class="comment">/***************************************************************************/</span><a name="l00383"></a><a class="code" href="classLinkage.html#a6">00383</a> <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *<a class="code" href="classLinkage.html#a6">Linkage::MoveTo</a>( <a class="code" href="classPointN.html">PointN</a> &amp;p, <a class="code" href="CML__Utils_8h.html#a11">uunit</a> vel, <a class="code" href="CML__Utils_8h.html#a11">uunit</a> acc, <a class="code" href="CML__Utils_8h.html#a11">uunit</a> dec, <a class="code" href="CML__Utils_8h.html#a11">uunit</a> jrk, <span class="keywordtype">bool</span> start )<a name="l00384"></a>00384 {<a name="l00385"></a>00385 <span class="preprocessor">#ifndef CML_ALLOW_FLOATING_POINT</span><a name="l00386"></a>00386 <span class="preprocessor"></span>   <span class="keywordflow">return</span> &amp;<a class="code" href="classLinkError.html#s12">LinkError::NotSupported</a>;<a name="l00387"></a>00387 <span class="preprocessor">#else</span>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -