From fb2d080fbbcea3a91e598b4ea8837a230de6a319 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Tue, 6 Mar 2018 12:09:02 +0200 Subject: A new forlder for embedded software in our common structure --- Software/Embedded_SW/Embedded/Modules/IDS/IDS.h | 25 ++++++++++++ .../Embedded_SW/Embedded/Modules/IDS/IDS_BIT.c | 0 Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h | 0 .../Embedded_SW/Embedded/Modules/IDS/IDS_init.c | 46 ++++++++++++++++++++++ .../Embedded_SW/Embedded/Modules/IDS/IDS_maint.c | 0 .../Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 43 ++++++++++++++++++++ .../Embedded/Modules/IDS/MixerHandler.c | 37 +++++++++++++++++ .../Embedded/Modules/IDS/MixerHandler.h | 17 ++++++++ 8 files changed, 168 insertions(+) create mode 100644 Software/Embedded_SW/Embedded/Modules/IDS/IDS.h create mode 100644 Software/Embedded_SW/Embedded/Modules/IDS/IDS_BIT.c create mode 100644 Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h create mode 100644 Software/Embedded_SW/Embedded/Modules/IDS/IDS_init.c create mode 100644 Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c create mode 100644 Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c create mode 100644 Software/Embedded_SW/Embedded/Modules/IDS/MixerHandler.c create mode 100644 Software/Embedded_SW/Embedded/Modules/IDS/MixerHandler.h (limited to 'Software/Embedded_SW/Embedded/Modules/IDS') diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h new file mode 100644 index 000000000..1c9fee547 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h @@ -0,0 +1,25 @@ +#include "PMR/common/MessageContainer.pb-c.h" +#include "PMR/Hardware/HardwareDispenser.pb-c.h" + +#define MAX_SYSTEM_DISPENSERS 8 +typedef struct +{ + int32_t dispensercapacity; //milliliters + int32_t midtankcapacity;//milliliters + double nlperpulse; //nanoliter per step , uStep = 1 + uint32_t minfrequency; + uint32_t maxfrequency; + uint32_t minmicrostep; + uint32_t maxmicrostep; + double correctiongain; + double ratiotodryerspeed; + double kp; + double ki; + double kd; + double changeslope; + double highlengthmicrosecond; + int32_t controltiming; //10-100-1000 milliseconds + int32_t id; +}DispenserConfigStruc; + +uint32_t DispenserConfigMessage(HardwareDispenser * request); diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_BIT.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_BIT.c new file mode 100644 index 000000000..e69de29bb diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h new file mode 100644 index 000000000..e69de29bb diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_init.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_init.c new file mode 100644 index 000000000..0294615b6 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_init.c @@ -0,0 +1,46 @@ +/************************************************************************************************************************ + **************************************************************************************************************************/ + +#include "include.h" + +#include + +#include "ids.h" +#include "PMR/common/MessageContainer.pb-c.h" +#include "PMR/Hardware/HardwareDispenser.pb-c.h" + + +DispenserConfigStruc DispensersCfg[ MAX_SYSTEM_DISPENSERS]; + + + +uint32_t DispenserConfigMessage(HardwareDispenser * request) +{ + uint32_t status = PASSED; + int Dispenser_i; + + Dispenser_i = request->hardwaredispensertype; + if ((Dispenser_i)&&(Dispenser_i< MAX_SYSTEM_DISPENSERS)) + { + + DispensersCfg[Dispenser_i].id = request->hardwaredispensertype; + DispensersCfg[Dispenser_i].minfrequency = request->minfrequency; + DispensersCfg[Dispenser_i].maxfrequency = request->maxfrequency; + DispensersCfg[Dispenser_i].minmicrostep = request->minmicrostep; + DispensersCfg[Dispenser_i].maxmicrostep = request->maxmicrostep; + DispensersCfg[Dispenser_i].correctiongain = request->correctiongain; + DispensersCfg[Dispenser_i].ratiotodryerspeed = request->ratiotodryerspeed; + DispensersCfg[Dispenser_i].kp = request->kp; + DispensersCfg[Dispenser_i].ki = request->ki; + DispensersCfg[Dispenser_i].kd = request->kd; + DispensersCfg[Dispenser_i].changeslope = request->changeslope; + DispensersCfg[Dispenser_i].highlengthmicrosecond = request->highlengthmicrosecond; + DispensersCfg[Dispenser_i].dispensercapacity= request->capacity; +// DispensersCfg[Dispenser_i].midtankcapacity = request->midtankcapacity; + DispensersCfg[Dispenser_i].nlperpulse = request->nlperpulse; + DispensersCfg[Dispenser_i].controltiming = request->controltiming; + return status; + } + else return Dispenser_i; + +} diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c new file mode 100644 index 000000000..e69de29bb diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c new file mode 100644 index 000000000..32b147569 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -0,0 +1,43 @@ +/************************************************************************************************************************ + * Ids_print.c + * Printing module is responsible for : + * operating diffrent winding algorithms with predefined parameters from the UI + * operating the dispensers according to predefined dispensing rate from the UI + **************************************************************************************************************************/ +#include "include.h" +#include "ids.h" +#include "../control/control.h" +#include "../control/pidalgo.h" +#include "PMR/Hardware/Hardwaremotor.pb-c.h" +#include "PMR/Hardware/HardwareDispenser.pb-c.h" +#include "StateMachines/Printing/printingSTM.h" + + + +/******************** STRUCTURES AND ENUMs ********************************************/ +/******************** GLOBAL PARAMETERS ********************************************/ + + +/* + * IDS Printing support + * Prepare: build pressure in all participating dispensers + * Print - dispense ink to the printing head + * stop - stop dispensing + * + * control processes: + * on prepare stage - each 10msec against the pressure sensors + * on print stage - every 10/100 msec against the speed sensor + * + * */ +//Dispenser Pressure control +//callback - calls printing stm with the result + +// registration - 10 msec, dispenser pressure sensor +// AddControlCallback(DeviceId2Heater[HeaterId], HeaterControlCBFunction, eHunderdMillisecond); +// start the dispenser pressure building - move up in a TBD speed, valve closed +//Dispenser Speed control +//callback - handles speed +// registration - 10msec, dispenser speed senseo +// start the dispensing - move up according to the segment defined speed and microstepping, valve opened +// + diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/MixerHandler.c b/Software/Embedded_SW/Embedded/Modules/IDS/MixerHandler.c new file mode 100644 index 000000000..ce423ab72 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Modules/IDS/MixerHandler.c @@ -0,0 +1,37 @@ +/* + * MixerHandle.c + * + * Created on: 26 áôáø× 2018 + * Author: shlomo + */ + +#ifndef MODULES_IDS_MIXERHANDLER_C_ +#define MODULES_IDS_MIXERHANDLER_C_ +#include "include.h" +#include "MixerHandler.h" +typedef enum +{ + MixerStateNone, + MixerStateHead, + MixerStateWaste +}MIXER_STATE_ENUM; + +MIXER_STATE_ENUM MixerState = MixerStateNone; + +uint32_t MixerHandlerSwitchToWaste(void) +{ + return OK; + +} +uint32_t MixerHandlerSwitchToHead(void) +{ + return OK; +} +uint32_t MixerHandlerGetState(void) +{ + return MixerState; +} + + + +#endif /* MODULES_IDS_MIXERHANDLER_C_ */ diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/MixerHandler.h b/Software/Embedded_SW/Embedded/Modules/IDS/MixerHandler.h new file mode 100644 index 000000000..51093e1b7 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Modules/IDS/MixerHandler.h @@ -0,0 +1,17 @@ +/* + * MixerHandle.h + * + * Created on: 26 áôáø× 2018 + * Author: shlomo + */ + +#ifndef MODULES_IDS_MIXERHANDLER_H_ +#define MODULES_IDS_MIXERHANDLER_H_ + +extern uint32_t MixerHandlerSwitchToWaste(void); +extern uint32_t MixerHandlerSwitchToHead(void); +extern uint32_t MixerHandlerGetState(void); + + + +#endif /* MODULES_IDS_MIXERHANDLER_H_ */ -- cgit v1.3.1