Commit 25ab0edf authored by Pavel Vainerman's avatar Pavel Vainerman

(Modbus): Добавил функции настройки паузы ожидания символа.

Для возможности управления паузой из настроек или командной строки.
parent f7913a5f
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
Name: libuniset Name: libuniset
Version: 1.0 Version: 1.0
Release: alt27 Release: alt28
Summary: UniSet - library for building distributed industrial control systems Summary: UniSet - library for building distributed industrial control systems
License: GPL License: GPL
Group: Development/C++ Group: Development/C++
...@@ -191,6 +191,9 @@ rm -f %buildroot%_libdir/*.la ...@@ -191,6 +191,9 @@ rm -f %buildroot%_libdir/*.la
%exclude %_pkgconfigdir/libUniSet.pc %exclude %_pkgconfigdir/libUniSet.pc
%changelog %changelog
* Thu May 05 2011 Pavel Vainerman <pv@altlinux.ru> 1.0-alt28
- add setup function for ModbusTCPMaster and ModbusTCPServer
* Wed May 04 2011 Pavel Vainerman <pv@altlinux.ru> 1.0-alt27 * Wed May 04 2011 Pavel Vainerman <pv@altlinux.ru> 1.0-alt27
- fixed bug in ModbusTCPMaster and ModbusTCPServer - fixed bug in ModbusTCPMaster and ModbusTCPServer
......
...@@ -80,6 +80,9 @@ pollThread(0) ...@@ -80,6 +80,9 @@ pollThread(0)
initPause = conf->getArgPInt("--" + prefix + "-initPause",it.getProp("initPause"), 3000); initPause = conf->getArgPInt("--" + prefix + "-initPause",it.getProp("initPause"), 3000);
sleepPause_usec = conf->getArgPInt("--" + prefix + "-sleepPause-usec",it.getProp("slepePause"), 100);
force = conf->getArgInt("--" + prefix + "-force",it.getProp("force")); force = conf->getArgInt("--" + prefix + "-force",it.getProp("force"));
force_out = conf->getArgInt("--" + prefix + "-force-out",it.getProp("force_out")); force_out = conf->getArgInt("--" + prefix + "-force-out",it.getProp("force_out"));
...@@ -182,6 +185,8 @@ void MBTCPMaster::initMB( bool reopen ) ...@@ -182,6 +185,8 @@ void MBTCPMaster::initMB( bool reopen )
if( recv_timeout > 0 ) if( recv_timeout > 0 )
mb->setTimeout(recv_timeout); mb->setTimeout(recv_timeout);
mb->setSleepPause(sleepPause_usec);
dlog[Debug::INFO] << myname << "(init): ipaddr=" << iaddr << " port=" << port << endl; dlog[Debug::INFO] << myname << "(init): ipaddr=" << iaddr << " port=" << port << endl;
if( dlog.debugging(Debug::LEVEL9) ) if( dlog.debugging(Debug::LEVEL9) )
......
...@@ -420,6 +420,7 @@ class MBTCPMaster: ...@@ -420,6 +420,7 @@ class MBTCPMaster:
bool force_out; /*!< флаг означающий, принудительного чтения выходов */ bool force_out; /*!< флаг означающий, принудительного чтения выходов */
bool mbregFromID; bool mbregFromID;
int polltime; /*!< переодичность обновления данных, [мсек] */ int polltime; /*!< переодичность обновления данных, [мсек] */
timeout_t sleepPause_usec;
PassiveTimer ptHeartBeat; PassiveTimer ptHeartBeat;
UniSetTypes::ObjectId sidHeartBeat; UniSetTypes::ObjectId sidHeartBeat;
......
...@@ -62,8 +62,9 @@ prefix(prefix_) ...@@ -62,8 +62,9 @@ prefix(prefix_)
recv_timeout = conf->getArgPInt("--"+prefix+"-recv-timeout",it.getProp("recv_timeout"), 50); recv_timeout = conf->getArgPInt("--"+prefix+"-recv-timeout",it.getProp("recv_timeout"), 50);
int alltout = conf->getArgPInt("--"+prefix+"-all-timeout",it.getProp("all_timeout"), 2000); int alltout = conf->getArgPInt("--"+prefix+"-all-timeout",it.getProp("all_timeout"), 2000);
ptAllNotRespond.setTiming(alltout); ptAllNotRespond.setTiming(alltout);
sleepPause_usec = conf->getArgPInt("--" + prefix + "-sleepPause-usec",it.getProp("slepePause"), 100);
rs_pre_clean = conf->getArgInt("--"+prefix+"-pre-clean",it.getProp("pre_clean")); rs_pre_clean = conf->getArgInt("--"+prefix+"-pre-clean",it.getProp("pre_clean"));
noQueryOptimization = conf->getArgInt("--"+prefix+"-no-query-optimization",it.getProp("no_query_optimization")); noQueryOptimization = conf->getArgInt("--"+prefix+"-no-query-optimization",it.getProp("no_query_optimization"));
...@@ -184,6 +185,8 @@ void RTUExchange::initMB( bool reopen ) ...@@ -184,6 +185,8 @@ void RTUExchange::initMB( bool reopen )
if( recv_timeout > 0 ) if( recv_timeout > 0 )
mb->setTimeout(recv_timeout); mb->setTimeout(recv_timeout);
mb->setSleepPause(sleepPause_usec);
dlog[Debug::INFO] << myname << "(init): dev=" << devname << " speed=" << ComPort::getSpeed(defSpeed) << endl; dlog[Debug::INFO] << myname << "(init): dev=" << devname << " speed=" << ComPort::getSpeed(defSpeed) << endl;
} }
......
...@@ -244,6 +244,7 @@ class RTUExchange: ...@@ -244,6 +244,7 @@ class RTUExchange:
bool force_out; /*!< флаг означающий, принудительного чтения выходов */ bool force_out; /*!< флаг означающий, принудительного чтения выходов */
bool mbregFromID; bool mbregFromID;
int polltime; /*!< переодичность обновления данных, [мсек] */ int polltime; /*!< переодичность обновления данных, [мсек] */
timeout_t sleepPause_usec;
PassiveTimer ptHeartBeat; PassiveTimer ptHeartBeat;
UniSetTypes::ObjectId sidHeartBeat; UniSetTypes::ObjectId sidHeartBeat;
......
...@@ -127,6 +127,9 @@ class ModbusClient ...@@ -127,6 +127,9 @@ class ModbusClient
*/ */
int setAfterSendPause( timeout_t msec ); int setAfterSendPause( timeout_t msec );
/*! установить паузу при ожидании символа */
inline void setSleepPause( timeout_t usec ){ sleepPause_usec = usec; }
void initLog( UniSetTypes::Configuration* conf, const std::string name, const std::string logfile="" ); void initLog( UniSetTypes::Configuration* conf, const std::string name, const std::string logfile="" );
void setLog( DebugStream& dlog ); void setLog( DebugStream& dlog );
...@@ -172,7 +175,8 @@ class ModbusClient ...@@ -172,7 +175,8 @@ class ModbusClient
ModbusRTU::ModbusMessage qbuf; /*!< буфер для посылки сообщений */ ModbusRTU::ModbusMessage qbuf; /*!< буфер для посылки сообщений */
timeout_t replyTimeOut_ms; /*!< таймаут на ожидание ответа */ timeout_t replyTimeOut_ms; /*!< таймаут на ожидание ответа */
timeout_t aftersend_msec; /*!< пауза после посылки запроса */ timeout_t aftersend_msec; /*!< пауза после посылки запроса */
timeout_t sleepPause_usec; /*!< пауза между попытками чтения символа из канала */
bool crcNoCheckit; bool crcNoCheckit;
...@@ -181,6 +185,8 @@ class ModbusClient ...@@ -181,6 +185,8 @@ class ModbusClient
void printProcessingTime(); void printProcessingTime();
PassiveTimer tmProcessing; PassiveTimer tmProcessing;
private: private:
}; };
......
...@@ -42,6 +42,9 @@ class ModbusServer ...@@ -42,6 +42,9 @@ class ModbusServer
/*! установить время ожидания по умолчанию */ /*! установить время ожидания по умолчанию */
void setRecvTimeout( timeout_t msec ); void setRecvTimeout( timeout_t msec );
/*! установить паузу при ожидании символа */
inline void setSleepPause( timeout_t usec ){ sleepPause_usec = usec; }
inline void setCRCNoCheckit( bool set ){ crcNoCheckit = set; } inline void setCRCNoCheckit( bool set ){ crcNoCheckit = set; }
inline bool isCRCNoCheckit(){ return crcNoCheckit; } inline bool isCRCNoCheckit(){ return crcNoCheckit; }
...@@ -203,6 +206,7 @@ class ModbusServer ...@@ -203,6 +206,7 @@ class ModbusServer
timeout_t recvTimeOut_ms; /*!< таймаут на приём */ timeout_t recvTimeOut_ms; /*!< таймаут на приём */
timeout_t replyTimeout_ms; /*!< таймаут на формирование ответа */ timeout_t replyTimeout_ms; /*!< таймаут на формирование ответа */
timeout_t aftersend_msec; /*!< пауза после посылки ответа */ timeout_t aftersend_msec; /*!< пауза после посылки ответа */
timeout_t sleepPause_usec; /*!< пауза между попытками чтения символа из канала */
bool onBroadcast; /*!< включен режим работы с broadcst-сообщениями */ bool onBroadcast; /*!< включен режим работы с broadcst-сообщениями */
bool crcNoCheckit; bool crcNoCheckit;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment