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  <20122013  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  <20122013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: Problem when caput to waveform record
From: 王林 <[email protected]>
To: "Ralph Lange" <[email protected]>, "EPICS Tech Talk" <[email protected]>
Date: Wed, 30 May 2012 18:47:50 +0800

Hello Ralph,
I increase EPICS_CA_MAX_ARRAY_BYTES to 100000, this time before iocInit instead of after iocInit which I did previously, and it works. Thanks very much.
 
 
Lin Wang  
 
----- Original Message -----
Sent: Wednesday, May 30, 2012 5:55 PM
Subject: Re: Problem when caput to waveform record

Hello Lin Wang,

The caput command line tool always writes data as strings. The server converts to the native data type. (The client diagnostic message also shows the data type to be DBR_STRING.)
Increasing EPICS_CA_MAX_ARRAY_BYTES to ~82000 should allow writing an array of 2048 strings.

Of course, any CA client may decide to use any format to write the data. It's just the stupid caput tool that always uses DBR_STRING for everything it writes.

~Ralph


On 30.05.2012 11:20, 王林 wrote:
Hello All,
My waveform records need to retrieve data from as well as write data to the hardware, and they contain 2048 float elements, for all these records, it works well with caget or edm X-Y graph. However, when I use "caput -a" to put an array of data (specifically more than 409 elements) to these waveform records, error occurs like this on CAC and CAS respectively,
 
CA.Client.Exception...............................................
    Warning: "The requested data transfer is greater than available memory or EPICS_CA_MAX_ARRAY_BYTES"
    Context: "op=1, channel=rcs:cpci9110:wf_wr_1, type=DBR_STRING, count=2048, ctx="CAS: Server unable to load large request message. Max bytes=16408""
    Source File: ../oldChannelNotify.cpp line 159
    Current Time: Wed May 30 2012 16:57:42.333264000
 
-> CAS: request from 192.168.206.74:33159 => "CAS: server unable to load large request message"
CAS: Request from 192.168.206.74:33159 => cmmd=4 cid=0x12 type=0 count=2048 postsize=81920
CAS: Request from 192.168.206.74:33159 =>  available=0x1        N=0 paddr=0x3bbcc52c
 
The environment variable EPICS_CA_MAX_ARRAY_BYTES on both CA client and server is 16384, and when I use "caput -a rcs:cpci9110:wf_wr_1 2048 ... list of elements ..." with the list of elements less than or equal to 409, it works, whereas if the list exceeds 409, the above error occurs.
 
One of the waveform records is as follows, and the envrionment is EPICS-3.14.12.1/vxWorks5.5.1/CPCI-6020,
record(waveform,"rcs:cpci9110:wf_wr_1") {
        field(DTYP,"CPCI9110 WRITE")
        field(INP,"#C0 S @WF_WR_1")
        field(NELM,"2048")
        field(FTVL,"FLOAT")
}
 
 
The following are some related environment variables,
[cpci@console101 ~]$ printenv | grep EPICS
EPICS_BASE=/home/cpci/base-3.14.12.1
EPICS_EXTENSIONS=/home/epics/extensions
EPICS_HOST_ARCH=linux-x86
EPICS_CA_MAX_ARRAY_BYTES=16384
-> epicsPrtEnvParams
EPICS_AR_PORT: 7002
EPICS_CAS_AUTO_BEACON_ADDR_LIST is undefined
EPICS_CAS_BEACON_ADDR_LIST is undefined
EPICS_CAS_BEACON_PERIOD is undefined
EPICS_CAS_BEACON_PORT is undefined
EPICS_CAS_IGNORE_ADDR_LIST is undefined
EPICS_CAS_INTF_ADDR_LIST is undefined
EPICS_CAS_SERVER_PORT is undefined
EPICS_CA_ADDR_LIST is undefined
EPICS_CA_AUTO_ADDR_LIST: YES
EPICS_CA_BEACON_PERIOD: 15.0
EPICS_CA_CONN_TMO: 30.0
EPICS_CA_MAX_ARRAY_BYTES: 16384
EPICS_CA_MAX_SEARCH_PERIOD: 300.0
EPICS_CA_NAME_SERVERS is undefined
EPICS_CA_REPEATER_PORT: 5065
EPICS_CA_SERVER_PORT: 5064
EPICS_CMD_PROTO_PORT is undefined
EPICS_IOC_LOG_FILE_COMMAND is undefined
EPICS_IOC_LOG_FILE_LIMIT: 1000000
EPICS_IOC_LOG_FILE_NAME is undefined
EPICS_IOC_LOG_INET is undefined
EPICS_IOC_LOG_PORT: 7004
EPICS_TIMEZONE: CUS::360:031302:110602
EPICS_TS_NTP_INET is undefined
IOCSH_HISTSIZE: 50
IOCSH_PS1: epics>
 
How should I solve this problem?
 
 
Thanks,
Lin Wang
 


References:
Problem when caput to waveform record 王林
Re: Problem when caput to waveform record Ralph Lange

Navigate by Date:
Prev: Re: Problem when caput to waveform record Ralph Lange
Next: Re: device support for CPCI Julio Calvo
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: Problem when caput to waveform record Ralph Lange
Next: Re: Problem when caput to waveform record Andrew Johnson
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 18 Nov 2013 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·