lib/counter.txt
changeset 176 bef3cc16c064
parent 0 fb772792efd1
child 257 90782e241346
equal deleted inserted replaced
175:dadda1b5401e 176:bef3cc16c064
    26   END_VAR
    26   END_VAR
    27   VAR_OUTPUT
    27   VAR_OUTPUT
    28     Q : BOOL;
    28     Q : BOOL;
    29     CV : INT;
    29     CV : INT;
    30   END_VAR
    30   END_VAR
    31   VAR RETAIN
       
    32     PVmax : INT;
       
    33   END_VAR
       
    34   IF R THEN CV := 0 ;
    31   IF R THEN CV := 0 ;
    35   ELSIF CU AND (CV < PVmax)
    32   ELSIF CU AND (CV < PV)
    36        THEN CV := CV+1;
    33        THEN CV := CV+1;
    37   END_IF ;
    34   END_IF ;
    38   Q := (CV >= PV) ;
    35   Q := (CV >= PV) ;
    39 END_FUNCTION_BLOCK
    36 END_FUNCTION_BLOCK
    40 
    37 
    47   END_VAR
    44   END_VAR
    48   VAR_OUTPUT
    45   VAR_OUTPUT
    49     Q : BOOL;
    46     Q : BOOL;
    50     CV : INT;
    47     CV : INT;
    51   END_VAR
    48   END_VAR
    52   VAR RETAIN
       
    53     PVmin : INT;
       
    54   END_VAR
       
    55   IF LD THEN CV := PV ;
    49   IF LD THEN CV := PV ;
    56   ELSIF CD AND (CV > PVmin)
    50   ELSIF CD AND (CV > 0)
    57       THEN CV := CV-1;
    51       THEN CV := CV-1;
    58   END_IF ;
    52   END_IF ;
    59   Q := (CV <= 0) ;
    53   Q := (CV <= 0) ;
    60 END_FUNCTION_BLOCK
    54 END_FUNCTION_BLOCK
    61 
    55 
    71   VAR_OUTPUT
    65   VAR_OUTPUT
    72     QU : BOOL;
    66     QU : BOOL;
    73     QD : BOOL;
    67     QD : BOOL;
    74     CV : INT;
    68     CV : INT;
    75   END_VAR
    69   END_VAR
    76   VAR RETAIN
       
    77     PVmax : INT;
       
    78     PVmin : INT;
       
    79   END_VAR
       
    80   IF R THEN CV := 0 ;
    70   IF R THEN CV := 0 ;
    81   ELSIF LD THEN CV := PV ;
    71   ELSIF LD THEN CV := PV ;
    82   ELSE
    72   ELSE
    83     IF NOT (CU AND CD) THEN
    73     IF NOT (CU AND CD) THEN
    84       IF CU AND (CV < PVmax)
    74       IF CU AND (CV < PV)
    85       THEN CV := CV+1;
    75       THEN CV := CV+1;
    86       ELSIF CD AND (CV > PVmin)
    76       ELSIF CD AND (CV > 0)
    87       THEN CV := CV-1;
    77       THEN CV := CV-1;
    88       END_IF;
    78       END_IF;
    89     END_IF;
    79     END_IF;
    90   END_IF ;
    80   END_IF ;
    91   QU := (CV >= PV) ;
    81   QU := (CV >= PV) ;