Junior Control Systems Software Developer MBD (Model-Based Development)
Ballard Power Systems
- Vancouver, BC
- Permanent
- Full-time
- 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
- 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.
- 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
- Extended health and dental benefits, and employee assistance program
- Paid time off
- Retirement plan matching
- Onsite fitness facility & yoga classes
- Extensive learning opportunities, catalog of development course offerings
- People networks and mentorship programs (to name a few)