📄 linkage_8cpp-source.html
字号:
<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> &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 <= <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> &<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<ampct; i++ )<a name="l00272"></a>00272 {<a name="l00273"></a>00273 err = amp[i]-><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<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 <= 0 || acc <= 0 || dec <= 0 || jrk <= 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> &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="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> &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 & 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> &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> &<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 + -