EPICS on CompactRIO - PowerPoint Presentation

Download Report

Transcript EPICS on CompactRIO - PowerPoint Presentation

Running EPICS on NI CompactRIO Initial Experience

Eric Björklund (LA-UR-09-02665)

What is CompactRIO?

• • • •

Power-PC based Real Time Controller (RTC).

FPGA Backplane Connected via PCI bus Designed for harsh environments

• •

Fast PLC

– 

Sec vs. mSec Response Programmed in LabVIEW instead of Ladder Logic

Both FPGA and RTC are programmed in LabVIEW

Advantages to Running EPICS IOC on CompactRIO

• • •

Faster and more deterministic data acquisition and control

– –

No intermediate ethernet hop (as with EtherIP) Could consider EPICS closed loop control Flexibility

Application can be partitioned between LabVIEW and EPICS whichever way makes the most sense.

FPGA runs independently from Power PC

Critical system functions can survive soft reboot.

What does it take to run EPICS IOC on CompactRIO?

• • • • • •

Real Time Controller (RTC) is a Power PC (ppc603) running vxWorks (6.3) vxWorks license not required!

NI has permission to distribute the vxWorks header files Began working on project in late 2007 National Instruments, LANSCE, and Cosylab collaboration Cosylab Provided:

– –

Custom version of cRIO BSP that included NFS and Telnet Shared memory library similar to the SNS LabVIEW/EPICS shared memory interface. EPICS runs at lower priority (100-199) than LabVIEW (10-100)

What do you need to run EPICS on CompactRIO?

• • • • •

EPICS-Enabled vxWorks BSP for the cRIO (Cosylab/NI) LabVIEW 8.6.1 (although we use 8.5.1 for our prototype system) vxWorks header files (NI can supply)

vxWorks 6.3 for LabVIEW 8.5.1 vxWorks 6.6 for LabVIEW 8.6.1

Configuration files (if you aren’t running the same version of vxWorks as the cRIO)

We copied the “ppc603_long” configuration files and pointed them to the vxWorks 6.3 headers.

• • • • •

CONFIG.Common.vxWorks-cRIO CONFIG_SITE.Common.vxWorks-cRIO CONFIG_SITE.linux-x86_64.vxWorks-cRIO CONFIG_SITE.linux-x86.vxWorks-cRIO CONFIG_SITE.win32-x86.vxWorks-cRIO Shared Memory Library (actually two librarys)

Shared Memory Library – Two Parts

• • • • • •

The LabVIEW Part vxWorks only (no EPICS calls) Allocates and manages shared memory resources Interfaces to LabVIEW through “Call Library Function Node” VI’s Lives on RTC’s non-volatile RAM disk.

Automatically loaded when the RTC VI that references it is run.

Two forms:

vxWorks shared library (.out) for run-time (munch file works fine)

Windows .DLL for compile time (this can be just a stub) EPICS Part

• • • •

EPICS Device Support Layer Interfaces to LabVIEW library for access to shared memory resources.

Built into the EPICS application and loaded over the network with the EPICS application code.

EPICS database records not automatically created (as with SNS system)

Shared Memory Interface (as seen from LabVIEW)

• •

Get Command Setpoints from EPICS Send Command Setpoints to FPGA

• •

Get Readback Data From FPGA Make Readback Data Available to EPICS

LabVIEW “Driver” (FPGA Code) – 16 Channel ADC

Read ADC Channels

Pack data

Store packed data in buffer to be transmitted up to the RTC

Store hardware status word

Experience

• • • • •

Already have one “Proof of Principle” application in production (2 binary channels).

This shutdown we tried our first non-trivial application.

Replace one accelerator module’s “Industrial I/O” channels with cRIO.

– – – –

12 binary outputs 36 binary inputs 12 analog inputs 5 stepper motor channels Replaces two Control Logix crates with one cRIO Basic SCADA

– –

No closed loop. No exotic timing. But….

System must emulate our 1960’s vintage “RICE” system.

• •

Things We Learned FPGA is faster than Ladder Logic

PLC had not been fast enough to implement our “Dual Energy” binary channels. cRIO handled them without a problem.

FPGAs are not computers

Run-time bindings we have come to rely on in conventional programming (including LabVIEW) can not be done in FPGA

– –

This is particularly true of I/O to the cRIO modules.

This code can not be implemented with a loop.

Three million gates doesn’t go as far as you might think

– –

Entire application did not fit on Virtex 2 FPGA Used two cRIOs, one for binary and one for analog/stepper motor control.

– –

Binary I/O took 99% of FPGA (2 slices left).

Expect newer models with Virtex 5 FPGA could hold entire application.

Other Things We Learned

National Instruments and Cosylab were

VERY

helpful in getting us to this point.

Current Status

• • •

Binary I/O cRIO is installed and running in the production system.

Ran out of time before startup to install analog cRIO Binary I/O cRIO is installed and in checkout

Final Bug chased down today……

And then……

• •

Site wide fire alarms went off…..

Stay tuned for further developments:

– –

ICALEPCS 2009 NI Big Physics Symposium

National Instruments Support for EPICS

EPICS IOC – LabVIEW integration on cRIO available on request

Native Channel Access (CA) server in LabVIEW

Can run on both NI CompactRIO and PXI platforms