<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">Hi,<br>
<br>
Maybe I've not yet understood precisely what you need, correct me
if I'm wrong.<br>
Every configuration SDO sent via ecrt_slave_config_complete_sdo is
meant as and SDO addressed to the EL6751 and the only use is to
configure the EL6751 or Can configuration telegrams to the Can
slaves, allowed only when the bus is not running.<br>
For configure the 6751 we mean his PDO on canopen side, not used
in your case since you don't have CANOpen slaves, or 6751
proprieties (almost everything you can "click" on Twincat.<br>
If you want to send SDO (raw Can telegrams) to your Can slave when
the network is running you're on the wrong way since EL6751 don't
allows you to do this.<br>
I had to do this in the past, I contacted Beckhoff and they
explained me that in order to send an SDO to a slave on the Can
network I need to use their proprietary AoE protocol (ADS over
Ethercat) and unforunately etherlab doesn't implements this.<br>
<br>
Personally, I hate the EL6751 :-)<br>
It worked very bad in my case, the Can network was unstable at
1Mbit even using certified cables and a 3 meters network.<br>
The inability to send SDO transparently to Can network was "the
straw that breaks the camel", I've dropped it out and replaced Can
slaves with ethercat equivalent.<br>
For my experience, the EL6731 is almost the worst slave that
Beckhoff produces.<br>
<br>
Bye,<br>
Thomas.<br>
<br>
<br>
<br>
On 22/01/2016 14:17, Matze Thias wrote:<br>
</div>
<blockquote
cite="mid:CACj3iFSm412cSyOoLWVdxZ6u5uTCbv+x-mVxYy=YzpPN-1yh1A@mail.gmail.com"
type="cite">
<div dir="ltr">
<div>
<div>Thank you Thomas for sharing your code :) In my code I'm
doing almost the same, except that I do encode the
configuration bytes directly in an array instead of
converting it from a string.<br>
<br>
Also I do not have to configure CANOpen-Slaves. The only
slave listening on the CAN-Bus expects
"raw"(Layer2)-CAN-Messages and do not understand the
higher-level CANOpen-Protocol. When I configure it that way,
I always get <br>
<span class="im"><br>
EtherCAT ERROR 0-1: Failed to set SAFEOP state, slave
refused state change (PREOP + ERROR).<br>
</span><span class="im"> EtherCAT ERROR 0-1: Unknown AL
status code 0xF101<br>
</span></div>
<div><br>
</div>
<div>PS: I just dumped the device info via ethercat slaves -v.
I got:<br>
</div>
<br>
<br>
General:<br>
Group: Communication<br>
Image name:<br>
Order number: EL6751<br>
Device name: EL6751 CANopen Master<br>
CoE details:<br>
Enable SDO: yes<br>
Enable SDO Info: yes<br>
Enable PDO Assign: no<br>
Enable PDO Configuration: no<br>
Enable Upload at startup: no<br>
Enable SDO complete access: yes<br>
Flags:<br>
Enable SafeOp: no<br>
Enable notLRW: no<br>
Current consumption: 300 mA<br>
<br>
<br>
</div>
So flags are saying, that SafeOp is not enabled. Does that mean
that SafeOP does not exist? Considering the error message is
there any correlation? How can I fix this?</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">2016-01-20 12:44 GMT+01:00 Thomas
Paoloni <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:thomas@digithom.it" target="_blank">thomas@digithom.it</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>Hi,<br>
<br>
Sometimes a piece of code is better than explanations
...<br>
Here is mine, which configures the PDO of the CanOpen
side on my EL6731<br>
<br>
static int err_code;<br>
static int cnt;<br>
static int x, y, z, i, num_config_lines;<br>
static char app_str[1024];<br>
static unsigned char pb_config_buf[2048];<br>
static int ecrt_retval;<br>
uint32_t value_to_write;<br>
uint32_t abort_code;<br>
<br>
struct config_item {<br>
unsigned int slave_pos;<br>
unsigned short address;<br>
char * config_string;<br>
};<br>
<br>
// 6 Atos Hydraulic valves without rxpdo2<br>
const config_item config [] = {<br>
<br>
// EL67xx CoE Init Cmd 2 (F800:00)<br>
{19, 0xF800, "11 00 7F 06 80 00 10 27 00 00 00
00 00 00 00 1E 64 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"},<br>
// EL67xx CoE Init Cmd 3 (8000:00)<br>
{19, 0x8000, "2E 00 01 00 98 01 00 07 F4 00 00
00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 64 00 03 00 D0 07 D0 07 05 00 0A 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00"},<br>
// EL67xx CoE Init Cmd 4 (8006:00)<br>
{19, 0x8006, "03 00 81 01 00 00 FF 02 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00"},<br>
// EL67xx CoE Init Cmd 5 (8008:00)<br>
{19, 0x8008, "04 00 01 02 00 00 FF 02 00 00 00
00 00 00 01 03 00 00 FF 02 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00"},<br>
// EL67xx CoE Init Cmd 6 (8003:00)<br>
{19, 0x8003, "0E 00 00 18 01 04 00 81 01 00 00
00 18 02 01 00 FF 01 18 01 04 00 81 03 00 00 01 18 02 01
00 FF 02 18 01 04 00 81 04 00 00 02 18 02 01 00 FF 00 14
01 04 00 01 02 00 00 00 14 02 01 00 FF 01 14 01 04 00 01
03 00 00 01 14 02 01 00 FF 02 14 01 04 00 01 04 00 00 02
14 02 01 00 FF 03 14 01 04 00 01 05 00 00 03 14 02 01 00
FF"},<br>
// EL67xx CoE Init Cmd 7 (8010:00)<br>
{19, 0x8010, "2E 00 02 00 98 01 00 07 F4 00 00
00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 64 00 03 00 D0 07 D0 07 05 00 0A 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00"},<br>
// EL67xx CoE Init Cmd 8 (8016:00)<br>
{19, 0x8016, "03 00 82 01 00 00 FF 02 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00"},<br>
// EL67xx CoE Init Cmd 9 (8018:00)<br>
{19, 0x8018, "04 00 02 02 00 00 FF 02 00 00 00
00 00 00 02 03 00 00 FF 04 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00"},<br>
// EL67xx CoE Init Cmd 10 (8013:00)<br>
{19, 0x8013, "0E 00 00 18 01 04 00 82 01 00 00
00 18 02 01 00 FF 01 18 01 04 00 82 03 00 00 01 18 02 01
00 FF 02 18 01 04 00 82 04 00 00 02 18 02 01 00 FF 00 14
01 04 00 02 02 00 00 00 14 02 01 00 FF 01 14 01 04 00 02
03 00 00 01 14 02 01 00 FF 02 14 01 04 00 02 04 00 00 02
14 02 01 00 FF 03 14 01 04 00 02 05 00 00 03 14 02 01 00
FF"},<br>
// EL67xx CoE Init Cmd 11 (8020:00)<br>
{19, 0x8020, "2E 00 03 00 98 01 00 07 F4 00 00
00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 64 00 03 00 D0 07 D0 07 05 00 0A 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00"},<br>
// EL67xx CoE Init Cmd 12 (8026:00)<br>
{19, 0x8026, "03 00 83 01 00 00 FF 02 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00"},<br>
// EL67xx CoE Init Cmd 13 (8028:00)<br>
{19, 0x8028, "04 00 03 02 00 00 FF 02 00 00 00
00 00 00 03 03 00 00 FF 04 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00"},<br>
// EL67xx CoE Init Cmd 14 (8023:00)<br>
{19, 0x8023, "0E 00 00 18 01 04 00 83 01 00 00
00 18 02 01 00 FF 01 18 01 04 00 83 03 00 00 01 18 02 01
00 FF 02 18 01 04 00 83 04 00 00 02 18 02 01 00 FF 00 14
01 04 00 03 02 00 00 00 14 02 01 00 FF 01 14 01 04 00 03
03 00 00 01 14 02 01 00 FF 02 14 01 04 00 03 04 00 00 02
14 02 01 00 FF 03 14 01 04 00 03 05 00 00 03 14 02 01 00
FF"},<br>
// EL67xx CoE Init Cmd 15 (8030:00)<br>
{19, 0x8030, "2E 00 04 00 98 01 00 07 F4 00 00
00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 64 00 03 00 D0 07 D0 07 05 00 0A 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00"},<br>
// EL67xx CoE Init Cmd 16 (8036:00)<br>
{19, 0x8036, "03 00 84 01 00 00 FF 02 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00"},<br>
// EL67xx CoE Init Cmd 17 (8038:00)<br>
{19, 0x8038, "04 00 04 02 00 00 FF 02 00 00 00
00 00 00 04 03 00 00 FF 04 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00"},<br>
// EL67xx CoE Init Cmd 18 (8033:00)<br>
{19, 0x8033, "0E 00 00 18 01 04 00 84 01 00 00
00 18 02 01 00 FF 01 18 01 04 00 84 03 00 00 01 18 02 01
00 FF 02 18 01 04 00 84 04 00 00 02 18 02 01 00 FF 00 14
01 04 00 04 02 00 00 00 14 02 01 00 FF 01 14 01 04 00 04
03 00 00 01 14 02 01 00 FF 02 14 01 04 00 04 04 00 00 02
14 02 01 00 FF 03 14 01 04 00 04 05 00 00 03 14 02 01 00
FF"},<br>
// EL67xx CoE Init Cmd 19 (8040:00)<br>
{19, 0x8040, "2E 00 05 00 98 01 00 07 F4 00 00
00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 64 00 03 00 D0 07 D0 07 05 00 0A 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00"},<br>
// EL67xx CoE Init Cmd 20 (8046:00)<br>
{19, 0x8046, "03 00 85 01 00 00 FF 02 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00"},<br>
// EL67xx CoE Init Cmd 21 (8048:00)<br>
{19, 0x8048, "04 00 05 02 00 00 FF 02 00 00 00
00 00 00 05 03 00 00 FF 04 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00"},<br>
// EL67xx CoE Init Cmd 22 (8043:00)<br>
{19, 0x8043, "0E 00 00 18 01 04 00 85 01 00 00
00 18 02 01 00 FF 01 18 01 04 00 85 03 00 00 01 18 02 01
00 FF 02 18 01 04 00 85 04 00 00 02 18 02 01 00 FF 00 14
01 04 00 05 02 00 00 00 14 02 01 00 FF 01 14 01 04 00 05
03 00 00 01 14 02 01 00 FF 02 14 01 04 00 05 04 00 00 02
14 02 01 00 FF 03 14 01 04 00 05 05 00 00 03 14 02 01 00
FF"},<br>
// EL67xx CoE Init Cmd 23 (8050:00)<br>
{19, 0x8050, "2E 00 06 00 98 01 00 07 F4 00 00
00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 64 00 03 00 D0 07 D0 07 05 00 0A 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00"},<br>
// EL67xx CoE Init Cmd 24 (8056:00)<br>
{19, 0x8056, "03 00 86 01 00 00 FF 02 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00"},<br>
// EL67xx CoE Init Cmd 25 (8058:00)<br>
{19, 0x8058, "04 00 06 02 00 00 FF 02 00 00 00
00 00 00 06 03 00 00 FF 04 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00"},<br>
// EL67xx CoE Init Cmd 26 (8053:00)<br>
{19, 0x8053, "0E 00 00 18 01 04 00 86 01 00 00
00 18 02 01 00 FF 01 18 01 04 00 86 03 00 00 01 18 02 01
00 FF 02 18 01 04 00 86 04 00 00 02 18 02 01 00 FF 00 14
01 04 00 06 02 00 00 00 14 02 01 00 FF 01 14 01 04 00 06
03 00 00 01 14 02 01 00 FF 02 14 01 04 00 06 04 00 00 02
14 02 01 00 FF 03 14 01 04 00 06 05 00 00 03 14 02 01 00
FF"},<br>
// download pdo 0x1C12 index<br>
{19, 0x1C12, "06 00 00 16 01 16 02 16 03 16 04
16 05 16"},<br>
// download pdo 0x1C13 index<br>
{19, 0x1C13, "0A 00 00 1A 01 1A 02 1A 03 1A 04
1A 05 1A 81 1A 82 1A 83 1A 84 1A"}<br>
};<br>
<br>
num_config_lines = sizeof(config)/sizeof(config_item);<br>
<br>
for (x=0 ; x<num_config_lines ; x++ ) {<br>
cout << "Downloading obj " <<
config[x].address << " " <<
config[x].config_string << " \n";<br>
y=0;<br>
for (z=0 ; z<strlen(config[x].config_string) ;
z++) if (config[x].config_string[z] != ' ')
app_str[y++]=config[x].config_string[z];<br>
<br>
app_str[y]='\0';<br>
cnt = strToCharArray(app_str, pb_config_buf);<br>
if ((err_code =
ecrt_slave_config_complete_sdo(slave_config_list[config[x].slave_pos],
config[x].address, pb_config_buf, cnt)) != 0) {<br>
// if ((err_code =
ecrt_slave_config_complete_sdo(config[x].slave_pos,
config[x].address, pb_config_buf, cnt)) != 0) {<br>
cout << "Object configuration failed "
<< config[x].address << " Errocode = "
<< err_code << "\n";<br>
cout << "Data is: " <<
pb_config_buf << "\n";<br>
cout << "Data size is: " << cnt
<< "\n";<br>
exit(-1);<br>
} else {<br>
cout << "Downloading obj " <<
config[x].address << " " << app_str <<
" OK\n";
<div>
<div class="h5"><br>
}<br>
}<br>
<br>
<br>
On 19/01/2016 16:05, Matze Thias wrote:<br>
</div>
</div>
</div>
<blockquote type="cite">
<div>
<div class="h5">
<div dir="ltr">
<div>
<div>Hello,<br>
<br>
</div>
I am trying to configure the EL6751 at the
moment, so that I am able to send raw CAN
messages over ethercat(<a moz-do-not-send="true"
href="http://infosys.beckhoff.com/content/1033/el6751/html/el6751_layer2_statemachine.htm?id=10857"
target="_blank">http://infosys.beckhoff.com/content/1033/el6751/html/el6751_layer2_statemachine.htm?id=10857</a>).<br>
I took the configuration, which is done in terms
of sdo-startup-downloads, from one of the
twincat dialogs. Which method for sdo
configuration is the right to choose?<br>
<br>
</div>
<div>If I use ecrt_master_sdo_download_complete
for the different SDO-Objects to upload, nothing
happens. When using
ecrt_slave_config_complete_sdo the device
error-led starts blinking(indicating, that some
configuration is in progress) but at the same
time I get this:<br>
<br>
Jan 19 15:50:06 e-node8 kernel: [611927.053364]
EtherCAT ERROR 0-1: Failed to set SAFEOP state,
slave refused state change (PREOP + ERROR).<br>
Jan 19 15:50:06 e-node8 kernel: [611927.059801]
EtherCAT ERROR 0-1: Unknown AL status code
0xF101.<br>
<br>
</div>
<div>Can anyone explain the error and has a
solution for this? Maybe someone has experience
in getting the el6751 configured and work-ready
for this scenario and can share his insights :)
?<br>
<br>
</div>
<div>Greetings,<br>
<br>
</div>
<div>Matze Thias<br>
</div>
<div><br>
</div>
</div>
<br>
<fieldset></fieldset>
<br>
</div>
</div>
<pre>_______________________________________________
etherlab-users mailing list
<a moz-do-not-send="true" href="mailto:etherlab-users@etherlab.org" target="_blank">etherlab-users@etherlab.org</a>
<a moz-do-not-send="true" href="http://lists.etherlab.org/mailman/listinfo/etherlab-users" target="_blank">http://lists.etherlab.org/mailman/listinfo/etherlab-users</a>
</pre>
</blockquote>
<br>
</div>
<br>
_______________________________________________<br>
etherlab-users mailing list<br>
<a moz-do-not-send="true"
href="mailto:etherlab-users@etherlab.org">etherlab-users@etherlab.org</a><br>
<a moz-do-not-send="true"
href="http://lists.etherlab.org/mailman/listinfo/etherlab-users"
rel="noreferrer" target="_blank">http://lists.etherlab.org/mailman/listinfo/etherlab-users</a><br>
<br>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
</body>
</html>