Read / Write struct variable#

PLC structure definition#
{attribute 'pack_mode' := '1'}
TYPE SensorInfo:
STRUCT
    name: STRING(30);
    value: REAL;
    updateTime: DATE_AND_TIME;
END_STRUCT
END_TYPE
from datetime import datetime, timezone

from py_ads_client import DATE_AND_TIME, REAL, STRING, STRUCT, ADSClient, ADSSymbol

plc_ip = "192.168.88.20"
plc_ams_net_id = "192.168.88.20.1.1"
local_ams_net_id = "192.168.88.100.1.1"

client = ADSClient(local_ams_net_id=local_ams_net_id)
client.open(target_ams_net_id=plc_ams_net_id, target_ip=plc_ip)

symbol = ADSSymbol(
    name="GVL.sensorInfoVar",
    plc_t=STRUCT(fields=[("name", STRING(30)), ("value", REAL), ("updateTime", DATE_AND_TIME)]),
)

client.write_symbol(
    symbol, value={"name": "top", "value": 100.0, "updateTime": datetime(2020, 2, 7, 12, 25, 1, tzinfo=timezone.utc)}
)
sensor_value = client.read_symbol(symbol)
assert sensor_value == {
    "name": "top",
    "value": 100.0,
    "updateTime": datetime(2020, 2, 7, 12, 25, 1, tzinfo=timezone.utc),
}

client.close()