1. 项目概述
项目名称:INV-010
版本:001.0001.199
硬件平台:Air780EPM
类型:工业物联网网关
2. 核心功能模块
2.1 串口通信模块(Exusart.lua)
2.1.1 主要功能
- MODBUS主从站功能:支持MODBUS RTU主站和从站模式
- 多串口支持:支持3个独立串口的同时操作
- 多种协议支持:支持MODBUS-RTU、MODBUS-TCP、三菱PLC、科华UPS等协议
- 数据采集与控制:支持寄存器读写、线圈控制等操作
- 分线器与转发器功能:支持多设备的串口数据转发和分发
2.1.2 主要函数
- Exusart.init():初始化串口通信模块
- Exusart.write_data(data):写入数据到设备寄存器
- uart_generic_read(uart_id):通用串口读取函数
- uart_generic_write(uart_id, config):通用串口写入函数
- Exusart.write_rtu_frame(config):生成MODBUS RTU写入帧
- Exusart.parse_rtu_response(uartid, config, response):解析MODBUS RTU响应
- TASK_MASTER_1/2/3():串口主任务,处理串口读写操作
2.2 WebSocket通信模块(WSS.lua)
2.2.1 主要功能
- WebSocket连接管理:建立、维护、断开WebSocket连接
- 消息发布订阅:支持主题订阅和消息发布
- 认证机制:支持设备登录和注册
- 数据加密:安全的WebSocket通信
- 远程配置:通过WebSocket接收远程配置指令
2.2.2 主要函数
- ws.login():设备登录和认证
- ws.get_ws_url(userInfo):获取WebSocket连接地址
- ws.link(wssURL):连接WebSocket服务器
- ws.subscribe(groupId, will):订阅主题
- ws.unsubscribe(groupId):取消订阅
- ws.publish(groupId, content):发布消息
- connect():WebSocket连接任务
2.3 硬件管理模块(hardware.lua)
2.3.1 主要功能
- AD转换:支持0-10V/4-20mA输入信号采集
- DA转换:支持4-20mA输出信号控制
- 数字量IO:支持数字输入和输出
- 设备状态监控:监控电源电压、CPU温度、电池电压等
- 信号强度监控:监控4G信号强度(CSQ, RSSI, RSRP, RSRQ)
2.3.2 主要函数
- hardware.init():初始化硬件模块
- hardware.init_center(center_name):初始化中心服务连接
2.4 网络管理模块
2.4.1 网络监控(network_watchdog.lua)
- 网络状态检测:检测网络连接状态
- 自动重连机制:网络断开时自动重连
- 故障恢复:网络故障后的恢复处理
2.4.2 广域网管理(wan.lua)
- 4G模块初始化:初始化4G网络模块
- 网络连接管理:管理4G网络连接
- APN配置:配置4G网络APN参数
2.4.3 局域网管理(lan.lua)
- 以太网初始化:初始化以太网接口
- IP配置:配置以太网IP地址
- 网络连接管理:管理以太网连接
2.5 数据管理模块
2.5.1 数据库管理(db.lua)
- 本地数据存储:存储配置参数和运行数据
- 配置数据持久化:持久化存储设备配置
- 数据读取与写入:提供数据读写接口
2.5.2 日志管理
- 系统日志:记录系统运行状态
- 错误日志:记录错误信息
- 操作日志:记录用户操作
- 日志上传:上传日志到云平台
2.6 远程管理模块
2.6.1 远程配置
- 配置参数更新:通过网络更新设备配置
- 配置持久化:持久化存储新配置
- 配置生效:配置更新后自动生效
2.6.2 远程升级(fota2.lua)
- 固件远程升级:通过网络升级设备固件
- 升级状态监控:监控升级过程
- 升级失败回滚:升级失败时自动回滚
2.6.3 远程监控
- 设备状态远程查看:通过网络查看设备运行状态
- 数据远程采集:远程采集设备数据
- 故障远程告警:设备故障时远程告警
2.7 协议支持模块
2.7.1 标准协议
- MODBUS-RTU:串行链路的MODBUS协议
- MODBUS-TCP:TCP/IP网络的MODBUS协议
- MQTT:消息队列遥测传输协议
- HTTP:超文本传输协议
- WebSocket:全双工通信协议
2.7.2 行业协议
- SL651:电力行业协议
- HJ212:环保行业协议
- SZY206:水务行业协议
2.8 系统管理模块
2.8.1 系统初始化(main.lua)
- 项目初始化:初始化项目环境
- 配置加载:加载设备配置
- 模块初始化:初始化各个功能模块
- 任务创建:创建系统任务
2.8.2 变量管理(vari.lua)
- 变量定义:定义系统变量
- 变量管理:管理变量的生命周期
- 变量访问:提供变量访问接口
2.8.3 故障管理
- 故障检测:自动检测设备故障
- 故障记录:记录故障信息
- 故障告警:发送故障告警
- 故障恢复:故障后的恢复处理
3. 主要函数功能详解
3.1 核心函数
3.1.1 串口通信核心函数
- Exusart.init()
- 功能:初始化串口通信模块
- 参数:无
- 返回值:无
- 说明:初始化串口配置,创建串口任务
- Exusart.write_data(data)
- 功能:写入数据到设备寄存器
- 参数:data - 包含地址和数据的表
- 返回值:无
- 说明:根据设备地址和寄存器地址写入数据
- uart_generic_read(uart_id)
- 功能:通用串口读取函数
- 参数:uart_id - 串口号
- 返回值:读取结果
- 说明:读取指定串口的数据并解析
- uart_generic_write(uart_id, config)
- 功能:通用串口写入函数
- 参数:uart_id - 串口号,config - 写入配置
- 返回值:写入结果
- 说明:向指定串口写入数据
3.1.2 WebSocket通信核心函数
- ws.login()
- 功能:设备登录和认证
- 参数:无
- 返回值:登录结果
- 说明:验证token或登录获取token
- ws.link(wssURL)
- 功能:连接WebSocket服务器
- 参数:wssURL - WebSocket连接地址
- 返回值:无
- 说明:建立WebSocket连接并注册设备
- ws.publish(groupId, content)
- 功能:发布消息
- 参数:groupId - 主题ID,content - 消息内容
- 返回值:无
- 说明:向指定主题发布消息
3.1.3 硬件管理核心函数
- hardware.init()
- 功能:初始化硬件模块
- 参数:无
- 返回值:无
- 说明:初始化硬件接口和传感器
- hardware.init_center(center_name)
- 功能:初始化中心服务连接
- 参数:center_name - 中心服务名称
- 返回值:无
- 说明:初始化与云平台的连接
3.2 系统函数
3.2.1 主函数
- load_fskv()
- 功能:加载配置
- 参数:无
- 返回值:无
- 说明:从本地存储加载设备配置
- sys.run()
- 功能:启动系统
- 参数:无
- 返回值:无
- 说明:启动系统任务调度
3.2.2 任务管理函数
- sys.taskInit(task_func)
- 功能:创建任务
- 参数:task_func - 任务函数
- 返回值:任务ID
- 说明:创建并启动一个任务
- sys.taskInitEx(task_func, task_name, from_task, ...)
- 功能:创建带参数的任务
- 参数:task_func - 任务函数,task_name - 任务名称,from_task - 来源任务,... - 任务参数
- 返回值:任务ID
- 说明:创建并启动一个带参数的任务
- sys.taskDel(task_func)
- 功能:删除任务
- 参数:task_func - 任务函数
- 返回值:无
- 说明:删除指定的任务
4. 功能列表汇总
4.1 通信功能
| 功能 | 描述 | 实现文件 | 主要函数 |
|---|---|---|---|
| MODBUS-RTU主站 | 支持MODBUS RTU主站模式 | Exusart.lua | uart_generic_read, uart_generic_write |
| MODBUS-RTU从站 | 支持MODBUS RTU从站模式 | Exusart.lua | TASK_MASTER_1/2/3 |
| WebSocket通信 | 支持WebSocket全双工通信 | WSS.lua | ws.link, ws.publish |
| MQTT通信 | 支持MQTT协议通信 | mqtta.lua | mqtta.connect |
| HTTP通信 | 支持HTTP协议通信 | http_API.lua | http.request |
| 多串口支持 | 支持3个独立串口同时操作 | Exusart.lua | uart_generic_read, uart_generic_write |