🚀 IOTGate物联网网关使用手册
📖 项目概述
IOTGate 是一个基于Java开发的高性能物联网网关系统,支持Modbus TCP协议,具备强大的数据处理和设备连接能力。该项目采用模块化设计,能够实现与多种工业设备的无缝集成。
✨ 核心特性
•🔌 多协议支持 :支持Modbus TCP协议•🚀 高性能处理 :基于Netty框架实现高并发•🎯 配置灵活 :支持多设备、多端口配置•📊 数据转发 :支持Modbus、DLT645等多种协议转换•🛡️ 稳定可靠:支持设备心跳检测和异常恢复
🏗️ 系统架构
技术栈
•开发语言 :Java 1.8+•核心框架 :Netty 4.1.25•构建工具 :Maven 3.x•依赖管理:Spring、Protobuf、Commons CLI
系统组件
go
IOTGate网关系统├──核心网关服务(IOTGate.jar)├──配置管理(iotGate.conf)├──启动脚本(HaoXinProcessor.sh)└──日志系统(gc.log)
📋 系统要求
硬件要求
•CPU :1核心以上•内存 :最低2GB,推荐4GB+•存储 :至少1GB可用空间•网络:支持TCP/IP连接
软件环境
•操作系统 :Linux (推荐CentOS 7+) / Windows Server•Java环境 :JDK 1.8或更高版本•网络端口:8888 (默认,可配置)
🛠️ 安装部署
Step 1:环境准备
bash
# 检查Java版本java -version# 确保Java 1.8+# 如未安装,请先安装JDK
Step 2:下载部署包
bash
# 创建工作目录mkdir /opt/iotgatecd /opt/iotgate# 下载项目文件git clone https://gitee.com/willbeahero/IOTGate.git .
Step 3:编译打包
bash
# 使用Maven编译mvn clean package# 编译完成后,在target目录下找到IOTGate.jar
Step 4:配置文件设置
编辑 iotGate.conf 配置文件:
ini
# 基本配置id=1,2,-1,4,2,0,0,9811,60# Modbus TCP设备配置protocolType=1,0,-1,1,2,1,1,9811,60protocolType=2,1,-1,0,4,0,0,9812,300protocolType=3,1,-1,4,2,0,0,9813,130# 设备ID配置# 00000001906343030303132F2000767636F6F6C6F6F6F6C6F6F6O6O6O6C6C6O6C6O6F6F6F6F6F6C6F6C6F6F6F6F
Step 5:启动服务
bash
# 赋予执行权限chmod +x HaoXinProcessor.sh# 启动服务./HaoXinProcessor.sh# 或手动启动java -jar IOTGate.jar -f iotGate.conf -m 127.0.0.1-n 1-z 192.168.18.27:2181,192.168.18.27:2182,192.168.18.27:2183
⚙️ 配置详解
主配置文件参数
| 参数 | 说明 | 默认值 |
|---|---|---|
id |
设备标识序列 | - |
protocolType |
协议类型配置 | Modbus TCP |
port |
服务端口 | 8888 |
master |
主服务器地址 | 127.0.0.1 |
num |
实例编号 | 1 |
zk_addr |
ZooKeeper地址 | - |
设备配置格式
go
protocolType=id,isBigEndian(beginHexVal,lengthFieldOffset,lengthFieldLength,isDataLengthIncludeLengthField(0=false),exceptDataLength,port,heartbeat
参数说明:
•id: 设备ID•isBigEndian: 是否大端模式 (0=小端, 1=大端)•lengthFieldOffset: 长度字段偏移量•lengthFieldLength: 长度字段长度•isDataLengthIncludeLengthField: 数据长度是否包含长度字段•exceptDataLength: 预期数据长度•port: 端口号•heartbeat: 心跳间隔(秒)
📡 协议支持
1. Modbus TCP协议
支持的Modbus功能码:
•01:读取线圈状态•02:读取离散输入•03:读取保持寄存器•04:读取输入寄存器
2. DLT645协议
•支持DLT645-1997和DLT645-2007标准•自动识别电表通信规约
3. 自定义协议
系统支持通过配置扩展其他协议,需要根据实际设备协议格式调整配置参数。
🔧 运维管理
启动服务
bash
# 前台启动(调试用)java -jar IOTGate.jar -f iotGate.conf -m 127.0.0.1-n 1# 后台启动nohup java -jar IOTGate.jar -f iotGate.conf -m 127.0.0.1-n 1> iotgate.log &
停止服务
bash
# 查找进程IDps aux | grep IOTGate# 停止服务kill -9[进程ID]
日志管理
bash
# 查看实时日志tail -f gc.log# 查看错误日志grep ERROR gc.log# 日志轮转(建议配置logrotate)
监控指标
| 指标 | 说明 | 正常范围 |
|---|---|---|
| CPU使用率 | 系统CPU占用 | < 80% |
| 内存使用 | JVM内存占用 | < 70% |
| 连接数 | 设备连接数量 | 根据配置 |
| 网络流量 | 数据传输量 | 正常范围 |
🚨 故障排查
常见问题及解决方案
1. 服务启动失败
问题现象:
bash
Error:Couldnot find or load main class gate.Entrance
解决方案:
•检查JAR包是否完整•确认Java环境配置正确•验证配置文件路径
2. 设备连接失败
问题现象:
•无法连接到Modbus设备•连接超时
解决方案:
bash
# 检查网络连通性telnet [设备IP][端口]# 检查防火墙设置iptables -L -n# 验证设备配置modpoll -m tcp -a 1-c 10[设备IP]
3. 数据解析异常
问题现象:
•数据格式错误•解析失败
解决方案:
•检查设备寄存器地址•验证数据类型配置•确认字节序设置
4. 内存溢出
解决方案:
bash
# 调整JVM参数-Xms1g-Xmx2g-XX:+UseG1GC# 检查内存泄漏jmap -histo [进程ID]
📈 性能优化
JVM调优参数
bash
java -Xms2g-Xmx4g \-XX:+UseG1GC \-XX:MaxGCPauseMillis=200 \-XX:+UnlockExperimentalVMOptions \-XX:+UseCGroupMemoryLimitForHeap \-Dio.netty.leakDetectionLevel=advanced \-jar IOTGate.jar
Netty优化配置
java
# 连接池配置bossGroup线程数:1-2workerGroup线程数: CPU核心数×2# 缓冲区设置SO_RCVBUF:32KBSO_SNDBUF:32KB
🔄 升级维护
版本升级步骤
1.备份当前配置
cp iotGate.conf iotGate.conf.bak
2.停止服务
./stop.sh 或 kill进程
3.替换JAR包
cp IOTGate-new.jar IOTGate.jar
4.验证配置
java -jar IOTGate.jar -t iotGate.conf
5.重启服务
./HaoXinProcessor.sh
定期维护任务
•日志清理 :定期清理过期日志文件•配置备份 :每周备份配置文件•性能监控 :监控系统资源使用情况•安全检查:定期检查系统安全设置
📞 技术支持
获取帮助
•项目地址 :https://gitee.com/willbeahero/IOTGate•**文档更新** :关注项目README文档•问题反馈:通过Gitee Issues提交问题
联系方式
•技术交流群 :可通过项目主页获取•邮箱支持:发送至项目维护者邮箱
📝 附录
相关资源
•Netty官方文档 :https://netty.io/•**Modbus协议规范** :https://modbus.org/•**DLT645标准文档**:国家标准文档
版本历史
| 版本 | 发布日期 | 主要更新 |
|---|---|---|
| v1.0 | 2019-10-19 | 初始版本发布 |
| v2.0.1 | 2020-06-15 | 增加DLT645支持 |
| v2.0.2 | 2020-08-20 | 修复连接稳定性 |
| v2.0.3 | 2021-01-10 | 性能优化和Bug修复 |
💡 温馨提示:
1.首次部署建议在测试环境验证配置2.生产环境部署前请做好数据备份3.定期关注项目更新,及时升级安全补丁4.遇到问题请查看日志文件,记录详细信息以便快速定位
🎉 祝您使用愉快!如有问题,欢迎随时联系我们。