Skip to content

Trouble writing uax:ListOfUInt16 from file #1559

@lkaupp

Description

@lkaupp

Hi devs,

have a saved file with e.g. (date, nodeid, dtype):
2021-12-13 13:01:32.047000,ns=3;s=Station20_AOIPruefung.St20 SoftSPS.WP321DR_DB.internal.s_DR,"[34, 26, 201, 1, 4112, 16928, 8224, 8224, 12334, 12342, 12320, 27495, 8224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]",UInt16

now i startup the server and import the xml:

<?xml version='1.0' encoding='UTF-8'?>
<UANodeSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:uax="http://opcfoundation.org/UA/2008/02/Types.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://opcfoundation.org/UA/2011/03/UANodeSet.xsd">
  <NamespaceUris>
    <Uri>urn:Siemens.Automation.SimaticNET.S7OPT:(23F5EE98-D057-4046-BF37-3451D8069DE0)</Uri>
    <Uri>SYM:</Uri>
  </NamespaceUris>
  <Aliases>
    <Alias Alias="Boolean">i=1</Alias>
    <Alias Alias="SByte">i=2</Alias>
    <Alias Alias="Byte">i=3</Alias>
    <Alias Alias="Int16">i=4</Alias>
    <Alias Alias="UInt16">i=5</Alias>
    <Alias Alias="Int32">i=6</Alias>
    <Alias Alias="UInt32">i=7</Alias>
    <Alias Alias="Int64">i=8</Alias>
    <Alias Alias="UInt64">i=9</Alias>
    <Alias Alias="Float">i=10</Alias>
    <Alias Alias="Double">i=11</Alias>
    <Alias Alias="String">i=12</Alias>
    <Alias Alias="DateTime">i=13</Alias>
    <Alias Alias="ByteString">i=15</Alias>
    <Alias Alias="Organizes">i=35</Alias>
    <Alias Alias="HasTypeDefinition">i=40</Alias>
  </Aliases>
<UAVariable NodeId="ns=2;s=Station20_AOIPruefung.St20 SoftSPS.WP321DR_DB.internal.s_DR" BrowseName="2:s_DR" ValueRank="1" ArrayDimensions="128" DataType="UInt16" AccessLevel="3" UserAccessLevel="3" >
    <DisplayName>s_DR</DisplayName>
    <References>
      <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
    </References>
    <Value>
      <uax:ListOfUInt16>
        <uax:UInt16>34</uax:UInt16>
        <uax:UInt16>26</uax:UInt16>
        <uax:UInt16>201</uax:UInt16>
        <uax:UInt16>1</uax:UInt16>
        <uax:UInt16>4112</uax:UInt16>
        <uax:UInt16>16928</uax:UInt16>
        <uax:UInt16>8224</uax:UInt16>
        <uax:UInt16>8224</uax:UInt16>
        <uax:UInt16>13358</uax:UInt16>
        <uax:UInt16>12336</uax:UInt16>
        <uax:UInt16>12576</uax:UInt16>
        <uax:UInt16>27495</uax:UInt16>
        <uax:UInt16>8224</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
        <uax:UInt16>0</uax:UInt16>
      </uax:ListOfUInt16>
    </Value>
  </UAVariable>
</UANodeSet>

if i try something like that:

variant_name_to_type_dict = {variant.name: variant for variant in VariantType}
variant_type = ua.VariantType(variant_name_to_type_dict[row['dtype']])
node = server.get_node(ua.NodeId.from_string(row['nodeid']))
var = string_to_val(row['value'], variant_type) #ua utils helper function
await node.write_value(string_to_val(row['value'], variant_type))

I receive the following:
asyncua.ua.uaerrors._auto.BadTypeMismatch: The value supplied for the attribute is not of the same type as the attribute"s value.(BadTypeMismatch)

So my question, is there a standard way to reverse method to read and write data values from file to the server? I do not receive any data changed events either because the data variant types have a mismatch with the server or the data type completely differs. Any advice to implement a correct data loader?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions