diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2018-03-06 12:09:02 +0200 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2018-03-06 12:09:02 +0200 |
| commit | fb2d080fbbcea3a91e598b4ea8837a230de6a319 (patch) | |
| tree | 6b3ce09a252d2ebab8189a92b3326ffbba6dbe4b /Software/Embedded_SW/Embedded/Modules/IDS | |
| parent | d734bb5cf08ba2433b74fc86a8858d2437d1a237 (diff) | |
| download | Tango-fb2d080fbbcea3a91e598b4ea8837a230de6a319.tar.gz Tango-fb2d080fbbcea3a91e598b4ea8837a230de6a319.zip | |
A new forlder for embedded software in our common structure
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/IDS')
8 files changed, 168 insertions, 0 deletions
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 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_BIT.c 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 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h 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 <Modules/Stubs_Handler/DataDef.h> + +#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 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c 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_ */ |
