obsidian_backup/多体+耦合求解器/稳态运行载荷/steady power curve Operational loads 控制.md

11 KiB
Raw Blame History

Theory manual

!Pasted image 20250310105322.pngOnce Demanded Generator Torque is reached at point D, the torque demand is kept constant for all higher wind speeds. Once the Demanded Generator Speed is reached the pitch control regulates the rotor speed. This is know as the full load regime. A small (optional) margin is allowed between points D (where the torque reaches maximum) and E (where pitch control begins) to prevent excessive mode switching between below and above rated control modes. However, this margin may not be required, in which case points D and E coincide. The line CD may collapse to a point if also desired. 一旦达到点 D 的“所需发电机转矩”,对于更高的风速,转矩需求保持恒定。一旦达到“所需发电机转速”,叶片控制系统会调节转子转速。这被称为满载运行状态。为了避免在额定控制模式下和超额定控制模式下频繁切换,允许点 D转矩达到最大值处和点 E叶片控制开始处之间存在一个小的可选的裕量。然而在某些情况下此裕量可能不需要此时点 D 和点 E 会重合。如果需要,线段 CD 也可以坍缩为一个点。

In the full load regime, the blade pitch is adjusted to maintain the chosen operating point, designated E. Effectively, changing the pitch alters the lines of constant wind speed, forcing them to pass through the desired operating point. 在满载工况下叶片迎角会进行调整以维持选定的工作点即E点。 实际上,改变迎角会改变恒定风速线,迫使它们通过期望的工作点。

The pitch angle is limited to the Minimum pitch angle the lower limit of pitch or aileron deployment angle. The Maximum pitch angle that is the upper limit of pitch or aileron deployment angle. There is also an option to schedule pitch angle against hub wind speed during the initial condition calculation.

俯仰角限制在最小俯仰角,即俯仰或副翼展开角度的下限。最大俯仰角则是俯仰或副翼展开角度的上限。 此外,在初始条件计算期间,可以选择根据风轮毂风速安排俯仰角

The user can select between Pitch feathering or Assisted stall to specify the direction of pitching. If pitch feathering is selected, the Minimum pitch angle will be set for normal operation below rated wind speed, and the pitch (or aileron) angle will increase above rated. If Assisted Stall is selected, the maximum pitch setting is used below rated, and the pitch (or aileron) angle decreases (or moves to more negative values) above rated. 用户可以选择羽化俯仰助力失速来指定俯仰方向。如果选择羽化俯仰,则在额定风速下正常运行将设置最小俯仰角,并且俯仰(或副翼)角将在额定风速以上增加。 如果选择助力失速,则在额定风速下使用最大俯仰设置,并且俯仰(或副翼)角将在额定风速以上减小(或移动到更负的值)。

The feature allows the user to easily specify pitch angles below rated wind speed for initial conditions. This is useful for model linearisation calculations. For above rated wind speeds, the initial condition algorithm finds a pitch angle that maintains maximum rotor speed. However, the minimum pitch angle set by the pitch scheduling routine is still used as the minimum angle even though a smaller angle might be needed to maintain the maximum rotor speed. Furthermore, it provides a convenient method for matching the behaviours in the initial condition algorithm and a time domain pitch scheduling routine implemented in a User-Defined Controller. Note that this feature only supports VSPR control strategies, and does not support the “Assisted Stall” type controller. In addition, this option only applies when the turbine is in power production mode. 该功能允许用户在额定风速以下,轻松指定初始条件下的俯仰角。这对于模型线性化计算非常有用。当风速高于额定风速时,初始条件算法会找到一个俯仰角,以保持最大的转子转速。然而,即使可能需要更小的俯仰角来保持最大的转子转速,俯仰调度例程设置的最小俯仰角仍然被用作最小角度。此外,它提供了一种方便的方法,用于匹配初始条件算法和在用户自定义控制器中实现的时域俯仰调度例程的行为。请注意此功能仅支持VSPR控制策略不支持“辅助失速”类型的控制器。此外此选项仅在风机处于发电模式时有效。

The user can specify hub wind speeds and minimum pitch angles in a lookup table. During the initial condition calculation, a linear interpolation of the data points is utilized to calculate the minimum pitch angle for the current hub wind speed (both above and below rated wind speed conditions). The points in the lookup table must be in a monotonic ascending order and if the current hub wind speed is out of range of the specified lookup table the nearest value will be used. 用户可以在查找表中指定风机转速和最小迎风角。在初始条件计算过程中,将利用数据点的线性插值来计算当前风机转速对应的最小迎风角(包括高于和低于额定风速的工况)。查找表中的数据点必须按单调递增顺序排列,如果当前风机转速超出指定查找表的范围,则使用最接近的值。

user manual

The steady state parameters define the operating envelope of the turbine, and are required for calculation of the steady power curve and steady operational loads. Click on Controller Dynamics to define additional parameters which model the dynamic action of the controller, such as controller gains and transducer and actuator time constants.

!Pasted image 20250310144609.png

Steady state parameters

  • Demanded electrical power: the power set-point, i.e. the electrical power output required above rated wind speed.
  • Minimum pitch angle: the lower limit of pitch or aileron deployment angle.
  • Maximum pitch angle: the upper limit of pitch or aileron deployment angle.
  • Select Pitch feathering or Assisted stall: to specify the direction of pitching. If Pitch Feathering is selected, the Minimum pitch angle will be set for normal operation below rated wind speed, and the pitch (or aileron) angle will increase above rated. If Assisted Stall is selected, the Maximum pitch setting is used below rated, and the pitch (or aileron) angle decreases (or moves to more negative values) above rated.

!Pasted image 20250310162659.png

稳态功率+转速、变桨算法

输入:

  • 风速 3, 25, 0.1
  • 电机转速min(rpm)
  • 电机转速optimal mode max(rpm)
  • 电机转速demanded (demanded >= optimal mode max)(rpm)
  • gearbox ratio

1、算Cp-lambda -> Cpmax + 对应lambda 2、根据追踪最佳cp方法得到3-25每个风速对应的转速

        # 电机转速根据min、optimal mode maxgearbox ratio 得到风轮转速
        
        # 根据转速上下界,找到风速上下界 rpm -> deg
        omegalb = self.omega_rpmlb * 2 * np.pi / 60
        omegaub = self.omega_rpmub * 2 * np.pi / 60
        
  	   # 根据relalabmda_R找到风速上下界在此风速范围内可以追踪最佳Cp
        V0lb =  omegalb * self.RPlusHub / relalabmda_R
        V0ub =  omegaub * self.RPlusHub / relalabmda_R

        for V in self.v_w:
        # self.v_w 风速序列 3, 25, 0.1

            # 形成转速规律

            if V < V0lb:

                # 转速为最小转速

                append(omegalb)

            elif V > V0ub:

                # 转速为最大转速

                append(0)  # D-E段转速无法一开始就确定给0

            else:

                # 转速为最大Cp对应的转速

                append(relalabmda_R * V / self.RPlusHub)

        self.omega_list = omega_list

3、遍历速度

for i in range(self.numv_w):

	V = np.round(self.v_w[i], 3)

	omega = self.omega_list[i]

	if omega[i] != 0:
		Cp, CThrust, Power, Thrust, Mxy = self.SolveAlongBlade(V, omega) #对整只叶片解BEM
		Power_re[i] = Power
		Thrust_re[i] = Thrust
		Mxy_re[i] = Mxy
		Cp_re[i] = Cp
		pitch_angle[i] = 0
		iteration_step[i] = 0
	elif omega[i-1] *gearbox_ratio == demanded
		omega = self.omega_list[i-1] 
		Cp, CThrust, Power, Thrust, Mxy = self.SolveAlongBlade(V, omega) #对整只叶片解BEM
		
		if Power > self.Rated_P:  # 达到额定风速了,开始变桨
			min_angle = 0
	
			max_angle = 90
	
			init_pitch_angle = pitch_angle[i-1] # 从前一步变桨角度开始
	
			tolerance = 0.01
	
			max_iterations = 1000
			error = Power - self.Rated_P
			print(f"Iteration {0}: pitch_angle={init_pitch_angle}, Power={Power}, Error={error}")
	
			delta_pitch_angle = compute_delta_pitch(Power, self.Rated_P, 0.05)
			# 我直接把delta变桨角度加到扭角里了
			self.Twist += np.full((self.SectionNum,), delta_pitch_angle)
	
			total_pitch_angle = init_pitch_angle + delta_pitch_angle
			
			# 开始迭代
		    for iteration in range(max_iterations):    
		    Cp, CThrust, Power, Thrust, Mxy = self.SolveAlongBlade(V, omega)
		    error = Power - self.Rated_P
	
			if abs(error) < tolerance:
				Power_re[i] = Power
				self.V0 = V
				Thrust_re[i] = Thrust
				Mxy_re[i] = Mxy
				Cp_re[i] = Cp
				pitch_angle[i] = total_pitch_angle
				iteration_step[i] = iteration + 1
				break
	
			else:
				delta_pitch_angle = compute_delta_pitch(Power, self.Rated_P, 0.05)
				total_pitch_angle = total_pitch_angle + delta_pitch_angle
				
				# 约束检查
				if total_pitch_angle < min_angle:
					total_pitch_angle = min_angle
				elif total_pitch_angle > max_angle:
					total_pitch_angle = max_angle
				self.Twist += np.full((self.SectionNum,), delta_pitch_angle)

	elif omega[i-1] *gearbox_ratio < demanded
		# 求解omega
		delta_omega = compute_delta_pitch(aero_torque, self.Rated_P, 0.05)

		omega = self.omega_list[i-1] + delta_omega
		Cp, CThrust, Power, Thrust, Mxy = self.SolveAlongBlade(V, omega)
		
		Power_re[i] = Power
		Thrust_re[i] = Thrust
		Mxy_re[i] = Mxy
		Cp_re[i] = Cp
		pitch_angle[i] = 0
		iteration_step[i] = 0
		
def compute_delta_pitch(current_power, target_power, sensitivity):

    delta = (current_power - target_power) * sensitivity

    return delta

steady控制算法.excalidraw.

两个衔接点:

1、转速只有一个D点 到 变桨 2、转速有两个 E点到变桨

某个风速,转速到最大了,开始变桨保持额度扭矩 即可