use INSTR instead of PREFIX to make the same as sinqMotor
This commit is contained in:
2
Makefile
2
Makefile
@ -8,7 +8,7 @@ ARCH_FILTER=RHEL%
|
||||
|
||||
# additional module dependencies
|
||||
REQUIRED+=calc
|
||||
# REQUIRED+=s7plcFW
|
||||
REQUIRED+=sinqS7plcFW
|
||||
|
||||
# General DB files to include in the release
|
||||
TEMPLATES += db/sps_status.db
|
||||
|
20
README.md
20
README.md
@ -4,13 +4,25 @@ A collection of standardised SPS databases (or "modules") for interacting with
|
||||
the control unit itself and other external hardware.
|
||||
|
||||
This makes use of the
|
||||
[s7plcFW Epics driver](https://git.psi.ch/epics_driver_modules/s7plcFW) for
|
||||
[s7plcFW Epics driver](https://gitea.psi.ch/lin-epics-modules/sinqS7plcFW) for
|
||||
communication with the Siemens 7th Generation PLC via the Fetch-Write Protocol.
|
||||
|
||||
# Shutter Module
|
||||
|
||||
```
|
||||
epicsEnvSet("PREFIX", "SQ:INSTRUMENT") # can also be set in runScript call
|
||||
This script allows the shutter at the instrument to be opened and closed as
|
||||
well as providing access to many status bits and messages.
|
||||
|
||||
runScript "$(sinqSPS_DIR)shutter.cmd" "SPS_IP=172.28.101.26, FETCH_DB=2000"
|
||||
```
|
||||
epicsEnvSet("INSTR", "SQ:INSTRUMENT:") # can also be set in runScript call
|
||||
|
||||
runScript("$(sinqSPS_DIR)shutter.cmd","SPS_IP=172.28.101.26,FETCH_DB=210")
|
||||
```
|
||||
|
||||
The directly exposed database fields can be found in
|
||||
[shutter.substitutions](./templates/shutter.substitutions).
|
||||
|
||||
A simplified status value and status message is created from these fields via
|
||||
the logic in [shutter.db](./db/shutter.db).
|
||||
|
||||
The corresponding nicos device is located at
|
||||
[nicos\_sinq/devices/epics/shutter.py](https://gitea.psi.ch/lin-instrument-computers/Nicos/src/branch/release-3.12/nicos_sinq/devices/epics/shutter.py).
|
||||
|
@ -1,4 +1,4 @@
|
||||
record(bi,"$(PREFIX):$(SPS_REGISTER_NAME):$(BIT_NAME)")
|
||||
record(bi,"$(INSTR)$(SPS_REGISTER_NAME):$(BIT_NAME)")
|
||||
{
|
||||
field(DTYP, "S7plcFW")
|
||||
field(DESC, "$(DESC)")
|
||||
|
@ -1,4 +1,4 @@
|
||||
record(stringin, "$(PREFIX):$(SPS_REGISTER_NAME):$(STRING_NAME)-Msg")
|
||||
record(stringin, "$(INSTR)$(SPS_REGISTER_NAME):$(STRING_NAME)-Msg")
|
||||
{
|
||||
field(DTYP, "S7plcFW")
|
||||
field(INP, "@$(SPS_REGISTER_NAME)/$(OFFSET) L=$(LENGTH)")
|
||||
|
@ -1,4 +1,4 @@
|
||||
record(bo, "$(PREFIX):$(SPS_REGISTER_NAME):SHUTTER")
|
||||
record(bo, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER")
|
||||
{
|
||||
field(DESC, "Open or close the shutter")
|
||||
field(DTYP, "Soft Channel")
|
||||
@ -6,40 +6,40 @@ record(bo, "$(PREFIX):$(SPS_REGISTER_NAME):SHUTTER")
|
||||
field(VAL, 0)
|
||||
field(ZNAM, "Closed")
|
||||
field(ONAM, "Open")
|
||||
field(FLNK, "$(PREFIX):$(SPS_REGISTER_NAME):SHUTTER-CONTROL PP")
|
||||
field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-CONTROL PP")
|
||||
}
|
||||
|
||||
# The Exposed SPS Interface has an open register and a close register. You need
|
||||
# to write 1 to the corresponding register to perform said action. This, in
|
||||
# combination with "$(PREFIX):$(SPS_REGISTER_NAME):SHUTTER", maps the binay 0/1
|
||||
# combination with "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER", maps the binay 0/1
|
||||
# to writing a 1 to the required register.
|
||||
record(seq, "$(PREFIX):$(SPS_REGISTER_NAME):SHUTTER-CONTROL")
|
||||
record(seq, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-CONTROL")
|
||||
{
|
||||
field(SELM, "Specified")
|
||||
field(SELL, "$(PREFIX):$(SPS_REGISTER_NAME):SHUTTER.VAL NPP")
|
||||
field(SELL, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER.VAL NPP")
|
||||
field(DO0, 1)
|
||||
field(DO1, 1)
|
||||
field(LNK0, "$(PREFIX):$(SPS_REGISTER_NAME):CLOSE-SHUTTER PP")
|
||||
field(LNK1, "$(PREFIX):$(SPS_REGISTER_NAME):OPEN-SHUTTER PP")
|
||||
field(LNK0, "$(INSTR)$(SPS_REGISTER_NAME):CLOSE-SHUTTER PP")
|
||||
field(LNK1, "$(INSTR)$(SPS_REGISTER_NAME):OPEN-SHUTTER PP")
|
||||
}
|
||||
|
||||
record(calc, "$(PREFIX):$(SPS_REGISTER_NAME):MAP-STATUS")
|
||||
record(calc, "$(INSTR)$(SPS_REGISTER_NAME):MAP-STATUS")
|
||||
{
|
||||
field(DESC, "Maps Status Variables to singular status")
|
||||
field(INPA, "$(PREFIX):$(SPS_REGISTER_NAME):SHUTTER-READY NPP")
|
||||
field(INPB, "$(PREFIX):$(SPS_REGISTER_NAME):NOT-LOCKED NPP")
|
||||
field(INPC, "$(PREFIX):$(SPS_REGISTER_NAME):REMOTE-OKAY NPP")
|
||||
field(INPD, "$(PREFIX):$(SPS_REGISTER_NAME):PSYS-OK NPP")
|
||||
field(INPE, "$(PREFIX):$(SPS_REGISTER_NAME):EMERGENCY-STOP-OFF NPP")
|
||||
field(INPA, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-READY NPP")
|
||||
field(INPB, "$(INSTR)$(SPS_REGISTER_NAME):NOT-LOCKED NPP")
|
||||
field(INPC, "$(INSTR)$(SPS_REGISTER_NAME):REMOTE-OKAY NPP")
|
||||
field(INPD, "$(INSTR)$(SPS_REGISTER_NAME):PSYS-OK NPP")
|
||||
field(INPE, "$(INSTR)$(SPS_REGISTER_NAME):EMERGENCY-STOP-OFF NPP")
|
||||
field(CALC, "(E=0||B=0)?2:(A=0||D=0)?1:C=0?2:0")
|
||||
field(SCAN, ".1 second")
|
||||
field(FLNK, "$(PREFIX):$(SPS_REGISTER_NAME):STATUS PP")
|
||||
field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):STATUS PP")
|
||||
}
|
||||
|
||||
record(mbbi, "$(PREFIX):$(SPS_REGISTER_NAME):STATUS")
|
||||
record(mbbi, "$(INSTR)$(SPS_REGISTER_NAME):STATUS")
|
||||
{
|
||||
field(DESC, "Status of Shutter")
|
||||
field(INP, "$(PREFIX):$(SPS_REGISTER_NAME):MAP-STATUS NPP")
|
||||
field(INP, "$(INSTR)$(SPS_REGISTER_NAME):MAP-STATUS NPP")
|
||||
field(ZRVL, "0")
|
||||
field(ZRST, "Okay")
|
||||
field(ONVL, "1")
|
||||
@ -48,28 +48,24 @@ record(mbbi, "$(PREFIX):$(SPS_REGISTER_NAME):STATUS")
|
||||
field(TWST, "Error")
|
||||
field(THVL, "3")
|
||||
field(THST, "Unknown")
|
||||
field(FLNK, "$(PREFIX):$(SPS_REGISTER_NAME):STATUS-Msg PP")
|
||||
field(FLNK, "$(INSTR)$(SPS_REGISTER_NAME):STATUS-Msg PP")
|
||||
}
|
||||
|
||||
record(scalcout, "$(PREFIX):$(SPS_REGISTER_NAME):STATUS-Msg")
|
||||
record(scalcout, "$(INSTR)$(SPS_REGISTER_NAME):STATUS-Msg")
|
||||
{
|
||||
field(DESC, "Status Message")
|
||||
field(INPA, "$(PREFIX):$(SPS_REGISTER_NAME):OPEN NPP")
|
||||
field(INPC, "$(PREFIX):$(SPS_REGISTER_NAME):SHUTTER-READY NPP")
|
||||
field(INPD, "$(PREFIX):$(SPS_REGISTER_NAME):NOT-LOCKED NPP")
|
||||
field(INPE, "$(PREFIX):$(SPS_REGISTER_NAME):REMOTE-OKAY NPP")
|
||||
field(INPF, "$(PREFIX):$(SPS_REGISTER_NAME):PSYS-OK NPP")
|
||||
field(INPG, "$(PREFIX):$(SPS_REGISTER_NAME):EMERGENCY-STOP-OFF NPP")
|
||||
field(INAA, "$(PREFIX):$(SPS_REGISTER_NAME):OPEN-Msg NPP")
|
||||
field(INBB, "$(PREFIX):$(SPS_REGISTER_NAME):REMOTE-Msg NPP")
|
||||
field(INCC, "$(PREFIX):$(SPS_REGISTER_NAME):SHUTTER-READY-Msg NPP")
|
||||
field(INDD, "$(PREFIX):$(SPS_REGISTER_NAME):EMERGENCY-STOP-Msg NPP")
|
||||
field(INEE, "$(PREFIX):$(SPS_REGISTER_NAME):BLOCKED-Msg NPP")
|
||||
field(INFF, "$(PREFIX):$(SPS_REGISTER_NAME):BLOCKED-REASON-Msg NPP")
|
||||
field(INGG, "$(PREFIX):$(SPS_REGISTER_NAME):PSYS-OK-Msg NPP")
|
||||
# field(CALC, '(C=0||D=0||F=0)?"inv":G=0?DD:E=0?BB:AA')
|
||||
# field(CALC, 'E=0?BB:G=0?DD:AA')
|
||||
# field(CALC, 'G=0?DD:F=0?GG:C=0?CC:(EE[8,10]!="not")?(EE+": "+FF):E=0?BB:AA')
|
||||
# field(CALC, 'G=0?DD:F=0?GG:C=0?CC:D=0?(EE+": "+FF):E=0?BB:AA')
|
||||
field(INPA, "$(INSTR)$(SPS_REGISTER_NAME):OPEN NPP")
|
||||
field(INPC, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-READY NPP")
|
||||
field(INPD, "$(INSTR)$(SPS_REGISTER_NAME):NOT-LOCKED NPP")
|
||||
field(INPE, "$(INSTR)$(SPS_REGISTER_NAME):REMOTE-OKAY NPP")
|
||||
field(INPF, "$(INSTR)$(SPS_REGISTER_NAME):PSYS-OK NPP")
|
||||
field(INPG, "$(INSTR)$(SPS_REGISTER_NAME):EMERGENCY-STOP-OFF NPP")
|
||||
field(INAA, "$(INSTR)$(SPS_REGISTER_NAME):OPEN-Msg NPP")
|
||||
field(INBB, "$(INSTR)$(SPS_REGISTER_NAME):REMOTE-Msg NPP")
|
||||
field(INCC, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-READY-Msg NPP")
|
||||
field(INDD, "$(INSTR)$(SPS_REGISTER_NAME):EMERGENCY-STOP-Msg NPP")
|
||||
field(INEE, "$(INSTR)$(SPS_REGISTER_NAME):BLOCKED-Msg NPP")
|
||||
field(INFF, "$(INSTR)$(SPS_REGISTER_NAME):BLOCKED-REASON-Msg NPP")
|
||||
field(INGG, "$(INSTR)$(SPS_REGISTER_NAME):PSYS-OK-Msg NPP")
|
||||
field(CALC, 'G=0?DD:D=0?(EE+": "+FF):F=0?GG:C=0?CC:E=0?BB:AA')
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
record(bi, "$(PREFIX):$(SPS_REGISTER_NAME):ConnStatusFetch")
|
||||
record(bi, "$(INSTR)$(SPS_REGISTER_NAME):ConnStatusFetch")
|
||||
{
|
||||
field(DTYP, "S7plcFW stat")
|
||||
field(INP, "@$(SPS_REGISTER_NAME)")
|
||||
@ -7,7 +7,7 @@ record(bi, "$(PREFIX):$(SPS_REGISTER_NAME):ConnStatusFetch")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
record(bi, "$(PREFIX):$(SPS_REGISTER_NAME):ConnStatusWrite")
|
||||
record(bi, "$(INSTR)$(SPS_REGISTER_NAME):ConnStatusWrite")
|
||||
{
|
||||
field(DTYP, "S7plcFW stat2")
|
||||
field(INP, "@$(SPS_REGISTER_NAME)")
|
||||
|
@ -1,4 +1,4 @@
|
||||
record(bo, "$(PREFIX):$(SPS_REGISTER_NAME):$(BIT_NAME)")
|
||||
record(bo, "$(INSTR)$(SPS_REGISTER_NAME):$(BIT_NAME)")
|
||||
{
|
||||
field(DTYP, "S7plcFW")
|
||||
field(DESC, "$(DESC)")
|
||||
|
@ -1,4 +1,4 @@
|
||||
require s7plcFW, wall_e
|
||||
require sinqS7plcFW
|
||||
|
||||
# s7plcFWConfigure(
|
||||
# # Alias,
|
||||
@ -28,10 +28,10 @@ $(SET_SIM_MODE=#) $(SET_SIM_MODE) sleep 3
|
||||
s7plcFWConfigure("$(SPS_REGISTER_NAME)", "$(SPS_IP)", "$(FETCH_PORT=2000),1,$(FETCH_DB),0,$(SPS_FETCH_SIZE)", "$(WRITE_PORT=2001),1,$(WRITE_DB=$(FETCH_DB)),0,$(SPS_WRITE_SIZE)", "$(SPS_ENDIANNESS=1)", "$(SPS_RECEIVE_TIMEOUT=1000)", "$(SPS_RECEIVE_DELAY=200)", "0")
|
||||
|
||||
# Provides Connection Status PVs
|
||||
dbLoadRecords("$(sinqSPS_DB)/sps_status.db", "PREFIX=$(PREFIX), SPS_REGISTER_NAME=$(SPS_REGISTER_NAME)")
|
||||
dbLoadRecords("$(sinqSPS_DB)/sps_status.db", "INSTR=$(INSTR), SPS_REGISTER_NAME=$(SPS_REGISTER_NAME)")
|
||||
|
||||
# Shutter PVs
|
||||
dbLoadTemplate("$(sinqSPS_DB)/shutter.substitutions", "PREFIX=$(PREFIX), SPS_REGISTER_NAME=$(SPS_REGISTER_NAME)")
|
||||
dbLoadTemplate("$(sinqSPS_DB)/shutter.substitutions", "INSTR=$(INSTR), SPS_REGISTER_NAME=$(SPS_REGISTER_NAME)")
|
||||
|
||||
# Additional Mapping PVs
|
||||
dbLoadRecords("$(sinqSPS_DB)/shutter.db", "PREFIX=$(PREFIX), SPS_REGISTER_NAME=$(SPS_REGISTER_NAME)")
|
||||
dbLoadRecords("$(sinqSPS_DB)/shutter.db", "INSTR=$(INSTR), SPS_REGISTER_NAME=$(SPS_REGISTER_NAME)")
|
||||
|
Reference in New Issue
Block a user