Configuration rules
A record of the rules for the various parts of a configuration.
Configurations
A configuration can contain multiple components
A configuration cannot contain other configurations
A configuration can be converted to a component only if it does not contain any components
Blocks
Blocks are uniquely named and case is ignored (i.e. Block1 is the same as BLOCK1)
Block names can only include alpha-numeric chars and ‘_’, and must start with an alpha-numeric char
Blocks must not be named “lowlimit”, “highlimit”, “runcontrol” or “wait”
Blocks do not know which group they are in
Blocks can only belong to one group
Blocks know which component they are in with null (None in Python) meaning they are not in a component
If a block appears more than once in a configuration the subsequent occurrences are ignored (raise warning)
If a block is duplicated in a component then the component instance is ignored (raise warning)
If a block appears in multiple component the first one read is used, the rest are ignored (raise warning)
Groups
Groups are for grouping and ordering how the blocks are displayed in GUIs
Groups are uniquely named and case is ignored (i.e. Group1 is the same as GROUP1)
Group names can only include alpha-numeric chars and ‘_’, and must start with an alpha-numeric char
If a block listed in a groups does not exist it is removed from the group (raise warning)
Empty groups are not saved
Groups defined in the configuration can include blocks from components
If a group is in the configuration and component then the order of blocks is configuration then component.
Any duplicate blocks in the component are ignored (raise warning)
Components
Components cannot contain other components
A component group cannot contain blocks that are not in that component
When a component is loaded as part of a configuration its IOCs are started if they are not already started
Components cannot be loaded on their own, they can only be loaded as part of a configuration
IOCs
IOC macros are loaded from the configuration using icpconfig.
If an IOC’s macros or pvsets changes then restart the IOC on a configuration change
It should be possible to force IOCs to restart on a configuration change even if the macros or pvsets have not changed
An IOC is only included in a configuration/component if its auto-start setting is true