|
UniSet
2.0.0
|
00001 // -------------------------------------------------------------------------- 00002 #ifndef _RTUSTORAGE_H_ 00003 #define _RTUSTORAGE_H_ 00004 // ----------------------------------------------------------------------------- 00005 #include <ostream> 00006 #include <string> 00007 #include <memory> 00008 #include "modbus/ModbusTypes.h" 00009 #include "UniSetTypes.h" 00010 // ----------------------------------------------------------------------------- 00011 class ModbusRTUMaster; 00012 // ----------------------------------------------------------------------------- 00013 class RTUStorage 00014 { 00015 public: 00016 RTUStorage( ModbusRTU::ModbusAddr addr ); 00017 ~RTUStorage(); 00018 00019 void poll( const std::shared_ptr<ModbusRTUMaster>& mb ) 00020 throw(ModbusRTU::mbException); 00021 00022 inline ModbusRTU::ModbusAddr getAddress(){ return addr; } 00023 inline bool ping(){ return pingOK; } 00024 00025 inline void setPollADC( bool set ){ pollADC = set; } 00026 inline void setPollDI( bool set ){ pollDI = set; } 00027 inline void setPollDIO( bool set ){ pollDIO = set; } 00028 inline void setPollUNIO( bool set ){ pollUNIO = set; } 00029 00030 enum RTUJack 00031 { 00032 nUnknown, 00033 nJ1, // UNIO48 (FPGA0) 00034 nJ2, // UNIO48 (FPGA1) 00035 nJ5, // DIO 16 00036 nX1, // АЦП (8) 00037 nX2, // АЦП (8) 00038 nX4, // DI (8) 00039 nX5 // DI (8) 00040 }; 00041 00042 static RTUJack s2j( const std::string& jack ); 00043 static std::string j2s( RTUJack j ); 00044 00045 long getInt( RTUJack jack, unsigned short channel, UniversalIO::IOType t ); 00046 float getFloat( RTUJack jack, unsigned short channel, UniversalIO::IOType t ); 00047 bool getState( RTUJack jack, unsigned short channel, UniversalIO::IOType t ); 00048 00049 static ModbusRTU::ModbusData getRegister( RTUJack jack, unsigned short channel, UniversalIO::IOType t ); 00050 00051 static ModbusRTU::SlaveFunctionCode getFunction( RTUJack jack, unsigned short channel, UniversalIO::IOType t ); 00052 00053 // ДОДЕЛАТЬ: setState, setValue 00054 void print(); 00055 00056 friend std::ostream& operator<<(std::ostream& os, RTUStorage& m ); 00057 friend std::ostream& operator<<(std::ostream& os, RTUStorage* m ); 00058 00059 protected: 00060 ModbusRTU::ModbusAddr addr; 00061 bool pingOK; 00062 00063 bool pollADC; 00064 bool pollDI; 00065 bool pollDIO; 00066 bool pollUNIO; 00067 00068 00069 float adc[8]; // АЦП 00070 bool di[16]; // Порт 16DI 00071 bool dio_do[16]; // Порт 16DIO DO 00072 bool dio_di[16]; // Порт 16DIO DI 00073 float dio_ai[16]; // Порт 16DIO AI 00074 float dio_ao[16]; // Порт 16DIO AO 00075 bool unio_do[48]; // Порт UNIO48 DO 00076 bool unio_di[48]; // Порт UNIO48 DI 00077 float unio_ai[24]; // Порт UNIO48 AI 00078 float unio_ao[24]; // Порт UNIO48 AO 00079 }; 00080 // -------------------------------------------------------------------------- 00081 #endif // _RTUSTORAGE_H_ 00082 // -----------------------------------------------------------------------------
1.7.6.1