C# OPC UA服务器 OPC UA网关 三菱 西门子 欧姆龙 Modbus转OPC UA 服务器 可配置的OPC UA服务器网关 HslSharp软件文档
前言
本文将使用一个基于开源项目HslCommunication创建的OPC UA网关,方便通过配置创建一个OPC UA的网关中心。具体的操作及支持的设备信息项目参照下面:
开源项目HslCommunication的github地址:https://github.com/dathlin/HslCommunication 如果喜欢可以star或是fork,还可以打赏支持。此项目在工业界非常的流行,用来采集设备的数据以及在多个软件之间进行数据传送,以及一些简单的控件显示。
联系作者及加群方式(激活码在群里发放):http://www.hslcommunication.cn/Cooperation
在Visual Studio 中的NuGet管理器中可以下载安装,也可以直接在NuGet控制台输入下面的指令安装:
Install-Package HslCommunication
NuGet安装教程 http://www.cnblogs.com/dathlin/p/7705014.html
Demo软件下载
版本将会随着更新功能会有所变化,相应的本博客也会有更新,如下也会做一些更新日志的声明:
v0.0.1
2018年5月1日 13:47:22
预发行版,初步的测试。
特性支持
- 支持空设备节点,创建单纯的节点以供设备读写
- 支持三菱PLC的设备节点,针对的MC协议的二进制和ASCII的机制
- 支持西门子设备节点,支持S7协议,Fetch/Write
- 支持欧姆龙设备节点,支持FINS/TCP节点
- 支持Modbus-Tcp设备节点
- 支持异形Modbus-Tcp设备节点
- 支持NetSimplify客户端节点,这个协议可以在多个电脑之前传送数据。
使用说明
本软件的OPC UA的节点配置需要要节点配置器和解析规则配置器组成,节点配置器来配置OPC UA的节点分类规则,节点描述等信息,但是具体的数据标签由解析规则配置器组成。
以下就具体说明下程序大致的配置步骤:
- 配置客户端分类信息,新增想要的设备,新增设备时需要选择相应的设备类型。
- 新建完设备类型之后,需要配置数据请求,指定读取的地址,读取的长度,然后配置解析规则代码。
- 如果没有解析规则代码,那就需要先配置规则解析,本系统支持可视化的规则配置,具体的配置方法本文下文会深度讲解。
主界面的简单介绍
打开软件的主界面,如下,在初次使用软件的时候,系统默认了三个固定的根节点
- Devices 设备类的根节点
- ModbusServer Modbus服务器的节点,目前不支持
- ModbusAlien 异形ModbusTcp设备对象
如果没有配置软件节点信息,那就需要先点击 系统配置 的 节点配置 菜单了。主界面如下
节点配置的界面如下,此处有个细节,点击节点名称,即可以在右侧的数据列表里显示出来当前选择的节点的详细信息,做左侧节点的操作,通过鼠标右键的菜单来操作:
添加节点分类操作
此处简单的演示添加一个简单的分类操作信息。鼠标在Devices上右键即可操作
然后就会弹出一个编辑框,这样我们就实现了一个类别节点的添加,注意:类别节点是可以相互嵌套的,可以形成复杂的分类
复杂类型节点举例:
然后点击 保存文件 菜单,然后关掉当前窗口,回到主界面,点击 启动引擎,点击 测试客户端 菜单,启动一个通用的OPC UA客户端来浏览服务器上有什么数据信息
可以看到OPC UA的服务器已经按照我们设想创建好了数据节点信息。然后重启软件,我们重新进入 节点配置器 节点进行操作。
编辑和删除节点操作
想要对哪个节点进行操作,就选择哪个节点,然后右键,发现就2个额外的操作选择,编辑节点 和 删除节点 。注意,这里的编辑和删除适用于所有分类节点和设备节点,准确的说,除了3个根节点外不能修改外,其他节点都是可修改的。
删除节点的时候需要注意有个细节:如果当前删除的节点没有子节点,该节点直接进行删除,如果包含了子节点,将会弹出一个对话框。
新增一个演示设备示例,Modbus-Tcp设备
此处我们演示一个例子,添加一个Modbus-Tcp的设备,为啥要拿这个演示呢,因为基于HslCommunication组件的项目中提供了一个Modbus服务器演示项目,可以方便的进行本机的调试测试等等操作。
下载地址:ModbusTcpServer.zip
在开始开发前,还要说明个事情,虽然HslCommunication组件支持读取线圈,寄存器,输入点操作,但是此处只支持读取寄存器,如果要读取线圈怎么办,可以采用的解决方案是把线圈的数据先挪到寄存器里,再进行解决。
OK,万事俱备,开始吧。
然后我们输入好设备的基本信息,比如说名字,描述,IP地址,端口号,客户端的站号等等操作
然后点击 确认 。回到节点配置器如下:
这样就添加成功了一个设备,我们选中这个节点后,右侧的数据列表就显示了这个设备的相关信息。
先不要急着给设备添加访问请求,因为目前没有 配置解析规则 ,那么接下来的操作是点击上图的 保存文件 按钮操作,然后回到主界面
这时候我们进入一个关键的操作,那就是配置解析规则,这个是什么意思呢,我先解释下,我们从设备读取数据通常是字节数据,并不是一些基础的数据类型,比如说short,ushort,int,uint,float.double之类的数据,这个解析规则就是起这样的作用的。比如ModbusTcp我们需要读取20个地址长度的寄存器,那么读取出来以后就是40字节长度,这些寄存器里都有什么数据呢
[ 0 - 1 ] 数据一 short类型
[ 2 - 3 ] 数据二 ushort类型
[ 4 - 7 ] 温度 float类型
[ 8 - 31 ] 机器人关节数据 共计6个长度的float数组
[ 32 - 39 ] 条码 共计8个字节长度
以上是我们假设的数据,因为我也不知道您实际中会碰到怎样的情况,此处就做了一些比较经验的假设,还假设了一个数组的存在,条码的字符串存在,OK,有了这些信息,我们就可以添加解析规则了。
还是老的操作,我们接下来要看看需要我们输入什么信息了。
随便输入一个规则名称吧,然后点击 确认。
接下来我们就需要来添加真正的规则解析了。
先根据上面的信息来填写数据一的信息,索引为0,数据长度为1,因为没有数组。点击确认。
然后继续添加规则
然后添加温度数据
然后再添加机器人位置数据,注意,这是一个数组,长度为6,那么按照下面设置,数据长度的信息需要设置为6
在添加最后一个数据为条码
到这里为止,我们添加了所有的数据了,回到 解析规则器配置界面 ,看看刚刚配置到的成果吧,
左边显示了字节的信息,共配置了40个字节的数据,每种数据类型的背景颜色都不一致,用于快速的区分不同种类的数据类型,可视化的界面显示了所有配置的数据信息,类型,已经所在的字节位置。方便的快速检查有没有遗漏的信息。
确认可以之后,点击菜单的 保存文件 按钮,然后回到节点配置器
这下子可以真的完成数据配置界面了,这里再假设我们需要读取的数据在地址0开始的20个地址的寄存器里。
接下来就按照我们假设的信息输入
这里的请求地址是寄存器的地址,地址规则如下:
- Modbus协议 就是纯数字的内容
- 三菱PLC D100,或是W1A0
- 西门子PLC M100,DB20.30之类的
- 欧姆龙 D100,A100
- SimplifyNet 纯数字,或是1.0.3
这有什么规律呢,我们可以发现这些地址的格式需要HslCommunication支持,所以在配置前,最好使用HslCommunicationDemo软件进行简单的测试,关于该软件的下载地址:
添加完成后,保存。回到软件的主界面。然后点击 启动引擎 ,这时候我们还没开始Modbus服务器,看看有什么效果。
下面显示加载的设备信息中发现了一台设备,类型为ModbusTcp设备,这台设备的服务器我们还没有开启,所以在设备监控项里这个设备处于闪烁中,我们把鼠标移动这个小框框里看看,
可以看到一些设备的基本信息,名称,状态,上次接收时间,这里的上次接收时间是什么意思呢,初始化的情况下,默认为1天之前,好了,接下来我们开好服务器的软件。
我们一点击 启动服务 按钮后,运行日志立马显示有设备连接上来了,
当HslSharp的设备连接上了服务器之后,会怎么样呢。
背景颜色已经变绿色了,上次接收时间也更新了,状态也变成了 在线 状态,然后我们在看看OPC UA的客户端,有什么效果。
然后我们更改下数据试试,在Modbus服务器的界面,在地址2里写入float类型的数据,123.456试试看
然后再去OPC UA的客户端界面刷新数据看看数据效果
此处验证成功,再写一个吧,写个条码信息,在地址16-19里,写入ABCDEFGH;
我们就可以看到
此处有个小BUG,做演示截图的时候来不及改这个BUG了,后面肯定会修复。并在日志里声明
特别说明
你看我们在配置数据解析规则的时候并没有指定数据的大小端,比如三菱是小端在前,大端在后的,西门子是大端在前,小端在后的,Modbus协议和欧姆龙是以字为单位反转的。实际上在本软件中无需理会,我们只要关注什么数据,占了多少长度即可。还是相当方便的。如果有更好的建议,可以联系作者改进。
ModbusTcp异形客户端配置
异形ModbusTcp的配置和大体上和上面的ModbusTCP配置是一样的,但有一些小区别,需要下次完善更新。
C# OPC UA服务器 OPC UA网关 三菱 西门子 欧姆龙 Modbus转OPC UA 服务器 可配置的OPC UA服务器网关 HslSharp软件文档的更多相关文章
- 配置域从DNS服务器以及缓存DNS服务器
一.域从DNS服务器的作用 我们在之前上一篇随笔里有提到,DNS服务器一般有三种类型,一个是Primary DNS Server(主DNS服务器),一个是Secondary DNS Server(从D ...
- 在windows server 2008 R2 64bit上面配置PI OPC Server的DCOM
今天想配置PI OPC SERVER的DCOM设置,但是发现在“运行dcomcnfg->组件服务-计算机-我的电脑-DCOM设置”中找不到PI OSI DA Server.如下图所示 这是以前从 ...
- 使用钡铼BL102网关连接西门子S7-1200PLC 以及mosquitto服务器方法
一.软硬件描述 西门子PLC S7-1215 钡铼BL102网关 mosquitto MQTT服务器(腾讯云上搭建) 可以上网的路由器一套 二.需要使用的软件. 西门子Portal v15.1 (西门 ...
- IIS配置ASP.NET和服务器错误页
以下两种方法均为全站出错处理 方法一: 1.在Web.config配置文件中<system.web></system.web>中添加<customErrors mode= ...
- python配置apache的web服务器方法(python的CGI配置)
先大概介绍一下:Python CGI编程 什么是CGI CGI 目前由NCSA维护,NCSA定义CGI如下: CGI(Common Gateway Interface),通用网关接口,它是一段程序,运 ...
- Spring Cloud Zuul 2(基于配置中心的动态API网关)
在大体了解了API Zuul 和 配置中心Config后我们来尝试完成一个基于配置中心的动态API网关 创建项目 命名为api-gateway-dynamic-route并加入config 和 Zuu ...
- RHEL/CentOS 7 中配置 PXE 网络启动服务器
RHEL/CentOS 7 中配置 PXE 网络启动服务器 作者: Matei Cezar 译者: LCTT joeren | 2015-02-17 14:28 评论: 13 收藏: 8 分享: ...
- 一个简单的零配置命令行HTTP服务器
http-server 是一个简单的零配置命令行HTTP服务器, 基于 nodeJs. 如果你不想重复的写 nodeJs 的 web-server.js, 则可以使用这个. 安装 (全局安装加 -g) ...
- Dnsmasq安装与配置-搭建本地DNS服务器 更干净更快无广告DNS解析
默认的情况下,我们平时上网用的本地DNS服务器都是使用电信或者联通的,但是这样也导致了不少的问题,首当其冲的就是上网时经常莫名地弹出广告,或者莫名的流量被消耗掉导致网速变慢.其次是部分网站域名不能正常 ...
随机推荐
- IDEA 安装mybatis 插件 可以通过mapper定位到xml
在使用IDEA的时候 ,通过mapper类定位到 xml文件是让人很头疼的问题! 无意中发现了这个插件!可以通过类方法直接定位到xml中!比较强大!哈哈! 这玩意好像是付费的! 不过不破解也能用! 哈 ...
- maven问题:如何启动maven项目
maven是项目构建工具,用于解决jar间的依赖,启动maven项目的命令:tomcat:run 步骤如下: 1.在pom.xml文件中配置插件,此处配置的是tomcat8 2.右击项目名,找到Run ...
- c# 过滤HTML代码 源代码,案例 下载
#region 过滤HTML代码 //替换掉html字符,只显示文字信息. public string replaceHtmlCode(string Htmlstring) { Htmlstring ...
- 虚拟机中的Linux安装VMware Tools的方法
先检查虚拟机是否能上网 一:安装VMware Tools的之前必装的工具套件方法如下: Centos安装VMware Tools: [root@piaoyun-vm vmware-tools-dist ...
- [Eclipse]保存java文件时,自动删除不需要的包import
1.修改设定:Window->Preferences 2.效果: =>
- web页面中 将几个字段post提交
思路 自己在html中构建form 先根据传入的action构建form的action 然后根据要提交的字段构建form中的元素 最后通过调用form中的按钮提交from表单 方法:var jsP ...
- cJONS序列化工具解读二(数据解析)
cJSON数据解析 关于数据解析部分,其实这个解析就是个自动机,通过递归或者解析栈进行实现数据的解析 /* Utility to jump whitespace and cr/lf *///用于跳过a ...
- p-value值的认识
待续:https://www.zhihu.com/question/21429785/answer/147047565
- Gruntjs提高生产力(四)
思考: 1.grunt以工程为单位安装插件? 如果有新工程就要重新安装插件或者把安装好的插件拷贝过去.这样很麻烦,解决方案是需要用grunt的项目统一放在grunt项目中. 2.每次需要针对项目编写g ...
- http协议code码
301 永久重定向 类似手机呼叫转移 302 临时重定向 类似手机呼叫转移 403 forbidden ngnix怎么解决? 含义:表示你在请求一个资源文件,但是nginx不允许你查看. 原因1:访问 ...