You are on page 1of 24

The CMS Pixel PLC Code

Christian Veelken
UC Davis
last updated

03/05/08

The CMS Pixel PLC Code

Mission
The purpose of the Pixel PLC Code is to ensure a safe
Operation of the CMS Forward and Barrel Pixel Detectors
in all Circumstances.
To be a bit more specific, the two main Tasks of the Code are:
continuously monitor the Temperature and Humidity values
measured by Pt1000 RTD and HMX Sensors mounted within
the Volume of the Pixel Detector
react to Conditions that represent a Danger for the Safety
of the Pixel Detector by switching-off (Interlocking) the
CAEN Power Supplies

The CMS Pixel PLC Code

The CMS Pixel Detector

CMS Detector

3 Barrel Layers (BPix)


r=4.3, 7.2 and 11 cm
672 Full-Modules and 96 Half-Modules
11528 ROCs, 48 Million Pixels
Total area 0.78 m2
Disks

Diameter: 15m
Length: 21.60m

Heart of the CMS


Tracking System
Barrel

4 Endcap Disks (FPix)


z=34.5 and 46.5 cm
(inner Radius ~ 6 cm away from Beam Line)
96 Blades with 672 Plaquettes
4320 ROCs, 18 Million Pixels
2
Total area 0.28 mThe
CMS Pixel PLC Code

CMS Pixel PLC System


Commercial Siemens S7-300 System:
1 CPU 315-DP2
1 Ethernet Module
4 Relay Modules
(32 Channels for Interlock Lines)

1 Analog Input Module


(8 Channels for HMX Humidity Sensors)

1 Digital Input Module


(16 Channels for Status Information
provided by non-Pixel Safety Systems)

32 RTD Modules
(256 Channels for Pt1000 RTD Temperature Sensors)

4 Profibus DP Communication Modules,


which interconnect the 5 Crates
The CMS Pixel PLC Code

CMS Pixel PLC Code


56 Functions (FC)
about 2000 (estimated) Lines of Code,
written in the Pascal-like Siemens Programming Language
Structured Control Language (SCL)
3 Organization Blocks (OB)
that implement the cyclically executed Main Program,
some special Initialization, which is executed once
at every PLC Start-up, and a Timer Interrupt that is executed
once every 100ms
50 Data-Blocks (DB)
which store Configuration Parameters, Process Values
and Status Information and which are based on:
44 user-defined Data Types (UDT)
The CMS Pixel PLC Code

Graphical User Interface


The Implementation of the Graphical User Interface is based
on the commercial SCADA1 Software
Process Visualisierungs und Steuerungs System (PVSS)
1

Supervisory Control and Data Acquisition

PVSS is used to:


retrieve Configuration Parameters from an Oracle Data-Base
visualize Process Values and Status Information
implement a Finite State Machine (FSM), which allows for a
convenient Operation of the whole CMS Detector
The Data-Blocks in the PLC are interfaced to PVSS Data-Points
by means of a native Siemens S7-Driver developed at CERN
N.B.: PVSS is also used to monitor and control the CAEN Power Supplies

The CMS Pixel PLC Code

Lets have a look at the PLC Code


in a bit more Detail now...

The CMS Pixel PLC Code

Functions (FC)
The 56 Functions may be classified by the Functionality
that they implement into different Groups:
19
8
4

6
19

Functions that handle the Upload of Configuration


Parameters and Operator Commands from PVSS into the PLC

Functions that read Process Values from the Digital Input,


Analog Input and RTD Modules and process them
Functions that read Diagnostics Information describing the
Status of the PLC System as a whole
Functions that evaluate Interlock Conditions and open/close
Relays accordingly
auxiliary Functions, which implement specific Functionality
needed by other Funtions

The CMS Pixel PLC Code

Organization Blocks (OB)


There are 3 Organization Blocks defined in the Pixel PLC Code:
OB 1
the Main Program, which is executed endlessly by the
Operating System of the PLC
OB 35
a Timer Interrupt, which is executed every 100ms and
generates a Heart-Beat Signal, indicating that the PLC is
running
OB 100
a Start-up Routine for Initialization of Data-Blocks, that is
executed every Time the PLC is started/re-started

The CMS Pixel PLC Code

Data-Blocks (DB)
Like the Functions, the 50 Data-Blocks may be classified into
different Groups, depending on the Type of Data they store:
10

Data-Blocks that store Configuration Parameters and Operator


Commands uploaded by PVSS

Data-Blocks that store the Configuration Parameters actually in use by


the PLC

10

Data-Blocks that store the Operator Commands actually processed by


the PLC

Data-Blocks that store the Process Values from the Digital Input, Analog
Input and RTD Modules

Data-Blocks that store Diagnostics Information

Data-Blocks that store the Status of Interlocks and of the Relays

Data-Blocks that store global Constants, States and Operator


Commands issued via the PVSS Graphical User Interface

N.B.: The Upload Data-Blocks allow to check all Configuration Parameters before they get used by the PLC

The CMS Pixel PLC Code

10

User-defined Data Types (UDT)


The 50 Data-Blocks are defined in terms of 44 user-defined
Data Types.
The Advantage of using user-defined Data Types is that:
Definitions of Data-Structures can be re-used for different DataBlocks
Block-Transfer Commands can be used when transfering
Information from one Data-Block to another
Like the Functions and Data-Blocks, the user-defined Data
Types may be classified into different Groups.
As you might have guessed, there is actually a close
Correspondence between the different Groups of Functions,
Data-Blocks and user-defined Data Types.

N.B. In C++ Language, the user-defined Data Types are like Classes and the
Data-Blocks like Instances of those Classes.
The concept of user-defined Data Types maps well to the concept of DataPoint Types, that are defined in PVSS.

The CMS Pixel PLC Code

11

Data-Flow
Settings
Configuration Parameters
actually processed by PLC
DB 10x

Operator
Commands

Relay
Actions

DB 20x

DB 304

Readings
(Process Values and
Status Information)
DB 40x

BLKMOV

DB 60x
PVSS Upload
Configuration Parameter
and Operator Commands
S7 driver
PVSS

Oracle

Configuration DB

Configuration Parameters

PIW

Temperature, Humidity
Sensors

Digital Inputs

Relay Digital Outputs

DB 35

PLC Heart-Beat

DB 51

PLC Frontpanel LEDs

DB 52

Relay, Profibus Module Diagn.

DB 59

AI, RTD, DI Module and


Channel Diagnostics

S7 driver

PVSS

Conditions DB

Oracle

Process Values, Status Information and


read-back Configuration Parameter

The CMS Pixel PLC Code

12

Main Program Cycle (I)


Handle Configuration Parameters uploaded by PVSS

propagate

1: FC 1116 computeCRC16CheckSum
2: FC 1000 checkDataBlockHeader
3: FC 1600 checkChannelAddress
4: FC 1110 isEven
5: FC 1601 checkIlkSensorMask
6: FC 1602 checkIlkRelayMask
1,2,3,4

1,2
1,2,3,4
1,2

1,2
1,2

5,6

1,2,3

1,2,3

global Transfer Request issued by Operator to individual Data-Blocks

The CMS Pixel PLC Code

13

Main Program Cycle (II)


Handle Commands issued by Operator via PVSS Graphical User Interface

The CMS Pixel PLC Code

14

Main Program Cycle (III)


Hande Operator Commands issued by PVSS Graphical User Interface

open/close all Relays


reset all Interlocks

(provided the Conditions that triggered


them are not fullfilled anymore)

clear all Alarms


(provided the Alarm Conditions
are currently not fullfilled)

1: FC 1200 readPushButtonStatus

The CMS Pixel PLC Code

15

Main Program Cycle (IV)


Read System Diagnostics Information

Wire-breaks, Module Errors,


summarized Status Information for Analog
and Digital Input, RTD, Relay Digital Output
and Profibus DP Communication Modules
1

PLC Status

Detailed Diagnostics Information for


Analog Input, Digital Input and RTD Modules
2

Check for PLC Errors


and Problems with Profibus DP Connections

1: FC 1052 unpackBits
2: FC 1421 testBit

The CMS Pixel PLC Code

16

Main Program Cycle (V)


Read Process Values, process Diagnostics Information

1,2,3,6,7
1,2,3
1,2,3,6,7
1,2,3
1,2,3,6,7
1,2,3,4,5
1
1: FC 1116 computeCRC16CheckSum
2: FC 1400 computeAlarmStatus
3: FC 1401 computeDurStateNotOk
4: FC 1411 computeHumidity
5: FC 1412 computeDewPoint
6: FC 1420 unpackModuleStatusBits
6: FC 1421 testBit

The CMS Pixel PLC Code

17

Main Program Cycle (VI)


Evaluate Interlock Conditions, open/close Relays

Interlocks based on RTD Temperature


and HMX Humidity Sensors

Interlocks based on Digital Inputs


global KILL Request issued by Operator,
severe Configuration Parameter Error
open/close Relays,
depending on Interlock Conditions

The CMS Pixel PLC Code

18

Main Program Cycle (VII)


Read Status of Relays

for Display by PVSS only

The CMS Pixel PLC Code

19

Main Program Cycle (VIII)


Set Date and Time of PLC System

The CMS Pixel PLC Code

20

Honorable Mention
FC 6666

auxiliary Function to initialize Configuration Parameters;


called from OB 100 in case PLC Code runs stand-alone,
i.e. without Connection to PVSS

Only used for Testing !!

The CMS Pixel PLC Code

21

Summary
The CMS Pixel PLC Code consists of about about 2000
(estimated) Lines of Code, written in the Pascal-like Siemens
Programming Language SCL
The main Objective of the Code is to interlock the CAEN Power
Supplies providing the High and Low Voltages for the
Operation of the Pixel Detector,
based on the Process Values of 256 RTD Temperature and 8
HMX Humidity Sensors mounted within the Volume of the Pixel
Detector
The Pixel PLC Code provides a high Degree of Adaptability;
its run-time Behavior can be changed to a large Extent
by uploading Configuration Parameters from PVSS into the PLC
(the latter Feature has been taken from the PLC Code developed by
the CMS Silicon Strip Tracker DCS Group see Acknowledgements )

The CMS Pixel PLC Code

22

Apologies
The Pixel PLC Code Code has been ready for Review
since January 25th.
When I started working on the Graphical User Interfaces for
PVSS Data-Points associated to the PLC System,
I realized that I wanted to extend the Code I had developed
by January 25th, in order to improve the Handling of:
Access Control
Errors present in Configuration Parameters
So, I went ahead and modified the PLC Code.
The Information presented in this Talk is up-to-date.
I might have overlooked outdated Information in the more
detailed MS-Word Documentation at a few Places, however.
Sorry !!

The CMS Pixel PLC Code

23

Acknowledgements
I would like to thank
Andromachi Tsirou and Piero Giorgio Verdini
from the CMS Silicon Strip Tracker DCS Group
for kindly providing their PLC Code,
which has been used as Basis for the Development
of the Pixel PLC Code
- and for answering quite a few Questions
concerning their Code !!

The CMS Pixel PLC Code

24