Not "quite" embedded work, but just saturday some fun with claude, I thought you guys would engage with a little more than enterprise BS. Its pure engineering control loop stuff.
Today I am teaching claude how to run a nuclear reactor. This is a 'game' reactor simulator. Maybe "college" or "under grad" textbook, 3 loop PWR.
The game has a REST API. Which allows you to control the reactor and read its metrics/guages.
I just handed it the cold reactor. Asked it to start it up via the API. Absolutely hilarity has been following.
So it lifted the rods and kept lifting to them awaiting a reactor response. When none came it withdrew them all the way to 50%. Only then did it realise the fuel was not loaded and sat in the "unloaded" position. It asked me to insert it as the API has no control to.... so I did. Knowing exactly what would happen with the rods at 50%.
Reactivity redlined. Reactor went from "room temp" to 400C in about 20 seconds. Many alarms and klaxons all at once. I just laughed. It got stuck fighting the reactor through transients, but it did get it under control. It just tripped a dozen alarms doing it and damaged several things. 5/10 - shutdown and mantenance required. However... the reactor was balanced at 300C, the steam gens where at 60bar, 50% fill level. 3rd loop was in vacuum and condensor/condensate in spec. Steam bypass fully open. "Right end state".
It didn't boronate the water, it didn't fill the pressurizer, it did not pre-heat the pressureiser. Just lifted rods to 50% and asked me to dump the fuel in. Ran several pumps dry, over pressured the steam gen, send condensate into the steam turbines.... at least in a game you can reset the simulation and don't have to do the months cleaning that up.
Anyway, Ive spent the last 3 hours? Getting claude to write python scripts for it to control the reactor under my direction. "Safe state -> plan -> new safe state" - to hell with adverse procedures for now.
Startup: Bring reactor to "ready for rod lift" - script runs parallel "prep" tasks and exits when all exit criteria are met. Broron, coolant flow, fuel, pressure, temp, steam plant 'primed'.
Then...
Launch control loops for "rods to track iodine", "steamgen balancer pump controls"...
So far so good. Working through a staged startup process, so I have plenty of time to teach claude.
Step 1: Pre-rod prep. DONE
Step 2: Rod lift for "Tea kettle mode" (very low iodine gen). The only consumer is the condensor steam engine vacuum pump. 3rd loop cooling is passive. rector extremely low power. (No xenon yet). Turbines bypassed. Working on this now.
Step 3: On reaching a stable and safe state from above with the condensor alone running off the steam gens.... stabilise the 3rd loop plumbing and vacuum.
Step 4-n: Ramp up power and stabilise. Notify grid. Open main steam control valves, shut bypass, spin up the turbines... sync... connect.... load match... monitor.
There are parts of this that are new to me, a lot has changed in the game in recent updates. The whole condensor steam driven vacuum system is a bit of a wild horse. Claude is actually pulling in steam plant knowledge, vacuum charts, "steam tables" and trying to work it out too. Quite amusing.
Hopefully before i get bored claude will do better than 5/10 starting it up and getting it on grid.
If anyone knows how to run an "Industrial steam engine condensor with steam emotive vacuum pump"... now would be the time. Claude is busy monitoring the evapouration and pressure rise.
The actual "reactor" part is fairly easy in the game, just a rod control loop. The steam plant is the complicated part.
UPDATE: I don't understand how to start up the condensor that much is clear. Nor does claude. Its just very hard to get any balanced stable state in "Startup mode". Once the steam comes up to the full 60bar the condensor becaomes hard to manage. Once the steam goes to the turbines though, and the condensor switches to "Operational mode" it calms down to a sleeping lamb again. Parked it for today. Will resume with a "stable on load state" and tune the stable state control loops instead next time. Startup is complicated.