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
REQUIRED+=calc
# REQUIRED+=s7plcFW
REQUIRED+=sinqS7plcFW
# General DB files to include in the release
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.
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).

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(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(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(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')
}

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(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)")

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(DESC, "$(DESC)")

View File

@ -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)")