SOEM/doc/html/ethercatdc_8c.html
2015-03-11 21:45:16 +01:00

488 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"/>
<title>SOEM: ethercatdc.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<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.1</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<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>
<div class="header">
<div class="summary">
<a href="#define-members">Defines</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">ethercatdc.c File Reference</div> </div>
</div>
<div class="contents">
<p>Distributed Clock EtherCAT functions.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;oshw.h&quot;</code><br/>
<code>#include &quot;osal.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="ethercatdc_8h.html">ethercatdc.h</a>&quot;</code><br/>
</div><table class="memberdecls">
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatdc_8c.html#a1ac17d3ca25f56e8c48cca0af5fbd122">PORTM0</a>&#160;&#160;&#160;0x01</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatdc_8c.html#ae04502881d2daa6af2054c8059573f30">PORTM1</a>&#160;&#160;&#160;0x02</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatdc_8c.html#a3b4158f391a6df70087540dc769bc89c">PORTM2</a>&#160;&#160;&#160;0x04</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatdc_8c.html#a2eb3d8f8b211f9baba094785d5f66c3d">PORTM3</a>&#160;&#160;&#160;0x08</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatdc_8c.html#a7aec534e63f6fe476241f41580dc1691">SyncDelay</a>&#160;&#160;&#160;((int32)100000000)</td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatdc_8c.html#a582e93eeadab9b63cec059b1bb024a56">ecx_dcsync0</a> (<a class="el" href="structecx__contextt.html">ecx_contextt</a> *context, uint16 <a class="el" href="eepromtool_8c.html#a7f46665d1fe6d01a75a90942bb34cfaf">slave</a>, boolean act, uint32 CyclTime, uint32 CyclShift)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatdc_8c.html#a6642a9859ce23e1dd027044bf56848ea">ecx_dcsync01</a> (<a class="el" href="structecx__contextt.html">ecx_contextt</a> *context, uint16 <a class="el" href="eepromtool_8c.html#a7f46665d1fe6d01a75a90942bb34cfaf">slave</a>, boolean act, uint32 CyclTime0, uint32 CyclTime1, uint32 CyclShift)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatdc_8c.html#a2ae35493ab155181f2e3eaa058efdb13">ecx_porttime</a> (<a class="el" href="structecx__contextt.html">ecx_contextt</a> *context, uint16 <a class="el" href="eepromtool_8c.html#a7f46665d1fe6d01a75a90942bb34cfaf">slave</a>, uint8 port)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatdc_8c.html#ab7cfa25080d575449ebc7450d0c01948">ecx_prevport</a> (<a class="el" href="structecx__contextt.html">ecx_contextt</a> *context, uint16 <a class="el" href="eepromtool_8c.html#a7f46665d1fe6d01a75a90942bb34cfaf">slave</a>, uint8 port)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static uint8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatdc_8c.html#abacbbb945fbeab95271e8f0a612fc973">ecx_parentport</a> (<a class="el" href="structecx__contextt.html">ecx_contextt</a> *context, uint16 parent)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">boolean&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatdc_8c.html#aa9593f8c1b4c397c8b9ebdcd99a42838">ecx_configdc</a> (<a class="el" href="structecx__contextt.html">ecx_contextt</a> *context)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatdc_8c.html#a39fe8b9490690f066c59179e65af981c">ec_dcsync0</a> (uint16 <a class="el" href="eepromtool_8c.html#a7f46665d1fe6d01a75a90942bb34cfaf">slave</a>, boolean act, uint32 CyclTime, uint32 CyclShift)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatdc_8c.html#a42ad5c4b3c82a6a151c4ee17fe121e57">ec_dcsync01</a> (uint16 <a class="el" href="eepromtool_8c.html#a7f46665d1fe6d01a75a90942bb34cfaf">slave</a>, boolean act, uint32 CyclTime0, uint32 CyclTime1, uint32 CyclShift)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">boolean&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatdc_8c.html#a1d811e329c093385d00fcdd48522fc21">ec_configdc</a> (void)</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Distributed Clock EtherCAT functions. </p>
</div><hr/><h2>Define Documentation</h2>
<a class="anchor" id="a1ac17d3ca25f56e8c48cca0af5fbd122"></a><!-- doxytag: member="ethercatdc.c::PORTM0" ref="a1ac17d3ca25f56e8c48cca0af5fbd122" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define PORTM0&#160;&#160;&#160;0x01</td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="ae04502881d2daa6af2054c8059573f30"></a><!-- doxytag: member="ethercatdc.c::PORTM1" ref="ae04502881d2daa6af2054c8059573f30" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define PORTM1&#160;&#160;&#160;0x02</td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a3b4158f391a6df70087540dc769bc89c"></a><!-- doxytag: member="ethercatdc.c::PORTM2" ref="a3b4158f391a6df70087540dc769bc89c" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define PORTM2&#160;&#160;&#160;0x04</td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a2eb3d8f8b211f9baba094785d5f66c3d"></a><!-- doxytag: member="ethercatdc.c::PORTM3" ref="a2eb3d8f8b211f9baba094785d5f66c3d" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define PORTM3&#160;&#160;&#160;0x08</td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a7aec534e63f6fe476241f41580dc1691"></a><!-- doxytag: member="ethercatdc.c::SyncDelay" ref="a7aec534e63f6fe476241f41580dc1691" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define SyncDelay&#160;&#160;&#160;((int32)100000000)</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>1st sync pulse delay in ns here 100ms </p>
</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="a1d811e329c093385d00fcdd48522fc21"></a><!-- doxytag: member="ethercatdc.c::ec_configdc" ref="a1d811e329c093385d00fcdd48522fc21" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boolean ec_configdc </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a39fe8b9490690f066c59179e65af981c"></a><!-- doxytag: member="ethercatdc.c::ec_dcsync0" ref="a39fe8b9490690f066c59179e65af981c" args="(uint16 slave, boolean act, uint32 CyclTime, uint32 CyclShift)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ec_dcsync0 </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">boolean&#160;</td>
<td class="paramname"><em>act</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32&#160;</td>
<td class="paramname"><em>CyclTime</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32&#160;</td>
<td class="paramname"><em>CyclShift</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="a42ad5c4b3c82a6a151c4ee17fe121e57"></a><!-- doxytag: member="ethercatdc.c::ec_dcsync01" ref="a42ad5c4b3c82a6a151c4ee17fe121e57" args="(uint16 slave, boolean act, uint32 CyclTime0, uint32 CyclTime1, uint32 CyclShift)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ec_dcsync01 </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">boolean&#160;</td>
<td class="paramname"><em>act</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32&#160;</td>
<td class="paramname"><em>CyclTime0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32&#160;</td>
<td class="paramname"><em>CyclTime1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32&#160;</td>
<td class="paramname"><em>CyclShift</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="aa9593f8c1b4c397c8b9ebdcd99a42838"></a><!-- doxytag: member="ethercatdc.c::ecx_configdc" ref="aa9593f8c1b4c397c8b9ebdcd99a42838" args="(ecx_contextt *context)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boolean ecx_configdc </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><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Locate DC slaves, measure propagation delays.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">context</td><td>= context struct </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>boolean if slaves are found with DC </dd></dl>
</div>
</div>
<a class="anchor" id="a582e93eeadab9b63cec059b1bb024a56"></a><!-- doxytag: member="ethercatdc.c::ecx_dcsync0" ref="a582e93eeadab9b63cec059b1bb024a56" args="(ecx_contextt *context, uint16 slave, boolean act, uint32 CyclTime, uint32 CyclShift)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ecx_dcsync0 </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">boolean&#160;</td>
<td class="paramname"><em>act</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32&#160;</td>
<td class="paramname"><em>CyclTime</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32&#160;</td>
<td class="paramname"><em>CyclShift</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Set DC of slave to fire sync0 at CyclTime interval with CyclShift offset.</p>
<dl><dt><b>Parameters:</b></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">act</td><td>TRUE = active, FALSE = deactivated </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">CyclTime</td><td>Cycltime in ns. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">CyclShift</td><td>CyclShift in ns. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a6642a9859ce23e1dd027044bf56848ea"></a><!-- doxytag: member="ethercatdc.c::ecx_dcsync01" ref="a6642a9859ce23e1dd027044bf56848ea" args="(ecx_contextt *context, uint16 slave, boolean act, uint32 CyclTime0, uint32 CyclTime1, uint32 CyclShift)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ecx_dcsync01 </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">boolean&#160;</td>
<td class="paramname"><em>act</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32&#160;</td>
<td class="paramname"><em>CyclTime0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32&#160;</td>
<td class="paramname"><em>CyclTime1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32&#160;</td>
<td class="paramname"><em>CyclShift</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Set DC of slave to fire sync0 and sync1 at CyclTime interval with CyclShift offset.</p>
<dl><dt><b>Parameters:</b></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">act</td><td>TRUE = active, FALSE = deactivated </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">CyclTime0</td><td>Cycltime SYNC0 in ns. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">CyclTime1</td><td>Cycltime SYNC1 in ns. This time is a delta time in relation to the SYNC0 fire. If CylcTime1 = 0 then SYNC1 fires a the same time as SYNC0. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">CyclShift</td><td>CyclShift in ns. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="abacbbb945fbeab95271e8f0a612fc973"></a><!-- doxytag: member="ethercatdc.c::ecx_parentport" ref="abacbbb945fbeab95271e8f0a612fc973" args="(ecx_contextt *context, uint16 parent)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static uint8 ecx_parentport </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>parent</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a2ae35493ab155181f2e3eaa058efdb13"></a><!-- doxytag: member="ethercatdc.c::ecx_porttime" ref="a2ae35493ab155181f2e3eaa058efdb13" args="(ecx_contextt *context, uint16 slave, uint8 port)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static int32 ecx_porttime </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>port</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="ab7cfa25080d575449ebc7450d0c01948"></a><!-- doxytag: member="ethercatdc.c::ecx_prevport" ref="ab7cfa25080d575449ebc7450d0c01948" args="(ecx_contextt *context, uint16 slave, uint8 port)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static uint8 ecx_prevport </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>port</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Mar 11 2015 20:44:23 for SOEM by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>