es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Sobre OPC UA badsecurechannelclosed: “Badsecurechannelclosed” en OPC UA se refiere a un error que indica que el canal de seguridad utilizado para la comunicación entre dos dispositivos no es válido y ha sido cerrado. Este error puede ocurrir cuando hay un problema en la autenticación o en la integridad de los datos transmitidos. Si esto sucede, es importante verificar la configuración de seguridad para asegurarse de que cumpla con los requisitos necesarios y garantizar que el canal de comunicación sea seguro y esté protegido.

Tengo dos servidores OPC UA. Uno está implementado en Java y otro en Python. Es normal conectarse al servidor OPC UA de Java con opcuahalper. El mismo código se conecta al servidor de Python y reporta un error badsecurechannelclosed. ¿Hay algún amigo que haya encontrado este problema? ¿Cómo lo solucionaste?

Código abajo:
// seleccionar el mejor endpoint.
EndpointDescription endpointDescription = CoreClientUtils.SelectEndpoint( serverUrl, UseSecurity );
EndpointConfiguration endpointConfiguration = EndpointConfiguration.Create( m_configuration );

ConfiguredEndpoint endpoint = new ConfiguredEndpoint( null, endpointDescription, endpointConfiguration );

m_session = await Session.Create(
m_configuration,
endpoint,
false,
false,
(string.IsNullOrEmpty( OpcUaName )) ? m_configuration.ApplicationName : OpcUaName,
60000,
UserIdentity,
new string[] { } );
“`

Tags:  

Answer

  1. Avatar for davy.ai

    El problema podría estar relacionado con las diferencias en la configuración de seguridad entre los servidores OPC UA de Java y Python. Es posible que el servidor de Python tenga una política de seguridad más estricta o requiera diferentes configuraciones de seguridad, lo que podría provocar el cierre del canal seguro.

    Para solucionar este problema, podría intentar lo siguiente:

    1. Verificar las configuraciones de seguridad en ambos servidores y asegurarse de que sean consistentes. Es posible que necesite modificar las configuraciones de seguridad en el servidor de Python para que coincidan con las del servidor de Java.
    2. Si el problema persiste, podría intentar usar una biblioteca o herramienta de cliente OPC UA diferente para conectarse al servidor de Python. Puede haber problemas de compatibilidad con la biblioteca actual que está utilizando.

    3. También puede comunicarse con la comunidad de OPC UA o los desarrolladores del servidor de Python OPC UA para obtener más soporte sobre este problema, ya que pueden haber encontrado problemas similares en el pasado y tener recomendaciones o soluciones específicas para este escenario.

    En el código proporcionado, podría intentar modificar el parámetro UseSecurity a true y ver si eso resuelve el problema. Además, es posible que desee asegurarse de que la variable endpointDescription esté correctamente poblada con la información de punto final para el servidor de Python OPC UA.

    // select the best endpoint.
    EndpointDescription endpointDescription = CoreClientUtils.SelectEndpoint( serverUrl, true );
    EndpointConfiguration endpointConfiguration = EndpointConfiguration.Create( m_configuration );
    
    ConfiguredEndpoint endpoint = new ConfiguredEndpoint( null, endpointDescription, endpointConfiguration );
    
    m_session = await Session.Create(
        m_configuration,
        endpoint,
        false,
        false,
        (string.IsNullOrEmpty( OpcUaName )) ? m_configuration.ApplicationName : OpcUaName,
        60000,
        UserIdentity,
        new string[] { } );
    

Comments are closed.