Hi Merkel

You mean the EL6692 ;)

That must be some mistake somewhere on your side. I successfully used that slave in the past, attached is a matlab script for the generic slave in etherlab_lib, but I am sure you would be able to process it for your needs.

Richard

On 4/13/22 14:06, Merkel, Amos wrote:
Hi everyone,

I am tryingto set up a Beckhoff EL6992 terminal and ran into some unexpected problems. Has anyone experience with this hardware?

Here is my problem:

The EL6992 is an EtherCAT bridge terminal, allowing communication between two EtherCAT systems. For that, it consists of actually two ethercat slaves, one „primary“ slave on one system and a „secondary“ slave on a second system. The primary side can configure PDOs for communication which the secondary side can then use.

First odd thing I notice are the operating states: The terminal initializes in „OP“ on the primary side and in „OP“ or „PreOp+E“ on secondary side. I have yet to understand what decides the state of the secondary side

So far I managed to  configure PDOs for communication on both sides. For this to work, I have to manually set the operating states on both sides to Init, then to PreOp, then start my control job on primary side, then on secondary side. Otherwise the configuration is not accepted.

However, on both sides the system freezes shortly after starting the control jobs. System freeze is complete, even Alt+Print+REISUB does not work anymore.

A similar thing happens when I try to kill a control job shortly after starting it:

The control job can not be killed, not with Strg+C, and not with kill <PID>. Shortly after trying, the system freezes graduadely, sometimes rebooting still works, sometimes I have to default back to Alt+Print+REISUB. I have tried reading the dmesg output while killing the control job, I can’t find error messages, the output stops at „releasing Master 0…“

I would be most grateful for any pointers on how to proceed with this.

Best regards,

Amos

--
Amos Merkel, M.Sc.
Group leader
Digitalization

ifas – Institute for Fluid Power Drives and Systems
RWTH Aachen University
Campus-Boulevard 30
52074 Aachen

Tel: +49 241 80-47737
Fax: +49 241 80-647712

www.ifas.rwth-aachen.de <http://www.ifas.rwth-aachen.de/>| Twitter <https://twitter.com/IFAS_RWTH>| Facebook <https://www.facebook.com/IFAS-Institut-f%C3%BCr-fluidtechnische-Antriebe-und-Steuerungen-260714043957873/>| YouTube <https://www.youtube.com/channel/UC0vIq8jtra8E_--Sx8DALkQ>| LinkedIn <https://www.linkedin.com/company/ifas-rwth/>

Signatur June

        

www.ifk2022.com <http://www.ifk2022.com/>

**

        



Mit freundlichem Gruß

Richard Hacker

--
------------------------------------------------------------------------

Richard Hacker M.Sc.
richard.hac...@igh.de
Tel.: +49 201 / 36014-16

Ingenieurgemeinschaft IgH
Gesellschaft für Ingenieurleistungen mbH
Nordsternstraße 66
D-45329 Essen

Amtsgericht Essen HRB 11500
USt-Id.-Nr.: DE 174 626 722
Geschäftsführung:
- Dr.-Ing. Siegfried Rotthäuser
- Dr. Sven Beermann, Prokurist
Tel.: +49 201 / 360-14-0
http://www.igh.de

------------------------------------------------------------------------
%
function rv = el6692()

% Slave configuration

rv.SlaveConfig.vendor = 2; % Beckhoff
rv.SlaveConfig.product = hex2dec('1a243052');
rv.SlaveConfig.description = 'EL6692';
rv.SlaveConfig.sm = { ...
    {2, 0, {
        {hex2dec('1600'), [
            hex2dec('6000'), 01, 32;    % Ping          uint32_t
            hex2dec('6000'), 02, 32;    % p_Ist         real32
            hex2dec('6000'), 03, 32;    % pR_Ist        real32
            hex2dec('6000'), 04, 32;    % p_P           real32
            hex2dec('6000'), 05, 32;    % Q_P           real32
            hex2dec('6000'), 06, 32;    % p_PR          real32
            hex2dec('6000'), 07, 32;    % Q_PR          real32
            hex2dec('6000'), 08, 32;    % p_T           real32
            hex2dec('6000'), 09, 32;    % T_tank        real32
            hex2dec('6000'), 10, 32;    % Counter1      uint32_t
            hex2dec('6000'), 11, 32;    % Counter2      uint32_t
            hex2dec('6000'), 12, 32;    % Q1            real32
            hex2dec('6000'), 13, 32;    % Q2            real32
            hex2dec('6000'), 14, 32;    % Power         real32
            hex2dec('6000'), 15, 32;    % Pmax P        real32
            hex2dec('6000'), 16, 32;    % pmax P        real32
            hex2dec('6000'), 17, 32;    % Qmax P        real32
            hex2dec('6000'), 18, 32;    % Pmax PR       real32
            hex2dec('6000'), 19, 32;    % pmax PR       real32
            hex2dec('6000'), 20, 32;    % Qmax PR       real32
            hex2dec('6000'), 21, 16;    % COOL_pv       uint16_t
            hex2dec('6000'), 22,  8;    % State         uint8_t
            hex2dec('6000'), 23,  8;    % ISO1          uint8_t
            hex2dec('6000'), 24,  8;    % ISO2          uint8_t
            hex2dec('6000'), 25,  8;    % ISO3          uint8_t
            hex2dec('6000'), 26,  8;    % ISO4          uint8_t
            hex2dec('6000'), 27,  8;    % ISO-Status    uint8_t
            hex2dec('6000'), 28,  8;    % H2O           uint8_t
            hex2dec('6000'), 29,  8;    % Digital:
                                        % Valve_P
                                        % Valve_PR
                                        % Valve_PT
                                        % p=pR
            ]}, ...
        }}, ...
    {3, 1, {
        {hex2dec('1a01'), [
            hex2dec('10f4'),  2,  2;    % Sync Mode
            hex2dec('0000'),  0,  6;
            hex2dec('0000'),  0,  3;
            hex2dec('1800'),  9,  1;    % TxPDO toggle
            hex2dec('1800'),  7,  1;    % TxPDO state
            hex2dec('10f4'), 14,  1;    % Control value
            hex2dec('10f4'), 15,  1;    % Timestamp update
            hex2dec('10f4'), 16,  1;    % Ext device connected
            ]}, ...
        {hex2dec('1a00'), [
            hex2dec('7000'), 01, 32;    % Pong          uint32_t
            hex2dec('7000'), 02, 32;    % p_set_P       real32_t
            hex2dec('7000'), 03, 32;    % Q_lim_P       real32_t
            hex2dec('7000'), 04, 32;    % Alpha_P       real32_t
            hex2dec('7000'), 05, 32;    % p_set_PR      real32_t
            hex2dec('7000'), 06, 32;    % Q_lim_PR      real32_t
            hex2dec('7000'), 07, 32;    % Alpha_PR      real32_t
            hex2dec('7000'), 08, 16;    % COOL_set      uint18_t
            hex2dec('7000'), 09,  8;    % Digital:
                                        % Enable
                                        % Pilot         boolean
                                        % Valve         boolean
                                        % Digital1      boolean
                                        % Digital2      boolean
                                        % Digital3      boolean
                                        % Digital4      boolean
            ]}, ...
        }}, ...
    };

% Port configuration

rv.PortConfig.input(1).pdo = [0, 0, 0, 0];
rv.PortConfig.input(1).pdo_data_type = uint(32);
rv.PortConfig.input(1).portname = 'Ping';

rv.PortConfig.input(end+1).pdo = [
        0, 0, 1, 0; 0, 0, 2, 0;
        0, 0, 3, 0; 0, 0, 5, 0; 0, 0, 7, 0];
rv.PortConfig.input(end).pdo_data_type = float('single');
rv.PortConfig.input(end).portname = 'p';

rv.PortConfig.input(end+1).pdo = [0, 0, 4, 0];
rv.PortConfig.input(end).pdo_data_type = float('single');
rv.PortConfig.input(end).portname = 'Qp';

rv.PortConfig.input(end+1).pdo = [0, 0, 6, 0];
rv.PortConfig.input(end).pdo_data_type = float('single');
rv.PortConfig.input(end).portname = 'QpR';

rv.PortConfig.input(end+1).pdo = [0, 0, 8, 0];
rv.PortConfig.input(end).pdo_data_type = float('single');
rv.PortConfig.input(end).portname = 'T tank';

rv.PortConfig.input(end+1).pdo = [0, 0, 9, 0; 0, 0, 10, 0];
rv.PortConfig.input(end).pdo_data_type = uint(32);
rv.PortConfig.input(end).portname = 'Counter';

rv.PortConfig.input(end+1).pdo = [0, 0, 11, 0; 0, 0, 12, 0];
rv.PortConfig.input(end).pdo_data_type = float('single');
rv.PortConfig.input(end).portname = 'Qcalc';

rv.PortConfig.input(end+1).pdo = [0, 0, 13, 0];
rv.PortConfig.input(end).pdo_data_type = float('single');
rv.PortConfig.input(end).portname = 'Power';

rv.PortConfig.input(end+1).pdo = [0, 0, 14, 0; 0, 0, 17, 0];
rv.PortConfig.input(end).pdo_data_type = float('single');
rv.PortConfig.input(end).portname = 'Pmax';

rv.PortConfig.input(end+1).pdo = [0, 0, 15, 0; 0, 0, 18, 0];
rv.PortConfig.input(end).pdo_data_type = float('single');
rv.PortConfig.input(end).portname = 'pmax';

rv.PortConfig.input(end+1).pdo = [0, 0, 16, 0; 0, 0, 19, 0];
rv.PortConfig.input(end).pdo_data_type = float('single');
rv.PortConfig.input(end).portname = 'Qmax';

rv.PortConfig.input(end+1).pdo = [0, 0, 20, 0];
rv.PortConfig.input(end).pdo_data_type = sint(16);
rv.PortConfig.input(end).portname = 'COOL_pv';

rv.PortConfig.input(end+1).pdo = [0, 0, 21, 0];
rv.PortConfig.input(end).pdo_data_type = uint(8);
rv.PortConfig.input(end).portname = 'State';

rv.PortConfig.input(end+1).pdo = [0, 0, 22, 0; 0, 0, 23, 0;
                                  0, 0, 24, 0; 0, 0, 25, 0;
                                  0, 0, 26, 0];
rv.PortConfig.input(end).pdo_data_type = uint(8);
rv.PortConfig.input(end).portname = 'ISO';

rv.PortConfig.input(end+1).pdo = [0, 0, 27, 0];
rv.PortConfig.input(end).pdo_data_type = uint(8);
rv.PortConfig.input(end).portname = 'H2O';

rv.PortConfig.input(end+1).pdo = [0, 0, 28, 0;
                                  0, 0, 28, 1;
                                  0, 0, 28, 2];
rv.PortConfig.input(end).pdo_data_type = uint(1);
rv.PortConfig.input(end).portname = 'Valve';

rv.PortConfig.input(end+1).pdo = [0, 0, 28, 3];
rv.PortConfig.input(end).pdo_data_type = uint(1);
rv.PortConfig.input(end).portname = 'p=pR';

% Outputs

rv.PortConfig.output(1).pdo = [1, 0, 7, 0];
rv.PortConfig.output(1).pdo_data_type = uint(1);
rv.PortConfig.output(1).portname = 'connected';

rv.PortConfig.output(end+1).pdo = [1, 1, 0, 0];
rv.PortConfig.output(end).pdo_data_type = uint(32);
rv.PortConfig.output(end).portname = 'Pong';

rv.PortConfig.output(end+1).pdo = [1, 1, 1, 0; 1, 1, 4, 0];
rv.PortConfig.output(end).pdo_data_type = float('single');
rv.PortConfig.output(end).portname = 'p_set';

rv.PortConfig.output(end+1).pdo = [1, 1, 2, 0; 1, 1, 5, 0];
rv.PortConfig.output(end).pdo_data_type = float('single');
rv.PortConfig.output(end).portname = 'Q_lim';

rv.PortConfig.output(end+1).pdo = [1, 1, 7, 0];
rv.PortConfig.output(end).pdo_data_type = sint(16);
rv.PortConfig.output(end).portname = 'COOL';

rv.PortConfig.output(end+1).pdo = [1, 1, 8, 3; 1, 1, 8, 4];
rv.PortConfig.output(end).pdo_data_type = uint(1);
rv.PortConfig.output(end).portname = 'Digital';

rv.PortConfig.output(end+1).pdo = [1, 1, 8, 0; 1, 1, 8, 1; 1, 1, 8, 2];
rv.PortConfig.output(end).pdo_data_type = uint(1);
rv.PortConfig.output(end).portname = 'Ena,Pilot,Valve';

-- 
Etherlab-users mailing list
Etherlab-users@etherlab.org
https://lists.etherlab.org/mailman/listinfo/etherlab-users

Reply via email to