本人第一次接触OPCUA,如有不对的地方望指正,获取的是公司的OPCUA服务器的数据

方式一:

测试环境:

window11

vs2022

OPCFoundation.NetStandard.Opc.Ua

.net framework 4.8   (2025-06-23  经过测试,.net8也可以使用这套.net framework的代码并成功读取到数据,版本也是选择1.5.376.213)

测试环境如下:

1  新建.net framework 4.8的控制台项目,项目名称为OPCDemo3

2 在nuget中安装OPCFoundation.NetStandard.Opc.Ua,版本选择1.5.376.213,如下图:

3 编写代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Opc.Ua;
using Opc.Ua.Client;
using Opc.Ua.Configuration;
namespace OPCDemo3
{internal class Program{static void Main(string[] args){string endpointUrl = "opc.tcp://ip地址:4840";//节点Id,根据实际情况填写string nodeId = "ns=4;s=|var|CODESYS Control Win V3 x64.Application.Para.PLC_Inf.wHeatBeat";// 创建应用配置var config = new ApplicationConfiguration(){ApplicationName = "OPCDemo2",ApplicationType = ApplicationType.Client,SecurityConfiguration = new SecurityConfiguration{ApplicationCertificate = new CertificateIdentifier(),AutoAcceptUntrustedCertificates = true},TransportConfigurations = new TransportConfigurationCollection(),TransportQuotas = new TransportQuotas { OperationTimeout = 15000 },ClientConfiguration = new ClientConfiguration { DefaultSessionTimeout = 60000 }};config.Validate(ApplicationType.Client);// 创建OPC UA会话var selectedEndpoint = CoreClientUtils.SelectEndpoint(endpointUrl, false);var endpointConfiguration = EndpointConfiguration.Create(config);var endpoint = new ConfiguredEndpoint(null, selectedEndpoint, endpointConfiguration);var session = Session.Create(config, endpoint, false, "OPCDemo2", 60000, null, null).Result;Console.WriteLine("打开成功");// 读取节点DataValue value = session.ReadValue(nodeId);if (StatusCode.IsGood(value.StatusCode)){ushort wHeatBeat = Convert.ToUInt16(value.Value);Console.WriteLine($"wHeatBeat:{wHeatBeat}");}else{Console.WriteLine("读取失败");}Console.ReadLine();}}
}

4 程序运行结果如下:

方式二:

测试环境:

window11

vs2022

SuperPLC.OPCUA

.net 8

测试步骤如下:

1 新建.net 8控制台项目,名称为OPCDemo2

2 在Nuget中安装OpcUaHelper,版本选择2.2.1,同时安装SuperPLC.OPCUA,版本选择:1.1.0

但在安装SuperPLC.OPCUA时,很奇怪,Nuget程序包管理界面搜不出来,如下图:

只能通过nuget控制台安装,命令如下:

NuGet\Install-Package SuperPLC.OPCUA -Version 1.1.0

3 编辑代码如下:

// See https://aka.ms/new-console-template for more informationusing SuperPLC.OPCUA;
//节点Id,根据实际情况填写
string _prefixPLCApp = $@"ns=4;s=|var|CODESYS Control Win V3 x64.Application.";Plc plc = new Plc("ip地址");
bool ret = plc.Open();
if (!ret)
{Console.WriteLine("打开失败");return;
}
plc.TryRead($"{_prefixPLCApp}Para.PLC_Inf.wHeatBeat", out ushort wHeatBeat);Console.WriteLine($"wHeatBeat:{wHeatBeat}");Console.WriteLine("打开成功");
Console.ReadLine();

4 运行结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/86119.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/86119.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/86119.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV计算机视觉实战(11)——边缘检测详解

OpenCV计算机视觉实战(11)——边缘检测详解 0. 前言1. Sobel 算子与方向梯度1.1 Sobel 算子简介1.2 实现过程 2. Laplacian 边缘检测2.1 Laplacian 算子简介2.2 实现过程 3. Canny 算法3.1 Canny 算法简介3.2 实现过程 小结系列链接 0. 前言 边缘检测能…

哈尔滨idc服务器租用-青蛙云

在数字化浪潮汹涌的当下,企业对于服务器的需求愈发强烈。哈尔滨作为东北地区重要的经济文化中心,其 IDC 服务器租用市场也呈现出蓬勃发展的态势。众多企业在寻求 IDC 服务器租用时,青蛙云凭借自身显著优势脱颖而出,成为众多用户的…

Zephyr 系统深入解析:SoC 支持包结构与中断调度器调优实践

本文将全面深入讲解 Zephyr RTOS 的 SoC 支持包设计架构(SoC Series / SoC Variant)、中断系统实现、调度器原理、时间片与优先级调优技巧,以及如何在实际项目中构建自定义 SoC 支持包、实现高效的调度器策略和系统性能优化。全文超过 5000 字…

FPGA基础 -- Verilog 结构建模之模块参数值

Verilog 中模块参数值(parameter)的使用,这是结构建模和模块可配置设计的核心机制,广泛应用于 总线宽度配置、流水线级数、功能开关、模块复用 等场景。 一、什么是模块参数值(parameter) parameter 是 Ver…

Skrill是什么?中国用户能用吗?安全吗?完整指南

什么是Skrill? Skrill 前身为 Moneybookers,成立于 2001 年,总部位于英国伦敦,目前隶属于 Paysafe 集团。作为一个多功能电子支付平台,Skrill 支持全球 100 多个国家和地区、40 多种货币,被广泛用于&#…

java+vue+SpringBoo校园部门资料管理系统(程序+数据库+报告+部署教程+答辩指导)

源代码数据库LW文档(1万字以上)开题报告答辩稿ppt部署教程代码讲解代码时间修改工具 技术实现 开发语言:后端:Java 前端:vue框架:springboot数据库:mysql 开发工具 JDK版本:JDK1.…

Java中的Map实现类详解

Java中的Map实现类详解 Java集合框架提供了多种Map接口的实现,每种实现都有其特定的使用场景和特点。以下是主要的Map实现类及其特性分析: 1. 通用Map实现 HashMap 特点:基于哈希表的实现,允许null键和null值线程安全&#xf…

Pytorch Lightning 进阶 1 - 梯度检查点(Gradient Checkpointing)

梯度检查点(Gradient Checkpointing)是一种在深度学习训练中优化显存使用的技术,尤其适用于处理大型模型(如Transformer架构)时显存不足的情况。下面用简单的例子解释其工作原理和优缺点: 核心原理 深度学…

SpreadJS 迷你图:数据趋势可视化的利器

引言 在数据处理和分析领域,直观地展示数据趋势对于理解数据和做出决策至关重要。迷你图作为一种简洁而有效的数据可视化方式,在显示数据趋势方面发挥着重要作用,尤其在与他人共享数据时,能够快速传达关键信息。SpreadJS 作为一款…

GESP2024年12月认证C++一级( 第三部分编程题(1)温度转换)

参考程序1&#xff1a; #include <cstdio> using namespace std;int main() {double K;scanf("%lf", &K);double C K - 273.15; //转换为摄氏温度 double F 32 C * 1.8; //转换为华氏温度 if (F > 212) //条件判断 print…

从零开始手写redis(18)缓存淘汰算法 FIFO 优化

项目简介 大家好&#xff0c;我是老马。 Cache 用于实现一个可拓展的高性能本地缓存。 有人的地方&#xff0c;就有江湖。有高性能的地方&#xff0c;就有 cache。 v1.0.0 版本 以前的 FIFO 实现比较简单&#xff0c;但是 queue 循环一遍删除的话&#xff0c;性能实在是太…

用Zynq实现脉冲多普勒雷达信号处理:架构、算法与实现详解

用Zynq实现脉冲多普勒雷达信号处理:架构、算法与实现详解 脉冲多普勒(PD)雷达是现代雷达系统的核心技术之一,广泛应用于机载火控、气象监测、交通监控等领域。其核心优势在于能在强杂波背景下检测运动目标,并精确测量其径向速度。本文将深入探讨如何利用Xilinx Zynq SoC(…

OpenCV CUDA模块设备层-----线程块级别的一个内存填充工具函数blockFill()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在同一个线程块&#xff08;thread block&#xff09;内&#xff0c;将 [beg, end) 范围内的数据并行地填充为指定值 value。 它使用了 CUDA 线程…

SAP-ABAP:如何查询 SAP 事务码(T-Code)被包含在哪些权限角色或权限对象中

要查询 SAP 事务码&#xff08;T-Code&#xff09;被包含在哪些权限角色或权限对象中&#xff0c;可使用以下专业方法&#xff1a; &#x1f50d; 1. 通过权限浏览器 (SUIM) - 最推荐 事务码&#xff1a;SUIM (权限信息系统) 操作步骤&#xff1a; 执行 SUIM → 选择 “角色…

MySQL 多列 IN 查询详解:语法、性能与实战技巧

在 MySQL 中&#xff0c;多列 IN 查询是一种强大的筛选工具&#xff0c;它允许通过多字段组合快速过滤数据。相较于传统的 OR 连接多个条件&#xff0c;这种语法更简洁高效&#xff0c;尤其适合批量匹配复合键或联合字段的场景。本文将深入解析其用法&#xff0c;并探讨性能优化…

自由学习记录(63)

编码全称&#xff1a;AV1&#xff08;Alliance for Open Media Video 1&#xff09;。 算力消耗大&#xff1a;目前&#xff08;截至 2025 年中&#xff09;软件解码 AV1 的 CPU 开销非常高&#xff0c;如果没有专门的硬件解码单元&#xff0c;播放高清视频时会很吃 CPU&#…

日本生活:日语语言学校-日语作文-沟通无国界(4)-题目:喜欢读书

日本生活&#xff1a;日语语言学校-日语作文-沟通无国界&#xff08;4&#xff09;-题目&#xff1a;喜欢读书 1-前言2-作文原稿3-作文日语和译本&#xff08;1&#xff09;日文原文&#xff08;2&#xff09;对应中文&#xff08;3&#xff09;对应英文 4-老师评语5-自我感想&…

C++优化程序的Tips

转自个人博客 1. 避免创建过多中间变量 过多的中间变量不利于代码的可读性&#xff0c;还会增加内存的使用&#xff0c;而且可能导致额外的计算开销。 将用于同一种情况的变量统一管理&#xff0c;可以使用一种通用的变量来代替多个变量。 2. 函数中习惯使用引用传参而不是返…

C#Blazor应用-跨平台WEB开发VB.NET

在 C# 中实现 Blazor 应用需要结合 Razor 语法和 C# 代码&#xff0c;Blazor 允许使用 C# 同时开发前端和后端逻辑。以下是一个完整的 C# Blazor 实现示例&#xff0c;包含项目创建、基础组件和数据交互等内容&#xff1a; 一、创建 Blazor 项目 使用 Visual Studio 新建项目 …

前端的安全隐患之API恶意调用

永远不要相信前端传来的数据&#xff0c;对于资深开发者而言&#xff0c;这几乎是一种本能&#xff0c;无需过多解释。然而&#xff0c;初入职场的开发新手可能会感到困惑&#xff1a;为何要对前端传来的数据持有如此不信任的态度&#xff1f;难道人与人之间连基本的信任都不存…