Contract Hour
How do you do a daily summary, at whatever the user wants for contract hour? Similar code can be used to do Hourly Summing.
FUNCTION CHOURTIME:
- Returns CHOUR_NOT when you are not in contract hour.
- Returns CHOUR_JUST when you are in contract hour and need to sum. i.e., first second of hour.
- Returns CHOUR_DONE when you are in contract hour and have already done a sum.
- Variables:
ContractHourStatus should be a non-retained global and initialized to CHOUR_NOT at warm boot.
- ContractHour should be a retained global and initialized to a default value at cold boot.
Should be called once a second.
NSEC := ANY_TO_DINT(DateTime);
Hour := ANY_TO_UDINT(MOD ( NSEC / 3600, 24) );
IF (ContractHour = Hour) THEN
IF (ContractHourStatus = CHOUR_NOT) THEN
ChourTime:= CHOUR_JUST;
ELSE
ChourTime:= CHOUR_DONE;
END_IF;
ELSE
ChourTime:= CHOUR_NOT;
END_IF;
Variables-Local
| Name | Type | Dir | Attr | Retained |
| NSEC | DINT | Var | R/W | No |
| HOUR | UDINT | Var | R/W | No |
| ContractHour | UDINT | VarInput | Read | No |
| ContractHourStat | UDINT | VarInput | R/W | No |
| ChourTime | UDINT | VarOutput | W | No |
Defined words (#define in C++)
| Defined Words | Value |
| CHOUR_NOT | 0 |
| CHOUR_JUST | 1 |
| CHOUR_DONE | 2 |
No comments:
Post a Comment