上位机C#通过OPCUA和西门子PLC通信
写在前面:
很多人在学习OPCUA的时候,有个非常苦恼的问题,就是没有OPCUA服务器的环境,这时候,有些人可能会想到通过类似于KepServer这样的软件来实现。那么,有没有一种方式,实现快速搭建OPCUA环境呢?答案是有的,今天继续给大家分享S7-PLCSIM Advanced,S7-PLCSIM Advanced是SIEMENS推出的一款高功能仿真器,它的显著特点是除了可以仿真一般的PLC逻辑控制程序外还可以仿真通信,功能是非常强大的,今天主要讲述如何基于S7-PLCSIM Advanced搭建OPCUA通信仿真环境。
01.PLCSIM-Advanced安装
对于该软件的获取,大家可以去西门子相关网站下载,也可以直接关注喜科堂上位机官方公众号-dotNet工控上位机,然后发送关键词PLCSIM-Advanced,即可下载使用。
图表 1 PLCSIM Advanced软件
PLCSIM-Advanced的安装也比较简单,基本上是一路NEXT即可,但是主要的是PLCSIM-Advanced会依赖WinPcap软件,所以大家可以提前安装好WinPcap,即使不提前安装,安装过程中也会提示你安装的。
安装完成后,电脑中会额外多出一个虚拟网卡,名称为Siemens PLCSIM Virtual Ethernet Adapter,如下图:
图表 2网卡列表
02.PLCSIM-Advanced使用
安装完成后,桌面上会多出一个图标,即S7-PLCSIM Advanced V3.0,如下图所示:
图表 3 PLCSIM Advanced图标
该软件的使用可以按照下方的步骤执行和确定,一定要记住以下需要注意的地方,否则一个很小的问题,可能会让你浪费半天的时间,这样就得不偿失了。
(1)软件要以管理员权限运行:可以直接每次右击,以管理员权限运行,如果想一劳永逸,可以点击图标,右击属性,在兼容性中,将以管理员身份运行此程序的选项勾选。
图表 4设置管理员权限运行
(2)将本地网卡及虚拟网卡的IP地址获取设置为自动获取。
(3)设置PG/PC接口:
通过控制面板,打开设置PG/PC接口界面,按照下图所示设置应用程序访问点:
图表 5设置PG/PC接口
(4)打开PLCSIM-Advanced,依次按照步骤进行设置:
图表 6设置PLCSIM-Advanced
(5)使用博图创建一个简单项目,一定要选择1500PLC,PLCSIM-Advanced只支持1500PLC,但是对学习通信来说,没什么影响。
(6)勾选允许Put/Get访问:
图表 7设置允许PUT GET访问
(7)点击项目,右击属性,将保护中的块编译时支持仿真选项勾选:
图表 8设置块编译支持仿真
(8)下载PLC程序时,将PG/PC接口设置成Siemens PLCSIM Virtual Ethernet Adapter。
图表 9选择PG/PC接口
(9)选择显示所有兼容的设备,点击开始搜索,搜索到之后,点击下载即可。
图表 10搜索设备下载
03.OPCUA配置
上述过程和搭建S7通信环境完全一样,OPCUA其实就是在S7的基础上,需要先增加一些DB存储区,然后在DB块中添加一些变量,这里不需要去除优化访问,如下图所示:
图表 11新建DB块
增加完成之后,双击CPU,在OPCUA选项中,将激活OPCUA服务器勾选,如下图示所示:
图表 12激活OPCUA服务器
激活OPCUA服务器之后,选择运行系统许可证选项,选择一个OPCUA许可证:
图表 13选择OPCUA许可证
以上操作完成之后,将PLC程序重新下载,下载步骤如上述一致。
04.UAExpert通信测试
上述操作完成之后即完成了整个环境搭建的过程,下面先使用官方的UAExpert进行测试。
图表 14 UAExpert通信测试
05.通信测试平台测试
接着,我们使用新阁的通信测试平台软件进行通信测试,设置服务器节点为opc.tcp://192.168.1.20:4840(根据实际情况修改),点击连接,连接成功后,点击变量管理,即可看到OPCUA服务器中的所有节点,通过选择DataBlockGlobal下的KYJDB,找到了我们刚刚配置的变量,选择想要读取的变量,然后读取即可。
图表 15变量选择
图表 16新阁通信测试平台
写在最后:
本文旨在结合SIEMENS推出的一款高功能仿真器PLCSIM-Advanced软件实现快速搭建OPCUA通信仿真环境,对于从事上位机开发,想要学习OPCUA通信,手头又没有硬件的学员来说,无疑是一大利好,基于OPCUA与西门子PLC通信,可以通过变量名称访问,而不需要去除DB的优化访问,这一点非常方便。

上位机C#通过OPCUA和西门子PLC通信的更多相关文章
- 上位机开发之三菱Q系列PLC通信实践
经常关注我们公众号或者公开课的学员(如果还没有关注的话,左上角点击一波关注)应该知道,我们会经常使用西门子PLC,其实对于其他品牌的PLC,我们都会讲到,包括三菱.欧姆龙.基恩士.松下及国产台达.信捷 ...
- 【精讲版】上位机C#/.NET与西门子PLC通信
618来啦 亲们,腾讯课堂101机构打榜了,快来助力<新阁教育>,<免费赠送课程>! 1.手机QQ(微信请也来一遍)扫下方二维码↓,找到<新阁教育> 2.点击“支持 ...
- 基于S7协议实现与西门子PLC通信
西门子PLC是目前工控行业市场占有额比较大的一款PLC,而且随着上位机的越来越普及, 有很多人开始考虑自己开发上位机实现与西门子PLC的通信,遇到的第一个问题就是数据通信. 其实西门子PLC提供的接口 ...
- 上位机开发之西门子PLC-S7通信实践
写在前面: 就目前而言,在中国的工控市场上,西门子仍然占了很大的份额,因此对于上位机开发而言,经常会存在需要与西门子PLC进行通信的情况.然后对于西门子PLC来说,通信方式有很多,下面简单列举一下: ...
- C#读写三菱PLC和西门子PLC数据 使用TCP/IP 协议
本文将使用一个Github开源的组件库技术来读写三菱PLC和西门子plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能 ...
- C# 读写西门子PLC数据,包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC
本文将使用一个gitHub开源的组件技术来读写西门子plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 官方 ...
- python 读写西门子PLC 包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC
本文将使用一个gitHub开源的组件技术来读写西门子plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 nu ...
- java android 读写西门子PLC数据,包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC
本文将使用一个gitHub开源的组件技术来读写西门子plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 gi ...
- C#读写西门子PLC数据
C#读写西门子PLC数据,包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC 本文将使用一个gitHub开源的组件技术来读写西门子plc数 ...
随机推荐
- P1680 奇怪的分组(组合数+逆元)
传送门戳我 首先将n减去所有的Ci,于是是原问题转换为:n个相同的球放入m个不同盒子里,不能为空,求方案数. 根据插空法:n个球,放到m个箱子里去不能为空,也就是有m-1块板子放在n-1个空隙之间 那 ...
- maven的安装及环境变量配置
1.下载maven 2.解压至该路径 3. 新建环境变量MAVEN_HOME , 值为maven包点开路径 环境变量配置: 4. 编辑环境变量Path,追加%MAVEN_HOME%\bin\ 5.一路 ...
- HTTPS GET | POST | DELETE 请求
依赖: <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp& ...
- 王颖奇 20171010129《面向对象程序设计(java)》第十周学习总结
实验十 泛型程序设计技术 实验时间 2018-11-1 1.实验目的与要求 (1) 理解泛型概念: (2) 掌握泛型类的定义与使用: (3) 掌握泛型方法的声明与使用: (4) 掌握泛型接口的定义与 ...
- vue滑动吸顶以及锚点定位
Vue项目中需要实现滑动吸顶以及锚点定位功能.template代码如下: <template> <div class="main"> <div id= ...
- 对文本的内容进行排序(io流、集合操作)
package com.itheima.demo01.BufferedStream; import java.io.*; import java.util.HashMap; /* 练习: 对文本的内容 ...
- [hdu5375 Gray code]DP
题意:给一个二进制码,其中有一些位上为'?',对每个问号确定是'0'还是'1',最后以它对应的格雷码来取数,第i位为1则取第i个数,求取得的数的和的最大值. 思路:二进制码B转换成格雷码G的方法是,G ...
- 关于C语言的位运算符
早期cpu架构在运行位运算时 略微领先 + - 运算 大幅领先 * / % 运算 '&' 运算符 总结 两个二进制中对应的位置都为 1 结果的对应二进制为 1 '&'运算符可以用到奇偶 ...
- 【雕爷学编程】MicroPython动手做(02)——尝试搭建K210开发板的IDE环境
喜欢今日头条,偶然看到广告,半个多月前交了8.9元,报名参加了头条上Python的四天培训课,呵呵,总算是有了零的开始(还是有点收获的,见https://www.sohu.com/a/38112874 ...
- Python操作MongoDB代码示例
import pymongo #pip install pymongo安装python操作mongodb的模块 myclient=pymongo.MongoClient(host='127.0.0.1 ...