398 lines
42 KiB
HTML
398 lines
42 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.9.1"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>ECAT_Slave_in_ПЧ2П_c402: Файл ecatslv.c</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="../../navtree.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="../../resize.js"></script>
|
|
<script type="text/javascript" src="../../navtreedata.js"></script>
|
|
<script type="text/javascript" src="../../navtree.js"></script>
|
|
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="../../search/searchdata.js"></script>
|
|
<script type="text/javascript" src="../../search/search.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 id="projectlogo"><img alt="Logo" src="../../Diakont3.jpg"/></td>
|
|
<td id="projectalign" style="padding-left: 0.5em;">
|
|
<div id="projectname">ECAT_Slave_in_ПЧ2П_c402
|
|
 <span id="projectnumber">0.8</span>
|
|
</div>
|
|
<div id="projectbrief">Реализация EtherCAT Slave для CM TMS320F28388D</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Создано системой Doxygen 1.9.1 -->
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
var searchBox = new SearchBox("searchBox", "../../search",false,'Поиск','.html');
|
|
/* @license-end */
|
|
</script>
|
|
<script type="text/javascript" src="../../menudata.js"></script>
|
|
<script type="text/javascript" src="../../menu.js"></script>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
$(function() {
|
|
initMenu('../../',true,false,'search.php','Поиск');
|
|
$(document).ready(function() { init_search(); });
|
|
});
|
|
/* @license-end */</script>
|
|
<div id="main-nav"></div>
|
|
</div><!-- top -->
|
|
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
|
<div id="nav-tree">
|
|
<div id="nav-tree-contents">
|
|
<div id="nav-sync" class="sync"></div>
|
|
</div>
|
|
</div>
|
|
<div id="splitbar" style="-moz-user-select:none;"
|
|
class="ui-resizable-handle">
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
$(document).ready(function(){initNavTree('d9/d61/ecatslv_8c.html','../../'); initResizable(); });
|
|
/* @license-end */
|
|
</script>
|
|
<div id="doc-content">
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
</div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<iframe src="javascript:void(0)" frameborder="0"
|
|
name="MSearchResults" id="MSearchResults">
|
|
</iframe>
|
|
</div>
|
|
|
|
<div class="header">
|
|
<div class="summary">
|
|
<a href="#define-members">Макросы</a> |
|
|
<a href="#func-members">Функции</a> |
|
|
<a href="#var-members">Переменные</a> </div>
|
|
<div class="headertitle">
|
|
<div class="title">Файл ecatslv.c<div class="ingroups"><a class="el" href="../../d7/d45/group___e_s_m.html">EtherCAT State Machine</a></div></div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
|
|
<p>Implementation This file contains the EtherCAT State Machine.
|
|
<a href="#details">Подробнее...</a></p>
|
|
<div class="textblock"><code>#include "<a class="el" href="../../d9/d8b/ecatslv_8h_source.html">ecatslv.h</a>"</code><br />
|
|
<code>#include "<a class="el" href="../../d7/d41/ecatappl_8h_source.html">ecatappl.h</a>"</code><br />
|
|
<code>#include "<a class="el" href="../../d1/d84/mailbox_8h_source.html">mailbox.h</a>"</code><br />
|
|
<code>#include "<a class="el" href="../../d6/da5/ecatcoe_8h_source.html">ecatcoe.h</a>"</code><br />
|
|
<code>#include "<a class="el" href="../../d0/de3/objdef_8h_source.html">objdef.h</a>"</code><br />
|
|
<code>#include "<a class="el" href="../../d3/d35/cia402appl_8h_source.html">cia402appl.h</a>"</code><br />
|
|
</div><div class="textblock"><div class="dynheader">
|
|
Граф включаемых заголовочных файлов для ecatslv.c:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="../../d3/da1/ecatslv_8c__incl.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
|
|
</div>
|
|
</div>
|
|
<p><a href="../../d9/d61/ecatslv_8c_source.html">См. исходные тексты.</a></p>
|
|
<table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
|
|
Макросы</h2></td></tr>
|
|
<tr class="memitem:ga351421341f250852dc5e6371f59f421f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#ga351421341f250852dc5e6371f59f421f">_ECATSLV_</a>   1</td></tr>
|
|
<tr class="separator:ga351421341f250852dc5e6371f59f421f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
|
Функции</h2></td></tr>
|
|
<tr class="memitem:ga5ff723c2f6832460c934905fb793854c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#ga5ff723c2f6832460c934905fb793854c">ResetALEventMask</a> (<a class="el" href="../../de/d55/ecat__def_8h.html#ab1922c2d8643eb7da964d427604e992e">UINT16</a> intMask)</td></tr>
|
|
<tr class="memdesc:ga5ff723c2f6832460c934905fb793854c"><td class="mdescLeft"> </td><td class="mdescRight">This function makes an logical and with the AL Event Mask register (0x204) <a href="../../d7/d45/group___e_s_m.html#ga5ff723c2f6832460c934905fb793854c">Подробнее...</a><br /></td></tr>
|
|
<tr class="separator:ga5ff723c2f6832460c934905fb793854c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:gaeb9bea8625d1f3f8b27ead7067010a13"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#gaeb9bea8625d1f3f8b27ead7067010a13">SetALEventMask</a> (<a class="el" href="../../de/d55/ecat__def_8h.html#ab1922c2d8643eb7da964d427604e992e">UINT16</a> intMask)</td></tr>
|
|
<tr class="memdesc:gaeb9bea8625d1f3f8b27ead7067010a13"><td class="mdescLeft"> </td><td class="mdescRight">This function makes an logical or with the AL Event Mask register (0x204) <a href="../../d7/d45/group___e_s_m.html#gaeb9bea8625d1f3f8b27ead7067010a13">Подробнее...</a><br /></td></tr>
|
|
<tr class="separator:gaeb9bea8625d1f3f8b27ead7067010a13"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ga6ca0f4eed56b537df7945db757b70abf"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#ga6ca0f4eed56b537df7945db757b70abf">UpdateEEPROMLoadedState</a> (void)</td></tr>
|
|
<tr class="memdesc:ga6ca0f4eed56b537df7945db757b70abf"><td class="mdescLeft"> </td><td class="mdescRight">This function reads the EEPROM loaded state. <a href="../../d7/d45/group___e_s_m.html#ga6ca0f4eed56b537df7945db757b70abf">Подробнее...</a><br /></td></tr>
|
|
<tr class="separator:ga6ca0f4eed56b537df7945db757b70abf"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ga814ac14c4e4c2a930673b24915731880"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../db/d59/group___e_s_c_register.html#gaa24953d367f3b85a3b42b546a0165393">TSYNCMAN</a> <a class="el" href="../../de/d55/ecat__def_8h.html#ae8fc0f18bd80d2c888fe351b5795ecb4">ESCMEM</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#ga814ac14c4e4c2a930673b24915731880">GetSyncMan</a> (<a class="el" href="../../de/d55/ecat__def_8h.html#ad8ce12d83f204245685f98caf9d03944">UINT8</a> channel)</td></tr>
|
|
<tr class="memdesc:ga814ac14c4e4c2a930673b24915731880"><td class="mdescLeft"> </td><td class="mdescRight">This function is called to read the SYNC Manager channel descriptions of the process data SYNC Managers. <a href="../../d7/d45/group___e_s_m.html#ga814ac14c4e4c2a930673b24915731880">Подробнее...</a><br /></td></tr>
|
|
<tr class="separator:ga814ac14c4e4c2a930673b24915731880"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ga8ace124ef03d8fd1500c1176c1b80637"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#ga8ace124ef03d8fd1500c1176c1b80637">DisableSyncManChannel</a> (<a class="el" href="../../de/d55/ecat__def_8h.html#ad8ce12d83f204245685f98caf9d03944">UINT8</a> channel)</td></tr>
|
|
<tr class="memdesc:ga8ace124ef03d8fd1500c1176c1b80637"><td class="mdescLeft"> </td><td class="mdescRight">This function disables a Sync Manager channel. <a href="../../d7/d45/group___e_s_m.html#ga8ace124ef03d8fd1500c1176c1b80637">Подробнее...</a><br /></td></tr>
|
|
<tr class="separator:ga8ace124ef03d8fd1500c1176c1b80637"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ga283de727ed7dab2cbd5d97a8e182148e"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#ga283de727ed7dab2cbd5d97a8e182148e">EnableSyncManChannel</a> (<a class="el" href="../../de/d55/ecat__def_8h.html#ad8ce12d83f204245685f98caf9d03944">UINT8</a> channel)</td></tr>
|
|
<tr class="memdesc:ga283de727ed7dab2cbd5d97a8e182148e"><td class="mdescLeft"> </td><td class="mdescRight">This function enables a Sync Manager channel. <a href="../../d7/d45/group___e_s_m.html#ga283de727ed7dab2cbd5d97a8e182148e">Подробнее...</a><br /></td></tr>
|
|
<tr class="separator:ga283de727ed7dab2cbd5d97a8e182148e"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:gaede78d5192a5d792a6c8fc88b672ac68"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../de/d55/ecat__def_8h.html#ad8ce12d83f204245685f98caf9d03944">UINT8</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#gaede78d5192a5d792a6c8fc88b672ac68">CheckSmSettings</a> (<a class="el" href="../../de/d55/ecat__def_8h.html#ad8ce12d83f204245685f98caf9d03944">UINT8</a> maxChannel)</td></tr>
|
|
<tr class="memdesc:gaede78d5192a5d792a6c8fc88b672ac68"><td class="mdescLeft"> </td><td class="mdescRight">This function checks all SM channels. <a href="../../d7/d45/group___e_s_m.html#gaede78d5192a5d792a6c8fc88b672ac68">Подробнее...</a><br /></td></tr>
|
|
<tr class="separator:gaede78d5192a5d792a6c8fc88b672ac68"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ga4e38d64325a35d7925171e6fe3a360f4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../de/d55/ecat__def_8h.html#ab1922c2d8643eb7da964d427604e992e">UINT16</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#ga4e38d64325a35d7925171e6fe3a360f4">StartInputHandler</a> (void)</td></tr>
|
|
<tr class="memdesc:ga4e38d64325a35d7925171e6fe3a360f4"><td class="mdescLeft"> </td><td class="mdescRight">This function is called in case of the state transition from PREOP to SAFEOP. |brief the areas of the Sync Managers will be checked for overlapping,. <a href="../../d7/d45/group___e_s_m.html#ga4e38d64325a35d7925171e6fe3a360f4">Подробнее...</a><br /></td></tr>
|
|
<tr class="separator:ga4e38d64325a35d7925171e6fe3a360f4"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:gaaa201c74cb92a7c15b47640c5ff9ae7b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../de/d55/ecat__def_8h.html#ab1922c2d8643eb7da964d427604e992e">UINT16</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#gaaa201c74cb92a7c15b47640c5ff9ae7b">StartOutputHandler</a> (void)</td></tr>
|
|
<tr class="memdesc:gaaa201c74cb92a7c15b47640c5ff9ae7b"><td class="mdescLeft"> </td><td class="mdescRight">This function is called in case of the state transition from SAFEOP to OP. <a href="../../d7/d45/group___e_s_m.html#gaaa201c74cb92a7c15b47640c5ff9ae7b">Подробнее...</a><br /></td></tr>
|
|
<tr class="separator:gaaa201c74cb92a7c15b47640c5ff9ae7b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ga15cd0b60de1272af7a0f42f6282c008b"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#ga15cd0b60de1272af7a0f42f6282c008b">StopOutputHandler</a> (void)</td></tr>
|
|
<tr class="memdesc:ga15cd0b60de1272af7a0f42f6282c008b"><td class="mdescLeft"> </td><td class="mdescRight">This function is called in case of the state transition from OP to SAFEOP. <a href="../../d7/d45/group___e_s_m.html#ga15cd0b60de1272af7a0f42f6282c008b">Подробнее...</a><br /></td></tr>
|
|
<tr class="separator:ga15cd0b60de1272af7a0f42f6282c008b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ga78f1b8a3d91ec993bfcd5d13e93b63ed"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#ga78f1b8a3d91ec993bfcd5d13e93b63ed">StopInputHandler</a> (void)</td></tr>
|
|
<tr class="memdesc:ga78f1b8a3d91ec993bfcd5d13e93b63ed"><td class="mdescLeft"> </td><td class="mdescRight">This function is called in case of the state transition from SAFEOP to PREOP. <a href="../../d7/d45/group___e_s_m.html#ga78f1b8a3d91ec993bfcd5d13e93b63ed">Подробнее...</a><br /></td></tr>
|
|
<tr class="separator:ga78f1b8a3d91ec993bfcd5d13e93b63ed"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:gade5fc53052cdf4c9e5074167f55a60a3"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#gade5fc53052cdf4c9e5074167f55a60a3">BackToInitTransition</a> (void)</td></tr>
|
|
<tr class="memdesc:gade5fc53052cdf4c9e5074167f55a60a3"><td class="mdescLeft"> </td><td class="mdescRight">This function is called when a X to Init transition is completed. <a href="../../d7/d45/group___e_s_m.html#gade5fc53052cdf4c9e5074167f55a60a3">Подробнее...</a><br /></td></tr>
|
|
<tr class="separator:gade5fc53052cdf4c9e5074167f55a60a3"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:gad679fd59022ecf652f8fd101dfbf6b27"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#gad679fd59022ecf652f8fd101dfbf6b27">SetALStatus</a> (<a class="el" href="../../de/d55/ecat__def_8h.html#ad8ce12d83f204245685f98caf9d03944">UINT8</a> alStatus, <a class="el" href="../../de/d55/ecat__def_8h.html#ab1922c2d8643eb7da964d427604e992e">UINT16</a> alStatusCode)</td></tr>
|
|
<tr class="memdesc:gad679fd59022ecf652f8fd101dfbf6b27"><td class="mdescLeft"> </td><td class="mdescRight">The function changes the state of the EtherCAT ASIC to the requested. <a href="../../d7/d45/group___e_s_m.html#gad679fd59022ecf652f8fd101dfbf6b27">Подробнее...</a><br /></td></tr>
|
|
<tr class="separator:gad679fd59022ecf652f8fd101dfbf6b27"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ga5a78efdc12307e99f518f80ecb9bc870"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#ga5a78efdc12307e99f518f80ecb9bc870">AL_ControlInd</a> (<a class="el" href="../../de/d55/ecat__def_8h.html#ad8ce12d83f204245685f98caf9d03944">UINT8</a> alControl, <a class="el" href="../../de/d55/ecat__def_8h.html#ab1922c2d8643eb7da964d427604e992e">UINT16</a> alStatusCode)</td></tr>
|
|
<tr class="memdesc:ga5a78efdc12307e99f518f80ecb9bc870"><td class="mdescLeft"> </td><td class="mdescRight">This function handles the EtherCAT State Machine. It is called in case of an AL Control event (Bit 0 of AL-Event (Reg 0x220), when the Master has written the AL Control Register (from ECAT_Main), alControl contains the content of the AL Control (Reg 0x120) in case of a SM-Change event (Bit 4 of AL-Event (Reg 0x220)), when an Activate SYNCM y register is written by the master (from ECAT_Main), alControl contains the actual state (Bit 0-3 of AL Status (Reg 0x130)) in case of a locally expired watchdog (from ECAT_Main), alControl contains the requested new state (SAFE_OP) in case of an application specific event to change the EtherCAT state (from application), alControl contains the requested new state (INIT, PRE_OP or SAFE_OP) <a href="../../d7/d45/group___e_s_m.html#ga5a78efdc12307e99f518f80ecb9bc870">Подробнее...</a><br /></td></tr>
|
|
<tr class="separator:ga5a78efdc12307e99f518f80ecb9bc870"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ga56dd01ef4d44ebaa606707358a44fed0"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#ga56dd01ef4d44ebaa606707358a44fed0">AL_ControlRes</a> (void)</td></tr>
|
|
<tr class="memdesc:ga56dd01ef4d44ebaa606707358a44fed0"><td class="mdescLeft"> </td><td class="mdescRight">This function is called cyclic if a state transition is pending (bEcatWaitForAlControlRes == TRUE) <a href="../../d7/d45/group___e_s_m.html#ga56dd01ef4d44ebaa606707358a44fed0">Подробнее...</a><br /></td></tr>
|
|
<tr class="separator:ga56dd01ef4d44ebaa606707358a44fed0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:gadc8cd7ef8660dcc4be553b3164566add"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#gadc8cd7ef8660dcc4be553b3164566add">DC_CheckWatchdog</a> (void)</td></tr>
|
|
<tr class="memdesc:gadc8cd7ef8660dcc4be553b3164566add"><td class="mdescLeft"> </td><td class="mdescRight">This function checks the current Sync state and set the local flags The analyse of the local flags is handled in "CheckIfEcatError". <a href="../../d7/d45/group___e_s_m.html#gadc8cd7ef8660dcc4be553b3164566add">Подробнее...</a><br /></td></tr>
|
|
<tr class="separator:gadc8cd7ef8660dcc4be553b3164566add"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:gaf68f1e7ef2d03406b9fc96486fd95f9c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#gaf68f1e7ef2d03406b9fc96486fd95f9c">CheckIfEcatError</a> (void)</td></tr>
|
|
<tr class="memdesc:gaf68f1e7ef2d03406b9fc96486fd95f9c"><td class="mdescLeft"> </td><td class="mdescRight">Checks communication and synchronisation variables and update AL status / AL status code if an error has occurred. <a href="../../d7/d45/group___e_s_m.html#gaf68f1e7ef2d03406b9fc96486fd95f9c">Подробнее...</a><br /></td></tr>
|
|
<tr class="separator:gaf68f1e7ef2d03406b9fc96486fd95f9c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:gac55e38cdbb489cea7e6bf78befda716d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#gac55e38cdbb489cea7e6bf78befda716d">ECAT_StateChange</a> (<a class="el" href="../../de/d55/ecat__def_8h.html#ad8ce12d83f204245685f98caf9d03944">UINT8</a> alStatus, <a class="el" href="../../de/d55/ecat__def_8h.html#ab1922c2d8643eb7da964d427604e992e">UINT16</a> alStatusCode)</td></tr>
|
|
<tr class="memdesc:gac55e38cdbb489cea7e6bf78befda716d"><td class="mdescLeft"> </td><td class="mdescRight">This function changes the state of the EtherCAT slave if the requested state is lower than the actual state, otherwise the error condition will be reset. <a href="../../d7/d45/group___e_s_m.html#gac55e38cdbb489cea7e6bf78befda716d">Подробнее...</a><br /></td></tr>
|
|
<tr class="separator:gac55e38cdbb489cea7e6bf78befda716d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ga0f8c9a93c3adc935765074b5c28386e7"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#ga0f8c9a93c3adc935765074b5c28386e7">ECAT_Init</a> (void)</td></tr>
|
|
<tr class="memdesc:ga0f8c9a93c3adc935765074b5c28386e7"><td class="mdescLeft"> </td><td class="mdescRight">This function initialize the EtherCAT Slave Interface. <a href="../../d7/d45/group___e_s_m.html#ga0f8c9a93c3adc935765074b5c28386e7">Подробнее...</a><br /></td></tr>
|
|
<tr class="separator:ga0f8c9a93c3adc935765074b5c28386e7"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ga663d6c9ecf65b65420299478d610ca2c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#ga663d6c9ecf65b65420299478d610ca2c">ECAT_Main</a> (void)</td></tr>
|
|
<tr class="memdesc:ga663d6c9ecf65b65420299478d610ca2c"><td class="mdescLeft"> </td><td class="mdescRight">This function has to be called cyclically. <a href="../../d7/d45/group___e_s_m.html#ga663d6c9ecf65b65420299478d610ca2c">Подробнее...</a><br /></td></tr>
|
|
<tr class="separator:ga663d6c9ecf65b65420299478d610ca2c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
|
|
Переменные</h2></td></tr>
|
|
<tr class="memitem:ga6c3cc1113aafd9d9e8bcc4a3fa84a3e7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../de/d55/ecat__def_8h.html#ab1922c2d8643eb7da964d427604e992e">UINT16</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#ga6c3cc1113aafd9d9e8bcc4a3fa84a3e7">u16ALEventMask</a></td></tr>
|
|
<tr class="separator:ga6c3cc1113aafd9d9e8bcc4a3fa84a3e7"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:gaac0535944eb5099bf3d8850dabfe271a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../de/d55/ecat__def_8h.html#a72fdcd7d0b4e0ac18d761b192a439a2a">VARVOLATILE</a> <a class="el" href="../../de/d55/ecat__def_8h.html#ad8ce12d83f204245685f98caf9d03944">UINT8</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#gaac0535944eb5099bf3d8850dabfe271a">u8dummy</a></td></tr>
|
|
<tr class="separator:gaac0535944eb5099bf3d8850dabfe271a"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ga400762ad56441049c728023ab52581e8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../de/d55/ecat__def_8h.html#a72fdcd7d0b4e0ac18d761b192a439a2a">VARVOLATILE</a> <a class="el" href="../../de/d55/ecat__def_8h.html#ad8ce12d83f204245685f98caf9d03944">UINT8</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#ga400762ad56441049c728023ab52581e8">SMActivate</a> = 0</td></tr>
|
|
<tr class="separator:ga400762ad56441049c728023ab52581e8"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:gaec5ad6b0771c2013ce3b73b495faa099"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../db/d59/group___e_s_c_register.html#gaa24953d367f3b85a3b42b546a0165393">TSYNCMAN</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#gaec5ad6b0771c2013ce3b73b495faa099">SyncManInfo</a></td></tr>
|
|
<tr class="separator:gaec5ad6b0771c2013ce3b73b495faa099"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:gabdf38838bb15abdf1cec956cab18c4b3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../de/d55/ecat__def_8h.html#ae4cc35dcc70810fa972cc8a5185a28fa">BOOL</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d45/group___e_s_m.html#gabdf38838bb15abdf1cec956cab18c4b3">EepromLoaded</a> = <a class="el" href="../../de/d55/ecat__def_8h.html#aa93f0eb578d23995850d61f7d61c55c1">FALSE</a></td></tr>
|
|
<tr class="separator:gabdf38838bb15abdf1cec956cab18c4b3"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table>
|
|
<a name="details" id="details"></a><h2 class="groupheader">Подробное описание</h2>
|
|
<div class="textblock"><p>Implementation This file contains the EtherCAT State Machine. </p>
|
|
<dl class="section author"><dt>Автор</dt><dd><a href="#" onclick="location.href='mai'+'lto:'+'Eth'+'er'+'cat'+'SS'+'C@b'+'ec'+'kho'+'ff'+'.co'+'m'; return false;">Ether<span style="display: none;">.nosp@m.</span>catS<span style="display: none;">.nosp@m.</span>SC@be<span style="display: none;">.nosp@m.</span>ckho<span style="display: none;">.nosp@m.</span>ff.co<span style="display: none;">.nosp@m.</span>m</a></dd></dl>
|
|
<dl class="section version"><dt>Версия</dt><dd>5.13</dd></dl>
|
|
<p><br />
|
|
Changes to version V5.12:<br />
|
|
V5.13 BOOT1: support Init-to-Init transition in bootloader application<br />
|
|
V5.13 CIA402 3: change define "CIA402_DEVICE" to "CiA402_SAMPLE_APPLICATION"<br />
|
|
V5.13 CIA402 4: decouple CIA402 state machine and application from ESM (according ETG.6010, clause 4)<br />
|
|
V5.13 ECAT1: handle Sync mapped to AL Event<br />
|
|
V5.13 ECAT2: explicit device ID handling, the ID value shall only be latched on the rising edge of 0x120.5<br />
|
|
V5.13 ECAT3: reset local Error flag in case of two consecutive pending state response and the the first failes<br />
|
|
V5.13 ESM1: local error handling update, ECAT_StateChange triggers only transitions from Op->Any or reject/accept a pending transition<br />
|
|
V5.13 ESM2: support ErrorSafeOP to OP transition<br />
|
|
V5.13 ESM3: Safe-to-OP transition in DC mode, ack OP state if no error was detected<br />
|
|
V5.13 ESM4: implement disable sync error reaction 0x10F1.2 is set to 0<br />
|
|
V5.13 MBX1: change mbx_read flag handling to SM1 buffer state handling (required in case of a mbx read frame with an invalid CRC, the read flag would be set but the SM bufer is still locked)<br />
|
|
<br />
|
|
Changes to version V5.11:<br />
|
|
V5.12 BOOT1: add a bootloader sample application (only the ESM and FoE is supported)<br />
|
|
V5.12 ECAT1: update SM Parameter measurement (based on the system time), enhancement for input only devices and no mailbox support, use only 16Bit pointer in process data length caluclation<br />
|
|
V5.12 ECAT4: update Sync1 watchdog calculation (in case of subordinated cycles take one addiitonal Sync0 cycle into account )<br />
|
|
V5.12 ECAT5: update Sync error counter/flag handling,check enum memory alignment depending on the processor,in case of a polled timer disable ESC interrupts during DC_CheckWatchdog<br />
|
|
V5.12 ECAT7: set error single flash also in case of an application error<br />
|
|
V5.12 ESM1: overwrite the current error in case of a local error with a lower target state,Do not overwrite the current AL Status in case of an local error<br />
|
|
V5.12 ESM2: enable the PD SM in case of a clear error transition<br />
|
|
V5.12 ESM3: set internal ESM timeout to -10% of the configured value (to return an errorcode before the master will run into an timeout)<br />
|
|
V5.12 ESM4: enable the AL Event mask in case of pending ESM transition<br />
|
|
V5.12 TEST2: add pending ESM test,trigger complete ESM transition from ecat main<br />
|
|
<br />
|
|
Changes to version V5.10:<br />
|
|
V5.11 COE3: change 0x10F3.2 (Sync Error limit) from UINT32 to UINT16 (according to the ETG.1020)<br />
|
|
V5.11 DIAG4: change parameter handling in DIAG_CreateNewMessage()<br />
|
|
V5.11 ECAT10: change PROTO handling to prevent compiler errors<br />
|
|
V5.11 ECAT4: enhance SM/Sync monitoring for input/output only slaves<br />
|
|
V5.11 ECAT5: "Add missing ""bEscIntEnabled"" initialization if ""AL_EVENT_ENBALED"" is 0"""<br />
|
|
V5.11 ECAT7: add missing big endian swapping<br />
|
|
V5.11 ESC1: update max address calculation<br />
|
|
V5.11 ESM1: update calculation of subordinated cycles<br />
|
|
V5.11 ESM2: DC_SUPPORTED, Sync0 is not supported and Sync0 is generated according register values the state transition to SafeOP shall be rejected<br />
|
|
V5.11 ESM3: update checking of the user configured sync type<br />
|
|
V5.11 ESM4: prevent to go from ErrSafeOP to OP without re enabling Sync0/1<br />
|
|
V5.11 ESM5: DPRAM range was double checked<br />
|
|
V5.11 ESM6: in the SO transition wait by default until the master has send process data<br />
|
|
V5.11 HW1: "move hardware independent functions ""HW_DisableSyncManChannel()"", ""HW_EnableSyncManChannel()"", ""HW_GetSyncMan()"", ""HW_ResetALEventMask()"", ""HW_SetALEventMask()"" to ecatalv.c"<br />
|
|
V5.11 HW2: check during ESM handling if the SM address and length is aligned according the ESC access<br />
|
|
V5.11 TEST9: "add behaviour 0x2020.7 (SDO requests on 0x3006.0 are set to pending until an FoE read request on ""UnlockSdoResp"" is received or in case that no mbx queue is supported when a new mbx request was received)"<br />
|
|
<br />
|
|
Changes to version V5.01:<br />
|
|
V5.10 COE1: Define one entry description for all 0x1C3x objects and change data type of SI11,12,13 to UINT16 (according ETG.1020)<br />
|
|
V5.10 DIAG1: Define diagmessage textIDs<br />
|
|
V5.10 ECAT13: Update Synchronisation handling (FreeRun,SM Sync, Sync0, Sync1)<br />
|
|
Compare DC UINT configuration (by ESC Config data) vs. DC activation register settings<br />
|
|
Update 0x1C3x entries<br />
|
|
V5.10 ESC2: Check if defined SM settings do not exceed the available DPRAM range (in error case AL Status 0x14 is returned)<br />
|
|
V5.10 ESC3: Handle DC cControl register values in case of 32Bit ESC access (a Sync activation mask need to defined/used)<br />
|
|
V5.10 ESC4: Mask lower 4 Bit of AL status to get Run led value<br />
|
|
Invalid RunLed code was calculated if ESC set ECAT Run Led<br />
|
|
V5.10 ESC5: Add missing swapping<br />
|
|
V5.10 ESM2: Update "bApplEsmPending" flag during a transition to a lower state<br />
|
|
V5.10 ESM3: Add "volatile" directive for ESM dummy variables<br />
|
|
V5.10 HW5: Block ESC interrupts during Timer ISR<br />
|
|
V5.10 TEST9: Add option to prevent SM3 unlock during PS<br />
|
|
<br />
|
|
Changes to version V5.0:<br />
|
|
V5.01 APPL3: Include library demo application<br />
|
|
V5.01 ESC2: Add missed value swapping<br />
|
|
V5.01 ESM1: Don't overwrite the error reason in case of an failed PS transition<br />
|
|
V5.01 ESM2: Don't check the "appl trigger" flag in case on an regular transition to a lower state (OS, SP, PI).<br />
|
|
V5.01 ESM3: Call Error acknowledge indication only if error was acknowledged by the master<br />
|
|
V5.01 HW3: Update blink code of an SM watchdog error<br />
|
|
<br />
|
|
Changes to version V4.42:<br />
|
|
V5.0 ECAT1: Support Explicit Device ID.<br />
|
|
V5.0 ECAT2: Application specific functions are moved to application files.<br />
|
|
V5.0 ECAT3: Global dummy variables used for dummy ESC operations.<br />
|
|
V5.0 ESC1: ESC 32Bit Access added.<br />
|
|
V5.0 ESC2: Support ESC EtherCAT LED Indication.<br />
|
|
V5.0 ESC3: Support EEPROM Emulation.<br />
|
|
V5.0 ESM1: Update "LocalErrorFlag" handling.<br />
|
|
V5.0 ESM2: Update Error Acknowledge by ALControl INIT (without error acknowledge)<br />
|
|
V5.0 ESM3: Handle pending ESM transition<br />
|
|
V5.0 ESM4: <a class="el" href="../../d7/d45/group___e_s_m.html#gac55e38cdbb489cea7e6bf78befda716d" title="This function changes the state of the EtherCAT slave if the requested state is lower than the actual...">ECAT_StateChange()</a> will only be called form application. In case of an communication error AL_ControlInd is called.<br />
|
|
V5.0 MBX1: Support configuration without mailbox protocol support.<br />
|
|
V5.0 TEST1: Add test application. See Application Note ET9300 for more details.<br />
|
|
<br />
|
|
Changes to version V4.40:<br />
|
|
V4.42 ESM1: Reset local error flag if master set the acknowledge bit (0x120.4)<br />
|
|
<br />
|
|
Changes to version V4.30:<br />
|
|
V4.40 ESM5: Enable output SyncManager if local error acknowledged<br />
|
|
V4.40 HW0: Use common hardware access functions<br />
|
|
V4.40 PDO3: Add support if only input process data is used<br />
|
|
V4.40 ECAT4: Add read SM activation register to acknowledge SM Change event<br />
|
|
V4.40 PDO2: Check if max process data size was exceed<br />
|
|
V4.40 DIAG1: add diagnosis message support<br />
|
|
V4.40 ESM4: Change Check WD setup; add define OP_PD_REQUIRED (defines if process data required in state change to OP)<br />
|
|
V4.40 WD1: change WD behaviour depending if process data required in OP state<br />
|
|
V4.40 MBX4: Change processing order of mailbox SyncManager flags<br />
|
|
V4.40 ECAT1: Merge content of HW_Main (spihw.c /mcihw.c) to ECAT_Main<br />
|
|
V4.40 ECAT2: Added CheckIfLocalError() to check local flags and set ALStatus /Al Status code if required. This function is called cyclic from MainLoop.<br />
|
|
V4.40 ESM2: Add <a class="el" href="../../d7/d45/group___e_s_m.html#ga56dd01ef4d44ebaa606707358a44fed0" title="This function is called cyclic if a state transition is pending (bEcatWaitForAlControlRes == TRUE)">AL_ControlRes()</a> to complete pending state requests. Change SafeOP to OP state response<br />
|
|
V4.40 ESM1: Prevent double call of <a class="el" href="../../d7/d45/group___e_s_m.html#ga15cd0b60de1272af7a0f42f6282c008b" title="This function is called in case of the state transition from OP to SAFEOP.">StopOutputHandler()</a><br />
|
|
V4.40 BOOT1: Enable Mailbox SyncManger on state change to BOOT state (to enable FoE)<br />
|
|
V4.40 ESM3: Change State machine behaviour according to ETG.1000 V1.0.2 (state change #26)<br />
|
|
V4.40 LED1: Set error blink code<br />
|
|
V4.40 TIMER1: Added <a class="el" href="../../d7/d45/group___e_s_m.html#gadc8cd7ef8660dcc4be553b3164566add" title="This function checks the current Sync state and set the local flags The analyse of the local flags is...">DC_CheckWatchdog()</a> triggered from <a class="el" href="../../de/d99/group___ecat_appl.html#ga24b064534e2d86f39c6559d2f0e0c25f" title="This function shall be called every 1ms.">ECAT_CheckTimer()</a>. Change local Sync0 watchdog variables. Change bus cycle calculation<br />
|
|
V4.40 WD1: Change check process data watchdog settings<br />
|
|
<br />
|
|
Changes to version V4.20:<br />
|
|
V4.30 OBJ 3: initialize the object dictionary in state change INIT->PREOP; clear object dictionary in state change PREOP->INIT<br />
|
|
V4.30 SYNC: add 0x1C32:10; 0x1C33:10 (Sync0 cycle), change synchronisation control functionality<br />
|
|
V4.30 CiA402: add <a class="el" href="../../d9/d9a/group___ci_a402appl.html#gade3fab90947701b0a9f03f40d6f41bed" title="This function initializes the Axes structures.">CiA402_Init()</a> call in state change from PREOP to SAFEOP if DC synchronisation is enabled,<br />
|
|
else the Init function is called when bus cycle time is calculated [<a class="el" href="../../de/d99/group___ecat_appl.html#ga47d6cc3670e4d7a806dffd6e2bf2ee4d">CalcSMCycleTime()</a> ].<br />
|
|
trigger error handling if the EtherCAT state machine gets a transition from OP to an "lower" state<br />
|
|
V4.20 ECAT 1: add LEGACY_MODE behaviour in ECAT_CheckWatchdog()<br />
|
|
V4.20 DC 1: Add DC pending state machine handling and Dc watchdog functionality<br />
|
|
V4.20 ESM 2: Add State transition from BOOT to INIT<br />
|
|
V4.20 ESM 1: Non LEGACY_MODE State change handling<br />
|
|
V4.11 Renamed the function parameter "code" of Function "SendSmFailedEmergency() to avoid<br>
|
|
problems with some compilers"<br />
|
|
V4.11 ECAT 1: Fixed a possible problem with state change Init -> SafeOP. The output syncmanager<br />
|
|
was enabled by the state change-flag and not by the actual state<br />
|
|
V4.11 LED 1: Clear the error LED during error acknowledgement<br />
|
|
V4.11 ESC 1: fixed size of MBXHEADER in the TFOEMBX struct <br />
|
|
<br />
|
|
Changes to version V4.08:<br />
|
|
V4.10 ECAT 1: clear bEcatOutputsReceived in startMailboxhandler()<br />
|
|
V4.10 ECAT 2: clear bEcatOutputsReceived in stopMailboxhandler()<br />
|
|
V4.10 ECAT 3: when switching from INIT to BOOT the SM settings shall be checked<br />
|
|
V4.10 ECAT 4: APPL_StartInputHandler shall always be called and bEcatInputUpdateRunning shall always be set<br />
|
|
in StartInputHandler independent of the input size<br />
|
|
V4.10 ECAT 5: AL_ControlInd: the error acknowledge behaviour was changed<br />
|
|
according to the protocol enhancements and the conformance test<br />
|
|
V4.10 ECAT 6: AL_ControlInd: if a state transitions failed the corresponding stop function is<br />
|
|
called to get a consistent set of variables<br />
|
|
V4.10 ECAT 7: the local application requested to leave the state OP so we have to disable the SM2<br />
|
|
and make the state change from OP to SAFEOP by calling StopOutputHandler<br />
|
|
V4.10 ECAT 8: the AL Status Code has to be reset if the error was acknowledged by the master<br />
|
|
V4.10 ECAT 9: ECAT_StateChange: when waiting for a State Change response from the application the<br />
|
|
AL Status shall only be written if the final state was reached<br />
|
|
<br />
|
|
Changes to version V4.07:<br />
|
|
V4.08 ECAT 1: The watchdog value was not rounded up<br />
|
|
V4.08 ECAT 2: The value of u16WdValue was not set 0 if the register 0x420 is 0<br />
|
|
V4.08 ECAT 3: The AlStatusCode is changed as parameter of the function AL_ControlInd<br />
|
|
V4.08 ECAT 4: In a state transition OP2PREOP, SAFEOP2INIT or OP2INIT is requested,<br />
|
|
this was not working correctly if one of the application functions<br />
|
|
APPL_StopInputHandler or APPL_StopOutputHandler were returning NOERROR_INWORK<br />
|
|
(because only the first state transition was made in that case)<br />
|
|
V4.08 AOE 1: AoE was added<br />
|
|
<br />
|
|
Changes to version V4.06:<br />
|
|
V4.07 ECAT 1: The sources for SPI and MCI were merged (in <a class="el" href="../../de/d55/ecat__def_8h.html">ecat_def.h</a><br />
|
|
set the switch MCI_HW to 1 when using the MCI,<br />
|
|
set the switch SPI_HW to 1 when using the SPI<br />
|
|
<br />
|
|
Changes to version V4.00:<br />
|
|
V4.01 ECAT 1: The Output sync Manager was not disabled when the state OP was left<br />
|
|
by a local request (watchdog or io error)<br />
|
|
V4.01 ECAT 2: APPL_StopOutputHandler returns an UINT16<br />
|
|
V4.01 ECAT 3: TwinCAT compatibility mode: The state transition to OP is allowed when the<br />
|
|
WD-Trigger-Bit of the SM2-Control-Byte (0x814.6) is FALSE, in that case the<br />
|
|
watchdog will not be started before the outputs were received the first time<br />
|
|
V4.01 ECAT 4: "else" was too much<br />
|
|
<br />
|
|
Changes to version V3.20:<br />
|
|
V4.00 ECAT 1: The handling of the Sync Manager Parameter was included according to<br />
|
|
the EtherCAT Guidelines and Protocol Enhancements Specification<br />
|
|
V4.00 ECAT 2: The output sync manager is initialized during the state transition<br />
|
|
from PREOP to SAFEOP that the master can check if the slave could update<br />
|
|
inputs and outputs before switching the slave to OP<br />
|
|
behaviour according to the EtherCAT Guidelines and Protocol Enhancements Specification<br />
|
|
V4.00 ECAT 3: The watchdog will be enabled in SAFE-OP that it can be checked if the last SM event<br />
|
|
was received during the watchdog time before switching to OP<br />
|
|
V4.00 ECAT 4: The function CheckSmChannelParameters is included in the function<br />
|
|
CheckSmSettings to get a better overview<br />
|
|
V4.00 ECAT 5: In synchronous mode the slave should support 1- and 3-buffer mode, 3-buffer mode<br />
|
|
should be the standard setting, because the controlling if the process data was updated<br />
|
|
should be done with the TxPDO Toggle, but the 1-buffer mode should be setable too,<br />
|
|
that the master could easily check if all slaves are synchronous by checking the<br />
|
|
the working counter (if the outputs were not read or the inputs were not written<br />
|
|
the ESC of the slave would not increment the working counter with expected value<br />
|
|
if the 1-buffer mode is running)<br />
|
|
V4.00 ECAT 6: The function ECAT_StateChange was added, which the application should call if a local error<br />
|
|
is detected (with the parameters alStatus = STATE_SAFEOP, alStatusCode = error code (> 0x1000))<br />
|
|
or gone (with the parameters alStatus = STATE_OP, alStatusCode = 0)<br />
|
|
or if one of the functions APPL_StartMailboxHandler, APPL_StopMailboxHandler, APPL_StartInputHandler,<br />
|
|
APPL_StopInputHandler, APPL_StartOutputHandler, APPL_StopOutputHandler has returned NOERROR_INWORK<br />
|
|
to acknowledge the last state transition (with the parameters alStatus = new AL-Status, alStatusCode =<br />
|
|
new AL-Status-Code)<br />
|
|
V4.00 ECAT 7: The return values for the AL-StatusCode were changed to UINT16 </p>
|
|
|
|
<p class="definition">См. определение в файле <a class="el" href="../../d9/d61/ecatslv_8c_source.html">ecatslv.c</a></p>
|
|
</div></div><!-- contents -->
|
|
</div><!-- doc-content -->
|
|
<!-- start footer part -->
|
|
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="../../d9/d61/ecatslv_8c.html">ecatslv.c</a></li>
|
|
<li class="footer">Создано системой <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|