Add Mpdbus pressure Reading default tip
authorHeinz Junkes <junkes@fhi-berlin.mpg.de>
Tue, 02 Nov 2021 13:19:46 +0100
changeset 5 85c191e174df
parent 4 f4ddf0ee30a9
Add Mpdbus pressure Reading
IOCDOSEApp/Db/.fht.db.swo
IOCDOSEApp/Db/Makefile
IOCDOSEApp/Db/dpt-mod.db
IOCDOSEApp/Db/fht.db
IOCDOSEApp/Db/fht.proto
IOCDOSEApp/Db/vega.db
IOCDOSEApp/Db/vega.proto
IOCDOSEApp/src/Makefile
configure/RELEASE
iocBoot/iocIOCDOSE/st.cmd
Binary file IOCDOSEApp/Db/.fht.db.swo has changed
--- a/IOCDOSEApp/Db/Makefile	Tue Oct 28 04:47:56 2014 +0100
+++ b/IOCDOSEApp/Db/Makefile	Tue Nov 02 13:19:46 2021 +0100
@@ -11,6 +11,13 @@
 # Create and install (or just install) into <top>/db
 # databases, templates, substitutions like this
 #DB += xxx.db
+DB_INSTALLS += fht.db
+DB_INSTALLS += vega.db
+DB_INSTALLS += dpt-mod.db
+#DB += fht.proto
+#DB += vega.proto
+DB_INSTALLS += $(TOP)/IOCDOSEApp/Db/fht.proto
+DB_INSTALLS += $(TOP)/IOCDOSEApp/Db/vega.proto
 
 #----------------------------------------------------
 # If <anyname>.db template is not named <anyname>*.template add
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/IOCDOSEApp/Db/dpt-mod.db	Tue Nov 02 13:19:46 2021 +0100
@@ -0,0 +1,7 @@
+# ai record template for register inputs
+record(ai, "$(P)$(R):Pressure") {
+field(DTYP,"asynInt32")
+field(INP,"@asyn($(PORT) $(OFFSET))$(DATA_TYPE)")
+field(SCAN,"I/O Intr")
+field(EGU, "Pa")
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/IOCDOSEApp/Db/fht.db	Tue Nov 02 13:19:46 2021 +0100
@@ -0,0 +1,92 @@
+record(ai, "$(P)$(R)GetRadiation_1")
+{
+    field(DESC, "Get Radiation")
+    field(DTYP, "stream")
+    field(INP,  "@fht.proto getRadiation(138) $(BUS)")
+    field(SCAN, "1 second")
+    field(EGU, "uSv/h") 
+    field(FLNK, "$(P)$(R)GetRadiation_1:Hour")
+}
+
+record(calc, "$(P)$(R)GetRadiation_1:Add") {
+    field(INPA, "$(P)$(R)GetRadiation_1 CP NMS")
+    field(INPB, "1")
+    field(CALC, "B>0?VAL+A:0;B:=1")
+    field(FLNK, "$(P)$(R)GetRadiation_1:Counter") 
+}
+
+record(calc, "$(P)$(R)GetRadiation_1:Counter") {
+    field(INPA, "$(P)$(R)GetRadiation_1:Add NPP ")
+    field(CALC, "A>0?VAL+1:0")
+    field(FLNK, "$(P)$(R)GetRadiation_1:SumOneHour") 
+}
+
+record(calc, "$(P)$(R)GetRadiation_1:SumOneHour") {
+    field(INPA, "$(P)$(R)GetRadiation_1:Add NPP ")
+    field(INPB, "$(P)$(R)GetRadiation_1:Counter NPP ")
+    field(CALC, "B>0?A/B:0")
+    field(EGU, "uSv/h") 
+}
+
+record(stringin, "$(P)$(R)GetRadiation_1:Hour") {
+    field(DTYP, "Soft Timestamp")
+    field(INP, "@%M")
+    field(TSEL, "$(P)$(R)GetRadiation_1.TIME")
+    field(FLNK, "$(P)$(R)GetRadiation_1:HourClear")
+}
+
+record(calcout, "$(P)$(R)GetRadiation_1:HourClear") {
+    field(INPA, "$(P)$(R)GetRadiation_1:Hour NPP NMS")
+    field(INPB, "0")
+    field(CALC, "A<B?0:1;B:=A")
+    field(DOPT, "Use CALC")
+    field(OOPT, "When Zero")
+    field(OUT,  "$(P)$(R)GetRadiation_1:Add.B PP")
+}
+
+
+record(ai, "$(P)$(R)GetRadiation_2")
+{
+    field(DESC, "Get Radiation")
+    field(DTYP, "stream")
+    field(INP,  "@fht.proto getRadiation(239) $(BUS)")
+    field(EGU, "uSiv")
+    field(SCAN, "1 second")
+    field(FLNK, "$(P)$(R)GetRadiation_2:Hour")
+}
+
+record(calc, "$(P)$(R)GetRadiation_2:Add") {
+    field(INPA, "$(P)$(R)GetRadiation_2 CP NMS")
+    field(INPB, "1")
+    field(CALC, "B>0?VAL+A:0;B:=1")
+    field(FLNK, "$(P)$(R)GetRadiation_2:Counter") 
+}
+
+record(calc, "$(P)$(R)GetRadiation_2:Counter") {
+    field(INPA, "$(P)$(R)GetRadiation_2:Add NPP ")
+    field(CALC, "A>0?VAL+1:0")
+    field(FLNK, "$(P)$(R)GetRadiation_2:SumOneHour") 
+}
+
+record(calc, "$(P)$(R)GetRadiation_2:SumOneHour") {
+    field(INPA, "$(P)$(R)GetRadiation_2:Add NPP ")
+    field(INPB, "$(P)$(R)GetRadiation_2:Counter NPP ")
+    field(CALC, "B>0?A/B:0")
+    field(EGU, "uSv/h") 
+}
+
+record(stringin, "$(P)$(R)GetRadiation_2:Hour") {
+    field(DTYP, "Soft Timestamp")
+    field(INP, "@%M")
+    field(TSEL, "$(P)$(R)GetRadiation_2.TIME")
+    field(FLNK, "$(P)$(R)GetRadiation_2:HourClear")
+}
+
+record(calcout, "$(P)$(R)GetRadiation_2:HourClear") {
+    field(INPA, "$(P)$(R)GetRadiation_2:Hour NPP NMS")
+    field(INPB, "0")
+    field(CALC, "A<B?0:1;B:=A")
+    field(DOPT, "Use CALC")
+    field(OOPT, "When Zero")
+    field(OUT,  "$(P)$(R)GetRadiation_2:Add.B PP")
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/IOCDOSEApp/Db/fht.proto	Tue Nov 02 13:19:46 2021 +0100
@@ -0,0 +1,7 @@
+Terminator = ETX;
+
+getRadiation {
+    out "\a01RM\$1";
+    in "\a01RM%E%*i%*i%*x";
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/IOCDOSEApp/Db/vega.db	Tue Nov 02 13:19:46 2021 +0100
@@ -0,0 +1,37 @@
+#
+# VEGA power control
+#
+record(ao, "$(P)$(R)EnergyMode")
+{
+   field(DESC, "force Energy mode")
+   field(DTYP, "stream")
+   field(OUT,  "@vega.proto forceEnergyMode $(BUS)")
+   field(PINI, "YES")
+}
+
+
+record(ai, "$(P)$(R)GetEnergy")
+{
+    field(DESC, "Get energy")
+    field(DTYP, "stream")
+    field(INP,  "@vega.proto getEnergy $(BUS)")
+    field(EGU, "J")
+    field(PREC,"4")
+    field(SCAN, "2 second")
+}
+
+record(ai, "$(P)$(R)GetRange")
+{
+   field(DESC, "Get range")
+   field(DTYP, "stream")
+   field(INP,  "@vega.proto getRange $(BUS)")
+   field(PINI, "YES")
+}
+
+record(ao, "$(P)$(R)SetRange")
+{
+    field(DESC, "Set range")
+    field(DTYP, "stream")
+    field(FLNK, "$(P)$(R)GetRange")
+    field(OUT,  "@vega.proto setRange $(BUS)")
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/IOCDOSEApp/Db/vega.proto	Tue Nov 02 13:19:46 2021 +0100
@@ -0,0 +1,23 @@
+
+Terminator = CR LF;
+InTerminator = LF;
+
+getEnergy {
+    out "$SE";
+    in "*\ %E\r\000";
+}
+
+setRange {
+    out "$WN%f";
+    in "*\r\000";
+}
+
+getRange {
+    out "$RN";
+    in "*%d\r\000";
+}
+
+forceEnergyMode {
+    out "$FE";
+}
+
--- a/IOCDOSEApp/src/Makefile	Tue Oct 28 04:47:56 2014 +0100
+++ b/IOCDOSEApp/src/Makefile	Tue Nov 02 13:19:46 2021 +0100
@@ -19,6 +19,9 @@
 IOCDOSE_DBD += asSupport.dbd
 IOCDOSE_DBD += devIocStats.dbd
 IOCDOSE_DBD += devTimestampWorkaround.dbd
+IOCDOSE_DBD += reccaster.dbd
+IOCDOSE_DBD += asyn.dbd
+IOCDOSE_DBD += modbusSupport.dbd
 
 # Streamdevice
 IOCDOSE_DBD += stream.dbd
@@ -33,6 +36,8 @@
 IOCDOSE_LIBS += autosave
 IOCDOSE_LIBS += asyn
 IOCDOSE_LIBS += stream
+IOCDOSE_LIBS += reccaster
+IOCDOSE_LIBS += modbus
 
 
 # IOCDOSE_registerRecordDeviceDriver.cpp derives from IOCDOSE.dbd
--- a/configure/RELEASE	Tue Oct 28 04:47:56 2014 +0100
+++ b/configure/RELEASE	Tue Nov 02 13:19:46 2021 +0100
@@ -31,7 +31,8 @@
 SNCSEQ=$(SUPPORT)/seq-2-1-14
 AUTOSAVE=$(SUPPORT)/autosave-5-1
 IOCSTATS=$(SUPPORT)/iocStats-3-1-11
-
+RECCASTER=$(SUPPORT)/recsync/client
+MODBUS=$(SUPPORT)/modbus-R2-5
 
 # EPICS_BASE usually appears last so other apps can override stuff:
 EPICS_BASE=/home/epics/EPICS/base
--- a/iocBoot/iocIOCDOSE/st.cmd	Tue Oct 28 04:47:56 2014 +0100
+++ b/iocBoot/iocIOCDOSE/st.cmd	Tue Nov 02 13:19:46 2021 +0100
@@ -5,13 +5,12 @@
 
 epicsEnvSet ("IOC", "IOCDOSE")
 epicsEnvSet ("LOG_DIR", "/srv/ioc/log")
-
 epicsEnvSet ("EPICS_CA_ADDR_LIST","10.0.1.255")
-
 epicsEnvSet ("EPICS_CA_AUTO_ADDR_LIST","NO")
-
+epicsEnvSet ("STREAM_PROTOCOL_PATH", "db")
 
-epicsEnvSet ("STREAM_PROTOCOL_PATH", "db")
+epicsEnvSet ("HRK_INET", "10.0.0.206:4002")
+epicsEnvSet ("HRK_LINK", "HRK")
 
 ## Register all support components
 dbLoadDatabase ("dbd/${IOC}.dbd")
@@ -21,22 +20,29 @@
 #asynSetTraceMask("", 0, 17)
 
 # Configure asyn tcp ports
-drvAsynIPPortConfigure ("VEGA", "10.0.0.205:4001")
+#drvAsynIPPortConfigure ("VEGA", "10.0.0.205:4001")
 drvAsynIPPortConfigure ("FHT_1", "10.0.0.200:4012")
 drvAsynIPPortConfigure ("FHT_2", "10.0.0.200:4013")
 
+# Pressure Reading, Modbus 
+drvAsynIPPortConfigure ("${HRK_LINK}","${HRK_INET}",0,0,0)
+modbusInterposeConfig ("${HRK_LINK}",1,1000,6)
+drvModbusAsynConfigure ("A0_In_Word","${HRK_LINK}",1,4,1,1,4,30000,"HRK")
+
 #asynSetTraceIOMask ("${VEGA_LINK}", 0,2) 
 #asynSetTraceFile("${VEGA_LINK}",-1,"")
 #asynSetTraceMask("${VEGA_LINK}",-1,0x019)
 #asynSetTraceIOMask("${VEGA_LINK}",-1,0x2)
 
-dbLoadRecords ("db/vega.db","P=FHIFEL:,R=VEGA:,BUS=VEGA")
+#dbLoadRecords ("db/vega.db","P=FHIFEL:,R=VEGA:,BUS=VEGA")
 dbLoadRecords ("db/fht.db","P=FHIFEL:,R=FHT1:,BUS=FHT_1")
 dbLoadRecords ("db/fht.db","P=FHIFEL:,R=FHT2:,BUS=FHT_2")
 
 ## Load record instances
 dbLoadRecords ("db/IOC-stats.db", "IOC=${IOC}")
 
+dbLoadRecords ("db/dpt-mod.db", "P=FHIFEL:,R=DPT-MOD:Pressure,PORT=A0_In_Word,OFFSET=0,DATA_TYPE=INT16")
+
 epicsEnvSet ("streamDebug","1") 
 
 iocInit()