F.1.4 Creation of the FunctionalEntity structure

In this step of the example, the FunctionalEntity sub-model is created. See Figure F.7.

Figure F.7 – FunctionalEntity sub-model of Filling Machine example

The following steps are needed to define the FunctionalEntities:

In Figure F.8, a FunctionalEntity “FillControl” is created that represents an application for controlling a valve based on input data from a level measurement. The “FillControl” FunctionalEntity is hosted by the CPU module “R04CPU_PLC”.

Figure F.8 – FunctionalEntity FillControl hosted by Asset R04CPU_PLC

“FillControl” uses an analogue value input, “FillLevel”, and a digital output variable, “ValveOpenClose”. Both Variables are organized as InputData and OutputData of the FunctionalEntity, “FillControl”.The “FillLevel” signal is coming from a FunctionalEntity, “LevelMeasurement”, that is hosted by the analogue input module, “R60AD4_AnalogInput”, while the “ValveOpenClose” signal is sent to a FunctionalEntity, “ValveControl”, hosted by the digital output module, “RY0R2_DigitalOutput”.

This is shown in Figure F.9.

Figure F.9 – FunctionalEntity FillControl organizing input and output variables

After setting up InputData and OutputData, the capabilities of the communication are defined. For example, the SubscriberCapabilities Variables for the “FillLevel” input signals are defined as in Figure F.10:

Figure F.10 – SubscriberCapabilities Variables of the LevelMeasurement FunctionalEntity

Table F.1 shows the values of the Variables used in the example:

Table F.1 – SubscriberCapabilities Variables and values for the LevelMeasurement FunctionalEntity
Variable Value
PreConfiguredDataSetOnlyTrue
PreConfiguredSubscribedDataSets[“FillLevelDataSet”]
SupportedMessageReceiveTimeoutsmin:200,
max:20000,
increment:50,
multiplier:1;
unit:milliseconds
SupportedPublishingIntervalsmin:50,
max:5000,
increment:50,
multiplier:1;
unit:milliseconds
SupportedQoSQosCategory: opc.qos.cat://priority,
DatagrammQos: opc.qos.lbl://green