CalibrationIn order for a proper EMC Library to be written the instrument must be accurately controlled using real-world units. This requires the controls of the instrument be calibrated to real-world values. Calibration is really outside the scope of this library, it has to be handled at the device dependent (layer 1) level. For our instrument many calibration variables were created. The Philips CM series instruments remote control interface is implemented as a remote interface to the console controls (rather than the operation of the instrument). For example magnification change is done by telling the instrument to (internally) turn the magnification knob some number of "clicks" clockwise or counter-clockwise. So we needed conversion factors that would convert a real-world unit change to the number of console knob click/turns required to achieve the change. We called these factor calibrations. Many of these factors are only relevant to this model instrument. "f_" factors are unit conversion factors:
Another form of calibration involves how to correct for side effects of instrument functions (or other inaccuracies in device control). For instance an X-axis image shift appears to cause a small shift along the Y-axis as well. We use we call shift calibrations to correct for these. "s_" matrices are shift matrices. They measure image shifts due to changing beam shifts, image shifts and goniometer shifts:
Another form of calibration similar to above is how to correct the image after a change in the astigmators or defocus. "m_" matrices are calibration matrices. They measure image shifts due to changing astigmators and defocus. They are not simple shifts, but are terms for more complicated formulas.
Another form of calibration or some constants used in auto-correction features.
Ok. I know I didn't provide any real information. For two reasons. One we implemented this a long time ago and I really don't remember how it all works, and two it implementation defined. The EMC Library doesn't care at all what calibrations exist, it only cares that the instrument can be made to do what is requested. There are also a couple functions related to calibration of the EM in our current EMC Library implementation, however at this point they are device dependent and should not be used outside of layer 2 (that is they should only be used within this library). However we are currently accessing the calibration values outside of this layer. Generally speaking these values are used (outside of this library) just to determine whether the proper calibrations have been done prior to running a procedure. Proper error handling within the EMC Library and proper error checking in the application should be able to eliminate the need to check the existence of these calibration values. Or perhaps we need a few routines which will return whether the instrument is calibrated at given magnification and high tension combination. It is possible for the calibration tables to be incomplete, perhaps we need a more specific way of querying what calibration values are set. However I believe the set of calibration values and their usage to be variable from implementation to implementation of this library so the only possible solution is a generic yes/no response and require the calibration tables to be complete in order to generate a yes response (the library itself will not use the general "is calibrated" test, but will still check on a value by value basis as this will allow some functions to work before the instrument is fully calibrated). Another option is a function which returns a yes/no response to the question whether it is calibrated for a given EMC function (a constant for each function will be created which would be passed to the check function which will know what calibration values are used by each function and then check to see if they are available). Our current implementation stores calibration tables in directory on the client side. This works fine when the application is running on the computer connected to the EM, however it is unworkable when running on other computers as it requires all the calibration tables for the remote instrument be copied to the client prior to use. That's silly. Our next revision of code will store the calibration tables on the server and the clients will load the tables over the network.
|
||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||