-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathmd_test_2test__report.html
More file actions
243 lines (241 loc) · 12.4 KB
/
md_test_2test__report.html
File metadata and controls
243 lines (241 loc) · 12.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.11.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>CANopenDemo: TEST REPORTS</title>
<link rel="icon" href="CANopenNode.png" type="image/x-icon" />
<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>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="CANopenNode.png"/></td>
<td id="projectalign">
<div id="projectname">CANopenDemo
</div>
<div id="projectbrief">CANopenNode demo, tutorial and testing</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.11.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @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:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search',false);
$(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
$(function(){ initResizable(false); });
/* @license-end */
</script>
<!-- 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">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
</div><!-- top -->
<div id="doc-content">
<div><div class="header">
<div class="headertitle"><div class="title">TEST REPORTS</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h1><a class="anchor" id="autotoc_md122"></a>
Complete tests in running CANopen</h1>
<p><code>./test_all.sh</code>, two CAN devices, 250 kbps: </p><div class="fragment"><div class="line">Running 'basic_NMT_SDO_heartbeat.bats':</div>
<div class="line"> ✓ NMT: all preoperational</div>
<div class="line"> ✓ SDO: read heartbeat D1</div>
<div class="line"> ✓ SDO: read heartbeat D2</div>
<div class="line"> ✓ SDO: disable heartbeats</div>
<div class="line"> ✓ candump: no communication, 2sec</div>
<div class="line"> ✓ Heartbeats: all present</div>
<div class="line"> ✓ NMT: reset communication - one</div>
<div class="line"> ✓ NMT: reset communication - two</div>
<div class="line"> ✓ NMT: reset communication - three</div>
<div class="line"> ✓ all preoperational</div>
<div class="line"> ✓ SDO: disable all PDOs on D1</div>
<div class="line"> ✓ SDO: disable all PDOs on D2</div>
<div class="line"> ✓ NMT: pre-operational D1</div>
<div class="line"> ✓ NMT: operational D1</div>
<div class="line"> ✓ NMT: pre-operational D2</div>
<div class="line"> ✓ NMT: operational D2</div>
<div class="line"> ✓ finish: NMT all preoperational</div>
<div class="line"> </div>
<div class="line">17 tests, 0 failures</div>
<div class="line"> </div>
<div class="line"> </div>
<div class="line">Running 'heartbeat_consumer.bats':</div>
<div class="line"> ✓ Start heartbeat producer on D1 only</div>
<div class="line"> ✓ Start heartbeat consumer on D2</div>
<div class="line"> ✓ Heartbeat producer D1 missing</div>
<div class="line"> ✓ Heartbeat producer D1 established</div>
<div class="line"> ✓ Bootup message D1</div>
<div class="line"> ✓ Second HB consumer configuration</div>
<div class="line"> ✓ Illegal HB consumer configuration (duplicate nodeId)</div>
<div class="line"> ✓ Cleanup</div>
<div class="line"> </div>
<div class="line">8 tests, 0 failures</div>
<div class="line"> </div>
<div class="line"> </div>
<div class="line">Running 'SDO_transfer.bats':</div>
<div class="line"> ✓ Segmented write</div>
<div class="line"> ✓ Segmented read</div>
<div class="line"> ✓ Segmented transfer, files equal</div>
<div class="line"> ✓ Block write</div>
<div class="line"> ✓ Block read - 2x</div>
<div class="line"> ✓ Block transfer, files equal</div>
<div class="line"> </div>
<div class="line"> 10240 bytes, segmented written/read: 2071/2552 milliseconds.</div>
<div class="line"> 10240 bytes, block written/read: 744/744 milliseconds.</div>
<div class="line"> </div>
<div class="line">6 tests, 0 failures</div>
<div class="line"> </div>
<div class="line">Test duration: 13.384309162 sec</div>
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md123"></a>
SDO transfer test reports for different target systems</h1>
<p>Running tests with <code>SDO_transfer.bats</code>, see <a class="elRef" href="CANopenNode/index.html#md_README">test/README.md</a> for preparation of devices.</p>
<h2><a class="anchor" id="autotoc_md124"></a>
Devices tested 2021-05-02</h2>
<ul>
<li>systems:<ul>
<li>Ubuntu 20.10, Linux 5.8.0-41-generic on desktop PC</li>
<li>Raspberry Pi OS 10 (buster) on RPI</li>
</ul>
</li>
<li>canopend, testing SDO client and gateway:<ul>
<li>versions CANopenNode:<ul>
<li>"v4.0-25-g8855820"</li>
<li>"v2.0-6-gacd719e"</li>
</ul>
</li>
</ul>
</li>
<li>demoDevice, testing SDO server<ul>
<li>version CANopenSocket "v4.0-2-geb7d5f3-dirty"</li>
<li>version CANopenNode "v4.0-25-g8855820" (v2.0 was not tested)</li>
</ul>
</li>
<li>CAN interfaces:<ul>
<li>CPC-USB, EMS Dr. Thomas Wuensche</li>
<li>PCAN-USB: PEAK-System PCAN-USB FD v1 fw v3.2.0 (1 channel, FD not used)</li>
<li>USBtin: USBtin EB v2.0 (slcand)</li>
<li>Raspberry Pi 2 (and 4) Model B<ul>
<li><a href="https://www.sg-electronic-systems.com/can-bus-dual-iso-v2-1-shield-for-raspberry/">CAN shield with MCP2515</a></li>
<li>CPC-USB (PCAN-USB didn't work)</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2><a class="anchor" id="autotoc_md125"></a>
Virtual CAN device</h2>
<p>Test result: </p><div class="fragment"><div class="line">✓ Segmented transfer - set filename for upload</div>
<div class="line">✓ Block transfer, create 100000 bytes long random binaryFile</div>
<div class="line">✓ Block download binaryFile</div>
<div class="line">✓ Block upload to binaryFileReceived - 2x</div>
<div class="line">✓ Block transfer, files equal</div>
<div class="line">✓ Segmented transfer, create 1000 bytes long random binaryFileSeg</div>
<div class="line">✓ Segmented download binaryFileSeg</div>
<div class="line">✓ Segmented upload to binaryFileSegReceived</div>
<div class="line">✓ Segmented transfer, files equal</div>
<div class="line"> 100000 bytes block down/upload: 70/145 milliseconds.</div>
<div class="line"> 1000 bytes segmented down/upload: 10/24 milliseconds.</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md126"></a>
CAN bus 1000 Kbps</h2>
<p>Test result: </p><div class="fragment"><div class="line">✓ Segmented transfer - set filename for upload</div>
<div class="line">✓ Block transfer, create 100000 bytes long random binaryFile</div>
<div class="line">✓ Block download binaryFile</div>
<div class="line">✓ Block upload to binaryFileReceived - 2x</div>
<div class="line">✓ Block transfer, files equal</div>
<div class="line">✓ Segmented transfer, create 1000 bytes long random binaryFileSeg</div>
<div class="line">✓ Segmented download binaryFileSeg</div>
<div class="line">✓ Segmented upload to binaryFileSegReceived</div>
<div class="line">✓ Segmented transfer, files equal</div>
<div class="line"> 100000 bytes block down/upload: 2316/1840 milliseconds.</div>
<div class="line"> 1000 bytes segmented down/upload: 254/270 milliseconds.</div>
</div><!-- fragment --> <h3><a class="anchor" id="autotoc_md127"></a>
Notes USBtin</h3>
<p>USBtin interface doesn't work when sending sequence of data. In block transfer it sends first CAN message in sub-block correctly, then there is a mess on the bus. However data was transferred correctly in all test cases, because of the robustness of the block transfer. But communication time is up to 300 times longer. Reception of the sequence of data as well as segmented transfer always works correctly with USBtin.</p>
<h3><a class="anchor" id="autotoc_md128"></a>
Notes Raspberry PI with CAN shield MCP2515</h3>
<p>Raspberry PI shows had problems with CAN overflow with received sequence of data. It couldn't process fast enough and there was socket overflow. RPI sends emergency message and sets error register. Otherwise data transfer was always correct and time to transfer was not significantly longer. With 250 Kbps there were still overflows, but less. Problem was the same, when RPI was demoDevice (multithreaded program) or canopend (single threaded program). Problem was also the same, when using RPI2 or RPI4. But everything works perfectly when using CPC-USB instead of CAN shield with RPI2 or RPI4. </p><div class="fragment"><div class="line">demoDevice: (CO_CANerror_rxMsgError) Socket error msg ID: 0x20000004, Data[0..7]: 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 (can0)</div>
<div class="line">demoDevice: CAN Interface "can0" Rx buffer overflow. Message dropped</div>
<div class="line">canopend: CANopen Emergency message from node 0x04: errorCode=0x0013, errorRegister=0x10, errorBit=0x13, infoCode=0x00000000</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md129"></a>
Notes other</h3>
<p>No problems were detected on other CAN interfaces.</p>
<h2><a class="anchor" id="autotoc_md130"></a>
CAN bus 10 Kbps</h2>
<p>Enlarge SDO timeout and reduce data size: </p><div class="fragment"><div class="line">cocomm "set sdo_timeout 2000"</div>
<div class="line">export binaryFileSize=1000</div>
</div><!-- fragment --><p>Test result: </p><div class="fragment"><div class="line">✓ Segmented transfer - set filename for upload</div>
<div class="line">✓ Block transfer, create 1000 bytes long random binaryFile</div>
<div class="line">✓ Block download binaryFile</div>
<div class="line">✓ Block upload to binaryFileReceived - 2x</div>
<div class="line">✓ Block transfer, files equal</div>
<div class="line">✓ Segmented transfer, create 1000 bytes long random binaryFileSeg</div>
<div class="line">✓ Segmented download binaryFileSeg</div>
<div class="line">✓ Segmented upload to binaryFileSegReceived</div>
<div class="line">✓ Segmented transfer, files equal</div>
<div class="line"> 1000 bytes block down/upload: 1741/1731 milliseconds.</div>
<div class="line"> 1000 bytes segmented down/upload: 3611/3621 milliseconds.</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md131"></a>
Notes</h3>
<p>USBtin shows the same problems as with 1000 Kbps. All others worked perfectly. </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.11.0
</small></address>
</div><!-- doc-content -->
</body>
</html>