<?xml version="1.0" encoding="UTF-8"?>
<xml>
  <records>
    <record>
       <contributors>
          <authors>
             <author>Schofield, B.</author>
             <author>Blanco Viñuela, E.</author>
             <author>Borrego, J.H.P.D.C.</author>
          </authors>
       </contributors>
       <titles>
          <title>
             Continuous Integration for PLC-based Control System Development
          </title>
       </titles>
       <publisher>JACoW Publishing</publisher>
       <pub-location>Geneva, Switzerland</pub-location>
		 <isbn>2226-0358</isbn>
		 <isbn>978-3-95450-221-9</isbn>
		 <electronic-resource-num>10.18429/JACoW-ICALEPCS2021-TUPV035</electronic-resource-num>
		 <language>English</language>
		 <pages>478-483</pages>
       <keywords>
          <keyword>PLC</keyword>
          <keyword>controls</keyword>
          <keyword>interface</keyword>
          <keyword>SCADA</keyword>
          <keyword>hardware</keyword>
       </keywords>
       <work-type>Contribution to a conference proceedings</work-type>
       <dates>
          <year>2022</year>
          <pub-dates>
             <date>2022-03</date>
          </pub-dates>
       </dates>
       <urls>
          <related-urls>
              <url>https://doi.org/10.18429/JACoW-ICALEPCS2021-TUPV035</url>
              <url>https://jacow.org/icalepcs2021/papers/tupv035.pdf</url>
          </related-urls>
       </urls>
       <abstract>
          Continuous Integration and Continuous Deployment (CI/CD) is a software engineering methodology which emphasises frequent, small changes committed to a version control system, which are verified by a suite of automatic tests, and which may be deployed to different environments. While CI/CD is well established in software engineering, it is not yet widely used in the development of industrial controls systems. However, the advantages of using CI/CD for such systems are clear. In this paper we describe a complete CI/CD pipeline able to automatically build Siemens PLC projects from sources, download the program to a PLC, and run a sequence of tests which interact with the PLC via both a Simulation Unit Profibus simulator and an OPC UA interface provided by Simatic NET. To achieve this, a gRPC service wrapping the Simatic API was used to provide an interface to the PLC project from the pipeline. In addition, a Python wrapper was created for the Simulation Unit API, as well as for the OPC UA interface, which allowed the test suite to be implemented in Python. A particle accelerator interlock system based on Siemens S7-300 PLCs has been taken as a use case to demonstrate the concept.
       </abstract>
    </record>
  </records>
</xml>
