PLC method call#
PLC method define.
{attribute 'TcRpcEnable'}
METHOD echo : STRING(130)
VAR_INPUT
user: STRING(20);
message: STRING(100);
END_VAR
echo := CONCAT(CONCAT(user, ': '), message);
Python code to call the method.
method_handle = client.get_handle_by_name("MAIN.test#echo")
request_payload = encode_ams_payload(
data={"user": "Alice", "message": "Hello World!"},
plc_t=STRUCT(fields=[("user", STRING(20)), ("message", STRING(100))]),
)
response_type = STRING(130)
request = ADSReadWriteRequest(
index_group=IndexGroup.SYMVAL_BYHANDLE,
index_offset=method_handle,
read_length=response_type.bytes_length,
write_data=request_payload,
)
response = client._send_ams_packet(command=ADSCommand.ADSSRVID_READWRITE, payload=request.to_bytes())
assert isinstance(response, ADSReadWriteResponse)
response_message = decode_ams_payload(raw_data=response.data, plc_t=response_type)
print(response_message)
client.release_handle(method_handle)
client.close()