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
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
|