HERA
-
Upload
vivien-clemons -
Category
Documents
-
view
18 -
download
0
description
Transcript of HERA
1
•Large machine! •(6.3 Km Proton-electron storage ring, collider) •superconducting proton ring, RF cavities => QPS•cryogenic control : ~10,000 “channels”•the “rest”: >10,000 “channels” (>1200 magnet PSCs, ~1000 transient recorders, ~20 warm RF transmitters, 32 collimator jaws, ~1200 vacuum sputter pumps, ~1500 diagnostic monitors, etc.)
HERA
3
Three-fold Integrated Networking Environment
•multi-platform •multi-protocol•multi-architecture
OS IP Stack IPX Stack
DOS LWP /Client32 NOVELL
Win16 WINSOCK NOVELL
Win32 WINSOCK WINSOCKLinux Native BSD Native BSD
Solaris Native BSD -HP-UX Native BSD -
SGI Native BSD -OSF Native BSD -
VAX-VMS UCX -ALPHA-VMS MULTI-NET -
VxWorks Native BSD -
Data Exchange Architecture:•Client-Server•Publisher-Subscriber•Producer-Consumer •Producer-Subscriber
“ansi C - Write once: compile, link, run everywhere!"
TINE
4
client-server : • standard, required for commands, synchronous calls
• scheduled at client -> asynchronous interrupts at server (inefficient)
• easy to program
• clients get what they want
• scalability: the N client problem
publisher-subscriber:• accepted standard
• scheduled at server, efficient
• different modes: poll, send on change, asynchronous calls
• clients get what they want
• harder to program (link tables, etc.)
• scalability: the N client problem pushed back
TINE Architectures
5
producer-consumer:• non-standard - scheduled at server, efficient
• clients get what they’re given
• easy to program
• scalability: no N client problem, no knowledge of clients,
• inefficient?, requires subnet or multicast group
producer-subscriber• non-standard - scheduled at server, efficient
• different modes: poll, send on change, asynchronous calls
• clients get what they want
• harder to program (link tables, etc.)
• scalability: no N client problem, knowledge of existence of clients
• if subnet or multicast group not recognized, fallback to publisher-subscriber
TINE Architectures
6
TINE Features
• Distributed • Object-based (vs channel-based)• Plug-and-Play• Progressively upgradeable• Strong DOOCS influence• Many Systematics (required vs optional)• Flexible (the ‘herding cats’ problem?)• “Do it yourself”
7
self-configuring servers …
or just write the code you need from a "template"
• read configuration database
• get IO addresses, hardware information
• readout instructions
• raw data to finished data (??)
• logical name binding
• how easy is this?
(Servers)
"I don't want to write code!“ vs “Do it yourself!"
8
“I don't want to write code!“ vs “Do it yourself!"
auto-displaying clients …
• widgets query a server for its display properties,
• and display them!
or just write the display code you need
• how easy is this?
I don’t have to
write code!
Yes, but you can’t write code!
(Clients)
9
Many control systems allow both approaches
• Clients typically written in Visual Basic
• Servers written in C, C++, Visual Basic, LabView, HPVEE
• script based display widgets for quick applications
• interfaces to C, C++, LabView, MatLab, HPVEE, ... for more complicated applications
non-users of Visual Basic usually offer …
"I don't want to write code!“ vs “Do it yourself!"
TINE
10
• has a large toolkit (ActiveX controls)
• is a high-level language (not a script).
• has full math library
• EASY to program (hey, it's Basic!)
What about Java ?
• has a large toolkit (Java Beans)
• is a high-level language (not a script).
• has full math library
• VB is still easier to program
Visual Basic …
11
For trivial display applications, the amount of coding in VB is trivial …
Win32 GUI apps in VB
UNIX GUI apps in DDD
Java GUI apps (Symantec Cafe)
TINE GUI Applications …
12
• Server registers name and address with name server upon startup• Clients query (and cache) name server for names and addresses• Persistent timeouts force address (re-)resolution
ServerName : “HEPORBIT”Export Eqp. Modules
“BPMEQM” as “HEPBPM”“BLMEQM” as “HEPBLM”“ALMEQM” as “HEPALM”
ENSIP: 131.169.120.43
Where is “HEPBPM”
What are your Properties?What are your Devices?
…Link to “ORBIT.X”
TINE Plug and Play
14
• C, C++, VB, Java
// TINE Synchronous call (Client-Server)ExecLink(“HEPBPM/WL167”,“ORBIT.X",&dataOut,&dataIn,CA_READ);
Client makes a “contract”: full-duplex data “Link” …
vs
Put(), Get(), PutGet(), Monitor()
// TINE Asynchronous call (Publisher-Subscriber)AttachLink("HEPBPM/WL167","ORBIT.X.HIST",&dataOut,&dataIn, CM_POLL,1000,CA_READ,histCallback);
TINE API
// TINE Asynchronous receive (Producer-Consumer)
recvNetGlobal(“HEMAGEN”,&dataOut,energyCallback);
15
~30 different system data types
• standard set (BYTE, char, short, (int), long, float, double)
• NAME8, NAME16, NAME32, etc.
• FLTINT, LNGINT, DBLINT, NAME16INT, etc.
• INTFLTINT, NAMEFLTINT, FLTFLTINT, USTRING, etc.
• user-defined structures (cross-platform)
TINE Data Types
16
• CM_REGISTER
• CM_ CANCEL
• CM_ SINGLE (just this once)
• CM_ POLL (at regular intervals)
• CM_ REFRESH (send on change)
ORed with
• CM_ BCAST (send to my subnet)
• CM_ MCAST (send to my multicast group)
TINE Data Acquisition Modes
17
TINE Data Access Codes(bit-wise)
• CA_READ (default)
• CA_WRITE (request to change a setting)
(server only:)
• CA_FIRST (coming into scope)
• CA_LAST (going out of scope)
• CA_HIST (called from the local archive server)
18
• unique export name
• one or more instances (device names)
• server-specific properties
• stock properties
• data type and size overloading
TINE Device Servers
19
Property ORBIT.X is registered to give 300 float values• Device name (e.g. WL167) is use to give the starting
location of the orbit. • Can ask for all 300, 10, or only 1 float value of this
property• Can ask for format type CF_FLTINT to get array of
“position-status” pairs, • or CF_NAMEFI to get array of “name-position-status”
triplets.
Data type and size overloading
20
TINE Security• Servers registered with control system database• Clients anonymous • Open Read Access (from anywhere on the net) • Filtered Write Access thru:
• User Name (soft)• Network Address (hard)• Access Lock tokens (very hard)
21
TINE Alarm System
Local Alarm server Alarm API plus local Alarm listsFirst-level filtering
Central Alarm server Collects and filters Alarms Issues post-mortem triggers
(A. Kurakin, V. Soloviev, V. Yarygin - ID: 56)
22
TINE Archive System
Local Archive server
- Short and Long term histories
Central Archive server
- long term
- filter on machine states
- post-mortem events
23
What’s New?
Network subscriptions (Producer-subscriber):
- fine-tune (popular) client programs
-e.g. images over the net (Fedor Solodovnik : ID 141)
24
What’s New?
DOOCS:
- many DOOCS queries, formats
- Local Archive Server a la DOOCS
- TINE can now run in a DOOCS context!
- DOOCS client API
- DOOCS GUI Tools
25
What’s New?
EPICS:
- EPICS2TINE translation layer
- run EPICS on TINE as well as CA
TINE naming services
TINE systematics
make “Composite” properties from channels
26
What’s New?
MKI3: (Wolfgang Gerhardt, et al. ID 124)
- Experience in Producer-Consumer mode
- no clear-cut way to map MKI3 to TINE
- make servers “bi-lingual”
27
All the control systems you know about work!
• So choose one!
• Choose a ‘modern’ one (SCADA, DCOM, CORBA)?
• Choose a ‘mainstream’ one (EPICS, VISTA)?
• Write your own?
sometimes fun or not-so-hard to “re-invent the wheel”,
and at least you get the wheel you wanted!
• Out-source?
28
`Now, here, you see, it takes all the running you can do, to keep in the same place. If you want to get somewhere else, you must run at least twice as fast as that!'
- Lewis Carroll, “Through the Looking Glass”
The Red Queen Syndrome
JAVA, CORBA , …
DCOM, SCADA, ActiveX, …XML, SOAP, C#, .NET, …