EPICS Home

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

Subject: Modbus R2-10 available
From: Mark Rivers <[email protected]>
To: epics Techtalk <[email protected]>
Date: Fri, 15 Sep 2017 17:40:19 +0000

Folks,

 

Release R2-10 of the EPICS "modbus" module is now available. This is from the release notes:

 

- Added an epicsAtExit handler which stops the poller task. This eliminates error messages from the poller task when the IOC exits.

 

- Greatly reduced the number of error messages printed when there are communication errors or timeouts with the Modbus device.  

  Previously error messages were printed for each asyn port on each poller loop.

  Now, there is a single message per port when an error condition is detected, and a single message when the error condition ends.

  For example this is the output from a Koyo PLC with 3 drvModbusAsyn input ports that are polling at 10 Hz.

  The drvAsynIPPort has the asynOption "disconnectOnReadTimeout" set to "Y" set so that it reconnects quickly when the network is reconnected.

  The Ethernet cable was unplugged for about 8 seconds and then plugged back in.

2017/09/12 13:14:25.764 drvModbusAsyn::doModbusIO port K1_Xn_Bit error calling writeRead, error=164.54.160.197:502 read error: S_errno_EWOULDBLOCK, nwrite=6/6, nread=0

2017/09/12 13:14:25.781 drvModbusAsyn::doModbusIO port K1_Yn_In_Bit error calling writeRead, error=asynManager::queueLockPort queueRequest timed out, nwrite=0/6, nread=0

2017/09/12 13:14:25.814 drvModbusAsyn::doModbusIO port K1_Cn_In_Bit error calling writeRead, error=asynManager::queueLockPort queueRequest timed out, nwrite=0/6, nread=0

2017/09/12 13:14:33.564 drvModbusAsyn::doModbusIO port K1_Xn_Bit writeRead status back to normal nwrite=6/6, nread=6

2017/09/12 13:14:33.581 drvModbusAsyn::doModbusIO port K1_Yn_In_Bit writeRead status back to normal nwrite=6/6, nread=6

2017/09/12 13:14:33.614 drvModbusAsyn::doModbusIO port K1_Cn_In_Bit writeRead status back to normal nwrite=6/6, nread=34

 

 The first error message indicates that the K1_Xn_Bit driver got a timeout when reading the device.

  That timeout causes drvAsynIPPort driver to disconnect the port because of the asynOption described above.

  The next 2 errors are from the other two ports which get queueRequest timeouts because the port is now disconnected.

  When the network cable is reconnected each of the ports prints a "status back to normal" message.

 

- The example IOC startup scripts now call asynSetOption("disconnectOnReadTimeout", "Y"). for TCP ports.

  This ensures much faster reconnection when the Modbus device comes back online if it disconnects.

  Note that for this to work asyn R4-32 or later is needed, because of a needed fix to asynManager::queueLockPort(), which is used by the asynXXXSyncIO functions.

 

The home page is here:

http://cars.uchicago.edu/software/epics/modbus.html

 

The release notes are here:

http://cars.uchicago.edu/software/epics/modbusReleaseNotes.html

 

The documentation is here:

http://cars.uchicago.edu/software/epics/modbusDoc.html

 

The repository is on Github:

https://github.com/epics-modules/modbus

,

Mark

 


Navigate by Date:
Prev: asyn R4-32 available Mark Rivers
Next: QtQuick + EPICS PV = CSDataQuick Wang Xiaoqiang (PSI)
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <20172018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: asyn R4-32 available Mark Rivers
Next: QtQuick + EPICS PV = CSDataQuick Wang Xiaoqiang (PSI)
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <20172018  2019  2020  2021  2022  2023  2024