home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / C / ROBOT01.ZIP / RCCL062 < prev    next >
Encoding:
Text File  |  1987-03-02  |  4.2 KB  |  85 lines

  1. Dir : mac
  2.  
  3.     This directory contains the programs that can be downloaded in the
  4.                             Unimate Controller
  5.  
  6. The program 'moper' is the run time joint processor  /  vax  interface.  It
  7. exists  in  eight  versions  (debug/nodebug  adc/noadc  val1/val2).   Moper
  8. includes the files fifoio.h, rtc.h, cmdk.h and which.h in common  with  its
  9. vax counterpart. Addefs.h and jcom.h contains bit definitions and macros to
  10. allow the joint processors communications.
  11.  
  12.  
  13. The C union 'how' allows to map the fifo buffer onto a structured variable.
  14. The 'how' buffer transmitted to the vax is of variable length.  The minimum
  15. length contains the external io register, joint encoder positions, if (ADC)
  16. the  joint motor currents.  One 16 bits word is sequentially added for each
  17. opened  adc  channel.  (adcopen  in  pack.c  and  moper  make  the  logical
  18. correspondence between a channel and an array index).
  19.  
  20.  
  21. The commands are obtained from the vax and the command buffer is a succession
  22. of records like :
  23.  
  24. A_COMMAND v1 v2 v3 v4 v5 v6     same command for all the joints, six values
  25.  
  26. I_COMMAND v                     one command for one joint, one values
  27.                 (joint number in low byte)
  28.  
  29. G_COMMAND v                     one general command, one value
  30.  
  31. E_COMMAND                       one command, no value
  32.  
  33. This organization is reminder of the time the interface was very  slow  and
  34. the  data  was  packed  on  byte  boundaries.  It has been kept for the new
  35. interface although a buffer  containing  all  possible  combinations  would
  36. probably  do  and  would  be  easier  to implement.  This has been kept for
  37. compatibility and flexibility (it is very easy to add more  commands  while
  38. not  increasing  the size of the buffers).  Now the commands are kept on 16
  39. bits words boundaries because it is a lot more  efficient  and  simple  and
  40. since the buffer size is not critical.
  41.  
  42. A complete command buffer looks like say :
  43.  
  44. | A_C v1 v2 v3 v4 v5 v6 | G_C | I_C v | .... | chck
  45.  
  46. And the buffer actually put into the fifo is :
  47.  
  48. wc | A_C v1 v2 v3 v4 v5 v6 | G_C | I_C v | .... | chck
  49.  
  50.  
  51. The (NTEST) first exchanges  are  used  for  exercising  the  channel.  The
  52. superviser  then  sends  a  how  buffer  and  gets an initialization buffer
  53. containing the calibration data that make  the  superviser  independent  of
  54. this calibration data.  The remaining exchanges are regular exchanges until
  55. a G_END command is received that puts the clock to  sleep,  after  a  short
  56. period  of  time  arm  poser is turned off.  This has been done to avoid to
  57. cause a lot of stress on  the  gears  when  the  brakes  are  set  at  high
  58. velocity.  It  causes  the joints to servo on the last point a while before
  59. being locked.  The drawback is that a high current  is  suddenly  required.
  60. (it  has  causes the power amp of joint 2 to smoke and blow it's transitors
  61. before the fuses, but i guess that was an extreme case and it  is  probably
  62. better  to  reduce  the gear's wear).  Once power is turned off, superviser
  63. goes  back  monitoring  the  arm  power  press  button  and   will   resume
  64. interrupting  the  vax  when pressed.  The normal code is dumb and does not
  65. make any prints so it does not require to use two terminals.  If it  exits,
  66. the  only  way to tell is that nothing happens.  Under odt, just restart it
  67. (2000G).  If the error persists, the debug version may help.  If  not,  use
  68. the channel test program.
  69. Note : when the servo mode transitions from current to position,  a  glitch
  70. is  caused  by unmatching current specifications.  Probably, during several
  71. servo cycles the servo code does not behave properly.  The problem has been
  72. partially  solved by changing the gravity current offset during a couple of
  73. sample periods.  The result is still pretty ugly but the problem  could  be
  74. solved only at servo level and would have caused too many troubles.
  75.  
  76.  
  77. The maintenance program is stand alone and is also downloaded.  All it does
  78. is   to  move  the  joints  individually  by  small  increments,  test  the
  79. calibration procedure, and allow to free joints.  It is handy to use when a
  80. disaster occurs for testing the controller.
  81.  
  82.  
  83. The test programs 'lsitst vaxtst', only exercise the channel and allow
  84. for some performance measurements.
  85.