Add modbus.

Init with CPU data. If COMM is removed and then installed back -
modbus will not work because CPU board will not send config data.
CPU board should detect reinstalling/reprogramming of COMM board and
send config data again (with asking software version)

Modbus here just work itself. There is no connection btw COMM and CPU
except sending config data
feature/Modbus
Oleg 3 weeks ago
parent 4606a25db4
commit 46d4b79e90

@ -34,10 +34,10 @@ struct SCIConfiguration
DSP28335::SCIStopBits stopbits; DSP28335::SCIStopBits stopbits;
DSP28335::SCICharLenght lenght; DSP28335::SCICharLenght lenght;
SCIConfiguration(): SCIConfiguration():
baudrate(DSP28335::BR9600), baudrate(DSP28335::BR19200),
parity(DSP28335::ODD), parity(DSP28335::ODD),
stopbits(DSP28335::ONE), stopbits(DSP28335::ONE),
lenght(DSP28335::LEN8) lenght(DSP28335::LEN1)
{} {}
};// };//
@ -46,10 +46,10 @@ struct SCISetup
{ {
SCIConfiguration config; SCIConfiguration config;
pGPIO_FUNCTION gpio_setup; pGPIO_FUNCTION gpio_setup;
SCISetup(): // SCISetup():
config(), // config(),
gpio_setup(0) // gpio_setup(0)
{} // {}
};// };//

@ -50,7 +50,7 @@ struct ModbusRTUTransceiverConfiguration
uint16_t node_id; uint16_t node_id;
DSP28335::SCIConfiguration config; DSP28335::SCIConfiguration config;
ModbusRTUTransceiverConfiguration(): ModbusRTUTransceiverConfiguration():
node_id(0), node_id(1234),
config() config()
{ {
//config.baudrate = SCIRS485_BAUDRATE_DEFAULT; //config.baudrate = SCIRS485_BAUDRATE_DEFAULT;

@ -10,8 +10,14 @@ Periphery::Periphery() :
_canb(canSpace::CANA), _canb(canSpace::CANA),
_digitalIO(), _digitalIO(),
_zone6_ptr(reinterpret_cast<Uint16*>(0x100000)), _zone6_ptr(reinterpret_cast<Uint16*>(0x100000)),
_modbusSettingsMsg(), _scib(ScibRegs),
_modbusInit(false) _modbusSetup(),
_modbusConfiguration(),
_crc(),
_intervalMeasure(CpuTimer2),
_modbusPort(_scib, _intervalMeasure, _crc),
_ASUTP(_crc),
_modbusInitFlag(false)
{ {
_softVersion.DSP = 202; _softVersion.DSP = 202;
_softVersion.CPLD = 0; _softVersion.CPLD = 0;
@ -47,6 +53,42 @@ void Periphery::config(){
_digitalIO.setup(_zone6_ptr); _digitalIO.setup(_zone6_ptr);
_digitalIO.setMemoryOffset(interface::DISCRETE_DATA_OFFSET); _digitalIO.setMemoryOffset(interface::DISCRETE_DATA_OFFSET);
//---------------------------------------Init SCI interface----------------------------------------------------------
DSP28335::SCISetup sciBSetup;
sciBSetup.config.baudrate = SCIB_BAUDRATE_DEFAULT;
sciBSetup.config.parity = SCIB_PARITY_DEFAULT;
sciBSetup.config.stopbits = SCIB_STOPBITS_DEFAULT;
sciBSetup.config.lenght = SCIB_LENGHT_DEFAULT;
sciBSetup.gpio_setup = SCIB_GPIO_SETUP_DEFAULT;
_scib.setup(sciBSetup);
//------------------------------------------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);
} }
@ -58,7 +100,7 @@ Uint16 Periphery::getVersionFPGA(){
void Periphery::updateVersionFPGA(){ void Periphery::updateVersionFPGA(){
_softVersion.CPLD = getVersionFPGA() & 0x3FF; // no more than 1023 (9.9.9) should be limit _softVersion.CPLD = getVersionFPGA() & 0x3FF; // no more than 1023. (9.9.9) should be limit
_message.mdl.word.LOW_WORD = _softVersion.DSP; _message.mdl.word.LOW_WORD = _softVersion.DSP;
_message.mdl.word.HI_WORD = _softVersion.CPLD; _message.mdl.word.HI_WORD = _softVersion.CPLD;
_canb.updateTXMessage(canSpace::COMM_VERSION_MBOX, _message); _canb.updateTXMessage(canSpace::COMM_VERSION_MBOX, _message);
@ -81,9 +123,73 @@ void Periphery::processDigitalOutput(){
} }
void Periphery::initExternalModbus(){ bool Periphery::isModbusInit() const{
if (!_modbusInit && (_canb.isNewMessage(canSpace::MODBUS_SETTINGS_MBOX))) { return _modbusInitFlag;
_canb.receiveMsg(canSpace::MODBUS_SETTINGS_MBOX, _modbusSettingsMsg); }
_modbusInit = true; // TODO modbus init function must be here
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);
_modbusInitFlag = true; // TODO modbus init function must be here
} }
} }
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);
// }

@ -1,5 +1,7 @@
#pragma once #pragma once
#include <stdint.h>
#include "DSP28x_Project.h" #include "DSP28x_Project.h"
#include "DSP2833x_Device.h" #include "DSP2833x_Device.h"
#include "Protocol/CAN.h" #include "Protocol/CAN.h"
@ -7,6 +9,19 @@
#include "Protocol/DigitalIO.h" #include "Protocol/DigitalIO.h"
#include "Protocol/MemoryMap.h" #include "Protocol/MemoryMap.h"
#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"
struct SoftwareVersion{ struct SoftwareVersion{
Uint16 DSP; Uint16 DSP;
@ -19,22 +34,49 @@ public:
void config(); void config();
Uint16 getVersionFPGA(); Uint16 getVersionFPGA();
void updateVersionFPGA(); void updateVersionFPGA();
void processDigitalInput(); void processDigitalInput();
void processDigitalOutput(); void processDigitalOutput();
void initExternalModbus();
bool isModbusInit() const;
void receiveModbusParameters();
void processExternalModbus(); // TODO void processExternalModbus(); // TODO
void processCPUModbus(); // TODO void processCPUModbus(); // TODO
void test_init_hmi_buffers();
void setModbusBuffers();
void addInputRegFloat(uint16_t addr, float& param);
void modbusExecute();
private: private:
canSpace::CAN _canb; canSpace::CAN _canb;
interface::DigitalIO _digitalIO; interface::DigitalIO _digitalIO;
Uint16* _zone6_ptr; Uint16* _zone6_ptr;
DSP28335::SCIB _scib;
MODBUSRTU::ModbusRTUTransceiverSetup _modbusSetup;
MODBUSRTU::ModbusRTUTransceiverConfiguration _modbusConfiguration;
MODBUSRTU::ModbusRTUCRC _crc;
DSP28335::MeasureTimeInterval _intervalMeasure;
MODBUSRTU::ModbusRTUTransceiver _modbusPort;
WEINBUS::WeinbusSlave _ASUTP;
SoftwareVersion _softVersion; SoftwareVersion _softVersion;
canSpace::CANMessage _modbusSettingsMsg;
canSpace::CANMessage _message; canSpace::CANMessage _message;
bool _modbusInit; bool _modbusInitFlag;
Uint16 tempIn; Uint16 tempIn;
Uint16 tempOut; Uint16 tempOut;
// 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;
//<>
}; };

@ -18,7 +18,7 @@ void DigitalIO::setMemoryOffset(Uint16 offset){
void DigitalIO::readDigitalIO(Uint16& data){ void DigitalIO::readDigitalIO(Uint16& data){
asm(" NOP"); asm(" NOP"); // TODO Add normal NOP
asm(" NOP"); asm(" NOP");
asm(" NOP"); asm(" NOP");
data = *m_pointer; data = *m_pointer;

@ -17,15 +17,15 @@
#include "DSP28335/SCIB.h" #include "DSP28335/SCIB.h"
#include "DSP28335/SCIBase.h" #include "DSP28335/SCIBase.h"
#include "MODBUSRTU/ModbusRTUCRC.h" // #include "MODBUSRTU/ModbusRTUCRC.h"
#include "MODBUSRTU/ModbusRTUDefines.h" // #include "MODBUSRTU/ModbusRTUDefines.h"
#include "MODBUSRTU/ModbusRTUTransceiver.h" // #include "MODBUSRTU/ModbusRTUTransceiver.h"
#include "MODBUSRTU/ModbusRTUVariant.h" // #include "MODBUSRTU/ModbusRTUVariant.h"
#include "MODBUSRTU/ModbusRTUTransceiverBase.h" // #include "MODBUSRTU/ModbusRTUTransceiverBase.h"
#include "DSP28335/MeasureTimeInterval.h" // #include "DSP28335/MeasureTimeInterval.h"
#include "WEINBUS/HeaderWeinbus.h" // #include "WEINBUS/HeaderWeinbus.h"
@ -37,32 +37,32 @@ interrupt void cpu_timer1_isr(void);
interrupt void canb_isr(void); interrupt void canb_isr(void);
interrupt void canb_box_isr(void); interrupt void canb_box_isr(void);
// Periphery periphery; Periphery periphery;
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
DSP28335::SCISetup SCIbSetup; // DSP28335::SCISetup SCIbSetup;
DSP28335::SCIB scib(ScibRegs); // DSP28335::SCIB scib(ScibRegs);
DSP28335::MeasureTimeInterval interval_measure(CpuTimer2); // DSP28335::MeasureTimeInterval interval_measure(CpuTimer2);
// MODBUS RTU - PORT & HMI // MODBUS RTU - PORT & HMI
MODBUSRTU::ModbusRTUTransceiverSetup modbus; // MODBUSRTU::ModbusRTUTransceiverSetup modbus;
MODBUSRTU::ModbusRTUCRC crc; // MODBUSRTU::ModbusRTUCRC crc;
MODBUSRTU::ModbusRTUTransceiver modbus_port(scib, interval_measure, crc); // MODBUSRTU::ModbusRTUTransceiver modbus_port(scib, interval_measure, crc);
WEINBUS::WeinbusSlave hmi(crc); // WEINBUS::WeinbusSlave hmi(crc);
MODBUSRTU::ModbusRTUTransceiverConfiguration modbus_port_configuration; // MODBUSRTU::ModbusRTUTransceiverConfiguration modbus_port_configuration;
// Registers to testing HMI interface // // Registers to testing HMI interface
WEINBUS::REGISTER_32 test_hmi_float_reg_400 = WEINBUS::REGISTER_32(0); // WEINBUS::REGISTER_32 test_hmi_float_reg_400 = WEINBUS::REGISTER_32(0);
WEINBUS::REGISTER_32 test_hmi_float_reg_401 = WEINBUS::REGISTER_32(0); // WEINBUS::REGISTER_32 test_hmi_float_reg_401 = WEINBUS::REGISTER_32(0);
WEINBUS::REGISTER_32 test_hmi_float_reg_402 = WEINBUS::REGISTER_32(0); // WEINBUS::REGISTER_32 test_hmi_float_reg_402 = WEINBUS::REGISTER_32(0);
WEINBUS::REGISTER_32 test_hmi_float_reg_403 = WEINBUS::REGISTER_32(0); // WEINBUS::REGISTER_32 test_hmi_float_reg_403 = WEINBUS::REGISTER_32(0);
WEINBUS::REGISTER_32 test_hmi_float_reg_404 = WEINBUS::REGISTER_32(0); // WEINBUS::REGISTER_32 test_hmi_float_reg_404 = WEINBUS::REGISTER_32(0);
//<> // //<>
void test_init_hmi_buffers(); // void test_init_hmi_buffers();
void clear_array(uint16_t *pointer, uint16_t sizearray); void clear_array(uint16_t *pointer, uint16_t sizearray);
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
@ -79,6 +79,8 @@ volatile bool sendRemote = false;
Uint16 modbusInit = 0; Uint16 modbusInit = 0;
int32 testVar = 0; int32 testVar = 0;
float test = 55;
void main() void main()
{ {
ServiceDog(); ServiceDog();
@ -114,54 +116,57 @@ void main()
PieCtrlRegs.PIEIER9.bit.INTx7 = 1; // from 5 to 8 PieCtrlRegs.PIEIER9.bit.INTx7 = 1; // from 5 to 8
PieCtrlRegs.PIEIER9.bit.INTx8 = 1; PieCtrlRegs.PIEIER9.bit.INTx8 = 1;
// periphery.config(); periphery.config();
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
SCIbSetup.config.baudrate = SCIB_BAUDRATE_DEFAULT; // SCIbSetup.config.baudrate = SCIB_BAUDRATE_DEFAULT;
SCIbSetup.config.parity = SCIB_PARITY_DEFAULT; // SCIbSetup.config.parity = SCIB_PARITY_DEFAULT;
SCIbSetup.config.stopbits = SCIB_STOPBITS_DEFAULT; // SCIbSetup.config.stopbits = SCIB_STOPBITS_DEFAULT;
SCIbSetup.config.lenght = SCIB_LENGHT_DEFAULT; // SCIbSetup.config.lenght = SCIB_LENGHT_DEFAULT;
SCIbSetup.gpio_setup = SCIB_GPIO_SETUP_DEFAULT; // SCIbSetup.gpio_setup = SCIB_GPIO_SETUP_DEFAULT;
modbus.gpio_re_de_setup = &DSP28335::GPIO::gpio_scib_re_de_setup; // modbus.gpio_re_de_setup = &DSP28335::GPIO::gpio_scib_re_de_setup;
modbus.gpio_driver_enable = &DSP28335::GPIO::gpio_scib_re_de_set; // modbus.gpio_driver_enable = &DSP28335::GPIO::gpio_scib_re_de_set;
modbus.gpio_receiver_enable = &DSP28335::GPIO::gpio_scib_re_de_clear; // modbus.gpio_receiver_enable = &DSP28335::GPIO::gpio_scib_re_de_clear;
scib.setup(SCIbSetup); // scib.setup(SCIbSetup);
interval_measure.set_magic((Uint32)0); // interval_measure.set_magic((Uint32)0);
interval_measure.reset(); // interval_measure.reset();
modbus_port.setup(modbus); // modbus_port.setup(modbus);
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
// Enable global Interrupts and higher priority real-time debug events: // Enable global Interrupts and higher priority real-time debug events:
EINT; // Enable Global interrupt INTM EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM ERTM; // Enable Global realtime interrupt DBGM
// periphery.updateVersionFPGA(); periphery.updateVersionFPGA();
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
// MODBUS RTU // MODBUS RTU
// //
modbus_port_configuration.node_id = 0x5; // modbus_port_configuration.node_id = 0x5;
modbus_port_configuration.config.baudrate = DSP28335::BR9600; // modbus_port_configuration.config.baudrate = DSP28335::BR9600;
modbus_port_configuration.config.parity = DSP28335::NO; // modbus_port_configuration.config.parity = DSP28335::NO;
modbus_port_configuration.config.stopbits = DSP28335::ONE; // modbus_port_configuration.config.stopbits = DSP28335::ONE;
modbus_port_configuration.config.lenght = DSP28335::LEN8; // modbus_port_configuration.config.lenght = DSP28335::LEN8;
// //
test_init_hmi_buffers(); // test_init_hmi_buffers();
periphery.test_init_hmi_buffers();
modbus_port.configure(modbus_port_configuration); // modbus_port.configure(modbus_port_configuration);
clear_array((uint16_t *)hmi.rxStack, sizeof(hmi.rxStack)/sizeof(uint16_t)); // clear_array((uint16_t *)hmi.rxStack, sizeof(hmi.rxStack)/sizeof(uint16_t));
clear_array((uint16_t *)hmi.txStack, sizeof(hmi.txStack)/sizeof(uint16_t)); // clear_array((uint16_t *)hmi.txStack, sizeof(hmi.txStack)/sizeof(uint16_t));
modbus_port.setRXBuffer((uint16_t*)hmi.rxStack, &hmi.rxLength); // modbus_port.setRXBuffer((uint16_t*)hmi.rxStack, &hmi.rxLength);
modbus_port.setTXBuffer((uint16_t*)hmi.txStack, &hmi.txLength); // modbus_port.setTXBuffer((uint16_t*)hmi.txStack, &hmi.txLength);
periphery.setModbusBuffers();
periphery.addInputRegFloat(5, test);
interval_measure.set_magic(19); // interval_measure.set_magic(19);
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
@ -180,24 +185,29 @@ void idle_loop()
{ {
infCounter++; infCounter++;
// periphery.initExternalModbus(); if (!periphery.isModbusInit()){
periphery.receiveModbusParameters();
// modbus_port.configure(modbus_port_configuration);
}
// //
// MODBUS RTU HMI Service // MODBUS RTU HMI Service
// //
if(modbus_port.compare_state(MODBUSRTU::BREAK)) if (periphery.isModbusInit()){
{ periphery.modbusExecute();
modbus_port.port_reset(); // if(modbus_port.compare_state(MODBUSRTU::BREAK))
// // {
// modbus_port.port_reset();
// //
// }
// else
// {
// modbus_port.execute();
// hmi.execute();
// //
// }//if else
} }
else
{
modbus_port.execute();
hmi.execute();
//
}//if else
//<> //<>
}//end while }//end while
}//end idle_loop() }//end idle_loop()
@ -205,7 +215,7 @@ void idle_loop()
interrupt void cpu_timer0_isr(void) interrupt void cpu_timer0_isr(void)
{ {
// periphery.processDigitalOutput(); periphery.processDigitalOutput();
PieCtrlRegs.PIEACK.all |= PIEACK_GROUP1; PieCtrlRegs.PIEACK.all |= PIEACK_GROUP1;
}//end }//end
@ -214,7 +224,7 @@ interrupt void cpu_timer0_isr(void)
interrupt void cpu_timer1_isr(){ interrupt void cpu_timer1_isr(){
CpuTimer1.InterruptCount++; CpuTimer1.InterruptCount++;
// periphery.processDigitalInput(); periphery.processDigitalInput();
} }
@ -267,28 +277,27 @@ interrupt void canb_box_isr(void){
PieCtrlRegs.PIEACK.all |= PIEACK_GROUP9; PieCtrlRegs.PIEACK.all |= PIEACK_GROUP9;
} }
// void test_init_hmi_buffers()
void test_init_hmi_buffers() // {
{ // //
// // // hmi writeable registers
// hmi writeable registers // hmi.inputRegisters.set(WEINBUS::INPUTREGISTERS, 400);
hmi.inputRegisters.set(WEINBUS::INPUTREGISTERS, 400); // hmi.inputRegisters.add( 0, &test_hmi_float_reg_400.f);
hmi.inputRegisters.add( 0, &(float&)test_hmi_float_reg_400.f); // hmi.inputRegisters.add( 1, &(float&)test_hmi_float_reg_401.f);
hmi.inputRegisters.add( 1, &(float&)test_hmi_float_reg_401.f); // hmi.inputRegisters.add( 2, &(float&)test_hmi_float_reg_402.f);
hmi.inputRegisters.add( 2, &(float&)test_hmi_float_reg_402.f); // hmi.inputRegisters.add( 3, &(float&)test_hmi_float_reg_403.f);
hmi.inputRegisters.add( 3, &(float&)test_hmi_float_reg_403.f); // hmi.inputRegisters.add( 4, &(float&)test_hmi_float_reg_404.f);
hmi.inputRegisters.add( 4, &(float&)test_hmi_float_reg_404.f); // //
// // // hmi readable registers
// hmi readable registers // hmi.outputRegisters.set(WEINBUS::OUTPUTREGISTERS, 400);
hmi.outputRegisters.set(WEINBUS::OUTPUTREGISTERS, 400); // hmi.outputRegisters.add( 0 , &(float&)test_hmi_float_reg_400.f);
hmi.outputRegisters.add( 0 , &(float&)test_hmi_float_reg_400.f); // hmi.outputRegisters.add( 1, &(float&)test_hmi_float_reg_401.f);
hmi.outputRegisters.add( 1, &(float&)test_hmi_float_reg_401.f); // hmi.outputRegisters.add( 2, &(float&)test_hmi_float_reg_402.f);
hmi.outputRegisters.add( 2, &(float&)test_hmi_float_reg_402.f); // hmi.outputRegisters.add( 3, &(float&)test_hmi_float_reg_403.f);
hmi.outputRegisters.add( 3, &(float&)test_hmi_float_reg_403.f); // hmi.outputRegisters.add( 4, &(float&)test_hmi_float_reg_404.f);
hmi.outputRegisters.add( 4, &(float&)test_hmi_float_reg_404.f); // //
// // }//
}// // //
//
void clear_array(uint16_t *pointer, uint16_t sizearray) void clear_array(uint16_t *pointer, uint16_t sizearray)
{ {

Loading…
Cancel
Save