0

这就是我目前尝试将字符串数组写入 opcua 服务器上的 opcua 变量的方式(附图 2 给出了属性)。下面的方法接受一个字符串 [] 并尝试将此字符串写入变量。我可以使用类似的方法轻松读取变量。

async writeFeatureName(arrayToWrite: String[]): Promise <any> {
     console.log(arrayToWrite);
     let nodesToWrite = [{
      nodeId: "ns=3;s=\"DB_ScvsInterface01".\"OUT\".\"FeatureName\"",
      attributeId: AttributeIds.Value,
        value: new DataValue({
        statusCode: StatusCodes.Good,
        value: new Variant({
          dataType: DataType.String,
          arrayType: VariantArrayType.Array,
          value: arrayToWrite
        })
      }),


    }];

    const dataValue = await this.session.write(nodesToWrite);
    winston.debug(`wrote Feature Name Array : ${dataValue.toString()}`);
    return dataValue
  }

当我尝试写入服务器上的变量时,我得到类型不匹配。该数组的类型为 string[]。我尝试了各种建议,但我没有找到将数组写入服务器上的数组的明确示例?这甚至可能吗?

这张图片显示了我得到的错误,这是一个类型不匹配

这是我要写入的变量的服务器属性

4

1 回答 1

0

您正在使用正确的技术将字符串数组写入变量。

但是,该变量的arrayDimension 属性为[60],它指定该变量应包含数组中的60 个元素。

我想知道arrayToWrite是否包含60个元素,你能检查一下吗?

于 2022-02-18T19:56:01.897 回答