Function Blocks ¶ Time Zone Information GetTimeZoneInformation (FunctionBlock) SetTimeZoneInformation (FunctionBlock) Time and Date GetDateAndTime (FunctionBlock) SetDateAndTime (FunctionBlock)
Time Zone Information ¶ The World is divided in time zones which are based on the degrees of longitude. The English town Greenwich is situated in their centre on the so-called prime meridian that defines the starting point for the count of the world’s degrees of longitude. By taking a closer look at a globe, one can distinguish the degrees of longitude and latitude which clasp the world like a grid. The degrees of longitude go from north to south and connect the two poles. The time being measured in the observatory in Greenwich is called GMT which is the abbreviation for Greenwich Mean Time . The GMT serves as a basis for calculating the respecting times in all countries of the world. However nowadays the term GMT is not used any more as it has been replaced by the expression Universal Time Coordinated (UTC). [CC BY-SA 4.0 ( Wikimedia Commons )] GetTimeZoneInformation (FunctionBlock) SetTimeZoneInformation (FunctionBlock)
GetTimeZoneInformation (FB) ¶ FUNCTION_BLOCK GetTimeZoneInformation This function block reads the specific information on the time zone. InOut: Scope Name Type Comment Input xExecute BOOL Rising edge: Action start Falling edge: Resets outputs. If a falling edge occurs before the function block has completed its action, the outputs operate in the usual manner and are only reset if either the action is completed or in the event of an error. In this case, the corresponding output values (xDone, xError, iError) are present at the outputs for exactly one cycle. Output xDone BOOL Action successfully completed xBusy BOOL Function block active xError BOOL TRUE : error occurred, function block aborts action FALSE : no error eError ERROR Error description for diagnosis tziInfo RTCLK_TIME_ZONE_INFO Information on the time zone
SetTimeZoneInformation (FB) ¶ FUNCTION_BLOCK SetTimeZoneInformation With this function block the specific information of the time zone can be modified. The time zone setting will be kept even after a Reset-Origin of the controller and can only be modified by being overwritten again. If no automatic switch is desired, all elements of tziInfo.stStandardDate and tziInfo.stDaylightDate must be set to 0. InOut: Scope Name Type Comment Input xExecute BOOL Rising edge: Action start Falling edge: Resets outputs. If a falling edge occurs before the function block has completed its action, the outputs operate in the usual manner and are only reset if either the action is completed or in the event of an error. In this case, the corresponding output values (xDone, xError, iError) are present at the outputs for exactly one cycle. tziInfo RTCLK_TIME_ZONE_INFO Information on the time zone Output xDone BOOL Action successfully completed xBusy BOOL Function block active xError BOOL TRUE : error occurred, function block aborts action FALSE : no error eError ERROR Error description for diagnosis
Time and Date ¶ Modules of this library support reading and setting of the realtime clock. These modules, however, might not take into account the time zone and a possible switch between summer and standard time. If an automatic switch is desired all the same, the function blocks of the CAA_DTUtility library can be used for reading and setting the realtime clock. In this case the time switch is done via the CAA_DTUtility library . If the runtime system supports the automatic switch between summer and standard time, the calls of the library will be forwarded directly to the corresponding functions of library CAA_RealTimeClock and the clock switch will be done by the runtime system. GetDateAndTime (FunctionBlock) SetDateAndTime (FunctionBlock)
GetDateAndTime (FB) ¶ FUNCTION_BLOCK GetDateAndTime This function block reads the realtime clock. It returns the time of the local time zone (i.e. a possible switch to summer/standard time will be regarded). The current time zone switch can be defined by SetTimeZoneInformation . If a switch to summer/standard time has become necessary since the last polling of the time, this is done automatically. At the start of the module the outputs dtDateAndTime and eTimezone are reset. ( DT#1970-01-01-00:00 and RTCLK_UNKNOWN ). After successful operation they will contain the current local time. InOut: Scope Name Type Comment Input xExecute BOOL Rising edge: Action start Falling edge: Resets outputs. If a falling edge occurs before the function block has completed its Action, the outputs operate in the usual manner and are only reset if either the action is completed or in the event of an error. In this case, the corresponding output values (xDone, xError, iError) are present at the outputs for exactly one cycle. Output xDone BOOL Action successfully completed xBusy BOOL Function block active xError BOOL TRUE : error occurred, function block aborts action FALSE : no error eError ERROR Error description for diagnosis dtDateAndTime DT Current local time eTimezone PERIODE Current time zone
BACnetServerPluginBase.Server (PROP) ¶ PROPERTY Server : IBACnetServer
PackArrayOfBoolToArrayOfByte (FUN) ¶ FUNCTION PackArrayOfBoolToArrayOfByte : UINT The function packs an “ARRAY OF BOOL” into an “ARRAY OF BYTE”. axSource[0] -> abyDestination[0].0 axSource[1] -> abyDestination[0].1 … axSource[8] -> abyDestination[1].0 … axSource[15] -> abyDestination[1].7 … The function copies “uiNumberOfBits” from “axSource” to “abyDestination”. It will return the necessary number of bytes in “abyDestination”. Only if “paxSource”, “pabyDestination” or “uiNumberOfBits” are set to “0”, the copying will not be carried out and the function will return “0”. Example: axSource : ARRAY [0..9] OF BOOL := FALSE , TRUE , FALSE , FALSE , TRUE , TRUE , FALSE , FALSE , TRUE , FALSE ; abyDestination : ARRAY [0..2] OF BYTE ; uiNumberofBytes := MEM.PackArrayOfBool ( ADR ( abSource ), ADR ( abyDestination ), 10 ) ; -> uiNumberofBytes = 2 abyDestination [0] = 16#32 abyDestination [1] = 16#01 abyDestination [2] = 16#00 Note The size of the ARRAY “abyDestination” has to be adjusted to the amount of bits copied! Source and target may not overlap! InOut: Scope Name Type Comment Return PackArrayOfBoolToArrayOfByte UINT functon returns the necessary number of bytes in “abyDestination” Input paxSource POINTER TO BYTE address of ARRAY OF BOOL pabyDestination POINTER TO BYTE address of ARRAY OF BYTE uiNumberOfBits UINT number of bits to copy from “paxSource” to “pabyDestination”
PackBitsToByte (FUN) ¶ FUNCTION PackBitsToByte : BYTE Function packs 8 Bits “xBit0” .. “xBit7” into a BYTE. Example: PackBitsToByte ( FALSE , FALSE , FALSE , FALSE , FALSE , FALSE , FALSE , TRUE ) = 16#01 InOut: Scope Name Type Comment Return PackBitsToByte BYTE functions returns the BYTE defined by the BOOL inputs Input xBit7 BOOL Bit 7 of the Byte xBit6 BOOL Bit 6 of the Byte xBit5 BOOL Bit 5 of the Byte xBit4 BOOL Bit 4 of the Byte xBit3 BOOL Bit 3 of the Byte xBit2 BOOL Bit 2 of the Byte xBit1 BOOL Bit 1 of the Byte xBit0 BOOL Bit 0 of the Byte
PackBitsToDword (FUN) ¶ FUNCTION PackBitsToDword : DWORD Function packs 32 Bits “xBit0” .. “xBit31” into a DWORD. Example: PackBitsToDword ( FALSE , FALSE , FALSE , FALSE , FALSE , FALSE , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , FALSE , FALSE , TRUE , FALSE , FALSE , FALSE , FALSE , FALSE , FALSE , FALSE , TRUE , TRUE , FALSE , FALSE , FALSE , FALSE , FALSE , TRUE , FALSE , FALSE ) = 16#01020304 InOut: Scope Name Type Comment Return PackBitsToDword DWORD function returns the DWORD defined by the BOOL inputs Input xBit31 BOOL Bit 31 of the Dword xBit30 BOOL Bit 30 of the Dword xBit29 BOOL Bit 29 of the Dword xBit28 BOOL Bit 28 of the Dword xBit27 BOOL Bit 27 of the Dword xBit26 BOOL Bit 26 of the Dword xBit25 BOOL Bit 25 of the Dword xBit24 BOOL Bit 24 of the Dword xBit23 BOOL Bit 23 of the Dword xBit22 BOOL Bit 22 of the Dword xBit21 BOOL Bit 21 of the Dword xBit20 BOOL Bit 20 of the Dword xBit19 BOOL Bit 19 of the Dword xBit18 BOOL Bit 18 of the Dword xBit17 BOOL Bit 17 of the Dword xBit16 BOOL Bit 16 of the Dword xBit15 BOOL Bit 15 of the Dword xBit14 BOOL Bit 14 of the Dword xBit13 BOOL Bit 13 of the Dword xBit12 BOOL Bit 12 of the Dword xBit11 BOOL Bit 11 of the Dword xBit10 BOOL Bit 10 of the Dword xBit9 BOOL Bit 9 of the Dword xBit8 BOOL Bit 8 of the Dword xBit7 BOOL Bit 7 of the Dword xBit6 BOOL Bit 6 of the Dword xBit5 BOOL Bit 5 of the Dword xBit4 BOOL Bit 4 of the Dword xBit3 BOOL Bit 3 of the Dword xBit2 BOOL Bit 2 of the Dword xBit1 BOOL Bit 1 of the Dword xBit0 BOOL Bit 0 of the Dword