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