Share this

Using 8-axis/4-axis EtherCAT axis modules EIO24088-V2 and EIO16084 (Part 1): RTSys bus configuration and usage

2026-04-06 05:43:37 · · #1

The use of the EIO24088-V2 and EIO16084 expansion modules in conjunction with the master controller for positive motion involves three steps. Step 1: Hardware wiring; Step 2: Bus initialization to establish an EtherCAT communication connection. During initialization, the extended axis resources and I/O resources need to be mapped to prevent conflicts with the controller's resources; Step 3: Reading and writing I/O and controlling motor movement via corresponding commands.

Today, the ZhengSports Assistant will share with you how to configure and use EIO24088-V2 and EIO16084 using the RTSys bus.

•EIO24088-V2 Expansion Module Hardware Introduction•

The EIO24088-V2 bus expansion module is an expansion module used by the EtherCAT bus controller. When digital I/O and pulse axis resources are insufficient and need to be expanded, the controller can connect multiple EtherCAT expansion modules via the EtherCAT bus. The controller can directly access the I/O and axis resources of the EIO24088-V2 through the mapping number.

• Supports expansion to 8 pulse axes;

• Supports expansion to 24 digital inputs and 8 digital outputs, with each pulse axis also having 1 additional digital input and 1 additional digital output available for configuration;

• Pulse output mode is either directional/pulse or dual-pulse output;

• Maximum output pulse frequency per axis: 10MHz;

• The maximum output current of the output port other than the pulse axis is up to 300mA, which can directly drive some solenoid valves.

The application diagram is shown below:

•EIO16084 Expansion Module Hardware Introduction•

The EIO16084 bus expansion module is an expansion module used by the EtherCAT bus controller. When digital I/O and pulse axis resources are insufficient and need to be expanded, the controller can connect multiple EtherCAT expansion modules via the EtherCAT bus. The controller can directly access the I/O and axis resources of the EIO16084 through the mapping number.

• Supports expansion to 4 pulse axes;

• Supports expansion to 16 digital inputs and 8 digital outputs, with each pulse axis also having 2 additional digital inputs and 2 additional digital outputs available for configuration;

• Pulse output mode is either direction/pulse or dual pulse;

• Maximum output pulse frequency per axis: 10MHz;

• The maximum output current of the output ports other than the pulse axis reaches 300mA, which can directly drive some solenoid valves.

The application diagram is shown below:

I. Interface Description

1. Wiring of EtherCAT bus communication interface: The EIO24088-V2 has two EtherCAT bus interfaces. When wiring, pay attention to connecting EtherCAT IN to the main controller or the upper-level module, and EtherCAT OUT to the next-level expansion board. The IN and OUT ports cannot be used interchangeably.

2. The EIO24088-V2 has 24 general-purpose input ports. The input ports require configuration of the I/O address number using the NODE_IO instruction before they can be operated via the controller. The internal circuit diagram of the general-purpose input port IN is shown below, and the input port parameters are listed in the table below. Internal circuit diagram of general-purpose input port IN:

Input port parameter description:

3. The EIO24088-V2 has 8 general-purpose output ports. The output ports require configuration of the I/O address number using the NODE_IO instruction before they can be operated via the controller (the NODE_IO instruction only needs to be used once to configure the input and output). The internal circuit diagram of the general-purpose output port OUT is shown below, and the output port parameters are listed in the table below. Internal circuit diagram of general-purpose output port OUT:

Output port parameter description:

4. The EIO24088-V2 axis interface has 8 axes, using DB26 pins. The axis interface includes differential pulse input signals and differential encoder input signals, as well as one general-purpose input port and one general-purpose output port (the EIO16084 has two general-purpose input ports and two general-purpose output signals). Pin definition description:

The EIO expansion board can be directly enabled and alarms can be configured through 6013h in the data dictionary. It is not used by default and requires the main controller to operate.

II. Bus Wiring Reference

Wiring rules for EIO24088-V2 expansion module: EIO24088-V2 can be connected to any node on the EtherCAT bus.

The EIO24088-V2 is a device node on the bus that can connect to 8 pulse-type drivers. The drivers are numbered sequentially from AXIS 0 to AXIS 7 and follow the driver numbering rules on the bus. Axis mapping is required.

The enable signal for the driver is a general-purpose output port within the pulse interface. It can be enabled directly through the OP command of the main controller, or automatically enabled by configuring BIT8 in the data dictionary 6013h to 1 using the SDO command. The main controller cannot directly control the corresponding output port to enable it; it is sufficient to set WDOG to 1 and AXIS_ENABLE of the corresponding axis to 1.

Note: The number of axis expansion modules that can be used is not unlimited. Please refer to the maximum number of axes that the controller can expand to.

The ZMC432-V2 main unit has 6 pulse axes, which are extended via EtherCAT to include four bus axes at nodes 0, 1, 2, and 3, and eight bus-to-pulse axes at node 4. The AXIS0-7 axes on the extended axes (corresponding to driver numbers 4-11 in the diagram below) are manually mapped to axis numbers 10-17. The wiring diagram for the controller, EIO expansion module, and drivers is shown below:

The concepts of bus-related command parameters involved are as follows:

1. Slot number

The slot number refers to the number of the bus interface on the controller, which defaults to 0. When the controller has multiple bus interfaces, send the online command ?*SLOT to view them.

When the motion controller supports a single bus, the slot number is 0.

When dual buses are supported, the EtherCAT bus slot number is 0 and the RTEX bus slot number is 1.

2. Device number (node)

The device number refers to the number of all devices connected to a slot. It starts from 0 and is automatically numbered according to the connection order of the devices on the bus. The total number of devices connected to the bus can be viewed using the NODE_COUNT(slot) command.

3. Drive number

The controller will automatically identify the drivers in the slots, numbering them starting from 0 and according to the connection order of the drivers on the bus.

The drive number is different from the device number. Only the drive device number is assigned to the drive in the slot, and other devices are ignored.

III. Extended Resource Mapping Methods

The EIO24088-V2 or EIO16084 expansion modules have two types of resources that need to be mapped: axis resources and I/O resources. 1. I/O Mapping: The controller program can access the resources on the expansion module simply by the I/O number. The I/O number of the EtherCAT bus expansion module is set using the bus command `NODE_IO`, which configures both inputs and outputs. When mapping I/O, first check the controller's maximum I/O number (including external I/O interfaces and interfaces within pulse axes), then set the number using the command. If the expanded I/O number overlaps with the controller's own I/O number, both will work simultaneously. Therefore, the I/O mapping number must not be repeated throughout the entire control system. I/O Mapping Syntax: `NODE_IO(slot,node) = iobase` `slot`: Slot number, 0-default `node`: Device number, starting from 0 `iobase`: Starting number for mapped I/O, the result will only be a multiple of 8. Example:

·

NODE_IO(0,0)=32 'Sets the starting I/O number of device 0 on interface 0 of slot 0 to 32'

If device 0 is EIO24088-V2, after configuring it according to the above syntax, the starting number is mapped to 32. The input number on this extension module is the external built-in 24 points + 8 general input points of the axis interface, for a total of 32 points, ranging from 32 to 63. The output number is the external 8 points + 8 general output points of the axis interface, for a total of 16 points, ranging from 32 to 47.

2. Axis mapping

Before using the axes of the expansion module, the axis number needs to be mapped using the "AXIS_ADDRESS" command. It's also important to ensure that axis numbers are not duplicated throughout the system. The mapping syntax for EIO series expansion axes is the same as that for bus drivers. Axis mapping syntax:

AXIS_ADDRESS(axis number) = (slot number << 16) + driver number + 1

Example:

·

AXIS_ADDRESS(0)=(0<<16)+0+1 'The first driver on the EtherCAT bus, driver number 0, bound to axis 0. AXIS_ADDRESS(1)=(0<<16)+1+1 'The second driver on the EtherCAT bus, driver number 1, bound to axis 1.

If the first node is EIO24088-V2, then driver number 0 here corresponds to the first bus-to-pulse driver connected to EIO24088-V2.

IV. Bus Initialization

The EIO24088-V2 expansion module requires bus initialization before it can be used. The following diagram shows the bus initialization process.

There are two ways to perform bus initialization:

⚪ Initialize using the bus initialization script provided by the positive motion.

⚪ Locate the RTSys project settings, open the launch axis configuration and EtherCAT configuration, and configure them manually.

The first method I'll introduce is bus initialization via a bus initialization script. This initialization program can be used to initialize EtherCAT drivers and EtherCAT bus expansion modules, establishing communication connections (a universal template applicable to drivers from various brands), and can be obtained from Zhengdong Motors.

1. Create a new project in RTSys or ZDevelop.

2. Add the bus initialization script to the project.

3. Set the task number for the initialization script

4. Set the number of local pulse axes and their starting numbers, as well as the starting numbers of the bus axes. If you are not using local pulse axes and are only using bus axes, you can use the default configuration (the parameters can be modified according to the actual usage). In the demonstration, six local pulse axes were used. The ECAT bus was connected to an EIO24088-V2, two Panasonic drivers, and one Delta driver.

5. Bus initialization template program:

·

'Maximum number of axes for controller TABLE(0)= SYS_ZFEATURE(0)GLOBAL CONST ControlMaxAxis = TABLE(0)'Supported number of motors TABLE(0)= SYS_ZFEATURE(1)GLOBAL CONST RealAxisMax = TABLE(0)'Slot number, (default 0 for single-bus controllers, see hardware manual for details)GLOBAL CONST Bus_Slot = 0'Local pulse axis start numberGLOBAL CONST LocalAxis_Start = 11'Number of local pulse axesGLOBAL CONST LocalAxis_Num = 2'Bus axis start numberGLOBAL CONST BusAxis_Start = 0'Bus driver start IOSGLOBAL CONST BusStaraIoNum=128'Bus initialization status -1--Not performed 0--Initialization error 1--Initialization completedGLOBAL ECAT_InitEnableECAT_InitEnable = -1'Delay 3 seconds, wait for the driver to power on. The power-on time varies for different drivers. Adjust the delay according to the driver. DELAY(3000)'? "Bus communication cycle:", SERVO_PERIOD,"us"ECAT_Init() 'Call the initialization function DIM ScanNum'If not scanned, scan 4 times. IF ECAT_InitEnable<>1 THEN FOR ScanNum=0 to 3 ECAT_Init() 'Call the initialization function. IF ECAT_InitEnable=1 THEN EXIT FOR NEXT ENDIF END'/*************************************************************'Description: //Bus axis initialization'Input: //'Input: //'Input: //'Output: // ECAT_InitEnable=ON -->Initialization complete flag'Return: // '*************************************************************/GLOBAL SUB ECAT_Init() LOCAL NodeSum_Num ,BusAxis_Num ,NodeAxis_Num 'Total number of devices, total number of bus axes, number of motors on each node LOCAL Drive_Vender,Drive_Device,Drive_Alias ​​'Driver vendor ID, driver device ID, driver device DIP switch ID local i,j ? "Bus communication cycle:",SERVO_PERIOD,"us" RAPIDSTOP(2) 'Initialize and restore axis type FOR i = 0 TO ControlMaxAxis - 1 AXIS_ADDRESS(i) = 0 AXIS_ENABLE(i) = 0 ATYPE(i) = 0 WAIT IDLE(i) NEXT 'Local axis remapping FOR i=0 TO LocalAxis_Num -1 AXIS_ADDRESS(LocalAxis_Start+i)= (-1<<16) + i 'Map local axis 0-->i to axis 20-->20+i ATYPE(LocalAxis_Start+i)=0 'Axis type NEXT ECAT_InitEnable = -1 SYSTEM_ZSET = SYSTEM_ZSET OR 128 'Scan bus driver FOR i=0 to 3 SLOT_STOP(Bus_Slot) DELAY(200) SLOT_SCAN(Bus_Slot) IF NODE_COUNT(Bus_Slot) THEN EXIT FOR DELAY(1000) NEXT IF RETURN THEN NodeSum_Num = NODE_COUNT(Bus_Slot) ? "Bus scan successful, number of connected devices:",NodeSum_Num 'Total number of bus axes, starting from 0 BusAxis_Num = 0 FOR i = 0 TO NodeSum_Num - 1 NodeAxis_Num = NODE_AXIS_COUNT(Bus_Slot,i) 'Read the number of device motors Drive_Vender = NODE_INFO(Bus_Slot,i,0) 'Read drive manufacturer Drive_Device = NODE_INFO(Bus_Slot,i,1) 'Read device number Drive_Alias ​​= NODE_INFO(Bus_Slot,i,3) 'Read device DIP switch ID 'Axis settings FOR j = 0 TO NodeAxis_Num - 1 AXIS_ADDRESS(BusAxis_Num+BusAxis_Start) = BusAxis_Num + 1 'Map axis number ATYPE(BusAxis_Num+BusAxis_Start) = 65 'Set control mode 65 - Position 66 - Speed ​​67 - Torque (See AXISSTATUS for details) DRIVE_PROFILE(BusAxis_Num+BusAxis_Start) = 0 'Driver PDO settings, driver default settings -- -1 Position mode -- 0 Speed ​​mode -- 20+ Torque mode -- 30+ DISABLE_GROUP(BusAxis_Num+BusAxis_Start) 'Group each axis separately IF DRIVE_PROFILE(BusAxis_Num+BusAxis_Start)=4 OR DRIVE_PROFILE(BusAxis_Num+BusAxis_Start)=5 THEN 'Set the starting I/O address of the bus driver DRIVE_IO (BusAxis_Num+BusAxis_Start) = BusStartIoNum+8*(BusAxis_Num+BusAxis_Start) 'Set the negative limit REV_IN(BusAxis_Num+BusAxis_Start) = DRIVE_IO (BusAxis_Num+BusAxis_Start) INVERT_IN(DRIVE_IO (BusAxis_Num+BusAxis_Start),ON) 'Set the positive limit FWD_IN(BusAxis_Num+BusAxis_Start) = DRIVE_IO (BusAxis_Num+BusAxis_Start)+1 INVERT_IN(DRIVE_IO (BusAxis_Num+BusAxis_Start)+1,ON) 'Set the origin DATUM_IN(BusAxis_Num+BusAxis_Start) = DRIVE_IO (BusAxis_Num+BusAxis_Start)+2 INVERT_IN(DRIVE_IO (BusAxis_Num+BusAxis_Start)+2,ON) ELSEIF DRIVE_PROFILE(BusAxis_Num+BusAxis_Start)<4 THEN IF REV_IN(BusAxis_Num+BusAxis_Start)>=BusStaraIoNum THEN 'Cancel setting negative limit REV_IN(BusAxis_Num+BusAxis_Start) = -1 ENDIF IF FWD_IN(BusAxis_Num+BusAxis_Start)>=BusStaraIoNum THEN 'Cancel setting positive limit FWD_IN(BusAxis_Num+BusAxis_Start) = -1 ENDIF IF DATUM_IN(BusAxis_Num+BusAxis_Start)>=BusStaraIoNum THEN 'Cancel setting origin DATUM_IN(BusAxis_Num+BusAxis_Start) = -1 ENDIF ENDIF BusAxis_Num = BusAxis_Num + 1 'Bus axis count +1 NEXT 'Positive motion 24088 bus to pulse extended axis IF Drive_Vender = $41B AND Drive_Device = $1ab0 THEN local k for k=0 to 7 SDO_WRITE(Bus_Slot,i,$6011+k*$800,0,5,7) 'Set extended pulse axis ATYPE type SDO_WRITE(Bus_Slot,i,$6012+k*$800,0,6,0) 'Set extended pulse axis INVERT_STEP pulse output mode NODE_IO(Bus_Slot,i) = 32 + 32*i 'Set the starting mapping address of IO on 24088 next ENDIF NEXT ? "Axis scan mapping complete, number of connected bus axes:",BusAxis_Num DELAY(100) SLOT_START(Bus_Slot) WA(3000) 'Delay for 3 seconds, wait for driver clock synchronization. The time varies for different drivers. Adjust the delay according to the driver. IF RETURN THEN ? "Start clearing driver alarms" FOR i = BusAxis_Start TO BusAxis_Start + BusAxis_Num - 1 BASE(i) DRIVE_CLEAR(0) WA(10) DRIVE_CONTROLWORD(i) = 128 ' Servo error clear WA(10) DRIVE_CONTROLWORD(i)=6 ' Servo shutdown WA(10) 'DRIVE_CONTROLWORD(i)=7 ' Servo disable voltage 'WA(10) DRIVE_CONTROLWORD(i)=15 ' Servo fault reset WA(10) NEXT DELAY(100) ? "Controller alarm clearing complete" DATUM(0) ' Clear all axis error statuses. DELAY(1000) "Start Servo Enable" WDOG = 1 FOR i = BusAxis_Start TO BusAxis_Start + BusAxis_Num - 1 AXIS_ENABLE(i) = 1 NEXT "Servo Enable Complete" ECAT_InitEnable = 1 ELSE "Bus Start Failed" ECAT_InitEnable = 0 ENDIF ELSE "Bus Scan Failed" ECAT_InitEnable = 0 ENDIFENDSUB

The reference configuration uses a controller connected sequentially to one EIO24088-V2 expansion module and two Panasonic and one Delta EtherCAT bus drivers. Using the above initialization procedure, a communication connection is successfully established, and the controller status window displays the currently scanned connected nodes. The controller is the master on the bus. The first slave device connected to the controller is the EIO24088-V2 expansion module, and the second, third, and fourth slave devices are EtherCAT bus drivers, which can use the controller's local pulse axis interface. The axis numbers of the drive devices on the bus start from 0. The pulse drivers on the AXIS 0-7 interfaces of the EIO24088-V2 expansion module are mapped to axis numbers 0-7, the three EtherCAT bus drivers are mapped to axis numbers 8-10, and the local axes start from 11. The I/O numbers of the EIO24088-V2 expansion module start from 32.

Note: The mapped axis number and IO number must not be repeated throughout the entire control system. The numbering should be selected according to the specific situation.

Next, we will introduce the second method for bus initialization configuration: configuring the bus initialization script yourself through the RTSys project settings.

1. Create a new project in RTSys

2. Open EtherCAT configuration. Right-click in the project view, select Project Settings, and check Axis Configuration and EtherCAT Configuration.

3. Scan out the bus nodes to be configured

4. Configure axis number and type yourself

(1) Double-click the controller to open the controller configuration interface;

(2) Select the number of local pulse axes to use (this demonstration selects two local pulse axes);

(3) Remap the axis number to the local pulse axis;

(4) Select the axis type of the local pulse axis. Choose according to your usage.

(5) Map the axis numbers to the bus axes scanned by EtherCAT;

(6) Set the axis type;

(7) Select 65/66/67 according to the usage (different axis types require different PDO lists);

(8) Click the application to automatically generate the Startup.bas bus configuration file.

This demonstration is configured with two local pulse axes (axis numbers remapped to 11, 12), eight bus-to-pulse axes of the EIO24088-V2 (axis numbers remapped to 0-7), two Panasonic bus servo drives, and one GCL bus servo drive (axis numbers remapped to 8-10).

5. Configure PDO settings, selecting according to your needs.

(1) Select the node to be configured (this demonstration uses EIO24088-V2);

(2) Select the axes that need to be configured (all eight axes need to be configured);

(3) Configure PDO settings (select 0);

(4) After all axes are configured, click Apply to save the configuration.

The data dictionary details for each PDO setting can be found in the help documentation; choose the appropriate one based on your needs.

6. Download the configured Startup.bas file into the controller to perform bus initialization.

V. Resources extended through RTSys testing

1. Testing IO resources: In the absence of IO devices, we can directly connect the OUT and IN ports to judge the IO response. As shown in the figure below, to test the IO configuration of the EIO expansion module, connect the OUT2 (mapping number 34) terminal of EIO to the IN8 (mapping number 40) of EIO24088-V2. Operation OP (34) shows that the input port 40 receives a signal.

The I/O resources can also be tested by enabling the EtherCAT configuration in the project settings to test the I/O resources of the bus extension module.

(1) Open the EIO24088-V2 interface;

(2) Open the input/output ports of the EIO24088-V2;

(3) Connect OUT2 and IN7 on the bus extension EIO24088-V2. After OUT2 is turned on, IN7 is also set to 1, indicating that the IO is normal.

2. Test pulse axis

First, the pulse axis to be tested will be mapped (it has already been mapped during initialization and does not need to be mapped), such as testing axis 1 of EIO24088-V2.

·

AXIS_ADDRESS(7)=(0<<16)+1+1 'The second driver on the EtherCAT bus, driver number 1, bound to axis 7.

The extension module's DRIVE_PROFILE is configured to 0, and ATYPE is set to 65. However, since the extension is a bus-to-pulse type driver, the axis type is not 65. The actual axis type is configured using the SDO instruction to configure the data dictionary 6011h.

SDO command configures driver parameters:

For example: The actual axis type setting for the extended pulse axis is configured through the data dictionary 6011h (refer to the parameters in the table below, set them sequentially by axis number; the first driver is set to data dictionary 6011h+0*800h, the second driver is set to 6011h+1*800h, and so on, adding 800h to each driver, and other parameters are similar).

(1) Input and output:

(2) The first driver on the first expansion module:

Data dictionary reading syntax:

SDO_READ (slot number, device number, data dictionary number, data dictionary sub-number, data type, location of the data to be read in the TABLE)

SDO_READ_AXIS (axis_number, data_dictionary_number, data_dictionary_sub_number, data_type, table_location_to_read_data_store)

Data dictionary writing syntax:

SDO_WRITE (slot number, device number, data dictionary number, data dictionary sub-number, data type, write data value)

SDO_WRITE_AXIS (axis number, data dictionary number, data dictionary sub-number, data type, write data value)

Data dictionary read/write example:

Read and write axis type of axis 1 in EIO24088-V2 at node 0.

·

SDO_WRITE(0, 0, $6011 + 1 * $800, 0, 5, 7) 'Sets the axis type of axis 1 in EIO24088-V2 to 7. SDO_READ(0, 0, $6011 + 1 * $800, 0, 5, -1) 'Prints the axis type data of axis 1.

After confirming the axis type and pulse mode, during testing, first set the UNITS (pulse equivalent), SPEED (running speed), ACCEL (acceleration), and DECEL (deceleration) values ​​to a lower value to ensure safety. If set to automatic enable (through BIT8 of 6013H), check if the axis enable (AXIS_ENABLE) is set to 1. If manually enabled, the axis enable (AXIS_ENABLE) and the corresponding axis enable output port must be set to 1.

Send a motion command to see if the motor moves normally (see if DPOS and MPOS change). Then fill in the number of pulses for the driver to move 1mm or rotate one revolution into UNITS. At this time, MOVE(1) means moving 1mm or rotating one revolution. The unit of SPEED is mm/s or r/s.

Note: If the axis does not move during manual operation but the DPOS (command position) and MPOS (encoder feedback position) are changing, it indicates that the axis has moved, but the movement distance is too short to be visually apparent. Adding units as needed may help. If the axis can only move in one direction during manual operation, check the axis type and pulse mode of the driver (found in the driver manual or its software) and whether they match the axis type and pulse mode settings in 6011H and 6012H. Also check for loose wiring. Alternatively, you can test the bus-to-pulse axis of the bus expansion module by opening the axis configuration and EtherCAT configuration in the project settings.

(1) Select the axis to be tested;

(2) Set appropriate axis parameters;

(3) Automatic synchronization axis parameters;

(4) Enable the axis;

(5) Test whether the axis is normal by jogging through forward or reverse motion.

This concludes our sharing of the first part on the use of EtherCAT axis modules EIO24088-V2 and EIO16084 for 8-axis/4-axis motion technology: RTSys bus configuration and usage.

For more exciting content, please follow the "Zheng Motion Assistant" WeChat official account. For related development environment and example code, please contact Zheng Motion's technical sales engineer: 400-089-8936.

This article is original content from Zheng Motion Technology. We welcome everyone to reprint it for mutual learning and to jointly improve China's intelligent manufacturing level. Copyright belongs to Zheng Motion Technology. Please indicate the source if you reprint this article.

Read next

CATDOLL 108CM Coco (TPE Body with Hard Silicone Head) (Dark Tan Tone)

Height: 108cm Weight: 14.5kg Shoulder Width: 26cm Bust/Waist/Hip: 51/47/59cm Oral Depth: 3-5cm Vaginal Depth: 3-13cm An...

Articles 2026-02-22