EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  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  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: RE: [asyn] link already open!
From: Mark Rivers <[email protected]>
To: "'Pavel Maslov'" <[email protected]>, EPICS Tech Talk <[email protected]>
Date: Fri, 9 Aug 2013 17:49:41 +0000

OK, I have no experience with dynamically loading the EPICS libraries.

 

Since the asynRecord works to talk to the device, my first guess is that asyn is not the problem, so perhaps the problem lies with StreamDevice.  StreamDevice is written in C++, while asyn is written in C.  Perhaps there is a problem with constructors/initialization in StreamDevice when it is loaded dynamically.  Hopefully Dirk can help with that.

 

Mark

 

 

From: Pavel Maslov [mailto:[email protected]]
Sent: Friday, August 09, 2013 10:05 AM
To: Mark Rivers; EPICS Tech Talk
Subject: Re: [asyn] link already open!

 

Mark, I cannot do anything to StreamDevice records - I mean I can caget and caput, but everytime they get processed - those error messages pop up. And the PVs are invalid all the time never change values. This said, I can talk to my Java Simulator using asynrecord:

dbpf lambda1-ps:asyn.AOUT "*idn?"

, and I get the response. No problem. So it's StreamDevice that produces these errors (as you pointed out). Also, I don't think that my Java Simulator is slow. I tried your solution to lengthen the auto connect time but the problem still remains.

 

What I am confident in, though, (sorry for not telling this before) is that it has to do with the fact that I am loading asyn+streamdevice support module dynamically (from iocsh).

When I use it the normal EPICS way - everything is fine as it should be.


-- 
Regards,


Pavel Maslov, MS

 

On Fri, Aug 9, 2013 at 4:14 PM, Mark Rivers <[email protected]> wrote:

You have created the port with autoconnect disabled.  Thus, I expect the error message that says that queueRequest failed, because the port is not connected.  But then asynReport says that the port is connected.  This must be because StreamDevice connected it?  But once it is connected then your StreamDevice records should work correctly.  Do they?  If you force an input or output record to process does it work?

One possibility for your problem is that your Java server takes longer than 0.5 second to connect.   If a port has autoconnect enabled, then when the port is first connected asyn will try to connect to it, but it will only wait 0.5 seconds by default.  You can lengthen that time to 2 seconds, for example with this command before you create the IP port.

asynSetAutoConnectTimeout 2.0

You can also try to wait for the port to connect in your startup script with this command:

asynWaitConnect(const char *portName, double timeout)

i.e.

asynWaitConnect("lambda1", 2.0)

right after your drvAsynIPPortConfigure command.

Mark

________________________________
From: Pavel Maslov [[email protected]]
Sent: Friday, August 09, 2013 9:00 AM
To: Mark Rivers; EPICS Tech Talk

Subject: Re: [asyn] link already open!

Hi Mark!

The error occurs at iocInit (since my PVs have PINI=YES) and each time I read/write via CA.
The server is a Java Device Simulator at localhost:7001. It is always running and it never disconnects. All of my PVs are marked Invalid. In fact they have not been initialized.
I have tried with noAutoConnect=1 and this is what i get:

epics> 2013/08/09 15:48:06.034504 CAS-client lambda-ps:PWR_OUTPUT:RBV lockRequest: pasynManager->queueRequest() failed: port lambda1 not connected


epics> asynReport 2
lambda1 multiDevice:No canBlock:Yes autoConnect:No
    enabled:Yes connected:Yes numberConnects 1
    nDevices 0 nQueued 0 blocked:No
    asynManagerLock:No synchronousLock:No
    exceptionActive:No exceptionUsers 2 exceptionNotifys 0
    interposeInterfaceList
        asynOctet pinterface 0x7fdceea29800 drvPvt 0x1c6f820
    interfaceList
        asynCommon pinterface 0x7fdceea26c60 drvPvt 0x1c6c270
        asynOctet pinterface 0x1c6c2f8 drvPvt 0x1c6c270

    Port 127.0.0.1:7001<http://127.0.0.1:7001>: Connected

                    fd: 9
    Characters written: 0
       Characters read: 0




--
Regards,


Pavel Maslov, MS

On Fri, Aug 9, 2013 at 3:16 PM, Mark Rivers <[email protected]<mailto:[email protected]>> wrote:
Please provide some more information:

- When does the error occur?  At iocInit when connecting to the device for the first time?  When the server first comes on line?  When the server is restarted?

- The server is at port 7001 on the localhost.  Is that server always running when the IOC is running?  Does the server disconnect after each transaction?

You have created the drvAsynIPPort with the default value of 0 for the last 3 parameters, so it is using noAutoConnect=0, which means that asynManager will automatically try to connect the port before queuing a request.  If the connection attempt fails then asynManager will not queue the request.  So I am having a hard time understanding how StreamDevice found the port disconnected, unless your server disconnected in the time between when asynManager queued the request and when StreamDevice was called.

Mark


________________________________

From: [email protected]<mailto:[email protected]> [[email protected]<mailto:[email protected]>] on behalf of Pavel Maslov [[email protected]<mailto:[email protected]>]

Sent: Friday, August 09, 2013 4:20 AM
To: EPICS Tech Talk
Subject: [asyn] link already open!

Hello all,

When can this message pop up:

2013/08/09 11:03:11.051131 lambda1 lambda-ps:CURR:MAX:RBV: pasynCommon->connect() failed: 127.0.0.1:7001<http://127.0.0.1:7001><http://127.0.0.1:7001>: Link already open!

2013/08/09 11:03:11.052968 lambda1 lambda-ps:CURR:MAX:RBV: Protocol aborted



--
Regards,


Pavel Maslov, MS
Controls Engineer

 


References:
[asyn] link already open! Pavel Maslov
RE: [asyn] link already open! Mark Rivers
Re: [asyn] link already open! Pavel Maslov
RE: [asyn] link already open! Mark Rivers
Re: [asyn] link already open! Pavel Maslov

Navigate by Date:
Prev: Re: motorRecord simulation & STUP field Konrad, Martin
Next: RE: motor record: continuously update limit switches Mark Rivers
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: [asyn] link already open! Pavel Maslov
Next: Re: [asyn] link already open! Dirk Zimoch
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 20 Apr 2015 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·