修复添加订阅时,值死区过滤逻辑

This commit is contained in:
Kimdiego2098
2023-07-18 11:13:21 +08:00
parent a9d3017123
commit 36923d3190
@@ -283,12 +283,18 @@ public class OPCUAClient : DisposableObject
m_session.AddSubscription(m_subscription);
m_subscription.Create();
foreach (var item in m_subscription.MonitoredItems.Where(a => a.Status.Error?.StatusCode == Opc.Ua.StatusCodes.BadFilterNotAllowed))
foreach (var item in m_subscription.MonitoredItems.Where(a => a.Status.Error!=null&& StatusCode.IsBad( a.Status.Error.StatusCode)))
{
item.Filter = new DataChangeFilter() { DeadbandValue = OPCNode.DeadBand, DeadbandType = (int)DeadbandType.None, Trigger = DataChangeTrigger.StatusValue };
}
m_subscription.ApplyChanges();
var iserror = m_subscription.MonitoredItems.Any(a => a.Status.Error != null && StatusCode.IsBad(a.Status.Error.StatusCode));
if(iserror)
{
UpdateStatus(iserror, DateTime.UtcNow, m_subscription.MonitoredItems.FirstOrDefault(a => a.Status.Error != null && StatusCode.IsBad(a.Status.Error.StatusCode)).Status.Error.ToString());
}
lock (dic_subscriptions)
{
if (dic_subscriptions.ContainsKey(subscriptionName))
@@ -903,7 +909,7 @@ public class OPCUAClient : DisposableObject
m_session = await Opc.Ua.Client.Session.Create(
m_configuration,
endpoint,
true,
false,
false,
(string.IsNullOrEmpty(OPCUAName)) ? m_configuration.ApplicationName : OPCUAName,
60000,