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