I’m preparing a paper for this year’s ICALEPCS with the title: “An EPICS Channel Access Implementation on Siemens PLCs”.
I wrote a PLC code in my free time in TIA portal (SCL) as a library that implements EPICS Channel Access protocol v13. I came up with a way to easily declare PVs directly in the PLC code, so the PLC can talk directly
with CS-Studio, Archiver Appliance, BEST… etc. without an IOC in-between.
The abstract of the paper is the following:
“At the European Spallation Source (ESS), a neutron research facility in Sweden, most of the controls are based on PLCs and layered in the following (traditional) way: field equipment <-> PLC <-> EPICS IOC <-> high-level
applications. In many situations, the EPICS IOC layer will not implement control logic per se and is only used for converting PLC tags into EPICS PVs to enable the usage of high-level applications such as CS-Studio, Archiver Appliance, and BEAST. To alleviate
this (traditional) way of doing controls, we propose a simpler approach: implementation of the Channel Access (CA) protocol in the PLC layer for the latest family of Siemens PLCs to remove the EPICS IOC layer. We called it S7EPICS. S7EPICS fully respects version
13 of the CA protocol specification, and supports multiple EPICS-based client connections at the same time - e.g. CS-Studio, Archiver Appliance - without a noticeable service degradation (i.e. delays). In this paper we introduce this implementation, its architecture
and workflow, benchmarking results of tests performed, and future developments that could be pursued such as authentication & authorization mechanisms using, e.g., the Arrowhead Framework.”
I’m currently testing the S7EPICS PLC code with CS-Studio, Archiver Appliance and BEST on a real cryogenics scenario. It works well so far.
If you have any suggestion how to test it further or what kind of stress-test should I perform, please don’t hesitate to tell me. If you know any real-life scenario when this EPICS<->PLC communication could be useful,
please send me.
If the code is done it will be a public open EPICS community code.