Update README.md
基于国产RISC-V硬件的工业级EtherNet/IP协议栈完整实现
本项目是为”操作系统开源创新大赛”设计的参赛作品,在国产RISC-V硬件平台(CH32V307VCT6)上,基于XiuOS嵌入式操作系统,实现了稳定可靠的EtherNet/IP工业以太网协议栈,支持Scanner-Adapter网络拓扑,可持续稳定运行超过24小时。
EtherNet/IP是一种基于标准以太网的工业通信协议,属于**CIP(Common Industrial Protocol)**协议家族,广泛应用于工业自动化中,用于PLC、机器人、传感器等现场设备之间的数据交互。
本项目的核心亮点:
├── 📁 pro-os-ethernet-ip/ # 🎯 项目核心源代码 │ ├── APP_Framework/ # 应用框架层 │ │ ├── Applications/ # 应用程序 │ │ ├── Framework/ # 框架核心(含EtherNet/IP实现) │ │ └── lib/ # 第三方库 │ └── Ubiquitous/ # XiuOS操作系统适配层 │ ├── XiZi_IIoT/ # 工业物联网版本 │ ├── RT-Thread_Fusion_XiUOS/ # RT-Thread融合版本 │ └── Nuttx_Fusion_XiUOS/ # NuttX融合版本 ├── 📁 images/ # README图片资源 ├── 📁 video/ # 🎬 功能演示视频 ├── 📄 工业泛在场景下基于国产RISC-V的EtherNetIP支持.pptx # 📊 项目介绍PPT ├── 📄 操作系统开源创新大赛项目功能说明书.pdf # 📖 赛题设计思想总文档 ├── 📄 演示视频.mp4 # 🎥 项目主演示视频 ├── 📄 README.md # 📋 本文档 └── 📄 赛题说明.md # 📝 赛题要求说明
本项目提供了完整的功能演示视频,展示了:
video/功能Adapter_*.mp4
video/功能Scanner_*.mp4
video/*通信验证成功.mp4
video/Hilscher工具验证*.mp4
演示视频.mp4
riscv-none-embed-gcc
推荐使用xpm工具安装RISC-V工具链:
# 安装xpm (需要Node.js环境) npm install -g xpm # 安装RISC-V GCC工具链 xpm install --global @xpack-dev-tools/riscv-none-embed-gcc@8.2.0-3.1.1
编辑 pro-os-ethernet-ip/board/ch32v307vct6/config.mk,添加工具链路径:
pro-os-ethernet-ip/board/ch32v307vct6/config.mk
export CROSS_COMPILE ?= /path/to/riscv-none-embed-gcc/bin/riscv-none-embed-
cd ./pro-os-ethernet-ip make BOARD=ch32v307vct6 distclean make BOARD=ch32v307vct6 menuconfig
在menuconfig中配置EtherNet/IP相关选项:
make BOARD=ch32v307vct6
编译成功后会生成:
XiZi-ch32v307vct6.elf
XiZi-ch32v307vct6.bin
make BOARD=ch32v307vct6 distclean
支持多种烧写方式:
直接在沁恒官方IDE中下载烧写
通过menuconfig配置设备角色:
menuconfig
Scanner配置 (扫描器):
make BOARD=ch32v307vct6 menuconfig # 选择: Application Framework → Connection → EtherNet/IP → Scanner Mode
Adapter配置 (适配器):
make BOARD=ch32v307vct6 menuconfig # 选择: Application Framework → Connection → EtherNet/IP → Adapter Mode
在Adapter设备的串口终端(Lettershell)中执行:
Lettershell
test_adapter
eipadapter
scscan
scservices <IP> <超时ms>
scservices 192.168.1.101 5000
scinterfaces <IP> <超时ms>
scinterfaces 192.168.1.101 5000
scconnect <IP>
scconnect 192.168.1.101
scdisconnect <IP>
scdisconnect 192.168.1.101
scopen_io <类型>
scopen_io 0
scclose_io <类型>
scclose_io 0
scnewrtask
scdelrtask
scsend <数据>
scsend 01020304
scconfig_io <参数>
scconfig_io 101 100 0 20 24 500000 500000
scget_attr <类>.<实例>.<属性>
scget_attr 1 1 1
scconfig_io <o->t_inst> <t->o_inst> <cfg_inst> <o->t_size> <t->o_size> <o->t_rpi> <t->o_rpi_us>
o->t_inst
t->o_inst
cfg_inst
o->t_size
t->o_size
o->t_rpi
t->o_rpi_us
启动Adapter服务:
test_adapter # 启动设备发现 eipadapter # 启动EIP服务
Scanner扫描设备:
scscan # 发现网络中的EIP设备
建立会话:
建立隐式连接:
scconfig_io 101 100 0 20 24 500000 500000 scopen_io 0
启动数据监听:
发送测试数据:
scsend 0102030405060708
读取设备属性:
scget_attr 1 1 1 # 读取Identity对象的厂商ID
Adapter设备响应Scanner的各种请求,包括设备发现、连接建立和数据交换
Scanner设备主动发现和连接Adapter,执行数据读写操作
本项目已验证与以下工业设备的通信兼容性:
我们欢迎社区贡献!请遵循以下步骤:
# 克隆仓库 git clone https://github.com/your-repo/ethernet-ip-riscv.git cd ethernet-ip-riscv # 安装依赖 ./scripts/install-deps.sh # 编译测试 make BOARD=ch32v307vct6 menuconfig make BOARD=ch32v307vct6
本项目基于MIT License开源协议,详情请参见LICENSE文件。
⭐ 如果这个项目对您有帮助,请给我们一个Star!⭐
Built with ❤️ for Industrial IoT Community
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
🚀 工业泛在场景下基于国产RISC-V的EtherNet/IP协议栈实现
基于国产RISC-V硬件的工业级EtherNet/IP协议栈完整实现
本项目是为”操作系统开源创新大赛”设计的参赛作品,在国产RISC-V硬件平台(CH32V307VCT6)上,基于XiuOS嵌入式操作系统,实现了稳定可靠的EtherNet/IP工业以太网协议栈,支持Scanner-Adapter网络拓扑,可持续稳定运行超过24小时。
📚 项目概述
EtherNet/IP是一种基于标准以太网的工业通信协议,属于**CIP(Common Industrial Protocol)**协议家族,广泛应用于工业自动化中,用于PLC、机器人、传感器等现场设备之间的数据交互。
本项目的核心亮点:
🏗️ 项目结构
⭐ 核心特性
🔧 系统层面
🌐 EtherNet/IP协议实现
🎛️ 工业应用支持
📋 项目实现成果
✅ 赛题要求达成情况
🔄 通信模式设计
隐式通信 (Implicit Communication)
显式通信 (Explicit Communication)
🎥 功能演示视频
本项目提供了完整的功能演示视频,展示了:
video/功能Adapter_*.mp4
video/功能Scanner_*.mp4
video/*通信验证成功.mp4
video/Hilscher工具验证*.mp4
演示视频.mp4
🛠️ 开发环境与编译
📦 环境要求
riscv-none-embed-gcc
(xPack GNU RISC-V Embedded GCC)⚙️ 工具链安装
推荐使用xpm工具安装RISC-V工具链:
🔧 编译步骤
1. 配置交叉编译工具链
编辑
pro-os-ethernet-ip/board/ch32v307vct6/config.mk
,添加工具链路径:2. 配置系统功能
在menuconfig中配置EtherNet/IP相关选项:
3. 编译固件
编译成功后会生成:
XiZi-ch32v307vct6.elf
- ELF格式固件XiZi-ch32v307vct6.bin
- 二进制固件4. 清理编译文件(可选)
🔥 固件烧写
支持多种烧写方式:
方式1:WCH-ISP工具 (推荐)
方式2:Mounriver Studio IDE
直接在沁恒官方IDE中下载烧写
方式3:OpenOCD
🚀 快速上手指南
🔌 硬件准备
⚙️ 系统配置
设备角色配置
通过
menuconfig
配置设备角色:Scanner配置 (扫描器):
Adapter配置 (适配器):
网络配置示例
📱 使用指南
🔧 Adapter (适配器) 操作
基础命令
在Adapter设备的串口终端(
Lettershell
)中执行:test_adapter
eipadapter
详细功能
🛰️ Scanner (扫描器) 操作
设备发现命令
scscan
scscan
scservices <IP> <超时ms>
scservices 192.168.1.101 5000
scinterfaces <IP> <超时ms>
scinterfaces 192.168.1.101 5000
连接管理命令
scconnect <IP>
scconnect 192.168.1.101
scdisconnect <IP>
scdisconnect 192.168.1.101
scopen_io <类型>
0=隐式, 1=显式
scopen_io 0
scclose_io <类型>
0=隐式, 1=显式
scclose_io 0
数据交换命令
scnewrtask
scnewrtask
scdelrtask
scdelrtask
scsend <数据>
scsend 01020304
scconfig_io <参数>
scconfig_io 101 100 0 20 24 500000 500000
scget_attr <类>.<实例>.<属性>
scget_attr 1 1 1
scconfig_io 参数说明
o->t_inst
: O→T实例号 (输出到目标)t->o_inst
: T→O实例号 (目标到输出)cfg_inst
: 配置实例号o->t_size
: O→T数据大小t->o_size
: T→O数据大小o->t_rpi
: O→T请求包间隔(μs)t->o_rpi_us
: T→O请求包间隔(μs)🎯 典型使用场景
场景1: 设备发现与监控
启动Adapter服务:
Scanner扫描设备:
场景2: 建立通信连接
建立会话:
建立隐式连接:
启动数据监听:
场景3: 数据交换测试
发送测试数据:
读取设备属性:
📸 演示截图
Adapter功能演示
Scanner功能演示
🧪 测试验证
🔒 稳定性测试
⚡ 性能指标
🎛️ 兼容性验证
本项目已验证与以下工业设备的通信兼容性:
🎓 技术特色
💡 创新点
🏆 技术优势
📚 参考资料
🤝 贡献指南
我们欢迎社区贡献!请遵循以下步骤:
🔧 开发环境搭建
📄 许可证
本项目基于MIT License开源协议,详情请参见LICENSE文件。
📞 联系我们
⭐ 如果这个项目对您有帮助,请给我们一个Star!⭐
Built with ❤️ for Industrial IoT Community