"Чтобы работало" - это понятно. Только я еще начинающий - делайте скидку.
Вроде сам разобрался, гляньте.
Есть внутренняя структура:
typedef struct
{
unsigned long ADCvalue[SENSOR_CNT]; // код АЦП реальное значение
unsigned long ADCcalib[SENSOR_CNT]; // код АЦП при калибровке
float valueT[SENSOR_CNT]; // температура, реальное значение
float calibT[SENSOR_CNT]; // температура, калибровочное значение
unsigned char type[SENSOR_CNT]; // тип датчика
unsigned char version [SENSOR_CNT]; // версия ПО датчика
}thermoSensorData;
И есть пространство Modbus адресов, поделенное на 4 таблицы.
Для связывания пространства Modbus с внутренней структурой, создается такая прослойка-структура:
typedef struct
{
unsigned short startModbusAddress; // начальный адрес Modbus
unsigned short endModbusAddress; // конечный адрес Modbus
unsigned char *realAddress; // указатель на внутреннюю стуктуру
}desc;
desc структур создается по количеству полей в
thermoSensorData.
Может это и очевидно, но для меня недавно было совсем не так.