UniSet  2.8.0
MBTCPTestServer.h
1 #ifndef MBTCPTestServer_H_
2 #define MBTCPTestServer_H_
3 // -------------------------------------------------------------------------
4 #include <string>
5 #include <atomic>
6 #include <ostream>
7 #include <unordered_set>
8 #include "modbus/ModbusTCPServerSlot.h"
9 // -------------------------------------------------------------------------
12 {
13  public:
14  MBTCPTestServer( const std::unordered_set<uniset::ModbusRTU::ModbusAddr>& vaddr, const std::string& inetaddr, int port = 502, bool verbose = false );
15  ~MBTCPTestServer();
16 
17  inline void setVerbose( bool state )
18  {
19  verbose = state;
20  }
21 
22  inline void setReply( uint32_t val )
23  {
24  replyVal = val;
25  }
26 
27  inline void setIgnoreAddrMode( bool state )
28  {
29  if( sslot )
30  sslot->setIgnoreAddrMode(state);
31  }
32 
33  void execute();
34  void setLog( std::shared_ptr<DebugStream> dlog );
35 
36  inline bool isRunning()
37  {
38  return ( sslot && sslot->isActive() );
39  }
40 
41  inline void disableExchange( bool set = true )
42  {
43  disabled = set;
44  }
45 
46  inline bool getForceSingleCoilCmd()
47  {
48  return forceSingleCoilCmd;
49  }
50  inline int16_t getLastWriteOutputSingleRegister()
51  {
52  return lastWriteOutputSingleRegister;
53  }
54  inline uniset::ModbusRTU::ForceCoilsMessage getLastForceCoilsQ()
55  {
56  return lastForceCoilsQ;
57  }
58  inline uniset::ModbusRTU::WriteOutputMessage getLastWriteOutput()
59  {
60  return lastWriteOutputQ;
61  }
62 
63  friend std::ostream& operator<<(std::ostream& os, const MBTCPTestServer* m );
64 
65  inline float getF2TestValue()
66  {
67  return f2_test_value;
68  }
69 
70  protected:
71  // действия при завершении работы
72  void sigterm( int signo );
73 
75  uniset::ModbusRTU::mbErrCode readCoilStatus( uniset::ModbusRTU::ReadCoilMessage& query,
78  uniset::ModbusRTU::mbErrCode readInputStatus( uniset::ModbusRTU::ReadInputStatusMessage& query,
80 
82  uniset::ModbusRTU::mbErrCode readOutputRegisters( uniset::ModbusRTU::ReadOutputMessage& query,
84 
86  uniset::ModbusRTU::mbErrCode readInputRegisters( uniset::ModbusRTU::ReadInputMessage& query,
88 
90  uniset::ModbusRTU::mbErrCode forceSingleCoil( uniset::ModbusRTU::ForceSingleCoilMessage& query,
92 
94  uniset::ModbusRTU::mbErrCode forceMultipleCoils( uniset::ModbusRTU::ForceCoilsMessage& query,
96 
97 
99  uniset::ModbusRTU::mbErrCode writeOutputRegisters( uniset::ModbusRTU::WriteOutputMessage& query,
101 
103  uniset::ModbusRTU::mbErrCode writeOutputSingleRegister( uniset::ModbusRTU::WriteSingleOutputMessage& query,
105 
106 
107  uniset::ModbusRTU::mbErrCode diagnostics( uniset::ModbusRTU::DiagnosticMessage& query,
109 
110  uniset::ModbusRTU::mbErrCode read4314( uniset::ModbusRTU::MEIMessageRDI& query,
112 
114  uniset::ModbusRTU::mbErrCode journalCommand( uniset::ModbusRTU::JournalCommandMessage& query,
116 
118  uniset::ModbusRTU::mbErrCode setDateTime( uniset::ModbusRTU::SetDateTimeMessage& query,
120 
122  uniset::ModbusRTU::mbErrCode remoteService( uniset::ModbusRTU::RemoteServiceMessage& query,
124 
125  uniset::ModbusRTU::mbErrCode fileTransfer( uniset::ModbusRTU::FileTransferMessage& query,
127 
128 
131  std::unordered_set<uniset::ModbusRTU::ModbusAddr> vaddr;
133  bool verbose;
134  uint32_t replyVal;
135  bool forceSingleCoilCmd;
136  int16_t lastWriteOutputSingleRegister;
137  uniset::ModbusRTU::ForceCoilsMessage lastForceCoilsQ;
138  uniset::ModbusRTU::WriteOutputMessage lastWriteOutputQ;
139  float f2_test_value = {0.0};
140 
141 #if 0
142  typedef std::map<uniset::ModbusRTU::mbErrCode, unsigned int> ExchangeErrorMap;
143  ExchangeErrorMap errmap;
144  uniset::ModbusRTU::mbErrCode prev;
145 
146 
147  // можно было бы сделать unsigned, но аналоговые датчики у нас имеют
148  // тип long. А это число передаётся в графику в виде аналогового датчика
149  long askCount;
152  typedef std::map<int, std::string> FileList;
153  FileList flist;
154 #endif
155 
156  private:
157  bool disabled;
158  std::string myname;
159 };
160 // -------------------------------------------------------------------------
161 #endif // MBTCPTestServer_H_
162 // -------------------------------------------------------------------------
Definition: ModbusTypes.h:1454
Definition: ModbusTypes.h:1031
Definition: ModbusTypes.h:842
Definition: ModbusTypes.h:1487
Definition: ModbusTypes.h:345
uniset::ModbusRTU::mbErrCode writeOutputSingleRegister(uniset::ModbusRTU::WriteSingleOutputMessage &query, uniset::ModbusRTU::WriteSingleOutputRetMessage &reply)
Definition: MBTCPTestServer.cc:331
Definition: ModbusTypes.h:802
Definition: ModbusTypes.h:896
uniset::ModbusRTU::mbErrCode setDateTime(uniset::ModbusRTU::SetDateTimeMessage &query, uniset::ModbusRTU::SetDateTimeRetMessage &reply)
Definition: MBTCPTestServer.cc:402
Definition: ModbusTypes.h:1573
Definition: ModbusTypes.h:1116
uniset::ModbusRTU::mbErrCode readInputRegisters(uniset::ModbusRTU::ReadInputMessage &query, uniset::ModbusRTU::ReadInputRetMessage &reply)
Definition: MBTCPTestServer.cc:205
Definition: ModbusTypes.h:1186
Definition: ModbusTypes.h:664
Definition: ModbusTCPServerSlot.h:13
Definition: ModbusTypes.h:1601
Definition: MBTCPTestServer.h:11
uniset::ModbusRTU::mbErrCode remoteService(uniset::ModbusRTU::RemoteServiceMessage &query, uniset::ModbusRTU::RemoteServiceRetMessage &reply)
Definition: MBTCPTestServer.cc:417
Definition: ModbusTypes.h:1174
Definition: ModbusTypes.h:376
std::unordered_set< uniset::ModbusRTU::ModbusAddr > vaddr
Definition: MBTCPTestServer.h:131
Definition: ModbusTypes.h:445
Definition: ModbusTypes.h:1241
Definition: ModbusTypes.h:725
uniset::ModbusRTU::mbErrCode forceMultipleCoils(uniset::ModbusRTU::ForceCoilsMessage &query, uniset::ModbusRTU::ForceCoilsRetMessage &reply)
Definition: MBTCPTestServer.cc:293
Definition: ModbusTypes.h:1308
uniset::ModbusRTU::mbErrCode forceSingleCoil(uniset::ModbusRTU::ForceSingleCoilMessage &query, uniset::ModbusRTU::ForceSingleCoilRetMessage &reply)
Definition: MBTCPTestServer.cc:346
uniset::ModbusRTU::mbErrCode writeOutputRegisters(uniset::ModbusRTU::WriteOutputMessage &query, uniset::ModbusRTU::WriteOutputRetMessage &reply)
Definition: MBTCPTestServer.cc:308
Definition: ModbusTypes.h:634
uniset::ModbusRTU::mbErrCode journalCommand(uniset::ModbusRTU::JournalCommandMessage &query, uniset::ModbusRTU::JournalCommandRetMessage &reply)
Definition: MBTCPTestServer.cc:362
Definition: ModbusTypes.h:575
void execute()
Definition: MBTCPTestServer.cc:97
uniset::ModbusRTU::mbErrCode readCoilStatus(uniset::ModbusRTU::ReadCoilMessage &query, uniset::ModbusRTU::ReadCoilRetMessage &reply)
Definition: MBTCPTestServer.cc:109
uniset::ModbusRTU::mbErrCode readInputStatus(uniset::ModbusRTU::ReadInputStatusMessage &query, uniset::ModbusRTU::ReadInputStatusRetMessage &reply)
Definition: MBTCPTestServer.cc:157
Definition: ModbusTypes.h:546
Definition: ModbusTypes.h:1396
Definition: ModbusTypes.h:935
Definition: ModbusTypes.h:1434
uniset::ModbusTCPServerSlot * sslot
Definition: MBTCPTestServer.h:130
uniset::ModbusRTU::mbErrCode readOutputRegisters(uniset::ModbusRTU::ReadOutputMessage &query, uniset::ModbusRTU::ReadOutputRetMessage &reply)
Definition: MBTCPTestServer.cc:250
Definition: ModbusTypes.h:1331