5.2 KiB
Raw Blame History

fast_advance_states()

  • ed_updatestates

  • SolveOption2a_Inp2BD

    • ed_calc_output 更新数据
  • BD updatestates

  • SolveOption2b_Inp2IfW Ifw根据ED结果更新

  • ifw updatestates

  • SolveOption2c_Inp2AD_SrvD

    • ifw calcoutput
    • AD_InputSolve_IfW
    • SrvD_InputSolve
      • ! from Ifw
      • WindDir
      • HorWindV
      • LidSpeed
      • MsrPositionsX
      • MsrPositionsY
      • MsrPositionsZ
      • ! from ED
      • YawAngle
      • Yaw
      • YawRate
      • LSS_Spd
      • HSS_Spd
      • RotSpeed
      • RootMxc
      • RootMyc
      • YawBrTAxp
      • YawBrTAyp
      • LSSTipPxa
      • LSSTipMxa
      • LSSTipMya
      • LSSTipMza
      • LSSTipMys
      • LSSTipMzs
      • YawBrMyn
      • YawBrMzn
      • NcIMURAxs
      • NcIMURAys
      • NcIMURAzs
      • RotPwr
      • LSShftFxa
      • LSShftFys
      • LSShftFzs
  • SrvD_UpdateStates

    • SrvD_CopyInput

    • SrvD_Input_ExtrapInterp

    • SrvD_UpdateDiscState

    • SrvD_Input_ExtrapInterp

    • DLL_controller_call

    • Torque_UpdateStates

    • Pitch_UpdateStates

    • Yaw_UpdateStates

    • TipBrake_UpdateStates

    • ! Blade Nacelle Tower Platform StrucCtrl但是NumSStC = 0 这部分代码跳过

    • ! Compute ElecPwr and GenTrq for controller (and DLL needs this saved):

      • CalculateTorque

CalcOutputs_And_SolveForInputs

  • SolveOption2

    • AD_CalcOutput
    • SrvD_CalcOutput
    • ED_InputSolve ED接收AD SD输入
      • BladeLoads.force/moment

      • towerloads.force/moment

      • GenTrq

      • HSSBrTrqC

      • BlPitchCom

      • YawMom

      • StrucCtrl loads 暂时没有

      • NacelleLoads.force/moment

  • Transfer_SrvD_to_SD_MD

  • ! 都在ifw更新后

  • SrvD_InputSolve

  • ResetRemapFlags

ed 到Bladed dll的输出

   y%RotPwr    = m%AllOuts(  RotPwr)*1000.
   DO K=1,p%NumBl
      y%RootMxc(K)   = m%AllOuts( RootMxc(K) )*1000.
      y%RootMyc(K)   = m%AllOuts( RootMyc(K) )*1000.
   END DO
   y%YawBrTAxp = m%AllOuts( YawBrTAxp)
   y%YawBrTAyp = m%AllOuts( YawBrTAyp)
   !y%LSSTipPxa = m%AllOuts( LSSTipPxa)*D2R ! bjj: did this above already

   y%LSSTipMxa = m%AllOuts(LSShftMxa)*1000.
   y%LSSTipMya = m%AllOuts(LSSTipMya)*1000.                ! Rotating hub My (GL co-ords) (Nm)
   y%LSSTipMza = m%AllOuts(LSSTipMza)*1000.                ! Rotating hub Mz (GL co-ords) (Nm)
   y%LSSTipMys = m%AllOuts(LSSTipMys)*1000.                ! Fixed hub My (GL co-ords) (Nm)
   y%LSSTipMzs = m%AllOuts(LSSTipMzs)*1000.                ! Fixed hub Mz (GL co-ords) (Nm)
   y%YawBrMyn  = m%AllOuts( YawBrMyn)*1000.                ! Yaw bearing My (GL co-ords) (Nm) !tower accel
   y%YawBrMzn  = m%AllOuts( YawBrMzn)*1000.                ! Yaw bearing Mz (GL co-ords) (Nm)
   y%NcIMURAxs = m%AllOuts(NcIMURAxs)*D2R                  ! Nacelle roll    acceleration (rad/s^2) -- this is in the shaft (tilted) coordinate system, instead of the nacelle (nontilted) coordinate system
   y%NcIMURAys = m%AllOuts(NcIMURAys)*D2R                  ! Nacelle nodding acceleration (rad/s^2)
   y%NcIMURAzs = m%AllOuts(NcIMURAzs)*D2R                  ! Nacelle yaw     acceleration (rad/s^2) -- this is in the shaft (tilted) coordinate system, instead of the nacelle (nontilted) coordinate system
   y%LSShftFxa = m%AllOuts(LSShftFxa)*1000.                ! Rotating low-speed shaft force x (GL co-ords) (N)
   y%LSShftFys = m%AllOuts(LSShftFys)*1000.                ! Nonrotating low-speed shaft force y (GL co-ords) (N)
   y%LSShftFzs = m%AllOuts(LSShftFzs)*1000.                ! Nonrotating low-speed shaft force z (GL co-ords) (N)
 m%AllOuts(LSShftMxa) =  DOT_PRODUCT( MomLPRot, m%CoordSys%e1 )
 m%AllOuts(   RotPwr) = ( x%QDT(DOF_GeAz) + x%QDT(DOF_DrTr) )*m%AllOuts(LSShftMxa)
 
DO K=1,p%NumBl
	m%AllOuts( RootMxc(K) ) = DOT_PRODUCT( MomH0B(:,K), m%CoordSys%i1(K,:) )
	m%AllOuts( RootMyc(K) ) = DOT_PRODUCT( MomH0B(:,K), m%CoordSys%i2(K,:) )
END DO !K

m%AllOuts(YawBrTAxp) =  DOT_PRODUCT( LinAccEO, m%CoordSys%b1 )
m%AllOuts(YawBrTAyp) = -DOT_PRODUCT( LinAccEO, m%CoordSys%b3 )

y%LSSTipPxa = x%QT (DOF_GeAz) + x%QT  (DOF_DrTr) + p%AzimB1Up + PiBy2
m%AllOuts(LSSTipPxa) = y%LSSTipPxa*R2D


m%AllOuts(LSShftMxa) =  DOT_PRODUCT( MomLPRot, m%CoordSys%e1 )
m%AllOuts(LSSTipMya) =  DOT_PRODUCT( MomLPRot, m%CoordSys%e2 )
m%AllOuts(LSSTipMza) =  DOT_PRODUCT( MomLPRot, m%CoordSys%e3 )
m%AllOuts(LSSTipMys) = -DOT_PRODUCT( MomLPRot, m%CoordSys%c3 )
m%AllOuts(LSSTipMzs) =  DOT_PRODUCT( MomLPRot, m%CoordSys%c2 )

m%AllOuts( YawBrMyn) = -DOT_PRODUCT( MomBNcRt, m%CoordSys%d3 )
m%AllOuts( YawBrMzn) =  DOT_PRODUCT( MomBNcRt, m%CoordSys%d2 )


m%AllOuts(NcIMURAxs) =      DOT_PRODUCT(                 AngAccER  , m%CoordSys%c1 )*R2D
m%AllOuts(NcIMURAys) = -1.0*DOT_PRODUCT(                 AngAccER  , m%CoordSys%c3 )*R2D
m%AllOuts(NcIMURAzs) =      DOT_PRODUCT(                 AngAccER  , m%CoordSys%c2 )*R2D

m%AllOuts(LSShftFxa) =  DOT_PRODUCT(  FrcPRot, m%CoordSys%e1 )
m%AllOuts(LSShftFys) = -DOT_PRODUCT(  FrcPRot, m%CoordSys%c3 )
m%AllOuts(LSShftFzs) =  DOT_PRODUCT(  FrcPRot, m%CoordSys%c2 )

self.avr_swap[10] = self.demanded_pitch as f32;         self.avr_swap[34] = self.gen_state as f32; 1

49
50
51
报错信息

        self.avr_swap[60] = self.num_blades as f32;

        self.avr_swap[68] = self.root_mxc[0] as f32;

        self.avr_swap[69] = self.root_mxc[1] as f32;

        self.avr_swap[70] = self.root_mxc[2] as f32;

78 默认是4

94

初始化在swap会被外层覆盖