# Siemens S7+ Endpoint Properties

## `address` (string)

Direct memory address for absolute addressing mode. Supports access to data blocks (DB), input areas (I), output areas (Q), and memory areas (M). This is a proof-of-concept feature with limited testing. Use `nodeId` for production environments. Refer to Siemens S7 documentation for complete addressing syntax.

Examples: `"DB1,B0.64"`, `"DB1,R0.20"`, `"PII30"`, `"PIW30"`

## `nodeId` (string)

Hierarchical path to a symbol within the TIA Portal project structure. The path uses dot notation to navigate from the root PLC through program blocks to the specific variable. Each segment represents a level in the project hierarchy.

Examples: `"PLC_1.Blocks.cnt_down_timer.ST"`, `"PLC_1.Blocks.pulse.PT"`, `"PLC_1.Blocks.Data_block_1.Temperature"`, `"PLC_1.Blocks.Data_block_1.Lux"`

## `dataType` (string, enum)

Siemens S7 data type specification for the target variable. For array operations, this defines the data type of individual array elements (requires `isArray` to be `true`). Supported types include basic types (BOOL, INT, REAL), strings (STRING, WSTRING), and time types (TIMER, COUNTER).

This element must be one of the following enum values:

* `X`
* `B`
* `BOOL`
* `BYTE`
* `C`
* `CHAR`
* `WCHAR`
* `WORD`
* `INT`
* `DWORD`
* `DINT`
* `REAL`
* `LREAL`
* `LINT`
* `S`
* `STRING`
* `WSTRING`
* `DT`
* `DTZ`
* `DTL`
* `DTLZ`
* `TIMER`
* `COUNTER`

Examples: `"DINT"`, `"REAL"`, `"BYTE"`

## `isArray` (boolean)

Indicates whether the target variable is an array. When `true`, the operation will read/write multiple consecutive elements of the specified data type. Must be used in conjunction with `arrayLength`.

Default: `false`

## `arrayLength` (integer)

Number of consecutive elements in the array as configured on PLC. Required when `isArray` is `true` for the chosen `dataType`.

Additional restrictions:

* Minimum: `1`

## `browse` (string, enum)

This parameter is reserved for future use. It currently has no effect.

This element must be one of the following enum values:

* `flat`
* `hierarchical`
* `datablocks`

Example: `"flat"`

## `interval` (integer)

Polling frequency (in milliseconds) for subscribe operations using best-effort polling. Determines how often the system reads data from the PLC. Lower values provide more real-time data but increase network and CPU load.

Default: `1000`

Example: `2000`
