# Presentation: 176740

## Creating EPICS Databases with Capfast

- Nick Rees

## Introduction

- What is Capfast and why?
- How does it map to the EPICS database?
-  Capfast tutorial

## What is Capfast and why?

- Schematic capture tool typically used for circuit design.
- Not the leading schematic capture tool today
- I think it was stronger in the early days.
- Started as a UNIX tool and other Windows tools passed it by
- ... however it is very easily configurable
- All schematics, symbols and configurations & menus are text files
- Outputs a standard net-list format.
- ... and has some powerful features:
- Provides hierarchical drawings to structure a database
- Provides bus-mechanisms for bundling links

## How does Capfast map to EPICS?

## Differences

- EPICS records typically have more fields than electronics parts have configurable properties, so this is area is handled poorly.
- EPICS data links push or pull data from fields (which are passive), so connection diagrams are a bit confusing at first:
- Fundamentally, there can only be one field in a single, multiply connected, wire.
- Any output link will push into this field.
- Any input link will pull data from this field.
- Links also imply processing depending on the properties of the link.
- Processing links pass no data and can only be connected to SLNK

## Capfast tutorial

- Capfast has two editors:
- xschedit for schematics
- xsymed for symbols.
- You create new symbols to encapsulate other drawings and build a drawing hierarchy.

## The basics

- <Esc> key aborts current operation.
- Mouse buttons are context sensitive and their meanings are given at the top of the screen.
- Menu shortcuts available by using the underlined letter (no <Alt> required on Unix).
- Number keys or arrow keys can be used for scrolling (5 centers the schematic on the screen).
- V R shortcut (_V_iew _R_edraw) will force a redraw.
- Menu’s are PC or Motif like.
- Clicking in the drawing area sets up markers for the next command (e.g. define a wire route).

## Schedit screen

## Getting a border

## Got a border, now add a record

## Place it and give it a name

## Get a calculation record

## Place it and give it a name

## Add an output record

## Click twice and connect them up

## Wired up...

## Next wire

## Add hardware inputs and outputs

## Done

## Hardware inputs and outputs

- These are a method of putting constant values into link fields.
- The val(outp) and vap(in) properties contain the string value that the link field will be set to.
- Normally used for hardware, but also can be used to link to a record of a know name, which doesn’t appear in the current drawing hierarchy.

## Edit these properties

## Property (field) editing

- Click on the property line and edit in the Value box.
_**A**_**dd/Modify** saves the change.
_**D**_**isplay...** allows you to set the display attributes.
**D**_**e**_**lete** deletes the field - or returns it to the default value.
_**M**_**ove** moves the highlighted properties (fields).
_**C**_**opy** allows you to copy properties to other records.

## A more typical record (UNIX)

## Edit more properties etc...

## Commonly used items

_**F**_**ile->**_**H**_**ierarchy->**_**D**_**escend** (or _**A**_**scend**)
_**F**_**ile->**_**H**_**ierarchy->Create **_**S**_**ymbol from Schematic**
_**E**_**dit-> **anything!
_**V**_**iew->**_**R**_**edraw**
_**V**_**iew->Zoom **_**A**_**rea**
_**P**_**art->Schematic **_**C**_**onnectors->Hierarchical Input**
_**P**_**art->**_**B**_**orders**
_**P**_**art->**_**E**_**pics Library->**
_**T**_**ext-> **anything!
_**W**_**ire->Draw **_**W**_**ire**
_**W**_**ire->**_**R**_**eroute**

## Commonly used items (ctd)

_**P**_**roperties->**_**E**_**dit**
_**S**_**elect->**_**I**_**tems**
_**S**_**elect->**_**M**_**ore Items**
_**S**_**elect->**_**A**_**rea**
_**S**_**elect->Symbol to **_**R**_**eplace**
_**S**_**elect->**_**C**_**lear**

## Different Symbol Styles

## User defined ports

- Note that the larger symbols have ports with names like FLD0, FLD1 etc.
- These are ports with user defined names.
- Names are defined by editing a property called username(u0) (or u1, u2 etc).
-  Replace the default value of that property (FLD0) with the name of the field you want the connecting link to refer to (e.g. SCAN).

## Hierarchical Schematics

- Use xschedit to design the lower levels of the hierarchy.
- Use hierarchical connectors for off page connections.
- Use xsymed to create a symbol of the same name which encapsulates the lower level schematic,
- The pin-out should have pins with the same name as the hierarchical connectors.
- This can be simplified slightly using:
- 	_**F**_**ile->**_**H**_**ierarchy->Create **_**S**_**ymbol from Schematic**
- EPICS symbols typically have flying leads that are two grid boxes long, with the field name written above the flying lead.
- Use xschedit to create another schematic which incorporates the new symbol.

## Hierarchies (ctd)

- Parameters can be passed into a hierarchical symbol by:
- Using the form $(parameter)where ever the parameter is used in the included schematics.
- Defining a property of the symbol (in xsymed) with a name beginning with ‘set’ and a value of the parameter name, space and then the value.
- Example: the parameter test will be set to the value:  	         ‘A parameter value for the parameter test’

- The last character of the set name is unimportant. It just makes the property name unique.

## Hierarchical record names

- By default, record names have the form:
- <schematic name>:<symbol name>
- Symbols in hierachically included diagrams have the form:
- <schematic name>:<symbol name level 1>:...:<symbol name>
- There is a maximum length to record names of 28 characters - so if the hierarchy is deep, keep names short.
- PV and name properties can over-ride the default naming conventions, but I have never had to use them.

## Printing

- Aliases schprint and symprint to print a schematic as on letter sized paper on the default printer.
- Look at their definition for more details.

## Starting up

- xschedit and xsymed take three command line options:
- -k : specifies or adds to the menu search path
- -p : specifies or adds to the symbol search path
- -w : specifies the number of lines in the text region.
- Example:
- xschedit 	-p+${EPICS_BASE}/templates/capfast/sym \
- 			-k${EPICS_BASE}/templates/capfast+
- The + is significant since is says whether to pre-pend or append to the path.
- The file cad.rc contains the default options
- Searched for first in your local directory, then in your home directory and finally in the the capfast directories.

## Starting up (ctd)

- Startup commands can be put into schedit.rc or symed.rc in your home directory.
- You can copy schedit.rc from ~npr:
- :constrainprops epics.rules
- :set libchoice epics
- :mload schedit2
- :set asksnames YES
- :set askwnames NO
- :set askpnames YES
- :set cellnames YES
- :set wirenames NO
- :set cpyinst YES

- Constrains property values
- Selects epics parts library
- Reloads the menus

## Turning Schematics into Databases

- Done using make
- Specify the database name (extension of .db) using the DATA make variable in Makefile.Host.
- The must be a schematic of the same name, but with extension .sch.
- Dependencies are currently broken, so hierarchies are not handled well - you have to touch the top schematic.

## Exercise

- Create an example application with a capfast, dl and startup directories using applSetup.pl
- Create a schematic similar to the one shown in this talk. However, use your imagination if you like!
- Use the simulation fields and add some simulated plant feedback.
- Edit the example startup.vws to include your database.
- Load onto the VME crate.
- Create a display to change the set-point, and graph the results.