Skip to content

Commit 687acb7

Browse files
committed
New file
1 parent 34f368c commit 687acb7

2 files changed

Lines changed: 261 additions & 0 deletions

File tree

ipApp/Db/MPC_Ethernet.proto

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# MPC_Stream_Ethernet.proto
2+
3+
# StreamDevice protocol file for Gamma MPC pumps using Ethernet
4+
5+
# Mark Rivers
6+
# January 23, 2026
7+
8+
ReplyTimeout = 2000;
9+
WriteTimeout = 1000;
10+
11+
readString {
12+
out "cmd \$1 \$2";
13+
in "OK 00 %s";
14+
ExtraInput = Ignore;
15+
}
16+
17+
writeString {
18+
out "cmd \$1 \$2";
19+
in "OK 00 %s";
20+
ExtraInput = Ignore;
21+
}
22+
23+
readFloat {
24+
out "cmd \$1 \$2";
25+
in "OK 00 %f";
26+
ExtraInput = Ignore;
27+
}
28+
29+
writeFloat {
30+
out "cmd \$1 \$2 %f";
31+
in "OK 00";
32+
ExtraInput = Ignore;
33+
}
34+
35+
readInt {
36+
out "cmd \$1 \$2";
37+
in "OK 00 %d";
38+
ExtraInput = Ignore;
39+
}
40+
41+
writeInt {
42+
out "cmd \$1 \$2,%d";
43+
in "OK 00";
44+
ExtraInput = Ignore;
45+
}
46+
47+
writeHVOnOff {
48+
out "cmd %{37|38} \$1";
49+
in "OK 00";
50+
ExtraInput = Ignore;
51+
}
52+
53+
readAutoRestart {
54+
out "cmd 34 \$1";
55+
in "OK 00 %{NO|YES}";
56+
ExtraInput = Ignore;
57+
}
58+
59+
writeAutoRestart {
60+
out "cmd 33 \$1,%{N|Y}";
61+
in "OK 00";
62+
ExtraInput = Ignore;
63+
}

ipApp/Db/MPC_Ethernet.template

Lines changed: 198 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,198 @@
1+
# Database for MPC ion pump controller using Gamma Protocol for Ethernet
2+
# Serial uses a different protocol
3+
#
4+
# Parameters
5+
# $(P) PV name prefix (e.g. 13IDA:)
6+
# $(PUMP) PV name for this specific ion pump (e.g. ip1:)
7+
# $(PORT) asyn PORT name
8+
# $(PN) Pump number (1 or 2)
9+
10+
record(stringin,"$(P)$(PUMP):STAT") {
11+
field(SCAN, "1 second")
12+
field(DTYP, "stream")
13+
field(INP, "@MPC_Ethernet.proto readString(OD,$(PN)) $(PORT)")
14+
field(FLNK, "$(P)$(PUMP):PRES PP MS")
15+
}
16+
17+
record(ai,"$(P)$(PUMP):PRES") {
18+
field(PREC, "1")
19+
field(DTYP, "stream")
20+
field(INP, "@MPC_Ethernet.proto readFloat(OB,$(PN)) $(PORT)")
21+
field(FLNK, "$(P)$(PUMP):CUR PP MS")
22+
}
23+
24+
record(ai,"$(P)$(PUMP):CUR") {
25+
field(PREC, "1")
26+
field(DTYP, "stream")
27+
field(INP, "@MPC_Ethernet.proto readFloat(OA,$(PN)) $(PORT)")
28+
field(FLNK, "$(P)$(PUMP):VOLT PP MS")
29+
}
30+
31+
record(ai,"$(P)$(PUMP):VOLT") {
32+
field(PREC,"0")
33+
field(DTYP, "stream")
34+
field(INP, "@MPC_Ethernet.proto readFloat(OC,$(PN)) $(PORT)")
35+
}
36+
37+
record(ai,"$(P)$(PUMP):SIZE") {
38+
field(SCAN, "5 second")
39+
field(PREC, "0")
40+
field(DTYP, "stream")
41+
field(INP, "@MPC_Ethernet.proto readInt(11,$(PN)) $(PORT)")
42+
# field(FLNK,"$(P)$(PUMP):SP1V PP MS")
43+
field(FLNK,"$(P)$(PUMP):GAUTOS PP MS")
44+
}
45+
46+
# Setpoints are not currently implemented.
47+
# The MPCq has a different syntax from the MPC, and we are not currently using them.
48+
record(ai,"$(P)$(PUMP):SP1V") {
49+
field(DTYP, "stream")
50+
field(PREC,"1")
51+
field(INP, "@MPC_Ethernet.proto readFloat(OC,$(PN)) $(PORT)")
52+
field(FLNK,"$(P)$(PUMP):SP1S PP MS")
53+
}
54+
55+
record(bi,"$(P)$(PUMP):SP1S") {
56+
field(DTYP, "stream")
57+
field(INP, "@MPC_Ethernet.proto readInt(OC,$(PN)) $(PORT)")
58+
field(ZSV,"MAJOR")
59+
field(ZNAM,"Off")
60+
field(ONAM,"On")
61+
field(FLNK,"$(P)$(PUMP):SP2V PP MS")
62+
}
63+
64+
record(ai,"$(P)$(PUMP):SP2V") {
65+
field(DTYP, "stream")
66+
field(PREC,"1")
67+
field(INP, "@MPC_Ethernet.proto readFloat(OC,$(PN)) $(PORT)")
68+
field(FLNK,"$(P)$(PUMP):SP2S PP MS")
69+
}
70+
71+
record(bi,"$(P)$(PUMP):SP2S") {
72+
field(DTYP, "stream")
73+
field(INP, "@MPC_Ethernet.proto readInt(OC,$(PN)) $(PORT)")
74+
field(ZSV,"MAJOR")
75+
field(ZNAM,"Off")
76+
field(ONAM,"On")
77+
field(FLNK,"$(P)$(PUMP):SP3V PP MS")
78+
}
79+
80+
record(ai,"$(P)$(PUMP):SP3V") {
81+
field(DTYP, "stream")
82+
field(PREC,"1")
83+
field(INP, "@MPC_Ethernet.proto readFloat(OC,$(PN)) $(PORT)")
84+
field(FLNK,"$(P)$(PUMP):SP3S PP MS")
85+
}
86+
87+
record(bi,"$(P)$(PUMP):SP3S") {
88+
field(DTYP, "stream")
89+
field(INP, "@MPC_Ethernet.proto readInt(OC,$(PN)) $(PORT)")
90+
field(ZSV,"MAJOR")
91+
field(ZNAM,"Off")
92+
field(ONAM,"On")
93+
field(FLNK,"$(P)$(PUMP):SP4V PP MS")
94+
}
95+
96+
record(ai,"$(P)$(PUMP):SP4V") {
97+
field(DTYP, "stream")
98+
field(PREC,"1")
99+
field(INP, "@MPC_Ethernet.proto readFloat(OC,$(PN)) $(PORT)")
100+
field(FLNK,"$(P)$(PUMP):SP4S PP MS")
101+
}
102+
103+
record(bi,"$(P)$(PUMP):SP4S") {
104+
field(DTYP, "stream")
105+
field(INP, "@MPC_Ethernet.proto readInt(OC,$(PN)) $(PORT)")
106+
field(ZSV,"MAJOR")
107+
field(ZNAM,"Off")
108+
field(ONAM,"On")
109+
field(FLNK,"$(P)$(PUMP):GAUTOS PP MS")
110+
}
111+
112+
record(bi,"$(P)$(PUMP):GAUTOS") {
113+
field(DTYP, "stream")
114+
field(INP, "@MPC_Ethernet.proto readAutoRestart($(PN)) $(PORT)")
115+
field(OSV, "MAJOR")
116+
field(ZNAM, "No")
117+
field(ONAM, "Yes")
118+
}
119+
120+
# The MPCq does not support this command since all values are displayed
121+
# Retain the record so the OPI screens are not white
122+
record(mbbo,"$(P)$(PUMP):DIS") {
123+
# field(DTYP, "stream")
124+
# field(OUT, "@MPC_Ethernet.proto setString(25,$(PN)) $(PORT)")
125+
field(ZRVL,"0")
126+
field(ONVL,"1")
127+
field(TWVL,"2")
128+
field(ZRST,"Pressure")
129+
field(ONST,"Current")
130+
field(TWST,"Voltage")
131+
}
132+
133+
record(ao,"$(P)$(PUMP):SSIZE") {
134+
field(DTYP, "stream")
135+
field(OMSL, "supervisory")
136+
field(PREC, "0")
137+
field(OUT, "@MPC_Ethernet.proto writeInt(12,$(PN)) $(PORT)")
138+
field(VAL, "30")
139+
}
140+
141+
# Setpoints are not currently implemented.
142+
# The MPCq has a different syntax from the MPC, and we are not currently using them.
143+
record(ao,"$(P)$(PUMP):SET1") {
144+
field(DTYP, "stream")
145+
field(OMSL, "supervisory")
146+
field(PREC, "1")
147+
field(OUT, "@MPC_Ethernet.proto writeFloat(25,$(PN)) $(PORT)")
148+
field(VAL, "1.0E-06")
149+
}
150+
151+
record(ao,"$(P)$(PUMP):SET2") {
152+
field(DTYP, "stream")
153+
field(OMSL, "supervisory")
154+
field(PREC, "1")
155+
field(OUT, "@MPC_Ethernet.proto writeFloat(25,$(PN)) $(PORT)")
156+
field(VAL, "1.0E-06")
157+
}
158+
159+
record(ao,"$(P)$(PUMP):SET3") {
160+
field(DTYP, "stream")
161+
field(OMSL, "supervisory")
162+
field(PREC, "1")
163+
field(OUT, "@MPC_Ethernet.proto writeFloat(25,$(PN)) $(PORT)")
164+
field(VAL, "1.0E-06")
165+
}
166+
167+
record(ao,"$(P)$(PUMP):SET4") {
168+
field(DTYP, "stream")
169+
field(OMSL, "supervisory")
170+
field(PREC, "1")
171+
field(OUT, "@MPC_Ethernet.proto writeFloat(25,$(PN)) $(PORT)")
172+
field(VAL, "1.0E-06")
173+
}
174+
175+
record(bo,"$(P)$(PUMP):STOP") {
176+
field(DTYP, "stream")
177+
field(OUT, "@MPC_Ethernet.proto writeHVOnOff($(PN)) $(PORT)")
178+
field(OSV, "MAJOR")
179+
field(ZNAM, "START")
180+
field(ONAM, "STOP")
181+
}
182+
183+
# This function is not supported on the MPCq, keep the record for OPI displays
184+
record(bo,"$(P)$(PUMP):ULCK") {
185+
# field(DTYP, "stream")
186+
# field(OUT, "@MPC_Ethernet.proto writeString(25,$(PN)) $(PORT)")
187+
field(OSV, "MAJOR")
188+
field(ZNAM, "LOCK")
189+
field(ONAM, "UNLOCK")
190+
}
191+
192+
record(bo,"$(P)$(PUMP):SAUTOS") {
193+
field(DTYP, "stream")
194+
field(OUT, "@MPC_Ethernet.proto writeAutoRestart($(PN)) $(PORT)")
195+
field(OSV, "MAJOR")
196+
field(ZNAM, "No")
197+
field(ONAM, "Yes")
198+
}

0 commit comments

Comments
 (0)