# Presentation: 527897

## Supported Hardware

- Ned D. Arnold
- APS

## How Can I Find Device Support ?

- http://csg.lbl.gov/EPICS/Supported.HW.html
- EPICS Collaboration Meetings
- tech-talk mailing list (ask nicely)
- tech-talk archives (phrase search)
- Hardware Vendor
- BiRa
- Kinetic Systems

**Notes:**
The problem with a collaboration ...
Duplicate effort if you don’t know its been done !

This is most obvious in the area of hardware support.

How can you find support for your hardware ?
Beg !

## Ways To Support Your Hardware

- Instrument Specific Device Support
- Write a device support module (e.g. devHp54520.c) that is specific to that instrument/device
- All protocol is hidden from users.
- Easy to handle device peculiarities
- Generic Support
- Provide device specific information in the database
- Special field in a custom record
- Parm field of I/O Link

## Popular Hardware

- VME
- Many modules available
- Generic VME Record - allows simple devices to be used w/o device support
- Generic A16/D16 device support
- Specify register offset and bit field in I/O link
- VXI
- Resource Manager (drvVxi)
- Automatically configures MXI Modules to support multiple crate systems. Hierarchies allowed.
- Static and Dynamic Addressing Supported
- A24/A32 Address Allocation
- Libraries provide ...
- lookup modules based on Logical Address, slot, Make, or Model
- exclusive access to a device for a single driver
- core routines for Message Passing Devices

## Popular Hardware (cont.)

- GPIB
- Hardware
- NI1014 VME card
- HP-2050A Ethernet-GPIB Bridge
- IP-488 on a MVME162 (using Message Passing Facility)
- Instrument Specific Device Support
- Template device support routine available
- Edit parameter table which specifies command strings and parsing format for each supported function
- static struct gpibCmd gpibCmds[] =
- {
- /* Param */
- /*  0 */ FILL,
- /*  1 : set frequency : AO */
-          {&DSET_AO, GPIBWRITE, IB_Q_HIGH, NULL, "FA %.3f", 0, 20, NULL, 0 ,0,
-           NULL, NULL, -1},
- /*  2 : read frequency : AI */
-          {&DSET_AI, GPIBREAD , IB_Q_HIGH, "SEND FREQ", " F OUT %lf", 0, 20,
-                   rdCheck, 0 ,0, NULL, NULL, -1},
- /*  3 : set output level : AO */
-          {&DSET_AO, GPIBWRITE, IB_Q_HIGH, NULL, "LEVEL %.1f", 0, 20, NULL, 0 ,0,
-           NULL, NULL, -1},
- /*  4 : read output level : AI */
-          {&DSET_AI, GPIBREAD , IB_Q_HIGH, "SEND POWER", " P INT %lf", 0, 20,
-               rdCheck, 0 ,0, NULL, NULL, -1},
- /*  5 : read LOCK status : BI */
-          {&DSET_BI, GPIBREAD , IB_Q_LOW, "SEND STATUS", " LOCK %lu", 0, 30,
-                   NULL, 0 ,0, NULL, NULL, -1},
- /*  6 : read LEVEL status : BI (if LOCK status != 1, this read will fail */
-          {&DSET_BI, GPIBREAD , IB_Q_LOW, "SEND STATUS", " LOCK 1 LEVEL %lu",
-                   0, 30, NULL ,0 ,0, NULL, NULL, -1}
- };

## Popular Hardware (cont.)

- GPIB (cont.)
- Generic GPIB Record - allows simple communications w/o device support
- Use with stringCalc record to create/parse strings
- GPIB Interact utility allows menu driven interaction with devices
- Serial
- Hardware
- Serial ports on CPU
- drvSerial, drvAscii, devAscii
- IP Serial (using the message passing facility)
- Device Support
- Examples available for device specific support
- Specify in parameter field (Mooney)
- Generic Serial Record - allows simple communications w/o device support
- Serial port configuration on the fly
- Use with stringCalc record to create/parse strings

## Popular Hardware (cont.)

-  Allen Bradley
- VME Scanner (Remote I/O or “Blue Hose”)
- 1771 Series I/O Adapters
- 1791 I/O
- 1771-DCM (mailbox to PLC)
- SLC500-DCM (mailbox to PLC)
- Serial port to PLC serial port
- Access to any element in PLC
- AB DataHighway +
- Access to any element in PLC

## Popular Hardware (cont.)

- PLC Interfaces
- AllenBradley PLC5 via 1771-DCM
- 10 messages of 64 words each from PLC
- 1 message of 64 words to PLC
- Device support fetches info from DCM record, which holds all the data from the DCM
- AllenBradley via SLC500 DCM
- Uses a message of 8 words for reading/writing
- GE Fanuc
- PLC dumps a serial stream to the IOC
- PLC Direct (Koyo)
- DL240/DL250 CPUs using DirectNet
- IOC can read the entire PLC memory map
- IOC can write to a designated memory  block (512 words)
- Modbus+
- Device support for ioc [KEK]
- CA Server on a PC talking to Modicon 984 PLC’s via Modbus+ [MSU Cyclotron Lab]

## Popular Hardware (cont.)

- CAMAC
- Hytec Serial Highway Driver (VME)
- Generic CAMAC Record - allows simple communications w/o device support
- Bitbus
- Two VME boards supported
- Canbus