风机偏航的程序设计主要涉及到偏航流程的控制、偏航角度的计算、偏航控制信号的生成以及与其他控制系统的集成。以下是一个简化的风机偏航控制程序设计的概述,使用SCL语言实现手动和自动偏航:
手动偏航
通过人为给偏航信号,风机按照预想方向进行偏航。
需要设置左右偏航的设定值,并在给偏航信号后及时复位,以避免控制紊乱。
自动偏航
通过测试风速和风向,判定风速是否达到最小风速要求来决定是否偏航。
计算风向角与偏航角的差值,来决定偏航的方式。
可以使用行程开关或其他传感器来监视电缆缠绕情况,从而控制偏航角度。
```scl
PROGRAM WindTurbineYawControl
VAR
lbv_YawSenseNumber: INT;
lbv_YawAnglePluse: REAL;
lbv_YawSenseError: BOOL;
liv_SenerAngleStep: UINT;
lvv_Sener1High: BOOL;
lvv_Sener2High: BOOL;
TP2: TIMESTAMP;
T10s: TIMESTAMP := T10s(10);
Bool9: BOOL;
Bool11: BOOL;
DIRE: REAL;
SPEED: REAL;
Speed_Alarm: BOOL;
Driver2_Left: BOOL;
Driver2_EN: BOOL;
Bool6: BOOL;
TIMEE: BOOL;
END_VAR
// 手动偏航控制
IF NOT lbv_YawSenseNumber THEN
lbv_YawSenseNumber := 1; // 设定偏航方向
lbv_YawAnglePluse := 0; // 偏航角度位置脉冲计数
lbv_YawSenseError := FALSE;
END_IF
// 自动偏航控制
IF TP2.ET >= T10s THEN
Bool9 := TRUE;
Bool11 := TRUE;
IF SPEED > 30 OR SPEED < 3 THEN
Bool11 := FALSE;
ELSE
Bool11 := TRUE;
END_IF
END_IF
IF Bool11 THEN
IF DIRE >= 5 AND DIRE <= 35 OR SPEED < 3 THEN
Bool6 := TRUE;
Driver2_Left := TRUE;
Driver2_EN := FALSE;
ELSE
Bool6 := FALSE;
Driver2_Left := FALSE;
Driver2_EN := TRUE;
END_IF
END_IF
// 偏航角度计算
CASE liv_SenerAngleStep OF
1:
IF lvv_Sener1High.Q AND NOT lbv_Sener2 THEN
liv_SenerAngleStep := 2;
END_IF
END_CASE
END_CASE
// 传感器数据处理
IF lbv_Sener1 AND lbv_Sener2 THEN
liv_SenerAngleStep := 3;
END_IF
IF NOT lbv_Sener1 AND lbv_Sener2 THEN
lbv_YawAnglePluse := REAL; // 偏航角度位置脉冲计数
lbv_YawSenseError := FALSE;
END_IF
// 结束程序
END_PROGRAM
```
请注意,这只是一个示例程序,实际应用中可能需要根据具体的风机控制系统和硬件配置进行调整和优化。建议在编写程序前,详细阅读相关硬件和软件的技术文档,并进行充分的测试和验证。