UniSet 2.35.2
Utilities/MBTester/MBSlave.h
1// -------------------------------------------------------------------------
2#ifndef MBSlave_H_
3#define MBSlave_H_
4// -------------------------------------------------------------------------
5#include <map>
6#include <unordered_set>
7#include <string>
8#include <random>
9#include "modbus/ModbusRTUSlaveSlot.h"
10
11// -------------------------------------------------------------------------
14{
15 public:
16 MBSlave( const std::unordered_set<uniset::ModbusRTU::ModbusAddr>& vaddr, const std::string& dev, const std::string& speed, bool use485 = false );
17 ~MBSlave();
18
19 inline void setVerbose( bool state )
20 {
21 verbose = state;
22 }
23
24 inline void setReply( long val )
25 {
26 replyVal = val;
27 }
28 inline void setReply2( long val )
29 {
30 replyVal2 = val;
31 }
32 inline void setReply3( long val )
33 {
34 replyVal3 = val;
35 }
36
37 void setRandomReply( long min, long max );
38
39 void setFreezeReply( const std::unordered_map<uint16_t, uint16_t>& );
40
41 void execute();
43 void setLog( std::shared_ptr<DebugStream> dlog );
44
45 protected:
46 // действия при завершении работы
47 void sigterm( int signo );
48
50 uniset::ModbusRTU::mbErrCode readCoilStatus( const uniset::ModbusRTU::ReadCoilMessage& query,
53 uniset::ModbusRTU::mbErrCode readInputStatus( const uniset::ModbusRTU::ReadInputStatusMessage& query,
55
57 uniset::ModbusRTU::mbErrCode readOutputRegisters( const uniset::ModbusRTU::ReadOutputMessage& query,
59
61 uniset::ModbusRTU::mbErrCode readInputRegisters( const uniset::ModbusRTU::ReadInputMessage& query,
63
65 uniset::ModbusRTU::mbErrCode forceSingleCoil( const uniset::ModbusRTU::ForceSingleCoilMessage& query,
67
69 uniset::ModbusRTU::mbErrCode forceMultipleCoils( const uniset::ModbusRTU::ForceCoilsMessage& query,
71
72
74 uniset::ModbusRTU::mbErrCode writeOutputRegisters( const uniset::ModbusRTU::WriteOutputMessage& query,
76
78 uniset::ModbusRTU::mbErrCode writeOutputSingleRegister( const uniset::ModbusRTU::WriteSingleOutputMessage& query,
80
82 uniset::ModbusRTU::mbErrCode journalCommand( const uniset::ModbusRTU::JournalCommandMessage& query,
84
86 uniset::ModbusRTU::mbErrCode setDateTime( const uniset::ModbusRTU::SetDateTimeMessage& query,
88
90 uniset::ModbusRTU::mbErrCode remoteService( const uniset::ModbusRTU::RemoteServiceMessage& query,
92
93 uniset::ModbusRTU::mbErrCode fileTransfer( const uniset::ModbusRTU::FileTransferMessage& query,
95
96 uniset::ModbusRTU::mbErrCode diagnostics( const uniset::ModbusRTU::DiagnosticMessage& query,
98
99 uniset::ModbusRTU::mbErrCode read4314( const uniset::ModbusRTU::MEIMessageRDI& query,
101
104 std::unordered_set<uniset::ModbusRTU::ModbusAddr> vaddr;
106 bool verbose;
107 std::random_device rnd;
108 std::unique_ptr<std::mt19937> gen = { nullptr };
109 std::unique_ptr<std::uniform_int_distribution<>> rndgen = { nullptr };
110 std::unordered_map<uint16_t, uint16_t> reglist = {};
111#if 0
112 typedef std::unordered_map<uniset::ModbusRTU::mbErrCode, unsigned int> ExchangeErrorMap;
113 ExchangeErrorMap errmap;
114 uniset::ModbusRTU::mbErrCode prev;
115
116
117 // можно было бы сделать unsigned, но аналоговые датчики у нас имеют
118 // тип long. А это число передаётся в графику в виде аналогового датчика
119 long askCount;
122 typedef std::unordered_map<int, std::string> FileList;
123 FileList flist;
124#endif
125 long replyVal;
126 long replyVal2;
127 long replyVal3;
128 private:
129
130};
131// -------------------------------------------------------------------------
132#endif // MBSlave_H_
133// -------------------------------------------------------------------------
Definition Utilities/MBTester/MBSlave.h:14
uniset::ModbusRTU::mbErrCode readOutputRegisters(const uniset::ModbusRTU::ReadOutputMessage &query, uniset::ModbusRTU::ReadOutputRetMessage &reply)
Definition Utilities/MBTester/mbslave.cc:273
uniset::ModbusRTU::mbErrCode forceMultipleCoils(const uniset::ModbusRTU::ForceCoilsMessage &query, uniset::ModbusRTU::ForceCoilsRetMessage &reply)
Definition Utilities/MBTester/mbslave.cc:321
std::unordered_set< uniset::ModbusRTU::ModbusAddr > vaddr
Definition Utilities/MBTester/MBSlave.h:104
uniset::ModbusRTU::mbErrCode forceSingleCoil(const uniset::ModbusRTU::ForceSingleCoilMessage &query, uniset::ModbusRTU::ForceSingleCoilRetMessage &reply)
Definition Utilities/MBTester/mbslave.cc:355
uniset::ModbusRTU::mbErrCode remoteService(const uniset::ModbusRTU::RemoteServiceMessage &query, uniset::ModbusRTU::RemoteServiceRetMessage &reply)
Definition Utilities/MBTester/mbslave.cc:416
void execute()
Definition Utilities/MBTester/mbslave.cc:89
uniset::ModbusRTU::mbErrCode readInputRegisters(const uniset::ModbusRTU::ReadInputMessage &query, uniset::ModbusRTU::ReadInputRetMessage &reply)
Definition Utilities/MBTester/mbslave.cc:226
uniset::ModbusRTU::mbErrCode readInputStatus(const uniset::ModbusRTU::ReadInputStatusMessage &query, uniset::ModbusRTU::ReadInputStatusRetMessage &reply)
Definition Utilities/MBTester/mbslave.cc:173
uniset::ModbusRTU::mbErrCode setDateTime(const uniset::ModbusRTU::SetDateTimeMessage &query, uniset::ModbusRTU::SetDateTimeRetMessage &reply)
Definition Utilities/MBTester/mbslave.cc:404
uniset::ModbusRTU::mbErrCode writeOutputRegisters(const uniset::ModbusRTU::WriteOutputMessage &query, uniset::ModbusRTU::WriteOutputRetMessage &reply)
Definition Utilities/MBTester/mbslave.cc:332
uniset::ModbusRTU::mbErrCode writeOutputSingleRegister(const uniset::ModbusRTU::WriteSingleOutputMessage &query, uniset::ModbusRTU::WriteSingleOutputRetMessage &reply)
Definition Utilities/MBTester/mbslave.cc:344
uniset::ModbusRTU::mbErrCode journalCommand(const uniset::ModbusRTU::JournalCommandMessage &query, uniset::ModbusRTU::JournalCommandRetMessage &reply)
Definition Utilities/MBTester/mbslave.cc:367
uniset::ModbusRTUSlaveSlot * rscomm
Definition Utilities/MBTester/MBSlave.h:103
uniset::ModbusRTU::mbErrCode readCoilStatus(const uniset::ModbusRTU::ReadCoilMessage &query, uniset::ModbusRTU::ReadCoilRetMessage &reply)
Definition Utilities/MBTester/mbslave.cc:120
Definition ModbusRTUSlaveSlot.h:21
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