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: Horner PLC %T readout
From: Mark Rivers <[email protected]>
To: "'Eric Norum'" <[email protected]>, EPICS Tech-Talk <[email protected]>
Date: Thu, 13 Jun 2013 21:21:51 +0000

In their table they list the Modbus offset for the %T1 register as 06000.  I interpret that as octal 6000, because Modbus traditionally use octal, and they put a leading 0. 

 

But in your drvModbusAsynConfigure command you did not put a leading 0, so it is interpreting it as decimal 6000.

 

Now you also need to figure out if T513 is 513 decimal from the beginning, or 513 octal!

 

Mark

 

 

From: [email protected] [mailto:[email protected]] On Behalf Of Eric Norum
Sent: Thursday, June 13, 2013 4:11 PM
To: EPICS Tech-Talk
Subject: Horner PLC %T readout

 

Has anyone used the EPICS Modbus support to read %T ("Coil Status") values from a Horner PLC?

 

The document describing the mapping to Modbus register offsets is

 

The vendor that supplied the equipment with a Horner PLC embedded in it provided a spreadsheet that shows the interlock status values as T513 through T624, inclusive.

According to the table, T513 would be Modbus offset 6512 and read with function code 1 (Read Coil Status).

 

The IOC startup script has the following line

drvModbusAsynConfigure("etmHPA_r0b", "etmHPAPLC_2", 0, 1, 6512, 112, 0, 1000, "Horner")

which says to read 112 registers starting at offset 6512 with function code 1.

 

The first binary-in record is

record(bi,"$(P)T513") {

    field(DESC, "HPA Door Open (H)")

    field(DTYP, "asynInt32")

    field(INP,  "@asyn(etmHPA_r0b, 0, 1)INT16")

    field(SCAN, "I/O Intr")

    field(ZNAM, "OK")

    field(ONAM, "Fault")

}

which says that it gets its value from the first register in the block read by the command shown above.

 

 

This all looks right to me.

 

But…..

all the interlock binary-in records always show a value of 0.

I'm clearly doing something wrong, but I can't tell what.

 

Advice, suggestions, etc. gratefully accepted.

-- 
Eric Norum
[email protected]

 


Replies:
Re: Horner PLC %T readout Eric Norum
References:
Horner PLC %T readout Eric Norum

Navigate by Date:
Prev: Horner PLC %T readout Eric Norum
Next: Re: Horner PLC %T readout Eric Norum
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: Horner PLC %T readout Eric Norum
Next: Re: Horner PLC %T readout Eric Norum
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 ·