FUNCTION_BLOCK IJ_EAF VAR_EXTERNAL END_VAR VAR_INPUT EAF_STRUCT_IN :EAF_IN; END_VAR VAR_OUTPUT EAF_STRUCT_OUT :EAF_OUT; END_VAR VAR EAF_RunTime :BS_Runtime; EAF_DevC :BS_DevC; EAF_WVCTEMP :REAL; RunTon1 :TON; RunTof1 :TOF; DevCheck1_time :TIME :=t#15s; (*璁惧杩愯鐘舵€佸弽棣�*) Status0 :INT; Status1 :INT; END_VAR (*Automatically declared*) VAR_EXTERNAL END_VAR (** {* **) (** 时 间:20200220 **) (** 版 本:1.0 **) (** 作 者: **) (** 名 称:排风机组程序功能块 **) (** 说 明: **) (** 输入变量 **) (** EAF_STRUCT_IN. **) (** CM :BOOL; 运行模式 0手动 1联动 **) (** Run :BOOL; 运行状态 **) (** Auto :BOOL; 自动状态 **) (** Fault :BOOL; 故障状态 **) (** Control :BOOL; 程序控制 **) (** COSET :REAL; CO设定 **) (** COES :REAL; 车库CO值 **) (** ISO1 :BOOL; 运行故障反馈隔离 **) (** RST :BOOL; 运行时间累计重置 **) (** RSTV :REAL; 运行时间累计重置值 **) (** **) (** EAF_STRUCT_OUT. **) (** Control :BOOL; 启停控制 **) (** RH :REAL; 运行小时 **) (** SN :INT ; 设备状态代码 **) (** **) (** 包含以下几点功能 **) (** 1.运行故障回检,输出故障代码,支持故障报警隔离 **) (** 2.手动/联动运行模式控制 **) (** 3.运行时间累计 **) (** **) (** 备 注: **) (** 依赖块: **) (** BS_Runtime; **) (** BS_DevC; **) (** *} **) (** **) (** {******************************************************运行故障回检******************************************************} **) (** RunTon1( IN:=EAF_STRUCT_IN.Control , PT:=DevCheck1_time); **) (* call - Stmt *) CAL RunTon1 ( IN := EAF_STRUCT_IN.Control, PT := DevCheck1_time ) (** RunTof1( IN:=EAF_STRUCT_IN.Control , PT:=DevCheck1_time); **) (* call - Stmt *) CAL RunTof1 ( IN := EAF_STRUCT_IN.Control, PT := DevCheck1_time ) (** **) (** **) (** {*设备电气控制箱控制指令与设备运行反馈不一致故障检测,检测故障产生原因电箱没电、断路器断开、中间继电器与接触器故障等为Status0*}; **) (** if EAF_STRUCT_IN.ISO1=0 then **) (* if - Cond *) LD EAF_STRUCT_IN.ISO1 EQ 0 JMPCN ODK_SKIP_000000000000001_000000000000001 (* then - Stmts *) (** if RunTon1.q or not RunTof1.q then **) (* if - Cond *) LD RunTon1.q OR ( RunTof1.q NOT ) JMPCN ODK_SKIP_000000000000002_000000000000001 (* then - Stmts *) (** if EAF_STRUCT_OUT.Control<>EAF_STRUCT_IN.Run then **) (* if - Cond *) LD EAF_STRUCT_OUT.Control NE EAF_STRUCT_IN.Run JMPCN ODK_SKIP_000000000000003_000000000000001 (* then - Stmts *) (** Status0:=1; **) (* assign - Stmt *) LD 1 ST Status0 JMP ODK_END_IF_000000000000003 (** else **) (* else *) ODK_SKIP_000000000000003_000000000000001: (* else - Stmts *) (** Status0:=0; **) (* assign - Stmt *) LD 0 ST Status0 (** end_if; **) (* if - End *) ODK_END_IF_000000000000003: (** if EAF_STRUCT_IN.Fault=1 then **) (* if - Cond *) LD EAF_STRUCT_IN.Fault EQ 1 JMPCN ODK_SKIP_000000000000004_000000000000001 (* then - Stmts *) (** Status1:=1; **) (* assign - Stmt *) LD 1 ST Status1 JMP ODK_END_IF_000000000000004 (** else **) (* else *) ODK_SKIP_000000000000004_000000000000001: (* else - Stmts *) (** Status1:=0; **) (* assign - Stmt *) LD 0 ST Status1 (** end_if; **) (* if - End *) ODK_END_IF_000000000000004: JMP ODK_END_IF_000000000000002 (** end_if; **) (* if - End *) ODK_SKIP_000000000000002_000000000000001: ODK_END_IF_000000000000002: JMP ODK_END_IF_000000000000001 (** else **) (* else *) ODK_SKIP_000000000000001_000000000000001: (* else - Stmts *) (** Status0:=0; **) (* assign - Stmt *) LD 0 ST Status0 (** Status1:=0; **) (* assign - Stmt *) LD 0 ST Status1 (** end_if; **) (* if - End *) ODK_END_IF_000000000000001: (** **) (** {*输出故障代码*} **) (** if EAF_STRUCT_OUT.Control<>0 then **) (* if - Cond *) LD EAF_STRUCT_OUT.Control NE 0 JMPCN ODK_SKIP_000000000000005_000000000000001 (* then - Stmts *) (** EAF_STRUCT_OUT.SN := Status0*1 + Status1*4 ; **) (* assign - Stmt *) LD Status0 MUL 1 ADD ( Status1 MUL 4 ) ST EAF_STRUCT_OUT.SN JMP ODK_END_IF_000000000000005 (** else **) (* else *) ODK_SKIP_000000000000005_000000000000001: (* else - Stmts *) (** EAF_STRUCT_OUT.SN := 0 ; **) (* assign - Stmt *) LD 0 ST EAF_STRUCT_OUT.SN (** end_if; **) (* if - End *) ODK_END_IF_000000000000005: (** **) (** **) (** {******************************************************手动开关控制******************************************************} **) (** if EAF_STRUCT_IN.CM=0 then **) (* if - Cond *) LD EAF_STRUCT_IN.CM EQ 0 JMPCN ODK_SKIP_000000000000006_000000000000001 (* then - Stmts *) (** if EAF_STRUCT_IN.Control=1 then **) (* if - Cond *) LD EAF_STRUCT_IN.Control EQ 1 JMPCN ODK_SKIP_000000000000007_000000000000001 (* then - Stmts *) (** EAF_STRUCT_OUT.Control:=1; **) (* assign - Stmt *) LD 1 ST EAF_STRUCT_OUT.Control JMP ODK_END_IF_000000000000007 (** else EAF_STRUCT_OUT.Control:=0; **) (* else *) ODK_SKIP_000000000000007_000000000000001: (* else - Stmts *) (* assign - Stmt *) LD 0 ST EAF_STRUCT_OUT.Control (** end_if; **) (* if - End *) ODK_END_IF_000000000000007: JMP ODK_END_IF_000000000000006 (** end_if; **) (* if - End *) ODK_SKIP_000000000000006_000000000000001: ODK_END_IF_000000000000006: (** **) (** {******************************************************联动开关控制******************************************************} **) (** if EAF_STRUCT_IN.CM=1 then **) (* if - Cond *) LD EAF_STRUCT_IN.CM EQ 1 JMPCN ODK_SKIP_000000000000008_000000000000001 (* then - Stmts *) (** EAF_DevC(RUN :=EAF_STRUCT_IN.CM , SET :=EAF_STRUCT_IN.COSET , FB :=EAF_STRUCT_IN.COES , DEAD_BAND :=10.0 , DELAY :=t#20s | EAF_STRUCT_OUT.Control:= DevC); **) (* call - Stmt *) CAL EAF_DevC ( Run := EAF_STRUCT_IN.CM, SET := EAF_STRUCT_IN.COSET, FB := EAF_STRUCT_IN.COES, DEAD_BAND := 10.0, DELAY := t#20s | EAF_STRUCT_OUT.Control := DevC ) JMP ODK_END_IF_000000000000008 (** end_if; **) (* if - End *) ODK_SKIP_000000000000008_000000000000001: ODK_END_IF_000000000000008: (** **) (** **) (** {******************************************************运行时间累计******************************************************} **) (** EAF_RunTime(RUN :=EAF_STRUCT_IN.Run , RUNTIMESET :=EAF_STRUCT_IN.RSTV , RUNTIMERST :=EAF_STRUCT_IN.RST | EAF_STRUCT_OUT.RH:= RUNTIME); **) (* call - Stmt *) CAL EAF_RunTime ( Run := EAF_STRUCT_IN.Run, RUNTIMESET := EAF_STRUCT_IN.RSTV, RUNTIMERST := EAF_STRUCT_IN.RST | EAF_STRUCT_OUT.RH := RUNTIME ) END_FUNCTION_BLOCK