(说明:本文以操作截图为主,但由于CSDN的技术原因图片传不上来,对此文感兴趣的话去下载word文档……文档资源链接:RapidSCADA示例:Modbus和MQTT资源-CSDN文库)
RapidSCADA示例:采集Modbus TCP和发布到MQTT
2023.5.31 版本1
本文档演示从裸机环境开始从下载、安装到配置Modbus TCP和发布到MQTT的全过程。
本文档以“作业指导书”的标准编写。
读者应当对modbus协议和MQTT协议有基本使用经验。
由于IIS和网络的复杂性,在现成PC上的安装可能遇到各种奇怪问题,因此,本文在虚拟机上安装,以尽可能减少未知状况。
所需硬件和软件:
运行windows操作系统的PC,支持虚拟机软件,可联网更新windows组件和下载软件
虚拟机软件VMWare
Windows家庭版安装光盘(或ISO文件)
ModbusTCP模拟器软件(如果有物理设备可以直接使用物理设备)
MQTT服务器软件(如果有现成服务器可以用现成服务器,但考虑到配置问题,建议用服务器软件自建)
MQTT客户端软件
主机:windows 10 专业版(具体版本无关紧要)
虚拟机软件:VMware® Workstation 17 Pro 17.0.2 build-21581411(具体版本无关紧要,其它虚拟机软件也可以)
虚拟机:windows 10 家庭版(不一致可能界面操作会有所不同,需要额外安装的组件也可能不同)
安装windows10家庭版,默认安装,升级到最新版本,点击“开始”-“设置-“系统”-“关于”,查看系统版本:
正在上传…重新上传取消
安装VMWare Tools,方便操作(不是VMWare则安装相应的工具软件——也可能无可安装)。
配置文件夹选项,点击任务栏的“文件资源管理器”-“查看”-“选项”-“查看”,去掉“隐藏已知文件类型的扩展名”,建议选项如下:
正在上传…重新上传取消
打开“开始”-“设置”-“应用”-“应用和功能”,拉到最下面,选择“相关设置-程序和功能”:
正在上传…重新上传取消
在打开的界面中选择“打开或关闭windows功能”:
正在上传…重新上传取消
选中如下组件,注意,子项全部选中才是打勾,没有全部选中则是黑色方框,按照下图选择,全选的项目有些子项用不到,但是默认选项又不够用。
正在上传…重新上传取消
点击确定后提示需要联网下载组件:
正在上传…重新上传取消
开始下载和安装:
正在上传…重新上传取消
安装完成:
正在上传…重新上传取消
点击“开始”-“Windows管理工具”-“Internet Information Services(IIS)”:
正在上传…重新上传取消
为了查找方便,可以点右键“固定到开始屏幕”。
打开后如图:
正在上传…重新上传取消
展开左侧树,点击“Default Web Site”,然后在右测点击“浏览*:80(http)”:
正在上传…重新上传取消
选择“Microsoft Edge”和“始终使用此应用”,点击“确定”打开默认网站。
初始使用需要设置浏览器,可以按自己喜好设置或选择“在不使用你的数据情况下开始”:
正在上传…重新上传取消
然后点击“确认并开始浏览”:
正在上传…重新上传取消
最后见到此页面即表示默认网站工作正常:
正在上传…重新上传取消
安装过程会遇到两个错误,由两个缺失的.net组件引起,可以先按照本章提前安装好这两个组件(相同下载页面的两个文件),如果想知道哪个组件引起了哪个错误,就先跳过此部分。
用浏览器打开链接下载 .NET(Linux、macOS 和 Windows) :
正在上传…重新上传取消
点击“所有.NET 6.0 下载”:
正在上传…重新上传取消
找到箭头所指的“.NET桌面运行时”的“x64”安装程序,下载。
下载完毕运行:
正在上传…重新上传取消
安装成功:
正在上传…重新上传取消
用浏览器打开链接下载下载 .NET(Linux、macOS 和 Windows) ,点击“所有.NET 6.0 下载”:
正在上传…重新上传取消
下载“Hosting Bundle”,注意不要选错了(不是“x64”),安装后打开IIS控制台:
正在上传…重新上传取消
双击模块:
正在上传…重新上传取消
看到“AspNetCoreModuleV2”就没问题了。
打开官网Rapid SCADA | Free, Open Source, Full Featured SCADA Software ,点击“Download”栏目,再点击“Download…”:
正在上传…重新上传取消
进入到注册页:
正在上传…重新上传取消
如果你已经注册过,直接点击“skip”跳过就可以了(嗯……没注册过也可以跳过),然后就进入下载页面了:
正在上传…重新上传取消
下载过程需要很多耐心,不仅慢,而且会中断很多次。
下载的文件名为rapidscada_6.1.2_windows_en.zip,下载成功后解压缩(点右键“全部解压缩”)。
进入解压缩后的目录,双击运行“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”,重复上面的过程:
正在上传…重新上传取消
完整日志:
正在上传…重新上传取消(双击可查看)
打开IIS管理工具:
正在上传…重新上传取消
看到已经添加了网站“Scada”,点击“网站”-“Scada”,再点击右侧“浏览*:10008(http)”:
正在上传…重新上传取消
默认用户名“admin”,默认密码“scada”(注意,密码与5.8版不一样了),点击“Login”进入系统:
正在上传…重新上传取消
看到红圈里的数字就算大功告成了(数字会自动变化)。
选择modbus TCP是因为不需要物理设备或安装虚拟串口,如果有物理设备或已经配置好的虚拟设备,使用差别不大。
本例中安装Modbus Slave version 6.0.2 Build 826,如果用其它软件当然也没问题。
本例使用的软件采用默认安装即可,安装完毕在桌面可以看到图标:
正在上传…重新上传取消
双击图标运行Modbus Slave程序:
正在上传…重新上传取消
然后可以配置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”字样,表示设备还没有连接。
菜单“Connection”-“Connect…”:
正在上传…重新上传取消
首次使用会提示输入注册码,如果没有购买注册码可以试用30天。
进入连接配置界面:
正在上传…重新上传取消
修改配置,只需要将连接类型修改为“Modbus TCP/IP”,即可,端口默认502,不用修改:
正在上传…重新上传取消
点击“OK”,可能会弹出防火墙,点击“允许访问”:
正在上传…重新上传取消
虚拟设备现在已经运行,红圈处已经没有“No Connection”字样了:
正在上传…重新上传取消
不要关闭modbus虚拟软件,将窗口最小化,然后使用任何一种支持modbus TCP的客户端,访问虚拟设备,下图用的是“ModbusTCP_Master V2.0”:
正在上传…重新上传取消
注意一下图中第二个红圈,“监测起始地址”,这个起始地址有些软件是从0开始(比如本例的模拟器软件),而另外一些却是从1开始(比如图中这个客户端软件)。观察上图中的发送日志,虽然界面配的是1,发送的指令的起始地址却是0。要牢记实际发送的指令中的起始地址是从0开始的。
确认后关闭此客户端。此客户端与本例无关,仅用来确认虚拟设备正常。
管理程序位于安装目录下的“ScadaAdmin”目录下:
正在上传…重新上传取消
双击打开:
正在上传…重新上传取消
找到示例项目,位于安装目录下的“ProjectSamples\HelloWorld”目录:
正在上传…重新上传取消
打开:
正在上传…重新上传取消
左边树的项目名称下面三个项目:配置数据库、视图、实例。
工具栏前四个“打开、保存”一目了然,后面一组是“部署、下载配、上传、实例状态”,最后三个是“添加线路、设备、通道”,特别重要的是保存和上传,保存和上传之后才能生效。
展开左边配置数据库-基础表-通讯线路,可以看到只有一条数据,点击工具栏的“添加线路”按钮,增加一个线路,只需要填写Name即可:
正在上传…重新上传取消
添加完成后:
正在上传…重新上传取消
这是因为没有权限写文件,放弃保存退出程序,然后在ScadaAdmim.exe上点右键“以管理员身份运行”(或者设置文件属性,始终以管理员身份运行),重新操作,成功后如图:
正在上传…重新上传取消
展开左边配置数据库-基础表-设备,可以看到只有一条数据,点击工具栏的“添加设备”按钮,增加一个设备,需要填写多个信息:
正在上传…重新上传取消
(注意,图中的“Number”应为2)
Code有什么用还不知道,设备类型选“Modbus”(不是Modbus Slave),通讯线路是刚才创建的“NewLine”。点击“确定”后图:
正在上传…重新上传取消
(注意,图中的“Number”应为2)
界面左边自动展开了“实例-默认-通讯-通讯线路-NewLine-NewDev”。
如果填错了什么,可以直接在上面的界面格子里编辑,然后提交、保存。
修改设备之后要同步到实例,在下图左边红圈上点右键“同步”:
正在上传…重新上传取消
点“Next”:
正在上传…重新上传取消
一定要选中要同步的设备,然后点“Sync”:
正在上传…重新上传取消
在界面左边展开“实例-默认-通讯-通讯线路-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”位置。
点击工具栏的“全部保存”保存所有配置。
点击工具栏的“发布”按钮:
正在上传…重新上传取消
时不时发布一下没坏处。
选择“Line Stats”,可以查看状态和日志,如果配置正确并且做了发布,将看到数据流:
正在上传…重新上传取消
点击通讯线路下的设备,可以看到设备数据,我们读取了虚拟设备的两个保持寄存器:
正在上传…重新上传取消
之前已经采集到了设备数据,但没有显示在WEB界面中,因为还没有配置通道和视图。
点击工具栏按钮“添加通道”,打开通道向导:
正在上传…重新上传取消
选择通讯线路和设备,如果设备配置正确,下面的方框里会显示通道数,因为这个设备配置为读取了两个保持寄存器数据,所以通道数为2,点击“Next”进入下一步:
正在上传…重新上传取消
为设备选择对象,然后点击“Next”进入下一步:
正在上传…重新上传取消
默认分配了通道号(记住通道号,后面要用),可以自行修改,点击“Create”,因为默认选中了“Preview”,首先进入预览界面:
正在上传…重新上传取消
再点“Add”完成操作。
展开左边的“配置数据库”-“基础表”-“通道”,查看数据:
正在上传…重新上传取消
“通道”节点下面已经自动列出了设备名,可以仅查看设备的通道。
展开左边“视图”节点:
正在上传…重新上传取消
双击打开“Simualator.tbl”,在打开的页面双击节点“[2]NewDev”,通道被添加到视图:
正在上传…重新上传取消
为了好看一些可以添加一个空行在两个设备中间,点视图页面的工具栏的“+0”按钮,然后点向上箭头移动到上一行,最后保存配置:
正在上传…重新上传取消
点击工具栏的“发布”按钮发布配置,然后在浏览器刷新界面:
正在上传…重新上传取消
增加的数据已经正确显示在界面中,注意d2的值是自动递增的。
增加的两个值都是整数,却显示为浮点数,需要在通道配置里修改:
正在上传…重新上传取消
拖动滚动条,找到“Format”列,修改显示格式:
正在上传…重新上传取消
保存配置,发布配置,浏览器里自动变成了新输出格式(无需刷新页面):
正在上传…重新上传取消
可以使用已经存在的MQTT服务,或者自行安装一个,本例使用emqx-5.0.14-windows-amd64。
Emqx是绿色软件,可在下载 EMQX下载。
将下载的压缩包解压到C:\下:
正在上传…重新上传取消
桌面左下角点右键,打开“Windows PowerShell”,进入到解压缩后的目录:
cd C:\emqx-5.0.14-windows-amd64
然后启动服务:
./bin/emqx start (注意操作系统不一定允许从当前目录开始查找程序,所以前面要加“./”)
正在上传…重新上传取消
不要关闭命令窗口,关闭命令窗口会导致MQTT服务关闭。
打开浏览器,地址栏输入http://localhost:18083/:
正在上传…重新上传取消
默认用户名“admin”,默认密码“public”,点击“Login”登录,登录后要求修改密码,修改为“admin123”(老老实实照着做,免得忘了),然后会自动回到登录界面,重新登录后自动进入用户管理界面:
正在上传…重新上传取消
点击“Create“创建用户:
正在上传…重新上传取消
输入用户名“user”,密码“user1234”,点击“Create”创建:
正在上传…重新上传取消
本例中使用MQTTX,安装程序为MQTTX-Setup-1.8.0-x64.exe,自行安装。
打开MQTTX:
正在上传…重新上传取消
点击“New Connection”创建连接:
正在上传…重新上传取消
输入名称,随便写,“Host”地址“127.0.0.1”,用户名“user”,密码“user1234”,然后点右上角的“Connect”连接到服务器:
正在上传…重新上传取消
然后添加订阅:
正在上传…重新上传取消
点击“+ New Subscription”:
正在上传…重新上传取消
在“Topic”输入框里输入“/dev”,然后点右下角的“Confirm”确认。
现在可以发布一条数据来测试订阅是否成功:
正在上传…重新上传取消
左侧红圈显示已经订阅了“/dev”,在下部“Topic”输入框输入“/dev”,然后点击右下角“发送”图标,数据被发送并立即接收到,说明订阅成功。
点击工具栏的“添加通信线路”按钮:
正在上传…重新上传取消
添加新通信线路“mqttpub”,用于发布数据到MQTT。
点击工具栏的“添加设备”按钮:
正在上传…重新上传取消
设备类型为“MQTT Publisher”,线路为“mqttpub”,点击“OK”确认。
展开左侧“实例”-“默认”-“通信”-“通信线路”-“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”关闭。
点工具栏的“保存”和“发布”。查看通讯线路状态:
正在上传…重新上传取消
已经在不停发布数据。再从MQTT客户端查看:
正在上传…重新上传取消
看到不断地收到了数据(注意,如果长时间没有操作这个客户端会自动断开,需要重新连接)。
在左边“视图”-“HelloWorld”上右键“New File”:
正在上传…重新上传取消
双击增加的文件:
正在上传…重新上传取消
正在上传…重新上传取消
正在上传…重新上传取消
放一个静态文本和一个动态文本到页面上,点左边组件,鼠标变成“+”,再点击页面位置即可。
设置动态文本的属性:
正在上传…重新上传取消
将“Input channel”设置为“201”,或者“202”。
正在上传…重新上传取消
保存然后关闭视图编译界面。
展开左边“配置数据库”-“基础表”-“视图”,在新行上点“Select File”单元格:
正在上传…重新上传取消
找到新建的视图文件(点开“helloworld”目录即可看到):
正在上传…重新上传取消
“Path”自动填写,选择“Object”,输入“Title”,然后保存数据:
正在上传…重新上传取消
点击工具栏的“保存”和“发布”,然后刷新浏览器页面:
正在上传…重新上传取消
看到新建的视图正确显示了。图形化视图的一般用法是做一张漂亮的底图,然后把数据摆在合适的位置。
如果打开网站时报如下错误:
正在上传…重新上传取消
这是缺少组件,章节“补充安装-安装 ASP.NET Core Runtime”没有正确完成,安装“x64”而不是“Hosting Bundle”一样可以完成RapidSCADA的安装过程,但却会在打开网站时报这个错误。
正在上传…重新上传取消
发生在刚开机时或重启服务时,不影响登录,登录后系统正常。
修改完表格输入焦点未离开时直接去保存,最后一个修改会丢失,猜测程序是在输入焦点离开时判断数据是否有修改,因此修改完后一定要先点其它格子然后再去保存。
编辑不同功能页的时候最好随时保存,已经知道对通讯线路的基本设置编辑后不保存就直接编辑设备,最后保存时之前的基本设置的修改会丢失。
结束