前言


本文将使用一个基于开源项目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软件下载

HSLSharp.zip

版本将会随着更新功能会有所变化,相应的本博客也会有更新,如下也会做一些更新日志的声明:

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的节点分类规则,节点描述等信息,但是具体的数据标签由解析规则配置器组成。

以下就具体说明下程序大致的配置步骤:

  1. 配置客户端分类信息,新增想要的设备,新增设备时需要选择相应的设备类型。
  2. 新建完设备类型之后,需要配置数据请求,指定读取的地址,读取的长度,然后配置解析规则代码。
  3. 如果没有解析规则代码,那就需要先配置规则解析,本系统支持可视化的规则配置,具体的配置方法本文下文会深度讲解。

主界面的简单介绍


打开软件的主界面,如下,在初次使用软件的时候,系统默认了三个固定的根节点

  1. Devices      设备类的根节点
  2. ModbusServer Modbus服务器的节点,目前不支持
  3. 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软件进行简单的测试,关于该软件的下载地址:

HslCommunicationDemo.zip

添加完成后,保存。回到软件的主界面。然后点击 启动引擎 ,这时候我们还没开始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软件文档的更多相关文章

  1. 配置域从DNS服务器以及缓存DNS服务器

    一.域从DNS服务器的作用 我们在之前上一篇随笔里有提到,DNS服务器一般有三种类型,一个是Primary DNS Server(主DNS服务器),一个是Secondary DNS Server(从D ...

  2. 在windows server 2008 R2 64bit上面配置PI OPC Server的DCOM

    今天想配置PI OPC SERVER的DCOM设置,但是发现在“运行dcomcnfg->组件服务-计算机-我的电脑-DCOM设置”中找不到PI OSI DA Server.如下图所示 这是以前从 ...

  3. 使用钡铼BL102网关连接西门子S7-1200PLC 以及mosquitto服务器方法

    一.软硬件描述 西门子PLC S7-1215 钡铼BL102网关 mosquitto MQTT服务器(腾讯云上搭建) 可以上网的路由器一套 二.需要使用的软件. 西门子Portal v15.1 (西门 ...

  4. IIS配置ASP.NET和服务器错误页

    以下两种方法均为全站出错处理 方法一: 1.在Web.config配置文件中<system.web></system.web>中添加<customErrors mode= ...

  5. python配置apache的web服务器方法(python的CGI配置)

    先大概介绍一下:Python CGI编程 什么是CGI CGI 目前由NCSA维护,NCSA定义CGI如下: CGI(Common Gateway Interface),通用网关接口,它是一段程序,运 ...

  6. Spring Cloud Zuul 2(基于配置中心的动态API网关)

    在大体了解了API Zuul 和 配置中心Config后我们来尝试完成一个基于配置中心的动态API网关 创建项目 命名为api-gateway-dynamic-route并加入config 和 Zuu ...

  7. RHEL/CentOS 7 中配置 PXE 网络启动服务器

    RHEL/CentOS 7 中配置 PXE 网络启动服务器 作者: Matei Cezar 译者: LCTT joeren | 2015-02-17 14:28   评论: 13 收藏: 8 分享:  ...

  8. 一个简单的零配置命令行HTTP服务器

    http-server 是一个简单的零配置命令行HTTP服务器, 基于 nodeJs. 如果你不想重复的写 nodeJs 的 web-server.js, 则可以使用这个. 安装 (全局安装加 -g) ...

  9. Dnsmasq安装与配置-搭建本地DNS服务器 更干净更快无广告DNS解析

    默认的情况下,我们平时上网用的本地DNS服务器都是使用电信或者联通的,但是这样也导致了不少的问题,首当其冲的就是上网时经常莫名地弹出广告,或者莫名的流量被消耗掉导致网速变慢.其次是部分网站域名不能正常 ...

随机推荐

  1. IDEA 安装mybatis 插件 可以通过mapper定位到xml

    在使用IDEA的时候 ,通过mapper类定位到 xml文件是让人很头疼的问题! 无意中发现了这个插件!可以通过类方法直接定位到xml中!比较强大!哈哈! 这玩意好像是付费的! 不过不破解也能用! 哈 ...

  2. maven问题:如何启动maven项目

    maven是项目构建工具,用于解决jar间的依赖,启动maven项目的命令:tomcat:run 步骤如下: 1.在pom.xml文件中配置插件,此处配置的是tomcat8 2.右击项目名,找到Run ...

  3. c# 过滤HTML代码 源代码,案例 下载

    #region 过滤HTML代码 //替换掉html字符,只显示文字信息. public string replaceHtmlCode(string Htmlstring) { Htmlstring ...

  4. 虚拟机中的Linux安装VMware Tools的方法

    先检查虚拟机是否能上网 一:安装VMware Tools的之前必装的工具套件方法如下: Centos安装VMware Tools: [root@piaoyun-vm vmware-tools-dist ...

  5. [Eclipse]保存java文件时,自动删除不需要的包import

    1.修改设定:Window->Preferences 2.效果:                =>           

  6. web页面中 将几个字段post提交

    思路 自己在html中构建form 先根据传入的action构建form的action  然后根据要提交的字段构建form中的元素  最后通过调用form中的按钮提交from表单 方法:var jsP ...

  7. cJONS序列化工具解读二(数据解析)

    cJSON数据解析 关于数据解析部分,其实这个解析就是个自动机,通过递归或者解析栈进行实现数据的解析 /* Utility to jump whitespace and cr/lf *///用于跳过a ...

  8. p-value值的认识

    待续:https://www.zhihu.com/question/21429785/answer/147047565

  9. Gruntjs提高生产力(四)

    思考: 1.grunt以工程为单位安装插件? 如果有新工程就要重新安装插件或者把安装好的插件拷贝过去.这样很麻烦,解决方案是需要用grunt的项目统一放在grunt项目中. 2.每次需要针对项目编写g ...

  10. http协议code码

    301 永久重定向 类似手机呼叫转移 302 临时重定向 类似手机呼叫转移 403 forbidden ngnix怎么解决? 含义:表示你在请求一个资源文件,但是nginx不允许你查看. 原因1:访问 ...