Jobs · Engineering · Virginia

Senior Motor Control Firmware Engineer (FOC)

allocortech inc. · Crozet, VA · 1 mo ago
On-siteEngineeringFull-time
We need to output HTML fragment with sections only when content present. Use

for headings: About the role, Responsibilities, Requirements, Qualifications, Skills, Benefits, Pay, Schedule. We must not repeat job title. We need to extract content. Given posting: First paragraph: "The role If you have spent years making Field-Oriented Control look easy on a bench and want that code to propel aircraft and boats, read this. Taurus controllers run full four-quadrant FOC through SVPWM at 40 kHz-class rates, 20–405 V, Hall/QEP, isolated CAN and RS-485, regen, and hybrid-electric modes — on Allocortech’s allocore C++ SDK. You own the loops that make torque, not a reference design." That's about the role. So we can put that in

About the role

with

content. Next: "What You Will Do Implement and harden FOC: Clarke/Park, current and speed loops, field weakening, overmodulation, dead-time, observers.Write real-time C/C++ on Cortex-M and similar (STM32-class and beyond): PWM, ADC, DMA, isolated comms.Own sensored and sensorless paths, calibration, and protection that survive flight and salt water — not just a dyno.Extend the allocore SDK so customers can drop in outer loops without touching your inner loop.Bring up new hardware with the EE and build the test story: HIL, scripted dyno, regression, production load." That's responsibilities. Use

  • for list items. Need to split into bullet points. The text is a run-on sentence with commas and periods. We can split by sentences. Let's extract bullet points: - Implement and harden FOC: Clarke/Park, current and speed loops, field weakening, overmodulation, dead-time, observers. - Write real-time C/C++ on Cortex-M and similar (STM32-class and beyond): PWM, ADC, DMA, isolated comms. - Own sensored and sensorless paths, calibration, and protection that survive flight and salt water — not just a dyno. - Extend the allocore SDK so customers can drop in outer loops without touching your inner loop. - Bring up new hardware with the EE and build the test story: HIL, scripted dyno, regression, production load. That seems good. Next: "What You Bring 5+ years embedded motor-control firmware. FOC on PMSM/BLDC is required, not a résumé bullet.Discrete-time control, transforms, SVPWM, current-loop bandwidth.Production C/C++ on bare metal or a thin RTOS. You can read a scope and a map file.CAN (2.0/FD), RS-485, encoder/Hall interfaces.Bonus: sensorless observers, SiC timing, MATLAB/Simulink-to-embedded, functional safety, hybrid propulsion." That's requirements/qualifications/skills. We need to decide sections. Could combine Requirements and Qualifications? The instruction: Use headings for sections like About the role, Responsibilities, Requirements, Qualifications, Skills, Benefits, Pay, Schedule. We should include only those with real content. We have content for Requirements (maybe "What You Bring") and also Qualifications (maybe same). Could split: Requirements: mandatory items; Qualifications: bonus? But we can just put under Requirements and maybe Skills. Better: Use Requirements for mandatory, Skills for bonus? Or Qualifications for mandatory, Skills for bonus. Let's decide: - Requirements: 5+ years embedded motor-control firmware. FOC on PMSM/BLDC is required. Discrete-time control, transforms, SVPWM, current-loop bandwidth. Production C/C++ on bare metal or a thin RTOS. You can read a scope and a map file. CAN (2.0/FD), RS-485, encoder/Hall interfaces. - Qualifications (maybe not needed) but we could skip. - Skills: Bonus: sensorless observers, SiC timing, MATLAB/Simulink-to-embedded, functional safety, hybrid propulsion. But we need to avoid thin sections. Could combine Requirements and Qualifications into one section "Requirements" with both mandatory and bonus? But then we lose distinction. However instruction: Prefer a few substantive sections over many thin ones. So maybe we combine mandatory and bonus into Requirements (or Skills). Let's think: The posting has "What You Bring" which includes mandatory and bonus. Could treat as Requirements. Then we could have a Skills section for maybe nothing else. But we could also have a Qualifications section for the same content? Might be redundant. Better: Use Requirements for the mandatory items, and Skills for the bonus items. That gives two substantive sections. Now Benefits: The posting includes a paragraph about benefits after "Base salary is just one component...". So we have benefits content. Also mentions Pay: "Level and base salary will be determined on a case-by-case basis and may vary based on the following considerations: job-related knowledge and skills, education, and experience." That's pay info but it's vague: "may vary". The instruction says: never emit a heading followed by filler/placeholder text (e.g., "commensurate with experience", "not specified", "N/A", "varies", "TBD") and never create Pay/Schedule/Benefits sections unless the posting actually states them. The posting does state base salary will be determined case-by-case and may vary based on considerations. That's somewhat vague but it's still stating something about pay. However it's not a specific number or range. Is that considered filler? The instruction says avoid placeholder like "varies". That's exactly "may vary". So we should not create a Pay section because it's just "varies". So we omit Pay. Schedule: No mention of schedule. So omit. Benefits: There is substantive list: top tier medical HMO, PPO & a 100% company-sponsored HSA plan option, dental and vision coverage, unlimited PTO, 11 paid holidays per year, flexible spending and dependent care savings accounts, paid parental leave, disability insurance, life insurance, and access to a 401(k) retirement plan with company match. Also eligibility note etc. We should include that. We also need to include maybe a short paragraph about eligibility note? The instruction: Preserve ALL substantive information; do NOT invent or summarize away detail. So we need to include the benefits details exactly as given, but we can format as list. We also need to include maybe a short paragraph about "Base salary is just one component of our total rewards package." That's part of benefits? It's about total rewards. Could be included in benefits section as intro. We must remove boilerplate: cookie/navigation/legal/EEO/equal-opportunity/scam-warning boilerplate, duplicated lines, and application instructions. At end there is "Important Information For Candidates Seeking To Work In Us Offices Only ..." that's legal/EEO etc. Must remove. Also "APPLY NOW" and the sentence about prolonged periods of sitting etc. That's maybe not boilerplate? It's about physical demands. Could be considered part of job description? Might be considered boilerplate? It's not EEO but it's about working conditions. The instruction says remove cookie/navigation/legal/EEO/equal-opportunity/scam-warning boilerplate, duplicated lines, and application instructions. The physical demands sentence is not explicitly listed to remove, but could be considered part of job description? It's not about responsibilities. Might be considered minor metadata? Could be kept? However it's not about role content. It's about physical demands. Might be considered boilerplate? Not sure. Safer to keep? The instruction says preserve ALL substantive information. That sentence is substantive about job demands. I'd keep it maybe under a section like "Working Conditions" but we don't have a heading for that. Could incorporate into About the role? Might be odd. Could create a section "Work Environment" but not in allowed headings. Since only allowed headings are those listed, we should not create extra headings. Could we put it as a paragraph under About the role? Might be okay but it's not about role. Better to maybe omit as it's not clearly required. The instruction says remove duplicated lines and application instructions. This is not duplicated. It's not legal/EEO. It's about physical demands. I'd keep it maybe as a short paragraph after About the role? But we have no heading for it. Could we include it as a

    without heading? The instruction says output only HTML fragment, we can have

    elements not under headings? It didn't forbid stray paragraphs. It said use

    for section headings,
    • for any list,

      for prose. So we can have

      elements anywhere. So we could add a

      for physical demands after About the role. That seems okay. Now we need to ensure we don't repeat job title. Not needed. Now produce HTML:

      About the role

      The role If you have spent years making Field-Oriented Control look easy on a bench and want that code to propel aircraft and boats, read this. Taurus controllers run full four-quadrant FOC through SVPWM at 40 kHz-class rates, 20–405 V, Hall/QEP, isolated CAN and RS-485, regen, and hybrid-electric modes — on Allocortech’s allocore C++ SDK. You own the loops that make torque, not a reference design.

      But note the first sentence repeats "The role". Actually the posting starts: "The role If you have spent years..." It seems like a formatting error. We should preserve as is? Probably we should keep the text exactly: "The role If you have spent years making Field-Oriented Control look easy on a bench and want that code to propel aircraft and boats, read this. Taurus controllers run full four-quadrant FOC through SVPWM at 40 kHz-class rates, 20–405 V, Hall/QEP, isolated CAN and RS-485, regen, and hybrid-electric modes — on Allocortech’s allocore C++ SDK. You own the loops that make torque, not a reference design." We'll keep that. Now Responsibilities:

      Responsibilities

      • Implement and harden FOC: Clarke/Park, current and speed loops, field weakening, overmodulation, dead-time, observers.
      • Write real-time C/C++ on Cortex-M and similar (STM32-class and beyond): PWM, ADC, DMA, isolated comms.
      • Own sensored and sensorless paths, calibration, and protection that survive flight and salt water — not just a dyno.
      • Extend the allocore SDK so customers can drop in outer loops without touching your inner loop.
      • Bring up new hardware with the EE and build the test story: HIL, scripted dyno, regression, production load.
      Now Requirements:

      Requirements

      • 5+ years embedded motor-control firmware.
      • FOC on PMSM/BLDC is required, not a résumé bullet.
      • Discrete-time control, transforms, SVPWM, current-loop bandwidth.
      • Production C/C++ on bare metal or a thin RTOS.
      • You can read a scope and a map file.
      • CAN (2.0/FD), RS-485, encoder/Hall interfaces.
      Now Skills (bonus):

      Skills

      • Sensorless observers.
      • SiC timing.
      • MATLAB/Simulink-to-embedded.
      • Functional safety.
      • Hybrid propulsion.
      Now Benefits: We need to include the benefits paragraph and list. We have: "Base salary is just one component of our

Similar jobs