9:15 - Thor Raabe of Unaxis, a semiconductor manufacturer based in Switzerland. These guys do wafer production. I'd take a picture of the wafer production cycle, but the glare would make it invisible, I think. They use ControlWorks to control a number of the processes in the manufacturing cycle. So - what do they do with ST?
- Develop and support control system software for automated production
- Development environment - ControlWORKS (Adventa) - currently VW 2.5.x, but it's moving up to VW 7.x
- Shipped their first system in 1996
- Total systems shipped: 400+
- Software team is in 2 locations, 10 developers, 6 support engineers, 2 managers.
Here's a shot of the cycle, highlighting the steps that Unaxis manages - I got this from the StS presentations CD (all of this will be posted after the show)
ControlWORKS comes from Adventa, which spun out of TI - it's a privately held software firm. The software provides:
- An OO model of a machine
- A set of frameworks that can be extended by manufacturers (which is what Unaxis does)
- Very large - approximately 450 packages, 3000 classes, 40,000 methods - i.e., about the size of the VW development environment itself!
It provides a simulator, which is critical given the cost ($5M and up) of actual hardware. They can use the simulator to help build the hardware along the lines of what they need, and the result can serve as a sales demo tool. The code that drives all this is 100% identical - running either the simulator or the hardware. Here's a framework overview:
There are a bunch of screenshots here of the ControlWorks software - here's a picture of one of those - in the picture below, "image" means a Smalltalk image:
One critical thing they can do quickly is come up with new "recipes" for production - this is changing all the time based on the R&D that's happening at the hardware/design level in the production area.
How do they do machine control? They interface down to the hardware using discrete I/O, ethernet, DeviceNet (CAN-bus), serial port access. They have to handle the actual material/machine movement, alarms that get raised by the hardware, etc. They use Finite State Machines for much of this. The framework started with lots of threads, and that made for a lot of thread management code - over the last four years they've switched over to finite state machines. All of this runs under a set of constraints that mirror Asimov's laws -
- Don't hurt any people
- Don't hurt the wafers
- Don't hurt the machines themselves
Finite State Machines:
- Each FSM has its own process
- provides template for behavior
- standardizes code, allowing for better browsing/development/debugging tools
- Provides asynchronous interfaces allowing for interruptible behavior w/o having to manage multiple processes.
- They use Trigger events for alarms
- Requires exception handling in each FSM, rather than one global handler (ironically, I've run into this issue in the post tool based on SwS thread usage)
They rely on reuse - they don't have time to create systems from scratch for each piece of hardware that wanders down the pike. They created configurable policy objects that can get plugged into their modules - see below:
Experiences:
- Small teams matter
- They are adjusting to Store, very used to ENVY
- Very big learning curve in this domain
- Class libraries are huge
- Testing is expensive (due to the hardware costs)
Challenges:
- Finding Smalltalkers with the right (real-time) background
- Perception that Smalltalk is slow (sales issue - not actually a problem)
- Non-Native UI widgets
- "Smalltalk isn't mainstream"
Benefits:
- Smalltalk enables a high degree of reuse
- Generic framework abstractions
- Smalltalk makes it easier to focus on the problem rather than language issues
- Debugging is much, much easier without having to go through a recompile and restart - due to the expense and difficulty of getting to the same state.
- Unaxis is pleased with VW and ControlWORKS, and has no intention of moving off
Interesting tidbit - Java may run on the phones, but the chips that run the phones are built with Smalltalk :)