OPC UA订阅和通知

时间:2015-04-08 18:41:25

标签: opc opc-ua

我在ANSI C堆栈中遇到OPC UA订阅和通知问题。 OPC UA第4部分,服务说:

  

5.13.1订阅模型   5.13.1.1描述c)NotificationMessages被发送到客户端以响应发布请求。

发送怎么样?我真的期待某种回调,但似乎并不是一回事。它确实说这些是对“发布”的反应。请求,但发布服务电话确认收到通知,它似乎没有请求通知。此外,这将是民意调查,而且订阅和监控的重点不在于民意调查。

任何人都可以提供一个示例,显示在ANSI C中监视数据值吗?

2 个答案:

答案 0 :(得分:4)

PublishRequests在服务器上排队,只有在通知准备好或需要发送保持活动时才返回响应(或者其他一些东西,请检查第4部分中的状态机描述)。

它们确实包括先前收到的通知的确认,但是想法是不立即预期响应,并且客户端通常会不断地将PublishRequests抽出,以便服务器有一个准备好返回它们的队列订阅需要时发出通知。

是的,这是民意调查。它不是一个严格的未经请求,但它的工作方式有点令人沮丧。

答案 1 :(得分:0)

这是C#代码。我希望它会对你有所帮助。

private NotificationMessageReceivedEventHandler
    m_NotificationMessageReceived;

// ...

m_NotificationMessageReceived = 
    new NotificationMessageReceivedEventHandler
       (Subscription_NotificationMessageReceived);
m_subscription.NotificationMessageReceived +=
    Subscription_NotificationMessageReceived;

// ...

private void Subscription_NotificationMessageReceived
    (Subscription subscription,
     NotificationMessageReceivedEventArgs e)
{
    if (e.NotificationMessage.NotificationData == null ||
        e.NotificationMessage.NotificationData.Count == 0)
    {
        LogMessage("{0:HH:mm:ss.fff}: KeepAlive",
                   e.NotificationMessage.PublishTime.ToLocalTime());
    }
}