2025-02-08——获取所有OPCUA订阅节点

const { OPCUAClient, AttributeIds, ClientSubscription, TimestampsToReturn } = require("node-opcua");

// 1. 创建 OPC UA 客户端
const client = OPCUAClient.create({
    endpointMustExist: false,  // 如果服务器的端点地址不存在,不会抛出错误
});

const endpointUrl = "opc.tcp://192.168.1.60:49320"; // 替换为你服务器的 URL

async function connectToServer() {
    try {
        // 2. 连接到 OPC UA 服务器
        console.log("正在连接到 OPC UA 服务器...");
        await client.connect(endpointUrl);
        console.log("已成功连接到 OPC UA 服务器!");

        // 3. 创建会话
        console.log("正在创建会话...");
        const session = await client.createSession({ 
            userName: "common", // 替换为实际用户名
            password: "admin" // 替换为实际密码
        });
        console.log("会话已成功创建!");

        // 4. 浏览根节点下的所有节点
        console.log("正在浏览根节点下的所有节点...");
        const browseResult = await session.browse("RootFolder");
        printBrowseResult(browseResult);

        // 5. 关闭会话
        console.log("正在关闭会话...");
        await session.close();
        console.log("会话已关闭。");

        // 6. 断开与服务器的连接
        console.log("正在断开与服务器的连接...");
        await client.disconnect();
        console.log("已成功断开与服务器的连接。");

    } catch (err) {
        console.error("发生错误: ", err);
    }
}

function printBrowseResult(browseResult) {
    if (browseResult && browseResult.references) {
        for (const reference of browseResult.references) {
            console.log(`Node ID: ${reference.nodeId.toString()}`);
            console.log(`Browse Name: ${reference.browseName.name}`);
            console.log(`Display Name: ${reference.displayName.text}`);
            console.log(`Type Definition: ${reference.typeDefinition}`);
            console.log('---');
        }
    } else {
        console.log("没有找到任何节点。");
    }
}

// 执行连接和读取操作
connectToServer();

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容