1 line
13 KiB
JSON
1 line
13 KiB
JSON
{"config":{"separator":"[\\s\\-_,:!=\\[\\]()\\\\\"`/]+|\\.(?!\\d)"},"items":[{"location":"","level":1,"title":"EPICS Training at PSI","text":"","path":["Home","EPICS Training at PSI"],"tags":[]},{"location":"#epics-training-at-psi","level":1,"title":"EPICS Training at PSI","text":"<p>This page is the starting page to enable you to navigate the different sections of EPICS Training content.</p> <p>You will find</p> <ul> <li>Anouncements of presentations and on-site trainings</li> <li>Tutorials that allow you to learn at your own pace</li> <li>Guides with step-by-step reciepes to solve your problems yourself</li> <li>Reference guides and links to further documentation of drivers</li> <li>Explanations about concepts and setups to allow you a in-depth understanding</li> </ul> <p>All provided material is optimised for the PSI setup of EPICS. If you are looking for more general documentation, please go to https://docs.epics-controls.org/en/latest/</p>","path":["Home","EPICS Training at PSI"],"tags":[]},{"location":"#what-is-epics","level":2,"title":"What is EPICS?","text":"<p>EPICS is a distributed control system (Wikipedia: https://en.wikipedia.org/wiki/Distributed_control_system) used to control accelerators and experiments at PSI. EPICS is the abbreviation of \"Experimental Physics and Industrial Control System\".</p> <p>The basic components of an EPICS system are:</p> <ul> <li>IOCs: Input-Output-Controller that communicate with dedicated hardware devices like motor controllers or power supply controllers, with the Clients, and with each other.</li> <li>Client Servers and Consoles running various client applications</li> <li>The network protocol used to communicate usin a Local Area Network (LAN). The default protocol is called Channel Access. Other protocols are possible and in the future the default might change to pvx.</li> </ul> <p></p> <p>A simple EPICS system consists of at least one IOC and one Client computer connected by a LAN. Theoretically an IOC and a Client can even run on the same computer. But EPICS was designed for large distributed systems and such small systems might be too heavy to set up and maintain. Other solutions like LabView or a direct programmed controller might be easier. A rule of thumb could be: if all my hardware is cabled to the same computer, I do not need to bother with EPICS.</p>","path":["Home","EPICS Training at PSI"],"tags":[]},{"location":"anouncements/","level":1,"title":"Anouncements","text":"","path":["Home","Anouncements"],"tags":[]},{"location":"anouncements/#presentations-and-trainings","level":1,"title":"Presentations and Trainings","text":"<p>Currently no trainings and presentations are planned. If you are interested in a presentation for your group, please contact Elke Zimoch elke.zimoch@psi.ch</p>","path":["Home","Anouncements"],"tags":[]},{"location":"explanation/","level":1,"title":"EPICS Training at PSI","text":"","path":["Explanations","EPICS Training at PSI"],"tags":[]},{"location":"explanation/#explanations","level":1,"title":"Explanations","text":"<p>Here belongs all the explanations and overview topics that provide you with a deeper understanding how EPICS is used at PSI.</p> <p>There are two types of pages in this part:</p> <ul> <li>General EPICS expanations</li> <li>PSI specific topics</li> </ul>","path":["Explanations","EPICS Training at PSI"],"tags":[]},{"location":"explanation/EPICS-Hosts/","level":1,"title":"What is an EPICS IOC Host","text":"<p>Some Text</p> <p></p>","path":["Explanations","What is an EPICS IOC Host"],"tags":[]},{"location":"explanation/EPICS-IOC/","level":1,"title":"What is an EPICS IOC","text":"<p>What is an IOC?</p> <p>IOC is the abbreviation for Input-Output-Controller. In an EPICS system an IOC acts at the same time as a server, that collects and processes input and output data, and as a client, that might connect to other IOCs and communicate with them.</p> <p></p>","path":["Explanations","What is an EPICS IOC"],"tags":[]},{"location":"reference/","level":1,"title":"EPICS Training at PSI","text":"","path":["References","EPICS Training at PSI"],"tags":[]},{"location":"reference/#references","level":1,"title":"References","text":"<p>You will find here links to external and internal reference pages.</p> <p>Official EPICS documentation</p>","path":["References","EPICS Training at PSI"],"tags":[]},{"location":"stepbystep/","level":1,"title":"EPICS Training at PSI","text":"","path":["Recipes and Guides","EPICS Training at PSI"],"tags":[]},{"location":"stepbystep/#step-by-step-guides","level":1,"title":"Step-by-Step Guides","text":"<p>Here you will find recipes to solve standard problems in a standard way.</p>","path":["Recipes and Guides","EPICS Training at PSI"],"tags":[]},{"location":"tutorials/","level":1,"title":"EPICS Training at PSI","text":"","path":["Tutorials","EPICS Training at PSI"],"tags":[]},{"location":"tutorials/#tutorials","level":1,"title":"Tutorials","text":"<p>Here belongs all the hands on material. Check out test IOCs and build caQtDM planels</p>","path":["Tutorials","EPICS Training at PSI"],"tags":[]},{"location":"tutorials/caClientLessons/","level":1,"title":"Lessons on Channel Access Client Programming","text":"<p> - OLD and maybe Obsolete - </p> <p>Written by Dirk Zimoch dirk.zimoch@psi.ch</p> <p>This lessons should qualify a C-programmer to make efficient use of the Channel Access client libraries and to write his/her own EPICS client applications in C. Special attention is directed to network traffic and possible pitfalls.</p> <p>This tutorial is not yet complete. Whenever I have some time, I will add more lessons.</p>","path":["Tutorials","Lessons on Channel Access Client Programming"],"tags":[]},{"location":"tutorials/caClientLessons/#contents","level":2,"title":"Contents","text":"<ul> <li>Audience</li> <li>References</li> <li>Lessons<ul> <li>caLesson 1 - simple read access</li> <li>caLesson 2 - getting more infos from EPICS</li> <li>caLesson 3 - channel access data types</li> <li>caLesson 4 - monitors and version differences</li> <li>caLesson 5 - write and wait</li> </ul> </li> </ul>","path":["Tutorials","Lessons on Channel Access Client Programming"],"tags":[]},{"location":"tutorials/caClientLessons/#audience","level":2,"title":"Audience","text":"<p>The lessons are directed to all users of EPICS who want to write their own Channel Access client applications in C. They are recommend for all programmers who are new to Channel Access, not only to members of the PSI controls section.</p> <p>You should be experienced with C. I will not try to explain how the C compiler, preprocessor, or linker works and what Makefiles are. If this is new to you, I recommend to get some programming practice first. For some lesson, experience with multi-threading is recommended.</p> <p>If you don't have experience with EPICS yet, you should participate in some EPICS trainig, here at PSI or at some other EPICS site. I expect that you know what the terms IOC, record and processing mean in the EPICS world.</p> <p>Obsolete! Experience with medm or other existing Channel Access clients is also helpful.</p>","path":["Tutorials","Lessons on Channel Access Client Programming"],"tags":[]},{"location":"tutorials/caClientLessons/#references","level":2,"title":"References","text":"<p>See the EPICS home page https://epics-controls.org/ for everything about EPICS. And the documentation page https://docs.epics-controls.org/en/latest/ for references. Especially read the chaper about Channel Access.</p> <p>Obsolete! Today, two major releases of Channel Access are in use: R3.12 (which is still used in EPICS release R3.13) and R3.14. On the EPICS home page you can find the (very thin) EPICS R3.12 Channel Access Reference Manual and the much more detailled EPICS R3.14 Channel Access Reference Manual.</p> <p>APS provides many lectures in their Getting Started with Epics series. You should definitely read the Introduction to Channel Access Clients provided there.</p> <p>Obsolete? Much valueable information can be found in header files. If you work at a standard SLS Linux PC, have a look at:</p> <p>/usr/local/epics/base/include/cadef.h</p> <p>Otherwise find this file in your local EPICS installation.</p>","path":["Tutorials","Lessons on Channel Access Client Programming"],"tags":[]},{"location":"tutorials/caClientLessons/#lessons","level":2,"title":"Lessons","text":"<p>The lessons are provided in the gitea repository https://gitea.psi.ch/epics_training/caClientLessons. </p> <p>Check it out anywhere in your home directory. Each lesson is in its own directory. The lesson itself is contained in the comments in the C files. Read them carefully. Some lessons contain README files. Read them first.</p> <p>The provided Makefiles are tailored to the SLS installation of EPICS. It should not be too difficult to modify them for other installations. You may use them as a starting point for your own Channel Access clients.</p> <p>Obsolete! The environment variable <code>EPICS_HOST_ARCH</code> must be defined. I have tested all programs on Scientific Linux 3, where we have <code>EPICS_HOST_ARCH=SL3-x86</code> at the SLS. Other installation will most probably use different values.</p> <p>The used record names exist at the SLS. If you are in the machine network or in a beamline network, you will see real life data. From the SLS office, you will either see simulations or you can connect to the machine network with the <code>cam</code> command. In some lessons, we will write to records. Depending on the relative location of you and the record, you may be allowed to write to real components of the machine! This is not a game!</p> <p>If you are not at SLS, you should change the record names so something which exists at your site. Probably use a so called softioc to provide some records to play with.</p>","path":["Tutorials","Lessons on Channel Access Client Programming"],"tags":[]},{"location":"tutorials/caClientLessons/#lesson1","level":3,"title":"caLesson1","text":"<p>This lesson shows how to write a very simple CA client program. It connects to some channels, reads them, prints them and exits.</p>","path":["Tutorials","Lessons on Channel Access Client Programming"],"tags":[]},{"location":"tutorials/caClientLessons/#lesson2","level":3,"title":"caLesson2","text":"<p>Here you will learn how to read more than a bare number from a channel. This is very useful to format a value correctly or to know the physical units of a value. In fact, it is this additional information that makes the difference between a value and a bare number.</p> <p>You will also see one way to get your data a bit more structured. There are many ways to achive the same result, of course. You should know how macros work in C to understand this lesson.</p>","path":["Tutorials","Lessons on Channel Access Client Programming"],"tags":[]},{"location":"tutorials/caClientLessons/#lesson3","level":3,"title":"caLesson3","text":"<p>In this lesson, you will learn about different data types in Channel Access. You will also see the difference between \"static\" and \"dynamic\" data of a channel and how use this to reduce network traffic when reading data repeatedly.</p>","path":["Tutorials","Lessons on Channel Access Client Programming"],"tags":[]},{"location":"tutorials/caClientLessons/#lesson4","level":3,"title":"caLesson4","text":"<p>This lesson introduces \"monitors\". When you install a monitor, a user-defined callback function is called by the Channel Access library whenever a channel has new values available. This is much more \"network friendly\" than high rate polling.</p> <p>Obsolete? You will also see the differences beween the Channel Access APIs of EPICS R3.13 and R3.14. In R3.14, you can still use the R3.13 API and Channel Access clients written for EPICS R3.13 should work without modifications with EPICS R3.14. Anyway, to be able to understand other people's code, you should know both flavours and only R3.14 is designed for multi-threading.</p>","path":["Tutorials","Lessons on Channel Access Client Programming"],"tags":[]},{"location":"tutorials/caClientLessons/#lesson5","level":3,"title":"caLesson5","text":"<p>In this lesson we will write to a device for the first time. We will use a \"put-wait\" method, that does not return before the device has understood and executed the written value. This method is best suited for GUI-less programs which can block. (In later lessons, we will learn a different way to write values.)</p> <p>After the value is written, we will wait unil the device has finished using a monitor on a done flag. This is much more efficient than polling a done flag in a loop.</p>","path":["Tutorials","Lessons on Channel Access Client Programming"],"tags":[]},{"location":"tutorials/caClientLessons/#lesson6","level":3,"title":"caLesson6","text":"<p>An unfinished work in progress.</p>","path":["Tutorials","Lessons on Channel Access Client Programming"],"tags":[]},{"location":"tutorials/cooler_simulation/","level":1,"title":"Tutorial Collection using the Cooler Simulation","text":"<p>This collection contains tutorials about</p> <ul> <li>How to create your own caQtDM display</li> <li>How to create your own IOC with template file, substitution file, and startup script</li> </ul>","path":["Tutorials","Tutorial Collection using the Cooler Simulation"],"tags":[]}]} |