- Messages
- 1,468
- Country
Hi Tom,
All sems to be working well. The rate of change in the needle movement seems more accurate now. I even have one engine starting hot!
BUT
There is another problem which I can't trace. That is at hot airfields at or above 38c the (L:Eng3 Stable,bool) doesn't trigger. It remains zero.
When the engine is "stable" the (A:General eng3 exhaust gas temperature, celsius) remains higher than (L:EGT3_read_out,number). It's not a problem with the hot start variable as that rewinds back to less than 1 as the EGT comes back from max to 595c.
For an extreme example at Kuwait with an ambient temperature of 45c (A:General eng3 exhaust gas temperature, celsius) settles at 341c whereas for (L:EGT3_read_out,number) the lowest value is 333c. Is it something to do with the range or with (>L:EGT_per_AmbTemp_correction,number) ?
Here's the current code as a reminder.
It would appear to be an issue with @Table1((A:Ambient Temperature, Celsius)) 545 / (>L:EGT_per_AmbTemp_correction,number) As if I reduce the 545 to 535 it triggers (L:Eng3 Stable,bool).
All sems to be working well. The rate of change in the needle movement seems more accurate now. I even have one engine starting hot!
BUT
There is another problem which I can't trace. That is at hot airfields at or above 38c the (L:Eng3 Stable,bool) doesn't trigger. It remains zero.
When the engine is "stable" the (A:General eng3 exhaust gas temperature, celsius) remains higher than (L:EGT3_read_out,number). It's not a problem with the hot start variable as that rewinds back to less than 1 as the EGT comes back from max to 595c.
For an extreme example at Kuwait with an ambient temperature of 45c (A:General eng3 exhaust gas temperature, celsius) settles at 341c whereas for (L:EGT3_read_out,number) the lowest value is 333c. Is it something to do with the range or with (>L:EGT_per_AmbTemp_correction,number) ?
Here's the current code as a reminder.
Code:
<Gauge Name="TGT 3" Version="2.0">
<Image Name="EGT_back.bmp" Luminous="1"/>
<Element>
<Select>
<Value>(A:Ambient Temperature, Celsius) (>L:E3Row1Y1,number)</Value>
</Select>
</Element>
<Macro Name="TableRow">
l1 @1 > l1 @2 <= and
if{ @2 @1 - sp10
@4 @3 - sp11
l11 l10 / sp20
l1 @1 - sp21
l21 l20 * @3 + sp0 }
</Macro>
<Macro Name="TableEnd">
@1 @2 >
if{ @3 sp0 }
</Macro>
<Macro Name="Table1">
<!--
-->
385 sp0 <!-- 385 = lower value to return -->
@1 sp1 <!-- source value (A:Ambient Temperature, Celsius) -->
@TableRow(-40,15,385,545)
@TableRow(15,50,545,630)
@TableEnd(@1,50,630)
l0 <!-- Return value -->
</Macro>
<Macro Name="Table2">
<!--
N2 RPM % EGT Celsius
=========================
11 20 L:E3Row1Y1,number)
16 200
22 411
25 490
30 560
32 572
54 289
56 295
-->
(L:E3Row1Y1,number) sp0 <!-- (A:Ambient Temperature, Celsius) = lower value to return -->
@1 sp1 <!-- source value (A:Eng3 N2 RPM, percent) -->
<!-- TableRow meanings
for each row:
#1 parameter = lowest source value
#2 parameter = greatest source value
#3 parameter = return value for lowest source value
#4 parameter = return value for greatest source value
-->
<!-- TableEnd meaning
#1 parameter = source value
#2 parameter = greatest source value of the table
#3 parameter = return value for greatest source value of the table
-->
@TableRow(11,16,(L:E3Row1Y1,number),200)
@TableRow(16,22,200,411)
@TableRow(22,25,411,490)
@TableRow(25,30,490,560)
@TableRow(30,32,560,572)
@TableRow(32,54,572,289)
@TableRow(54,56,289,295)
@TableEnd(@1,56,295)
l0 <!-- Return value -->
</Macro>
<Element>
<Select>
<Value>
<!-- 545 Celsius is peak temp at ISA -->
@Table1((A:Ambient Temperature, Celsius)) 545 / (>L:EGT_per_AmbTemp_correction,number)
(A:Eng3 N2 RPM, percent) 56 > = (A:ENG3 COMBUSTION,bool) and (>L:Eng3 StableA,bool)
</Value>
</Select>
</Element>
<Element>
<Select>
<Value>(A:General eng3 exhaust gas temperature, celsius) 3 - (L:EGT3_read_out,number) < (L:Eng3 StableA,bool) 0 > and
if{ 1 (>L:Eng3 Stable,bool) }</Value>
</Select>
</Element>
<Element>
<Position X="448" Y="452"/>
<Image Name="Needle_EGT.bmp" PointsTo="North" Luminous="1">
<Axis X="145" Y="365"/>
</Image>
<Rotate>
<Value Minimum="0" Maximum="800">
(L:Eng3 Stable,bool)
if{ (A:General eng3 exhaust gas temperature, celsius) }
els{ (A:Ambient Temperature, Celsius) (A:General eng3 exhaust gas temperature, celsius) > (A:Eng3 N2 RPM, percent) 10 < and
if{ (A:Ambient Temperature, Celsius) }
els{ (A:GENERAL ENG3 MIXTURE LEVER POSITION, percent) 0 >
if{ @Table2((A:Eng3 N2 RPM, percent)) (L:EGT_per_AmbTemp_correction,number) * 0 max }
els{ (A:General eng3 exhaust gas temperature, celsius) (L:LastEGT3,enum) >
if{ (A:ENG3 EXHAUST GAS TEMPERATURE, celsius) (L:temp adj3,number) - (L:E3_hotstart, number) - }
els{ (L:LastEGT3,enum) } } } } d (>L:EGT3_read_out,number) if{ (L:EGT3_read_out,number) (L:E3_hotstart, number) - }</Value>
<Nonlinearity>
<Item Value="0" X="111" Y="622"/>
<Item Value="50" X="90" Y="570"/>
<Item Value="200" X="98" Y="290"/>
<Item Value="400" X="402" Y="87"/>
<Item Value="600" X="754" Y="257"/>
<Item Value="800" X="774" Y="629"/>
</Nonlinearity>
<Delay DegreesPerSecond="16"/>
</Rotate>
</Element>
<Mouse>
<Tooltip>Engine3 EGT: %((L:EGT3_read_out,number) (L:E3_hotstart, number) - )%!03d!°%c %</Tooltip>
</Mouse>
</Gauge>
It would appear to be an issue with @Table1((A:Ambient Temperature, Celsius)) 545 / (>L:EGT_per_AmbTemp_correction,number) As if I reduce the 545 to 535 it triggers (L:Eng3 Stable,bool).
Last edited: