Niagara - BACnet - Export/import of schedule/calendar
The article outlines how to appropriately export/import schedules (including import of these created in the iSMA-B-AAC20 controller) and calendars with the BACnet protocol in the Niagara system. Initially, it is required to configure the BACnet driver, which is covered in the BACnet - Basic Configuration Steps article.
1. Export of Schedules
In order to expose schedules over the BACnet protocol, it is first required to add them to the local station. For the purpose of this example, the following schedules have been added to the station from the ‘schedule’ module palette:
‘CorridorLightSchedule’ ('BooleanSchedule');
‘FCUsModeSchedule’ ('EnumSchedule');
‘RoomsSetpointTemperatureSchedule’ ('NumericSchedule').
WARNING: It is essential to set the schedules to a limited time, as it is not possible to export unlimited schedules - in the importing device, components go into the ‘Fault’ status, and the following error notice is displayed: ‘ASN:Date contains Special Values’. For the 2020 year, limit the schedule as indicated below (please remember that after the schedule’s ending date it does not work, so it is recommended to set an additional alarm, repeated for several days before the end of the schedule, or to push the ending date every time the system is serviced).
![](../../__attachments/364118503/schedule%20limitation.png?inst-v=99fab5a7-671f-4b8f-9877-4c441fa1b4fd)
Figure 1. Setting limited time in the schedule
Next, go to the ‘Config/Drivers/BacnetNetwork/LocalDevice/ExportTable’ and open the ‘BACnet Export Manager’ view. Here, use the ‘Discover’ option, which brings about a pop-up window generating a BQL request; by default, the whole range of the station is searched, and this has not been changed in the example, but the component’s type has been set to ‘Schedule’. Confirm with OK; in the ‘Local Objects’ section, all discovered components are displayed.
![](../../__attachments/364118503/Export%20schedule%20-%20local%20discovering.png?inst-v=99fab5a7-671f-4b8f-9877-4c441fa1b4fd)
Figure 2. BQL request configuration and list of discovered components
Drag & drop selected schedules to the ‘Exported Objects’ section, which means exposing them over the BACnet protocol. Once the schedules are moved, the pop-up window appears, which allows to set properties for a new BACnet object:
BACnet ‘Object Name';
BACnet ‘Inst Num’ (object’s address);
BACnet ‘Description’.
![](../../__attachments/364118503/ExportedObjects%20-%20schedule.png?inst-v=99fab5a7-671f-4b8f-9877-4c441fa1b4fd)
Figure 3. List of ‘Schedule’ objects exported over the BACnet protocol
After confirming the objects added to the export list, they will be exposed over the BACnet protocol.
2. Import of Schedules (Created in Niagara Controller)
2.1. Adding with ‘Discover’ Function
Go to the ‘Config/Drivers/BacnetNetwork/Device_Name/Schedules’ in the ‘BACnet Schedule Import Manager’ view, and use the ‘Discover’ option. In the ‘Discovered’ section, all published (in a searched device) schedules are displayed. Discovered schedules can be dragged&dropped to the ‘Database’ section. The below figure shows appropriately configured network synchronization of schedules:
![](../../__attachments/364118503/Import%20schedule%20-%20add%20to%20database.png?inst-v=99fab5a7-671f-4b8f-9877-4c441fa1b4fd)
Figure 4. List of ‘Schedule’ objects imported over the BACnet protocol
While adding a schedule, it is required to define a synchronization method (the ‘Execution Time' slot). The following methods are available:
‘Manual’ - invoking synchronization through action with a possibility to connect logic and perform synchronization according to the logic’s mechanism;
'Daily' - daily synchronization; it is required to set an hour and days of synchronization;
‘Interval’ - synchronization performed periodically; it is required to set the interval.
Objects added to the database are in fact components from the ‘schedule’ module with BACnet extension added, so there is no need to reference them to local schedule components, they can be linked directly to the logic.
WARNING: If schedules created on the exporting device have not been set to a limited time (which is covered in point 1), than after their import, they go into the ‘fault’ status in the BACnet driver with ‘ASN:Date contains Special Values’ error notice:
![](../../__attachments/364118503/Import%20-%20fault%20unlimited%20schedule.png?inst-v=99fab5a7-671f-4b8f-9877-4c441fa1b4fd)
Figure 5. Example of importing unlimited schedules over the BACnet protocol
2.2. Manual Adding - ‘New’ Button
WARNING: The method is useful in case there is no schedule linked to the internal logic of the controller. The method is no different (except duration) than the ‘Discover’ function, but it can be applied to devices, which do not support the ‘Discover’ function in case of ‘schedule’ objects.
Go to the ‘Config/Drivers/BacnetNetwork/Device_Name/Schedules’ in the ‘BACnet Schedule Import Manger’ view, and click ‘New’. In the first pop-up window, select a type of added component (e.g., ‘BooleanSchedule’).
![](../../__attachments/364118503/Export%20-%20add%20manually.png?inst-v=99fab5a7-671f-4b8f-9877-4c441fa1b4fd)
Figure 6. Selecting a schedule type with a ‘New’ button
After confirming with OK, the next pop-up window appears, which requires to manually fill in the following data:
name (internal) of a schedule;
BACnet 'Object ID';
‘Execution Time’.
A schedule added this way is automatically assigned a BACnet priority.
WARNING: If schedules created on the exporting device have not been set to a limited time (which is covered in point 1), than after their import, they go into the ‘fault’ status in the BACnet driver with ‘ASN:Date contains Special Values’ error notice.
2.3. Manual Adding - BACnet Extension for Schedule Existing in Logic
WARNING: The method is useful if there is a ready schedule (linked to the internal logic), and its removal would mean a risk of losing a link during the change from a local schedule to a component added with a ‘Discover’ function over the BACnet protocol.
WARNING: The method uses data exporting extensions (not importing), so it is strongly recommended to pay special attention not to overwrite the schedule in the controller, which it was set in.
Go to the ‘Config/Drivers/BacnetNetwork/Device_Name/Schedules’ in the ‘BACnet Schedule Export Manager’ view, and choose one of the available ways:
Drag&drop the ‘BacnetScheduleExport’ extension from the ‘bacnet’ module ('Scheduling’folder) to the ‘Database’ window, and double-click the added component.
![](../../__attachments/364118503/Export%20-%20import%20as%20export%20-%20add%20from%20palette.png?inst-v=99fab5a7-671f-4b8f-9877-4c441fa1b4fd)
Figure 7. Adding the ‘BacnetScheduleExport’ from the palette
Click ‘New’ and select the ‘Bacnet Schedule Export’ type.
![](../../__attachments/364118503/Export%20-%20import%20as%20export%20-%20add%20manually.png?inst-v=99fab5a7-671f-4b8f-9877-4c441fa1b4fd)
Figure 8. Adding the ‘Bacnet Schedule Export’ extension with the ‘New’ button
Then, in the pop-up window, fill in the following data:
name (internal) of the schedule’s extension;
BACnet ‘Object ID’;
indicate a schedule from the internal logic (the ‘Supervisor Ord’ slot);
set the BACnet priority (the ‘Priority for Writing’ slot);
in the ‘Execution Time’ slot, set the ‘Manual’ value (the ‘Daily’ and ‘Interval’ functions invoke the ‘Execute’ action, which is not recommended in this case as it would send the schedule contents from the edited device to the remote one);
then, invoke the ‘Read From Device’ action on an added device.
This way allows to import a schedule with no need to remove a local component or recreate links. From this moment on, it is required to perform a manual synchronization (through action) or add a logic linked to the ‘Read From Device’ action (for example, using the ‘Multivibrator’ component from the ‘kitControl’ module).
3. Export of Calendar
In order to expose a calendar over the BACnet protocol, first, it has to be added to the local station. In this example, the ‘CalendarSchedule’ (from the ‘schedule’ module) was added and named ‘HolidayCalendar’. Then holidays were marked as exceptions in the calendar:
![](../../__attachments/364118503/Export%20calendar%20-%20local%20calendar%20configuration.png?inst-v=99fab5a7-671f-4b8f-9877-4c441fa1b4fd)
Figure 9. Configuration of exception in the calendar
WARNING: With calendars (similarly as with schedules) exported over the BACnet protocol, it is essential to limit the time of events. Each event must be set for a specific day, month, and year (an exception here is ‘Weekday’, which can be set to ‘Any Weekday’ value). If the time settings are unlimited, the components in the importing device go to the “Fault' status with the ‘ASN:Date contains Special Values’ error notice. Unfortunately, it forces the system maintenance to reestablish all holidays each year; it is, therefore, recommended to set the alarm at the end of the year reminding to update dates in calendar.
![](../../__attachments/364118503/Export%20calendar%20-%20set%20Date%20event.png?inst-v=99fab5a7-671f-4b8f-9877-4c441fa1b4fd)
Figure 10. Configuration of the ‘NewYear’ exception in the calendar
![](../../__attachments/364118503/Export%20calendar%20-%20set%20DateRange%20event.png?inst-v=99fab5a7-671f-4b8f-9877-4c441fa1b4fd)
Figure 11. Configuration of the ‘ChristmasHolidays’ exception in the calendar
Next, go to the ‘Config/Drivers/BacnetNetwork/LocalDevice/ExportTable’, and open the ‘Bacnet Export Manager’ view. Here, use the ‘Discover’ option, which brings about a pop-up window generating a BQL request; by default, the whole range of the station is searched, and this has not been changed in the example, but the component’s type has been set to ‘Schedule’. Confirm with OK; in the ‘Local Objects’ section, all discovered components are displayed.
![](../../__attachments/364118503/Export%20schedule%20-%20local%20discovering.png?inst-v=99fab5a7-671f-4b8f-9877-4c441fa1b4fd)
Figure 12. BQL request configuration and list of discovered components
Drag & drop selected schedules to the ‘Exported Objects’ section, which means exposing them over the BACnet protocol. Once the objects are moved, the pop-up window appears, which allows to set properties for a new BACnet object:
BACnet ‘Object Name';
BACnet ‘Inst Num’ (object’s address);
BACnet ‘Description’.
![](../../__attachments/364118503/Export%20calendar%20-%20add%20to%20ExportetObjects.png?inst-v=99fab5a7-671f-4b8f-9877-4c441fa1b4fd)
Figure 13. List of ‘Schedule’ objects exported over the BACnet protocol
After confirming the objects added to the export list, they will be exposed over the BACnet protocol.
4. Import of Calendar
4.1. Adding with ‘Discover’ Function
Go to the ‘Config/Drivers/BacnetNetwork/Device_Name/Schedules’ in the ‘BACnet Schedule Import Manager’ view, and use the ‘Discover’ option. In the ‘Discovered’ section, all published (in a searched device) calendars and schedules are displayed. Discovered calendar objects can be dragged&dropped to the ‘Database’ section. The below figure shows appropriately configured network synchronization of calendars:
![](../../__attachments/364118503/Import%20calendar%20-%20discover%20and%20add.png?inst-v=99fab5a7-671f-4b8f-9877-4c441fa1b4fd)
Figure 14. Example of importing unlimited schedules over the BACnet protocol
While adding a calendar, it is required to define a synchronization method (the ‘Execution Time' slot). The following methods are available:
‘Manual’ - invoking synchronization through action with a possibility to connect logic and perform synchronization according to the logic’s mechanism;
'Daily' - daily synchronization; it is required to set an hour and days of synchronization;
‘Interval’ - synchronization performed periodically; it is required to set the interval.
Objects added to the database are in fact ‘CalendarSchedule’ components from the ‘schedule’ module with BACnet extension added, so there is no need to reference them to local components, the BACnet calendars can be directly referenced with local schedules.
WARNING: If calendars created on the exporting device include events that have not been set to a limited time (which is covered in point 1), than after adding it to the BACnet calendar database, it goes into the ‘fault’ status with ‘ASN:Date contains Special Values’ error notice:
![](../../__attachments/364118503/Import%20calendar%20-%20discover%20and%20add%20-%20status%20fault.png?inst-v=99fab5a7-671f-4b8f-9877-4c441fa1b4fd)
Figure 15. Example of importing unlimited calendars over the BACnet protocol
4.2. Manual Adding - ‘New’ Button
WARNING: The method is useful in case there is no ready calendar, which would be referenced in local schedules. The method is no different (except duration) than the ‘Discover’ function, but it can be applied to devices, which do not support the ‘Discover’ function in case of ‘schedule’ objects.
Go to the ‘Config/Drivers/BacnetNetwork/Device_Name/Schedules’ in the ‘BACnet Schedule Import Manger’ view, and click ‘New’, select ‘CalendarSchedule’, and confirm with OK.
![](../../__attachments/364118503/Import%20calendar%20-%20manually%20add.png?inst-v=99fab5a7-671f-4b8f-9877-4c441fa1b4fd)
Figure 16. Selecting new calendar added with the ‘New’ button
Next, the pop-up window appears, which requires to manually fill in the following data:
name (internal) of a calendar;
BACnet 'Object ID';
‘Execution Time’.
A calendar added this way is automatically assigned a BACnet priority.
WARNING: If a calendar created on the exporting device includes events that have not been set to a limited time (which is covered in point 3), than after the import to the BACnet calendar to the database, it goes into the ‘fault’ status with ‘ASN:Date contains Special Values’ error notice.
4.3. Manual Adding - BACnet Extension for Calendar Existing in the Station
WARNING: The method is useful if there is a ready calendar (which has been referenced from all local schedules), and its removal would mean a risk of losing a link from one of local schedules to a calendar component added with a ‘Discover’ function.
WARNING: The method uses data exporting extensions (not importing), so it is strongly recommended to pay special attention not to overwrite the calendar in the controller, which it was set in.
Go to the ‘Config/Drivers/BacnetNetwork/Device_Name/Schedules’ in the ‘BACnet Schedule Export Manager’ view, and choose one of the available ways:
Drag&drop the ‘BacnetScheduleExport’ component from the ‘bacnet’ module ('Scheduling’folder) to the ‘Database’ window, and double-click the added component.
![](../../__attachments/364118503/Export%20-%20import%20as%20export%20-%20add%20from%20palette.png?inst-v=99fab5a7-671f-4b8f-9877-4c441fa1b4fd)
Figure 17. Adding the ‘BacnetScheduleExport’ from the palette
Click ‘New’ and select the ‘Bacnet Schedule Export’ type.
![](../../__attachments/364118503/Export%20-%20import%20as%20export%20-%20add%20manually.png?inst-v=99fab5a7-671f-4b8f-9877-4c441fa1b4fd)
Obraz 17. Adding the ‘Bacnet Schedule Export’ extension with the ‘New’ button
Then, in the pop-up window, fill in the following data:
name (internal) of the calendar’s extension;
BACnet ‘Object ID’ (remember to change from ‘schedule’ to ‘calendar’);
indicate a calendar from the internal logic (the ‘Supervisor Ord’ slot);
set the BACnet priority (the ‘Priority for Writing’ slot);
in the ‘Execution Time’ slot, set the ‘Manual’ value (the ‘Daily’ and ‘Interval’ functions invoke the ‘Execute’ action, which is not recommended in this case as it would send the schedule contents from the edited device to the remote one);
then, invoke the ‘Read From Device’ action on an added extension.
This way allows to import a calendar with no need to remove a local calendar component or recreate references from all local schedules. From this moment on, it is required to perform a manual synchronization (through action) or add a logic linked to the ‘Read From Device’ action (for example, using the ‘Multivibrator’ component from the ‘kitControl’ module).