Hi All,
I have a scalcout record whose output should go into a bo record, as follows:
record(scalcout, "BS:CAMS_OK") {
field(SCAN, ".1 second")
field(CALC, "AA==CC")
field(INAA, "CAM1:TRAFFIC_LIGHT")
field(OUT, "BS:AUTO PP")
field(OOPT, "When Zero")
field(CC, "OK")
}
record(bo, "BS:AUTO") {
field(PINI, "YES")
field(VAL, "0")
field(ZNAM, "OFF")
field(ONAM, "ON")
}
When I run the IOC, I get this error message:
Illegal choice PV: BS:AUTO 0.00000000
After looking at other posts, I think the scalcout is trying to write a string in the bo, which generates the error. But my understanding of the scalcout documentation is that the conversion to int should be done automatically, and this should just work.
Interestingly, this workaround does the job:
record(scalcout, "BS:CAMS_OK") {
field(CALC, "AA==CC")
field(INAA, "CAM1:TRAFFIC_LIGHT")
field(CC, "OK")
}
record(calcout, "BS:CAMS_OK_FAN") {
field(SCAN, ".1 second")
field(INPA, "BS:CAMS_OK PP")
field(OUT, "BS:AUTO PP")
field(OOPT, "When Zero")
}
record(bo, "BS:AUTO") {
field(PINI, "YES")
field(VAL, "0")
field(ZNAM, "OFF")
field(ONAM, "ON")
}
So it looks like if a record "pulls" the result from scalcout it's OK, but scalcout doesn't "push" it correctly.