Control Maintenance Schedule
Overview
A maintenance schedule is a type of work schedule in which the work tasks that are scheduled are specifically related the assets that are to be maintained. That is, the maintenance schedule will describe all the maintenance tasks that must be undertaken and the actual dates on which work is scheduled to be done.
Additionally, a maintenance schedule may define required resources to perform tasks in terms of the skills or capabilities required and/or in terms of specific actors.
For a maintenance schedule, the following information will be needed:
The maintenance tasks that are to be undertaken with, for each task:
Identity of the task (using the general form of identification or breakdown structure adopted for the project)
The name of the task (i.e. how it will be shown in a chart)
Any further useful description (which may be provided if required).
Whether the task is a milestone or has a scheduled duration.
Time related information about the task including earliest/latest start dates, earliest/latest finish dates, scheduled start/finish dates, actual start/finish dates. The extent of time related information specified depends on whether the baseline schedule or actual concept schedule is applied.
Available float times for the task.
The assets on which the work is done
Concept 1: Baseline Schedule
Includes earliest, latest and scheduled start and finish times. Float times may also be included. Actual start and finish times are excluded together with other values that are dependant on start or finish time.
Concept 2: Actual Schedule
Actual start and finish times are includes. Earliest, latest and scheduled start/finish times may be adjusted according to circumstances. Float times may also be adjusted. Remaining time for a task may be identified.
Suggested modifications to IFC model and documentation
* IfcTimeMeasure is specified as a real value that is normally measured in seconds. Many time measures may be measured in much larger units (months/years for a typical building or building component). This fact has to be either dealt with in software (currently as indicated) or an alternative approach to measuring time measure determined for IFC.
Results
Maintenance schedule is established in which all maintenance tasks are defined and the points in time at which the work Depending on when the schedule is established, it may be a baseline schedule specifying expectations for completion of tasks or it may be an actual schedule in which actual start/finish dates are described.
| Information Needed | Entity/Pset/Functional Part | MAN | REC | OPT |
|---|---|---|---|---|
| CONCEPT: Baseline Schedule Establish a baseline maintenance schedule defining the maintenance work to be undertaken on a selection of assets and the expected schedule of activities. Note that whilst it would be possible to look at the maintenance of products, it is assumed that such products are grouped together within an asset for the purposes of maintenance. Individual elements of the asset are identifiable within the asset group through the general grouping mechanism. |
||||
| Determine the maintenance tasks to be undertaken. Perform the following actions for each task to be included in the maintenance schedule. Note that tasks within a schedule may be derived from one or more work plans already defined. A relationship between a work schedule and a work plan may be described if necessary through the IfcRelAssignsToControl relationship. This is not specifically described within this functional part. |
||||
|
||||
|
IfcTask.GlobalId::fcGloballyUniqueId | |||
|
OwnerHistory::fp_apply_owner_history | |||
|
IfcTask.Name::IfcLabel | |||
|
IfcTask.Description IfcLabel | |||
|
||||
|
IfcTask.ObjectType::IfcLabel | |||
|
||||
|
IfcTask.TaskId::IfcIdentifier | |||
|
IfcTask.IsMilestone::BOOLEAN | |||
|
IfcTask.Status::IfcLabel | |||
|
IfcTask.WorkMethod::IfcLabel | |||
|
IfcTask.Priority::INTEGER | |||
|
fp_nests (IfcTask) | |||
| Define resources that may be associated with a task in a work schedule Resources are allocated through the functional part fp_assign_construction_resource_to_task |
||||
|
fp_assign_construction_resource_to_task (IfcConstructionEquipmentResource) |
|||
|
fp_assign_construction_resource_to_task (IfcConstructionMaterialResource) | |||
|
fp_assign_construction_resource_to_task (IfcConstructionProductResource) | |||
|
fp_assign_construction_resource_to_task (IfcCrewResource) |
|||
|
fp_assign_construction_resource_to_task (IfcLaborResource) |
|||
|
fp_assign_construction_resource_to_task (IfcSubContractResource) | |||
| Identify the asset | ||||
|
fp_model_asset | |||
| Associate the asset with the task In this functional part, the asset is assigned to the task rather than vice versa. This is done because the asset is a group rather than a product Note also that the identification of the asset is not specifically referenced by the work control. Reference to the asset is considered to be implicit through the task |
||||
|
IfcRelAssignsToProcess.RelatingProcess::IfcTask | |||
|
IfcRelAssignsToProcess.RelatedObjects::IfcAsset | |||
|
IfcRelAssignsToProcess.QuantityInProcess::IfcMeasureWithUnit | X | X | X |
|
IfcRelAssignsToProcess.GlobalId::IfcGloballyUniqueId | |||
|
IfcRelAssignsToProcess.OwnerHistory::fp_apply_owner_history | |||
|
IfcRelAssignsToProcess.Name::IfcLabel | |||
|
IfcRelAssignsToProcess.Description::IfcLabel | |||
| Define the work schedule to which the tasks will be assigned | ||||
|
IfcWorkSchedule.GlobalId::IfcGloballyUniqueId | |||
|
IfcWorkSchedule.OwnerHistory::fp_apply_owner_history | |||
|
IfcWorkSchedule.Name::IfcLabel | |||
|
IfcWorkSchedule.Description::IfcLabel | |||
|
IfcWorkSchedule.Identifier::IfcIdentifier | |||
|
IfcWorkSchedule.CreationDate::fp_select_date_time | |||
|
IfcWorkSchedule.Creators::fp_select_actor | |||
|
IfcWorkSchedule.Purpose::IfcLabel | |||
|
IfcWorkSchedule.Duration::IfcTimeMeasure | |||
|
IfcWorkSchedule.TotalFloat::IfcTimeMeasure | |||
|
IfcWorkSchedule.StartTime::fp_select_date_time | |||
|
IfcWorkSchedule.FinishTime::fp_select_date_time | |||
|
IfcWorkSchedule.WorkControlType::IfcWorkControlTypeEnum | |||
|
IfcWorkSchedule.UserDefinedControlType::IfcLabel | |||
| Assign the task to the work schedule | ||||
|
IfcRelAssignsTasks.RelatingControl::IfcWorkSchedule | |||
|
IfcRelAssignsTasks.RelatedObjects::IfcTask | |||
|
IfcRelAssignsTasks.RelatedObjectsType::IfcObjectTypeEnum = 'PROCESS' | |||
|
IfcRelAssignsTasks.TimeForTask::IfcScheduleTimeControl | |||
|
IfcRelAssignsTasks.GlobalId::IfcGloballyUniqueId | |||
|
IfcRelAssignsTasks.OwnerHistory::fp_apply_owner_history | |||
|
IfcRelAssignsTasks.Name::IfcLabel | |||
|
IfcRelAssignsTasks.Description::IfcLabel | |||
| Define the time control information for the task in the schedule. CONCEPT 1: Baseline Schedule |
||||
|
IfcScheduleTimeControl.ActualStart::fp_select_date_time | X | X | X |
|
IfcScheduleTimeControl.EarlyStart::fp_select_date_time | |||
|
IfcScheduleTimeControl.LateStart::fp_select_date_time | |||
|
IfcScheduleTimeControl.ScheduleStart::fp_select_date_time | |||
|
IfcScheduleTimeControl.ActualFinish::fp_select_date_time | X | X | X |
|
IfcScheduleTimeControl.EarlyFinish::fp_select_date_time | |||
|
IfcScheduleTimeControl.LateFinish::fp_select_date_time | |||
|
IfcScheduleTimeControl.ScheduleFinish::fp_select_date_time | |||
|
IfcScheduleTimeControl.ScheduleDuration::IfcTimeMeasure | |||
|
IfcScheduleTimeControl.ActualDuration::IfcTimeMeasure | X | X | X |
|
IfcScheduleTimeControl.RemainingTime::IfcTimeMeasure | |||
|
IfcScheduleTimeControl.FreeFloat::IfcTimeMeasure | |||
|
IfcScheduleTimeControl.TotalFloat::IfcTimeMeasure | |||
|
IfcScheduleTimeControl.IsCritical::BOOLEAN | |||
|
IfcScheduleTimeControl.StatusTime::fp_select_date_time | X | X | X |
|
IfcScheduleTimeControl.StartFloat::IfcTimeMeasure | |||
|
IfcScheduleTimeControl.FinishFloat::IfcTimeMeasure | |||
|
IfcScheduleTimeControl.Completion::IfcPositiveRatioMeasure | |||
| Define the time control information for the task in the schedule. CONCEPT 2: Actual Schedule For the actual schedule, all attributes shown above in CONCEPT 1 as having values asserted are still relevant. Additionally, the following values which were not asserted for a baseline schedule should be asserted as described below for an actual schedule. |
||||
|
IfcScheduleTimeControl.ActualStart::fp_select_date_time | |||
|
IfcScheduleTimeControl.ActualFinish::fp_select_date_time | |||
|
IfcScheduleTimeControl.ActualDuration::IfcTimeMeasure | |||
|
IfcScheduleTimeControl.StatusTime::fp_select_date_time | |||
| Specify the logic of the task sequence For tasks that have a logical sequence relationship, this should be asserted |
||||
|
IfcRelSequence.GlobalId::IfcGloballyUniqueId | |||
|
IfcRelSequence.OwnerHistory::fp_apply_owner_history | |||
|
IfcRelSequence.Name::IfcLabel | |||
|
IfcRelSequence.Description::IfcLabel | |||
|
IfcRelSequence.RelatingProcess::IfcTask | |||
|
IfcRelSequence.RelatedProcess::IfcTask | |||
|
IfcRelSequence.SequenceType::IfcSequenceTypeEnum | |||
|
IfcRelSequence.TimeLag::IfcTimeMeasure |
IFC Entities Required
- IfcControl
- IfcGroup
- IfcObject
- IfcObjectDefinition
- IfcProcess
- IfcProduct
- IfcRelationship
- IfcRelAssigns
- IfcRelAssignsTasks
- IfcRelAssignsToControl
- IfcRelAssignsToProcess
- IfcRelConnects
- IfcRelSequence
- IfcRoot
- IfcScheduleTimeControl
- IfcTask
- IfcWorkControl
- IfcWorkSchedule
IFC Datatypes Required
- IfcGloballyUniqueId
- IfcIdentifier
- IfcLabel
- IfcObjectTypeEnum
- IfcPositiveRatioMeasure
- IfcRatioMeasure
- IfcSequenceEnum
- IfcText
- IfcTimeMeasure
- IfcWorkControlTypeEnum
IFC Functions Required
- -
IFC Property Sets Required
- -
IDM Functional Parts Required
- fp_apply_owner_history;
- fp_assign_construction_resource_to_task
- fp_measure_with_unit;
- fp_model_asset
- fp_nests
- fp_place_object;
- fp_represent_product;
- fp_select_date_time;
EXPRESS Schema
SCHEMA FP_CONTROL_MAINTENANCE_SCHEDULE;
TYPE IfcGloballyUniqueId = STRING (22) FIXED;
END_TYPE;
TYPE IfcIdentifier = STRING;
END_TYPE;
TYPE IfcLabel = STRING;
END_TYPE;
TYPE IfcRatioMeasure = REAL;
END_TYPE;
TYPE IfcPositiveRatioMeasure = IfcRatioMeasure;
WHERE
WR1 : SELF > 0;
END_TYPE;
TYPE IfcText = STRING;
END_TYPE;
TYPE IfcTimeMeasure = REAL;
END_TYPE;
TYPE IfcObjectTypeEnum = ENUMERATION OF
(PRODUCT,
PROCESS,
CONTROL,
RESOURCE,
ACTOR,
GROUP,
PROJECT,
NOTDEFINED);
END_TYPE;
TYPE IfcWorkControlTypeEnum = ENUMERATION OF
(ACTUAL,
BASELINE,
PLANNED,
USERDEFINED,
NOTDEFINED);
END_TYPE;
TYPE IfcSequenceEnum = ENUMERATION OF
(START_START,
START_FINISH,
FINISH_START,
FINISH_FINISH,
NOTDEFINED);
END_TYPE;
ENTITY IfcProduct
ABSTRACT SUPERTYPE
SUBTYPE OF(IfcObject);
Representation : OPTIONAL fp_represent_product;
ObjectPlacement : OPTIONAL fp_place_object;
WHERE
WR1 : (EXISTS(Representation) AND EXISTS(ObjectPlacement))
OR (EXISTS(Representation) AND
(NOT('IFC2X2_FINAL.IFCPRODUCTDEFINITIONSHAPE' IN TYPEOF(Representation))))
OR (NOT(EXISTS(Representation)));
END_ENTITY;
ENTITY IfcObject
ABSTRACT SUPERTYPE OF (ONEOF(IfcControl, IfcProcess, IfcProduct))
SUBTYPE OF(IfcObjectDefinition);
ObjectType : OPTIONAL IfcLabel;
WHERE
WR1 : SIZEOF(QUERY(temp <\* IsDefinedBy \| 'IFC2X2_FINAL.IFCRELDEFINESBYTYPE' IN TYPEOF(temp))) <= 1;
END_ENTITY;
ENTITY IfcObjectDefinition
SUBTYPE OF(IfcRoot);
INVERSE
HasAssignments : SET OF IfcRelAssigns FOR RelatedObjects;
END_ENTITY;
ENTITY IfcRoot
ABSTRACT SUPERTYPE OF (ONEOF(IfcRelationship, IfcObjectDefinition));
GlobalId : IfcGloballyUniqueId;
Name : OPTIONAL IfcLabel;
Description : OPTIONAL IfcText;
OwnerHistory : fp_apply_owner_history;
UNIQUE
UR1 : GlobalId;
END_ENTITY;
ENTITY IfcRelationship
ABSTRACT SUPERTYPE OF (ONEOF(IfcRelAssigns, IfcRelConnects))
SUBTYPE OF(IfcRoot);
END_ENTITY;
ENTITY IfcRelAssigns
ABSTRACT SUPERTYPE OF (ONEOF(IfcRelAssignsToControl, IfcRelAssignsToProcess))
SUBTYPE OF(IfcRelationship);
RelatedObjects : SET [1:?] OF IfcObject;
RelatedObjectsType : OPTIONAL IfcObjectTypeEnum;
WHERE
WR1 : IfcCorrectObjectAssignment(RelatedObjectsType, RelatedObjects);
END_ENTITY;
ENTITY IfcRelAssignsToControl
SUBTYPE OF(IfcRelAssigns);
RelatingControl : IfcControl;
WHERE
WR1 : SIZEOF(QUERY(Temp <\* SELF\IfcRelAssigns.RelatedObjects \| RelatingControl :=: Temp)) = 0;
END_ENTITY;
ENTITY IfcRelAssignsTasks
SUBTYPE OF(IfcRelAssignsToControl);
TimeForTask : OPTIONAL IfcScheduleTimeControl;
WHERE
WR1 : HIINDEX(SELF\IfcRelAssigns.RelatedObjects) = 1;
WR2 : 'IFC2X2_FINAL.IFCTASK' IN TYPEOF(SELF\IfcRelAssigns.RelatedObjects[1]);
WR3 : 'IFC2X2_FINAL.IFCWORKCONTROL' IN TYPEOF(SELF\IfcRelAssignsToControl.RelatingControl);
END_ENTITY;
ENTITY IfcScheduleTimeControl
SUBTYPE OF(IfcControl);
ActualStart : OPTIONAL fp_select_date_time;
EarlyStart : OPTIONAL fp_select_date_time;
LateStart : OPTIONAL fp_select_date_time;
ScheduleStart : OPTIONAL fp_select_date_time;
ActualFinish : OPTIONAL fp_select_date_time;
EarlyFinish : OPTIONAL fp_select_date_time;
LateFinish : OPTIONAL fp_select_date_time;
ScheduledFinish : OPTIONAL fp_select_date_time;
ScheduleDuration : OPTIONAL IfcTimeMeasure;
ActualDuration : OPTIONAL IfcTimeMeasure;
RemainingTime : OPTIONAL IfcTimeMeasure;
FreeFloat : OPTIONAL IfcTimeMeasure;
TotalFloat : OPTIONAL IfcTimeMeasure;
IsCritical : OPTIONAL BOOLEAN;
StatusTime : OPTIONAL fp_select_date_time;
StartFloat : OPTIONAL IfcTimeMeasure;
FinishFloat : OPTIONAL IfcTimeMeasure;
Completion : OPTIONAL IfcPositiveRatioMeasure;
INVERSE
ScheduleTimeControlAssigned : IfcRelAssignsTasks FOR TimeForTask;
END_ENTITY;
ENTITY IfcControl
ABSTRACT SUPERTYPE OF (ONEOF(IfcScheduleTimeControl, IfcWorkControl))
SUBTYPE OF(IfcObject);
INVERSE
Controls : SET OF IfcRelAssignsToControl FOR RelatingControl;
END_ENTITY;
ENTITY IfcWorkControl
ABSTRACT SUPERTYPE
SUBTYPE OF(IfcControl);
Identifier : IfcIdentifier;
CreationDate : fp_select_date_time;
Purpose : OPTIONAL IfcLabel;
Duration : OPTIONAL IfcTimeMeasure;
TotalFloat : OPTIONAL IfcTimeMeasure;
StartTime : fp_select_date_time;
FinishTime\_ : fp_select_date_time;
WorkControlType : OPTIONAL IfcWorkControlTypeEnum;
UserDefinedControlType : OPTIONAL IfcLabel;
WHERE
WR1 : (WorkControlType <> IfcWorkControlTypeEnum.USERDEFINED) OR
((WorkControlType = IfcWorkControlTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcWorkControl.UserDefinedControlType));
END_ENTITY;
ENTITY IfcWorkSchedule
SUBTYPE OF(IfcWorkControl);
END_ENTITY;
ENTITY IfcRelAssignsToProcess
SUBTYPE OF(IfcRelAssigns);
RelatingProcess : IfcProcess;
QuantityInProcess : fp_measure_with_unit;
WHERE
WR1 : SIZEOF(QUERY(Temp <\* SELF\IfcRelAssigns.RelatedObjects \| RelatingProcess :=: Temp)) = 0;
END_ENTITY;
ENTITY IfcProcess
ABSTRACT SUPERTYPE
SUBTYPE OF(IfcObject);
INVERSE
IsSuccessorFrom : SET OF IfcRelSequence FOR RelatedProcess;
IsPredecessorTo : SET OF IfcRelSequence FOR RelatingProcess;
END_ENTITY;
ENTITY IfcTask
SUBTYPE OF(IfcProcess);
TaskId : IfcIdentifier;
Status : OPTIONAL IfcLabel;
WorkMethod : OPTIONAL IfcLabel;
IsMilestone : BOOLEAN;
Priority : OPTIONAL INTEGER;
WHERE
WR1 : SIZEOF(QUERY(temp <\* SELF\IfcObject.Decomposes \| NOT('IFC2X2_FINAL.IFCRELNESTS' IN TYPEOF(temp)))) = 0;
WR2 : SIZEOF(QUERY(temp <\* SELF\IfcObject.IsDecomposedBy \| NOT('IFC2X2_FINAL.IFCRELNESTS' IN TYPEOF(temp)))) = 0;
WR3 : EXISTS(SELF\IfcRoot.Name);
END_ENTITY;
ENTITY IfcRelSequence
SUBTYPE OF(IfcRelConnects);
RelatingProcess : IfcProcess;
RelatedProcess : IfcProcess;
TtimeLag : IfcTimeMeasure;
SequenceType : IfcSequenceEnum;
WHERE
WR1 : RelatingProcess :<>: RelatedProcess;
END_ENTITY;
ENTITY IfcRelConnects
ABSTRACT SUPERTYPE
SUBTYPE OF(IfcRelationship);
END_ENTITY;
ENTITY fp_apply_owner_history;
END_ENTITY;
ENTITY fp_assign_construction_resource_to_task;
END_ENTITY;
ENTITY fp_measure_with_unit;
END_ENTITY;
ENTITY fp_model_asset;
END_ENTITY;
ENTITY fp_nests;
END_ENTITY;
ENTITY fp_place_object;
END_ENTITY;
ENTITY fp_represent_product;
END_ENTITY;
ENTITY fp_select_date_time;
END_ENTITY;
END_SCHEMA;