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: | modbus reading arrays of floats |
From: | "Pearson, Matthew via Tech-talk" <tech-talk at aps.anl.gov> |
To: | "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov> |
Date: | Thu, 19 Oct 2023 22:12:39 +0000 |
Hi, I have a device which supports reading arrays of floats (IEEE Float32) over Modbus/TCP.
Am I right in thinking that currently this isn’t supported by the Asyn modbus support? It seems to support arrays of ints, but not floats.
Interestingly, this almost works: record(waveform, "$(P)$(R)TCA") { field(FTVL, "ULONG") field(DTYP, "asynInt32ArrayIn") field(INP, "@asyn($(PORT)8w4,2064,1)FLOAT32_LE") …. } By specifying the datatype to be FLOAT32_LE, the modbus driver correctly converts the byte data to floats, but the waveform only gives me the integer part of the number. So as a work-around I’ve implement multiple reads, one per Float32. This works fine, and I’ll likely stick with it. However, is there a smarter workaround? For example, can I read the data as a block of Ints, then convert to IEEE Float32 in the database (without writing a subroutine)? Cheers, Matt |