[etherlab-users] Error flag after requesting SAFEOP
Mohsen Alizadeh Noghani
m.alizad3h at gmail.com
Fri Sep 28 14:26:32 CEST 2018
Having read EtherCAT and EtherLab documentation a bit more,
1- I should set the first bit of the sync manager's status register to 1.
According to EtherCAT's Register Documentation, for sync manager 2 for
instance, I have to set the first bit of byte at 0x081B to 1.
2- I don't think using ecrt_slave_config_sync_manager will help me, since
it only sets the direction of sync manager (as pointed out by comments in
ecrt.h).
Now, my question is, how can I modify a specific bit in a slave's address
space?
Best,
Mohsen
On Thu, Sep 27, 2018 at 3:19 AM Gavin Lambert <gavin.lambert at tomra.com>
wrote:
> EC_WD_ENABLE enables the SM watchdog; it’s a separate thing from enabling
> the SM itself. In general you should only activate it on one SM per slave
> – usually the output SM if the slave has outputs or the input SM
> otherwise. If you don’t need the slave to drop from OP to SAFEOP when it
> loses communication with the master then you can leave the watchdog
> entirely disabled – though using the watchdog is usually recommended for
> output slaves for safety reasons.
>
>
>
> Using erct_slave_config_sync_manager by itself is fairly pointless. You
> need to specify the PDOs contained in the SM and then also actually use at
> least one PDO from each SM in your domain mapping. Typically you use
> ecrt_slave_config_pdos to do the former and ecrt_domain_reg_pdo_entry_list
> for the latter. See the example code.
>
>
>
> *From:* Mohsen Alizadeh Noghani
> *Sent:* Wednesday, 26 September 2018 22:32
> *To:* etherlab-users at etherlab.org
> *Subject:* [etherlab-users] Error flag after requesting SAFEOP
>
>
>
> Hello everyone.
>
>
>
> When I request SAFEOP state for my slave (Mecapion L7N) using shell command
>
>
>
> $ ethercat state --position 0 SAFEOP
>
>
>
> the slave's flag changes from + to E, and the state stays at PREOP.
>
>
>
> *Additional Info:*
>
> In a previous project, I used SOEM library and had to deal with the same
> issue, which was fixed by manually enabling sync managers 2 & 3.
>
>
>
> ec_slave[1].SM[2].SMflags |= 0x00010000;
>
> ec_slave[2].SM[3].SMflags |= 0x00010000;
>
>
>
> I tried to do the same by the adding following lines in my a simple code
>
>
>
> ret1 = erct_slave_config_sync_manager(sc, 2, EC_DIR_INPUT, EC_WD_ENABLE)
>
> ret2 = erct_slave_config_sync_manager(sc, 3, EC_DIR_OUTPUT, EC_WD_ENABLE)
>
>
>
> Both function calls are successful (ret1=ret2=0) but the slave won't reach
> SAFEOP.
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.etherlab.org/pipermail/etherlab-users/attachments/20180928/9173674a/attachment-0004.htm>
More information about the Etherlab-users
mailing list