Clean the project

feature/Modbus
Oleg 3 weeks ago
parent 06518a828d
commit 31b3b12a81

@ -5,20 +5,12 @@ Periphery::Periphery() :
_digitalIO(),
_zone6_ptr(reinterpret_cast<Uint16*>(0x100000)),
_scib(ScibRegs),
// _modbusSetup(),
// _modbusConfiguration(),
// _crc(),
// _intervalMeasure(CpuTimer2),
// _modbusPort(_scib, _intervalMeasure, _crc),
// _ASUTP(_crc),
_modbusRTU(CpuTimer2, _scib),
_modbusInitFlag(false)
_modbusInitFlag(false),
_modbusRegCounter(0),
modbusRTU(CpuTimer2, _scib)
{
_softVersion.DSP = 202;
_softVersion.CPLD = 0;
elementCounter = 0;
test = 0;
}
@ -64,33 +56,10 @@ void Periphery::config(){
//------------------------------------------Init Modbus----------------------------------------------------------
// _modbusSetup.gpio_re_de_setup = &DSP28335::GPIO::gpio_scib_re_de_setup;
// _modbusSetup.gpio_driver_enable = &DSP28335::GPIO::gpio_scib_re_de_set;
// _modbusSetup.gpio_receiver_enable = &DSP28335::GPIO::gpio_scib_re_de_clear;
// _intervalMeasure.reset();
// _intervalMeasure.set_magic(19);
// _modbusPort.setup(_modbusSetup);
// modbus_port_configuration.node_id = 0x5;
// modbus_port_configuration.config.baudrate = DSP28335::BR9600;
// modbus_port_configuration.config.parity = DSP28335::NO;
// modbus_port_configuration.config.stopbits = DSP28335::ONE;
// modbus_port_configuration.config.lenght = DSP28335::LEN8;
// modbus_port.configure(modbus_port_configuration);
// clear_array((uint16_t *)hmi.rxStack, sizeof(hmi.rxStack)/sizeof(uint16_t));
// clear_array((uint16_t *)hmi.txStack, sizeof(hmi.txStack)/sizeof(uint16_t));
// _modbusPort.setRXBuffer((uint16_t*)_ASUTP.rxStack, &_ASUTP.rxLength);
// _modbusPort.setTXBuffer((uint16_t*)_ASUTP.txStack, &_ASUTP.txLength);
MODBUSRTU::modbusSetup.gpio_re_de_setup = &DSP28335::GPIO::gpio_scib_re_de_setup;
MODBUSRTU::modbusSetup.gpio_driver_enable = &DSP28335::GPIO::gpio_scib_re_de_set;
MODBUSRTU::modbusSetup.gpio_receiver_enable = &DSP28335::GPIO::gpio_scib_re_de_clear;
_modbusRTU.setup(MODBUSRTU::modbusSetup);
modbusRTU.setup(MODBUSRTU::modbusSetup);
}
@ -134,97 +103,42 @@ void Periphery::receiveModbusParameters(){
if (!_modbusInitFlag && (_canb.isNewMessage(canSpace::MODBUS_SETTINGS_MBOX))) { // TODO check for init is incorect here maybe
_canb.receiveMsg(canSpace::MODBUS_SETTINGS_MBOX, _message);
// _modbusConfiguration.node_id = _message.mdl.byte.BYTE0;
// _modbusConfiguration.config.lenght = static_cast<DSP28335::SCICharLenght>(_message.mdl.byte.BYTE1);
// _modbusConfiguration.config.baudrate = static_cast<DSP28335::SCIBaudRate>(_message.mdl.word.LOW_WORD);
// _modbusConfiguration.config.parity = static_cast<DSP28335::SCIParity>(_message.mdh.byte.BYTE4);
// _modbusConfiguration.config.stopbits = static_cast<DSP28335::SCIStopBits>(_message.mdh.byte.BYTE5);
// _modbusPort.configure(_modbusConfiguration);
MODBUSRTU::modbusConfiguration.node_id = _message.mdl.byte.BYTE0;
MODBUSRTU::modbusConfiguration.config.lenght = static_cast<DSP28335::SCICharLenght>(_message.mdl.byte.BYTE1);
MODBUSRTU::modbusConfiguration.config.baudrate = static_cast<DSP28335::SCIBaudRate>(_message.mdl.word.LOW_WORD);
MODBUSRTU::modbusConfiguration.config.parity = static_cast<DSP28335::SCIParity>(_message.mdh.byte.BYTE4);
MODBUSRTU::modbusConfiguration.config.stopbits = static_cast<DSP28335::SCIStopBits>(_message.mdh.byte.BYTE5);
_modbusRTU.configure(MODBUSRTU::modbusConfiguration);
modbusRTU.configure(MODBUSRTU::modbusConfiguration);
_modbusInitFlag = true; // TODO modbus init function must be here
_modbusRegCounter = 0;
}
}
void Periphery::processExternalModbus(){
if(_modbusRTU._dataHandler.inputRegisters.address_range(elementCounter + _modbusRTU.inputRegStartAddr)){
_modbusRTU._dataHandler.inputRegisters.get_register_cursor(elementCounter).read(_message.mdl.all);
elementCounter++;
}
else {
elementCounter = 0;
_modbusRTU._dataHandler.inputRegisters.get_register_cursor(elementCounter).read(_message.mdl.all);
elementCounter++;
}
void Periphery::sendModbusDataToCPU(){
_message.mdl.all = 0; // TODO delete maybe?
_message.mdh.all = 0;
WEINBUS::WeinbusTableRegister reg;
reg = modbusRTU._dataHandler.outputRegisters.get_register_cursor(_modbusRegCounter);
if(modbusRTU._dataHandler.outputRegisters.address_range(reg.get_address())){
_message.mdl.all = reg.get_address();
reg.read(_message.mdh.all);
if(_modbusRTU._dataHandler.inputRegisters.address_range(elementCounter + _modbusRTU.inputRegStartAddr)){
_modbusRTU._dataHandler.inputRegisters.get_register_cursor(elementCounter).read(_message.mdh.all);
elementCounter++;
_modbusRegCounter++;
}
else {
elementCounter = 0;
_modbusRTU._dataHandler.inputRegisters.get_register_cursor(elementCounter).read(_message.mdh.all);
elementCounter++;
_modbusRegCounter = 0;
reg = modbusRTU._dataHandler.outputRegisters.get_register_cursor(_modbusRegCounter);
_message.mdl.all = reg.get_address();
reg.read(_message.mdh.all);
_modbusRegCounter++;
}
_canb.transmitMsg(canSpace::MODBUS_DATA_COMM_TO_CPU_MBOX, _message);
}
// void Periphery::test_init_hmi_buffers()
// {
// //
// // hmi writeable registers
// _ASUTP.inputRegisters.set(WEINBUS::INPUTREGISTERS, 400);
// _ASUTP.inputRegisters.add( 0, &test_hmi_float_reg_400.f);
// _ASUTP.inputRegisters.add( 1, &(float&)test_hmi_float_reg_401.f);
// _ASUTP.inputRegisters.add( 2, &(float&)test_hmi_float_reg_402.f);
// _ASUTP.inputRegisters.add( 3, &(float&)test_hmi_float_reg_403.f);
// _ASUTP.inputRegisters.add( 4, &(float&)test_hmi_float_reg_404.f);
// //
// // hmi readable registers
// _ASUTP.outputRegisters.set(WEINBUS::OUTPUTREGISTERS, 400);
// _ASUTP.outputRegisters.add( 0 , &(float&)test_hmi_float_reg_400.f);
// _ASUTP.outputRegisters.add( 1, &(float&)test_hmi_float_reg_401.f);
// _ASUTP.outputRegisters.add( 2, &(float&)test_hmi_float_reg_402.f);
// _ASUTP.outputRegisters.add( 3, &(float&)test_hmi_float_reg_403.f);
// _ASUTP.outputRegisters.add( 4, &(float&)test_hmi_float_reg_404.f);
// //
// }//
// void Periphery::addInputRegFloat(uint16_t addr, float& param){
// // if(_ASUTP.inputRegisters.address_range(addr)){
// // return;
// // }
// _ASUTP.inputRegisters.add( addr, &param);
// _ASUTP.outputRegisters.add( addr, &param);
// }
// void Periphery::modbusExecute(){
// if(_modbusPort.compare_state(MODBUSRTU::BREAK))
// {
// _modbusPort.port_reset();
// //
// }
// else
// {
// _modbusPort.execute();
// _ASUTP.execute();
// //
// }//if else
// }
// void Periphery::setModbusBuffers(){
// _modbusPort.setRXBuffer((uint16_t*)_ASUTP.rxStack, &_ASUTP.rxLength);
// _modbusPort.setTXBuffer((uint16_t*)_ASUTP.txStack, &_ASUTP.txLength);
// }

@ -13,16 +13,6 @@
#include "DSP28335/SCIBase.h"
#include "DSP28335/SCIB.h"
// #include "MODBUSRTU/ModbusRTUCRC.h"
// #include "MODBUSRTU/ModbusRTUDefines.h"
// #include "MODBUSRTU/ModbusRTUTransceiver.h"
// #include "MODBUSRTU/ModbusRTUVariant.h"
// #include "MODBUSRTU/ModbusRTUTransceiverBase.h"
// #include "DSP28335/MeasureTimeInterval.h"
// #include "WEINBUS/HeaderWeinbus.h"
#include "ModbusRTU.h"
@ -43,14 +33,8 @@ public:
bool isModbusInit() const;
void receiveModbusParameters();
void processExternalModbus(); // TODO
void sendModbusDataToCPU();
void processCPUModbus(); // TODO
// void test_init_hmi_buffers();
// void setModbusBuffers();
// void addInputRegFloat(uint16_t addr, float& param);
// void modbusExecute();
MODBUSRTU::ModbusRTU _modbusRTU;
private:
canSpace::CAN _canb;
@ -59,30 +43,13 @@ private:
DSP28335::SCIB _scib;
// MODBUSRTU::ModbusRTUTransceiverSetup _modbusSetup;
// MODBUSRTU::ModbusRTUTransceiverConfiguration _modbusConfiguration;
// MODBUSRTU::ModbusRTUCRC _crc;
// DSP28335::MeasureTimeInterval _intervalMeasure;
// MODBUSRTU::ModbusRTUTransceiver _modbusPort;
// WEINBUS::WeinbusSlave _ASUTP;
SoftwareVersion _softVersion;
canSpace::CANMessage _message;
bool _modbusInitFlag;
uint16_t _modbusRegCounter;
Uint16 tempIn;
Uint16 tempOut;
uint16_t elementCounter;
uint32_t test;
// // Registers to testing HMI interface
// WEINBUS::REGISTER_32 test_hmi_float_reg_400;
// WEINBUS::REGISTER_32 test_hmi_float_reg_401;
// WEINBUS::REGISTER_32 test_hmi_float_reg_402;
// WEINBUS::REGISTER_32 test_hmi_float_reg_403;
// WEINBUS::REGISTER_32 test_hmi_float_reg_404;
// //<>
public:
MODBUSRTU::ModbusRTU modbusRTU;
};

@ -117,7 +117,7 @@ void main()
PieCtrlRegs.PIEIER9.bit.INTx8 = 1;
periphery.config();
periphery._modbusRTU.test_init_hmi_buffers();
periphery.modbusRTU.test_init_hmi_buffers();
//----------------------------------------------------------------------------------------
// SCIbSetup.config.baudrate = SCIB_BAUDRATE_DEFAULT;
@ -195,19 +195,7 @@ void idle_loop()
// MODBUS RTU HMI Service
//
if (periphery.isModbusInit()){
periphery._modbusRTU.execute();
// periphery.modbusExecute();
// if(modbus_port.compare_state(MODBUSRTU::BREAK))
// {
// modbus_port.port_reset();
// //
// }
// else
// {
// modbus_port.execute();
// hmi.execute();
// //
// }//if else
periphery.modbusRTU.execute();
}
//<>
}//end while
@ -218,7 +206,7 @@ void idle_loop()
interrupt void cpu_timer0_isr(void)
{
periphery.processDigitalOutput();
periphery.processExternalModbus();
periphery.sendModbusDataToCPU();
PieCtrlRegs.PIEACK.all |= PIEACK_GROUP1;
}//end

Loading…
Cancel
Save