UniSet 2.35.2
MBTCPServer.h
1#ifndef MBTCPServer_H_
2#define MBTCPServer_H_
3// -------------------------------------------------------------------------
4#include <unordered_set>
5#include <string>
6#include <random>
7#include "modbus/ModbusTCPServerSlot.h"
8
9// -------------------------------------------------------------------------
12{
13 public:
14 MBTCPServer( const std::unordered_set<uniset::ModbusRTU::ModbusAddr>& myaddr, const std::string& inetaddr, int port = 502, bool verbose = false );
16
17 inline void setVerbose( bool state )
18 {
19 verbose = state;
20 }
21
22 inline void setReply( long val )
23 {
24 replyVal = val;
25 }
26
27 void setRandomReply( long min, long max );
28
29 void setFreezeReply( const std::unordered_map<uint16_t, uint16_t>& );
30
31 inline uniset::timeout_t setAfterSendPause( uniset::timeout_t msec )
32 {
33 return sslot->setAfterSendPause(msec);
34 }
35
36 void execute();
37 void setLog( std::shared_ptr<DebugStream>& dlog );
38
39 void setMaxSessions( size_t max );
40
41 protected:
42 // действия при завершении работы
43 void sigterm( int signo );
44
46 uniset::ModbusRTU::mbErrCode readCoilStatus( const uniset::ModbusRTU::ReadCoilMessage& query,
49 uniset::ModbusRTU::mbErrCode readInputStatus( const uniset::ModbusRTU::ReadInputStatusMessage& query,
51
53 uniset::ModbusRTU::mbErrCode readOutputRegisters( const uniset::ModbusRTU::ReadOutputMessage& query,
55
57 uniset::ModbusRTU::mbErrCode readInputRegisters( const uniset::ModbusRTU::ReadInputMessage& query,
59
61 uniset::ModbusRTU::mbErrCode forceSingleCoil( const uniset::ModbusRTU::ForceSingleCoilMessage& query,
63
65 uniset::ModbusRTU::mbErrCode forceMultipleCoils( const uniset::ModbusRTU::ForceCoilsMessage& query,
67
68
70 uniset::ModbusRTU::mbErrCode writeOutputRegisters( const uniset::ModbusRTU::WriteOutputMessage& query,
72
74 uniset::ModbusRTU::mbErrCode writeOutputSingleRegister( const uniset::ModbusRTU::WriteSingleOutputMessage& query,
76
77
78 uniset::ModbusRTU::mbErrCode diagnostics( const uniset::ModbusRTU::DiagnosticMessage& query,
80
81 uniset::ModbusRTU::mbErrCode read4314( const uniset::ModbusRTU::MEIMessageRDI& query,
83
85 uniset::ModbusRTU::mbErrCode journalCommand( const uniset::ModbusRTU::JournalCommandMessage& query,
87
89 uniset::ModbusRTU::mbErrCode setDateTime( const uniset::ModbusRTU::SetDateTimeMessage& query,
91
93 uniset::ModbusRTU::mbErrCode remoteService( const uniset::ModbusRTU::RemoteServiceMessage& query,
95
96 uniset::ModbusRTU::mbErrCode fileTransfer( const uniset::ModbusRTU::FileTransferMessage& query,
98
99
102 std::unordered_set<uniset::ModbusRTU::ModbusAddr> vaddr;
104 bool verbose = { false };
105 long replyVal = { -1 };
106
107 std::unordered_map<uint16_t, uint16_t> reglist = {};
108
109 std::random_device rnd;
110 std::unique_ptr<std::mt19937> gen = { nullptr };
111 std::unique_ptr<std::uniform_int_distribution<>> rndgen = { nullptr };
112#if 0
113 typedef std::unordered_map<uniset::ModbusRTU::mbErrCode, unsigned int> ExchangeErrorMap;
114 ExchangeErrorMap errmap;
115 uniset::ModbusRTU::mbErrCode prev;
116
117
118 // можно было бы сделать unsigned, но аналоговые датчики у нас имеют
119 // тип long. А это число передаётся в графику в виде аналогового датчика
120 long askCount;
123 typedef std::unordered_map<int, std::string> FileList;
124 FileList flist;
125#endif
126
127 private:
128
129};
130// -------------------------------------------------------------------------
131#endif // MBTCPServer_H_
132// -------------------------------------------------------------------------
Definition MBTCPServer.h:12
void execute()
Definition MBTester/mbtcpserver.cc:87
uniset::ModbusRTU::mbErrCode setDateTime(const uniset::ModbusRTU::SetDateTimeMessage &query, uniset::ModbusRTU::SetDateTimeRetMessage &reply)
Definition MBTester/mbtcpserver.cc:348
uniset::ModbusRTU::mbErrCode readOutputRegisters(const uniset::ModbusRTU::ReadOutputMessage &query, uniset::ModbusRTU::ReadOutputRetMessage &reply)
Definition MBTester/mbtcpserver.cc:213
uniset::ModbusRTU::mbErrCode writeOutputRegisters(const uniset::ModbusRTU::WriteOutputMessage &query, uniset::ModbusRTU::WriteOutputRetMessage &reply)
Definition MBTester/mbtcpserver.cc:264
uniset::ModbusRTU::mbErrCode forceSingleCoil(const uniset::ModbusRTU::ForceSingleCoilMessage &query, uniset::ModbusRTU::ForceSingleCoilRetMessage &reply)
Definition MBTester/mbtcpserver.cc:295
uniset::ModbusRTU::mbErrCode readInputStatus(const uniset::ModbusRTU::ReadInputStatusMessage &query, uniset::ModbusRTU::ReadInputStatusRetMessage &reply)
Definition MBTester/mbtcpserver.cc:137
std::unordered_set< uniset::ModbusRTU::ModbusAddr > vaddr
Definition MBTCPServer.h:102
uniset::ModbusRTU::mbErrCode forceMultipleCoils(const uniset::ModbusRTU::ForceCoilsMessage &query, uniset::ModbusRTU::ForceCoilsRetMessage &reply)
Definition MBTester/mbtcpserver.cc:249
uniset::ModbusTCPServerSlot * sslot
Definition MBTCPServer.h:101
uniset::ModbusRTU::mbErrCode remoteService(const uniset::ModbusRTU::RemoteServiceMessage &query, uniset::ModbusRTU::RemoteServiceRetMessage &reply)
Definition MBTester/mbtcpserver.cc:360
uniset::ModbusRTU::mbErrCode readCoilStatus(const uniset::ModbusRTU::ReadCoilMessage &query, uniset::ModbusRTU::ReadCoilRetMessage &reply)
Definition MBTester/mbtcpserver.cc:96
uniset::ModbusRTU::mbErrCode writeOutputSingleRegister(const uniset::ModbusRTU::WriteSingleOutputMessage &query, uniset::ModbusRTU::WriteSingleOutputRetMessage &reply)
Definition MBTester/mbtcpserver.cc:280
uniset::ModbusRTU::mbErrCode journalCommand(const uniset::ModbusRTU::JournalCommandMessage &query, uniset::ModbusRTU::JournalCommandRetMessage &reply)
Definition MBTester/mbtcpserver.cc:311
uniset::ModbusRTU::mbErrCode readInputRegisters(const uniset::ModbusRTU::ReadInputMessage &query, uniset::ModbusRTU::ReadInputRetMessage &reply)
Definition MBTester/mbtcpserver.cc:177
timeout_t setAfterSendPause(timeout_t msec)
Definition ModbusServer.cc:115
Definition ModbusTCPServerSlot.h:16
Definition ModbusTypes.h:1175
Definition ModbusTypes.h:1237
Definition ModbusTypes.h:1664
Definition ModbusTypes.h:1697
Definition ModbusTypes.h:763
Definition ModbusTypes.h:841
Definition ModbusTypes.h:983
Definition ModbusTypes.h:1379
Definition ModbusTypes.h:1404
Definition ModbusTypes.h:1249
Definition ModbusTypes.h:1309
Definition ModbusTypes.h:421
Definition ModbusTypes.h:457
Definition ModbusTypes.h:664
Definition ModbusTypes.h:698
Definition ModbusTypes.h:494
Definition ModbusTypes.h:568
Definition ModbusTypes.h:601
Definition ModbusTypes.h:1537
Definition ModbusTypes.h:1572
Definition ModbusTypes.h:1473
Definition ModbusTypes.h:1514
Definition ModbusTypes.h:885
Definition ModbusTypes.h:940
Definition ModbusTypes.h:1084