更多内容点击边缘智联专栏一、功能概述置数人工设值是将指定测点的值强制修改为人工指定的数值用于仿真调试、应急置数等场景。置数操作仅在内存中修改测点值不会下发到现场设备。核心能力支持批量置数一次调用可同时设置多个测点支持两种操作类型置数覆盖当前值和清理置数恢复实际采集值置数后的值会打上人工置数标记与正常采集值区分通过通道唯一标识分段路由支持系统模块、自定义模块、采集模块三个子模块二、接口形式// 置数操作接口 // 输入一个置数请求对象内含多条置数项// 输出每项单独返回处理结果成功或失败原因整体返回汇总状态classDataSourceSetValueItem{public://置数类型typedefenum{eSetTypeInvalid0,eSetTypeDirectSetUp,//置数eSetTypeCleanValue,//清理置数}eSetType;//置数处理结果typedefenum{eSetResultTypeSuccess0,eSetResultTypeFaile-1,eSetResultTypeFindChannelIdInvalid-10,eSetResultTypeFindDevIdInvalid-11,eSetResultTypeFindPointIdInvalid-12,}eSetResultType;//置数类型eSetType m_eSetType;// 测点Id信息uint32_tm_uChannelId;uint32_tm_uDevId;uint32_tm_uPointId;string m_strValue;//置数值: 字符串类型根据变量类型进行转换// 置数结果eSetResultType m_eResultType;public:DataSourceSetValueItem(/* args */){m_eSetTypeeSetTypeInvalid;m_uChannelId0;m_uDevId0;m_uPointId0;m_strValue;m_eResultTypeeSetResultTypeFaile;};};classDataSourceSetValue{public:vectorDataSourceSetValueItemm_vValueBlack;public:DataSourceSetValue(/* args */){};};三、置数项结构每条置数项包含以下信息字段说明操作类型置数 或 清理置数通道编号测点所属通道的唯一编号设备编号测点所属设备的唯一编号测点编号测点本身的唯一编号置数值字符串形式内部根据测点值类型自动转换执行结果操作完成后回填成功/失败及具体错误原因四、处理流程上层调用 │ ▼ 统一入口层 → 直接委托给模块路由层 │ ▼ 模块路由层 → 根据通道编号分段分发 ├── 系统模块 ├── 自定义模块 └── 采集模块 │ ▼ 采集模块 → 按三级索引查找目标测点 ├── ① 遍历所有通道按通道编号匹配 ├── ② 在通道内遍历设备按设备编号匹配 ├── ③ 在设备的测点表中按测点编号查找 └── ④ 根据操作类型执行 ├─ 置数将字符串转为对应类型 → 写入测点值 → 打上人工置数标记 └─ 清理置数去除人工置数标记恢复采集值五、值类型转换置数值以字符串传入根据测点自身的数据类型自动转换测点值类型转换方式典型场景浮点数字符串 → 双精度浮点遥测模拟量温度、压力长整型字符串 → 64 位整数遥脉累计值电能字符串直接赋值文本类数据若字符串无法转换为目标类型该项返回类型转换错误。六、操作类型说明操作类型作用标记位影响置数用指定值覆盖测点当前值人工置数标记 1清理置数取消人工置数后续恢复为采集值人工置数标记 0七、错误码每个置数项操作完成后执行结果字段会被回填为以下值之一结果含义成功0置数或清理操作完成失败-1通用失败通道编号无效-10在整个系统中找不到该通道设备编号无效-11通道内找不到该设备测点编号无效-12设备内找不到该测点类型转换错误-13字符串无法转为测点对应的数据类型八、注意事项不改变原始值置数只修改最终对外展示的值测点的原始采集值保持不变清理置数后即可恢复通道编号范围编号范围决定路由目标不在有效范围内的编号会被直接拒绝线程安全置数过程中驱动可能同时在更新测点值测点内部通过标记位区分置数值与采集值批量调用一次可传入多条置数项每条独立处理互不影响某条失败不影响其他条