Python 获取beckhoff数据-OPCUA

news2024/11/16 2:23:58

1. 背景介绍

     OPC UA(Unified Architecture,统一架构)是下一代的OPC 标准,它是一种工业通讯协议,通过提供一个完整的,安全和可靠的跨平台的架构,以获取实时和历史数据和时间。
  OPC UA的诞生是因为现有的OPCDA通信技术是基于COM的规范,因此需要建立一个没有损失任何功能和性能的真正平替。

OPCUA统一架构

2. 测试搭建

在Twin CAT的项目中,增加如下的变量定义 - 注意,将OPC  UA DA Access设置为3即为可读可写。
 // add a parameters for the OPC UA function test
  {attribute 'OPC.UA.DA' := '1'}
  {attribute 'OPC.UA.DA.Access' := '3'}
 OPC_Test                             : INT;

3. OPC UA的服务器设置

  TwinCAT安装好后,系统将提供UA Gateway功能,系统可以通过对UA Gateway进行相应的配置来满足UA服务的功能需求。

通过在UA Gateway上点击右键,可以打开UA Gateway的Administrate UA Gateway的配置界面。
打开Administrator UAgateway
具体需要修改的配置如下图:
1. Port : 更具需要修改为自己需要使用的端口号;
2. Security: OPCUA的证书支持多种多样,目前我们默认的情况下,使用的是None -无需证书的模式。UA endpoint的配置

5. 获取节点信息

    TwinCAT的完整安装工具集中提供了快速的OPC客户端测试应用,可以通此应用获取需要访问的数据的节点信息。
   通过如下的截图信息可以获取到基于OPCUA库进行相应访问的节点namespace_index和节点node_identifier。

如何获取节点信息

4. Python代码实现

# 导入所需的库
import opcua
# 创建一个OPC UA客户端实例
client = opcua.Client("opc.tcp://localhost:4850")
# 连接到服务器
try:
    client.connect()
except Exception as e:
    print("Error connecting to OPC UA Server: ", e)
else:
    # 假设您已知目标节点的路径(此处仅为示例)
    #node_path = "ns=<namespace_index>;s=<node_identifier>"
    node_path = "ns=7;s=Station.OPC_Test"
# 使用客户端找到目标节点
try:
        variable_node = client.get_node(node_path)
except Exception as e:
        print(f"Failed to find node at path {node_path}: ", e)
 else:
        # 读取当前的节点值
        value =  variable_node.get_value()
        print(f"节点值: {value}")
        datavalue = opcua.ua.DataValue(opcua.ua.Variant(True, opcua.ua.VariantType.Boolean))
        variable_node.set_value(datavalue)
#关闭连接
client.disconnect()

参考资料
[1] https://opcfoundation.cn/about/opc-technologies/opc-ua
[2] https://zhuanlan.zhihu.com/p/627906477

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DSP,QX320F28337,数据手册,使用手册

自研32位双核CPU 主频400MHz 单精度浮点运算FPU 三角函数运算TMU flash 1MB&#xff0c;sram 1MB 3个12位ADC&#xff0c;采样率3MSPS 3个14位ADC&#xff0c;采样率2.67MSPS 24个ePWM通道&#xff0c;16个HRPWM&#xff08;150PS&#xff09;

爬虫实战——麻省理工学院新闻

文章目录 发现宝藏一、 目标二、 浅析三、获取所有模块四、请求处理模块、版面、文章1. 分析切换页面的参数传递2. 获取共有多少页标签并遍历版面3.解析版面并保存版面信息4. 解析文章列表和文章5. 清洗文章6. 保存文章图片 五、完整代码六、效果展示 发现宝藏 前些天发现了一…

力扣周赛387

第一题 代码 package Competition.The387Competitioin;public class Demo1 {public static void main(String[] args) {}public int[] resultArray(int[] nums) {int ans[]new int[nums.length];int arr1[]new int[nums.length];int arr2[]new int[nums.length];if(nums.leng…

玩转地下管网三维建模:MagicPipe3D系统

地下管网是保障城市运行的基础设施和“生命线”。随着实景三维中国建设的推进&#xff0c;构建地下管网三维模型与地上融合的数字孪生场景&#xff0c;对于提升智慧城市管理至关重要&#xff01;针对现有三维管线建模数据差异大、建模交互弱、模型效果差、缺乏语义信息等缺陷&a…

Lua 篇(一)— 安装运行Hello World

目录 前言一、Lua 是什么&#xff1f;二、Lua和C#的区别三、安装 LuaLinux 系统上安装Mac OS X 系统上安装Window 系统上安装emmyluaRider 安装(推荐) 四、Lua学习资料 前言 Lua 是一种轻量级的嵌入式脚本语言&#xff0c;它可以与 C 语言无缝集成&#xff0c;提供了强大的编程…

开发一套小程序所需的费用取决于多个因素

随着移动互联网的发展&#xff0c;小程序已经成为许多企业和个人推广业务和服务的重要工具。 不过&#xff0c;对于很多想要开发小程序的人来说&#xff0c;最大的疑问就是开发一套小程序要花多少钱。 这个问题的答案并不是固定的&#xff0c;因为开发一个小程序的成本取决于几…

java 实现文字转语音

1. 内网环境 windows系统 选择jacob技术实现 免费的 从官网下载最新1.20jar包和dll文件 将jar包放到maven仓库中 dll文件放到jdk的bin目录下 项目代码&#xff1a; package com.example.ybxm.controller;import com.jacob.activeX.ActiveXComponent; import com.jacob.com…

代码随想录算法训练营第三十天| 回溯篇总结

文章目录 前言一、组合问题二、切割问题三、子集问题四、排列问题五、性能分析 前言 回溯法就是暴力搜索&#xff0c;并不是什么高效的算法&#xff0c;最多再剪枝一下。 组合问题&#xff1a;N个数里面按一定规则找出k个数的集合 排列问题&#xff1a;N个数按一定规则全排列…

【QT】C/C++ 文件属性设置(隐藏、只读、加密等)方法和程序示例

目录 1文件属性设置 1.1 GetFileAttributes 获取文件属性函数的返回值 1.2 SetFileAttributes 设置文件属性函数 2 文件属性设置示例 1文件属性设置 在MSDN中&#xff0c;文件总共有15种属性&#xff0c;根据磁盘的分区格式不同&#xff0c;文件的属性也会不同。 需要包含头…

Docker镜像导出/导入

Docker镜像导出/导入 一、前言 在实际操作中&#xff0c;为了便于docker镜像环境和服务配置的迁移&#xff0c;我们有时需要将已在测试环境主机上完成一系列配置的docker镜像或运行中的容器镜像导出&#xff0c;并传输到生产或其他目标环境主机上运行。为此&#xff0c;本文主…

python+Django+Neo4j中医药知识图谱与智能问答平台

文章目录 项目地址基础准备正式运行 项目地址 https://github.com/ZhChessOvO/ZeLanChao_KGQA 基础准备 请确保您的电脑有以下环境&#xff1a;python3&#xff0c;neo4j 在安装目录下进入cmd&#xff0c;输入指令“pip install -r requirement.txt”,安装需要的python库 打…

【C++精简版回顾】18.文件操作

1.文件操作头文件 2.操作文件所用到的函数 1.文件io 1.头文件 #include<fstream> 2.打开文件 &#xff08;1&#xff09;函数名 文件对象.open &#xff08;2&#xff09;函数参数 /* ios::out 可读 ios::in 可…

大模型之SORA技术学习

文章目录 sora的技术原理文字生成视频过程sora的技术优势量大质优的视频预训练库算力多&#xff0c;采样步骤多&#xff0c;更精细。GPT解释力更强&#xff0c;提示词(Prompt&#xff09;表现更好 使用场景参考 Sora改变AI认知方式&#xff0c;开启走向【世界模拟器】的史诗级的…

拉线位移编码器出现问题从哪里下手找原因

拉线位移编码器出现问题从哪里下手找原因 1、如果因接线错误导致位移编码器无信号或输出信号波动较大时&#xff0c;应按照说明书检查信号线是否连接正确。 2、拉线位移编码器的供电电压为5V&#xff0c;如果供电电压过低或过高也会引起信号线的传输&#xff0c;应检查输入电…

leetcode - 2095. Delete the Middle Node of a Linked List

Description You are given the head of a linked list. Delete the middle node, and return the head of the modified linked list. The middle node of a linked list of size n is the ⌊n / 2⌋th node from the start using 0-based indexing, where ⌊x⌋ denotes th…

【小白友好】LeetCode 打家劫舍 III

https://leetcode.cn/problems/house-robber-iii/description/ 前言 建议还是先看看动态规划的基础题再看这个。动态规划是不刷题&#xff0c;自己100%想不出来的。 基础题&#xff1a; 最大子数组和乘积最大子数组最长递增子序列 最大升序子数组和 小白想法 现在我们想遍…

使用query请求数据出现500的报错

我在写项目的时候遇到了一个问题&#xff0c;就是在存商品id的时候我将它使用了JSON.stringify的格式转换了&#xff01;&#xff01;&#xff01;于是便爆出了500这个错误&#xff01;&#xff01;&#xff01; 我将JSON.stringify的格式去除之后&#xff0c;它就正常显示了&…

Linux - 进程控制

1、进程创建 1.1、fork函数初识 在linux中fork函数时非常重要的函数&#xff0c;它从已存在进程中创建一个新进程。新进程为子进程&#xff0c;而原进程为父进程&#xff1b; #include <unistd.h> pid_t fork(void); 返回值&#xff1a;自进程中返回0&#xff0c;父进…

java常见的8种数据结构

一、线性结构&#xff1a;数组、链表、哈希表&#xff1b;队列、栈 1.数组&#xff1a; 数组是有序元素的序列&#xff0c;在内存中的分配是连续的&#xff0c;数组会为存储的元素都分配一个下标&#xff08;索引&#xff09;&#xff0c;此下标是一个自增连续的&#xff0c;访…

万村乐数字乡村系统开源代码:革命性引领,助推乡村振兴新篇章

如今&#xff0c;国际社会普遍认为信息化、数字化已是重大且不可逆转的发展趋势&#xff0c;如何让广大农村地区充分分享到这个发展带来的红利&#xff0c;从而提升农村的经济活力&#xff0c;确保村民生活质量不断优化&#xff0c;已然成为我们需要认真研究并积极解决的重大议…