Header

Controls Software Engineer

Our group in the Instrumentation and Controls Division (ICD) at SLAC is responsible for the controls for all accelerators and many test facilities. We utilize a heterogeneous control system comprised of VME, PCI, and xTCA single board computers running RTEMS and Linux RT as well as processes running on Linux servers. Our primary mission is to support the Linac Coherent Light Source (LCLS I), which began in 2009 as the world's first x-ray free-electron laser, producing ultra-fast pulses of coherent x-rays with unprecedented brightness.  In the last few years our mission has expanded to include state of the art controls for FACET, Accelerator Test Facilities, and most recently to include LCLS II - another new accelerator based on LCLS I.  The software controls are divided into subsystems which include global timing, machine protection, fast feedback, beam position monitors, RF, laser, motors, vacuum, magnet, cameras, temperature, as well as other diagnostic devices and instruments. We are responsible for the complete 3-tier signal chain from controllers (controlling and reading out custom or commercial sensors) to middleware control processes (alarm handling, archiving, configuration and other services) to client Graphical User Interfaces (GUIs).  The software framework used for controls is the open-source EPICS (Experimental Physics and Industrial Controls System) toolkit. Additionally, C/C++, java, MATLAB, Python, and other scripting languages are used. An Oracle database maintains configurations, logging data, and models for optics.
Under general supervision, the Controls Software Engineer provides technical and engineering support for the operating accelerators and test facilities. The successful Controls Software Engineer will develop, upgrade, configure, and maintain distributed software real-time control, data acquisition, and monitoring systems for aforementioned accelerator subsystems and instruments. Initially, the candidate will work closely with other engineers to learn specific control implementations, applications, configurations, and best practices, while maintaining and upgrading subsystems assigned. After gaining the necessary expertise, the Controls Software Engineer will have an increasing role in special projects, including requirements gathering, design, implementation, test, integration, machine commissioning, documentation and graphical user interfaces (GUIs).  This position has a multi-disciplinary role, teaming with software and hardware engineers, accelerator physicists, operators, and project managers alike. Effective communication skills are a key component of the job.
Specific responsibilities include but are not limited to the following duties:
  • Maintain and enhance existing Controls subsystems;
  • Day to day operational support;
  • Interface effectively with operations and accelerator physicists;
  • Work collaboratively with other team members and management;
  • Perform troubleshooting, diagnostics analysis and provide corrective action proactively;
  • Configure and write EPICS software control applications and user interfaces;
  • Write and maintain documentation;
  • Design and develop new control software, including software interfaces to hardware;
  • Responsible for occasional 24/7 support for subsystems assigned;
  • Perform responsibility with a level of accountability commensurate with the seniority of the position.
  • Accountable for understanding and ensuring compliance with the safety regulations and quality standards of ICD;
  
Qualifications:• Bachelor degree in Computer Engineering, Electrical Engineering, Physics, Computer Science, or related field.
• Familiarity with field buses, such as ethernet, modbus.
• Familiarity with computer buses such as VME, xTCA, PCI.
• Experience with scripting languages.
• Experience with distributed data acquisition and client/server models.
• Demonstrated effective written and verbal communication skills.
• Demonstrated ability to work and communicate effectively with a diverse population.
• Demonstrated ability and willingness to quickly learn new technologies.
• Strong problem solving skills, independent decision making, and ability to work in a team environment.
• Must possess excellent organizational skills with attention to detail and the ability to manage several projects simultaneously.
Desired Skills:• Masters degree in the related field.
• Experience in user software support.
• Experience with real-time and networking software.
• Several years embedded programming experience with C/C++.
• Experience with requirement and design specification creation.
• Demonstrated technical skills, experience and knowledge necessary to oversee a complex project.
• Experience with EPICS in industrial control, instrumentation, or research environment.
• Experience with PLC, FPGA programming, and interfacing to hardware devices.
• Project management experience is desired

Please Note:  The SLAC National Accelerator Laboratory values diversity and is an affirmative action, equal opportunity employer. SLAC confirms employment authorization for all new hires through the E-Verify Program.

Final candidates, with the exception of Staff Scientists, are subject to background checks prior to commencement of employment at the SLAC National Accelerator Laboratory.

Controls Software Engineer