Connec&ng(EPICS(to(TwinCAT( Torsten(Bgershausen( SW(Engineer( - - PowerPoint PPT Presentation

connec ng epics to twincat
SMART_READER_LITE
LIVE PREVIEW

Connec&ng(EPICS(to(TwinCAT( Torsten(Bgershausen( SW(Engineer( - - PowerPoint PPT Presentation

Connec&ng(EPICS(to(TwinCAT( Torsten(Bgershausen( SW(Engineer( Mo&on(Control(and(Automa&on(Group( www.europeanspalla&onsource.se( 2015E05E19( Overview( What(is(a(TwinCAT(system(?( Our(EPICS(Com(Module(for(TwinCAT(


slide-1
SLIDE 1

Connec&ng(EPICS(to(TwinCAT(

Torsten(Bögershausen( SW(Engineer( Mo&on(Control(and(Automa&on(Group(

www.europeanspalla&onsource.se(

2015E05E19(

slide-2
SLIDE 2

Overview(

  • What(is(a(TwinCAT(system(?(
  • Our(EPICS(Com(Module(for(TwinCAT(
  • Using(StreamDevice(–(Chopper((spinning(disc)(
  • Using(MotorRecord(–(Linear(axis(
  • Ongoing(developments(

(

(

slide-3
SLIDE 3

TwinCAT:(a(soU(PLC(system(

SW( PC( “SoU(PLC”( IO( IO( IO( IO( “real&me”( Fieldbus(

slide-4
SLIDE 4

Connec&ons(to(TwinCAT(

PLC( Mo&on( Ethercat(master( TwinCAT( real(&me( (kernel( winsock( Motor( Encoder,(switches( COM( OPC( EPICS(IOC( ADS( Control(network:(EPICS(channel(access( FB_DriveVirtual(

slide-5
SLIDE 5

EPICS(Com(Module(

PLC( Mo&on( Ethercat(master( TwinCAT( real(&me( (kernel( ADS(Router( ( winsock( EPICS(Com( Module( (real&me(under( ((TwinCAT)( EPICS(IOC( Motor( Encoder,(switches( FB_DriveVirtual(

slide-6
SLIDE 6

ASCII(data(

6(

IOC( StreamE( Device( TwinCAT( System( “Main.M1.fPosi&on=10.0;\n”( “OK;\n”( $(telnet(192.168.88.48(200( Main.M1.bBusy?;\r\n( 0;\r\n( Low(level(debugging( EPICS(TwinCAT(

slide-7
SLIDE 7

Disc(synchronized(with(the(14(Hz(pulse:( Baby(Chopper(

7(

slide-8
SLIDE 8

Chopper(Control(Demo(

8(

slide-9
SLIDE 9

Chopper(Control(Service(Mode(

9(

slide-10
SLIDE 10

MotorRecord::(move()(

  • TwincatMotorAxis::move(double(posi&on,(int(

rela&ve,(double(minVelocity,(double(maxVelocity,( double(accelera&on)(

  • {(/*(status(checking(not(shown(*/(
  • ((stopAxisInternal();(
  • ((setValueOnAxis("nCommand”,(rela&ve(?(2(:(3);(
  • ((setValueOnAxis("fPosi&on",(posi&on);(
  • ((sendVelocityAndAccelExecute(maxVelocity);(
  • }(

10(

slide-11
SLIDE 11

Single(Axis(

11(

slide-12
SLIDE 12

Ongoing(developments(E(1(

  • Single(transac&on:(chain(commands(

“Main.M1.bBusy?;Main.M1.fActPosition?;\n”
 “0;11.417835;\n”"

  • Retrieving(complete(motor(status(as(a(struct(

“Main.M1.stAxisStatus?;\n”( “Main.M1.stAxisStatus:(1=0,(2=0,(3=0,(4=0,( 5=0,6=0.000000,7=0.000000,8=0.000000,9=0.000000,(10=0,( 11=0,12=1,(13=1,14=0.000000,15=0,…;\n”(

  • Read(the(“RAW”(encoder(value:(

(ADR=16#3040020,16#80000049,2,18/

ADSPORT=501/?;"

(

12(

slide-13
SLIDE 13

Mo&on(Control(E(TODO(

  • Op&mize(
  • More(homing(procedures(

E Implement(in(the(mo&on(control(unit((MCU)( E Expose(them(via(EPICS(?(

  • (configura&on(parameters((

E(Which(are(needed(in(the(MCU(( E(which(need(to(be(exposed(via(EPICS(?(

((((Accelera&on,(Jerk,(SoU(limits)(

  • ((Health(status/alarms((

E(Internal(alarms(from(the(MCU(

  • More(automated(tes&ng(

– python(based,(pyEpics,(nose( ( (

13(

slide-14
SLIDE 14

Thanks(

  • Anders(Sandström,(MCAG(
  • EPICS(community(

(

  • Ques&on(s)(?(

14(