UniSet 2.32.1
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 execute();
41 void setLog( std::shared_ptr<DebugStream> dlog );
42
43 protected:
44 // действия при завершении работы
45 void sigterm( int signo );
46
48 uniset::ModbusRTU::mbErrCode readCoilStatus( uniset::ModbusRTU::ReadCoilMessage& query,
51 uniset::ModbusRTU::mbErrCode readInputStatus( uniset::ModbusRTU::ReadInputStatusMessage& query,
53
55 uniset::ModbusRTU::mbErrCode readOutputRegisters( uniset::ModbusRTU::ReadOutputMessage& query,
57
59 uniset::ModbusRTU::mbErrCode readInputRegisters( uniset::ModbusRTU::ReadInputMessage& query,
61
63 uniset::ModbusRTU::mbErrCode forceSingleCoil( uniset::ModbusRTU::ForceSingleCoilMessage& query,
65
67 uniset::ModbusRTU::mbErrCode forceMultipleCoils( uniset::ModbusRTU::ForceCoilsMessage& query,
69
70
72 uniset::ModbusRTU::mbErrCode writeOutputRegisters( uniset::ModbusRTU::WriteOutputMessage& query,
74
78
80 uniset::ModbusRTU::mbErrCode journalCommand( uniset::ModbusRTU::JournalCommandMessage& query,
82
84 uniset::ModbusRTU::mbErrCode setDateTime( uniset::ModbusRTU::SetDateTimeMessage& query,
86
88 uniset::ModbusRTU::mbErrCode remoteService( uniset::ModbusRTU::RemoteServiceMessage& query,
90
91 uniset::ModbusRTU::mbErrCode fileTransfer( uniset::ModbusRTU::FileTransferMessage& query,
93
94 uniset::ModbusRTU::mbErrCode diagnostics( uniset::ModbusRTU::DiagnosticMessage& query,
96
97 uniset::ModbusRTU::mbErrCode read4314( uniset::ModbusRTU::MEIMessageRDI& query,
99
102 std::unordered_set<uniset::ModbusRTU::ModbusAddr> vaddr;
104 bool verbose;
105 std::random_device rnd;
106 std::unique_ptr<std::mt19937> gen = { nullptr };
107 std::unique_ptr<std::uniform_int_distribution<>> rndgen = { nullptr };
108#if 0
109 typedef std::unordered_map<uniset::ModbusRTU::mbErrCode, unsigned int> ExchangeErrorMap;
110 ExchangeErrorMap errmap;
111 uniset::ModbusRTU::mbErrCode prev;
112
113
114 // можно было бы сделать unsigned, но аналоговые датчики у нас имеют
115 // тип long. А это число передаётся в графику в виде аналогового датчика
116 long askCount;
119 typedef std::unordered_map<int, std::string> FileList;
120 FileList flist;
121#endif
122 long replyVal;
123 long replyVal2;
124 long replyVal3;
125 private:
126
127};
128// -------------------------------------------------------------------------
129#endif // MBSlave_H_
130// -------------------------------------------------------------------------
Definition Utilities/MBTester/MBSlave.h:14
uniset::ModbusRTU::mbErrCode readCoilStatus(uniset::ModbusRTU::ReadCoilMessage &query, uniset::ModbusRTU::ReadCoilRetMessage &reply)
Definition Utilities/MBTester/mbslave.cc:117
uniset::ModbusRTU::mbErrCode remoteService(uniset::ModbusRTU::RemoteServiceMessage &query, uniset::ModbusRTU::RemoteServiceRetMessage &reply)
Definition Utilities/MBTester/mbslave.cc:394
uniset::ModbusRTU::mbErrCode forceMultipleCoils(uniset::ModbusRTU::ForceCoilsMessage &query, uniset::ModbusRTU::ForceCoilsRetMessage &reply)
Definition Utilities/MBTester/mbslave.cc:299
std::unordered_set< uniset::ModbusRTU::ModbusAddr > vaddr
Definition Utilities/MBTester/MBSlave.h:102
uniset::ModbusRTU::mbErrCode readInputRegisters(uniset::ModbusRTU::ReadInputMessage &query, uniset::ModbusRTU::ReadInputRetMessage &reply)
Definition Utilities/MBTester/mbslave.cc:198
uniset::ModbusRTU::mbErrCode writeOutputSingleRegister(uniset::ModbusRTU::WriteSingleOutputMessage &query, uniset::ModbusRTU::WriteSingleOutputRetMessage &reply)
Definition Utilities/MBTester/mbslave.cc:322
uniset::ModbusRTU::mbErrCode readInputStatus(uniset::ModbusRTU::ReadInputStatusMessage &query, uniset::ModbusRTU::ReadInputStatusRetMessage &reply)
Definition Utilities/MBTester/mbslave.cc:145
uniset::ModbusRTU::mbErrCode forceSingleCoil(uniset::ModbusRTU::ForceSingleCoilMessage &query, uniset::ModbusRTU::ForceSingleCoilRetMessage &reply)
Definition Utilities/MBTester/mbslave.cc:333
uniset::ModbusRTU::mbErrCode readOutputRegisters(uniset::ModbusRTU::ReadOutputMessage &query, uniset::ModbusRTU::ReadOutputRetMessage &reply)
Definition Utilities/MBTester/mbslave.cc:248
void execute()
Definition Utilities/MBTester/mbslave.cc:86
uniset::ModbusRTU::mbErrCode setDateTime(uniset::ModbusRTU::SetDateTimeMessage &query, uniset::ModbusRTU::SetDateTimeRetMessage &reply)
Definition Utilities/MBTester/mbslave.cc:382
uniset::ModbusRTUSlaveSlot * rscomm
Definition Utilities/MBTester/MBSlave.h:101
uniset::ModbusRTU::mbErrCode journalCommand(uniset::ModbusRTU::JournalCommandMessage &query, uniset::ModbusRTU::JournalCommandRetMessage &reply)
Definition Utilities/MBTester/mbslave.cc:345
uniset::ModbusRTU::mbErrCode writeOutputRegisters(uniset::ModbusRTU::WriteOutputMessage &query, uniset::ModbusRTU::WriteOutputRetMessage &reply)
Definition Utilities/MBTester/mbslave.cc:310
Definition ModbusRTUSlaveSlot.h:21
Definition ModbusTypes.h:1118
Definition ModbusTypes.h:1176
Definition ModbusTypes.h:1575
Definition ModbusTypes.h:1603
Definition ModbusTypes.h:727
Definition ModbusTypes.h:804
Definition ModbusTypes.h:937
Definition ModbusTypes.h:1310
Definition ModbusTypes.h:1333
Definition ModbusTypes.h:1188
Definition ModbusTypes.h:1243
Definition ModbusTypes.h:347
Definition ModbusTypes.h:378
Definition ModbusTypes.h:636
Definition ModbusTypes.h:666
Definition ModbusTypes.h:447
Definition ModbusTypes.h:548
Definition ModbusTypes.h:577
Definition ModbusTypes.h:1456
Definition ModbusTypes.h:1489
Definition ModbusTypes.h:1398
Definition ModbusTypes.h:1436
Definition ModbusTypes.h:844
Definition ModbusTypes.h:898
Definition ModbusTypes.h:1033