MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/driver/ModbusAnalogWideOutput.hh

85 lines
1.6 KiB
C++
Raw Normal View History

/*
* ModbusAnalogWideOutput.hh
*
* Created on: 17 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
* Author: titov
*/
#ifndef UMLIBRARY_DRIVER_MODBUSANALOGWIDEOUTPUT_HH_
#define UMLIBRARY_DRIVER_MODBUSANALOGWIDEOUTPUT_HH_
#include <stdint.h>
#include "IModBus.hh"
namespace driver {
namespace modbus {
//!
class ModbusAnalogWideOutput {
typedef IModBusDispatch::Status Status;
const float coeff;
const float offset;
const float invalid;
float value;
bool format_signed;
float up_limit;
float down_limit;
bool update();
mutable uint16_t data[2];
struct Part : public IModBusDispatch {
uint16_t * data;
Status read( uint16_t & reg );
Status write( uint16_t reg );
Part( uint16_t * data ) : data(data) {}
};
struct PartUpdater : public Part {
ModbusAnalogWideOutput & self;
Status write( uint16_t reg );
PartUpdater( ModbusAnalogWideOutput & self, uint16_t * data ) : Part(data), self(self) {}
};
Part one;
PartUpdater two;
public:
//!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
enum WordSequence {
HighFirstLowSecond, //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
LowFirstHighSecond //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
};
ModbusAnalogWideOutput( float coeff, float offset, float invalid, bool sign,
float initial, float up_limit, float down_limit , WordSequence sequnece );
//!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
IModBusDispatch & first();
//!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
IModBusDispatch & second();
const float & signal() const;
};
}
}
#endif /* UMLIBRARY_DRIVER_MODBUSANALOGWIDEOUTPUT_HH_ */