Software & Controls Engineer
Job Description
Our client, a leading manufacturer of mobile mining machinery based in Johannesburg, South Africa, is seeking a skilled Software & Controls Engineer to join their engineering team. This role focuses on embedded software/firmware and control systems for underground mining machines, with involvement across the full product lifecycle from concept through commissioning and field support. The role is primarily software/firmware-focused, working with embedded C/C++, C#, structured text, CAN bus diagnostics, communication stacks, and bootloaders, while requiring solid electrical systems knowledge to ensure effective software-hardware interfacing.
Responsibilities- Collaborate with product management, applications, and cross-functional engineering teams to translate machine-level needs into software and controls requirements.
- Architect, implement, and review embedded software/firmware for new features, diagnostics, algorithms, I/O handling, and safety functions (primarily in C/C++).
- Develop control strategies and algorithms; define performance criteria; create validation plans (SIL/HIL) and execute tests to verify requirements.
- Perform hands-on hardware bring-up, board support/configuration, interface definition, system debugging, and code optimisation.
- Configure and integrate industrial/automotive communication protocols (CAN/CANopen/J1939, RS-232/422/485, TCP/IP/Ethernet).
- Create and maintain technical documentation including requirements, architecture/design specifications, test plans, release notes, and user/service guides.
- Ensure interface compatibility across machine iterations through close collaboration with Mechanical, Electrical, and Hydraulic design engineers.
- Apply applicable safety regulations and standards by customer geography (ISO/ANSI/CSA/IEC).
- Support commissioning, troubleshooting, and remote/field diagnostics; provide guidance to technicians and stakeholders.
- Provide mentorship and guidance to junior team members.
- Lead design reviews and contribute to continuous improvement initiatives.
- Travel to test sites and customer locations as required.
- Bachelor of Engineering (B.Eng.) in Computer & Electronics or B.Eng. in Mechatronics (required).
- 3-5 years of relevant experience in embedded software/firmware and control systems for mobile machinery or industrial equipment.
- Experience with control architecture design and real-time embedded systems (RTOS advantageous).
- Proficiency in C/C++ (embedded) and/or C#; exposure to Python and Structured Text advantageous.
- Practical knowledge of DC electrical and electronic systems, wiring practices, sensors/actuators, and power management.
- Familiarity with communication protocols: CAN/J1939/CANopen, RS-232/422/485, TCP/IP.
- Experience with version control (Git).
- Ability to design, model, simulate, and analyse control systems using MATLAB/Simulink or relevant IDE software packages.
- Strong familiarity with sensor technologies (pressure, temperature, levels, vision, IMUs) and their integration into control systems.
- Strong debugging skills with oscilloscopes, logic analysers, and relevant tools; ability to interpret schematics and datasheets.
- Knowledge of ISO/ANSI/CSA/IEC electrical and functional safety principles relevant to mobile machinery.
- Familiarity with BOM structures and DFMEA processes.
- Ability to develop HIL/SIL test harnesses and author unit, integration, and automated regression tests.
About This Role
Career insights for Software Developers positions