UniSet  1.4.0
include/RTUStorage.h
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 // -----------------------------------------------------------------------------