Hello Markus,
Mark made a nice breakdown of the two cases. Right now, the adsDriver module supports neither. We are aware of this, but honestly, nobody has needed it badly enough yet :) . I kindly ask you to open a pair of issues on the Github repo. I can't say when we we'll be able to take a closer look (we're stretched pretty thin right now), but having open issues helps raise the priority.
Case 2, at least, is probably not that hard to implement. Case 1, on the other hand, is a bit thornier because of the design of the driver. It is focused on doing bulk reads, which are needed to get sufficient performance with lots of variables. But such reads can only be done after all the records are initialized and ADS variables made known to the driver. So, initial readbacks were disabled for simplicity. They can be added for sure, but it won't be a simple bolt-on.
Cheers,
Jure
On 4/12/24 18:11, Mark Rivers via Tech-talk wrote:
Caution: This email originated from outside of Cosylab.
Hi Markus,
There are 2 separate cases here:
1) The PV value getting set to the PLC value during iocInit.
2) The PV value getting set to the PLC value when the PLC values changes after iocInit.
Case 1 is handled as follows:
- During iocInit the ao record device support (devAsynFloat64.c) does a read from the driver to get the current PLC value. If that read operation returns asynSuccess then the PV should be set to the PLC value, otherwise it is not changed. This definitely works fine with the Modbus driver, for example. I am not sure about the adsDriver, since I have not used it. You can add debugging to the driver to track that down.
Case 2 is handled by adding the line you did to database:
info(asyn:READBACK, "1")
That should make the ao record value update to match the PLC value when the PLC value is changed outside of EPICS. Note that this line is NOT required for getting the behavior described in Case 1 above.
Mark
-----Original Message-----
From: Tech-talk <tech-talk-bounces at aps.anl.gov> On Behalf Of Meyer, Markus via Tech-talk
Sent: Friday, April 12, 2024 10:25 AM
To: tech-talk at aps.anl.gov
Subject: Readback of output variables in adsDriver
Dear all,
I am evaluating possibilities to communicate with a plc and other hardware
from beckhoff. I have successfully build the adsDriver [1] device support
and it seems to work very well for input variables. I can also write output
variables, but if the value gets changed on the plc itself (e.g. by the
interlock logic or by another connected protocol) it is not synced back to
the pv. It also seems that the current value is not initially read on
startup of the IOC.
For example, this is the pv definition:
record(ao, "$(P):IC:CB01-SSet") {
field(DTYP, "asynFloat64")
field(PREC, "2")
field(EGU, "%")
field(DRVH, "100")
field(DRVL, "-100")
field(OUT, "@asyn($(PORT) 0 0) REAL W P=PLC_TC3 V=HMI.IC.CB01.SSet")
info(asyn:READBACK, "1")
}
Before I start the IOC, the plc value is set to 2. If I start the IOC, the
value of the pv is set to 0. The Timestamp is updated. The value in the plc
gets not changed. I expected, that the pv value is also set to 2. Writing a
value to the pv is working as expected.
Did I miss something here? What can I do to subscribe for changes of output
variables?
Thanks,
Markus
[1] https://urldefense.us/v3/__https://github.com/Cosylab/adsDriver__;!!G_uCfscf7eWS!eovU-aYXFfsZIvbTx6Y3tTGma4zwbWLi1xy-LUyW3RghomFH88t9jP45toKnZq8oo1pt5gT5tQhGnPd9QXmCruzGkJg$
- Replies:
- AW: Readback of output variables in adsDriver Meyer, Markus via Tech-talk
- References:
- Readback of output variables in adsDriver Meyer, Markus via Tech-talk
- RE: Readback of output variables in adsDriver Mark Rivers via Tech-talk
- Navigate by Date:
- Prev:
PVXS monitor - No dependence on MPMCFIFO workqueue Eusebio Naif Al-Soliman Fuentes via Tech-talk
- Next:
Re: Fw: Remote reset of MVME-2700 possible through serial console Kevin Peterson via Tech-talk
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
<2024>
- Navigate by Thread:
- Prev:
Re: Readback of output variables in adsDriver Torsten Bögershausen via Tech-talk
- Next:
AW: Readback of output variables in adsDriver Meyer, Markus via Tech-talk
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
<2024>
|