You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

698 lines
15 KiB

FUNCTION_BLOCK IJ_DAHU
VAR_EXTERNAL
END_VAR
VAR_INPUT
DAHU_STRUCT_IN :DAHU_IN;
END_VAR
VAR_OUTPUT
DAHU_STRUCT_OUT :DAHU_OUT;
END_VAR
VAR
DAHU_RunTime :BS_Runtime;
DAHU_WVCTEMP :REAL;
RunTon1 :TON;
RunTon2 :TON;
RunTof1 :TOF;
RunTof2 :TOF;
DevCheck1_time :TIME :=t#15s; (*璁惧�杩愯�鐘舵€佸弽棣�*)
DevCheck2_time :TIME :=t#15s; (*璁惧�杩愯�鐘舵€佸弽棣�*)
Status0 :INT;
Status1 :INT;
Status2 :INT;
Status3 :INT;
DAHU_SPID_VP :REAL;
DAHU_SPID_VI :REAL;
DAHU_WPID_VP :REAL;
DAHU_WPID_VI :REAL;
PID_in :BOOL;
PID_timer :TON;
FPSSIM_timer :TON;
END_VAR
(*Automatically declared*)
VAR_EXTERNAL
END_VAR
(** {* **)
(** **)
(** 时 间:20201120 **)
(** 版 本:1.5 **)
(** 作 者:姚立 **)
(** 名 称:吾悦定制吊顶空调机组程序功能块 **)
(** 说 明: **)
(** 输入变量 **)
(** DAHU_STRUCT_IN. **)
(** SM :INT ; 季节模式 0夏季 1冬季 2过渡 **)
(** Run :BOOL; 运行状态 **)
(** Fault :BOOL; 故障状态 **)
(** Auto :BOOL; 自动状态 **)
(** Control :BOOL; 程序控制 **)
(** TSET :REAL; 温度设定 **)
(** WVMC :BOOL; 水阀手动控制 **)
(** WVMV :REAL; 水阀手动控制值 **)
(** RTS :REAL; 回风温度 **)
(** RST :BOOL; 运行时间累计重置 **)
(** RSTV :REAL; 运行时间累计重置值 **)
(** FPS :BOOL; 风机压差 **)
(** ISO1 :BOOL; 运行故障反馈隔离 **)
(** ISO2 :BOOL; 风机压差反馈隔离 **)
(** VP :REAL; PI设定值P **)
(** VI :REAL; PI设定值I **)
(** **)
(** **)
(** DAHU_STRUCT_OUT. **)
(** WVCS :INT ; 水阀控制转换值,放大100倍 **)
(** Control :BOOL; 启停控制 **)
(** RH :REAL; 运行小时 **)
(** SN :INT ; 设备状态代码 **)
(** FPSSIM :BOOL; 压差模拟输出 **)
(** **)
(** 包含以下几点功能 **)
(** 1.运行故障回检,输出故障代码,支持故障报警隔离 **)
(** 2.水阀PID调节/手动调节 **)
(** 3.运行时间累计 **)
(** 4.增加了压差模拟输出 **)
(** **)
(** 备 注: **)
(** 依赖块: **)
(** BS_Runtime; **)
(** **)
(** *} **)
(** **)
(** {******************************************************运行故障回检******************************************************} **)
(** RunTon1( IN:=DAHU_STRUCT_IN.Control , PT:=DevCheck1_time); **)
(* call - Stmt *)
CAL RunTon1 (
IN := DAHU_STRUCT_IN.Control,
PT := DevCheck1_time
)
(** RunTof1( IN:=DAHU_STRUCT_IN.Control , PT:=DevCheck1_time); **)
(* call - Stmt *)
CAL RunTof1 (
IN := DAHU_STRUCT_IN.Control,
PT := DevCheck1_time
)
(** RunTon2( IN:=DAHU_STRUCT_IN.Control , PT:=DevCheck2_time); **)
(* call - Stmt *)
CAL RunTon2 (
IN := DAHU_STRUCT_IN.Control,
PT := DevCheck2_time
)
(** RunTof2( IN:=DAHU_STRUCT_IN.Control , PT:=DevCheck2_time); **)
(* call - Stmt *)
CAL RunTof2 (
IN := DAHU_STRUCT_IN.Control,
PT := DevCheck2_time
)
(** **)
(** {*设备电气控制箱控制指令与设备运行反馈不一致故障检测,检测故障产生原因电箱没电、断路器断开、中间继电器与接触器故障等为Status0*}; **)
(** DAHU_STRUCT_OUT.Control:=DAHU_STRUCT_IN.Control; **)
(* assign - Stmt *)
LD DAHU_STRUCT_IN.Control
ST DAHU_STRUCT_OUT.Control
(** if DAHU_STRUCT_IN.ISO1=0 then **)
(* if - Cond *)
LD DAHU_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 DAHU_STRUCT_OUT.Control<>DAHU_STRUCT_IN.Run then **)
(* if - Cond *)
LD DAHU_STRUCT_OUT.Control
NE DAHU_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 DAHU_STRUCT_IN.Fault=1 then **)
(* if - Cond *)
LD DAHU_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 DAHU_STRUCT_IN.ISO2=0 then **)
(* if - Cond *)
LD DAHU_STRUCT_IN.ISO2
EQ 0
JMPCN ODK_SKIP_000000000000005_000000000000001
(* then - Stmts *)
(** if RunTon2.q or not RunTof2.q then **)
(* if - Cond *)
LD RunTon2.q
OR ( RunTof2.q
NOT
)
JMPCN ODK_SKIP_000000000000006_000000000000001
(* then - Stmts *)
(** if DAHU_STRUCT_OUT.Control<>DAHU_STRUCT_IN.FPS then **)
(* if - Cond *)
LD DAHU_STRUCT_OUT.Control
NE DAHU_STRUCT_IN.FPS
JMPCN ODK_SKIP_000000000000007_000000000000001
(* then - Stmts *)
(** Status2:=1; **)
(* assign - Stmt *)
LD 1
ST Status2
JMP ODK_END_IF_000000000000007
(** else **)
(* else *)
ODK_SKIP_000000000000007_000000000000001:
(* else - Stmts *)
(** Status2:=0; **)
(* assign - Stmt *)
LD 0
ST Status2
(** 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:
JMP ODK_END_IF_000000000000005
(** else **)
(* else *)
ODK_SKIP_000000000000005_000000000000001:
(* else - Stmts *)
(** Status2:=0; **)
(* assign - Stmt *)
LD 0
ST Status2
(** end_if; **)
(* if - End *)
ODK_END_IF_000000000000005:
(** **)
(** **)
(** {*输出故障代码*} **)
(** if DAHU_STRUCT_OUT.Control<>0 then **)
(* if - Cond *)
LD DAHU_STRUCT_OUT.Control
NE 0
JMPCN ODK_SKIP_000000000000008_000000000000001
(* then - Stmts *)
(** DAHU_STRUCT_OUT.SN := Status0*1 + Status1*2 + Status2*4; **)
(* assign - Stmt *)
LD Status0
MUL 1
ADD ( Status1
MUL 2
)
ADD ( Status2
MUL 4
)
ST DAHU_STRUCT_OUT.SN
JMP ODK_END_IF_000000000000008
(** else **)
(* else *)
ODK_SKIP_000000000000008_000000000000001:
(* else - Stmts *)
(** DAHU_STRUCT_OUT.SN := 0 ; **)
(* assign - Stmt *)
LD 0
ST DAHU_STRUCT_OUT.SN
(** end_if; **)
(* if - End *)
ODK_END_IF_000000000000008:
(** **)
(** {******************************************************压差信号模拟**************************************************} **)
(** {********************************************原则上不使用,谨慎使用**************************************************} **)
(** **)
(** FPSSIM_timer( IN:=DAHU_STRUCT_IN.Run , PT:=t#5s ); **)
(* call - Stmt *)
CAL FPSSIM_timer (
IN := DAHU_STRUCT_IN.Run,
PT := t#5s
)
(** if DAHU_STRUCT_IN.Run=1 and DAHU_STRUCT_IN.Fault=0 then **)
(* if - Cond *)
LD DAHU_STRUCT_IN.Run
EQ 1
AND ( DAHU_STRUCT_IN.Fault
EQ 0
)
JMPCN ODK_SKIP_000000000000009_000000000000001
(* then - Stmts *)
(** DAHU_STRUCT_OUT.FPSSIM:=FPSSIM_timer.q; **)
(* assign - Stmt *)
LD FPSSIM_timer.q
ST DAHU_STRUCT_OUT.FPSSIM
JMP ODK_END_IF_000000000000009
(** else **)
(* else *)
ODK_SKIP_000000000000009_000000000000001:
(* else - Stmts *)
(** DAHU_STRUCT_OUT.FPSSIM:=0; **)
(* assign - Stmt *)
LD 0
ST DAHU_STRUCT_OUT.FPSSIM
(** end_if; **)
(* if - End *)
ODK_END_IF_000000000000009:
(** **)
(** {******************************************************水阀控制******************************************************} **)
(** **)
(** PID_in:= not PID_timer.q; **)
(* assign - Stmt *)
LD PID_timer.q
NOT
ST PID_in
(** PID_timer(in:=PID_in, pt:=t#1s );{*PID积分时间*} **)
(* call - Stmt *)
CAL PID_timer (
IN := PID_in,
PT := t#1s
)
(** **)
(** if DAHU_STRUCT_IN.WVMC=0 then **)
(* if - Cond *)
LD DAHU_STRUCT_IN.WVMC
EQ 0
JMPCN ODK_SKIP_00000000000000A_000000000000001
(* then - Stmts *)
(** if DAHU_STRUCT_IN.Run=1 then **)
(* if - Cond *)
LD DAHU_STRUCT_IN.Run
EQ 1
JMPCN ODK_SKIP_00000000000000B_000000000000001
(* then - Stmts *)
(** {*制冷季*} **)
(** if DAHU_STRUCT_IN.SM=0 then **)
(* if - Cond *)
LD DAHU_STRUCT_IN.SM
EQ 0
JMPCN ODK_SKIP_00000000000000C_000000000000001
(* then - Stmts *)
(** if DAHU_STRUCT_IN.RTS-DAHU_STRUCT_IN.TSET>=2.0 then **)
(* if - Cond *)
LD DAHU_STRUCT_IN.RTS
SUB DAHU_STRUCT_IN.TSET
GE 2.0
JMPCN ODK_SKIP_00000000000000D_000000000000001
(* then - Stmts *)
(** DAHU_WVCTEMP:=100.0; **)
(* assign - Stmt *)
LD 100.0
ST DAHU_WVCTEMP
JMP ODK_END_IF_00000000000000D
(** end_if; **)
(* if - End *)
ODK_SKIP_00000000000000D_000000000000001:
ODK_END_IF_00000000000000D:
(** if DAHU_STRUCT_IN.RTS-DAHU_STRUCT_IN.TSET>0.2 and DAHU_STRUCT_IN.RTS-DAHU_STRUCT_IN.TSET<2.0 then {*死区*} **)
(* if - Cond *)
LD DAHU_STRUCT_IN.RTS
SUB DAHU_STRUCT_IN.TSET
GT 0.2
AND ( DAHU_STRUCT_IN.RTS
SUB DAHU_STRUCT_IN.TSET
LT 2.0
)
JMPCN ODK_SKIP_00000000000000E_000000000000001
(* then - Stmts *)
(** if PID_timer.q then **)
(* if - Cond *)
LD PID_timer.q
JMPCN ODK_SKIP_00000000000000F_000000000000001
(* then - Stmts *)
(** DAHU_WVCTEMP:=(DAHU_STRUCT_IN.RTS-DAHU_STRUCT_IN.TSET)*50.0; **)
(* assign - Stmt *)
LD DAHU_STRUCT_IN.RTS
SUB DAHU_STRUCT_IN.TSET
MUL 50.0
ST DAHU_WVCTEMP
JMP ODK_END_IF_00000000000000F
(** end_if; **)
(* if - End *)
ODK_SKIP_00000000000000F_000000000000001:
ODK_END_IF_00000000000000F:
JMP ODK_END_IF_00000000000000E
(** end_if; **)
(* if - End *)
ODK_SKIP_00000000000000E_000000000000001:
ODK_END_IF_00000000000000E:
(** if DAHU_STRUCT_IN.RTS-DAHU_STRUCT_IN.TSET<=0.0 then **)
(* if - Cond *)
LD DAHU_STRUCT_IN.RTS
SUB DAHU_STRUCT_IN.TSET
LE 0.0
JMPCN ODK_SKIP_00000000000000G_000000000000001
(* then - Stmts *)
(** DAHU_WVCTEMP:=0.0; **)
(* assign - Stmt *)
LD 0.0
ST DAHU_WVCTEMP
JMP ODK_END_IF_00000000000000G
(** end_if; **)
(* if - End *)
ODK_SKIP_00000000000000G_000000000000001:
ODK_END_IF_00000000000000G:
JMP ODK_END_IF_00000000000000C
(** end_if; **)
(* if - End *)
ODK_SKIP_00000000000000C_000000000000001:
ODK_END_IF_00000000000000C:
(** {*制热季*} **)
(** if DAHU_STRUCT_IN.SM=1 then **)
(* if - Cond *)
LD DAHU_STRUCT_IN.SM
EQ 1
JMPCN ODK_SKIP_00000000000000H_000000000000001
(* then - Stmts *)
(** if DAHU_STRUCT_IN.TSET-DAHU_STRUCT_IN.RTS>=2.0 then **)
(* if - Cond *)
LD DAHU_STRUCT_IN.TSET
SUB DAHU_STRUCT_IN.RTS
GE 2.0
JMPCN ODK_SKIP_00000000000000I_000000000000001
(* then - Stmts *)
(** DAHU_WVCTEMP:=100.0; **)
(* assign - Stmt *)
LD 100.0
ST DAHU_WVCTEMP
JMP ODK_END_IF_00000000000000I
(** end_if; **)
(* if - End *)
ODK_SKIP_00000000000000I_000000000000001:
ODK_END_IF_00000000000000I:
(** if DAHU_STRUCT_IN.TSET-DAHU_STRUCT_IN.RTS>0.2 and DAHU_STRUCT_IN.TSET-DAHU_STRUCT_IN.RTS<2.0 then {*死区*} **)
(* if - Cond *)
LD DAHU_STRUCT_IN.TSET
SUB DAHU_STRUCT_IN.RTS
GT 0.2
AND ( DAHU_STRUCT_IN.TSET
SUB DAHU_STRUCT_IN.RTS
LT 2.0
)
JMPCN ODK_SKIP_00000000000000J_000000000000001
(* then - Stmts *)
(** if PID_timer.q then **)
(* if - Cond *)
LD PID_timer.q
JMPCN ODK_SKIP_00000000000000K_000000000000001
(* then - Stmts *)
(** DAHU_WVCTEMP:=(DAHU_STRUCT_IN.TSET-DAHU_STRUCT_IN.RTS)*50.0; **)
(* assign - Stmt *)
LD DAHU_STRUCT_IN.TSET
SUB DAHU_STRUCT_IN.RTS
MUL 50.0
ST DAHU_WVCTEMP
JMP ODK_END_IF_00000000000000K
(** end_if; **)
(* if - End *)
ODK_SKIP_00000000000000K_000000000000001:
ODK_END_IF_00000000000000K:
JMP ODK_END_IF_00000000000000J
(** end_if; **)
(* if - End *)
ODK_SKIP_00000000000000J_000000000000001:
ODK_END_IF_00000000000000J:
(** if DAHU_STRUCT_IN.TSET-DAHU_STRUCT_IN.RTS<=0.0 then **)
(* if - Cond *)
LD DAHU_STRUCT_IN.TSET
SUB DAHU_STRUCT_IN.RTS
LE 0.0
JMPCN ODK_SKIP_00000000000000L_000000000000001
(* then - Stmts *)
(** DAHU_WVCTEMP:=0.0; **)
(* assign - Stmt *)
LD 0.0
ST DAHU_WVCTEMP
JMP ODK_END_IF_00000000000000L
(** end_if; **)
(* if - End *)
ODK_SKIP_00000000000000L_000000000000001:
ODK_END_IF_00000000000000L:
JMP ODK_END_IF_00000000000000H
(** end_if; **)
(* if - End *)
ODK_SKIP_00000000000000H_000000000000001:
ODK_END_IF_00000000000000H:
(** {*过渡季*} **)
(** if DAHU_STRUCT_IN.SM=2 then **)
(* if - Cond *)
LD DAHU_STRUCT_IN.SM
EQ 2
JMPCN ODK_SKIP_00000000000000M_000000000000001
(* then - Stmts *)
(** DAHU_WVCTEMP:=0.0; **)
(* assign - Stmt *)
LD 0.0
ST DAHU_WVCTEMP
JMP ODK_END_IF_00000000000000M
(** end_if; **)
(* if - End *)
ODK_SKIP_00000000000000M_000000000000001:
ODK_END_IF_00000000000000M:
JMP ODK_END_IF_00000000000000B
(** else **)
(* else *)
ODK_SKIP_00000000000000B_000000000000001:
(* else - Stmts *)
(** DAHU_WVCTEMP:=0.0; **)
(* assign - Stmt *)
LD 0.0
ST DAHU_WVCTEMP
(** end_if; **)
(* if - End *)
ODK_END_IF_00000000000000B:
JMP ODK_END_IF_00000000000000A
(** else **)
(* else *)
ODK_SKIP_00000000000000A_000000000000001:
(* else - Stmts *)
(** DAHU_WVCTEMP:=DAHU_STRUCT_IN.WVMV; **)
(* assign - Stmt *)
LD DAHU_STRUCT_IN.WVMV
ST DAHU_WVCTEMP
(** end_if; **)
(* if - End *)
ODK_END_IF_00000000000000A:
(** **)
(** {*水阀赋值量程转换*} **)
(** DAHU_STRUCT_OUT.WVCS:=REAL_TO_INT(DAHU_WVCTEMP*100.0); **)
(* assign - Stmt *)
LD DAHU_WVCTEMP
MUL 100.0
REAL_TO_INT
ST DAHU_STRUCT_OUT.WVCS
(** **)
(** {******************************************************运行时间累计******************************************************} **)
(** DAHU_RunTime(RUN :=DAHU_STRUCT_IN.Run , RUNTIMESET :=DAHU_STRUCT_IN.RSTV , RUNTIMERST :=DAHU_STRUCT_IN.RST ,RunTimeRec_In :=DAHU_STRUCT_OUT.RH | DAHU_STRUCT_OUT.RH:= RUNTIME); **)
(* call - Stmt *)
CAL DAHU_RunTime (
Run := DAHU_STRUCT_IN.Run,
RUNTIMESET := DAHU_STRUCT_IN.RSTV,
RUNTIMERST := DAHU_STRUCT_IN.RST,
RunTimeRec_In := DAHU_STRUCT_OUT.RH
|
DAHU_STRUCT_OUT.RH := RUNTIME
)
(** **)
(** **)
END_FUNCTION_BLOCK