# G040_异构数据中转服务 **Repository Path**: LPBStudio/G040_DSDataServer ## Basic Information - **Project Name**: G040_异构数据中转服务 - **Description**: 异构数据中转服务 不同结构的数据中转服务系统。包括数据通讯结构、下位机数据上传机制、数据中转服务器及数据提取机制。 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-09-30 - **Last Updated**: 2025-05-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # G040_异构数据中转服务 #### 介绍 异构数据中转服务 不同结构的数据中转服务系统。包括数据通讯结构、下位机数据上传机制、数据中转服务器及数据提取机制。 #### 软件架构 软件架构说明 1. 通讯协议定义: // TranID:[0-1];通讯启动逐次增加 DExClient.TxBuf[0] = (DExClient.TranID >> 8) & 0xFF; DExClient.TxBuf[1] = (DExClient.TranID >> 0) & 0xFF; // ProtrolID:[2-3];用于区分不同PLC协议;默认1 DExClient.TxBuf[2] = (DExClient.ProtrolID >> 8) & 0xFF; DExClient.TxBuf[3] = (DExClient.ProtrolID >> 0) & 0xFF; // DatasLen[4-5];数据帧全长,包括携带的数据区 DExClient.TxBuf[4] = 0; DExClient.TxBuf[5] = 46; // ResTranID[6-7];应答传输ID,仅再应答中使用,主动传输为0 DExClient.ResTranID = iResTranID; DExClient.TxBuf[6] = (iResTranID >> 8) & 0xFF; DExClient.TxBuf[7] = (iResTranID >> 0) & 0xFF; // StaID[8-23];16为的SN DExClient.TxBuf[8] = (_STAID_EXT >> 24) & 0xFF; DExClient.TxBuf[9] = (_STAID_EXT >> 16) & 0xFF; DExClient.TxBuf[10] = (_STAID_EXT >> 8) & 0xFF; DExClient.TxBuf[11] = (_STAID_EXT >> 0) & 0xFF; DExClient.TxBuf[12] = (RunTimeCFGInfo.PLCSN[0] >> 8) & 0xFF; DExClient.TxBuf[13] = (RunTimeCFGInfo.PLCSN[0] >> 0) & 0xFF; DExClient.TxBuf[14] = (RunTimeCFGInfo.PLCSN[1] >> 8) & 0xFF; DExClient.TxBuf[15] = (RunTimeCFGInfo.PLCSN[1] >> 0) & 0xFF; DExClient.TxBuf[16] = (RunTimeCFGInfo.PLCSN[2] >> 8) & 0xFF; DExClient.TxBuf[17] = (RunTimeCFGInfo.PLCSN[2] >> 0) & 0xFF; DExClient.TxBuf[18] = (RunTimeCFGInfo.PLCSN[3] >> 8) & 0xFF; DExClient.TxBuf[19] = (RunTimeCFGInfo.PLCSN[3] >> 0) & 0xFF; DExClient.TxBuf[20] = (RunTimeCFGInfo.PLCSN[4] >> 8) & 0xFF; DExClient.TxBuf[21] = (RunTimeCFGInfo.PLCSN[4] >> 0) & 0xFF; DExClient.TxBuf[22] = (RunTimeCFGInfo.PLCSN[5] >> 8) & 0xFF; DExClient.TxBuf[23] = (RunTimeCFGInfo.PLCSN[5] >> 0) & 0xFF; // OptExtnds[24-N]:携带的数据区 // OptCommand[24-25]:数据区功能命令 uint16_t iTmp = Opt_UploadRegValue_0x03;// 功能命令:Modbus协议上传寄存器内容 DExClient.TxBuf[24] = (iTmp >> 8) & 0xFF; DExClient.TxBuf[25] = (iTmp >> 0) & 0xFF; // OptLen[26-27]:命令数据长度,包括命令。 DExClient.TxBuf[26] = 0; DExClient.TxBuf[27] = 22; // RegStar[28+{0-1}]:Modbus寄存器起始地址 DExClient.TxBuf[28+0] = 0; DExClient.TxBuf[28+1] = RegDef_Input; // RegCount[28+{2-3}]:Modbus寄存器数量 DExClient.TxBuf[28+2] = 0; DExClient.TxBuf[28+3] = 7; // RegValue[28+{4-N}]:Modbus寄存器值 iTmp = SysRegisters_ReadRegWordEx(RegDef_Input); DExClient.TxBuf[32] = (iTmp >> 8) & 0xFF; DExClient.TxBuf[33] = (iTmp >> 0) & 0xFF; iTmp = SysRegisters_ReadRegWordEx(RegDef_Output); DExClient.TxBuf[34] = (iTmp >> 8) & 0xFF; DExClient.TxBuf[35] = (iTmp >> 0) & 0xFF; iTmp = SysRegisters_ReadRegWordEx(RegDef_RunType); DExClient.TxBuf[36] = (iTmp >> 8) & 0xFF; DExClient.TxBuf[37] = (iTmp >> 0) & 0xFF; iTmp = SysRegisters_ReadRegWordEx(RegDef_MotorSleepping); DExClient.TxBuf[38] = (iTmp >> 8) & 0xFF; DExClient.TxBuf[39] = (iTmp >> 0) & 0xFF; iTmp = SysRegisters_ReadRegWordEx(RegDef_MotorSleepLong); DExClient.TxBuf[40] = (iTmp >> 8) & 0xFF; DExClient.TxBuf[41] = (iTmp >> 0) & 0xFF; iTmp = SysRegisters_ReadRegWordEx(RegDef_MotorPowerOnTick); DExClient.TxBuf[42] = (iTmp >> 8) & 0xFF; DExClient.TxBuf[43] = (iTmp >> 0) & 0xFF; iTmp = SysRegisters_ReadRegWordEx(RegDef_MotorPowerOnLong); DExClient.TxBuf[44] = (iTmp >> 8) & 0xFF; DExClient.TxBuf[45] = (iTmp >> 0) & 0xFF; 云数据交换服务系统 用途: 为终端设备提供数据交换功能; 结构: 1、终端设备:通过Wifi连接网络,从而连接到互联网; 2、云服务器上提供UDP数据服务,存储终端设备上传的状态信息,同时通过终端的上传应答,将命令下达到终端执行; 3、客户端管理程序,用于实现业务操作; 功能实现: 云数据交换系统的构成; DExBase:存放基础构建,主要是抽象基础类; NSerExDatas:数据交换用的数据帧格式; 上传数据帧包括24字节的头及可选的数据区; 应答数据帧包括8字节的头及可选应答数据区;比上传数据帧的头多了16字节的StationID; 应答数据帧追加CRC16校验码结束; NSerStation:终端对象,用于管理终端的通讯;提供终端设备的业务功能接口; NServer:服务管理器,用于管理并向TCP/UDP通讯提供接口; 对象继承: DEXObject | ——————————————— | | NSerExDatas NSerStation 业务结构: TCP/UDP网络 <-------------------> NServer <----------------> NSerStation <-------------> 高级业务 Datas(byte[]) NSerExDatas #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)