上位机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数 ...
随机推荐
- 怎么成为一名WEB前端开发工程师
对于刚开始学的人来说,web 就是HTML+CSS+JavaScript其实我们是可以这样理解的.web工程师负责或参与Web产品的页面开发,包含PC端.移动APP内嵌移动端.微信小程序.web ...
- 牛客小白月赛16 小石的妹子 二分 or 线段树
牛客小白月赛16 这个题目我AC之后看了一下别人的题解,基本上都是线段树,不过二分也可以. 这个题目很自然就肯定要对其中一个进行排序,排完序之后再处理另外一边,另一边记得离散化. 怎么处理呢,你仔细想 ...
- 环境篇:Atlas2.0.0兼容CDH6.2.0部署
环境篇:Atlas2.0.0兼容CDH6.2.0部署 Atlas 是什么? Atlas是一组可扩展和可扩展的核心基础治理服务,使企业能够有效地满足Hadoop中的合规性要求,并允许与整个企业数据生态系 ...
- HttpClient之Post接口代码范例
核心包: import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject; 一:接收数据 json数据格式如下 ...
- springMVC的自定义annotation(@Retention@Target)详解
自定义注解: 使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口,由编译程序自动完成其他细节.在定义注解时,不能继承其他的注解或接口.@ ...
- js console一些常用的功能
前言 很多时候我们在调试的时候经常用console.log,我感觉其实一个就够了,但是有时候你不可能写一步就去调试下,所以呢,经常用几个console.log,有时候挺难找的,后面翻了翻console ...
- go 数组 字符串 切片
数组 数组定义方式 var a [3]int // 定义长度为3的int型数组, 元素全部为0 var b = [...]int{1, 2, 3} // 定义长度为3的int型数组, 元素为 1, 2 ...
- Python --表达式和运算符
表达式 由一个或者几个数字或者变量和运算符组合成的一行代码 通常会返回一个结果 运算符 由一个以上的值经过变化得到新值的过程就叫做运算 用于运算的符号称为运算符 运算符的分类: 算数运算符 比较或者关 ...
- hdu4035 Maze 题解
/* 设 E[i]表示在结点i处,要走出迷宫所要走的边数的期望. E[i] = ki*E[1] + (1-ki-ei)*E[fa[i]] + (1-ki-ei); E[i] = ki*E[1] + ( ...
- iptables做nat网络地址转换
iptables做nat网络地址转换. 0. 权威文档 http://www.netfilter.org/documentation/HOWTO/NAT-HOWTO-6.html e文好的直接跳过本文 ...