Advanced API¶
Tier: Advanced / Evolving
Lower-level bank metadata and Modbus mapping helpers.
pyclickplc.BANKS
module-attribute
¶
BANKS: dict[str, BankConfig] = {
"X": BankConfig(
"X", 1, 816, BIT, valid_ranges=_SPARSE_RANGES
),
"Y": BankConfig(
"Y", 1, 816, BIT, valid_ranges=_SPARSE_RANGES
),
"C": BankConfig("C", 1, 2000, BIT),
"T": BankConfig(
"T", 1, 500, BIT, interleaved_with="TD"
),
"CT": BankConfig(
"CT", 1, 250, BIT, interleaved_with="CTD"
),
"SC": BankConfig("SC", 1, 1000, BIT),
"DS": BankConfig("DS", 1, 4500, INT),
"DD": BankConfig("DD", 1, 1000, INT2),
"DH": BankConfig("DH", 1, 500, HEX),
"DF": BankConfig("DF", 1, 500, FLOAT),
"XD": BankConfig("XD", 0, 16, HEX),
"YD": BankConfig("YD", 0, 16, HEX),
"TD": BankConfig(
"TD", 1, 500, INT, interleaved_with="T"
),
"CTD": BankConfig(
"CTD", 1, 250, INT2, interleaved_with="CT"
),
"SD": BankConfig("SD", 1, 1000, INT),
"TXT": BankConfig("TXT", 1, 1000, TXT),
}
pyclickplc.BankConfig
dataclass
¶
Configuration for a single PLC memory bank.
pyclickplc.DataType ¶
Bases: IntEnum
DataType mapping from MDB database.
pyclickplc.ModbusMapping
dataclass
¶
Modbus address mapping configuration for a PLC memory bank.
pyclickplc.plc_to_modbus ¶
Map PLC address to (modbus_address, register_count).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
bank
|
str
|
Bank name (e.g. "X", "DS", "XD") |
required |
index
|
int
|
MDB index (e.g. 1 for X001, 0 for XD0, 2 for XD1) |
required |
Returns:
| Type | Description |
|---|---|
tuple[int, int]
|
Tuple of (modbus_address, register_count) |
Raises:
| Type | Description |
|---|---|
ValueError
|
If bank or index is invalid |
pyclickplc.modbus_to_plc ¶
Reverse map Modbus address to (bank, display_index) or None.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
address
|
int
|
Raw Modbus coil or register address |
required |
is_coil
|
bool
|
True for coil address space, False for register space |
required |
Returns:
| Type | Description |
|---|---|
tuple[str, int] | None
|
Tuple of (bank_name, display_index) or None if unmapped |
pyclickplc.pack_value ¶
Pack a Python value into Modbus register(s).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
value
|
bool | int | float | str
|
The value to pack |
required |
data_type
|
DataType
|
The DataType determining the encoding |
required |
Returns:
| Type | Description |
|---|---|
list[int]
|
List of 16-bit register values |
Raises:
| Type | Description |
|---|---|
ValueError
|
If data_type is BIT (coils don't use register packing) |
pyclickplc.unpack_value ¶
Unpack Modbus register(s) into a Python value.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
registers
|
list[int]
|
List of 16-bit register values |
required |
data_type
|
DataType
|
The DataType determining the decoding |
required |
Returns:
| Type | Description |
|---|---|
int | float | str
|
The unpacked Python value |