Подключение к OPC UA Owen

Просмотр 15 сообщений - с 16 по 30 (из 45 всего)
  • Автор
    Записи
  • #32277
    manjey73
    Участник

    Ну я не покупал 🙂 есть ПЛК100, который туда можно вкорячить, руки не доходят.
    Вопрос встал в другом, другой человек пытается подключиться и не смог.
    И я не смог.

    А идея передавать сигналы между устройствами облака, это возможно либо используя OPC UA либо мой драйвер по API + RapidScada и МАУ

    ну или другие Scada системы с подобным функционалом.
    А тут даже Prosys не может подключиться, хотя все настройки совпадают по их документации.

    з.ы. я задал вопрос через обратную связь, но ответа пока нет

    #32279
    Mikhail
    Модератор

    Клиент наверняка передаёт сертификат. Он его может не передавать, если только все параметры безопасности стоят в значениях Нет (или аналогичных).

    Вопрос в том, что делает OPC-сервер с этими сертификатами. Самый простой вариант для сервера — принимать все сертификаты подряд.

    #32285
    manjey73
    Участник

    Сертификат выдан DrvOpcUa — действителен по 06.04.2024

    Может еще в этом дело?

    Сертификат лежит в ProgramData\OPC Foundation\pki\trusted\certs

    • Ответ изменён 2 года, 3 месяца назад пользователем manjey73.
    #32287
    manjey73
    Участник

    Состояние сертификата

    Нет доверия к этому корневому сертификату центра сертификации, так как он не найден в хранилище доверенных корневых сертификатов центров сертификации.

    #32299
    Mikhail
    Модератор

    Можно попробовать удалить устаревший сертификат на клиенте. Тогда он новый создаст, скорее всего.

    Но эти сертификаты самоподписанные, поэтому доверия к ним не будет у сервера, если он требует по-настоящему валидных сертификатов. Может Let’s Encrypt здесь поможет. Желательно проконсультироваться с Овен, какие сертификаты для них подойдут.

    #32302
    manjey73
    Участник

    Удалил, но он создал новый сертификат с той же датой окончания 06.04.2024

    #32330
    Mikhail
    Модератор

    На моём ПК аналогично. Может создать сертификат вручную? Ссылка
    Или подсунуть клиенту валидный сертификат, который будет распознаваться OPC-сервером.

    #32331
    manjey73
    Участник

    И где найти то, что требуется скачать? ссылки только на тексты и бла-бла-бла
    Даже попробовать непонятно как.

    #32335
    Mikhail
    Модератор

    Я не пробовал у себя. С сертификатами нужно разбираться. Если Вам удастся что-то накопать на эту тему и понять, как они генерируются, будет очень полезно. Возможно, для этого потребуется собрать библиотеки OPC-клиента и посмотреть их работу в отладчике. Они нормально собирались.

    #32337
    manjey73
    Участник

    Понятно. Подождем каких-то ответов от Овен.
    Пока они направили к вам 🙂 на что я написал, что Prosys тоже не подключается.
    Жду ответа.

    #32339
    manjey73
    Участник

    Воспользовался еще одной программой. UA Expert
    Она при подключении отругалась на невалидный сертификат сервера, но позволяет при этом игнорировать эти ошибки, после чего подключение произошло.

    1

    2

    Так что клиент все-таки получает сертификат и проверяет его, а он кривой, соответственно происходит отлуп…
    Можно как-то в код клиента добавить игнорирование валидности сертификата сервера?
    Настройку добавить для таких случаев?

    #32341
    manjey73
    Участник
            private async Task<bool> ConnectToOpcServer()
            {
                try
                {
                    OpcClientHelperView helper = new(lineConfig.ConnectionOptions, LogStub.Instance, appDirs)
                    { 
                        AutoAccept = true 
                    };
    
                    await helper.ConnectAsync(); // Тут вылетает в исключение
                    opcSession = helper.OpcSession;
                    return true;
                }
                catch (Exception ex)
                {
                    ScadaUiUtils.ShowError(ex.BuildErrorMessage(DriverPhrases.ConnectServerError));
                    opcSession = null;
                    return false;
                }
                finally
                {
                    SetServerButtonsEnabled();
                }
            }
    
    • Ответ изменён 2 года, 3 месяца назад пользователем manjey73.
    #32343
    manjey73
    Участник

    await helper.ConnectAsync(); отметил где вылетает в исключение.

    Так понимаю, что происходит вызов уже внешней библиотеки. И как это можно обойти?

    #32344
    manjey73
    Участник

    Opc.Ua.ServiceResultException: «Error establishing a connection: Could not send an Open Secure Channel request.»

    Изначально это исключение было создано в этом стеке вызовов: 
        [Внешний код]
        Scada.Comm.Drivers.DrvOpcUa.OpcClientHelperBase.SelectEndpoint() в OpcClientHelperBase.cs
        Scada.Comm.Drivers.DrvOpcUa.OpcClientHelperBase.ConnectAsync() в OpcClientHelperBase.cs
        Scada.Comm.Drivers.DrvOpcUa.View.Forms.FrmDeviceConfig.ConnectToOpcServer() в FrmDeviceConfig.cs
    #32345
    manjey73
    Участник

    Сервер OPC UA ведет себе немного иначе при отключенной опции
    «Автоматически принимать сертификаты»

    1

    А вот с установленной опцией

    2

    Время сертификата тю-тю. Запускал не знаю, первый раз или нет, где на Linuix найти сертификат и удалить его, чтобы он пересоздался?

Просмотр 15 сообщений - с 16 по 30 (из 45 всего)
  • Для ответа в этой теме необходимо авторизоваться.