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

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