# imx91-modbus **Repository Path**: hywing/imx91-modbus ## Basic Information - **Project Name**: imx91-modbus - **Description**: Modbus test cases for RS485 interface on i.MX91 Linux development board - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: https://gitee.com/hywing/imx91-modbus - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-15 - **Last Updated**: 2026-03-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: modbus, RS485, imx91, Linux, 工控 ## README # iMX91 Modbus RTU Slave Example 这是一个基于iMX91平台的Modbus RTU从设备示例项目,使用libmodbus库实现。 ## 项目结构 ``` imx91-modbus/ ├── example/ # 示例代码 │ ├── ethernet/ # 以太网Modbus示例 │ └── rs485/ # RS485 Modbus RTU示例 │ ├── modbus_slave.c # 主程序源码 │ ├── Makefile # 编译配置 │ ├── deploy.sh # 部署脚本 │ └── README.md # 详细说明 ├── install/ # ARM64编译的libmodbus库 ├── install-x64/ # x86_64编译的libmodbus库 └── libmodbus/ # libmodbus源码 ``` ## 功能特性 - **Modbus RTU从设备**:支持标准Modbus RTU协议 - **四种寄存器类型**: - 线圈 (Coils, 0x) - 离散输入 (Discrete Inputs, 1x) - 保持寄存器 (Holding Registers, 4x) - 输入寄存器 (Input Registers, 3x) - **RS485方向控制**:使用GPIO142控制RS485收发方向 - **交叉编译**:支持ARM64目标平台交叉编译 - **详细日志**:提供完整的通信调试信息 ## 快速开始 ### 1. 编译 ```bash # 本地编译 cd example/rs485 make # 交叉编译 (需要先设置环境变量) source ~/myd-lmx91-toolchain/environment-setup-armv8a-poky-linux make cross ``` ### 2. 部署 ```bash # 使用部署脚本 ./deploy.sh # 或手动部署 scp modbus_slave root@192.168.55.142:/root/ ``` ### 3. 运行 ```bash # 在目标设备上运行 ./modbus_slave ``` ## 寄存器地址 | 寄存器类型 | 地址范围 | 功能 | 示例值 | |-----------|---------|------|--------| | 线圈 (0x) | 0-9 | 读写位 | 0,1,0,1,0,1,0,1,0,1 | | 离散输入 (1x) | 0-9 | 只读位 | 1,0,0,1,0,0,1,0,0,1 | | 保持寄存器 (4x) | 0-9 | 读写16位 | 1000,1001,1002...1009 | | 输入寄存器 (3x) | 0-9 | 只读16位 | 2000,2010,2020...2090 | ## 硬件配置 - **串口设备**:/dev/ttyLP2 - **波特率**:115200 - **数据位**:8 - **停止位**:1 - **校验位**:无 - **RS485方向控制**:GPIO142 (高电平=发送,低电平=接收) ## 依赖库 - libmodbus (已包含在install/目录中) - pthread ## 许可证 本项目基于LGPL许可证,详见libmodbus/LICENSE文件。 ## 贡献 欢迎提交Issue和Pull Request来改进这个项目。