Arduino Modbus浮点转换
我使用Arduino modbus库使用霍尔传感器测量串电流。这里下载了库。我有浮点值的传感器数据,库以整数格式存储值 问题: 如何将传感器值保存为整数格式 如何分配用户定义的地址。起始地址为4000h而不是0000H 代码Arduino Modbus浮点转换,arduino,communication,modbus,Arduino,Communication,Modbus,我使用Arduino modbus库使用霍尔传感器测量串电流。这里下载了库。我有浮点值的传感器数据,库以整数格式存储值 问题: 如何将传感器值保存为整数格式 如何分配用户定义的地址。起始地址为4000h而不是0000H 代码 是否有其他库可以直接使用浮点 作为协议的Modbus不直接支持浮动。但是,您可以将浮点数据放入相邻的寄存器中。用于将浮点数据放入寄存器,然后从另一侧取出 union Pun {float f; uint32_t u;}; void encodeFloat(uint16_t
是否有其他库可以直接使用浮点 作为协议的Modbus不直接支持浮动。但是,您可以将浮点数据放入相邻的寄存器中。用于将浮点数据放入寄存器,然后从另一侧取出
union Pun {float f; uint32_t u;};
void encodeFloat(uint16_t *regs, float x)
{
union Pun pun;
pun.f = x;
regs[0] = (pun.u >> 16) & 0xFFFFU;
regs[1] = pun.u & 0xFFFFU;
}
float decodeFloat(const uint16_t *regs)
{
union Pun pun;
pun.u = ((uint32_t)regs[0] << 16) | regs[1];
return pun.f;
}
union Pun {float f; uint32_t u;};
void encodeFloat(uint16_t *regs, float x)
{
union Pun pun;
pun.f = x;
regs[0] = (pun.u >> 16) & 0xFFFFU;
regs[1] = pun.u & 0xFFFFU;
}
float decodeFloat(const uint16_t *regs)
{
union Pun pun;
pun.u = ((uint32_t)regs[0] << 16) | regs[1];
return pun.f;
}
void Modbus_call()
{
/*reading of coil where i can succefully read value*/
encodeFloat(&au16data[ 0], Current_Value1[0]);
encodeFloat(&au16data[ 2], Current_Value1[1]);
encodeFloat(&au16data[ 4], Current_Value1[2]);
/* And so on... */
}