After the slave’s XDD file is imported, the POWERLINK node is added to the network, and the required objects are configured as process data, the values appear in Automation Studio’s I/O mapping for cyclic access. Do not repeatedly call EplSDORead() or EplSDOWrite() just to imitate cyclic I/O. Those functions perform acyclic SDO transfers; cyclic exchange requires PDO configuration.
Read the panel symptoms first
You can reach the node, and explicit reads and writes complete, but the required states, busy flags, hardware signal, or trigger signal do not appear in the cyclic I/O image. Start here: prove whether the missing item is configured as process data.
| Symptom | Likely cause |
|---|---|
EplSDORead() returns the object, but no corresponding I/O point exists |
The object exists in the slave’s object dictionary but is not included in the configured PDO mapping. |
EplSDOWrite() changes a value, but program logic must issue every transfer |
The application is using acyclic SDO service calls instead of cyclic PDO data. |
| The object is listed by index and subindex but is absent from I/O mapping | The imported device description does not expose it as mapped process data, or the current slave configuration has not selected it. |
| The expected slave or mapping choices are unavailable | The correct XDD file has not been imported, or the slave has not been added and configured on the POWERLINK network. |
| A mapped value is present but does not behave as expected | Check data direction, object selection, data type, scaling, and the slave state before changing communication code. |
A working SDO transaction proves that the node and object can be addressed. It does not prove that the object belongs to the cyclic process image. That is not the fault; it is a transfer-class mismatch.
Choose PDO for cyclic signals
POWERLINK provides two relevant transfer paths:
- PDO: cyclic process data exchanged as part of the configured POWERLINK cycle. Automation Studio exposes selected PDO objects through the module’s I/O mapping.
-
SDO: acyclic object access initiated by the application. Use
EplSDORead()andEplSDOWrite()from the AsEPL library when the program needs an explicit transfer.
Put continuously consumed states, busy indications, and time-relevant command signals in PDOs when the slave permits those objects to be mapped. Keep setup values, diagnostics, and infrequently changed data on SDO access.
The word “cyclically” matters. Calling an SDO function from every PLC scan does not turn the object into PDO data. It creates repeated requests whose completion depends on the acyclic service path. That adds transaction state, error handling, and bus activity to logic that could otherwise read or write the process image directly.
Understand where the mapping comes from
The slave owns an object dictionary containing entries identified by index and subindex. Only a selected group of those objects is transferred in cyclic POWERLINK frames. The slave’s device description defines the objects and the process-data capabilities presented to the engineering tool.
Automation Studio builds its I/O mapping from the imported XDD description and the configured slave. An object being readable by SDO does not automatically make it selectable as a PDO. The object also needs a process-data mapping supported by the slave and represented by its device description.
EplCreateObject() is therefore not the normal route for adding an existing remote object to cyclic slave I/O. Creating or representing an object through a function does not alter the remote device’s supported PDO layout. For existing slave variables, configure the device and its process data first; use EplSDORead() or EplSDOWrite() only when the object must remain acyclic.
Configure the cyclic data path
For an Automation Studio project using AS 4.12 or 6.1 with an APC3100, work from the slave description toward the application variables.
- Obtain the matching XDD file. Match it to the actual POWERLINK slave and its implemented object dictionary. A description for a different device revision can expose the wrong objects or mapping choices.
- Import the XDD file into Automation Studio. Confirm that the intended slave becomes available for POWERLINK configuration.
- Add the slave to the POWERLINK network. Configure the node using the project’s actual network settings. Do not reuse an address already assigned to another node.
- Open the slave’s process-data configuration. Locate the required state, busy, hardware-signal, and trigger objects by their documented index and subindex.
- Select the required cyclic objects. Assign each object in the correct direction: slave-to-controller for status data and controller-to-slave for commands.
- Map the resulting I/O points. Connect the imported process data to application variables with matching data types and widths.
- Build and transfer the configuration. Clear configuration errors before testing application behavior.
If an existing object never appears among the selectable cyclic data, stop editing PLC logic. Check the slave register description and XDD mapping information. The object may be SDO-accessible without being PDO-mappable, or the device may require a separate slave-side mapping selection.
Verify the exchange at both layers
- Confirm the node reaches its normal operating state. A configured mapping cannot exchange valid process data while the slave is absent or held outside normal cyclic operation.
-
Watch the mapped input values online. Change a physical or internal slave state and verify that its mapped PLC variable follows without issuing
EplSDORead(). -
Test outputs deliberately. Toggle the mapped hardware or trigger command under safe machine conditions and verify that the slave receives the change without
EplSDOWrite(). - Compare direction and representation. A static or nonsensical value often points to reversed direction, an incorrect object, a data-width mismatch, byte interpretation, or scaling—not a failed POWERLINK connection.
- Separate PDO and SDO tests. If SDO access works but PDO data does not, inspect configuration, mapping, and node state. If both fail, diagnose addressing, device presence, and communication errors first.
For a trigger, verify both assertion and reset behavior in application logic. A trigger held continuously at one value may not produce another action if the receiving device expects a change of state. Read that behavior from the slave’s register description rather than guessing it from the object name.
Avoid the recurring dead ends
- Polling SDOs every PLC scan: This adds asynchronous transaction handling and does not create deterministic process data. Reserve SDOs for objects that are not mapped or do not require cyclic exchange.
-
Using
EplCreateObject()as a mapping shortcut: It does not replace importing the XDD, adding the slave, and configuring the supported PDOs. - Assuming every dictionary object is PDO-capable: SDO accessibility and PDO mappability are separate properties.
- Ignoring transfer direction: Status and busy objects normally travel toward the controller; command and trigger objects travel toward the slave. Configure each object according to the device description.
- Testing application logic before validating the I/O image: First watch the raw mapped value. Only then test scaling, interlocks, edge logic, and state sequencing.
-
Changing libraries to fix a device-description problem: If the desired cyclic item is absent, inspect the XDD and slave mapping capability. Rewriting calls to
EplSDORead()will not make the item appear in I/O mapping.
FAQ
Why does an SDO value not appear in Automation Studio I/O mapping?
The object can exist in the slave dictionary without being selected or supported as PDO data. Import the correct XDD, add the slave to the POWERLINK network, and inspect its process-data configuration.
Why does calling EplSDORead every scan not make the value cyclic?
EplSDORead() starts an acyclic SDO transaction. Cyclic values must be configured as PDOs and mapped into the controller’s I/O image.
Why does EplSDOWrite work while the mapped output does nothing?
Check that the output object is included in the controller-to-slave PDO direction, that its data type matches, and that the POWERLINK node is in normal cyclic operation. Then verify any edge or reset behavior required by the slave.
When should I stop troubleshooting POWERLINK mapping locally?
Stop when the correct XDD is loaded, the node communicates, SDO access succeeds, but the documented object still cannot be selected or exchanged as PDO data. Collect the project version, AS 4.12 or 6.1, slave identification, XDD file, object index and subindex, and communication diagnostics, then escalate through official B&R support and the slave manufacturer’s official support channel.