You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在OPC UA命名空间XML中设置Float变量的ValuePrecision

OPC UA Float变量通过ValuePrecision设置精度的正确XML配置

可行性确认

可以通过DataItemType的ValuePrecision属性设置Float变量的精度。该属性是DataItemType的标准属性,用于指定数值类型变量(包括Float、Double)的显示或处理精度,取值规则如下:

  • 值为-1:使用变量数据类型的默认精度(Float默认约6-7位有效数字)
  • 值为正数:指定保留的小数位数(如2表示保留两位小数)

现有配置的问题

你当前的XML错误在于自定义了ValuePrecision属性节点,但DataItemType已经自带标准的ValuePrecision属性(NodeId i=884),OPC UA栈只会识别标准属性作为精度配置项,自定义的同名属性无法被解析。

正确的XML配置步骤

  1. 确保Float变量的类型为DataItemType或其子类型(如AnalogItemType,NodeId i=2365)
  2. 移除自定义的ns=1;i=3 ValuePrecision变量节点
  3. 在Float变量的<References>中添加对标准ValuePrecision属性的引用,并通过<Extension>或直接设置属性值(部分UA栈支持直接在变量节点内配置属性值)

修正后的XML示例

<?xml version="1.0" encoding="utf-8"?>
<UANodeSet LastModified="2023-10-03T09:41:55Z" xmlns="http://opcfoundation.org/UA/2011/03/UANodeSet.xsd" xmlns:uax="http://opcfoundation.org/UA/2008/02/Types.xsd" xmlns:si="http://www.siemens.com/OPCUA/2017/SimaticNodeSetExtensions">
  <NamespaceUris>
    <Uri>test</Uri>
  </NamespaceUris>
  <Aliases>
    <Alias Alias="FLOAT">i=10</Alias>
    <Alias Alias="DOUBLE">i=11</Alias>
    <Alias Alias="Organizes">i=35</Alias>
    <Alias Alias="HasTypeDefinition">i=40</Alias>
    <Alias Alias="HasProperty">i=46</Alias>
    <Alias Alias="AnalogItemType">i=2365</Alias>
    <Alias Alias="ValuePrecision">i=884</Alias>
  </Aliases>
  <UAVariable NodeId="ns=1;i=1" BrowseName="1:float" DataType="FLOAT" AccessLevel="3">
    <DisplayName>float</DisplayName>
    <Description>float</Description>
    <References>
        <Reference ReferenceType="HasTypeDefinition">AnalogItemType</Reference>
        <Reference ReferenceType="HasProperty">ValuePrecision</Reference>
        <Reference ReferenceType="Organizes" IsForward="false">i=85</Reference>
    </References>
    <Value>
      <uax:Float>12.3456789123456789</uax:Float>
    </Value>
    <!-- 配置ValuePrecision属性的值 -->
    <Extensions>
      <Extension>
        <UAVariable NodeId="ValuePrecision" ParentNodeId="ns=1;i=1" DataType="DOUBLE">
          <Value>
            <uax:Double>2</uax:Double>
          </Value>
        </UAVariable>
      </Extension>
    </Extensions>
  </UAVariable>
</UANodeSet>

关键说明

  • 使用别名ValuePrecision引用标准属性节点i=884,避免硬编码节点ID
  • 通过<Extensions>配置标准属性的取值,这里设置为2表示保留两位小数
  • 若UA栈不支持<Extensions>方式,也可以单独定义标准属性的实例,但需确保ParentNodeId指向Float变量,且NodeId继承自标准属性(如ns=1;i=884,命名空间与变量一致)

内容的提问来源于stack exchange,提问作者sjoene

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 09:55:57