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.
317 lines
5.8 KiB
317 lines
5.8 KiB
4 months ago
|
FUNCTION_BLOCK BS_DevScan
|
||
|
VAR_EXTERNAL
|
||
|
|
||
|
END_VAR
|
||
|
|
||
|
VAR_INPUT
|
||
|
Dev_Scan_Hex :DWORD; (*设备状态输入值,转化成二进制对应模块在线状态*)
|
||
|
Dev_Array :ARRAY[0..31] of byte;(*设备状态通道输入*)
|
||
|
END_VAR
|
||
|
|
||
|
VAR_OUTPUT
|
||
|
Dev_Status :DWORD; (*设备状态输出值,转化成二进制对应模块在线状态*)
|
||
|
Dev_Ratio :REAL; (*设备在线比例*)
|
||
|
Dev_Ready :BOOL; (*设备准备就绪,0为存在不运行模块,1为全部正常运行*)
|
||
|
Dev_Total :INT; (*设备总计数量*)
|
||
|
Dev_Error :INT; (*设备故障数量*)
|
||
|
HeartVavle :int;
|
||
|
END_VAR
|
||
|
|
||
|
VAR
|
||
|
i :UINT;
|
||
|
Dev_Scan_temp :DWORD;
|
||
|
Dev_Error_Flag :BOOL;
|
||
|
Dev_Status_temp :DWORD;
|
||
|
|
||
|
SHR_D :SHR_DWORD;
|
||
|
SHR_L :SHL_DWORD;
|
||
|
ton1 :ton;
|
||
|
|
||
|
|
||
|
END_VAR
|
||
|
|
||
|
(*Automatically declared*)
|
||
|
VAR_EXTERNAL
|
||
|
END_VAR
|
||
|
(** {* **)
|
||
|
(** **)
|
||
|
(** ʱ �䣺20190905 **)
|
||
|
(** �� ����1.0 **)
|
||
|
(** �� �ߣ�Ҧ�� **)
|
||
|
(** �� �ƣ��豸ɨ�蹦�ܿ� **)
|
||
|
(** ˵ ��������ɨ��ģ������״̬����������ģ������ֵ�Ȳ��� **)
|
||
|
(** �� ע�� **)
|
||
|
(** �����飺�� **)
|
||
|
(** **)
|
||
|
(** *} **)
|
||
|
(** **)
|
||
|
(** {*������ʼ��*} **)
|
||
|
(** Dev_Error_Flag := 0; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD 0
|
||
|
ST Dev_Error_Flag
|
||
|
|
||
|
(** Dev_Status := 0; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD 0
|
||
|
ST Dev_Status
|
||
|
|
||
|
(** Dev_Total := 0; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD 0
|
||
|
ST Dev_Total
|
||
|
|
||
|
(** Dev_Error := 0; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD 0
|
||
|
ST Dev_Error
|
||
|
|
||
|
(** **)
|
||
|
(** for i:= 0 to 31 by 1 do **)
|
||
|
(* for - Init *)
|
||
|
LD 0
|
||
|
ST i
|
||
|
EQ 31
|
||
|
JMPC ODK_FOR_STMTS_000000000000001
|
||
|
|
||
|
(* for - Cond *)
|
||
|
ODK_FOR_000000000000001:
|
||
|
|
||
|
LD 0
|
||
|
GT 31
|
||
|
JMPC ODK_FOR_DOWN_000000000000001
|
||
|
|
||
|
LD 0
|
||
|
GT 1
|
||
|
JMPC ODK_END_FOR_000000000000001
|
||
|
|
||
|
LD 31
|
||
|
LT i
|
||
|
JMPC ODK_END_FOR_000000000000001
|
||
|
JMP ODK_FOR_STMTS_000000000000001
|
||
|
|
||
|
ODK_FOR_DOWN_000000000000001:
|
||
|
|
||
|
LD 31
|
||
|
GT i
|
||
|
JMPC ODK_END_FOR_000000000000001
|
||
|
|
||
|
LD 0
|
||
|
LT 1
|
||
|
JMPC ODK_END_FOR_000000000000001
|
||
|
|
||
|
(* for - Stmts *)
|
||
|
ODK_FOR_STMTS_000000000000001:
|
||
|
|
||
|
(** Dev_Scan_temp := 0; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD 0
|
||
|
ST Dev_Scan_temp
|
||
|
|
||
|
(** SHR_D(EN :=1 , IN := Dev_Scan_Hex , N := i | Dev_Scan_temp:= OUT); **)
|
||
|
(* call - Stmt *)
|
||
|
CAL SHR_D (
|
||
|
EN := 1,
|
||
|
IN := Dev_Scan_Hex,
|
||
|
N := i
|
||
|
|
|
||
|
Dev_Scan_temp := OUT
|
||
|
)
|
||
|
|
||
|
(** {*��������iλ��1��ַλ��16#1����AND�Ƚϣ�����Ϊ1������i��ַλ�豸��Ԥ�趨����Ҫ�ж���������*} **)
|
||
|
(** if (Dev_Scan_temp and 16#1) = 1 then **)
|
||
|
(* if - Cond *)
|
||
|
LD Dev_Scan_temp
|
||
|
AND 16#1
|
||
|
EQ 1
|
||
|
JMPCN ODK_SKIP_000000000000002_000000000000001
|
||
|
|
||
|
(* then - Stmts *)
|
||
|
|
||
|
(** Dev_Total := Dev_Total+1; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD Dev_Total
|
||
|
ADD 1
|
||
|
ST Dev_Total
|
||
|
|
||
|
(** {*i��ַλ�ж�ֵ�Ƿ�Ϊ16#4���ǵĻ�����״̬д��*} **)
|
||
|
(** if Dev_Array[i] = 16#4 then **)
|
||
|
(* if - Cond *)
|
||
|
LD Dev_Array[i]
|
||
|
EQ 16#4
|
||
|
JMPCN ODK_SKIP_000000000000003_000000000000001
|
||
|
|
||
|
(* then - Stmts *)
|
||
|
|
||
|
(** Dev_Status_temp := 1; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD 1
|
||
|
ST Dev_Status_temp
|
||
|
|
||
|
(** {*1��ַλ������iλ��������ֵOR�Ƚϣ���״̬��ֵ����Ӧi��ַλ*} **)
|
||
|
(** SHR_L(EN :=1 , IN := Dev_Status_temp, N := i | Dev_Status_temp := OUT); **)
|
||
|
(* call - Stmt *)
|
||
|
CAL SHR_L (
|
||
|
EN := 1,
|
||
|
IN := Dev_Status_temp,
|
||
|
N := i
|
||
|
|
|
||
|
Dev_Status_temp := OUT
|
||
|
)
|
||
|
|
||
|
(** Dev_Status :=Dev_Status_temp or Dev_Status ; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD Dev_Status_temp
|
||
|
OR Dev_Status
|
||
|
ST Dev_Status
|
||
|
|
||
|
JMP ODK_END_IF_000000000000003
|
||
|
|
||
|
(** else **)
|
||
|
(* else *)
|
||
|
ODK_SKIP_000000000000003_000000000000001:
|
||
|
|
||
|
(* else - Stmts *)
|
||
|
|
||
|
(** {*��һԤ�趨��ַ�豸�����ڣ����Ǵ���*} **)
|
||
|
(** Dev_Error_Flag := 1; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD 1
|
||
|
ST Dev_Error_Flag
|
||
|
|
||
|
(** Dev_Error:= Dev_Error+1; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD Dev_Error
|
||
|
ADD 1
|
||
|
ST Dev_Error
|
||
|
|
||
|
(** end_if; **)
|
||
|
(* if - End *)
|
||
|
ODK_END_IF_000000000000003:
|
||
|
|
||
|
JMP ODK_END_IF_000000000000002
|
||
|
|
||
|
(** end_if; **)
|
||
|
(* if - End *)
|
||
|
ODK_SKIP_000000000000002_000000000000001:
|
||
|
ODK_END_IF_000000000000002:
|
||
|
|
||
|
(* for - By *)
|
||
|
LD 1
|
||
|
ADD i
|
||
|
ST i
|
||
|
(** end_for; **)
|
||
|
|
||
|
JMP ODK_FOR_000000000000001
|
||
|
|
||
|
(* for - End *)
|
||
|
ODK_END_FOR_000000000000001:
|
||
|
|
||
|
(** **)
|
||
|
(** if Dev_Scan_Hex<>0 then **)
|
||
|
(* if - Cond *)
|
||
|
LD Dev_Scan_Hex
|
||
|
NE 0
|
||
|
JMPCN ODK_SKIP_000000000000004_000000000000001
|
||
|
|
||
|
(* then - Stmts *)
|
||
|
|
||
|
(** {*��Ԥ�趨ֵ�������£����������������豸����*} **)
|
||
|
(** Dev_Ready := not Dev_Error_Flag; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD Dev_Error_Flag
|
||
|
NOT
|
||
|
ST Dev_Ready
|
||
|
|
||
|
JMP ODK_END_IF_000000000000004
|
||
|
|
||
|
(** end_if; **)
|
||
|
(* if - End *)
|
||
|
ODK_SKIP_000000000000004_000000000000001:
|
||
|
ODK_END_IF_000000000000004:
|
||
|
|
||
|
(** if Dev_Total<>0 then **)
|
||
|
(* if - Cond *)
|
||
|
LD Dev_Total
|
||
|
NE 0
|
||
|
JMPCN ODK_SKIP_000000000000005_000000000000001
|
||
|
|
||
|
(* then - Stmts *)
|
||
|
|
||
|
(** {*�豸���߱�������*} **)
|
||
|
(** Dev_Ratio := 1.0-INT_TO_REAL(Dev_Error)/INT_TO_REAL(Dev_Total); **)
|
||
|
(* assign - Stmt *)
|
||
|
LD 1.0
|
||
|
SUB ( Dev_Error
|
||
|
INT_TO_REAL
|
||
|
DIV ( Dev_Total
|
||
|
INT_TO_REAL
|
||
|
)
|
||
|
)
|
||
|
ST Dev_Ratio
|
||
|
|
||
|
JMP ODK_END_IF_000000000000005
|
||
|
|
||
|
(** end_if; **)
|
||
|
(* if - End *)
|
||
|
ODK_SKIP_000000000000005_000000000000001:
|
||
|
ODK_END_IF_000000000000005:
|
||
|
|
||
|
(** **)
|
||
|
(** ton1(pt:=t#2s); **)
|
||
|
(* call - Stmt *)
|
||
|
CAL ton1 (
|
||
|
pt := t#2s
|
||
|
)
|
||
|
|
||
|
(** ton1.in:=not ton1.q; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD ton1.q
|
||
|
NOT
|
||
|
ST ton1.IN
|
||
|
|
||
|
(** if ton1.q=1 then **)
|
||
|
(* if - Cond *)
|
||
|
LD ton1.q
|
||
|
EQ 1
|
||
|
JMPCN ODK_SKIP_000000000000006_000000000000001
|
||
|
|
||
|
(* then - Stmts *)
|
||
|
|
||
|
(** HeartVavle :=HeartVavle+1; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD HeartVavle
|
||
|
ADD 1
|
||
|
ST HeartVavle
|
||
|
|
||
|
JMP ODK_END_IF_000000000000006
|
||
|
|
||
|
(** end_if; **)
|
||
|
(* if - End *)
|
||
|
ODK_SKIP_000000000000006_000000000000001:
|
||
|
ODK_END_IF_000000000000006:
|
||
|
|
||
|
(** if HeartVavle =99 then **)
|
||
|
(* if - Cond *)
|
||
|
LD HeartVavle
|
||
|
EQ 99
|
||
|
JMPCN ODK_SKIP_000000000000007_000000000000001
|
||
|
|
||
|
(* then - Stmts *)
|
||
|
|
||
|
(** HeartVavle:=0; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD 0
|
||
|
ST HeartVavle
|
||
|
|
||
|
JMP ODK_END_IF_000000000000007
|
||
|
|
||
|
(** end_if; **)
|
||
|
(* if - End *)
|
||
|
ODK_SKIP_000000000000007_000000000000001:
|
||
|
ODK_END_IF_000000000000007:
|
||
|
|
||
|
(** **)
|
||
|
(** **)
|
||
|
|
||
|
END_FUNCTION_BLOCK
|