= Weidmüller Fieldbus Coupler UR20

Manages Weidmüller UR20 fieldbus coupler modules for digital input/output via Modbus TCP.

== Overview

This bundle provides integration with the Weidmüller UR20 Fieldbus Coupler (UR20-FBC-MOD-TCP-V2) and its modular I/O system. The component reads the fieldbus coupler configuration and dynamically creates Input and Output Channels for connected digital modules. This allows direct control and monitoring of industrial I/O modules through the Modbus TCP protocol.

The UR20 system is modular and extensible - multiple modules can be connected to a single coupler, with each module providing either digital inputs or outputs. Channels are named according to their module position and channel number within that module.

== Supported Devices

* https://catalog.weidmueller.com/catalog/Start.do?ObjectID=2476450000[UR20-FBC-MOD-TCP-V2 - Fieldbus Coupler icon:external-link[]]
* <<_digital_input_modules,UR20 Digital Input Modules>>
* <<_digital_output_modules,UR20 Digital Output Modules>>

== Components

This bundle implements the following OpenEMS Component with individual configuration:

=== <<_io_weidmueller_ur20,IO Weidmüller UR20>>

*Name*: IO Weidmüller Fieldbus Coupler UR20

*Factory-PID*: `io.openems.edge.io.weidmueller.ur20`

*Implemented Natures/Interfaces*:

* DigitalInput
* DigitalOutput

.*Configuration*:

* `id` (String): Component ID for unique identification (default: "io0")
* `alias` (String): Human-readable alias for the component
* `enabled` (Boolean): Enable/disable this component (default: true)
* `modbus_id` (String): ID of the Modbus bridge for communication (default: "modbus0")
* `modbusUnitId` (Integer): The Unit-ID of the Modbus device (default: 1)
* `Modbus_target` (String): Modbus target filter - auto-generated

== Module Channel Naming

The UR20 fieldbus coupler dynamically creates channels based on connected modules. Channel names follow this pattern: `\{component-id\}/\{channel-type\}M\{module-position\}C\{channel-number\}`

Assumptions for all examples below:

* Component-ID is `io0`
* Modules are in the first extension (M1)
* For extensions 2, 3, etc., increment the number behind `M`

[[_digital_input_modules]]
=== Digital Input Modules

Example: UR20-4DI-P (4 Digital Inputs)

|=======
|Channel Name |Type |Description
|`io0/DigitalInputM1C1` |Input |Digital input #1
|`io0/DigitalInputM1C2` |Input |Digital input #2
|`io0/DigitalInputM1C3` |Input |Digital input #3
|`io0/DigitalInputM1C4` |Input |Digital input #4
|=======

[[_digital_output_modules]]
=== Digital Output Modules

Example: UR20-8DO-P (8 Digital Outputs)

|=======
|Channel Name |Type |Description
|`io0/DigitalOutputM1C1` |Input/Output |Digital output #1
|`io0/DigitalOutputM1C2` |Input/Output |Digital output #2
|`io0/DigitalOutputM1C3` |Input/Output |Digital output #3
|`io0/DigitalOutputM1C4` |Input/Output |Digital output #4
|`io0/DigitalOutputM1C5` |Input/Output |Digital output #5
|`io0/DigitalOutputM1C6` |Input/Output |Digital output #6
|`io0/DigitalOutputM1C7` |Input/Output |Digital output #7
|`io0/DigitalOutputM1C8` |Input/Output |Digital output #8
|=======

https://github.com/OpenEMS/openems/tree/develop/io.openems.edge.io.weidmueller[Source Code icon:github[]]