const { OPCUAClient, AttributeIds } = require("node-opcua");
const opcua = require("node-opcua");
async function main() {
const client = OPCUAClient.create({
endpointMustExist: false,
securityMode: opcua.MessageSecurityMode.None, // 无安全模式
securityPolicy: opcua.SecurityPolicy.None // 无安全策略
});
try {
console.log("尝试连接到服务器...");
await client.connect("opc.tcp://10.71.240.162:12686");
console.log("已连接到服务器!");
console.log("正在创建会话...");
const session = await client.createSession({
userName: "administrator", // 替换为实际用户名
password: "Mxqpj@123!@#" // 替换为实际密码
});
console.log("会话已创建!");
// 定义要订阅的多个节点
const itemsToMonitor = [
{ nodeId: "JD_ZPD_PDJK.D.SMMK01", attributeId: AttributeIds.Value },
];
console.log("正在创建订阅...");
// 创建订阅
const subscription = await session.createSubscription2({
requestedPublishingInterval: 1000,
requestedLifetimeCount: 10,
requestedMaxKeepAliveCount: 10,
publishingEnabled: true,
priority: 10
});
console.log("订阅已创建!");
console.log("正在添加监控项到订阅...");
// 添加监控项到订阅
const monitoredItems = [];
for (const item of itemsToMonitor) {
const monitoredItem = await subscription.monitor(
{
nodeId: item.nodeId,
attributeId: item.attributeId
},
{
samplingInterval: 100,
discardOldest: true,
queueSize: 10
},
(dataValue) => {
console.log(`项目 ${item.nodeId} 值已更改: `, dataValue.value.value);
}
);
monitoredItems.push(monitoredItem);
}
console.log("监控项已添加!");
console.log("设置定时器以断开连接...");
// 保持程序运行以接收数据变化通知
setTimeout(async () => {
console.log("终止订阅...");
await subscription.terminate();
console.log("关闭会话...");
await session.close();
console.log("断开与服务器的连接...");
await client.disconnect();
console.log("已断开与服务器的连接!");
}, 30000); // 运行30秒后断开连接
} catch (err) {
console.error("发生错误: ", err);
} finally {
console.log("清理资源...");
// 这里可以添加任何必要的清理代码,例如关闭连接等
if (client) {
await client.disconnect();
}
}
}
main();
2025-02-08——JS订阅OPCUA服务
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...