SOEM/doc/html/ethercatsoe_8c.html

500 lines
21 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.3.1"/>
<title>SOEM: ethercatsoe.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOEM
&#160;<span id="projectnumber">v1.3.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.3.1 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_3012a2599d87e3128fe81d8c5dd7e75c.html">soem</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">ethercatsoe.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Servo over EtherCAT (SoE) Module.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;stdio.h&gt;</code><br/>
<code>#include &lt;string.h&gt;</code><br/>
<code>#include &quot;osal.h&quot;</code><br/>
<code>#include &quot;oshw.h&quot;</code><br/>
<code>#include &quot;<a class="el" href="ethercattype_8h.html">ethercattype.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="ethercatbase_8h.html">ethercatbase.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="ethercatmain_8h.html">ethercatmain.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="ethercatsoe_8h.html">ethercatsoe.h</a>&quot;</code><br/>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structec__SoEt.html">ec_SoEt</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a061df11eda95634e5524ccd9d2d312ea"><td class="memItemLeft" align="right" valign="top">PACKED_END void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatsoe_8c.html#a061df11eda95634e5524ccd9d2d312ea">ecx_SoEerror</a> (<a class="el" href="structecx__contextt.html">ecx_contextt</a> *context, uint16 Slave, uint16 idn, uint16 Error)</td></tr>
<tr class="separator:a061df11eda95634e5524ccd9d2d312ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb2dd61447da5f449a083931aa2fe467"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatsoe_8c.html#adb2dd61447da5f449a083931aa2fe467">ecx_SoEread</a> (<a class="el" href="structecx__contextt.html">ecx_contextt</a> *context, uint16 <a class="el" href="eepromtool_8c.html#a7f46665d1fe6d01a75a90942bb34cfaf">slave</a>, uint8 driveNo, uint8 elementflags, uint16 idn, int *psize, void *p, int timeout)</td></tr>
<tr class="separator:adb2dd61447da5f449a083931aa2fe467"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d2d52ed026adbfc0896953edb59ac70"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatsoe_8c.html#a4d2d52ed026adbfc0896953edb59ac70">ecx_SoEwrite</a> (<a class="el" href="structecx__contextt.html">ecx_contextt</a> *context, uint16 <a class="el" href="eepromtool_8c.html#a7f46665d1fe6d01a75a90942bb34cfaf">slave</a>, uint8 driveNo, uint8 elementflags, uint16 idn, int psize, void *p, int timeout)</td></tr>
<tr class="separator:a4d2d52ed026adbfc0896953edb59ac70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99875a86cc956e9de8a5753a3107be5b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatsoe_8c.html#a99875a86cc956e9de8a5753a3107be5b">ecx_readIDNmap</a> (<a class="el" href="structecx__contextt.html">ecx_contextt</a> *context, uint16 <a class="el" href="eepromtool_8c.html#a7f46665d1fe6d01a75a90942bb34cfaf">slave</a>, int *Osize, int *Isize)</td></tr>
<tr class="separator:a99875a86cc956e9de8a5753a3107be5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8db8dac3118e949c495d4e50caccfac"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatsoe_8c.html#af8db8dac3118e949c495d4e50caccfac">ec_SoEread</a> (uint16 <a class="el" href="eepromtool_8c.html#a7f46665d1fe6d01a75a90942bb34cfaf">slave</a>, uint8 driveNo, uint8 elementflags, uint16 idn, int *psize, void *p, int timeout)</td></tr>
<tr class="separator:af8db8dac3118e949c495d4e50caccfac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7ea660f01cb95ab4f37479bbc2f017e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatsoe_8c.html#ae7ea660f01cb95ab4f37479bbc2f017e">ec_SoEwrite</a> (uint16 <a class="el" href="eepromtool_8c.html#a7f46665d1fe6d01a75a90942bb34cfaf">slave</a>, uint8 driveNo, uint8 elementflags, uint16 idn, int psize, void *p, int timeout)</td></tr>
<tr class="separator:ae7ea660f01cb95ab4f37479bbc2f017e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb454e12b2034f0121a534de57b0e869"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatsoe_8c.html#acb454e12b2034f0121a534de57b0e869">ec_readIDNmap</a> (uint16 <a class="el" href="eepromtool_8c.html#a7f46665d1fe6d01a75a90942bb34cfaf">slave</a>, int *Osize, int *Isize)</td></tr>
<tr class="separator:acb454e12b2034f0121a534de57b0e869"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Servo over EtherCAT (SoE) Module. </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="acb454e12b2034f0121a534de57b0e869"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_readIDNmap </td>
<td>(</td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>slave</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>Osize</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>Isize</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="af8db8dac3118e949c495d4e50caccfac"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_SoEread </td>
<td>(</td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>slave</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>driveNo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>elementflags</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>idn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>psize</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>timeout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ae7ea660f01cb95ab4f37479bbc2f017e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_SoEwrite </td>
<td>(</td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>slave</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>driveNo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>elementflags</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>idn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>psize</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>timeout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a99875a86cc956e9de8a5753a3107be5b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ecx_readIDNmap </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structecx__contextt.html">ecx_contextt</a> *&#160;</td>
<td class="paramname"><em>context</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>slave</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>Osize</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>Isize</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>SoE read AT and MTD mapping.</p>
<p>SoE has standard indexes defined for mapping. This function tries to read them and collect a full input and output mapping size of designated slave.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">context</td><td>= context struct </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">slave</td><td>= Slave number </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">Osize</td><td>= Size in bits of output mapping (MTD) found </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">Isize</td><td>= Size in bits of input mapping (AT) found </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>&gt;0 if mapping succesful. </dd></dl>
</div>
</div>
<a class="anchor" id="a061df11eda95634e5524ccd9d2d312ea"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PACKED_END void ecx_SoEerror </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structecx__contextt.html">ecx_contextt</a> *&#160;</td>
<td class="paramname"><em>context</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>Slave</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>idn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>Error</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Report SoE error.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">context</td><td>= context struct </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">Slave</td><td>= Slave number </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">idn</td><td>= IDN that generated error </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">Error</td><td>= Error code, see EtherCAT documentation for list </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="adb2dd61447da5f449a083931aa2fe467"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ecx_SoEread </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structecx__contextt.html">ecx_contextt</a> *&#160;</td>
<td class="paramname"><em>context</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>slave</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>driveNo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>elementflags</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>idn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>psize</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>timeout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>SoE read, blocking.</p>
<p>The IDN object of the selected slave and DriveNo is read. If a response is larger than the mailbox size then the response is segmented. The function will combine all segments and copy them to the parameter buffer.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">context</td><td>= context struct </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">slave</td><td>= Slave number </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">driveNo</td><td>= Drive number in slave </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">elementflags</td><td>= Flags to select what properties of IDN are to be transfered. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">idn</td><td>= IDN. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">psize</td><td>= Size in bytes of parameter buffer, returns bytes read from SoE. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">p</td><td>= Pointer to parameter buffer </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>= Timeout in us, standard is EC_TIMEOUTRXM </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Workcounter from last slave response </dd></dl>
</div>
</div>
<a class="anchor" id="a4d2d52ed026adbfc0896953edb59ac70"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ecx_SoEwrite </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structecx__contextt.html">ecx_contextt</a> *&#160;</td>
<td class="paramname"><em>context</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>slave</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>driveNo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>elementflags</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>idn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>psize</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>timeout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>SoE write, blocking.</p>
<p>The IDN object of the selected slave and DriveNo is written. If a response is larger than the mailbox size then the response is segmented.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">context</td><td>= context struct </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">slave</td><td>= Slave number </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">driveNo</td><td>= Drive number in slave </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">elementflags</td><td>= Flags to select what properties of IDN are to be transfered. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">idn</td><td>= IDN. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">psize</td><td>= Size in bytes of parameter buffer. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">p</td><td>= Pointer to parameter buffer </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>= Timeout in us, standard is EC_TIMEOUTRXM </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Workcounter from last slave response </dd></dl>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Tue Feb 26 2013 13:57:51 for SOEM by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.3.1
</small></address>
</body>
</html>