UniSet  2.7.0
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 "modbus/ModbusRTUSlaveSlot.h"
9 
10 // -------------------------------------------------------------------------
12 class MBSlave
13 {
14  public:
15  MBSlave( const std::unordered_set<uniset::ModbusRTU::ModbusAddr>& vaddr, const std::string& dev, const std::string& speed, bool use485 = false );
16  ~MBSlave();
17 
18  inline void setVerbose( bool state )
19  {
20  verbose = state;
21  }
22 
23  inline void setReply( long val )
24  {
25  replyVal = val;
26  }
27  inline void setReply2( long val )
28  {
29  replyVal2 = val;
30  }
31  inline void setReply3( long val )
32  {
33  replyVal3 = val;
34  }
35 
36  void execute();
38  void setLog( std::shared_ptr<DebugStream> dlog );
39 
40  protected:
41  // действия при завершении работы
42  void sigterm( int signo );
43 
45  uniset::ModbusRTU::mbErrCode readCoilStatus( uniset::ModbusRTU::ReadCoilMessage& query,
48  uniset::ModbusRTU::mbErrCode readInputStatus( uniset::ModbusRTU::ReadInputStatusMessage& query,
50 
52  uniset::ModbusRTU::mbErrCode readOutputRegisters( uniset::ModbusRTU::ReadOutputMessage& query,
54 
56  uniset::ModbusRTU::mbErrCode readInputRegisters( uniset::ModbusRTU::ReadInputMessage& query,
58 
60  uniset::ModbusRTU::mbErrCode forceSingleCoil( uniset::ModbusRTU::ForceSingleCoilMessage& query,
62 
64  uniset::ModbusRTU::mbErrCode forceMultipleCoils( uniset::ModbusRTU::ForceCoilsMessage& query,
66 
67 
69  uniset::ModbusRTU::mbErrCode writeOutputRegisters( uniset::ModbusRTU::WriteOutputMessage& query,
71 
75 
77  uniset::ModbusRTU::mbErrCode journalCommand( uniset::ModbusRTU::JournalCommandMessage& query,
79 
81  uniset::ModbusRTU::mbErrCode setDateTime( uniset::ModbusRTU::SetDateTimeMessage& query,
83 
85  uniset::ModbusRTU::mbErrCode remoteService( uniset::ModbusRTU::RemoteServiceMessage& query,
87 
88  uniset::ModbusRTU::mbErrCode fileTransfer( uniset::ModbusRTU::FileTransferMessage& query,
90 
91  uniset::ModbusRTU::mbErrCode diagnostics( uniset::ModbusRTU::DiagnosticMessage& query,
93 
94  uniset::ModbusRTU::mbErrCode read4314( uniset::ModbusRTU::MEIMessageRDI& query,
96 
99  std::unordered_set<uniset::ModbusRTU::ModbusAddr> vaddr;
101  bool verbose;
102 #if 0
103  typedef std::unordered_map<uniset::ModbusRTU::mbErrCode, unsigned int> ExchangeErrorMap;
104  ExchangeErrorMap errmap;
105  uniset::ModbusRTU::mbErrCode prev;
106 
107 
108  // можно было бы сделать unsigned, но аналоговые датчики у нас имеют
109  // тип long. А это число передаётся в графику в виде аналогового датчика
110  long askCount;
113  typedef std::unordered_map<int, std::string> FileList;
114  FileList flist;
115 #endif
116  long replyVal;
117  long replyVal2;
118  long replyVal3;
119  private:
120 
121 };
122 // -------------------------------------------------------------------------
123 #endif // MBSlave_H_
124 // -------------------------------------------------------------------------
Definition: ModbusTypes.h:1436
uniset::ModbusRTUSlaveSlot * rscomm
Definition: Utilities/MBTester/MBSlave.h:98
Definition: ModbusTypes.h:1013
void execute()
Definition: Utilities/MBTester/mbslave.cc:78
uniset::ModbusRTU::mbErrCode journalCommand(uniset::ModbusRTU::JournalCommandMessage &query, uniset::ModbusRTU::JournalCommandRetMessage &reply)
Definition: Utilities/MBTester/mbslave.cc:318
Definition: ModbusTypes.h:824
Definition: ModbusTypes.h:1469
uniset::ModbusRTU::mbErrCode readOutputRegisters(uniset::ModbusRTU::ReadOutputMessage &query, uniset::ModbusRTU::ReadOutputRetMessage &reply)
Definition: ModbusTypes.h:327
Definition: ModbusTypes.h:784
uniset::ModbusRTU::mbErrCode writeOutputSingleRegister(uniset::ModbusRTU::WriteSingleOutputMessage &query, uniset::ModbusRTU::WriteSingleOutputRetMessage &reply)
uniset::ModbusRTU::mbErrCode forceSingleCoil(uniset::ModbusRTU::ForceSingleCoilMessage &query, uniset::ModbusRTU::ForceSingleCoilRetMessage &reply)
Definition: ModbusTypes.h:878
Definition: ModbusTypes.h:1555
Definition: ModbusTypes.h:1098
Definition: ModbusRTUSlaveSlot.h:18
Definition: ModbusTypes.h:1168
Definition: ModbusTypes.h:646
Definition: ModbusTypes.h:1583
Definition: ModbusTypes.h:1156
std::unordered_set< uniset::ModbusRTU::ModbusAddr > vaddr
Definition: Utilities/MBTester/MBSlave.h:99
Definition: ModbusTypes.h:358
Definition: ModbusTypes.h:427
Definition: ModbusTypes.h:1223
uniset::ModbusRTU::mbErrCode forceMultipleCoils(uniset::ModbusRTU::ForceCoilsMessage &query, uniset::ModbusRTU::ForceCoilsRetMessage &reply)
uniset::ModbusRTU::mbErrCode readInputStatus(uniset::ModbusRTU::ReadInputStatusMessage &query, uniset::ModbusRTU::ReadInputStatusRetMessage &reply)
Definition: ModbusTypes.h:707
Definition: ModbusTypes.h:1290
Definition: ModbusTypes.h:616
Definition: ModbusTypes.h:557
uniset::ModbusRTU::mbErrCode remoteService(uniset::ModbusRTU::RemoteServiceMessage &query, uniset::ModbusRTU::RemoteServiceRetMessage &reply)
uniset::ModbusRTU::mbErrCode readInputRegisters(uniset::ModbusRTU::ReadInputMessage &query, uniset::ModbusRTU::ReadInputRetMessage &reply)
Definition: Utilities/MBTester/MBSlave.h:12
uniset::ModbusRTU::mbErrCode setDateTime(uniset::ModbusRTU::SetDateTimeMessage &query, uniset::ModbusRTU::SetDateTimeRetMessage &reply)
Definition: ModbusTypes.h:528
Definition: ModbusTypes.h:1378
Definition: ModbusTypes.h:917
Definition: ModbusTypes.h:1416
uniset::ModbusRTU::mbErrCode readCoilStatus(uniset::ModbusRTU::ReadCoilMessage &query, uniset::ModbusRTU::ReadCoilRetMessage &reply)
Definition: ModbusTypes.h:1313
uniset::ModbusRTU::mbErrCode writeOutputRegisters(uniset::ModbusRTU::WriteOutputMessage &query, uniset::ModbusRTU::WriteOutputRetMessage &reply)