如何更新OPC UA服务器中的节点

时间:2016-09-21 13:48:15

标签: c# server opc

我有一个新问题:如何更新OPC UA服务器中的节点 - C#?

我在EmptyNodeManager.cs的CreateAddressSpace中创建了节点。一切正常,但是当真实节点上的值发生变化时,客户端不会观察到变化。

下来是代码:

format-number(10, '00')

1 个答案:

答案 0 :(得分:0)

抱歉,我无法发表评论,所以我无法要求澄清,所以......

您没有显示用于更新变量的代码,并且您没有明确说明您正在使用哪个C#OPC-UA堆栈 - 我假设OPC Foundation堆栈,因为它有一个EmptyNodeManager。 / p>

在该堆栈中,在您调用ClearChangeMasks()之前不会发送更新,因此要更改变量,请使用以下内容:

    void Update(BaseVariableState variable, object value)
    {
        if (variable == null) throw new ArgumentNullException("variable");
        if (!object.Equals(variable.Value, value))
        {
            variable.Value = value;
            variable.Timestamp = m_timestamp;
            // SystemContext is a property in EmptyNodeManager
            variable.ClearChangeMasks(SystemContext, false);
        }
    }

请注意,除非订阅了该变量的更改,否则客户端无法看到更新。