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();
2025-02-08——获取所有OPCUA订阅节点
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 在React中使用antd组件中的treeSelect组件,想要在获取当前选中节点的所有子节点。在使用onChan...