Стартовая страница › Форумы › Взаимодействие с устройствами › OPC › Ошибка OPC UA
- В этой теме 12 ответов, 2 участника, последнее обновление 2 года, 11 месяцев назад сделано
Mikhail.
-
АвторЗаписи
-
05.10.2023 в 11:22 #29885
manjey73Участник2023-10-05 11:20:28 Соединение с opc.tcp://10.0.0.5:62541/RapidScada/DrvDsOpcUaServer 2023-10-05 11:20:43 Ошибка при соединении с OPC-сервером: System.AggregateException: One or more errors occurred. (BadRequestTimeout) ---> Opc.Ua.ServiceResultException: BadRequestTimeout at Opc.Ua.Bindings.ChannelAsyncOperation 1.End(Int32 timeout, Boolean throwOnError) at Opc.Ua.Bindings.UaSCUaBinaryClientChannel.EndSendRequest(IAsyncResult result) at Opc.Ua.Bindings.UaSCUaBinaryTransportChannel.EndSendRequest(IAsyncResult result) at Opc.Ua.Bindings.UaSCUaBinaryTransportChannel.SendRequest(IServiceRequest request) at Opc.Ua.DiscoveryClient.GetEndpoints(RequestHeader requestHeader, String endpointUrl, StringCollection localeIds, StringCollection profileUris, EndpointDescriptionCollection& endpoints) at Opc.Ua.DiscoveryClient.GetEndpoints(StringCollection profileUris) at Scada.Comm.Drivers.DrvOpcUa.OpcClientHelperBase.SelectEndpoint() at Scada.Comm.Drivers.DrvOpcUa.OpcClientHelperBase.ConnectAsync() --- End of inner exception stack trace --- at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Threading.Tasks.Task.Wait() at Scada.Comm.Drivers.DrvOpcUa.Logic.OpcClientHelper.Connect()С чем связана ошибка и как ее исправить ?
-
Тема изменена 2 года, 11 месяцев назад пользователем
manjey73.
05.10.2023 в 11:29 #29887
manjey73УчастникСобственно при отвале от OPC UA сервера данные все зависают, если перезапустить линию, только тогда получаем
---в данных.
Почему данные не уходят в не валидное состояние? полагаю, что выбрасывает исключение, что выше и далее код не исполняется.05.10.2023 в 14:34 #29890
MikhailМодераторУточните, проблема в OPC UA сервере или клиенте (драйвере)?
05.10.2023 в 15:05 #29894
manjey73УчастникПроблема в клиенте. Просто оказалось что сервер недоступен, неправильные настройки VPN, соответственно связь отвалилась.
В исключение выпало при перезагрузке. При работе просто вроде подвисло (но это не точно)
06.10.2023 в 12:34 #29901
MikhailМодераторВ коде драйвера есть проверка, что связь потеряна. По идее драйвер должен скинуть статусы тегов и попытать переподключиться. Но может быть это не всегда отрабатывает, т.к. для проверки соединения используются функции библиотек OPC UA, которые неидеальны. И драйвер не идеален.
Попробуйте принудительно разрывать связь. Будет ли проблема воспроизводиться? И вообще, переподключение будет срабатывать хотя бы иногда?
-
Ответ изменён 2 года, 11 месяцев назад пользователем
Mikhail.
06.10.2023 в 12:39 #29902
MikhailМодераторЕщё попробуйте такой вариант, пожалуйста:
1. Разорвать сетевое соединение.
2. Перезапустить линию связи и получить ошибку подключения.
3. Установить сетевое соединение.
Подключится ли драйвер после пункта 3?06.10.2023 в 12:41 #2990406.10.2023 в 13:41 #29905
manjey73УчастникБыстро проверить не смогу. Но.
Из Администратора сервер доступен — Админ стоит на ПК, где игр с настройками VPN не проводились, ПК пингуется.
Коммуникатор стоит на другом ПК, где как раз что-то делали с VPN и подключения нет.
Фактически OPC клиент пытается ломиться в пустоту, думаю достаточно в Коммуникаторе сменить IP на несуществующий.
При перезапуске происходит выкидывание исключения.А как понимаю, исключения быть не должно. Должно быть сообщение, что сервер недоступен и все переменные в
---
Вероятно потеряв связь так же выскочило исключение и так как значения переменных были, они и не перевелись в---06.10.2023 в 16:53 #29906
manjey73Участник2023-10-06 16:51:49 Линия связи [3] OpcUaClient_54 остановлена -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- 2023-10-06 16:51:50 Запуск линии связи [3] OpcUaClient_54 2023-10-06 16:51:50 Соединение с opc.tcp://10.0.0.5:62541/RapidScada/DrvDsOpcUaServer 2023-10-06 16:52:05 Ошибка при соединении с OPC-сервером: System.AggregateException: One or more errors occurred. (BadRequestTimeout) ---> Opc.Ua.ServiceResultException: BadRequestTimeout at Opc.Ua.Bindings.ChannelAsyncOperation 1.End(Int32 timeout, Boolean throwOnError) at Opc.Ua.Bindings.UaSCUaBinaryClientChannel.EndSendRequest(IAsyncResult result) at Opc.Ua.DiscoveryClient.GetEndpoints(RequestHeader requestHeader, String endpointUrl, StringCollection localeIds, StringCollection profileUris, EndpointDescriptionCollection& endpoints) at Opc.Ua.DiscoveryClient.GetEndpoints(StringCollection profileUris) at Scada.Comm.Drivers.DrvOpcUa.OpcClientHelperBase.SelectEndpoint() at Scada.Comm.Drivers.DrvOpcUa.OpcClientHelperBase.ConnectAsync() --- End of inner exception stack trace --- at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) at Scada.Comm.Drivers.DrvOpcUa.Logic.OpcClientHelper.Connect() 2023-10-06 16:52:05 Соединение с opc.tcp://10.0.0.5:62541/RapidScada/DrvDsOpcUaServerПерезапуск линии на отсутствующий в доступе UA сервер = исключение
з.ы. 6.1.5 не пробовал еще, это вроде 6.1.407.10.2023 в 11:53 #29907
MikhailМодераторПри перезапуске нормальное поведение — попытки переподключения.
Если драйвер увидел обрыв сессии, то он должен написать сообщение в журнал линии связи. Запросы KeepAlive отправляются периодически, но с каким периодом не могу сейчас сказать. Нужно в отладчике посмотреть OpcSession.KeepAliveInterval по умолчанию.07.10.2023 в 12:46 #29908
manjey73УчастникНеважно, есть подключение или его нет, не важны попытки. Суть в клиенте самой Scada, он не должен вываливаться в исключение, а должен выполнить InvalidateData и в логе написать, что подключения нет.
Вот в чем загвоздка. Потому что когда связь отваливается, то все значения зависают на последнем, не происходит их преобразование в невалидное.
Просто прямые линии на всех графиках на последних значениях/
А при выбрасывании исключения не продолжается код, который как раз и переведет переменные в невалидное состояние, не выдаст Status и так далее…07.10.2023 в 12:47 #29909
manjey73УчастникКакую ошибку выдал трудно посмотреть, логи уже затерты вероятно…
09.10.2023 в 10:48 #29915
MikhailМодераторСоединитесь с OPC-сервером, затем отключите VPN, проверьте как будет работать драйвер при этом.
-
Тема изменена 2 года, 11 месяцев назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.