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: | drvModbusAsynConfigure exception 3 when ASLO and PREC fields of PV are changed |
From: | "Marco A. Barra Montevechi Filho via Tech-talk" <tech-talk at aps.anl.gov> |
To: | "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov> |
Cc: | Junior Cintra Mauricio <junior.mauricio at lnls.br>, João Pedro Burle Ishida <joao.ishida at lnls.br> |
Date: | Tue, 19 Apr 2022 16:00:47 +0000 |
Hello all and good evening.
We are working with a modbus IOC, the one i asked about compiling errors here previously and Mark answered about removing modbus.dbd and leaving only modbusSupport.dbd to make it work. The IOC has several modbus functions defined in its st.cmd file like: drvModbusAsynConfigure("Eurotherm_EMODBUS_1_1_Wr_P", "EMODBUS", ${MBUS_SL_ADDR}, ${MBUS_WRITE}, 6, 3, 0, ${MBUS_POLL}, "");
where MBUS_SL_ADDR=1, MBUS_WRITE=6 and MODBUS_POLL=1000.
EMODBUS was defined in drvAsynIPPortConfigure("EMODBUS",{EUROTHERM_IP},0,0,1) The above modbus function is used by a PV: record(ao, "${BL}:EU2408:P:SOMETHING") { field(DESC, "P Param")
field(DTYP, "asynInt32")
field(OUT, "@asyn(Eurotherm_EMODBUS_1_1_Wr_P,0,1000)MODBUS_DATA")
}
and it works fine if the PV name doesnt end stop in ":P". If the PV name is only "${BL}:EU2408:P", then we get modbus exception 3 when initializing the IOC and the PV doesnt work.I suppose this happens because some other PV has a link to it and the link breaks when the name is changed. I dont know if there could be any cause to this behaviour. The only PVs we found refering to "${BL}:EU2408:P:SOMETHING" PV are: record(dfanout, "${BL}:EU2408:SETASLO") { field(OMSL, "closed_loop")
field(DOL, "${BL}:EU2408:CALCASLO PP")
field(OUTA, "${BL}:EU2408:SP.ASLO")
field(OUTB, "${BL}:EU2408:SP:RBV.ASLO")
field(OUTC, "${BL}:EU2408:RR.ASLO")
field(OUTD, "${BL}:EU2408:RR:RBV.ASLO")
field(OUTE, "${BL}:EU2408:PV:RBV.ASLO")
field(OUTF, "${BL}:EU2408:P.ASLO") #HERE
field(OUTG, "${BL}:EU2408:P:RBV.ASLO")
field(FLNK, "${BL}:EU2408:SETPREC")
}and record(dfanout, "${BL}:EU2408:SETPREC") { field(OMSL, "closed_loop")
field(DOL, "${BL}:EU2408:PREC.RVAL")
field(OUTA, "${BL}:EU2408:SP.PREC PP")
field(OUTB, "${BL}:EU2408:SP:RBV.PREC PP")
field(OUTC, "${BL}:EU2408:RR.PREC PP")
field(OUTD, "${BL}:EU2408:RR:RBV.PREC PP")
field(OUTE, "${BL}:EU2408:PV:RBV.PREC PP")
field(OUTF, "${BL}:EU2408:P.PREC PP") ######HERE
field(OUTG, "${BL}:EU2408:P:RBV.PREC PP")
}so i suppose altering PVs PREC and ASLO alters the correct modbus function needed to access the parameter, but this makes no sense to me since the parameter stored in the equipment should still be the same. Does someone know what am i missing? Thanks in advance 🙂 Marco Aviso Legal: Esta mensagem e seus anexos podem conter informações confidenciais e/ou de uso restrito. Observe atentamente seu conteúdo e considere eventual consulta ao remetente antes de copiá-la, divulgá-la ou distribuí-la. Se você recebeu esta mensagem por engano, por favor avise o remetente e apague-a imediatamente. Disclaimer: This email and its attachments may contain confidential and/or privileged information. Observe its content carefully and consider possible querying to the sender before copying, disclosing or distributing it. If you have received this email by mistake, please notify the sender and delete it immediately. |