Это программа для ADAM-5510, система мониторинга температуры на основе 8-канального микропроцессорного модуля ADAM-5017.
Я закомментировал те места, где необходим реальный ADAM-5510
Tab[2][21] — это таблица соответствий значения кода АЦП температуре.
Нужно, чтобы программа брала из этой таблицы значения и выдавала температуру (например, при поступлении кода 28573 должна высветиться температура -50 градусов)
А если кода нет в таблице, то значение должно рассчитываться с помощью двух ближайших табличных значений (например, код 22500. 22937-22020=917. 917 разделим на 10 градусов. Получим 91.7. 22500-22020=480. 480/91.7=5.2. Так 22020 соответствует 20 градусам, то 22500 будет соответствовать 25.2 градуса.)
#include <conio.h>
#include <5510drv.h>
int *T0,*T1,*T2,*T3,*T4,*T5,*T6,*T7, i, Ntab;
float T0gr,T1gr,T2gr,T3gr,T4gr,T5gr,T6gr,T7gr;
long int Delay;
unsigned char IOModuleName;
unsigned char SlotNumber;
//float Convert(int T)
float Tab[2][21]={
{28573, 27656, 26607, 25690, 24772, 23855, 22937, 22020, 21233, 20447, 19529, 18874, 18088, 17432, 16646, 15991, 15466, 14811, 14287, 13893, 13500},
{-50, -40, -30, -20, -10, 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150}
};
for(i=0;i<Ntab;i++)
{if(Tab[i,1]>T0)
break;
main()
{
SlotNumber=0;
IOModuleName=0x04; //Get_BoardID(SlotNumber);
if(IOModuleName!=ADAM5017_ID)
{
printf("\nProverte slot");
exit(1);
}
else{
printf("\n Inicializaciya ADAM-5017");
//Init501718(0);
}
// while(1)
{
//Get501718(0,0,T0); T0gr=Convert(T0);
//Get501718(0,1,T1); T1gr=Convert(T1);
//Get501718(0,2,T2); T2gr=Convert(T2);
//Get501718(0,3,T3); T3gr=Convert(T3);
//Get501718(0,4,T4); T4gr=Convert(T4);
//Get501718(0,5,T5); T5gr=Convert(T5);
//Get501718(0,6,T6); T6gr=Convert(T6);
//Get501718(0,7,T7); T7gr=Convert(T7);
printf("\n Temperatura gradusov=%5.1f %5.1f %5.1f %5.1f %5.1f %5.1f %5.1f %5.1f",T0gr,T1gr,T2gr,T3gr,T4gr,T5gr,T6gr,T7gr);
for(Delay=100000; Delay>0; Delay--);
}
}
return (0);
}
ОЧЕНЬ НУЖНА ПОМОЩЬ!!!
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, harold, Вы писали:
H>Это программа для ADAM-5510, система мониторинга температуры на основе 8-канального микропроцессорного модуля ADAM-5017.
H>Я закомментировал те места, где необходим реальный ADAM-5510
H>Tab[2][21] — это таблица соответствий значения кода АЦП температуре.
H>Нужно, чтобы программа брала из этой таблицы значения и выдавала температуру (например, при поступлении кода 28573 должна высветиться температура -50 градусов)
H>А если кода нет в таблице, то значение должно рассчитываться с помощью двух ближайших табличных значений (например, код 22500. 22937-22020=917. 917 разделим на 10 градусов. Получим 91.7. 22500-22020=480. 480/91.7=5.2. Так 22020 соответствует 20 градусам, то 22500 будет соответствовать 25.2 градуса.)
Восстановление температуры по коду — дело неблагодарное. ТС имеют нелинейную характеристику зависимости сопротивления от температуры (а для ТП ещё нужна и температура холодного спая).
Так что сначала из кода нужно нужно перевести в сопротивление. Потом найти отношение к сопротивлению при нуле градусов (Ro) и уже потом по табличкам типа такой:
//////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////// Таблица для платиновых ТС с W=1.3850.
///////////////////////// ТСП 50П
//////////////////////////////////////////////////////////////////////////////////////////////
const float MAP_T_R_21[_TDIAP_] = {
/* 0 */ 1, 1.004, 1.008, 1.012, 1.016, 1.020, 1.023, 1.027, 1.031, 1.035,
/* 10 */ 1.039, 1.043, 1.047, 1.051, 1.055, 1.059, 1.062, 1.066, 1.07, 1.074,
/* 20 */ 1.078, 1.082, 1.086, 1.09, 1.094, 1.097, 1.101, 1.105, 1.109, 1.113,
/* 30 */ 1.117, 1.121, 1.125, 1.128, 1.132, 1.136, 1.14, 1.144, 1.148, 1.152,
/* 40 */ 1.155, 1.159, 1.163, 1.167, 1.171, 1.175, 1.179, 1.182, 1.186, 1.19,
/* 50 */ 1.194, 1.198, 1.202, 1.206, 1.209, 1.213, 1.217, 1.221, 1.225, 1.229,
/* 60 */ 1.232, 1.236, 1.24, 1.244, 1.248, 1.252, 1.255, 1.259, 1.263, 1.267,
/* 70 */ 1.271, 1.275, 1.278, 1.282, 1.286, 1.29, 1.294, 1.298, 1.301, 1.305,
/* 80 */ 1.309, 1.313, 1.317, 1.32, 1.324, 1.328, 1.332, 1.336, 1.34, 1.343,
/* 90 */ 1.347, 1.351, 1.355, 1.359, 1.362, 1.366, 1.37, 1.374, 1.378, 1.381,
/*100 */ 1.385, 1.389, 1.393, 1.396, 1.4, 1.404, 1.408, 1.412, 1.415, 1.419,
/*110 */ 1.423, 1.427, 1.431, 1.434, 1.438, 1.442, 1.446, 1.449, 1.453, 1.457,
/*120 */ 1.461, 1.464, 1.468, 1.472, 1.476, 1.48, 1.483, 1.487, 1.491, 1.495,
/*130 */ 1.498, 1.502, 1.506, 1.51, 1.513, 1.517, 1.521, 1.525, 1.528, 1.532,
/*140 */ 1.536, 1.54, 1.543, 1.547, 1.551, 1.555, 1.558, 1.562, 1.566, 1.57,
/*150 */ 1.573, 1.577, 1.581, 1.585, 1.588, 1.592, 1.596, 1.599, 1.603, 1.607,
/*160 */ 1.611, 1.614, 1.618, 1.622, 1.625, 1.629, 1.633, 1.637, 1.64, 1.644,
/*170 */ 1.648, 1.651, 1.655, 1.659, 1.663, 1.666, 1.67, 1.674, 1.677, 1.681,
/*180 */ 1.685, 1.689, 1.692, 1.696, 1.699, 1.703, 1.707, 1.711, 1.714, 1.718,
/*190 */ 1.722, 1.725, 1.729, 1.733, 1.737, 1.74, 1.744, 1.748, 1.751, 1.755,
/*200 */ 1.759, 1.762, 1.766, 1.77, 1.773, 1.777, 1.781, 1.784, 1.788, 1.792,
/*210 */ 1.795, 1.799, 1.803, 1.806, 1.81, 1.814, 1.817, 1.821, 1.825, 1.828,
/*220 */ 1.832, 1.836, 1.839, 1.843, 1.847, 1.85, 1.854, 1.857, 1.861, 1.865,
/*230 */ 1.868, 1.872, 1.876, 1.879, 1.883, 1.887, 1.89, 1.894, 1.898, 1.901,
/*240 */ 1.905, 1.908, 1.912, 1.916, 1.919, 1.923, 1.927, 1.93, 1.934, 1.937,
/*250 */ 1.941, 1.945, 1.948, 1.952, 1.956, 1.959, 1.963, 1.966, 1.97, 1.974,
/*260 */ 1.977, 1.981, 1.984, 1.988, 1.992, 1.995, 1.999, 2.002, 2.006, 2.01,
/*270 */ 2.013, 2.017, 2.02, 2.024, 2.028, 2.031, 2.035, 2.038, 2.042, 2.046,
/*280 */ 2.049, 2.053, 2.056, 2.06, 2.063, 2.067, 2.071, 2.074, 2.078, 2.081,
/*290 */ 2.085, 2.088, 2.092, 2.096, 2.099, 2.103, 2.106, 2.11, 2.113, 2.117,
/*300 */ 2.121, 2.124, 2.128, 2.131, 2.135, 2.138, 2.142, 2.145, 2.149, 2.153,
/*310 */ 2.156, 2.16, 2.163, 2.167, 2.17, 2.174, 2.177, 2.181, 2.184, 2.188,
/*320 */ 2.192, 2.195, 2.199, 2.202, 2.206, 2.209, 2.213, 2.216, 2.22, 2.223,
/*330 */ 2.227, 2.23, 2.234, 2.237, 2.241, 2.245, 2.248, 2.252, 2.255, 2.259,
/*340 */ 2.262, 2.266, 2.269, 2.272, 2.276, 2.280, 2.283, 2.287, 2.920, 2.294,
/*350 */ 2.297, 2.300, 2.304, 2.308, 2.311, 2.315, 2.318, 2.322, 2.325, 2.329,
/*360 */ 2.332, 2.332, 2.332, 2.332, 2.332, 2.332, 2.332, 2.332, 2.332, 2.332,
/*370 */ 2.332, 2.332, 2.332, 2.332, 2.332, 2.332, 2.332, 2.332, 2.332, 2.332,
/*380 */ 2.332, 2.332, 2.332, 2.332, 2.332, 2.332, 2.332, 2.332, 2.332, 2.332,
/*390 */ 2.332, 2.332, 2.332, 2.332, 2.332, 2.332, 2.332, 2.332, 2.332, 2.332,
/*400 */ 2.332, 2.332
};
определить температуру. Между градусам, да, можно линейно интерполировать, погрешность не очень велика будет.
Таблички — из ГОСТов, Ro — из паспорта ТС.