In 1976, Blue Oyster Cult released their hit song, “Don’t Fear the Reaper”. In 2000, Saturday Night Live produced a fictitious, but humorous skit around the production of the “Don’t Fear the Reaper” called, “More Cowbell”. The “More Cowbell” skit put a very light hearted spin on the production of the hit song. After seeing that skit, I can never hear that song the same way. The cowbell, for as small a piece it plays, is a huge part of the song.
The same can be said for the hardware that is used in Semiconductor manufacturing tools. Tool control boils down to controlling the hardware. Without controlling the hardware, the UI and factory automation will not amount to much if the robot doesn’t move. Everything from the robot, down to a simple presence sensor on a load port is needed. What may seem to be the simplest device can be the most prominent. Each device plays an important part in the process.
A Cimetrix blog post on March 15, 2016 entitled CIMControlFramework Work Breakdown, identifies driver integration as one of the first steps that needs to be done in the work breakdown for a CIMControlFramework (CCF) application. It may seem intimidating to create a driver to control hardware. There is the need to connect to the device. There is some number of commands and possible responses to deal with. It can be overwhelming, but can be conquered by understanding what needs to be done to control a device through a driver.
Let’s look at how to go about developing a driver.
- Understand the interface to the device using any and all documentation available. The documentation will provide information on how to send commands and interpret the responses.
- Does the device control only one device or many?
- What is the communication protocol to the device?
- TCP/IP
- Serial ports
- What are the commands? How are the commands composed?
- What are the responses?
- Will the device need to be polled?
- Will the device send unsolicited messages?
- Understand what needs to be controlled on the device for the tool.
- Will you only need to use a subset of the interface or the entirety of the interface? If just a subset, then there is only a need to write those initially.
- Writing code to “talk” to the device
- Do you have a simulator for the device?
This one is important, especially if the hardware has limited availability. If needed, a simple simulator can be developed to at least validate communications, then expanded over time to simulate faults or other conditions.
As the tool begins to come together, each simulator will become invaluable when developing the other parts of the tool and coordinating the devices together. - Unit tests can be useful to verify that the driver behaves as expected before using on actual hardware. Unit tests can also provide regression testing should changes be made to a driver.
Some areas to consider unit testing;
- Handling of failure to connect
- Handling of failure to send to the device or receive from the device
- Handling of return values
- Start out simple, just get a connection to the device to begin with. Next send a simple command and inspect the response. Create a success and build upon the successes!
- Do you have a simulator for the device?
In the end, a driver will be sending commands and getting and interpreting a response. For every device you create a driver for you’ll also become the expert on that device.
Even though it can be intimidating to start, developing drivers is one of the fun parts of tool development. There is nothing more exciting than seeing the hardware begin to dance in the fashion that has been choreographed in your software
CCF provides utilities and examples to help create drivers for your hardware and easily integrate them into the application, to assist you to orchestrate and provide more cowbell in your tool control.
To learn more about CCF, visit the CIMControlFramework page on our website!