use INSTR instead of PREFIX to make the same as sinqMotor

This commit is contained in:
2025-04-24 17:38:25 +02:00
parent e93610f184
commit 3ef72a5b16
8 changed files with 57 additions and 49 deletions

View File

@ -8,7 +8,7 @@ ARCH_FILTER=RHEL%
# additional module dependencies # additional module dependencies
REQUIRED+=calc REQUIRED+=calc
# REQUIRED+=s7plcFW REQUIRED+=sinqS7plcFW
# General DB files to include in the release # General DB files to include in the release
TEMPLATES += db/sps_status.db TEMPLATES += db/sps_status.db

View File

@ -4,13 +4,25 @@ A collection of standardised SPS databases (or "modules") for interacting with
the control unit itself and other external hardware. the control unit itself and other external hardware.
This makes use of the 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. communication with the Siemens 7th Generation PLC via the Fetch-Write Protocol.
# Shutter Module # Shutter Module
``` This script allows the shutter at the instrument to be opened and closed as
epicsEnvSet("PREFIX", "SQ:INSTRUMENT") # can also be set in runScript call 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).

View File

@ -1,4 +1,4 @@
record(bi,"$(PREFIX):$(SPS_REGISTER_NAME):$(BIT_NAME)") record(bi,"$(INSTR)$(SPS_REGISTER_NAME):$(BIT_NAME)")
{ {
field(DTYP, "S7plcFW") field(DTYP, "S7plcFW")
field(DESC, "$(DESC)") field(DESC, "$(DESC)")

View File

@ -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(DTYP, "S7plcFW")
field(INP, "@$(SPS_REGISTER_NAME)/$(OFFSET) L=$(LENGTH)") field(INP, "@$(SPS_REGISTER_NAME)/$(OFFSET) L=$(LENGTH)")

View File

@ -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(DESC, "Open or close the shutter")
field(DTYP, "Soft Channel") field(DTYP, "Soft Channel")
@ -6,40 +6,40 @@ record(bo, "$(PREFIX):$(SPS_REGISTER_NAME):SHUTTER")
field(VAL, 0) field(VAL, 0)
field(ZNAM, "Closed") field(ZNAM, "Closed")
field(ONAM, "Open") 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 # 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 # 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. # 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(SELM, "Specified")
field(SELL, "$(PREFIX):$(SPS_REGISTER_NAME):SHUTTER.VAL NPP") field(SELL, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER.VAL NPP")
field(DO0, 1) field(DO0, 1)
field(DO1, 1) field(DO1, 1)
field(LNK0, "$(PREFIX):$(SPS_REGISTER_NAME):CLOSE-SHUTTER PP") field(LNK0, "$(INSTR)$(SPS_REGISTER_NAME):CLOSE-SHUTTER PP")
field(LNK1, "$(PREFIX):$(SPS_REGISTER_NAME):OPEN-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(DESC, "Maps Status Variables to singular status")
field(INPA, "$(PREFIX):$(SPS_REGISTER_NAME):SHUTTER-READY NPP") field(INPA, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-READY NPP")
field(INPB, "$(PREFIX):$(SPS_REGISTER_NAME):NOT-LOCKED NPP") field(INPB, "$(INSTR)$(SPS_REGISTER_NAME):NOT-LOCKED NPP")
field(INPC, "$(PREFIX):$(SPS_REGISTER_NAME):REMOTE-OKAY NPP") field(INPC, "$(INSTR)$(SPS_REGISTER_NAME):REMOTE-OKAY NPP")
field(INPD, "$(PREFIX):$(SPS_REGISTER_NAME):PSYS-OK NPP") field(INPD, "$(INSTR)$(SPS_REGISTER_NAME):PSYS-OK NPP")
field(INPE, "$(PREFIX):$(SPS_REGISTER_NAME):EMERGENCY-STOP-OFF 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(CALC, "(E=0||B=0)?2:(A=0||D=0)?1:C=0?2:0")
field(SCAN, ".1 second") 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(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(ZRVL, "0")
field(ZRST, "Okay") field(ZRST, "Okay")
field(ONVL, "1") field(ONVL, "1")
@ -48,28 +48,24 @@ record(mbbi, "$(PREFIX):$(SPS_REGISTER_NAME):STATUS")
field(TWST, "Error") field(TWST, "Error")
field(THVL, "3") field(THVL, "3")
field(THST, "Unknown") 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(DESC, "Status Message")
field(INPA, "$(PREFIX):$(SPS_REGISTER_NAME):OPEN NPP") field(INPA, "$(INSTR)$(SPS_REGISTER_NAME):OPEN NPP")
field(INPC, "$(PREFIX):$(SPS_REGISTER_NAME):SHUTTER-READY NPP") field(INPC, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-READY NPP")
field(INPD, "$(PREFIX):$(SPS_REGISTER_NAME):NOT-LOCKED NPP") field(INPD, "$(INSTR)$(SPS_REGISTER_NAME):NOT-LOCKED NPP")
field(INPE, "$(PREFIX):$(SPS_REGISTER_NAME):REMOTE-OKAY NPP") field(INPE, "$(INSTR)$(SPS_REGISTER_NAME):REMOTE-OKAY NPP")
field(INPF, "$(PREFIX):$(SPS_REGISTER_NAME):PSYS-OK NPP") field(INPF, "$(INSTR)$(SPS_REGISTER_NAME):PSYS-OK NPP")
field(INPG, "$(PREFIX):$(SPS_REGISTER_NAME):EMERGENCY-STOP-OFF NPP") field(INPG, "$(INSTR)$(SPS_REGISTER_NAME):EMERGENCY-STOP-OFF NPP")
field(INAA, "$(PREFIX):$(SPS_REGISTER_NAME):OPEN-Msg NPP") field(INAA, "$(INSTR)$(SPS_REGISTER_NAME):OPEN-Msg NPP")
field(INBB, "$(PREFIX):$(SPS_REGISTER_NAME):REMOTE-Msg NPP") field(INBB, "$(INSTR)$(SPS_REGISTER_NAME):REMOTE-Msg NPP")
field(INCC, "$(PREFIX):$(SPS_REGISTER_NAME):SHUTTER-READY-Msg NPP") field(INCC, "$(INSTR)$(SPS_REGISTER_NAME):SHUTTER-READY-Msg NPP")
field(INDD, "$(PREFIX):$(SPS_REGISTER_NAME):EMERGENCY-STOP-Msg NPP") field(INDD, "$(INSTR)$(SPS_REGISTER_NAME):EMERGENCY-STOP-Msg NPP")
field(INEE, "$(PREFIX):$(SPS_REGISTER_NAME):BLOCKED-Msg NPP") field(INEE, "$(INSTR)$(SPS_REGISTER_NAME):BLOCKED-Msg NPP")
field(INFF, "$(PREFIX):$(SPS_REGISTER_NAME):BLOCKED-REASON-Msg NPP") field(INFF, "$(INSTR)$(SPS_REGISTER_NAME):BLOCKED-REASON-Msg NPP")
field(INGG, "$(PREFIX):$(SPS_REGISTER_NAME):PSYS-OK-Msg NPP") field(INGG, "$(INSTR)$(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(CALC, 'G=0?DD:D=0?(EE+": "+FF):F=0?GG:C=0?CC:E=0?BB:AA') field(CALC, 'G=0?DD:D=0?(EE+": "+FF):F=0?GG:C=0?CC:E=0?BB:AA')
} }

View File

@ -1,4 +1,4 @@
record(bi, "$(PREFIX):$(SPS_REGISTER_NAME):ConnStatusFetch") record(bi, "$(INSTR)$(SPS_REGISTER_NAME):ConnStatusFetch")
{ {
field(DTYP, "S7plcFW stat") field(DTYP, "S7plcFW stat")
field(INP, "@$(SPS_REGISTER_NAME)") field(INP, "@$(SPS_REGISTER_NAME)")
@ -7,7 +7,7 @@ record(bi, "$(PREFIX):$(SPS_REGISTER_NAME):ConnStatusFetch")
field(SCAN, "I/O Intr") field(SCAN, "I/O Intr")
} }
record(bi, "$(PREFIX):$(SPS_REGISTER_NAME):ConnStatusWrite") record(bi, "$(INSTR)$(SPS_REGISTER_NAME):ConnStatusWrite")
{ {
field(DTYP, "S7plcFW stat2") field(DTYP, "S7plcFW stat2")
field(INP, "@$(SPS_REGISTER_NAME)") field(INP, "@$(SPS_REGISTER_NAME)")

View File

@ -1,4 +1,4 @@
record(bo, "$(PREFIX):$(SPS_REGISTER_NAME):$(BIT_NAME)") record(bo, "$(INSTR)$(SPS_REGISTER_NAME):$(BIT_NAME)")
{ {
field(DTYP, "S7plcFW") field(DTYP, "S7plcFW")
field(DESC, "$(DESC)") field(DESC, "$(DESC)")

View File

@ -1,4 +1,4 @@
require s7plcFW, wall_e require sinqS7plcFW
# s7plcFWConfigure( # s7plcFWConfigure(
# # Alias, # # 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") 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 # 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 # 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 # 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)")