[ROT_8] Rotation switch with 8 outputs

Function block ROT_8 switches on or off up to 8 plant components according to the runtime or defined sequence.

ROT_8 switches on or off up to eight plant components according to a defined sequence or based on operating hours. Switching occurs according to the number of requested plant components, their runtime, pending error messages or based on an external signal.

Functioning

The value on input [SpNrFun] defines the number of plant components to be switched on. For example, 4 if four boilers are required to cover heat demand. As a result, four outputs are needed for plant component control.

Plant components are also switched on or off for an increasing or decreasing value at input [SpNrFun].

ROT_8 determines the outputs [Cmd1]...[Cmd8] for use based on the settings and runtimes from plant components.

The operating hours can be counted internally based on the duration of the active output signals [Cmd1]...[Cmd8] or the plant component feedback [OpSta1]...[OpSta8]. As an alternative, the operating hours can be transmitted by an external operating hours counter to inputs [ValExtOph1]...[ValExtOph8].

If a plant component signals a fault, it is switched off and switched on according to the new plant component.

Switching on and off

Plant components are commanded according to the requested value at input [SpNrFun].

Plant components that cannot be switched, but are operational ([Avl1]...[Avl8] = 0 and [OpSta1]...[OpSta8] = 1 are considered operational and added to the calculation of the number of required plant components.

The switching criterion is selected on input [NxRotMod].

Time-based

In time-based mode, plant components are commanded based on present operating hours.

  • On switch on, the plant component with the lowest operating hours is switched on.
  • On switch off, the plant component with the most operating hours is switched off.

Oph = Operating hours

Time-based with overlap

"Time-based with overlap" uses the same logic as "Time-based".
Stopping a plant component is delayed, however, by [TiOvrlp].

Oph = Operating hours

Time-based with interruption

"Time-based with overlap" uses the same logic as "Time-based",
Starting a plant component is delayed, however, by [TiOvrlp].

Oph = Operating hours

Last in first out

'Last In First Out' switches on the plant components in ascending order and switches them off in descending order. In other words, the first switched on plant component is the last to be switched off.

Input [BlFun] defines the starting point of the switch-on sequence.

Example:

If the plant component on output [Cmd7] is selected as the starting point, the switch-on sequence for the four requested plant components on eight available plant components is as follows:

[Cmd7], [Cmd8], [Cmd1], [Cmd2]

The disable sequence is the reverse:

[Cmd2], [Cmd1], [Cmd8], [Cmd7]

[BlFun] = Starting point for the switching sequence

First in first out with overlap

"Last in first out with overlap" uses the same logic as "Last in first out".
Stopping a plant component is delayed, however, by [TiOvrlp].

[BlFun] = Starting point for the switching sequence

First in first out with interruption

"Last in first out with overlap" uses the same logic as "Last in first out".
Starting a plant component is delayed, however, by [TiOvrlp].

[BlFun] = Starting point for the switching sequence

First in first out

'First In First Out' switches on and off plant components in a circular sequence. In other words, the first switched on plant component is also the first to be switched off.

Example:

Switch-on sequence for four requested plant components on eight available plant components:
[Cmd1], [Cmd2], [Cmd3], [Cmd4]

Switch-off sequence:
[Cmd1], [Cmd2], [Cmd3], [Cmd4]

The starting point of the switching sequence is defined by an internal pointer.
If a plant component is switched off, the pointer moves to the next one.
If the pointer points to a plant component that cannot be switched, it moves to the next one.
If the plant component is switched on, the pointer stands still.

The indicator is on Cmd5 after the 4 plant components are switched on and off.

If switched on again, the switch-on sequence starts at Cmd5, since the internal indicator is at this position after the first switch-off sequence.

First in first out with overlap

"First in first out with overlap" uses the same logic as "First in first out".
Stopping a plant component is delayed, however, by [TiOvrlp].

First in first out with interruption

"First in first out with interrupt" uses the same logic as "First in first out".
Starting a plant component is delayed, however, by [TiOvrlp].

Changeover by operating hours

Outputs can be automatically changed over during operation by their operating hours. Changeover with [EnNxRot] = 1 must be permitted. Otherwise, it is only changed over for a fault or if a plant component is no longer available.

Automatic changeover is only possible for time-based rotation types (input [NxRotMod] with settings "Time-based", "Time-based with overlap", and "Time-based with interrupt").

The plant component is switched off as soon as it reaches the maximum runtime [TiRnMax] and the unswitched plant component with the lowest operating hours is switched on.

Only plant components that can be switched (input [Avl1…Avl8] = 1 and input [Dstb1…Dstb8] = 0) are changed over.

TB = Time-based changeover
TB+OL= Time-based changeover with overlap
TB-IR = Time-based changeover with interruption
[TiRnMax] = Plant component with max. runtime reached

Changeover by external command

Outputs can be switched during operation by an external signal. Changeover with [EnNxRot] = 1 must be permitted. Otherwise, it is only changed over for a fault or if a plant component is no longer available.

Forced rotation is triggered as soon as an external command is pending (rising edge) at input [FrcNxRot].

For a time-based changeover, the active plant component with the most operating hours is switched off; the plant component with the fewest operating hours is switched off.

The first switched-on output is switched off for FIFO and the next output is switched on per the switching sequence.

Forced rotation is not supported for LIFO.

Only plant components that can be switched (input [Avl1…Avl8] = 1 and input [Dstb1…Dstb8] = 0) are changed over.

TB = Time-based changeover
FIFO = First in first out
[FrcNxRot] = Receipt of the external changeover command

Changeover for faults

If a plant component reports a fault ([Dstb1]...[Dstb8] = 1) , it is switched off and another plant components takes it place according to the switched sequence.

For time-based changeover, this is the plant component with the fewest operating hours.

The next plant component from the switching sequence is used for LIFO and FIFO.

If the fault is resolved, the response is based on the selected switching criterion:

  • For time-based changeover and FIFO, the plant component remains switched off. It is considered, however, at the next regular switching process.
  • For LIFO, the plant component is switched on again, as long as it is still within the plant component to be activated. The last plant component that was switched on is switched off again.

TB = Time-based changeover
FIFO = First in first out
LIFO = Last In First Out
[Dstb1]...[Dstb8] = Fault at one of the outputs [Cmd1]...[Cmd8]

info

In a time-based mode, when plant components are switched upon reaching the maximum runtime, the same operating hours may not always be attainable (an operating component is requested if only two are available). In these cases, [PrfrMod] can define the switching preference for maximum runtime or equal operating hours.

Pins

Input

Description

Data type

Default value
Value range

EnFnct

Enable function

Enables the function.

Boolean

1

0 - The function is disabled.
1 - The function is enabled.

SpNrFun

Setpoint: Number of functional units

Number of plant components to be enabled

Integer

0

0...8

Avl1Avl8

Available 1Available 8

Presently available plant components

Boolean

0

0 - The plant component cannot be switched. Output [Cmd1]…[Cmd8] assumes the value of [OpSta1]…[OpSta8].
1 - The plant component can be switched.

OpSta1OpSta8

Operating state 1Operating state 8

Operating state from plant component connected at output [Cmd1]...[Cmd8]

Boolean

0

0 - Off.
1 - On.

Dstb1Dstb8

Disturbed 1Disturbed 8

Alarm state feedback from the plant component connected at output [Cmd1]...[Cmd8]

Boolean

0

0 – Normal
1 – Fault.

EnExtOph1...EnExtOph8

Take over external operating hours 1...8

Determines whether an external operating hours counter is used.

Boolean

0

0 - No external operating hours counter used
1 – External operating hours counter used

ValExtOph1...ValExtOph8

Value for external operating hours 1...8

Value of the operating hours acquired by the external operating hours counter.

Double Word

0

0... 4294967295 [s]

NxRotMod

Next-in rotation mode

Selection of the switching sequence for the outputs

Integer

1: Time-based

1…7

1: Time-based
2: Time-based with overlap
3: Time-based with interruption
4: Last In First Out
5: First In First Out
6: First In First Out with overlap
7: First In First Out with interruption

BlFun

Functional unit for base load

Specifies starting point (output [Cmd1]...[ Cmd8]), for rotation mode LIFO.

Integer

1

1...8

FrcNxRot

Forced next-in rotation

A pulse at this input triggers a rotation on the switching sequence (not supported for LIFO).

Boolean

0

0 – No forced rotation.
1 – Forced rotation triggered.

EnNxRot

Enable next-in rotation

Permits rotation (for forced rotation and time-based switching).

Boolean

1

0 – Rotation blocked.
1 – Rotation released.

TiOvrlp

Time overlap

Delay when switching on or off the plant component

Time

0 [ms]

0 [ms]...18 [h]

TiRnMax

Maximum runtime

Maximum uninterrupted runtime of a plant component

Real

168 [h]

ResetTi

Reset times

An input pulse resets all internal operating hours counters to 0. External operating hours counters are not affected.

Boolean

0

0 - No
1 - Yes

RnMod

Runtime mode

Defines the signal for counting the operating hours.

Boolean

0

0 - The operating hours are counted based on output command [Cmd1]...[Cmd8].
1 - Operating hours are counted based on the operating state of the plant components [OpSta1]...[OpSta8].

PrfrMod

Preferred mode

Defines the switching preference for maximum runtime and equal operating hours where both cannot be fulfilled.

Integer

1: Maximum runtime

1...2

1: Maximum runtime
2: Equal operating hours

BaObjRef

BA-Object reference
Link between function block and BACnet object.

Structure

---

BaObjRef
> DeviceID

Device identifier
[DeviceID] includes object type and object instance in one ID.
Identifies the device object: local or remote. A local device object can also be identified by value 16#3FFFFF.

Double Word

16#3FFFFF

BaObjRef
> ObjectID

Object identifier
[ObjectID] includes object type and object instance in one ID.
Identifies the object on a device.

Double Word

16#3FFFFF

BaObjRef
> ItemID

Item identifier
[ItemID] represents an index in a view node object that references the BACnet object.
[ObjectID] and [ItemID] together define an indirect reference to the BACnet object.
Value -1 indicates a direct interface.

Integer

-1

 

Output

Description

Data type

Default value
Value range

Cmd1Cmd8

Command 1Command 8

Commands the connected plant component as per the present rotation sequence.

Boolean

0

0 - Off

1 - On

HiCmdNr

Highest commanded number

Maximum permissible number of operating plant components

Integer

0

0...8

SpDvn

Setpoint deviation

Indicates if ROT_8 can command the required number of plant components.

Boolean

0

0 - The requested number of plant components can be started.
1 - The requested number of plant components cannot be commanded.

Dstb

Disturbed

Boolean

0

0 - Success reading persistent values.
1 - Error reading persistent values.

ErrCode

Error code indication

Integer

0: No error

= 0 - No error
> 0 - Error codes

Process response

ROT_8 is processed as of the second process cycle using the values pending at the inputs.

In the first process cycle, ROT_8 sends default values to its outputs, since the values pending on the inputs are not considered values for the purposes of calculation.

At start-up, ROT_8 reads the last saved values of the component's operating hours from the BACnet object and uses the values as initial values for counting operating hours. In the event of fault, the operating hours count of the components starts at 0.

The value of property 'Operating hours total' must be available on the BACnet object as an extension ('Extension by persistence' = 'Rotation switch with 8 outputs').

Troubleshooting

Unacceptable values on input [NxRotMod] rotation mode, are replaced by the last valid value.

If an unacceptable value already occurs at plant start up, ROT_8 sets the value for [NxRotMod] = 1 ("Time-based").

Application example

ROT_8 can changeover refrigeration machines, boilers, fans, or pumps, etc. based on operating hours and / or faults.

If plant components permit manual operation, use the operating hours counter based on the feedback for operating state [OpSta1]...[OpSta8] ([RnMod] = 1). This also considers the operating hours in manual mode.

In all other cases, the operating hours counter based on the output command [Cmd1]...[Cmd8] is appropriate ([RnMod] = 0).