in location

OR

I'm looking for

  • Wholesalers
    • Uncheck All Check All
  • EXPERTISE
    • Expand
    • Expand
    • Expand
    • Uncheck All Check All
  • Switchboard Manufacturers
    • Uncheck All Check All
OR

The best way to see what Clipsal electric products can do for your home is seeing them in action at a Clipsal Powerhouse Display Centre.

Product stock may vary according to location. If you're after a specific product range, please check with your chosen location before visiting.

10 Results
    Load More Load Complete
    Change Location

    Structured Text user function block to return the Day of the Week

    DISCLAIMER

    The example below is intended to demonstrate one or more features or methods and is presented as a configuration example only. Schneider Electric assumes no liability for the use or application of this example or any portion thereof.

    ClearSCADA allows the user to create its own Structured Text library, where several user function blocks can be stored.
    A function that is periodically requested by users is one that returns the day of the week from a DATE_AND_TIME input variable. The code below returns the day of the week as a number (0 = Sunday to 6 = Saturday):
    FUNCTION_BLOCK DayOfTheWeek

    VAR_INPUT
      InDate : DATE_AND_TIME;
    END_VAR

    VAR_OUTPUT
      DayOfWeek : INT;
    END_VAR

    VAR
      Year : INT;
      cYear : INT;
      Month : INT;
      Day : INT;

      CP : INT;
      YP : INT;
      MP : INT;

      LeapYear : BOOL := FALSE;
      Valid :BOOL;
    END_VAR

    Year := EXTRACT_DT_YEAR(InDate);
    cYear := STRING_TO_INT(RIGHT(INT_TO_STRING(Year),2));
    Month := EXTRACT_DT_MONTH(InDate);
    Day := EXTRACT_DT_DAY(InDate);

    Valid := TRUE;
    CASE Year OF
      1752..1799 : CP := 4;
      1800..1899 : CP := 2;
      1900..1999 : CP := 0;
      2000..2099 : CP := 6;
    ELSE  Valid := FALSE;
    END_CASE;

    YP := cYear / 4;

    IF (MOD(cYear,400) = 0) THEN
      LeapYear := TRUE;
    ELSIF (MOD(cYear,100) = 0) THEN
      LeapYear := FALSE;
    ELSIF (MOD(cYear,4) = 0) THEN
      LeapYear := TRUE;
    ELSE
      LeapYear := FALSE;
    END_IF;

    CASE Month OF
    1 :
      IF LeapYear THEN
        MP := 6;
      ELSE
        MP := 0;
      END_IF;
    2 :
      IF LeapYear THEN
        MP := 2;
      ELSE
        MP := 3;
      END_IF;
    3 : MP := 3;
    4 : MP := 6;
    5 : MP := 1;
    6 : MP := 4;
    7 : MP := 6;
    8 : MP := 2;
    9 : MP := 5;
    10 : MP := 0;
    11 : MP := 3;
    12 : MP := 5;
    END_CASE;

    IF Valid THEN
      DayOfWeek := MOD(CP + cYear + YP + MP + Day, 7 );
    ELSE
      DayOfWeek := -1;
    END_IF;

    END_FUNCTION_BLOCK

    Once added to a library, this function can be called from both ST or FBD logic program.
    Below a picture of the function being called from an FBD program:


    Below a picture of the function being called from an ST program:


    Note: Don't forget to add the library that contains the function block you are going to use to your logic program before calling the function. For more information on how to do that, please search the manual for "ST and Function Block Libraries".
     

    Didn’t find what you were looking for?

    Try Searching Again View Our Categories

    Need further assistance?

    Our Customer Care department provides total customer service solutions for our residential, industrial and commercial applications.

    Get Assistance