You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
DVRLastVersionsCompare/SYSCTRL/SystemControlMODBUSRTU.cpp

1474 lines
74 KiB
C++

/*
* SystemControlMODBUSRTU.cpp
*
* Author: Aleksey Gerasimenko
* gerasimenko.aleksey.n@gmail.com
*/
#include "SYSCTRL/SystemControl.h"
namespace SYSCTRL
{
#pragma CODE_SECTION("ramfuncs");
void SystemControl::inc_break_counter()
{
m_modbus_break_counter++;
//
}//
//
#pragma CODE_SECTION("ramfuncs");
void SystemControl::set_break_counter(Uint16 count)
{
m_modbus_break_counter = count;
//
}//
//
//#pragma CODE_SECTION("ramfuncs");
void SystemControl::modbusrtu_rubus_interface(Uint16 rdReg[], Uint16 wrReg[])
{
//
// Accept data
m_rubus.response_shadow.command.all = 0;
m_rubus.accepted.command_start.all = wrReg[1];
m_rubus.accepted.id.byte.bt1 = m_rubus.accepted.command_start.byte.bt1;
m_rubus.accepted.com.byte.bt0 = m_rubus.accepted.command_start.byte.bt0;
m_rubus.accepted.index = wrReg[2];
m_environment.external_command_word.all = (uint16_t)wrReg[6];
if(m_rubus.accepted.command_start.all == 0)
{
//command reset
m_rubus.accepted.command_end.all = 0x0000;
m_rubus.accepted.com.all = 0x0000;
m_rubus.accepted.data.word.wL.all = 0x0000;
m_rubus.accepted.data.word.wH.all = 0x0000;
m_rubus.accepted.id.all = 0x0000;
m_rubus.accepted.index = 0x0000;
m_rubus.response_shadow.command.all = 0x0000;
m_rubus.response_shadow.index = 0x0000;
m_rubus.response_shadow.data.word.wL.all = 0x0000;
m_rubus.response_shadow.data.word.wH.all = 0x0000;
m_rubus.mode = MODBUSRTU::RUBUS::RUBUS_RESET;
}
else
{
// not reset
//
if(m_rubus.accepted.com.bit.b00 == 0)
{
// highly likely command is read
m_rubus.accepted.data.all = (uint32_t)0;
m_rubus.accepted.command_end.all = wrReg[3];
//
}
else
{
// highly likely command is write
m_rubus.accepted.data.word.wL.all = wrReg[3];
m_rubus.accepted.data.word.wH.all = wrReg[4];
m_rubus.accepted.command_end.all = wrReg[5];
//
}//if else
//
if(m_rubus.accepted.command_start.all == m_rubus.accepted.command_end.all)
{
if((m_rubus.accepted.index != 0)&&(m_rubus.accepted.index <= m_rubus.size))
{
// command & index is valid
//
if(m_rubus.accepted.com.bit.b00 == 0)
{
//command is read
m_rubus.mode = MODBUSRTU::RUBUS::RUBUS_READ;
}
else
{
//command is write
m_rubus.mode = MODBUSRTU::RUBUS::RUBUS_WRITE;
//
}//if else
_modbusrtu_rubus_read_write_register();
//
}
else
{
// index is not valid
// error - wrong index
m_rubus.mode = MODBUSRTU::RUBUS::RUBUS_ERROR;
//
}//if else
//
}
else
{
// command is not valid
// error - wrong command
m_rubus.mode = MODBUSRTU::RUBUS::RUBUS_RESET;
//
}//if else
//
}//if else
//
switch(m_rubus.mode)
{
case MODBUSRTU::RUBUS::RUBUS_RESET:
{
//reset or wrong command
m_rubus.accepted.id.all = 0x0000;
m_rubus.accepted.com.all = 0x0000;
m_rubus.accepted.data.all = (uint32_t)0;
m_rubus.response_shadow.command.all = 0x0000;
m_rubus.response_shadow.data.word.wL.all = 0x0000;
m_rubus.response_shadow.data.word.wH.all = 0x0000;
m_rubus.response = m_rubus.response_shadow;
rdReg[1] = 0x0000;
rdReg[2] = 0x0000;
rdReg[3] = 0x0000;
rdReg[4] = 0x0000;
rdReg[5] = 0x0000;
break;
}
case MODBUSRTU::RUBUS::RUBUS_READ:
{
//command is read
m_rubus.response = m_rubus.response_shadow;
rdReg[1] = m_rubus.response.command.all;
rdReg[2] = m_rubus.response.data.word.wL.all;
rdReg[3] = m_rubus.response.data.word.wH.all;
rdReg[4] = m_rubus.response.command.all;
rdReg[5] = 0x0000;
break;
}
case MODBUSRTU::RUBUS::RUBUS_WRITE:
{
//command is write
m_rubus.response = m_rubus.response_shadow;
rdReg[1] = m_rubus.response.command.all;
rdReg[2] = 0;
rdReg[3] = 0;
rdReg[4] = 0;
rdReg[5] = 0x0000;
break;
}
case MODBUSRTU::RUBUS::RUBUS_ERROR:
{
//wrong index
m_rubus.response_shadow.command.all = m_rubus.accepted.command_start.all + m_rubus.mask.error_response.all;
m_rubus.response_shadow.data.word.wL.all = 0x0000;
m_rubus.response_shadow.data.word.wH.all = 0x0000;
m_rubus.response = m_rubus.response_shadow;
rdReg[1] = m_rubus.response.command.all;
rdReg[2] = 0x0000;
rdReg[3] = 0x0000;
rdReg[4] = 0x0000;
rdReg[5] = 0x0000;
break;
}
default:
{
break;
}
}//switch
//
//
}//
//
//#pragma CODE_SECTION("ramfuncs");
void SystemControl::_modbusrtu_rubus_read_write_register()
{
/* switch(m_rubus.accepted.index)
{
case 1:
{
_modbusrtu_rubus_read_write_float(m_temp_configuration.regulator_voltage_load.gain);
break;
}
case 2:
{
_modbusrtu_rubus_read_write_float(m_temp_configuration.regulator_voltage_load.time);
break;
}
case 3:
{
_modbusrtu_rubus_read_write_float(m_temp_configuration.regulator_voltage_load.low_saturation);
break;
}
case 4:
{
_modbusrtu_rubus_read_write_float(m_temp_configuration.regulator_voltage_load.high_saturation);
break;
}
default:
{
m_rubus.response.data.f = FP_ZERO;
break;
}
}*/ //switch
//
if(m_rubus.mode == MODBUSRTU::RUBUS::RUBUS_READ)
{
//command is read
//
m_rubus.m_cell = m_rubus_data.get_register(m_rubus.accepted.index);
m_rubus.cell_data.all = m_rubus.m_cell.read_register().all;
//
switch(m_rubus.m_cell.get_type())
{
case MODBUSRTU::RUBUS_BOOL:
{
//command is read
m_rubus.response_shadow.data.b = m_rubus.m_cell.read_register().b;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_FLOAT:
{
//command is read
m_rubus.response_shadow.data.f = m_rubus.m_cell.read_register().f;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_float.all;
break;
}
case MODBUSRTU::RUBUS_UINT8:
{
//command is read
m_rubus.response_shadow.data.u8 = m_rubus.m_cell.read_register().u8;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_uint8.all;
break;
}
case MODBUSRTU::RUBUS_UINT16:
{
//command is read
m_rubus.response_shadow.data.u16 = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_uint16.all;
break;
}
case MODBUSRTU::RUBUS_UINT32:
{
//command is read
m_rubus.response_shadow.data.u32 = m_rubus.m_cell.read_register().u32;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_uint32.all;
break;
}
case MODBUSRTU::RUBUS_INT8:
{
//command is read
m_rubus.response_shadow.data.i8 = m_rubus.m_cell.read_register().i8;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_int8.all;
break;
}
case MODBUSRTU::RUBUS_INT16:
{
//command is read
m_rubus.response_shadow.data.i16 = m_rubus.m_cell.read_register().i16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_int16.all;
break;
}
case MODBUSRTU::RUBUS_INT32:
{
//command is read
m_rubus.response_shadow.data.i32 = m_rubus.m_cell.read_register().i32;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_int32.all;
break;
}
case MODBUSRTU::RUBUS_BIT0:
{
//command is read
m_rubus.response_shadow.data.u16 = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT1:
{
//command is read
m_rubus.response_shadow.data.u16 = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT2:
{
//command is read
m_rubus.response_shadow.data.u16 = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT3:
{
//command is read
m_rubus.response_shadow.data.u16 = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT4:
{
//command is read
m_rubus.response_shadow.data.u16 = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT5:
{
//command is read
m_rubus.response_shadow.data.u16 = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT6:
{
//command is read
m_rubus.response_shadow.data.u16 = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT7:
{
//command is read
m_rubus.response_shadow.data.u16 = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT8:
{
//command is read
m_rubus.response_shadow.data.u16 = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT9:
{
//command is read
m_rubus.response_shadow.data.u16 = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT10:
{
//command is read
m_rubus.response_shadow.data.u16 = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT11:
{
//command is read
m_rubus.response_shadow.data.u16 = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT12:
{
//command is read
m_rubus.response_shadow.data.u16 = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT13:
{
//command is read
m_rubus.response_shadow.data.u16 = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT14:
{
//command is read
m_rubus.response_shadow.data.u16 = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT15:
{
//command is read
m_rubus.response_shadow.data.u16 = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT16:
{
//command is read
m_rubus.response_shadow.data.word.wH.all = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT17:
{
//command is read
m_rubus.response_shadow.data.word.wH.all = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT18:
{
//command is read
m_rubus.response_shadow.data.word.wH.all = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT19:
{
//command is read
m_rubus.response_shadow.data.word.wH.all = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT20:
{
//command is read
m_rubus.response_shadow.data.word.wH.all = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT21:
{
//command is read
m_rubus.response_shadow.data.word.wH.all = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT22:
{
//command is read
m_rubus.response_shadow.data.word.wH.all = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT23:
{
//command is read
m_rubus.response_shadow.data.word.wH.all = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT24:
{
//command is read
m_rubus.response_shadow.data.word.wH.all = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT25:
{
//command is read
m_rubus.response_shadow.data.word.wH.all = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT26:
{
//command is read
m_rubus.response_shadow.data.word.wH.all = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT27:
{
//command is read
m_rubus.response_shadow.data.word.wH.all = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT28:
{
//command is read
m_rubus.response_shadow.data.word.wH.all = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT29:
{
//command is read
m_rubus.response_shadow.data.word.wH.all = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT30:
{
//command is read
m_rubus.response_shadow.data.word.wH.all = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
case MODBUSRTU::RUBUS_BIT31:
{
//command is read
m_rubus.response_shadow.data.word.wH.all = m_rubus.m_cell.read_register().u16;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
break;
}
//
}//switch
//
}//if
//
if(m_rubus.mode == MODBUSRTU::RUBUS::RUBUS_WRITE)
{
//command is write
//
m_rubus.m_cell = m_rubus_data.get_register(m_rubus.accepted.index);
m_rubus.response_shadow.command.all = m_rubus.m_cell.write_register(m_rubus.accepted.data.all);
m_rubus.response_shadow.command.all |= m_rubus.accepted.command_start.all;
//
}//if
//
}//
//#pragma CODE_SECTION("ramfuncs");
inline void SystemControl::_modbusrtu_rubus_read_write_bool(bool& param)
{
if(m_rubus.mode == MODBUSRTU::RUBUS::RUBUS_READ)
{
//command is read
m_rubus.response_shadow.data.f = param;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_bool.all;
//
}//if
//
if(m_rubus.mode == MODBUSRTU::RUBUS::RUBUS_WRITE)
{
//command is write
param = m_rubus.accepted.data.b;
m_rubus.response_shadow.command.all = m_rubus.accepted.command_start.all;
//
}//if
//
}//
//
//#pragma CODE_SECTION("ramfuncs");
inline void SystemControl::_modbusrtu_rubus_read_write_float(float& param)
{
if(m_rubus.mode == MODBUSRTU::RUBUS::RUBUS_READ)
{
//command is read
m_rubus.response_shadow.data.f = param;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_float.all;
//
}//if
//
if(m_rubus.mode == MODBUSRTU::RUBUS::RUBUS_WRITE)
{
//command is write
param = m_rubus.accepted.data.f;
m_rubus.response_shadow.command.all = m_rubus.accepted.command_start.all;
//
}//if
//
}//
//
//#pragma CODE_SECTION("ramfuncs");
inline void SystemControl::_modbusrtu_rubus_read_write_uint16(uint16_t& param)
{
if(m_rubus.mode == MODBUSRTU::RUBUS::RUBUS_READ)
{
//command is read
m_rubus.response_shadow.data.u16 = param;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_uint16.all;
//
}//if
//
if(m_rubus.mode == MODBUSRTU::RUBUS::RUBUS_WRITE)
{
//command is write
param = m_rubus.accepted.data.u16;
m_rubus.response_shadow.command.all = m_rubus.accepted.command_start.all;
//
}//if
//
}//
//
//#pragma CODE_SECTION("ramfuncs");
inline void SystemControl::_modbusrtu_rubus_read_write_uint32(uint32_t& param)
{
if(m_rubus.mode == MODBUSRTU::RUBUS::RUBUS_READ)
{
//command is read
m_rubus.response_shadow.data.u32 = param;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_uint32.all;
//
}//if
//
if(m_rubus.mode == MODBUSRTU::RUBUS::RUBUS_WRITE)
{
//command is write
param = m_rubus.accepted.data.u32;
m_rubus.response_shadow.command.all = m_rubus.accepted.command_start.all;
//
}//if
//
}//
//
//#pragma CODE_SECTION("ramfuncs");
inline void SystemControl::_modbusrtu_rubus_read_write_int16(int16_t& param)
{
if(m_rubus.mode == MODBUSRTU::RUBUS::RUBUS_READ)
{
//command is read
m_rubus.response_shadow.data.i16 = param;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_int16.all;
//
}//if
//
if(m_rubus.mode == MODBUSRTU::RUBUS::RUBUS_WRITE)
{
//command is write
param = m_rubus.accepted.data.i16;
m_rubus.response_shadow.command.all = m_rubus.accepted.command_start.all;
//
}//if
//
}//
//
//#pragma CODE_SECTION("ramfuncs");
inline void SystemControl::_modbusrtu_rubus_read_write_int32(int32_t& param)
{
if(m_rubus.mode == MODBUSRTU::RUBUS::RUBUS_READ)
{
//command is read
m_rubus.response_shadow.data.i32 = param;
m_rubus.response_shadow.command.byte.bt1 = m_rubus.accepted.id.byte.bt1;
m_rubus.response_shadow.command.bit.b00 = m_rubus.accepted.com.bit.b00;
m_rubus.response_shadow.command.all |= m_rubus.mask.rubus_int32.all;
//
}//if
//
if(m_rubus.mode == MODBUSRTU::RUBUS::RUBUS_WRITE)
{
//command is write
param = m_rubus.accepted.data.i32;
m_rubus.response_shadow.command.all = m_rubus.accepted.command_start.all;
//
}//if
//
}//
//
void SystemControl::_modbusrtu_rubus_configurate()
{
m_rubus_data.add_register_uint32(1, 1, &m_test_read_word.u32);
//
m_rubus_data.add_register_float(2, 1, &m_environment.rms_voltage_input_ab);
m_rubus_data.add_register_float(3, 1, &m_environment.rms_voltage_input_bc);
m_rubus_data.add_register_float(4, 1, &m_environment.rms_voltage_input_ca);
//
m_rubus_data.add_register_float(5, 1, &m_environment.rms_voltage_load_ab);
m_rubus_data.add_register_float(6, 1, &m_environment.rms_voltage_load_bc);
m_rubus_data.add_register_float(7, 1, &m_environment.rms_voltage_load_ca);
//
m_rubus_data.add_register_float(8, 1, &m_environment.rms_current_input_a);
m_rubus_data.add_register_float(9, 1, &m_environment.rms_current_input_b);
m_rubus_data.add_register_float(10, 1, &m_environment.rms_current_input_c);
//
m_rubus_data.add_register_float(11, 1, &m_environment.rms_current_load_a);
m_rubus_data.add_register_float(12, 1, &m_environment.rms_current_load_b);
m_rubus_data.add_register_float(13, 1, &m_environment.rms_current_load_c);
//
m_rubus_data.add_register_float(14, 1, &m_environment.rms_current_cell_a);
m_rubus_data.add_register_float(15, 1, &m_environment.rms_current_cell_b);
m_rubus_data.add_register_float(16, 1, &m_environment.rms_current_cell_c);
//
m_rubus_data.add_register_float(17, 1, &m_environment.rms_current_bypass_a);
m_rubus_data.add_register_float(18, 1, &m_environment.rms_current_bypass_b);
m_rubus_data.add_register_float(19, 1, &m_environment.rms_current_bypass_c);
//
m_rubus_data.add_register_float(20, 1, &m_environment.voltage_grid_a);
m_rubus_data.add_register_float(21, 1, &m_environment.voltage_grid_b);
m_rubus_data.add_register_float(22, 1, &m_environment.voltage_grid_c);
//
m_rubus_data.add_register_float(23, 1, &m_environment.voltage_load_a);
m_rubus_data.add_register_float(24, 1, &m_environment.voltage_load_b);
m_rubus_data.add_register_float(25, 1, &m_environment.voltage_load_c);
//
m_rubus_data.add_register_float(26, 1, &m_environment.current_input_a);
m_rubus_data.add_register_float(27, 1, &m_environment.current_input_b);
m_rubus_data.add_register_float(28, 1, &m_environment.current_input_c);
//
m_rubus_data.add_register_float(29, 1, &m_environment.current_load_a);
m_rubus_data.add_register_float(30, 1, &m_environment.current_load_b);
m_rubus_data.add_register_float(31, 1, &m_environment.current_load_c);
//
m_rubus_data.add_register_float(32, 1, &m_environment.current_cell_a);
m_rubus_data.add_register_float(33, 1, &m_environment.current_cell_b);
m_rubus_data.add_register_float(34, 1, &m_environment.current_cell_c);
//
m_rubus_data.add_register_float(35, 1, &m_environment.current_bypass_a);
m_rubus_data.add_register_float(36, 1, &m_environment.current_bypass_b);
m_rubus_data.add_register_float(37, 1, &m_environment.current_bypass_c);
//
// reserved 38
// reserved 39
// reserved 40
// reserved 41
// reserved 42
// reserved 43
// reserved 44
// reserved 45
//
m_rubus_data.add_register_float(46, 0, &m_system_configuration.scale_voltage_input_a);
m_rubus_data.add_register_float(47, 0, &m_system_configuration.scale_voltage_input_b);
m_rubus_data.add_register_float(48, 0, &m_system_configuration.scale_voltage_input_c);
//
m_rubus_data.add_register_float(49, 0, &m_system_configuration.scale_voltage_load_a);
m_rubus_data.add_register_float(50, 0, &m_system_configuration.scale_voltage_load_b);
m_rubus_data.add_register_float(51, 0, &m_system_configuration.scale_voltage_load_c);
//
m_rubus_data.add_register_float(52, 0, &m_system_configuration.scale_current_input_a);
m_rubus_data.add_register_float(53, 0, &m_system_configuration.scale_current_input_b);
m_rubus_data.add_register_float(54, 0, &m_system_configuration.scale_current_input_c);
//
m_rubus_data.add_register_float(55, 0, &m_system_configuration.scale_current_load_a);
m_rubus_data.add_register_float(56, 0, &m_system_configuration.scale_current_load_b);
m_rubus_data.add_register_float(57, 0, &m_system_configuration.scale_current_load_c);
//
m_rubus_data.add_register_float(58, 0, &m_system_configuration.scale_current_cell_a);
m_rubus_data.add_register_float(59, 0, &m_system_configuration.scale_current_cell_b);
m_rubus_data.add_register_float(60, 0, &m_system_configuration.scale_current_cell_c);
//
m_rubus_data.add_register_float(61, 0, &m_system_configuration.scale_current_bypass_a);
m_rubus_data.add_register_float(62, 0, &m_system_configuration.scale_current_bypass_b);
m_rubus_data.add_register_float(63, 0, &m_system_configuration.scale_current_bypass_c);
//
m_rubus_data.add_register_float(64, 1, &m_environment.offset_voltage_grid_a);
m_rubus_data.add_register_float(65, 1, &m_environment.offset_voltage_grid_b);
m_rubus_data.add_register_float(66, 1, &m_environment.offset_voltage_grid_c);
//
m_rubus_data.add_register_float(67, 1, &m_environment.offset_voltage_load_a);
m_rubus_data.add_register_float(68, 1, &m_environment.offset_voltage_load_b);
m_rubus_data.add_register_float(69, 1, &m_environment.offset_voltage_load_c);
//
m_rubus_data.add_register_float(70, 1, &m_environment.offset_current_input_a);
m_rubus_data.add_register_float(71, 1, &m_environment.offset_current_input_b);
m_rubus_data.add_register_float(72, 1, &m_environment.offset_current_input_c);
//
m_rubus_data.add_register_float(73, 1, &m_environment.offset_current_load_a);
m_rubus_data.add_register_float(74, 1, &m_environment.offset_current_load_b);
m_rubus_data.add_register_float(75, 1, &m_environment.offset_current_load_c);
//
m_rubus_data.add_register_float(76, 1, &m_environment.offset_current_cell_a);
m_rubus_data.add_register_float(77, 1, &m_environment.offset_current_cell_b);
m_rubus_data.add_register_float(78, 1, &m_environment.offset_current_cell_c);
//
m_rubus_data.add_register_float(79, 1, &m_environment.offset_current_bypass_a);
m_rubus_data.add_register_float(80, 1, &m_environment.offset_current_bypass_b);
m_rubus_data.add_register_float(81, 1, &m_environment.offset_current_bypass_c);
//
m_rubus_data.add_register_uint16(82, 1, &m_environment.hardware.hvcell.state[0][0].all);
m_rubus_data.add_register_uint16(83, 1, &m_environment.hardware.hvcell.state[0][1].all);
m_rubus_data.add_register_uint16(84, 1, &m_environment.hardware.hvcell.state[0][2].all);
m_rubus_data.add_register_uint16(85, 1, &m_environment.hardware.hvcell.state[0][3].all);
m_rubus_data.add_register_uint16(86, 1, &m_environment.hardware.hvcell.state[0][4].all);
m_rubus_data.add_register_uint16(87, 1, &m_environment.hardware.hvcell.state[0][5].all);
m_rubus_data.add_register_uint16(88, 1, &m_environment.hardware.hvcell.state[0][6].all);
m_rubus_data.add_register_uint16(89, 1, &m_environment.hardware.hvcell.state[0][7].all);
m_rubus_data.add_register_uint16(90, 1, &m_environment.hardware.hvcell.state[0][8].all);
m_rubus_data.add_register_uint16(91, 1, &m_environment.hardware.hvcell.state[0][9].all);
//
m_rubus_data.add_register_uint16(92, 1, &m_environment.hardware.hvcell.state[1][0].all);
m_rubus_data.add_register_uint16(93, 1, &m_environment.hardware.hvcell.state[1][1].all);
m_rubus_data.add_register_uint16(94, 1, &m_environment.hardware.hvcell.state[1][2].all);
m_rubus_data.add_register_uint16(95, 1, &m_environment.hardware.hvcell.state[1][3].all);
m_rubus_data.add_register_uint16(96, 1, &m_environment.hardware.hvcell.state[1][4].all);
m_rubus_data.add_register_uint16(97, 1, &m_environment.hardware.hvcell.state[1][5].all);
m_rubus_data.add_register_uint16(98, 1, &m_environment.hardware.hvcell.state[1][6].all);
m_rubus_data.add_register_uint16(99, 1, &m_environment.hardware.hvcell.state[1][7].all);
m_rubus_data.add_register_uint16(100, 1, &m_environment.hardware.hvcell.state[1][8].all);
m_rubus_data.add_register_uint16(101, 1, &m_environment.hardware.hvcell.state[1][9].all);
//
m_rubus_data.add_register_uint16(102, 1, &m_environment.hardware.hvcell.state[2][0].all);
m_rubus_data.add_register_uint16(103, 1, &m_environment.hardware.hvcell.state[2][1].all);
m_rubus_data.add_register_uint16(104, 1, &m_environment.hardware.hvcell.state[2][2].all);
m_rubus_data.add_register_uint16(105, 1, &m_environment.hardware.hvcell.state[2][3].all);
m_rubus_data.add_register_uint16(106, 1, &m_environment.hardware.hvcell.state[2][4].all);
m_rubus_data.add_register_uint16(107, 1, &m_environment.hardware.hvcell.state[2][5].all);
m_rubus_data.add_register_uint16(108, 1, &m_environment.hardware.hvcell.state[2][6].all);
m_rubus_data.add_register_uint16(109, 1, &m_environment.hardware.hvcell.state[2][7].all);
m_rubus_data.add_register_uint16(110, 1, &m_environment.hardware.hvcell.state[2][8].all);
m_rubus_data.add_register_uint16(111, 1, &m_environment.hardware.hvcell.state[2][9].all);
//
m_rubus_data.add_register_float(112, 1, &m_environment.hardware.hvcell.dc_voltage[0][0]);
m_rubus_data.add_register_float(113, 1, &m_environment.hardware.hvcell.dc_voltage[0][1]);
m_rubus_data.add_register_float(114, 1, &m_environment.hardware.hvcell.dc_voltage[0][2]);
m_rubus_data.add_register_float(115, 1, &m_environment.hardware.hvcell.dc_voltage[0][3]);
m_rubus_data.add_register_float(116, 1, &m_environment.hardware.hvcell.dc_voltage[0][4]);
m_rubus_data.add_register_float(117, 1, &m_environment.hardware.hvcell.dc_voltage[0][5]);
m_rubus_data.add_register_float(118, 1, &m_environment.hardware.hvcell.dc_voltage[0][6]);
m_rubus_data.add_register_float(119, 1, &m_environment.hardware.hvcell.dc_voltage[0][7]);
m_rubus_data.add_register_float(120, 1, &m_environment.hardware.hvcell.dc_voltage[0][8]);
m_rubus_data.add_register_float(121, 1, &m_environment.hardware.hvcell.dc_voltage[0][9]);
//
m_rubus_data.add_register_float(122, 1, &m_environment.hardware.hvcell.dc_voltage[1][0]);
m_rubus_data.add_register_float(123, 1, &m_environment.hardware.hvcell.dc_voltage[1][1]);
m_rubus_data.add_register_float(124, 1, &m_environment.hardware.hvcell.dc_voltage[1][2]);
m_rubus_data.add_register_float(125, 1, &m_environment.hardware.hvcell.dc_voltage[1][3]);
m_rubus_data.add_register_float(126, 1, &m_environment.hardware.hvcell.dc_voltage[1][4]);
m_rubus_data.add_register_float(127, 1, &m_environment.hardware.hvcell.dc_voltage[1][5]);
m_rubus_data.add_register_float(128, 1, &m_environment.hardware.hvcell.dc_voltage[1][6]);
m_rubus_data.add_register_float(129, 1, &m_environment.hardware.hvcell.dc_voltage[1][7]);
m_rubus_data.add_register_float(130, 1, &m_environment.hardware.hvcell.dc_voltage[1][8]);
m_rubus_data.add_register_float(131, 1, &m_environment.hardware.hvcell.dc_voltage[1][9]);
//
m_rubus_data.add_register_float(132, 1, &m_environment.hardware.hvcell.dc_voltage[2][0]);
m_rubus_data.add_register_float(133, 1, &m_environment.hardware.hvcell.dc_voltage[2][1]);
m_rubus_data.add_register_float(134, 1, &m_environment.hardware.hvcell.dc_voltage[2][2]);
m_rubus_data.add_register_float(135, 1, &m_environment.hardware.hvcell.dc_voltage[2][3]);
m_rubus_data.add_register_float(136, 1, &m_environment.hardware.hvcell.dc_voltage[2][4]);
m_rubus_data.add_register_float(137, 1, &m_environment.hardware.hvcell.dc_voltage[2][5]);
m_rubus_data.add_register_float(138, 1, &m_environment.hardware.hvcell.dc_voltage[2][6]);
m_rubus_data.add_register_float(139, 1, &m_environment.hardware.hvcell.dc_voltage[2][7]);
m_rubus_data.add_register_float(140, 1, &m_environment.hardware.hvcell.dc_voltage[2][8]);
m_rubus_data.add_register_float(141, 1, &m_environment.hardware.hvcell.dc_voltage[2][9]);
//
m_rubus_data.add_register_uint16(142, 1, &m_environment.hardware.hvcell.version[0][0]);
m_rubus_data.add_register_uint16(143, 1, &m_environment.hardware.hvcell.version[0][1]);
m_rubus_data.add_register_uint16(144, 1, &m_environment.hardware.hvcell.version[0][2]);
m_rubus_data.add_register_uint16(145, 1, &m_environment.hardware.hvcell.version[0][3]);
m_rubus_data.add_register_uint16(146, 1, &m_environment.hardware.hvcell.version[0][4]);
m_rubus_data.add_register_uint16(147, 1, &m_environment.hardware.hvcell.version[0][5]);
m_rubus_data.add_register_uint16(148, 1, &m_environment.hardware.hvcell.version[0][6]);
m_rubus_data.add_register_uint16(149, 1, &m_environment.hardware.hvcell.version[0][7]);
m_rubus_data.add_register_uint16(150, 1, &m_environment.hardware.hvcell.version[0][8]);
m_rubus_data.add_register_uint16(151, 1, &m_environment.hardware.hvcell.version[0][9]);
//
m_rubus_data.add_register_uint16(152, 1, &m_environment.hardware.hvcell.version[1][0]);
m_rubus_data.add_register_uint16(153, 1, &m_environment.hardware.hvcell.version[1][1]);
m_rubus_data.add_register_uint16(154, 1, &m_environment.hardware.hvcell.version[1][2]);
m_rubus_data.add_register_uint16(155, 1, &m_environment.hardware.hvcell.version[1][3]);
m_rubus_data.add_register_uint16(156, 1, &m_environment.hardware.hvcell.version[1][4]);
m_rubus_data.add_register_uint16(157, 1, &m_environment.hardware.hvcell.version[1][5]);
m_rubus_data.add_register_uint16(158, 1, &m_environment.hardware.hvcell.version[1][6]);
m_rubus_data.add_register_uint16(159, 1, &m_environment.hardware.hvcell.version[1][7]);
m_rubus_data.add_register_uint16(160, 1, &m_environment.hardware.hvcell.version[1][8]);
m_rubus_data.add_register_uint16(161, 1, &m_environment.hardware.hvcell.version[1][9]);
//
m_rubus_data.add_register_uint16(162, 1, &m_environment.hardware.hvcell.version[2][0]);
m_rubus_data.add_register_uint16(163, 1, &m_environment.hardware.hvcell.version[2][1]);
m_rubus_data.add_register_uint16(164, 1, &m_environment.hardware.hvcell.version[2][2]);
m_rubus_data.add_register_uint16(165, 1, &m_environment.hardware.hvcell.version[2][3]);
m_rubus_data.add_register_uint16(166, 1, &m_environment.hardware.hvcell.version[2][4]);
m_rubus_data.add_register_uint16(167, 1, &m_environment.hardware.hvcell.version[2][5]);
m_rubus_data.add_register_uint16(168, 1, &m_environment.hardware.hvcell.version[2][6]);
m_rubus_data.add_register_uint16(169, 1, &m_environment.hardware.hvcell.version[2][7]);
m_rubus_data.add_register_uint16(170, 1, &m_environment.hardware.hvcell.version[2][8]);
m_rubus_data.add_register_uint16(171, 1, &m_environment.hardware.hvcell.version[2][9]);
//
//System Orts
m_rubus_data.add_register_float(172, 1, &m_environment.main_abc_orts.phase_a.active);
m_rubus_data.add_register_float(173, 1, &m_environment.main_abc_orts.phase_a.reactive);
//
m_rubus_data.add_register_float(174, 1, &m_environment.main_abc_orts.phase_b.active);
m_rubus_data.add_register_float(175, 1, &m_environment.main_abc_orts.phase_b.reactive);
//
m_rubus_data.add_register_float(176, 1, &m_environment.main_abc_orts.phase_c.active);
m_rubus_data.add_register_float(177, 1, &m_environment.main_abc_orts.phase_c.reactive);
//
m_rubus_data.add_register_float(178, 1, &m_environment.main_ab_orts.active);
m_rubus_data.add_register_float(179, 1, &m_environment.main_ab_orts.reactive);
//
m_rubus_data.add_register_float(180, 1, &m_environment.harmonica_2.active);
m_rubus_data.add_register_float(181, 1, &m_environment.harmonica_2.reactive);
//
m_rubus_data.add_register_float(182, 1, &m_environment.harmonica_3.active);
m_rubus_data.add_register_float(183, 1, &m_environment.harmonica_3.reactive);
//
m_rubus_data.add_register_float(184, 1, &m_environment.harmonica_5.active);
m_rubus_data.add_register_float(185, 1, &m_environment.harmonica_5.reactive);
//
m_rubus_data.add_register_float(186, 1, &m_environment.harmonica_7.active);
m_rubus_data.add_register_float(187, 1, &m_environment.harmonica_7.reactive);
//
m_rubus_data.add_register_float(188, 1, &m_environment.harmonica_9.active);
m_rubus_data.add_register_float(189, 1, &m_environment.harmonica_9.reactive);
//
m_rubus_data.add_register_float(190, 1, &m_environment.harmonica_11.active);
m_rubus_data.add_register_float(191, 1, &m_environment.harmonica_11.reactive);
//
//System State
m_rubus_data.add_register_uint16(192, 1, &m_environment.system_alarm.all);
m_rubus_data.add_register_uint16(193, 1, &m_environment.system_fault.all);
m_rubus_data.add_register_uint16(194, 1, &m_environment.system_reset.all);
m_rubus_data.add_register_uint16(195, 1, &m_environment.system_ready.all);
m_rubus_data.add_register_uint16(196, 1, &m_environment.short_circuit.all);
m_rubus_data.add_register_uint16(197, 1, &m_environment.enable_work.all);
m_rubus_data.add_register_uint16(198, 1, &m_environment.enable_work_reset.all);
// m_rubus_data.add_register_bool(199, 1, &m_environment.enable_auto_offset);
m_rubus_data.add_register_uint32(200, 1, &m_environment.input_discrete.all);
m_rubus_data.add_register_uint32(201, 1, &m_environment.digital_output.all);
//m_rubus_data.add_register_uint32(201, 1, &m_environment.digital_output_temp.all);
//Phase Alert monitor
m_rubus_data.add_register_uint16(202, 1, &m_environment.phase_alert_monitor_register.phase_a.fault.all);
m_rubus_data.add_register_uint16(203, 1, &m_environment.phase_alert_monitor_register.phase_a.warning.all);
m_rubus_data.add_register_uint16(204, 1, &m_environment.phase_alert_monitor_register.phase_b.fault.all);
m_rubus_data.add_register_uint16(205, 1, &m_environment.phase_alert_monitor_register.phase_b.warning.all);
m_rubus_data.add_register_uint16(206, 1, &m_environment.phase_alert_monitor_register.phase_c.fault.all);
m_rubus_data.add_register_uint16(207, 1, &m_environment.phase_alert_monitor_register.phase_c.warning.all);
//<>
// Projections
m_rubus_data.add_register_float(208, 1, &m_environment.projection_voltage_input_a.active);
m_rubus_data.add_register_float(209, 1, &m_environment.projection_voltage_input_a.reactive);
//
m_rubus_data.add_register_float(210, 1, &m_environment.projection_voltage_input_b.active);
m_rubus_data.add_register_float(211, 1, &m_environment.projection_voltage_input_b.reactive);
//
m_rubus_data.add_register_float(212, 1, &m_environment.projection_voltage_input_c.active);
m_rubus_data.add_register_float(213, 1, &m_environment.projection_voltage_input_c.reactive);
//
//
m_rubus_data.add_register_float(214, 1, &m_environment.projection_voltage_load_a.active);
m_rubus_data.add_register_float(215, 1, &m_environment.projection_voltage_load_a.reactive);
//
m_rubus_data.add_register_float(216, 1, &m_environment.projection_voltage_load_b.active);
m_rubus_data.add_register_float(217, 1, &m_environment.projection_voltage_load_b.reactive);
//
m_rubus_data.add_register_float(218, 1, &m_environment.projection_voltage_load_c.active);
m_rubus_data.add_register_float(219, 1, &m_environment.projection_voltage_load_c.reactive);
//
//
m_rubus_data.add_register_float(220, 1, &m_environment.projection_current_load_a.active);
m_rubus_data.add_register_float(221, 1, &m_environment.projection_current_load_a.reactive);
//
m_rubus_data.add_register_float(222, 1, &m_environment.projection_current_load_b.active);
m_rubus_data.add_register_float(223, 1, &m_environment.projection_current_load_b.reactive);
//
m_rubus_data.add_register_float(224, 1, &m_environment.projection_current_load_c.active);
m_rubus_data.add_register_float(225, 1, &m_environment.projection_current_load_c.reactive);
//
m_rubus_data.add_register_float(226, 1, &m_environment.projection_current_bypass_a.active);
m_rubus_data.add_register_float(227, 1, &m_environment.projection_current_bypass_a.reactive);
//
m_rubus_data.add_register_float(228, 1, &m_environment.projection_current_bypass_b.active);
m_rubus_data.add_register_float(229, 1, &m_environment.projection_current_bypass_b.reactive);
//
m_rubus_data.add_register_float(230, 1, &m_environment.projection_current_bypass_c.active);
m_rubus_data.add_register_float(231, 1, &m_environment.projection_current_bypass_c.reactive);
//<>
//Symmetrical Components Input Voltage
m_rubus_data.add_register_float(232, 1, &m_environment.symmetrical_components_voltage_input.direct.a.active);
m_rubus_data.add_register_float(233, 1, &m_environment.symmetrical_components_voltage_input.direct.a.reactive);
m_rubus_data.add_register_float(234, 1, &m_environment.symmetrical_components_voltage_input.direct.b.active);
m_rubus_data.add_register_float(235, 1, &m_environment.symmetrical_components_voltage_input.direct.b.reactive);
m_rubus_data.add_register_float(236, 1, &m_environment.symmetrical_components_voltage_input.direct.c.active);
m_rubus_data.add_register_float(237, 1, &m_environment.symmetrical_components_voltage_input.direct.c.reactive);
//
m_rubus_data.add_register_float(238, 1, &m_environment.symmetrical_components_voltage_input.inverse.a.active);
m_rubus_data.add_register_float(239, 1, &m_environment.symmetrical_components_voltage_input.inverse.a.reactive);
m_rubus_data.add_register_float(240, 1, &m_environment.symmetrical_components_voltage_input.inverse.b.active);
m_rubus_data.add_register_float(241, 1, &m_environment.symmetrical_components_voltage_input.inverse.b.reactive);
m_rubus_data.add_register_float(242, 1, &m_environment.symmetrical_components_voltage_input.inverse.c.active);
m_rubus_data.add_register_float(243, 1, &m_environment.symmetrical_components_voltage_input.inverse.c.reactive);
//
m_rubus_data.add_register_float(244, 1, &m_environment.symmetrical_components_voltage_input.zero.a.active);
m_rubus_data.add_register_float(245, 1, &m_environment.symmetrical_components_voltage_input.zero.a.reactive);
m_rubus_data.add_register_float(246, 1, &m_environment.symmetrical_components_voltage_input.zero.b.active);
m_rubus_data.add_register_float(247, 1, &m_environment.symmetrical_components_voltage_input.zero.b.reactive);
m_rubus_data.add_register_float(248, 1, &m_environment.symmetrical_components_voltage_input.zero.c.active);
m_rubus_data.add_register_float(249, 1, &m_environment.symmetrical_components_voltage_input.zero.c.reactive);
//<>
//Symmetrical Components Load Voltage
m_rubus_data.add_register_float(250, 1, &m_environment.symmetrical_components_voltage_load.direct.a.active);
m_rubus_data.add_register_float(251, 1, &m_environment.symmetrical_components_voltage_load.direct.a.reactive);
m_rubus_data.add_register_float(252, 1, &m_environment.symmetrical_components_voltage_load.direct.b.active);
m_rubus_data.add_register_float(253, 1, &m_environment.symmetrical_components_voltage_load.direct.b.reactive);
m_rubus_data.add_register_float(254, 1, &m_environment.symmetrical_components_voltage_load.direct.c.active);
m_rubus_data.add_register_float(255, 1, &m_environment.symmetrical_components_voltage_load.direct.c.reactive);
//
m_rubus_data.add_register_float(256, 1, &m_environment.symmetrical_components_voltage_load.inverse.a.active);
m_rubus_data.add_register_float(257, 1, &m_environment.symmetrical_components_voltage_load.inverse.a.reactive);
m_rubus_data.add_register_float(258, 1, &m_environment.symmetrical_components_voltage_load.inverse.b.active);
m_rubus_data.add_register_float(259, 1, &m_environment.symmetrical_components_voltage_load.inverse.b.reactive);
m_rubus_data.add_register_float(260, 1, &m_environment.symmetrical_components_voltage_load.inverse.c.active);
m_rubus_data.add_register_float(261, 1, &m_environment.symmetrical_components_voltage_load.inverse.c.reactive);
//
m_rubus_data.add_register_float(262, 1, &m_environment.symmetrical_components_voltage_load.zero.a.active);
m_rubus_data.add_register_float(263, 1, &m_environment.symmetrical_components_voltage_load.zero.a.reactive);
m_rubus_data.add_register_float(264, 1, &m_environment.symmetrical_components_voltage_load.zero.b.active);
m_rubus_data.add_register_float(265, 1, &m_environment.symmetrical_components_voltage_load.zero.b.reactive);
m_rubus_data.add_register_float(266, 1, &m_environment.symmetrical_components_voltage_load.zero.c.active);
m_rubus_data.add_register_float(267, 1, &m_environment.symmetrical_components_voltage_load.zero.c.reactive);
//<>
//Symmetrical Components Load Current
m_rubus_data.add_register_float(268, 1, &m_environment.symmetrical_components_current_load.direct.a.active);
m_rubus_data.add_register_float(269, 1, &m_environment.symmetrical_components_current_load.direct.a.reactive);
m_rubus_data.add_register_float(270, 1, &m_environment.symmetrical_components_current_load.direct.b.active);
m_rubus_data.add_register_float(271, 1, &m_environment.symmetrical_components_current_load.direct.b.reactive);
m_rubus_data.add_register_float(272, 1, &m_environment.symmetrical_components_current_load.direct.c.active);
m_rubus_data.add_register_float(273, 1, &m_environment.symmetrical_components_current_load.direct.c.reactive);
//
m_rubus_data.add_register_float(274, 1, &m_environment.symmetrical_components_current_load.inverse.a.active);
m_rubus_data.add_register_float(275, 1, &m_environment.symmetrical_components_current_load.inverse.a.reactive);
m_rubus_data.add_register_float(276, 1, &m_environment.symmetrical_components_current_load.inverse.b.active);
m_rubus_data.add_register_float(277, 1, &m_environment.symmetrical_components_current_load.inverse.b.reactive);
m_rubus_data.add_register_float(278, 1, &m_environment.symmetrical_components_current_load.inverse.c.active);
m_rubus_data.add_register_float(279, 1, &m_environment.symmetrical_components_current_load.inverse.c.reactive);
//
m_rubus_data.add_register_float(280, 1, &m_environment.symmetrical_components_current_load.zero.a.active);
m_rubus_data.add_register_float(281, 1, &m_environment.symmetrical_components_current_load.zero.a.reactive);
m_rubus_data.add_register_float(282, 1, &m_environment.symmetrical_components_current_load.zero.b.active);
m_rubus_data.add_register_float(283, 1, &m_environment.symmetrical_components_current_load.zero.b.reactive);
m_rubus_data.add_register_float(284, 1, &m_environment.symmetrical_components_current_load.zero.c.active);
m_rubus_data.add_register_float(285, 1, &m_environment.symmetrical_components_current_load.zero.c.reactive);
//<>
//Symmetrical Components Bypass Current
m_rubus_data.add_register_float(286, 1, &m_environment.symmetrical_components_current_bypass.direct.a.active);
m_rubus_data.add_register_float(287, 1, &m_environment.symmetrical_components_current_bypass.direct.a.reactive);
m_rubus_data.add_register_float(288, 1, &m_environment.symmetrical_components_current_bypass.direct.b.active);
m_rubus_data.add_register_float(289, 1, &m_environment.symmetrical_components_current_bypass.direct.b.reactive);
m_rubus_data.add_register_float(290, 1, &m_environment.symmetrical_components_current_bypass.direct.c.active);
m_rubus_data.add_register_float(291, 1, &m_environment.symmetrical_components_current_bypass.direct.c.reactive);
//
m_rubus_data.add_register_float(292, 1, &m_environment.symmetrical_components_current_bypass.inverse.a.active);
m_rubus_data.add_register_float(293, 1, &m_environment.symmetrical_components_current_bypass.inverse.a.reactive);
m_rubus_data.add_register_float(294, 1, &m_environment.symmetrical_components_current_bypass.inverse.b.active);
m_rubus_data.add_register_float(295, 1, &m_environment.symmetrical_components_current_bypass.inverse.b.reactive);
m_rubus_data.add_register_float(296, 1, &m_environment.symmetrical_components_current_bypass.inverse.c.active);
m_rubus_data.add_register_float(297, 1, &m_environment.symmetrical_components_current_bypass.inverse.c.reactive);
//
m_rubus_data.add_register_float(298, 1, &m_environment.symmetrical_components_current_bypass.zero.a.active);
m_rubus_data.add_register_float(299, 1, &m_environment.symmetrical_components_current_bypass.zero.a.reactive);
m_rubus_data.add_register_float(300, 1, &m_environment.symmetrical_components_current_bypass.zero.b.active);
m_rubus_data.add_register_float(301, 1, &m_environment.symmetrical_components_current_bypass.zero.b.reactive);
m_rubus_data.add_register_float(302, 1, &m_environment.symmetrical_components_current_bypass.zero.c.active);
m_rubus_data.add_register_float(303, 1, &m_environment.symmetrical_components_current_bypass.zero.c.reactive);
//<>
//
// External Command
//
m_rubus_data.add_register_uint16(304, 0, &m_environment.external_command_word.all);
//<>
//*********************************************************
//
// Configuration Parameters
//
//*********************************************************
//
//
//
// Referances
//
m_rubus_data.add_register_float(305, 0, &m_system_configuration.reference_current_limit_rms);
m_rubus_data.add_register_float(306, 0, &m_system_configuration.reference_current_pfc_rms);
m_rubus_data.add_register_float(307, 0, &m_system_configuration.reference_voltage_rms);
m_rubus_data.add_register_float(308, 0, &m_system_configuration.reference_voltage_high_limit_rms);
//<>
//
// Algoritm Control
//
m_rubus_data.add_register_uint16(309, 0, &m_system_configuration.algorithm_control.all);
//<>
//
// Flash Operation
//
m_rubus_data.add_register_uint16(310, 0, &m_environment.fram_operation.all);
//<>
//
// System Alarm
//
// exceed voltage level 1
m_rubus_data.add_register_float(311, 0, &m_system_configuration.phase_alert_monitor.voltage_exceed_level_1.level);
m_rubus_data.add_register_float(312, 0, &m_system_configuration.phase_alert_monitor.voltage_exceed_level_1.period);
//
// exceed voltage level 2
m_rubus_data.add_register_float(313, 0, &m_system_configuration.phase_alert_monitor.voltage_exceed_level_2.level);
m_rubus_data.add_register_float(314, 0, &m_system_configuration.phase_alert_monitor.voltage_exceed_level_2.period);
//
// exceed voltage level 3
m_rubus_data.add_register_float(315, 0, &m_system_configuration.phase_alert_monitor.voltage_exceed_level_3.level);
m_rubus_data.add_register_float(316, 0, &m_system_configuration.phase_alert_monitor.voltage_exceed_level_3.period);
//
// exceed voltage level 4
m_rubus_data.add_register_float(317, 0, &m_system_configuration.phase_alert_monitor.voltage_exceed_level_4.level);
m_rubus_data.add_register_float(318, 0, &m_system_configuration.phase_alert_monitor.voltage_exceed_level_4.period);
//
// decrease voltage level 1
m_rubus_data.add_register_float(319, 0, &m_system_configuration.phase_alert_monitor.voltage_decrease_level_1.level);
m_rubus_data.add_register_float(320, 0, &m_system_configuration.phase_alert_monitor.voltage_decrease_level_1.period);
//
// decrease voltage level 2
m_rubus_data.add_register_float(321, 0, &m_system_configuration.phase_alert_monitor.voltage_decrease_level_2.level);
m_rubus_data.add_register_float(322, 0, &m_system_configuration.phase_alert_monitor.voltage_decrease_level_2.period);
//
// decrease voltage level 3
m_rubus_data.add_register_float(323, 0, &m_system_configuration.phase_alert_monitor.voltage_decrease_level_3.level);
m_rubus_data.add_register_float(324, 0, &m_system_configuration.phase_alert_monitor.voltage_decrease_level_3.period);
//
// current overload level 1 120% 60s
m_rubus_data.add_register_float(325, 0, &m_system_configuration.phase_alert_monitor.current_overload_level_1.level);
m_rubus_data.add_register_float(326, 0, &m_system_configuration.phase_alert_monitor.current_overload_level_1.period);
//
// current overload level 2 130% 10s
m_rubus_data.add_register_float(327, 0, &m_system_configuration.phase_alert_monitor.current_overload_level_2.level);
m_rubus_data.add_register_float(328, 0, &m_system_configuration.phase_alert_monitor.current_overload_level_2.period);
//
// current overload level 3 150% 1ms
m_rubus_data.add_register_float(329, 0, &m_system_configuration.phase_alert_monitor.current_overload_level_3.level);
m_rubus_data.add_register_float(330, 0, &m_system_configuration.phase_alert_monitor.current_overload_level_3.period);
//
// current invertor overload level 1 110% 60s
m_rubus_data.add_register_float(331, 0, &m_system_configuration.phase_alert_monitor.current_invertor_overload_level_1.level);
m_rubus_data.add_register_float(332, 0, &m_system_configuration.phase_alert_monitor.current_invertor_overload_level_1.period);
//
// current invertor overload level 2 130% 10s
m_rubus_data.add_register_float(333, 0, &m_system_configuration.phase_alert_monitor.current_invertor_overload_level_2.level);
m_rubus_data.add_register_float(334, 0, &m_system_configuration.phase_alert_monitor.current_invertor_overload_level_2.period);
//
// current invertor overload level 3 150% 1ms
m_rubus_data.add_register_float(335, 0, &m_system_configuration.phase_alert_monitor.current_invertor_overload_level_3.level);
m_rubus_data.add_register_float(336, 0, &m_system_configuration.phase_alert_monitor.current_invertor_overload_level_3.period);
//
// current input overload level 1 110% 60s
m_rubus_data.add_register_float(337, 0, &m_system_configuration.phase_alert_monitor.current_input_overload_level_1.level);
m_rubus_data.add_register_float(338, 0, &m_system_configuration.phase_alert_monitor.current_input_overload_level_1.period);
//
// current input overload level 2 130% 10s
m_rubus_data.add_register_float(339, 0, &m_system_configuration.phase_alert_monitor.current_input_overload_level_2.level);
m_rubus_data.add_register_float(340, 0, &m_system_configuration.phase_alert_monitor.current_input_overload_level_2.period);
//
// current input overload level 3 150% 1ms
m_rubus_data.add_register_float(341, 0, &m_system_configuration.phase_alert_monitor.current_input_overload_level_3.level);
m_rubus_data.add_register_float(342, 0, &m_system_configuration.phase_alert_monitor.current_input_overload_level_3.period);
//<>
//
// DIGITAL INPUTS
//
m_rubus_data.add_register_float(343, 0, &m_system_configuration.digital_input_config.period);
// m_rubus_data.add_register_float(338, 0, &m_system_configuration.digital_input_config.period);
// m_rubus_data.add_register_float(339, 0, &m_system_configuration.digital_input_config.period);
// m_rubus_data.add_register_float(340, 0, &m_system_configuration.digital_input_config.period);
// m_rubus_data.add_register_float(341, 0, &m_system_configuration.digital_input_config.period);
// m_rubus_data.add_register_float(342, 0, &m_system_configuration.digital_input_config.period);
// m_rubus_data.add_register_float(343, 0, &m_system_configuration.digital_input_config.period);
// m_rubus_data.add_register_float(344, 0, &m_system_configuration.digital_input_config.period);
// m_rubus_data.add_register_float(345, 0, &m_system_configuration.digital_input_config.period);
// m_rubus_data.add_register_float(346, 0, &m_system_configuration.digital_input_config.period);
// m_rubus_data.add_register_float(347, 0, &m_system_configuration.digital_input_config.period);
// m_rubus_data.add_register_float(348, 0, &m_system_configuration.digital_input_config.period);
// m_rubus_data.add_register_float(349, 0, &m_system_configuration.digital_input_config.period);
// m_rubus_data.add_register_float(350, 0, &m_system_configuration.digital_input_config.period);
// m_rubus_data.add_register_float(351, 0, &m_system_configuration.digital_input_config.period);
// m_rubus_data.add_register_float(352, 0, &m_system_configuration.digital_input_config.period);
// m_rubus_data.add_register_float(353, 0, &m_system_configuration.digital_input_config.period);
// m_rubus_data.add_register_float(354, 0, &m_system_configuration.digital_input_config.period);
// m_rubus_data.add_register_float(355, 0, &m_system_configuration.digital_input_config.period);
// m_rubus_data.add_register_float(356, 0, &m_system_configuration.digital_input_config.period);
//<>
//
// Voltage PLL-ABC Parameters
//
m_rubus_data.add_register_float(357, 0, &m_system_configuration.pll_abc_input_voltage.frequency_nominal);
m_rubus_data.add_register_float(358, 0, &m_system_configuration.pll_abc_input_voltage.filter.time);
m_rubus_data.add_register_float(359, 0, &m_system_configuration.pll_abc_input_voltage.controller.gain);
m_rubus_data.add_register_float(360, 0, &m_system_configuration.pll_abc_input_voltage.controller.time);
m_rubus_data.add_register_float(361, 0, &m_system_configuration.pll_abc_input_voltage.controller.low_saturation);
m_rubus_data.add_register_float(362, 0, &m_system_configuration.pll_abc_input_voltage.controller.high_saturation);
//<>
//
// Signal Decompose
//
m_rubus_data.add_register_float(363, 0, &m_system_configuration.signal_decompose.projection_filter.time);
m_rubus_data.add_register_float(364, 0, &m_system_configuration.signal_decompose.projection_filter.a3);
m_rubus_data.add_register_float(365, 0, &m_system_configuration.signal_decompose.projection_filter.a2);
m_rubus_data.add_register_float(366, 0, &m_system_configuration.signal_decompose.projection_filter.a1);
//<>
//
// Amplitude Filter Parameters
//
m_rubus_data.add_register_float(367, 0, &m_system_configuration.ampl_filter_current.time);
m_rubus_data.add_register_float(368, 0, &m_system_configuration.ampl_filter_current.a3);
m_rubus_data.add_register_float(369, 0, &m_system_configuration.ampl_filter_current.a2);
m_rubus_data.add_register_float(370, 0, &m_system_configuration.ampl_filter_current.a1);
//<>
//
// RMS Filter Parameters
//
m_rubus_data.add_register_float(371, 0, &m_system_configuration.rms_filter_analog_signal.time);
m_rubus_data.add_register_float(372, 0, &m_system_configuration.rms_filter_analog_signal.a3);
m_rubus_data.add_register_float(373, 0, &m_system_configuration.rms_filter_analog_signal.a2);
m_rubus_data.add_register_float(374, 0, &m_system_configuration.rms_filter_analog_signal.a1);
//<>
//
// Regulators
//
#if TYPECONTROL == VECTORCONTROL
//
m_rubus_data.add_register_float(375, 0, &m_system_configuration.regulator_voltage_load_dq.gain);
m_rubus_data.add_register_float(376, 0, &m_system_configuration.regulator_voltage_load_dq.time);
m_rubus_data.add_register_float(377, 0, &m_system_configuration.regulator_voltage_load_dq.high_saturation);
m_rubus_data.add_register_float(378, 0, &m_system_configuration.regulator_voltage_load_dq.low_saturation);
//
//m_rubus_data.add_register_float(379, 0, &m_system_configuration.regulator_current_limit.gain);
m_rubus_data.add_register_float(380, 0, &m_system_configuration.regulator_current_limit.time);
m_rubus_data.add_register_float(381, 1, &m_system_configuration.regulator_current_limit.high_saturation);
m_rubus_data.add_register_float(382, 1, &m_system_configuration.regulator_current_limit.low_saturation);
//
m_rubus_data.add_register_float(383, 0, &m_system_configuration.regulator_current_pfc.gain);
m_rubus_data.add_register_float(384, 0, &m_system_configuration.regulator_current_pfc.time);
m_rubus_data.add_register_float(385, 0, &m_system_configuration.regulator_current_pfc.high_saturation);
m_rubus_data.add_register_float(386, 0, &m_system_configuration.regulator_current_pfc.low_saturation);
//
//m_rubus_data.add_register_float(387, 0, &m_system_configuration);
m_rubus_data.add_register_float(388, 0, &m_system_configuration.integrator_voltage_dq.time);
m_rubus_data.add_register_float(389, 0, &m_system_configuration.integrator_voltage_dq.high_saturation);
m_rubus_data.add_register_float(390, 0, &m_system_configuration.integrator_voltage_dq.low_saturation);
//
#if TYPECURRENTCONTROLLER == CURRENTCONTROLLER_P
m_rubus_data.add_register_float(391, 0, &m_system_configuration.regulator_current_load_dq.gain);
//m_rubus_data.add_register_float(392, 0, &m_system_configuration.regulator_current_load_dq.time);
m_rubus_data.add_register_float(393, 0, &m_system_configuration.regulator_current_load_dq.high_saturation);
m_rubus_data.add_register_float(394, 0, &m_system_configuration.regulator_current_load_dq.low_saturation);
#endif
#if TYPECURRENTCONTROLLER == CURRENTCONTROLLER_PI
m_rubus_data.add_register_float(391, 0, &m_system_configuration.regulator_current_load_dq.gain);
m_rubus_data.add_register_float(392, 0, &m_system_configuration.regulator_current_load_dq.time);
m_rubus_data.add_register_float(393, 0, &m_system_configuration.regulator_current_load_dq.high_saturation);
m_rubus_data.add_register_float(394, 0, &m_system_configuration.regulator_current_load_dq.low_saturation);
#endif
//
//m_rubus_data.add_register_float(395, 0, &m_system_configuration);
m_rubus_data.add_register_float(396, 0, &m_system_configuration.referencer_current_bypass_dq.time);
m_rubus_data.add_register_float(397, 0, &m_system_configuration.referencer_current_bypass_dq.high_saturation);
m_rubus_data.add_register_float(398, 0, &m_system_configuration.referencer_current_bypass_dq.low_saturation);
//
#endif
#if TYPECONTROL == SCALARCONTROL
//
5 months ago
#if SCALARCONTROL_VOLTAGEREGULATOR == SCALARCONTROL_VOLTAGEREGULATOR_ABC
m_rubus_data.add_register_float(375, 0, &m_system_configuration.regulator_voltage_load_active_reactive.gain);
m_rubus_data.add_register_float(376, 0, &m_system_configuration.regulator_voltage_load_active_reactive.time);
m_rubus_data.add_register_float(377, 0, &m_system_configuration.regulator_voltage_load_active_reactive.high_saturation);
m_rubus_data.add_register_float(378, 0, &m_system_configuration.regulator_voltage_load_active_reactive.low_saturation);
5 months ago
#endif
#if SCALARCONTROL_VOLTAGEREGULATOR == SCALARCONTROL_VOLTAGEREGULATOR_RMS
m_rubus_data.add_register_float(375, 0, &m_system_configuration.reference_voltage_load_rms_intensity.time);
m_rubus_data.add_register_float(376, 0, &m_system_configuration.regulator_voltage_load_rms.time);
m_rubus_data.add_register_float(377, 0, &m_system_configuration.regulator_voltage_load_rms.high_saturation);
m_rubus_data.add_register_float(378, 0, &m_system_configuration.regulator_voltage_load_rms.low_saturation);
#endif
//
m_rubus_data.add_register_float(379, 0, &m_system_configuration.regulator_current_limit.gain);
m_rubus_data.add_register_float(380, 0, &m_system_configuration.regulator_current_limit.time);
m_rubus_data.add_register_float(381, 0, &m_system_configuration.regulator_current_limit.high_saturation);
m_rubus_data.add_register_float(382, 0, &m_system_configuration.regulator_current_limit.low_saturation);
//
m_rubus_data.add_register_float(383, 0, &m_system_configuration.regulator_current_pfc.gain);
m_rubus_data.add_register_float(384, 0, &m_system_configuration.regulator_current_pfc.time);
m_rubus_data.add_register_float(385, 0, &m_system_configuration.regulator_current_pfc.high_saturation);
m_rubus_data.add_register_float(386, 0, &m_system_configuration.regulator_current_pfc.low_saturation);
//
m_rubus_data.add_register_float(387, 0, &m_system_configuration.current_regulator_active.gain);
m_rubus_data.add_register_float(388, 0, &m_system_configuration.current_regulator_active.time);
m_rubus_data.add_register_float(389, 0, &m_system_configuration.current_regulator_active.high_saturation);
m_rubus_data.add_register_float(390, 0, &m_system_configuration.current_regulator_active.low_saturation);
//
m_rubus_data.add_register_float(391, 0, &m_system_configuration.current_regulator_reactive.gain);
m_rubus_data.add_register_float(392, 0, &m_system_configuration.current_regulator_reactive.time);
m_rubus_data.add_register_float(393, 0, &m_system_configuration.current_regulator_reactive.high_saturation);
m_rubus_data.add_register_float(394, 0, &m_system_configuration.current_regulator_reactive.low_saturation);
//
m_rubus_data.add_register_float(395, 0, &m_system_configuration.current_referencer.gain);
m_rubus_data.add_register_float(396, 0, &m_system_configuration.current_referencer.time);
m_rubus_data.add_register_float(397, 0, &m_system_configuration.current_referencer.high_saturation);
m_rubus_data.add_register_float(398, 0, &m_system_configuration.current_referencer.low_saturation);
//
#endif
//<>
//
// MODBUS Break Counter
//
m_rubus_data.add_register_uint16(399, 0, &m_modbus_break_counter);
//<>
//
// ID SOFTWARE
//
m_rubus_data.add_register_uint16(400, 0, &m_environment.id_software.class_id);
m_rubus_data.add_register_uint16(401, 0, &m_environment.id_software.part_id);
m_rubus_data.add_register_uint16(402, 0, &m_environment.id_software.software_version);
m_rubus_data.add_register_uint16(403, 0, &m_environment.id_software.protocol_version);
//<>
//
// Equipment Faults
//
m_rubus_data.add_register_uint16(416, 1, &m_environment.system_faults_register.equipment.all);
//<>
//
// Grid Frequency form PLL
//
m_rubus_data.add_register_float(417, 0, &m_environment.grid_frequency);
//<>
//
//
}//
//
//
} /* namespace SYSCTRL */