-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathUThermoCouple.pas
139 lines (129 loc) · 3.07 KB
/
UThermoCouple.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
{* Copyright (C) 2010-2011 Karl-Michael Schindler
*
* This file is part of Heat Wizard.
*
* Heat Wizard is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* Heat Wizard is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Heat Wizard; see the file COPYING. If not, see
* <http://www.gnu.org/licenses/> or write to the
* Free Software Foundation, Inc.
* 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301, USA
*
* $URL$
* $Id$
*}
unit UThermoCouple;
{$mode objfpc}
{$H+}
interface
type
TThermoElementType = (B, E, J, K, N, R, S, T);
TThermoElementError = (NoError, ValueTooLow, ValueTooHigh);
TThermoCouple = class
public
ThermoElementType: TThermoElementType;
ThermoElementError: TThermoElementError;
function Temp2Volt (Temp: double) : double;
function Volt2Temp (Volt: double) : double;
end;
implementation
uses
math;
{$INCLUDE Parametervariable.inc}
function TThermoCouple.Temp2Volt (Temp: double) : double;
var
i, range: integer;
begin
ThermoElementError := NoError;
if Temp = 0.0 then
exit (0.0);
case ThermoElementType of
B: with Parameters_B do
begin
{$INCLUDE Temp2Volt.inc}
end;
E: with Parameters_E do
begin
{$INCLUDE Temp2Volt.inc}
end;
J: with Parameters_J do
begin
{$INCLUDE Temp2Volt.inc}
end;
K: with Parameters_K do
begin
{$INCLUDE Temp2Volt.inc}
if Temp > 0 then
Temp2Volt := Temp2Volt + a[0] * exp(a[1] * (Temp - a[2]) * (Temp - a[2]));
end;
N: with Parameters_N do
begin
{$INCLUDE Temp2Volt.inc}
end;
R: with Parameters_R do
begin
{$INCLUDE Temp2Volt.inc}
end;
S: with Parameters_S do
begin
{$INCLUDE Temp2Volt.inc}
end;
T: with Parameters_T do
begin
{$INCLUDE Temp2Volt.inc}
end;
end;
end;
function TThermoCouple.Volt2Temp (Volt: double) : double;
var
i, range: integer;
begin
ThermoElementError := NoError;
if Volt = 0.0 then
exit (0.0);
case ThermoElementType of
B: with Parameters_B do
begin
{$INCLUDE Volt2Temp.inc}
end;
E: with Parameters_E do
begin
{$INCLUDE Volt2Temp.inc}
end;
J: with Parameters_J do
begin
{$INCLUDE Volt2Temp.inc}
end;
K: with Parameters_K do
begin
{$INCLUDE Volt2Temp.inc}
end;
N: with Parameters_N do
begin
{$INCLUDE Volt2Temp.inc}
end;
R: with Parameters_R do
begin
{$INCLUDE Volt2Temp.inc}
end;
S: with Parameters_S do
begin
{$INCLUDE Volt2Temp.inc}
end;
T: with Parameters_T do
begin
{$INCLUDE Volt2Temp.inc}
end;
end;
end;
end.