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: devAsynFloat64::processCallbackInput process read error |
From: | Mark Rivers via Tech-talk <tech-talk at aps.anl.gov> |
To: | "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>, Kritsada Kittimanapun <kritsadak at slri.or.th> |
Date: | Mon, 26 Feb 2024 13:45:15 +0000 |
This Message Is From an External Sender
This message came from outside your organization.
Hi Krtitsada,
Actually, you get an error before iocInit as well. It is this. It cannot find your Keller3040.db
file.
dbLoadRecords("../../db/Keller3040.db","user=mbsdaq")
filename="../../../src/ioc/dbStatic/dbLexRoutines.c" line number=264 No such file or directory dbRead opening file ../../db/Keller3040.db
In order to understand the devAsynFloat43 errors we need to see the
database and substitutions file that defines the records with the errors.
I think your Modbus configuration is also inefficient. You have defined
6 drvModbusAsyn drivers that all use function code 3 (read holding registers). Each one reads 2 registers, and the registers are all consecutive in memory (0x0000, 0x0002, etc.). This is creating 6 threads that are polling the device. It is much more efficient
to just create a single drvModbusAsyn driver that reads 12 registers. Then your database just defines the addr of each record as 0, 2, 4, 6, 8, 10.
Mark
From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Kritsada Kittimanapun via Tech-talk <tech-talk at aps.anl.gov>
Sent: Monday, February 26, 2024 6:25 AM To: tech-talk at aps.anl.gov <tech-talk at aps.anl.gov> Subject: devAsynFloat64::processCallbackInput process read error
This Message Is From an External Sender
This message came from outside your organization.
Hello,
After running the st.cmd, everything looks fine until "iocRun: All initialization complete", then there is an error message. I am not sure if it is from the connection of the device which I have already checked or from the file setup. Thank you for your advice. Kritsada
-----------------------------------------------------------------------------------
land@raspberrypi:~/epics/keller
$ ./start.sh
#!../../bin/linux-x86_64/Keller3040
## You may have to change Keller3040 to something else ## everywhere it appears in this file < envPaths epicsEnvSet("IOC","iocKeller3040") epicsEnvSet("TOP","/home/land/epics/keller") epicsEnvSet("MODULES","/home/land/epics/modules") epicsEnvSet("ASYN","/home/land/epics/modules/asyn") epicsEnvSet("MODBUS","/home/land/epics/modules/modbus") epicsEnvSet("EPICS_BASE","/home/land/epics/base") ## Register all support components dbLoadDatabase("../../dbd/Keller3040.dbd",0,0) Keller3040_registerRecordDeviceDriver(pdbbase) ## Load record instances dbLoadRecords("../../db/Keller3040.db","user=mbsdaq") filename="../../../src/ioc/dbStatic/dbLexRoutines.c" line number=264 No such file or directory dbRead opening file ../../db/Keller3040.db drvAsynSerialPortConfigure("Keller", "/dev/ttyUSB0", 0, 0, 1) asynSetOption("Keller", 0, "baud", "9600") asynSetOption("Keller", 0, "parity", "none") asynSetOption("Keller", 0, "bits", "8") asynSetOption("Keller", 0, "stop", "1") modbusInterposeConfig("Keller", 1, 1000, 0) # drvModbusAsynConfigure(portName, # tcpPortName, # slaveAddress, # modbusFunction, # modbusStartAddress, # modbusLength, # dataType, # pollMsec, # plcType); # Calculated value. drvModbusAsynConfigure("CH0", "Keller", 1, 3, 0x0000, 2, 0, 0, "Keller") # Pressure sensor 1. drvModbusAsynConfigure("P1", "Keller", 1, 3, 0x0002, 2, 0, 0, "Keller") # Pressure sensor 2. drvModbusAsynConfigure("P2", "Keller", 1, 3, 0x0004, 2, 0, 0, "Keller") # Temperature. drvModbusAsynConfigure("T", "Keller", 1, 3, 0x0006, 2, 0, 0, "Keller") # Temperature sensor 1. drvModbusAsynConfigure("TOB1", "Keller", 1, 3, 0x0008, 2, 0, 0, "Keller") # Temperature sensor 2. drvModbusAsynConfigure("TOB2", "Keller", 1, 3, 0x000a, 2, 0, 0, "Keller") # drvModbusAsynConfigure("SNH", "Keller", 250, 3, 0x0200, 2, 0, 100, "Keller") #asynSetTraceMask "Keller",1,0xff dbLoadTemplate("Keller.substitutions") iocInit() Starting iocInit ############################################################################ ## EPICS R3.16.1 ## EPICS Base built Jul 30 2018 ############################################################################ iocRun: All initialization complete ## Start any sequence programs #seq sncKeller3040,"user=mbsdaq" epics> 2024/02/26 10:27:29.299 Keller:CH0 devAsynFloat64::processCallbackInput process read error 2024/02/26 10:27:29.299 Keller:T devAsynFloat64::processCallbackInput process read error 2024/02/26 10:27:29.300 Keller:P1 devAsynFloat64::processCallbackInput process read error 2024/02/26 10:27:29.300 Keller:TOB2 devAsynFloat64::processCallbackInput process read error 2024/02/26 10:27:29.300 Keller:P2 devAsynFloat64::processCallbackInput process read error 2024/02/26 10:27:29.300 Keller:TOB1 devAsynFloat64::processCallbackInput process read error |