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  2013  2014  2015  2016  2017  2018  <20192020  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  <20192020 
<== Date ==> <== Thread ==>

Subject: Re: epics-Keithley_648x, drvAsynKeithley648x
From: "Arms, Dohn A. via Tech-talk" <tech-talk@aps.anl.gov>
To: "tech-talk@aps.anl.gov" <tech-talk@aps.anl.gov>
Date: Wed, 6 Mar 2019 15:59:42 +0000
Hi Heinz,

Sorry that my driver didn't communicate for you.

I just added to my github repo the boot directory I use for testing the 
6485
and 6487 devices we have, which I forgot to add before.

Dohn



On 3/6/19 9:41 AM, Heinz Junkes via Tech-talk wrote:
> Unfortunately, I had to give up here due to lack of time. I couldn't communicate
> with this Keithley IP-asyn-driver.
>
> I am now on Streamdevice
>
> (Danke Christoph)
>
> “
> not sure what driver you are trying to use, but you can also use the
> Streamdevice support from LBNL:
> https://epics.anl.gov/download/modules/index.php
> https://epics.anl.gov/download/modules/Keithley6487-1.1.tar.gz
>
> the Keithley 6485 is basically a Keithley 6487 with fewer functionality
> (no limit Tests and Voltage source). Most commands are supported by the
> 6485 as well.
> It's used like any other Streamdevice support.
>
> Best regards,
> Christoph
> “
>
> Gruss,
> Heinz
>
>
>
>> On 6. Mar 2019, at 14:51, Heinz Junkes via Tech-talk <tech-talk@aps.anl.gov> wrote:
>>
>> Looks much better.
>>
>> Now I get it. The function drvAsynKeithley648x returns a port for communicating. I hadn't understood that.
>>
>> ...
>> drvAsynIPPortConfigure("MOXA_4", "172.24.192.29:4004", 0, 0, 0)
>> drvAsynKeithley648x("6485", "Keithley6485", "MOXA_4",0)
>> 2019/03/06 14:47:24.055 Keithley6485 writeRead: error 1 wrote "*IDN?"
>> drvAsynKeithley648x::drvAsynKeithley6485 port Keithley6485 failed to acquire identification
>> asynSetTraceIOMask("MOXA_4", 0, 0x2)
>> asynSetTraceMask("MOXA_4", 0, 0x9)
>> dbLoadRecords("db/Keithley6485.db", "P=trARPES:, CA=Sample:, PORT=Keithley6485”)
>> …
>>
>> 2019/03/06 14:48:46.391 trARPES:Sample:read devAsynFloat64::processCallbackInput process read error
>> 2019/03/06 14:48:46.391 trARPES:Sample:readStatusOverflow devAsynInt32::processCallbackInput process read error
>> 2019/03/06 14:48:46.391 trARPES:Sample:readStatusFilter devAsynInt32::processCallbackInput process read error
>> 2019/03/06 14:48:46.392 trARPES:Sample:readStatusMath devAsynInt32::processCallbackInput process read error
>> 2019/03/06 14:48:46.392 trARPES:Sample:readStatusNull devAsynInt32::processCallbackInput process read error
>> 2019/03/06 14:48:46.392 trARPES:Sample:readStatusLimits devAsynInt32::processCallbackInput process read error
>> 2019/03/06 14:48:46.392 trARPES:Sample:readStatusOvervoltage devAsynInt32::processCallbackInput process read error
>> …
>>
>> Now I have to check if the device is connected ;-)
>>
>> Danke,
>> Heinz
>>
>>> On 6. Mar 2019, at 14:28, Mark Rivers <rivers@cars.uchicago.edu> wrote:
>>>
>>> OK, so the actual code to create the port is this, it does take 4 arguments:
>>>
>>> int drvAsynKeithley648x(const char *type, const char *myport,
>>>                        const char *ioport, int ioaddr)
>>>
>>>
>>> So your code should call
>>>
>>>
>>> drvAsynIPPortConfigure("MOXA_4", "172.24.192.29:4004", 0, 0, 0)
>>> drvAsynKeithley648x("6485", "Keithley6485", "MOXA_4",0)
>>>
>>> asynSetTraceIOMask("MOXA_4", 0, 0x2)
>>> asynSetTraceMask("MOXA_4", 0, 0x9)
>>> dbLoadRecords("db/Keithley6485.db", "P=trARPES:, CA=Sample:, PORT=Kiethley6485")
>>>
>>> What do you see if you try that?
>>>
>>>
>>> ________________________________
>>> From: Heinz Junkes <junkes@fhi-berlin.mpg.de>
>>> Sent: Wednesday, March 6, 2019 7:09 AM
>>> To: Mark Rivers
>>> Cc: tech-talk@aps.anl.gov
>>> Subject: Re: epics-Keithley_648x, drvAsynKeithley648x
>>>
>>> Hello, Mark,
>>>
>>> thank you for your answers. Unfortunately it doesn't work that way either:
>>>
>>> startup
>>> ...
>>> drvAsynIPPortConfigure("MOXA_4", "172.24.192.29:4004", 0, 0, 0)
>>> drvAsynKeithley648x("6485", "MOXA_4",0)
>>> drvAsynKeithley648x::drvAsynKeithley6485 port MOXA_4 can't connect to asynCommon on Octet server 0 address 0.
>>> asynSetTraceIOMask("MOXA_4", 0, 0x2)
>>> asynSetTraceMask("MOXA_4", 0, 0x9)
>>> dbLoadRecords("db/Keithley6485.db", "P=trARPES:, CA=Sample:, PORT=6485")
>>> ...
>>>
>>> The driver is from https://github.com/dohnarms/epics-Keithley_648x
>>>
>>> In the driver there seems to be a mismatch
>>>
>>> ...
>>>
>>> /* Public interface forward references */
>>> int drvAsynKeithley648x(const char* myport,const char* ioport, int ioaddr);
>>> ...
>>>
>>>
>>> /****************************************************************************
>>> * Define public interface methods
>>> ****************************************************************************/
>>> int drvAsynKeithley648x(const char *type, const char *myport,
>>>                        const char *ioport, int ioaddr)
>>> {
>>> int status = asynSuccess;
>>> Port* pport;
>>> //  int i;
>>> asynStandardInterfaces *pInterfaces;
>>>
>>> char inpBuf[BUFFER_SIZE];
>>> int eomReason;
>>>
>>> pport = (Port*)callocMustSucceed(1,sizeof(Port),"drvAsynKeithley6485");
>>>
>>> ...
>>>
>>> /****************************************************************************
>>> * Register public methods
>>> ****************************************************************************/
>>>
>>> /* Initialization method definitions */
>>> static const iocshArg arg0 = {"type",iocshArgString};
>>> static const iocshArg arg1 = {"myport",iocshArgString};
>>> static const iocshArg arg2 = {"ioport",iocshArgString};
>>> static const iocshArg arg3 = {"ioaddr",iocshArgInt};
>>> static const iocshArg* args[]= {&arg0,&arg1,&arg2,&arg3};
>>> static const iocshFuncDef drvAsynKeithley648xFuncDef =
>>> {"drvAsynKeithley648x",4,args};
>>> static void drvAsynKeithley648xCallFunc(const iocshArgBuf* args)
>>> {
>>> drvAsynKeithley648x(args[0].sval,args[1].sval,args[2].sval,args[3].ival);
>>> }
>>>
>>> /* Registration method */
>>> static void drvAsynKeithley648xRegister(void)
>>> {
>>> static int firstTime = 1;
>>>
>>> if( firstTime )
>>>    {
>>>      firstTime = 0;
>>>      iocshRegister( &drvAsynKeithley648xFuncDef,drvAsynKeithley648xCallFunc );
>>>    }
>>> }
>>> epicsExportRegistrar( drvAsynKeithley648xRegister );
>>>
>>>
>>> That is why I have given four arguments in the st.cmd.
>>>
>>> Danke,
>>> Heinz
>>>
>>>
>>>
>>>> On 6. Mar 2019, at 13:51, Mark Rivers <rivers@cars.uchicago.edu> wrote:
>>>>
>>>> My comments are:
>>>> Your original message says that drvAsynKeithley6845 take 3 arguments.  Your actual commands call drvAsynKeithey648x with 4 arguments.  Why the difference?  Does 648x take an initial argument with the exact model number, or is that the name of the new port?
>>>>
>>>> I don't see the need for the asynOctetConnect line.
>>>>
>>>> Maybe this will work:
>>>>
>>>> drvAsynIPPortConfigure("MOXA_4", "172.24.192.29:4004", 0, 0, 0)
>>>> drvAsynKeithley648x("6485", "MOXA_4",0)
>>>> asynSetTraceIOMask("MOXA_4", 0, 0x2)
>>>> asynSetTraceMask("MOXA_4", 0, 0x9)
>>>> dbLoadRecords("db/Keithley6485.db", "P=trARPES:, CA=Sample:, "6845")
>>>>
>>>> I deleted the asynOctetConnect, deleted the 3 argument to drvKeithley648x, and changed the port passed in dbLoadRecords.
>>>>
>>>> Is this driver code on Github or somewhere else we can look at it?
>>>>
>>>> Mark


Replies:
Re: epics-Keithley_648x, drvAsynKeithley648x Heinz Junkes via Tech-talk
References:
epics-Keithley_648x, drvAsynKeithley648x Heinz Junkes via Tech-talk
Re: epics-Keithley_648x, drvAsynKeithley648x Mark Rivers via Tech-talk
Re: epics-Keithley_648x, drvAsynKeithley648x Heinz Junkes via Tech-talk
Re: epics-Keithley_648x, drvAsynKeithley648x Mark Rivers via Tech-talk
Re: epics-Keithley_648x, drvAsynKeithley648x Heinz Junkes via Tech-talk
Re: epics-Keithley_648x, drvAsynKeithley648x Heinz Junkes via Tech-talk

Navigate by Date:
Prev: Re: epics-Keithley_648x, drvAsynKeithley648x Heinz Junkes via Tech-talk
Next: Re: epics-Keithley_648x, drvAsynKeithley648x Heinz Junkes 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  <20192020 
Navigate by Thread:
Prev: Re: epics-Keithley_648x, drvAsynKeithley648x Heinz Junkes via Tech-talk
Next: Re: epics-Keithley_648x, drvAsynKeithley648x Heinz Junkes 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  <20192020 
ANJ, 06 Mar 2019 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·