模拟器设备实现逻辑详解 1. 设备注册机制 核心原理:在程序启动时自动注册设备类型到工厂类,这样系统就能识别并创建恩玖PCS设备。
bool CEnJiu::m_sInit = []() {
StDevType stDevType = {
.m_eResType = E_RES_TYPE_INTERNAL, // 设备类型:内部设备
.m_bSupportVirtual = false, // 不支持虚拟设备
.m_strCategory = DEV_CATEGORY_PCS, // 设备分类:PCS
.m_strName = "Test", // 设备名称
.m_func = []() { return make_shared<CTest>(); }, // 创建函数
};
DevFactory.RegisterType(stDevType); // 注册到工厂
return true;
}(); 通俗理解:就像在工厂里登记一种新产品,告诉系统"我这里有恩玖PCS设备,需要的时候可以找我生产"。
2. 寄存器映射(核心概念) 什么是寄存器映射?
把设备的各项参数(电压、电流、功率等)对应到Modbus协议的特定地址 就像给每个参数分配一个"门牌号" 示例代码:
m_vStModbusDataPointExs = {
{"voltage_AB", 0x6020, INPUT_REG, &m_fAcVoltage}, // AB线电压 -> 地址0x6020
{"current_A", 0x6026, INPUT_REG, &m_fAcCurrent}, // A相电流 -> 地址0x6026
// ... 更多映射
}; 通俗理解:就像给每个房间(参数)分配一个门牌号(寄存器地址),快递员(EMS系统)通过门牌号就能找到对应的房间。
...