# plugin_modbus **Repository Path**: kevin0626/plugin_modbus ## Basic Information - **Project Name**: plugin_modbus - **Description**: WA-IOT-EDGE Modbus protocol plugin, supporting Modbus RTU and Modbus TCP. - **Primary Language**: C - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2024-05-12 - **Last Updated**: 2024-06-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Modbus plugin 本项目提供MODBUS插件,可在WA-IOT-EDGE运行中动态加载和卸载。 。 本插件实现**点位类别(TAG)** 资源URI (/mb2), 提供对MODBUS从站的读和写的访问。 ## 访问模式 ``` /mb2?area={Discrete | Coil | Input | Holding}&ITEMS=[n]&coding=[abcd]&ID={device name} ``` - **AREA**:可选,有效选项为Discrete | Coil | Input | Holding。 - **ITEMS**: 可选,表示从其实寄存器一次访问多个记录,缺省为1 - **coding**: 可选,表示4字节编码。当coding存在时,按照2个寄存器操作一个条目(ITEM),否则为1个寄存器。coding存在时,PUT操作功能码使用15 (COIL) 和16 (REGISTERS)。 **PAYLOAD格式**: 1. items为1,使用TEXT式 2. items>1,使用JSON格式 ``` [ 1.56678, 2.4556 ] ``` 3. fc is coil, 数值为0和1 ## 插件应用方法 **方法1:请求/mb2服务实时读写MODBUS从站** ![](doc/scenario1.excalidraw.png) **方法2:创建modbus虚拟设备** 用户程序调用WA-IOT-EDGE SDK,接收数据推送,如果需要参与数据流的处理。 ![](doc/scenario2.excalidraw.png) ## 编译与打包 开发环境为Ubuntu18.04以上。 1. 首先下载wa-iot-edge-sdk仓库: ``` git clone https://gitee.com/wasome/wa-iot-edge-sdk.git ``` 2. 然后设置环境变量WA_IOT_EDGE_SDK_REPO_DIR到wa-iot-edge-sdk所在的目录路径 ``` export WA_IOT_EDGE_SDK_REPO_DIR={wa-iot-edge-sdk所在的目录路径} ``` 3. 然后执行`./build.sh -a`,如果成功,将提示: `Successful to generate /home/kevin/wasome/plugin_modbus/out/pack/plugin_modbus_1.0.0` 如果交叉编译arm平台,调用`./build.sh -p arm-a7` ## 安装插件与配置 1. 然后打开目标机的WebConsole, 在“插件管理”页面中,安装打包生成的tar.gz文件。 ![](doc/web_man_plugin.png) 2. 安装成功后,可以看到以下的插件信息: ![](doc/web_plugin.png) 选中该插件,然后点击按钮“起效插件配置”,插件将被热加载。 ## 配置虚拟设备与数据采集 1. 进入“设备连接配置”, 在“插件设备配置”区点击“Add”按钮 ![](doc/plugin_cfg.png) 2. 选择Modbus插件和对应的资源URI ![](doc/add.png) 3. 配置新生成的设备的地址和要访问的资源 ![](doc/config_mb2.png) 4. 进入导航页面“设备连接状态”,可以看到新创建的设备连接状态。然后改成“本地配置模式”,并打开采集配置 ![](doc/config_collect.png) 5. 进入数据展示页面,可以看到配置的设备和资源开始了数据采集 ![](doc/data_chart.png)