Hi Roar,
I bought a second ADF module to complete my pedestal. Apparently it's not working and after reading the OC4BA manual again, I found ADF2 not supported
CHRONO-Captain*, EFIS-Captain*, MCP*, EFIS-FO*, CHRONO-FO*, FMC-Captain*, FMC-FO*,
COM1*, COM2*, NAV1*, NAV2*, ADF1*, ATC*, AUDIO1*, AUDIO2*
Is it possible you can add the ADF2 to the script or give me some info so I can try it myself?
Thanks
Best regards
remco
ADF First Officer?
Re: ADF First Officer?
The reason the ADF2 is not scripted by me, is because PMDG B737 NGX do not have 2 ADF in any configuration.
I could be wrong, but that was my reason when I did the scripting many years ago.
I could be wrong, but that was my reason when I did the scripting many years ago.
Re: ADF First Officer?
I'm stupid never checked this, ADF module for sale!
-
- Posts: 46
- Joined: Sun May 24, 2015 2:59 pm
Re: ADF First Officer?
Hi Remco
Don't worry, the same happened to me . Instead of selling the second ADF unit and buying a third COM radio, I just copied (by script) the digits of the first ADF to the second unit. Probably nobody will discover it in your cockpit, I bet.
Best regards
Urs
Don't worry, the same happened to me . Instead of selling the second ADF unit and buying a third COM radio, I just copied (by script) the digits of the first ADF to the second unit. Probably nobody will discover it in your cockpit, I bet.
Best regards
Urs
Re: ADF First Officer?
Hi Urs,
Thanks for the advise, this sounds like a plan to me . Can you tell me how to do this? My Sioc knowledge is poor.
Best regards
Remco
Thanks for the advise, this sounds like a plan to me . Can you tell me how to do this? My Sioc knowledge is poor.
Best regards
Remco
-
- Posts: 46
- Joined: Sun May 24, 2015 2:59 pm
Re: ADF First Officer?
Hi Remco
Of course I can join the code I have written. But you need some SOIC knowledge to adapt it to your own SW. Moreover the ADF from PMDG is a little bit different from standard radios, because the dial knobs change the active display instead of the standby display (error of PMDG). But they are interchangeable by the TFR button as normal. Probably Roar has a better approach now, but I did not check this any more, because my solution is sufficient for me. Device 10 is ADF1, Device 20 is ADF2
// ADF1 Pedestal
// Outputs are duplicated to ADF2 unit, but no inputs from there
Var 0690, name D_A1Act, Link IOCARD_DISPLAY, Device 10, Digit 0, Numbers 4
Var 0691, name O_A1ActDp, Link IOCARD_OUT, Device 10, Output 20
Var 0692, name D_A1Act5, Link IOCARD_DISPLAY, Device 10, Digit 4, Numbers 1
Var 0693, name D_A1Stb, Link IOCARD_DISPLAY, Device 10, Digit 5, Numbers 4
Var 0694, name O_A1StbDp, Link IOCARD_OUT, Device 10, Output 21
Var 0695, name D_A1Stb5, Link IOCARD_DISPLAY, Device 10, Digit 9, Numbers 1
Var 0696, name D_A2Act, Link IOCARD_DISPLAY, Device 20, Digit 0, Numbers 4
Var 0697, name O_A2ActDp, Link IOCARD_OUT, Device 20, Output 20
Var 0698, name D_A2Act5, Link IOCARD_DISPLAY, Device 20, Digit 4, Numbers 1
Var 0699, name D_A2Stb, Link IOCARD_DISPLAY, Device 20, Digit 5, Numbers 4
Var 0700, name O_A2StbDp, Link IOCARD_OUT, Device 20, Output 21
Var 0701, name D_A2Stb5, Link IOCARD_DISPLAY, Device 20, Digit 9, Numbers 1
Var 0702, name ADFSymbol1, Link IOCARD_OUT, Device 10, Output 22
Var 0703, name ADFSymbol2, Link IOCARD_OUT, Device 10, Output 25
Var 0704, name ANTSymbol1, Link IOCARD_OUT, Device 10, Output 23
Var 0705, name ANTSymbol2, Link IOCARD_OUT, Device 10, Output 24
Var 0706, name ADF2ymbol1, Link IOCARD_OUT, Device 20, Output 22
Var 0707, name ADF2ymbol2, Link IOCARD_OUT, Device 20, Output 25
Var 0708, name ANT2ymbol1, Link IOCARD_OUT, Device 20, Output 23
Var 0709, name ANT2ymbol2, Link IOCARD_OUT, Device 20, Output 24
Var 0710, name A1ActFreq
Var 0711, name A1StbFreq
Var 0712, name A1StbLow
Var 0713, name A1StbHigh
Var 2809, name A1ActToNGX, static // write active window in NGX
Var 1808, name Active_Freq, static // read active window in NGX
{
&A1ActFreq = FROMBCD &Active_Freq // get frequency from left window
&A1StbHigh = DIV &A1ActFreq ,100 // update left rot
&A1StbLow = MOD &A1ActFreq ,100 // update right rot
CALL &OutA1Act // display active frequency in HW
}
Var 0043, name ADF_Power_ON, Link Subrutine
{
CALL &ADFSymbols
IF &ADF_Power_ON = 0
{
&O_A1ActDp = 0
&O_A2ActDp = 0
&O_A1StbDp = 0
&O_A2StbDp = 0
&D_A1Act = -999999
&D_A1Act5 = -999999
&D_A1Stb = -999999
&D_A1Stb5 = -999999
&D_A2Act = -999999
&D_A2Act5 = -999999
&D_A2Stb = -999999
&D_A2Stb5 = -999999
}
ELSE
{
&O_A1ActDp = 1
&O_A2ActDp = 1
&O_A1StbDp = 1
&O_A2StbDp = 1
&A1StbFreq = 3300
CALL &OutA1Stb
CALL &OutA1Act
}
}
Var 0714, name OutA1Act, Link SUBRUTINE
{
IF &A1ActFreq < 10000
{
&D_A1Act5 = -999999
&D_A1Act = &A1ActFreq
&D_A2Act5 = -999999
&D_A2Act = &A1ActFreq
}
ELSE
{
&D_A1Act5 = 1
&D_A1Act = &A1ActFreq - 10000
&D_A2Act5 = 1
&D_A2Act = &A1ActFreq - 10000
}
}
Var 0715, name OutA1Stb, Link SUBRUTINE
{
IF &A1StbFreq < 10000
{
&D_A1Stb5 = -999999
&D_A1Stb = &A1StbFreq
&D_A2Stb5 = -999999
&D_A2Stb = &A1StbFreq
}
ELSE
{
&D_A1Stb5 = 1
&D_A1Stb = &A1StbFreq - 10000
&D_A2Stb5 = 1
&D_A2Stb = &A1StbFreq - 10000
}
}
Var 0716, name RO_A1StbHigh, Link IOCARD_ENCODER, Device 10, Input 0, Aceleration 1, Type 2
{
L0 = &RO_A1StbHigh * -1
&A1StbHigh = ROTATE 19 ,175 ,L0
L0 = &A1StbHigh * 100
&A1ActFreq = L0 + &A1StbLow
&A1ActToNGX = &A1ActFreq // write to act window NGX, actually not BCD coded
}
Var 0717, name RO_A1StbLow, Link IOCARD_ENCODER, Device 10, Input 4, Aceleration 1, Type 2
{
&A1StbLow = ROTATE 0, 99, &RO_A1StbLow
L0 = &A1StbHigh * 100
&A1ActFreq = L0 + &A1StbLow
&A1ActToNGX = &A1ActFreq // write to act window NGX, actually not BCD coded
}
Var 2106, name bFreqSwap1, static, Link IOCARD_SW, Device 10, Input 6, Type P
{
&A1StbFreq = &A1ActFreq
IF &ADF_Power_ON > 0 // inhibit stb display at cold & dark
{
CALL &OutA1Stb
}
}
Var 2103, name sADF_MODE_SEL, static, Link IOCARD_SW, Device 10, Input 2
{
CALL &ADFSymbols
}
Var 0720, name ADFSymbols, LINK Subrutine
{
&ADFSymbol1 = 0
&ADFSymbol2 = 0
&ANTSymbol1 = 0
&ANTSymbol2 = 0
&ADF2ymbol1 = 0
&ADF2ymbol2 = 0
&ANT2ymbol1 = 0
&ANT2ymbol2 = 0
IF &ADF_Power_ON > 0
{
IF &sADF_MODE_SEL = 1
{
&ANTSymbol1 = 1
&ANTSymbol2 = 1
&ANT2ymbol1 = 1
&ANT2ymbol2 = 1
}
ELSE
{
&ADFSymbol1 = 1
&ADFSymbol2 = 1
&ADF2ymbol1 = 1
&ADF2ymbol2 = 1
}
}
}
Var 2105, name ADF_TONE_SW, static
Var 0721, name sTone_SW, Link IOCARD_SW, Device 10, Input 7
{
&ADF_TONE_SW = 1 - &sTone_SW // Used to change direction of switch
}
Good luck and best regards
Urs
Of course I can join the code I have written. But you need some SOIC knowledge to adapt it to your own SW. Moreover the ADF from PMDG is a little bit different from standard radios, because the dial knobs change the active display instead of the standby display (error of PMDG). But they are interchangeable by the TFR button as normal. Probably Roar has a better approach now, but I did not check this any more, because my solution is sufficient for me. Device 10 is ADF1, Device 20 is ADF2
// ADF1 Pedestal
// Outputs are duplicated to ADF2 unit, but no inputs from there
Var 0690, name D_A1Act, Link IOCARD_DISPLAY, Device 10, Digit 0, Numbers 4
Var 0691, name O_A1ActDp, Link IOCARD_OUT, Device 10, Output 20
Var 0692, name D_A1Act5, Link IOCARD_DISPLAY, Device 10, Digit 4, Numbers 1
Var 0693, name D_A1Stb, Link IOCARD_DISPLAY, Device 10, Digit 5, Numbers 4
Var 0694, name O_A1StbDp, Link IOCARD_OUT, Device 10, Output 21
Var 0695, name D_A1Stb5, Link IOCARD_DISPLAY, Device 10, Digit 9, Numbers 1
Var 0696, name D_A2Act, Link IOCARD_DISPLAY, Device 20, Digit 0, Numbers 4
Var 0697, name O_A2ActDp, Link IOCARD_OUT, Device 20, Output 20
Var 0698, name D_A2Act5, Link IOCARD_DISPLAY, Device 20, Digit 4, Numbers 1
Var 0699, name D_A2Stb, Link IOCARD_DISPLAY, Device 20, Digit 5, Numbers 4
Var 0700, name O_A2StbDp, Link IOCARD_OUT, Device 20, Output 21
Var 0701, name D_A2Stb5, Link IOCARD_DISPLAY, Device 20, Digit 9, Numbers 1
Var 0702, name ADFSymbol1, Link IOCARD_OUT, Device 10, Output 22
Var 0703, name ADFSymbol2, Link IOCARD_OUT, Device 10, Output 25
Var 0704, name ANTSymbol1, Link IOCARD_OUT, Device 10, Output 23
Var 0705, name ANTSymbol2, Link IOCARD_OUT, Device 10, Output 24
Var 0706, name ADF2ymbol1, Link IOCARD_OUT, Device 20, Output 22
Var 0707, name ADF2ymbol2, Link IOCARD_OUT, Device 20, Output 25
Var 0708, name ANT2ymbol1, Link IOCARD_OUT, Device 20, Output 23
Var 0709, name ANT2ymbol2, Link IOCARD_OUT, Device 20, Output 24
Var 0710, name A1ActFreq
Var 0711, name A1StbFreq
Var 0712, name A1StbLow
Var 0713, name A1StbHigh
Var 2809, name A1ActToNGX, static // write active window in NGX
Var 1808, name Active_Freq, static // read active window in NGX
{
&A1ActFreq = FROMBCD &Active_Freq // get frequency from left window
&A1StbHigh = DIV &A1ActFreq ,100 // update left rot
&A1StbLow = MOD &A1ActFreq ,100 // update right rot
CALL &OutA1Act // display active frequency in HW
}
Var 0043, name ADF_Power_ON, Link Subrutine
{
CALL &ADFSymbols
IF &ADF_Power_ON = 0
{
&O_A1ActDp = 0
&O_A2ActDp = 0
&O_A1StbDp = 0
&O_A2StbDp = 0
&D_A1Act = -999999
&D_A1Act5 = -999999
&D_A1Stb = -999999
&D_A1Stb5 = -999999
&D_A2Act = -999999
&D_A2Act5 = -999999
&D_A2Stb = -999999
&D_A2Stb5 = -999999
}
ELSE
{
&O_A1ActDp = 1
&O_A2ActDp = 1
&O_A1StbDp = 1
&O_A2StbDp = 1
&A1StbFreq = 3300
CALL &OutA1Stb
CALL &OutA1Act
}
}
Var 0714, name OutA1Act, Link SUBRUTINE
{
IF &A1ActFreq < 10000
{
&D_A1Act5 = -999999
&D_A1Act = &A1ActFreq
&D_A2Act5 = -999999
&D_A2Act = &A1ActFreq
}
ELSE
{
&D_A1Act5 = 1
&D_A1Act = &A1ActFreq - 10000
&D_A2Act5 = 1
&D_A2Act = &A1ActFreq - 10000
}
}
Var 0715, name OutA1Stb, Link SUBRUTINE
{
IF &A1StbFreq < 10000
{
&D_A1Stb5 = -999999
&D_A1Stb = &A1StbFreq
&D_A2Stb5 = -999999
&D_A2Stb = &A1StbFreq
}
ELSE
{
&D_A1Stb5 = 1
&D_A1Stb = &A1StbFreq - 10000
&D_A2Stb5 = 1
&D_A2Stb = &A1StbFreq - 10000
}
}
Var 0716, name RO_A1StbHigh, Link IOCARD_ENCODER, Device 10, Input 0, Aceleration 1, Type 2
{
L0 = &RO_A1StbHigh * -1
&A1StbHigh = ROTATE 19 ,175 ,L0
L0 = &A1StbHigh * 100
&A1ActFreq = L0 + &A1StbLow
&A1ActToNGX = &A1ActFreq // write to act window NGX, actually not BCD coded
}
Var 0717, name RO_A1StbLow, Link IOCARD_ENCODER, Device 10, Input 4, Aceleration 1, Type 2
{
&A1StbLow = ROTATE 0, 99, &RO_A1StbLow
L0 = &A1StbHigh * 100
&A1ActFreq = L0 + &A1StbLow
&A1ActToNGX = &A1ActFreq // write to act window NGX, actually not BCD coded
}
Var 2106, name bFreqSwap1, static, Link IOCARD_SW, Device 10, Input 6, Type P
{
&A1StbFreq = &A1ActFreq
IF &ADF_Power_ON > 0 // inhibit stb display at cold & dark
{
CALL &OutA1Stb
}
}
Var 2103, name sADF_MODE_SEL, static, Link IOCARD_SW, Device 10, Input 2
{
CALL &ADFSymbols
}
Var 0720, name ADFSymbols, LINK Subrutine
{
&ADFSymbol1 = 0
&ADFSymbol2 = 0
&ANTSymbol1 = 0
&ANTSymbol2 = 0
&ADF2ymbol1 = 0
&ADF2ymbol2 = 0
&ANT2ymbol1 = 0
&ANT2ymbol2 = 0
IF &ADF_Power_ON > 0
{
IF &sADF_MODE_SEL = 1
{
&ANTSymbol1 = 1
&ANTSymbol2 = 1
&ANT2ymbol1 = 1
&ANT2ymbol2 = 1
}
ELSE
{
&ADFSymbol1 = 1
&ADFSymbol2 = 1
&ADF2ymbol1 = 1
&ADF2ymbol2 = 1
}
}
}
Var 2105, name ADF_TONE_SW, static
Var 0721, name sTone_SW, Link IOCARD_SW, Device 10, Input 7
{
&ADF_TONE_SW = 1 - &sTone_SW // Used to change direction of switch
}
Good luck and best regards
Urs
Re: ADF First Officer?
Thanks Urs,
I will give it a try and will make a new version of my current script.
Did such changes before...
Thanks again.
Best regards
Remco
I will give it a try and will make a new version of my current script.
Did such changes before...
Thanks again.
Best regards
Remco