1 EPICS/MDSplus Interface Methods Paul Sichta, NSTX Project in collaboration with Mikyung Park, KSTAR Project Gabriele Manduchi, RFX Project EPICS Collaboration Meeting June 2-4, 2010 Aix-en-Provence, France Culham Sci Ctr U St. Andrews York U Chubu U Fukui U Hiroshima U Hyogo U Kyoto U Kyushu U Kyushu Tokai U NIFS Niigata U U Tokyo JAERI Hebrew U Ioffe Inst RRC Kurchatov Inst TRINITI NFRI KAIST ENEA, Frascati CEA, Cadarache IPP, Jülich IPP, Garching ASCR, Czech Rep U Quebec College W&M Colorado Sch Mines Columbia U Comp-X General Atomics INEL Johns Hopkins U LANL LLNL Lodestar MIT Nova Photonics New York U Old Dominion U ORNL PPPL PSI Princeton U SNL Think Tank, Inc. UC Davis UC Irvine UCLA UCSD U Colorado U Maryland U Rochester U Washington U Wisconsin Supported by Office of Science
Office of Science. Supported by. EPICS/MDSplus Interface Methods. Paul Sichta, NSTX Project in collaboration with Mikyung Park, KSTAR Project Gabriele Manduchi, RFX Project EPICS Collaboration Meeting June 2-4, 2010 Aix-en-Provence, France. College W&M Colorado Sch Mines Columbia U - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1
EPICS/MDSplus Interface Methods
Paul Sichta, NSTX Projectin collaboration with
Mikyung Park, KSTAR ProjectGabriele Manduchi, RFX Project
Engineering used EPICS and Physics used MDSplus Separate organizational units were implementing each framework
Both frameworks were being deployed for the first time at PPPL.
Both were “free” and “open source”.
As machine operations matured the benefits of integration became apparent.
The organizational units were unified
EPICS/MDSplus Interface Methods at NSTX
Use a client that speaks both EPICS and MDSplus C programs (on Unix) calling both EPICS CA and
MDSplus libraries IDL using EZCA_IDL for EPICS and community-
developed IDL functions for MDSplus Unix shell scripts
Client
New EPICS records were prototyped in 2005, but never matured into production (Mastrovito, 5th IAEA TM on Control, Data Acquisition…)
» Performance was poor
» A low-priority project
EPICS/MDSplus Interface Methods at KSTAR
From Linux IOC
– IOC "C" code
– Sequencer Program Using dual-client method on Linux
– IDL using EZCA_IDL
– Matlab using MCA
New EPICS/MDSplus Interface Methods are in Development
NSTX will resume and expand the scope of the 2005 effort;
C-based MDSplus records on a Linux IOC.
Now, collaborate
RFX (Manduchi) has developed EPICS records for MDSplus .... see his presentation.
C++ MDSplus records on a Linux IOC.
EPICS/MDSplus Interface plans at KSTAR
1) To transfer and store MDSplus data to the tree in run-time during shot for supporting the long pulse (300 seconds) experiments.
– MDSplus segmented records
2) In KSTAR, the machine operational data generated continuously at low rate is archived using EPICS channel archiver and the pulse-based experimental data is archived using MDSplus.
Some users want to see plasma data in conjunction with machine operational data.
Develop other EPICS/MDSplus interfaces ?
CSS plug-ins for MDSplus to duplicate functions provided by MDSplus-native tools:
– Traverser
– Scope (waveform plots)
– Event & Data I/O (put/get)
– “ArchiveViewer” for Channel Archiver (from MDSplus data pool)
EPICS & MDSplus provide a Python API.
Subroutine record.
– MDSplus runs on vxWorks ... at least partially. MDSplus supports a Java API, RFX has expertise in this area; the
EPICS Java IOC is maturing .... some synergy here?
Code Snippets
The following code has been modified from its original version. It has been formatted to fit this presentation, to run in
int mdsPutStart;%% int i;%% int j;%% char buf[50];%% char buf1[50];float wfData[8][30000];float timeWf[30000];float trigTime;float nuData[5];%% int noBuf_temp;%% float samRate_temp;string treeSigNode[8];string treeNuNode[5];string errorMsg;
assign wfData to {"ECH:NI:DAQ:AI00","ECH:NI:DAQ:AI04","ECH:NI:DAQ:AI07"};assign treeSigNode to {"ECH_VC","ECH_VB","ECH_IB","ECH_IA","ECH_VFWD2","ECH_VREF2"};assign mdsPutStart to "ECH_DATA_MDS_PUT";%% /* assign mdsIp to "ECH_MDS_IP"; */%% /* assign mdsTree to "ECH_MDS_TREE"; */assign trigTime to "ECH_LTU_T0_p0";
monitor wfData;monitor nuData;monitor treeSigNode
includes
variable declarations and EPICS
record assignements
Sequencer (KSTAR) (2 of 2)
ss mdsDataPut {state data_put {
when (mdsPutStart==1) {
%% idesc = descr(&dtypeLong, &tstat, &null);%% printf("No Buff : %f and Sam Rate : %f \n",nuData[0], nuData[1]);%% socket = MdsConnect(MDS_SERVER);