OPC UA JAVA 개발 노트 (A) : 마일로의 지인 라이브러리

최근에서 빙빙 돌고, OPC UA 라이브러리의 다양한보고, 특히 OPC 재단의 라이브러리는 예를 들어 마일로 서버 데이터베이스를 통해 앉아 때까지, 특히 혼란, 후 모습, 어떻게 OPC UA 서버를 작성하는 마지막으로 우리는 어떤 이해를 가지고있다.
마일로는 이클립스 오픈 소스 프로젝트 중 하나 GitHub의 주소 : 마일로
우리가 직접 서버 루틴을 통해 전체 서버를 실행하는 방법을 알아 보려면 :

1. 주 기능

public static void main(String[] args) throws Exception {
        ExampleServer server = new ExampleServer();

        server.startup().get();

        final CompletableFuture<Void> future = new CompletableFuture<>();

        Runtime.getRuntime().addShutdownHook(new Thread(() -> future.complete(null)));

        future.get();
    }

이것은 신체의 서버의 주요 기능, 그것은 다음과 같은 주요 사항을 포함 :

  1. 서버 객체를 생성하고, 서버를 시작합니다
  2. 비동기 쓰기 모드의 정의 (CompletableFuture 라이브러리는 어떻게 볼 수 없습니다)

2.Server 정의 방법

우리는 주로 서버를 정의하는 방법을 보려면 다음으로

인증서를 가져옵니다

SelfSignedHttpsCertificateBuilder httpsCertificateBuilder = new SelfSignedHttpsCertificateBuilder(httpsKeyPair);
httpsCertificateBuilder.setCommonName(HostnameUtil.getHostname());
HostnameUtil.getHostnames("0.0.0.0").forEach(httpsCertificateBuilder::addDnsName);
X509Certificate httpsCertificate = httpsCertificateBuilder.build();

이것은 구체적으로 참조, OPC UA 암호화 송신을 요구 X509 인증서 파일로서 생성 될 인증서를 생성한다 .

인증서의 검증 후 관련이있다.

OPC UA 서버 구성

String applicationUri = CertificateUtil
            .getSanUri(certificate)
            .orElseThrow(() -> new UaRuntimeException(
                StatusCodes.Bad_ConfigurationError,
                "certificate is missing the application URI"));

Set<EndpointConfiguration> endpointConfigurations = createEndpointConfigurations(certificate);

URI 주소는 인증서를 획득하고 구성 방법의 방법에 의해 엔드 포인트 구성을 달성 마일로 ExampleServer 상세한

 OpcUaServerConfig serverConfig = OpcUaServerConfig.builder()
     .setApplicationUri(applicationUri)
     .setApplicationName(LocalizedText.english("Eclipse Milo OPC UA Example Server"))
     .setEndpoints(endpointConfigurations)
     .setBuildInfo(
         new BuildInfo(
             "urn:eclipse:milo:example-server",
             "eclipse",
             "eclipse milo example server",
             OpcUaServer.SDK_VERSION,
             "", DateTime.now()))
      //设置对应的证书管理器
     .setCertificateManager(certificateManager)
     //获取信任列表 --- 用于信任Application
     .setTrustListManager(trustListManager)
     .setCertificateValidator(certificateValidator)
     // 这个还不太明白
     .setHttpsKeyPair(httpsKeyPair)
     .setHttpsCertificate(httpsCertificate)
     //验证身份
     .setIdentityValidator(new CompositeValidator(identityValidator, x509IdentityValidator))
     //s设定生成的服务器URI
     .setProductUri("urn:eclipse:milo:example-server")
     .build();

 server = new OpcUaServer(serverConfig);

구성 OPCUA 서버, 코드의 특정 정보를 설명하고, 마지막으로 예 serrver 클래스에 정의 된 서버에 할당 된

private final OpcUaServer server;

3. 서버 구성 네임 스페이스 - 서버의 속성

ExampleServerfang 프로세스 정의 상세한 구성.

  1. 에 필요한 팔로우 예에서 큰 덩어리를 맨 앞에
super.onStartup()

자신의 노드 정보 서버를 생성, 부모 클래스를 사용하여이 시작 방법

 // Create a "HelloWorld" folder and add it to the node manager
        NodeId folderNodeId = newNodeId("HelloWorld");

        UaFolderNode folderNode = new UaFolderNode(
            getNodeContext(),
            folderNodeId,
            newQualifiedName("HelloWorld"),
            LocalizedText.english("HelloWorld")
        );

        getNodeManager().addNode(folderNode);

        // Make sure our new folder shows up under the server's Objects folder.
        folderNode.addReference(new Reference(
        	//产生引用的结点ID
            folderNode.getNodeId(),
            //引用的类型
            Identifiers.Organizes,
            //引用连接的对象
            Identifiers.ObjectsFolder.expanded(),
            //Reference的指向
            false
        ));

루트 파일 및 ObjectsFolder 천국에 대한 참조를 생성하고,이 개체 바로 아래에 생성 된 객체 말했다.
여기에 참고 기준의 잘못된 점, 사실 앞으로, 거짓 역의 대표자가.
FolderNode는 객체이며, 결과는해야한다, 그래서 여기에 대한 참조를 추가하는 것입니다 :

개체 -> folderNode이 참, 다음은 다음과 같습니다 folderNode-> 객체

출시 여섯 개 원래 기사 · 원 찬양 2 · 조회수 298

추천

출처blog.csdn.net/qq_41989109/article/details/104383991