WINCC面板的关闭/打开SV及KV柜Q1主空开的控制原理
---------------------------------------------------------
FB100中使用:
R_TRIG_Anfo_Off_Halt (CLK:="DB_ARG".On_Off.Anfo_Off_Halt);
R_TRIG_Cancel (CLK:="DB_ARG".On_Off.Cancel);
R_TRIG_Anfo_Off (CLK:="DB_ARG".On_Off.Anfo_Off);
If (R_TRIG_SK90_ZutrittAnfo.Q Or R_TRIG_K90_ZutrittAnfo.Q)
And Not xHM_K90_ZutrittAnfo And ST_BA.K90_AnfoSG = WORD#0
OR MASTER_DIAG_STAT_REG_PF Or R_TRIG_Anfo_Off_Halt.Q Then
xHM_K90_ZutrittAnfo := True; 请求进入
R_TRIG_SK90_ZutrittAnfo.Q:= False;
End_If; 请求进入
If (R_TRIG_SK6_TE.Q And xHM_K6_TE) Or (ST_BA.K6_TE And Not ST_BA.K40) Or "DB_ARG".On_Off.Quitt Or R_TRIG_Cancel.Q Then 当ON_OFF的送点ON功能激活时
xHM_K6_TE := False; 结束K6进程停止
End_If; 停止
If (R_TRIG_SK90_ZutrittAnfo.Q Or F_TRIG_K90_ZutrittAnfo.Q Or "DB_ARG".On_Off.Quitt Or R_TRIG_Cancel.Q) And xHM_K90_ZutrittAnfo And Not MASTER_DIAG_STAT_REG_PF Then
xHM_K90_ZutrittAnfo := False;
End_If;
If (R_TRIG_SK6_TE.Q Or R_TRIG_Anfo_Off.Q) And Not xHM_K6_TE Then
xHM_K6_TE := True;
R_TRIG_SK6_TE.Q := False;
End_If;
---------------------------------------------------------
FB142系统赋值
xON := SVQxK AND (KVQxK OR Cfg.X1); SV及KV柜Q1空开在接通状态
xOFF := NOT SVQxK AND (NOT KVQxK OR Cfg.X1); SV及KV柜Q1空开在关闭状态
Cfg.X1:控制带不带KV柜,不带为1 带为0
xS_LS := (bVisutasten = Byte#2); 控制关闭/打开按钮。
R_Trig_S_LS(CLK := xS_LS); 触发激活脉冲。
WINCC面板控制关闭:
IF FrgAnw AND R_Trig_S_LS.Q THEN 按钮点了
IF xOFF AND NOT TP_MAZ.Q THEN 空开已经关闭了,而且间隔时间已经满足
IF NOT xOff_aktiv AND NOT xON_aktiv THEN 没有处于激活开电或关电
iSKette := 10; 去开电步骤
ELSE
iSKette := 0;
END_IF;
ELSIF xON THEN
IF NOT xOff_aktiv AND NOT xON_aktiv THEN
iSKette := 110; 去关电步骤
END_IF;
ELSE
xF_MAZ := True; 空开状态不对故障
END_IF;
END_IF;
TP_MAZ(IN := On_Off.Qx_Off, PT := T#2m) 断开点后的间隔时间2m
打开ON
CASE iSKette OF
10 : (*Start*)
xAnwOff := False;
xAnwOn := True; 选择打开模式
xOn_aktiv := True; 启动被激活
iSKette := 20;
20 : (*Kraftspeicher laden*)
TON_Timer.PT := T#2s; 激活延迟2s
xTimer := True;
SVKx := True; SVK1先保持打开
IF TON_Timer.Q THEN 时间满足后
xTimer := False;
SVKx := False; SVK1被关闭
xQx_On := True; ON状态被激活
iSKette := 30;
END_IF;
30 : (*Verzoegerung Einschalten*)
IF xOn THEN 检测NOVS,KV柜Q1开关启动状态
xQx_On := False;
TON_Timer.PT := Tver_On; 延迟启动时间开始
xTimer := True;
IF TON_Timer.Q THEN 时间到达
xTimer := False;
iSKette := 40;
END_IF;
END_IF;
40 : (*Quitt Zutrittsanforderung, Halt bei Taktende*)
xQuitt := True; 复位
xQuitt_5s := True;
TON_Timer.PT := T#5s; 延迟5s
xTimer := True;
iSKette := 50;
50 : (*Quitt 5s Rueckfuehrkreis und Depassivierung*)
xQuitt := False ;
IF TON_Timer.Q THEN 时间到达后
xTimer := False;
xQuitt_5s := False;
xQuitt_Usr := True;
xSteuEin := True; 启动点激活
iSKette := 60;
END_IF;
60 : (*Quitt Usermeldungen*)
xQuitt_Usr := False;
xOn_aktiv := False; 返回初始化
iSKette := 0;
END_CASE;
关闭SVK1继电器
CASE iSKette OF
110: (*Start*)
xAnwOn := False;
xAnwOff := True; 选择打开模式
xOff_aktiv := True; 关闭被激活
xF_AnlBerOff := False;
iSKette := 120;
120: (*Verzoegerung Ausschalten*)
TON_Timer.PT := Tver_Off; 延迟时间激活
xTimer := True;
xErrorOffClear := False;
IF ((TON_Timer.PT - TON_Timer.ET ) < T#10s) THEN 剩余10S停止关闭请求
xAnfo_Off_Halt := True; 发出请求关闭停止
END_IF;
IF TON_Timer.Q AND On_Off.Anl_Bereit_Off THEN 延时到达关闭准备满足
xTimer := False;
xAnfo_Off_1 := True; 前往下一步
iSKette := 140;
ELSIF TON_S_LS_Off.Q THEN
xTimer := False;
xAnfo_Off_1 := True;
iSKette := 135;
ELSIF TON_Timer.Q AND NOT On_Off.Anl_Bereit_Off THEN 时间到达,结束
关闭报错
xTimer := False;
xAnfo_Off_1 := True;
xF_AnlBerOff := True; 发出关闭准备错误
iSKette := 130;
END_IF;
///////////////////////////////////////////////////////
TON_S_LS_Off.Q 的解析:
TON_S_LS_Off(IN := (xS_LS OR Sxx_Off) AND xOff_aktiv, PT := T#4s)
xS_LS: xS_LS := (bVisutasten = Byte#2) wincc按钮一直按住
Sxx_Off: 模块外部输入管脚,指按钮。
按钮信号一直被按住要超过4s
///////////////////////////////////////////////////////
On_Off.Anl_Bereit_Off 的解析:
On_Off.Anl_Off := xAnl_Off
On_Off.Anfo_Off := xON AND xAnwOff
FB200 机器人块
_ST_ROB.E30_Anfo_Abschalt := ON_OFF.Anl_Off;
IF NOT AnwORob AND ON_OFF.Anfo_Off THEN
IF NOT _ST_ROB.A30_Abschaltung_erlaubt THEN 机器人没有发出机器人停止
ON_OFF.Anl_Bereit_Off := False; 选择OFF准备将被关闭
IF ON_OFF.Anfo_Off_1 THEN
xF_AAE := True;
END_IF;
END_IF;
END_IF;
机器人控制ON_OFF能否被实施完成
130: (*nicht Bereit Ausschalten 1s Cancel ausgeben*) 结束关闭指令
xAnfo_Off_1 := False;
xAnwOn := xON;
xAnwOff := xOFF;
TON_Timer.PT := t#1s;
xTimer := True;
xCancel := True;
IF TON_Timer.Q THEN
xTimer := False;
xCancel := False;
iSKette := 0;
END_IF;
135: (*Ausschalten ohne Bereit 5s Warnung ausgeben*) 等待去第150步
xAnfo_Off_1 := False;
TON_Timer.PT := t#5s;
xTimer := True;
xOff_Visu := True;
IF TON_Timer.Q THEN
xTimer := False;
xOff_Visu := False;
iSKette := 150;
END_IF;
140: (*Anlage Bereit zum Ausschalten 30s Anl_Off ausgeben*)
xAnfo_Off_1 := False;
TON_Timer.PT := t#30s;
xTimer := True;
xAnl_Off := True; 请求OFF发出
IF TON_Timer.Q THEN
xTimer := False;
xAnl_Off := False;
iSKette := 150;
END_IF;
150: (*Leistungsschalter, Medien, Licht usw. Aus*)发出控制的VSK1为1
xSteuEin := False;
xQx_Off := True;
SVKx := True; VSK1为1
iSKette := 160;
160: (*Leistungsschalter Aus*)
xQx_Off := False; 返回0步
iSKette := 0;
END_CASE;
On_Off.Cancel
FB100
R_TRIG_Cancel (CLK:="DB_ARG".On_Off.Cancel);
If (R_TRIG_SK90_ZutrittAnfo.Q Or F_TRIG_K90_ZutrittAnfo.Q Or "DB_ARG".On_Off.Quitt Or R_TRIG_Cancel.Q) And xHM_K90_ZutrittAnfo
And Not MASTER_DIAG_STAT_REG_PF Then
xHM_K90_ZutrittAnfo := False;
End_If;
If (R_TRIG_SK6_TE.Q And xHM_K6_TE) Or (ST_BA.K6_TE And Not ST_BA.K40) Or "DB_ARG".On_Off.Quitt Or R_TRIG_Cancel.Q Then
xHM_K6_TE := False;
End_If;
关闭请求进入K90和K6进程停止
----------------------------------------------------------------
On_Off.Anfo_Off := xON AND xAnwOff;
On_Off.Anfo_Off_1 := xON AND xAnfo_Off_1;
On_Off.Anfo_Off_Halt := On_Off.Anfo_Off AND xAnfo_Off_Halt;请求停止
/////////////////////////////////////////////////////
FB100
R_TRIG_Anfo_Off_Halt (CLK:="DB_ARG".On_Off.Anfo_Off_Halt);
If (R_TRIG_SK90_ZutrittAnfo.Q Or R_TRIG_K90_ZutrittAnfo.Q)
And Not xHM_K90_ZutrittAnfo And ST_BA.K90_AnfoSG = WORD#0
OR MASTER_DIAG_STAT_REG_PF Or R_TRIG_Anfo_Off_Halt.Q Then
xHM_K90_ZutrittAnfo := True;
R_TRIG_SK90_ZutrittAnfo.Q:= False;
End_If;
请求停止发出后FB100请求进入安全门发出
/////////////////////////////////////////////////////
On_Off.Qx_On := xQx_On;
On_Off.Qx_Off := xQx_Off;
On_Off.Quitt := xQuitt;
On_Off.Quitt_5s := xQuitt_5s;
On_Off.Quitt_USR := xQuitt_USR;
On_Off.STEUEIN := xON AND xSteuEin;
On_Off.On_aktiv := xOn_aktiv AND NOT On_Off.STEUEIN;
On_Off.Anl_Bereit_Off := On_Off.Anfo_Off;
On_Off.Anl_Off := xAnl_Off;
FB100中
R_TRIG_Anfo_Off (CLK:="DB_ARG".On_Off.Anfo_Off); 关闭请求
If (R_TRIG_SK90_ZutrittAnfo.Q Or R_TRIG_K90_ZutrittAnfo.Q)
And Not xHM_K90_ZutrittAnfo And ST_BA.K90_AnfoSG = WORD#0
OR MASTER_DIAG_STAT_REG_PF Or R_TRIG_Anfo_Off_Halt.Q Then
xHM_K90_ZutrittAnfo := True;
R_TRIG_SK90_ZutrittAnfo.Q:= False;
End_If;
请求关闭,FB100 的K90发出
On_Off.FS_Frg_Auto := F_Trig_Hupe.Q AND Mit;
On_Off.FS_LSP_Ein := (R_Trig_FS.Q OR R_Trig_LSP.Q) AND Mit;
On_Off.ErrorOffClear := NOT xF_AnlBerOff AND NOT On_Off.Anfo_Off AND NOT On_Off.Anfo_Off_1 OR Cfg.X0;
On_Off.Cancel := xCancel;
xON := SVQxK AND (KVQxK OR Cfg.X1); SV和KV柜的反馈/ 打开继电器
xAnwOff:选择关闭继电器
IF ((TON_Timer.PT - TON_Timer.ET ) < T#10s) THEN
xAnfo_Off_Halt := True;
END_IF;
全部0条评论
快来发表一下你的评论吧 !