国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java 001:通過OPC UA協(xié)議連接KepServerEx進(jìn)行讀、寫、訂閱操作

這篇具有很好參考價(jià)值的文章主要介紹了Java 001:通過OPC UA協(xié)議連接KepServerEx進(jìn)行讀、寫、訂閱操作。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

參考前輩的踩坑記錄https://blog.csdn.net/weixin_45411740/article/details/124275985?spm=1001.2014.3001.5502,我Hyb在2023-3-15調(diào)通了自己的JavaOpcUaDemo。具體Java代碼和KepServerEX延時(shí)補(bǔ)丁都在資源中。

Java 001:通過OPC UA協(xié)議連接KepServerEx進(jìn)行讀、寫、訂閱操作

第1步:安裝激活KepServer,補(bǔ)丁在資源中,不詳述。

第2步:在KepServer中做OpcUa配置。

2.1 先看桌面右下角有沒EX圖標(biāo)

Java 001:通過OPC UA協(xié)議連接KepServerEx進(jìn)行讀、寫、訂閱操作

2.2 如果沒有EX圖標(biāo),要去開始菜單中找到KEPServerEX 6 Administration,點(diǎn)擊打開它后,桌面右下角就會(huì)出現(xiàn)EX圖標(biāo):

Java 001:通過OPC UA協(xié)議連接KepServerEx進(jìn)行讀、寫、訂閱操作

2.3 右鍵點(diǎn)擊EX圖標(biāo),選擇“OPC UA 配置”,設(shè)置過程看這個(gè)動(dòng)圖:(一定要關(guān)注動(dòng)圖中192.168.10.60這個(gè)ip及端口的設(shè)置,它要與你代碼中一致!

Java 001:通過OPC UA協(xié)議連接KepServerEx進(jìn)行讀、寫、訂閱操作

第3步:在KepServer中設(shè)置用戶名密碼。

3.1 再一次點(diǎn)桌面右下角的EX圖標(biāo),選擇“設(shè)置”,點(diǎn)“用戶管理器”,在Administrators右鍵選擇“添加用戶”。見圖操作:

Java 001:通過OPC UA協(xié)議連接KepServerEx進(jìn)行讀、寫、訂閱操作

第4步:在KepServer中設(shè)置opcua匿名賬戶登錄。

在KepServerEX界面,在“項(xiàng)目”右鍵,選擇“屬性”,選擇“OPC UA”。在“客戶端會(huì)話”、“允許匿名登錄”中,選擇“是”。如圖:

Java 001:通過OPC UA協(xié)議連接KepServerEx進(jìn)行讀、寫、訂閱操作

以上KepServerEX設(shè)置完成后,就可以構(gòu)建Java項(xiàng)目了。


第5步:首先搭建環(huán)境。下載Eclipse、配置Maven

Java 001:通過OPC UA協(xié)議連接KepServerEx進(jìn)行讀、寫、訂閱操作

上圖分別對(duì)應(yīng):

5.1 從Maven下載安裝包:apache-maven-3.9.0-bin.zip

5.2 配置Maven本地倉庫在:conf/settings.xml

<localRepository>${MAVEN_HOME}/repoHyb</localRepository>

5.3 配置Maven鏡像:從阿里云Maven鏡像同步和下載jar

<mirror><!--配置具體的倉庫的下載鏡像 從阿里云Maven倉庫下載-->
    <id>nexus-aliyun</id><!-- 此鏡像的唯一標(biāo)識(shí)符,用來區(qū)分不同的mirror元素 -->
    <mirrorOf>central</mirrorOf><!-- 對(duì)哪種倉庫進(jìn)行鏡像,簡單說就是替代哪個(gè)倉庫-->
    <name>Nexus aliyun</name><!-- 鏡像名稱 -->
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

5.4 在Eclipse中設(shè)置Maven安裝路徑

5.5 在Eclipse中設(shè)置Maven的配置文件


第6步:以上環(huán)境搭建好后,就可以正式coding了。

6.1 在eclipse中創(chuàng)建maven項(xiàng)目,并在pom.xml中配置Milo客戶端依賴:

<dependency>
    <groupId>org.eclipse.milo</groupId>
    <artifactId>sdk-client</artifactId>
    <version>0.6.3</version>
</dependency>
<dependency>
    <groupId>org.eclipse.milo</groupId>
    <artifactId>sdk-server</artifactId>
    <version>0.6.3</version>
</dependency>

Milo是Eclipse旗下的一個(gè)物聯(lián)網(wǎng)的項(xiàng)目,是一個(gè)高性能的OPC UA棧,提供了一組客戶端和服務(wù)端的API,支持對(duì)實(shí)時(shí)數(shù)據(jù)的訪問,監(jiān)控,報(bào)警,訂閱數(shù)據(jù),支持事件,歷史數(shù)據(jù)訪問,和數(shù)據(jù)建模。官網(wǎng)https://projects.eclipse.org/projects/iot.milo

在Milo中大量的采用了java 8的新特性CompletableFuture來進(jìn)行異步操作,Milo中有大量的操作都是直接返回CompletableFuture對(duì)象,所以JDK的版本必須要8.0,對(duì)CompletableFuture不太熟悉的可以先去了解CompletableFuture的相關(guān)概念在來看Milo的官方例子會(huì)輕松很多。

6.2 然后就是java代碼,只有一個(gè)類TestOpcUA.java,代碼全部在這一個(gè)java文件中。直接復(fù)制到你java文件中,不用再導(dǎo)入任何類,加個(gè)包名,直接可以運(yùn)行。

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicInteger;

import org.eclipse.milo.opcua.sdk.client.OpcUaClient;
import org.eclipse.milo.opcua.sdk.client.api.identity.AnonymousProvider;
import org.eclipse.milo.opcua.sdk.client.api.subscriptions.UaSubscription;
import org.eclipse.milo.opcua.sdk.client.api.subscriptions.UaSubscriptionManager;
import org.eclipse.milo.opcua.sdk.client.nodes.UaNode;
import org.eclipse.milo.opcua.sdk.client.subscriptions.ManagedDataItem;
import org.eclipse.milo.opcua.sdk.client.subscriptions.ManagedSubscription;
import org.eclipse.milo.opcua.stack.core.AttributeId;
import org.eclipse.milo.opcua.stack.core.Identifiers;
import org.eclipse.milo.opcua.stack.core.UaException;
import org.eclipse.milo.opcua.stack.core.security.SecurityPolicy;
import org.eclipse.milo.opcua.stack.core.types.builtin.DataValue;
import org.eclipse.milo.opcua.stack.core.types.builtin.DateTime;
import org.eclipse.milo.opcua.stack.core.types.builtin.LocalizedText;
import org.eclipse.milo.opcua.stack.core.types.builtin.NodeId;
import org.eclipse.milo.opcua.stack.core.types.builtin.StatusCode;
import org.eclipse.milo.opcua.stack.core.types.builtin.Variant;
import org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.UInteger;
import org.eclipse.milo.opcua.stack.core.types.enumerated.MonitoringMode;
import org.eclipse.milo.opcua.stack.core.types.enumerated.TimestampsToReturn;
import org.eclipse.milo.opcua.stack.core.types.structured.MonitoredItemCreateRequest;
import org.eclipse.milo.opcua.stack.core.types.structured.MonitoringParameters;
import org.eclipse.milo.opcua.stack.core.types.structured.ReadValueId;

public class TestOpcUA {
    private final static String endPointUrl = "opc.tcp://192.168.10.60:49320";

    /**
     * 創(chuàng)建OPC UA客戶端
     */
    private static OpcUaClient createClient() throws Exception {
        //opc ua服務(wù)端地址
        Path securityTempDir = Paths.get(System.getProperty("java.io.tmpdir"), "security");
        Files.createDirectories(securityTempDir);
        if (!Files.exists(securityTempDir)) {
            throw new Exception("unable to create security dir: " + securityTempDir);
        }
        return OpcUaClient.create(endPointUrl, endpoints -> endpoints.stream().filter(e -> e.getSecurityPolicyUri().equals(SecurityPolicy.None.getUri())).findFirst(), configBuilder -> configBuilder.setApplicationName(LocalizedText.english("eclipse milo opc-ua client")).setApplicationUri("urn:eclipse:milo:examples:client")
        //訪問方式
                .setIdentityProvider(new AnonymousProvider()).setRequestTimeout(UInteger.valueOf(500)).build());
    }

    /**
     * 遍歷樹形節(jié)點(diǎn)
     *
     * @param client OPC UA客戶端
     * @param uaNode 節(jié)點(diǎn)
     * @throws Exception
     */
    private static void browseNode(OpcUaClient client, UaNode uaNode) throws Exception {
        List<? extends UaNode> nodes;
        if (uaNode == null) {
            nodes = client.getAddressSpace().browseNodes(Identifiers.ObjectsFolder);
        } else {
            nodes = client.getAddressSpace().browseNodes(uaNode);
        }
        for (UaNode nd : nodes) {
            //排除系統(tǒng)行性節(jié)點(diǎn),這些系統(tǒng)性節(jié)點(diǎn)名稱一般都是以"_"開頭
            if (Objects.requireNonNull(nd.getBrowseName().getName()).contains("_")) {
                continue;
            }
            System.out.println("Node= " + nd.getBrowseName().getName());
            browseNode(client, nd);
        }
    }

    /**
     * 讀取節(jié)點(diǎn)數(shù)據(jù)
     *
     * @param client OPC UA客戶端
     * @throws Exception
     */
    private static void readNode(OpcUaClient client) throws Exception {
        int namespaceIndex = 2;
        String identifier = "通道 1.設(shè)備 1.標(biāo)記 1";
        //節(jié)點(diǎn)
        NodeId nodeId = new NodeId(namespaceIndex, identifier);
        //讀取節(jié)點(diǎn)數(shù)據(jù)
        DataValue value = client.readValue(0.0, TimestampsToReturn.Neither, nodeId).get();
        //標(biāo)識(shí)符
        identifier = String.valueOf(nodeId.getIdentifier());
        System.out.println(identifier + ": " + String.valueOf(value.getValue().getValue()));
    }

    /**
     * 寫入節(jié)點(diǎn)數(shù)據(jù)
     *
     * @param client
     * @throws Exception
     */
    private static void writeNodeValue(OpcUaClient client) throws Exception {
        //節(jié)點(diǎn)
        NodeId nodeId = new NodeId(2, "通道 1.設(shè)備 1.標(biāo)記 4");
        Short i = 48;
        //創(chuàng)建數(shù)據(jù)對(duì)象,此處的數(shù)據(jù)對(duì)象一定要定義類型,不然會(huì)出現(xiàn)類型錯(cuò)誤,導(dǎo)致無法寫入
        DataValue nowValue = new DataValue(new Variant(i), null, null);
        //寫入節(jié)點(diǎn)數(shù)據(jù)
        StatusCode statusCode = client.writeValue(nodeId, nowValue).join();
        System.out.println("結(jié)果:" + statusCode.isGood());
    }

    /**
    * 訂閱(單個(gè))
    *
    * @param client
    * @throws Exception
    */
    private static void subscribe(OpcUaClient client) throws Exception {
        AtomicInteger a = new AtomicInteger();
        //創(chuàng)建發(fā)布間隔1000ms的訂閱對(duì)象
        client.getSubscriptionManager().createSubscription(1000.0).thenAccept(t -> {
            //節(jié)點(diǎn)
                NodeId nodeId = new NodeId(2, "通道 1.設(shè)備 1.標(biāo)記 1");
                ReadValueId readValueId = new ReadValueId(nodeId, AttributeId.Value.uid(), null, null);
                //創(chuàng)建監(jiān)控的參數(shù)
                MonitoringParameters parameters = new MonitoringParameters(UInteger.valueOf(a.getAndIncrement()), 1000.0, null, UInteger.valueOf(10), true);
                //創(chuàng)建監(jiān)控項(xiàng)請(qǐng)求
                //該請(qǐng)求最后用于創(chuàng)建訂閱。
                MonitoredItemCreateRequest request = new MonitoredItemCreateRequest(readValueId, MonitoringMode.Reporting, parameters);
                List<MonitoredItemCreateRequest> requests = new ArrayList<>();
                requests.add(request);
                //創(chuàng)建監(jiān)控項(xiàng),并且注冊(cè)變量值改變時(shí)候的回調(diào)函數(shù)。
                t.createMonitoredItems(TimestampsToReturn.Both, requests, (item, id) -> item.setValueConsumer((it, val) -> {
                    System.out.println("nodeid :" + it.getReadValueId().getNodeId());
                    System.out.println("value :" + val.getValue().getValue());
                }));
            }).get();

        //持續(xù)訂閱
        Thread.sleep(Long.MAX_VALUE);
    }

    /**
     * 批量訂閱
     *
     * @param client
     * @throws Exception
     */
//  private static void managedSubscriptionEvent(OpcUaClient client) throws Exception {
//      final CountDownLatch eventLatch = new CountDownLatch(1);
//
//      //處理訂閱業(yè)務(wù)
//      handlerNode(client);
//
//      //持續(xù)監(jiān)聽
//      eventLatch.await();
//  }

    /**
     * 處理訂閱業(yè)務(wù)
     *
     * @param client OPC UA客戶端
     */
    private static void handlerNode(OpcUaClient client) {
        try {
            //創(chuàng)建訂閱
            ManagedSubscription subscription = ManagedSubscription.create(client);

            //你所需要訂閱的key
            List<String> key = new ArrayList<>();
            key.add("通道 1.設(shè)備 1.標(biāo)記 4");
            key.add("通道 1.設(shè)備 1.標(biāo)記 1");

            List<NodeId> nodeIdList = new ArrayList<>();
            for (String s : key) {
                nodeIdList.add(new NodeId(2, s));
            }

            //監(jiān)聽
            List<ManagedDataItem> dataItemList = subscription.createDataItems(nodeIdList);
            for (ManagedDataItem managedDataItem : dataItemList) {
                managedDataItem.addDataValueListener((t) -> {
                    System.out.println(managedDataItem.getNodeId().getIdentifier().toString() + ":" + t.getValue().getValue().toString());
                });
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 自定義訂閱監(jiān)聽
     */
    private static class CustomSubscriptionListener implements UaSubscriptionManager.SubscriptionListener {

        private OpcUaClient client;

        CustomSubscriptionListener(OpcUaClient client) {
            this.client = client;
        }

        public void onKeepAlive(UaSubscription subscription, DateTime publishTime) {
            System.out.println("onKeepAlive");
        }

        public void onStatusChanged(UaSubscription subscription, StatusCode status) {
            System.out.println("onStatusChanged");
        }

        public void onPublishFailure(UaException exception) {
            System.out.println("onPublishFailure");
        }

        public void onNotificationDataLost(UaSubscription subscription) {
            System.out.println("onNotificationDataLost");
        }

        /**
         * 重連時(shí) 嘗試恢復(fù)之前的訂閱失敗時(shí) 會(huì)調(diào)用此方法
         * @param uaSubscription 訂閱
         * @param statusCode 狀態(tài)
         */
        public void onSubscriptionTransferFailed(UaSubscription uaSubscription, StatusCode statusCode) {
            System.out.println("恢復(fù)訂閱失敗 需要重新訂閱");
            //在回調(diào)方法中重新訂閱
            handlerNode(client);
        }
    }

    /**
     * 批量訂閱
     *
     * @param client
     * @throws Exception
     */
    private static void managedSubscriptionEvent(OpcUaClient client) throws Exception {
        final CountDownLatch eventLatch = new CountDownLatch(1);

        //添加訂閱監(jiān)聽器,用于處理斷線重連后的訂閱問題
        client.getSubscriptionManager().addSubscriptionListener(new CustomSubscriptionListener(client));

        //處理訂閱業(yè)務(wù)
        handlerNode(client);

        //持續(xù)監(jiān)聽
        eventLatch.await();
    }

    public static void main(String[] args) throws Exception {
        OpcUaClient client = createClient();
        client.connect().get();
//        browseNode(client, null);
//        readNode(client);
//        writeNodeValue(client);
        subscribe(client);
//    managedSubscriptionEvent(client);
    }

}

本文涉及的java項(xiàng)目代碼和KepServerEX補(bǔ)丁下載地址:https://download.csdn.net/download/qq_28530139/87579334

Hyb???本文結(jié)束,謝謝瀏覽【VX:m3920752】!個(gè)人資源的解壓密碼是: hyb文章來源地址http://www.zghlxwxcb.cn/news/detail-482020.html


到了這里,關(guān)于Java 001:通過OPC UA協(xié)議連接KepServerEx進(jìn)行讀、寫、訂閱操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SpringBoot集成Milo庫實(shí)現(xiàn)OPC UA客戶端:連接、遍歷節(jié)點(diǎn)、讀取、寫入、訂閱與批量訂閱

    SpringBoot集成Milo庫實(shí)現(xiàn)OPC UA客戶端:連接、遍歷節(jié)點(diǎn)、讀取、寫入、訂閱與批量訂閱

    前面我們搭建了一個(gè)本地的 PLC 仿真環(huán)境,并通過 KEPServerEX6 讀取 PLC 上的數(shù)據(jù),最后還使用 UAExpert 作為OPC客戶端完成從 KEPServerEX6 這個(gè)OPC服務(wù)器的數(shù)據(jù)讀取與訂閱功能。在這篇文章中,我們將通過 SpringBoot 集成 Milo 庫實(shí)現(xiàn)一個(gè) OPC UA 客戶端,包括連接、遍歷節(jié)點(diǎn)、讀取、寫入

    2024年02月09日
    瀏覽(29)
  • 在 .NET 中使用 OPC UA 協(xié)議

    在 .NET 中使用 OPC UA 協(xié)議

    目錄 什么是 OPC UA UaExpert 的使用 下載 UaExpert 首次啟動(dòng) 添加 OPC UA 服務(wù)器 連接 OPC UA 服務(wù)器 查看 PLC 數(shù)據(jù) 使用 C# 讀寫 OPC UA 數(shù)據(jù) 連接到 OPC UA 服務(wù)器 獲取節(jié)點(diǎn)的值 寫入節(jié)點(diǎn)的值 OPC UA (OPC Unified Architecture,開放平臺(tái)通信統(tǒng)一架構(gòu))是 OPC 基金會(huì)應(yīng)用在自動(dòng)化技術(shù)的機(jī)器對(duì)機(jī)器

    2024年03月25日
    瀏覽(18)
  • 嵌入式物聯(lián)網(wǎng)技術(shù)?!緟f(xié)議篇】OPC UA協(xié)議

    嵌入式物聯(lián)網(wǎng)技術(shù)?!緟f(xié)議篇】OPC UA協(xié)議

    OPC UA前身是OPC,第一個(gè)OPC規(guī)范在1996年發(fā)布,包括一整套接口、屬性和方法的標(biāo)準(zhǔn)集 OPC全稱是Object Linking and Embedding(OLE) for Process Control, 微軟公司對(duì)象鏈接和嵌入技術(shù)在過程控制方面的應(yīng)用,是一系列接口、方法和屬性的標(biāo)準(zhǔn)集,是將通訊協(xié)議與設(shè)備/應(yīng)用隔離的技術(shù)。 微軟

    2024年02月14日
    瀏覽(20)
  • PLC物聯(lián)網(wǎng)網(wǎng)關(guān)BL104實(shí)現(xiàn)PLC協(xié)議轉(zhuǎn)MQTT、OPC UA、Modbus TCP

    PLC物聯(lián)網(wǎng)網(wǎng)關(guān)BL104實(shí)現(xiàn)PLC協(xié)議轉(zhuǎn)MQTT、OPC UA、Modbus TCP

    隨著物聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,人們深刻認(rèn)識(shí)到在智能化生產(chǎn)和生活中,實(shí)時(shí)、可靠、安全的數(shù)據(jù)傳輸至關(guān)重要。在此背景下,高性能的物聯(lián)網(wǎng)數(shù)據(jù)傳輸解決方案——協(xié)議轉(zhuǎn)換網(wǎng)關(guān)應(yīng)運(yùn)而生,廣泛應(yīng)用于工業(yè)自動(dòng)化和數(shù)字化工廠應(yīng)用環(huán)境中。 無縫銜接工業(yè)4.0時(shí)代 盡享數(shù)字工廠

    2024年01月21日
    瀏覽(38)
  • Java實(shí)現(xiàn) OPC Ua Server服務(wù)器創(chuàng)建

    我們除了使用KEPServerEX6 創(chuàng)建OPC Ua Server 服務(wù)器以外,還可以使用 開源項(xiàng)目org.eclipse.milo 創(chuàng)建一個(gè)java項(xiàng)目OPC Ua Server的服務(wù)。相對(duì)于KEPServerEX6 屬于收費(fèi)的商用版本來說,后者更為簡單輕便。下面附加代碼和文字說明,教你如何創(chuàng)建一個(gè)OPC Ua Server的java服務(wù)。 可以不是web項(xiàng)目的,

    2024年01月24日
    瀏覽(30)
  • Java使用Milo實(shí)現(xiàn)OPC UA客戶端,封裝spring boot starter

    Java使用Milo實(shí)現(xiàn)OPC UA客戶端,封裝spring boot starter

    最新版本更新日志查看:https://github.com/kangaroo1122/milo-spring-boot-starter/blob/main/UPDATE.md、https://gitee.com/vampire001/milo-spring-boot-starter/blob/master/UPDATE.md,此處不再更新 由eclipse開源,地址:https://github.com/eclipse/milo,可以基于此開發(fā)OPC UA客戶端或者服務(wù)端。 本文介紹基于milo 封裝的sp

    2024年02月09日
    瀏覽(27)
  • OPC UA服務(wù)端(Prosys OPC UA Simulation Server)和客戶端(OPC UA Explorer)工具使用

    OPC UA服務(wù)端(Prosys OPC UA Simulation Server)和客戶端(OPC UA Explorer)工具使用

    1.Prosys OPC UA Simulation Server下載地址 https://downloads.prosysopc.com/opc-ua-simulation-server-downloads.php 2.簡單使用 2.1 特殊項(xiàng)設(shè)置 【1】端口設(shè)置 【2】OPC UA Simulation Server運(yùn)行狀態(tài) 2.2 新加需要模擬上數(shù)的點(diǎn) 2.3 模擬動(dòng)態(tài)變化值,修改ValueType 效果圖如下: 2.4 模擬固定值(手動(dòng)修改值) 1.Matriko

    2024年02月14日
    瀏覽(78)
  • 【OPC UA】使用C#讀取OPC UA電液控?cái)?shù)據(jù)

    OPC UA與OPC DA協(xié)議常見于工業(yè)生產(chǎn)中使用,例如煤礦的綜采支架電液控系統(tǒng)。OPC UA 是OPC 的后繼標(biāo)準(zhǔn),只是后面增加了UA ,意指”統(tǒng)一架構(gòu)”(Unified Architecture).它的主要目的是擺脫windows! 實(shí)現(xiàn)與平臺(tái)無關(guān)的OPC.從OPC 演進(jìn)到OPC UA,它的目的并沒有改變,依然是為了實(shí)現(xiàn)分布式控制系統(tǒng)中

    2024年02月15日
    瀏覽(21)
  • OPC UA 云端模型庫

    OPC UA 云端模型庫

    ????????UA 云庫(opc ua cloud library)是互聯(lián)網(wǎng)上可用的中央庫,可以在其中上傳配套規(guī)范 (CS)?并將其提供給其他人。許多CS是由OPC基金會(huì)的聯(lián)合工作組開發(fā)和發(fā)布的。來自不同行業(yè)和應(yīng)用領(lǐng)域的幾位專家共同努力,為許多機(jī)器和系統(tǒng)提供了標(biāo)準(zhǔn)化的數(shù)據(jù)結(jié)構(gòu)。此外,還可

    2024年02月07日
    瀏覽(15)
  • OPC UA:工業(yè)領(lǐng)域的“HTML”

    OPC UA:工業(yè)領(lǐng)域的“HTML”

    ????????OPC?? UA 是工業(yè)自動(dòng)化領(lǐng)域的一項(xiàng)重要的通信協(xié)議。它的特點(diǎn)是包括了信息模型構(gòu)建方法。能夠建立工業(yè)領(lǐng)域各種事物的信息模型。在工業(yè)自動(dòng)化行業(yè),OPCUA 類似互聯(lián)網(wǎng)行業(yè)的HTTP協(xié)議和“HTML”語言。能夠準(zhǔn)確,可靠地描述復(fù)雜系統(tǒng)中各個(gè)元素,并且實(shí)現(xiàn)系統(tǒng)組件

    2024年02月08日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包