RapidSCADA示例:采集Modbus TCP和发布到MQTT

(说明:本文以操作截图为主,但由于CSDN的技术原因图片传不上来,对此文感兴趣的话去下载word文档……文档资源链接:RapidSCADA示例:Modbus和MQTT资源-CSDN文库)

RapidSCADA示例:采集Modbus TCP和发布到MQTT

2023.5.31 版本1

  1. 说明

本文档演示从裸机环境开始从下载、安装到配置Modbus TCP和发布到MQTT的全过程。

本文档以“作业指导书”的标准编写。

读者应当对modbus协议和MQTT协议有基本使用经验。

由于IIS和网络的复杂性,在现成PC上的安装可能遇到各种奇怪问题,因此,本文在虚拟机上安装,以尽可能减少未知状况。

所需硬件和软件:

运行windows操作系统的PC,支持虚拟机软件,可联网更新windows组件和下载软件

虚拟机软件VMWare

Windows家庭版安装光盘(或ISO文件)

ModbusTCP模拟器软件(如果有物理设备可以直接使用物理设备)

MQTT服务器软件(如果有现成服务器可以用现成服务器,但考虑到配置问题,建议用服务器软件自建)

MQTT客户端软件

  1. 裸机安装IIS
    1. 安装虚拟机

主机:windows 10 专业版(具体版本无关紧要)

虚拟机软件:VMware® Workstation 17 Pro 17.0.2 build-21581411(具体版本无关紧要,其它虚拟机软件也可以)

虚拟机:windows 10 家庭版(不一致可能界面操作会有所不同,需要额外安装的组件也可能不同)

安装windows10家庭版,默认安装,升级到最新版本,点击“开始”-“设置-“系统”-“关于”,查看系统版本:

正在上传…重新上传取消

       安装VMWare Tools,方便操作(不是VMWare则安装相应的工具软件——也可能无可安装)。

       配置文件夹选项,点击任务栏的“文件资源管理器”-“查看”-“选项”-“查看”,去掉“隐藏已知文件类型的扩展名”,建议选项如下:

正在上传…重新上传取消

    1. 添加IIS组件

打开“开始”-“设置”-“应用”-“应用和功能”,拉到最下面,选择“相关设置-程序和功能”:

正在上传…重新上传取消

       在打开的界面中选择“打开或关闭windows功能”:

正在上传…重新上传取消

       选中如下组件,注意,子项全部选中才是打勾,没有全部选中则是黑色方框,按照下图选择,全选的项目有些子项用不到,但是默认选项又不够用。

正在上传…重新上传取消

       点击确定后提示需要联网下载组件:

正在上传…重新上传取消

       开始下载和安装:

正在上传…重新上传取消

       安装完成:

正在上传…重新上传取消

    1. 验证IIS安装

点击“开始”-“Windows管理工具”-“Internet Information Services(IIS)”:

正在上传…重新上传取消

       为了查找方便,可以点右键“固定到开始屏幕”。

       打开后如图:

正在上传…重新上传取消

       展开左侧树,点击“Default Web Site”,然后在右测点击“浏览*:80(http)”:

正在上传…重新上传取消

     选择“Microsoft Edge”和“始终使用此应用”,点击“确定”打开默认网站。

       初始使用需要设置浏览器,可以按自己喜好设置或选择“在不使用你的数据情况下开始”:

正在上传…重新上传取消

       然后点击“确认并开始浏览”:

正在上传…重新上传取消

     最后见到此页面即表示默认网站工作正常:

正在上传…重新上传取消

  1. 补充安装

安装过程会遇到两个错误,由两个缺失的.net组件引起,可以先按照本章提前安装好这两个组件(相同下载页面的两个文件),如果想知道哪个组件引起了哪个错误,就先跳过此部分。

    1. 安装 .Net Desktop Runtime 6

用浏览器打开链接下载 .NET(Linux、macOS 和 Windows) :

正在上传…重新上传取消

       点击“所有.NET 6.0 下载”:

正在上传…重新上传取消

       找到箭头所指的“.NET桌面运行时”的“x64”安装程序,下载。

       下载完毕运行:

正在上传…重新上传取消

       安装成功:

正在上传…重新上传取消

    1. 安装 ASP.NET Core Runtime 6(Hosting Bundle)

用浏览器打开链接下载下载 .NET(Linux、macOS 和 Windows) ,点击“所有.NET 6.0 下载”:

正在上传…重新上传取消

       下载“Hosting Bundle”,注意不要选错了(不是“x64”),安装后打开IIS控制台:

正在上传…重新上传取消

       双击模块:

正在上传…重新上传取消

       看到“AspNetCoreModuleV2”就没问题了。

  1. 安装RapidSCADA6
    1. 下载安装程序

打开官网Rapid SCADA | Free, Open Source, Full Featured SCADA Software ,点击“Download”栏目,再点击“Download…”:

正在上传…重新上传取消

       进入到注册页:

正在上传…重新上传取消

       如果你已经注册过,直接点击“skip”跳过就可以了(嗯……没注册过也可以跳过),然后就进入下载页面了:

正在上传…重新上传取消

       下载过程需要很多耐心,不仅慢,而且会中断很多次。

       下载的文件名为rapidscada_6.1.2_windows_en.zip,下载成功后解压缩(点右键“全部解压缩”)。

    1. 安装

进入解压缩后的目录,双击运行“ScadaSetup.exe”:

正在上传…重新上传取消

       权限提示,选择“是”:

正在上传…重新上传取消

       然后出错:

正在上传…重新上传取消

       如果选择“是”,自动安装所需的组件,再运行此程序就不会有这个错误,这里我们选择“否”,自己去下载。

       按照章节“补充安装-安装.NET Desktop Runtime 6”安装组件,然后再次运行“ScadaSetup.exe”:

正在上传…重新上传取消

       点击“INSTALL”:

正在上传…重新上传取消

       默认就是全部选中,点击“Next”:

正在上传…重新上传取消

       记住默认安装位置C:\Program Files\SCADA(注意,与版本5.8是不一样的),点击“Next”:

正在上传…重新上传取消

       注意这个TCP port跟很多系统存在冲突可能,但是我们是裸机安装,不会冲突。

       点击Next:

正在上传…重新上传取消

       点击“Next”:

正在上传…重新上传取消

       缺失组件,点击箭头所指的链接即可进入组件下载页面,或者按照章节“补充安装-安装 ASP.NET Core Runtime 6”自行安装。

       安装完确实的组件后再次启动“ScadaSetup.exe”,重复上面的过程:

正在上传…重新上传取消

完整日志:

正在上传…重新上传取消(双击可查看)

    1. 运行

打开IIS管理工具:

正在上传…重新上传取消

       看到已经添加了网站“Scada”,点击“网站”-“Scada”,再点击右侧“浏览*:10008(http)”:

正在上传…重新上传取消

       默认用户名“admin”,默认密码“scada”(注意,密码与5.8版不一样了),点击“Login”进入系统:

正在上传…重新上传取消

       看到红圈里的数字就算大功告成了(数字会自动变化)。

  1. 安装、配置Modbus(TCP)虚拟设备
    1. 安装Modbus模拟器软件

选择modbus TCP是因为不需要物理设备或安装虚拟串口,如果有物理设备或已经配置好的虚拟设备,使用差别不大。

本例中安装Modbus Slave version 6.0.2 Build 826,如果用其它软件当然也没问题。

本例使用的软件采用默认安装即可,安装完毕在桌面可以看到图标:

正在上传…重新上传取消

       双击图标运行Modbus Slave程序:

正在上传…重新上传取消

       然后可以配置Modbus TCP虚拟设备。

    1. 配置Modbus(TCP)虚拟设备

因为本文档目的不是介绍模拟器软件的使用,所以直接提供了配置文件方便使用:

正在上传…重新上传取消(内嵌文档,右键“复制”然后在资源管理器“粘贴”)

将这两个文件放到虚拟机,然后关掉Modbus Slave的默认文档:

正在上传…重新上传取消

再打开配置文件Mbslave1.mbs:

正在上传…重新上传取消

       然后再重复操作一次打开Mbslave2.mbs,放大窗口,排列文档(菜单“Window”-“Tile”),看到两个文档的内容如下:

正在上传…重新上传取消

       简单解释一下:

       上面的文档,从站号为1,功能码为3,地址从0开始,有30个寄存器,地址1的值会自增。

       下面的文档:从站号也为1,功能码为1,地址从120开始,有10个Coil(线圈,也就是输出)。

       这两个文档其实是为RapidSCADA 5.8的示例准备的,本例只需要用两个寄存器即可。

       注意,两个文档表格上方都有“No Connection”字样,表示设备还没有连接。

    1. 连接虚拟设备(使虚拟设备生效)

菜单“Connection”-“Connect…”:

正在上传…重新上传取消

       首次使用会提示输入注册码,如果没有购买注册码可以试用30天。

       进入连接配置界面:

正在上传…重新上传取消

       修改配置,只需要将连接类型修改为“Modbus TCP/IP”,即可,端口默认502,不用修改:

正在上传…重新上传取消

       点击“OK”,可能会弹出防火墙,点击“允许访问”:

正在上传…重新上传取消

       虚拟设备现在已经运行,红圈处已经没有“No Connection”字样了:

正在上传…重新上传取消

    1. 确认虚拟设备

不要关闭modbus虚拟软件,将窗口最小化,然后使用任何一种支持modbus TCP的客户端,访问虚拟设备,下图用的是“ModbusTCP_Master V2.0”:

正在上传…重新上传取消

       注意一下图中第二个红圈,“监测起始地址”,这个起始地址有些软件是从0开始(比如本例的模拟器软件),而另外一些却是从1开始(比如图中这个客户端软件)。观察上图中的发送日志,虽然界面配的是1,发送的指令的起始地址却是0。要牢记实际发送的指令中的起始地址是从0开始的。

       确认后关闭此客户端。此客户端与本例无关,仅用来确认虚拟设备正常。

  1. 配置RapidSCADA采集Modbus(TCP)数据
    1. 打开管理程序

管理程序位于安装目录下的“ScadaAdmin”目录下:

正在上传…重新上传取消

       双击打开:

正在上传…重新上传取消

       找到示例项目,位于安装目录下的“ProjectSamples\HelloWorld”目录:

正在上传…重新上传取消

       打开:

正在上传…重新上传取消

       左边树的项目名称下面三个项目:配置数据库、视图、实例。

       工具栏前四个“打开、保存”一目了然,后面一组是“部署、下载配、上传、实例状态”,最后三个是“添加线路、设备、通道”,特别重要的是保存和上传,保存和上传之后才能生效。

    1. 添加通信线路

展开左边配置数据库-基础表-通讯线路,可以看到只有一条数据,点击工具栏的“添加线路”按钮,增加一个线路,只需要填写Name即可:

正在上传…重新上传取消

       添加完成后:

正在上传…重新上传取消

       这是因为没有权限写文件,放弃保存退出程序,然后在ScadaAdmim.exe上点右键“以管理员身份运行”(或者设置文件属性,始终以管理员身份运行),重新操作,成功后如图:

正在上传…重新上传取消

    1. 添加设备

展开左边配置数据库-基础表-设备,可以看到只有一条数据,点击工具栏的“添加设备”按钮,增加一个设备,需要填写多个信息:

正在上传…重新上传取消

(注意,图中的“Number”应为2)

       Code有什么用还不知道,设备类型选“Modbus”(不是Modbus Slave),通讯线路是刚才创建的“NewLine”。点击“确定”后图:

正在上传…重新上传取消

(注意,图中的“Number”应为2)

       界面左边自动展开了“实例-默认-通讯-通讯线路-NewLine-NewDev”。

       如果填错了什么,可以直接在上面的界面格子里编辑,然后提交、保存。

       修改设备之后要同步到实例,在下图左边红圈上点右键“同步”:

正在上传…重新上传取消

       点“Next”:

正在上传…重新上传取消

       一定要选中要同步的设备,然后点“Sync”:

正在上传…重新上传取消

    1. 配置通讯线路参数

在界面左边展开“实例-默认-通讯-通讯线路-NewLine-Line Options”,在右边打开的页面选择“Main Options”,将“Type”设置为“Tcp client”,此时右边“Properties”按钮变为可用:

正在上传…重新上传取消

       点击“Properties”按钮:

正在上传…重新上传取消

       默认值就可以了,点击“OK”。点击工具栏的“全部保存”保存配置。如果此处不保存而直接进行了下一步,最后才保存,则此处的修改会丢失!

       然后编辑设备,点“Device Polling”,选中设备:

正在上传…重新上传取消

       点击“Properties”:

正在上传…重新上传取消

       协议选择“Modbus TCP”,设备模板需要自己配,点“Edit”(点Browse能找到一个现成的配置文件,但是里面是空的,没意义):

正在上传…重新上传取消

       设置如下选项:

正在上传…重新上传取消

       其中左边显示几个子项会跟随右边的“Element count”设置。

       图中的意思是组名为dev1,取保持寄存器的前两个(虚拟设备实际有30个保持寄存器,为了配置简单,只取两个)。

       设置完“Element count”后在别的地方点一下,左侧会自动生成正确数量的子节点。

       依次点击左侧的子项,设置子项的名字:

正在上传…重新上传取消

只需要设置“Name”,“Tag code”和左侧显示的名字都会自动更新,数据类型默认“ushort”。

然后点击工具栏的保存按钮,默认文件名保存,再点右上角关闭,回到之前的界面:

正在上传…重新上传取消

       注意设备模板的文件名是刚才保存的文件名,然后点“OK”确认。

正在上传…重新上传取消

       刚才的配置文件名出现在“Command line”位置。

       点击工具栏的“全部保存”保存所有配置。

    1. 发布配置

点击工具栏的“发布”按钮:

正在上传…重新上传取消

       时不时发布一下没坏处。

    1. 查看线路状态

选择“Line Stats”,可以查看状态和日志,如果配置正确并且做了发布,将看到数据流:

正在上传…重新上传取消

    1. 查看设备状态

点击通讯线路下的设备,可以看到设备数据,我们读取了虚拟设备的两个保持寄存器:

正在上传…重新上传取消

  1. 配置视图
    1. 添加通道

之前已经采集到了设备数据,但没有显示在WEB界面中,因为还没有配置通道和视图。

点击工具栏按钮“添加通道”,打开通道向导:

正在上传…重新上传取消

       选择通讯线路和设备,如果设备配置正确,下面的方框里会显示通道数,因为这个设备配置为读取了两个保持寄存器数据,所以通道数为2,点击“Next”进入下一步:

正在上传…重新上传取消

       为设备选择对象,然后点击“Next”进入下一步:

正在上传…重新上传取消

       默认分配了通道号(记住通道号,后面要用),可以自行修改,点击“Create”,因为默认选中了“Preview”,首先进入预览界面:

正在上传…重新上传取消

       再点“Add”完成操作。

       展开左边的“配置数据库”-“基础表”-“通道”,查看数据:

正在上传…重新上传取消

       “通道”节点下面已经自动列出了设备名,可以仅查看设备的通道。

    1. 添加通道到视图

展开左边“视图”节点:

正在上传…重新上传取消

       双击打开“Simualator.tbl”,在打开的页面双击节点“[2]NewDev”,通道被添加到视图:

正在上传…重新上传取消

       为了好看一些可以添加一个空行在两个设备中间,点视图页面的工具栏的“+0”按钮,然后点向上箭头移动到上一行,最后保存配置:

正在上传…重新上传取消

    1. 发布配置和查看WEB效果

点击工具栏的“发布”按钮发布配置,然后在浏览器刷新界面:

正在上传…重新上传取消

       增加的数据已经正确显示在界面中,注意d2的值是自动递增的。

    1. 修改输出格式

增加的两个值都是整数,却显示为浮点数,需要在通道配置里修改:

正在上传…重新上传取消

       拖动滚动条,找到“Format”列,修改显示格式:

正在上传…重新上传取消

       保存配置,发布配置,浏览器里自动变成了新输出格式(无需刷新页面):

正在上传…重新上传取消

  1. 安装配置MQTT服务
    1. 安装EMQX

可以使用已经存在的MQTT服务,或者自行安装一个,本例使用emqx-5.0.14-windows-amd64。

Emqx是绿色软件,可在下载 EMQX下载。

将下载的压缩包解压到C:\下:

正在上传…重新上传取消

       桌面左下角点右键,打开“Windows PowerShell”,进入到解压缩后的目录:

cd C:\emqx-5.0.14-windows-amd64

       然后启动服务:

./bin/emqx start (注意操作系统不一定允许从当前目录开始查找程序,所以前面要加“./”)

正在上传…重新上传取消

       不要关闭命令窗口,关闭命令窗口会导致MQTT服务关闭。

    1. 添加用户

       打开浏览器,地址栏输入http://localhost:18083/:

正在上传…重新上传取消

       默认用户名“admin”,默认密码“public”,点击“Login”登录,登录后要求修改密码,修改为“admin123”(老老实实照着做,免得忘了),然后会自动回到登录界面,重新登录后自动进入用户管理界面:

正在上传…重新上传取消

       点击“Create“创建用户:

正在上传…重新上传取消

       输入用户名“user”,密码“user1234”,点击“Create”创建:

正在上传…重新上传取消

    1. 安装MQTT客户端

本例中使用MQTTX,安装程序为MQTTX-Setup-1.8.0-x64.exe,自行安装。

    1. 配置MQTT客户端

打开MQTTX:

正在上传…重新上传取消

点击“New Connection”创建连接:

正在上传…重新上传取消

       输入名称,随便写,“Host”地址“127.0.0.1”,用户名“user”,密码“user1234”,然后点右上角的“Connect”连接到服务器:

正在上传…重新上传取消

       然后添加订阅:

正在上传…重新上传取消

       点击“+ New Subscription”:

正在上传…重新上传取消

       在“Topic”输入框里输入“/dev”,然后点右下角的“Confirm”确认。

       现在可以发布一条数据来测试订阅是否成功:

正在上传…重新上传取消

       左侧红圈显示已经订阅了“/dev”,在下部“Topic”输入框输入“/dev”,然后点击右下角“发送”图标,数据被发送并立即接收到,说明订阅成功。

  1. 配置RapidSCADA发布到MQTT
    1. 添加通信线路

点击工具栏的“添加通信线路”按钮:

正在上传…重新上传取消

       添加新通信线路“mqttpub”,用于发布数据到MQTT。

    1. 添加设备

点击工具栏的“添加设备”按钮:

正在上传…重新上传取消

       设备类型为“MQTT Publisher”,线路为“mqttpub”,点击“OK”确认。

    1. 配置通讯线路参数

展开左侧“实例”-“默认”-“通信”-“通信线路”-“Line Options”:

正在上传…重新上传取消

       按照步骤1、2、3、4操作,通信线路类型为“MQTT client”,然后点击“Properties”,设置MQTT的地址、客户端ID(任意)、用户名、密码。

       确认后如图所示:

正在上传…重新上传取消

       然后设置设备:

正在上传…重新上传取消

       点击“properties”设置设备的属性:

正在上传…重新上传取消

       “Publish format”设置为“@val”(仅仅输出值),注意一下“Publish on change”设置为“Yes”。然后点工具栏的“+”:

正在上传…重新上传取消

       增加的条目设置“Channel nember”为“202”(modbus设备的第二个值,自增),“Publish”为“Yes”,“Topic”为“/dev”,然后点“Save”保存,再点“Close”关闭。

    1. 发布配置和查看效果

点工具栏的“保存”和“发布”。查看通讯线路状态:

正在上传…重新上传取消

       已经在不停发布数据。再从MQTT客户端查看:

正在上传…重新上传取消

       看到不断地收到了数据(注意,如果长时间没有操作这个客户端会自动断开,需要重新连接)。

  1. 添加图形化视图
    1. 创建视图

在左边“视图”-“HelloWorld”上右键“New File”:

正在上传…重新上传取消

       双击增加的文件:

正在上传…重新上传取消

正在上传…重新上传取消

正在上传…重新上传取消

     放一个静态文本和一个动态文本到页面上,点左边组件,鼠标变成“+”,再点击页面位置即可。

       设置动态文本的属性:

正在上传…重新上传取消

     将“Input channel”设置为“201”,或者“202”。

正在上传…重新上传取消

       保存然后关闭视图编译界面。

    1. 添加视图到WEB

展开左边“配置数据库”-“基础表”-“视图”,在新行上点“Select File”单元格:

正在上传…重新上传取消

       找到新建的视图文件(点开“helloworld”目录即可看到):

正在上传…重新上传取消

     “Path”自动填写,选择“Object”,输入“Title”,然后保存数据:

正在上传…重新上传取消

    1. 发布配置和查看效果

点击工具栏的“保存”和“发布”,然后刷新浏览器页面:

正在上传…重新上传取消

       看到新建的视图正确显示了。图形化视图的一般用法是做一张漂亮的底图,然后把数据摆在合适的位置。

  1. 已知的问题
    1. 网站打不开

如果打开网站时报如下错误:

正在上传…重新上传取消

这是缺少组件,章节“补充安装-安装 ASP.NET Core Runtime”没有正确完成,安装“x64”而不是“Hosting Bundle”一样可以完成RapidSCADA的安装过程,但却会在打开网站时报这个错误。

    1. 登录界面提示“应用未启动”

正在上传…重新上传取消

发生在刚开机时或重启服务时,不影响登录,登录后系统正常。

    1. 表格编辑界面最后一个输入未保存

修改完表格输入焦点未离开时直接去保存,最后一个修改会丢失,猜测程序是在输入焦点离开时判断数据是否有修改,因此修改完后一定要先点其它格子然后再去保存。

    1. 编辑多个功能页的数据丢失

编辑不同功能页的时候最好随时保存,已经知道对通讯线路的基本设置编辑后不保存就直接编辑设备,最后保存时之前的基本设置的修改会丢失。

结束

你可能感兴趣的:(工业,物联网)