I'm relatively new to epics and writing protocols, so please forgive
me if I muddle up my terminology.
I'm trying to communicate with a CAEN VME8100 over a network. I
would like to be able to read out the various channels and write
them into epics to be displayed in an edl panel. I have most of
this done, however, I am only reading out integer values. So for
example, rather than reading the voltage as 5.23 V I am readding 5 V.
It appears that this is not a rounding error, instead I am only
reading the first digit of the output.
My protocol calling in the voltage looks something like:
readVMON0 {
out "$CMD:MON,CH:0,PAR:VMON";
in "#CMD:OK,VAL:%(PV_NAME.RVAL)f";
}
I have a header to the protocol file:
interminator = "\r\n";
outterminator = "\n";
replytimout = 2000;
separator = "";
Finally I have the PV in the IOC database as:
record(ai, "PV_NAME") {
field(DTYP,"stream")
field(SCAN,"10 second")
field(PREC,"2")
field(INP,"@CAEN.protocol readVMON0 VMEport 0")
}
where VMEport is defined in st.cmd and holds the network address of
the device. I have no idea what the trailing zero is... it came that
way.
Testing this earlier I put a space between the PV name and type so
that the "in" line in the protocol file looked like:
in "#CMD:OK,VAL:%(PV_NAME.RVAL) f";
and got an error:
PV_NAME: Input "11.98" does not match format % f
so at some point I must be reading in the whole thing..
Thanks for taking a look
-Chris