基于PLC风机偏航系统解缆控制 33
附录1
解缆控制程序:
(1)全局变量的定义程序
VAR_GLOBAL
UNTWIST_STEP: INT;
UNTWIST_CONTROL: WORD;
/1=UNTWIST STOP;2=CW;4=CCW;/
UNTWIST_STATUS: WORD; /1=UNTWIST STOP;2=CW;4=CCW;/ UNTWIST_MOTOR_CW AT %QX1.0 : BOOL; /偏航电机顺时针转动/ UNTWIST_MOTOR_CCW AT %QX1.1 : BOOL; /偏航电机逆时针转动/ UNTWIST_A_SENSOR AT %IX2.0 : BOOL; UNTWIST_A_SIGNAL: BOOL;
UNTWIST_B_SENSOR AT %IX2.1 : BOOL; UNTWIST_B_SIGNAL: BOOL; WIND_SPEED: INT;
/风速/
/风速传感器输入端口/
WIND_SPEED_INPUT AT %IW6 : WORD;
/位置传感器B/ /位置传感器A/
UNTWIST_CCW_LIMITED1_SWITCH AT %IX1.4 : BOOL; UNTWIST_CW_LIMITED1_SWITCH AT %IX1.5 : BOOL; UNTWIST_CCW_LIMITED2_SWITCH AT %IX1.6: BOOL; UNTWIST_CW_LIMITED2_SWITCH AT %IX1.7 : BOOL; X1: INT X: INT
/风机初始位置/ /风机纽缆角度/
END_VAR
VAR_GLOBAL RETAIN
(2)主程序MAIN
局部变量定义: PROGRAM MAIN VAR END_VAR
程序部分:
/主程序/
UNTWIST_PULSE: INT; UNTWIST_POSITION: INT;
END_VAR
基于PLC风机偏航系统解缆控制 34
SC_CONTROL(); /紧急停止/
READ_WIND_SPEED();
UNTWIST();
IF UNTWIST_STATUS=2 OR UNTWIST_STATUS=4 THEN /读取纽缆的角度/ X:= UNTWIST _POSITION-X1 END_IF
IF X=0 AND(UNTWIST_STATUS=2 OR UNTWIST_STATUS=4) THEN /当风机反
向旋转相同角度后,结束解缆/
UNTWIST_CONTROL:=1; UNTWIST_STATUS:=1; END_IF
(3)程序READ_WIND_SPEED
局部变量定义:
PROGRAM READ_WIND_SPEED VAR END_VAR
程序部分:
IF UNTWIST STATUS=1 THEN END_IF
IF WIND_SPEED<=25 AND X=720 AND UNTWIST_STATUS=1 THEN /当风速小于
25m/s且纽缆到达2圈时,进行解缆/
UNTWIST_CONTROL:=2 OR UNTWIST_CONTROL:=4; END_IF
IF WIND_SPEED>=25 AND UNTWIST_CCW_LIMITED1_SWITCH=1 OR UNTWIST_CW_LIMITED1_SWITCH=1 UNTWIST_STATUS=1 THEN
/当风速大
于25m/s且纽缆达到3圈时,进行解缆/ /读取风速/
WIND_SPEED:=WIND_SPEED_INPUT*125/65534-25/2;
/读取风速程序/
/解缆程序/ /读取风速/
基于PLC风机偏航系统解缆控制 35
UNTWIST_CONTROL:=2 OR UNTWIST_CONTROL:=4 END_IF
(4)UNTWIST 解缆程序
局部变量:
PROGRAM UNTWIST VAR END_VAR
程序部分:
IF UNTWIST_CONTROL=1 THEN /解缆停止/ UNTWIST_MOTOR_CCW:=0; UNTWIST_MOTOR_CW:=0; UNTWIST_STATUS:=1; END_IF
IF UNTWIST_CONTROL=2 THEN /顺时针解缆/ UNTWIST_MOTOR_CCW:=0; UNTWIST_MOTOR_CW:=1; UNTWIST_STATUS:=2; END_IF
IF UNTWIST_CONTROL=4 THEN /逆时针解缆/ UNTWIST_MOTOR_CCW:=1; UNTWIST_MOTOR_CW:=0; UNTWIST_STATUS:=4; END_IF
(5)SC_CONTROL
局部变量:
PROGRAM SC_CONTROL VAR END_VAR
程序部分:
/强制停止程序/
/解缆控制程序/
基于PLC风机偏航系统解缆控制 36
IF UNTWIST_CCW_LIMITED2_SWITCH=1 THEN UNTWIST_MOTOR_CCW:=0; UNTWIST_MOTOR_CW:=0; UNTWIST_STATUS:=1; END_IF
IF UNTWIST_CW_LIMITED2_SWITCH=1 THEN UNTWIST_MOTOR_CCW:=0; UNTWIST_MOTOR_CW:=0; UNTWIST_STATUS:=1; END_IF
(5)程序TWIST_ANGLE
局部变量:
PROGRAM TWIST_ANGLE VAR
程序部分:
A_High(CLK:=TWIST_A_SENSOR ); A_LOW(CLK:=TWIST_A_SENSOR); B_LOW(CLK:=TWIST_B_SENSOR);
UNTWIST_A_SIGNAL:= UNTWIST_A_SENSOR;
UNTWIST_B_SIGNAL:= UNTWIST_B_SENSOR;
A_LOW: F_TRIG; B_HIGH: R_TRIG; B_LOW: F_TRIG; A_HIGH: R_TRIG;
/绕缆达到四圈/
/纽缆及解缆角度计算/
END_VAR
/位置传感器A上跳变/ /位置传感器A下跳变/ /位置传感器B上跳变/ /位置传感器B下跳变/
B_HIGH(CLK:=TWIST_B_SENSOR);
IF NOT UNTWIST_A_SIGNAL AND NOT UNTWIST_B_SIGNAL THEN /AB状态为00/
UNTWIST _STEP:=1;
基于PLC风机偏航系统解缆控制 37
END_IF
IF UNTWIST_A_SIGNAL AND NOT UNTWIST_B_SIGNAL THEN/AB状态为10/ UNTWIST _STEP:=2; END_IF
IF UNTWIST _A_SIGNAL AND UNTWIST _B_SIGNAL THEN/AB状态为11/ UNTWIST _STEP:=3; END_IF
IF NOT UNTWIST _A_SIGNAL AND UNTWIST _B_SIGNAL THEN/AB状态为01/
UNTWIST _STEP:=4; END_IF
CASE UNTWIST _STEP OF
1: IF A_HIGH.Q AND NOT UNTWIST _B_SIGNAL THEN UNTWIST _PULSE := UNTWIST _PULSE +1; END_IF
IF B_HIGH.Q AND NOT UNTWIST _A_SIGNAL THEN UNTWIST _PULSE := UNTWIST _PULSE -1; END_IF
2: IF B_HIGH.Q AND UNTWIST _A_SIGNAL THEN UNTWIST _PULSE := UNTWIST _PULSE +1; END_IF
IF A_LOW.Q AND NOT UNTWIST _B_SIGNAL THEN UNTWIST _PULSE := UNTWIST _PULSE -1; END_IF
3: IF A_LOW.Q AND UNTWIST _B_SIGNAL THEN UNTWIST _PULSE := UNTWIST _PULSE +1; END_IF
IF B_LOW.Q AND UNTWIST A_SIGNAL THEN UNTWIST _PULSE := UNTWIST _PULSE -1; END_IF