From c6dd421768fdac346820af6ae0e8072b5f6d52f5 Mon Sep 17 00:00:00 2001 From: Edward Wall Date: Mon, 24 Mar 2025 17:41:21 +0100 Subject: [PATCH] Working on simplifying what should be shown to the user --- Makefile | 7 ++--- db/readbit.db | 2 +- db/shutter.db | 48 +++++++++++++++++++++++++++++++++ db/writebit.db | 1 + scripts/shutter.cmd | 7 +++-- templates/shutter.substitutions | 38 +++++++++++++------------- 6 files changed, 78 insertions(+), 25 deletions(-) create mode 100644 db/shutter.db diff --git a/Makefile b/Makefile index adb3a5b..566d21d 100644 --- a/Makefile +++ b/Makefile @@ -7,6 +7,7 @@ EPICS_VERSIONS=7.0.7 ARCH_FILTER=RHEL% # additional module dependencies +REQUIRED+=calc REQUIRED+=s7plcFW # General DB files to include in the release @@ -15,9 +16,9 @@ TEMPLATES += db/writebit.db TEMPLATES += db/readbit.db TEMPLATES += db/readstring.db -# Templates for specific devices to include in the release +# Specific devices to include in the release +TEMPLATES += db/shutter.db TEMPLATES += templates/shutter.substitutions - -# Scripts to include in the release SCRIPTS += scripts/shutter.cmd + SCRIPTS += sim/shutter_sim.py diff --git a/db/readbit.db b/db/readbit.db index 623c796..de7a2b2 100644 --- a/db/readbit.db +++ b/db/readbit.db @@ -1,10 +1,10 @@ record(bi,"$(PREFIX):$(SPS_REGISTER_NAME):$(BIT_NAME)") { field(DTYP, "S7plcFW") + field(DESC, "$(DESC)") field(INP, "@$(SPS_REGISTER_NAME)/$(OFFSET) T=BYTE B=$(BIT)") field(PINI, "YES") field(SCAN, "I/O Intr") field(ZNAM, "0") field(ONAM, "1") } - diff --git a/db/shutter.db b/db/shutter.db new file mode 100644 index 0000000..e904984 --- /dev/null +++ b/db/shutter.db @@ -0,0 +1,48 @@ +record(calc, "$(PREFIX):$(SPS_REGISTER_NAME):MAP-STATUS") +{ + field(DESC, "Maps Status Variables to singular status") + 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(CALC, "(C=0||D=0||E=0||F=0||G=0)?2:A=1") + field(SCAN, ".1 second") + field(FLNK, "$(PREFIX):$(SPS_REGISTER_NAME):STATUS PP") +} + +record(mbbi, "$(PREFIX):$(SPS_REGISTER_NAME):STATUS") +{ + field(DESC, "Simplified Status of Shutter") + field(INP, "$(PREFIX):$(SPS_REGISTER_NAME):MAP-STATUS NPP") + field(ZRVL, "0") + field(ZRST, "Closed") + field(ONVL, "1") + field(ONST, "Open") + field(TWVL, "2") + field(TWST, "Error") + # Should never happen + field(THVL, "3") + field(THST, "Invalid") + field(FLNK, "$(PREFIX):$(SPS_REGISTER_NAME):STATUS-Msg PP") +} + +record(scalcout, "$(PREFIX):$(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') +} diff --git a/db/writebit.db b/db/writebit.db index e55cda8..1eba373 100644 --- a/db/writebit.db +++ b/db/writebit.db @@ -1,6 +1,7 @@ record(bo, "$(PREFIX):$(SPS_REGISTER_NAME):$(BIT_NAME)") { field(DTYP, "S7plcFW") + field(DESC, "$(DESC)") field(OUT, "@$(SPS_REGISTER_NAME)/$(OFFSET) T=BYTE B=$(BIT)") field(ZNAM, "0") field(ONAM, "1") diff --git a/scripts/shutter.cmd b/scripts/shutter.cmd index 7b8477e..c58ca5f 100644 --- a/scripts/shutter.cmd +++ b/scripts/shutter.cmd @@ -11,7 +11,7 @@ require s7plcFW # # out IO Interrupt Delay (if 0 then only reacts on a change) # ) -epicsEnvSet("SPS_REGISTER_NAME", "SPS-$(FETCH_DB)") +epicsEnvSet("SPS_REGISTER_NAME", "SPS-SHUTTER") epicsEnvSet("SPS_FETCH_SIZE", "152") # Seems that 1 doesn't work epicsEnvSet("SPS_WRITE_SIZE", "2") @@ -28,7 +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", "PREFIX=$(PREFIX), SPS_REGISTER_NAME=$(SPS_REGISTER_NAME)") # Shutter PVs dbLoadTemplate("$(sinqSPS_DB)/shutter.substitutions", "PREFIX=$(PREFIX), SPS_REGISTER_NAME=$(SPS_REGISTER_NAME)") + +# Additional Mapping PVs +dbLoadRecords("$(sinqSPS_DB)/shutter.db", "PREFIX=$(PREFIX), SPS_REGISTER_NAME=$(SPS_REGISTER_NAME)") diff --git a/templates/shutter.substitutions b/templates/shutter.substitutions index b0a4cf5..12f7714 100644 --- a/templates/shutter.substitutions +++ b/templates/shutter.substitutions @@ -1,22 +1,22 @@ file "$(sinqSPS_DB)/writebit.db" { pattern - {OFFSET, BIT, BIT_NAME } - {0 , 0 , "OPEN-SHUTTER" } - {0 , 1 , "CLOSE-SHUTTER" } + {OFFSET, BIT, BIT_NAME , DESC } + {0 , 0 , "OPEN-SHUTTER" , "Opens the Shutter" } + {0 , 1 , "CLOSE-SHUTTER", "Closes the Shutter"} } file "$(sinqSPS_DB)/readbit.db" { pattern - {OFFSET, BIT, BIT_NAME } - {1 , 0 , "PSYS-OK" } - {1 , 1 , "SHUTTER-READY" } - {1 , 2 , "EMERGENCY-STOP-OFF"} - {1 , 3 , "NOT-LOCKED" } - {1 , 4 , "CLOSED" } - {1 , 5 , "OPEN" } - {1 , 6 , "REMOTE-OKAY" } + {OFFSET, BIT, BIT_NAME , DESC} + {1 , 0 , "PSYS-OK" , "" } + {1 , 1 , "SHUTTER-READY" , "" } + {1 , 2 , "EMERGENCY-STOP-OFF", "" } + {1 , 3 , "NOT-LOCKED" , "" } + {1 , 4 , "CLOSED" , "" } + {1 , 5 , "OPEN" , "" } + {1 , 6 , "REMOTE-OKAY" , "" } } # The way that the strings are currently implemented in the SPS, the first two @@ -26,12 +26,12 @@ file "$(sinqSPS_DB)/readbit.db" file "$(sinqSPS_DB)/readstring.db" { pattern - {OFFSET, LENGTH, STRING_NAME } - {6 , 11 , "PSYS-OK-TXT" } - {20 , 17 , "SHUTTER-READY-TXT" } - {40 , 17 , "EMERGENCY-STOP-TXT" } - {60 , 19 , "BLOCKED-TXT" } - {82 , 24 , "BLOCKED-REASON-TXT" } - {108 , 14 , "OPEN-TXT" } - {124 , 27 , "REMOTE-TXT" } + {OFFSET, LENGTH, STRING_NAME } + {6 , 11 , "PSYS-OK" } + {20 , 17 , "SHUTTER-READY" } + {40 , 17 , "EMERGENCY-STOP" } + {60 , 19 , "BLOCKED" } + {82 , 24 , "BLOCKED-REASON" } + {108 , 14 , "OPEN" } + {124 , 27 , "REMOTE" } }