• Which the release of FS2020 we see an explosition of activity on the forun and of course we are very happy to see this. But having all questions about FS2020 in one forum becomes a bit messy. So therefore we would like to ask you all to use the following guidelines when posting your questions:

    • Tag FS2020 specific questions with the MSFS2020 tag.
    • Questions about making 3D assets can be posted in the 3D asset design forum. Either post them in the subforum of the modelling tool you use or in the general forum if they are general.
    • Questions about aircraft design can be posted in the Aircraft design forum
    • Questions about airport design can be posted in the FS2020 airport design forum. Once airport development tools have been updated for FS2020 you can post tool speciifc questions in the subforums of those tools as well of course.
    • Questions about terrain design can be posted in the FS2020 terrain design forum.
    • Questions about SimConnect can be posted in the SimConnect forum.

    Any other question that is not specific to an aspect of development or tool can be posted in the General chat forum.

    By following these guidelines we make sure that the forums remain easy to read for everybody and also that the right people can find your post to answer it.

P3D v3 Hoist variables?

Messages
176
Country
denmark
As I understand it, this variable will attach an Object/Model to a Payload Station:

PAYLOAD STATION OBJECT:index

I have three questions though:

1. Where exactly will it attach to?

2. Will the Object/Model be visible?

3. Can it be removed by another simulation variable?
 
My first questions above will have to wait a bit :-)

Ok, Sling only works in missions, so this must be done with Hoist.

I have two gauges created using ACE tool, that is not working.

Cable Length gauge (SLING CABLE EXTENDED LENGTH:index)

<?xml version="1.0" encoding="UTF-8"?>

<SimBase.Document Type="AceXML" version="3,3" id="CableLength">
<Descr>AceXML Document</Descr>
<Filename>CableLength.xml</Filename>
<SimGauge.Gauge id="Cable Length Gauge" ArtDirectory="G:\Flight Simulator\P3D\Design\S-64 Air Crane\Gauges\CableLenGauge">
<FloatPosition>0.000000,0.000000</FloatPosition>
<Image id="CableLenBackground.bmp" Name="CableLenBackground.bmp">
<Transparent>True</Transparent>
</Image>
<Element id="Fixed Text">
<FloatPosition>5.000000,10.000000</FloatPosition>
<GaugeText id="GaugeText">
<FontColor>gold</FontColor>
<FontFace>Arial</FontFace>
<FontHeight>13</FontHeight>
<GaugeString>Cab Len</GaugeString>
<Size>70,15</Size>
<Transparent>True</Transparent>
</GaugeText>
</Element>
<Element id="Output Box">
<FloatPosition>5.000000,37.000000</FloatPosition>
<Rectangle id="Rectangle">
<LineWidth>1</LineWidth>
<Width>60</Width>
<Height>20</Height>
<LineColor>darkslateblue</LineColor>
<FillColor>black</FillColor>
</Rectangle>
</Element>
<Element id="Display Text">
<FloatPosition>8.000000,40.000000</FloatPosition>
<GaugeText id="GaugeText">
<FontColor>red</FontColor>
<FontFace>Courier</FontFace>
<FontHeight>16</FontHeight>
<GaugeString>%( (A:SLING CABLE EXTENDED LENGTH:0,feet))%!05d!</GaugeString>
<Size>90,13</Size>
<Transparent>True</Transparent>
<VerticalAlign>CENTER</VerticalAlign>
</GaugeText>
</Element>
</SimGauge.Gauge>
</SimBase.Document>

Cable Pickup Mode (SLING HOOK IN PICKUP MODE:index)

<?xml version="1.0" encoding="UTF-8"?>

<SimBase.Document Type="AceXML" version="3,3" id="CableMode">
<Descr>AceXML Document</Descr>
<Filename>CableMode.xml</Filename>
<SimGauge.Gauge id="Cable Mode Gauge" ArtDirectory="G:\Flight Simulator\P3D\Design\S-64 Air Crane\Gauges\CableModeGauge">
<FloatPosition>1.000000,1.000000</FloatPosition>
<Image id="LampOFF.bmp" Name="LampOFF.bmp">
<Transparent>True</Transparent>
<Luminous>True</Luminous>
</Image>
<Element id="Element">
<FloatPosition>1.000000,1.000000</FloatPosition>
<Visibility>((A:SLING HOOK IN PICKUP MODE:0,bool) 1)</Visibility>
<Image id="LampON.bmp" Name="LampON.bmp">
<Transparent>True</Transparent>
<Bright>True</Bright>
</Image>
</Element>
</SimGauge.Gauge>
</SimBase.Document>

Both gauges are very similar to other working gauges created in P3D, so only the simulation variables differ.

 
The code below is in FS9 format and a lot easier to both code and understand/read. Have a look at it and the associated bitmap. I used the decision Ht function to both set desired height on the hoist gauge and set hover height through a separate gauge/autopilot.
Code:
<Gauge Name="HOIST_Pop-Up">
    <Image Name="Hoist_Pop-up.bmp"/>
    <!-- =======================Radalt and Hoist cable================== -->
    <Element>
        <Position X="146" Y="334"/>
        <Image Name="Needle_Radalt.bmp" Luminous="Yes" PointsTo="North">
            <Axis X="5" Y="80"/>
        </Image>
        <Rotate>
            <Value Minimum="0" Maximum="1000">(A:RADIO HEIGHT,FEET) 14 -</Value>
            <Nonlinearity>
                <Item Value="0" X="140" Y="430"/>
                <Item Value="50" X="55" Y="321"/>
                <Item Value="100" X="177" Y="246"/>
                <Item Value="200" X="237" Y="315"/>
                <Item Value="500" X="240" Y="353"/>
                <Item Value="1000" X="210" Y="407"/>
            </Nonlinearity>
        </Rotate>
    </Element>
    <!-- Radalt Bug -->
    <Element>
        <Position X="146" Y="334"/>
        <Image Name="Radalt_bug.bmp" Luminous="Yes" PointsTo="North">
            <Axis X="6" Y="95"/>
        </Image>
        <Rotate>
            <Value Minimum="0" Maximum="1000">(A:decision HEIGHT,FEET) 14 -</Value>
            <Nonlinearity>
                <Item Value="0" X="140" Y="430"/>
                <Item Value="50" X="55" Y="321"/>
                <Item Value="100" X="177" Y="246"/>
                <Item Value="200" X="237" Y="315"/>
                <Item Value="500" X="240" Y="353"/>
                <Item Value="1000" X="210" Y="407"/>
            </Nonlinearity>
        </Rotate>
    </Element>
    <!-- Hoist Cable extension -->
    <Element>
        <Position X="146" Y="334"/>
        <Image Name="Needle_Hoist.bmp" Luminous="Yes" PointsTo="North">
            <Axis X="5" Y="80"/>
        </Image>
        <Rotate>
            <Value Minimum="0" Maximum="500">(A:SLING CABLE EXTENDED LENGTH:1,feet) 11 -</Value>
            <Nonlinearity>
                <Item Value="0" X="140" Y="430"/>
                <Item Value="50" X="55" Y="321"/>
                <Item Value="100" X="177" Y="246"/>
                <Item Value="200" X="237" Y="315"/>
                <Item Value="500" X="240" Y="353"/>
            </Nonlinearity>
        </Rotate>
    </Element>
    <!-- =======================Altitude Controls================== -->
    <Element>
        <Position X="78" Y="508"/>
        <Select>
            <Value>(L:AltHold Select,Bool)</Value>
            <Case Value="1">
                <Image Name="Arrow_Zero.bmp"/>
            </Case>
        </Select>
    </Element>
    <!-- ======================= Hoist Controls====================== -->
   
    <Element>
        <Position X="367" Y="132"/>
        <Select>
            <Value>(A:SLING HOIST PERCENT DEPLOYED:1,percent) 95 &gt;</Value>
            <Case Value="1">
                <Image Name="Arrow_Zero.bmp"/>
            </Case>
        </Select>
    </Element>
    <Element>
        <Position X="228" Y="149"/>
        <Select>
            <Value>(A:SLING HOOK IN PICKUP MODE:1,bool)</Value>
            <Case Value="1">
                <Image Name="Arrow_Zero.bmp"/>
            </Case>
        </Select>
    </Element>
    <!-- Hoist cable auto mode-->
    <Element>
        <Position X="416" Y="29"/>
        <Select>
            <Value>(L:HOIST_AUTO,bool)</Value>
            <Case Value="1">
                <Image Name="Arrow_Zero.bmp"/>
            </Case>
        </Select>
    </Element>
    <!-- The end of the cable should ideally be about 5 feet above ground.
    The hoist error value must consider the vertical distance between the CG/origin,
    which is where decision height is referenced and the position of the sling/winch which is where sling cable extended length is referenced.
    In the HH-3E config file the winch is 2.8 ft below CG/origin so when the hoist error is zero the cable end would be on the ground with 2.8 ft trailing on the ground.
    To have it at 5 ft above ground, 7.8 feet should be added to the extended cable length for zero hoist error.
    Then the extend/retract logic would extend the cable until it is 10 feet above ground and retract it when it is 5 feet below the desired position (just touching the ground).
    Once the cable end is within 10 feet of the ground, the hoist error would be too small to cause continuous extend/retract events-->
    <Element>
    <Select>
        <Value>(L:HOIST_AUTO,bool)
        if{ (A:SLING CABLE EXTENDED LENGTH:1,feet) 7.8 + (A:decision HEIGHT,FEET) -  (>L:Hoist error,number)
         (L:hoist error,number) 5 &lt; if{ (>K:HOIST_SWITCH_EXTEND) }
         (L:hoist error,number) 5 >; if{ (>K:HOIST_SWITCH_RETRACT) }
         }</Value>
    </Select>
    </Element>
    <!-- ======================= Hover Gauge===================== -->
    <!--Groundspeed Needle-->
    <Element>
        <Position X="381" Y="351"/>
        <Visible>(A:Velocity body z, knots) 20 &lt;</Visible>
        <Image Name="Horizontal.bmp" Luminous="Yes">
            <Axis X="50" Y="2"/>
        </Image>
        <Shift>
            <Value Maximum="20" Minimum="-20">(A:Velocity body z, knots)</Value>
            <Nonlinearity>
                <Item Value="20" X="381" Y="307"/>
                <Item Value="0" X="381" Y="351"/>
                <Item Value="-20" X="381" Y="394"/>
            </Nonlinearity>
        </Shift>
    </Element>
    <!--Vertical speed Bug-->
    <Element>
        <Position X="325" Y="352"/>
        <Image Name="Hover VSI.bmp" Luminous="Yes">
            <Axis X="0" Y="6"/>
        </Image>
        <Shift>
            <Value Maximum="1000" Minimum="-1000">(A:vertical speed, feet/minute)</Value>
            <Nonlinearity>
                <Item Value="1000" X="325" Y="310"/>
                <Item Value="0" X="325" Y="352"/>
                <Item Value="-1000" X="325" Y="394"/>
            </Nonlinearity>
        </Shift>
    </Element>
    <!--Lateral speed Needle-->
    <Element>
        <Position X="381" Y="351"/>
        <Image Name="Lateral.bmp" Luminous="Yes">
            <Axis X="2" Y="50"/>
        </Image>
        <Shift>
            <Value Maximum="20" Minimum="-20">(A:velocity body x, knots)</Value>
            <Nonlinearity>
                <Item Value="20" X="339" Y="351"/>
                <Item Value="0" X="381" Y="351"/>
                <Item Value="-20" X="424" Y="351"/>
            </Nonlinearity>
        </Shift>
    </Element>
    <!-- =======================Speed Controls================== -->
    <Element>
        <Position X="366" Y="510"/>
        <Select>
            <Value>(L:FA Select,Bool)</Value>
            <Case Value="1">
                <Image Name="Arrow_Zero.bmp"/>
            </Case>
        </Select>
    </Element>
    <Element>
            <Position X="423" Y="520"/>
            <Text X="60" Y="18" Bright="Yes" Length="7" Font="Arial" Color="White" Adjust="Center" VerticalAdjust="Bottom" Multiline="No" Fixed="Yes">
                <String>%((L:AUTOPILOT AIRSPEED HOLD VAR,number))%!03d!</String>
            </Text>
        </Element>
    <Mouse>
        <!-- ======================= Select Altitude Hold====================== -->
        <Area Left="71" Top="503" Width="45" Height="45">
            <Tooltip>AtlHold Select %( (L:AltHold Select,bool) 1 ==)%{if}On%{else}Off%{end}</Tooltip>
            <Cursor Type="Hand"/>
            <Click>(L:AltHold Select,Bool) ! (>L:AltHold Select,Bool)</Click>
        </Area>
        <!-- ======================= Set Altitude====================== -->
        <Area Left="71" Top="554" Width="45" Height="45">
            <Cursor Type="DownArrow"/>
            <Click Event="DECREASE_DECISION_HEIGHT" Repeat="Yes"/>
        </Area>
        <Area Left="71" Top="450" Width="45" Height="45">
            <Cursor Type="UpArrow"/>
            <Click Event="INCREASE_DECISION_HEIGHT" Repeat="Yes"/>
        </Area>
        <!-- ======================= Set Speed====================== -->
        <Area Left="361" Top="506" Width="45" Height="45">
            <Tooltip>SPD Select %( (L:FA Select,bool) 1 ==)%{if}On%{else}Off%{end}</Tooltip>
            <Cursor Type="Hand"/>
            <Click>(L:FA Select,Bool) ! (>L:FA Select,Bool)</Click>
        </Area>
        <Area Left="361" Top="558" Width="45" Height="45">
            <Cursor Type="DownArrow"/>
            <Click>(L:AUTOPILOT AIRSPEED HOLD VAR,number) 2 - (>L:AUTOPILOT AIRSPEED HOLD VAR,number)</Click>
        </Area>
        <Area Left="361" Top="452" Width="45" Height="45">
            <Cursor Type="UpArrow"/>
            <Click>(L:AUTOPILOT AIRSPEED HOLD VAR,number) 2 + (>L:AUTOPILOT AIRSPEED HOLD VAR,number)</Click>
        </Area>
        <!-- ======================= Hoist Controls====================== -->
        <Area Left="416" Top="129" Width="45" Height="45">
            <Cursor Type="Hand"/>
            <Click>1 (>K:HOIST_DEPLOY_SET)</Click>
        </Area>
        <Area Left="311" Top="129" Width="45" Height="45">
            <Cursor Type="Hand"/>
            <Click>0 (>K:HOIST_DEPLOY_SET)</Click>
        </Area>
        <Area Left="73" Top="38" Width="45" Height="45">
            <Cursor Type="Hand"/>
            <Click Event="HOIST_SWITCH_RETRACT" Repeat="Yes"/>
        </Area>
        <Area Left="73" Top="92" Width="45" Height="45">
            <Cursor Type="Hand"/>
            <Click>0 (>K:HOIST_SWITCH_SET) 0 (>L:HOIST_SWITCH_SET,bool)</Click>
        </Area>
        <Area Left="415" Top="26" Width="45" Height="45">
            <Cursor Type="Hand"/>
            <Click>(L:HOIST_AUTO,bool) !  (>L:HOIST_AUTO,bool)</Click>
        </Area>
        <Area Left="73" Top="145" Width="45" Height="45">
            <Cursor Type="Hand"/>
            <Click Event="HOIST_SWITCH_EXTEND" Repeat="Yes"/>
        </Area>
        <Area Left="233" Top="145" Width="45" Height="45">
            <Cursor Type="Hand"/>
            <Click Event="SLING_PICKUP_RELEASE" Repeat="No"/>
        </Area>
    </Mouse>
</Gauge>

Hoist_Pop-Up.png
 
Thanks Roy.

A very interesting gauge and almost exactly what I am trying to simulate :)

I will take a closer look and get back to you.
 
I'm attaching four shots that should help you.
First one is called "Swimmer in Door". I shows our intrepid " SimObjects/Misc/Rescue_Swimmer_sm" standing in the door ready to be lowered. He was station_load.2 in the aircraft.cfg and station_name.2 = "Rescue_Swimmer_sm" . I gave him a nominal position in the helo, but it does not matter, you cannot see him until the door is opened. The door opens when you deploy the hoist/sling using the above gauge. Here is the associated Sling.0 entry
[Sling.0]
hoist_extend_rate = 5 //Feet per second
hoist_retract_rate = -5 //Feet per second
position = 6.6, 3.7, -2.8 //Feet from datum
max_stretch = 2.0 //Max stretch distance at ultimate load
damping_ratio = 0.6 //0 for no damping to 1.0 for critically damped.
rated_load = 600 //Characteristics tension of cable in pounds
ultimate_load = 2250 //Breaking force in pounds
tolerance_angle=45 //Angle, in degrees, used to determine lateral breaking force limit
auto_pickup_range = 8 //Max Range, in feet, for auto-pickup
auto_pickup_max_speed = 8.5 //Maximum speed (feet per second) for auto-pickup
hoist_payload_station = 2 //Payload station in which the hoist will load in and out of. 1 is first station.
hoist_door=1 //Door associated with hoist. Must be open for use.

Note the last line about the door.
[exits]
number_of_exits = 4
exit.0 = 1.0 ;Main / Hoist door
Swimmer in door.jpg


The swimmer is automatically placed in the door when it opens and is attached to the sling cable.

Next shot is from a camera placed above the door and swimmer. It has the pop up hover gauge. The needle with red stripes indicates that the hoist has been deployed and lowered 40 feet.
The other needle shows the helo is at 60 feet AGL, so the swimmer is about 20 ft above ground. You can see the cable is attached (the attachment point details are in his .cfg file).
The mid right gauge is a typical helo hover gauge and shows no forward sideways or vertical velocity. The surrounding arrows can be used to induce velocities when doing a pick-up.
Obviously there is an autopilot doing a lot of work and for a helo this has to be custom made.
Swimmer being lowered.jpg


When our friend reaches the ground you activate SLING_PICKUP_RELEASE and he will detach. You can then fly around to get into a position to pick him up again.
For him to be again attached the end of the cable has to be at or closer than 8 feet and at or less than 8 ft/sec (or whatever values are in the Sling auto pick up definition).
This will happen only by accident if you just fly towards the object. I found the only sure way was to use the autopilot and the door camera and, in my case to have object just to the right of the flight refuel probe.
You will auto pick up if you basically drag the cable over the object with the end within 8 feet of the specified attachment point on the object.
Takes quite a lot of practice, especially if there is a wind or the object is on something moving.

The next shot gives a good idea of what the approach to pick-up looks like. Note there is a small forward velocity on the hover gauge. Also note the cable extension and altitude are the same.
You cannot see the cable in this shot, but when you lower the view it will appear.
Swimmer on ground.jpg

Last shot is of the swimmer at the moment of pick-up and you can see the cable has hit him on the neck.
So now raise him on the top left control and be careful to not exceed the specified cable breaking force.
If you tear off in a rush before he has reached the door, he will trail behind the helo and the cable may break, dropping him to the ground.
Once he is at the top and the cable has fully retracted, stow the hoist, which shuts the door and he disappears inside.
If you have more than one swimmer or object, you can lower one after another. The objects will stay where you lowered them.
It is possible to place the objects in the scenery and pick them up later using simconnect, though I have not tried that.

Swimmer picked up.jpg


Hope this all helps
Roy
PS. I should have added that you normally will have to add the payload and sling details to a saved flight (.FLT file in FSXA .fxml file in P3D) Something like P3D
<Section Name="Payload.0">
<Property Name="PayloadList" Value=" 170.0, 170.0, 200.0, 0.0" />
</Section>
<Section Name="Sling.0.0">
<Property Name="Object" Value="Rescue_Swimmer_sm " />
<Property Name="CableLength" Value="1.0" />
<Property Name="HoistSwitch" Value="0" />
</Section>
 
Last edited:
Thanks again Roy :)

My gauge will be used for either Rescue ops as you do and also Heavy lifting / Logging.

I thought that you only had to edit saved flights for the Sling and not the Hoist?

I will also have to find a tweak for enabling the Hoist to lift up to 25.000 pounds :D
 
Back
Top