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

📄 amp_8cpp-source.html

📁 美国COPLEY驱动器,程序开发工具之一.
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00448"></a><a class="code" href="classAmp.html#z8_1">00448</a> <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *<a class="code" href="classAmp.html#z8_0">Amp::GoHome</a>( <a class="code" href="structHomeConfig.html">HomeConfig</a> &amp;cfg )<a name="l00449"></a>00449 {<a name="l00450"></a>00450    <span class="comment">/**************************************************</span><a name="l00451"></a>00451 <span class="comment">    * If a move is necessary, make sure that the accel</span><a name="l00452"></a>00452 <span class="comment">    * and velocity parameters are non-zero.</span><a name="l00453"></a>00453 <span class="comment">    **************************************************/</span><a name="l00454"></a>00454    <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *err = 0;<a name="l00455"></a>00455 <a name="l00456"></a>00456    <span class="keywordflow">switch</span>( cfg.<a class="code" href="structHomeConfig.html#o0">method</a> )<a name="l00457"></a>00457    {<a name="l00458"></a>00458       <span class="keywordflow">case</span> <a class="code" href="CML__AmpDef_8h.html#a403a312">CHM_HARDSTOP_POS</a>:<a name="l00459"></a>00459       <span class="keywordflow">case</span> <a class="code" href="CML__AmpDef_8h.html#a403a313">CHM_HARDSTOP_NEG</a>:<a name="l00460"></a>00460       <span class="keywordflow">case</span> <a class="code" href="CML__AmpDef_8h.html#a403a314">CHM_HARDSTOP_ONDX_POS</a>:<a name="l00461"></a>00461       <span class="keywordflow">case</span> <a class="code" href="CML__AmpDef_8h.html#a403a315">CHM_HARDSTOP_ONDX_NEG</a>:<a name="l00462"></a>00462     err = <a class="code" href="classAmp.html#z8_14">SetHomeCurrent</a>( cfg.<a class="code" href="structHomeConfig.html#o6">current</a> );<a name="l00463"></a>00463     <span class="keywordflow">if</span>( !err ) err = <a class="code" href="classAmp.html#z8_16">SetHomeDelay</a>( cfg.<a class="code" href="structHomeConfig.html#o7">delay</a> );<a name="l00464"></a>00464     <span class="comment">// fall through</span><a name="l00465"></a>00465 <a name="l00466"></a>00466       <span class="keywordflow">default</span>:<a name="l00467"></a>00467     <span class="comment">// If no homing move is defined, don't try to set</span><a name="l00468"></a>00468     <span class="comment">// the velocity &amp; accel parameters.  This avoids</span><a name="l00469"></a>00469     <span class="comment">// possible errors.</span><a name="l00470"></a>00470     <span class="keywordflow">if</span>( (cfg.<a class="code" href="structHomeConfig.html#o0">method</a> == <a class="code" href="CML__AmpDef_8h.html#a403a311">CHM_NONE</a>) &amp;&amp; (cfg.<a class="code" href="structHomeConfig.html#o5">offset</a> == 0) )<a name="l00471"></a>00471        <span class="keywordflow">break</span>;<a name="l00472"></a>00472 <a name="l00473"></a>00473     <span class="comment">// Set the home parameters</span><a name="l00474"></a>00474     <span class="keywordflow">if</span>( !err ) err = <a class="code" href="classAmp.html#z8_8">SetHomeVelFast</a>( cfg.<a class="code" href="structHomeConfig.html#o2">velFast</a> );<a name="l00475"></a>00475     <span class="keywordflow">if</span>( !err ) err = <a class="code" href="classAmp.html#z8_10">SetHomeVelSlow</a>( cfg.<a class="code" href="structHomeConfig.html#o3">velSlow</a> );<a name="l00476"></a>00476     <span class="keywordflow">if</span>( !err ) err = <a class="code" href="classAmp.html#z8_12">SetHomeAccel</a>( cfg.<a class="code" href="structHomeConfig.html#o4">accel</a> );<a name="l00477"></a>00477    }<a name="l00478"></a>00478 <a name="l00479"></a>00479    <span class="keywordflow">if</span>( !err ) err = <a class="code" href="classAmp.html#z8_6">SetHomeOffset</a>( cfg.<a class="code" href="structHomeConfig.html#o5">offset</a> );<a name="l00480"></a>00480    <span class="keywordflow">if</span>( !err ) err = <a class="code" href="classAmp.html#z8_4">SetHomeMethod</a>( cfg.<a class="code" href="structHomeConfig.html#o0">method</a>, cfg.<a class="code" href="structHomeConfig.html#o1">extended</a> );<a name="l00481"></a>00481 <a name="l00482"></a>00482    <span class="comment">// Start the home.</span><a name="l00483"></a>00483    <span class="keywordflow">if</span>( !err ) err = <a class="code" href="classAmp.html#z8_0">GoHome</a>();<a name="l00484"></a>00484    <span class="keywordflow">return</span> err;<a name="l00485"></a>00485 }<a name="l00486"></a>00486 <a name="l00487"></a>00487 <span class="comment">/***************************************************************************/</span><span class="comment"></span><a name="l00488"></a>00488 <span class="comment">/**</span><a name="l00489"></a>00489 <span class="comment">  Execute a home move.  The various homing parameters (method, velocity, etc)</span><a name="l00490"></a>00490 <span class="comment">  are assumed to have already be configured.</span><a name="l00491"></a>00491 <span class="comment"></span><a name="l00492"></a>00492 <span class="comment">  @return A pointer to an error object, or NULL on success.</span><a name="l00493"></a>00493 <span class="comment">  */</span><a name="l00494"></a>00494 <span class="comment">/***************************************************************************/</span><a name="l00495"></a><a class="code" href="classAmp.html#z8_0">00495</a> <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *<a class="code" href="classAmp.html#z8_0">Amp::GoHome</a>( <span class="keywordtype">void</span> )<a name="l00496"></a>00496 {<a name="l00497"></a>00497    <a class="code" href="CML_8h.html#a0">cml</a>.<a class="code" href="classCopleyMotionLibrary.html#a8">Debug</a>( <span class="stringliteral">"Amp %d Home\n"</span>, <a class="code" href="classNode.html#a38">GetNodeID</a>() );<a name="l00498"></a>00498 <a name="l00499"></a>00499    <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *err;<a name="l00500"></a>00500 <a name="l00501"></a>00501    <span class="comment">// Check for error conditions</span><a name="l00502"></a>00502    err = <a class="code" href="classAmp.html#z1_7">CheckStateForMove</a>();<a name="l00503"></a>00503    <span class="keywordflow">if</span>( err ) <span class="keywordflow">goto</span> retErr;<a name="l00504"></a>00504 <a name="l00505"></a>00505    <span class="comment">// Make sure we are in homing mode</span><a name="l00506"></a>00506    err = <a class="code" href="classAmp.html#z1_0">SetAmpMode</a>( <a class="code" href="CML__AmpDef_8h.html#a397a196">AMPMODE_CAN_HOMING</a> );<a name="l00507"></a>00507    <span class="keywordflow">if</span>( err ) <span class="keywordflow">goto</span> retErr;<a name="l00508"></a>00508 <a name="l00509"></a>00509    <span class="comment">// Clear bit 4 of the control word</span><a name="l00510"></a>00510    <span class="keywordflow">if</span>( lastCtrlWord != 0x000F )<a name="l00511"></a>00511    {<a name="l00512"></a>00512       err = <a class="code" href="classAmp.html#b1">SetControlWord</a>( 0x000F );<a name="l00513"></a>00513       <span class="keywordflow">if</span>( err ) <span class="keywordflow">goto</span> retErr;<a name="l00514"></a>00514    }<a name="l00515"></a>00515 <a name="l00516"></a>00516    <span class="comment">// Start homing</span><a name="l00517"></a>00517    err = <a class="code" href="classAmp.html#b1">SetControlWord</a>( 0x001F );<a name="l00518"></a>00518    <span class="keywordflow">if</span>( err ) <span class="keywordflow">goto</span> retErr;<a name="l00519"></a>00519 <a name="l00520"></a>00520    <span class="comment">// Wait for the move to start if the</span><a name="l00521"></a>00521    <span class="comment">// home method isn't NONE.</span><a name="l00522"></a>00522    <span class="keywordflow">if</span>( lastHomeMethod != <a class="code" href="CML__AmpDef_8h.html#a403a311">CHM_NONE</a> )<a name="l00523"></a>00523    {<a name="l00524"></a>00524       <a class="code" href="classEventNone.html">EventNone</a> e = <a class="code" href="CML__AmpDef_8h.html#a399a245">AMPEVENT_MOVEDONE</a>;<a name="l00525"></a>00525       err = e.<a class="code" href="classEvent.html#a7">Wait</a>( <a class="code" href="classAmp.html#p0">eventMap</a>, <a class="code" href="classNode.html#o0">sdo</a>.<a class="code" href="classSDO.html#a28">GetTimeout</a>() );<a name="l00526"></a>00526    }<a name="l00527"></a>00527 <a name="l00528"></a>00528    <span class="comment">// Otherwise, wait for the 'trajectory aborted' bit to be</span><a name="l00529"></a>00529    <span class="comment">// clear if it was set.</span><a name="l00530"></a>00530    <span class="keywordflow">else</span><a name="l00531"></a>00531    {<a name="l00532"></a>00532       <a class="code" href="classEventNone.html">EventNone</a> e = <a class="code" href="CML__AmpDef_8h.html#a399a260">AMPEVENT_ABORT</a>;<a name="l00533"></a>00533       err = e.<a class="code" href="classEvent.html#a7">Wait</a>( <a class="code" href="classAmp.html#p0">eventMap</a>, <a class="code" href="classNode.html#o0">sdo</a>.<a class="code" href="classSDO.html#a28">GetTimeout</a>() );<a name="l00534"></a>00534    }<a name="l00535"></a>00535 <a name="l00536"></a>00536 retErr:<a name="l00537"></a>00537    <span class="keywordflow">if</span>( err )<a name="l00538"></a>00538       <a class="code" href="CML_8h.html#a0">cml</a>.<a class="code" href="classCopleyMotionLibrary.html#a9">Warn</a>( <span class="stringliteral">"Amp %d Home failed: %s\n"</span>, <a class="code" href="classNode.html#a38">GetNodeID</a>(), err-&gt;<a class="code" href="classError.html#a0">toString</a>() );<a name="l00539"></a>00539 <a name="l00540"></a>00540    <span class="keywordflow">return</span> err;<a name="l00541"></a>00541 }<a name="l00542"></a>00542 <a name="l00543"></a>00543 <span class="comment">/***************************************************************************/</span><span class="comment"></span><a name="l00544"></a>00544 <span class="comment">/**</span><a name="l00545"></a>00545 <span class="comment">  Setup a point to point move, but do not start it.  The move may be subsequently</span><a name="l00546"></a>00546 <span class="comment">  started using Amp::StartMove().</span><a name="l00547"></a>00547 <span class="comment"></span><a name="l00548"></a>00548 <span class="comment">  The move will use the trapezoidal profile mode, and all parameters will be </span><a name="l00549"></a>00549 <span class="comment">  programmed based on the values passed in the cfg structure.</span><a name="l00550"></a>00550 <span class="comment"></span><a name="l00551"></a>00551 <span class="comment">  @param cfg A structure holding all the move configuration parameters.</span><a name="l00552"></a>00552 <span class="comment">  @return A pointer to an error object, or NULL on success.</span><a name="l00553"></a>00553 <span class="comment">  */</span><a name="l00554"></a>00554 <span class="comment">/***************************************************************************/</span><a name="l00555"></a><a class="code" href="classAmp.html#z10_0">00555</a> <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *<a class="code" href="classAmp.html#z10_0">Amp::SetupMove</a>( <a class="code" href="structProfileConfigTrap.html">ProfileConfigTrap</a> &amp;cfg )<a name="l00556"></a>00556 {<a name="l00557"></a>00557    <span class="comment">// Setup the move</span><a name="l00558"></a>00558    <span class="keyword">const</span> <a class="code" href="classError.html">Error</a> *err = <a class="code" href="classAmp.html#z10_12">SetProfileType</a>( <a class="code" href="CML__AmpDef_8h.html#a404a318">PROFILE_TRAP</a> );<a name="

⌨️ 快捷键说明

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