Glossary
- petal: structure of TEC
- string: structure of TIB(D)
- rod: structure of TOB
- PSU: Power Supply Unit
- PSC: Power Supply Crate (contains PSU)
PLC Java API
This API will be use to create 3 GUI:
Using this API to access PLC requires a previous configuration of PLC.
Indeed, nothing can be done if data blocks haven't been created especially for Java access.
If you haven't a login name and a password, you can't access PLC with this API.
To use these different interface, all you need is Java installed on your computer.
Interface for expert
This interface is used to inform the database about :
- PLC properties (ip address, port, rack and slot numbers),
- Variables available on each PLC.
The Java API is not essential to send these information to the database, but it can check if data are correct by creating access to PLC and their variables before submitting the values to the database. So, if the access is succesfully created, data can be sent.
PLC Properties:
These information are useful to create an access to a PLC. The different properties are :
- MAC address of the PLC
- IP address of the PLC
- Port (default 80) to access the PLC via web
- Rack number where is connected the PLC
- Slot number where is connected the PLC
- Timestamp (default 5sec) : frequency for reading values
- InitialValidity : first day of validity for this configuration
- FinalValidity : last day of validity for this configuration
PLC Variables
PLC have 4 types of memory blocks but only one can be read/write by Java API (for security reason) : the data blocks.
So to get a value straight from a PLC, data blocks have to be configured by experts to enable access by Java API.
The following description enumerates the parameters of a data block :
- type : data type of variable to be read
- repetition factor : number of variable to be read (for contiguous varaible area read)
- memory area : 0x84 (or 132 in decimal) for DB
- subarea : subarea coding
- byte address : specify a byte offset
- bit address : specify a bit offset
For more information about PLC variables, see the supplement to the documentation of IT-CPs that can be downloaded
here
Screenshots of experimental interface available soon
Interface for shift
This interface is used to inform in
real time the shift user about the state of power supplies linked to the PLC.
The values are read straight in the PLC and plots describe their evolutions.
To access the PLC, useful information are get from the database :
- existing PLC and their properties
- available variables on each PLC
A beta version (As the database part for the PLC is in construction, the beta version of this interface has to be configured manually. Hope first steps for database use will be available soon !) of this interface can be downloaded here. Use it to report bug or make any suggestion to improve it.
Functionalities
Configuration
To allow users to choose the PLC and the variables he wants to monitor, a list of available PLC with its variable is displayed.
Once the selection made, the user has to chosse how many plots he wants on a page. He can also limit the number of pages.
Finally, a frame is created with the list of selected variables and the display of plots can start.
Display: Adding a plot to display
Two way exist to display a plot :
- by double-clicking on the variable name
- by right-clicking on the variable name to show a popup menu, click on "display plot"
When a plot is displayed, a click on it show a popup window with the following information:
- Name of the variable the plot is a representation
- Current value of the variable
- Average value of the variable
- Name of the group the plot is part of (if it is part of one)
- Average value of the group (if it is part of one)
Display: Zoom on a plot:
- If the plot is displayed, double-clicking on it create a new frame with only this plot (maximum size).
- If the plot is not displayed, right-click on the name of the plot, and click on "zoom" menu item of the popup menu.
Another way may be implemented to zoom only on a part of the plot : by drawing a rectangle on the plot.
When a plot is zoomed, it is not displayed in the main frame.
If the
zoom frame is closed, the plot isn't display in the main frame. The user has to choose to do it again.
Display: Creating groups:
Inside the popup menu showed by right-clicking on the list of variables or on a plot, it is possible to create groups of plots.
By clicking on "Create group", a dialog window is created to get the name of the group.
For each existing group, a new frame is created.
As soon as at least one group exist, plots can be added to it as a new menu item is available in the popup menu.
To destroy a group, the frame of the group has to be closed. The plot members are not displayed again in the main frame when the group is closed. The user has to do it by choosing them in the variable list.
Dispaly: Removing a plot from display:
A plot is hidden when a
group frame or a
zoom frame is closed.
But the user can choose to hide one by clicking on "stop displaying plot" in the popup menu (right-click on the variable list or on plots).
Alarm/Warning management
An independant window is in charge of displaying alarm/warning messages.
This window is very important to warn the user if something bad is happening on the tracker.
An acknowledge has to be given by the user for each message, so this window has to be visible as soon as a warning or an alarm is detected.
The plot concerned by this alarm or warning has to be marked to make easier to find it among all plots (red flickering, or anything else flashing).
Interface for common users
This interface is used to inform users about all variables monitored by PLC.
All values are read from the database and plots describe their evolutions.
No access to PLC is required, all information are get from the database:
- existing PLC and their properties
- available variables on each PLC
Functionalities of this interface are the same as the ones of the shift interface.
PLC database
The technology that has been used is OJB for
Mapping Object Relational.
A Tracker view from PLC
Such a view is useful to have a global idea of data to store in the database for PLC.
The following information has to be received only as an
indication.
Inputs for each subdetector :
TOB:
One PLC will be dedicated to monitor sensors for TOB.
Number of possible inputs to the interlock system:
- 1884 for thermistors
- 100 for humidity sensors
Cooling segments are enviasged, so the number of real inputs to the interlock system will be :
- 176 for thermistors (4 per cooling loop)
- 50 for humidity sensors (1 per cooling loop)
In conclusion,
300 inputs are envisaged for the TOB PLC.
TIB/TID:
One PLC will be dedicated to monitor sensors for TIB and TID.
Number of possible inputs to the interlock system :
- 240 for pt1000s (for temperature)
- 120 for humidity sensors
Cooling segments for TID and
56 for TIB are envisaged, with 3 or 4 temperature sensors and 1 humidity sensor (and/or 1 radiation sensor) per cooling loop.
So all the sensors will be used for the interlock system.
All in all,
360 inputs are envisaged for the TIB(D) PLC.
TEC:
Two PLC will be used, and one of them could be transform in PLC master if necessary.
Number of possible inputs to the interlock system :
- 1114 for thermistors
- 100 for humidity sensors
Cooling segments are envisaged, so the number of real inputs to the interlock system will be :
- 150 for thermistors (2 per cooling loop)
- 150 for humidity sensors (2 per cooling loop)
In conclusion,
300 inputs are envisaged for the TEC PLC.
Roughly 1000 analog inputs are envisaged for all PLC.
Outputs for each subdetector:
Assume that a number of 18 PSU will be grouped in one crate.
TOB:
The number of power supply units for TOB is
688.
We end up with roughly 39 PSC, therefore
39 interlock lines are needed for TOB PLC.
TIB/TID:
For TIB,
368 power supply units will be required, and
120 for TID.
Therefore, there will be 28 crates for TIB and TID, in other words there will be
28 interlock lines for TIB(D) PLC.
TEC:
768 power supply units are envisaged for TEC.
So, the number of PSC (i.e. of interlock lines for TEC PLC) needed is
43.
In conclusion, to have a safety margin, roughly 200 digital outputs are envisaged for all PLC.
The disavantage to have an interlock line per PSC, is that shutting down a PSU will mean shutting down the power of modules that belong to more than one cooling segment (i.e modules that have probably no cooling problems).
Another way could have been taken : having an interlock line for each cooling segment.
But with this choice, 2000 digital outputs are required and this is not conceivable.
Additional information:
Control loop-structure distribution
- TIB(D) : on layer 1 and 2, there will be 8 to 10 strings (4 to 5 strings per CCU ring) per cooling loop. On layer 3 and 4, there will be 15 strings (15 strings per CCU ring) per cooling loop.
- TOB : there will be 8 to 20 rods per cooling loop (cf. [1]).
- TEC : each petal will contain 2 cooling loops.
Control loop-sensor distribution
- For the TOB, the thermistors will be disposed into a rod like this :
- 1 on the cooling loop (liquid temperature measurement)
- another 1 on the backplane of module *1 more in the rod for ambiant temperature measurement
- For TIB(D), the pt1000s will be placed on the inlet and outled manifolds of cooling loops.
- For the TEC, the position of the sensors is indicated in [2]
Thermal screen
For the thermal screen, there will be 64 thermistors.
Schema
This Schema represents data needed for PLC:
Tables description
Plc:
Contains all PLC properties.
Fields :
- plcId : primary key. Unique identifier. Auto Increment
- macAddress : MAC Address of the PLC.
- ipAddress : IP address of the PLC
- port : port available for accessing the PLC
- rack : rack where is connected the PLC
- slot : slot where is connected the PLC
- initialValidity : first day of the validity of this configuration
- finalValidity : last day of the validity of this configuration
Variable
Short description:
Contains the properties of configured data blocks of PLC to get values from them (essential for Java API use).
Fields:
- varId : primary key. Unique identifier. Auto Increment
- macAddress : foreign key. Address MAC of the PLC which provide the variable
- varName : name of the variable
- type : data type of the variable to be read
- repetitionFactor : number of value to be read (for contiguous variable area reading)
- memoryArea : 0x84 (or 132 in decimal) for DB (type of DataBlocks memory area)
- subArea : subarea coding
- byteAddress : specify a byte offset
- bitAddress : specify a bit offset
- initialValidity : first day of the validity of this configuration
- finalValidity : last day of the validity of this configuration
Sensor
Short description:
Contains all Sensor properties.
Fields:
- sensorId : primary key. Unique identifier. Auto Increment
- cableId : identifier of the cable which links to the sensor
- powerSupplyRack : rack where is connected the power supply of the sensor
- powerSupplyCrate : crate of the power supply of the sensor
- powerSupplySlot : slot where is connected the power supply of the sensor
- powerSupplyChannel : channel of the power supply where is connected the sensor
- type : type of the sensor
- channelsToCut : channels to cut in case of alarm
- calibrationConstants : calibration constants of the sensor
- InitialValidity : first day of the validity of this configuration
- finalValidity : last day of the validity of this configuration
Configuration
Short description:
Contains information about configuration of a sensor monitored by a PLC.
Fields:
- configurationId : primary key. Unique identifier. Auto Increment
- macAddress : foreign key. Address MAC of the PLC which is concerned by this configuration
- varId : foreign key. Unique identifier of the variable associate to the sensor
- sensorId : foreign key. Unique identifier of the sensor for which this configuration is done
- warningThreshold : if the value of the sensor is too close from the interlock value (bigger or equal to this threshold), a warning message is send
- alarmThreshold : interlock value. If the value of the sensor is bigger or equal to this threshold, interlock of PLC is started
- flags : flags to know the state of the PLC for the sensor
- plcChannel : this configuration is valid for this plc channel
- plcAddress : this configuration is valid for this plc address
- initialValidity : first day of the validity of this configuration
- finalValidity : last day of the validity of this configuration
Readout:
Short descritpion:
Contains the value read from the PLC.
Fields:
- readOutId : primary key. Unique identifier. Auto Increment
- macAddress : foreign key. Address MAC of the PLC which send the readout
- size : number of value read
- data : values (record like this : sensorId:value;sensorId:value...)
- datePLC : date of the read in the PLC
- dateReadOut : date of the read
PLC Tools
Here is the
plcToolsInstallation.sh to get the tools described in the following
documentation.
Another documentation is available
documentation. for more details about PLCSoftware.
Javadoc documentation for Excel converion tool is available
here
.
Javadoc documentation for PLCDatabase tool is available
here
.
Javadoc documentation for ThermalScreen tool is available
here
.
FAQ for PLCSoftware
Authentification prompt doesn't appear when I have to log on PLC with ThermalScreen interface. What do I have to check ?
- First, try to connect on the PLC via web browser: [http://137.138.40.31:80] (replace the ip address by the one of the PLC you want to access). You should arrive on a Siemens web page.
- Then, go on [http://137.138.40.31/examples/GetPut_Applet_JavaScript_en.html]: the authentification prompt should appear. If all of these steps don't work, there is a problem with the PLC. Please notify an expert.
- Try to create a simple access to the PLC with the following code:
import de.siemens.simaticnet.itcp.api.*;
import plcaccess.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class PLCConfiguration {
private PLCKey key;
private final static String ipAddress = "137.138.40.31:80";
private final static int rackNb = 0;
private final static int slotNb = 2;
public PLCConfiguration() {
createAccess();
}
private void createAccess() {
key = PLCStaticHolder.addPLC(ipAddress, rackNb, slotNb);
PLCStaticHolder.addPLCVariable(key, new S7Anypointer(5, 1, 132, 3, 0, 1), "Temp");
}
public static void main(String args[]) {
new PLCConfiguration();
}
}
Put this code in a file name PLCConfiguration.java and put it in PLCSoftware/PLCConfiguration/java/ (don't forget to backup the original PLCConfiguration.java file from this directory).
Compile it (
make in
PLCSoftware/PLCConfiguration) and execute it (
./exec).
If the authentification prompt appears, there is a problem in the software. Please notify an expert. In any other case do the following steps :
- Go in PLCSoftware/ThermalScreen/lib
- Backup s7api.jar
- Connect on PLC via ftp : ftp 137.138.40.31 (user and password you have to use to log on PLC)
- Use the following commands :
- cd applets
- bin
- get s7api.jar
- Compile Thermal Screen software (in PLCSoftware/ThermalScreen dircetory, type "make")
- Lauch it.
If the authentification prompt doesn't appear, the problem should come from the PLC. Please notify an expert.