123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- <?xml version="1.0" encoding="utf-8"?>
- <TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.12">
- <POU Name="Tolerance" Id="{426dfdc7-65ca-489e-8d38-9bb8971aeb2f}" SpecialFunc="None">
- <Declaration><![CDATA[FUNCTION_BLOCK Tolerance
- VAR_INPUT
- ENABLE:BOOL;
- STEP_TYPE:STRING;
- STEP_TIME:INT;
- TOL_V:BOOL;
- TOL_P:BOOL;
- SV:INT;
- PV:REAL;
- WARNING_RANGE:INT;
- ALARM_RANGE:INT;
- DELAY_TIME:INT;
- STABLE_TIME:INT;
- RST:BOOL;
- END_VAR
- VAR_OUTPUT
- STU_WARNING:BOOL;
-
- STU_ALARM:BOOL;
-
- //STU_TIMEOUT:BOOL;
- STABLE_DONE:BOOL;
- END_VAR
- VAR
- SV_SUB_WARNING_RANGE:INT;
- SV_ADD_WARNING_RANGE:INT;
- SV_DIV_WARNING_RANGE:INT;
- SV_MUL_WARNING_RANGE:INT;
-
- SV_SUB_ALARM_RANGE:INT;
- SV_ADD_ALARM_RANGE:INT;
- SV_DIV_ALARM_RANGE:INT;
- SV_MUL_ALARM_RANGE:INT;
-
- STU_WARNING_V:BOOL;
- STU_WARNING_P:BOOL;
-
- STU_ALARM_V:BOOL;
- STU_ALARM_P:BOOL;
-
- TON_DELAY_TIME:TON;
- TON_DELAY_TIME_PT:INT;
-
- TON_ALARM_P :TON;
- TON_ALARM_V :TON;
- TON_WARNING_P :TON;
- TON_WARNING_V :TON;
- TON_STABLE :TON;
-
- TON_STABLE_IN :BOOL;
- END_VAR
- ]]></Declaration>
- <Implementation>
- <ST><![CDATA[//初始化
- IF NOT ENABLE OR RST
- THEN
-
- STU_WARNING:=FALSE;
-
- STU_ALARM:=FALSE;
-
- STU_WARNING_P:=FALSE;
- STU_ALARM_P:=FALSE;
-
- STU_WARNING_V:=FALSE;
- STU_ALARM_V:=FALSE;
- STABLE_DONE:=FALSE;
- TON_STABLE_IN:=FALSE;
-
- END_IF;
- IF NOT TOL_P
- THEN
- STU_WARNING_P:=FALSE;
- STU_ALARM_P:=FALSE;
- END_IF;
- IF NOT TOL_V
- THEN
- STU_WARNING_V:=FALSE;
- STU_ALARM_V:=FALSE;
- END_IF;
- IF NOT ENABLE AND (STEP_TYPE = 'Stable')
- THEN
- STABLE_DONE:=TRUE;
- END_IF
- //RANGE计算
- SV_SUB_WARNING_RANGE:=SV-WARNING_RANGE;
- SV_ADD_WARNING_RANGE:=SV+WARNING_RANGE;
- SV_DIV_WARNING_RANGE:=SV*(100-WARNING_RANGE)/100;
- SV_MUL_WARNING_RANGE:=SV*(100+WARNING_RANGE)/100;
-
- SV_SUB_ALARM_RANGE:=SV-ALARM_RANGE;
- SV_ADD_ALARM_RANGE:=SV+ALARM_RANGE;
- SV_DIV_ALARM_RANGE:=SV*(100-ALARM_RANGE)/100;
- SV_MUL_ALARM_RANGE:=SV*(100+ALARM_RANGE)/100;
- //RANGE判断
- TON_WARNING_P(
- IN:= TOL_P AND (PV<=SV_DIV_WARNING_RANGE OR PV>=SV_MUL_WARNING_RANGE)AND NOT RST,
- PT:= T#200MS,
- Q=> STU_WARNING_P,
- ET=> );
- TON_WARNING_V(
- IN:= TOL_V AND (PV<=SV_SUB_WARNING_RANGE OR PV>=SV_ADD_WARNING_RANGE)AND NOT RST ,
- PT:= T#200MS,
- Q=> STU_WARNING_V,
- ET=> );
- TON_ALARM_P(
- IN:= TOL_P AND (PV<=SV_DIV_ALARM_RANGE OR PV>=SV_MUL_ALARM_RANGE)AND NOT RST,
- PT:= T#200MS,
- Q=> STU_ALARM_P,
- ET=> );
- TON_ALARM_V(
- IN:= TOL_V AND (PV<=SV_SUB_ALARM_RANGE OR PV>=SV_ADD_ALARM_RANGE)AND NOT RST,
- PT:= T#200MS,
- Q=> STU_ALARM_V,
- ET=> );
-
- IF ENABLE
- THEN
- //TIME MODE
- IF STEP_TYPE = 'Time'
- THEN
- TON_DELAY_TIME_PT:=DELAY_TIME;
- STU_WARNING:=(STU_WARNING_V OR STU_WARNING_P) AND TON_DELAY_TIME.Q;
- IF (STU_ALARM_V OR STU_ALARM_P) AND TON_DELAY_TIME.Q
- THEN
- STU_ALARM:=TRUE;
- END_IF
- END_IF;
-
- //Stable MODE
- IF STEP_TYPE = 'Stable'
- THEN
- IF TON_WARNING_P.IN OR TON_WARNING_V.IN
- THEN
- STABLE_DONE:=FALSE;
- TON_STABLE_IN:=FALSE;
- ELSE
- TON_STABLE_IN:=TRUE;
- END_IF;
- IF TON_STABLE.Q
- THEN
- STABLE_DONE:=TRUE;
- END_IF
- END_IF
- END_IF;
- //TON
- TON_DELAY_TIME(IN:= ENABLE AND NOT RST, PT:= INT_TO_TIME(TON_DELAY_TIME_PT)*1000, Q=> , ET=> );
- TON_STABLE(IN:=TON_STABLE_IN, PT:= INT_TO_TIME(STABLE_TIME)*1000, Q=> , ET=> );
- ]]></ST>
- </Implementation>
- <LineIds Name="Tolerance">
- <LineId Id="548" Count="6" />
- <LineId Id="631" Count="5" />
- <LineId Id="786" Count="1" />
- <LineId Id="555" Count="3" />
- <LineId Id="629" Count="1" />
- <LineId Id="559" Count="6" />
- <LineId Id="775" Count="0" />
- <LineId Id="773" Count="0" />
- <LineId Id="776" Count="0" />
- <LineId Id="778" Count="0" />
- <LineId Id="777" Count="0" />
- <LineId Id="570" Count="12" />
- <LineId Id="696" Count="0" />
- <LineId Id="700" Count="0" />
- <LineId Id="697" Count="2" />
- <LineId Id="586" Count="0" />
- <LineId Id="701" Count="8" />
- <LineId Id="595" Count="0" />
- <LineId Id="710" Count="4" />
- <LineId Id="601" Count="7" />
- <LineId Id="715" Count="2" />
- <LineId Id="609" Count="4" />
- <LineId Id="616" Count="0" />
- <LineId Id="718" Count="0" />
- <LineId Id="785" Count="0" />
- <LineId Id="719" Count="0" />
- <LineId Id="617" Count="0" />
- <LineId Id="771" Count="0" />
- <LineId Id="618" Count="0" />
- <LineId Id="779" Count="1" />
- <LineId Id="782" Count="0" />
- <LineId Id="781" Count="0" />
- <LineId Id="720" Count="0" />
- <LineId Id="619" Count="3" />
- <LineId Id="840" Count="3" />
- <LineId Id="623" Count="5" />
- <LineId Id="159" Count="0" />
- </LineIds>
- </POU>
- </TcPlcObject>
|