Experience
Tap a job to see the details.
Robot Specialist
BMW Manufacturing · Greer, SC
Feb 2023 – Present
Show detailsHide details
Robot Specialist
BMW Manufacturing · Greer, SC
Feb 2023 – Present
- Lead programmer in the paint shop on ABB, Dürr, and Fanuc robots. I handle new model programming, design changes, and day-to-day improvements.
- When a robot goes down, I'm usually one of the people getting it back up. We hold 95% equipment availability.
- Helped hold 60-second station cycle times by tightening up paths and changing the order of steps (see how).
- Offline programming in RobotStudio, Process Simulate, and Dürr 3D Onsite. I also design and 3D print custom robot tooling.


Field Service Engineer
Medtronic
Jan 2021 – Feb 2023
Show detailsHide details
Field Service Engineer
Medtronic
Jan 2021 – Feb 2023
- Covered a 32-account territory across South Carolina, western North Carolina, and east Tennessee, mostly on my own.
- Installed, repaired, and upgraded Puritan Bennett 980 and 840 ventilators in hospitals, including through COVID. There was no room for mistakes.
- Did engineering field changes and trained hospital biomed staff on site.


Field Service Engineer
ABB
Nov 2017 – Dec 2020
Show detailsHide details
Field Service Engineer
ABB
Nov 2017 – Dec 2020
- Traveled to customer plants to commission new sealer and paint robot cells, from install until production took them over. That included BMW's new IPP4 paint line and the masking plug cell, and a bumper paint line at Honda.
- Programmed Flex Vision and pick-and-place applications. IRC5/IRC5P controllers and IPS paint systems.
- Programmed a 16-robot masking plug cell for BMW on robots and vision I'd never used before. It launched on time at a 60-second cycle and 95% plug success (see the project). I was named Employee of the Month for it.
- Cycle time improvements, troubleshooting, and repairs on site.



Robot Programmer
BMW Manufacturing · Greer, SC
Aug 2011 – Nov 2017
Show detailsHide details
Robot Programmer
BMW Manufacturing · Greer, SC
Aug 2011 – Nov 2017
- Created paint programs for new models and ran paint trial bodies.
- Troubleshot and corrected paint defects. Set up color tables for Bell RB1000 applicators.
- Member of the commissioning team for the IPP and Wax lines.
- Before programming I worked the paint line floor: repair, E-coat sanding, inspection and polish, and robot operator.

Diesel Technician
Morgan Corporation
Sep 2010 – Jul 2011
Show detailsHide details
Diesel Technician
Morgan Corporation
Sep 2010 – Jul 2011
Where I got my start, doing overhauls and off-site repairs and keeping downtime low.

Projects
A few problems I've solved. Tap one to read the whole story.
BMW masking plug cell
Show detailsHide details
In 2018 ABB put me on a 16-robot cell at BMW that puts masking plugs into the car bodies. I was a paint guy, and I'd never programmed these robots or this vision system. We launched on time anyway.
The problem
The plugs only seat if you're right on the hole, and the body could shift a little while the robots pushed on it. Just driving the plug straight in would miss or seat it badly.
What I did
I learned it on site from ABB's manuals, a lot of trial and error, and BMW's people. I set up robots on opposite sides of the body to push at the same time, so they held the body still. Then I watched how the line workers put plugs in by hand and copied their motion into the robot paths with RelTool offsets.
The result
It launched on the date at a 60-second cycle and 95% plug success. Most of the misses came from plugs jamming on the feed conveyor, not the robots putting them in. ABB named me Field Service Employee of the Month.
“Mark has performed above expectations and has excelled throughout. Mark has been instrumental in the success of the Masking Plug project.”
Director of Field Services & Technical Support, ABB. Employee of the Month award, June 2018
If I did it again, I'd go stand with the line workers on day one. The way they did it by hand ended up being the key to the whole thing.
BMW posted about the cell on LinkedIn in November 2018. The robots put in about 61,000 plugs a day, work that used to be hard on people's shoulders, necks, and hands. Here's BMW's post, and it's still on their Spartanburg plant page.
A month of comms drops
Show detailsHide details
We had a sealer robot that kept losing comms between the IRC5 and the process board. It had been going on for about a month and getting worse.
The problem
Maintenance had been on it for weeks and was about ready to call ABB in. Their plan was to replace the board, but nobody knew how to move the config over to a new one, so they called me in on my day off.
What I did
I wanted to know where the problem was before I swapped anything. The HMI never lost its data, so I knew it was on the controller's network side. I watched the drops in RobotStudio and checked the board's link status and boot log, and the board looked fine. The next time it dropped, I power-cycled just the internal LAN switch and comms came right back.
The proof
Maintenance wanted proof before they closed it out, which was fair. I put the bad switch in the controls cabinet on our offline cell, where three robots talk to a PLC. Within a day it dropped all the comms there too. So we swapped a cheap switch instead of the board, and never had to call ABB.
Intermittent problems will fool you. I try to prove where it is before I start throwing parts at it.
Automating robot backups
Show detailsHide details
Every Sunday, two of our programmers spent about an hour each backing up around 40 ABB robots by hand. So I automated it.
How it worked before
Someone had to go robot to robot every Sunday and pull the backups by hand. Two people, about an hour each, every week.
What I built
Each controller now takes its own backup at a set time on Sunday. Then a WinSCP script on the HMI pulls every backup over FTP into that robot's folder on the network and checks that it got there. Only after that does it delete the oldest backup on the robot, so each one keeps its three newest. The passwords are in a separate file, not in the script.
The result
Nobody has to do it by hand anymore. That's over 100 hours a year back, and every robot gets a good backup every week.
How I cut cycle time
Show detailsHide details
A lot of cycle time gets wasted waiting. The robot finishes one thing, and only then does the next thing start. If a step doesn't really need the one before it to finish, it can start early.
Here's one I did on a sealer robot. The program did a tool change, moved to ready, fired the vision system, then calculated the corrections. But vision doesn't need the robot at ready to measure the car. So I moved it up, and now vision fires and the corrections get calculated while the robot is still doing its tool change. By the time it gets to ready, the offsets are already there.
Illustrative, not to scale. Saving a few seconds per cycle compounds into hours of production.
Skills
Troubleshooting & root cause
Robots, electrical, mechanical, and fluid and pneumatic systems, usually with the line down and people waiting.
Launch & commissioning
New robot cells (sealer, paint, pick & place), BMW IPP and Wax lines, customer-site installs.
Continuous improvement
Cutting cycle time, fixing repeat downtime and quality defects, and following issues until they're actually closed.
Controls & networks
Remote I/O, PROFINET couplers, the robot side of the PLC handshake, and plant network troubleshooting. I'm learning Siemens TIA Portal now.
Safety
ABB SafeMove 2 trained, lockout/tagout every day (trained at BMW and ABB), e-stops and safety circuits.
Documentation & training
Writing procedures, doing engineering field changes, and training customers on site.



Software I use
ABB RobotStudio / RAPID
Offline programming, plus path and cycle time work before I touch the real robot.
Siemens Process Simulate
Simulating and programming robot cells offline.
Dürr 3D Onsite
Offline paint programming for Dürr robots.
ABB RobView
Building operator screens and dashboards for the paint robots.
ABB Flex Vision, ISRA Vision, VMT
Setting up and troubleshooting the vision systems that guide the robots.
Siemens TIA Portal
Learning it now on the training stand.
Autodesk Fusion, Bambu Studio
Designing custom robot tooling and fixtures, then 3D printing them.
Claude and Claude Code
I use AI every day to help write and debug scripts, like the robot backup script, and to run my homelab. I decide how it should work, and I test everything before it goes anywhere near production.
WinSCP, FileZilla
Moving programs and backups on and off the robots, including the automated weekly backups.
Certifications & training
- ABB RobotStudio
- ABB IRC5P Electrical
- ABB IPS
- ABB SafeMove 2
- ABB Flex Vision
- Fanuc Dispense Tool & Programming
- Puritan Bennett 980 / 840 Service
- CCNA (in progress)
- Associate Degree, Management & Diesel Technology (WyoTech)

Off the clock: the homelab
More and more of automation runs over the network, so I built one at home to learn on. Everything outside of robots I taught myself, mostly here. My configs and notes are on GitHub.
Virtualization
Three-node Proxmox cluster with high availability and replication. The nodes are named after my kids.
Networking
UniFi network split into VLANs, with WireGuard VPN and Cloudflare Tunnel so I can get in remotely without opening any ports.
Storage & backup
Synology NAS with snapshots that can't be changed and an offline backup drive, in case of ransomware.
Automation
Home Assistant runs the house, including lights, presence, energy, and dashboards.
Self-hosted AI
A local AI assistant on a Mac mini that watches the lab, answers questions, and flags problems.
Monitoring
Every service is monitored and alerts me when something goes down, same as I'd want on a production line.
Off the clock: printing mobility trainers
I volunteer as a maker with MakeGood. They connect families of kids with mobility challenges with people who can 3D print a Toddler Mobility Trainer for them, free to the family.
I've built two so far on my printers at home. It's a lot of print hours, but seeing a kid sit in one for the first time makes it worth it.

Let's talk
I'm open to automation, controls, and field service roles. Reach out anytime.