Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci-scripts-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ jobs:

# Resulting test files will be uploaded and attached to this run
- name: Upload tapfiles Artifact
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: tapfiles ${{ matrix.name }}
path: '**/O.*/*.tap'
Expand Down
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,6 @@ BhcConfigFiles/
.ccls-cache
.cache

st*.cmd
st*.cmd

RELEASE_SITE
24 changes: 21 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@
This is a device support module for the EK9000, which couples EtherCAT terminals (specifically the ELXXXX terminals from Beckhoff) to a modbus network.
Because it uses modbus, it's runnable on any IOC without needing a kernel module or other support software.

Documentation: [Manual](https://github.com/slaclab/epics-ek9000/wiki/Manual)
[Documentation](https://github.com/slaclab/epics-ek9000/wiki/Manual)

[DOE Code](https://www.osti.gov/doecode/biblio/75566)

[doi:10.11578/dc.20220707.2](https://doi.org/10.11578/dc.20220707.2)

## Dependencies

Expand All @@ -12,7 +16,12 @@ Documentation: [Manual](https://github.com/slaclab/epics-ek9000/wiki/Manual)

## Building

See the wiki page for instructions on building and a small example.
C++11 is **required** as of R1.7.4

Build like any other EPICS module:
```
make
```

## Contributing

Expand All @@ -22,7 +31,7 @@ If you'd like to contribute to this, you can open a pull request with changes, a

If you have any questions or comments about the module, you can reach me at jeremy.lorelli.1337@gmail.com

# Known Issues
## Known Issues

The EK9000 doesn't really make figuring out a register map easy, so please keep these things in mind:

Expand Down Expand Up @@ -52,3 +61,12 @@ At least some of the following terminal families are supported:

Any other terminals are not generally supported, but a few exceptions exist.
Support for motor terminals (EL70XX) is currently being developed.

## Copyright Notice:

COPYRIGHT © SLAC National Accelerator Laboratory. All rights reserved. This work is supported [in part] by the U.S. Department of Energy, Office of Basic Energy Sciences under contract DE-AC02-76SF00515.

## Usage Restrictions:

Neither the name of the Leland Stanford Junior University, SLAC National Accelerator Laboratory, U.S. Department of Energy nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

44 changes: 0 additions & 44 deletions RELEASE

This file was deleted.

70 changes: 70 additions & 0 deletions RELEASE_NOTES
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
R1.7.4 Mar 28th, 2025 (lorelli)
- Require C++11
- Use LINR=SLOPE for thermocouple terminals
- Fix some signed compare warnings

R1.7.3 Aug 1st, 2024 (lorelli)
- Improvements for bipolar analog input and output terminals. (#67)
- Absolute value w/MSB sign still unsupported.
- Update asyn to R4.39-1.0.2 and modbus to R3.2-1.0.2 (#68 )
- CI Improvements (#66)
- Using Ubuntu 22.04 now
- Expand list of clang-tidy checks
- Reverted USE_TYPED_DSET for now as it requires EPICS base 7.0.4 or later.

R1.7.2 Jan 16th, 2024 (lorelli)
- ENH: allow separate record name in ek9000_status.db by @JJL772 in #56
- optimizations and some fault tolerance by @JJL772 in #54
- FIX: el3681 PDO size and layout by @JJL772 in #59
- ENH: enable USE_TYPED_DSET and convert all dsets to it by @JJL772 in #57
- Change record field defaults and allow overrides of them by @JJL772 in #63

R1.7.1 Aug 14th, 2023 (lorelli)
- FIX: builds for older versions of EPICS base (#49)
- FIX: fix sanitizer warnings by (#49)
- FIX: incorrect usage of epicsParseInt (#52)

R1.7.0 Jul 26th, 2023 (lorelli)
- Switched to INST_IO links for mapping terminals (#44)
- Improved record defaults (#40)
- Added status and configuration records (#46)
- Added screen for status/configuration records (#46)
- Skip device poll if it's not connected (#47)
- Changed default PREC to 3 for analog I/O records (#39)

R1.6.0 May 30th, 2023 (lorelli)
- Added support for mbbiDirect and mbboDirect records with digital I/O terminals (#34)
- Added find_terminals tool and fixed EL2794 (By @klauer in #24)
- Fixed support for EL5042, EL3681, EL3004, EL3008, EL3012 & EL3044 (#36)
- Fixed missing DB templates for EL5001 and EL5002 (#38)
- Fixed EL3681 support
- PINI is no longer set for input records
- Many other improvements to stability and maintainability of the module

R1.5.0 Feb 4th, 2022 (klauer)
- ENH: Added el5042 support by @mamontironi in #12
- REF: Massive changes - switch to I/O interrupt-based reading instead of polling by @mcb64 in #14
- FIX: locking issue by @mcb64 in #16
- MNT: restore README.md by @klauer in #17
- MNT/REF: script cleanup and clarification by @klauer in #18
- ENH: add find_terminal tool and EL2794 support by @klauer in #19 (use this to help with adding new terminals)
- FIX: el50xx / el5042 I/O interrupt support by @klauer in #20
- MNT: Replace NUM_TERMINALS with ArraySize by @JJL772 in #22
- MNT: gcc 4.4 support with NO_FORCE_CXX03=1
- CONFIG_SITE support and other build system fixes

R1.2.2 Jul 9th, 2021 (lorelli)
- Fixed PDO size on EL3681
- Fixed record support conversion being disabled for analog input records

R1.2.1 Jul 2nd, 2021 (lorelli)
- Fix compile for GCC 4.8

R1.2.0 Oct 13th, 2020 (lorelli)
- Added support for EL4104, EL4134, EL4114, EL3681 and EL2816 terminals
- Added support for thermocouple modules
- Added new device type EL36XX for EL36XX terminals
- Added new device type EL331X for EL331X terminals
- Updated generation scripts
- Lots of code cleanup

2 changes: 2 additions & 0 deletions SupportedDevices.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
* EL2088
* EL2124
* EL2794
* EL2798
* EL2808
* EL2816
* EL3001
Expand Down Expand Up @@ -114,5 +115,6 @@
* EL5002
* EL5042
* EL7047
* EL9505


3 changes: 2 additions & 1 deletion configure/RELEASE
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,14 @@
# If using the sequencer, point SNCSEQ at its top directory:
#SNCSEQ = $(MODULES)/seq-ver

-include $(TOP)/../../RELEASE_SITE
-include $(TOP)/RELEASE_SITE

# Set RULES here if you want to use build rules from somewhere
# other than EPICS_BASE:
#RULES = $(MODULES)/build-rules

# ==========================================================
# ==========================================================
# Define the version strings for all needed modules
# Use naming pattern:
# FOO_MODULE_VERSION = R1.2
Expand Down
10 changes: 10 additions & 0 deletions ek9000App/Db/EL2798.substitutions
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@

file EL2798.template
{ pattern
{
TERMINAL,

}
{
}
}
64 changes: 64 additions & 0 deletions ek9000App/Db/EL2798.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
record(bo,"$(TERMINAL):1")
{
field(DTYP, "EL20XX")
field(ZNAM, "$(ZNAM=low)")
field(ONAM, "$(ONAM=high)")
field(OUT, "@device=$(DEVICE),pos=$(POS),channel=1,type=EL2798")
}

record(bo,"$(TERMINAL):2")
{
field(DTYP, "EL20XX")
field(ZNAM, "$(ZNAM=low)")
field(ONAM, "$(ONAM=high)")
field(OUT, "@device=$(DEVICE),pos=$(POS),channel=2,type=EL2798")
}

record(bo,"$(TERMINAL):3")
{
field(DTYP, "EL20XX")
field(ZNAM, "$(ZNAM=low)")
field(ONAM, "$(ONAM=high)")
field(OUT, "@device=$(DEVICE),pos=$(POS),channel=3,type=EL2798")
}

record(bo,"$(TERMINAL):4")
{
field(DTYP, "EL20XX")
field(ZNAM, "$(ZNAM=low)")
field(ONAM, "$(ONAM=high)")
field(OUT, "@device=$(DEVICE),pos=$(POS),channel=4,type=EL2798")
}

record(bo,"$(TERMINAL):5")
{
field(DTYP, "EL20XX")
field(ZNAM, "$(ZNAM=low)")
field(ONAM, "$(ONAM=high)")
field(OUT, "@device=$(DEVICE),pos=$(POS),channel=5,type=EL2798")
}

record(bo,"$(TERMINAL):6")
{
field(DTYP, "EL20XX")
field(ZNAM, "$(ZNAM=low)")
field(ONAM, "$(ONAM=high)")
field(OUT, "@device=$(DEVICE),pos=$(POS),channel=6,type=EL2798")
}

record(bo,"$(TERMINAL):7")
{
field(DTYP, "EL20XX")
field(ZNAM, "$(ZNAM=low)")
field(ONAM, "$(ONAM=high)")
field(OUT, "@device=$(DEVICE),pos=$(POS),channel=7,type=EL2798")
}

record(bo,"$(TERMINAL):8")
{
field(DTYP, "EL20XX")
field(ZNAM, "$(ZNAM=low)")
field(ONAM, "$(ONAM=high)")
field(OUT, "@device=$(DEVICE),pos=$(POS),channel=8,type=EL2798")
}

10 changes: 10 additions & 0 deletions ek9000App/Db/EL2798_mbboDirect.substitutions
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@

file EL2798.template
{ pattern
{
TERMINAL,

}
{
}
}
6 changes: 6 additions & 0 deletions ek9000App/Db/EL2798_mbboDirect.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
record(mbboDirect,"$(TERMINAL)")
{
field(DTYP, "EL20XX_mbboDirect")
field(OUT, "@device=$(DEVICE),pos=$(POS),channel=1,type=EL2798")
}

1 change: 1 addition & 0 deletions ek9000App/Db/EL3311.template
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ record(ai,"$(TERMINAL):1")
field(SCAN, "I/O Intr")
field(PREC, "$(PREC=3)")
field(ESLO, "0.1")
field(LINR, "$(LINR=SLOPE)")
field(INP, "@device=$(DEVICE),pos=$(POS),channel=1,type=EL3311")
}

2 changes: 2 additions & 0 deletions ek9000App/Db/EL3312.template
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ record(ai,"$(TERMINAL):1")
field(SCAN, "I/O Intr")
field(PREC, "$(PREC=3)")
field(ESLO, "0.1")
field(LINR, "$(LINR=SLOPE)")
field(INP, "@device=$(DEVICE),pos=$(POS),channel=1,type=EL3312")
}

Expand All @@ -15,6 +16,7 @@ record(ai,"$(TERMINAL):2")
field(SCAN, "I/O Intr")
field(PREC, "$(PREC=3)")
field(ESLO, "0.1")
field(LINR, "$(LINR=SLOPE)")
field(INP, "@device=$(DEVICE),pos=$(POS),channel=2,type=EL3312")
}

4 changes: 4 additions & 0 deletions ek9000App/Db/EL3314.template
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ record(ai,"$(TERMINAL):1")
field(SCAN, "I/O Intr")
field(PREC, "$(PREC=3)")
field(ESLO, "0.1")
field(LINR, "$(LINR=SLOPE)")
field(INP, "@device=$(DEVICE),pos=$(POS),channel=1,type=EL3314")
}

Expand All @@ -15,6 +16,7 @@ record(ai,"$(TERMINAL):2")
field(SCAN, "I/O Intr")
field(PREC, "$(PREC=3)")
field(ESLO, "0.1")
field(LINR, "$(LINR=SLOPE)")
field(INP, "@device=$(DEVICE),pos=$(POS),channel=2,type=EL3314")
}

Expand All @@ -25,6 +27,7 @@ record(ai,"$(TERMINAL):3")
field(SCAN, "I/O Intr")
field(PREC, "$(PREC=3)")
field(ESLO, "0.1")
field(LINR, "$(LINR=SLOPE)")
field(INP, "@device=$(DEVICE),pos=$(POS),channel=3,type=EL3314")
}

Expand All @@ -35,6 +38,7 @@ record(ai,"$(TERMINAL):4")
field(SCAN, "I/O Intr")
field(PREC, "$(PREC=3)")
field(ESLO, "0.1")
field(LINR, "$(LINR=SLOPE)")
field(INP, "@device=$(DEVICE),pos=$(POS),channel=4,type=EL3314")
}

10 changes: 10 additions & 0 deletions ek9000App/Db/EL9505.substitutions
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@

file EL9505.template
{ pattern
{
TERMINAL,

}
{
}
}
18 changes: 18 additions & 0 deletions ek9000App/Db/EL9505.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
record(bi,"$(TERMINAL):1")
{
field(DTYP, "EL10XX")
field(ZNAM, "$(ZNAM=low)")
field(ONAM, "$(ONAM=high)")
field(SCAN, "I/O Intr")
field(INP, "@device=$(DEVICE),pos=$(POS),channel=1,type=EL9505")
}

record(bi,"$(TERMINAL):2")
{
field(DTYP, "EL10XX")
field(ZNAM, "$(ZNAM=low)")
field(ONAM, "$(ONAM=high)")
field(SCAN, "I/O Intr")
field(INP, "@device=$(DEVICE),pos=$(POS),channel=2,type=EL9505")
}

Loading
Loading