|
楼主 |
发表于 2010-12-28 23:19:21
|
显示全部楼层
啥人都有,算了,贴上源码给有需要的人。但是这个我说的一点也没错,这个是我在网上找的公开的函数。就这么简单的一个事,我竟然成了一个死要面子的人了。
Dim A As Double
Dim b As Double
Dim c As Double
Private Sub Command1_Click()
A = 0.0039083
b = -0.0000005775
c = -0.000000000004183
'1、 温度计算电阻
Dim fT, fR As Double
fT = Val(TEMP.Text)
If fT >= -200 And fT < 0 Then
fR = 100 * (1 + A * fT + b * fT * fT + c * (fT - 100) * fT * fT * fT)
End If
If fT >= 0 And fT <= 850 Then
fR = 100 * (1 + A * fT + b * fT * fT)
End If
T_FR = Format(fR, "##0.0000")
End Sub
Private Sub Command2_Click()
'电阻计算温度,采用牛顿迭代法,一般迭代3次就可以达到0.1%的精度。
A = 0.0039083
b = -0.0000005775
c = -0.000000000004183
Dim fT, fR, fT0 As Double
Dim i As Integer
fR = Val(T_FR.Text)
fT0 = (fR / 100 - 1) / A
If fR >= 18.52 And fR < 100 Then '-200℃- 0℃
For i = 0 To 49
fT = fT0 + (fR - 100 * (1 + A * fT0 + b * fT0 * fT0 - 100 * c * fT0 * fT0 * fT0 + c * fT0 * fT0 * fT0 * fT0)) / (100 * (A + 2 * b * fT0 - 300 * c * fT0 * fT0 + 4 * c * fT0 * fT0 * fT0))
If Abs(fT - fT0) < 0.0001 Then
GoTo OKLE
Else
fT0 = fT
End If
OKLE:
Next i
End If
If fR >= 100 And fR <= 390.481 Then ' //0℃- 850℃
For i = 0 To 49
fT = fT0 + (fR - 100 * (1 + A * fT0 + b * fT0 * fT0)) / (100 * (A + 2 * b * fT0))
If Abs(fT - fT0) < 0.0001 Then
GoTo OKLE1
Else
fT0 = fT
End If
OKLE1:
Next i
End If
TEMP = Format(fT, "##0.0000")
End Sub |
|