Primitive Value-Objekte
Primitive Value-Objekte können zur Abbildung einfacher Datentypen, wie z. B. Zeichenketten (Strings), Integerwerten oder für Datums- oder Zeitangaben verwendet werden.
Bei Datumsangaben gilt gemäß BACnet Standard, dass das Jahr ab 1900 beginnt. Das Element Monat kann zusätzlich zu den regulären Monatsangaben auch ungerade (13) und gerade (14) Monate enthalten. Der Tag des Monats kann zusätzlich zu den regulären Tagesangaben auch ungerade (33) und gerade (34) Tages des Monats sowie den letzten Tag (32) des Monats enthalten.
Wichtig ist bei der Angabe spezifischer Datumsangaben, dass der Wochentag zum angegebenen Datum passen muss.
Für Uhrzeiten gilt der Bereich von 0-23 Stunden, 0-59 Minuten, 0-59 Sekunden sowie 0-99 Hundertstel Sekunden.
Der Wert 255 steht als Platzhalter bei den Objekten vom Typ Pattern für einen beliebigen Wert (z. B. jedes Jahr oder jede Stunde). Für die Aufzählungstypen kann alternativ auch der enumertierte Wert Unspecified verwendet werden.
Variablen
fbPositiveInteger : FB_BACnet_INT;
fbLargeAnalog : FB_BACnet_LAV;
fbCharacterString : FB_BACnet_String;
fbUnsignedInteger : FB_BACnet_UINT;
nValue : INT := 15;
fValue : LREAL := 42.3;
sValue : STRING := 'TwinCAT BACnet';
uiValue : UINT := 12345;
fbDate : FB_BACnet_Date;
fbDatePattern : FB_BACnet_DateP;
fbDateTime : FB_BACnet_DateTime;
fbDatetimePattern : FB_BACnet_DateTimeP;
fbTime : FB_BACnet_Time;
fbTimePattern : FB_BACnet_TimeP;
// specific date
stDate : ST_BA_Date := ( nYear := 122, eMonth := E_BA_MONTH.eDecember, nDay := E_BA_DAY.eDay02, eDayOfWeek := E_BA_WEEKDAY.eFriday );
// every year christmas eve (regardsless of the day of week)
stDatePattern : ST_BA_Date := ( nYear := 255, eMonth := E_BA_MONTH.eDecember, nDay := E_BA_DAY.eDay24, eDayOfWeek := E_BA_WEEKDAY.Unspecified );
// specific date and specific time
stDateTime : ST_BA_DateTime := (
stDate := ( nYear := 122, eMonth := E_BA_MONTH.eDecember, nDay := E_BA_DAY.eDay02, eDayOfWeek := E_BA_WEEKDAY.eFriday ),
stTime := ( nHour := 17, nMinute := 53, nSecond := 42, nHundredths := 19 ) );
// every year where the 1st of May is a Monday each hour / minute at 11 seconds
stDateTimePattern : ST_BA_DateTime:= (
stDate := ( nYear := 255, eMonth := E_BA_MONTH.eMay, nDay := E_BA_DAY.eDay01, eDayOfWeek := E_BA_WEEKDAY.eMonday ),
stTime := ( nHour := 255, nMinute := 255, nSecond := 11, nHundredths := 0 ) );
// specific time
stTime : ST_BA_Time := ( nHour := 11, nMinute := 42, nSecond := 38, nHundredths := 45 );
// every hour at minute 42
stTimePattern : ST_BA_Time := ( nHour := 255, nMinute := 42, nSecond := 0, nHundredths := 0 );
Code
fbPositiveInteger.nValue := nValue;
fbPositiveInteger();
fbLargeAnalog.fValue := fValue;
fbLargeAnalog();
fbCharacterString.sValue := sValue;
fbCharacterString();
fbUnsignedInteger.nValue := uiValue;
fbUnsignedInteger();
fbDate.stValue := stDate;
fbDate();
fbDatePattern.stValue := stDatePattern;
fbDatePattern();
fbDateTime.stValue := stDateTime;
fbDateTime();
fbDatetimePattern.stValue := stDateTimePattern;
fbDatetimePattern();
fbTime.stValue := stTime;
fbTime();
fbTimePattern.stValue := stTimePattern;
fbTimePattern();