1 / 13

Motor Support

Motor Support. Kay Kasemir ORNL/SNS kasemirk@ornl.gov Feb. 2013. ‘ motor ’ Record. Bigger building block than usual records. About 100 Fields: Current Position, desired Position Raw ticks, physical coordinates Assumed position vs. encoder position Acceleration, Speed

ronna
Download Presentation

Motor Support

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Motor Support Kay Kasemir ORNL/SNS kasemirk@ornl.gov Feb. 2013

  2. ‘motor’ Record Bigger building block than usual records. About 100 Fields: • Current Position, desired Position • Raw ticks, physical coordinates • Assumed position vs. encoder position • Acceleration, Speed • Backlash compensation • Retries • Limit switches, software limits • De-Energize when idle • …

  3. Example Display

  4. Supported Motors Quite a few .. sites around the world contribute drivers Your mileage may vary It does what they needed at the time Simulation Oregon Micro Systems, Inc. (OMS) models; VME8, VME44, VME58, VS4, VX2, MAXv, PC68 and PC78. Highland Technologies model V540. Newport models MM3000, MM4000/5/6, PM500, ESP300/301/100 and XPSC8. Intelligent Motion Systems, Inc. (IMS) models IM483 and MDrive. Advanced Control Systems, Corp. model MCB-4B. Mclennan models PM304 and PM600. PhysikInstrumente (PI) GmbH & Co. model C-630, C-844, C-848, C-862, E-662, E-710 and E-816. MicroMo model MVP 2001 B02. Micos model MoCo dc controller. Delta Tau PMAC2-VME controller. Faulhaber MCDC2805 servo controller. Parker Hannifin, Compumotor Division, 6K Series controllers. New Focus, models; 8750 and 8752. ACS Motion Control, SPiiPlus model. Spectra-Physics, Encoder Mike Controller, Model 18011. Thorlabs, Piezo Controller, Model MDT695. Animatics Corporation SmartMotor. piezosystemjena GmbH EDS data interface module. Kohzu SC-200, SC-400, SC-800 stepper motor controllers. attocube systems AG ANC150 Piezo Step Controller. Aerotech Ensemble digital servo controller.

  5. Full Example: Adding motor to IOC • configure/RELEASE:SUPPORT=/home/controls/epics/R3.14.12.2/supportASYN=$(SUPPORT)/asynMOTOR=$(SUPPORT)/motor • demoApp/src/Makefiledemo_DBD += asyn.dbddemo_DBD += drvAsynIPPort.dbddemo_DBD += motorSupport.dbddemo_DBD += motorSimSupport.dbddemo_DBD += devPC6K.dbddemo_LIBS += asyndemo_LIBS += motordemo_LIBS += motorSimSupportdemo_LIBS += Parker • Details depend on specific motor

  6. Database: Simulated motor • demoApp/Db/sim_motor.db:record(motor,"$(S):mot1”){ field(DTYP, "asynMotor”) field(VELO, "1") field(VBAS, ".1") field(ACCL, ".2") field(OUT, "@asyn(motorSim1,0)") field(MRES, "0.01") field(PREC, "5") field(EGU, "mm") field(DHLM, "100") field(DLLM, "0")} • demoApp/src/MakefileDB += sim_motor.db

  7. IOC Startup file • iocBoot/iocdemo/st.cmd:# Create simulated motors:# (card, axis, low limit, high limit, home, # cards, # axes)motorSimCreate(0, 0, 0, 36000, 0, 1, 4)# Setup the Asyn layer# (portname, low-level driver drvet name, card, number of axes on card)drvAsynMotorConfigure("motorSim1", "motorSim", 0, 4) • record(dbLoadRecords "db/sim_motor.db", "S=ky9")

  8. Database: Parker 6K • record(motor,"$(S):controller0motor0"){… field(DTYP, "PC6K") field(OUT, "#C0 S0")…}

  9. IOC Startup file # Setup the Asyn layerdrvAsynIPPortConfigure ("pc6k8","192.168.62.10:4001")asynOctetSetInputEos("pc6k8",0,">")asynOctetSetOutputEos("pc6k8",0,"\r")# Test direct communication within IOC shellasynOctetConnect("pc6k8", "pc6k8")asynOctetWriteRead("pc6k8", "TPC")# Maybe send init. commandsasynOctetWriteRead("pc6k8", "DRIVE00000000")# Log basic in/out textsasynSetTraceMask("pc6k8", 0, 0x2)asynSetTraceIOMask("pc6k8", 0, 2)# Parker/Compumotor# (1) maximum number of controllers in system# (2) motor task polling rate (min=1Hz, max=60Hz)PC6KSetup(1, 60)# (1) controller being configured# (2) asyn port name (string)PC6KConfig(0, "pc6k8") dbLoadRecords("db/pc6kmotor.db", "S=CG1D")

  10. Parker 6K https://trac.sns.gov/slowcontrols/wiki/Parker6K : • Relationship between • Raw motor commands “1V46;1D1000;1GO;…” • Motor record • Spreadsheet

  11. More • Pre/post move commands • Example: Energize, de-energize motor • ‘DMOV’ to check if motor is ‘done’ • …

  12. ‘Asyn’-Based motor support Original: Motor Record • Abstraction, common denominator for many different types of motor hardware • Fixed number of fields • How to support controllers that allow trajectory? Now: Asyn-based • Can add per-function records • Waveform: download trajectory points • BO: Start tracing trajectory • …

  13. Summary • Motor record has many fields • Fundamentally • Write desired position to record • Monitor DMOV, maybe RBV • Details vary.Need to spend time w/ specific motor hardware

More Related