commit
320d7b79de
3096 changed files with 1222863 additions and 0 deletions
@ -0,0 +1,28 @@ |
|||
[INFORMATION] |
|||
CONFIG= |
|||
HARDWARE=EXC6000 |
|||
SECONDHARDWARE= |
|||
PACK_SOURCE=0 |
|||
TYPE=3 |
|||
OPERATINGNUMBER=0 |
|||
OPTIMIZE=2 |
|||
CONNECTION=127.0.0.1 |
|||
MAPFILE=1 |
|||
[IO_EXTERNALS] |
|||
FILE= |
|||
[TASKS] |
|||
FILE0=\MAIN |
|||
COUNT=1 |
|||
[TASK_FILE0] |
|||
NETDEP=0 |
|||
NAME= |
|||
TYPE=CYCLIC |
|||
INTERRUPT_NAME= |
|||
PRIORITY=1 |
|||
TIME=1 |
|||
NR=0 |
|||
OPTIMIZE=3 |
|||
[GLOBAL] |
|||
COUNT=0 |
|||
[DIRECT_GLOBAL] |
|||
COUNT=0 |
@ -0,0 +1,9 @@ |
|||
FUNCTION BF_IOM0801U_E5 : INT |
|||
|
|||
VAR_INPUT |
|||
temp_in : int ; |
|||
temp_last : int ; |
|||
END_VAR |
|||
|
|||
|
|||
END_FUNCTION |
@ -0,0 +1,9 @@ |
|||
FUNCTION BS_ASCII2INT : INT |
|||
|
|||
VAR_INPUT |
|||
ASCII1 : BYTE ; |
|||
ASCII2 : BYTE ; |
|||
END_VAR |
|||
|
|||
|
|||
END_FUNCTION |
@ -0,0 +1,16 @@ |
|||
FUNCTION_BLOCK BS_AVERAGE |
|||
|
|||
|
|||
VAR_INPUT |
|||
Input : INT ; |
|||
Num : INT := 30 ; |
|||
Delay : Time := t#100ms ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
Output : INT ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,14 @@ |
|||
FUNCTION_BLOCK BS_CMFCU |
|||
|
|||
|
|||
VAR_INPUT |
|||
FAU_STRUCT_IN : FAU_IN ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
FAU_STRUCT_OUT : FAU_OUT ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,22 @@ |
|||
FUNCTION_BLOCK BS_DelayGroupVavle |
|||
|
|||
|
|||
VAR_INPUT |
|||
LOCK : INT := 0 ; |
|||
BOOL_GroupSet : BOOL ; |
|||
INT_GroupSet : INT ; |
|||
REAL_GroupSet : REAL ; |
|||
REAL_IN : ARRAY [ 0 .. 10 ] OF REAL ; |
|||
INT_IN : ARRAY [ 0 .. 10 ] OF INT ; |
|||
BOOL_IN : ARRAY [ 0 .. 10 ] OF BOOL ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
REAL_OUT : ARRAY [ 0 .. 10 ] OF REAL ; |
|||
INT_OUT : ARRAY [ 0 .. 10 ] OF INT ; |
|||
BOOL_OUT : ARRAY [ 0 .. 10 ] OF BOOL ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,76 @@ |
|||
FUNCTION_BLOCK BS_DelayRemoteVavle |
|||
|
|||
|
|||
VAR_INPUT |
|||
Lock : INT ; |
|||
REAL_RemoteSet : REAL ; |
|||
REAL_IN01 : REAL ; |
|||
REAL_IN02 : REAL ; |
|||
REAL_IN03 : REAL ; |
|||
REAL_IN04 : REAL ; |
|||
REAL_IN05 : REAL ; |
|||
REAL_IN06 : REAL ; |
|||
REAL_IN07 : REAL ; |
|||
REAL_IN08 : REAL ; |
|||
REAL_IN09 : REAL ; |
|||
REAL_IN10 : REAL ; |
|||
BOOL_RemoteSet : BOOL ; |
|||
BOOL_IN01 : BOOL ; |
|||
BOOL_IN02 : BOOL ; |
|||
BOOL_IN03 : BOOL ; |
|||
BOOL_IN04 : BOOL ; |
|||
BOOL_IN05 : BOOL ; |
|||
BOOL_IN06 : BOOL ; |
|||
BOOL_IN07 : BOOL ; |
|||
BOOL_IN08 : BOOL ; |
|||
BOOL_IN09 : BOOL ; |
|||
BOOL_IN10 : BOOL ; |
|||
INT_RemoteSet : INT ; |
|||
INT_IN01 : INT ; |
|||
INT_IN02 : INT ; |
|||
INT_IN03 : INT ; |
|||
INT_IN04 : INT ; |
|||
INT_IN05 : INT ; |
|||
INT_IN06 : INT ; |
|||
INT_IN07 : INT ; |
|||
INT_IN08 : INT ; |
|||
INT_IN09 : INT ; |
|||
INT_IN10 : INT ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
REAL_OUT01 : REAL ; |
|||
REAL_OUT02 : REAL ; |
|||
REAL_OUT03 : REAL ; |
|||
REAL_OUT04 : REAL ; |
|||
REAL_OUT05 : REAL ; |
|||
REAL_OUT06 : REAL ; |
|||
REAL_OUT07 : REAL ; |
|||
REAL_OUT08 : REAL ; |
|||
REAL_OUT09 : REAL ; |
|||
REAL_OUT10 : REAL ; |
|||
BOOL_OUT01 : BOOL ; |
|||
BOOL_OUT02 : BOOL ; |
|||
BOOL_OUT03 : BOOL ; |
|||
BOOL_OUT04 : BOOL ; |
|||
BOOL_OUT05 : BOOL ; |
|||
BOOL_OUT06 : BOOL ; |
|||
BOOL_OUT07 : BOOL ; |
|||
BOOL_OUT08 : BOOL ; |
|||
BOOL_OUT09 : BOOL ; |
|||
BOOL_OUT10 : BOOL ; |
|||
INT_OUT01 : INT ; |
|||
INT_OUT02 : INT ; |
|||
INT_OUT03 : INT ; |
|||
INT_OUT04 : INT ; |
|||
INT_OUT05 : INT ; |
|||
INT_OUT06 : INT ; |
|||
INT_OUT07 : INT ; |
|||
INT_OUT08 : INT ; |
|||
INT_OUT09 : INT ; |
|||
INT_OUT10 : INT ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,13 @@ |
|||
FUNCTION_BLOCK BS_DevHeart |
|||
|
|||
|
|||
VAR_INPUT |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
HeartVavle : int ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,14 @@ |
|||
FUNCTION_BLOCK BS_DevHeartCheck |
|||
|
|||
|
|||
VAR_INPUT |
|||
DHV : INT ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
DHR : BOOL ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,20 @@ |
|||
FUNCTION_BLOCK BS_DevScan |
|||
|
|||
|
|||
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 ; |
|||
Dev_Total : INT ; |
|||
Dev_Error : INT ; |
|||
HeartVavle : int ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,19 @@ |
|||
FUNCTION_BLOCK BS_EVC |
|||
|
|||
|
|||
VAR_INPUT |
|||
RUN : BOOL ; |
|||
SET : REAL ; |
|||
FB : REAL ; |
|||
Dead_Band : REAL := 0.5 ; |
|||
Delay : TIME := t#30s ; |
|||
SW : INT ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
EVC : BOOL ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,18 @@ |
|||
FUNCTION_BLOCK BS_FEC |
|||
|
|||
|
|||
VAR_INPUT |
|||
RUN : BOOL ; |
|||
SET : REAL ; |
|||
FB : REAL ; |
|||
Dead_Band : REAL := 10.0 ; |
|||
Delay : TIME := t#300s ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
DevC : BOOL ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,15 @@ |
|||
FUNCTION_BLOCK BS_Feedback |
|||
|
|||
|
|||
VAR_INPUT |
|||
Control : BOOL ; |
|||
Run : BOOL ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
ALARM : BOOL ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,16 @@ |
|||
FUNCTION_BLOCK BS_GETCRC16 |
|||
|
|||
|
|||
VAR_INPUT |
|||
CRC_IN : array [ 0 .. 200 ] of byte ; |
|||
CRC_LEN : INT ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
CRC16H : byte ; |
|||
CRC16L : byte ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,19 @@ |
|||
FUNCTION_BLOCK BS_GroupVavle |
|||
|
|||
|
|||
VAR_INPUT |
|||
LOCK : INT := 0 ; |
|||
BOOL_GroupSet : BOOL ; |
|||
INT_GroupSet : INT ; |
|||
REAL_GroupSet : REAL ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
REAL_OUT : ARRAY [ 0 .. 10 ] OF REAL ; |
|||
INT_OUT : ARRAY [ 0 .. 10 ] OF INT ; |
|||
BOOL_OUT : ARRAY [ 0 .. 10 ] OF BOOL ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,19 @@ |
|||
FUNCTION_BLOCK BS_GroupVavle50 |
|||
|
|||
|
|||
VAR_INPUT |
|||
LOCK : INT := 0 ; |
|||
BOOL_GroupSet : BOOL ; |
|||
INT_GroupSet : INT ; |
|||
REAL_GroupSet : REAL ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
REAL_OUT : ARRAY [ 0 .. 50 ] OF REAL ; |
|||
INT_OUT : ARRAY [ 0 .. 50 ] OF INT ; |
|||
BOOL_OUT : ARRAY [ 0 .. 50 ] OF BOOL ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,22 @@ |
|||
FUNCTION_BLOCK BS_ModbusCom |
|||
|
|||
|
|||
VAR_INPUT |
|||
SerialCom : byte ; |
|||
NetSend : array [ 0 .. 64 ] of NetSendConfig ; |
|||
NetSendDelay : time ; |
|||
ComSend : array [ 0 .. 64 ] of ComSendConfig ; |
|||
ComSendDelay : time ; |
|||
ComRecvDelay : time ; |
|||
ComAnalysisDelay : time ; |
|||
DataReadLength : int ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
DataStr : array [ 0 .. 128 ] of byte ; |
|||
DataRead : array [ 0 .. 128 ] of DataFormat ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,25 @@ |
|||
FUNCTION_BLOCK BS_PID |
|||
|
|||
|
|||
VAR_INPUT |
|||
RUN : BOOL ; |
|||
STOP_D : BOOL ; |
|||
STOP_I : BOOL ; |
|||
SET : REAL ; |
|||
FB : REAL ; |
|||
Kfb : REAL := 1.0 ; |
|||
Kp : REAL := 30.0 ; |
|||
Ti : REAL := 150.0 ; |
|||
Td : REAL ; |
|||
Dead_Band : REAL ; |
|||
Ymax : REAL ; |
|||
Ymin : REAL ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
OUT : REAL ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,315 @@ |
|||
FUNCTION_BLOCK BS_RemoteVavle |
|||
|
|||
|
|||
VAR_INPUT |
|||
REAL_RemoteSet : REAL ; |
|||
REAL_IN01 : REAL ; |
|||
REAL_IN02 : REAL ; |
|||
REAL_IN03 : REAL ; |
|||
REAL_IN04 : REAL ; |
|||
REAL_IN05 : REAL ; |
|||
REAL_IN06 : REAL ; |
|||
REAL_IN07 : REAL ; |
|||
REAL_IN08 : REAL ; |
|||
REAL_IN09 : REAL ; |
|||
REAL_IN10 : REAL ; |
|||
REAL_IN11 : REAL ; |
|||
REAL_IN12 : REAL ; |
|||
REAL_IN13 : REAL ; |
|||
REAL_IN14 : REAL ; |
|||
REAL_IN15 : REAL ; |
|||
REAL_IN16 : REAL ; |
|||
REAL_IN17 : REAL ; |
|||
REAL_IN18 : REAL ; |
|||
REAL_IN19 : REAL ; |
|||
REAL_IN20 : REAL ; |
|||
REAL_IN21 : REAL ; |
|||
REAL_IN22 : REAL ; |
|||
REAL_IN23 : REAL ; |
|||
REAL_IN24 : REAL ; |
|||
REAL_IN25 : REAL ; |
|||
REAL_IN26 : REAL ; |
|||
REAL_IN27 : REAL ; |
|||
REAL_IN28 : REAL ; |
|||
REAL_IN29 : REAL ; |
|||
REAL_IN30 : REAL ; |
|||
REAL_IN31 : REAL ; |
|||
REAL_IN32 : REAL ; |
|||
REAL_IN33 : REAL ; |
|||
REAL_IN34 : REAL ; |
|||
REAL_IN35 : REAL ; |
|||
REAL_IN36 : REAL ; |
|||
REAL_IN37 : REAL ; |
|||
REAL_IN38 : REAL ; |
|||
REAL_IN39 : REAL ; |
|||
REAL_IN40 : REAL ; |
|||
REAL_IN41 : REAL ; |
|||
REAL_IN42 : REAL ; |
|||
REAL_IN43 : REAL ; |
|||
REAL_IN44 : REAL ; |
|||
REAL_IN45 : REAL ; |
|||
REAL_IN46 : REAL ; |
|||
REAL_IN47 : REAL ; |
|||
REAL_IN48 : REAL ; |
|||
REAL_IN49 : REAL ; |
|||
REAL_IN50 : REAL ; |
|||
BOOL_RemoteSet : BOOL ; |
|||
BOOL_IN01 : BOOL ; |
|||
BOOL_IN02 : BOOL ; |
|||
BOOL_IN03 : BOOL ; |
|||
BOOL_IN04 : BOOL ; |
|||
BOOL_IN05 : BOOL ; |
|||
BOOL_IN06 : BOOL ; |
|||
BOOL_IN07 : BOOL ; |
|||
BOOL_IN08 : BOOL ; |
|||
BOOL_IN09 : BOOL ; |
|||
BOOL_IN10 : BOOL ; |
|||
BOOL_IN11 : BOOL ; |
|||
BOOL_IN12 : BOOL ; |
|||
BOOL_IN13 : BOOL ; |
|||
BOOL_IN14 : BOOL ; |
|||
BOOL_IN15 : BOOL ; |
|||
BOOL_IN16 : BOOL ; |
|||
BOOL_IN17 : BOOL ; |
|||
BOOL_IN18 : BOOL ; |
|||
BOOL_IN19 : BOOL ; |
|||
BOOL_IN20 : BOOL ; |
|||
BOOL_IN21 : BOOL ; |
|||
BOOL_IN22 : BOOL ; |
|||
BOOL_IN23 : BOOL ; |
|||
BOOL_IN24 : BOOL ; |
|||
BOOL_IN25 : BOOL ; |
|||
BOOL_IN26 : BOOL ; |
|||
BOOL_IN27 : BOOL ; |
|||
BOOL_IN28 : BOOL ; |
|||
BOOL_IN29 : BOOL ; |
|||
BOOL_IN30 : BOOL ; |
|||
BOOL_IN31 : BOOL ; |
|||
BOOL_IN32 : BOOL ; |
|||
BOOL_IN33 : BOOL ; |
|||
BOOL_IN34 : BOOL ; |
|||
BOOL_IN35 : BOOL ; |
|||
BOOL_IN36 : BOOL ; |
|||
BOOL_IN37 : BOOL ; |
|||
BOOL_IN38 : BOOL ; |
|||
BOOL_IN39 : BOOL ; |
|||
BOOL_IN40 : BOOL ; |
|||
BOOL_IN41 : BOOL ; |
|||
BOOL_IN42 : BOOL ; |
|||
BOOL_IN43 : BOOL ; |
|||
BOOL_IN44 : BOOL ; |
|||
BOOL_IN45 : BOOL ; |
|||
BOOL_IN46 : BOOL ; |
|||
BOOL_IN47 : BOOL ; |
|||
BOOL_IN48 : BOOL ; |
|||
BOOL_IN49 : BOOL ; |
|||
BOOL_IN50 : BOOL ; |
|||
INT_RemoteSet : INT ; |
|||
INT_IN01 : INT ; |
|||
INT_IN02 : INT ; |
|||
INT_IN03 : INT ; |
|||
INT_IN04 : INT ; |
|||
INT_IN05 : INT ; |
|||
INT_IN06 : INT ; |
|||
INT_IN07 : INT ; |
|||
INT_IN08 : INT ; |
|||
INT_IN09 : INT ; |
|||
INT_IN10 : INT ; |
|||
INT_IN11 : INT ; |
|||
INT_IN12 : INT ; |
|||
INT_IN13 : INT ; |
|||
INT_IN14 : INT ; |
|||
INT_IN15 : INT ; |
|||
INT_IN16 : INT ; |
|||
INT_IN17 : INT ; |
|||
INT_IN18 : INT ; |
|||
INT_IN19 : INT ; |
|||
INT_IN20 : INT ; |
|||
INT_IN21 : INT ; |
|||
INT_IN22 : INT ; |
|||
INT_IN23 : INT ; |
|||
INT_IN24 : INT ; |
|||
INT_IN25 : INT ; |
|||
INT_IN26 : INT ; |
|||
INT_IN27 : INT ; |
|||
INT_IN28 : INT ; |
|||
INT_IN29 : INT ; |
|||
INT_IN30 : INT ; |
|||
INT_IN31 : INT ; |
|||
INT_IN32 : INT ; |
|||
INT_IN33 : INT ; |
|||
INT_IN34 : INT ; |
|||
INT_IN35 : INT ; |
|||
INT_IN36 : INT ; |
|||
INT_IN37 : INT ; |
|||
INT_IN38 : INT ; |
|||
INT_IN39 : INT ; |
|||
INT_IN40 : INT ; |
|||
INT_IN41 : INT ; |
|||
INT_IN42 : INT ; |
|||
INT_IN43 : INT ; |
|||
INT_IN44 : INT ; |
|||
INT_IN45 : INT ; |
|||
INT_IN46 : INT ; |
|||
INT_IN47 : INT ; |
|||
INT_IN48 : INT ; |
|||
INT_IN49 : INT ; |
|||
INT_IN50 : INT ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
REAL_OUT01 : REAL ; |
|||
REAL_OUT02 : REAL ; |
|||
REAL_OUT03 : REAL ; |
|||
REAL_OUT04 : REAL ; |
|||
REAL_OUT05 : REAL ; |
|||
REAL_OUT06 : REAL ; |
|||
REAL_OUT07 : REAL ; |
|||
REAL_OUT08 : REAL ; |
|||
REAL_OUT09 : REAL ; |
|||
REAL_OUT10 : REAL ; |
|||
REAL_OUT11 : REAL ; |
|||
REAL_OUT12 : REAL ; |
|||
REAL_OUT13 : REAL ; |
|||
REAL_OUT14 : REAL ; |
|||
REAL_OUT15 : REAL ; |
|||
REAL_OUT16 : REAL ; |
|||
REAL_OUT17 : REAL ; |
|||
REAL_OUT18 : REAL ; |
|||
REAL_OUT19 : REAL ; |
|||
REAL_OUT20 : REAL ; |
|||
REAL_OUT21 : REAL ; |
|||
REAL_OUT22 : REAL ; |
|||
REAL_OUT23 : REAL ; |
|||
REAL_OUT24 : REAL ; |
|||
REAL_OUT25 : REAL ; |
|||
REAL_OUT26 : REAL ; |
|||
REAL_OUT27 : REAL ; |
|||
REAL_OUT28 : REAL ; |
|||
REAL_OUT29 : REAL ; |
|||
REAL_OUT30 : REAL ; |
|||
REAL_OUT31 : REAL ; |
|||
REAL_OUT32 : REAL ; |
|||
REAL_OUT33 : REAL ; |
|||
REAL_OUT34 : REAL ; |
|||
REAL_OUT35 : REAL ; |
|||
REAL_OUT36 : REAL ; |
|||
REAL_OUT37 : REAL ; |
|||
REAL_OUT38 : REAL ; |
|||
REAL_OUT39 : REAL ; |
|||
REAL_OUT40 : REAL ; |
|||
REAL_OUT41 : REAL ; |
|||
REAL_OUT42 : REAL ; |
|||
REAL_OUT43 : REAL ; |
|||
REAL_OUT44 : REAL ; |
|||
REAL_OUT45 : REAL ; |
|||
REAL_OUT46 : REAL ; |
|||
REAL_OUT47 : REAL ; |
|||
REAL_OUT48 : REAL ; |
|||
REAL_OUT49 : REAL ; |
|||
REAL_OUT50 : REAL ; |
|||
BOOL_OUT01 : BOOL ; |
|||
BOOL_OUT02 : BOOL ; |
|||
BOOL_OUT03 : BOOL ; |
|||
BOOL_OUT04 : BOOL ; |
|||
BOOL_OUT05 : BOOL ; |
|||
BOOL_OUT06 : BOOL ; |
|||
BOOL_OUT07 : BOOL ; |
|||
BOOL_OUT08 : BOOL ; |
|||
BOOL_OUT09 : BOOL ; |
|||
BOOL_OUT10 : BOOL ; |
|||
BOOL_OUT11 : BOOL ; |
|||
BOOL_OUT12 : BOOL ; |
|||
BOOL_OUT13 : BOOL ; |
|||
BOOL_OUT14 : BOOL ; |
|||
BOOL_OUT15 : BOOL ; |
|||
BOOL_OUT16 : BOOL ; |
|||
BOOL_OUT17 : BOOL ; |
|||
BOOL_OUT18 : BOOL ; |
|||
BOOL_OUT19 : BOOL ; |
|||
BOOL_OUT20 : BOOL ; |
|||
BOOL_OUT21 : BOOL ; |
|||
BOOL_OUT22 : BOOL ; |
|||
BOOL_OUT23 : BOOL ; |
|||
BOOL_OUT24 : BOOL ; |
|||
BOOL_OUT25 : BOOL ; |
|||
BOOL_OUT26 : BOOL ; |
|||
BOOL_OUT27 : BOOL ; |
|||
BOOL_OUT28 : BOOL ; |
|||
BOOL_OUT29 : BOOL ; |
|||
BOOL_OUT30 : BOOL ; |
|||
BOOL_OUT31 : BOOL ; |
|||
BOOL_OUT32 : BOOL ; |
|||
BOOL_OUT33 : BOOL ; |
|||
BOOL_OUT34 : BOOL ; |
|||
BOOL_OUT35 : BOOL ; |
|||
BOOL_OUT36 : BOOL ; |
|||
BOOL_OUT37 : BOOL ; |
|||
BOOL_OUT38 : BOOL ; |
|||
BOOL_OUT39 : BOOL ; |
|||
BOOL_OUT40 : BOOL ; |
|||
BOOL_OUT41 : BOOL ; |
|||
BOOL_OUT42 : BOOL ; |
|||
BOOL_OUT43 : BOOL ; |
|||
BOOL_OUT44 : BOOL ; |
|||
BOOL_OUT45 : BOOL ; |
|||
BOOL_OUT46 : BOOL ; |
|||
BOOL_OUT47 : BOOL ; |
|||
BOOL_OUT48 : BOOL ; |
|||
BOOL_OUT49 : BOOL ; |
|||
BOOL_OUT50 : BOOL ; |
|||
INT_OUT01 : INT ; |
|||
INT_OUT02 : INT ; |
|||
INT_OUT03 : INT ; |
|||
INT_OUT04 : INT ; |
|||
INT_OUT05 : INT ; |
|||
INT_OUT06 : INT ; |
|||
INT_OUT07 : INT ; |
|||
INT_OUT08 : INT ; |
|||
INT_OUT09 : INT ; |
|||
INT_OUT10 : INT ; |
|||
INT_OUT11 : INT ; |
|||
INT_OUT12 : INT ; |
|||
INT_OUT13 : INT ; |
|||
INT_OUT14 : INT ; |
|||
INT_OUT15 : INT ; |
|||
INT_OUT16 : INT ; |
|||
INT_OUT17 : INT ; |
|||
INT_OUT18 : INT ; |
|||
INT_OUT19 : INT ; |
|||
INT_OUT20 : INT ; |
|||
INT_OUT21 : INT ; |
|||
INT_OUT22 : INT ; |
|||
INT_OUT23 : INT ; |
|||
INT_OUT24 : INT ; |
|||
INT_OUT25 : INT ; |
|||
INT_OUT26 : INT ; |
|||
INT_OUT27 : INT ; |
|||
INT_OUT28 : INT ; |
|||
INT_OUT29 : INT ; |
|||
INT_OUT30 : INT ; |
|||
INT_OUT31 : INT ; |
|||
INT_OUT32 : INT ; |
|||
INT_OUT33 : INT ; |
|||
INT_OUT34 : INT ; |
|||
INT_OUT35 : INT ; |
|||
INT_OUT36 : INT ; |
|||
INT_OUT37 : INT ; |
|||
INT_OUT38 : INT ; |
|||
INT_OUT39 : INT ; |
|||
INT_OUT40 : INT ; |
|||
INT_OUT41 : INT ; |
|||
INT_OUT42 : INT ; |
|||
INT_OUT43 : INT ; |
|||
INT_OUT44 : INT ; |
|||
INT_OUT45 : INT ; |
|||
INT_OUT46 : INT ; |
|||
INT_OUT47 : INT ; |
|||
INT_OUT48 : INT ; |
|||
INT_OUT49 : INT ; |
|||
INT_OUT50 : INT ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,17 @@ |
|||
FUNCTION_BLOCK BS_RunTime |
|||
|
|||
|
|||
VAR_INPUT |
|||
Run : BOOL ; |
|||
RunTimeSet : REAL ; |
|||
RunTimeRST : BOOL ; |
|||
RunTimeRec_In : REAL ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
RunTime : REAL ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,23 @@ |
|||
FUNCTION_BLOCK BS_SavePower |
|||
|
|||
|
|||
VAR_INPUT |
|||
Input_Type : byte ; |
|||
Read_Iso : bool ; |
|||
Set_Timer : time ; |
|||
Judge_Num : int ; |
|||
Mem_Addr : word ; |
|||
Flash_Addr : word ; |
|||
Save_Len : word ; |
|||
WriteNumRec_In : int ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
Write_Flag : bool ; |
|||
Read_Flag : bool ; |
|||
Write_Num : int ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,13 @@ |
|||
FUNCTION BS_Scale : REAL |
|||
|
|||
VAR_INPUT |
|||
Input : INT ; |
|||
Input_Type : BYTE ; |
|||
PVL : INT ; |
|||
PVH : INT ; |
|||
ROffset : INT ; |
|||
Offset : REAL ; |
|||
END_VAR |
|||
|
|||
|
|||
END_FUNCTION |
@ -0,0 +1,14 @@ |
|||
FUNCTION BS_Scale2 : REAL |
|||
|
|||
VAR_INPUT |
|||
Input : INT ; |
|||
Input_Type : BYTE ; |
|||
PVL : INT ; |
|||
PVH : INT ; |
|||
ROffset : INT ; |
|||
Offset : REAL ; |
|||
Filter : BOOL ; |
|||
END_VAR |
|||
|
|||
|
|||
END_FUNCTION |
@ -0,0 +1,36 @@ |
|||
FUNCTION_BLOCK BS_Schedule |
|||
|
|||
|
|||
VAR_INPUT |
|||
W1SCH_str : STRING ; |
|||
W2SCH_str : STRING ; |
|||
W3SCH_str : STRING ; |
|||
W4SCH_str : STRING ; |
|||
W5SCH_str : STRING ; |
|||
W6SCH_str : STRING ; |
|||
W7SCH_str : STRING ; |
|||
W1SCH : ARRAY [ 1 .. 4 ] OF TimeConfig ; |
|||
W2SCH : ARRAY [ 1 .. 4 ] OF TimeConfig ; |
|||
W3SCH : ARRAY [ 1 .. 4 ] OF TimeConfig ; |
|||
W4SCH : ARRAY [ 1 .. 4 ] OF TimeConfig ; |
|||
W5SCH : ARRAY [ 1 .. 4 ] OF TimeConfig ; |
|||
W6SCH : ARRAY [ 1 .. 4 ] OF TimeConfig ; |
|||
W7SCH : ARRAY [ 1 .. 4 ] OF TimeConfig ; |
|||
EnableNum : INT ; |
|||
Enable : BOOL ; |
|||
Delay : INT ; |
|||
Mode : INT ; |
|||
InputMode : INT ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
TimeSw1 : BOOL ; |
|||
TimeSw2 : BOOL ; |
|||
TimeSw3 : BOOL ; |
|||
TimeSw4 : BOOL ; |
|||
OUT_Z : BOOL ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,30 @@ |
|||
FUNCTION_BLOCK BS_SyncVavle |
|||
|
|||
|
|||
VAR_INPUT |
|||
REAL_IN1 : REAL ; |
|||
REAL_IN2 : REAL ; |
|||
REAL_IN3 : REAL ; |
|||
BOOL_IN1 : BOOL ; |
|||
BOOL_IN2 : BOOL ; |
|||
BOOL_IN3 : BOOL ; |
|||
INT_IN1 : INT ; |
|||
INT_IN2 : INT ; |
|||
INT_IN3 : INT ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
REAL_OUT1 : REAL ; |
|||
REAL_OUT2 : REAL ; |
|||
REAL_OUT3 : REAL ; |
|||
BOOL_OUT1 : BOOL ; |
|||
BOOL_OUT2 : BOOL ; |
|||
BOOL_OUT3 : BOOL ; |
|||
INT_OUT1 : INT ; |
|||
INT_OUT2 : INT ; |
|||
INT_OUT3 : INT ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,16 @@ |
|||
FUNCTION_BLOCK GETCRC16 |
|||
|
|||
|
|||
VAR_INPUT |
|||
CRC_ADR : dword ; |
|||
CRC_LEN : word ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
CRC16H : byte ; |
|||
CRC16L : byte ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,14 @@ |
|||
FUNCTION_BLOCK IJ_AHU |
|||
|
|||
|
|||
VAR_INPUT |
|||
AHU_STRUCT_IN : AHU_IN ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
AHU_STRUCT_OUT : AHU_OUT ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,14 @@ |
|||
FUNCTION_BLOCK IJ_DAHU |
|||
|
|||
|
|||
VAR_INPUT |
|||
DAHU_STRUCT_IN : DAHU_IN ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
DAHU_STRUCT_OUT : DAHU_OUT ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,14 @@ |
|||
FUNCTION_BLOCK IJ_DAHUPID |
|||
|
|||
|
|||
VAR_INPUT |
|||
DAHU_STRUCT_IN : DAHU_IN ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
DAHU_STRUCT_OUT : DAHU_OUT ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,14 @@ |
|||
FUNCTION_BLOCK IJ_DAHUW |
|||
|
|||
|
|||
VAR_INPUT |
|||
DAHUW_STRUCT_IN : DAHUW_IN ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
DAHUW_STRUCT_OUT : DAHUW_OUT ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,14 @@ |
|||
FUNCTION_BLOCK IJDAHU |
|||
|
|||
|
|||
VAR_INPUT |
|||
DAHU_STRUCT_IN : DAHU_IN ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
DAHU_STRUCT_OUT : DAHU_OUT ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,9 @@ |
|||
FUNCTION IJ_DT : BOOL |
|||
|
|||
VAR_INPUT |
|||
dt_up : BOOL ; |
|||
dt_down : BOOL ; |
|||
END_VAR |
|||
|
|||
|
|||
END_FUNCTION |
@ -0,0 +1,14 @@ |
|||
FUNCTION_BLOCK IJ_EAF |
|||
|
|||
|
|||
VAR_INPUT |
|||
EAF_STRUCT_IN : EAF_IN ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
EAF_STRUCT_OUT : EAF_OUT ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,23 @@ |
|||
FUNCTION_BLOCK IJ_EAFGroup |
|||
|
|||
|
|||
VAR_INPUT |
|||
Enable : bool ; |
|||
LinkageValue : ARRAY [ 0 .. 10 ] of real ; |
|||
Dead_Band : real := 10.0 ; |
|||
MaxRange : real := 1000.0 ; |
|||
MinRange : real := 10.0 ; |
|||
LinkageSet : real ; |
|||
HoldDelay : time := t#60s ; |
|||
EnableNum : INT ; |
|||
SCH_str : STRING ; |
|||
ALLDAY : BOOL ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
LinkageOut : ARRAY [ 0 .. 10 ] of bool ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,19 @@ |
|||
FUNCTION_BLOCK IJ_EVC |
|||
|
|||
|
|||
VAR_INPUT |
|||
RUN : BOOL ; |
|||
SET : REAL ; |
|||
FB : REAL ; |
|||
Dead_Band : REAL := 0.5 ; |
|||
Delay : TIME := t#30s ; |
|||
SW : INT ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
EVC : BOOL ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,14 @@ |
|||
FUNCTION_BLOCK IJ_FAU |
|||
|
|||
|
|||
VAR_INPUT |
|||
FAU_STRUCT_IN : FAU_IN ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
FAU_STRUCT_OUT : FAU_OUT ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,14 @@ |
|||
FUNCTION_BLOCK IJ_FCU |
|||
|
|||
|
|||
VAR_INPUT |
|||
FCU_STRUCT_IN : FCU_IN ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
FCU_STRUCT_OUT : FCU_OUT ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,17 @@ |
|||
FUNCTION_BLOCK IJ_LCB0610 |
|||
|
|||
|
|||
VAR_INPUT |
|||
LOCK : int := 0 ; |
|||
LightGroup_Input : array [ 0 .. 6 , 0 .. 10 ] of bool ; |
|||
CM : bool ; |
|||
Delay : time := t#50ms ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
LightGroup_Output : array [ 0 .. 6 , 0 .. 10 ] of bool ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,17 @@ |
|||
FUNCTION_BLOCK IJ_LCB1030 |
|||
|
|||
|
|||
VAR_INPUT |
|||
LOCK : int := 0 ; |
|||
LightGroup_Input : array [ 0 .. 10 , 0 .. 30 ] of bool ; |
|||
CM : bool ; |
|||
Delay : time := t#50ms ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
LightGroup_Output : array [ 0 .. 10 , 0 .. 30 ] of bool ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,34 @@ |
|||
FUNCTION_BLOCK IJ_LSyncControl |
|||
|
|||
|
|||
VAR_INPUT |
|||
REAL_IN0 : REAL ; |
|||
REAL_IN1 : REAL ; |
|||
REAL_IN2 : REAL ; |
|||
BOOL_IN0 : BOOL ; |
|||
BOOL_IN1 : BOOL ; |
|||
BOOL_IN2 : BOOL ; |
|||
BOOL_IN3 : BOOL ; |
|||
INT_IN0 : INT ; |
|||
INT_IN1 : INT ; |
|||
INT_IN2 : INT ; |
|||
CM : BOOL ; |
|||
RM : INT ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
REAL_OUT0 : REAL ; |
|||
REAL_OUT1 : REAL ; |
|||
REAL_OUT2 : REAL ; |
|||
BOOL_OUT0 : BOOL ; |
|||
BOOL_OUT1 : BOOL ; |
|||
BOOL_OUT2 : BOOL ; |
|||
BOOL_OUT3 : BOOL ; |
|||
INT_OUT0 : INT ; |
|||
INT_OUT1 : INT ; |
|||
INT_OUT2 : INT ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,27 @@ |
|||
FUNCTION_BLOCK IJ_MSyncControl |
|||
|
|||
|
|||
VAR_INPUT |
|||
REAL_IN1 : REAL ; |
|||
REAL_IN2 : REAL ; |
|||
BOOL_IN0 : BOOL ; |
|||
BOOL_IN1 : BOOL ; |
|||
BOOL_IN2 : BOOL ; |
|||
INT_IN1 : INT ; |
|||
INT_IN2 : INT ; |
|||
CM : BOOL ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
REAL_OUT1 : REAL ; |
|||
REAL_OUT2 : REAL ; |
|||
BOOL_OUT0 : BOOL ; |
|||
BOOL_OUT1 : BOOL ; |
|||
BOOL_OUT2 : BOOL ; |
|||
INT_OUT1 : INT ; |
|||
INT_OUT2 : INT ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,32 @@ |
|||
FUNCTION_BLOCK IJ_SyncControl |
|||
|
|||
|
|||
VAR_INPUT |
|||
REAL_IN0 : REAL ; |
|||
REAL_IN1 : REAL ; |
|||
REAL_IN2 : REAL ; |
|||
BOOL_IN0 : BOOL ; |
|||
BOOL_IN1 : BOOL ; |
|||
BOOL_IN2 : BOOL ; |
|||
INT_IN0 : INT ; |
|||
INT_IN1 : INT ; |
|||
INT_IN2 : INT ; |
|||
CM : BOOL ; |
|||
RM : INT ; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
REAL_OUT0 : REAL ; |
|||
REAL_OUT1 : REAL ; |
|||
REAL_OUT2 : REAL ; |
|||
BOOL_OUT0 : BOOL ; |
|||
BOOL_OUT1 : BOOL ; |
|||
BOOL_OUT2 : BOOL ; |
|||
INT_OUT0 : INT ; |
|||
INT_OUT1 : INT ; |
|||
INT_OUT2 : INT ; |
|||
END_VAR |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,12 @@ |
|||
|
|||
->开始编译工程配置项... |
|||
|
|||
->开始工程初始化... |
|||
|
|||
|
|||
->开始创建关联... |
|||
文件未找到: C:\Users\daijh\Desktop\PM24041 常州飞龙吾悦广场商业智能化项目\20241030飞龙吾悦下位机软件\BRCON_MCFB_IU_v3.3.0\MAIN.POE. |
|||
1 错误, 0 警告. |
|||
|
|||
1 错误, 0 警告. |
|||
|
@ -0,0 +1,4 @@ |
|||
PROGRAM Vartable1 |
|||
|
|||
|
|||
END_PROGRAM |
@ -0,0 +1,596 @@ |
|||
FUNCTION BF_IOM0801U_E5 : INT |
|||
VAR_INPUT |
|||
temp_in : int; |
|||
temp_last : int; |
|||
END_VAR |
|||
|
|||
VAR |
|||
|
|||
END_VAR |
|||
(** {* **) |
|||
(** **) |
|||
(** 时 间:20210610 **) |
|||
(** 版 本:1.0 **) |
|||
(** 作 者:冯华强 **) |
|||
(** 名 称:针对IOM.0801U-E5版本以前的模块出现的跳变过滤函数 **) |
|||
(** 说 明:过滤规则: **) |
|||
(** 温度值在进入正常值正负0.5度范围内,判断跳变值是否出现,如果出现,保持原值。如果没有跳变,更新输入值。 **) |
|||
(** 跳变影响温度值0.1度。 **) |
|||
(** 备 注:无 **) |
|||
(** 依赖块:无 **) |
|||
(** **) |
|||
(** *} **) |
|||
(** **) |
|||
(** {* **) |
|||
(** Input_Type: 输入 temp_in 未经通道实际值 **) |
|||
(** temp_last 经跳变过滤规则过滤后的值 **) |
|||
(** **) |
|||
(** 输出 跳变过滤规则过滤后的输出值 **) |
|||
(** *} **) |
|||
(** **) |
|||
(** if temp_last>-3960 and temp_last<-3860 and temp_in>-5030 and temp_in<-4930 then **) |
|||
(* if - Cond *) |
|||
LD temp_last |
|||
GT -3960 |
|||
AND ( temp_last |
|||
LT -3860 |
|||
) |
|||
AND ( temp_in |
|||
GT -5030 |
|||
) |
|||
AND ( temp_in |
|||
LT -4930 |
|||
) |
|||
JMPCN ODK_SKIP_000000000000001_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** BF_IOM0801U_E5:=temp_last; **) |
|||
(* assign - Stmt *) |
|||
LD temp_last |
|||
ST BF_IOM0801U_E5 |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** elsif temp_last>-2870 and temp_last<-2770 and temp_in>-5030 and temp_in<-4930 then **) |
|||
(* elseif - Cond *) |
|||
ODK_SKIP_000000000000001_000000000000001: |
|||
LD temp_last |
|||
GT -2870 |
|||
AND ( temp_last |
|||
LT -2770 |
|||
) |
|||
AND ( temp_in |
|||
GT -5030 |
|||
) |
|||
AND ( temp_in |
|||
LT -4930 |
|||
) |
|||
JMPCN ODK_SKIP_000000000000001_000000000000002 |
|||
|
|||
(* elsif - Stmts *) |
|||
|
|||
(** BF_IOM0801U_E5:=temp_last; **) |
|||
(* assign - Stmt *) |
|||
LD temp_last |
|||
ST BF_IOM0801U_E5 |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** elsif temp_last>-1780 and temp_last<-1680 and temp_in>-2850 and temp_in<-2750 then **) |
|||
(* elseif - Cond *) |
|||
ODK_SKIP_000000000000001_000000000000002: |
|||
LD temp_last |
|||
GT -1780 |
|||
AND ( temp_last |
|||
LT -1680 |
|||
) |
|||
AND ( temp_in |
|||
GT -2850 |
|||
) |
|||
AND ( temp_in |
|||
LT -2750 |
|||
) |
|||
JMPCN ODK_SKIP_000000000000001_000000000000003 |
|||
|
|||
(* elsif - Stmts *) |
|||
|
|||
(** BF_IOM0801U_E5:=temp_last; **) |
|||
(* assign - Stmt *) |
|||
LD temp_last |
|||
ST BF_IOM0801U_E5 |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** elsif temp_last>-1220 and temp_last<-1120 and temp_in>-1760 and temp_in<-1660 then **) |
|||
(* elseif - Cond *) |
|||
ODK_SKIP_000000000000001_000000000000003: |
|||
LD temp_last |
|||
GT -1220 |
|||
AND ( temp_last |
|||
LT -1120 |
|||
) |
|||
AND ( temp_in |
|||
GT -1760 |
|||
) |
|||
AND ( temp_in |
|||
LT -1660 |
|||
) |
|||
JMPCN ODK_SKIP_000000000000001_000000000000004 |
|||
|
|||
(* elsif - Stmts *) |
|||
|
|||
(** BF_IOM0801U_E5:=temp_last; **) |
|||
(* assign - Stmt *) |
|||
LD temp_last |
|||
ST BF_IOM0801U_E5 |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** elsif temp_last>-680 and temp_last<-580 and temp_in>-5030 and temp_in<-4930 then **) |
|||
(* elseif - Cond *) |
|||
ODK_SKIP_000000000000001_000000000000004: |
|||
LD temp_last |
|||
GT -680 |
|||
AND ( temp_last |
|||
LT -580 |
|||
) |
|||
AND ( temp_in |
|||
GT -5030 |
|||
) |
|||
AND ( temp_in |
|||
LT -4930 |
|||
) |
|||
JMPCN ODK_SKIP_000000000000001_000000000000005 |
|||
|
|||
(* elsif - Stmts *) |
|||
|
|||
(** BF_IOM0801U_E5:=temp_last; **) |
|||
(* assign - Stmt *) |
|||
LD temp_last |
|||
ST BF_IOM0801U_E5 |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** elsif temp_last>-140 and temp_last<-40 and temp_in>-660 and temp_in<-560 then **) |
|||
(* elseif - Cond *) |
|||
ODK_SKIP_000000000000001_000000000000005: |
|||
LD temp_last |
|||
GT -140 |
|||
AND ( temp_last |
|||
LT -40 |
|||
) |
|||
AND ( temp_in |
|||
GT -660 |
|||
) |
|||
AND ( temp_in |
|||
LT -560 |
|||
) |
|||
JMPCN ODK_SKIP_000000000000001_000000000000006 |
|||
|
|||
(* elsif - Stmts *) |
|||
|
|||
(** BF_IOM0801U_E5:=temp_last; **) |
|||
(* assign - Stmt *) |
|||
LD temp_last |
|||
ST BF_IOM0801U_E5 |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** elsif temp_last>400 and temp_last<500 and temp_in>-660 and temp_in<-560 then **) |
|||
(* elseif - Cond *) |
|||
ODK_SKIP_000000000000001_000000000000006: |
|||
LD temp_last |
|||
GT 400 |
|||
AND ( temp_last |
|||
LT 500 |
|||
) |
|||
AND ( temp_in |
|||
GT -660 |
|||
) |
|||
AND ( temp_in |
|||
LT -560 |
|||
) |
|||
JMPCN ODK_SKIP_000000000000001_000000000000007 |
|||
|
|||
(* elsif - Stmts *) |
|||
|
|||
(** BF_IOM0801U_E5:=temp_last; **) |
|||
(* assign - Stmt *) |
|||
LD temp_last |
|||
ST BF_IOM0801U_E5 |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** elsif temp_last>950 and temp_last<1050 and temp_in>410 and temp_in<510 then **) |
|||
(* elseif - Cond *) |
|||
ODK_SKIP_000000000000001_000000000000007: |
|||
LD temp_last |
|||
GT 950 |
|||
AND ( temp_last |
|||
LT 1050 |
|||
) |
|||
AND ( temp_in |
|||
GT 410 |
|||
) |
|||
AND ( temp_in |
|||
LT 510 |
|||
) |
|||
JMPCN ODK_SKIP_000000000000001_000000000000008 |
|||
|
|||
(* elsif - Stmts *) |
|||
|
|||
(** BF_IOM0801U_E5:=temp_last; **) |
|||
(* assign - Stmt *) |
|||
LD temp_last |
|||
ST BF_IOM0801U_E5 |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** elsif temp_last>1500 and temp_last<1600 and temp_in>-660 and temp_in<-560 then **) |
|||
(* elseif - Cond *) |
|||
ODK_SKIP_000000000000001_000000000000008: |
|||
LD temp_last |
|||
GT 1500 |
|||
AND ( temp_last |
|||
LT 1600 |
|||
) |
|||
AND ( temp_in |
|||
GT -660 |
|||
) |
|||
AND ( temp_in |
|||
LT -560 |
|||
) |
|||
JMPCN ODK_SKIP_000000000000001_000000000000009 |
|||
|
|||
(* elsif - Stmts *) |
|||
|
|||
(** BF_IOM0801U_E5:=temp_last; **) |
|||
(* assign - Stmt *) |
|||
LD temp_last |
|||
ST BF_IOM0801U_E5 |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** elsif temp_last>2050 and temp_last<2150 and temp_in>1510 and temp_in<1610 then **) |
|||
(* elseif - Cond *) |
|||
ODK_SKIP_000000000000001_000000000000009: |
|||
LD temp_last |
|||
GT 2050 |
|||
AND ( temp_last |
|||
LT 2150 |
|||
) |
|||
AND ( temp_in |
|||
GT 1510 |
|||
) |
|||
AND ( temp_in |
|||
LT 1610 |
|||
) |
|||
JMPCN ODK_SKIP_000000000000001_00000000000000A |
|||
|
|||
(* elsif - Stmts *) |
|||
|
|||
(** BF_IOM0801U_E5:=temp_last; **) |
|||
(* assign - Stmt *) |
|||
LD temp_last |
|||
ST BF_IOM0801U_E5 |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** elsif temp_last>2590 and temp_last<2690 and temp_in>1510 and temp_in<1610 then **) |
|||
(* elseif - Cond *) |
|||
ODK_SKIP_000000000000001_00000000000000A: |
|||
LD temp_last |
|||
GT 2590 |
|||
AND ( temp_last |
|||
LT 2690 |
|||
) |
|||
AND ( temp_in |
|||
GT 1510 |
|||
) |
|||
AND ( temp_in |
|||
LT 1610 |
|||
) |
|||
JMPCN ODK_SKIP_000000000000001_00000000000000B |
|||
|
|||
(* elsif - Stmts *) |
|||
|
|||
(** BF_IOM0801U_E5:=temp_last; **) |
|||
(* assign - Stmt *) |
|||
LD temp_last |
|||
ST BF_IOM0801U_E5 |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** elsif temp_last>3140 and temp_last<3240 and temp_in>2600 and temp_in<2700 then **) |
|||
(* elseif - Cond *) |
|||
ODK_SKIP_000000000000001_00000000000000B: |
|||
LD temp_last |
|||
GT 3140 |
|||
AND ( temp_last |
|||
LT 3240 |
|||
) |
|||
AND ( temp_in |
|||
GT 2600 |
|||
) |
|||
AND ( temp_in |
|||
LT 2700 |
|||
) |
|||
JMPCN ODK_SKIP_000000000000001_00000000000000C |
|||
|
|||
(* elsif - Stmts *) |
|||
|
|||
(** BF_IOM0801U_E5:=temp_last; **) |
|||
(* assign - Stmt *) |
|||
LD temp_last |
|||
ST BF_IOM0801U_E5 |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** elsif temp_last>3690 and temp_last<3790 and temp_in>-5030 and temp_in<-4930 then **) |
|||
(* elseif - Cond *) |
|||
ODK_SKIP_000000000000001_00000000000000C: |
|||
LD temp_last |
|||
GT 3690 |
|||
AND ( temp_last |
|||
LT 3790 |
|||
) |
|||
AND ( temp_in |
|||
GT -5030 |
|||
) |
|||
AND ( temp_in |
|||
LT -4930 |
|||
) |
|||
JMPCN ODK_SKIP_000000000000001_00000000000000D |
|||
|
|||
(* elsif - Stmts *) |
|||
|
|||
(** BF_IOM0801U_E5:=temp_last; **) |
|||
(* assign - Stmt *) |
|||
LD temp_last |
|||
ST BF_IOM0801U_E5 |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** elsif temp_last>4230 and temp_last<4330 and temp_in>3700 and temp_in<3800 then **) |
|||
(* elseif - Cond *) |
|||
ODK_SKIP_000000000000001_00000000000000D: |
|||
LD temp_last |
|||
GT 4230 |
|||
AND ( temp_last |
|||
LT 4330 |
|||
) |
|||
AND ( temp_in |
|||
GT 3700 |
|||
) |
|||
AND ( temp_in |
|||
LT 3800 |
|||
) |
|||
JMPCN ODK_SKIP_000000000000001_00000000000000E |
|||
|
|||
(* elsif - Stmts *) |
|||
|
|||
(** BF_IOM0801U_E5:=temp_last; **) |
|||
(* assign - Stmt *) |
|||
LD temp_last |
|||
ST BF_IOM0801U_E5 |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** elsif temp_last>4780 and temp_last<4880 and temp_in>3700 and temp_in<3800 then **) |
|||
(* elseif - Cond *) |
|||
ODK_SKIP_000000000000001_00000000000000E: |
|||
LD temp_last |
|||
GT 4780 |
|||
AND ( temp_last |
|||
LT 4880 |
|||
) |
|||
AND ( temp_in |
|||
GT 3700 |
|||
) |
|||
AND ( temp_in |
|||
LT 3800 |
|||
) |
|||
JMPCN ODK_SKIP_000000000000001_00000000000000F |
|||
|
|||
(* elsif - Stmts *) |
|||
|
|||
(** BF_IOM0801U_E5:=temp_last; **) |
|||
(* assign - Stmt *) |
|||
LD temp_last |
|||
ST BF_IOM0801U_E5 |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** elsif temp_last>5320 and temp_last<5420 and temp_in>4790 and temp_in<4890 then **) |
|||
(* elseif - Cond *) |
|||
ODK_SKIP_000000000000001_00000000000000F: |
|||
LD temp_last |
|||
GT 5320 |
|||
AND ( temp_last |
|||
LT 5420 |
|||
) |
|||
AND ( temp_in |
|||
GT 4790 |
|||
) |
|||
AND ( temp_in |
|||
LT 4890 |
|||
) |
|||
JMPCN ODK_SKIP_000000000000001_00000000000000G |
|||
|
|||
(* elsif - Stmts *) |
|||
|
|||
(** BF_IOM0801U_E5:=temp_last; **) |
|||
(* assign - Stmt *) |
|||
LD temp_last |
|||
ST BF_IOM0801U_E5 |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** elsif temp_last>5870 and temp_last<5970 and temp_in>3700 and temp_in<3800 then **) |
|||
(* elseif - Cond *) |
|||
ODK_SKIP_000000000000001_00000000000000G: |
|||
LD temp_last |
|||
GT 5870 |
|||
AND ( temp_last |
|||
LT 5970 |
|||
) |
|||
AND ( temp_in |
|||
GT 3700 |
|||
) |
|||
AND ( temp_in |
|||
LT 3800 |
|||
) |
|||
JMPCN ODK_SKIP_000000000000001_00000000000000H |
|||
|
|||
(* elsif - Stmts *) |
|||
|
|||
(** BF_IOM0801U_E5:=temp_last; **) |
|||
(* assign - Stmt *) |
|||
LD temp_last |
|||
ST BF_IOM0801U_E5 |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** elsif temp_last>6410 and temp_last<6510 and temp_in>5880 and temp_in<5980 then **) |
|||
(* elseif - Cond *) |
|||
ODK_SKIP_000000000000001_00000000000000H: |
|||
LD temp_last |
|||
GT 6410 |
|||
AND ( temp_last |
|||
LT 6510 |
|||
) |
|||
AND ( temp_in |
|||
GT 5880 |
|||
) |
|||
AND ( temp_in |
|||
LT 5980 |
|||
) |
|||
JMPCN ODK_SKIP_000000000000001_00000000000000I |
|||
|
|||
(* elsif - Stmts *) |
|||
|
|||
(** BF_IOM0801U_E5:=temp_last; **) |
|||
(* assign - Stmt *) |
|||
LD temp_last |
|||
ST BF_IOM0801U_E5 |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** elsif temp_last>6950 and temp_last<7050 and temp_in>5880 and temp_in<5980 then **) |
|||
(* elseif - Cond *) |
|||
ODK_SKIP_000000000000001_00000000000000I: |
|||
LD temp_last |
|||
GT 6950 |
|||
AND ( temp_last |
|||
LT 7050 |
|||
) |
|||
AND ( temp_in |
|||
GT 5880 |
|||
) |
|||
AND ( temp_in |
|||
LT 5980 |
|||
) |
|||
JMPCN ODK_SKIP_000000000000001_00000000000000J |
|||
|
|||
(* elsif - Stmts *) |
|||
|
|||
(** BF_IOM0801U_E5:=temp_last; **) |
|||
(* assign - Stmt *) |
|||
LD temp_last |
|||
ST BF_IOM0801U_E5 |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** elsif temp_last>8040 and temp_last<8140 and temp_in>3700 and temp_in<3800 then **) |
|||
(* elseif - Cond *) |
|||
ODK_SKIP_000000000000001_00000000000000J: |
|||
LD temp_last |
|||
GT 8040 |
|||
AND ( temp_last |
|||
LT 8140 |
|||
) |
|||
AND ( temp_in |
|||
GT 3700 |
|||
) |
|||
AND ( temp_in |
|||
LT 3800 |
|||
) |
|||
JMPCN ODK_SKIP_000000000000001_00000000000000K |
|||
|
|||
(* elsif - Stmts *) |
|||
|
|||
(** BF_IOM0801U_E5:=temp_last; **) |
|||
(* assign - Stmt *) |
|||
LD temp_last |
|||
ST BF_IOM0801U_E5 |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** elsif temp_last>9150 and temp_last<9250 and temp_in>8070 and temp_in<8170 then **) |
|||
(* elseif - Cond *) |
|||
ODK_SKIP_000000000000001_00000000000000K: |
|||
LD temp_last |
|||
GT 9150 |
|||
AND ( temp_last |
|||
LT 9250 |
|||
) |
|||
AND ( temp_in |
|||
GT 8070 |
|||
) |
|||
AND ( temp_in |
|||
LT 8170 |
|||
) |
|||
JMPCN ODK_SKIP_000000000000001_00000000000000L |
|||
|
|||
(* elsif - Stmts *) |
|||
|
|||
(** BF_IOM0801U_E5:=temp_last; **) |
|||
(* assign - Stmt *) |
|||
LD temp_last |
|||
ST BF_IOM0801U_E5 |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** elsif temp_last>10250 and temp_last<10350 and temp_in>8070 and temp_in<8170 then **) |
|||
(* elseif - Cond *) |
|||
ODK_SKIP_000000000000001_00000000000000L: |
|||
LD temp_last |
|||
GT 10250 |
|||
AND ( temp_last |
|||
LT 10350 |
|||
) |
|||
AND ( temp_in |
|||
GT 8070 |
|||
) |
|||
AND ( temp_in |
|||
LT 8170 |
|||
) |
|||
JMPCN ODK_SKIP_000000000000001_00000000000000M |
|||
|
|||
(* elsif - Stmts *) |
|||
|
|||
(** BF_IOM0801U_E5:=temp_last; **) |
|||
(* assign - Stmt *) |
|||
LD temp_last |
|||
ST BF_IOM0801U_E5 |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** else **) |
|||
(* else *) |
|||
ODK_SKIP_000000000000001_00000000000000M: |
|||
|
|||
(* else - Stmts *) |
|||
|
|||
(** BF_IOM0801U_E5:=temp_in; **) |
|||
(* assign - Stmt *) |
|||
LD temp_in |
|||
ST BF_IOM0801U_E5 |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_END_IF_000000000000001: |
|||
|
|||
|
|||
END_FUNCTION |
@ -0,0 +1,79 @@ |
|||
FUNCTION BF_IOM0801U_E5 : INT |
|||
VAR_INPUT |
|||
temp_in : int; |
|||
temp_last : int; |
|||
END_VAR |
|||
|
|||
VAR |
|||
|
|||
END_VAR |
|||
(* |
|||
|
|||
时 间:20210610 |
|||
版 本:1.0 |
|||
作 者:冯华强 |
|||
名 称:针对IOM.0801U-E5版本以前的模块出现的跳变过滤函数 |
|||
说 明:过滤规则: |
|||
温度值在进入正常值正负0.5度范围内,判断跳变值是否出现,如果出现,保持原值。如果没有跳变,更新输入值。 |
|||
跳变影响温度值0.1度。 |
|||
备 注:无 |
|||
依赖块:无 |
|||
|
|||
*) |
|||
|
|||
(* |
|||
Input_Type: 输入 temp_in 未经通道实际值 |
|||
temp_last 经跳变过滤规则过滤后的值 |
|||
|
|||
输出 跳变过滤规则过滤后的输出值 |
|||
*) |
|||
|
|||
if temp_last>-3960 and temp_last<-3860 and temp_in>-5030 and temp_in<-4930 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>-2870 and temp_last<-2770 and temp_in>-5030 and temp_in<-4930 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>-1780 and temp_last<-1680 and temp_in>-2850 and temp_in<-2750 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>-1220 and temp_last<-1120 and temp_in>-1760 and temp_in<-1660 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>-680 and temp_last<-580 and temp_in>-5030 and temp_in<-4930 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>-140 and temp_last<-40 and temp_in>-660 and temp_in<-560 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>400 and temp_last<500 and temp_in>-660 and temp_in<-560 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>950 and temp_last<1050 and temp_in>410 and temp_in<510 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>1500 and temp_last<1600 and temp_in>-660 and temp_in<-560 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>2050 and temp_last<2150 and temp_in>1510 and temp_in<1610 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>2590 and temp_last<2690 and temp_in>1510 and temp_in<1610 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>3140 and temp_last<3240 and temp_in>2600 and temp_in<2700 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>3690 and temp_last<3790 and temp_in>-5030 and temp_in<-4930 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>4230 and temp_last<4330 and temp_in>3700 and temp_in<3800 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>4780 and temp_last<4880 and temp_in>3700 and temp_in<3800 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>5320 and temp_last<5420 and temp_in>4790 and temp_in<4890 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>5870 and temp_last<5970 and temp_in>3700 and temp_in<3800 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>6410 and temp_last<6510 and temp_in>5880 and temp_in<5980 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>6950 and temp_last<7050 and temp_in>5880 and temp_in<5980 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>8040 and temp_last<8140 and temp_in>3700 and temp_in<3800 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>9150 and temp_last<9250 and temp_in>8070 and temp_in<8170 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>10250 and temp_last<10350 and temp_in>8070 and temp_in<8170 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
else |
|||
BF_IOM0801U_E5:=temp_in; |
|||
end_if; |
|||
|
|||
END_FUNCTION |
@ -0,0 +1,79 @@ |
|||
FUNCTION BF_IOM0801U_E5 : INT |
|||
VAR_INPUT |
|||
temp_in : int; |
|||
temp_last : int; |
|||
END_VAR |
|||
|
|||
VAR |
|||
|
|||
END_VAR |
|||
(* |
|||
|
|||
时 间:20210610 |
|||
版 本:1.0 |
|||
作 者:冯华强 |
|||
名 称:针对IOM.0801U-E5版本以前的模块出现的跳变过滤函数 |
|||
说 明:过滤规则: |
|||
温度值在进入正常值正负0.5度范围内,判断跳变值是否出现,如果出现,保持原值。如果没有跳变,更新输入值。 |
|||
跳变影响温度值0.1度。 |
|||
备 注:无 |
|||
依赖块:无 |
|||
|
|||
*) |
|||
|
|||
(* |
|||
Input_Type: 输入 temp_in 未经通道实际值 |
|||
temp_last 经跳变过滤规则过滤后的值 |
|||
|
|||
输出 跳变过滤规则过滤后的输出值 |
|||
*) |
|||
|
|||
if temp_last>-3960 and temp_last<-3860 and temp_in>-5030 and temp_in<-4930 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>-2870 and temp_last<-2770 and temp_in>-5030 and temp_in<-4930 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>-1780 and temp_last<-1680 and temp_in>-2850 and temp_in<-2750 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>-1220 and temp_last<-1120 and temp_in>-1760 and temp_in<-1660 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>-680 and temp_last<-580 and temp_in>-5030 and temp_in<-4930 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>-140 and temp_last<-40 and temp_in>-660 and temp_in<-560 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>400 and temp_last<500 and temp_in>-660 and temp_in<-560 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>950 and temp_last<1050 and temp_in>410 and temp_in<510 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>1500 and temp_last<1600 and temp_in>-660 and temp_in<-560 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>2050 and temp_last<2150 and temp_in>1510 and temp_in<1610 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>2590 and temp_last<2690 and temp_in>1510 and temp_in<1610 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>3140 and temp_last<3240 and temp_in>2600 and temp_in<2700 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>3690 and temp_last<3790 and temp_in>-5030 and temp_in<-4930 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>4230 and temp_last<4330 and temp_in>3700 and temp_in<3800 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>4780 and temp_last<4880 and temp_in>3700 and temp_in<3800 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>5320 and temp_last<5420 and temp_in>4790 and temp_in<4890 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>5870 and temp_last<5970 and temp_in>3700 and temp_in<3800 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>6410 and temp_last<6510 and temp_in>5880 and temp_in<5980 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>6950 and temp_last<7050 and temp_in>5880 and temp_in<5980 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>8040 and temp_last<8140 and temp_in>3700 and temp_in<3800 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>9150 and temp_last<9250 and temp_in>8070 and temp_in<8170 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
elsif temp_last>10250 and temp_last<10350 and temp_in>8070 and temp_in<8170 then |
|||
BF_IOM0801U_E5:=temp_last; |
|||
else |
|||
BF_IOM0801U_E5:=temp_in; |
|||
end_if; |
|||
|
|||
END_FUNCTION |
@ -0,0 +1,55 @@ |
|||
[PROTOTYP_PROG] |
|||
COUNT=0 |
|||
[PROTOTYP_FB] |
|||
FILE15=\$GEN$\GETCRC16 |
|||
FILE3=\$GEN$\BS_RunTime |
|||
FILE16=\$GEN$\IJ_LCB1030 |
|||
FILE2=\$GEN$\BS_DelayGroupVavle |
|||
FILE17=\$GEN$\BS_FEC |
|||
FILE5=\$GEN$\BS_SavePower |
|||
FILE18=\$GEN$\IJ_DAHUPID |
|||
FILE4=\$GEN$\BS_DevHeartCheck |
|||
FILE34=\$GEN$\BS_AVERAGE |
|||
FILE19=\$GEN$\IJ_LSyncControl |
|||
FILE7=\$GEN$\BS_Schedule |
|||
FILE35=\$GEN$\BS_PID |
|||
FILE21=\$GEN$\IJ_FCU |
|||
FILE6=\$GEN$\BS_DevHeart |
|||
FILE32=\$GEN$\BS_ModbusCom |
|||
FILE20=\$GEN$\IJ_DAHU |
|||
FILE9=\$GEN$\BS_SyncVavle |
|||
COUNT=36 |
|||
FILE33=\$GEN$\IJ_EVC |
|||
FILE23=\$GEN$\IJ_LCB0610 |
|||
FILE8=\$GEN$\BS_EVC |
|||
FILE30=\$GEN$\IJ_FAU |
|||
FILE22=\$GEN$\IJ_DAHU_0803 |
|||
FILE31=\$GEN$\BS_CMFCU |
|||
FILE25=\$GEN$\IJ_EAFGroup |
|||
FILE24=\$GEN$\IJ_DAHUW |
|||
FILE27=\$GEN$\IJ_EAF |
|||
FILE26=\$GEN$\BS_GETCRC16 |
|||
FILE10=\$GEN$\IJ_MSyncControl |
|||
FILE11=\$GEN$\BS_DevScan |
|||
FILE29=\$GEN$\BS_GroupVavle50 |
|||
FILE12=\$GEN$\IJ_AHU |
|||
FILE28=\$GEN$\BS_GroupVavle |
|||
FILE13=\$GEN$\IJ_SyncControl |
|||
FILE1=\$GEN$\BS_RemoteVavle |
|||
FILE14=\$GEN$\BS_Feedback |
|||
FILE0=\$GEN$\BS_DelayRemoteVavle |
|||
[PROTOTYP_FKT] |
|||
FILE3=\$GEN$\BS_ASCII2INT |
|||
FILE2=\$GEN$\IJ_DT |
|||
FILE4=\$GEN$\BF_IOM0801U_E5 |
|||
COUNT=5 |
|||
FILE1=\$GEN$\BS_Scale |
|||
FILE0=\$GEN$\BS_Scale2 |
|||
[LIBRARY] |
|||
FILE2=\LIB\BRCON_MCFB_IU_V3.3.0.1\BRCON_MCFB_ED_V3.3.0.1.GEN |
|||
COUNT=3 |
|||
FILE1=\LIB\BRCON_MCFB_IU_V3.3.0.1\BRCON_MCFB_ED_V3.3.0.1.GEN |
|||
FILE0=\LIB\sfclib\sfclib.GEN |
|||
[EXECUTABLE] |
|||
COUNT=1 |
|||
FILE0=\$ENV$\Resource\Resource |
@ -0,0 +1,66 @@ |
|||
[MAKEFILE] |
|||
COUNT=1 |
|||
ACTIVE=\$ENV$\Resource\Resource.MAK |
|||
FILE0=\$ENV$\Resource\Resource |
|||
[LIBRARY] |
|||
FILE2=\LIB\BRCON_MCFB_IU_V3.3.0.1\BRCON_MCFB_ED_V3.3.0.1.VAR |
|||
COUNT=3 |
|||
FILE1=\LIB\BRCON_MCFB_IU_V3.3.0.1\BRCON_MCFB_ED_V3.3.0.1.VAR |
|||
FILE0=\LIB\sfclib\sfclib.VAR |
|||
[ENCODING] |
|||
UTF8=1 |
|||
[ST_FUNCTION] |
|||
FILE3=\BS_Scale2 |
|||
FILE2=\BS_Scale |
|||
FILE4=\IJ_DT |
|||
COUNT=5 |
|||
FILE1=\BS_ASCII2INT |
|||
FILE0=\BF_IOM0801U_E5 |
|||
[ST_FUNCTIONBLOCK] |
|||
FILE15=\BS_RemoteVavle |
|||
FILE3=\BS_DelayRemoteVavle |
|||
FILE16=\BS_RunTime |
|||
FILE2=\BS_DelayGroupVavle |
|||
FILE17=\BS_SavePower |
|||
FILE5=\BS_DevHeartCheck |
|||
FILE18=\BS_Schedule |
|||
FILE4=\BS_DevHeart |
|||
FILE34=\IJ_MSyncControl |
|||
FILE19=\BS_SyncVavle |
|||
FILE7=\BS_EVC |
|||
FILE35=\IJ_SyncControl |
|||
FILE21=\IJ_AHU |
|||
FILE6=\BS_DevScan |
|||
FILE32=\IJ_LCB1030 |
|||
FILE20=\GETCRC16 |
|||
FILE9=\BS_Feedback |
|||
COUNT=36 |
|||
FILE33=\IJ_LSyncControl |
|||
FILE23=\IJ_DAHUPID |
|||
FILE8=\BS_FEC |
|||
FILE30=\IJ_FCU |
|||
FILE22=\IJ_DAHU |
|||
FILE31=\IJ_LCB0610 |
|||
FILE25=\IJ_DAHU_0803 |
|||
FILE24=\IJ_DAHUW |
|||
FILE27=\IJ_EAFGroup |
|||
FILE26=\IJ_EAF |
|||
FILE10=\BS_GETCRC16 |
|||
FILE11=\BS_GroupVavle |
|||
FILE29=\IJ_FAU |
|||
FILE12=\BS_GroupVavle50 |
|||
FILE28=\IJ_EVC |
|||
FILE13=\BS_ModbusCom |
|||
FILE1=\BS_CMFCU |
|||
FILE14=\BS_PID |
|||
FILE0=\BS_AVERAGE |
|||
[DIRECT_GLOBAL] |
|||
COUNT=1 |
|||
FILE0=\Vartable1 |
|||
[TYPEDEF] |
|||
COUNT=2 |
|||
FILE1=\USERTYPE |
|||
FILE0=\FBTYPE |
|||
[DATPARAM_INFO] |
|||
SeperateGen=1 |
|||
Version=4.0 |
@ -0,0 +1,48 @@ |
|||
FUNCTION BS_ASCII2INT : INT |
|||
VAR_INPUT |
|||
ASCII1 :BYTE; |
|||
ASCII2 :BYTE; |
|||
END_VAR |
|||
|
|||
VAR |
|||
|
|||
END_VAR |
|||
(** {* **) |
|||
(** **) |
|||
(** 时 间:20190912 **) |
|||
(** 版 本:1.0 **) |
|||
(** 作 者:姚立 **) |
|||
(** 名 称:2位数ASCII码数字转换函数 **) |
|||
(** 说 明:用于ASCII码转换的函数 **) |
|||
(** 备 注: **) |
|||
(** 依赖块:无 **) |
|||
(** **) |
|||
(** *} **) |
|||
(** **) |
|||
(** {* **) |
|||
(** Input_Type: 输入 **) |
|||
(** ASCII1:十位数ASCII码 **) |
|||
(** ASCII2:个位数ASCII码 **) |
|||
(** **) |
|||
(** Output_Type 输出 **) |
|||
(** 对应的ASCII码 **) |
|||
(** **) |
|||
(** *} **) |
|||
(** BS_ASCII2INT:=(BYTE_TO_INT(ASCII1)-48)*10+BYTE_TO_INT(ASCII2)-48; **) |
|||
(* assign - Stmt *) |
|||
LD ASCII1 |
|||
BYTE_TO_INT |
|||
SUB 48 |
|||
MUL 10 |
|||
ADD ( ASCII2 |
|||
BYTE_TO_INT |
|||
) |
|||
SUB 48 |
|||
ST BS_ASCII2INT |
|||
|
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
|
|||
END_FUNCTION |
@ -0,0 +1,37 @@ |
|||
FUNCTION BS_ASCII2INT : INT |
|||
VAR_INPUT |
|||
ASCII1 :BYTE; |
|||
ASCII2 :BYTE; |
|||
END_VAR |
|||
|
|||
VAR |
|||
|
|||
END_VAR |
|||
(* |
|||
|
|||
时 间:20190912 |
|||
版 本:1.0 |
|||
作 者:姚立 |
|||
名 称:2位数ASCII码数字转换函数 |
|||
说 明:用于ASCII码转换的函数 |
|||
备 注: |
|||
依赖块:无 |
|||
|
|||
*) |
|||
|
|||
(* |
|||
Input_Type: 输入 |
|||
ASCII1:十位数ASCII码 |
|||
ASCII2:个位数ASCII码 |
|||
|
|||
Output_Type 输出 |
|||
对应的ASCII码 |
|||
|
|||
*) |
|||
BS_ASCII2INT:=(BYTE_TO_INT(ASCII1)-48)*10+BYTE_TO_INT(ASCII2)-48; |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
END_FUNCTION |
@ -0,0 +1,14 @@ |
|||
FUNCTION BS_ASCII2INT : INT |
|||
|
|||
VAR_INPUT |
|||
|
|||
END_VAR |
|||
|
|||
VAR |
|||
|
|||
END_VAR |
|||
|
|||
; |
|||
|
|||
|
|||
END_FUNCTION |
@ -0,0 +1,493 @@ |
|||
FUNCTION_BLOCK BS_AVERAGE |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
Input :INT; |
|||
Num :INT:=30; |
|||
Delay :Time:=t#100ms; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
Output :INT; |
|||
END_VAR |
|||
|
|||
VAR |
|||
Avg_num :INT; |
|||
Value_temp :ARRAY[0..30]OF DINT; |
|||
ton1 :ton; |
|||
Value_sum :DINT; |
|||
temp :BOOL; |
|||
i,j,k :INT:=1; |
|||
ton0 :ton; |
|||
ini :BOOL; |
|||
END_VAR |
|||
|
|||
(*Automatically declared*) |
|||
VAR_EXTERNAL |
|||
END_VAR |
|||
(** {* **) |
|||
(** **) |
|||
(** 时 间:20191006 **) |
|||
(** 版 本:1.1 **) |
|||
(** 作 者:姚立 **) |
|||
(** 名 称:平均采样程序 **) |
|||
(** 说 明:平均采样默认20次,间隔100ms **) |
|||
(** 备 注: **) |
|||
(** 依赖块: **) |
|||
(** 时 间:20211110 **) |
|||
(** 版 本:1.2 **) |
|||
(** 作 者:潘平 **) |
|||
(** 名 称:平均采样程序 **) |
|||
(** 说 明:平均采样默认30次,间隔100ms,修正程序未做平均值计算问题,始终位于初始化程序内运行 **) |
|||
(** 备 注: **) |
|||
(** 依赖块: **) |
|||
(** *} **) |
|||
(** **) |
|||
(** if ini=0 then **) |
|||
(* if - Cond *) |
|||
LD ini |
|||
EQ 0 |
|||
JMPCN ODK_SKIP_000000000000001_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** 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: |
|||
|
|||
(** **) |
|||
(** if Num>30 then **) |
|||
(* if - Cond *) |
|||
LD Num |
|||
GT 30 |
|||
JMPCN ODK_SKIP_000000000000002_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** Avg_num:=30; **) |
|||
(* assign - Stmt *) |
|||
LD 30 |
|||
ST Avg_num |
|||
|
|||
JMP ODK_END_IF_000000000000002 |
|||
|
|||
(** else **) |
|||
(* else *) |
|||
ODK_SKIP_000000000000002_000000000000001: |
|||
|
|||
(* else - Stmts *) |
|||
|
|||
(** Avg_num:=Num; **) |
|||
(* assign - Stmt *) |
|||
LD Num |
|||
ST Avg_num |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_END_IF_000000000000002: |
|||
|
|||
(** **) |
|||
(** {*初始化30s无延时采样,30s后每avg_delay采样1次*} **) |
|||
(** ton0(in:=ini,PT:= t#30s); **) |
|||
(* call - Stmt *) |
|||
CAL ton0 ( |
|||
in := ini, |
|||
PT := t#30s |
|||
) |
|||
|
|||
(** if ton0.q=0 then **) |
|||
(* if - Cond *) |
|||
LD ton0.q |
|||
EQ 0 |
|||
JMPCN ODK_SKIP_000000000000003_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** k:=k+1;{*程序开始时,取值次数不足20次,为k次*} **) |
|||
(* assign - Stmt *) |
|||
LD k |
|||
ADD 1 |
|||
ST k |
|||
|
|||
(** if k>Avg_num then **) |
|||
(* if - Cond *) |
|||
LD k |
|||
GT Avg_num |
|||
JMPCN ODK_SKIP_000000000000004_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** k:=Avg_num; **) |
|||
(* assign - Stmt *) |
|||
LD Avg_num |
|||
ST k |
|||
|
|||
JMP ODK_END_IF_000000000000004 |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000004_000000000000001: |
|||
ODK_END_IF_000000000000004: |
|||
|
|||
(** Value_temp[1]:=INT_TO_DINT(Input); **) |
|||
(* assign - Stmt *) |
|||
LD Input |
|||
INT_TO_DINT |
|||
ST Value_temp[1] |
|||
|
|||
(** for i:=(Avg_num-1) to 1 by -1 do **) |
|||
(* for - Init *) |
|||
LD Avg_num |
|||
SUB 1 |
|||
ST i |
|||
EQ 1 |
|||
JMPC ODK_FOR_STMTS_000000000000005 |
|||
|
|||
(* for - Cond *) |
|||
ODK_FOR_000000000000005: |
|||
|
|||
LD Avg_num |
|||
SUB 1 |
|||
GT 1 |
|||
JMPC ODK_FOR_DOWN_000000000000005 |
|||
|
|||
LD 0 |
|||
GT( -1 |
|||
) |
|||
JMPC ODK_END_FOR_000000000000005 |
|||
|
|||
LD 1 |
|||
LT i |
|||
JMPC ODK_END_FOR_000000000000005 |
|||
JMP ODK_FOR_STMTS_000000000000005 |
|||
|
|||
ODK_FOR_DOWN_000000000000005: |
|||
|
|||
LD 1 |
|||
GT i |
|||
JMPC ODK_END_FOR_000000000000005 |
|||
|
|||
LD 0 |
|||
LT( -1 |
|||
) |
|||
JMPC ODK_END_FOR_000000000000005 |
|||
|
|||
(* for - Stmts *) |
|||
ODK_FOR_STMTS_000000000000005: |
|||
|
|||
(** j:=i+1; **) |
|||
(* assign - Stmt *) |
|||
LD i |
|||
ADD 1 |
|||
ST j |
|||
|
|||
(** Value_temp[j]:=Value_temp[i]; **) |
|||
(* assign - Stmt *) |
|||
LD Value_temp[i] |
|||
ST Value_temp[j] |
|||
|
|||
(* for - By *) |
|||
LD -1 |
|||
ADD i |
|||
ST i |
|||
(** end_for; **) |
|||
|
|||
JMP ODK_FOR_000000000000005 |
|||
|
|||
(* for - End *) |
|||
ODK_END_FOR_000000000000005: |
|||
|
|||
(** Value_sum:=0; **) |
|||
(* assign - Stmt *) |
|||
LD 0 |
|||
ST Value_sum |
|||
|
|||
(** for i:=1 to Avg_num by 1 do **) |
|||
(* for - Init *) |
|||
LD 1 |
|||
ST i |
|||
EQ Avg_num |
|||
JMPC ODK_FOR_STMTS_000000000000006 |
|||
|
|||
(* for - Cond *) |
|||
ODK_FOR_000000000000006: |
|||
|
|||
LD 1 |
|||
GT Avg_num |
|||
JMPC ODK_FOR_DOWN_000000000000006 |
|||
|
|||
LD 0 |
|||
GT 1 |
|||
JMPC ODK_END_FOR_000000000000006 |
|||
|
|||
LD Avg_num |
|||
LT i |
|||
JMPC ODK_END_FOR_000000000000006 |
|||
JMP ODK_FOR_STMTS_000000000000006 |
|||
|
|||
ODK_FOR_DOWN_000000000000006: |
|||
|
|||
LD Avg_num |
|||
GT i |
|||
JMPC ODK_END_FOR_000000000000006 |
|||
|
|||
LD 0 |
|||
LT 1 |
|||
JMPC ODK_END_FOR_000000000000006 |
|||
|
|||
(* for - Stmts *) |
|||
ODK_FOR_STMTS_000000000000006: |
|||
|
|||
(** Value_sum:=Value_sum+Value_temp[i]; **) |
|||
(* assign - Stmt *) |
|||
LD Value_sum |
|||
ADD Value_temp[i] |
|||
ST Value_sum |
|||
|
|||
(* for - By *) |
|||
LD 1 |
|||
ADD i |
|||
ST i |
|||
(** end_for; **) |
|||
|
|||
JMP ODK_FOR_000000000000006 |
|||
|
|||
(* for - End *) |
|||
ODK_END_FOR_000000000000006: |
|||
|
|||
(** output:=DINT_TO_INT(Value_sum/INT_TO_DINT(k)); **) |
|||
(* assign - Stmt *) |
|||
LD Value_sum |
|||
DIV ( k |
|||
INT_TO_DINT |
|||
) |
|||
DINT_TO_INT |
|||
ST output |
|||
|
|||
JMP ODK_END_IF_000000000000003 |
|||
|
|||
(** else **) |
|||
(* else *) |
|||
ODK_SKIP_000000000000003_000000000000001: |
|||
|
|||
(* else - Stmts *) |
|||
|
|||
(** ton1(PT:= Delay ); **) |
|||
(* call - Stmt *) |
|||
CAL ton1 ( |
|||
PT := Delay |
|||
) |
|||
|
|||
(** ton1.in:=not ton1.q; **) |
|||
(* assign - Stmt *) |
|||
LD ton1.q |
|||
NOT |
|||
ST ton1.in |
|||
|
|||
(** temp:=0; **) |
|||
(* assign - Stmt *) |
|||
LD 0 |
|||
ST temp |
|||
|
|||
(** if ton1.q=1 and temp=0 then **) |
|||
(* if - Cond *) |
|||
LD ton1.q |
|||
EQ 1 |
|||
AND ( temp |
|||
EQ 0 |
|||
) |
|||
JMPCN ODK_SKIP_000000000000007_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** k:=k+1;{*程序开始时,取值次数不足30次,为k次*} **) |
|||
(* assign - Stmt *) |
|||
LD k |
|||
ADD 1 |
|||
ST k |
|||
|
|||
(** if k>Avg_num then **) |
|||
(* if - Cond *) |
|||
LD k |
|||
GT Avg_num |
|||
JMPCN ODK_SKIP_000000000000008_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** k:=Avg_num; **) |
|||
(* assign - Stmt *) |
|||
LD Avg_num |
|||
ST k |
|||
|
|||
JMP ODK_END_IF_000000000000008 |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000008_000000000000001: |
|||
ODK_END_IF_000000000000008: |
|||
|
|||
(** temp:=1; **) |
|||
(* assign - Stmt *) |
|||
LD 1 |
|||
ST temp |
|||
|
|||
(** Value_temp[1]:=INT_TO_DINT(Input); **) |
|||
(* assign - Stmt *) |
|||
LD Input |
|||
INT_TO_DINT |
|||
ST Value_temp[1] |
|||
|
|||
(** for i:=(Avg_num-1) to 1 by -1 do **) |
|||
(* for - Init *) |
|||
LD Avg_num |
|||
SUB 1 |
|||
ST i |
|||
EQ 1 |
|||
JMPC ODK_FOR_STMTS_000000000000009 |
|||
|
|||
(* for - Cond *) |
|||
ODK_FOR_000000000000009: |
|||
|
|||
LD Avg_num |
|||
SUB 1 |
|||
GT 1 |
|||
JMPC ODK_FOR_DOWN_000000000000009 |
|||
|
|||
LD 0 |
|||
GT( -1 |
|||
) |
|||
JMPC ODK_END_FOR_000000000000009 |
|||
|
|||
LD 1 |
|||
LT i |
|||
JMPC ODK_END_FOR_000000000000009 |
|||
JMP ODK_FOR_STMTS_000000000000009 |
|||
|
|||
ODK_FOR_DOWN_000000000000009: |
|||
|
|||
LD 1 |
|||
GT i |
|||
JMPC ODK_END_FOR_000000000000009 |
|||
|
|||
LD 0 |
|||
LT( -1 |
|||
) |
|||
JMPC ODK_END_FOR_000000000000009 |
|||
|
|||
(* for - Stmts *) |
|||
ODK_FOR_STMTS_000000000000009: |
|||
|
|||
(** j:=i+1; **) |
|||
(* assign - Stmt *) |
|||
LD i |
|||
ADD 1 |
|||
ST j |
|||
|
|||
(** Value_temp[j]:=Value_temp[i]; **) |
|||
(* assign - Stmt *) |
|||
LD Value_temp[i] |
|||
ST Value_temp[j] |
|||
|
|||
(* for - By *) |
|||
LD -1 |
|||
ADD i |
|||
ST i |
|||
(** end_for; **) |
|||
|
|||
JMP ODK_FOR_000000000000009 |
|||
|
|||
(* for - End *) |
|||
ODK_END_FOR_000000000000009: |
|||
|
|||
(** Value_sum:=0; **) |
|||
(* assign - Stmt *) |
|||
LD 0 |
|||
ST Value_sum |
|||
|
|||
(** for i:=1 to Avg_num by 1 do **) |
|||
(* for - Init *) |
|||
LD 1 |
|||
ST i |
|||
EQ Avg_num |
|||
JMPC ODK_FOR_STMTS_00000000000000A |
|||
|
|||
(* for - Cond *) |
|||
ODK_FOR_00000000000000A: |
|||
|
|||
LD 1 |
|||
GT Avg_num |
|||
JMPC ODK_FOR_DOWN_00000000000000A |
|||
|
|||
LD 0 |
|||
GT 1 |
|||
JMPC ODK_END_FOR_00000000000000A |
|||
|
|||
LD Avg_num |
|||
LT i |
|||
JMPC ODK_END_FOR_00000000000000A |
|||
JMP ODK_FOR_STMTS_00000000000000A |
|||
|
|||
ODK_FOR_DOWN_00000000000000A: |
|||
|
|||
LD Avg_num |
|||
GT i |
|||
JMPC ODK_END_FOR_00000000000000A |
|||
|
|||
LD 0 |
|||
LT 1 |
|||
JMPC ODK_END_FOR_00000000000000A |
|||
|
|||
(* for - Stmts *) |
|||
ODK_FOR_STMTS_00000000000000A: |
|||
|
|||
(** Value_sum:=Value_sum+Value_temp[i]; **) |
|||
(* assign - Stmt *) |
|||
LD Value_sum |
|||
ADD Value_temp[i] |
|||
ST Value_sum |
|||
|
|||
(* for - By *) |
|||
LD 1 |
|||
ADD i |
|||
ST i |
|||
(** end_for; **) |
|||
|
|||
JMP ODK_FOR_00000000000000A |
|||
|
|||
(* for - End *) |
|||
ODK_END_FOR_00000000000000A: |
|||
|
|||
JMP ODK_END_IF_000000000000007 |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000007_000000000000001: |
|||
ODK_END_IF_000000000000007: |
|||
|
|||
(** output:=DINT_TO_INT(Value_sum/INT_TO_DINT(k)); **) |
|||
(* assign - Stmt *) |
|||
LD Value_sum |
|||
DIV ( k |
|||
INT_TO_DINT |
|||
) |
|||
DINT_TO_INT |
|||
ST output |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_END_IF_000000000000003: |
|||
|
|||
(** **) |
|||
(** **) |
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,96 @@ |
|||
FUNCTION_BLOCK BS_AVERAGE |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
Input :INT; |
|||
Num :INT:=30; |
|||
Delay :Time:=t#100ms; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
Output :INT; |
|||
END_VAR |
|||
|
|||
VAR |
|||
Avg_num :INT; |
|||
Value_temp :ARRAY[0..30]OF DINT; |
|||
ton1 :ton; |
|||
Value_sum :DINT; |
|||
temp :BOOL; |
|||
i,j,k :INT:=1; |
|||
ton0 :ton; |
|||
ini :BOOL; |
|||
END_VAR |
|||
(* |
|||
|
|||
时 间:20191006 |
|||
版 本:1.1 |
|||
作 者:姚立 |
|||
名 称:平均采样程序 |
|||
说 明:平均采样默认20次,间隔100ms |
|||
备 注: |
|||
依赖块: |
|||
时 间:20211110 |
|||
版 本:1.2 |
|||
作 者:潘平 |
|||
名 称:平均采样程序 |
|||
说 明:平均采样默认30次,间隔100ms,修正程序未做平均值计算问题,始终位于初始化程序内运行 |
|||
备 注: |
|||
依赖块: |
|||
*) |
|||
|
|||
if ini=0 then |
|||
ini:=1; |
|||
end_if; |
|||
|
|||
if Num>30 then |
|||
Avg_num:=30; |
|||
else |
|||
Avg_num:=Num; |
|||
end_if; |
|||
|
|||
(*初始化30s无延时采样,30s后每avg_delay采样1次*) |
|||
ton0(in:=ini,PT:= t#30s); |
|||
if ton0.q=0 then |
|||
k:=k+1;(*程序开始时,取值次数不足20次,为k次*) |
|||
if k>Avg_num then |
|||
k:=Avg_num; |
|||
end_if; |
|||
Value_temp[1]:=INT_TO_DINT(Input); |
|||
for i:=(Avg_num-1) to 1 by -1 do |
|||
j:=i+1; |
|||
Value_temp[j]:=Value_temp[i]; |
|||
end_for; |
|||
Value_sum:=0; |
|||
for i:=1 to Avg_num by 1 do |
|||
Value_sum:=Value_sum+Value_temp[i]; |
|||
end_for; |
|||
output:=DINT_TO_INT(Value_sum/INT_TO_DINT(k)); |
|||
else |
|||
ton1(PT:= Delay ); |
|||
ton1.in:=not ton1.q; |
|||
temp:=0; |
|||
if ton1.q=1 and temp=0 then |
|||
k:=k+1;(*程序开始时,取值次数不足30次,为k次*) |
|||
if k>Avg_num then |
|||
k:=Avg_num; |
|||
end_if; |
|||
temp:=1; |
|||
Value_temp[1]:=INT_TO_DINT(Input); |
|||
for i:=(Avg_num-1) to 1 by -1 do |
|||
j:=i+1; |
|||
Value_temp[j]:=Value_temp[i]; |
|||
end_for; |
|||
Value_sum:=0; |
|||
for i:=1 to Avg_num by 1 do |
|||
Value_sum:=Value_sum+Value_temp[i]; |
|||
end_for; |
|||
end_if; |
|||
output:=DINT_TO_INT(Value_sum/INT_TO_DINT(k)); |
|||
end_if; |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,96 @@ |
|||
FUNCTION_BLOCK AVERAGE |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
Input :INT; |
|||
Num :INT:=30; |
|||
Delay :Time:=t#100ms; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
Output :INT; |
|||
END_VAR |
|||
|
|||
VAR |
|||
Avg_num :INT; |
|||
Value_temp :ARRAY[0..30]OF DINT; |
|||
ton1 :ton; |
|||
Value_sum :DINT; |
|||
temp :BOOL; |
|||
i,j,k :INT:=1; |
|||
ton0 :ton; |
|||
ini :BOOL; |
|||
END_VAR |
|||
(* |
|||
|
|||
时 间:20191006 |
|||
版 本:1.1 |
|||
作 者:姚立 |
|||
名 称:平均采样程序 |
|||
说 明:平均采样默认20次,间隔100ms |
|||
备 注: |
|||
依赖块: |
|||
时 间:20211110 |
|||
版 本:1.2 |
|||
作 者:潘平 |
|||
名 称:平均采样程序 |
|||
说 明:平均采样默认30次,间隔100ms,修正程序未做平均值计算问题,始终位于初始化程序内运行 |
|||
备 注: |
|||
依赖块: |
|||
*) |
|||
|
|||
if ini=0 then |
|||
ini:=1; |
|||
end_if; |
|||
|
|||
if Num>30 then |
|||
Avg_num:=30; |
|||
else |
|||
Avg_num:=Num; |
|||
end_if; |
|||
|
|||
(*初始化30s无延时采样,30s后每avg_delay采样1次*) |
|||
ton0(in:=ini,PT:= t#30s); |
|||
if ton0.q=0 then |
|||
k:=k+1;(*程序开始时,取值次数不足20次,为k次*) |
|||
if k>Avg_num then |
|||
k:=Avg_num; |
|||
end_if; |
|||
Value_temp[1]:=INT_TO_DINT(Input); |
|||
for i:=(Avg_num-1) to 1 by -1 do |
|||
j:=i+1; |
|||
Value_temp[j]:=Value_temp[i]; |
|||
end_for; |
|||
Value_sum:=0; |
|||
for i:=1 to Avg_num by 1 do |
|||
Value_sum:=Value_sum+Value_temp[i]; |
|||
end_for; |
|||
output:=DINT_TO_INT(Value_sum/INT_TO_DINT(k)); |
|||
else |
|||
ton1(PT:= Delay ); |
|||
ton1.in:=not ton1.q; |
|||
temp:=0; |
|||
if ton1.q=1 and temp=0 then |
|||
k:=k+1;(*程序开始时,取值次数不足30次,为k次*) |
|||
if k>Avg_num then |
|||
k:=Avg_num; |
|||
end_if; |
|||
temp:=1; |
|||
Value_temp[1]:=INT_TO_DINT(Input); |
|||
for i:=(Avg_num-1) to 1 by -1 do |
|||
j:=i+1; |
|||
Value_temp[j]:=Value_temp[i]; |
|||
end_for; |
|||
Value_sum:=0; |
|||
for i:=1 to Avg_num by 1 do |
|||
Value_sum:=Value_sum+Value_temp[i]; |
|||
end_for; |
|||
end_if; |
|||
output:=DINT_TO_INT(Value_sum/INT_TO_DINT(k)); |
|||
end_if; |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
File diff suppressed because it is too large
@ -0,0 +1,385 @@ |
|||
FUNCTION_BLOCK BS_CMFCU |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
FAU_STRUCT_IN :FAU_IN; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
FAU_STRUCT_OUT :FAU_OUT; |
|||
END_VAR |
|||
|
|||
VAR |
|||
|
|||
FAU_SPID :BS_PID; |
|||
FAU_WPID :BS_PID; |
|||
FAU_RunTime :BS_Runtime; |
|||
FAU_WVCTEMP :REAL; |
|||
RunTon1 :TON; |
|||
RunTon2 :TON; |
|||
RunTon3 :TON; |
|||
RunTon5 :TON; |
|||
FanTon1 :TON; |
|||
FanTon2 :TON; |
|||
FanTon2q :BOOL; |
|||
RunTof1 :TOF; |
|||
RunTof2 :TOF; |
|||
RunTof3 :TOF; |
|||
DevCheck1_time :TIME :=t#15s; (*设备运行状态反馈*) |
|||
DevCheck2_time :TIME :=t#15s; (*设备运行状态反馈*) |
|||
AFSDelay_time :TIME :=t#10s; |
|||
Status0 :INT; |
|||
Status1 :INT; |
|||
Status2 :INT; |
|||
Status3 :INT; |
|||
FAU_SPID_VP :REAL; |
|||
FAU_SPID_VI :REAL; |
|||
FAU_WPID_VP :REAL; |
|||
FAU_WPID_VI :REAL; |
|||
PID_in :BOOL; |
|||
PID_timer :TON; |
|||
AFSM :BOOL; |
|||
FDSM :BOOL; |
|||
FDOM :BOOL; |
|||
FDOTon :TON; |
|||
FDSTon :TON; |
|||
FAU_FEC :BS_FEC; |
|||
FAU_CM :BOOL; |
|||
FAU_VFCSM :INT; |
|||
ini :BOOL; |
|||
VFMVM :INT; |
|||
AFSON :BOOL; |
|||
AFSOF :BOOL; |
|||
AFSTON :TON; |
|||
AFSTOF :TOF; |
|||
FVCS :REAL; |
|||
|
|||
END_VAR |
|||
(* |
|||
|
|||
时 间:20201028 |
|||
版 本:1.1 |
|||
作 者:姚立 |
|||
名 称:江苏省教育厅定制吊顶空调机组程序功能块 |
|||
说 明: |
|||
输入变量 |
|||
FAU_STRUCT_IN. |
|||
SM :INT ; 季节模式 0夏季 1冬季 2过渡 |
|||
LM :LM ; 联动模式 0无联动 1联动 |
|||
Run :BOOL; 运行状态 |
|||
Fault :BOOL; 故障状态 |
|||
Auto :BOOL; 自动状态 |
|||
Control :BOOL; 程序控制 |
|||
FVMC :BOOL; 风阀手动控制 |
|||
FVMV :REAL; 风阀手动控制值 |
|||
FVOCT :TIME; 风阀开启时间周期设定OpenCycleTime |
|||
FVOST :TIME; 风阀开启稳定时间设定OpenStableTime |
|||
TSET :REAL; 温度设定 |
|||
WVMC :BOOL; 水阀手动控制 |
|||
WVMV :REAL; 水阀手动控制值 |
|||
VFMC :BOOL; 变频手动控制 |
|||
VFMV :INT; 变频设定值 |
|||
STS :REAL; 送风温度 |
|||
RST :BOOL; 运行时间累计重置 |
|||
RSTV :REAL; 运行时间累计重置值 |
|||
FPS :BOOL; 风机压差 |
|||
IPS :BOOL; 滤网压差 |
|||
AFS :BOOL; 低温断路开关 |
|||
ISO1 :BOOL; 运行故障反馈隔离 |
|||
ISO2 :BOOL; 风机压差反馈隔离 |
|||
ISO3 :BOOL; 低温断路报警隔离 |
|||
VFBS :INT; 变频反馈 |
|||
VP :REAL; PI设定值P |
|||
VI :REAL; PI设定值I |
|||
FDELAY :TIME; 风机启动延时 |
|||
VDELAY :TIME; 风阀信号切除延时 |
|||
|
|||
FAU_STRUCT_OUT. |
|||
WVCS :INT ; 水阀控制转换值,放大100倍 |
|||
VFCS :INT ; 变频控制 (35~50) |
|||
FVCS :INT ; 风阀控制 (50~100) |
|||
Control :BOOL; 启停控制 |
|||
RH :REAL; 运行小时 |
|||
SN :INT ; 设备状态代码 |
|||
|
|||
包含以下几点功能 |
|||
1.运行故障回检,输出故障代码,支持故障报警隔离 |
|||
2.水阀PID调节/手动调节 |
|||
3.运行时间累计 |
|||
4.防冻联动程序 |
|||
5.风阀联动程序,默认50%开度,开机根据OST稳定100%一段时间,每隔设定时间OCT(预设4小时),再开启至100%开度稳定时间OST |
|||
7.风机启停联动程序 |
|||
8.变频程序 |
|||
|
|||
备 注: |
|||
依赖块: |
|||
BS_PID; |
|||
BS_Runtime; |
|||
|
|||
*)(* |
|||
if ini=0 then |
|||
FAU_STRUCT_IN.VFMV:=40; |
|||
ini:=1; |
|||
end_if;*) |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
(******************************************************CO2联动程序******************************************************* |
|||
暂由总控来进行 |
|||
if FAU_STRUCT_IN.LM=0 then |
|||
if FAU_STRUCT_IN.Control=1 then |
|||
FAU_CM:=1; |
|||
else FAU_CM:=0; |
|||
end_if; |
|||
end_if; |
|||
|
|||
if FAU_STRUCT_IN.LM=1 then |
|||
FAU_FEC(RUN :=FAU_STRUCT_IN.CM , SET :=FAU_STRUCT_IN.CO2SET , FB :=FAU_STRUCT_IN.CO2S , DEAD_BAND :=10.0 , DELAY :=t#20s | FAU_CM:= DevC); |
|||
end_if; |
|||
*) |
|||
|
|||
(******************************************************新风机启停程序********************************************************) |
|||
|
|||
if AFSM=0 then(*防冻报警触发隔离程序段起始*) |
|||
|
|||
(*流程启动,先启动风阀*) |
|||
if FAU_STRUCT_IN.Control=1 then |
|||
FanTon1 ( IN:=FanTon2q , PT:=FAU_STRUCT_IN.FVOCT ); |
|||
FanTon2 ( IN:=FanTon1.q , PT:=FAU_STRUCT_IN.FVOST ); |
|||
FanTon2q:=not FanTon2.q; |
|||
if FAU_STRUCT_IN.FVMC=0 then |
|||
if FanTon1.q=1 and FanTon2.q=0 then |
|||
FAU_STRUCT_OUT.FVCS:=50; |
|||
else |
|||
FAU_STRUCT_OUT.FVCS:=100; |
|||
end_if; |
|||
else |
|||
FAU_STRUCT_OUT.FVCS:=FAU_STRUCT_IN.FVMV; |
|||
end_if; |
|||
end_if; |
|||
|
|||
(***************************************风机延时启动程序**********************************************) |
|||
|
|||
RunTon3 ( IN:=FAU_STRUCT_IN.Control , PT:=FAU_STRUCT_IN.FDELAY | FAU_STRUCT_OUT.Control:=q ); |
|||
|
|||
|
|||
if FAU_STRUCT_IN.Run=1 then |
|||
(*变频器输出赋值*) |
|||
if FAU_STRUCT_IN.VFMC =1 then |
|||
if FAU_STRUCT_IN.VFMV<=50 and FAU_STRUCT_IN.VFMV>=35 then |
|||
FAU_STRUCT_OUT.VFCS:=FAU_STRUCT_IN.VFMV; |
|||
end_if; |
|||
if FAU_STRUCT_IN.VFMV>50 then |
|||
FAU_STRUCT_OUT.VFCS:=50; |
|||
end_if; |
|||
if FAU_STRUCT_IN.VFMV<35 then |
|||
FAU_STRUCT_OUT.VFCS:=35; |
|||
end_if; |
|||
else |
|||
FAU_STRUCT_OUT.VFCS:=50; |
|||
end_if; |
|||
else |
|||
FAU_STRUCT_OUT.VFCS:=0; |
|||
end_if; |
|||
|
|||
|
|||
(******************************************************水阀控制******************************************************) |
|||
|
|||
PID_in:= not PID_timer.q; |
|||
PID_timer(in:=PID_in, pt:=t#1s );(*PID积分时间*) |
|||
|
|||
if FAU_STRUCT_IN.WVMC=0 then |
|||
if FAU_STRUCT_IN.Run=1 then |
|||
if FAU_STRUCT_IN.VP<>0.0 and FAU_STRUCT_IN.VI<>0.0 then |
|||
FAU_SPID_VP:=-FAU_STRUCT_IN.VP; |
|||
FAU_SPID_VI:=-FAU_STRUCT_IN.VI; |
|||
FAU_WPID_VP:=FAU_STRUCT_IN.VP; |
|||
FAU_WPID_VI:=FAU_STRUCT_IN.VI; |
|||
else |
|||
FAU_SPID_VP:=-30.0; |
|||
FAU_SPID_VI:=-150.0; |
|||
FAU_WPID_VP:=30.0; |
|||
FAU_WPID_VI:=150.0; |
|||
end_if; |
|||
(*制冷季*) |
|||
if FAU_STRUCT_IN.SM=0 then |
|||
if FAU_STRUCT_IN.STS-FAU_STRUCT_IN.TSET>=3.0 then |
|||
FAU_WVCTEMP:=100.0; |
|||
end_if; |
|||
if PID_timer.q then |
|||
FAU_SPID(RUN:= FAU_STRUCT_IN.RUN,STOP_D:=1,STOP_I:=0,SET:=FAU_STRUCT_IN.TSET,FB:=FAU_STRUCT_IN.STS,KFB:=1.0,KP:=FAU_SPID_VP,TI:=FAU_SPID_VI,TD:=-1.0,DEAD_BAND:=0.2,YMAX:=100.0,YMIN:=0.0 | FAU_WVCTEMP:=OUT); |
|||
end_if; |
|||
end_if; |
|||
(*制热季*) |
|||
if FAU_STRUCT_IN.SM=1 then |
|||
if FAU_STRUCT_IN.TSET-FAU_STRUCT_IN.STS>=3.0 then |
|||
FAU_WVCTEMP:=100.0; |
|||
end_if; |
|||
if PID_timer.q then |
|||
FAU_WPID(RUN:= FAU_STRUCT_IN.RUN,STOP_D:=1,STOP_I:=0,SET:=FAU_STRUCT_IN.TSET,FB:=FAU_STRUCT_IN.STS,KFB:=1.0,KP:=FAU_WPID_VP,TI:=FAU_WPID_VI,TD:=1.0,DEAD_BAND:=0.2,YMAX:=100.0,YMIN:=0.0 | FAU_WVCTEMP:=OUT); |
|||
end_if; |
|||
end_if; |
|||
(*过渡季*) |
|||
if FAU_STRUCT_IN.SM=2 then |
|||
FAU_WVCTEMP:=0.0; |
|||
end_if; |
|||
else |
|||
FAU_WVCTEMP:=0.0; |
|||
end_if; |
|||
else |
|||
FAU_WVCTEMP:=FAU_STRUCT_IN.WVMV; |
|||
end_if; |
|||
|
|||
end_if;(*防冻报警触发隔离程序段结束*) |
|||
|
|||
|
|||
(*水阀赋值量程转换*) |
|||
FAU_STRUCT_OUT.WVCS:=REAL_TO_INT(FAU_WVCTEMP*100.0); |
|||
|
|||
|
|||
(***************************************风阀阀门到位后延迟停止控制点输出程序********************************************* |
|||
|
|||
FDOTon( IN:=FDOM , PT:=FAU_STRUCT_IN.VDELAY); |
|||
FDSTon( IN:=FDSM , PT:=FAU_STRUCT_IN.VDELAY); |
|||
|
|||
if FDOM=1 and FDOTon.q=0 then |
|||
FAU_STRUCT_OUT.FDO:=1; |
|||
else FAU_STRUCT_OUT.FDO:=0; |
|||
end_if; |
|||
if FDSM=1 and FDSTon.q=0 then |
|||
FAU_STRUCT_OUT.FDS:=1; |
|||
else FAU_STRUCT_OUT.FDS:=0; |
|||
end_if; |
|||
|
|||
*) |
|||
(*变频器软启动,软停机程序*) |
|||
(* |
|||
变频软启动、停止完成后开启主机,关闭主机,但因变频器一般自带软启动、软停止,暂时保留此功能 |
|||
|
|||
RunTon5 ( IN:=RunTon5M , PT:=DevDelay5_time ); |
|||
RunTon5M:= not RunTon5.q; |
|||
|
|||
if RunTon3.Q =1 then |
|||
if RunTon5.Q then |
|||
FAU_VFCSM:=FAU_VFCSM+1; |
|||
end_if; |
|||
if FAU_VFCSM>FAU_STRUCT_IN.VFMV then |
|||
FAU_VFCSM:=FAU_STRUCT_IN.VFMV; |
|||
end_if; |
|||
end_if; |
|||
if FAU_CM =0 then |
|||
if RunTon5.Q then |
|||
FAU_VFCSM:=FAU_VFCSM-1; |
|||
end_if; |
|||
if FAU_VFCSM<1 then |
|||
FAU_VFCSM:=0; |
|||
FAU_STRUCT_OUT.Control :=0; |
|||
FDOM:=0; |
|||
FDSM:=1; |
|||
end_if; |
|||
end_if; |
|||
|
|||
|
|||
if RunTon3.q=1 then |
|||
if FAU_VFCSM=FAU_STRUCT_IN.VFMV then |
|||
FAU_STRUCT_OUT.Control:=1; |
|||
end_if; |
|||
if FAU_VFCSM=0 then |
|||
FAU_STRUCT_OUT.Control:=0; |
|||
end_if; |
|||
end_if; |
|||
|
|||
FAU_STRUCT_OUT.VFCS :=FAU_VFCSM; |
|||
*) |
|||
(******************************************************防冻联动程序******************************************************) |
|||
|
|||
if FAU_STRUCT_IN.ISO3=0 and FAU_STRUCT_IN.SM=1 then |
|||
AFSTON ( IN:=FAU_STRUCT_IN.AFS , PT:=AFSDelay_time | AFSON:=q ); |
|||
AFSTOF ( IN:=FAU_STRUCT_IN.AFS , PT:=AFSDelay_time | AFSOF:=q ); |
|||
if AFSON=1 and AFSOF=1 then |
|||
AFSM:=1 ; |
|||
end_if; |
|||
if AFSOF=0 and AFSON=0 then |
|||
AFSM:=0 ; |
|||
end_if; |
|||
if AFSM=1 then |
|||
FAU_STRUCT_OUT.Control:=0; |
|||
FAU_WVCTEMP:=100.0; |
|||
FDSM:=1; |
|||
FDOM:=0; |
|||
Status3:=1; |
|||
else |
|||
Status3:=0; |
|||
end_if; |
|||
end_if; |
|||
(*非冬季或隔离切除防冻报警*) |
|||
if FAU_STRUCT_IN.ISO3=1 or FAU_STRUCT_IN.SM<>1 then |
|||
AFSM:=0; |
|||
end_if; |
|||
|
|||
|
|||
(******************************************************运行故障回检******************************************************) |
|||
RunTon1( IN:=FAU_STRUCT_IN.Control , PT:=DevCheck1_time); |
|||
RunTof1( IN:=FAU_STRUCT_IN.Control , PT:=DevCheck1_time); |
|||
RunTon2( IN:=FAU_STRUCT_IN.Control , PT:=DevCheck2_time); |
|||
RunTof2( IN:=FAU_STRUCT_IN.Control , PT:=DevCheck2_time); |
|||
|
|||
(*设备电气控制箱控制指令与设备运行反馈不一致故障检测,检测故障产生原因电箱没电、断路器断开、中间继电器与接触器故障等为Status0*); |
|||
|
|||
if FAU_STRUCT_IN.ISO1=0 then |
|||
if RunTon1.q or not RunTof1.q then |
|||
if FAU_STRUCT_OUT.Control<>FAU_STRUCT_IN.Run then |
|||
Status0:=1; |
|||
else |
|||
Status0:=0; |
|||
end_if; |
|||
if FAU_STRUCT_IN.Fault=1 then |
|||
Status1:=1; |
|||
else |
|||
Status1:=0; |
|||
end_if; |
|||
end_if; |
|||
else |
|||
Status0:=0; |
|||
Status1:=0; |
|||
end_if; |
|||
|
|||
(*设备电气控制箱控制指令与设备运行反馈不一致故障检测,检测故障产生风机压差无回检信号*); |
|||
if FAU_STRUCT_IN.ISO2=0 then |
|||
if RunTon2.q or not RunTof2.q then |
|||
if FAU_STRUCT_OUT.Control<>FAU_STRUCT_IN.FPS then |
|||
Status2:=1; |
|||
else |
|||
Status2:=0; |
|||
end_if; |
|||
end_if; |
|||
else |
|||
Status2:=0; |
|||
end_if; |
|||
|
|||
|
|||
(*输出故障代码*) |
|||
if FAU_STRUCT_OUT.Control<>0 then |
|||
FAU_STRUCT_OUT.SN := Status0 * 1 + Status1* 2 + Status2* 4 + Status3*8; |
|||
else |
|||
FAU_STRUCT_OUT.SN := 0 ; |
|||
end_if; |
|||
|
|||
(******************************************************运行时间累计******************************************************) |
|||
FAU_RunTime(RUN :=FAU_STRUCT_IN.Run , RUNTIMESET :=FAU_STRUCT_IN.RSTV , RUNTIMERST :=FAU_STRUCT_IN.RST | FAU_STRUCT_OUT.RH:= RUNTIME); |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,22 @@ |
|||
FUNCTION_BLOCK BS_CMFCU |
|||
|
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
|
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
|
|||
END_VAR |
|||
|
|||
VAR |
|||
|
|||
END_VAR |
|||
|
|||
; |
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
File diff suppressed because it is too large
File diff suppressed because it is too large
@ -0,0 +1,97 @@ |
|||
FUNCTION_BLOCK BS_DevHeart |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
|
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
HeartVavle :int; |
|||
END_VAR |
|||
|
|||
VAR |
|||
ton1 :ton; |
|||
END_VAR |
|||
|
|||
(*Automatically declared*) |
|||
VAR_EXTERNAL |
|||
END_VAR |
|||
(** **) |
|||
(** {* **) |
|||
(** **) |
|||
(** 时 间:20191003 **) |
|||
(** 版 本:1.0 **) |
|||
(** 作 者:姚立 **) |
|||
(** 名 称:设备心跳存活程序 **) |
|||
(** 说 明:用于判断设备是否存活的心跳程序 **) |
|||
(** 备 注: **) |
|||
(** 依赖块:无 **) |
|||
(** **) |
|||
(** *} **) |
|||
(** **) |
|||
(** {* **) |
|||
(** **) |
|||
(** Output_Type 输出 **) |
|||
(** 心跳数据0-99 **) |
|||
(** **) |
|||
(** *} **) |
|||
(** 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_000000000000001_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** HeartVavle :=HeartVavle+1; **) |
|||
(* assign - Stmt *) |
|||
LD HeartVavle |
|||
ADD 1 |
|||
ST HeartVavle |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000001_000000000000001: |
|||
ODK_END_IF_000000000000001: |
|||
|
|||
(** if HeartVavle =99 then **) |
|||
(* if - Cond *) |
|||
LD HeartVavle |
|||
EQ 99 |
|||
JMPCN ODK_SKIP_000000000000002_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** HeartVavle:=0; **) |
|||
(* assign - Stmt *) |
|||
LD 0 |
|||
ST HeartVavle |
|||
|
|||
JMP ODK_END_IF_000000000000002 |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000002_000000000000001: |
|||
ODK_END_IF_000000000000002: |
|||
|
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,92 @@ |
|||
FUNCTION_BLOCK BS_DevHeartCheck |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
DHV :INT; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
DHR :BOOL; |
|||
END_VAR |
|||
|
|||
VAR |
|||
DHVT :INT; |
|||
TON01 :TON; |
|||
END_VAR |
|||
|
|||
(*Automatically declared*) |
|||
VAR_EXTERNAL |
|||
END_VAR |
|||
(** **) |
|||
(** {* **) |
|||
(** **) |
|||
(** 时 间:20191003 **) |
|||
(** 版 本:1.0 **) |
|||
(** 作 者:姚立 **) |
|||
(** 名 称:设备心跳程序 **) |
|||
(** 说 明: **) |
|||
(** 备 注: **) |
|||
(** 依赖块:无 **) |
|||
(** **) |
|||
(** *} **) |
|||
(** **) |
|||
(** {* **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** *} **) |
|||
(** TON01(PT:=t#60s); **) |
|||
(* call - Stmt *) |
|||
CAL TON01 ( |
|||
PT := t#60s |
|||
) |
|||
|
|||
(** **) |
|||
(** if DHV=DHVT then **) |
|||
(* if - Cond *) |
|||
LD DHV |
|||
EQ DHVT |
|||
JMPCN ODK_SKIP_000000000000001_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** TON01.IN:=1; **) |
|||
(* assign - Stmt *) |
|||
LD 1 |
|||
ST TON01.IN |
|||
|
|||
(** DHVT:=DHV; **) |
|||
(* assign - Stmt *) |
|||
LD DHV |
|||
ST DHVT |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** else **) |
|||
(* else *) |
|||
ODK_SKIP_000000000000001_000000000000001: |
|||
|
|||
(* else - Stmts *) |
|||
|
|||
(** TON01.IN:=0; **) |
|||
(* assign - Stmt *) |
|||
LD 0 |
|||
ST TON01.IN |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_END_IF_000000000000001: |
|||
|
|||
(** **) |
|||
(** DHR := not TON01.Q; **) |
|||
(* assign - Stmt *) |
|||
LD TON01.Q |
|||
NOT |
|||
ST DHR |
|||
|
|||
(** **) |
|||
(** **) |
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,317 @@ |
|||
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 |
@ -0,0 +1,173 @@ |
|||
FUNCTION_BLOCK BS_DelayGroupVavle |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
LOCK :INT:=0; |
|||
BOOL_GroupSet :BOOL; |
|||
INT_GroupSet :INT; |
|||
REAL_GroupSet :REAL; |
|||
REAL_IN :ARRAY[0..10] OF REAL; |
|||
INT_IN :ARRAY[0..10] OF INT; |
|||
BOOL_IN :ARRAY[0..10] OF BOOL; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
REAL_OUT :ARRAY[0..10] OF REAL; |
|||
INT_OUT :ARRAY[0..10] OF INT; |
|||
BOOL_OUT :ARRAY[0..10] OF BOOL; |
|||
END_VAR |
|||
|
|||
VAR |
|||
REAL_GroupSetP :REAL; |
|||
BOOL_GroupSetP :BOOL; |
|||
INT_GroupSetP :INT; |
|||
Delay_Ton1 :TON; |
|||
Delay_Ton2 :TON; |
|||
Delay_Ton3 :TON; |
|||
END_VAR |
|||
(* |
|||
|
|||
时 间:20191008 |
|||
版 本:1.1 |
|||
作 者:姚立 |
|||
名 称:变量延时批量赋值 |
|||
说 明:用于变量延时批量赋值,可选锁定单体变量输入 |
|||
1-5s分别赋值1-10变量/1-5s分别赋值11-20变量; |
|||
LOCK 0均不锁定;1锁定BOOL;2,锁定INT;3,锁定REAL; |
|||
备 注:支持10组BOOL,10组REAL,10组INT |
|||
依赖块:无 |
|||
|
|||
*) |
|||
(**********一个REAL型总变量对50个变量赋值,50个变量也可单独赋值*************) |
|||
Delay_Ton1(PT :=t#5s ); |
|||
if REAL_GroupSet<>REAL_GroupSetP and Delay_Ton1.Q=0 then |
|||
Delay_Ton1.IN:=1; |
|||
end_if; |
|||
if Delay_Ton1.Q=1 then |
|||
Delay_Ton1.IN:=0; |
|||
end_if; |
|||
|
|||
Delay_Ton2(PT :=t#5s ); |
|||
if BOOL_GroupSet<>BOOL_GroupSetP and Delay_Ton2.Q=0 then |
|||
Delay_Ton2.IN:=1; |
|||
end_if; |
|||
if Delay_Ton2.Q=1 then |
|||
Delay_Ton2.IN:=0; |
|||
end_if; |
|||
|
|||
Delay_Ton3(PT :=t#5s ); |
|||
if INT_GroupSet<>INT_GroupSetP and Delay_Ton3.Q=0 then |
|||
Delay_Ton3.IN:=1; |
|||
end_if; |
|||
if Delay_Ton3.Q=1 then |
|||
Delay_Ton3.IN:=0; |
|||
end_if; |
|||
|
|||
if Delay_Ton1.IN=1 then |
|||
|
|||
if Delay_Ton1.et>t#0.0s then REAL_OUT[01]:=REAL_GroupSet; end_if; |
|||
if Delay_Ton1.et>t#0.5s then REAL_OUT[02]:=REAL_GroupSet; end_if; |
|||
if Delay_Ton1.et>t#1.0s then REAL_OUT[03]:=REAL_GroupSet; end_if; |
|||
if Delay_Ton1.et>t#1.5s then REAL_OUT[04]:=REAL_GroupSet; end_if; |
|||
if Delay_Ton1.et>t#2.0s then REAL_OUT[05]:=REAL_GroupSet; end_if; |
|||
if Delay_Ton1.et>t#2.5s then REAL_OUT[06]:=REAL_GroupSet; end_if; |
|||
if Delay_Ton1.et>t#3.0s then REAL_OUT[07]:=REAL_GroupSet; end_if; |
|||
if Delay_Ton1.et>t#3.5s then REAL_OUT[08]:=REAL_GroupSet; end_if; |
|||
if Delay_Ton1.et>t#4.0s then REAL_OUT[09]:=REAL_GroupSet; end_if; |
|||
if Delay_Ton1.et>t#4.5s then REAL_OUT[10]:=REAL_GroupSet; end_if; |
|||
|
|||
elsif REAL_GroupSet=REAL_GroupSetP then |
|||
REAL_OUT[01]:=REAL_IN[01]; |
|||
REAL_OUT[02]:=REAL_IN[02]; |
|||
REAL_OUT[03]:=REAL_IN[03]; |
|||
REAL_OUT[04]:=REAL_IN[04]; |
|||
REAL_OUT[05]:=REAL_IN[05]; |
|||
REAL_OUT[06]:=REAL_IN[06]; |
|||
REAL_OUT[07]:=REAL_IN[07]; |
|||
REAL_OUT[08]:=REAL_IN[08]; |
|||
REAL_OUT[09]:=REAL_IN[09]; |
|||
REAL_OUT[10]:=REAL_IN[10]; |
|||
|
|||
end_if; |
|||
|
|||
|
|||
(**********一个BOOL型总变量对50个变量赋值,50个变量也可单独赋值*************) |
|||
|
|||
if Delay_Ton2.IN=1 then |
|||
|
|||
if Delay_Ton2.et>t#0.0s then BOOL_OUT[01]:=BOOL_GroupSet; end_if; |
|||
if Delay_Ton2.et>t#0.5s then BOOL_OUT[02]:=BOOL_GroupSet; end_if; |
|||
if Delay_Ton2.et>t#1.0s then BOOL_OUT[03]:=BOOL_GroupSet; end_if; |
|||
if Delay_Ton2.et>t#1.5s then BOOL_OUT[04]:=BOOL_GroupSet; end_if; |
|||
if Delay_Ton2.et>t#2.0s then BOOL_OUT[05]:=BOOL_GroupSet; end_if; |
|||
if Delay_Ton2.et>t#2.5s then BOOL_OUT[06]:=BOOL_GroupSet; end_if; |
|||
if Delay_Ton2.et>t#3.0s then BOOL_OUT[07]:=BOOL_GroupSet; end_if; |
|||
if Delay_Ton2.et>t#3.5s then BOOL_OUT[08]:=BOOL_GroupSet; end_if; |
|||
if Delay_Ton2.et>t#4.0s then BOOL_OUT[09]:=BOOL_GroupSet; end_if; |
|||
if Delay_Ton2.et>t#4.5s then BOOL_OUT[10]:=BOOL_GroupSet; end_if; |
|||
|
|||
elsif BOOL_GroupSet=BOOL_GroupSetP then |
|||
BOOL_OUT[01]:=BOOL_IN[01]; |
|||
BOOL_OUT[02]:=BOOL_IN[02]; |
|||
BOOL_OUT[03]:=BOOL_IN[03]; |
|||
BOOL_OUT[04]:=BOOL_IN[04]; |
|||
BOOL_OUT[05]:=BOOL_IN[05]; |
|||
BOOL_OUT[06]:=BOOL_IN[06]; |
|||
BOOL_OUT[07]:=BOOL_IN[07]; |
|||
BOOL_OUT[08]:=BOOL_IN[08]; |
|||
BOOL_OUT[09]:=BOOL_IN[09]; |
|||
BOOL_OUT[10]:=BOOL_IN[10]; |
|||
|
|||
end_if; |
|||
|
|||
|
|||
(**********一个INT型总变量对50个变量赋值,50个变量也可单独赋值*************) |
|||
|
|||
if Delay_Ton3.IN=1 then |
|||
|
|||
if Delay_Ton3.et>t#0.0s then INT_OUT[01]:=INT_GroupSet; end_if; |
|||
if Delay_Ton3.et>t#0.5s then INT_OUT[02]:=INT_GroupSet; end_if; |
|||
if Delay_Ton3.et>t#1.0s then INT_OUT[03]:=INT_GroupSet; end_if; |
|||
if Delay_Ton3.et>t#1.5s then INT_OUT[04]:=INT_GroupSet; end_if; |
|||
if Delay_Ton3.et>t#2.0s then INT_OUT[05]:=INT_GroupSet; end_if; |
|||
if Delay_Ton3.et>t#2.5s then INT_OUT[06]:=INT_GroupSet; end_if; |
|||
if Delay_Ton3.et>t#3.0s then INT_OUT[07]:=INT_GroupSet; end_if; |
|||
if Delay_Ton3.et>t#3.5s then INT_OUT[08]:=INT_GroupSet; end_if; |
|||
if Delay_Ton3.et>t#4.0s then INT_OUT[09]:=INT_GroupSet; end_if; |
|||
if Delay_Ton3.et>t#4.5s then INT_OUT[10]:=INT_GroupSet; end_if; |
|||
|
|||
elsif INT_GroupSet=INT_GroupSetP then |
|||
INT_OUT[01]:=INT_IN[01]; |
|||
INT_OUT[02]:=INT_IN[02]; |
|||
INT_OUT[03]:=INT_IN[03]; |
|||
INT_OUT[04]:=INT_IN[04]; |
|||
INT_OUT[05]:=INT_IN[05]; |
|||
INT_OUT[06]:=INT_IN[06]; |
|||
INT_OUT[07]:=INT_IN[07]; |
|||
INT_OUT[08]:=INT_IN[08]; |
|||
INT_OUT[09]:=INT_IN[09]; |
|||
INT_OUT[10]:=INT_IN[10]; |
|||
|
|||
end_if; |
|||
|
|||
case lock of |
|||
(*0时,均不锁定,1锁定BOOL;2,锁定INT;3,锁定REAL;*) |
|||
0: |
|||
BOOL_GroupSetP:=BOOL_GroupSet; |
|||
INT_GroupSetP:=INT_GroupSet; |
|||
REAL_GroupSetP:=REAL_GroupSet; |
|||
1: |
|||
INT_GroupSetP:=INT_GroupSet; |
|||
REAL_GroupSetP:=REAL_GroupSet; |
|||
2: |
|||
BOOL_GroupSetP:=BOOL_GroupSet; |
|||
REAL_GroupSetP:=REAL_GroupSet; |
|||
3: |
|||
BOOL_GroupSetP:=BOOL_GroupSet; |
|||
INT_GroupSetP:=INT_GroupSet; |
|||
end_case; |
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,173 @@ |
|||
FUNCTION_BLOCK BS_DelayGroupVavle |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
LOCK :INT:=0; |
|||
BOOL_GroupSet :BOOL; |
|||
INT_GroupSet :INT; |
|||
REAL_GroupSet :REAL; |
|||
REAL_IN :ARRAY[0..10] OF REAL; |
|||
INT_IN :ARRAY[0..10] OF INT; |
|||
BOOL_IN :ARRAY[0..10] OF BOOL; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
REAL_OUT :ARRAY[0..10] OF REAL; |
|||
INT_OUT :ARRAY[0..10] OF INT; |
|||
BOOL_OUT :ARRAY[0..10] OF BOOL; |
|||
END_VAR |
|||
|
|||
VAR |
|||
REAL_GroupSetP :REAL; |
|||
BOOL_GroupSetP :BOOL; |
|||
INT_GroupSetP :INT; |
|||
Delay_Ton1 :TON; |
|||
Delay_Ton2 :TON; |
|||
Delay_Ton3 :TON; |
|||
END_VAR |
|||
(* |
|||
|
|||
时 间:20191008 |
|||
版 本:1.1 |
|||
作 者:姚立 |
|||
名 称:变量延时批量赋值 |
|||
说 明:用于变量延时批量赋值,可选锁定单体变量输入 |
|||
1-5s分别赋值1-10变量/1-5s分别赋值11-20变量; |
|||
LOCK 0均不锁定;1锁定BOOL;2,锁定INT;3,锁定REAL; |
|||
备 注:支持10组BOOL,10组REAL,10组INT |
|||
依赖块:无 |
|||
|
|||
*) |
|||
(**********一个REAL型总变量对50个变量赋值,50个变量也可单独赋值*************) |
|||
Delay_Ton1(PT :=t#5s ); |
|||
if REAL_GroupSet<>REAL_GroupSetP and Delay_Ton1.Q=0 then |
|||
Delay_Ton1.IN:=1; |
|||
end_if; |
|||
if Delay_Ton1.Q=1 then |
|||
Delay_Ton1.IN:=0; |
|||
end_if; |
|||
|
|||
Delay_Ton2(PT :=t#5s ); |
|||
if BOOL_GroupSet<>BOOL_GroupSetP and Delay_Ton2.Q=0 then |
|||
Delay_Ton2.IN:=1; |
|||
end_if; |
|||
if Delay_Ton2.Q=1 then |
|||
Delay_Ton2.IN:=0; |
|||
end_if; |
|||
|
|||
Delay_Ton3(PT :=t#5s ); |
|||
if INT_GroupSet<>INT_GroupSetP and Delay_Ton3.Q=0 then |
|||
Delay_Ton3.IN:=1; |
|||
end_if; |
|||
if Delay_Ton3.Q=1 then |
|||
Delay_Ton3.IN:=0; |
|||
end_if; |
|||
|
|||
if Delay_Ton1.IN=1 then |
|||
|
|||
if Delay_Ton1.et>t#0.0s then REAL_OUT[01]:=REAL_GroupSet; end_if; |
|||
if Delay_Ton1.et>t#0.5s then REAL_OUT[02]:=REAL_GroupSet; end_if; |
|||
if Delay_Ton1.et>t#1.0s then REAL_OUT[03]:=REAL_GroupSet; end_if; |
|||
if Delay_Ton1.et>t#1.5s then REAL_OUT[04]:=REAL_GroupSet; end_if; |
|||
if Delay_Ton1.et>t#2.0s then REAL_OUT[05]:=REAL_GroupSet; end_if; |
|||
if Delay_Ton1.et>t#2.5s then REAL_OUT[06]:=REAL_GroupSet; end_if; |
|||
if Delay_Ton1.et>t#3.0s then REAL_OUT[07]:=REAL_GroupSet; end_if; |
|||
if Delay_Ton1.et>t#3.5s then REAL_OUT[08]:=REAL_GroupSet; end_if; |
|||
if Delay_Ton1.et>t#4.0s then REAL_OUT[09]:=REAL_GroupSet; end_if; |
|||
if Delay_Ton1.et>t#4.5s then REAL_OUT[10]:=REAL_GroupSet; end_if; |
|||
|
|||
elsif REAL_GroupSet=REAL_GroupSetP then |
|||
REAL_OUT[01]:=REAL_IN[01]; |
|||
REAL_OUT[02]:=REAL_IN[02]; |
|||
REAL_OUT[03]:=REAL_IN[03]; |
|||
REAL_OUT[04]:=REAL_IN[04]; |
|||
REAL_OUT[05]:=REAL_IN[05]; |
|||
REAL_OUT[06]:=REAL_IN[06]; |
|||
REAL_OUT[07]:=REAL_IN[07]; |
|||
REAL_OUT[08]:=REAL_IN[08]; |
|||
REAL_OUT[09]:=REAL_IN[09]; |
|||
REAL_OUT[10]:=REAL_IN[10]; |
|||
|
|||
end_if; |
|||
|
|||
|
|||
(**********一个BOOL型总变量对50个变量赋值,50个变量也可单独赋值*************) |
|||
|
|||
if Delay_Ton2.IN=1 then |
|||
|
|||
if Delay_Ton2.et>t#0.0s then BOOL_OUT[01]:=BOOL_GroupSet; end_if; |
|||
if Delay_Ton2.et>t#0.5s then BOOL_OUT[02]:=BOOL_GroupSet; end_if; |
|||
if Delay_Ton2.et>t#1.0s then BOOL_OUT[03]:=BOOL_GroupSet; end_if; |
|||
if Delay_Ton2.et>t#1.5s then BOOL_OUT[04]:=BOOL_GroupSet; end_if; |
|||
if Delay_Ton2.et>t#2.0s then BOOL_OUT[05]:=BOOL_GroupSet; end_if; |
|||
if Delay_Ton2.et>t#2.5s then BOOL_OUT[06]:=BOOL_GroupSet; end_if; |
|||
if Delay_Ton2.et>t#3.0s then BOOL_OUT[07]:=BOOL_GroupSet; end_if; |
|||
if Delay_Ton2.et>t#3.5s then BOOL_OUT[08]:=BOOL_GroupSet; end_if; |
|||
if Delay_Ton2.et>t#4.0s then BOOL_OUT[09]:=BOOL_GroupSet; end_if; |
|||
if Delay_Ton2.et>t#4.5s then BOOL_OUT[10]:=BOOL_GroupSet; end_if; |
|||
|
|||
elsif BOOL_GroupSet=BOOL_GroupSetP then |
|||
BOOL_OUT[01]:=BOOL_IN[01]; |
|||
BOOL_OUT[02]:=BOOL_IN[02]; |
|||
BOOL_OUT[03]:=BOOL_IN[03]; |
|||
BOOL_OUT[04]:=BOOL_IN[04]; |
|||
BOOL_OUT[05]:=BOOL_IN[05]; |
|||
BOOL_OUT[06]:=BOOL_IN[06]; |
|||
BOOL_OUT[07]:=BOOL_IN[07]; |
|||
BOOL_OUT[08]:=BOOL_IN[08]; |
|||
BOOL_OUT[09]:=BOOL_IN[09]; |
|||
BOOL_OUT[10]:=BOOL_IN[10]; |
|||
|
|||
end_if; |
|||
|
|||
|
|||
(**********一个INT型总变量对50个变量赋值,50个变量也可单独赋值*************) |
|||
|
|||
if Delay_Ton3.IN=1 then |
|||
|
|||
if Delay_Ton3.et>t#0.0s then INT_OUT[01]:=INT_GroupSet; end_if; |
|||
if Delay_Ton3.et>t#0.5s then INT_OUT[02]:=INT_GroupSet; end_if; |
|||
if Delay_Ton3.et>t#1.0s then INT_OUT[03]:=INT_GroupSet; end_if; |
|||
if Delay_Ton3.et>t#1.5s then INT_OUT[04]:=INT_GroupSet; end_if; |
|||
if Delay_Ton3.et>t#2.0s then INT_OUT[05]:=INT_GroupSet; end_if; |
|||
if Delay_Ton3.et>t#2.5s then INT_OUT[06]:=INT_GroupSet; end_if; |
|||
if Delay_Ton3.et>t#3.0s then INT_OUT[07]:=INT_GroupSet; end_if; |
|||
if Delay_Ton3.et>t#3.5s then INT_OUT[08]:=INT_GroupSet; end_if; |
|||
if Delay_Ton3.et>t#4.0s then INT_OUT[09]:=INT_GroupSet; end_if; |
|||
if Delay_Ton3.et>t#4.5s then INT_OUT[10]:=INT_GroupSet; end_if; |
|||
|
|||
elsif INT_GroupSet=INT_GroupSetP then |
|||
INT_OUT[01]:=INT_IN[01]; |
|||
INT_OUT[02]:=INT_IN[02]; |
|||
INT_OUT[03]:=INT_IN[03]; |
|||
INT_OUT[04]:=INT_IN[04]; |
|||
INT_OUT[05]:=INT_IN[05]; |
|||
INT_OUT[06]:=INT_IN[06]; |
|||
INT_OUT[07]:=INT_IN[07]; |
|||
INT_OUT[08]:=INT_IN[08]; |
|||
INT_OUT[09]:=INT_IN[09]; |
|||
INT_OUT[10]:=INT_IN[10]; |
|||
|
|||
end_if; |
|||
|
|||
case lock of |
|||
(*0时,均不锁定,1锁定BOOL;2,锁定INT;3,锁定REAL;*) |
|||
0: |
|||
BOOL_GroupSetP:=BOOL_GroupSet; |
|||
INT_GroupSetP:=INT_GroupSet; |
|||
REAL_GroupSetP:=REAL_GroupSet; |
|||
1: |
|||
INT_GroupSetP:=INT_GroupSet; |
|||
REAL_GroupSetP:=REAL_GroupSet; |
|||
2: |
|||
BOOL_GroupSetP:=BOOL_GroupSet; |
|||
REAL_GroupSetP:=REAL_GroupSet; |
|||
3: |
|||
BOOL_GroupSetP:=BOOL_GroupSet; |
|||
INT_GroupSetP:=INT_GroupSet; |
|||
end_case; |
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,234 @@ |
|||
FUNCTION_BLOCK BS_DelayRemoteVavle |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
Lock :INT; |
|||
REAL_RemoteSet:REAL; |
|||
REAL_IN01 :REAL; |
|||
REAL_IN02 :REAL; |
|||
REAL_IN03 :REAL; |
|||
REAL_IN04 :REAL; |
|||
REAL_IN05 :REAL; |
|||
REAL_IN06 :REAL; |
|||
REAL_IN07 :REAL; |
|||
REAL_IN08 :REAL; |
|||
REAL_IN09 :REAL; |
|||
REAL_IN10 :REAL; |
|||
|
|||
BOOL_RemoteSet:BOOL; |
|||
BOOL_IN01 :BOOL; |
|||
BOOL_IN02 :BOOL; |
|||
BOOL_IN03 :BOOL; |
|||
BOOL_IN04 :BOOL; |
|||
BOOL_IN05 :BOOL; |
|||
BOOL_IN06 :BOOL; |
|||
BOOL_IN07 :BOOL; |
|||
BOOL_IN08 :BOOL; |
|||
BOOL_IN09 :BOOL; |
|||
BOOL_IN10 :BOOL; |
|||
|
|||
INT_RemoteSet:INT; |
|||
INT_IN01 :INT; |
|||
INT_IN02 :INT; |
|||
INT_IN03 :INT; |
|||
INT_IN04 :INT; |
|||
INT_IN05 :INT; |
|||
INT_IN06 :INT; |
|||
INT_IN07 :INT; |
|||
INT_IN08 :INT; |
|||
INT_IN09 :INT; |
|||
INT_IN10 :INT; |
|||
|
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
REAL_OUT01 :REAL; |
|||
REAL_OUT02 :REAL; |
|||
REAL_OUT03 :REAL; |
|||
REAL_OUT04 :REAL; |
|||
REAL_OUT05 :REAL; |
|||
REAL_OUT06 :REAL; |
|||
REAL_OUT07 :REAL; |
|||
REAL_OUT08 :REAL; |
|||
REAL_OUT09 :REAL; |
|||
REAL_OUT10 :REAL; |
|||
|
|||
BOOL_OUT01 :BOOL; |
|||
BOOL_OUT02 :BOOL; |
|||
BOOL_OUT03 :BOOL; |
|||
BOOL_OUT04 :BOOL; |
|||
BOOL_OUT05 :BOOL; |
|||
BOOL_OUT06 :BOOL; |
|||
BOOL_OUT07 :BOOL; |
|||
BOOL_OUT08 :BOOL; |
|||
BOOL_OUT09 :BOOL; |
|||
BOOL_OUT10 :BOOL; |
|||
|
|||
INT_OUT01 :INT; |
|||
INT_OUT02 :INT; |
|||
INT_OUT03 :INT; |
|||
INT_OUT04 :INT; |
|||
INT_OUT05 :INT; |
|||
INT_OUT06 :INT; |
|||
INT_OUT07 :INT; |
|||
INT_OUT08 :INT; |
|||
INT_OUT09 :INT; |
|||
INT_OUT10 :INT; |
|||
|
|||
END_VAR |
|||
|
|||
VAR |
|||
REAL_RemoteSetP :REAL; |
|||
BOOL_RemoteSetP :BOOL; |
|||
INT_RemoteSetP :INT; |
|||
Delay_Ton1 :TON; |
|||
Delay_Ton2 :TON; |
|||
Delay_Ton3 :TON; |
|||
END_VAR |
|||
(* |
|||
|
|||
时 间:20191008 |
|||
版 本:1.1 |
|||
作 者:姚立 |
|||
名 称:变量延时批量赋值 |
|||
说 明:用于变量延时批量赋值,可选锁定单体变量输入 |
|||
1-5s分别赋值1-10变量/1-5s分别赋值11-20变量; |
|||
LOCK 0均不锁定;1锁定BOOL;2,锁定INT;3,锁定REAL; |
|||
备 注:支持10组BOOL,10组REAL,10组INT |
|||
依赖块:无 |
|||
|
|||
*) |
|||
(**********一个REAL型总变量对50个变量赋值,50个变量也可单独赋值*************) |
|||
Delay_Ton1(PT :=t#5s ); |
|||
if REAL_RemoteSet<>REAL_RemoteSetP and Delay_Ton1.Q=0 then |
|||
Delay_Ton1.IN:=1; |
|||
end_if; |
|||
if Delay_Ton1.Q=1 then |
|||
Delay_Ton1.IN:=0; |
|||
end_if; |
|||
|
|||
Delay_Ton2(PT :=t#5s ); |
|||
if BOOL_RemoteSet<>BOOL_RemoteSetP and Delay_Ton2.Q=0 then |
|||
Delay_Ton2.IN:=1; |
|||
end_if; |
|||
if Delay_Ton2.Q=1 then |
|||
Delay_Ton2.IN:=0; |
|||
end_if; |
|||
|
|||
Delay_Ton3(PT :=t#5s ); |
|||
if INT_RemoteSet<>INT_RemoteSetP and Delay_Ton3.Q=0 then |
|||
Delay_Ton3.IN:=1; |
|||
end_if; |
|||
if Delay_Ton3.Q=1 then |
|||
Delay_Ton3.IN:=0; |
|||
end_if; |
|||
|
|||
|
|||
if REAL_RemoteSet<>REAL_RemoteSetP then |
|||
|
|||
if Delay_Ton1.et>t#0.0s then REAL_OUT01:=REAL_RemoteSet; end_if; |
|||
if Delay_Ton1.et>t#0.5s then REAL_OUT02:=REAL_RemoteSet; end_if; |
|||
if Delay_Ton1.et>t#1.0s then REAL_OUT03:=REAL_RemoteSet; end_if; |
|||
if Delay_Ton1.et>t#1.5s then REAL_OUT04:=REAL_RemoteSet; end_if; |
|||
if Delay_Ton1.et>t#2.0s then REAL_OUT05:=REAL_RemoteSet; end_if; |
|||
if Delay_Ton1.et>t#2.5s then REAL_OUT06:=REAL_RemoteSet; end_if; |
|||
if Delay_Ton1.et>t#3.0s then REAL_OUT07:=REAL_RemoteSet; end_if; |
|||
if Delay_Ton1.et>t#3.5s then REAL_OUT08:=REAL_RemoteSet; end_if; |
|||
if Delay_Ton1.et>t#4.0s then REAL_OUT09:=REAL_RemoteSet; end_if; |
|||
if Delay_Ton1.et>t#4.5s then REAL_OUT10:=REAL_RemoteSet; end_if; |
|||
|
|||
elsif REAL_RemoteSet=REAL_RemoteSetP then |
|||
REAL_OUT01:=REAL_IN01; |
|||
REAL_OUT02:=REAL_IN02; |
|||
REAL_OUT03:=REAL_IN03; |
|||
REAL_OUT04:=REAL_IN04; |
|||
REAL_OUT05:=REAL_IN05; |
|||
REAL_OUT06:=REAL_IN06; |
|||
REAL_OUT07:=REAL_IN07; |
|||
REAL_OUT08:=REAL_IN08; |
|||
REAL_OUT09:=REAL_IN09; |
|||
REAL_OUT10:=REAL_IN10; |
|||
|
|||
end_if; |
|||
|
|||
|
|||
(**********一个BOOL型总变量对50个变量赋值,50个变量也可单独赋值*************) |
|||
|
|||
if BOOL_RemoteSet<>BOOL_RemoteSetP then |
|||
|
|||
if Delay_Ton2.et>t#0.0s then BOOL_OUT01:=BOOL_RemoteSet; end_if; |
|||
if Delay_Ton2.et>t#0.5s then BOOL_OUT02:=BOOL_RemoteSet; end_if; |
|||
if Delay_Ton2.et>t#1.0s then BOOL_OUT03:=BOOL_RemoteSet; end_if; |
|||
if Delay_Ton2.et>t#1.5s then BOOL_OUT04:=BOOL_RemoteSet; end_if; |
|||
if Delay_Ton2.et>t#2.0s then BOOL_OUT05:=BOOL_RemoteSet; end_if; |
|||
if Delay_Ton2.et>t#2.5s then BOOL_OUT06:=BOOL_RemoteSet; end_if; |
|||
if Delay_Ton2.et>t#3.0s then BOOL_OUT07:=BOOL_RemoteSet; end_if; |
|||
if Delay_Ton2.et>t#3.5s then BOOL_OUT08:=BOOL_RemoteSet; end_if; |
|||
if Delay_Ton2.et>t#4.0s then BOOL_OUT09:=BOOL_RemoteSet; end_if; |
|||
if Delay_Ton2.et>t#4.5s then BOOL_OUT10:=BOOL_RemoteSet; end_if; |
|||
|
|||
elsif BOOL_RemoteSet=BOOL_RemoteSetP then |
|||
BOOL_OUT01:=BOOL_IN01; |
|||
BOOL_OUT02:=BOOL_IN02; |
|||
BOOL_OUT03:=BOOL_IN03; |
|||
BOOL_OUT04:=BOOL_IN04; |
|||
BOOL_OUT05:=BOOL_IN05; |
|||
BOOL_OUT06:=BOOL_IN06; |
|||
BOOL_OUT07:=BOOL_IN07; |
|||
BOOL_OUT08:=BOOL_IN08; |
|||
BOOL_OUT09:=BOOL_IN09; |
|||
BOOL_OUT10:=BOOL_IN10; |
|||
|
|||
end_if; |
|||
|
|||
|
|||
(**********一个INT型总变量对50个变量赋值,50个变量也可单独赋值*************) |
|||
|
|||
if INT_RemoteSet<>INT_RemoteSetP then |
|||
|
|||
if Delay_Ton3.et>t#0.0s then INT_OUT01:=INT_RemoteSet; end_if; |
|||
if Delay_Ton3.et>t#0.5s then INT_OUT02:=INT_RemoteSet; end_if; |
|||
if Delay_Ton3.et>t#1.0s then INT_OUT03:=INT_RemoteSet; end_if; |
|||
if Delay_Ton3.et>t#1.5s then INT_OUT04:=INT_RemoteSet; end_if; |
|||
if Delay_Ton3.et>t#2.0s then INT_OUT05:=INT_RemoteSet; end_if; |
|||
if Delay_Ton3.et>t#2.5s then INT_OUT06:=INT_RemoteSet; end_if; |
|||
if Delay_Ton3.et>t#3.0s then INT_OUT07:=INT_RemoteSet; end_if; |
|||
if Delay_Ton3.et>t#3.5s then INT_OUT08:=INT_RemoteSet; end_if; |
|||
if Delay_Ton3.et>t#4.0s then INT_OUT09:=INT_RemoteSet; end_if; |
|||
if Delay_Ton3.et>t#4.5s then INT_OUT10:=INT_RemoteSet; end_if; |
|||
|
|||
elsif INT_RemoteSet=INT_RemoteSetP then |
|||
INT_OUT01:=INT_IN01; |
|||
INT_OUT02:=INT_IN02; |
|||
INT_OUT03:=INT_IN03; |
|||
INT_OUT04:=INT_IN04; |
|||
INT_OUT05:=INT_IN05; |
|||
INT_OUT06:=INT_IN06; |
|||
INT_OUT07:=INT_IN07; |
|||
INT_OUT08:=INT_IN08; |
|||
INT_OUT09:=INT_IN09; |
|||
INT_OUT10:=INT_IN10; |
|||
|
|||
end_if; |
|||
|
|||
case lock of |
|||
(*0时,均不锁定,1锁定BOOL;2,锁定INT;3,锁定REAL;*) |
|||
0: |
|||
BOOL_RemoteSetP:=BOOL_RemoteSet; |
|||
INT_RemoteSetP:=INT_RemoteSet; |
|||
REAL_RemoteSetP:=REAL_RemoteSet; |
|||
1: |
|||
INT_RemoteSetP:=INT_RemoteSet; |
|||
REAL_RemoteSetP:=REAL_RemoteSet; |
|||
2: |
|||
BOOL_RemoteSetP:=BOOL_RemoteSet; |
|||
REAL_RemoteSetP:=REAL_RemoteSet; |
|||
3: |
|||
BOOL_RemoteSetP:=BOOL_RemoteSet; |
|||
INT_RemoteSetP:=INT_RemoteSet; |
|||
end_case; |
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,22 @@ |
|||
FUNCTION_BLOCK BS_DelayRemoteVavle |
|||
|
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
|
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
|
|||
END_VAR |
|||
|
|||
VAR |
|||
|
|||
END_VAR |
|||
|
|||
; |
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,48 @@ |
|||
FUNCTION_BLOCK BS_DevHeart |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
|
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
HeartVavle :int; |
|||
END_VAR |
|||
|
|||
VAR |
|||
ton1 :ton; |
|||
END_VAR |
|||
|
|||
(* |
|||
|
|||
时 间:20191003 |
|||
版 本:1.0 |
|||
作 者:姚立 |
|||
名 称:设备心跳存活程序 |
|||
说 明:用于判断设备是否存活的心跳程序 |
|||
备 注: |
|||
依赖块:无 |
|||
|
|||
*) |
|||
|
|||
(* |
|||
|
|||
Output_Type 输出 |
|||
心跳数据0-99 |
|||
|
|||
*) |
|||
ton1(pt:=t#2s); |
|||
ton1.in:=not ton1.q; |
|||
if ton1.q=1 then |
|||
HeartVavle :=HeartVavle+1; |
|||
end_if; |
|||
if HeartVavle =99 then |
|||
HeartVavle:=0; |
|||
end_if; |
|||
|
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,48 @@ |
|||
FUNCTION_BLOCK BS_DevHeart |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
|
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
HeartVavle :int; |
|||
END_VAR |
|||
|
|||
VAR |
|||
ton1 :ton; |
|||
END_VAR |
|||
|
|||
(* |
|||
|
|||
时 间:20191003 |
|||
版 本:1.0 |
|||
作 者:姚立 |
|||
名 称:设备心跳存活程序 |
|||
说 明:用于判断设备是否存活的心跳程序 |
|||
备 注: |
|||
依赖块:无 |
|||
|
|||
*) |
|||
|
|||
(* |
|||
|
|||
Output_Type 输出 |
|||
心跳数据0-99 |
|||
|
|||
*) |
|||
ton1(pt:=t#2s); |
|||
ton1.in:=not ton1.q; |
|||
if ton1.q=1 then |
|||
HeartVavle :=HeartVavle+1; |
|||
end_if; |
|||
if HeartVavle =99 then |
|||
HeartVavle:=0; |
|||
end_if; |
|||
|
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,49 @@ |
|||
FUNCTION_BLOCK BS_DevHeartCheck |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
DHV :INT; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
DHR :BOOL; |
|||
END_VAR |
|||
|
|||
VAR |
|||
DHVT :INT; |
|||
TON01 :TON; |
|||
END_VAR |
|||
|
|||
(* |
|||
|
|||
时 间:20191003 |
|||
版 本:1.0 |
|||
作 者:姚立 |
|||
名 称:设备心跳程序 |
|||
说 明: |
|||
备 注: |
|||
依赖块:无 |
|||
|
|||
*) |
|||
|
|||
(* |
|||
|
|||
|
|||
|
|||
*) |
|||
TON01(PT:=t#60s); |
|||
|
|||
if DHV=DHVT then |
|||
TON01.IN:=1; |
|||
DHVT:=DHV; |
|||
else |
|||
TON01.IN:=0; |
|||
end_if; |
|||
|
|||
DHR := not TON01.Q; |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,22 @@ |
|||
FUNCTION_BLOCK BS_DevHeartCheck |
|||
|
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
|
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
|
|||
END_VAR |
|||
|
|||
VAR |
|||
|
|||
END_VAR |
|||
|
|||
; |
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,90 @@ |
|||
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 |
|||
(* |
|||
|
|||
时 间:20190905 |
|||
版 本:1.0 |
|||
作 者:姚立 |
|||
名 称:设备扫描功能块 |
|||
说 明:用于扫描模块在线状态,输出在线模块比例值等参数 |
|||
备 注: |
|||
依赖块:无 |
|||
|
|||
*) |
|||
|
|||
(*输出初始化*) |
|||
Dev_Error_Flag := 0; |
|||
Dev_Status := 0; |
|||
Dev_Total := 0; |
|||
Dev_Error := 0; |
|||
|
|||
for i:= 0 to 31 by 1 do |
|||
Dev_Scan_temp := 0; |
|||
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 |
|||
Dev_Total := Dev_Total+1; |
|||
(*i地址位判断值是否为16#4,是的话进入状态写入*) |
|||
if Dev_Array[i] = 16#4 then |
|||
Dev_Status_temp := 1; |
|||
(*1地址位左移至i位,与输出值OR比较,将状态赋值到对应i地址位*) |
|||
SHR_L(EN :=1 , IN := Dev_Status_temp, N := i | Dev_Status_temp := OUT); |
|||
Dev_Status :=Dev_Status_temp or Dev_Status ; |
|||
else |
|||
(*任一预设定地址设备不存在,标记错误*) |
|||
Dev_Error_Flag := 1; |
|||
Dev_Error:= Dev_Error+1; |
|||
end_if; |
|||
end_if; |
|||
end_for; |
|||
|
|||
if Dev_Scan_Hex<>0 then |
|||
(*有预设定值的情况下,无错误报警,即代表该设备就绪*) |
|||
Dev_Ready := not Dev_Error_Flag; |
|||
end_if; |
|||
if Dev_Total<>0 then |
|||
(*设备在线比例计算*) |
|||
Dev_Ratio := 1.0-INT_TO_REAL(Dev_Error)/INT_TO_REAL(Dev_Total); |
|||
end_if; |
|||
|
|||
ton1(pt:=t#2s); |
|||
ton1.in:=not ton1.q; |
|||
if ton1.q=1 then |
|||
HeartVavle :=HeartVavle+1; |
|||
end_if; |
|||
if HeartVavle =99 then |
|||
HeartVavle:=0; |
|||
end_if; |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,90 @@ |
|||
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 |
|||
(* |
|||
|
|||
时 间:20190905 |
|||
版 本:1.0 |
|||
作 者:姚立 |
|||
名 称:设备扫描功能块 |
|||
说 明:用于扫描模块在线状态,输出在线模块比例值等参数 |
|||
备 注: |
|||
依赖块:无 |
|||
|
|||
*) |
|||
|
|||
(*输出初始化*) |
|||
Dev_Error_Flag := 0; |
|||
Dev_Status := 0; |
|||
Dev_Total := 0; |
|||
Dev_Error := 0; |
|||
|
|||
for i:= 0 to 31 by 1 do |
|||
Dev_Scan_temp := 0; |
|||
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 |
|||
Dev_Total := Dev_Total+1; |
|||
(*i地址位判断值是否为16#4,是的话进入状态写入*) |
|||
if Dev_Array[i] = 16#4 then |
|||
Dev_Status_temp := 1; |
|||
(*1地址位左移至i位,与输出值OR比较,将状态赋值到对应i地址位*) |
|||
SHR_L(EN :=1 , IN := Dev_Status_temp, N := i | Dev_Status_temp := OUT); |
|||
Dev_Status :=Dev_Status_temp or Dev_Status ; |
|||
else |
|||
(*任一预设定地址设备不存在,标记错误*) |
|||
Dev_Error_Flag := 1; |
|||
Dev_Error:= Dev_Error+1; |
|||
end_if; |
|||
end_if; |
|||
end_for; |
|||
|
|||
if Dev_Scan_Hex<>0 then |
|||
(*有预设定值的情况下,无错误报警,即代表该设备就绪*) |
|||
Dev_Ready := not Dev_Error_Flag; |
|||
end_if; |
|||
if Dev_Total<>0 then |
|||
(*设备在线比例计算*) |
|||
Dev_Ratio := 1.0-INT_TO_REAL(Dev_Error)/INT_TO_REAL(Dev_Total); |
|||
end_if; |
|||
|
|||
ton1(pt:=t#2s); |
|||
ton1.in:=not ton1.q; |
|||
if ton1.q=1 then |
|||
HeartVavle :=HeartVavle+1; |
|||
end_if; |
|||
if HeartVavle =99 then |
|||
HeartVavle:=0; |
|||
end_if; |
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,318 @@ |
|||
FUNCTION_BLOCK BS_EVC |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
RUN : BOOL ; (* PID鍔熻兘鍧楀惎鐢� *) |
|||
SET : REAL ; (* 璋冭妭鐩�爣鍊� *) |
|||
FB : REAL ; (* 璋冭妭鐩�爣鍊肩殑鍙嶉�鍊� *) |
|||
Dead_Band : REAL :=0.5 ; (* 姝诲尯 *) |
|||
Delay : TIME :=t#30s;(* 寤舵椂鏃堕棿 *) |
|||
SW : INT ; (* 瀛h妭妯″紡 0澶忓� 1鍐�� 2杩囨浮 *) |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
EVC : BOOL ; (* 鐢电�闃€鎺у埗 *) |
|||
END_VAR |
|||
|
|||
VAR |
|||
ton1 : TON ; |
|||
ton2 : TON ; |
|||
END_VAR |
|||
|
|||
(*Automatically declared*) |
|||
VAR_EXTERNAL |
|||
END_VAR |
|||
(** {* **) |
|||
(** **) |
|||
(** 时 间:20191003 **) |
|||
(** 版 本:1.0 **) |
|||
(** 作 者:姚立 **) |
|||
(** 名 称:电磁阀/开关阀值控程序 **) |
|||
(** 说 明:用于电磁阀/开关阀类的开关量阀门的值控程序 **) |
|||
(** 备 注:适用于温度、湿度等控制 **) |
|||
(** 依赖块:无 **) |
|||
(** **) |
|||
(** 输入变量 **) |
|||
(** RUN : BOOL ; PID功能块启用 **) |
|||
(** SET : REAL ; 调节目标值 **) |
|||
(** FB : REAL ; 调节目标值的反馈值 **) |
|||
(** Dead_Band : REAL ; 死区,默认0.5 **) |
|||
(** Delay : TIME ; 延时时间,默认30S **) |
|||
(** SW : INT ; 季节模式 0夏季 1冬季 **) |
|||
(** 输出变量 **) |
|||
(** EVC : BOOL ; 电磁阀/开关阀控制输出 **) |
|||
(** **) |
|||
(** *} **) |
|||
(** **) |
|||
(** {* **) |
|||
(** 夏季:FB>SET EVC:=1 **) |
|||
(** FB-(SET+D)>=0 EVC:=1 **) |
|||
(** FB-(SET-D)<0 EVC:=0 **) |
|||
(** 冬季:SET>FB EVC:=1 **) |
|||
(** (SET-D)-FB>=0 EVC:=1 **) |
|||
(** (SET+D)-FB<0 EVC:=0 **) |
|||
(** *} **) |
|||
(** ton1(pt:=Delay); **) |
|||
(* call - Stmt *) |
|||
CAL ton1 ( |
|||
pt := Delay |
|||
) |
|||
|
|||
(** ton2(pt:=Delay); **) |
|||
(* call - Stmt *) |
|||
CAL ton2 ( |
|||
pt := Delay |
|||
) |
|||
|
|||
(** **) |
|||
(** if RUN =1 then **) |
|||
(* if - Cond *) |
|||
LD RUN |
|||
EQ 1 |
|||
JMPCN ODK_SKIP_000000000000001_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** if SW=0 then **) |
|||
(* if - Cond *) |
|||
LD SW |
|||
EQ 0 |
|||
JMPCN ODK_SKIP_000000000000002_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** if FB-(SET+Dead_Band)>=0.0 then **) |
|||
(* if - Cond *) |
|||
LD FB |
|||
SUB ( SET |
|||
ADD Dead_Band |
|||
) |
|||
GE 0.0 |
|||
JMPCN ODK_SKIP_000000000000003_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** ton1.in:=1; **) |
|||
(* assign - Stmt *) |
|||
LD 1 |
|||
ST ton1.in |
|||
|
|||
JMP ODK_END_IF_000000000000003 |
|||
|
|||
(** else **) |
|||
(* else *) |
|||
ODK_SKIP_000000000000003_000000000000001: |
|||
|
|||
(* else - Stmts *) |
|||
|
|||
(** ton1.in:=0; **) |
|||
(* assign - Stmt *) |
|||
LD 0 |
|||
ST ton1.in |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_END_IF_000000000000003: |
|||
|
|||
(** if ton1.q=1 then **) |
|||
(* if - Cond *) |
|||
LD ton1.q |
|||
EQ 1 |
|||
JMPCN ODK_SKIP_000000000000004_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** EVC:=1; **) |
|||
(* assign - Stmt *) |
|||
LD 1 |
|||
ST EVC |
|||
|
|||
JMP ODK_END_IF_000000000000004 |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000004_000000000000001: |
|||
ODK_END_IF_000000000000004: |
|||
|
|||
(** if FB-(SET-Dead_Band)<0.0 then **) |
|||
(* if - Cond *) |
|||
LD FB |
|||
SUB ( SET |
|||
SUB Dead_Band |
|||
) |
|||
LT 0.0 |
|||
JMPCN ODK_SKIP_000000000000005_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** ton2.in:=1; **) |
|||
(* assign - Stmt *) |
|||
LD 1 |
|||
ST ton2.in |
|||
|
|||
JMP ODK_END_IF_000000000000005 |
|||
|
|||
(** else **) |
|||
(* else *) |
|||
ODK_SKIP_000000000000005_000000000000001: |
|||
|
|||
(* else - Stmts *) |
|||
|
|||
(** ton2.in:=0; **) |
|||
(* assign - Stmt *) |
|||
LD 0 |
|||
ST ton2.in |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_END_IF_000000000000005: |
|||
|
|||
(** if ton2.q=1 then **) |
|||
(* if - Cond *) |
|||
LD ton2.q |
|||
EQ 1 |
|||
JMPCN ODK_SKIP_000000000000006_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** EVC:=0; **) |
|||
(* assign - Stmt *) |
|||
LD 0 |
|||
ST EVC |
|||
|
|||
JMP ODK_END_IF_000000000000006 |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000006_000000000000001: |
|||
ODK_END_IF_000000000000006: |
|||
|
|||
JMP ODK_END_IF_000000000000002 |
|||
|
|||
(** else **) |
|||
(* else *) |
|||
ODK_SKIP_000000000000002_000000000000001: |
|||
|
|||
(* else - Stmts *) |
|||
|
|||
(** if (SET-Dead_Band)-FB>=0.0 then **) |
|||
(* if - Cond *) |
|||
LD SET |
|||
SUB Dead_Band |
|||
SUB FB |
|||
GE 0.0 |
|||
JMPCN ODK_SKIP_000000000000007_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** ton1.in:=1; **) |
|||
(* assign - Stmt *) |
|||
LD 1 |
|||
ST ton1.in |
|||
|
|||
JMP ODK_END_IF_000000000000007 |
|||
|
|||
(** else **) |
|||
(* else *) |
|||
ODK_SKIP_000000000000007_000000000000001: |
|||
|
|||
(* else - Stmts *) |
|||
|
|||
(** ton1.in:=0; **) |
|||
(* assign - Stmt *) |
|||
LD 0 |
|||
ST ton1.in |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_END_IF_000000000000007: |
|||
|
|||
(** if ton1.q=1 then **) |
|||
(* if - Cond *) |
|||
LD ton1.q |
|||
EQ 1 |
|||
JMPCN ODK_SKIP_000000000000008_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** EVC:=1; **) |
|||
(* assign - Stmt *) |
|||
LD 1 |
|||
ST EVC |
|||
|
|||
JMP ODK_END_IF_000000000000008 |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000008_000000000000001: |
|||
ODK_END_IF_000000000000008: |
|||
|
|||
(** if (SET+Dead_Band)-FB<0.0 then **) |
|||
(* if - Cond *) |
|||
LD SET |
|||
ADD Dead_Band |
|||
SUB FB |
|||
LT 0.0 |
|||
JMPCN ODK_SKIP_000000000000009_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** ton2.in:=1; **) |
|||
(* assign - Stmt *) |
|||
LD 1 |
|||
ST ton2.in |
|||
|
|||
JMP ODK_END_IF_000000000000009 |
|||
|
|||
(** else **) |
|||
(* else *) |
|||
ODK_SKIP_000000000000009_000000000000001: |
|||
|
|||
(* else - Stmts *) |
|||
|
|||
(** ton2.in:=0; **) |
|||
(* assign - Stmt *) |
|||
LD 0 |
|||
ST ton2.in |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_END_IF_000000000000009: |
|||
|
|||
(** if ton2.q=1 then **) |
|||
(* if - Cond *) |
|||
LD ton2.q |
|||
EQ 1 |
|||
JMPCN ODK_SKIP_00000000000000A_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** EVC:=0; **) |
|||
(* assign - Stmt *) |
|||
LD 0 |
|||
ST EVC |
|||
|
|||
JMP ODK_END_IF_00000000000000A |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_SKIP_00000000000000A_000000000000001: |
|||
ODK_END_IF_00000000000000A: |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_END_IF_000000000000002: |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000001_000000000000001: |
|||
ODK_END_IF_000000000000001: |
|||
|
|||
(** **) |
|||
(** **) |
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,95 @@ |
|||
FUNCTION_BLOCK BS_EVC |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
RUN : BOOL ; (* PID功能块启用 *) |
|||
SET : REAL ; (* 调节目标值 *) |
|||
FB : REAL ; (* 调节目标值的反馈值 *) |
|||
Dead_Band : REAL :=0.5 ; (* 死区 *) |
|||
Delay : TIME :=t#30s;(* 延时时间 *) |
|||
SW : INT ; (* 季节模式 0夏季 1冬季 2过渡 *) |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
EVC : BOOL ; (* 电磁阀控制 *) |
|||
END_VAR |
|||
|
|||
VAR |
|||
ton1 : TON ; |
|||
ton2 : TON ; |
|||
END_VAR |
|||
(* |
|||
|
|||
时 间:20191003 |
|||
版 本:1.0 |
|||
作 者:姚立 |
|||
名 称:电磁阀/开关阀值控程序 |
|||
说 明:用于电磁阀/开关阀类的开关量阀门的值控程序 |
|||
备 注:适用于温度、湿度等控制 |
|||
依赖块:无 |
|||
|
|||
输入变量 |
|||
RUN : BOOL ; PID功能块启用 |
|||
SET : REAL ; 调节目标值 |
|||
FB : REAL ; 调节目标值的反馈值 |
|||
Dead_Band : REAL ; 死区,默认0.5 |
|||
Delay : TIME ; 延时时间,默认30S |
|||
SW : INT ; 季节模式 0夏季 1冬季 |
|||
输出变量 |
|||
EVC : BOOL ; 电磁阀/开关阀控制输出 |
|||
|
|||
*) |
|||
|
|||
(* |
|||
夏季:FB>SET EVC:=1 |
|||
FB-(SET+D)>=0 EVC:=1 |
|||
FB-(SET-D)<0 EVC:=0 |
|||
冬季:SET>FB EVC:=1 |
|||
(SET-D)-FB>=0 EVC:=1 |
|||
(SET+D)-FB<0 EVC:=0 |
|||
*) |
|||
ton1(pt:=Delay); |
|||
ton2(pt:=Delay); |
|||
|
|||
if RUN =1 then |
|||
if SW=0 then |
|||
if FB-(SET+Dead_Band)>=0.0 then |
|||
ton1.in:=1; |
|||
else |
|||
ton1.in:=0; |
|||
end_if; |
|||
if ton1.q=1 then |
|||
EVC:=1; |
|||
end_if; |
|||
if FB-(SET-Dead_Band)<0.0 then |
|||
ton2.in:=1; |
|||
else |
|||
ton2.in:=0; |
|||
end_if; |
|||
if ton2.q=1 then |
|||
EVC:=0; |
|||
end_if; |
|||
else |
|||
if (SET-Dead_Band)-FB>=0.0 then |
|||
ton1.in:=1; |
|||
else |
|||
ton1.in:=0; |
|||
end_if; |
|||
if ton1.q=1 then |
|||
EVC:=1; |
|||
end_if; |
|||
if (SET+Dead_Band)-FB<0.0 then |
|||
ton2.in:=1; |
|||
else |
|||
ton2.in:=0; |
|||
end_if; |
|||
if ton2.q=1 then |
|||
EVC:=0; |
|||
end_if; |
|||
end_if; |
|||
end_if; |
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,97 @@ |
|||
FUNCTION_BLOCK BS_EVC |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
RUN : BOOL ; (* PID功能块启用 *) |
|||
SET : REAL ; (* 调节目标值 *) |
|||
FB : REAL ; (* 调节目标值的反馈值 *) |
|||
Dead_Band : REAL :=0.5 ; (* 死区 *) |
|||
Delay : TIME :=t#30s;(* 延时时间 *) |
|||
SW : INT ; (* 季节模式 0夏季 1冬季 2过渡 *) |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
EVC : BOOL ; (* 电磁阀控制 *) |
|||
END_VAR |
|||
|
|||
VAR |
|||
ton1 : TON ; |
|||
ton2 : TON ; |
|||
END_VAR |
|||
(* |
|||
|
|||
时 间:20191003 |
|||
版 本:1.0 |
|||
作 者:姚立 |
|||
名 称:电磁阀/开关阀值控程序 |
|||
说 明:用于电磁阀/开关阀类的开关量阀门的值控程序 |
|||
备 注:适用于温度、湿度等控制 |
|||
依赖块:无 |
|||
|
|||
输入变量 |
|||
RUN : BOOL ; PID功能块启用 |
|||
SET : REAL ; 调节目标值 |
|||
FB : REAL ; 调节目标值的反馈值 |
|||
Dead_Band : REAL ; 死区,默认0.5 |
|||
Delay : TIME ; 延时时间,默认30S |
|||
SW : INT ; 季节模式 0夏季 1冬季 |
|||
输出变量 |
|||
EVC : BOOL ; 电磁阀/开关阀控制输出 |
|||
|
|||
*) |
|||
|
|||
(* |
|||
夏季:FB>SET EVC:=1 |
|||
FB-(SET+D)>=0 EVC:=1 |
|||
FB-(SET-D)<0 EVC:=0 |
|||
冬季:SET>FB EVC:=1 |
|||
(SET-D)-FB>=0 EVC:=1 |
|||
(SET+D)-FB<0 EVC:=0 |
|||
*) |
|||
ton1(pt:=Delay); |
|||
ton2(pt:=Delay); |
|||
|
|||
if RUN =1 then |
|||
if SW=0 then |
|||
if FB-(SET+Dead_Band)>=0.0 then |
|||
ton1.in:=1; |
|||
else |
|||
ton1.in:=0; |
|||
end_if; |
|||
if ton1.q=1 then |
|||
EVC:=1; |
|||
end_if; |
|||
if FB-(SET-Dead_Band)<0.0 then |
|||
ton2.in:=1; |
|||
else |
|||
ton2.in:=0; |
|||
end_if; |
|||
if ton2.q=1 then |
|||
EVC:=0; |
|||
end_if; |
|||
else |
|||
if (SET-Dead_Band)-FB>=0.0 then |
|||
ton1.in:=1; |
|||
else |
|||
ton1.in:=0; |
|||
end_if; |
|||
if ton1.q=1 then |
|||
EVC:=1; |
|||
end_if; |
|||
if (SET+Dead_Band)-FB<0.0 then |
|||
ton2.in:=1; |
|||
else |
|||
ton2.in:=0; |
|||
end_if; |
|||
if ton2.q=1 then |
|||
EVC:=0; |
|||
end_if; |
|||
end_if; |
|||
end_if; |
|||
|
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,197 @@ |
|||
FUNCTION_BLOCK BS_FEC |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
RUN : BOOL ; (* PID鍔熻兘鍧楀惎鐢� *) |
|||
SET : REAL ; (* 璋冭妭鐩�爣鍊� *) |
|||
FB : REAL ; (* 璋冭妭鐩�爣鍊肩殑鍙嶉�鍊� *) |
|||
Dead_Band : REAL :=10.0 ; (* 姝诲尯 *) |
|||
Delay : TIME :=t#300s;(* 寤舵椂鏃堕棿 *) |
|||
|
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
DevC : BOOL ; (* 璁惧�寮€鍏虫帶鍒� *) |
|||
END_VAR |
|||
|
|||
VAR |
|||
ton1 : TON ; |
|||
ton2 : TON ; |
|||
END_VAR |
|||
|
|||
(*Automatically declared*) |
|||
VAR_EXTERNAL |
|||
END_VAR |
|||
(** {* **) |
|||
(** **) |
|||
(** 时 间:20200220 **) |
|||
(** 版 本:1.0 **) |
|||
(** 作 者:潘平 **) |
|||
(** 名 称:设备开关值控程序 **) |
|||
(** 说 明:用于设备开关的值控程序 **) |
|||
(** 备 注:适用于风机联动环境值等控制 **) |
|||
(** 依赖块:无 **) |
|||
(** **) |
|||
(** 输入变量 **) |
|||
(** RUN : BOOL ; PID功能块启用 **) |
|||
(** SET : REAL ; 调节目标值 **) |
|||
(** FB : REAL ; 调节目标值的反馈值 **) |
|||
(** Dead_Band : REAL ; 死区,默认10 **) |
|||
(** Delay : TIME ; 延时时间,默认300S **) |
|||
(** 输出变量 **) |
|||
(** DevC : BOOL ; 设备控制输出 **) |
|||
(** **) |
|||
(** *} **) |
|||
(** **) |
|||
(** {* **) |
|||
(** FB>SET DevC:=1 **) |
|||
(** FB-(SET-D)<0 DevC:=0 **) |
|||
(** **) |
|||
(** *} **) |
|||
(** ton1(pt:=Delay); **) |
|||
(* call - Stmt *) |
|||
CAL ton1 ( |
|||
pt := Delay |
|||
) |
|||
|
|||
(** ton2(pt:=Delay); **) |
|||
(* call - Stmt *) |
|||
CAL ton2 ( |
|||
pt := Delay |
|||
) |
|||
|
|||
(** **) |
|||
(** if RUN =1 then **) |
|||
(* if - Cond *) |
|||
LD RUN |
|||
EQ 1 |
|||
JMPCN ODK_SKIP_000000000000001_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** if FB-SET>=0.0 then **) |
|||
(* if - Cond *) |
|||
LD FB |
|||
SUB SET |
|||
GE 0.0 |
|||
JMPCN ODK_SKIP_000000000000002_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** DevC:=1; **) |
|||
(* assign - Stmt *) |
|||
LD 1 |
|||
ST DevC |
|||
|
|||
(** ton1.in:=1; **) |
|||
(* assign - Stmt *) |
|||
LD 1 |
|||
ST ton1.in |
|||
|
|||
JMP ODK_END_IF_000000000000002 |
|||
|
|||
(** else **) |
|||
(* else *) |
|||
ODK_SKIP_000000000000002_000000000000001: |
|||
|
|||
(* else - Stmts *) |
|||
|
|||
(** ton1.in:=0; **) |
|||
(* assign - Stmt *) |
|||
LD 0 |
|||
ST ton1.in |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_END_IF_000000000000002: |
|||
|
|||
(** if ton1.q=1 then **) |
|||
(* if - Cond *) |
|||
LD ton1.q |
|||
EQ 1 |
|||
JMPCN ODK_SKIP_000000000000003_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** DevC:=1; **) |
|||
(* assign - Stmt *) |
|||
LD 1 |
|||
ST DevC |
|||
|
|||
JMP ODK_END_IF_000000000000003 |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000003_000000000000001: |
|||
ODK_END_IF_000000000000003: |
|||
|
|||
(** if FB-(SET-Dead_Band)<0.0 then **) |
|||
(* if - Cond *) |
|||
LD FB |
|||
SUB ( SET |
|||
SUB Dead_Band |
|||
) |
|||
LT 0.0 |
|||
JMPCN ODK_SKIP_000000000000004_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** ton2.in:=1; **) |
|||
(* assign - Stmt *) |
|||
LD 1 |
|||
ST ton2.in |
|||
|
|||
JMP ODK_END_IF_000000000000004 |
|||
|
|||
(** else **) |
|||
(* else *) |
|||
ODK_SKIP_000000000000004_000000000000001: |
|||
|
|||
(* else - Stmts *) |
|||
|
|||
(** ton2.in:=0; **) |
|||
(* assign - Stmt *) |
|||
LD 0 |
|||
ST ton2.in |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_END_IF_000000000000004: |
|||
|
|||
(** if ton2.q=1 then **) |
|||
(* if - Cond *) |
|||
LD ton2.q |
|||
EQ 1 |
|||
JMPCN ODK_SKIP_000000000000005_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** DevC:=0; **) |
|||
(* assign - Stmt *) |
|||
LD 0 |
|||
ST DevC |
|||
|
|||
JMP ODK_END_IF_000000000000005 |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000005_000000000000001: |
|||
ODK_END_IF_000000000000005: |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000001_000000000000001: |
|||
ODK_END_IF_000000000000001: |
|||
|
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,78 @@ |
|||
FUNCTION_BLOCK BS_FEC |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
RUN : BOOL ; (* PID功能块启用 *) |
|||
SET : REAL ; (* 调节目标值 *) |
|||
FB : REAL ; (* 调节目标值的反馈值 *) |
|||
Dead_Band : REAL :=10.0 ; (* 死区 *) |
|||
Delay : TIME :=t#300s;(* 延时时间 *) |
|||
|
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
DevC : BOOL ; (* 设备开关控制 *) |
|||
END_VAR |
|||
|
|||
VAR |
|||
ton1 : TON ; |
|||
ton2 : TON ; |
|||
END_VAR |
|||
(* |
|||
|
|||
时 间:20200220 |
|||
版 本:1.0 |
|||
作 者:潘平 |
|||
名 称:设备开关值控程序 |
|||
说 明:用于设备开关的值控程序 |
|||
备 注:适用于风机联动环境值等控制 |
|||
依赖块:无 |
|||
|
|||
输入变量 |
|||
RUN : BOOL ; PID功能块启用 |
|||
SET : REAL ; 调节目标值 |
|||
FB : REAL ; 调节目标值的反馈值 |
|||
Dead_Band : REAL ; 死区,默认10 |
|||
Delay : TIME ; 延时时间,默认300S |
|||
输出变量 |
|||
DevC : BOOL ; 设备控制输出 |
|||
|
|||
*) |
|||
|
|||
(* |
|||
FB>SET DevC:=1 |
|||
FB-(SET-D)<0 DevC:=0 |
|||
|
|||
*) |
|||
ton1(pt:=Delay); |
|||
ton2(pt:=Delay); |
|||
|
|||
if RUN =1 then |
|||
if FB-SET>=0.0 then |
|||
DevC:=1; |
|||
ton1.in:=1; |
|||
else |
|||
ton1.in:=0; |
|||
end_if; |
|||
if ton1.q=1 then |
|||
DevC:=1; |
|||
end_if; |
|||
if FB-(SET-Dead_Band)<0.0 then |
|||
ton2.in:=1; |
|||
else |
|||
ton2.in:=0; |
|||
end_if; |
|||
if ton2.q=1 then |
|||
DevC:=0; |
|||
end_if; |
|||
end_if; |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,22 @@ |
|||
FUNCTION_BLOCK BS_FEC |
|||
|
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
|
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
|
|||
END_VAR |
|||
|
|||
VAR |
|||
|
|||
END_VAR |
|||
|
|||
; |
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,103 @@ |
|||
FUNCTION_BLOCK BS_Feedback |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
Control :BOOL; (*璁惧�鎺у埗鎸囦护*) |
|||
Run :BOOL; (*璁惧�杩愯�鐘舵€佸弽棣�*) |
|||
|
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
ALARM :BOOL; (*璁惧�鐢垫皵鎺у埗绠辨晠闅滄姤璀�*) |
|||
|
|||
END_VAR |
|||
|
|||
VAR |
|||
TON1 :TON; |
|||
TOF1 :TOF; |
|||
END_VAR |
|||
|
|||
(*Automatically declared*) |
|||
VAR_EXTERNAL |
|||
END_VAR |
|||
(** {* **) |
|||
(** **) |
|||
(** 时 间:20191003 **) |
|||
(** 版 本:1.0 **) |
|||
(** 作 者:姚立 **) |
|||
(** 名 称:控制反馈不一致报警 **) |
|||
(** 说 明:注:设备电气控制箱控制指令与设备运行反馈不一致故障检测,检测故障产生原因电箱没电、断路器断开、中间继电器与接触器故障等 **) |
|||
(** 备 注: **) |
|||
(** **) |
|||
(** *} **) |
|||
(** **) |
|||
(** TON1( IN:=Control , PT:=t#15S); **) |
|||
(* call - Stmt *) |
|||
CAL TON1 ( |
|||
IN := Control, |
|||
PT := t#15S |
|||
) |
|||
|
|||
(** TOF1( IN:=Control , PT:=t#15S); **) |
|||
(* call - Stmt *) |
|||
CAL TOF1 ( |
|||
IN := Control, |
|||
PT := t#15S |
|||
) |
|||
|
|||
(** **) |
|||
(** IF TON1.q=1 or TOF1.q=1 then **) |
|||
(* if - Cond *) |
|||
LD TON1.q |
|||
EQ 1 |
|||
OR ( TOF1.q |
|||
EQ 1 |
|||
) |
|||
JMPCN ODK_SKIP_000000000000001_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** if Control<>Run then **) |
|||
(* if - Cond *) |
|||
LD Control |
|||
NE Run |
|||
JMPCN ODK_SKIP_000000000000002_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** ALARM:=1; **) |
|||
(* assign - Stmt *) |
|||
LD 1 |
|||
ST ALARM |
|||
|
|||
JMP ODK_END_IF_000000000000002 |
|||
|
|||
(** else **) |
|||
(* else *) |
|||
ODK_SKIP_000000000000002_000000000000001: |
|||
|
|||
(* else - Stmts *) |
|||
|
|||
(** ALARM:=0; **) |
|||
(* assign - Stmt *) |
|||
LD 0 |
|||
ST ALARM |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_END_IF_000000000000002: |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** END_IF; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000001_000000000000001: |
|||
ODK_END_IF_000000000000001: |
|||
|
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,46 @@ |
|||
FUNCTION_BLOCK BS_Feedback |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
Control :BOOL; (*设备控制指令*) |
|||
Run :BOOL; (*设备运行状态反馈*) |
|||
|
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
ALARM :BOOL; (*设备电气控制箱故障报警*) |
|||
|
|||
END_VAR |
|||
|
|||
VAR |
|||
TON1 :TON; |
|||
TOF1 :TOF; |
|||
END_VAR |
|||
(* |
|||
|
|||
时 间:20191003 |
|||
版 本:1.0 |
|||
作 者:姚立 |
|||
名 称:控制反馈不一致报警 |
|||
说 明:注:设备电气控制箱控制指令与设备运行反馈不一致故障检测,检测故障产生原因电箱没电、断路器断开、中间继电器与接触器故障等 |
|||
备 注: |
|||
|
|||
*) |
|||
|
|||
TON1( IN:=Control , PT:=t#15S); |
|||
TOF1( IN:=Control , PT:=t#15S); |
|||
|
|||
IF TON1.q=1 or TOF1.q=1 then |
|||
if Control<>Run then |
|||
ALARM:=1; |
|||
else |
|||
ALARM:=0; |
|||
end_if; |
|||
END_IF; |
|||
|
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,36 @@ |
|||
FUNCTION_BLOCK BS_Feedback |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
Control :BOOL; (*设备控制指令*) |
|||
Run :BOOL; (*设备运行状态反馈*) |
|||
|
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
ALARM :BOOL; (*设备电气控制箱故障报警*) |
|||
|
|||
END_VAR |
|||
|
|||
VAR |
|||
TON1 :TON; |
|||
TOF1 :TOF; |
|||
END_VAR |
|||
(*设备电气控制箱控制指令与设备运行反馈不一致故障检测,检测故障产生原因电箱没电、断路器断开、中间继电器与接触器故障等*); |
|||
TON1( IN:=Control , PT:=t#15S); |
|||
TOF1( IN:=Control , PT:=t#15S); |
|||
|
|||
IF TON1.q=1 or TOF1.q=1 then |
|||
if Control<>Run then |
|||
ALARM:=1; |
|||
else |
|||
ALARM:=0; |
|||
end_if; |
|||
END_IF; |
|||
|
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,301 @@ |
|||
FUNCTION_BLOCK BS_GETCRC16 |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
(*CRC_ADR :dword;*) |
|||
CRC_IN : array[0..200] of byte; |
|||
CRC_LEN :INT; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
CRC16H :byte; |
|||
CRC16L :byte; |
|||
END_VAR |
|||
|
|||
VAR |
|||
(*CRC璁$畻鐢ㄥ畾涔�*) |
|||
CRC16Lo,CRC16Hi : Byte; |
|||
CL,CH : Byte; |
|||
SaveHi,SaveLo : Byte; |
|||
Flag: Int; |
|||
i : int; |
|||
j : int; |
|||
k : int; |
|||
VALCRC : array[0..100] of byte; |
|||
v2v : NW_MemCopy; |
|||
p1,p2 : pointer; |
|||
(* |
|||
MemToVar : AdvMemToVar; |
|||
VarToMem : AdvVarToMem; |
|||
*) |
|||
END_VAR |
|||
|
|||
(*Automatically declared*) |
|||
VAR_EXTERNAL |
|||
END_VAR |
|||
(** {* **) |
|||
(** **) |
|||
(** 时 间:20200924 **) |
|||
(** 版 本:1.0 **) |
|||
(** 作 者:姚立 **) |
|||
(** 名 称:CRC校验 **) |
|||
(** 说 明: **) |
|||
(** 备 注: **) |
|||
(** **) |
|||
(** INPUT: **) |
|||
(** CRC_IN : array[0..200] of byte; modbus发送序列 **) |
|||
(** **) |
|||
(** CRC_LEN :INT; 发送序列数据长度 **) |
|||
(** **) |
|||
(** **) |
|||
(** OUTPUT: **) |
|||
(** CRC16H :byte; **) |
|||
(** CRC16L :byte; **) |
|||
(** *} **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** {*MemToVar(EN :=true , DW_MEM_ADDR :=CRC_ADR , W_MEM_LEN :=CRC_LEN , STR_FILENAME :='OPCDA1' , STR_VARNAME :='VALCRC' );*} **) |
|||
(** **) |
|||
(** p1:=&VALCRC; **) |
|||
(* assign - Stmt *) |
|||
LD &VALCRC |
|||
ST p1 |
|||
|
|||
(** p2:=&CRC_IN; **) |
|||
(* assign - Stmt *) |
|||
LD &CRC_IN |
|||
ST p2 |
|||
|
|||
(** v2v(DEST :=p1 , SRC :=p2 , LENGTH :=CRC_LEN , IQM :=0 ); **) |
|||
(* call - Stmt *) |
|||
CAL v2v ( |
|||
DEST := p1, |
|||
SRC := p2, |
|||
LENGTH := CRC_LEN, |
|||
IQM := 0 |
|||
) |
|||
|
|||
(** CRC16Lo := 255; **) |
|||
(* assign - Stmt *) |
|||
LD 255 |
|||
ST CRC16Lo |
|||
|
|||
(** CRC16Hi := 255; **) |
|||
(* assign - Stmt *) |
|||
LD 255 |
|||
ST CRC16Hi |
|||
|
|||
(** CL := 1; **) |
|||
(* assign - Stmt *) |
|||
LD 1 |
|||
ST CL |
|||
|
|||
(** CH := 160; **) |
|||
(* assign - Stmt *) |
|||
LD 160 |
|||
ST CH |
|||
|
|||
(** **) |
|||
(** For i := 0 To (CRC_LEN-1) by 1 do **) |
|||
(* for - Init *) |
|||
LD 0 |
|||
ST i |
|||
EQ( CRC_LEN |
|||
SUB 1 |
|||
) |
|||
JMPC ODK_FOR_STMTS_000000000000001 |
|||
|
|||
(* for - Cond *) |
|||
ODK_FOR_000000000000001: |
|||
|
|||
LD 0 |
|||
GT( CRC_LEN |
|||
SUB 1 |
|||
) |
|||
JMPC ODK_FOR_DOWN_000000000000001 |
|||
|
|||
LD 0 |
|||
GT 1 |
|||
JMPC ODK_END_FOR_000000000000001 |
|||
|
|||
LD CRC_LEN |
|||
SUB 1 |
|||
LT i |
|||
JMPC ODK_END_FOR_000000000000001 |
|||
JMP ODK_FOR_STMTS_000000000000001 |
|||
|
|||
ODK_FOR_DOWN_000000000000001: |
|||
|
|||
LD CRC_LEN |
|||
SUB 1 |
|||
GT i |
|||
JMPC ODK_END_FOR_000000000000001 |
|||
|
|||
LD 0 |
|||
LT 1 |
|||
JMPC ODK_END_FOR_000000000000001 |
|||
|
|||
(* for - Stmts *) |
|||
ODK_FOR_STMTS_000000000000001: |
|||
|
|||
(** CRC16Lo := CRC16Lo Xor VALCRC[i]; **) |
|||
(* assign - Stmt *) |
|||
LD CRC16Lo |
|||
XOR VALCRC[i] |
|||
ST CRC16Lo |
|||
|
|||
(** For Flag := 0 To 7 by 1 do **) |
|||
(* for - Init *) |
|||
LD 0 |
|||
ST Flag |
|||
EQ 7 |
|||
JMPC ODK_FOR_STMTS_000000000000002 |
|||
|
|||
(* for - Cond *) |
|||
ODK_FOR_000000000000002: |
|||
|
|||
LD 0 |
|||
GT 7 |
|||
JMPC ODK_FOR_DOWN_000000000000002 |
|||
|
|||
LD 0 |
|||
GT 1 |
|||
JMPC ODK_END_FOR_000000000000002 |
|||
|
|||
LD 7 |
|||
LT Flag |
|||
JMPC ODK_END_FOR_000000000000002 |
|||
JMP ODK_FOR_STMTS_000000000000002 |
|||
|
|||
ODK_FOR_DOWN_000000000000002: |
|||
|
|||
LD 7 |
|||
GT Flag |
|||
JMPC ODK_END_FOR_000000000000002 |
|||
|
|||
LD 0 |
|||
LT 1 |
|||
JMPC ODK_END_FOR_000000000000002 |
|||
|
|||
(* for - Stmts *) |
|||
ODK_FOR_STMTS_000000000000002: |
|||
|
|||
(** SaveHi := CRC16Hi; **) |
|||
(* assign - Stmt *) |
|||
LD CRC16Hi |
|||
ST SaveHi |
|||
|
|||
(** SaveLo := CRC16Lo; **) |
|||
(* assign - Stmt *) |
|||
LD CRC16Lo |
|||
ST SaveLo |
|||
|
|||
(** CRC16Hi := shr(CRC16Hi,1); **) |
|||
(* assign - Stmt *) |
|||
LD CRC16Hi |
|||
shr 1 |
|||
ST CRC16Hi |
|||
|
|||
(** CRC16Lo := shr(CRC16Lo,1); **) |
|||
(* assign - Stmt *) |
|||
LD CRC16Lo |
|||
shr 1 |
|||
ST CRC16Lo |
|||
|
|||
(** **) |
|||
(** If ((SaveHi And 1) = 1) Then **) |
|||
(* if - Cond *) |
|||
LD SaveHi |
|||
AND 1 |
|||
EQ 1 |
|||
JMPCN ODK_SKIP_000000000000003_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** CRC16Lo := CRC16Lo Or 128; **) |
|||
(* assign - Stmt *) |
|||
LD CRC16Lo |
|||
OR 128 |
|||
ST CRC16Lo |
|||
|
|||
JMP ODK_END_IF_000000000000003 |
|||
|
|||
(** End_If; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000003_000000000000001: |
|||
ODK_END_IF_000000000000003: |
|||
|
|||
(** If ((SaveLo And 1) = 1) Then **) |
|||
(* if - Cond *) |
|||
LD SaveLo |
|||
AND 1 |
|||
EQ 1 |
|||
JMPCN ODK_SKIP_000000000000004_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** CRC16Hi := CRC16Hi Xor CH; **) |
|||
(* assign - Stmt *) |
|||
LD CRC16Hi |
|||
XOR CH |
|||
ST CRC16Hi |
|||
|
|||
(** CRC16Lo := CRC16Lo Xor CL; **) |
|||
(* assign - Stmt *) |
|||
LD CRC16Lo |
|||
XOR CL |
|||
ST CRC16Lo |
|||
|
|||
JMP ODK_END_IF_000000000000004 |
|||
|
|||
(** End_If; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000004_000000000000001: |
|||
ODK_END_IF_000000000000004: |
|||
|
|||
(* for - By *) |
|||
LD 1 |
|||
ADD Flag |
|||
ST Flag |
|||
(** end_for; **) |
|||
|
|||
JMP ODK_FOR_000000000000002 |
|||
|
|||
(* for - End *) |
|||
ODK_END_FOR_000000000000002: |
|||
|
|||
(* for - By *) |
|||
LD 1 |
|||
ADD i |
|||
ST i |
|||
(** **) |
|||
(** end_for; **) |
|||
|
|||
JMP ODK_FOR_000000000000001 |
|||
|
|||
(* for - End *) |
|||
ODK_END_FOR_000000000000001: |
|||
|
|||
(** **) |
|||
(** CRC16H:=CRC16Lo; **) |
|||
(* assign - Stmt *) |
|||
LD CRC16Lo |
|||
ST CRC16H |
|||
|
|||
(** CRC16L:=CRC16Hi; **) |
|||
(* assign - Stmt *) |
|||
LD CRC16Hi |
|||
ST CRC16L |
|||
|
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,95 @@ |
|||
FUNCTION_BLOCK BS_GETCRC16 |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
(*CRC_ADR :dword;*) |
|||
CRC_IN : array[0..200] of byte; |
|||
CRC_LEN :INT; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
CRC16H :byte; |
|||
CRC16L :byte; |
|||
END_VAR |
|||
|
|||
VAR |
|||
(*CRC计算用定义*) |
|||
CRC16Lo,CRC16Hi : Byte; |
|||
CL,CH : Byte; |
|||
SaveHi,SaveLo : Byte; |
|||
Flag: Int; |
|||
i : int; |
|||
j : int; |
|||
k : int; |
|||
VALCRC : array[0..100] of byte; |
|||
v2v : NW_MemCopy; |
|||
p1,p2 : pointer; |
|||
(* |
|||
MemToVar : AdvMemToVar; |
|||
VarToMem : AdvVarToMem; |
|||
*) |
|||
END_VAR |
|||
(* |
|||
|
|||
时 间:20200924 |
|||
版 本:1.0 |
|||
作 者:姚立 |
|||
名 称:CRC校验 |
|||
说 明: |
|||
备 注: |
|||
|
|||
INPUT: |
|||
CRC_IN : array[0..200] of byte; modbus发送序列 |
|||
|
|||
CRC_LEN :INT; 发送序列数据长度 |
|||
|
|||
|
|||
OUTPUT: |
|||
CRC16H :byte; |
|||
CRC16L :byte; |
|||
*) |
|||
|
|||
|
|||
|
|||
(*MemToVar(EN :=true , DW_MEM_ADDR :=CRC_ADR , W_MEM_LEN :=CRC_LEN , STR_FILENAME :='OPCDA1' , STR_VARNAME :='VALCRC' );*) |
|||
|
|||
p1:=&VALCRC; |
|||
p2:=&CRC_IN; |
|||
v2v(DEST :=p1 , SRC :=p2 , LENGTH :=CRC_LEN , IQM :=0 ); |
|||
CRC16Lo := 255; |
|||
CRC16Hi := 255; |
|||
CL := 1; |
|||
CH := 160; |
|||
|
|||
For i := 0 To (CRC_LEN-1) by 1 do |
|||
CRC16Lo := CRC16Lo Xor VALCRC[i]; |
|||
For Flag := 0 To 7 by 1 do |
|||
SaveHi := CRC16Hi; |
|||
SaveLo := CRC16Lo; |
|||
CRC16Hi := shr(CRC16Hi,1); |
|||
CRC16Lo := shr(CRC16Lo,1); |
|||
|
|||
If ((SaveHi And 1) = 1) Then |
|||
CRC16Lo := CRC16Lo Or 128; |
|||
End_If; |
|||
If ((SaveLo And 1) = 1) Then |
|||
CRC16Hi := CRC16Hi Xor CH; |
|||
CRC16Lo := CRC16Lo Xor CL; |
|||
End_If; |
|||
end_for; |
|||
|
|||
end_for; |
|||
|
|||
CRC16H:=CRC16Lo; |
|||
CRC16L:=CRC16Hi; |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,73 @@ |
|||
FUNCTION_BLOCK BS_GETCRC16 |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
(*CRC_ADR :dword;*) |
|||
CRC_IN : array[0..200] of byte; |
|||
CRC_LEN :INT; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
CRC16H :byte; |
|||
CRC16L :byte; |
|||
END_VAR |
|||
|
|||
VAR |
|||
(*CRC计算用定义*) |
|||
CRC16Lo,CRC16Hi : Byte; |
|||
CL,CH : Byte; |
|||
SaveHi,SaveLo : Byte; |
|||
Flag: Int; |
|||
i : int; |
|||
j : int; |
|||
k : int; |
|||
VALCRC : array[0..100] of byte; |
|||
v2v : NW_MemCopy; |
|||
p1,p2 : pointer; |
|||
(* |
|||
MemToVar : AdvMemToVar; |
|||
VarToMem : AdvVarToMem; |
|||
*) |
|||
END_VAR |
|||
(*MemToVar(EN :=true , DW_MEM_ADDR :=CRC_ADR , W_MEM_LEN :=CRC_LEN , STR_FILENAME :='OPCDA1' , STR_VARNAME :='VALCRC' );*) |
|||
|
|||
p1:=&VALCRC; |
|||
p2:=&CRC_IN; |
|||
v2v(DEST :=p1 , SRC :=p2 , LENGTH :=CRC_LEN , IQM :=0 ); |
|||
CRC16Lo := 255; |
|||
CRC16Hi := 255; |
|||
CL := 1; |
|||
CH := 160; |
|||
|
|||
For i := 0 To (CRC_LEN-1) by 1 do |
|||
CRC16Lo := CRC16Lo Xor VALCRC[i]; |
|||
For Flag := 0 To 7 by 1 do |
|||
SaveHi := CRC16Hi; |
|||
SaveLo := CRC16Lo; |
|||
CRC16Hi := shr(CRC16Hi,1); |
|||
CRC16Lo := shr(CRC16Lo,1); |
|||
|
|||
If ((SaveHi And 1) = 1) Then |
|||
CRC16Lo := CRC16Lo Or 128; |
|||
End_If; |
|||
If ((SaveLo And 1) = 1) Then |
|||
CRC16Hi := CRC16Hi Xor CH; |
|||
CRC16Lo := CRC16Lo Xor CL; |
|||
End_If; |
|||
end_for; |
|||
|
|||
end_for; |
|||
|
|||
CRC16H:=CRC16Lo; |
|||
CRC16L:=CRC16Hi; |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,368 @@ |
|||
FUNCTION_BLOCK BS_GroupVavle |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
LOCK :INT:=0; |
|||
BOOL_GroupSet:BOOL; |
|||
INT_GroupSet:INT; |
|||
REAL_GroupSet:REAL; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
REAL_OUT :ARRAY[0..10] OF REAL; |
|||
INT_OUT :ARRAY[0..10] OF INT; |
|||
BOOL_OUT :ARRAY[0..10] OF BOOL; |
|||
END_VAR |
|||
|
|||
VAR |
|||
REAL_GroupSetP :REAL; |
|||
BOOL_GroupSetP :BOOL; |
|||
INT_GroupSetP :INT; |
|||
END_VAR |
|||
|
|||
(*Automatically declared*) |
|||
VAR_EXTERNAL |
|||
END_VAR |
|||
(** **) |
|||
(** {* **) |
|||
(** **) |
|||
(** 时 间:20191008 **) |
|||
(** 版 本:1.5 **) |
|||
(** 作 者:姚立 **) |
|||
(** 名 称:变量批量赋值 **) |
|||
(** 说 明:用于变量批量赋值,可选锁定单体变量输入 **) |
|||
(** LOCK 0均不锁定;1锁定BOOL;2,锁定INT;3,锁定REAL; **) |
|||
(** 备 注:支持10组BOOL,10组REAL,10组INT **) |
|||
(** 依赖块:无 **) |
|||
(** **) |
|||
(** *} **) |
|||
(** {**********一个REAL型总变量对10个变量赋值,10个变量也可单独赋值*************} **) |
|||
(** **) |
|||
(** if REAL_GroupSet<>REAL_GroupSetP then **) |
|||
(* if - Cond *) |
|||
LD REAL_GroupSet |
|||
NE REAL_GroupSetP |
|||
JMPCN ODK_SKIP_000000000000001_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** REAL_OUT[01]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[01] |
|||
|
|||
(** REAL_OUT[02]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[02] |
|||
|
|||
(** REAL_OUT[03]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[03] |
|||
|
|||
(** REAL_OUT[04]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[04] |
|||
|
|||
(** REAL_OUT[05]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[05] |
|||
|
|||
(** REAL_OUT[06]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[06] |
|||
|
|||
(** REAL_OUT[07]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[07] |
|||
|
|||
(** REAL_OUT[08]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[08] |
|||
|
|||
(** REAL_OUT[09]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[09] |
|||
|
|||
(** REAL_OUT[10]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[10] |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** **) |
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000001_000000000000001: |
|||
ODK_END_IF_000000000000001: |
|||
|
|||
(** **) |
|||
(** **) |
|||
(** {**********一个BOOL型总变量对10个变量赋值,10个变量也可单独赋值*************} **) |
|||
(** **) |
|||
(** if BOOL_GroupSet<>BOOL_GroupSetP then **) |
|||
(* if - Cond *) |
|||
LD BOOL_GroupSet |
|||
NE BOOL_GroupSetP |
|||
JMPCN ODK_SKIP_000000000000002_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** BOOL_OUT[01]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[01] |
|||
|
|||
(** BOOL_OUT[02]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[02] |
|||
|
|||
(** BOOL_OUT[03]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[03] |
|||
|
|||
(** BOOL_OUT[04]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[04] |
|||
|
|||
(** BOOL_OUT[05]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[05] |
|||
|
|||
(** BOOL_OUT[06]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[06] |
|||
|
|||
(** BOOL_OUT[07]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[07] |
|||
|
|||
(** BOOL_OUT[08]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[08] |
|||
|
|||
(** BOOL_OUT[09]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[09] |
|||
|
|||
(** BOOL_OUT[10]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[10] |
|||
|
|||
JMP ODK_END_IF_000000000000002 |
|||
|
|||
(** **) |
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000002_000000000000001: |
|||
ODK_END_IF_000000000000002: |
|||
|
|||
(** **) |
|||
(** **) |
|||
(** {**********一个INT型总变量对10个变量赋值,10个变量也可单独赋值*************} **) |
|||
(** **) |
|||
(** if INT_GroupSet<>INT_GroupSetP then **) |
|||
(* if - Cond *) |
|||
LD INT_GroupSet |
|||
NE INT_GroupSetP |
|||
JMPCN ODK_SKIP_000000000000003_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** INT_OUT[01]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[01] |
|||
|
|||
(** INT_OUT[02]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[02] |
|||
|
|||
(** INT_OUT[03]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[03] |
|||
|
|||
(** INT_OUT[04]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[04] |
|||
|
|||
(** INT_OUT[05]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[05] |
|||
|
|||
(** INT_OUT[06]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[06] |
|||
|
|||
(** INT_OUT[07]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[07] |
|||
|
|||
(** INT_OUT[08]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[08] |
|||
|
|||
(** INT_OUT[09]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[09] |
|||
|
|||
(** INT_OUT[10]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[10] |
|||
|
|||
JMP ODK_END_IF_000000000000003 |
|||
|
|||
(** **) |
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000003_000000000000001: |
|||
ODK_END_IF_000000000000003: |
|||
|
|||
(** **) |
|||
(** case lock of **) |
|||
(** {*0时,均不锁定,1锁定BOOL;2,锁定INT;3,锁定REAL;*} **) |
|||
(** 0: **) |
|||
(* case - Elm *) |
|||
ODK_SKIP_000000000000004_000000000000000: |
|||
|
|||
(* case - Cond *) |
|||
LD lock |
|||
EQ 0 |
|||
JMPC ODK_CASE_000000000000004_000000000000001 |
|||
|
|||
JMP ODK_SKIP_000000000000004_000000000000001 |
|||
|
|||
(* case - Stmts *) |
|||
ODK_CASE_000000000000004_000000000000001: |
|||
|
|||
(** BOOL_GroupSetP:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_GroupSetP |
|||
|
|||
(** INT_GroupSetP:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_GroupSetP |
|||
|
|||
(** REAL_GroupSetP:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_GroupSetP |
|||
|
|||
JMP ODK_END_CASE_000000000000004 |
|||
|
|||
(** 1: **) |
|||
(* case - Elm *) |
|||
ODK_SKIP_000000000000004_000000000000001: |
|||
|
|||
(* case - Cond *) |
|||
LD lock |
|||
EQ 1 |
|||
JMPC ODK_CASE_000000000000004_000000000000002 |
|||
|
|||
JMP ODK_SKIP_000000000000004_000000000000002 |
|||
|
|||
(* case - Stmts *) |
|||
ODK_CASE_000000000000004_000000000000002: |
|||
|
|||
(** INT_GroupSetP:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_GroupSetP |
|||
|
|||
(** REAL_GroupSetP:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_GroupSetP |
|||
|
|||
JMP ODK_END_CASE_000000000000004 |
|||
|
|||
(** 2: **) |
|||
(* case - Elm *) |
|||
ODK_SKIP_000000000000004_000000000000002: |
|||
|
|||
(* case - Cond *) |
|||
LD lock |
|||
EQ 2 |
|||
JMPC ODK_CASE_000000000000004_000000000000003 |
|||
|
|||
JMP ODK_SKIP_000000000000004_000000000000003 |
|||
|
|||
(* case - Stmts *) |
|||
ODK_CASE_000000000000004_000000000000003: |
|||
|
|||
(** BOOL_GroupSetP:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_GroupSetP |
|||
|
|||
(** REAL_GroupSetP:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_GroupSetP |
|||
|
|||
JMP ODK_END_CASE_000000000000004 |
|||
|
|||
(** 3: **) |
|||
(* case - Elm *) |
|||
ODK_SKIP_000000000000004_000000000000003: |
|||
|
|||
(* case - Cond *) |
|||
LD lock |
|||
EQ 3 |
|||
JMPC ODK_CASE_000000000000004_000000000000004 |
|||
|
|||
JMP ODK_SKIP_000000000000004_000000000000004 |
|||
|
|||
(* case - Stmts *) |
|||
ODK_CASE_000000000000004_000000000000004: |
|||
|
|||
(** BOOL_GroupSetP:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_GroupSetP |
|||
|
|||
(** INT_GroupSetP:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_GroupSetP |
|||
|
|||
JMP ODK_END_CASE_000000000000004 |
|||
|
|||
(** end_case; **) |
|||
(* case - End *) |
|||
ODK_SKIP_000000000000004_000000000000004: |
|||
ODK_END_CASE_000000000000004: |
|||
|
|||
(** **) |
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,964 @@ |
|||
FUNCTION_BLOCK BS_GroupVavle50 |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
LOCK :INT:=0; |
|||
BOOL_GroupSet:BOOL; |
|||
INT_GroupSet:INT; |
|||
REAL_GroupSet:REAL; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
REAL_OUT :ARRAY[0..50] OF REAL; |
|||
INT_OUT :ARRAY[0..50] OF INT; |
|||
BOOL_OUT :ARRAY[0..50] OF BOOL; |
|||
END_VAR |
|||
|
|||
VAR |
|||
REAL_GroupSetP :REAL; |
|||
BOOL_GroupSetP :BOOL; |
|||
INT_GroupSetP :INT; |
|||
END_VAR |
|||
|
|||
(*Automatically declared*) |
|||
VAR_EXTERNAL |
|||
END_VAR |
|||
(** {* **) |
|||
(** **) |
|||
(** 时 间:20190923 **) |
|||
(** 版 本:1.4 **) |
|||
(** 作 者:姚立 **) |
|||
(** 名 称:变量批量赋值 **) |
|||
(** 说 明:用于变量批量赋值,可选锁定单体变量输入 **) |
|||
(** LOCK 0均不锁定;1锁定BOOL;2,锁定INT;3,锁定REAL; **) |
|||
(** 备 注:支持50组BOOL,50组REAL,50组INT **) |
|||
(** 依赖块:无 **) |
|||
(** **) |
|||
(** *} **) |
|||
(** {**********一个REAL型总变量对50个变量赋值,50个变量也可单独赋值*************} **) |
|||
(** **) |
|||
(** if REAL_GroupSet<>REAL_GroupSetP then **) |
|||
(* if - Cond *) |
|||
LD REAL_GroupSet |
|||
NE REAL_GroupSetP |
|||
JMPCN ODK_SKIP_000000000000001_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** REAL_OUT[01]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[01] |
|||
|
|||
(** REAL_OUT[02]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[02] |
|||
|
|||
(** REAL_OUT[03]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[03] |
|||
|
|||
(** REAL_OUT[04]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[04] |
|||
|
|||
(** REAL_OUT[05]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[05] |
|||
|
|||
(** REAL_OUT[06]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[06] |
|||
|
|||
(** REAL_OUT[07]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[07] |
|||
|
|||
(** REAL_OUT[08]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[08] |
|||
|
|||
(** REAL_OUT[09]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[09] |
|||
|
|||
(** REAL_OUT[10]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[10] |
|||
|
|||
(** REAL_OUT[11]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[11] |
|||
|
|||
(** REAL_OUT[12]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[12] |
|||
|
|||
(** REAL_OUT[13]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[13] |
|||
|
|||
(** REAL_OUT[14]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[14] |
|||
|
|||
(** REAL_OUT[15]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[15] |
|||
|
|||
(** REAL_OUT[16]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[16] |
|||
|
|||
(** REAL_OUT[17]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[17] |
|||
|
|||
(** REAL_OUT[18]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[18] |
|||
|
|||
(** REAL_OUT[19]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[19] |
|||
|
|||
(** REAL_OUT[20]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[20] |
|||
|
|||
(** REAL_OUT[21]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[21] |
|||
|
|||
(** REAL_OUT[22]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[22] |
|||
|
|||
(** REAL_OUT[23]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[23] |
|||
|
|||
(** REAL_OUT[24]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[24] |
|||
|
|||
(** REAL_OUT[25]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[25] |
|||
|
|||
(** REAL_OUT[26]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[26] |
|||
|
|||
(** REAL_OUT[27]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[27] |
|||
|
|||
(** REAL_OUT[28]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[28] |
|||
|
|||
(** REAL_OUT[29]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[29] |
|||
|
|||
(** REAL_OUT[30]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[30] |
|||
|
|||
(** REAL_OUT[31]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[31] |
|||
|
|||
(** REAL_OUT[32]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[32] |
|||
|
|||
(** REAL_OUT[33]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[33] |
|||
|
|||
(** REAL_OUT[34]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[34] |
|||
|
|||
(** REAL_OUT[35]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[35] |
|||
|
|||
(** REAL_OUT[36]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[36] |
|||
|
|||
(** REAL_OUT[37]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[37] |
|||
|
|||
(** REAL_OUT[38]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[38] |
|||
|
|||
(** REAL_OUT[39]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[39] |
|||
|
|||
(** REAL_OUT[40]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[40] |
|||
|
|||
(** REAL_OUT[41]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[41] |
|||
|
|||
(** REAL_OUT[42]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[42] |
|||
|
|||
(** REAL_OUT[43]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[43] |
|||
|
|||
(** REAL_OUT[44]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[44] |
|||
|
|||
(** REAL_OUT[45]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[45] |
|||
|
|||
(** REAL_OUT[46]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[46] |
|||
|
|||
(** REAL_OUT[47]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[47] |
|||
|
|||
(** REAL_OUT[48]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[48] |
|||
|
|||
(** REAL_OUT[49]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[49] |
|||
|
|||
(** REAL_OUT[50]:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_OUT[50] |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000001_000000000000001: |
|||
ODK_END_IF_000000000000001: |
|||
|
|||
(** **) |
|||
(** **) |
|||
(** {**********一个BOOL型总变量对50个变量赋值,50个变量也可单独赋值*************} **) |
|||
(** **) |
|||
(** if BOOL_GroupSet<>BOOL_GroupSetP then **) |
|||
(* if - Cond *) |
|||
LD BOOL_GroupSet |
|||
NE BOOL_GroupSetP |
|||
JMPCN ODK_SKIP_000000000000002_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** BOOL_OUT[01]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[01] |
|||
|
|||
(** BOOL_OUT[02]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[02] |
|||
|
|||
(** BOOL_OUT[03]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[03] |
|||
|
|||
(** BOOL_OUT[04]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[04] |
|||
|
|||
(** BOOL_OUT[05]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[05] |
|||
|
|||
(** BOOL_OUT[06]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[06] |
|||
|
|||
(** BOOL_OUT[07]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[07] |
|||
|
|||
(** BOOL_OUT[08]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[08] |
|||
|
|||
(** BOOL_OUT[09]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[09] |
|||
|
|||
(** BOOL_OUT[10]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[10] |
|||
|
|||
(** BOOL_OUT[11]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[11] |
|||
|
|||
(** BOOL_OUT[12]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[12] |
|||
|
|||
(** BOOL_OUT[13]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[13] |
|||
|
|||
(** BOOL_OUT[14]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[14] |
|||
|
|||
(** BOOL_OUT[15]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[15] |
|||
|
|||
(** BOOL_OUT[16]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[16] |
|||
|
|||
(** BOOL_OUT[17]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[17] |
|||
|
|||
(** BOOL_OUT[18]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[18] |
|||
|
|||
(** BOOL_OUT[19]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[19] |
|||
|
|||
(** BOOL_OUT[20]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[20] |
|||
|
|||
(** BOOL_OUT[21]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[21] |
|||
|
|||
(** BOOL_OUT[22]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[22] |
|||
|
|||
(** BOOL_OUT[23]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[23] |
|||
|
|||
(** BOOL_OUT[24]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[24] |
|||
|
|||
(** BOOL_OUT[25]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[25] |
|||
|
|||
(** BOOL_OUT[26]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[26] |
|||
|
|||
(** BOOL_OUT[27]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[27] |
|||
|
|||
(** BOOL_OUT[28]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[28] |
|||
|
|||
(** BOOL_OUT[29]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[29] |
|||
|
|||
(** BOOL_OUT[30]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[30] |
|||
|
|||
(** BOOL_OUT[31]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[31] |
|||
|
|||
(** BOOL_OUT[32]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[32] |
|||
|
|||
(** BOOL_OUT[33]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[33] |
|||
|
|||
(** BOOL_OUT[34]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[34] |
|||
|
|||
(** BOOL_OUT[35]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[35] |
|||
|
|||
(** BOOL_OUT[36]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[36] |
|||
|
|||
(** BOOL_OUT[37]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[37] |
|||
|
|||
(** BOOL_OUT[38]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[38] |
|||
|
|||
(** BOOL_OUT[39]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[39] |
|||
|
|||
(** BOOL_OUT[40]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[40] |
|||
|
|||
(** BOOL_OUT[41]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[41] |
|||
|
|||
(** BOOL_OUT[42]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[42] |
|||
|
|||
(** BOOL_OUT[43]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[43] |
|||
|
|||
(** BOOL_OUT[44]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[44] |
|||
|
|||
(** BOOL_OUT[45]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[45] |
|||
|
|||
(** BOOL_OUT[46]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[46] |
|||
|
|||
(** BOOL_OUT[47]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[47] |
|||
|
|||
(** BOOL_OUT[48]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[48] |
|||
|
|||
(** BOOL_OUT[49]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[49] |
|||
|
|||
(** BOOL_OUT[50]:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_OUT[50] |
|||
|
|||
JMP ODK_END_IF_000000000000002 |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000002_000000000000001: |
|||
ODK_END_IF_000000000000002: |
|||
|
|||
(** **) |
|||
(** **) |
|||
(** {**********一个INT型总变量对50个变量赋值,50个变量也可单独赋值*************} **) |
|||
(** **) |
|||
(** if INT_GroupSet<>INT_GroupSetP then **) |
|||
(* if - Cond *) |
|||
LD INT_GroupSet |
|||
NE INT_GroupSetP |
|||
JMPCN ODK_SKIP_000000000000003_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** INT_OUT[01]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[01] |
|||
|
|||
(** INT_OUT[02]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[02] |
|||
|
|||
(** INT_OUT[03]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[03] |
|||
|
|||
(** INT_OUT[04]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[04] |
|||
|
|||
(** INT_OUT[05]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[05] |
|||
|
|||
(** INT_OUT[06]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[06] |
|||
|
|||
(** INT_OUT[07]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[07] |
|||
|
|||
(** INT_OUT[08]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[08] |
|||
|
|||
(** INT_OUT[09]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[09] |
|||
|
|||
(** INT_OUT[10]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[10] |
|||
|
|||
(** INT_OUT[11]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[11] |
|||
|
|||
(** INT_OUT[12]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[12] |
|||
|
|||
(** INT_OUT[13]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[13] |
|||
|
|||
(** INT_OUT[14]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[14] |
|||
|
|||
(** INT_OUT[15]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[15] |
|||
|
|||
(** INT_OUT[16]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[16] |
|||
|
|||
(** INT_OUT[17]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[17] |
|||
|
|||
(** INT_OUT[18]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[18] |
|||
|
|||
(** INT_OUT[19]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[19] |
|||
|
|||
(** INT_OUT[20]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[20] |
|||
|
|||
(** INT_OUT[21]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[21] |
|||
|
|||
(** INT_OUT[22]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[22] |
|||
|
|||
(** INT_OUT[23]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[23] |
|||
|
|||
(** INT_OUT[24]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[24] |
|||
|
|||
(** INT_OUT[25]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[25] |
|||
|
|||
(** INT_OUT[26]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[26] |
|||
|
|||
(** INT_OUT[27]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[27] |
|||
|
|||
(** INT_OUT[28]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[28] |
|||
|
|||
(** INT_OUT[29]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[29] |
|||
|
|||
(** INT_OUT[30]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[30] |
|||
|
|||
(** INT_OUT[31]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[31] |
|||
|
|||
(** INT_OUT[32]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[32] |
|||
|
|||
(** INT_OUT[33]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[33] |
|||
|
|||
(** INT_OUT[34]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[34] |
|||
|
|||
(** INT_OUT[35]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[35] |
|||
|
|||
(** INT_OUT[36]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[36] |
|||
|
|||
(** INT_OUT[37]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[37] |
|||
|
|||
(** INT_OUT[38]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[38] |
|||
|
|||
(** INT_OUT[39]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[39] |
|||
|
|||
(** INT_OUT[40]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[40] |
|||
|
|||
(** INT_OUT[41]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[41] |
|||
|
|||
(** INT_OUT[42]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[42] |
|||
|
|||
(** INT_OUT[43]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[43] |
|||
|
|||
(** INT_OUT[44]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[44] |
|||
|
|||
(** INT_OUT[45]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[45] |
|||
|
|||
(** INT_OUT[46]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[46] |
|||
|
|||
(** INT_OUT[47]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[47] |
|||
|
|||
(** INT_OUT[48]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[48] |
|||
|
|||
(** INT_OUT[49]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[49] |
|||
|
|||
(** INT_OUT[50]:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_OUT[50] |
|||
|
|||
JMP ODK_END_IF_000000000000003 |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000003_000000000000001: |
|||
ODK_END_IF_000000000000003: |
|||
|
|||
(** **) |
|||
(** case lock of **) |
|||
(** {*0时,均不锁定,1锁定BOOL;2,锁定INT;3,锁定REAL;*} **) |
|||
(** 0: **) |
|||
(* case - Elm *) |
|||
ODK_SKIP_000000000000004_000000000000000: |
|||
|
|||
(* case - Cond *) |
|||
LD lock |
|||
EQ 0 |
|||
JMPC ODK_CASE_000000000000004_000000000000001 |
|||
|
|||
JMP ODK_SKIP_000000000000004_000000000000001 |
|||
|
|||
(* case - Stmts *) |
|||
ODK_CASE_000000000000004_000000000000001: |
|||
|
|||
(** BOOL_GroupSetP:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_GroupSetP |
|||
|
|||
(** INT_GroupSetP:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_GroupSetP |
|||
|
|||
(** REAL_GroupSetP:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_GroupSetP |
|||
|
|||
JMP ODK_END_CASE_000000000000004 |
|||
|
|||
(** 1: **) |
|||
(* case - Elm *) |
|||
ODK_SKIP_000000000000004_000000000000001: |
|||
|
|||
(* case - Cond *) |
|||
LD lock |
|||
EQ 1 |
|||
JMPC ODK_CASE_000000000000004_000000000000002 |
|||
|
|||
JMP ODK_SKIP_000000000000004_000000000000002 |
|||
|
|||
(* case - Stmts *) |
|||
ODK_CASE_000000000000004_000000000000002: |
|||
|
|||
(** INT_GroupSetP:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_GroupSetP |
|||
|
|||
(** REAL_GroupSetP:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_GroupSetP |
|||
|
|||
JMP ODK_END_CASE_000000000000004 |
|||
|
|||
(** 2: **) |
|||
(* case - Elm *) |
|||
ODK_SKIP_000000000000004_000000000000002: |
|||
|
|||
(* case - Cond *) |
|||
LD lock |
|||
EQ 2 |
|||
JMPC ODK_CASE_000000000000004_000000000000003 |
|||
|
|||
JMP ODK_SKIP_000000000000004_000000000000003 |
|||
|
|||
(* case - Stmts *) |
|||
ODK_CASE_000000000000004_000000000000003: |
|||
|
|||
(** BOOL_GroupSetP:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_GroupSetP |
|||
|
|||
(** REAL_GroupSetP:=REAL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD REAL_GroupSet |
|||
ST REAL_GroupSetP |
|||
|
|||
JMP ODK_END_CASE_000000000000004 |
|||
|
|||
(** 3: **) |
|||
(* case - Elm *) |
|||
ODK_SKIP_000000000000004_000000000000003: |
|||
|
|||
(* case - Cond *) |
|||
LD lock |
|||
EQ 3 |
|||
JMPC ODK_CASE_000000000000004_000000000000004 |
|||
|
|||
JMP ODK_SKIP_000000000000004_000000000000004 |
|||
|
|||
(* case - Stmts *) |
|||
ODK_CASE_000000000000004_000000000000004: |
|||
|
|||
(** BOOL_GroupSetP:=BOOL_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD BOOL_GroupSet |
|||
ST BOOL_GroupSetP |
|||
|
|||
(** INT_GroupSetP:=INT_GroupSet; **) |
|||
(* assign - Stmt *) |
|||
LD INT_GroupSet |
|||
ST INT_GroupSetP |
|||
|
|||
JMP ODK_END_CASE_000000000000004 |
|||
|
|||
(** end_case; **) |
|||
(* case - End *) |
|||
ODK_SKIP_000000000000004_000000000000004: |
|||
ODK_END_CASE_000000000000004: |
|||
|
|||
(** **) |
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,105 @@ |
|||
FUNCTION_BLOCK BS_GroupVavle |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
LOCK :INT:=0; |
|||
BOOL_GroupSet:BOOL; |
|||
INT_GroupSet:INT; |
|||
REAL_GroupSet:REAL; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
REAL_OUT :ARRAY[0..10] OF REAL; |
|||
INT_OUT :ARRAY[0..10] OF INT; |
|||
BOOL_OUT :ARRAY[0..10] OF BOOL; |
|||
END_VAR |
|||
|
|||
VAR |
|||
REAL_GroupSetP :REAL; |
|||
BOOL_GroupSetP :BOOL; |
|||
INT_GroupSetP :INT; |
|||
END_VAR |
|||
|
|||
(* |
|||
|
|||
时 间:20191008 |
|||
版 本:1.5 |
|||
作 者:姚立 |
|||
名 称:变量批量赋值 |
|||
说 明:用于变量批量赋值,可选锁定单体变量输入 |
|||
LOCK 0均不锁定;1锁定BOOL;2,锁定INT;3,锁定REAL; |
|||
备 注:支持10组BOOL,10组REAL,10组INT |
|||
依赖块:无 |
|||
|
|||
*) |
|||
(**********一个REAL型总变量对10个变量赋值,10个变量也可单独赋值*************) |
|||
|
|||
if REAL_GroupSet<>REAL_GroupSetP then |
|||
REAL_OUT[01]:=REAL_GroupSet; |
|||
REAL_OUT[02]:=REAL_GroupSet; |
|||
REAL_OUT[03]:=REAL_GroupSet; |
|||
REAL_OUT[04]:=REAL_GroupSet; |
|||
REAL_OUT[05]:=REAL_GroupSet; |
|||
REAL_OUT[06]:=REAL_GroupSet; |
|||
REAL_OUT[07]:=REAL_GroupSet; |
|||
REAL_OUT[08]:=REAL_GroupSet; |
|||
REAL_OUT[09]:=REAL_GroupSet; |
|||
REAL_OUT[10]:=REAL_GroupSet; |
|||
|
|||
end_if; |
|||
|
|||
|
|||
(**********一个BOOL型总变量对10个变量赋值,10个变量也可单独赋值*************) |
|||
|
|||
if BOOL_GroupSet<>BOOL_GroupSetP then |
|||
BOOL_OUT[01]:=BOOL_GroupSet; |
|||
BOOL_OUT[02]:=BOOL_GroupSet; |
|||
BOOL_OUT[03]:=BOOL_GroupSet; |
|||
BOOL_OUT[04]:=BOOL_GroupSet; |
|||
BOOL_OUT[05]:=BOOL_GroupSet; |
|||
BOOL_OUT[06]:=BOOL_GroupSet; |
|||
BOOL_OUT[07]:=BOOL_GroupSet; |
|||
BOOL_OUT[08]:=BOOL_GroupSet; |
|||
BOOL_OUT[09]:=BOOL_GroupSet; |
|||
BOOL_OUT[10]:=BOOL_GroupSet; |
|||
|
|||
end_if; |
|||
|
|||
|
|||
(**********一个INT型总变量对10个变量赋值,10个变量也可单独赋值*************) |
|||
|
|||
if INT_GroupSet<>INT_GroupSetP then |
|||
INT_OUT[01]:=INT_GroupSet; |
|||
INT_OUT[02]:=INT_GroupSet; |
|||
INT_OUT[03]:=INT_GroupSet; |
|||
INT_OUT[04]:=INT_GroupSet; |
|||
INT_OUT[05]:=INT_GroupSet; |
|||
INT_OUT[06]:=INT_GroupSet; |
|||
INT_OUT[07]:=INT_GroupSet; |
|||
INT_OUT[08]:=INT_GroupSet; |
|||
INT_OUT[09]:=INT_GroupSet; |
|||
INT_OUT[10]:=INT_GroupSet; |
|||
|
|||
end_if; |
|||
|
|||
case lock of |
|||
(*0时,均不锁定,1锁定BOOL;2,锁定INT;3,锁定REAL;*) |
|||
0: |
|||
BOOL_GroupSetP:=BOOL_GroupSet; |
|||
INT_GroupSetP:=INT_GroupSet; |
|||
REAL_GroupSetP:=REAL_GroupSet; |
|||
1: |
|||
INT_GroupSetP:=INT_GroupSet; |
|||
REAL_GroupSetP:=REAL_GroupSet; |
|||
2: |
|||
BOOL_GroupSetP:=BOOL_GroupSet; |
|||
REAL_GroupSetP:=REAL_GroupSet; |
|||
3: |
|||
BOOL_GroupSetP:=BOOL_GroupSet; |
|||
INT_GroupSetP:=INT_GroupSet; |
|||
end_case; |
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,105 @@ |
|||
FUNCTION_BLOCK BS_GroupVavle |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
LOCK :INT:=0; |
|||
BOOL_GroupSet:BOOL; |
|||
INT_GroupSet:INT; |
|||
REAL_GroupSet:REAL; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
REAL_OUT :ARRAY[0..10] OF REAL; |
|||
INT_OUT :ARRAY[0..10] OF INT; |
|||
BOOL_OUT :ARRAY[0..10] OF BOOL; |
|||
END_VAR |
|||
|
|||
VAR |
|||
REAL_GroupSetP :REAL; |
|||
BOOL_GroupSetP :BOOL; |
|||
INT_GroupSetP :INT; |
|||
END_VAR |
|||
|
|||
(* |
|||
|
|||
时 间:20191008 |
|||
版 本:1.5 |
|||
作 者:姚立 |
|||
名 称:变量批量赋值 |
|||
说 明:用于变量批量赋值,可选锁定单体变量输入 |
|||
LOCK 0均不锁定;1锁定BOOL;2,锁定INT;3,锁定REAL; |
|||
备 注:支持10组BOOL,10组REAL,10组INT |
|||
依赖块:无 |
|||
|
|||
*) |
|||
(**********一个REAL型总变量对10个变量赋值,10个变量也可单独赋值*************) |
|||
|
|||
if REAL_GroupSet<>REAL_GroupSetP then |
|||
REAL_OUT[01]:=REAL_GroupSet; |
|||
REAL_OUT[02]:=REAL_GroupSet; |
|||
REAL_OUT[03]:=REAL_GroupSet; |
|||
REAL_OUT[04]:=REAL_GroupSet; |
|||
REAL_OUT[05]:=REAL_GroupSet; |
|||
REAL_OUT[06]:=REAL_GroupSet; |
|||
REAL_OUT[07]:=REAL_GroupSet; |
|||
REAL_OUT[08]:=REAL_GroupSet; |
|||
REAL_OUT[09]:=REAL_GroupSet; |
|||
REAL_OUT[10]:=REAL_GroupSet; |
|||
|
|||
end_if; |
|||
|
|||
|
|||
(**********一个BOOL型总变量对10个变量赋值,10个变量也可单独赋值*************) |
|||
|
|||
if BOOL_GroupSet<>BOOL_GroupSetP then |
|||
BOOL_OUT[01]:=BOOL_GroupSet; |
|||
BOOL_OUT[02]:=BOOL_GroupSet; |
|||
BOOL_OUT[03]:=BOOL_GroupSet; |
|||
BOOL_OUT[04]:=BOOL_GroupSet; |
|||
BOOL_OUT[05]:=BOOL_GroupSet; |
|||
BOOL_OUT[06]:=BOOL_GroupSet; |
|||
BOOL_OUT[07]:=BOOL_GroupSet; |
|||
BOOL_OUT[08]:=BOOL_GroupSet; |
|||
BOOL_OUT[09]:=BOOL_GroupSet; |
|||
BOOL_OUT[10]:=BOOL_GroupSet; |
|||
|
|||
end_if; |
|||
|
|||
|
|||
(**********一个INT型总变量对10个变量赋值,10个变量也可单独赋值*************) |
|||
|
|||
if INT_GroupSet<>INT_GroupSetP then |
|||
INT_OUT[01]:=INT_GroupSet; |
|||
INT_OUT[02]:=INT_GroupSet; |
|||
INT_OUT[03]:=INT_GroupSet; |
|||
INT_OUT[04]:=INT_GroupSet; |
|||
INT_OUT[05]:=INT_GroupSet; |
|||
INT_OUT[06]:=INT_GroupSet; |
|||
INT_OUT[07]:=INT_GroupSet; |
|||
INT_OUT[08]:=INT_GroupSet; |
|||
INT_OUT[09]:=INT_GroupSet; |
|||
INT_OUT[10]:=INT_GroupSet; |
|||
|
|||
end_if; |
|||
|
|||
case lock of |
|||
(*0时,均不锁定,1锁定BOOL;2,锁定INT;3,锁定REAL;*) |
|||
0: |
|||
BOOL_GroupSetP:=BOOL_GroupSet; |
|||
INT_GroupSetP:=INT_GroupSet; |
|||
REAL_GroupSetP:=REAL_GroupSet; |
|||
1: |
|||
INT_GroupSetP:=INT_GroupSet; |
|||
REAL_GroupSetP:=REAL_GroupSet; |
|||
2: |
|||
BOOL_GroupSetP:=BOOL_GroupSet; |
|||
REAL_GroupSetP:=REAL_GroupSet; |
|||
3: |
|||
BOOL_GroupSetP:=BOOL_GroupSet; |
|||
INT_GroupSetP:=INT_GroupSet; |
|||
end_case; |
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,221 @@ |
|||
FUNCTION_BLOCK BS_GroupVavle50 |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
LOCK :INT:=0; |
|||
BOOL_GroupSet:BOOL; |
|||
INT_GroupSet:INT; |
|||
REAL_GroupSet:REAL; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
REAL_OUT :ARRAY[0..50] OF REAL; |
|||
INT_OUT :ARRAY[0..50] OF INT; |
|||
BOOL_OUT :ARRAY[0..50] OF BOOL; |
|||
END_VAR |
|||
|
|||
VAR |
|||
REAL_GroupSetP :REAL; |
|||
BOOL_GroupSetP :BOOL; |
|||
INT_GroupSetP :INT; |
|||
END_VAR |
|||
(* |
|||
|
|||
时 间:20190923 |
|||
版 本:1.4 |
|||
作 者:姚立 |
|||
名 称:变量批量赋值 |
|||
说 明:用于变量批量赋值,可选锁定单体变量输入 |
|||
LOCK 0均不锁定;1锁定BOOL;2,锁定INT;3,锁定REAL; |
|||
备 注:支持50组BOOL,50组REAL,50组INT |
|||
依赖块:无 |
|||
|
|||
*) |
|||
(**********一个REAL型总变量对50个变量赋值,50个变量也可单独赋值*************) |
|||
|
|||
if REAL_GroupSet<>REAL_GroupSetP then |
|||
REAL_OUT[01]:=REAL_GroupSet; |
|||
REAL_OUT[02]:=REAL_GroupSet; |
|||
REAL_OUT[03]:=REAL_GroupSet; |
|||
REAL_OUT[04]:=REAL_GroupSet; |
|||
REAL_OUT[05]:=REAL_GroupSet; |
|||
REAL_OUT[06]:=REAL_GroupSet; |
|||
REAL_OUT[07]:=REAL_GroupSet; |
|||
REAL_OUT[08]:=REAL_GroupSet; |
|||
REAL_OUT[09]:=REAL_GroupSet; |
|||
REAL_OUT[10]:=REAL_GroupSet; |
|||
REAL_OUT[11]:=REAL_GroupSet; |
|||
REAL_OUT[12]:=REAL_GroupSet; |
|||
REAL_OUT[13]:=REAL_GroupSet; |
|||
REAL_OUT[14]:=REAL_GroupSet; |
|||
REAL_OUT[15]:=REAL_GroupSet; |
|||
REAL_OUT[16]:=REAL_GroupSet; |
|||
REAL_OUT[17]:=REAL_GroupSet; |
|||
REAL_OUT[18]:=REAL_GroupSet; |
|||
REAL_OUT[19]:=REAL_GroupSet; |
|||
REAL_OUT[20]:=REAL_GroupSet; |
|||
REAL_OUT[21]:=REAL_GroupSet; |
|||
REAL_OUT[22]:=REAL_GroupSet; |
|||
REAL_OUT[23]:=REAL_GroupSet; |
|||
REAL_OUT[24]:=REAL_GroupSet; |
|||
REAL_OUT[25]:=REAL_GroupSet; |
|||
REAL_OUT[26]:=REAL_GroupSet; |
|||
REAL_OUT[27]:=REAL_GroupSet; |
|||
REAL_OUT[28]:=REAL_GroupSet; |
|||
REAL_OUT[29]:=REAL_GroupSet; |
|||
REAL_OUT[30]:=REAL_GroupSet; |
|||
REAL_OUT[31]:=REAL_GroupSet; |
|||
REAL_OUT[32]:=REAL_GroupSet; |
|||
REAL_OUT[33]:=REAL_GroupSet; |
|||
REAL_OUT[34]:=REAL_GroupSet; |
|||
REAL_OUT[35]:=REAL_GroupSet; |
|||
REAL_OUT[36]:=REAL_GroupSet; |
|||
REAL_OUT[37]:=REAL_GroupSet; |
|||
REAL_OUT[38]:=REAL_GroupSet; |
|||
REAL_OUT[39]:=REAL_GroupSet; |
|||
REAL_OUT[40]:=REAL_GroupSet; |
|||
REAL_OUT[41]:=REAL_GroupSet; |
|||
REAL_OUT[42]:=REAL_GroupSet; |
|||
REAL_OUT[43]:=REAL_GroupSet; |
|||
REAL_OUT[44]:=REAL_GroupSet; |
|||
REAL_OUT[45]:=REAL_GroupSet; |
|||
REAL_OUT[46]:=REAL_GroupSet; |
|||
REAL_OUT[47]:=REAL_GroupSet; |
|||
REAL_OUT[48]:=REAL_GroupSet; |
|||
REAL_OUT[49]:=REAL_GroupSet; |
|||
REAL_OUT[50]:=REAL_GroupSet; |
|||
end_if; |
|||
|
|||
|
|||
(**********一个BOOL型总变量对50个变量赋值,50个变量也可单独赋值*************) |
|||
|
|||
if BOOL_GroupSet<>BOOL_GroupSetP then |
|||
BOOL_OUT[01]:=BOOL_GroupSet; |
|||
BOOL_OUT[02]:=BOOL_GroupSet; |
|||
BOOL_OUT[03]:=BOOL_GroupSet; |
|||
BOOL_OUT[04]:=BOOL_GroupSet; |
|||
BOOL_OUT[05]:=BOOL_GroupSet; |
|||
BOOL_OUT[06]:=BOOL_GroupSet; |
|||
BOOL_OUT[07]:=BOOL_GroupSet; |
|||
BOOL_OUT[08]:=BOOL_GroupSet; |
|||
BOOL_OUT[09]:=BOOL_GroupSet; |
|||
BOOL_OUT[10]:=BOOL_GroupSet; |
|||
BOOL_OUT[11]:=BOOL_GroupSet; |
|||
BOOL_OUT[12]:=BOOL_GroupSet; |
|||
BOOL_OUT[13]:=BOOL_GroupSet; |
|||
BOOL_OUT[14]:=BOOL_GroupSet; |
|||
BOOL_OUT[15]:=BOOL_GroupSet; |
|||
BOOL_OUT[16]:=BOOL_GroupSet; |
|||
BOOL_OUT[17]:=BOOL_GroupSet; |
|||
BOOL_OUT[18]:=BOOL_GroupSet; |
|||
BOOL_OUT[19]:=BOOL_GroupSet; |
|||
BOOL_OUT[20]:=BOOL_GroupSet; |
|||
BOOL_OUT[21]:=BOOL_GroupSet; |
|||
BOOL_OUT[22]:=BOOL_GroupSet; |
|||
BOOL_OUT[23]:=BOOL_GroupSet; |
|||
BOOL_OUT[24]:=BOOL_GroupSet; |
|||
BOOL_OUT[25]:=BOOL_GroupSet; |
|||
BOOL_OUT[26]:=BOOL_GroupSet; |
|||
BOOL_OUT[27]:=BOOL_GroupSet; |
|||
BOOL_OUT[28]:=BOOL_GroupSet; |
|||
BOOL_OUT[29]:=BOOL_GroupSet; |
|||
BOOL_OUT[30]:=BOOL_GroupSet; |
|||
BOOL_OUT[31]:=BOOL_GroupSet; |
|||
BOOL_OUT[32]:=BOOL_GroupSet; |
|||
BOOL_OUT[33]:=BOOL_GroupSet; |
|||
BOOL_OUT[34]:=BOOL_GroupSet; |
|||
BOOL_OUT[35]:=BOOL_GroupSet; |
|||
BOOL_OUT[36]:=BOOL_GroupSet; |
|||
BOOL_OUT[37]:=BOOL_GroupSet; |
|||
BOOL_OUT[38]:=BOOL_GroupSet; |
|||
BOOL_OUT[39]:=BOOL_GroupSet; |
|||
BOOL_OUT[40]:=BOOL_GroupSet; |
|||
BOOL_OUT[41]:=BOOL_GroupSet; |
|||
BOOL_OUT[42]:=BOOL_GroupSet; |
|||
BOOL_OUT[43]:=BOOL_GroupSet; |
|||
BOOL_OUT[44]:=BOOL_GroupSet; |
|||
BOOL_OUT[45]:=BOOL_GroupSet; |
|||
BOOL_OUT[46]:=BOOL_GroupSet; |
|||
BOOL_OUT[47]:=BOOL_GroupSet; |
|||
BOOL_OUT[48]:=BOOL_GroupSet; |
|||
BOOL_OUT[49]:=BOOL_GroupSet; |
|||
BOOL_OUT[50]:=BOOL_GroupSet; |
|||
end_if; |
|||
|
|||
|
|||
(**********一个INT型总变量对50个变量赋值,50个变量也可单独赋值*************) |
|||
|
|||
if INT_GroupSet<>INT_GroupSetP then |
|||
INT_OUT[01]:=INT_GroupSet; |
|||
INT_OUT[02]:=INT_GroupSet; |
|||
INT_OUT[03]:=INT_GroupSet; |
|||
INT_OUT[04]:=INT_GroupSet; |
|||
INT_OUT[05]:=INT_GroupSet; |
|||
INT_OUT[06]:=INT_GroupSet; |
|||
INT_OUT[07]:=INT_GroupSet; |
|||
INT_OUT[08]:=INT_GroupSet; |
|||
INT_OUT[09]:=INT_GroupSet; |
|||
INT_OUT[10]:=INT_GroupSet; |
|||
INT_OUT[11]:=INT_GroupSet; |
|||
INT_OUT[12]:=INT_GroupSet; |
|||
INT_OUT[13]:=INT_GroupSet; |
|||
INT_OUT[14]:=INT_GroupSet; |
|||
INT_OUT[15]:=INT_GroupSet; |
|||
INT_OUT[16]:=INT_GroupSet; |
|||
INT_OUT[17]:=INT_GroupSet; |
|||
INT_OUT[18]:=INT_GroupSet; |
|||
INT_OUT[19]:=INT_GroupSet; |
|||
INT_OUT[20]:=INT_GroupSet; |
|||
INT_OUT[21]:=INT_GroupSet; |
|||
INT_OUT[22]:=INT_GroupSet; |
|||
INT_OUT[23]:=INT_GroupSet; |
|||
INT_OUT[24]:=INT_GroupSet; |
|||
INT_OUT[25]:=INT_GroupSet; |
|||
INT_OUT[26]:=INT_GroupSet; |
|||
INT_OUT[27]:=INT_GroupSet; |
|||
INT_OUT[28]:=INT_GroupSet; |
|||
INT_OUT[29]:=INT_GroupSet; |
|||
INT_OUT[30]:=INT_GroupSet; |
|||
INT_OUT[31]:=INT_GroupSet; |
|||
INT_OUT[32]:=INT_GroupSet; |
|||
INT_OUT[33]:=INT_GroupSet; |
|||
INT_OUT[34]:=INT_GroupSet; |
|||
INT_OUT[35]:=INT_GroupSet; |
|||
INT_OUT[36]:=INT_GroupSet; |
|||
INT_OUT[37]:=INT_GroupSet; |
|||
INT_OUT[38]:=INT_GroupSet; |
|||
INT_OUT[39]:=INT_GroupSet; |
|||
INT_OUT[40]:=INT_GroupSet; |
|||
INT_OUT[41]:=INT_GroupSet; |
|||
INT_OUT[42]:=INT_GroupSet; |
|||
INT_OUT[43]:=INT_GroupSet; |
|||
INT_OUT[44]:=INT_GroupSet; |
|||
INT_OUT[45]:=INT_GroupSet; |
|||
INT_OUT[46]:=INT_GroupSet; |
|||
INT_OUT[47]:=INT_GroupSet; |
|||
INT_OUT[48]:=INT_GroupSet; |
|||
INT_OUT[49]:=INT_GroupSet; |
|||
INT_OUT[50]:=INT_GroupSet; |
|||
end_if; |
|||
|
|||
case lock of |
|||
(*0时,均不锁定,1锁定BOOL;2,锁定INT;3,锁定REAL;*) |
|||
0: |
|||
BOOL_GroupSetP:=BOOL_GroupSet; |
|||
INT_GroupSetP:=INT_GroupSet; |
|||
REAL_GroupSetP:=REAL_GroupSet; |
|||
1: |
|||
INT_GroupSetP:=INT_GroupSet; |
|||
REAL_GroupSetP:=REAL_GroupSet; |
|||
2: |
|||
BOOL_GroupSetP:=BOOL_GroupSet; |
|||
REAL_GroupSetP:=REAL_GroupSet; |
|||
3: |
|||
BOOL_GroupSetP:=BOOL_GroupSet; |
|||
INT_GroupSetP:=INT_GroupSet; |
|||
end_case; |
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,22 @@ |
|||
FUNCTION_BLOCK BS_GroupVavle50 |
|||
|
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
|
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
|
|||
END_VAR |
|||
|
|||
VAR |
|||
|
|||
END_VAR |
|||
|
|||
; |
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
File diff suppressed because it is too large
@ -0,0 +1,442 @@ |
|||
FUNCTION_BLOCK BS_ModbusCom |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
|
|||
SerialCom : byte; |
|||
NetSend : array[0..64] of NetSendConfig; |
|||
NetSendDelay : time; |
|||
ComSend : array[0..64] of ComSendConfig; |
|||
ComSendDelay : time; (*系统默认t#200ms*) |
|||
ComRecvDelay : time; (*系统默认t#120ms*) |
|||
ComAnalysisDelay: time; (*系统默认t#150ms*) |
|||
DataReadLength : int; |
|||
|
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
|
|||
DataStr : array[0..128] of byte; |
|||
DataRead : array[0..128] of DataFormat; |
|||
|
|||
END_VAR |
|||
|
|||
VAR |
|||
|
|||
SendFB : NW_SerSend; |
|||
RecvFB : NW_SerRecv; |
|||
SendP : pointer; |
|||
RecvP : pointer; |
|||
Send_act : bool; |
|||
Recv_act : bool; |
|||
i,j,k : int; |
|||
i0,i1,i2,i3 : int; |
|||
CRC16Lo1 : Byte; |
|||
CRC16Hi1 : Byte; |
|||
CRC16Lo : Byte; |
|||
CRC16Hi : Byte; |
|||
CL,CH : Byte; |
|||
SaveHi,SaveLo : Byte; |
|||
Flag : int; |
|||
ENO_Count0 : dword; |
|||
ENO_Count1 : dword; |
|||
timer1 : ton; |
|||
timer1_run : bool; |
|||
NetVarSend1 : NetVarSend; |
|||
t1 : ton; |
|||
t1_in : bool; |
|||
t1_q : bool; |
|||
t2 : ton; |
|||
t2_in : bool; |
|||
t2_q : bool; |
|||
t3 : ton; |
|||
t3_in : bool; |
|||
t3_q : bool; |
|||
Commandsend : int; |
|||
SendStr : array[0..8] of byte; |
|||
RecvStr : array[0..200] of byte; |
|||
CalcStr : array[0..200] of byte; |
|||
ErrStr : array[0..100] of int; |
|||
Recv_len : int; |
|||
Recv_lenp : int; |
|||
Recv_DataLen : int; |
|||
Recv_CRCLo : int; |
|||
Recv_CRCHi : int; |
|||
TestMode : bool; |
|||
StopMem : int; |
|||
ComTimeoutCount : int; |
|||
ComTimeoutClear : bool; |
|||
checkmark1 : bool; |
|||
checkmark2 : bool; |
|||
checkmark3 : bool; |
|||
checkmark4 : bool; |
|||
|
|||
DATA1 : int; |
|||
DATA2 : int; |
|||
|
|||
TempStr : array[0..128] of byte; |
|||
TempReal : real; |
|||
v2v : NW_MemCopy; |
|||
P1 : Pointer; |
|||
P2 : Pointer; |
|||
|
|||
END_VAR |
|||
(* |
|||
时 间:20200915 |
|||
版 本:1.3 |
|||
作 者:姚立 |
|||
名 称:通讯功能块 |
|||
说 明: |
|||
支持Modbus协议的03/04命令的读取及解析 |
|||
支持读取失败次数查询 |
|||
支持读取失败数据清除或保留设置 |
|||
支持Modbus协议的06命令的单个寄存器写入 |
|||
进一步修正了通讯错位问题 |
|||
|
|||
input 输入说明 |
|||
|
|||
SerialCom : byte; |
|||
NetSend : array[0..64] of NetSendConfig; |
|||
NetSendDelay : time; |
|||
ComSend : array[0..64] of ComSendConfig; |
|||
ComSendDelay : time; |
|||
ComRecvDelay : time; |
|||
ComAnalysisDelay: time; |
|||
DataReadLength : int; |
|||
DataType : array[0..256] of int ; |
|||
|
|||
output 输出说明 |
|||
|
|||
DataStr : array[0..256] of byte; |
|||
DataRead : array[0..256] of DataFormat; |
|||
|
|||
config 读写设置 |
|||
|
|||
ComSend[1].Enable :=1; 读取启用1 禁用为0,测试为2,测试时,该码被跳过,但不中断; |
|||
ComSend[1].EquipAddr :=1; 设备站号0-255 |
|||
ComSend[1].FunctionCode :=16#03; 功能码 目前支持 读取HR区16#03,读取AR区16#04 ,写入HR区,16#06 |
|||
ComSend[1].StartAddr :=2504; Modscan测试地址 |
|||
ComSend[1].Length :=12; 读取寄存器数量 |
|||
ComSend[1].StartMem :=0; 存放入DataStr数组起始位置,一般为前一数据的起始地址+前一数据读取寄存器长度*2 |
|||
ComSend[1].WriteDataH1 :=0; 写入数据的高位,读取时不需要输入 |
|||
ComSend[1].WriteDataL1 :=WriteTestW; 写入数据的低位,读取时不需要输入 |
|||
|
|||
read 读取数据 |
|||
|
|||
DataType[00]:=1; 数据类型设置 1 int 2 float 3 byte 0 任意,数据多时不建议为0 |
|||
|
|||
DATA:=DataRead[00].TO_BYTE; 分别对应 DataType 3 |
|||
DATA:=DataRead[00].TO_REAL; 分别对应 DataType 2 |
|||
DATA:=DataRead[00].TO_INT; 分别对应 DataType 1 |
|||
|
|||
|
|||
备 注: |
|||
目前为示例程序,暂未完成封装,测试程序需两台EXC5000C3版本以上CPU,本程序下载CPU配置COM口为自由口,另一CPU配置COM口为Modbus |
|||
配套示例读取程序为表具仿真程序MeterSim |
|||
依赖块:无 |
|||
|
|||
*) |
|||
|
|||
(**********************************************通讯配置**********************************************) |
|||
(* |
|||
以下延迟时间关系为基于EXC1000COM口485读取,测试速度为9600BPS所得 |
|||
若简短和延长,需同步调整,比例关系参考目前关系 |
|||
延迟时间和总线波特率,被访问设备响应速度有关,需根据实际情况调整 |
|||
*) |
|||
|
|||
|
|||
|
|||
(********************************************串口通讯发送********************************************) |
|||
|
|||
t1_in:=not t1.q; |
|||
t1(IN :=t1_in , PT :=ComSendDelay ); |
|||
t2(IN :=t1_in , PT :=ComRecvDelay ); |
|||
t3(IN :=t1_in , PT :=ComAnalysisDelay ); |
|||
|
|||
if t1.q=0 and t1_q=1 then |
|||
Send_act:=1; |
|||
else |
|||
Send_act:=0; |
|||
end_if; |
|||
|
|||
if t2.q=1 then |
|||
Recv_act:=1; |
|||
else |
|||
Recv_act:=0; |
|||
end_if; |
|||
|
|||
if ComSend[1].Enable=1 then (*序列首位有配置的话开始执行发送命令*) |
|||
if Send_act=1 then |
|||
if TestMode=0 then |
|||
Commandsend:=Commandsend + 1; |
|||
end_if; |
|||
end_if; |
|||
if ComSend[Commandsend].Enable=0 then (*执行到非启用位结束*) |
|||
Commandsend:=0; |
|||
end_if; |
|||
|
|||
if ComSend[Commandsend].Enable=1 then |
|||
(*读取命令*) |
|||
if ComSend[Commandsend].FunctionCode = 16#03 then |
|||
SendStr[0]:=ComSend[Commandsend].EquipAddr;(*地址*) |
|||
SendStr[1]:=ComSend[Commandsend].FunctionCode;(*功能码*) |
|||
SendStr[2]:=int_to_byte((ComSend[Commandsend].StartAddr-1) / 256);(*起始地址高位*) |
|||
SendStr[3]:=int_to_byte((ComSend[Commandsend].StartAddr-1) mod 256);(*起始地址低位*) |
|||
SendStr[4]:=0;(*长度高位*) |
|||
SendStr[5]:=ComSend[Commandsend].Length;(*长度低位*) |
|||
end_if; |
|||
(*读取命令*) |
|||
if ComSend[Commandsend].FunctionCode = 16#04 then |
|||
SendStr[0]:=ComSend[Commandsend].EquipAddr;(*地址*) |
|||
SendStr[1]:=ComSend[Commandsend].FunctionCode;(*功能码*) |
|||
SendStr[2]:=int_to_byte((ComSend[Commandsend].StartAddr-1) / 256);(*起始地址高位*) |
|||
SendStr[3]:=int_to_byte((ComSend[Commandsend].StartAddr-1) mod 256);(*起始地址低位*) |
|||
SendStr[4]:=0;(*长度高位*) |
|||
SendStr[5]:=ComSend[Commandsend].Length;(*长度低位*) |
|||
end_if; |
|||
(*写入命令*) |
|||
if ComSend[Commandsend].FunctionCode = 16#06 then |
|||
SendStr[0]:=ComSend[Commandsend].EquipAddr;(*地址*) |
|||
SendStr[1]:=ComSend[Commandsend].FunctionCode;(*功能码*) |
|||
SendStr[2]:=int_to_byte((ComSend[Commandsend].StartAddr-1) / 256);(*起始地址高位*) |
|||
SendStr[3]:=int_to_byte((ComSend[Commandsend].StartAddr-1) mod 256);(*起始地址低位*) |
|||
SendStr[4]:=ComSend[Commandsend].WriteDataH1; |
|||
SendStr[5]:=ComSend[Commandsend].WriteDataL1; |
|||
end_if; |
|||
end_if; |
|||
|
|||
if ComSend[Commandsend].Enable=2 then |
|||
SendStr[0]:= 16#00 ; |
|||
SendStr[1]:= 16#00 ; |
|||
SendStr[2]:= 16#00 ; |
|||
SendStr[3]:= 16#00 ; |
|||
SendStr[4]:= 16#00 ; |
|||
SendStr[5]:= 16#00 ; |
|||
end_if; |
|||
|
|||
(*CRC校验*) |
|||
CRC16Lo := 255; |
|||
CRC16Hi := 255; |
|||
CL := 1; |
|||
CH := 160; |
|||
|
|||
for i := 0 To 5 by 1 do |
|||
CRC16Lo := CRC16Lo xor SendStr[i]; |
|||
for Flag := 0 to 7 by 1 do |
|||
SaveHi := CRC16Hi; |
|||
SaveLo := CRC16Lo; |
|||
CRC16Hi := shr(CRC16Hi,1); |
|||
CRC16Lo := shr(CRC16Lo,1); |
|||
|
|||
if ((SaveHi and 1) = 1) then |
|||
CRC16Lo := CRC16Lo Or 128; |
|||
end_If; |
|||
If ((SaveLo and 1) = 1) then |
|||
CRC16Hi := CRC16Hi xor CH; |
|||
CRC16Lo := CRC16Lo xor CL; |
|||
end_if; |
|||
end_for; |
|||
end_for; |
|||
|
|||
SendStr[6]:=CRC16Lo; |
|||
SendStr[7]:=CRC16Hi; |
|||
|
|||
end_if; |
|||
|
|||
|
|||
if t3.q=1 then |
|||
|
|||
(*接收数据处理*) |
|||
if Recv_len>=6 then(*有返回*) |
|||
Recv_lenp :=Recv_len-3;(*去掉校验位-2,0开始-1*) |
|||
|
|||
CRC16Lo := 255; |
|||
CRC16Hi := 255; |
|||
CL := 1; |
|||
CH := 160; |
|||
|
|||
for i := 0 To Recv_lenp by 1 do |
|||
CRC16Lo := CRC16Lo xor RecvStr[i]; |
|||
for Flag := 0 to 7 by 1 do |
|||
SaveHi := CRC16Hi; |
|||
SaveLo := CRC16Lo; |
|||
CRC16Hi := shr(CRC16Hi,1); |
|||
CRC16Lo := shr(CRC16Lo,1); |
|||
|
|||
if ((SaveHi and 1) = 1) then |
|||
CRC16Lo := CRC16Lo Or 128; |
|||
end_If; |
|||
If ((SaveLo and 1) = 1) then |
|||
CRC16Hi := CRC16Hi xor CH; |
|||
CRC16Lo := CRC16Lo xor CL; |
|||
end_if; |
|||
end_for; |
|||
end_for; |
|||
CRC16Hi1:=CRC16Hi; |
|||
CRC16Lo1:=CRC16Lo; |
|||
|
|||
Recv_CRCLo:=Recv_lenp+1; |
|||
Recv_CRCHi:=Recv_lenp+2; |
|||
|
|||
(* |
|||
funtionCode03 |
|||
Tx 设备地址 03 起始地址高位 起始地址地位 寄存器数量高位 寄存器数量低位 CRCH CRCL |
|||
Rx 设备地址 03 字节数 寄存器1高位 寄存器1低位... CRCH CRCL |
|||
Recv_DataLen =(RecvStr[2])-1 是因为数据长度=“字节数”(字节数刚好是RecvStr[2])-1(i从0开始,所以-1) |
|||
j = i+3 是因为数据位是从第3位之后开始的 |
|||
|
|||
funtionCode06 |
|||
Tx 设备地址 06 起始地址高位 起始地址地位 寄存器值高位 寄存器值低位 CRCH CRCL |
|||
Rx 设备地址 06 起始地址高位 起始地址地位 寄存器值高位 寄存器值低位 CRCH CRCL |
|||
Recv_DataLen =(RecvStr[2])-1 是因为数据长度=2(单个寄存器读取只有2位)-1(i从0开始,所以-1) |
|||
j = i+4 是因为数据位是从第4位之后开始的 |
|||
|
|||
*) |
|||
if ComSend[Commandsend].FunctionCode = 16#03 or ComSend[Commandsend].FunctionCode = 16#04 then |
|||
Recv_DataLen:=byte_to_int(RecvStr[2])-1; |
|||
end_if; |
|||
if ComSend[Commandsend].FunctionCode = 16#06 then |
|||
Recv_DataLen:=1; |
|||
end_if; |
|||
if Commandsend<>0 then |
|||
if RecvStr[Recv_CRCLo]=CRC16Lo and RecvStr[Recv_CRCHi]=CRC16Hi then(*校验正确*) |
|||
|
|||
for i:=0 to Recv_DataLen by 1 do |
|||
if ComSend[Commandsend].FunctionCode = 16#03 or ComSend[Commandsend].FunctionCode = 16#04 then |
|||
j:=i+3; |
|||
end_if; |
|||
if ComSend[Commandsend].FunctionCode = 16#06 then |
|||
j:=i+4; |
|||
end_if; |
|||
if (SendStr[2]=int_to_byte((ComSend[Commandsend].StartAddr-1) / 256)) and (SendStr[3]=int_to_byte((ComSend[Commandsend].StartAddr-1) mod 256) )and (SendStr[1]=ComSend[Commandsend].FunctionCode) then(*功能码*) |
|||
CalcStr[i]:=RecvStr[j]; |
|||
k:=ComSend[Commandsend].StartMem+i; |
|||
DataStr[k]:=CalcStr[i]; |
|||
end_if; |
|||
end_for; |
|||
ErrStr[commandsend]:=0; |
|||
else |
|||
(*错误累计*) |
|||
ErrStr[Commandsend]:=ErrStr[Commandsend]+1; |
|||
if ErrStr[Commandsend]>999 then |
|||
ErrStr[Commandsend]:=999; |
|||
end_if; |
|||
end_if; |
|||
end_if; |
|||
(*清空接收*) |
|||
for i:=0 to 200 by 1 do |
|||
RecvStr[i]:=0; |
|||
CalcStr[i]:=0; |
|||
end_for; |
|||
|
|||
(*错误返回累计超时,清空内容*) |
|||
if ErrStr[Commandsend]>ComTimeoutCount and ComTimeoutClear=1 then |
|||
StopMem:=ComSend[Commandsend].StartMem+byte_to_int(ComSend[Commandsend].Length); |
|||
for i:=ComSend[Commandsend].StartMem to StopMem by 1 do |
|||
DataStr[i]:=0; |
|||
end_for; |
|||
end_if; |
|||
|
|||
end_if; |
|||
|
|||
end_if; |
|||
|
|||
|
|||
|
|||
|
|||
SendP:=&SendStr; |
|||
RecvP:=&RecvStr; |
|||
SendFB(EN :=Send_act , COM :=SerialCom , DATA :=SendP , LENGTH :=8 , IQM :=0 ); |
|||
RecvFB(EN :=Recv_act , COM :=SerialCom , DATA :=RecvP , IQM :=0 | Recv_len:= LENGTH); |
|||
|
|||
t1_q:=t1.q; |
|||
t2_q:=t2.q; |
|||
t3_q:=t3.q; |
|||
|
|||
(********************************************数据处理********************************************) |
|||
|
|||
for i := 0 To DataReadLength by 1 do |
|||
|
|||
(* Type 为0时全读*) |
|||
|
|||
i0:=i; |
|||
i1:=i+1; |
|||
i2:=i+2; |
|||
i3:=i+3; |
|||
|
|||
(* 1 int *) |
|||
DataRead[i].TO_INT:=byte_to_int(DataStr[i0])*256+byte_to_int(DataStr[i1]); |
|||
|
|||
(* 2 Float *) |
|||
TempStr[0]:=DataStr[i1]; |
|||
TempStr[1]:=DataStr[i0]; |
|||
TempStr[2]:=DataStr[i3]; |
|||
TempStr[3]:=DataStr[i2]; |
|||
P1:=&TempStr; |
|||
P2:=&TempReal; |
|||
v2v(DEST :=P2 , SRC :=P1 , LENGTH :=4 , IQM :=0 ); |
|||
DataRead[i].TO_REAL:=TempReal; |
|||
|
|||
(* 3 byte *) |
|||
DataRead[i].TO_BYTE:=1; |
|||
|
|||
end_for; |
|||
|
|||
(* 此段解析方式上后会导致错位,有时间时测试原因 |
|||
for i := 0 To DataReadLength by 1 do |
|||
|
|||
if DataType[i]=1 or DataType[i]=0 then |
|||
i0:=i; |
|||
i1:=i+1; |
|||
DataRead[i].TO_INT:=byte_to_int(DataStr[i0])*256+byte_to_int(DataStr[i1]); |
|||
end_if; |
|||
|
|||
if DataType[i]=2 or DataType[i]=0 then |
|||
i0:=i; |
|||
i1:=i+1; |
|||
i2:=i+2; |
|||
i3:=i+3; |
|||
TempStr[0]:=DataStr[i1]; |
|||
TempStr[1]:=DataStr[i0]; |
|||
TempStr[2]:=DataStr[i3]; |
|||
TempStr[3]:=DataStr[i2]; |
|||
P1:=&TempStr; |
|||
P2:=&TempReal; |
|||
v2v(DEST :=P2 , SRC :=P1 , LENGTH :=4 , IQM :=0 ); |
|||
DataRead[i].TO_REAL:=TempReal; |
|||
end_if; |
|||
|
|||
if DataType[i]=3 or DataType[i]=0 then |
|||
i0:=i; |
|||
DataRead[i].TO_BYTE:=DataStr[i]; |
|||
end_if; |
|||
|
|||
4 BCD |
|||
if DataType[i]=4 or DataType[i]=0 then |
|||
i0:=i; |
|||
i1:=i+1; |
|||
k1:=byte_to_int(DataStr[i0])*256+byte_to_int(DataStr[i1]); |
|||
DataRead[i].TO_BCD01:=int_to_bool( k1 Mod 2#0000000000000001 ); |
|||
DataRead[i].TO_BCD02:=int_to_bool( k1 Mod 2#0000000000000010 ); |
|||
DataRead[i].TO_BCD03:=int_to_bool( k1 Mod 2#0000000000000100 ); |
|||
DataRead[i].TO_BCD04:=int_to_bool( k1 Mod 2#0000000000001000 ); |
|||
DataRead[i].TO_BCD05:=int_to_bool( k1 Mod 2#0000000000010000 ); |
|||
DataRead[i].TO_BCD06:=int_to_bool( k1 Mod 2#0000000000100000 ); |
|||
DataRead[i].TO_BCD07:=int_to_bool( k1 Mod 2#0000000001000000 ); |
|||
DataRead[i].TO_BCD08:=int_to_bool( k1 Mod 2#0000000010000000 ); |
|||
DataRead[i].TO_BCD09:=int_to_bool( k1 Mod 2#0000000100000000 ); |
|||
DataRead[i].TO_BCD10:=int_to_bool( k1 Mod 2#0000001000000000 ); |
|||
DataRead[i].TO_BCD11:=int_to_bool( k1 Mod 2#0000010000000000 ); |
|||
DataRead[i].TO_BCD12:=int_to_bool( k1 Mod 2#0000100000000000 ); |
|||
DataRead[i].TO_BCD13:=int_to_bool( k1 Mod 2#0001000000000000 ); |
|||
DataRead[i].TO_BCD14:=int_to_bool( k1 Mod 2#0010000000000000 ); |
|||
DataRead[i].TO_BCD15:=int_to_bool( k1 Mod 2#0100000000000000 ); |
|||
DataRead[i].TO_BCD16:=int_to_bool( k1 Mod 2#1000000000000000 ); |
|||
|
|||
end_if; |
|||
*) |
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,442 @@ |
|||
FUNCTION_BLOCK BS_ModbusCom |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
|
|||
SerialCom : byte; |
|||
NetSend : array[0..64] of NetSendConfig; |
|||
NetSendDelay : time; |
|||
ComSend : array[0..64] of ComSendConfig; |
|||
ComSendDelay : time; (*系统默认t#200ms*) |
|||
ComRecvDelay : time; (*系统默认t#120ms*) |
|||
ComAnalysisDelay: time; (*系统默认t#150ms*) |
|||
DataReadLength : int; |
|||
|
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
|
|||
DataStr : array[0..128] of byte; |
|||
DataRead : array[0..128] of DataFormat; |
|||
|
|||
END_VAR |
|||
|
|||
VAR |
|||
|
|||
SendFB : NW_SerSend; |
|||
RecvFB : NW_SerRecv; |
|||
SendP : pointer; |
|||
RecvP : pointer; |
|||
Send_act : bool; |
|||
Recv_act : bool; |
|||
i,j,k : int; |
|||
i0,i1,i2,i3 : int; |
|||
CRC16Lo1 : Byte; |
|||
CRC16Hi1 : Byte; |
|||
CRC16Lo : Byte; |
|||
CRC16Hi : Byte; |
|||
CL,CH : Byte; |
|||
SaveHi,SaveLo : Byte; |
|||
Flag : int; |
|||
ENO_Count0 : dword; |
|||
ENO_Count1 : dword; |
|||
timer1 : ton; |
|||
timer1_run : bool; |
|||
NetVarSend1 : NetVarSend; |
|||
t1 : ton; |
|||
t1_in : bool; |
|||
t1_q : bool; |
|||
t2 : ton; |
|||
t2_in : bool; |
|||
t2_q : bool; |
|||
t3 : ton; |
|||
t3_in : bool; |
|||
t3_q : bool; |
|||
Commandsend : int; |
|||
SendStr : array[0..8] of byte; |
|||
RecvStr : array[0..200] of byte; |
|||
CalcStr : array[0..200] of byte; |
|||
ErrStr : array[0..100] of int; |
|||
Recv_len : int; |
|||
Recv_lenp : int; |
|||
Recv_DataLen : int; |
|||
Recv_CRCLo : int; |
|||
Recv_CRCHi : int; |
|||
TestMode : bool; |
|||
StopMem : int; |
|||
ComTimeoutCount : int; |
|||
ComTimeoutClear : bool; |
|||
checkmark1 : bool; |
|||
checkmark2 : bool; |
|||
checkmark3 : bool; |
|||
checkmark4 : bool; |
|||
|
|||
DATA1 : int; |
|||
DATA2 : int; |
|||
|
|||
TempStr : array[0..128] of byte; |
|||
TempReal : real; |
|||
v2v : NW_MemCopy; |
|||
P1 : Pointer; |
|||
P2 : Pointer; |
|||
|
|||
END_VAR |
|||
(* |
|||
时 间:20200915 |
|||
版 本:1.3 |
|||
作 者:姚立 |
|||
名 称:通讯功能块 |
|||
说 明: |
|||
支持Modbus协议的03/04命令的读取及解析 |
|||
支持读取失败次数查询 |
|||
支持读取失败数据清除或保留设置 |
|||
支持Modbus协议的06命令的单个寄存器写入 |
|||
进一步修正了通讯错位问题 |
|||
|
|||
input 输入说明 |
|||
|
|||
SerialCom : byte; |
|||
NetSend : array[0..64] of NetSendConfig; |
|||
NetSendDelay : time; |
|||
ComSend : array[0..64] of ComSendConfig; |
|||
ComSendDelay : time; |
|||
ComRecvDelay : time; |
|||
ComAnalysisDelay: time; |
|||
DataReadLength : int; |
|||
DataType : array[0..256] of int ; |
|||
|
|||
output 输出说明 |
|||
|
|||
DataStr : array[0..256] of byte; |
|||
DataRead : array[0..256] of DataFormat; |
|||
|
|||
config 读写设置 |
|||
|
|||
ComSend[1].Enable :=1; 读取启用1 禁用为0,测试为2,测试时,该码被跳过,但不中断; |
|||
ComSend[1].EquipAddr :=1; 设备站号0-255 |
|||
ComSend[1].FunctionCode :=16#03; 功能码 目前支持 读取HR区16#03,读取AR区16#04 ,写入HR区,16#06 |
|||
ComSend[1].StartAddr :=2504; Modscan测试地址 |
|||
ComSend[1].Length :=12; 读取寄存器数量 |
|||
ComSend[1].StartMem :=0; 存放入DataStr数组起始位置,一般为前一数据的起始地址+前一数据读取寄存器长度*2 |
|||
ComSend[1].WriteDataH1 :=0; 写入数据的高位,读取时不需要输入 |
|||
ComSend[1].WriteDataL1 :=WriteTestW; 写入数据的低位,读取时不需要输入 |
|||
|
|||
read 读取数据 |
|||
|
|||
DataType[00]:=1; 数据类型设置 1 int 2 float 3 byte 0 任意,数据多时不建议为0 |
|||
|
|||
DATA:=DataRead[00].TO_BYTE; 分别对应 DataType 3 |
|||
DATA:=DataRead[00].TO_REAL; 分别对应 DataType 2 |
|||
DATA:=DataRead[00].TO_INT; 分别对应 DataType 1 |
|||
|
|||
|
|||
备 注: |
|||
目前为示例程序,暂未完成封装,测试程序需两台EXC5000C3版本以上CPU,本程序下载CPU配置COM口为自由口,另一CPU配置COM口为Modbus |
|||
配套示例读取程序为表具仿真程序MeterSim |
|||
依赖块:无 |
|||
|
|||
*) |
|||
|
|||
(**********************************************通讯配置**********************************************) |
|||
(* |
|||
以下延迟时间关系为基于EXC1000COM口485读取,测试速度为9600BPS所得 |
|||
若简短和延长,需同步调整,比例关系参考目前关系 |
|||
延迟时间和总线波特率,被访问设备响应速度有关,需根据实际情况调整 |
|||
*) |
|||
|
|||
|
|||
|
|||
(********************************************串口通讯发送********************************************) |
|||
|
|||
t1_in:=not t1.q; |
|||
t1(IN :=t1_in , PT :=ComSendDelay ); |
|||
t2(IN :=t1_in , PT :=ComRecvDelay ); |
|||
t3(IN :=t1_in , PT :=ComAnalysisDelay ); |
|||
|
|||
if t1.q=0 and t1_q=1 then |
|||
Send_act:=1; |
|||
else |
|||
Send_act:=0; |
|||
end_if; |
|||
|
|||
if t2.q=1 then |
|||
Recv_act:=1; |
|||
else |
|||
Recv_act:=0; |
|||
end_if; |
|||
|
|||
if ComSend[1].Enable=1 then (*序列首位有配置的话开始执行发送命令*) |
|||
if Send_act=1 then |
|||
if TestMode=0 then |
|||
Commandsend:=Commandsend + 1; |
|||
end_if; |
|||
end_if; |
|||
if ComSend[Commandsend].Enable=0 then (*执行到非启用位结束*) |
|||
Commandsend:=0; |
|||
end_if; |
|||
|
|||
if ComSend[Commandsend].Enable=1 then |
|||
(*读取命令*) |
|||
if ComSend[Commandsend].FunctionCode = 16#03 then |
|||
SendStr[0]:=ComSend[Commandsend].EquipAddr;(*地址*) |
|||
SendStr[1]:=ComSend[Commandsend].FunctionCode;(*功能码*) |
|||
SendStr[2]:=int_to_byte((ComSend[Commandsend].StartAddr-1) / 256);(*起始地址高位*) |
|||
SendStr[3]:=int_to_byte((ComSend[Commandsend].StartAddr-1) mod 256);(*起始地址低位*) |
|||
SendStr[4]:=0;(*长度高位*) |
|||
SendStr[5]:=ComSend[Commandsend].Length;(*长度低位*) |
|||
end_if; |
|||
(*读取命令*) |
|||
if ComSend[Commandsend].FunctionCode = 16#04 then |
|||
SendStr[0]:=ComSend[Commandsend].EquipAddr;(*地址*) |
|||
SendStr[1]:=ComSend[Commandsend].FunctionCode;(*功能码*) |
|||
SendStr[2]:=int_to_byte((ComSend[Commandsend].StartAddr-1) / 256);(*起始地址高位*) |
|||
SendStr[3]:=int_to_byte((ComSend[Commandsend].StartAddr-1) mod 256);(*起始地址低位*) |
|||
SendStr[4]:=0;(*长度高位*) |
|||
SendStr[5]:=ComSend[Commandsend].Length;(*长度低位*) |
|||
end_if; |
|||
(*写入命令*) |
|||
if ComSend[Commandsend].FunctionCode = 16#06 then |
|||
SendStr[0]:=ComSend[Commandsend].EquipAddr;(*地址*) |
|||
SendStr[1]:=ComSend[Commandsend].FunctionCode;(*功能码*) |
|||
SendStr[2]:=int_to_byte((ComSend[Commandsend].StartAddr-1) / 256);(*起始地址高位*) |
|||
SendStr[3]:=int_to_byte((ComSend[Commandsend].StartAddr-1) mod 256);(*起始地址低位*) |
|||
SendStr[4]:=ComSend[Commandsend].WriteDataH1; |
|||
SendStr[5]:=ComSend[Commandsend].WriteDataL1; |
|||
end_if; |
|||
end_if; |
|||
|
|||
if ComSend[Commandsend].Enable=2 then |
|||
SendStr[0]:= 16#00 ; |
|||
SendStr[1]:= 16#00 ; |
|||
SendStr[2]:= 16#00 ; |
|||
SendStr[3]:= 16#00 ; |
|||
SendStr[4]:= 16#00 ; |
|||
SendStr[5]:= 16#00 ; |
|||
end_if; |
|||
|
|||
(*CRC校验*) |
|||
CRC16Lo := 255; |
|||
CRC16Hi := 255; |
|||
CL := 1; |
|||
CH := 160; |
|||
|
|||
for i := 0 To 5 by 1 do |
|||
CRC16Lo := CRC16Lo xor SendStr[i]; |
|||
for Flag := 0 to 7 by 1 do |
|||
SaveHi := CRC16Hi; |
|||
SaveLo := CRC16Lo; |
|||
CRC16Hi := shr(CRC16Hi,1); |
|||
CRC16Lo := shr(CRC16Lo,1); |
|||
|
|||
if ((SaveHi and 1) = 1) then |
|||
CRC16Lo := CRC16Lo Or 128; |
|||
end_If; |
|||
If ((SaveLo and 1) = 1) then |
|||
CRC16Hi := CRC16Hi xor CH; |
|||
CRC16Lo := CRC16Lo xor CL; |
|||
end_if; |
|||
end_for; |
|||
end_for; |
|||
|
|||
SendStr[6]:=CRC16Lo; |
|||
SendStr[7]:=CRC16Hi; |
|||
|
|||
end_if; |
|||
|
|||
|
|||
if t3.q=1 then |
|||
|
|||
(*接收数据处理*) |
|||
if Recv_len>=6 then(*有返回*) |
|||
Recv_lenp :=Recv_len-3;(*去掉校验位-2,0开始-1*) |
|||
|
|||
CRC16Lo := 255; |
|||
CRC16Hi := 255; |
|||
CL := 1; |
|||
CH := 160; |
|||
|
|||
for i := 0 To Recv_lenp by 1 do |
|||
CRC16Lo := CRC16Lo xor RecvStr[i]; |
|||
for Flag := 0 to 7 by 1 do |
|||
SaveHi := CRC16Hi; |
|||
SaveLo := CRC16Lo; |
|||
CRC16Hi := shr(CRC16Hi,1); |
|||
CRC16Lo := shr(CRC16Lo,1); |
|||
|
|||
if ((SaveHi and 1) = 1) then |
|||
CRC16Lo := CRC16Lo Or 128; |
|||
end_If; |
|||
If ((SaveLo and 1) = 1) then |
|||
CRC16Hi := CRC16Hi xor CH; |
|||
CRC16Lo := CRC16Lo xor CL; |
|||
end_if; |
|||
end_for; |
|||
end_for; |
|||
CRC16Hi1:=CRC16Hi; |
|||
CRC16Lo1:=CRC16Lo; |
|||
|
|||
Recv_CRCLo:=Recv_lenp+1; |
|||
Recv_CRCHi:=Recv_lenp+2; |
|||
|
|||
(* |
|||
funtionCode03 |
|||
Tx 设备地址 03 起始地址高位 起始地址地位 寄存器数量高位 寄存器数量低位 CRCH CRCL |
|||
Rx 设备地址 03 字节数 寄存器1高位 寄存器1低位... CRCH CRCL |
|||
Recv_DataLen =(RecvStr[2])-1 是因为数据长度=“字节数”(字节数刚好是RecvStr[2])-1(i从0开始,所以-1) |
|||
j = i+3 是因为数据位是从第3位之后开始的 |
|||
|
|||
funtionCode06 |
|||
Tx 设备地址 06 起始地址高位 起始地址地位 寄存器值高位 寄存器值低位 CRCH CRCL |
|||
Rx 设备地址 06 起始地址高位 起始地址地位 寄存器值高位 寄存器值低位 CRCH CRCL |
|||
Recv_DataLen =(RecvStr[2])-1 是因为数据长度=2(单个寄存器读取只有2位)-1(i从0开始,所以-1) |
|||
j = i+4 是因为数据位是从第4位之后开始的 |
|||
|
|||
*) |
|||
if ComSend[Commandsend].FunctionCode = 16#03 or ComSend[Commandsend].FunctionCode = 16#04 then |
|||
Recv_DataLen:=byte_to_int(RecvStr[2])-1; |
|||
end_if; |
|||
if ComSend[Commandsend].FunctionCode = 16#06 then |
|||
Recv_DataLen:=1; |
|||
end_if; |
|||
if Commandsend<>0 then |
|||
if RecvStr[Recv_CRCLo]=CRC16Lo and RecvStr[Recv_CRCHi]=CRC16Hi then(*校验正确*) |
|||
|
|||
for i:=0 to Recv_DataLen by 1 do |
|||
if ComSend[Commandsend].FunctionCode = 16#03 or ComSend[Commandsend].FunctionCode = 16#04 then |
|||
j:=i+3; |
|||
end_if; |
|||
if ComSend[Commandsend].FunctionCode = 16#06 then |
|||
j:=i+4; |
|||
end_if; |
|||
if (SendStr[2]=int_to_byte((ComSend[Commandsend].StartAddr-1) / 256)) and (SendStr[3]=int_to_byte((ComSend[Commandsend].StartAddr-1) mod 256) )and (SendStr[1]=ComSend[Commandsend].FunctionCode) then(*功能码*) |
|||
CalcStr[i]:=RecvStr[j]; |
|||
k:=ComSend[Commandsend].StartMem+i; |
|||
DataStr[k]:=CalcStr[i]; |
|||
end_if; |
|||
end_for; |
|||
ErrStr[commandsend]:=0; |
|||
else |
|||
(*错误累计*) |
|||
ErrStr[Commandsend]:=ErrStr[Commandsend]+1; |
|||
if ErrStr[Commandsend]>999 then |
|||
ErrStr[Commandsend]:=999; |
|||
end_if; |
|||
end_if; |
|||
end_if; |
|||
(*清空接收*) |
|||
for i:=0 to 200 by 1 do |
|||
RecvStr[i]:=0; |
|||
CalcStr[i]:=0; |
|||
end_for; |
|||
|
|||
(*错误返回累计超时,清空内容*) |
|||
if ErrStr[Commandsend]>ComTimeoutCount and ComTimeoutClear=1 then |
|||
StopMem:=ComSend[Commandsend].StartMem+byte_to_int(ComSend[Commandsend].Length); |
|||
for i:=ComSend[Commandsend].StartMem to StopMem by 1 do |
|||
DataStr[i]:=0; |
|||
end_for; |
|||
end_if; |
|||
|
|||
end_if; |
|||
|
|||
end_if; |
|||
|
|||
|
|||
|
|||
|
|||
SendP:=&SendStr; |
|||
RecvP:=&RecvStr; |
|||
SendFB(EN :=Send_act , COM :=SerialCom , DATA :=SendP , LENGTH :=8 , IQM :=0 ); |
|||
RecvFB(EN :=Recv_act , COM :=SerialCom , DATA :=RecvP , IQM :=0 | Recv_len:= LENGTH); |
|||
|
|||
t1_q:=t1.q; |
|||
t2_q:=t2.q; |
|||
t3_q:=t3.q; |
|||
|
|||
(********************************************数据处理********************************************) |
|||
|
|||
for i := 0 To DataReadLength by 1 do |
|||
|
|||
(* Type 为0时全读*) |
|||
|
|||
i0:=i; |
|||
i1:=i+1; |
|||
i2:=i+2; |
|||
i3:=i+3; |
|||
|
|||
(* 1 int *) |
|||
DataRead[i].TO_INT:=byte_to_int(DataStr[i0])*256+byte_to_int(DataStr[i1]); |
|||
|
|||
(* 2 Float *) |
|||
TempStr[0]:=DataStr[i1]; |
|||
TempStr[1]:=DataStr[i0]; |
|||
TempStr[2]:=DataStr[i3]; |
|||
TempStr[3]:=DataStr[i2]; |
|||
P1:=&TempStr; |
|||
P2:=&TempReal; |
|||
v2v(DEST :=P2 , SRC :=P1 , LENGTH :=4 , IQM :=0 ); |
|||
DataRead[i].TO_REAL:=TempReal; |
|||
|
|||
(* 3 byte *) |
|||
DataRead[i].TO_BYTE:=1; |
|||
|
|||
end_for; |
|||
|
|||
(* 此段解析方式上后会导致错位,有时间时测试原因 |
|||
for i := 0 To DataReadLength by 1 do |
|||
|
|||
if DataType[i]=1 or DataType[i]=0 then |
|||
i0:=i; |
|||
i1:=i+1; |
|||
DataRead[i].TO_INT:=byte_to_int(DataStr[i0])*256+byte_to_int(DataStr[i1]); |
|||
end_if; |
|||
|
|||
if DataType[i]=2 or DataType[i]=0 then |
|||
i0:=i; |
|||
i1:=i+1; |
|||
i2:=i+2; |
|||
i3:=i+3; |
|||
TempStr[0]:=DataStr[i1]; |
|||
TempStr[1]:=DataStr[i0]; |
|||
TempStr[2]:=DataStr[i3]; |
|||
TempStr[3]:=DataStr[i2]; |
|||
P1:=&TempStr; |
|||
P2:=&TempReal; |
|||
v2v(DEST :=P2 , SRC :=P1 , LENGTH :=4 , IQM :=0 ); |
|||
DataRead[i].TO_REAL:=TempReal; |
|||
end_if; |
|||
|
|||
if DataType[i]=3 or DataType[i]=0 then |
|||
i0:=i; |
|||
DataRead[i].TO_BYTE:=DataStr[i]; |
|||
end_if; |
|||
|
|||
4 BCD |
|||
if DataType[i]=4 or DataType[i]=0 then |
|||
i0:=i; |
|||
i1:=i+1; |
|||
k1:=byte_to_int(DataStr[i0])*256+byte_to_int(DataStr[i1]); |
|||
DataRead[i].TO_BCD01:=int_to_bool( k1 Mod 2#0000000000000001 ); |
|||
DataRead[i].TO_BCD02:=int_to_bool( k1 Mod 2#0000000000000010 ); |
|||
DataRead[i].TO_BCD03:=int_to_bool( k1 Mod 2#0000000000000100 ); |
|||
DataRead[i].TO_BCD04:=int_to_bool( k1 Mod 2#0000000000001000 ); |
|||
DataRead[i].TO_BCD05:=int_to_bool( k1 Mod 2#0000000000010000 ); |
|||
DataRead[i].TO_BCD06:=int_to_bool( k1 Mod 2#0000000000100000 ); |
|||
DataRead[i].TO_BCD07:=int_to_bool( k1 Mod 2#0000000001000000 ); |
|||
DataRead[i].TO_BCD08:=int_to_bool( k1 Mod 2#0000000010000000 ); |
|||
DataRead[i].TO_BCD09:=int_to_bool( k1 Mod 2#0000000100000000 ); |
|||
DataRead[i].TO_BCD10:=int_to_bool( k1 Mod 2#0000001000000000 ); |
|||
DataRead[i].TO_BCD11:=int_to_bool( k1 Mod 2#0000010000000000 ); |
|||
DataRead[i].TO_BCD12:=int_to_bool( k1 Mod 2#0000100000000000 ); |
|||
DataRead[i].TO_BCD13:=int_to_bool( k1 Mod 2#0001000000000000 ); |
|||
DataRead[i].TO_BCD14:=int_to_bool( k1 Mod 2#0010000000000000 ); |
|||
DataRead[i].TO_BCD15:=int_to_bool( k1 Mod 2#0100000000000000 ); |
|||
DataRead[i].TO_BCD16:=int_to_bool( k1 Mod 2#1000000000000000 ); |
|||
|
|||
end_if; |
|||
*) |
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,421 @@ |
|||
FUNCTION_BLOCK BS_PID |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
RUN : BOOL ; (* PID鍔熻兘鍧楀惎鐢� *) |
|||
STOP_D : BOOL ; (* 寰�垎鍚�仠 *) |
|||
STOP_I : BOOL ; (* 绉�垎鍚�仠 *) |
|||
SET : REAL ; (* PID璋冭妭鐩�爣鍊� *) |
|||
FB : REAL ; (* PID璋冭妭鐩�爣鍊肩殑鍙嶉�鍊� *) |
|||
Kfb : REAL:=1.0; (* 鍙嶉�鍙傛暟 *) |
|||
Kp : REAL:=30.0 ; (* 姣斾緥鍙傛暟 *) |
|||
Ti : REAL:=150.0 ; (* 绉�垎鍙傛暟 *) |
|||
Td : REAL ; (* 寰�垎鍙傛暟 *) |
|||
Dead_Band : REAL; (* 姝诲尯 *) |
|||
Ymax : REAL ; (* 鏈€澶ц緭鍑哄€� *) |
|||
Ymin : REAL ; (* 鏈€灏忚緭鍑哄€� *) |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
OUT : REAL ; (* 绉�垎鏈€澶ц緭鍑哄€� *) |
|||
END_VAR |
|||
|
|||
VAR |
|||
TIME1 : REAL ; |
|||
TIME2 : REAL ; |
|||
Y1 : REAL ; |
|||
Y2 : REAL ; |
|||
Y3 : REAL ; |
|||
CYCL : BOOL ; |
|||
START : BOOL ; |
|||
Delta : REAL ; |
|||
OUTP : REAL ; |
|||
OUTI : REAL ; |
|||
OUTD : REAL ; |
|||
I : DINT ; |
|||
END_VAR |
|||
|
|||
(*Automatically declared*) |
|||
VAR_EXTERNAL |
|||
END_VAR |
|||
(** {* **) |
|||
(** **) |
|||
(** 时 间:20191006 **) |
|||
(** 版 本:1.1 **) |
|||
(** 作 者:姚立 **) |
|||
(** 名 称:PID程序 **) |
|||
(** 说 明:用于PID控制计算 **) |
|||
(** 备 注:修正了除0情况的报错发生 **) |
|||
(** 依赖块:无 **) |
|||
(** **) |
|||
(** *} **) |
|||
(** **) |
|||
(** IF RUN=TRUE AND kp<>0.0 AND Ti<>0.0 THEN **) |
|||
(* if - Cond *) |
|||
LD RUN |
|||
EQ TRUE |
|||
AND ( kp |
|||
NE 0.0 |
|||
) |
|||
AND ( Ti |
|||
NE 0.0 |
|||
) |
|||
JMPCN ODK_SKIP_000000000000001_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** IF (TIME2<>(DINT_TO_REAL(TIME_TO_DINT(GetTime(t#0ms))))) THEN **) |
|||
(* if - Cond *) |
|||
LD TIME2 |
|||
NE ( t#0ms |
|||
GetTime |
|||
TIME_TO_DINT |
|||
DINT_TO_REAL |
|||
) |
|||
JMPCN ODK_SKIP_000000000000002_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** TIME1:=TIME2; **) |
|||
(* assign - Stmt *) |
|||
LD TIME2 |
|||
ST TIME1 |
|||
|
|||
(** TIME2:=DINT_TO_REAL(TIME_TO_DINT(GetTime(t#0ms))); **) |
|||
(* assign - Stmt *) |
|||
LD t#0ms |
|||
GetTime |
|||
TIME_TO_DINT |
|||
DINT_TO_REAL |
|||
ST TIME2 |
|||
|
|||
(** Y1:=Y2; **) |
|||
(* assign - Stmt *) |
|||
LD Y2 |
|||
ST Y1 |
|||
|
|||
(** Y2:=Y3; **) |
|||
(* assign - Stmt *) |
|||
LD Y3 |
|||
ST Y2 |
|||
|
|||
(** Y3:=SET-(Kfb*FB); **) |
|||
(* assign - Stmt *) |
|||
LD SET |
|||
SUB ( Kfb |
|||
MUL FB |
|||
) |
|||
ST Y3 |
|||
|
|||
(** IF I>=2 AND DEAD_BAND<ABS(Y3) THEN{*死区*} **) |
|||
(* if - Cond *) |
|||
LD I |
|||
GE 2 |
|||
AND ( DEAD_BAND |
|||
LT ( Y3 |
|||
ABS |
|||
) |
|||
) |
|||
JMPCN ODK_SKIP_000000000000003_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** OUTP:=Y3*Kp; **) |
|||
(* assign - Stmt *) |
|||
LD Y3 |
|||
MUL kp |
|||
ST OUTP |
|||
|
|||
(** Delta:=(TIME2-TIME1)/1000.0; **) |
|||
(* assign - Stmt *) |
|||
LD TIME2 |
|||
SUB TIME1 |
|||
DIV 1000.0 |
|||
ST Delta |
|||
|
|||
(** IF STOP_I<>TRUE THEN **) |
|||
(* if - Cond *) |
|||
LD STOP_I |
|||
NE TRUE |
|||
JMPCN ODK_SKIP_000000000000004_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** OUTI:=OUTI+((Y2+Y3)*Delta/2.0)/Ti; **) |
|||
(* assign - Stmt *) |
|||
LD OUTI |
|||
ADD ( Y2 |
|||
ADD Y3 |
|||
MUL Delta |
|||
DIV 2.0 |
|||
DIV Ti |
|||
) |
|||
ST OUTI |
|||
|
|||
(** IF OUTI>Ymax THEN{*防止积分过大*} **) |
|||
(* if - Cond *) |
|||
LD OUTI |
|||
GT Ymax |
|||
JMPCN ODK_SKIP_000000000000005_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** OUTI:=Ymax; **) |
|||
(* assign - Stmt *) |
|||
LD Ymax |
|||
ST OUTI |
|||
|
|||
JMP ODK_END_IF_000000000000005 |
|||
|
|||
(** ELSIF OUTI<(0.0-Ymax) THEN **) |
|||
(* elseif - Cond *) |
|||
ODK_SKIP_000000000000005_000000000000001: |
|||
LD OUTI |
|||
LT ( 0.0 |
|||
SUB Ymax |
|||
) |
|||
JMPCN ODK_SKIP_000000000000005_000000000000002 |
|||
|
|||
(* elsif - Stmts *) |
|||
|
|||
(** OUTI:=(0.0-Ymax); **) |
|||
(* assign - Stmt *) |
|||
LD 0.0 |
|||
SUB Ymax |
|||
ST OUTI |
|||
|
|||
JMP ODK_END_IF_000000000000005 |
|||
|
|||
(** END_IF; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000005_000000000000002: |
|||
ODK_END_IF_000000000000005: |
|||
|
|||
JMP ODK_END_IF_000000000000004 |
|||
|
|||
(** END_IF; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000004_000000000000001: |
|||
ODK_END_IF_000000000000004: |
|||
|
|||
(** IF STOP_D<>TRUE THEN **) |
|||
(* if - Cond *) |
|||
LD STOP_D |
|||
NE TRUE |
|||
JMPCN ODK_SKIP_000000000000006_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** OUTD:=Td*(0.5*Y1-2.0*Y2+1.5*Y3)/Delta; **) |
|||
(* assign - Stmt *) |
|||
LD Td |
|||
MUL ( 0.5 |
|||
MUL Y1 |
|||
SUB ( 2.0 |
|||
MUL Y2 |
|||
) |
|||
ADD ( 1.5 |
|||
MUL Y3 |
|||
) |
|||
) |
|||
DIV Delta |
|||
ST OUTD |
|||
|
|||
JMP ODK_END_IF_000000000000006 |
|||
|
|||
(** END_IF; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000006_000000000000001: |
|||
ODK_END_IF_000000000000006: |
|||
|
|||
JMP ODK_END_IF_000000000000003 |
|||
|
|||
(** ELSE **) |
|||
(* else *) |
|||
ODK_SKIP_000000000000003_000000000000001: |
|||
|
|||
(* else - Stmts *) |
|||
|
|||
(** I:=I+1; **) |
|||
(* assign - Stmt *) |
|||
LD I |
|||
ADD 1 |
|||
ST I |
|||
|
|||
(** 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: |
|||
|
|||
(** {* Adder *} **) |
|||
(** IF OUTP+OUTI+OUTD>Ymax THEN **) |
|||
(* if - Cond *) |
|||
LD OUTP |
|||
ADD OUTI |
|||
ADD OUTD |
|||
GT Ymax |
|||
JMPCN ODK_SKIP_000000000000007_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** OUT:=Ymax; **) |
|||
(* assign - Stmt *) |
|||
LD Ymax |
|||
ST OUT |
|||
|
|||
JMP ODK_END_IF_000000000000007 |
|||
|
|||
(** ELSIF OUTP+OUTI+OUTD<Ymin THEN **) |
|||
(* elseif - Cond *) |
|||
ODK_SKIP_000000000000007_000000000000001: |
|||
LD OUTP |
|||
ADD OUTI |
|||
ADD OUTD |
|||
LT Ymin |
|||
JMPCN ODK_SKIP_000000000000007_000000000000002 |
|||
|
|||
(* elsif - Stmts *) |
|||
|
|||
(** OUT:=Ymin; **) |
|||
(* assign - Stmt *) |
|||
LD Ymin |
|||
ST OUT |
|||
|
|||
JMP ODK_END_IF_000000000000007 |
|||
|
|||
(** ELSE **) |
|||
(* else *) |
|||
ODK_SKIP_000000000000007_000000000000002: |
|||
|
|||
(* else - Stmts *) |
|||
|
|||
(** OUT:=OUTP+OUTI+OUTD; **) |
|||
(* assign - Stmt *) |
|||
LD OUTP |
|||
ADD OUTI |
|||
ADD OUTD |
|||
ST OUT |
|||
|
|||
(** END_IF; **) |
|||
(* if - End *) |
|||
ODK_END_IF_000000000000007: |
|||
|
|||
JMP ODK_END_IF_000000000000001 |
|||
|
|||
(** **) |
|||
(** ELSE **) |
|||
(* else *) |
|||
ODK_SKIP_000000000000001_000000000000001: |
|||
|
|||
(* else - Stmts *) |
|||
|
|||
(** TIME1:=0.0; **) |
|||
(* assign - Stmt *) |
|||
LD 0.0 |
|||
ST TIME1 |
|||
|
|||
(** TIME2:=0.0; **) |
|||
(* assign - Stmt *) |
|||
LD 0.0 |
|||
ST TIME2 |
|||
|
|||
(** Y1:=0.0; **) |
|||
(* assign - Stmt *) |
|||
LD 0.0 |
|||
ST Y1 |
|||
|
|||
(** Y2:=0.0; **) |
|||
(* assign - Stmt *) |
|||
LD 0.0 |
|||
ST Y2 |
|||
|
|||
(** Y3:=0.0; **) |
|||
(* assign - Stmt *) |
|||
LD 0.0 |
|||
ST Y3 |
|||
|
|||
(** CYCL:=FALSE; **) |
|||
(* assign - Stmt *) |
|||
LD FALSE |
|||
ST CYCL |
|||
|
|||
(** START:=FALSE; **) |
|||
(* assign - Stmt *) |
|||
LD FALSE |
|||
ST START |
|||
|
|||
(** Delta:=0.0; **) |
|||
(* assign - Stmt *) |
|||
LD 0.0 |
|||
ST Delta |
|||
|
|||
(** OUTP:=0.0; **) |
|||
(* assign - Stmt *) |
|||
LD 0.0 |
|||
ST OUTP |
|||
|
|||
(** OUTI:=0.0; **) |
|||
(* assign - Stmt *) |
|||
LD 0.0 |
|||
ST OUTI |
|||
|
|||
(** OUTD:=0.0; **) |
|||
(* assign - Stmt *) |
|||
LD 0.0 |
|||
ST OUTD |
|||
|
|||
(** OUT :=0.0; **) |
|||
(* assign - Stmt *) |
|||
LD 0.0 |
|||
ST OUT |
|||
|
|||
(** I :=0; **) |
|||
(* assign - Stmt *) |
|||
LD 0 |
|||
ST I |
|||
|
|||
(** END_IF; **) |
|||
(* if - End *) |
|||
ODK_END_IF_000000000000001: |
|||
|
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
(** **) |
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,132 @@ |
|||
FUNCTION_BLOCK BS_PID |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
RUN : BOOL ; (* PID功能块启用 *) |
|||
STOP_D : BOOL ; (* 微分启停 *) |
|||
STOP_I : BOOL ; (* 积分启停 *) |
|||
SET : REAL ; (* PID调节目标值 *) |
|||
FB : REAL ; (* PID调节目标值的反馈值 *) |
|||
Kfb : REAL:=1.0; (* 反馈参数 *) |
|||
Kp : REAL:=30.0 ; (* 比例参数 *) |
|||
Ti : REAL:=150.0 ; (* 积分参数 *) |
|||
Td : REAL ; (* 微分参数 *) |
|||
Dead_Band : REAL; (* 死区 *) |
|||
Ymax : REAL ; (* 最大输出值 *) |
|||
Ymin : REAL ; (* 最小输出值 *) |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
OUT : REAL ; (* 积分最大输出值 *) |
|||
END_VAR |
|||
|
|||
VAR |
|||
TIME1 : REAL ; |
|||
TIME2 : REAL ; |
|||
Y1 : REAL ; |
|||
Y2 : REAL ; |
|||
Y3 : REAL ; |
|||
CYCL : BOOL ; |
|||
START : BOOL ; |
|||
Delta : REAL ; |
|||
OUTP : REAL ; |
|||
OUTI : REAL ; |
|||
OUTD : REAL ; |
|||
I : DINT ; |
|||
END_VAR |
|||
(* |
|||
|
|||
时 间:20191006 |
|||
版 本:1.1 |
|||
作 者:姚立 |
|||
名 称:PID程序 |
|||
说 明:用于PID控制计算 |
|||
备 注:修正了除0情况的报错发生 |
|||
依赖块:无 |
|||
|
|||
*) |
|||
|
|||
IF RUN=TRUE AND kp<>0.0 AND Ti<>0.0 THEN |
|||
IF (TIME2<>(DINT_TO_REAL(TIME_TO_DINT(GetTime(t#0ms))))) THEN |
|||
TIME1:=TIME2; |
|||
TIME2:=DINT_TO_REAL(TIME_TO_DINT(GetTime(t#0ms))); |
|||
Y1:=Y2; |
|||
Y2:=Y3; |
|||
Y3:=SET-(Kfb*FB); |
|||
IF I>=2 AND DEAD_BAND<ABS(Y3) THEN(*死区*) |
|||
OUTP:=Y3*Kp; |
|||
Delta:=(TIME2-TIME1)/1000.0; |
|||
IF STOP_I<>TRUE THEN |
|||
OUTI:=OUTI+((Y2+Y3)*Delta/2.0)/Ti; |
|||
IF OUTI>Ymax THEN(*防止积分过大*) |
|||
OUTI:=Ymax; |
|||
ELSIF OUTI<(0.0-Ymax) THEN |
|||
OUTI:=(0.0-Ymax); |
|||
END_IF; |
|||
END_IF; |
|||
IF STOP_D<>TRUE THEN |
|||
OUTD:=Td*(0.5*Y1-2.0*Y2+1.5*Y3)/Delta; |
|||
END_IF; |
|||
ELSE |
|||
I:=I+1; |
|||
END_IF; |
|||
END_IF; |
|||
(* Adder *) |
|||
IF OUTP+OUTI+OUTD>Ymax THEN |
|||
OUT:=Ymax; |
|||
ELSIF OUTP+OUTI+OUTD<Ymin THEN |
|||
OUT:=Ymin; |
|||
ELSE |
|||
OUT:=OUTP+OUTI+OUTD; |
|||
END_IF; |
|||
|
|||
ELSE |
|||
TIME1:=0.0; |
|||
TIME2:=0.0; |
|||
Y1:=0.0; |
|||
Y2:=0.0; |
|||
Y3:=0.0; |
|||
CYCL:=FALSE; |
|||
START:=FALSE; |
|||
Delta:=0.0; |
|||
OUTP:=0.0; |
|||
OUTI:=0.0; |
|||
OUTD:=0.0; |
|||
OUT :=0.0; |
|||
I :=0; |
|||
END_IF; |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,22 @@ |
|||
FUNCTION_BLOCK BS_PID |
|||
|
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
|
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
|
|||
END_VAR |
|||
|
|||
VAR |
|||
|
|||
END_VAR |
|||
|
|||
; |
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
File diff suppressed because it is too large
@ -0,0 +1,165 @@ |
|||
FUNCTION_BLOCK BS_RunTime |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
Run :BOOL; |
|||
RunTimeSet :REAL; |
|||
RunTimeRST :BOOL; |
|||
RunTimeRec_In :REAL; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
RunTime :REAL; |
|||
END_VAR |
|||
|
|||
VAR |
|||
|
|||
Time_m :TON; |
|||
Time_RST :TON; |
|||
Cycle :BOOL; |
|||
Minute :REAL; |
|||
ini :BOOL; |
|||
Runtime_ini :REAL; |
|||
END_VAR |
|||
|
|||
(*Automatically declared*) |
|||
VAR_EXTERNAL |
|||
END_VAR |
|||
(** {* **) |
|||
(** **) |
|||
(** 时 间:20190907 **) |
|||
(** 版 本:1.0 **) |
|||
(** 作 者:姚立 **) |
|||
(** 名 称:运行时间累计程序 **) |
|||
(** 说 明:运行时间累计程序,单位分钟,可通过重置按钮修改计数基础值 **) |
|||
(** 时 间:20220210 **) |
|||
(** 版 本:1.1 **) |
|||
(** 作 者:潘平 **) |
|||
(** 名 称:运行时间累计程序 **) |
|||
(** 说 明:增加断电数据写入值变量,以使断电前数据进行输入 **) |
|||
(** 备 注: **) |
|||
(** 依赖块: **) |
|||
(** **) |
|||
(** *} **) |
|||
(** {*初始化将断电前数据写入累计值*} **) |
|||
(** if ini=0 then **) |
|||
(* if - Cond *) |
|||
LD ini |
|||
EQ 0 |
|||
JMPCN ODK_SKIP_000000000000001_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** Runtime_ini:=RunTimeRec_In; **) |
|||
(* assign - Stmt *) |
|||
LD RunTimeRec_In |
|||
ST Runtime_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: |
|||
|
|||
(** {*计时周期为分钟*} **) |
|||
(** if RunTimeRST=0 then **) |
|||
(* if - Cond *) |
|||
LD RunTimeRST |
|||
EQ 0 |
|||
JMPCN ODK_SKIP_000000000000002_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** time_m(in:=Cycle,pt:=t#60s); **) |
|||
(* call - Stmt *) |
|||
CAL time_m ( |
|||
in := Cycle, |
|||
pt := t#60s |
|||
) |
|||
|
|||
(** Cycle:= not Time_m.q; **) |
|||
(* assign - Stmt *) |
|||
LD time_m.q |
|||
NOT |
|||
ST Cycle |
|||
|
|||
(** if Run then **) |
|||
(* if - Cond *) |
|||
LD Run |
|||
JMPCN ODK_SKIP_000000000000003_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** if Time_m.q then **) |
|||
(* if - Cond *) |
|||
LD time_m.q |
|||
JMPCN ODK_SKIP_000000000000004_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** Minute:=Minute+1.0; **) |
|||
(* assign - Stmt *) |
|||
LD Minute |
|||
ADD 1.0 |
|||
ST Minute |
|||
|
|||
JMP ODK_END_IF_000000000000004 |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000004_000000000000001: |
|||
ODK_END_IF_000000000000004: |
|||
|
|||
JMP ODK_END_IF_000000000000003 |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000003_000000000000001: |
|||
ODK_END_IF_000000000000003: |
|||
|
|||
(** Runtime:=Minute/60.0+Runtime_ini; **) |
|||
(* assign - Stmt *) |
|||
LD Minute |
|||
DIV 60.0 |
|||
ADD Runtime_ini |
|||
ST Runtime |
|||
|
|||
JMP ODK_END_IF_000000000000002 |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000002_000000000000001: |
|||
ODK_END_IF_000000000000002: |
|||
|
|||
(** {*重置按钮按下时,期间Minute的读值按RunTimeSet赋值*} **) |
|||
(** if RunTimeRST=1 then **) |
|||
(* if - Cond *) |
|||
LD RunTimeRST |
|||
EQ 1 |
|||
JMPCN ODK_SKIP_000000000000005_000000000000001 |
|||
|
|||
(* then - Stmts *) |
|||
|
|||
(** Minute:=RunTimeSet*60.0; **) |
|||
(* assign - Stmt *) |
|||
LD RunTimeSet |
|||
MUL 60.0 |
|||
ST Minute |
|||
|
|||
JMP ODK_END_IF_000000000000005 |
|||
|
|||
(** end_if; **) |
|||
(* if - End *) |
|||
ODK_SKIP_000000000000005_000000000000001: |
|||
ODK_END_IF_000000000000005: |
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
@ -0,0 +1,508 @@ |
|||
FUNCTION_BLOCK BS_RemoteVavle |
|||
VAR_EXTERNAL |
|||
|
|||
END_VAR |
|||
|
|||
VAR_INPUT |
|||
REAL_RemoteSet:REAL; |
|||
REAL_IN01 :REAL; |
|||
REAL_IN02 :REAL; |
|||
REAL_IN03 :REAL; |
|||
REAL_IN04 :REAL; |
|||
REAL_IN05 :REAL; |
|||
REAL_IN06 :REAL; |
|||
REAL_IN07 :REAL; |
|||
REAL_IN08 :REAL; |
|||
REAL_IN09 :REAL; |
|||
REAL_IN10 :REAL; |
|||
REAL_IN11 :REAL; |
|||
REAL_IN12 :REAL; |
|||
REAL_IN13 :REAL; |
|||
REAL_IN14 :REAL; |
|||
REAL_IN15 :REAL; |
|||
REAL_IN16 :REAL; |
|||
REAL_IN17 :REAL; |
|||
REAL_IN18 :REAL; |
|||
REAL_IN19 :REAL; |
|||
REAL_IN20 :REAL; |
|||
REAL_IN21 :REAL; |
|||
REAL_IN22 :REAL; |
|||
REAL_IN23 :REAL; |
|||
REAL_IN24 :REAL; |
|||
REAL_IN25 :REAL; |
|||
REAL_IN26 :REAL; |
|||
REAL_IN27 :REAL; |
|||
REAL_IN28 :REAL; |
|||
REAL_IN29 :REAL; |
|||
REAL_IN30 :REAL; |
|||
REAL_IN31 :REAL; |
|||
REAL_IN32 :REAL; |
|||
REAL_IN33 :REAL; |
|||
REAL_IN34 :REAL; |
|||
REAL_IN35 :REAL; |
|||
REAL_IN36 :REAL; |
|||
REAL_IN37 :REAL; |
|||
REAL_IN38 :REAL; |
|||
REAL_IN39 :REAL; |
|||
REAL_IN40 :REAL; |
|||
REAL_IN41 :REAL; |
|||
REAL_IN42 :REAL; |
|||
REAL_IN43 :REAL; |
|||
REAL_IN44 :REAL; |
|||
REAL_IN45 :REAL; |
|||
REAL_IN46 :REAL; |
|||
REAL_IN47 :REAL; |
|||
REAL_IN48 :REAL; |
|||
REAL_IN49 :REAL; |
|||
REAL_IN50 :REAL; |
|||
|
|||
BOOL_RemoteSet:BOOL; |
|||
BOOL_IN01 :BOOL; |
|||
BOOL_IN02 :BOOL; |
|||
BOOL_IN03 :BOOL; |
|||
BOOL_IN04 :BOOL; |
|||
BOOL_IN05 :BOOL; |
|||
BOOL_IN06 :BOOL; |
|||
BOOL_IN07 :BOOL; |
|||
BOOL_IN08 :BOOL; |
|||
BOOL_IN09 :BOOL; |
|||
BOOL_IN10 :BOOL; |
|||
BOOL_IN11 :BOOL; |
|||
BOOL_IN12 :BOOL; |
|||
BOOL_IN13 :BOOL; |
|||
BOOL_IN14 :BOOL; |
|||
BOOL_IN15 :BOOL; |
|||
BOOL_IN16 :BOOL; |
|||
BOOL_IN17 :BOOL; |
|||
BOOL_IN18 :BOOL; |
|||
BOOL_IN19 :BOOL; |
|||
BOOL_IN20 :BOOL; |
|||
BOOL_IN21 :BOOL; |
|||
BOOL_IN22 :BOOL; |
|||
BOOL_IN23 :BOOL; |
|||
BOOL_IN24 :BOOL; |
|||
BOOL_IN25 :BOOL; |
|||
BOOL_IN26 :BOOL; |
|||
BOOL_IN27 :BOOL; |
|||
BOOL_IN28 :BOOL; |
|||
BOOL_IN29 :BOOL; |
|||
BOOL_IN30 :BOOL; |
|||
BOOL_IN31 :BOOL; |
|||
BOOL_IN32 :BOOL; |
|||
BOOL_IN33 :BOOL; |
|||
BOOL_IN34 :BOOL; |
|||
BOOL_IN35 :BOOL; |
|||
BOOL_IN36 :BOOL; |
|||
BOOL_IN37 :BOOL; |
|||
BOOL_IN38 :BOOL; |
|||
BOOL_IN39 :BOOL; |
|||
BOOL_IN40 :BOOL; |
|||
BOOL_IN41 :BOOL; |
|||
BOOL_IN42 :BOOL; |
|||
BOOL_IN43 :BOOL; |
|||
BOOL_IN44 :BOOL; |
|||
BOOL_IN45 :BOOL; |
|||
BOOL_IN46 :BOOL; |
|||
BOOL_IN47 :BOOL; |
|||
BOOL_IN48 :BOOL; |
|||
BOOL_IN49 :BOOL; |
|||
BOOL_IN50 :BOOL; |
|||
|
|||
INT_RemoteSet:INT; |
|||
INT_IN01 :INT; |
|||
INT_IN02 :INT; |
|||
INT_IN03 :INT; |
|||
INT_IN04 :INT; |
|||
INT_IN05 :INT; |
|||
INT_IN06 :INT; |
|||
INT_IN07 :INT; |
|||
INT_IN08 :INT; |
|||
INT_IN09 :INT; |
|||
INT_IN10 :INT; |
|||
INT_IN11 :INT; |
|||
INT_IN12 :INT; |
|||
INT_IN13 :INT; |
|||
INT_IN14 :INT; |
|||
INT_IN15 :INT; |
|||
INT_IN16 :INT; |
|||
INT_IN17 :INT; |
|||
INT_IN18 :INT; |
|||
INT_IN19 :INT; |
|||
INT_IN20 :INT; |
|||
INT_IN21 :INT; |
|||
INT_IN22 :INT; |
|||
INT_IN23 :INT; |
|||
INT_IN24 :INT; |
|||
INT_IN25 :INT; |
|||
INT_IN26 :INT; |
|||
INT_IN27 :INT; |
|||
INT_IN28 :INT; |
|||
INT_IN29 :INT; |
|||
INT_IN30 :INT; |
|||
INT_IN31 :INT; |
|||
INT_IN32 :INT; |
|||
INT_IN33 :INT; |
|||
INT_IN34 :INT; |
|||
INT_IN35 :INT; |
|||
INT_IN36 :INT; |
|||
INT_IN37 :INT; |
|||
INT_IN38 :INT; |
|||
INT_IN39 :INT; |
|||
INT_IN40 :INT; |
|||
INT_IN41 :INT; |
|||
INT_IN42 :INT; |
|||
INT_IN43 :INT; |
|||
INT_IN44 :INT; |
|||
INT_IN45 :INT; |
|||
INT_IN46 :INT; |
|||
INT_IN47 :INT; |
|||
INT_IN48 :INT; |
|||
INT_IN49 :INT; |
|||
INT_IN50 :INT; |
|||
END_VAR |
|||
|
|||
VAR_OUTPUT |
|||
REAL_OUT01 :REAL; |
|||
REAL_OUT02 :REAL; |
|||
REAL_OUT03 :REAL; |
|||
REAL_OUT04 :REAL; |
|||
REAL_OUT05 :REAL; |
|||
REAL_OUT06 :REAL; |
|||
REAL_OUT07 :REAL; |
|||
REAL_OUT08 :REAL; |
|||
REAL_OUT09 :REAL; |
|||
REAL_OUT10 :REAL; |
|||
REAL_OUT11 :REAL; |
|||
REAL_OUT12 :REAL; |
|||
REAL_OUT13 :REAL; |
|||
REAL_OUT14 :REAL; |
|||
REAL_OUT15 :REAL; |
|||
REAL_OUT16 :REAL; |
|||
REAL_OUT17 :REAL; |
|||
REAL_OUT18 :REAL; |
|||
REAL_OUT19 :REAL; |
|||
REAL_OUT20 :REAL; |
|||
REAL_OUT21 :REAL; |
|||
REAL_OUT22 :REAL; |
|||
REAL_OUT23 :REAL; |
|||
REAL_OUT24 :REAL; |
|||
REAL_OUT25 :REAL; |
|||
REAL_OUT26 :REAL; |
|||
REAL_OUT27 :REAL; |
|||
REAL_OUT28 :REAL; |
|||
REAL_OUT29 :REAL; |
|||
REAL_OUT30 :REAL; |
|||
REAL_OUT31 :REAL; |
|||
REAL_OUT32 :REAL; |
|||
REAL_OUT33 :REAL; |
|||
REAL_OUT34 :REAL; |
|||
REAL_OUT35 :REAL; |
|||
REAL_OUT36 :REAL; |
|||
REAL_OUT37 :REAL; |
|||
REAL_OUT38 :REAL; |
|||
REAL_OUT39 :REAL; |
|||
REAL_OUT40 :REAL; |
|||
REAL_OUT41 :REAL; |
|||
REAL_OUT42 :REAL; |
|||
REAL_OUT43 :REAL; |
|||
REAL_OUT44 :REAL; |
|||
REAL_OUT45 :REAL; |
|||
REAL_OUT46 :REAL; |
|||
REAL_OUT47 :REAL; |
|||
REAL_OUT48 :REAL; |
|||
REAL_OUT49 :REAL; |
|||
REAL_OUT50 :REAL; |
|||
|
|||
BOOL_OUT01 :BOOL; |
|||
BOOL_OUT02 :BOOL; |
|||
BOOL_OUT03 :BOOL; |
|||
BOOL_OUT04 :BOOL; |
|||
BOOL_OUT05 :BOOL; |
|||
BOOL_OUT06 :BOOL; |
|||
BOOL_OUT07 :BOOL; |
|||
BOOL_OUT08 :BOOL; |
|||
BOOL_OUT09 :BOOL; |
|||
BOOL_OUT10 :BOOL; |
|||
BOOL_OUT11 :BOOL; |
|||
BOOL_OUT12 :BOOL; |
|||
BOOL_OUT13 :BOOL; |
|||
BOOL_OUT14 :BOOL; |
|||
BOOL_OUT15 :BOOL; |
|||
BOOL_OUT16 :BOOL; |
|||
BOOL_OUT17 :BOOL; |
|||
BOOL_OUT18 :BOOL; |
|||
BOOL_OUT19 :BOOL; |
|||
BOOL_OUT20 :BOOL; |
|||
BOOL_OUT21 :BOOL; |
|||
BOOL_OUT22 :BOOL; |
|||
BOOL_OUT23 :BOOL; |
|||
BOOL_OUT24 :BOOL; |
|||
BOOL_OUT25 :BOOL; |
|||
BOOL_OUT26 :BOOL; |
|||
BOOL_OUT27 :BOOL; |
|||
BOOL_OUT28 :BOOL; |
|||
BOOL_OUT29 :BOOL; |
|||
BOOL_OUT30 :BOOL; |
|||
BOOL_OUT31 :BOOL; |
|||
BOOL_OUT32 :BOOL; |
|||
BOOL_OUT33 :BOOL; |
|||
BOOL_OUT34 :BOOL; |
|||
BOOL_OUT35 :BOOL; |
|||
BOOL_OUT36 :BOOL; |
|||
BOOL_OUT37 :BOOL; |
|||
BOOL_OUT38 :BOOL; |
|||
BOOL_OUT39 :BOOL; |
|||
BOOL_OUT40 :BOOL; |
|||
BOOL_OUT41 :BOOL; |
|||
BOOL_OUT42 :BOOL; |
|||
BOOL_OUT43 :BOOL; |
|||
BOOL_OUT44 :BOOL; |
|||
BOOL_OUT45 :BOOL; |
|||
BOOL_OUT46 :BOOL; |
|||
BOOL_OUT47 :BOOL; |
|||
BOOL_OUT48 :BOOL; |
|||
BOOL_OUT49 :BOOL; |
|||
BOOL_OUT50 :BOOL; |
|||
|
|||
INT_OUT01 :INT; |
|||
INT_OUT02 :INT; |
|||
INT_OUT03 :INT; |
|||
INT_OUT04 :INT; |
|||
INT_OUT05 :INT; |
|||
INT_OUT06 :INT; |
|||
INT_OUT07 :INT; |
|||
INT_OUT08 :INT; |
|||
INT_OUT09 :INT; |
|||
INT_OUT10 :INT; |
|||
INT_OUT11 :INT; |
|||
INT_OUT12 :INT; |
|||
INT_OUT13 :INT; |
|||
INT_OUT14 :INT; |
|||
INT_OUT15 :INT; |
|||
INT_OUT16 :INT; |
|||
INT_OUT17 :INT; |
|||
INT_OUT18 :INT; |
|||
INT_OUT19 :INT; |
|||
INT_OUT20 :INT; |
|||
INT_OUT21 :INT; |
|||
INT_OUT22 :INT; |
|||
INT_OUT23 :INT; |
|||
INT_OUT24 :INT; |
|||
INT_OUT25 :INT; |
|||
INT_OUT26 :INT; |
|||
INT_OUT27 :INT; |
|||
INT_OUT28 :INT; |
|||
INT_OUT29 :INT; |
|||
INT_OUT30 :INT; |
|||
INT_OUT31 :INT; |
|||
INT_OUT32 :INT; |
|||
INT_OUT33 :INT; |
|||
INT_OUT34 :INT; |
|||
INT_OUT35 :INT; |
|||
INT_OUT36 :INT; |
|||
INT_OUT37 :INT; |
|||
INT_OUT38 :INT; |
|||
INT_OUT39 :INT; |
|||
INT_OUT40 :INT; |
|||
INT_OUT41 :INT; |
|||
INT_OUT42 :INT; |
|||
INT_OUT43 :INT; |
|||
INT_OUT44 :INT; |
|||
INT_OUT45 :INT; |
|||
INT_OUT46 :INT; |
|||
INT_OUT47 :INT; |
|||
INT_OUT48 :INT; |
|||
INT_OUT49 :INT; |
|||
INT_OUT50 :INT; |
|||
END_VAR |
|||
|
|||
VAR |
|||
REAL_RemoteSetP :REAL; |
|||
BOOL_RemoteSetP :BOOL; |
|||
INT_RemoteSetP :INT; |
|||
END_VAR |
|||
(* |
|||
|
|||
时 间:20191008 |
|||
版 本:1.1 |
|||
作 者:姚立 |
|||
名 称:远程平台赋值程序 |
|||
说 明:用于远程平台赋值,又不锁定本地变量输入 |
|||
备 注: |
|||
依赖块:无 |
|||
|
|||
*) |
|||
(**********一个REAL型总变量对20个变量赋值,20个变量也可单独赋值*************) |
|||
|
|||
if REAL_RemoteSet<>REAL_RemoteSetP then |
|||
REAL_OUT01:=REAL_RemoteSet; |
|||
REAL_OUT02:=REAL_RemoteSet; |
|||
REAL_OUT03:=REAL_RemoteSet; |
|||
REAL_OUT04:=REAL_RemoteSet; |
|||
REAL_OUT05:=REAL_RemoteSet; |
|||
REAL_OUT06:=REAL_RemoteSet; |
|||
REAL_OUT07:=REAL_RemoteSet; |
|||
REAL_OUT08:=REAL_RemoteSet; |
|||
REAL_OUT09:=REAL_RemoteSet; |
|||
REAL_OUT10:=REAL_RemoteSet; |
|||
REAL_OUT11:=REAL_RemoteSet; |
|||
REAL_OUT12:=REAL_RemoteSet; |
|||
REAL_OUT13:=REAL_RemoteSet; |
|||
REAL_OUT14:=REAL_RemoteSet; |
|||
REAL_OUT15:=REAL_RemoteSet; |
|||
REAL_OUT16:=REAL_RemoteSet; |
|||
REAL_OUT17:=REAL_RemoteSet; |
|||
REAL_OUT18:=REAL_RemoteSet; |
|||
REAL_OUT19:=REAL_RemoteSet; |
|||
REAL_OUT20:=REAL_RemoteSet; |
|||
REAL_RemoteSetP:=REAL_RemoteSet; |
|||
elsif REAL_RemoteSet=REAL_RemoteSetP then |
|||
REAL_OUT01:=REAL_IN01; |
|||
REAL_OUT02:=REAL_IN02; |
|||
REAL_OUT03:=REAL_IN03; |
|||
REAL_OUT04:=REAL_IN04; |
|||
REAL_OUT05:=REAL_IN05; |
|||
REAL_OUT06:=REAL_IN06; |
|||
REAL_OUT07:=REAL_IN07; |
|||
REAL_OUT08:=REAL_IN08; |
|||
REAL_OUT09:=REAL_IN09; |
|||
REAL_OUT10:=REAL_IN10; |
|||
REAL_OUT11:=REAL_IN11; |
|||
REAL_OUT12:=REAL_IN12; |
|||
REAL_OUT13:=REAL_IN13; |
|||
REAL_OUT14:=REAL_IN14; |
|||
REAL_OUT15:=REAL_IN15; |
|||
REAL_OUT16:=REAL_IN16; |
|||
REAL_OUT17:=REAL_IN17; |
|||
REAL_OUT18:=REAL_IN18; |
|||
REAL_OUT19:=REAL_IN19; |
|||
REAL_OUT20:=REAL_IN20; |
|||
|
|||
end_if; |
|||
|
|||
|
|||
(**********一个BOOL型总变量对50个变量赋值,50个变量也可单独赋值*************) |
|||
|
|||
if BOOL_RemoteSet<>BOOL_RemoteSetP then |
|||
BOOL_OUT01:=BOOL_RemoteSet; |
|||
BOOL_OUT02:=BOOL_RemoteSet; |
|||
BOOL_OUT03:=BOOL_RemoteSet; |
|||
BOOL_OUT04:=BOOL_RemoteSet; |
|||
BOOL_OUT05:=BOOL_RemoteSet; |
|||
BOOL_OUT06:=BOOL_RemoteSet; |
|||
BOOL_OUT07:=BOOL_RemoteSet; |
|||
BOOL_OUT08:=BOOL_RemoteSet; |
|||
BOOL_OUT09:=BOOL_RemoteSet; |
|||
BOOL_OUT10:=BOOL_RemoteSet; |
|||
BOOL_OUT11:=BOOL_RemoteSet; |
|||
BOOL_OUT12:=BOOL_RemoteSet; |
|||
BOOL_OUT13:=BOOL_RemoteSet; |
|||
BOOL_OUT14:=BOOL_RemoteSet; |
|||
BOOL_OUT15:=BOOL_RemoteSet; |
|||
BOOL_OUT16:=BOOL_RemoteSet; |
|||
BOOL_OUT17:=BOOL_RemoteSet; |
|||
BOOL_OUT18:=BOOL_RemoteSet; |
|||
BOOL_OUT19:=BOOL_RemoteSet; |
|||
BOOL_OUT20:=BOOL_RemoteSet; |
|||
BOOL_RemoteSetP:=BOOL_RemoteSet; |
|||
elsif BOOL_RemoteSet=BOOL_RemoteSetP then |
|||
BOOL_OUT01:=BOOL_IN01; |
|||
BOOL_OUT02:=BOOL_IN02; |
|||
BOOL_OUT03:=BOOL_IN03; |
|||
BOOL_OUT04:=BOOL_IN04; |
|||
BOOL_OUT05:=BOOL_IN05; |
|||
BOOL_OUT06:=BOOL_IN06; |
|||
BOOL_OUT07:=BOOL_IN07; |
|||
BOOL_OUT08:=BOOL_IN08; |
|||
BOOL_OUT09:=BOOL_IN09; |
|||
BOOL_OUT10:=BOOL_IN10; |
|||
BOOL_OUT11:=BOOL_IN11; |
|||
BOOL_OUT12:=BOOL_IN12; |
|||
BOOL_OUT13:=BOOL_IN13; |
|||
BOOL_OUT14:=BOOL_IN14; |
|||
BOOL_OUT15:=BOOL_IN15; |
|||
BOOL_OUT16:=BOOL_IN16; |
|||
BOOL_OUT17:=BOOL_IN17; |
|||
BOOL_OUT18:=BOOL_IN18; |
|||
BOOL_OUT19:=BOOL_IN19; |
|||
BOOL_OUT20:=BOOL_IN20; |
|||
|
|||
end_if; |
|||
|
|||
(**********一个INT型总变量对50个变量赋值,50个变量也可单独赋值*************) |
|||
|
|||
if INT_RemoteSet<>INT_RemoteSetP then |
|||
INT_OUT01:=INT_RemoteSet; |
|||
INT_OUT02:=INT_RemoteSet; |
|||
INT_OUT03:=INT_RemoteSet; |
|||
INT_OUT04:=INT_RemoteSet; |
|||
INT_OUT05:=INT_RemoteSet; |
|||
INT_OUT06:=INT_RemoteSet; |
|||
INT_OUT07:=INT_RemoteSet; |
|||
INT_OUT08:=INT_RemoteSet; |
|||
INT_OUT09:=INT_RemoteSet; |
|||
INT_OUT10:=INT_RemoteSet; |
|||
INT_OUT11:=INT_RemoteSet; |
|||
INT_OUT12:=INT_RemoteSet; |
|||
INT_OUT13:=INT_RemoteSet; |
|||
INT_OUT14:=INT_RemoteSet; |
|||
INT_OUT15:=INT_RemoteSet; |
|||
INT_OUT16:=INT_RemoteSet; |
|||
INT_OUT17:=INT_RemoteSet; |
|||
INT_OUT18:=INT_RemoteSet; |
|||
INT_OUT19:=INT_RemoteSet; |
|||
INT_OUT20:=INT_RemoteSet; |
|||
INT_RemoteSetP:=INT_RemoteSet; |
|||
elsif INT_RemoteSet=INT_RemoteSetP then |
|||
INT_OUT01:=INT_IN01; |
|||
INT_OUT02:=INT_IN02; |
|||
INT_OUT03:=INT_IN03; |
|||
INT_OUT04:=INT_IN04; |
|||
INT_OUT05:=INT_IN05; |
|||
INT_OUT06:=INT_IN06; |
|||
INT_OUT07:=INT_IN07; |
|||
INT_OUT08:=INT_IN08; |
|||
INT_OUT09:=INT_IN09; |
|||
INT_OUT10:=INT_IN10; |
|||
INT_OUT11:=INT_IN11; |
|||
INT_OUT12:=INT_IN12; |
|||
INT_OUT13:=INT_IN13; |
|||
INT_OUT14:=INT_IN14; |
|||
INT_OUT15:=INT_IN15; |
|||
INT_OUT16:=INT_IN16; |
|||
INT_OUT17:=INT_IN17; |
|||
INT_OUT18:=INT_IN18; |
|||
INT_OUT19:=INT_IN19; |
|||
INT_OUT20:=INT_IN20; |
|||
|
|||
end_if; |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
END_FUNCTION_BLOCK |
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue