# openuc **Repository Path**: didiopensource/openuc ## Basic Information - **Project Name**: openuc - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-27 - **Last Updated**: 2025-09-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OpenUC(开放充电通用协议,open UniCharge) ## 项目说明 本项目提供开放充电通用协议定义文档、提供桩侧的SDK包以及提供云平台协议解析SDK文档。 ### 开放充电通用协议 开放充电通用协议(Open UniCharge,简称OpenUC)是一个规定了充电桩与充电运营平台之间数据交互的流程、格式和内容。
协议整体依据国网104充电桩规约,新增数据部分协议参照 GBT-27930 对充电桩充电过程中与充电运营平台的交互数据进行了补充,本协议适用于交、直流,交流在本协议中部分数据无需上送数据项在下面协议部分均有标注。 ## 目录结构 ### cloud 此目录下为云端处理SDK,具体目录结构如下:
openuc-java-cloud-sdk/
├── pom.xml # Maven项目配置文件
└── src/ # 源代码目录
   ├── main/ # 主源代码
    │ └── java/ # Java源代码
    │ └── com/openuc/cloud/sdk/ # SDK根包
    │ ├── common/ # 公共常量定义
    │ ├── decoder/ # 协议解码器
    │ ├── encoder/ # 协议编码器
    │ ├── message/ # 消息实体类
    │ ├── pojo/ # 数据传输对象
    │ ├── request/ # 请求对象
    │ ├── sender/ # 命令发送器
    │ └── util/ # 工具类
    └── test/ # 测试代码
       └── java/ # Java测试代码
#### 各模块详细说明 - 1. common - 公共模块
Constants.java: 项目中使用的公共常量定义
- 2. decoder - 解码模块
协议解码器核心类和命令解码实现
包含20+个具体命令的解码处理类
- 3. encoder - 编码模块
ProtocolEncoder.java: 协议编码器实现
- 4. message - 消息模块
各类消息实体类,包括:
充电相关命令消息(开始充电、停止充电等)
设备状态消息(心跳、握手等)
数据查询消息(充电记录、BMS信息等)
控制命令消息(远程重启、OTA升级等)
- 5. pojo - 数据对象模块
ElectricityPeriodTimeDTO.java: 电价时段数据传输对象
ElectricityPriceDTO.java: 电价数据传输对象
- 6. request - 请求模块
各类请求对象,用于向上游系统发送请求
- 7. sender - 发送器模块
各类命令发送器,用于向设备发送指令
包含充电控制、设备管理、状态查询等命令发送器
- 8. util - 工具模块
提供各类工具方法:
AsciiUtil.java: ASCII编码工具
BCD.java & BCDUtil.java: BCD码处理工具
CRC16Util.java: CRC16校验工具
HexStrUtil.java: 十六进制字符串处理工具
时间、序列号、数值处理等工具类
- 9. test - 测试模块
HexStrUtilTest.java: HexStrUtil工具类的单元测试
### equipment 开放充电通用协议设备侧SDK文档集合,SDK是基于C语言开发的充电桩设备通信代码,主要用于实现充电桩与云平台之间的数据通信,包括协议处理、网络通信、数据编解码等功能。
具体目录结构如下:
document/
   ├── 开放充电通用协议文档-V1.0.pdf # 协议定义文档
   ├── 通用协议SDK使用说明.pdf # SDK使用说明文档
sdk/
   ├── DataDeal.c # 数据处理实现文件
   ├── DataDeal.h # 数据处理头文件
   ├── Net_Deal.c # 网络通信处理实现文件
   └── Net_Deal.h # 网络通信处理头文件
其中sdk目录下各模块详细说明:
#### 1. DataDeal 模块 - 主要功能 - 数据编解码处理 - 各种数据类型读写操作 - CRC校验算法实现 - BCD码转换处理 - 核心功能函数 - 数据读取函数: - ReadReceiveCommandChar8: 读取单字节数据 - ReadReceiveCommandInt16/Int24/Int32: 读取多字节整型数据(大小端两种格式) - 数据写入函数: - AddNewCommandByte/Int16/Int24/Int32: 写入各种类型数据(大小端两种格式) - AddNewCommandBuf: 写入缓冲区数据 - 校验算法: - Modbus_Crc16: Modbus CRC16校验 - CRC16_MODBUS_Calc: MODBUS CRC16计算 - ModbusCRC: 协议使用的CRC校验 - AppCRC_crccheck32: CRC32校验 - 编码转换: - bcd2todec: BCD转十进制 - dectobcd: 十进制转BCD - BCD_to_DEC: BCD转DEC转换 #### 2. Net_Deal 模块 - 主要功能 - 网络通信管理 - 充电桩与平台通信协议实现 - 充电流程控制 - 数据上报与命令处理 - 核心数据结构 - ParamSet: 桩体参数设置结构体 - stNetConFlag: 网络连接相关结构体 - stRateInfo: 桩计费模型信息 - stChargeInfo: 充电信息结构体 - stBatteryPara: 电池信息结构体 - stPileQRCodeInfo: 二维码信息结构体 - 核心功能函数 - 网络通信函数 - NetSendData: 网络数据发送 - CreateConnectForGun: 创建网络连接 - DeleteConnectForGun: 删除网络连接 - NetDeal_Recv: 网络数据接收处理 - NetDeal_SendRecv: 网络数据收发处理 - 数据发送函数 - PileSendServeiceStart: 充电桩登录平台认证 - PileSendHeart: 发送心跳包 - PileSendRealTimeInfo: 发送实时信息 - PileSendRecordData: 发送订单数据 - PileSendChargeStep1/2/3Info: 发送充电各阶段信息 - 数据接收处理函数 - Rcv_DataAnaly: 平台数据解析处理 - Receive_RataInfo: 计费模型接收 - Receive_PileStartChargeInfo: 启动充电命令处理 - Receive_RemotoStartChargeInfo: 远程启动充电处理 - 状态管理函数 - Net_init_send_data: 网络初始化处理 - Net_StateHardData_Send: 心跳状态发送 - CheckTimeOut: 超时重发处理 - NetTimeOutSet/Clear: 超时管理