Dobrý den,
lze použít jednotku C-RM-1109M na měření teploty čidlem NTC Termistor 10K.
Děkuji.
David Pavelka
Odpovědi 4
Dobrý den,
Čidlo k modulu připojit můžete, jen ve firmwaru není přímo vytvořen přepočet pro čidlo typu NTC 10k.
To znamená, že přepočet měřeného odporu na teplotu bude potřeba vytvořit v uživatelském programu podle specifikací čidla.
Na modulu C-RM-1109M je ještě omezený rozsah měření 0 - 100 k, což může způsobit, že měřené hodnoty odporu čidla budou mít omezený rozsah. Vysoké hodnoty odporu jsou u záporných teplot takže minimální naměřená teplota bude například -10 °C místo -40 °C, záleží na specifikaci čidla.
Přeji hezký den,
Michal Mrázek
Tady je funkce, která by mohla pomoct. V tom poli jsou hodnoty z převodní tabulky od výrobce.
Např. v obytném prostoru, kde nejdou teploty tak nízko asi dostačuje i vstup 100k, mělo by to měřit do -20°C.
FUNCTION NTCTemp : REAL
(*Převádí odpor NTC 10k 3950 na teplotu
*)
VAR_INPUT
R : REAL;
END_VAR
VAR_IN_OUT
END_VAR
VAR
dIntR : DINT;
i : INT;
listOfR : ARRAY [1..131 ] OF DINT := [343632,321280,300533,281266,263362,246717,231235,216827,203411,190914,179266,168405,158272,148815,139983,131733,124021,116810,110064,103751,
97839,92302,87112,82247,77683,73401,69382,65607,62061,58728,55595,52648,49874,47264,44806,42490,40308,38251,36311,34481,32754,31124,29584,
28130,26755,25456,24227,23065,21965,20923,19938,19004,18119,17280,16485,15731,15016,14337,13693,13081,12500,11948,11423,10925,10451,10000,
9570,9162,8773,8403,8051,7715,7395,7090,6799,6522,6257,6005,5764,5534,5314,5104,4904,4713,4530,4355,4187,4027,3874,3728,3588,3443,3315,3193,3076,2963,2856,2753,2654,2559,
2468,2381,2297,2217,2140,2066,1995,1927,1861,1798,1738,1679,1624,1570,1518,1473,1420,1374,1330,1287,1246,1207,1169,1132,1097,1063,1030,998,967,938,909];
END_VAR
VAR_TEMP
END_VAR
dIntR := REAL_TO_DINT(R*1000);
IF listOfR[1] < dIntR THEN NTCTemp:=-40;
ELSIF listOfR[131] > dIntR THEN NTCTemp:=90;
ELSE
i := 1;
REPEAT
IF listOfR[i]>=dIntR AND listOfR[i+1]<dIntR THEN
NTCTemp := -41+INT_TO_REAL(i)+(DINT_TO_REAL(listOfR[i]-dIntR)/DINT_TO_REAL(listOfR[i] - listOfR[i+1]));
i:=130;
END_IF;
i:=i+1;
UNTIL i>129
END_REPEAT;
END_IF;
END_FUNCTION
Dobrý den,
prosím Vás v programování jsem úplný laik a nedaří se mi funkci aplikovat do mosaicu, myslel jsem si, že si vytvořím funkční blok dle popsané funkce, ale nedaří se mi to. Můžete být prosím popisnější jak funkci implementovat?
Děkuji
Tak jsem na to již přišel.
Vaše odpověď
Pro vložení odpovědi je nezbytné být přihlášený. Pokračujte na přihlášení.