
# Modbus协议设备接入LINK
#### 概述
设备可以通过集成EdgeShell实现接入ROMA Connect，EdgeShell是用于采集边缘侧设备端数据，并发送到ROMA Connect的边缘网关程序。EdgeShell接入，支持Modbus和OPC UA两种协议的设备接入，本章介绍通过Modbus协议接入设备。
ROMA Connect不会直接存储设备上报的数据，您需要[配置数据转发规则](https://support.huaweicloud.com/usermanual-roma/rule-engine-basic.html)，把设备数据转发到其他服务进行存储。
#### 前提条件
设备与ROMA Connect实例一般通过公网互通，请确保ROMA Connect实例已绑定弹性IP。
#### 接入设备
EdgeShell是用于采集边缘侧设备端数据，并发送到ROMA Connect的边缘网关程序。Modbus协议接入设备操作步骤如下：
1. 创建产品。 在"产品管理"页面单击"创建产品"，产品类型选择"普通产品"，协议类型选择"Modbus"。
   ![](https://support.huaweicloud.com/usermanual-roma/zh-cn_image_0000001144784858.png "点击放大")
   
2. 创建设备。 在"设备管理"页面单击"创建设备"，所属产品选择上一步创建的产品。
   ![](https://support.huaweicloud.com/usermanual-roma/zh-cn_image_0000001190585747.png)
   
3. 下载EdgeShell安装包。 单击设备名称，进入设备详情页，在基础信息页签中，单击的"EdgeShell"项的"下载安装包"，下载EdgeShell安装包。
   ![](https://support.huaweicloud.com/usermanual-roma/zh-cn_image_0000001144626132.png "点击放大")
   
4. 启动EdgeShell。 EdgeShell支持运行在Windows和Linux环境中，根据不同的环境执行不同的启动脚本。
   1. EdgeShell依赖于java11运行环境，运行前需要先确保java运行环境已安装，并且JAVA_HOME环境变量已设置。
   
   2. 解压下载的edge-shell.zip，解压后目录结构如下图。 ![](https://support.huaweicloud.com/usermanual-roma/zh-cn_image_0000001189532999.png)
      - bin：启动停止脚本。
      
      - config：配置参数。
      
      - lib：依赖的jar包。
      
      - edge-shell-1.0.0.jar：运行的主程序。
       
   
   3. 在设备详情页的"基本信息"页签中拷贝"边缘连接配置(IPV4)"到config目录下的mqtt.properties文件中。
   
   4. 执行启动脚本。
      - Windows下执行bin/windows/start.bat。
      
      - Linux下执行bin/linux/start.sh。
       
   
   5. 正常启动后，EdgeShell会连接上LINK，此时在会显示设备在线，设备详情页中的边缘详情会有数据上报。 ![](https://support.huaweicloud.com/usermanual-roma/zh-cn_image_0000001248118418.png "点击放大")
      ![](https://support.huaweicloud.com/usermanual-roma/public_sys-resources/note_3.0-zh-cn.png)
      启动脚本后会生成log目录，该目录下会记录启动和运行日志。该目录下会有edge-shell-error.log和edge-shell-info.log两个文件，如果启动后设备没有连接上，可以通过查看error日志快速定位。
      Windows下如果单击启动后，log目录没有生成，可以修改start.bat下列语句：
      修改前：
      ```
      start edge-shell %JAVA_OPT% -jar edge-shell-1.0.0.jar
      pause
      ```
      修改后：
      ```
      java %JAVA_OPT% -jar edge-shell-1.0.0.jar
      ```
      
    
5. 插件下载。 在插件管理页面中，单击"下载插件"，在弹出框中单击"下载并部署"。
   ![](https://support.huaweicloud.com/usermanual-roma/zh-cn_image_0000001190707037.png "点击放大")
   插件安装成功后，单击操作栏中的启动键启动插件。
   ![](https://support.huaweicloud.com/usermanual-roma/zh-cn_image_0000001190587131.png "点击放大")
   
6. 配置Modbus连接点和采集策略。
   1. 当创建的设备是Modbus类型设备时，设备详情页中显示的是"Modbus配置"，Modbus插件支持TCP/IP和串口两种连接方式。具体创建配置如下：
      - 创建Modbus TCP/IP连接点时，配置参数如下图。 ![](https://support.huaweicloud.com/usermanual-roma/zh-cn_image_0000001189533007.png "点击放大")
        
      
      - 创建Modbus串口连接点时，配置参数如下图。 ![](https://support.huaweicloud.com/usermanual-roma/zh-cn_image_0000001143613064.png "点击放大")
        
       
   
   2. 在已创建的连接点下创建采集策略，配置参数如下图。 ![](https://support.huaweicloud.com/usermanual-roma/zh-cn_image_0000001480936796.png "点击放大")
      ![](https://support.huaweicloud.com/usermanual-roma/public_sys-resources/note_3.0-zh-cn.png)
      用户设备端寄存器地址由起始地址编号和功能码决定。
      Modbus协议定义了设备地址（即起始地址）范围是0到65535，而寄存器地址是从1开始，范围为1到65536，所以如果起始地址为5，则对应的寄存器地址为6。
      目前功能码仅支持01、02、03、04，对应寄存器地址范围如下：
      功能码为01时，范围为：000001\~065536。
      功能码为02时，范围为：100001\~165536。
      功能码为03时，范围为：400001\~465536。
      功能码为04时，范围为：300001\~365536。
      例如：功能码为03，起始地址为5，则对应的寄存器地址为400006。
      
    
7. 下发采集策略到边缘EdgeShell。 在设备详情页中的"Modbus配置"页签，勾选需要下发的Modbus连接点，单击"下发策略"按钮。
   ![](https://support.huaweicloud.com/usermanual-roma/zh-cn_image_0000001144632416.png "点击放大")
   
8. 配置规则引擎。 配置普通设备采集上来的数据转发到MQS。
   1. 在规则引擎界面单击"创建规则"按钮，规则引擎所属应用需要与普通产品相同。 ![](https://support.huaweicloud.com/usermanual-roma/zh-cn_image_0000001143453266.png "点击放大")·
      
   
   2. 单击规则引擎名称进入规则引擎详情页面，配置数据源端和数据目的端。
      - 数据源端选择之前创建的产品和设备。
      
      - 数据目的端选择同实例下的MQS。
      
      
      ![](https://support.huaweicloud.com/usermanual-roma/zh-cn_image_0000001144793076.png "点击放大")
      
    
 
#### 调试设备
通过规则引擎将采集到的数据转发到MQS，在MQS查看上报的数据，即上报数据到ROMA Connect。
