上位机智能通信统一解决方案OPC应用

news2024/11/27 18:24:16

上位机应用开发中的通信需求

通信过程/通信协议多样性

通信统一化处理方案:OPCOpen Platform Communications)、OPC UAOPC Unified Architecture

基于西门子1500PLCOPC服务器对接

 internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");

            OpcUa();

            Console.ReadLine();
        }

        private static async void OpcUa()
        {
            //ApplicationConfiguration configuration,
            //ConfiguredEndpoint endpoint,
            //bool updateBeforeConnect,
            //string sessionName,
            //uint sessionTimeout,
            //IUserIdentity identity,
            //IList<string> preferredLocales

            // 准备第一个参数
            ApplicationConfiguration ac = new ApplicationConfiguration();
            ac.ClientConfiguration = new ClientConfiguration();

            CertificateValidator cv = new CertificateValidator
            {
                RejectSHA1SignedCertificates = false,
            };
            cv.CertificateValidation += (se, ev) =>
            {
                if (ev.Error.StatusCode.Code == StatusCodes.BadCertificateUntrusted)
                {
                    ev.Accept = true;
                }
            };
            ac.CertificateValidator = cv;

            // 准备第二个参数
            EndpointDescription desc = CoreClientUtils.SelectEndpoint(
                discoveryUrl: "opc.tcp://OPCSERVER:49320",
                false
                );
            ConfiguredEndpoint endpoint = new ConfiguredEndpoint(null, desc);

            Session session = await Session.Create(
                ac,
                endpoint,
                false,
                "PLC1500_opc",
                60000,
                new UserIdentity("admin", "admin"),
                new string[] { }
                );

            // 简单   用户名密码
            // 证书   服务器  任意证书自动接收    服务器颁发证书





            // 浏览节点
            //Browser browser = new Browser(session);
            //var collection = browser.Browse(new NodeId("ns=2;s=通道 1.设备 1"));
            //foreach (var node in collection)
            //{

            //}




            // 读取
            //RequestHeader requestHeader,
            //double maxAge,
            //TimestampsToReturn timestampsToReturn,
            //ReadValueIdCollection nodesToRead,
            //out DataValueCollection results,
            //out DiagnosticInfoCollection diagnosticInfos
            ReadValueIdCollection readValueIds = new ReadValueIdCollection();

            ReadValueId id = new ReadValueId();
            id.NodeId = "ns=2;s=数据类型示例.16 位设备.R 寄存器.Word1";
            id.AttributeId = Attributes.Value;
            readValueIds.Add(id);

            id = new ReadValueId();
            id.NodeId = "ns=2;s=数据类型示例.16 位设备.R 寄存器.Word2";
            id.AttributeId = Attributes.Value;
            readValueIds.Add(id);

            id = new ReadValueId();
            id.NodeId = "ns=2;s=数据类型示例.16 位设备.R 寄存器.WordArray";
            id.AttributeId = Attributes.Value;
            readValueIds.Add(id);

            session.Read(
                new RequestHeader(),
                0,
                TimestampsToReturn.Both,
                readValueIds,
                out DataValueCollection results,
                out DiagnosticInfoCollection diagnosticInfos
                );

            foreach (var value in results)
            {
                if (value.WrappedValue.TypeInfo.ValueRank == -1)//单值
                    Console.WriteLine(value);
                else if (value.WrappedValue.TypeInfo.ValueRank == 1)
                {
                    foreach (var v in (ushort[])value.WrappedValue.Value)
                    {
                        Console.WriteLine(v);
                    }
                }
            }

        }
    }

 

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

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

相关文章

BTP Integration Suite学习笔记 - (Unit1) Developing with SAP Integration Suite

今天决定跟着SAP官方资源系统学习一遍BTP Itegration Suite。找到两个Learning Journey: SAP Integration Suite Foundation 和 Solution Integration on SAP BTP。还有一个更大的roadmap,Integration Suite的官方内容在这里都可以链接到。 认证暂时只找到了一个比较基础的&…

干撸Spring,太难了!阿里P8级别「Spring源码全解析」带你起飞

有朋友跟我反映说&#xff0c;最近想详细学习Spring源码&#xff0c;可网上查到的文章都很一般&#xff0c;有没有大牛分享自己Spring实践与源码结合的方法&#xff1f; 干撸Spring&#xff0c;太难了&#xff01;难到你不知道从哪下手&#xff01; 为什么 Spring 天天用&…

云和DevOps如何帮助加速数字化转型?

1.云和 DevOps&#xff1a;概述 数字化转型已成为寻求在现代时代蓬勃发展的企业的一项关键举措。为了加速这一转型&#xff0c;组织正在利用云计算的力量并采用DevOps实践。云计算提供可扩展且灵活的基础架构&#xff0c;而 DevOps 则支持协作和持续交付的文化。本文将探讨云和…

ETHERCAT转PROFIBUS网关连接ethercat网线接口定义

远创智控YC-DP-ECT&#xff0c;是自主研发的一款PROFIBUS从站功能的通讯网关&#xff0c;它的主要功能是将ETHERCAT设备接入到PROFIBUS网络中。 YC-DP-ECT这个小小的网关可不简单&#xff0c; 连接到PROFIBUS总线中做为从站使用&#xff0c;连接到ETHERCAT总线中做为从站使用…

实现企业安全云转型的思考

如今大部分企业都在开展数字化数字化转型&#xff0c;云计算一直在其中起着主导地位&#xff0c;因而组织面临着双重挑战&#xff1a;如何将业务无缝迁移至云上&#xff0c;并确保这种转型的安全。 虽然云的使用保证了可扩展性、成本效率和生产力的提高&#xff0c;但上云过程…

【C++顺序容器】deque的成员函数和非成员函数

目录 deque 1. deque的成员函数 1.1 构造、析构和赋值运算符重载 1.1.1 构造函数 1.1.2 析构函数 1.1.3 赋值运算符重载 1.2 迭代器 1.3 容量 1.4 元素访问 1.4.1 遍历方法 1.5 修改器 1.6 空间配置器 2. deque的非成员函数 deque deque&#xff08;通常发音为 &…

告别VLAN孤岛,两招让你轻松实现互访

实际网络中&#xff0c;经常会有VLAN之间互访的需求。 很多网工通常会选择一些方法&#xff0c;来实现不同VLAN间主机的相互访问&#xff0c;比如说Vlanif、单臂路由。 今天就教你轻松实现VLAN间互访。 01-通过子接口实现 VLAN 间的互访 在二层交换环境下&#xff0c;一个VLA…

线程是什么

目录 一、教材观点 二、简述进程是如何运行的 简述进程切换原理&#xff1a; 三、线程是什么 线程底层是如何被管理的 四、重讲线程概念理解 一、教材观点 教材观点&#xff1a; 线程是一个执行分支&#xff0c;执行分支更细&#xff0c;调度成本更低。线程是进程内部的…

Android SystemServer 启动流程分析

和你一起终身学习&#xff0c;这里是程序员Android 经典好文推荐&#xff0c;通过阅读本文&#xff0c;您将收获以下知识点: 一、SystemServer 启动的服务有哪些二、SystemServer启动总体流程概述三、SystemServer 如何启动&#xff0c;是谁启动的&#xff1f;四、 SystemServe…

解决哈希冲突

1、HashMap引入了链式寻址法来解决hash冲突&#xff0c;冲突的key&#xff0c;HashMap把这些key组成一个单向链表&#xff0c;然后采用尾插法把key保存到链表的尾部。 使用二次扰动函数&#xff08;hash函数&#xff09;来降低哈希冲突的概率&#xff0c;使数据平均分布。 pu…

【VUE】Unterminated template literal:拼接字符串包括<script></script>时报错误

vue拼接字符串包括时报错误提示Unterminated template literal vue拼接字符串包括script标签时报错误提示Unterminated template literal解决方法加反斜杠就可以&#xff0c;在script结束标签里边加反斜杠<\/script> 代码 htmlData: <div id"b0e5c00cc51e4a4…

svg图标颜色随父元素变换

给svg加上一下样式 fill: currentColor;注&#xff1a;为什么有的svg设置了fill: currentColor;还是一样不生效&#xff1f; 用电脑自带的txt或者代码开发工具&#xff08;如&#xff1a;HbuilderX&#xff09;打开svg文件 全局搜索 fill 把fill指定颜色去掉 保存就OK了

存储函数,存储过程的应用

查看触发器 mysql> show triggers \G *************************** 1. row ***************************Trigger: student_insert_triggerEvent: INSERTTable: studentStatement: BEGINupdate student_total set totaltotal1;ENDTiming: AFTERCreated: 2023-07-11 16:13:51…

msvcp71.dll丢失怎样修复,msvcp71.dll丢失的三个解决方法

在运行游戏&#xff0c;软件程序的时候&#xff0c;电脑提示msvcp71.dll丢失怎样修复&#xff1f;下面小编就开始介绍msvcp71.dll在电脑系统中的的目录&#xff0c;作用&#xff0c;以及丢失后三个解决方法。 目录 msvcp71.dll通常位于系统目录里&#xff1a; msvcp71.dll丢失…

本地git 提交代码时 报错 [session-4d40e187] Access denied

1、首先执行以下命令查看本地是否绑定仓库 git remote -v2、如果没有执行以下命令添加 git remote add name(仓库名) git地址 // 添加成功后执行git remote -v 检查3、提交代码到新仓库&#xff0c;执行以下代码即可 git add . git commit -m fix:init git push name(于第二…

有趣的命令——————用shell脚本实现(石头剪刀布)小游戏

vim games。sh 输入以下内容&#xff1a;#!/bin/bash echo "这是一个小游戏(石头0 剪刀1 布2)&#xff0c;放松一下:" pc$(expr $RANDOM % 3) read -p "请输入你的选择:" user if [ $pc -eq 0 -a $user -eq 2 ] || [ $pc -eq 1 -a $user -eq 0 ] || [ $pc …

单个电源模块带电感的直流压降仿真(三)

单个电源模块带电感的直流压降仿真(三) 接单个电源模块带电感的直流压降仿真(二) 设置负载Sink,按照向导逐步设置

C++好难(9):C++的多态

目录 1.多态的概念 2.多态的定义及实现&#xff1a; &#x1f349;多态的构成条件 &#x1f349;虚函数 &#x1f349;虚函数的重写 &#x1f349;虚函数重写的三个例外 &#x1f352;子类虚函数可以不加vector &#x1f352;析构函数的重写 &#x1f352;协变&#xf…

开源铸剑,五载匠心!Zilliz Cloud云服务盛装登场,引领向量数据库云时代!

2023 年注定是属于大模型和向量数据库的巅峰时刻。国内大模型的发展也迎来前所未有之机遇&#xff0c;“百模”激战正酣。在刚闭幕的世界人工智能大会上&#xff0c;国内外科技公司全线加入&#xff0c;三十余款大模型集中亮相&#xff0c;“国家队”尘埃落定&#xff0c;并正式…

接口测试(二) 优化项目分层及cookies值带入

整个项目分层如图 然后上代码 #data_test.py from openpyxl import load_workbook import json import osclass Date_test():filepath os.path.dirname(os.path.dirname(__file__))def __init__(self):self.case_id Noneself.url Noneself.data Noneself.Method Noneself…