Hi Uwe,

We have implemented FSoE with an EK1960, an EL1904 and an EL2904 in the past.  
The EK1960 is a bit different to the EL6900 as it also has it's own IO.  
However it seems like your PDO configuration is missing a lot of data both in 
what the device thinks it has configured (Currently mapped PDO entries) and 
what you are attempting to write (Entries to map).

First check that your project has been loaded on the EL6900 correctly, has been 
activated and the whole system repowered.  Also verify the project crc.  (We 
use the Beckhoff TwinSAFE Loader application to load the safety program via 
Linux.  This requires a Mailbox Gateway Server, which is a patch I submitted to 
EtherLab a while ago.)  The safety program is what defines the PDO layout on 
the EL6900.  The master cstruct command may give you the correct PDO mapping 
but it's a while ago so I'm not sure on that one.  I remember configuring my 
structs manually based on what was in the safety program as shown by TwinCAT.  
E.g.: in TwinCAT 3, if you go to I/O, Devices, Device 1, Term 1 (EL6900), 
Process Data tab it should show you the expected PDO layout for the terminal.

[cid:image001.png@01D8B6E2.EB61F800]

[cid:image002.png@01D8B6E2.EB61F800]

Order the PDO's by Sync Manager, then PDO Assignment, then PDO Content.  Don't 
worry if you have duplicate index:subindex values.  They should be unique 
within a particular PDO group.  However you will need to use 
"ecrt_slave_config_reg_pdo_entry_pos" rather than 
"ecrt_slave_config_reg_pdo_entry" if you have any duplicates.

For each safety device (EL1904, EL2904) the EL6900 controls, your application 
must copy 48 input bits and 48 output bits (6 bytes) between the EL6900's PDO 
and each safety devices PDO's within your realtime read-calc-write loop.  e.g. 
copy:
EL6900 TxPDO 0x1a00 -> EL1904 RxPDO 0x1600 (length 48 bits)
EL6900 TxPDO 0x1a01 -> EL2904 RxPDO 0x1600 (length 48 bits)
EL1904 TxPDO 0x1a00 -> EL6900 RxPDO 0x1600 (length 48 bits)
EL2904 TxPDO 0x1a00 -> EL6900 RxPDO 0x1601 (length 48 bits)

I think I got those the right way around.  You will also need to check which 
blocks the EL1904/EL2904 actually map to based on you safety program.

Also for housekeeping, I put all of the safety related PDO's in their own 
domain.

Regards,
Graeme.


From: Etherlab-users <etherlab-users-boun...@etherlab.org> On Behalf Of 
Stegemann Uwe
Sent: Tuesday, 23 August 2022 02:02
To: etherlab-users@etherlab.org
Subject: [Etherlab-users] Implementation of Safety - Terminals EL6900, EL1904 
and EL2904


Hi erveryone,

I want to setup TwinSafe Logic Terminals, EL6900, EL2904 and EL1904.I've 
created a Safety-Project with TwinCat3 and downloaded the safety-logic to the 
EL6900. I use the default settings from TwinCat3. Now I want to implement it to 
the etherlab-master.
The Default PDO-Mapping of the EL6900 - Terminal:

SM0: PhysAddr 0x1000, DefaultSize  256, ControlRegister 0x26, Enable 1
SM1: PhysAddr 0x1100, DefaultSize  256, ControlRegister 0x22, Enable 1
SM2: PhysAddr 0x1200, DefaultSize    2, ControlRegister 0x24, Enable 1
  RxPDO 0x1600 "FSOE RxPDO-Map 001"
    PDO entry 0x7000:01,  8 bit, "FSOE Command"
    PDO entry 0x7001:01,  8 bit, "SubIndex 001"
    PDO entry 0x7000:03, 16 bit, "FSOE CRC 001"
    PDO entry 0x7000:02, 16 bit, "FSOE ConnID"
  RxPDO 0x1601 "FSOE RxPDO-Map 002"
    PDO entry 0x7010:01,  8 bit, "FSOE Command"
    PDO entry 0x7011:01,  8 bit, "SubIndex 001"
    PDO entry 0x7010:03, 16 bit, "FSOE CRC 001"
    PDO entry 0x7010:02, 16 bit, "FSOE ConnID"
  RxPDO 0x17f0 "DEVICE RxPDO-Map Standard In Vars"
    PDO entry 0xf201:01,  1 bit, "SubIndex 001"
    PDO entry 0xf201:02,  1 bit, "SubIndex 002"
    PDO entry 0xf201:03,  1 bit, "SubIndex 003"
    PDO entry 0xf201:04,  1 bit, "SubIndex 004"
    PDO entry 0xf201:05,  1 bit, "SubIndex 005"
    PDO entry 0xf201:06,  1 bit, "SubIndex 006"
    PDO entry 0xf201:07,  1 bit, "SubIndex 007"
    PDO entry 0xf201:08,  1 bit, "SubIndex 008"
  RxPDO 0x17ff "DEVICE RxPDO-Map Control"
    PDO entry 0xf200:01, 16 bit, "Control"
SM3: PhysAddr 0x1d00, DefaultSize    2, ControlRegister 0x20, Enable 1
  TxPDO 0x1a00 "FSOE TxPDO-Map 001"
    PDO entry 0x6000:01,  8 bit, "FSOE Command"
    PDO entry 0x6001:01,  8 bit, "SubIndex 001"
    PDO entry 0x6000:03, 16 bit, "FSOE CRC 001"
    PDO entry 0x6000:02, 16 bit, "FSOE ConnID"
  TxPDO 0x1a01 "FSOE TxPDO-Map 002"
    PDO entry 0x6010:01,  8 bit, "FSOE Command"
    PDO entry 0x6011:01,  8 bit, "SubIndex 001"
    PDO entry 0x6010:03, 16 bit, "FSOE CRC 001"
    PDO entry 0x6010:02, 16 bit, "FSOE ConnID"
  TxPDO 0x1bff "DEVICE TxPDO-Map Status"
    PDO entry 0xf100:01,  3 bit, "Safety Project State"
    PDO entry 0x0000:00,  4 bit, "Gap"
    PDO entry 0xf100:08,  1 bit, "Login Active"
    PDO entry 0xf100:09,  1 bit, "Input Size Mismatch"
    PDO entry 0xf100:0a,  1 bit, "Output Size Mismatch"
    PDO entry 0x0000:00,  4 bit, "Gap"
    PDO entry 0xf100:0f,  1 bit, "TxPDO State"
    PDO entry 0xf100:10,  1 bit, "TxPDO Toggle"

When I want to add PDOs, I get following warnings:

EtherCAT WARNING 0-1: Currently mapped PDO entries: 0x7000:01/8 0x7001:01/8 
0x7000:03/16 0x7000:02/16. Entries to map: 0x7000:01/8 0x7001:01/8 0x7000:03/16 
0x7000:02/16 0x6000:01/48 0x6000:02/48
EtherCAT WARNING 0-1: Slave does not support changing the PDO mapping!

Slave Info EL6900:

=== Master 0, Slave 1 ===
Alias: 100
Device: Main
State: OP
Flag: +
Identity:
  Vendor Id:       0x00000002
  Product code:    0x1af43052
  Revision number: 0x00130000
  Serial number:   0x00000000
DL information:
  FMMU bit operation: no
  Distributed clocks: yes, delay measurement only
  DC system time transmission delay: 145 ns
Port  Type  Link  Loop    Signal  NextSlave  RxTime [ns]  Diff [ns]   NextDc 
[ns]
   0  EBUS  up    open    yes             0   2874259272           0         145
   1  EBUS  up    open    yes             2   2874260152         880         145
   2  N/A   down  closed  no              -            -           -           -
   3  N/A   down  closed  no              -            -           -           -
Mailboxes:
  Bootstrap RX: 0x1000/244, TX: 0x10f4/244
  Standard  RX: 0x1000/256, TX: 0x1100/256
  Supported protocols: CoE, FoE
General:
  Group: Safety
  Image name: EL69XX
  Order number: EL6900
  Device name: EL6900, TwinSAFE-PLC
  CoE details:
    Enable SDO: yes
    Enable SDO Info: yes
    Enable PDO Assign: no
    Enable PDO Configuration: no
    Enable Upload at startup: no
    Enable SDO complete access: no
  Flags:
    Enable SafeOp: no
    Enable notLRW: no
  Current consumption: 190 mA

I see, that's not possible to assign or to configure PPOs, but what is the 
right track to setup this system successfully?
The used PDOs are not unique!
Do I have to change settings in TwinCat3? I am not an Expert of this; I only 
want to use the Safety-Editor to create the Safety - Logic!

In earlier posts here I found, that it is possible to implement Safety 
Terminals in the etherlab master successfully.
I've already read, that the FSoE - Data (6 Bytes) between the Safety - 
Terminals must be managed in the cycle_task of the Application; a little bit 
tricky but make sense.
The last point: In the Safety - Logic I used one variable to set Com/Err - 
Signal which is also linked to a PDO, I can't mapped!

Thanks in advance for attention and help.

Best regards

Uwe Stegemann

____________________________________
G+D Currency Technology

Uwe Stegemann
Banknote-Engineering - Printing Division / Abt. CTBN 214
Giesecke+Devrient Currency Technology GmbH,
Prinzregentenstraße 159, D-81677 Munich, Germany
T +49 89 4119-2321 F +49 89 4119-1446
mailto:uwe.stegem...@gi-de.com
http://www.gi-de.com<http://www.gi-de.com/>




www.gi-de.com/currency-technology<https://www.gi-de.com/currency-technology/>

[Cash Matters]<http://www.cashmatters.org/>

Geschäftsführer: Dr. Wolfram Seidemann (Vorsitzender, CEO), Guido Koller (CFO), 
Wolfgang Kneilmann, Bernd Kümmerle
Gesellschaftssitz: München, Handelsregister des AG München, HRB 148256
-- 
Etherlab-users mailing list
Etherlab-users@etherlab.org
https://lists.etherlab.org/mailman/listinfo/etherlab-users

Reply via email to