Product Engineering has an immediate opening for a Junior Control Systems Software Developer MBD to join the Controls Engineering team. Successful candidates will demonstrate knowledge and capabilities in the following areas:
- Advanced controls system development
- Embedded software development
- Controls software design and implementation
- Setting/maintaining the SW implementation and testing tool chains
- Documenting detailed requirements, design specifications, and test reports
A successful candidate will work both independently and with the existing engineering team while striving for continuous improvements at both personal and technical levels.
Responsibilities Include:
• Directly involved in the controls system and software development life cycle, including design, implementation, and verification/validation
• Developing controls and software requirements for fuel cell systems, designing AUTOSAR or equivalent software architecture, implementing and testing Application software in MBD (Matlab/Simulink) environment
• Design and implement algorithms for signal processing, control strategies, communication protocols and fault diagnostics/reporting
• Verify and validate Application software through the use of unit test simulations, integration-level Model-in-the-Loop (MiL), Hardware-in-the-Loop (HiL), and lab/field testing
• Manage software version control and implement CI/CD testing/releasing methodology
• Establish and continuously improve embedded software development process by following standardized methods
• Troubleshoot complex systems from a hardware and software perspective. Analyze data logs from test stations and customer properties.
• Prepare technical documents, including component/system requirement and design documents, test plans and test reports, and engage in the formal change management process
• Participate in technology innovation and continuous improvement in system controls engineering
• Under the direction of management, work within cross-functional teams with the implementation of systems engineering processes, which may include cross-functional reviews of requirements and documenting specifications
• Other duties as occasionally required by management
Minimum Requirements:
• Bachelor’s degree in Mechatronics, EE, computer engineering, or related field
• A minimum of 16 months of experience (co-op experience is acceptable) in industrial-level embedded software development
• Programming skills: Matlab/Simulink, C/C , scripting languages
• Experience with formal software version control (Git/SVN) and release/configuration management
• In-depth theoretical understanding and practical experience in signal processing/filtering/FFT/Sampling, logic state machine and advanced control algorithms for complex dynamic systems
• Work experience with software architecture, HW driver/stack function development and application algorithm design for embedded systems
• Practical knowledge of uC, RTOS, task management, memory management
• Experience commissioning, tuning, and troubleshooting control systems
• Commitment to delivering high quality software following established processes, procedures and coding styles
• Team player, self-motivated, easy to work with, passionate about engineering, has a habit of documenting their work and enjoys working in a systematic way. A strong communicator who is eager to learn from others and be a key contributor to the team.
Desired Traits:
•
• Experience working within an Agile development process
• Experience with pneumatic and hydraulic instrumentation including pressure, temperature and flow measurement devices
• Experience with power device interfaces (LV/HV batteries, motor drives, inverters, contactors, DC/DC convertors etc.)
• Experience on building up software release and configuration management process with CI/CD tools like Jenkins.
• Experience with full software lifecycle and safety-critical software development, including requirements, design, integration, validation, and verification is a strong asset
• Solid experience with CAN and communication protocols such as J1939, CANopen is a strong asset