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 2025 | 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 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | RE: STAT=SCAN recover |
From: | Mark Rivers <[email protected]> |
To: | "'Isabella Rey'" <[email protected]> |
Cc: | "[email protected]" <[email protected]> |
Date: | Wed, 1 Apr 2015 19:52:26 +0000 |
Hi Isabella, What version of asyn and what version of streamDevice are you using? You should look at this tech-talk thread: http://www.aps.anl.gov/epics/tech-talk/2014/msg00605.php You will see that on April 11, 2014 there was a similar problem with serial ports, specifically USB serial ports which can be disconnected.
There were actually 2 problems: -
A bug in the asyn drvAsynSerialPort driver -
A bug in StreamDevice You are using drvAsynIPPort, not drvAsynSerial port, so that fix does not affect you. However, the fix in streamDevice might be important.
The patch for streamDevice is in the tech-talk message referenced above. Mark From: Isabella Rey [mailto:[email protected]]
Hi Mark, I'm using stream device, and I'm talking to a device via Ethernet. The record and protocol are as below. Note the SCAN field of the record is set to be greater than the ReplyTimeout. When the device is up and running, all is fine. But if the device shuts off unexpectedly, my record after a few seconds goes in the SCAN alarm status. I could bring the device up again and try re-establishing the connection, but I then need this record to start processing normally again. My understanding is that this happens when the record is found with PACT=1 for 10 consecutive times. But why is it happening in the first place here...? Shouldn't the record simply time out and keep processing every second? If the device is not there at IOC startup, the record does process every second, it just complains that it can't connect. Shouldn't it be the same when it looses an existing connection? So my question becomes: Why is the record going in STAT=SCAN, and if I can't avoid it, can I recover from it? Otherwise I'll have to restart the IOC. Thanks, Isabella **In the database: record(ai, "DEV:SOURCE_MODE") { field(DTYP, "stream") field(INP, "@my.proto source_mode() $(PORT)") field(SCAN, "1 second") } **In the protocol: ReplyTimeout = 500; source_mode { out "source_mode?"; in "%i"; } On 1 April 2015 at 13:55, Mark Rivers <[email protected]> wrote: The answer will depend on how the record got to the STAT=SCAN state. Device support can set STAT and SEVR.
|