UniSet  2.6.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:1436
Definition: ModbusTypes.h:1013
Definition: ModbusTypes.h:824
Definition: ModbusTypes.h:1469
Definition: ModbusTypes.h:325
uniset::ModbusRTU::mbErrCode writeOutputSingleRegister(uniset::ModbusRTU::WriteSingleOutputMessage &query, uniset::ModbusRTU::WriteSingleOutputRetMessage &reply)
Definition: MBTCPTestServer.cc:326
Definition: ModbusTypes.h:784
Definition: ModbusTypes.h:878
uniset::ModbusRTU::mbErrCode setDateTime(uniset::ModbusRTU::SetDateTimeMessage &query, uniset::ModbusRTU::SetDateTimeRetMessage &reply)
Definition: MBTCPTestServer.cc:397
Definition: ModbusTypes.h:1555
Definition: ModbusTypes.h:1098
uniset::ModbusRTU::mbErrCode readInputRegisters(uniset::ModbusRTU::ReadInputMessage &query, uniset::ModbusRTU::ReadInputRetMessage &reply)
Definition: MBTCPTestServer.cc:200
Definition: ModbusTypes.h:1168
Definition: ModbusTypes.h:644
Definition: ModbusTCPServerSlot.h:13
Definition: ModbusTypes.h:1583
Definition: MBTCPTestServer.h:11
uniset::ModbusRTU::mbErrCode remoteService(uniset::ModbusRTU::RemoteServiceMessage &query, uniset::ModbusRTU::RemoteServiceRetMessage &reply)
Definition: MBTCPTestServer.cc:412
Definition: ModbusTypes.h:1156
Definition: ModbusTypes.h:356
std::unordered_set< uniset::ModbusRTU::ModbusAddr > vaddr
Definition: MBTCPTestServer.h:131
Definition: ModbusTypes.h:425
Definition: ModbusTypes.h:1223
Definition: ModbusTypes.h:705
uniset::ModbusRTU::mbErrCode forceMultipleCoils(uniset::ModbusRTU::ForceCoilsMessage &query, uniset::ModbusRTU::ForceCoilsRetMessage &reply)
Definition: MBTCPTestServer.cc:288
Definition: ModbusTypes.h:1290
uniset::ModbusRTU::mbErrCode forceSingleCoil(uniset::ModbusRTU::ForceSingleCoilMessage &query, uniset::ModbusRTU::ForceSingleCoilRetMessage &reply)
Definition: MBTCPTestServer.cc:341
uniset::ModbusRTU::mbErrCode writeOutputRegisters(uniset::ModbusRTU::WriteOutputMessage &query, uniset::ModbusRTU::WriteOutputRetMessage &reply)
Definition: MBTCPTestServer.cc:303
Definition: ModbusTypes.h:614
uniset::ModbusRTU::mbErrCode journalCommand(uniset::ModbusRTU::JournalCommandMessage &query, uniset::ModbusRTU::JournalCommandRetMessage &reply)
Definition: MBTCPTestServer.cc:357
Definition: ModbusTypes.h:555
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:526
Definition: ModbusTypes.h:1378
Definition: ModbusTypes.h:917
Definition: ModbusTypes.h:1416
uniset::ModbusTCPServerSlot * sslot
Definition: MBTCPTestServer.h:130
uniset::ModbusRTU::mbErrCode readOutputRegisters(uniset::ModbusRTU::ReadOutputMessage &query, uniset::ModbusRTU::ReadOutputRetMessage &reply)
Definition: MBTCPTestServer.cc:245
Definition: ModbusTypes.h:1313