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> | 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> |
<== Date ==> | <== Thread ==> |
---|
Subject: | Issue with Stream Device. Timeout only on Reconnect |
From: | Maximilian Scharpey via Tech-talk <tech-talk at aps.anl.gov> |
To: | <tech-talk at aps.anl.gov> |
Date: | Thu, 1 Feb 2024 10:26:11 +0100 |
Hi all, I am trying to implement the communication to a voltage source (CAEN N1470A) using Stream Device. The communication is done via USB using an RS485 protocol and I use EPICS base 7 on Windows. So far, communication is successfully established but only if the IOC is started while the source is already turned ON. As it is planned to use the source only for short periods on a larger setup (which has an IOC running day and night), it would be nice if one would not have to kill the IOC every time one wants to use the voltage source. As I am not very experienced with Stream Device, maybe someone of you can help me out. I do not think, it is a problem of too many communication attempts as the issue also occurs if only one PV is used regarding the voltage source. In the following I copied the excerpts of the .db, .proto, and .cmd files for a minimal example, I am currently running on an external PC. I also copied the messages of the IOC console in the streamDebug mode. module.db: record(bi, "$(P):MOD$(MOD):CTRMODE"){ field(DTYP, "stream") field(INP, "@CAEN_N14xx.proto getControlMode($(MOD)) $(BUS)") field(ZNAM, "LOCAL") field(ONAM, "REMOTE") field(PINI, "YES") field(SCAN, "2 second") field(ASG, "$(ASG)") } CAEN_N14xx.proto: Terminator=CR LF; getControlMode{ out "$BD:\$1,CMD:MON,PAR:BDCTR"; in "#BD:\$1,CMD:OK,VAL:%{LOCAL|REMOTE}"; } CAEN_N14xx.cmd (executed by the st.cmd): drvAsynSerialPortConfigure("ttyCAEN", "\\\\.\\COM4") asynSetOption( "ttyCAEN", 0, "baud", "38400" ) asynSetOption( "ttyCAEN", 0, "bits", "8" ) asynSetOption( "ttyCAEN", 0, "parity", "none" ) asynSetOption( "ttyCAEN", 0, "stop", "1" ) asynSetOption( "ttyCAEN", 0, "clocal", "Y" ) asynSetOption( "ttyCAEN", 0, "crtscts", "N" ) asynSetOption( "ttyCAEN", 0, "ixon", "N" ) asynSetOption( "ttyCAEN", 0, "ixoff", "N" ) # CAEN N1470A dbLoadRecords("$(TOP)\db\CAEN_N14xx_module.db", "P=${P}:CAEN_N1470a, MOD=01, BUS=ttyCAEN", ASG=${ASG}) echo 'CAEN \n' Console Output Voltage source is turned ON while IOC is running: 2024/02/01 10:15:03.066110 scan-2 C:\opt\epics\modules\streamdevice\src\StreamEpics.cc:908: Stream::process(PIKP612:CAEN_N1470a:MOD01:CTRMODE) 2024/02/01 10:15:03.069764 scan-2 C:\opt\epics\modules\streamdevice\src\StreamEpics.cc:934: Stream::process(PIKP612:CAEN_N1470a:MOD01:CTRMODE) start 2024/02/01 10:15:03.072676 scan-2 C:\opt\epics\modules\streamdevice\src\StreamCore.cc:429: StreamCore::startProtocol(PIKP612:CAEN_N1470a:MOD01:CTRMODE, startMode=StartNormal) 2024/02/01 10:15:03.075936 scan-2 C:\opt\epics\modules\streamdevice\src\StreamCore.cc:564: StreamCore::evalCommand(PIKP612:CAEN_N1470a:MOD01:CTRMODE): activeCommand = out 2024/02/01 10:15:03.079136 scan-2 C:\opt\epics\modules\streamdevice\src\StreamCore.cc:612: StreamCore::evalOut: outputLine = "$BD:01,CMD:MON,PAR:BDCTR<0d><0a>" 2024/02/01 10:15:03.083628 scan-2 C:\opt\epics\modules\streamdevice\src\StreamCore.cc:623: StreamCore::evalOut(PIKP612:CAEN_N1470a:MOD01:CTRMODE): lockRequest(5000) 2024/02/01 10:15:03.087973 scan-2 C:\opt\epics\modules\streamdevice\src\AsynDriverInterface.cc:549: AsynDriverInterface::lockRequest(PIKP612:CAEN_N1470a:MOD01:CTRMODE, 5000 msec) 2024/02/01 10:15:03.091592 scan-2 C:\opt\epics\modules\streamdevice\src\StreamCore.cc:629: StreamCore::evalOut(PIKP612:CAEN_N1470a:MOD01:CTRMODE): lockRequest failed. Device is offline. 2024/02/01 10:15:03.095039 scan-2 C:\opt\epics\modules\streamdevice\src\StreamCore.cc:465: StreamCore::finishProtocol(PIKP612:CAEN_N1470a:MOD01:CTRMODE, Offline) not bus owner 2024/02/01 10:15:03.099590 scan-2 C:\opt\epics\modules\streamdevice\src\AsynDriverInterface.cc:1468: AsynDriverInterface::finish(PIKP612:CAEN_N1470a:MOD01:CTRMODE) start 2024/02/01 10:15:03.103732 scan-2 C:\opt\epics\modules\streamdevice\src\AsynDriverInterface.cc:1478: AsynDriverInterface::finish(PIKP612:CAEN_N1470a:MOD01:CTRMODE) done 2024/02/01 10:15:03.106943 scan-2 C:\opt\epics\modules\streamdevice\src\StreamEpics.cc:1034: Stream::protocolFinishHook(PIKP612:CAEN_N1470a:MOD01:CTRMODE, Offline) 2024/02/01 10:15:03.110014 scan-2 C:\opt\epics\modules\streamdevice\src\StreamEpics.cc:939: Stream::process(PIKP612:CAEN_N1470a:MOD01:CTRMODE): could not start protocol, status=COMM (9) 2024/02/01 10:15:04.471844 ttyCAEN C:\opt\epics\modules\streamdevice\src\AsynDriverInterface.cc:1316: AsynDriverInterface::exceptionHandler(PIKP612:CAEN_N1470a:MOD01:CTRMODE, Connect) 2024/02/01 10:15:04.475524 ttyCAEN C:\opt\epics\modules\streamdevice\src\AsynDriverInterface.cc:1322: AsynDriverInterface::exceptionHandler(PIKP612:CAEN_N1470a:MOD01:CTRMODE) ttyCAEN 0 connected. ioAction: None 2024/02/01 10:15:04.479496 ttyCAEN C:\opt\epics\modules\streamdevice\src\StreamCore.cc:1736: StreamCore::connectCallback(PIKP612:CAEN_N1470a:MOD01:CTRMODE, StreamIoSuccess) activeCommand: end 2024/02/01 10:15:04.483956 ttyCAEN C:\opt\epics\modules\streamdevice\src\StreamCore.cc:429: StreamCore::startProtocol(PIKP612:CAEN_N1470a:MOD01:CTRMODE, startMode=StartInit) 2024/02/01 10:15:05.064406 scan-2 C:\opt\epics\modules\streamdevice\src\StreamEpics.cc:908: Stream::process(PIKP612:CAEN_N1470a:MOD01:CTRMODE) 2024/02/01 10:15:05.068045 scan-2 C:\opt\epics\modules\streamdevice\src\StreamEpics.cc:934: Stream::process(PIKP612:CAEN_N1470a:MOD01:CTRMODE) start 2024/02/01 10:15:05.070964 scan-2 C:\opt\epics\modules\streamdevice\src\StreamCore.cc:429: StreamCore::startProtocol(PIKP612:CAEN_N1470a:MOD01:CTRMODE, startMode=StartNormal) 2024/02/01 10:15:05.074244 scan-2 C:\opt\epics\modules\streamdevice\src\StreamCore.cc:564: StreamCore::evalCommand(PIKP612:CAEN_N1470a:MOD01:CTRMODE): activeCommand = out 2024/02/01 10:15:05.077638 scan-2 C:\opt\epics\modules\streamdevice\src\StreamCore.cc:612: StreamCore::evalOut: outputLine = "$BD:01,CMD:MON,PAR:BDCTR<0d><0a>" 2024/02/01 10:15:05.082365 scan-2 C:\opt\epics\modules\streamdevice\src\StreamCore.cc:623: StreamCore::evalOut(PIKP612:CAEN_N1470a:MOD01:CTRMODE): lockRequest(5000) 2024/02/01 10:15:05.086921 scan-2 C:\opt\epics\modules\streamdevice\src\AsynDriverInterface.cc:549: AsynDriverInterface::lockRequest(PIKP612:CAEN_N1470a:MOD01:CTRMODE, 5000 msec) 2024/02/01 10:15:05.090557 scan-2 PIKP612:CAEN_N1470a:MOD01:CTRMODE lockRequest: status returned to normal 2024/02/01 10:15:05.090563 ttyCAEN C:\opt\epics\modules\streamdevice\src\AsynDriverInterface.cc:590: AsynDriverInterface::lockHandler(PIKP612:CAEN_N1470a:MOD01:CTRMODE) 2024/02/01 10:15:05.092753 scan-2 C:\opt\epics\modules\streamdevice\src\StreamEpics.cc:948: Stream::process(PIKP612:CAEN_N1470a:MOD01:CTRMODE): protocol started 2024/02/01 10:15:05.102839 ttyCAEN C:\opt\epics\modules\streamdevice\src\StreamCore.cc:832: StreamCore::lockCallback(PIKP612:CAEN_N1470a:MOD01:CTRMODE, StreamIoSuccess) 2024/02/01 10:15:05.106172 ttyCAEN C:\opt\epics\modules\streamdevice\src\AsynDriverInterface.cc:627: AsynDriverInterface::writeRequest(PIKP612:CAEN_N1470a:MOD01:CTRMODE, "$BD:01,CMD:MON,PAR:BDCTR<0d><0a>", 100 msec) 2024/02/01 10:15:05.110291 ttyCAEN C:\opt\epics\modules\streamdevice\src\AsynDriverInterface.cc:649: AsynDriverInterface::writeHandler(PIKP612:CAEN_N1470a:MOD01:CTRMODE) 2024/02/01 10:15:05.114659 ttyCAEN C:\opt\epics\modules\streamdevice\src\AsynDriverInterface.cc:667: AsynDriverInterface::writeHandler(PIKP612:CAEN_N1470a:MOD01:CTRMODE): reading old input 2024/02/01 10:15:05.118347 ttyCAEN C:\opt\epics\modules\streamdevice\src\AsynDriverInterface.cc:715: AsynDriverInterface::writeHandler(PIKP612:CAEN_N1470a:MOD01:CTRMODE): write(..., "$BD:01,CMD:MON,PAR:BDCTR<0d><0a>", outputSize=26, written=26) [timeout=0.1 sec] = asynSuccess 2024/02/01 10:15:05.123681 ttyCAEN C:\opt\epics\modules\streamdevice\src\StreamCore.cc:877: StreamCore::writeCallback(PIKP612:CAEN_N1470a:MOD01:CTRMODE, StreamIoSuccess) 2024/02/01 10:15:05.126886 ttyCAEN C:\opt\epics\modules\streamdevice\src\StreamCore.cc:564: StreamCore::evalCommand(PIKP612:CAEN_N1470a:MOD01:CTRMODE): activeCommand = in 2024/02/01 10:15:05.131769 ttyCAEN C:\opt\epics\modules\streamdevice\src\AsynDriverInterface.cc:806: AsynDriverInterface::readRequest(PIKP612:CAEN_N1470a:MOD01:CTRMODE, 1000 msec reply, 100 msec read, expect 0 bytes, async=no) 2024/02/01 10:15:05.135975 ttyCAEN C:\opt\epics\modules\streamdevice\src\AsynDriverInterface.cc:831: AsynDriverInterface::readRequest PIKP612:CAEN_N1470a:MOD01:CTRMODE: queueRequest(..., priority=0, queueTimeout=1 sec) = asynSuccess [async=false] 2024/02/01 10:15:06.149378 ttyCAEN C:\opt\epics\modules\streamdevice\src\AsynDriverInterface.cc:951: AsynDriverInterface::readHandler(PIKP612:CAEN_N1470a:MOD01:CTRMODE): ioAction=Read read(1 bytes, timeout=1 sec) returned status asynTimeout: received=0 bytes, eomReason=NONE, buffer="" 2024/02/01 10:15:06.155608 ttyCAEN C:\opt\epics\modules\streamdevice\src\AsynDriverInterface.cc:1044: AsynDriverInterface::readHandler(PIKP612:CAEN_N1470a:MOD01:CTRMODE): no reply 2024/02/01 10:15:06.158981 ttyCAEN C:\opt\epics\modules\streamdevice\src\StreamCore.cc:963: StreamCore::readCallback(PIKP612:CAEN_N1470a:MOD01:CTRMODE, StreamIoNoReply input="", size=0) 2024/02/01 10:15:06.162449 ttyCAEN PIKP612:CAEN_N1470a:MOD01:CTRMODE: No reply within 1000 ms to "$BD:01,CMD:MON,PAR:BDCTR<0d><0a>" 2024/02/01 10:15:06.165361 ttyCAEN C:\opt\epics\modules\streamdevice\src\StreamCore.cc:465: StreamCore::finishProtocol(PIKP612:CAEN_N1470a:MOD01:CTRMODE, ReplyTimeout) bus owner 2024/02/01 10:15:06.168668 ttyCAEN C:\opt\epics\modules\streamdevice\src\StreamCore.cc:534: starting exception handler 2024/02/01 10:15:06.171005 ttyCAEN C:\opt\epics\modules\streamdevice\src\StreamCore.cc:564: StreamCore::evalCommand(PIKP612:CAEN_N1470a:MOD01:CTRMODE): activeCommand = end 2024/02/01 10:15:06.174203 ttyCAEN C:\opt\epics\modules\streamdevice\src\StreamCore.cc:465: StreamCore::finishProtocol(PIKP612:CAEN_N1470a:MOD01:CTRMODE, Success) bus owner 2024/02/01 10:15:06.177446 ttyCAEN C:\opt\epics\modules\streamdevice\src\AsynDriverInterface.cc:610: AsynDriverInterface::unlock(PIKP612:CAEN_N1470a:MOD01:CTRMODE) 2024/02/01 10:15:06.182009 ttyCAEN C:\opt\epics\modules\streamdevice\src\AsynDriverInterface.cc:1468: AsynDriverInterface::finish(PIKP612:CAEN_N1470a:MOD01:CTRMODE) start 2024/02/01 10:15:06.185846 ttyCAEN C:\opt\epics\modules\streamdevice\src\AsynDriverInterface.cc:1478: AsynDriverInterface::finish(PIKP612:CAEN_N1470a:MOD01:CTRMODE) done 2024/02/01 10:15:06.189048 ttyCAEN C:\opt\epics\modules\streamdevice\src\StreamEpics.cc:1034: Stream::protocolFinishHook(PIKP612:CAEN_N1470a:MOD01:CTRMODE, ReplyTimeout) 2024/02/01 10:15:06.192313 cbLow C:\opt\epics\modules\streamdevice\src\StreamEpics.cc:1112: recordProcessCallback(PIKP612:CAEN_N1470a:MOD01:CTRMODE) processing record 2024/02/01 10:15:06.197327 cbLow C:\opt\epics\modules\streamdevice\src\StreamEpics.cc:908: Stream::process(PIKP612:CAEN_N1470a:MOD01:CTRMODE) 2024/02/01 10:15:06.201432 cbLow C:\opt\epics\modules\streamdevice\src\StreamEpics.cc:914: Stream::process(PIKP612:CAEN_N1470a:MOD01:CTRMODE) error status=TIMEOUT (10) 2024/02/01 10:15:06.204718 cbLow C:\opt\epics\modules\streamdevice\src\StreamEpics.cc:1116: recordProcessCallback(PIKP612:CAEN_N1470a:MOD01:CTRMODE) processing record done |