UniSet 2.32.1
ModbusClient.h
1// -------------------------------------------------------------------------
2#ifndef ModbusClient_H_
3#define ModbusClient_H_
4// -------------------------------------------------------------------------
5#include <string>
6#include <memory>
7#include "Mutex.h"
8#include "Debug.h"
9#include "Configuration.h"
10#include "PassiveTimer.h"
11#include "ModbusTypes.h"
12// -------------------------------------------------------------------------
13namespace uniset
14{
15 // -------------------------------------------------------------------------
19 {
20 public:
21
23 virtual ~ModbusClient();
24
25 // ------------- Modbus-функции ----------------------------------------
33 ModbusRTU::ReadCoilRetMessage read01( ModbusRTU::ModbusAddr addr,
34 ModbusRTU::ModbusData start, ModbusRTU::ModbusData count );
35
43 ModbusRTU::ReadInputStatusRetMessage read02( ModbusRTU::ModbusAddr addr,
44 ModbusRTU::ModbusData start, ModbusRTU::ModbusData count );
45
46
54 ModbusRTU::ReadOutputRetMessage read03( ModbusRTU::ModbusAddr addr,
55 ModbusRTU::ModbusData start, ModbusRTU::ModbusData count );
56
64 ModbusRTU::ReadInputRetMessage read04( ModbusRTU::ModbusAddr addr,
65 ModbusRTU::ModbusData start, ModbusRTU::ModbusData count );
66
74 ModbusRTU::ForceSingleCoilRetMessage write05( ModbusRTU::ModbusAddr addr,
75 ModbusRTU::ModbusData reg, bool cmd );
76
84 ModbusRTU::WriteSingleOutputRetMessage write06( ModbusRTU::ModbusAddr addr,
85 ModbusRTU::ModbusData reg, ModbusRTU::ModbusData data );
86
89
92
94 ModbusRTU::DiagnosticRetMessage diag08( ModbusRTU::ModbusAddr addr,
95 ModbusRTU::DiagnosticsSubFunction subfunc,
96 ModbusRTU::ModbusData dat = 0 );
97
102 ModbusRTU::MEIMessageRetRDI read4314( ModbusRTU::ModbusAddr addr,
103 ModbusRTU::ModbusByte devID,
104 ModbusRTU::ModbusByte objID );
105
117 ModbusRTU::SetDateTimeRetMessage setDateTime( ModbusRTU::ModbusAddr addr,
118 ModbusRTU::ModbusByte hour, ModbusRTU::ModbusByte min, ModbusRTU::ModbusByte sec,
119 ModbusRTU::ModbusByte day, ModbusRTU::ModbusByte mon, ModbusRTU::ModbusByte year,
120 ModbusRTU::ModbusByte century );
121
122
131 ModbusRTU::FileTransferRetMessage partOfFileTransfer( ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusData idFile,
132 ModbusRTU::ModbusData numpack, timeout_t part_timeout_msec = 2000 );
133
141 void fileTransfer( ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusData idFile,
142 const std::string& save2filename, timeout_t part_timeout_msec = 2000 );
143
144 // ---------------------------------------------------------------------
146 void setTimeout( timeout_t msec );
147
151 int setAfterSendPause( timeout_t msec );
152
154 inline void setSleepPause( timeout_t usec )
155 {
156 sleepPause_usec = usec;
157 }
158
159 void initLog( std::shared_ptr<uniset::Configuration> conf, const std::string& name, const std::string& logfile = "" );
160 void setLog( std::shared_ptr<DebugStream> dlog );
161
162 inline void setCRCNoCheckit( bool set )
163 {
164 crcNoCheckit = set;
165 }
166 inline bool isCRCNoCheckit() const
167 {
168 return crcNoCheckit;
169 }
170
171 virtual void cleanupChannel() {}
172
173 protected:
174
181 virtual size_t getNextData( unsigned char* buf, size_t len ) = 0;
182
184 virtual void setChannelTimeout( timeout_t msec ) = 0;
185
186 virtual ModbusRTU::mbErrCode sendData( unsigned char* buf, size_t len ) = 0;
187
189 virtual ModbusRTU::mbErrCode query( ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusMessage& msg,
190 ModbusRTU::ModbusMessage& qreply, timeout_t timeout ) = 0;
191
192 // -------------------------------------
194 virtual ModbusRTU::mbErrCode send( ModbusRTU::ModbusMessage& msg );
195
197 virtual ModbusRTU::mbErrCode recv( ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusByte qfunc,
198 ModbusRTU::ModbusMessage& rbuf, timeout_t timeout );
199
200 virtual ModbusRTU::mbErrCode recv_pdu( ModbusRTU::ModbusByte qfunc,
201 ModbusRTU::ModbusMessage& rbuf, timeout_t timeout );
202
203 timeout_t replyTimeOut_ms;
204 timeout_t aftersend_msec;
205 timeout_t sleepPause_usec;
207 bool crcNoCheckit;
208
209 uniset::uniset_rwmutex sendMutex;
210 std::shared_ptr<DebugStream> dlog;
211
212 void printProcessingTime();
213 PassiveTimer tmProcessing;
214
215 private:
216
219 };
220 // -------------------------------------------------------------------------
221} // end of namespace uniset
222// -------------------------------------------------------------------------
223#endif // ModbusClient_H_
224// -------------------------------------------------------------------------
Definition ModbusClient.h:19
ModbusRTU::SetDateTimeRetMessage setDateTime(ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusByte hour, ModbusRTU::ModbusByte min, ModbusRTU::ModbusByte sec, ModbusRTU::ModbusByte day, ModbusRTU::ModbusByte mon, ModbusRTU::ModbusByte year, ModbusRTU::ModbusByte century)
Definition ModbusClient.cc:279
ModbusRTU::ReadInputRetMessage read04(ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusData start, ModbusRTU::ModbusData count)
Definition ModbusClient.cc:122
virtual ModbusRTU::mbErrCode recv(ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusByte qfunc, ModbusRTU::ModbusMessage &rbuf, timeout_t timeout)
Definition ModbusClient.cc:406
ModbusRTU::FileTransferRetMessage partOfFileTransfer(ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusData idFile, ModbusRTU::ModbusData numpack, timeout_t part_timeout_msec=2000)
Definition ModbusClient.cc:391
ModbusRTU::ForceCoilsRetMessage write0F(ModbusRTU::ForceCoilsMessage &msg)
Definition ModbusClient.cc:191
virtual ModbusRTU::mbErrCode query(ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusMessage &msg, ModbusRTU::ModbusMessage &qreply, timeout_t timeout)=0
virtual void setChannelTimeout(timeout_t msec)=0
virtual ModbusRTU::mbErrCode send(ModbusRTU::ModbusMessage &msg)
Definition ModbusClient.cc:1416
ModbusRTU::MEIMessageRetRDI read4314(ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusByte devID, ModbusRTU::ModbusByte objID)
Definition ModbusClient.cc:255
timeout_t aftersend_msec
Definition ModbusClient.h:204
ModbusRTU::DiagnosticRetMessage diag08(ModbusRTU::ModbusAddr addr, ModbusRTU::DiagnosticsSubFunction subfunc, ModbusRTU::ModbusData dat=0)
Definition ModbusClient.cc:234
ModbusRTU::WriteSingleOutputRetMessage write06(ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusData reg, ModbusRTU::ModbusData data)
Definition ModbusClient.cc:167
ModbusRTU::ReadInputStatusRetMessage read02(ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusData start, ModbusRTU::ModbusData count)
Definition ModbusClient.cc:80
void setTimeout(timeout_t msec)
Definition ModbusClient.cc:48
ModbusRTU::WriteOutputRetMessage write10(ModbusRTU::WriteOutputMessage &msg)
Definition ModbusClient.cc:213
timeout_t replyTimeOut_ms
Definition ModbusClient.h:203
ModbusRTU::ForceSingleCoilRetMessage write05(ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusData reg, bool cmd)
Definition ModbusClient.cc:142
int setAfterSendPause(timeout_t msec)
Definition ModbusClient.cc:53
ModbusRTU::ReadCoilRetMessage read01(ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusData start, ModbusRTU::ModbusData count)
Definition ModbusClient.cc:60
void setSleepPause(timeout_t usec)
Definition ModbusClient.h:154
timeout_t sleepPause_usec
Definition ModbusClient.h:205
ModbusRTU::ReadOutputRetMessage read03(ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusData start, ModbusRTU::ModbusData count)
Definition ModbusClient.cc:101
void fileTransfer(ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusData idFile, const std::string &save2filename, timeout_t part_timeout_msec=2000)
Definition ModbusClient.cc:301
virtual size_t getNextData(unsigned char *buf, size_t len)=0
Пассивный таймер
Definition PassiveTimer.h:94
Definition Mutex.h:32
Definition Calibration.h:27
Definition ModbusTypes.h:1176
Definition ModbusTypes.h:1603
Definition ModbusTypes.h:727
Definition ModbusTypes.h:804
Definition ModbusTypes.h:1243
Definition ModbusTypes.h:211
Definition ModbusTypes.h:378
Definition ModbusTypes.h:666
Definition ModbusTypes.h:577
Definition ModbusTypes.h:1436
Definition ModbusTypes.h:844
Definition ModbusTypes.h:898