Cyberware Rotary Documentation

Starting up and Turning off the scanner

  • make sure the SCSI box (on top of "montoya") and the power supply box (on the table next to the rotary table) are turned on.
  • doubleclick "CyScan" icon on desktop, then two windows appear: "CyScan" app and "CyScan Tcl Prompt" shell.
  • in "CyScan" window, select "Scanner -> Select Device" and press "Accept" in "Choose a Scanner" dialog box (only one device shown).
  • in "CyScan" window, press "Setup" button (lower left corner) and then press "Accept" in "Setup MX Scanner" dialog box.
  • now commands can be typed into the "CyScan Tcl Prompt" window, or select "Scanner -> Home" in the "CyScan" app window to return the table to its default position.
  • to restart the application, type "r" and press Enter into the "CyScan Tcl Prompt" shell window, then follow the instructions above to initialize.
  • to end the session, press the "Exit" button (lower right corner) in the "CyScan" window.
  • turn off the SCSI box and power supply box.
  • Basic motion commands

  • mt off
  • Turn of power to the motor

  • mt abs <pos> [<vel> [<acc>]]
  • Move to an absolute (vs. relative) position. is signed degrees. Normally in the range -380.0 to 380.0, but practically any value is accepted. The controller treats the axis as if it was linear, that is the values do not wrap at 360. A move from 360 to 0 is one turn. Acceleration cannot be set unless axis is off. is unsigned velocity in degrees per second. Reasonable values are 0 > vel < 60. is acceleration in degrees/sec/sec. It's default value is probably good enough. Typical values are 0 > acc < 100. At some point the system cannot supply the torque and you get a positionError (see below).

    After setting the velocity, it will persist at that value until being set again to another value.

  • mt rel <pos> [<vel> [<acc>]]
  • Move to relative position, e.g., 20 degrees beyond the current position. See notes about absolute position above for more explanation of arguments.

  • mt set status
  • Returns a list of status tokens. Noteworthy are positionError which means the servo couldn't keep up with the request, and commandError which means you made a mistake. These flags are reset with:

  • mt rsti <flag>
  • is positionError or commandError, etc. Some flags cannot be reset.

  • mt set posReal
  • Returns the actual position, degrees.

  • dev unHome
  • dev home nullcmd
  • Performs a home cycle.

  • mt dialog
  • Posts a Tk dialog that is of some use. The buttons at the bottom are broken. The slider is functional. The position readout is good.

    Synchroning

    The ideal way to run the Kodak camera and motion table in synchrony would be to have a single application that talked to both of these pieces of hardware. Unfortunately, we don't have such a program. Here are two possible methods for achieving approximate synchronization:

    1. Write tcl scripts for the camera and for the table with simple timing commands and then run them as separate apps at the same time (presumably by hitting CR at roughly the "same instant"). I believe the "after" command would do the trick. I.e., one file could say something resembling:

    after 1000 rot_10_degrees
    after 3000 rot_10_degrees
    after 5000 rot_10_degrees
    after 7000 rot_10_degrees
    ...

    while the other would say:

    after 2000 take_image
    after 4000 take_image
    after 6000 take_image
    after 8000 take_image
    ...

    and the rotations would happen every odd second, and the picure would be shot every even second. Of course, you'd need to figure out what timings are actually appropriate.

    2. Have the apps communicate with each other by creating and deleting (or perhaps just moving around) files that are "watched-for" by the two apps; i.e., set up a simple handshake mechanism based on the existence of a file or two. You might be able to do this with just the "file" command, or you might also want the "open" and maybe "puts" commands.