aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules/IDS
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2018-03-06 12:09:02 +0200
committerShlomo Hecht <shlomo@twine-s.com>2018-03-06 12:09:02 +0200
commitfb2d080fbbcea3a91e598b4ea8837a230de6a319 (patch)
tree6b3ce09a252d2ebab8189a92b3326ffbba6dbe4b /Software/Embedded_SW/Embedded/Modules/IDS
parentd734bb5cf08ba2433b74fc86a8858d2437d1a237 (diff)
downloadTango-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')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS.h25
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_BIT.c0
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h0
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_init.c46
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c0
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c43
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/MixerHandler.c37
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/MixerHandler.h17
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_ */