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.
313 lines
6.4 KiB
313 lines
6.4 KiB
4 months ago
|
FUNCTION_BLOCK BS_SavePower
|
||
|
VAR_EXTERNAL
|
||
|
|
||
|
END_VAR
|
||
|
|
||
|
VAR_INPUT
|
||
|
Input_Type :byte; (*1周期,2变化,0手动 *)
|
||
|
Read_Iso :bool; (*系统读取隔离开关 *)
|
||
|
Set_Timer :time; (*周期、变化判断周期时间设定*)
|
||
|
Judge_Num :int; (*变化判断变量*)
|
||
|
Mem_Addr :word; (*M区保存起始地址*)
|
||
|
Flash_Addr :word; (*闪存区保存起始地址*)
|
||
|
Save_Len :word; (*保存地址长度*)
|
||
|
WriteNumRec_In :int; (*写入次数累计*)
|
||
|
END_VAR
|
||
|
|
||
|
VAR_OUTPUT
|
||
|
Write_Flag :bool; (*系统闪存写入成功标记*)
|
||
|
Read_Flag :bool; (*系统闪存读取成功标记*)
|
||
|
Write_Num :int; (*写入次数累计*)
|
||
|
END_VAR
|
||
|
|
||
|
VAR
|
||
|
BS_FlashRead : NW_FlashRead;
|
||
|
BS_FlashWrite : NW_FlashWrite;
|
||
|
SYS_FlashWrite :bool;
|
||
|
SYS_FlashRead :bool; (*系统闪存读取使能开关,无需动作,自动循环读取*)
|
||
|
Judge_Num_M :int; (*变化判断变量-中间变量*)
|
||
|
ton1 :ton;
|
||
|
ton1_in :bool;
|
||
|
ini :bool;
|
||
|
Write_Num_ini :int; (*写入次数累计初始值*)
|
||
|
Write_Numm :int; (*写入次数累计*)
|
||
|
END_VAR
|
||
|
|
||
|
(*Automatically declared*)
|
||
|
VAR_EXTERNAL
|
||
|
END_VAR
|
||
|
(** **)
|
||
|
(** {* **)
|
||
|
(** **)
|
||
|
(** ʱ �䣺20220210 **)
|
||
|
(** �� ����1.0 **)
|
||
|
(** �� �ߣ���ƽ **)
|
||
|
(** �� �ƣ��ϵ籣������ **)
|
||
|
(** ˵ ��������ʹ��������������д�룬��ѡ���ڣ��仯���ֶ� **)
|
||
|
(** �� ע���ⲿ��Ҫ����SYS_FlashWrite������ʹ���ֶ�д��ģʽ **)
|
||
|
(** �����飺 NW_FlashRead **)
|
||
|
(** NW_FlashWrite **)
|
||
|
(** **)
|
||
|
(** *} **)
|
||
|
(** **)
|
||
|
(** {*��ʼ�����ϵ�ǰ����д���ۼ�ֵ*} **)
|
||
|
(** if ini=0 then **)
|
||
|
(* if - Cond *)
|
||
|
LD ini
|
||
|
EQ 0
|
||
|
JMPCN ODK_SKIP_000000000000001_000000000000001
|
||
|
|
||
|
(* then - Stmts *)
|
||
|
|
||
|
(** Write_Num_ini:=WriteNumRec_In; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD WriteNumRec_In
|
||
|
ST Write_Num_ini
|
||
|
|
||
|
(** ini:=1; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD 1
|
||
|
ST ini
|
||
|
|
||
|
JMP ODK_END_IF_000000000000001
|
||
|
|
||
|
(** end_if; **)
|
||
|
(* if - End *)
|
||
|
ODK_SKIP_000000000000001_000000000000001:
|
||
|
ODK_END_IF_000000000000001:
|
||
|
|
||
|
(** {* д���ж� 1���ڣ�2�仯��0�ֶ�*} **)
|
||
|
(** case Input_Type of **)
|
||
|
(** 1: **)
|
||
|
(* case - Elm *)
|
||
|
ODK_SKIP_000000000000002_000000000000000:
|
||
|
|
||
|
(* case - Cond *)
|
||
|
LD Input_Type
|
||
|
EQ 1
|
||
|
JMPC ODK_CASE_000000000000002_000000000000001
|
||
|
|
||
|
JMP ODK_SKIP_000000000000002_000000000000001
|
||
|
|
||
|
(* case - Stmts *)
|
||
|
ODK_CASE_000000000000002_000000000000001:
|
||
|
|
||
|
(** ton1_in := not ton1.q; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD ton1.q
|
||
|
NOT
|
||
|
ST ton1_in
|
||
|
|
||
|
(** ton1( IN :=ton1_in ,PT :=Set_Timer ); **)
|
||
|
(* call - Stmt *)
|
||
|
CAL ton1 (
|
||
|
IN := ton1_in,
|
||
|
PT := Set_Timer
|
||
|
)
|
||
|
|
||
|
(** if ton1.q=1 then **)
|
||
|
(* if - Cond *)
|
||
|
LD ton1.q
|
||
|
EQ 1
|
||
|
JMPCN ODK_SKIP_000000000000003_000000000000001
|
||
|
|
||
|
(* then - Stmts *)
|
||
|
|
||
|
(** SYS_FlashWrite:=1 ; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD 1
|
||
|
ST SYS_FlashWrite
|
||
|
|
||
|
JMP ODK_END_IF_000000000000003
|
||
|
|
||
|
(** end_if; **)
|
||
|
(* if - End *)
|
||
|
ODK_SKIP_000000000000003_000000000000001:
|
||
|
ODK_END_IF_000000000000003:
|
||
|
|
||
|
JMP ODK_END_CASE_000000000000002
|
||
|
|
||
|
(** 2: **)
|
||
|
(* case - Elm *)
|
||
|
ODK_SKIP_000000000000002_000000000000001:
|
||
|
|
||
|
(* case - Cond *)
|
||
|
LD Input_Type
|
||
|
EQ 2
|
||
|
JMPC ODK_CASE_000000000000002_000000000000002
|
||
|
|
||
|
JMP ODK_SKIP_000000000000002_000000000000002
|
||
|
|
||
|
(* case - Stmts *)
|
||
|
ODK_CASE_000000000000002_000000000000002:
|
||
|
|
||
|
(** ton1_in := not ton1.q; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD ton1.q
|
||
|
NOT
|
||
|
ST ton1_in
|
||
|
|
||
|
(** ton1( IN :=ton1_in ,PT :=Set_Timer ); **)
|
||
|
(* call - Stmt *)
|
||
|
CAL ton1 (
|
||
|
IN := ton1_in,
|
||
|
PT := Set_Timer
|
||
|
)
|
||
|
|
||
|
(** if ton1.q=1 then **)
|
||
|
(* if - Cond *)
|
||
|
LD ton1.q
|
||
|
EQ 1
|
||
|
JMPCN ODK_SKIP_000000000000004_000000000000001
|
||
|
|
||
|
(* then - Stmts *)
|
||
|
|
||
|
(** if Judge_Num_M<>Judge_Num then **)
|
||
|
(* if - Cond *)
|
||
|
LD Judge_Num_M
|
||
|
NE Judge_Num
|
||
|
JMPCN ODK_SKIP_000000000000005_000000000000001
|
||
|
|
||
|
(* then - Stmts *)
|
||
|
|
||
|
(** SYS_FlashWrite:=1 ; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD 1
|
||
|
ST SYS_FlashWrite
|
||
|
|
||
|
(** Judge_Num_M:=Judge_Num; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD Judge_Num
|
||
|
ST Judge_Num_M
|
||
|
|
||
|
JMP ODK_END_IF_000000000000005
|
||
|
|
||
|
(** end_if; **)
|
||
|
(* if - End *)
|
||
|
ODK_SKIP_000000000000005_000000000000001:
|
||
|
ODK_END_IF_000000000000005:
|
||
|
|
||
|
JMP ODK_END_IF_000000000000004
|
||
|
|
||
|
(** end_if; **)
|
||
|
(* if - End *)
|
||
|
ODK_SKIP_000000000000004_000000000000001:
|
||
|
ODK_END_IF_000000000000004:
|
||
|
|
||
|
JMP ODK_END_CASE_000000000000002
|
||
|
|
||
|
(** **)
|
||
|
(** end_case; **)
|
||
|
(* case - End *)
|
||
|
ODK_SKIP_000000000000002_000000000000002:
|
||
|
ODK_END_CASE_000000000000002:
|
||
|
|
||
|
(** **)
|
||
|
(** {* ϵͳ�������ݶ�ȡ *} **)
|
||
|
(** if not SYS_FlashRead and Read_Iso=0 then **)
|
||
|
(* if - Cond *)
|
||
|
LD SYS_FlashRead
|
||
|
NOT
|
||
|
AND ( Read_Iso
|
||
|
EQ 0
|
||
|
)
|
||
|
JMPCN ODK_SKIP_000000000000006_000000000000001
|
||
|
|
||
|
(* then - Stmts *)
|
||
|
|
||
|
(** Read_Flag:=0; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD 0
|
||
|
ST Read_Flag
|
||
|
|
||
|
(** BS_FlashRead(EN:=1,W_MEM_ADDR:=MEM_ADDR,W_FLASH_ADDR:=FLASH_ADDR,W_LEN:=SAVE_LEN | Read_Flag:= ENO); **)
|
||
|
(* call - Stmt *)
|
||
|
CAL BS_FlashRead (
|
||
|
EN := 1,
|
||
|
W_MEM_ADDR := MEM_ADDR,
|
||
|
W_FLASH_ADDR := FLASH_ADDR,
|
||
|
W_LEN := SAVE_LEN
|
||
|
|
|
||
|
Read_Flag := ENO
|
||
|
)
|
||
|
|
||
|
(** if Read_Flag=1 then {*���ɹ�����*} **)
|
||
|
(* if - Cond *)
|
||
|
LD Read_Flag
|
||
|
EQ 1
|
||
|
JMPCN ODK_SKIP_000000000000007_000000000000001
|
||
|
|
||
|
(* then - Stmts *)
|
||
|
|
||
|
(** SYS_FlashRead:=1; {*���ɹ���ֹͣ��ȡ*} **)
|
||
|
(* assign - Stmt *)
|
||
|
LD 1
|
||
|
ST SYS_FlashRead
|
||
|
|
||
|
JMP ODK_END_IF_000000000000007
|
||
|
|
||
|
(** end_if; **)
|
||
|
(* if - End *)
|
||
|
ODK_SKIP_000000000000007_000000000000001:
|
||
|
ODK_END_IF_000000000000007:
|
||
|
|
||
|
JMP ODK_END_IF_000000000000006
|
||
|
|
||
|
(** end_if; **)
|
||
|
(* if - End *)
|
||
|
ODK_SKIP_000000000000006_000000000000001:
|
||
|
ODK_END_IF_000000000000006:
|
||
|
|
||
|
(** **)
|
||
|
(** {* ϵͳ��������д�� *} **)
|
||
|
(** if SYS_FlashWrite then **)
|
||
|
(* if - Cond *)
|
||
|
LD SYS_FlashWrite
|
||
|
JMPCN ODK_SKIP_000000000000008_000000000000001
|
||
|
|
||
|
(* then - Stmts *)
|
||
|
|
||
|
(** Write_Flag:=0; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD 0
|
||
|
ST Write_Flag
|
||
|
|
||
|
(** Write_Numm:=1+Write_Numm ; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD 1
|
||
|
ADD Write_Numm
|
||
|
ST Write_Numm
|
||
|
|
||
|
(** Write_Num:=Write_Numm+Write_Num_ini ; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD Write_Numm
|
||
|
ADD Write_Num_ini
|
||
|
ST Write_Num
|
||
|
|
||
|
(** BS_FlashWrite(EN:=1,W_MEM_ADDR:=MEM_ADDR,W_FLASH_ADDR:=FLASH_ADDR,W_LEN:=SAVE_LEN | Write_flag:= ENO); **)
|
||
|
(* call - Stmt *)
|
||
|
CAL BS_FlashWrite (
|
||
|
EN := 1,
|
||
|
W_MEM_ADDR := MEM_ADDR,
|
||
|
W_FLASH_ADDR := FLASH_ADDR,
|
||
|
W_LEN := SAVE_LEN
|
||
|
|
|
||
|
Write_Flag := ENO
|
||
|
)
|
||
|
|
||
|
(** SYS_FlashWrite:=0; **)
|
||
|
(* assign - Stmt *)
|
||
|
LD 0
|
||
|
ST SYS_FlashWrite
|
||
|
|
||
|
JMP ODK_END_IF_000000000000008
|
||
|
|
||
|
(** end_if; **)
|
||
|
(* if - End *)
|
||
|
ODK_SKIP_000000000000008_000000000000001:
|
||
|
ODK_END_IF_000000000000008:
|
||
|
|
||
|
(** **)
|
||
|
(** **)
|
||
|
|
||
|
END_FUNCTION_BLOCK
|