и я пришел к нескольким проблемам на этом пути. Я изо всех сил пытался добраться до фактических переменных данных, которые я отправляю с сервером. Мне удается подключиться к нему и подписаться, но я не могу получить желаемые значения отслеживания, которые будут записаны с помощью метода onnotification .
Код: Выделить всё
Console.WriteLine("6 - Add a list of items (server current time and status) to the subscription.");
exitCode = ExitCode.ErrorMonitoredItem;
var list = new List
{
new MonitoredItem(subscription.DefaultItem)
{
DisplayName = "ServerStatusCurrentTime", StartNodeId = "i="+Variables.Server_ServerStatus_CurrentTime.ToString()
}
};
list.ForEach(i => i.Notification += OnNotification);
subscription.AddItems(list);
< /code>
Здесь образец добавляет новый Monitororeditem в список. Когда я попытался добавить свой собственный элемент, я никогда не получал от него ответа, хотя сервер все время отправляет измененные значения, и поэтому он должен запустить метод OnNotification {
Console.WriteLine(" {0}, {1}, {2}", rd.DisplayName, rd.BrowseName, rd.NodeClass);
ReferenceDescriptionCollection nextRefs;
byte[] nextCp;
session.Browse(
null,
null,
ExpandedNodeId.ToNodeId(rd.NodeId, session.NamespaceUris),
0u,
BrowseDirection.Forward,
ReferenceTypeIds.HierarchicalReferences,
true,
(uint)NodeClass.Variable | (uint)NodeClass.Object | (uint)NodeClass.Method,
out nextCp,
out nextRefs);
foreach (var nextRd in nextRefs)
{
Console.WriteLine(" + {0}, {1}, {2}", nextRd.DisplayName, nextRd.BrowseName, nextRd.NodeClass);
}
}
< /code>
и так: < /p>
var list = new List
{
new MonitoredItem(subscription.DefaultItem)
{
DisplayName = "Simulation", StartNodeId = "ns=2;s=85\:Simulation"
}
};
< /code>
Я никогда не получаю никакого значения, возвращаемого. Я каким -то образом запутался со стандартом OPC UA и его способом упаковки данных.
Подробнее здесь: https://stackoverflow.com/questions/591 ... ole-client
Мобильная версия