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

88 lines
1.8 KiB
C++
Raw Permalink Normal View History

/*
* ModbusAnalogWideInput.hh
*
* Created on: 1 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
* Author: titov
*/
#ifndef UMLIBRARY_DRIVER_MODBUSANALOGWIDEINPUT_HH_
#define UMLIBRARY_DRIVER_MODBUSANALOGWIDEINPUT_HH_
#include <stdint.h>
#include "../systemic/ISignal.hh"
#include "IModBus.hh"
namespace driver {
namespace modbus {
//!
class ModbusAnalogWideInput {
typedef IModBusDispatch::Status Status;
systemic::ISignal & signal;
const bool format_signed; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
float coeff;
float offset;
float up_limit;
float down_limit;
uint32_t nan_out_of_range; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> NAN <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
bool extract();
uint16_t data[2];
struct Part : public IModBusDispatch {
const uint16_t * data;
Status read( uint16_t & reg );
Status write( uint16_t reg );
Part( const uint16_t * data ) : data(data) {}
};
struct PartShower : public Part {
ModbusAnalogWideInput & self;
Status read( uint16_t & reg );
PartShower( ModbusAnalogWideInput & self, const uint16_t * data ) : Part(data), self(self) {}
};
PartShower one;
Part 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>.
};
ModbusAnalogWideInput( systemic::ISignal & value, bool format_signed,
uint32_t nan_out_of_range,
float coeff, float offset,
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();
};
}
}
#endif /* UMLIBRARY_DRIVER_MODBUSANALOGWIDEINPUT_HH_ */