aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Embedded_SW/Embedded')
-rw-r--r--Software/Embedded_SW/Embedded/.cproject4
-rw-r--r--Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c2
-rw-r--r--Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c2
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/DiagnosticsMonitors.pb-c.c32
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/DiagnosticsMonitors.pb-c.h6
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.c34
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.h1
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.c8
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.h4
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c11
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c22
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.h6
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c2
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c4
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.h1
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h2
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c85
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c14
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h1
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c30
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c2
-rw-r--r--Software/Embedded_SW/Embedded/Embedded.cfg6
-rw-r--r--Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c102
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/DriverWithCallbackExample.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c19
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/control.c10
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/control.h2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c6
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c225
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c9
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/Safety.c21
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/buttons.c6
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c18
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS.h1
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c12
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c12
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c10
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c16
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c83
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c56
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c26
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c46
-rw-r--r--Software/Embedded_SW/Embedded/Software Release Notes.txt40
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c11
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c4
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c10
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c30
-rw-r--r--Software/Embedded_SW/Embedded/embeddedparametersbuild.cs2
51 files changed, 748 insertions, 322 deletions
diff --git a/Software/Embedded_SW/Embedded/.cproject b/Software/Embedded_SW/Embedded/.cproject
index 1998a5e88..c46e66ca2 100644
--- a/Software/Embedded_SW/Embedded/.cproject
+++ b/Software/Embedded_SW/Embedded/.cproject
@@ -269,7 +269,7 @@
</toolChain>
</folderInfo>
<sourceEntries>
- <entry excluding="Embedded.cfg|EmbParam.cfg|src" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+ <entry excluding="EmbParam.cfg|src" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
</sourceEntries>
</configuration>
</storageModule>
@@ -441,7 +441,7 @@
</toolChain>
</folderInfo>
<sourceEntries>
- <entry excluding="Embedded.cfg|EmbParam.cfg|Drivers/Uart_Comm/Uart.c|JigCommands.c|PWM.c|USBCDCD.c|Message.c|Pin_config.c|src|Configuration.c|SlowMotors.c|Timer.c|Communication.c|FastMotors.c|ADCUtils.c|Drivers/L6470|Pin.c|ADCLogger.c|Flashstore.c|Profile.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+ <entry excluding="EmbParam.cfg|Drivers/Uart_Comm/Uart.c|JigCommands.c|PWM.c|USBCDCD.c|Message.c|Pin_config.c|src|Configuration.c|SlowMotors.c|Timer.c|Communication.c|FastMotors.c|ADCUtils.c|Drivers/L6470|Pin.c|ADCLogger.c|Flashstore.c|Profile.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
</sourceEntries>
</configuration>
</storageModule>
diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c
index 8818d51e5..e15ae2dc4 100644
--- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c
+++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c
@@ -130,7 +130,7 @@ uint32_t ActivateVersionRequestFunc(MessageContainer* requestContainer)
CurrentRunningFile = 0;
File_i = 0;
//add control 1 second
- ActivateVersionControlId = AddControlCallback( ActivateVersionCallBackFunction, eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
+ ActivateVersionControlId = AddControlCallback(NULL, ActivateVersionCallBackFunction, eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
}
for (File_i = 0;File_i<VersionPackage->n_filedescriptors;File_i++)
{
diff --git a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c
index 67e778c73..5e0a5c31a 100644
--- a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c
+++ b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c
@@ -20,7 +20,7 @@ typedef struct
} TangoVersion_t;
-TangoVersion_t _gTangoVersion = {1,4,5,95};
+TangoVersion_t _gTangoVersion = {1,4,6,0};
#define BUILD_DATE __DATE__
char Dat[50] = BUILD_DATE;
char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/DiagnosticsMonitors.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/DiagnosticsMonitors.pb-c.c
index 2a5974162..dfa72d2db 100644
--- a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/DiagnosticsMonitors.pb-c.c
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/DiagnosticsMonitors.pb-c.c
@@ -52,7 +52,7 @@ void diagnostics_monitors__free_unpacked
assert(message->base.descriptor == &diagnostics_monitors__descriptor);
protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
-static const ProtobufCFieldDescriptor diagnostics_monitors__field_descriptors[63] =
+static const ProtobufCFieldDescriptor diagnostics_monitors__field_descriptors[65] =
{
{
"Dancer1Angle",
@@ -810,6 +810,30 @@ static const ProtobufCFieldDescriptor diagnostics_monitors__field_descriptors[63
0, /* flags */
0,NULL,NULL /* reserved1,reserved2, etc */
},
+ {
+ "DispensersInkLevel",
+ 64,
+ PROTOBUF_C_LABEL_REPEATED,
+ PROTOBUF_C_TYPE_MESSAGE,
+ offsetof(DiagnosticsMonitors, n_dispensersinklevel),
+ offsetof(DiagnosticsMonitors, dispensersinklevel),
+ &double_array__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "MidTanksInkLevel",
+ 65,
+ PROTOBUF_C_LABEL_REPEATED,
+ PROTOBUF_C_TYPE_MESSAGE,
+ offsetof(DiagnosticsMonitors, n_midtanksinklevel),
+ offsetof(DiagnosticsMonitors, midtanksinklevel),
+ &double_array__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
};
static const unsigned diagnostics_monitors__field_indices_by_name[] = {
38, /* field[38] = BlowerVoltage */
@@ -834,6 +858,7 @@ static const unsigned diagnostics_monitors__field_indices_by_name[] = {
34, /* field[34] = Dispenser8MotorFrequency */
46, /* field[46] = Dispenser8Pressure */
22, /* field[22] = DispensersAngularEncoders */
+ 63, /* field[63] = DispensersInkLevel */
23, /* field[23] = DispensersLinearPositions */
21, /* field[21] = DispensersMotorsFrequency */
24, /* field[24] = DispensersPressure */
@@ -867,6 +892,7 @@ static const unsigned diagnostics_monitors__field_indices_by_name[] = {
52, /* field[52] = MidTank6Level */
53, /* field[53] = MidTank7Level */
54, /* field[54] = MidTank8Level */
+ 64, /* field[64] = MidTanksInkLevel */
62, /* field[62] = Mixer1HeaterCurrent */
9, /* field[9] = MixerTemperature */
5, /* field[5] = PollerMotor */
@@ -879,7 +905,7 @@ static const unsigned diagnostics_monitors__field_indices_by_name[] = {
static const ProtobufCIntRange diagnostics_monitors__number_ranges[1 + 1] =
{
{ 1, 0 },
- { 0, 63 }
+ { 0, 65 }
};
const ProtobufCMessageDescriptor diagnostics_monitors__descriptor =
{
@@ -889,7 +915,7 @@ const ProtobufCMessageDescriptor diagnostics_monitors__descriptor =
"DiagnosticsMonitors",
"",
sizeof(DiagnosticsMonitors),
- 63,
+ 65,
diagnostics_monitors__field_descriptors,
diagnostics_monitors__field_indices_by_name,
1, diagnostics_monitors__number_ranges,
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/DiagnosticsMonitors.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/DiagnosticsMonitors.pb-c.h
index 13ebbaf21..ef860a31f 100644
--- a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/DiagnosticsMonitors.pb-c.h
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/DiagnosticsMonitors.pb-c.h
@@ -153,10 +153,14 @@ struct _DiagnosticsMonitors
double *headzone5_6heatercurrent;
size_t n_mixer1heatercurrent;
double *mixer1heatercurrent;
+ size_t n_dispensersinklevel;
+ DoubleArray **dispensersinklevel;
+ size_t n_midtanksinklevel;
+ DoubleArray **midtanksinklevel;
};
#define DIAGNOSTICS_MONITORS__INIT \
{ PROTOBUF_C_MESSAGE_INIT (&diagnostics_monitors__descriptor) \
- , 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL }
+ , 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL }
/* DiagnosticsMonitors methods */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.c
index b15763408..e51a7693c 100644
--- a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.c
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.c
@@ -7,7 +7,7 @@
#endif
#include "InterfaceIOs.pb-c.h"
-static const ProtobufCEnumValue interface_ios__enum_values_by_number[41] =
+static const ProtobufCEnumValue interface_ios__enum_values_by_number[42] =
{
{ "ANALOG_MIXCHIP_TEMP", "INTERFACE_IOS__ANALOG_MIXCHIP_TEMP", 0 },
{ "GPO_MIXCHIP_SSR4_CTRL", "INTERFACE_IOS__GPO_MIXCHIP_SSR4_CTRL", 19 },
@@ -40,6 +40,7 @@ static const ProtobufCEnumValue interface_ios__enum_values_by_number[41] =
{ "Midtank7Cartridge", "INTERFACE_IOS__Midtank7Cartridge", 179 },
{ "Midtank8Cartridge", "INTERFACE_IOS__Midtank8Cartridge", 180 },
{ "SW_SPARE", "INTERFACE_IOS__SW_SPARE", 224 },
+ { "GPO_BUZZER", "INTERFACE_IOS__GPO_BUZZER", 270 },
{ "GPO_LED4", "INTERFACE_IOS__GPO_LED4", 274 },
{ "GPO_TFEED_BREAK_1", "INTERFACE_IOS__GPO_TFEED_BREAK_1", 296 },
{ "GPO_SPARE1_1", "INTERFACE_IOS__GPO_SPARE1_1", 318 },
@@ -52,15 +53,16 @@ static const ProtobufCEnumValue interface_ios__enum_values_by_number[41] =
{ "VALVE_WASTE_TANK", "INTERFACE_IOS__VALVE_WASTE_TANK", 346 },
};
static const ProtobufCIntRange interface_ios__value_ranges[] = {
-{0, 0},{19, 1},{43, 6},{54, 9},{64, 11},{163, 12},{224, 30},{274, 31},{296, 32},{318, 33},{341, 35},{0, 41}
+{0, 0},{19, 1},{43, 6},{54, 9},{64, 11},{163, 12},{224, 30},{270, 31},{274, 32},{296, 33},{318, 34},{341, 36},{0, 42}
};
-static const ProtobufCEnumValueIndex interface_ios__enum_values_by_name[41] =
+static const ProtobufCEnumValueIndex interface_ios__enum_values_by_name[42] =
{
{ "ANALOG_MIXCHIP_TEMP", 0 },
- { "GPI_WCONTAINER_FULL", 35 },
- { "GPI_WCONTAINER_WARN", 36 },
- { "GPO_BLOWER_PWM", 37 },
- { "GPO_CHILLER_SSR9_CTRL", 38 },
+ { "GPI_WCONTAINER_FULL", 36 },
+ { "GPI_WCONTAINER_WARN", 37 },
+ { "GPO_BLOWER_PWM", 38 },
+ { "GPO_BUZZER", 31 },
+ { "GPO_CHILLER_SSR9_CTRL", 39 },
{ "GPO_DILUTORPUMP_SSR10_CTRL", 12 },
{ "GPO_DRYER_SSR1_CTRL", 6 },
{ "GPO_DRYER_SSR2_CTRL", 7 },
@@ -70,15 +72,15 @@ static const ProtobufCEnumValueIndex interface_ios__enum_values_by_name[41] =
{ "GPO_DYEINGH_SSR7_CTRL", 4 },
{ "GPO_DYEINGH_SSR8_CTRL", 5 },
{ "GPO_EXTWINDER_SSR11_CTRL", 11 },
- { "GPO_LED4", 31 },
+ { "GPO_LED4", 32 },
{ "GPO_MIXCHIP_SSR4_CTRL", 1 },
- { "GPO_SPARE1_1", 33 },
- { "GPO_SPARE1_2", 34 },
+ { "GPO_SPARE1_1", 34 },
+ { "GPO_SPARE1_2", 35 },
{ "GPO_SPARE_SSR12_CTRL", 9 },
{ "GPO_SPARE_SSR13_CTRL", 10 },
- { "GPO_TFEED_BREAK_1", 32 },
+ { "GPO_TFEED_BREAK_1", 33 },
{ "GPO_WASTECH_PUMP2", 13 },
- { "GPO_WHS_WTANKPUMP2", 39 },
+ { "GPO_WHS_WTANKPUMP2", 40 },
{ "Midtank1Air", 14 },
{ "Midtank1Cartridge", 22 },
{ "Midtank2Air", 15 },
@@ -96,7 +98,7 @@ static const ProtobufCEnumValueIndex interface_ios__enum_values_by_name[41] =
{ "Midtank8Air", 21 },
{ "Midtank8Cartridge", 29 },
{ "SW_SPARE", 30 },
- { "VALVE_WASTE_TANK", 40 },
+ { "VALVE_WASTE_TANK", 41 },
};
const ProtobufCEnumDescriptor interface_ios__descriptor =
{
@@ -105,11 +107,11 @@ const ProtobufCEnumDescriptor interface_ios__descriptor =
"InterfaceIOs",
"InterfaceIOs",
"",
- 41,
+ 42,
interface_ios__enum_values_by_number,
- 41,
+ 42,
interface_ios__enum_values_by_name,
- 11,
+ 12,
interface_ios__value_ranges,
NULL,NULL,NULL,NULL /* reserved[1234] */
};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.h
index eea1cb6b8..31e40ba6e 100644
--- a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.h
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.h
@@ -51,6 +51,7 @@ typedef enum _InterfaceIOs {
INTERFACE_IOS__Midtank7Cartridge = 179,
INTERFACE_IOS__Midtank8Cartridge = 180,
INTERFACE_IOS__SW_SPARE = 224,
+ INTERFACE_IOS__GPO_BUZZER = 270,
INTERFACE_IOS__GPO_LED4 = 274,
INTERFACE_IOS__GPO_TFEED_BREAK_1 = 296,
INTERFACE_IOS__GPO_SPARE1_1 = 318,
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.c
index 53754f409..70d17789c 100644
--- a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.c
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.c
@@ -199,12 +199,12 @@ static const ProtobufCFieldDescriptor job_ticket__field_descriptors[14] =
0,NULL,NULL /* reserved1,reserved2, etc */
},
{
- "units",
+ "NumberOfUnits",
13,
PROTOBUF_C_LABEL_OPTIONAL,
PROTOBUF_C_TYPE_UINT32,
- offsetof(JobTicket, has_units),
- offsetof(JobTicket, units),
+ offsetof(JobTicket, has_numberofunits),
+ offsetof(JobTicket, numberofunits),
NULL,
NULL,
0, /* flags */
@@ -231,13 +231,13 @@ static const unsigned job_ticket__field_indices_by_name[] = {
10, /* field[10] = JobDescriptionFile */
4, /* field[4] = Length */
1, /* field[1] = Name */
+ 12, /* field[12] = NumberOfUnits */
5, /* field[5] = ProcessParameters */
13, /* field[13] = SampleWinding */
8, /* field[8] = Segments */
7, /* field[7] = Spool */
9, /* field[9] = UploadStrategy */
6, /* field[6] = WindingMethod */
- 12, /* field[12] = units */
};
static const ProtobufCIntRange job_ticket__number_ranges[1 + 1] =
{
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.h
index d54a9c32e..3d555b717 100644
--- a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.h
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.h
@@ -50,8 +50,8 @@ struct _JobTicket
char *jobdescriptionfile;
protobuf_c_boolean has_enablelubrication;
protobuf_c_boolean enablelubrication;
- protobuf_c_boolean has_units;
- uint32_t units;
+ protobuf_c_boolean has_numberofunits;
+ uint32_t numberofunits;
protobuf_c_boolean has_samplewinding;
protobuf_c_boolean samplewinding;
};
diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c
index 26996ad48..1f871a4cc 100644
--- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c
+++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c
@@ -547,17 +547,18 @@ bool Is_FPGA_WD_Occurred()
LOG_ERROR (FPGA_WD_Counter, "FPGA WD Occurred");
FPGA_WD_Counter = FPGA_WD_Counter+1;
FPGA_WD_Occurred = true;
-/*
+
//To recover:
//1. Disable all FPGA's WD:
Control_WD(DISABLE,0);
//2. Enqable all FPGA's WD:
Control_WD(ENABLE,250);
//3. Call FPGA_SetMotorsInit:
- FPGA_SetMotorsInit();
+ //FPGA_SetMotorsInit();
//4. Init Motor's Drivers:
- Init_Motors_Drivers_After_FPGA_WD();
-
+ //Init_Motors_Drivers_After_FPGA_WD();
+ Motor_ReconfigAllMotors();
+/*
//OR
//Reset MCU (will reset also the FPGA):
//Power_Reset();
@@ -789,7 +790,7 @@ uint32_t SecondaryPumpCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag)
void PumpActivation(uint32_t seconds)
{
Pumps_Control(WASTECH_PUMP2, OPEN);
- SecondaryPumpControlId = AddControlCallback( SecondaryPumpCallBackFunction, seconds*1000/*eHundredMillisecond*/, TemplateDataReadCBFunction,0,0, 0 );
+ SecondaryPumpControlId = AddControlCallback(NULL, SecondaryPumpCallBackFunction, seconds*1000/*eHundredMillisecond*/, TemplateDataReadCBFunction,0,0, 0 );
}
/*
uint8_t Buttons_LEDS(BUTTON Button, OPERATION_MODE LED_Mode)
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c
index 331913816..fe8a96b32 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c
@@ -26,6 +26,7 @@
#include "ADC_MUX.h"
#include "Modules/AlarmHandling/AlarmHandling.h"
+#include "modules/ids/ids_ex.h"
bool MidTank_Pressure_Read_Enable[NUM_OF_MIDTANKS] = {true,true,true,true,true,true,true,true};
double MidTank_Pressure[NUM_OF_MIDTANKS] = {1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0};
@@ -388,10 +389,10 @@ double Get_MidTank_Pressure_Sensor(MidTank_t MidTank_ID) //0-7
assert (MidTank_ID<NUM_OF_MIDTANKS);
return MidTank_Pressure[MidTank_ID];
}
-int Get_MidTank_Int100_Sensor(MidTank_t MidTank_ID) //0-7
+int Get_MidTank_Int1000_Sensor(MidTank_t MidTank_ID) //0-7
{
assert (MidTank_ID<NUM_OF_MIDTANKS);
- return (int)(MidTank_Pressure[MidTank_ID]*100);
+ return (int)(MidTank_Pressure[MidTank_ID]*1000);
}
///////////////////////// Head_MixChip_Heaters_Current //////////////////////////////
@@ -406,13 +407,18 @@ uint32_t Heaters_Current_Bits[9];//just for debug
void Enable_Reading_Heaters_Current(HEATERS_CURRENT Heater_ID) //0-8
{
assert (Heater_ID<NUM_OF_CURRENT_HEATERS);
- //Heaters_Current_Read_Enable[Heater_ID] = true;
+ Heaters_Current_Read_Enable[Heater_ID] = true;
}
void Disable_Reading_Heaters_Current(HEATERS_CURRENT Heater_ID) //0-8
{
assert (Heater_ID<NUM_OF_CURRENT_HEATERS);
Heaters_Current_Read_Enable[Heater_ID] = false;
}
+bool Get_Heater_Current_Reading_State(HEATERS_CURRENT Heater_ID) //0-8
+{
+ assert (Heater_ID<NUM_OF_CURRENT_HEATERS);
+ return Heaters_Current_Read_Enable[Heater_ID];
+}
uint32_t Read_Heaters_Current(HEATERS_CURRENT Heater_ID) //0-8
{
@@ -522,6 +528,16 @@ bool Get_Heaters_Current_Integer(HEATERS_CURRENT Heater_ID, int32_t* value ) //0
return OK;
}
+bool Get_Heaters_Current_float(HEATERS_CURRENT Heater_ID, double* value ) //0-8 //Shai add default value
+{
+ assert (Heater_ID<NUM_OF_CURRENT_HEATERS);
+ if (Heaters_Current_Read_Enable[Heater_ID] == false)
+ return ERROR; // Heaters_Current[Heater_ID]
+ else *value = Heaters_Current[Heater_ID]*100;
+ //Report("Get_Heaters_Current_Integer ",__FILE__,Heater_ID,*value,RpWarning,(int)(Heaters_Current[Heater_ID]*100),0);
+
+ return OK;
+}
void ADC_MUX_Init()
{
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.h
index 8f7ed8a64..103e3e764 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.h
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.h
@@ -43,9 +43,11 @@ extern double Heaters_Current[9];
extern uint32_t Heaters_Current_Bits[9];
+void Trigger_MidTank_Current_Read(void);
+
double Read_MidTank_Pressure_Sensor(MidTank_t MidTank_ID);
double Get_MidTank_Pressure_Sensor(MidTank_t MidTank_ID); //0-7
-int Get_MidTank_Int100_Sensor(MidTank_t MidTank_ID); //0-7
+int Get_MidTank_Int1000_Sensor(MidTank_t MidTank_ID); //0-7
void MidTankPressureCorrection(double Offset);
void Enable_MidTank_Pressure_Reading(MidTank_t MidTank_ID); //0-7
@@ -53,9 +55,11 @@ void Disable_MidTank_Pressure_Reading(MidTank_t MidTank_ID); //0-7
void Enable_Reading_Heaters_Current(HEATERS_CURRENT Heater_ID);
void Disable_Reading_Heaters_Current(HEATERS_CURRENT Heater_ID); //0-5
+bool Get_Heater_Current_Reading_State(HEATERS_CURRENT Heater_ID); //0-8
uint32_t Read_Head_MixChip_Heaters_Current(HEATERS_CURRENT Heater_ID);
double Get_Heaters_Current(HEATERS_CURRENT Heater_ID);
bool Get_Heaters_Current_Integer(HEATERS_CURRENT Heater_ID,int32_t* value );
+bool Get_Heaters_Current_float(HEATERS_CURRENT Heater_ID, double* value );
//int Get_Heaters_Current_Integer(HEATERS_CURRENT Heater_ID); //0-8
uint32_t Read_Heaters_Current(HEATERS_CURRENT Heater_ID);
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c
index 1cbd88f3b..2edda0ce4 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c
@@ -214,7 +214,7 @@ uint32_t Gradual_Increase_Blower(uint32_t Initial_mV,uint32_t Target_mV)
mInitial_mV = Initial_mV+100;
Control_Voltage_To_Blower(mInitial_mV);
Report("Increasing blower",__FILE__,__LINE__,(int)mInitial_mV,RpWarning,(int)millisecondCounter,0);
- BlowerControlId = AddControlCallback( Gradual_Increase_Blower_Callback, mInterval,getBlowerState ,0, 0, 0 );
+ BlowerControlId = AddControlCallback(NULL, Gradual_Increase_Blower_Callback, mInterval,getBlowerState ,0, 0, 0 );
if (BlowerControlId == 0xFF)
{
Report("Add control callback failed",__FILE__,__LINE__,(int)0,RpWarning,(int)BlowerControlId,0);
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c
index c86cb8bad..44ee2edd0 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c
@@ -348,6 +348,10 @@ uint8_t Read_Dispensers_IO_Registers(/*TCA9534Regs* Regs*/)
}
+uint8_t Get_Notification_Disp_Full(uint8_t Dispenser_ID/*, TCA9534Regs* Regs*/)
+{
+ return Regs.Input[Dispenser_ID].Uchar;
+}
bool Get_Notification_Disp_UP(uint8_t Dispenser_ID/*, TCA9534Regs* Regs*/)
{
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.h
index 9168843da..85e03a9ba 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.h
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.h
@@ -58,6 +58,7 @@ uint8_t TCA9534ReadInputReg(uint8_t Dispenser_ID/*, TCA9534Regs* Regs*/);
uint8_t TCA9534TestRelay(uint8_t Dispenser_ID/*, TCA9534Regs* Regs*/, bool EnableTestRelay);
uint8_t TCA9534ByPass(uint8_t Dispenser_ID/*, TCA9534Regs* Regs*/, bool EnableByPass);
uint8_t TCA9534TestByPassTestRelay(uint8_t Dispenser_ID/*, TCA9534Regs* Regs*/);
+uint8_t Get_Notification_Disp_Full(uint8_t Dispenser_ID/*, TCA9534Regs* Regs*/);
bool Get_Notification_Disp_UP(uint8_t Dispenser_ID/*, TCA9534Regs* Regs*/);
bool Get_Notification_Disp_Down(uint8_t Dispenser_ID/*, TCA9534Regs* Regs*/);
bool Get_Notification_Realy_On(uint8_t Dispenser_ID/*, TCA9534Regs* Regs*/);
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h
index fdeca7b85..b0da72345 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h
@@ -22,5 +22,7 @@ uint32_t I2C_ReadBuff(uint32_t I2C_BASE, unsigned char addr, unsigned char* data
uint32_t I2C_Write(uint32_t I2C_ID, uint32_t Slave_Add, uint32_t *I2C_Write_buf, uint32_t No_BytesToWrite );
uint32_t I2C_Read(uint32_t I2C_ID, uint32_t Slave_Add, uint32_t *I2C_Read_buf, uint32_t No_BytesToRead );
+void Trigger_Heater_Current_Read(void);
+void Trigger_MidTank_Pressure_Read(void);
#endif /* DRIVERS_I2C_COMMUNICATION_I2C_H_ */
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c
new file mode 100644
index 000000000..aa6bfccac
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c
@@ -0,0 +1,85 @@
+/*
+ * I2C_Task.c
+ *
+ * Created on: Oct 23, 2019
+ * Author: shlomo
+ */
+
+#include <stdint.h>
+#include <stdbool.h>
+#include "include.h"
+#include "inc/hw_memmap.h"
+
+#include "drivers/ADC_Sampling/adc.h"
+
+#include "ADC_MUX/ADC_MUX.h"
+#include "modules/ids/ids_ex.h"
+
+Mailbox_Handle I2C_ReadingMsgQ = NULL;
+typedef enum
+{
+ Midtank_Pressure_Reading,
+ Heater_Current_Reading
+}I2C_ReadingMessages;
+
+typedef struct I2C_ReadingMessage{
+ uint16_t messageId;
+ uint16_t parameter;
+}I2C_ReadingMessageStruc;
+
+void Trigger_Heater_Current_Read(void)
+{
+ I2C_ReadingMessageStruc I2C_ReadingMessage;
+ uint8_t Heater_i;
+
+ for (Heater_i = 0;Heater_i < NUM_OF_CURRENT_HEATERS;Heater_i++)
+ {
+ I2C_ReadingMessage.messageId = Heater_Current_Reading;
+ I2C_ReadingMessage.parameter = Heater_i;
+ if (I2C_ReadingMsgQ != NULL)
+ Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT);
+ }
+ return;
+
+}
+
+void Trigger_MidTank_Pressure_Read(void)
+{
+ I2C_ReadingMessageStruc I2C_ReadingMessage;
+ uint8_t Midtank_i;
+
+ for (Midtank_i = 0;Midtank_i < MAX_SYSTEM_DISPENSERS;Midtank_i++)
+ {
+ I2C_ReadingMessage.messageId = Midtank_Pressure_Reading;
+ I2C_ReadingMessage.parameter = Midtank_i;
+ if (I2C_ReadingMsgQ != NULL)
+ Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT);
+ }
+ return;
+
+}
+void I2C_ReadingTask(UArg arg0, UArg arg1)
+{
+ I2C_ReadingMessageStruc I2C_ReadingMessage;
+ Error_Block eb;
+ Error_init(&eb);
+ I2C_ReadingMsgQ = Mailbox_create(sizeof(I2C_ReadingMessageStruc), 40, NULL,&eb);
+
+ while(1)
+ {
+ Mailbox_pend(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_WAIT_FOREVER);
+ switch (I2C_ReadingMessage.messageId)
+ {
+ case Midtank_Pressure_Reading:
+ //Report("Read_MidTank_Pressure_Sensor",__FILE__,__LINE__,255,RpWarning,0,0);
+ Read_MidTank_Pressure_Sensor(I2C_ReadingMessage.parameter);
+ break;
+ case Heater_Current_Reading:
+ //Report("Read_Heaters_Current",__FILE__,__LINE__,255,RpWarning,0,0);
+ Read_Heaters_Current(I2C_ReadingMessage.parameter);
+ break;
+ default:
+ break;
+ }
+ }
+}
diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c
index 7ea2ea79a..4a5a48f04 100644
--- a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c
+++ b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c
@@ -86,7 +86,19 @@ uint32_t MotorConfig(TimerMotors_t _motorId, MotorDriverConfigStruc *MotorConfig
return FPGA_MotorConfig( _motorId, MotorConfig);
#endif
}
-
+uint32_t Motor_ReconfigAllMotors(void)
+{
+ TimerMotors_t Motor_i;
+ uint32_t status = PASSED;
+ for (Motor_i = 0; Motor_i < NUM_OF_MOTORS ; Motor_i++)
+ {
+ if (isMotorConfigured(Motor_i))
+ {
+ status |= MotorConfig( Motor_i, &MotorsCfg[Motor_i]);
+ }
+ }
+ return status;
+}
bool isMotorConfigured(TimerMotors_t _motorId)
{
return MotorConfigState[_motorId];
diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h
index afacb50c3..59a8726f3 100644
--- a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h
+++ b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h
@@ -131,6 +131,7 @@ extern MotorDriverConfigStruc MotorsCfg[NUM_OF_MOTORS];
uint32_t MotorsInit(void);
//set the motor configuration
uint32_t MotorConfig(TimerMotors_t _motorId, MotorDriverConfigStruc *MotorConfig);
+uint32_t Motor_ReconfigAllMotors(void);
bool isMotorConfigured(TimerMotors_t _motorId);
diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c
index 5c25a87ca..b39b9f325 100644
--- a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c
+++ b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c
@@ -147,7 +147,7 @@ uint32_t MotorGotoWithCallback (TimerMotors_t MotorId, uint32_t Steps, uint32_t
MotorStop(MotorId,Hard_Hiz );
Task_sleep(100);
MotorGoTo(MotorId,Steps );
- MotorControlId[MotorId] = AddControlCallback( MotorMoveToLimitSwitchCallBackFunction, eTenMillisecond, FPGA_Read_limit_Switches,(IfTypeMotors*0x100+MotorId), LimitSwitchId, 0 );
+ MotorControlId[MotorId] = AddControlCallback(NULL, MotorMoveToLimitSwitchCallBackFunction, eTenMillisecond, FPGA_Read_limit_Switches,(IfTypeMotors*0x100+MotorId), LimitSwitchId, 0 );
MotorControlCallback[MotorId] = MotorMoveToLimitSwitchCallBackFunction;
return MotorControlId[MotorId];
}
@@ -163,7 +163,7 @@ uint32_t MotorGotoWithBusyCallback (TimerMotors_t MotorId,bool direction, uint32
//MotorStop(MotorId,Hard_Hiz );
int sign = direction?1:-1;
MotorGoTo(MotorId,Steps*sign );
- MotorControlId[MotorId] = AddControlCallback( MotorMoveCallBackFunction, /*eTenMillisecond*/20, MotorControlGetnBusyState,(IfTypeMotors*0x100+MotorId), MotorId, 0 );
+ MotorControlId[MotorId] = AddControlCallback(NULL, MotorMoveCallBackFunction, /*eTenMillisecond*/20, MotorControlGetnBusyState,(IfTypeMotors*0x100+MotorId), MotorId, 0 );
MotorControlCallback[MotorId] = MotorMoveCallBackFunction;
return MotorControlId[MotorId];
}
@@ -184,7 +184,7 @@ uint32_t MotorMoveWithCallback (TimerMotors_t MotorId,bool direction, uint32_t S
//MotorStop(MotorId,Hard_Hiz );
MotorMove(MotorId,direction,Steps );
- MotorControlId[MotorId] = AddControlCallback( MotorMoveCallBackFunction, /*eTenMillisecond*/20, MotorControlGetnBusyState,(IfTypeMotors*0x100+MotorId), MotorId, 0 );
+ MotorControlId[MotorId] = AddControlCallback(NULL, MotorMoveCallBackFunction, /*eTenMillisecond*/20, MotorControlGetnBusyState,(IfTypeMotors*0x100+MotorId), MotorId, 0 );
MotorControlCallback[MotorId] = MotorMoveCallBackFunction;
return MotorControlId[MotorId];
}
@@ -284,7 +284,7 @@ uint32_t MotorMoveToStopper (TimerMotors_t MotorId,bool direction, uint32_t Spee
StoredMotorPosition[MotorId] = MotorGetPosition(MotorId);
REPORT_MSG(StoredMotorPosition[MotorId],"MotorMoveToStopper initial position");
MotorSetSpeed (MotorId, Speed);
- MotorControlId[MotorId] = AddControlCallback( MotorVerifiedCallBackFunction, 20,Control_Read_Dryer_Position,(IfTypeMotors*0x100+MotorId), MotorId, 0 );
+ MotorControlId[MotorId] = AddControlCallback(NULL, MotorVerifiedCallBackFunction, 10,Control_Read_Dryer_Position,(IfTypeMotors*0x100+MotorId), MotorId, 0 );
MotorControlCallback[MotorId] = MotorVerifiedCallBackFunction;
return MotorControlId[MotorId];
}
@@ -321,7 +321,7 @@ uint32_t MotorMoveToDrierPositionCallBackFunction(uint32_t IfIndex, uint32_t Rea
MotorStop(MotorId,Hard_Stop );
//possibly: start regular control (speed etc)
- //uint32_t ControlId = AddControlCallback(ControlCBFunction Callback, eOneMillisecond, (IfTypeMotors*0x100+MotorId), deviceId, Parameter );
+ //uint32_t ControlId = AddControlCallback(NULL,ControlCBFunction Callback, eOneMillisecond, (IfTypeMotors*0x100+MotorId), deviceId, Parameter );
//call the module callback
if (MotorCallback[MotorId])
@@ -359,7 +359,7 @@ uint32_t MotorMovetoEncoderPosition (TimerMotors_t MotorId, callback_fptr callb
//MotorSetDirection( MotorId, direction);
MotorSetSpeed (MotorId, 50);
- MotorControlId[MotorId] = AddControlCallback( MotorMoveToDrierPositionCallBackFunction, 2,Control_Read_Dryer_Position,(IfTypeMotors*0x100+MotorId), MotorId, 0 );
+ MotorControlId[MotorId] = AddControlCallback(NULL, MotorMoveToDrierPositionCallBackFunction, 2,Control_Read_Dryer_Position,(IfTypeMotors*0x100+MotorId), MotorId, 0 );
MotorControlCallback[MotorId] = MotorMoveToDrierPositionCallBackFunction;
return MotorControlId[MotorId];
@@ -370,7 +370,7 @@ uint32_t MotorSetSpeedWithCallback (TimerMotors_t MotorId, uint32_t _freq, callb
//assert (callback);
MotorCallback[MotorId] = callback;
- MotorControlId[MotorId] = AddControlCallback( MotorSetSpeedCallBackFunction, eTenMillisecond, MotorControlGetnBusyState,(IfTypeMotors*0x100+MotorId), MotorId, 0 );
+ MotorControlId[MotorId] = AddControlCallback(NULL, MotorSetSpeedCallBackFunction, eTenMillisecond, MotorControlGetnBusyState,(IfTypeMotors*0x100+MotorId), MotorId, 0 );
MotorControlCallback[MotorId] = MotorSetSpeedCallBackFunction;
MotorSetSpeed(MotorId, _freq);
@@ -409,7 +409,7 @@ uint32_t MotorMoveCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) //TODO
MotorControlCallback[MotorId] = 0;
MotorControlId[MotorId] = 0xFF;
//possibly: start regular control (speed etc)
- //uint32_t ControlId = AddControlCallback(ControlCBFunction Callback, eOneMillisecond, (IfTypeMotors*0x100+MotorId), deviceId, Parameter );
+ //uint32_t ControlId = AddControlCallback(NULL,ControlCBFunction Callback, eOneMillisecond, (IfTypeMotors*0x100+MotorId), deviceId, Parameter );
//call the module callback
if (MotorCallback[MotorId])
@@ -436,7 +436,7 @@ uint32_t MotorSetSpeedCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) //TO
MotorControlCallback[MotorId] = 0;
MotorControlId[MotorId] = 0xFF;
//possibly: start regular control (speed etc)
- //uint32_t ControlId = AddControlCallback(ControlCBFunction Callback, eOneMillisecond, (IfTypeMotors*0x100+MotorId), deviceId, Parameter );
+ //uint32_t ControlId = AddControlCallback(NULL,ControlCBFunction Callback, eOneMillisecond, (IfTypeMotors*0x100+MotorId), deviceId, Parameter );
//call the module callback
if (MotorCallback[MotorId])
@@ -483,7 +483,7 @@ uint32_t MotorMoveToLimitSwitchCallBackFunction(uint32_t IfIndex, uint32_t Limit
}
//possibly: start regular control (speed etc)
- //uint32_t ControlId = AddControlCallback(ControlCBFunction Callback, eOneMillisecond, (IfTypeMotors*0x100+MotorId), deviceId, Parameter );
+ //uint32_t ControlId = AddControlCallback(NULL,ControlCBFunction Callback, eOneMillisecond, (IfTypeMotors*0x100+MotorId), deviceId, Parameter );
if (MotorId == HARDWARE_MOTOR_TYPE__MOTO_DH_LID)
{
if (CloseMagnet == true)
@@ -542,7 +542,7 @@ uint32_t MotorMovetoLimitSwitch (TimerMotors_t MotorId,bool direction, uint32_t
MotorSetDirection( MotorId, direction);
MotorSetSpeed(MotorId, Freq);
- MotorControlId[MotorId] = AddControlCallback( MotorMoveToLimitSwitchCallBackFunction, MotorTimeLag[MotorId] , FPGA_Read_limit_Switches,(IfTypeMotors*0x100+MotorId), LimitSwitchId, 0 );
+ MotorControlId[MotorId] = AddControlCallback("MoveToLimitSwitch", MotorMoveToLimitSwitchCallBackFunction, MotorTimeLag[MotorId] , FPGA_Read_limit_Switches,(IfTypeMotors*0x100+MotorId), LimitSwitchId, 0 );
if ( MotorControlId[MotorId] == 0xFF)
return ERROR;
MotorCallback[MotorId] = callback;
@@ -575,7 +575,7 @@ uint32_t MotorMoveToBreakSensorCallBackFunction(uint32_t IfIndex, uint32_t Limit
MotorStop(MotorId,Hard_Hiz); //TODO in run time limit switch just reverse direction
//possibly: start regular control (speed etc)
- //uint32_t ControlId = AddControlCallback(ControlCBFunction Callback, eOneMillisecond, (IfTypeMotors*0x100+MotorId), deviceId, Parameter );
+ //uint32_t ControlId = AddControlCallback(NULL,ControlCBFunction Callback, eOneMillisecond, (IfTypeMotors*0x100+MotorId), deviceId, Parameter );
//call the module callback
if (MotorCallback[MotorId])
@@ -601,7 +601,7 @@ uint32_t MotorMovetoBreakSensor (TimerMotors_t MotorId,bool direction, uint32_t
MotorSetDirection( MotorId, direction);
MotorSetSpeed(MotorId, Freq);
- MotorControlId[MotorId] = AddControlCallback( MotorMoveToBreakSensorCallBackFunction, eOneMillisecond , ReadBreakSensor,(IfTypeMotors*0x100+MotorId), 0, 0 );
+ MotorControlId[MotorId] = AddControlCallback(NULL, MotorMoveToBreakSensorCallBackFunction, eOneMillisecond , ReadBreakSensor,(IfTypeMotors*0x100+MotorId), 0, 0 );
if ( MotorControlId[MotorId] == 0xFF)
return ERROR;
MotorCallback[MotorId] = callback;
@@ -646,7 +646,7 @@ uint32_t MotorMoveToDancerPositionCallBackFunction(uint32_t IfIndex, uint32_t Re
MotorStop(MotorId,Hard_Hiz); //TODO in run time limit switch just reverse direction
//possibly: start regular control (speed etc)
- //uint32_t ControlId = AddControlCallback(ControlCBFunction Callback, eOneMillisecond, (IfTypeMotors*0x100+MotorId), deviceId, Parameter );
+ //uint32_t ControlId = AddControlCallback(NULL,ControlCBFunction Callback, eOneMillisecond, (IfTypeMotors*0x100+MotorId), deviceId, Parameter );
//call the module callback
if (MotorCallback[MotorId])
@@ -669,7 +669,7 @@ uint32_t MotorMovetoDancerPosition (TimerMotors_t MotorId,bool direction, uint32
DancerId = dancerid;
MotorSetDirection( MotorId, direction);
MotorSetSpeed(MotorId, Freq);
- MotorControlId[MotorId] = AddControlCallback( MotorMoveToDancerPositionCallBackFunction, eTenMillisecond , Control_Read_Dancer_Position,(IfTypeMotors*0x100+MotorId), DancerId, 0 );
+ MotorControlId[MotorId] = AddControlCallback(NULL, MotorMoveToDancerPositionCallBackFunction, eTenMillisecond , Control_Read_Dancer_Position,(IfTypeMotors*0x100+MotorId), DancerId, 0 );
if ( MotorControlId[MotorId] == 0xFF)
return ERROR;
MotorCallback[MotorId] = callback;
diff --git a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c
index 66be6a21a..06e5b4b0d 100644
--- a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c
+++ b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c
@@ -371,7 +371,7 @@ uint32_t Control3WayValvesWithCallback (Valves_t _ValveId, bool direction, callb
Valve3WayModuleCallback[_ValveId] = callback;
- Valve3WayControlId[_ValveId] = AddControlCallback( Valve3WayCallBackFunction, eOneSecond/*eHundredMillisecond*/, FPGA_GetDispenserValveBusyOCD,(IfTypeDisopenser*0x100+_ValveId), _ValveId, 0 );
+ Valve3WayControlId[_ValveId] = AddControlCallback("Valve3WayControlId", Valve3WayCallBackFunction, eOneSecond/*eHundredMillisecond*/, FPGA_GetDispenserValveBusyOCD,(IfTypeDisopenser*0x100+_ValveId), _ValveId, 0 );
if (Valve3WayControlId[_ValveId] == 0xFF)
Report("Add control callback failed",__FILE__,__LINE__,(int)_ValveId,RpWarning,(int)Valve3WayControlId[_ValveId],0);
//else
diff --git a/Software/Embedded_SW/Embedded/Embedded.cfg b/Software/Embedded_SW/Embedded/Embedded.cfg
index 4d70067e9..8cdb27e47 100644
--- a/Software/Embedded_SW/Embedded/Embedded.cfg
+++ b/Software/Embedded_SW/Embedded/Embedded.cfg
@@ -102,6 +102,12 @@ FPGALoad.stackSize = 4096;
FPGALoad.priority = 5;
Program.global.FPGALoad = Task.create("&FPGALoadTask", FPGALoad);
+var I2C_Reading = new Task.Params();
+I2C_Reading.instance.name = "I2C_Reading";
+I2C_Reading.stackSize = 2048;
+I2C_Reading.priority = 3;
+Program.global.I2C_Reading = Task.create("&I2C_ReadingTask", I2C_Reading);
+
var ControlTaskParams = new Task.Params();
ControlTaskParams.instance.name = "control";
ControlTaskParams.stackSize = 2048;
diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
index c7a3a5e22..daaf922cf 100644
--- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
+++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
@@ -54,6 +54,8 @@
#include "drivers/Heater/TemperatureSensor.h"
#include "drivers/Flash_ram/FlashProgram.h"
+#include "drivers/Valves/Valve.h"
+
Task_Handle AlarmHandling_Task_Handle;
Mailbox_Handle AlarmHandlingMsgQ = NULL;
@@ -213,22 +215,31 @@ AlarmHandlingItemStruc HardCodedAlarmItem[MAX_SYSTEM_ALARMS]={
{eOneSecond,ALARM_SOURCE_TYPE__DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Critical,0xFF,0,EVENT_TYPE__DISPENSER_7_OVERPRESSURE},
{eOneSecond,ALARM_SOURCE_TYPE__DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Critical,0xFF,0,EVENT_TYPE__DISPENSER_8_OVERPRESSURE},
- {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,0,0,50/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning, 0xFF,2,EVENT_TYPE__MID_TANK_1_LOW_LEVEL},
- {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,1,1,50/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning, 0xFF,2,EVENT_TYPE__MID_TANK_2_LOW_LEVEL},
- {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,2,2,50/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning, 0xFF,2,EVENT_TYPE__MID_TANK_3_LOW_LEVEL},
- {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,3,3,50/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning, 0xFF,2,EVENT_TYPE__MID_TANK_4_LOW_LEVEL},
- {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,4,4,50/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning, 0xFF,2,EVENT_TYPE__MID_TANK_5_LOW_LEVEL},
- //{eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,5,5,50/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning, 0xFF,2,EVENT_TYPE__MID_TANK_6_LOW_LEVEL},
- //{eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,6,6,50/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning, 0xFF,2,EVENT_TYPE__MID_TANK_7_LOW_LEVEL},
- {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,7,7,50/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning, 0xFF,2,EVENT_TYPE__MID_TANK_8_LOW_LEVEL},
- {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,0,0,20/*500cc*/,false,DEBUG_LOG_CATEGORY__Error, 0xFF,2,EVENT_TYPE__MID_TANK_1_EMPTY},
- {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,1,1,20/*500cc*/,false,DEBUG_LOG_CATEGORY__Error, 0xFF,2,EVENT_TYPE__MID_TANK_2_EMPTY},
- {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,2,2,20/*500cc*/,false,DEBUG_LOG_CATEGORY__Error, 0xFF,2,EVENT_TYPE__MID_TANK_3_EMPTY},
- {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,3,3,20/*500cc*/,false,DEBUG_LOG_CATEGORY__Error, 0xFF,2,EVENT_TYPE__MID_TANK_4_EMPTY},
- {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,4,4,20/*500cc*/,false,DEBUG_LOG_CATEGORY__Error, 0xFF,2,EVENT_TYPE__MID_TANK_5_EMPTY},
- //{eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,5,5,20/*500cc*/,false,DEBUG_LOG_CATEGORY__Error, 0xFF,2,EVENT_TYPE__MID_TANK_6_EMPTY},
- //{eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,6,6,20/*500cc*/,false,DEBUG_LOG_CATEGORY__Error, 0xFF,2,EVENT_TYPE__MID_TANK_7_EMPTY},
- {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,7,7,20/*500cc*/,false,DEBUG_LOG_CATEGORY__Error, 0xFF,2,EVENT_TYPE__MID_TANK_8_EMPTY},
+ {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,0,0,500/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning, 0xFF,2,EVENT_TYPE__MID_TANK_1_LOW_LEVEL},
+ {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,1,1,500/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning, 0xFF,2,EVENT_TYPE__MID_TANK_2_LOW_LEVEL},
+ {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,2,2,500/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning, 0xFF,2,EVENT_TYPE__MID_TANK_3_LOW_LEVEL},
+ {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,3,3,500/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning, 0xFF,2,EVENT_TYPE__MID_TANK_4_LOW_LEVEL},
+ {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,4,4,500/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning, 0xFF,2,EVENT_TYPE__MID_TANK_5_LOW_LEVEL},
+ //{eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,5,5,500/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning, 0xFF,2,EVENT_TYPE__MID_TANK_6_LOW_LEVEL},
+ //{eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,6,6,500/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning, 0xFF,2,EVENT_TYPE__MID_TANK_7_LOW_LEVEL},
+ {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,7,7,500/*500cc*/,false,DEBUG_LOG_CATEGORY__Warning, 0xFF,2,EVENT_TYPE__MID_TANK_8_LOW_LEVEL},
+ {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,0,0,200/*200cc*/,false,DEBUG_LOG_CATEGORY__Error, 0xFF,2,EVENT_TYPE__MID_TANK_1_EMPTY},
+ {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,1,1,200/*200cc*/,false,DEBUG_LOG_CATEGORY__Error, 0xFF,2,EVENT_TYPE__MID_TANK_2_EMPTY},
+ {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,2,2,200/*200cc*/,false,DEBUG_LOG_CATEGORY__Error, 0xFF,2,EVENT_TYPE__MID_TANK_3_EMPTY},
+ {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,3,3,200/*200cc*/,false,DEBUG_LOG_CATEGORY__Error, 0xFF,2,EVENT_TYPE__MID_TANK_4_EMPTY},
+ {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,4,4,200/*200cc*/,false,DEBUG_LOG_CATEGORY__Error, 0xFF,2,EVENT_TYPE__MID_TANK_5_EMPTY},
+ //{eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,5,5,200/*200cc*/,false,DEBUG_LOG_CATEGORY__Error, 0xFF,2,EVENT_TYPE__MID_TANK_6_EMPTY},
+ //{eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,6,6,200/*200cc*/,false,DEBUG_LOG_CATEGORY__Error, 0xFF,2,EVENT_TYPE__MID_TANK_7_EMPTY},
+ {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,7,7,200/*200cc*/,false,DEBUG_LOG_CATEGORY__Error, 0xFF,2,EVENT_TYPE__MID_TANK_8_EMPTY},
+
+ {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,0,0,1800/*1800cc*/,true,DEBUG_LOG_CATEGORY__Error, 0xFF,2,EVENT_TYPE__MID_TANK_1_OVERFLOW},
+ {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,1,1,1800/*1800cc*/,true,DEBUG_LOG_CATEGORY__Error, 0xFF,2,EVENT_TYPE__MID_TANK_2_OVERFLOW},
+ {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,2,2,1800/*1800cc*/,true,DEBUG_LOG_CATEGORY__Error, 0xFF,2,EVENT_TYPE__MID_TANK_3_OVERFLOW},
+ {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,3,3,1800/*1800cc*/,true,DEBUG_LOG_CATEGORY__Error, 0xFF,2,EVENT_TYPE__MID_TANK_4_OVERFLOW},
+ {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,4,4,1800/*1800cc*/,true,DEBUG_LOG_CATEGORY__Error, 0xFF,2,EVENT_TYPE__MID_TANK_5_OVERFLOW},
+ //{eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,5,5,1800/*1800cc*/,true,DEBUG_LOG_CATEGORY__Error, 0xFF,2,EVENT_TYPE__MID_TANK_6_OVERFLOW},
+ //{eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,6,6,1800/*1800cc*/,true,DEBUG_LOG_CATEGORY__Error, 0xFF,2,EVENT_TYPE__MID_TANK_7_OVERFLOW},
+ {eOneSecond,ALARM_SOURCE_TYPE__FluidLevelAlarm,7,7,1800/*1800cc*/,true,DEBUG_LOG_CATEGORY__Error, 0xFF,2,EVENT_TYPE__MID_TANK_8_OVERFLOW},
{eOneSecond,ALARM_SOURCE_TYPE__MotorAlarm,HARDWARE_MOTOR_TYPE__MOTO_DRYER_DRIVING,HARDWARE_MOTOR_TYPE__MOTO_DRYER_DRIVING,x_STATUS_OCD,false,DEBUG_LOG_CATEGORY__Error,0xFF,2,EVENT_TYPE__DRYER_MOTOR_OVERCURRENT },
@@ -519,6 +530,7 @@ void AlarmHandlingSetCurrentLimits(double currentalarmhighlimit,double curre
{
CurrentAlarmHighLimit = currentalarmhighlimit;
CurrentAlarmLowLimit = currentalarmlowlimit;
+ ReportWithPackageFilter(AlarmFilter,"Alarm Current Limits", __FILE__,__LINE__,(int)(currentalarmhighlimit*100), RpMessage, (int)(currentalarmlowlimit*100), 0);
}
void AlarmHandlingSetFlags(bool checkHardLimitAlarms,bool checkCurrentAlarms, bool checkTamperAlarms, bool checkMotorAlarms)
@@ -605,6 +617,18 @@ uint32_t AlarmHandlingConsequentActions(uint32_t AlarmId, DebugLogCategory Sever
}
}
break;
+ case ALARM_SOURCE_TYPE__FluidLevelAlarm:
+ if (Severity == DEBUG_LOG_CATEGORY__Error)
+ {
+ ReportWithPackageFilter(AlarmFilter,"fluid level alarm", __FILE__,AlarmItem[AlarmId].ModuleDeviceId,AlarmId, RpMessage, AlarmItem[AlarmId].AlarmSource, 0);
+ if (AlarmItem[AlarmId].EventType >= EVENT_TYPE__MID_TANK_1_OVERFLOW)
+ {
+ Valve_Set(IDS_Id_to_AirValve[AlarmItem[AlarmId].DeviceId], AlarmItem[AlarmId].DeviceId ); //AlarmItem[AlarmId].DeviceId/ON
+ Valve_Set(IDS_Id_to_CartrideValve[AlarmItem[AlarmId].DeviceId], AlarmItem[AlarmId].DeviceId ); //Atm_MidTank_OFF/ON
+ }
+ }
+
+ break;
default:
break;
}
@@ -634,8 +658,8 @@ uint32_t AlarmHandlingConsequentActions(uint32_t AlarmId, DebugLogCategory Sever
{
JobEndReason = getEndReason(AlarmId);
AbortJob(AlarmReasonStr);
- //Report(AlarmReasonStr, __FILE__,__LINE__,AlarmId, RpMessage, DEBUG_LOG_CATEGORY__Error, 0);
- ReportWithPackageFilter(AlarmFilter,AlarmReasonStr, __FILE__,__LINE__,AlarmId, RpMessage, DEBUG_LOG_CATEGORY__Error, 0);
+ //Report(AlarmReasonStr, __FILE__,__LINE__,AlarmId, RpMessage, Severity, 0);
+ ReportWithPackageFilter(AlarmFilter,AlarmReasonStr, __FILE__,__LINE__,AlarmId, RpMessage, Severity, 0);
}
/*switch (AlarmItem[AlarmId].AlarmSource)
{
@@ -752,19 +776,27 @@ JobEndReasonEnum AlarmHandlingPrepareJob(void *CurrentJob)
if (AlarmState[Alarm_i].Status == true)
{
status = JOB_TAMPER_ALARM;
+ ReportWithPackageFilter(AlarmFilter,"tamper alarm preventing job", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, AlarmItem[Alarm_i].Severity, AlarmItem[Alarm_i].DeviceId, 0);
AlarmId = Alarm_i;
break;
}
}
- /*if (AlarmItem[Alarm_i].AlarmSource == ALARM_SOURCE_TYPE__FluidLevelAlarm)
+ if (AlarmItem[Alarm_i].AlarmSource == ALARM_SOURCE_TYPE__FluidLevelAlarm)
{
if (AlarmState[Alarm_i].Status == true)
{
- status = ERROR;
- AlarmId = Alarm_i;
- break;
+ if (AlarmItem[Alarm_i].Severity == DEBUG_LOG_CATEGORY__Error)
+ {
+ if (DispenserUsedInJob[AlarmItem[Alarm_i].DeviceId] == true)
+ {
+ status = ERROR;
+ ReportWithPackageFilter(AlarmFilter,"fluid level alarm preventing job", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, AlarmItem[Alarm_i].Severity, AlarmItem[Alarm_i].DeviceId, 0);
+ AlarmId = Alarm_i;
+ break;
+ }
+ }
}
- }*/
+ }
if (AlarmItem[Alarm_i].AlarmSource == ALARM_SOURCE_TYPE__MotorAlarm)
{
if (AlarmState[Alarm_i].Status == true)
@@ -772,6 +804,7 @@ JobEndReasonEnum AlarmHandlingPrepareJob(void *CurrentJob)
if(AlarmItem[Alarm_i].Severity>=DEBUG_LOG_CATEGORY__Error)
{
status = JOB_MOTOR_ALARM;
+ ReportWithPackageFilter(AlarmFilter,"motor alarm preventing job", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, AlarmItem[Alarm_i].Severity, AlarmItem[Alarm_i].DeviceId, 0);
AlarmId = Alarm_i;
break;
}
@@ -795,6 +828,7 @@ JobEndReasonEnum AlarmHandlingPrepareJob(void *CurrentJob)
{
status = JOB_TEMPERATURE_ALARM;
AlarmId = Alarm_i;
+ ReportWithPackageFilter(AlarmFilter,"temperature alarm preventing job", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, AlarmItem[Alarm_i].Severity, AlarmItem[Alarm_i].DeviceId, 0);
break;
}
}
@@ -804,6 +838,7 @@ JobEndReasonEnum AlarmHandlingPrepareJob(void *CurrentJob)
{
status = JOB_TEMPERATURE_ALARM;
AlarmId = Alarm_i;
+ ReportWithPackageFilter(AlarmFilter,"temperature alarm preventing job", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, AlarmItem[Alarm_i].Severity, AlarmItem[Alarm_i].DeviceId, 0);
break;
}
}
@@ -874,6 +909,13 @@ void AlarmHandlingInternalSetAlarm(uint32_t AlarmId, bool value)
AlarmState[Alarm_i].Status = value;
}
ReportWithPackageFilter(AlarmFilter,"Alarm ON ", __FILE__,AlarmState[Alarm_i].EventPtr,AlarmItem[Alarm_i].EventType, RpMessage, value, Alarm_i);
+ if ((AlarmItem[Alarm_i].Severity == DEBUG_LOG_CATEGORY__Critical)&&(JobIsActive()))
+ {
+ JobEndReason = getEndReason(Alarm_i);
+ SendJobProgress(0.0,0, false, "Critical alarm!!!!");
+ AbortJob("Critical alarm");
+ ReportWithPackageFilter(AlarmFilter, AlarmReasonStr,__FILE__,__LINE__,Alarm_i,RpError, 0,0);
+ }
}
else
{
@@ -900,7 +942,7 @@ uint32_t AlarmHandlingStart(void)
if ( AlarmHandlingActive == false)
{
AlarmHandlingActive = true;
- AlarmHandlingControlId = AddControlCallback(AlarmHandling_ControlTrigger,eTenMillisecond,TemplateDataReadCBFunction,0,0,0);
+ AlarmHandlingControlId = AddControlCallback("Alarm Handling",AlarmHandling_ControlTrigger,eTenMillisecond,TemplateDataReadCBFunction,0,0,0);
}
return OK;
}
@@ -930,6 +972,8 @@ uint32_t AlarmHandlingLoop(uint32_t tick)
uint32_t drawer_small2;
uint32_t drawer_small3;
+ double doubleValue = 0.0;
+
@@ -1027,20 +1071,22 @@ uint32_t AlarmHandlingLoop(uint32_t tick)
case ALARM_SOURCE_TYPE__CurrentAlarm:
if (CheckCurrentAlarms)
{
- if (Get_Heaters_Current_Integer(AlarmItem[Alarm_i].DeviceId, &value) == OK)
+ if (Get_Heaters_Current_float(AlarmItem[Alarm_i].DeviceId, &doubleValue) == OK)
{
if (AlarmItem[Alarm_i].AlarmDirection == true)
{
- if ((value >= (AlarmItem[Alarm_i].AlarmValue*CurrentAlarmHighLimit)) || (value <= (AlarmItem[Alarm_i].AlarmValue*CurrentAlarmLowLimit)))
+ if ((doubleValue >= (AlarmItem[Alarm_i].AlarmValue*CurrentAlarmHighLimit)) || (doubleValue <= (AlarmItem[Alarm_i].AlarmValue*CurrentAlarmLowLimit)))
{
Status = true;
+ //ReportWithPackageFilter(AlarmFilter,"OverCurrent Alarm ON ", __FILE__,AlarmItem[Alarm_i].DeviceId,AlarmItem[Alarm_i].EventType, RpMessage, (int)doubleValue, 0);
}
}
else
{
- if (value == 0)
+ if (doubleValue <= 0.1)
{
Status = true;
+ //ReportWithPackageFilter(AlarmFilter,"llop break Alarm ON ", __FILE__,AlarmItem[Alarm_i].DeviceId,AlarmItem[Alarm_i].EventType, RpMessage, (int)doubleValue, 0);
}
}
@@ -1084,7 +1130,7 @@ uint32_t AlarmHandlingLoop(uint32_t tick)
FluidLevelWarning = AlarmItem[Alarm_i].AlarmValue;
else if (AlarmItem[Alarm_i].Severity == DEBUG_LOG_CATEGORY__Error)
FluidLevelError = AlarmItem[Alarm_i].AlarmValue;
- value = Get_MidTank_Int100_Sensor(AlarmItem[Alarm_i].DeviceId);
+ value = Get_MidTank_Int1000_Sensor(AlarmItem[Alarm_i].DeviceId);
if (AlarmItem[Alarm_i].AlarmDirection == OVER_VALUE)
{
if (value > AlarmItem[Alarm_i].AlarmValue)
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/DriverWithCallbackExample.c b/Software/Embedded_SW/Embedded/Modules/Control/DriverWithCallbackExample.c
index 881034e40..9dcb3affb 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/DriverWithCallbackExample.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/DriverWithCallbackExample.c
@@ -26,7 +26,7 @@ uint32_t DriverActionWithCallback (uint32_t deviceId, uint32_t parameter, callba
ModuleCallback = callback;
//start control:
- uint32_t ControlId = AddControlCallback( callback, eOneMillisecond, NULL, (IfTypeNone*0x100+deviceId),deviceId, parameter );
+ uint32_t ControlId = AddControlCallback(NULL, callback, eOneMillisecond, NULL, (IfTypeNone*0x100+deviceId),deviceId, parameter );
return ControlId;
}
@@ -38,7 +38,7 @@ uint32_t ControlCallBackFunction(uint32_t deviceId, uint32_t ReadValue)
//stop this control loop
RemoveControlCallback(deviceId, ControlCallBackFunction );
//possibly: start regular control (speed etc)
- //uint32_t ControlId = AddControlCallback(ControlCBFunction Callback, eOneMillisecond, NULL, deviceId, Parameter );
+ //uint32_t ControlId = AddControlCallback(NULL,ControlCBFunction Callback, eOneMillisecond, NULL, deviceId, Parameter );
//call the module callback
ModuleCallback(deviceId,ReadValue);
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
index 53ddda9f9..7e5020336 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
@@ -38,6 +38,7 @@
#include <drivers/FPGA/FPGA_Comm.h>
#include "drivers/Valves/Valve.h"
#include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h"
+#include "Drivers/I2C_Communication/I2C.h"
#include "modules/thread/thread_ex.h"
#include "modules/ids/ids_ex.h"
@@ -557,7 +558,6 @@ uint32_t MillisecLowLoop(uint32_t tick)
for (Disp_i = 0;Disp_i < MAX_SYSTEM_DISPENSERS;Disp_i++)
{
CalculateDispenserPressure(Disp_i);
- //Read_MidTank_Pressure_Sensor(Disp_i);
}
ADC_TriggerCollection();
}
@@ -576,13 +576,13 @@ uint32_t MillisecLowLoop(uint32_t tick)
for (Disp_i = 0;Disp_i < MAX_SYSTEM_DISPENSERS;Disp_i++)
{
CalculateDispenserPressure(Disp_i);
- //Read_MidTank_Pressure_Sensor(Disp_i);
}
}
FPGA_GetAllDispensersValveBusyOCD();
temp = Read_Fans_Tacho();
DrawerFansStatus = temp & 0x1F;
SystemFansStatus = temp & 0xE0;
+ MachineUpdateResponseFunc();
//KeepAliveOneSecondCall();
for (Motor_i = 0;Motor_i < NUM_OF_MOTORS;Motor_i++)
{
@@ -593,24 +593,25 @@ uint32_t MillisecLowLoop(uint32_t tick)
}
if (!(OneMinute_Tick))
{
- for (Heater_i = 0;Heater_i < NUM_OF_CURRENT_HEATERS;Heater_i++)
+ Trigger_Heater_Current_Read();
+ /*for (Heater_i = 0;Heater_i < NUM_OF_CURRENT_HEATERS;Heater_i++)
{
- //Read_Heaters_Current(Heater_i);
- }
+ Read_Heaters_Current(Heater_i);
+ }*/
}
for (Sensor_i = 0;Sensor_i < MAX_TEMPERATURE_SENSOR_ID;Sensor_i++)
{
TemperatureCalc[Sensor_i] = MillisecCalculateTemperatures ( Sensor_i);
}
- MachineUpdateResponseFunc();
}
if (OneMinute_Tick)
{
- for (Disp_i = 0;Disp_i < MAX_SYSTEM_DISPENSERS;Disp_i++)
+ Trigger_MidTank_Pressure_Read();
+ /*for (Disp_i = 0;Disp_i < MAX_SYSTEM_DISPENSERS;Disp_i++)
{
Read_MidTank_Pressure_Sensor(Disp_i);
- }
- //MachineUpdateResponseFunc();
+ }*/
+// MachineUpdateResponseFunc();
/* for (Motor_i = 0;Motor_i < NUM_OF_MOTORS;Motor_i++)
{
if (Motor_i == HARDWARE_MOTOR_TYPE__MOTO_SCREW)
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/control.c b/Software/Embedded_SW/Embedded/Modules/Control/control.c
index 80afb7ac6..b7d117efe 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/control.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/control.c
@@ -71,6 +71,7 @@ typedef struct
DataReadCBFunction ControlDataReadPtr;
ControlCBFunction ControlCallbackPtr;
uint32_t ControlTiming;
+ char *Name;
}ControlDeviceStruc;
typedef enum
@@ -132,6 +133,7 @@ void ControlInit(void)
ControlArray[Device_i].ControlCallbackPtr = NULL;
ControlArray[Device_i].ControlDataReadPtr = NULL;
ControlArray[Device_i].ControlTiming = eNoControl;
+ ControlArray[Device_i].Name = NULL;
}
gateControlDB = GateMutex_create(NULL, &eb);
if (gateControlDB == NULL)
@@ -166,7 +168,10 @@ uint32_t ControlActivityLed( uint32_t Parameter1)
COMM_RED_LED_ON;
ACTIVITY_RED_LED_OFF; // Heaters indication - all the Heaters OFF
if(FPGA_WD_Occurred == true)
+ {
ACTIVITY_GREEN_LED_ON;
+ HWConfigurationInit();
+ }
if(power.color == fastBILNK)
Pannel_Leds(POWER_ON_OFF,MODE_OFF);
@@ -298,7 +303,7 @@ void ControlStart(void)
TimerEnable(Control_timerBase, TIMER_A);
ADCAcquireStart(0,1);
- AddControlCallback( ControlEmptyCBFunction, eHundredMillisecond, ControlActivityLed,0, 0, 0 );
+ AddControlCallback("ControlActivityLed", ControlEmptyCBFunction, eHundredMillisecond, ControlActivityLed,0, 0, 0 );
SysCtlDelay(12000000);
MillisecStart();
@@ -313,7 +318,7 @@ void ControlStart(void)
* both these callbacks can be removed. if a new call is arriving, it invalidates the previous one (no dual control or data)
*
***************************************************************************************************************************************************/
-uint32_t AddControlCallback( ControlCBFunction Callback, uint32_t CtrlFrequency, DataReadCBFunction DriverfPtr, uint16_t IfIndex, uint32_t Parameter1, uint32_t Parameter2 )
+uint32_t AddControlCallback(char* Name, ControlCBFunction Callback, uint32_t CtrlFrequency, DataReadCBFunction DriverfPtr, uint16_t IfIndex, uint32_t Parameter1, uint32_t Parameter2 )
{
assert(Callback);
assert(DriverfPtr);
@@ -364,6 +369,7 @@ uint32_t AddControlCallback( ControlCBFunction Callback, uint32_t CtrlFrequency
ControlArray[deviceId].Parameter1 = Parameter1;
ControlArray[deviceId].IfIndex = IfIndex;
ControlArray[deviceId].StartTick = millisecondCounter;
+ ControlArray[deviceId].Name = Name;
GateMutex_leave(gateControlDB, key);
//LOG_ERROR(deviceId, "Add Callback");
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/control.h b/Software/Embedded_SW/Embedded/Modules/Control/control.h
index 450646a68..4b82aab30 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/control.h
+++ b/Software/Embedded_SW/Embedded/Modules/Control/control.h
@@ -38,7 +38,7 @@ typedef enum
void ControlInit(void);
void ControlStop(void);
void ControlStart(void);
-uint32_t AddControlCallback( ControlCBFunction Callback, uint32_t CtrlFrequency, DataReadCBFunction DriverfPtr, uint16_t IfIndex, uint32_t Parameter1, uint32_t Parameter2 );
+uint32_t AddControlCallback(char *Name, ControlCBFunction Callback, uint32_t CtrlFrequency, DataReadCBFunction DriverfPtr, uint16_t IfIndex, uint32_t Parameter1, uint32_t Parameter2 );
int RemoveControlCallback(uint32_t deviceId, ControlCBFunction Callback );
//The safe remove command can be used ONLY when called from the control callback itself
int SafeRemoveControlCallback(uint32_t deviceId , ControlCBFunction Callback);
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c
index 4597efa93..9a81854e6 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c
@@ -271,6 +271,12 @@ uint32_t SetDigitalOutRequestRequestFunc(MessageContainer* requestContainer)
case INTERFACE_IOS__GPO_TFEED_BREAK_1:
Pumps_Control(WASTECH_PUMP2, request->value);
break;
+ case INTERFACE_IOS__GPO_BUZZER:
+ if (request->value == true)
+ Buzzer(MODE_ON);//use START or STOP, 0 - 100%();
+ else
+ Buzzer(MODE_OFF);//use START or STOP, 0 - 100%();
+ break;
default:
responseContainer.has_error = true;
responseContainer.error = ERROR_CODE__GENERAL_ERROR;
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
index 6db76e842..d4e1636a5 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
@@ -63,7 +63,7 @@ uint32_t DiagnosticsStop(void);
uint32_t Diagnostics_ControlTrigger(uint32_t IfIndex, uint32_t ReadValue);
uint32_t Diagnostics_TenMiliControlTrigger(uint32_t IfIndex, uint32_t ReadValue);
uint32_t Diagnostics_OneSecControlTrigger(uint32_t IfIndex, uint32_t ReadValue);
-uint32_t DispensersCollection(uint32_t IfIndex, uint32_t ReadValue);
+uint32_t Diagnostics_OneMinControlTrigger(uint32_t IfIndex, uint32_t ReadValue);
DiagnosticsMonitors DiagnosticsMonitor = DIAGNOSTICS_MONITORS__INIT;
@@ -100,12 +100,16 @@ double dryerzone3temperature[DIAGNOSTICS_LIMIT+1];
double dispensermotorfrequency[MAX_SYSTEM_DISPENSERS][DIAGNOSTICS_LIMIT+1];
double dispenserspressure[MAX_SYSTEM_DISPENSERS][DIAGNOSTICS_LIMIT+1];
+double dispenserinklevel[MAX_SYSTEM_DISPENSERS][1];
+double midtankinklevel[MAX_SYSTEM_DISPENSERS][1];
double MidTankpressure[MAX_SYSTEM_DISPENSERS][1];
double HeatersCurrent[NUM_OF_CURRENT_HEATERS][1];
double VOC_Sensor;
DoubleArray DispenserFreq[MAX_SYSTEM_DISPENSERS];
DoubleArray DiagnosticsDispenserPressure[MAX_SYSTEM_DISPENSERS];
+DoubleArray DispenserInkLevel[MAX_SYSTEM_DISPENSERS];
+DoubleArray DiagnosticsMidTankInkLevel[MAX_SYSTEM_DISPENSERS];
HeaterState **heatersstates;
HeaterState HeaterInfo[HEATER_TYPE__MixerHeater+1];
@@ -136,6 +140,7 @@ typedef enum
DiagnosticsTrigger,
DiagnosticsTenMiliTrigger,
DiagnosticsOneSecTrigger,
+ DiagnosticsOneMinuteTrigger
}DiagnosticsMessages;
typedef struct DiagnosticsMessage{
@@ -164,14 +169,16 @@ void DiagnosticsInit(void)
DiagnosticsMsgQ = Mailbox_create(sizeof(DiagnosticsMessageStruc), 40, NULL,&eb);
- DiagnosticsMonitor.dispensersmotorsfrequency = (DoubleArray**)my_malloc(sizeof(DoubleArray *)*8);
- DiagnosticsMonitor.dispenserspressure = (DoubleArray**)my_malloc(sizeof(DoubleArray)*8);
- DiagnosticsMonitor.dispenserslinearpositions = (DoubleArray**)my_malloc(sizeof(DoubleArray)*8);
- DiagnosticsMonitor.dispensersangularencoders = (DoubleArray**)my_malloc(sizeof(DoubleArray)*8);
+ DiagnosticsMonitor.dispensersmotorsfrequency = (DoubleArray**)my_malloc(sizeof(DoubleArray *)*MAX_SYSTEM_DISPENSERS);
+ DiagnosticsMonitor.dispenserspressure = (DoubleArray**)my_malloc(sizeof(DoubleArray)*MAX_SYSTEM_DISPENSERS);
+ DiagnosticsMonitor.midtanksinklevel = (DoubleArray**)my_malloc(sizeof(DoubleArray)*MAX_SYSTEM_DISPENSERS);
+ DiagnosticsMonitor.dispensersinklevel = (DoubleArray**)my_malloc(sizeof(DoubleArray)*MAX_SYSTEM_DISPENSERS);
for (i = 0; i<MAX_SYSTEM_DISPENSERS;i++)
{
double_array__init(&DispenserFreq[i]);
double_array__init(&DiagnosticsDispenserPressure[i]);
+ double_array__init(&DiagnosticsMidTankInkLevel[i]);
+ double_array__init(&DispenserInkLevel[i]);
}
heatersstates = (HeaterState**)my_malloc(sizeof(HeaterState *)*(HEATER_TYPE__MixerHeater+1));
for(i=0;i<=HEATER_TYPE__MixerHeater;i++)
@@ -366,6 +373,7 @@ void DiagnosticTenMsecCollection(void)
return;
/*if (JobIsActive()== false)
return;*/
+
DiagnosticLoadDancer(WINDER_DANCER,Control_Read_Dancer_Position(WINDER_DANCER, 0,0));
DiagnosticLoadDancer(POOLER_DANCER,Control_Read_Dancer_Position(POOLER_DANCER, 0,0));
DiagnosticLoadDancer(FEEDER_DANCER,Control_Read_Dancer_Position(FEEDER_DANCER, 0,0));
@@ -376,6 +384,105 @@ void DiagnosticTenMsecCollection(void)
//DiagnosticLoadSpeedSensor(getSensorSpeedData());
}
+void DiagnosticOneMinuteCollection(void)
+{
+ int i;
+
+ DiagnosticsMonitor.n_dispensersinklevel = 0;
+ DiagnosticsMonitor.n_midtanksinklevel = 0;
+ for (i=0;i<MAX_SYSTEM_DISPENSERS;i++)
+ {
+ MidTankpressure[i][0] = Get_MidTank_Pressure_Sensor(i);
+ dispenserinklevel[i][0] = 1.00-(IDS_Dispenser_Data[i].consumedinnanolitter/5800000);
+ midtankinklevel[i][0] = Get_MidTank_Pressure_Sensor(i);
+ if (DiagnosticsMonitor.dispensersinklevel)
+ {
+ DiagnosticsMonitor.n_dispensersinklevel = MAX_SYSTEM_DISPENSERS;
+ //DiagnosticsDispenserPressure[i] = dispenserspressure[i];
+ //double_array__init(&DiagnosticsDispenserPressure[i]);
+ DispenserInkLevel[i].data = dispenserinklevel[i];
+ DispenserInkLevel[i].n_data = 1;
+ DiagnosticsMonitor.dispensersinklevel[i] = &DispenserInkLevel[i];
+ }
+ if (DiagnosticsMonitor.midtanksinklevel)
+ {
+ DiagnosticsMonitor.n_midtanksinklevel = MAX_SYSTEM_DISPENSERS;
+ //DiagnosticsDispenserPressure[i] = dispenserspressure[i];
+ //double_array__init(&DiagnosticsDispenserPressure[i]);
+ DiagnosticsMidTankInkLevel[i].data = midtankinklevel[i];
+ DiagnosticsMidTankInkLevel[i].n_data = 1;
+ DiagnosticsMonitor.midtanksinklevel[i] = &DiagnosticsMidTankInkLevel[i];
+ }
+
+ }
+
+ DiagnosticsMonitor.n_midtank1level = 1;
+ DiagnosticsMonitor.midtank1level = MidTankpressure[0];
+ DiagnosticsMonitor.n_midtank2level = 1;
+ DiagnosticsMonitor.midtank2level = MidTankpressure[1];
+ DiagnosticsMonitor.n_midtank3level = 1;
+ DiagnosticsMonitor.midtank3level = MidTankpressure[2];
+ DiagnosticsMonitor.n_midtank4level = 1;
+ DiagnosticsMonitor.midtank4level = MidTankpressure[3];
+ DiagnosticsMonitor.n_midtank5level = 1;
+ DiagnosticsMonitor.midtank5level = MidTankpressure[4];
+ DiagnosticsMonitor.n_midtank6level = 1;
+ DiagnosticsMonitor.midtank6level = MidTankpressure[5];
+ DiagnosticsMonitor.n_midtank7level = 1;
+ DiagnosticsMonitor.midtank7level = MidTankpressure[6];
+ DiagnosticsMonitor.n_midtank8level = 1;
+ DiagnosticsMonitor.midtank8level = MidTankpressure[7];
+
+ for (i=0;i<NUM_OF_CURRENT_HEATERS;i++)
+ {
+ if (Read_Head_MixChip_Heaters_Current(i) == true)
+ {
+ HeatersCurrent[i][0] = Get_Heaters_Current(i);
+ switch(i)
+ {
+ case HEATER_DRYER_CURRENT_1:
+ DiagnosticsMonitor.n_drierzone1heatercurrent = 1;
+ DiagnosticsMonitor.drierzone1heatercurrent = HeatersCurrent[HEATER_DRYER_CURRENT_1];
+ break;
+ case HEATER_DRYER_CURRENT_2:
+ DiagnosticsMonitor.n_drierzone2heatercurrent = 1;
+ DiagnosticsMonitor.drierzone2heatercurrent = HeatersCurrent[HEATER_DRYER_CURRENT_2];
+ break;
+ case HEATER_MIXCHIP_CURRENT:
+ DiagnosticsMonitor.n_mixer1heatercurrent = 1;
+ DiagnosticsMonitor.mixer1heatercurrent = HeatersCurrent[HEATER_MIXCHIP_CURRENT];
+ break;
+ case HEATER_HEAD_CURRENT_ZONE_1:
+ DiagnosticsMonitor.n_headzone1heatercurrent = 1;
+ DiagnosticsMonitor.headzone1heatercurrent = HeatersCurrent[HEATER_HEAD_CURRENT_ZONE_1];
+ break;
+ case HEATER_HEAD_CURRENT_ZONE_2:
+ DiagnosticsMonitor.n_headzone2heatercurrent = 1;
+ DiagnosticsMonitor.headzone2heatercurrent = HeatersCurrent[HEATER_HEAD_CURRENT_ZONE_2];
+ break;
+ case HEATER_HEAD_CURRENT_ZONE_3:
+ DiagnosticsMonitor.n_headzone3heatercurrent = 1;
+ DiagnosticsMonitor.headzone3heatercurrent = HeatersCurrent[HEATER_HEAD_CURRENT_ZONE_3];
+ break;
+ case HEATER_HEAD_CURRENT_ZONE_4:
+ DiagnosticsMonitor.n_headzone4heatercurrent = 1;
+ DiagnosticsMonitor.headzone4heatercurrent = HeatersCurrent[HEATER_HEAD_CURRENT_ZONE_4];
+ break;
+ case HEATER_HEAD_CURRENT_ZONE_5_6:
+ DiagnosticsMonitor.n_headzone5_6heatercurrent = 1;
+ DiagnosticsMonitor.headzone5_6heatercurrent = HeatersCurrent[HEATER_HEAD_CURRENT_ZONE_5_6];
+ break;
+ default:
+ break;
+ }
+ }
+ }
+
+ VOC_Sensor = (double) getGasReading();
+ DiagnosticsMonitor.n_filterdeltapressure = 1;
+ DiagnosticsMonitor.filterdeltapressure = &VOC_Sensor;
+
+}
void DiagnosticOneSecCollection(void)
{
int i;
@@ -396,11 +503,7 @@ void DiagnosticOneSecCollection(void)
//dispensermotorfrequency[i][DiagnosticsIndex] = IDS_Dispenser_Data[i].consumedinnanolitter;
dispenserspressure[i][DiagnosticsIndex] = GetDispenserPressure(i); //Read_MidTank_Pressure_Sensor
- //if (midtankDisplay)
- MidTankpressure[i][0] = Get_MidTank_Pressure_Sensor(i);
- //else
- // MidTankpressure[i][0] = 1.00-(IDS_Dispenser_Data[i].consumedinnanolitter/5800000);
- //double dispcapacity = (1.00-(IDS_Dispenser_Data[i].consumedinnanolitter/5800000))*130*1000*1000;
+
}
}
void Diagnostic100msecCollection(void)
@@ -410,7 +513,7 @@ void Diagnostic100msecCollection(void)
return;
//DiagnosticLoadSpeedSensor(getSensorSpeedData());
- if (DiagnosticMode == Diagnostic_Extreme_Mode)
+ if (DiagnosticMode == Diagnostic_Extended_Mode)
DiagnosticTenMsecCollection(); //call the 10msec function every 100 msec to reduce transport
if (DiagnosticMode >= Diagnostic_Extended_Mode)
@@ -448,13 +551,7 @@ void Diagnostic100msecCollection(void)
MidTankpressure[i][0] = 1.00-(IDS_Dispenser_Data[i].consumedinnanolitter/5800000);
}
*/
- if (DiagnosticMode == Diagnostic_Extreme_Mode)
- {
- for (i=0;i<NUM_OF_CURRENT_HEATERS;i++)
- {
- HeatersCurrent[i][0] = Get_Heaters_Current(i);
- }
- }
+
/*dispenser1motorfrequency[DiagnosticsIndex] = MotorGetSpeed(HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1);
dispenser2motorfrequency[DiagnosticsIndex] = MotorGetSpeed(HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_2);
dispenser3motorfrequency[DiagnosticsIndex] = MotorGetSpeed(HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_3);
@@ -620,6 +717,7 @@ void SendDiagnostics(void)
DiagnosticsMonitor.dispenserspressure[i] = &DiagnosticsDispenserPressure[i];
}
}
+
/**/
DiagnosticsMonitor.n_dispenserslinearpositions = 0;
DiagnosticsMonitor.n_dispensersangularencoders = 0;
@@ -642,43 +740,6 @@ void SendDiagnostics(void)
DiagnosticsMonitor.dispenser8pressure = dispenserspressure[7];
- DiagnosticsMonitor.n_midtank1level = 1;
- DiagnosticsMonitor.midtank1level = MidTankpressure[0];
- DiagnosticsMonitor.n_midtank2level = 1;
- DiagnosticsMonitor.midtank2level = MidTankpressure[1];
- DiagnosticsMonitor.n_midtank3level = 1;
- DiagnosticsMonitor.midtank3level = MidTankpressure[2];
- DiagnosticsMonitor.n_midtank4level = 1;
- DiagnosticsMonitor.midtank4level = MidTankpressure[3];
- DiagnosticsMonitor.n_midtank5level = 1;
- DiagnosticsMonitor.midtank5level = MidTankpressure[4];
- DiagnosticsMonitor.n_midtank6level = 1;
- DiagnosticsMonitor.midtank6level = MidTankpressure[5];
- DiagnosticsMonitor.n_midtank7level = 1;
- DiagnosticsMonitor.midtank7level = MidTankpressure[6];
- DiagnosticsMonitor.n_midtank8level = 1;
- DiagnosticsMonitor.midtank8level = MidTankpressure[7];
-
- DiagnosticsMonitor.n_drierzone1heatercurrent = 1;
- DiagnosticsMonitor.drierzone1heatercurrent = HeatersCurrent[HEATER_DRYER_CURRENT_1];
- DiagnosticsMonitor.n_drierzone2heatercurrent = 1;
- DiagnosticsMonitor.drierzone2heatercurrent = HeatersCurrent[HEATER_DRYER_CURRENT_2];
- DiagnosticsMonitor.n_mixer1heatercurrent = 1;
- DiagnosticsMonitor.mixer1heatercurrent = HeatersCurrent[HEATER_MIXCHIP_CURRENT];
- DiagnosticsMonitor.n_headzone1heatercurrent = 1;
- DiagnosticsMonitor.headzone1heatercurrent = HeatersCurrent[HEATER_HEAD_CURRENT_ZONE_1];
- DiagnosticsMonitor.n_headzone2heatercurrent = 1;
- DiagnosticsMonitor.headzone2heatercurrent = HeatersCurrent[HEATER_HEAD_CURRENT_ZONE_2];
- DiagnosticsMonitor.n_headzone3heatercurrent = 1;
- DiagnosticsMonitor.headzone3heatercurrent = HeatersCurrent[HEATER_HEAD_CURRENT_ZONE_3];
- DiagnosticsMonitor.n_headzone4heatercurrent = 1;
- DiagnosticsMonitor.headzone4heatercurrent = HeatersCurrent[HEATER_HEAD_CURRENT_ZONE_4];
- DiagnosticsMonitor.n_headzone5_6heatercurrent = 1;
- DiagnosticsMonitor.headzone5_6heatercurrent = HeatersCurrent[HEATER_HEAD_CURRENT_ZONE_5_6];
-
- VOC_Sensor = (double) getGasReading();
- DiagnosticsMonitor.n_filterdeltapressure = 1;
- DiagnosticsMonitor.filterdeltapressure = &VOC_Sensor;
response.monitors = &DiagnosticsMonitor;
//response.digitalpins = DigitalPinArray;
@@ -742,10 +803,31 @@ void SendDiagnostics(void)
DiagnosticsStop();
}
DiagnosticsReset();
+/* DiagnosticsMonitor.n_drierzone1heatercurrent = 0;
+ DiagnosticsMonitor.n_drierzone2heatercurrent = 0;
+ DiagnosticsMonitor.n_mixer1heatercurrent = 0;
+ DiagnosticsMonitor.n_headzone1heatercurrent = 0;
+ DiagnosticsMonitor.n_headzone2heatercurrent = 0;
+ DiagnosticsMonitor.n_headzone3heatercurrent = 0;
+ DiagnosticsMonitor.n_headzone4heatercurrent = 0;
+ DiagnosticsMonitor.n_headzone5_6heatercurrent = 0;
+ DiagnosticsMonitor.n_filterdeltapressure = 0;
+ DiagnosticsMonitor.n_midtank1level = 0;
+ DiagnosticsMonitor.n_midtank2level = 0;
+ DiagnosticsMonitor.n_midtank3level = 0;
+ DiagnosticsMonitor.n_midtank4level = 0;
+ DiagnosticsMonitor.n_midtank5level = 0;
+ DiagnosticsMonitor.n_midtank6level = 0;
+ DiagnosticsMonitor.n_midtank7level = 0;
+ DiagnosticsMonitor.n_midtank8level = 0;
+ DiagnosticsMonitor.n_dispensersinklevel = 0;
+ DiagnosticsMonitor.n_midtanksinklevel = 0;
+*/
}
uint32_t DiagnosticsControlId = 0xff;
uint32_t Diagnostics10MSControlId = 0xff;
uint32_t Diagnostics1SecControlId = 0xff;
+uint32_t Diagnostics1MinControlId = 0xFF;
bool DiagnosticRequestAccepted = false;
uint32_t DiagnosticsStart(void)
{
@@ -756,17 +838,21 @@ uint32_t DiagnosticsStart(void)
{
DiagnosticsActive = true;
if (DiagnosticsControlId == 0xFF)
- DiagnosticsControlId = AddControlCallback(Diagnostics_ControlTrigger,DiagnosticLimit,TemplateDataReadCBFunction,0,0,0);
+ DiagnosticsControlId = AddControlCallback(NULL,Diagnostics_ControlTrigger,DiagnosticLimit,TemplateDataReadCBFunction,0,0,0);
else
LOG_ERROR(DiagnosticsControlId,"Diagnostics restarted");
if (Diagnostics10MSControlId == 0xFF)
- Diagnostics10MSControlId = AddControlCallback(Diagnostics_TenMiliControlTrigger,DiagnosticFastLimit,TemplateDataReadCBFunction,0,0,0);
+ Diagnostics10MSControlId = AddControlCallback(NULL,Diagnostics_TenMiliControlTrigger,DiagnosticFastLimit,TemplateDataReadCBFunction,0,0,0);
else
LOG_ERROR(DiagnosticsControlId,"Diagnostics restarted");
if (Diagnostics1SecControlId == 0xFF)
- Diagnostics1SecControlId = AddControlCallback(Diagnostics_OneSecControlTrigger,eOneSecond,TemplateDataReadCBFunction,0,0,0);
+ Diagnostics1SecControlId = AddControlCallback(NULL,Diagnostics_OneSecControlTrigger,eOneSecond,TemplateDataReadCBFunction,0,0,0);
else
LOG_ERROR(Diagnostics1SecControlId,"Diagnostics restarted");
+ if (Diagnostics1MinControlId == 0xFF)
+ Diagnostics1MinControlId = AddControlCallback(NULL,Diagnostics_OneMinControlTrigger,eOneMinute,TemplateDataReadCBFunction,0,0,0);
+ else
+ LOG_ERROR(Diagnostics1MinControlId,"Diagnostics restarted");
}
}
@@ -783,10 +869,13 @@ uint32_t DiagnosticsStop(void)
RemoveControlCallback(Diagnostics10MSControlId,Diagnostics_TenMiliControlTrigger);
if (Diagnostics1SecControlId != 0xFF)
RemoveControlCallback(Diagnostics1SecControlId,Diagnostics_OneSecControlTrigger);
+ if (Diagnostics1MinControlId != 0xFF)
+ RemoveControlCallback(Diagnostics1MinControlId,Diagnostics_OneMinControlTrigger);
DiagnosticsControlId = 0xFF;
Diagnostics10MSControlId = 0xFF;
Diagnostics1SecControlId = 0xFF;
+ Diagnostics1MinControlId = 0xFF;
}
return OK;
@@ -848,7 +937,6 @@ uint32_t Diagnostics_TenMiliControlTrigger(uint32_t IfIndex, uint32_t ReadValue)
if (DiagnosticMode == Diagnostic_Extreme_Mode)
{
- //send message to the Millisec task
Message.messageId = DiagnosticsTenMiliTrigger;
Message.msglen = sizeof(DiagnosticsMessageStruc);
if (DiagnosticsMsgQ != NULL)
@@ -861,7 +949,6 @@ uint32_t Diagnostics_OneSecControlTrigger(uint32_t IfIndex, uint32_t ReadValue)
{
DiagnosticsMessageStruc Message;
- //send message to the Millisec task
Message.messageId = DiagnosticsOneSecTrigger;
Message.msglen = sizeof(DiagnosticsMessageStruc);
if (DiagnosticsMsgQ != NULL)
@@ -870,6 +957,18 @@ uint32_t Diagnostics_OneSecControlTrigger(uint32_t IfIndex, uint32_t ReadValue)
return OK;
}
+uint32_t Diagnostics_OneMinControlTrigger(uint32_t IfIndex, uint32_t ReadValue)
+{
+ DiagnosticsMessageStruc Message;
+
+ Message.messageId = DiagnosticsOneMinuteTrigger;
+ Message.msglen = sizeof(DiagnosticsMessageStruc);
+ if (DiagnosticsMsgQ != NULL)
+ Mailbox_post(DiagnosticsMsgQ , &Message, BIOS_NO_WAIT);
+
+
+ return OK;
+}
/******************************************************************************
* ======== messageTsk ========
* Task for this function is created statically. See the project's .cfg file.
@@ -893,11 +992,15 @@ void DiagnosticsTask(UArg arg0, UArg arg1)
Diagnostic100msecCollection();
break;
case DiagnosticsTenMiliTrigger:
- DiagnosticTenMsecCollection();
+ if (DiagnosticMode >= Diagnostic_Extreme_Mode)
+ DiagnosticTenMsecCollection();
break;
case DiagnosticsOneSecTrigger:
DiagnosticOneSecCollection();
break;
+ case DiagnosticsOneMinuteTrigger:
+ DiagnosticOneMinuteCollection();
+ break;
default:
break;
}
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c
index 14c083b4d..497556878 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c
@@ -27,6 +27,7 @@
#include "drivers/Motors/Motor.h"
#include "drivers/Valves/Valve.h"
#include "Drivers/I2C_Communication/DAC/blower.h"
+#include "drivers/Flash_ram/MCU_E2Prom.h"
#include "ids/ids_ex.h"
#include "General/process.h"
@@ -57,7 +58,7 @@ return OK;
uint32_t MotorHomingRequestFunc(MessageContainer* requestContainer)
{
uint32_t numberOfSteps = 0;
- uint32_t LoadArmRounds = (int)dryerbufferlength;
+ uint32_t LoadArmRounds = 0;
MessageContainer responseContainer;
@@ -66,6 +67,12 @@ uint32_t MotorHomingRequestFunc(MessageContainer* requestContainer)
MotorHomingResponse response = MOTOR_HOMING_RESPONSE__INIT;
TimerMotors_t MotorId = (TimerMotors_t)request->motortype;
+
+ if (dryerbufferlength)
+ LoadArmRounds = (int)dryerbufferlength;
+ else
+ MCU_E2PromRead(EEPROM_STORAGE_DRYER_CYCLES,&LoadArmRounds);
+
if (LoadArmRounds <= 2)
LoadArmRounds = 20;
diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
index 58d1e1c37..dcbd6b9b0 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
@@ -214,7 +214,7 @@ void LoadConfigurationParameters(ConfigurationParameters *Params)
EmbeddedParameters->generalparameters[7] = AutoHoming_JobEnd_PowerOn_off; //
}
EmbeddedParameters->has_currentalarmlowlimit = true;
- EmbeddedParameters->currentalarmlowlimit = 0.80;
+ EmbeddedParameters->currentalarmlowlimit = 0.77;
EmbeddedParameters->has_currentalarmhighlimit = true;
EmbeddedParameters->currentalarmhighlimit= 1.07;
EmbeddedParameters->has_ids_segmentrefilltimeout = true;
@@ -485,7 +485,7 @@ uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest)
Enable_MidTank_Pressure_Reading(Dispenser_i);
Valve_Set(IDS_Id_to_AirValve[Dispenser_i], Atm_MidTank_ON ); //Atm_MidTank_OFF/ON
}
- GenHWControlId = AddControlCallback( GenHWInitCallBackFunction, 2* eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
+ GenHWControlId = AddControlCallback(NULL, GenHWInitCallBackFunction, 2* eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
*/
ControlStart();
AlarmHandlingStart();
diff --git a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c
index ff4909438..4958139e6 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c
@@ -68,7 +68,7 @@ int MachineUpdateResponseFunc(void)
double dispcapacity = (1.00-(IDS_Dispenser_Data[i].consumedinnanolitter/5800000))*130*1000*1000;
IDS_Level[i].dispenserlevel = (int32_t)dispcapacity;
IDS_Level[i].has_midtanklevel = true;
- IDS_Level[i].midtanklevel = Get_MidTank_Int100_Sensor(i);
+ IDS_Level[i].midtanklevel = Get_MidTank_Int1000_Sensor(i);
MachineStatus.idspackslevels[MachineStatus.n_idspackslevels] = &IDS_Level[i];
MachineStatus.n_idspackslevels++;
}
diff --git a/Software/Embedded_SW/Embedded/Modules/General/Safety.c b/Software/Embedded_SW/Embedded/Modules/General/Safety.c
index a5a586e07..6a0b9a67b 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/Safety.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/Safety.c
@@ -33,7 +33,7 @@ bool AirFilterAlarmState = false;
bool WasteOverflowAlarmState = false;
void Safety_Init(void)
{
- SafetyControlId = AddControlCallback( Safety_Main_State, eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
+ SafetyControlId = AddControlCallback("Safety", Safety_Main_State, eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
//return;
}
uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag)
@@ -110,6 +110,10 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag)
//report dispenser over pressure
AlarmHandlingSetAlarm(EVENT_TYPE__DISPENSER_1_OVERPRESSURE+Disp_i, true);
DispenserAlarm[Disp_i] = EVENT_TYPE__DISPENSER_1_OVERPRESSURE+Disp_i;
+ if (DispenserAlarm[Disp_i] == false)
+ {
+ IDS_Dispenser_Alarm_On(Disp_i);
+ }
DispenserOverPressure[Disp_i] = true;
Report("Dispenser Safety - over pressure", __FILE__,__LINE__,Disp_i, RpFatalError, (int)(1000*GetDispenserPressure(Disp_i)), 0);
}
@@ -117,6 +121,10 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag)
{
AlarmHandlingSetAlarm(EVENT_TYPE__DISPENSER_1_UPPER_HARD_LIMIT+Disp_i, true);
DispenserAlarm[Disp_i] = EVENT_TYPE__DISPENSER_1_UPPER_HARD_LIMIT+Disp_i;
+ if (DispenserAlarm[Disp_i] == false)
+ {
+ IDS_Dispenser_Alarm_On(Disp_i);
+ }
DispenserOverPressure[Disp_i] = true;
Report("Dispenser upper hard limit", __FILE__,__LINE__,Disp_i, RpFatalError, Get_Notification_Disp_UP(Disp_i), 0);
}
@@ -124,12 +132,16 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag)
{
AlarmHandlingSetAlarm(EVENT_TYPE__DISPENSER_1_LOWER_HARD_LIMIT+Disp_i, true);
DispenserAlarm[Disp_i] = EVENT_TYPE__DISPENSER_1_LOWER_HARD_LIMIT+Disp_i;
+ if (DispenserAlarm[Disp_i] == false)
+ {
+ IDS_Dispenser_Alarm_On(Disp_i);
+ }
DispenserOverPressure[Disp_i] = true;
Report("Dispenser lower hard limit", __FILE__,__LINE__,Disp_i, RpFatalError, Get_Notification_Disp_Down(Disp_i), 0);
}
else
{
- Report("Dispenser unknown safety alarm", __FILE__,__LINE__,Disp_i, RpFatalError, 1-DispenserBypass, 0);
+ Report("Dispenser unknown safety alarm", __FILE__,__LINE__,Disp_i, RpFatalError,Get_Notification_Disp_Full(Disp_i), 0);
}
}
@@ -144,8 +156,11 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag)
{
if (Check_Disp_Safety_Stop_Indication(Disp_i) == false)
{
- //report dispenser over pressure
AlarmHandlingSetAlarm(DispenserAlarm[Disp_i], false);
+ if (DispenserAlarm[Disp_i] == true)
+ {
+ IDS_Dispenser_Alarm_Off(Disp_i);
+ }
DispenserAlarm[Disp_i] = 0;
DispenserOverPressure[Disp_i] = false;
}
diff --git a/Software/Embedded_SW/Embedded/Modules/General/buttons.c b/Software/Embedded_SW/Embedded/Modules/General/buttons.c
index d5ed5cef9..0a5cfc2f3 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/buttons.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/buttons.c
@@ -210,7 +210,7 @@ uint32_t Buttons_Init(void)
power.state = sttON; //sttOFF, sttON, sttDISABLE, sttENABLE, sttIDLE, sttJOGGING
power.count = 0;
- AddControlCallback( ButtonPowerCBFunction, BUTTONS_SAMPLE_TIME, ButtonPowerCallBackFunction, 0,0,0 ); // eFiftyMillisecond
+ AddControlCallback("ButtonPowerCB", ButtonPowerCBFunction, BUTTONS_SAMPLE_TIME, ButtonPowerCallBackFunction, 0,0,0 ); // eFiftyMillisecond
strcpy(jog.bttn_name, "jog");
jog.bttn_status = RELEASE; // 0=RELEASE 1=PRESS
@@ -220,7 +220,7 @@ uint32_t Buttons_Init(void)
jog.state = sttENABLE; // sttDISABLE, sttENABLE, sttJOGGING
jog.count = 0;
- AddControlCallback( ButtonJogCBFunction, BUTTONS_SAMPLE_TIME, ButtonJogCallBackFunction, 0,0,0 ); //
+ AddControlCallback("ButtonJogCB", ButtonJogCBFunction, BUTTONS_SAMPLE_TIME, ButtonJogCallBackFunction, 0,0,0 ); //
strcpy(load.bttn_name, "load");
load.bttn_status = RELEASE; // 0=RELEASE 1=PRESS
@@ -229,7 +229,7 @@ uint32_t Buttons_Init(void)
load.state = sttRDY; //
load.count = 0;
- AddControlCallback( ButtonLoadCBFunction, BUTTONS_SAMPLE_TIME, ButtonLoadCallBackFunction, 0,0,0 ); //
+ AddControlCallback("ButtonLoadCB", ButtonLoadCBFunction, BUTTONS_SAMPLE_TIME, ButtonLoadCallBackFunction, 0,0,0 ); //
return OK;
}
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
index 2eab5225d..a086fe898 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
@@ -276,7 +276,7 @@ void HeatersControlStart(void)
{
if (ControlIdtoInternalId [i] == 0xFF)
{
- ControlIdtoInternalId [i] = AddControlCallback( HeatersTestInternalAlarmsCBFunction, eOneSecond,MillisecGetTemperatures,(IfTypeHeaters*0x100+i),0,0);
+ ControlIdtoInternalId [i] = AddControlCallback("Internal Heaters", HeatersTestInternalAlarmsCBFunction, eOneSecond,MillisecGetTemperatures,(IfTypeHeaters*0x100+i),0,0);
}
}
}
@@ -535,7 +535,7 @@ void PrepareACHeater(int HeaterId,uint32_t Frequency, uint32_t SetTemperatue)
{
if (ControlIdtoHeaterId [HeaterId] == 0xFF)
{
- ControlIdtoHeaterId [HeaterId] = AddControlCallback( HeaterControlCBFunction, Frequency/*eOneSecond*/,MillisecGetTemperatures,(IfTypeHeaters*0x100+HeaterId),DryerInternalPT100Id,0);
+ ControlIdtoHeaterId [HeaterId] = AddControlCallback("HeatersControl", HeaterControlCBFunction, Frequency/*eOneSecond*/,MillisecGetTemperatures,(IfTypeHeaters*0x100+HeaterId),DryerInternalPT100Id,0);
//HeaterPreviousRead[HeaterId] = MillisecGetTemperatures(DryerInternalPT100Id);
HeaterPreviousRead[HeaterId] = MillisecGetTemperatures(HeaterId2PT100Id[HeaterId]);//
//ReportWithPackageFilter(HeatersFilter,"PrepareHeater AC Read", __FILE__,HeaterId, SetTemperatue, RpWarning,HeaterPreviousRead[HeaterId], 0);
@@ -579,7 +579,7 @@ void PrepareACHeater(int HeaterId,uint32_t Frequency, uint32_t SetTemperatue)
AlarmHandlingSetAlarm(HeaterEventType[HeaterId], false);
if (ControlIdtoMaxHeaterId [HeaterId] == 0xFF)
- ControlIdtoMaxHeaterId [HeaterId] = AddControlCallback( DcHeaterMaxTempCBFunction, eOneSecond,MillisecGetTemperatures,(IfTypeHeaters*0x100+HeaterId),HeaterId2PT100Id[HeaterId],0);
+ ControlIdtoMaxHeaterId [HeaterId] = AddControlCallback("HeatersMax", DcHeaterMaxTempCBFunction, eOneSecond,MillisecGetTemperatures,(IfTypeHeaters*0x100+HeaterId),HeaterId2PT100Id[HeaterId],0);
Enable_Reading_Heaters_Current(HeaterId2CurrentId[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain]);
Enable_Reading_Heaters_Current(HeaterId2CurrentId[HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary]);
@@ -587,9 +587,9 @@ void PrepareACHeater(int HeaterId,uint32_t Frequency, uint32_t SetTemperatue)
HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain, 0);
HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary, 0);
if (MainDryerHeaterMaxTempControl == 0xFF)
- MainDryerHeaterMaxTempControl = AddControlCallback( HeaterMaxTempCBFunction, eOneSecond,MillisecGetTemperatures,(IfTypeHeaters*0x100+HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain),HeaterId2PT100Id[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain],0);
+ MainDryerHeaterMaxTempControl = AddControlCallback("HeatersMax", HeaterMaxTempCBFunction, eOneSecond,MillisecGetTemperatures,(IfTypeHeaters*0x100+HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain),HeaterId2PT100Id[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain],0);
if (SecondDryerHeaterMaxTempControl == 0xFF)
- SecondDryerHeaterMaxTempControl = AddControlCallback( HeaterMaxTempCBFunction, eOneSecond,MillisecGetTemperatures,(IfTypeHeaters*0x100+HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary),HeaterId2PT100Id[HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary],0);
+ SecondDryerHeaterMaxTempControl = AddControlCallback("HeatersMax", HeaterMaxTempCBFunction, eOneSecond,MillisecGetTemperatures,(IfTypeHeaters*0x100+HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary),HeaterId2PT100Id[HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary],0);
//InitialHeating = true;
HeaterReady[HeaterId] = false;
HeaterAtTemp[HeaterId] = false;
@@ -616,7 +616,7 @@ void PrepareACHeater(int HeaterId,uint32_t Frequency, uint32_t SetTemperatue)
int PrepareDCHeater(int HeaterId, uint32_t Frequency, uint32_t SetTemperatue)
{
if (DisasterControlId == 0xFF)
- DisasterControlId = AddControlCallback( HeatersDisasterControl, eOneSecond,TemplateDataReadCBFunction,0,0, 0);
+ DisasterControlId = AddControlCallback("Heaters Disaster", HeatersDisasterControl, eOneSecond,TemplateDataReadCBFunction,0,0, 0);
HeaterPreviousRead[HeaterId] = MillisecGetTemperatures(HeaterId2PT100Id[HeaterId]);//MillisecGetTemperatures(HeaterId2PT100Id[HeaterId]);
if((HeaterPreviousRead[HeaterId]<=MINIMUM_HEATER_READ*100)||(MAXIMUM_HEATER_READ*100<=HeaterPreviousRead[HeaterId]))
@@ -639,7 +639,7 @@ int PrepareDCHeater(int HeaterId, uint32_t Frequency, uint32_t SetTemperatue)
return ERROR;
}
if (ControlIdtoHeaterId [HeaterId] == 0xFF)
- ControlIdtoHeaterId [HeaterId] = AddControlCallback( DCHeaterControlCBFunction, Frequency/*eOneSecond*/,MillisecGetTemperatures,(IfTypeHeaters*0x100+HeaterId),HeaterId2PT100Id[HeaterId],0);
+ ControlIdtoHeaterId [HeaterId] = AddControlCallback("DCHeatersControl", DCHeaterControlCBFunction, Frequency/*eOneSecond*/,MillisecGetTemperatures,(IfTypeHeaters*0x100+HeaterId),HeaterId2PT100Id[HeaterId],0);
//HeaterPIDConfig[HeaterId].m_params.dt *=10;
//DCInitialHeating[HeaterId] = true;
HeaterReady[HeaterId] = false;
@@ -655,7 +655,7 @@ int PrepareDCHeater(int HeaterId, uint32_t Frequency, uint32_t SetTemperatue)
//ReportWithPackageFilter(HeatersFilter,"PrepareHeater Read", __FILE__,HeaterId, SetTemperatue, RpWarning,HeaterPreviousRead[HeaterId], 0);
if (ControlIdtoMaxHeaterId [HeaterId] == 0xFF)
- ControlIdtoMaxHeaterId [HeaterId] = AddControlCallback( DcHeaterMaxTempCBFunction, eOneSecond,MillisecGetTemperatures,(IfTypeHeaters*0x100+HeaterId),HeaterId2PT100Id[HeaterId],0);
+ ControlIdtoMaxHeaterId [HeaterId] = AddControlCallback("DcHeatersMax", DcHeaterMaxTempCBFunction, eOneSecond,MillisecGetTemperatures,(IfTypeHeaters*0x100+HeaterId),HeaterId2PT100Id[HeaterId],0);
return OK;
}
@@ -697,7 +697,7 @@ uint32_t PrepareHeater(int HeaterId, uint32_t SetTemperatue)
int band = 10;
if (HeaterControl[HeaterId].outputproportionalband)
{
- band = HeaterControl[HeaterId].outputproportionalband+2; //sometimes the dryer heat drops after PID starts.
+ band = HeaterControl[HeaterId].outputproportionalband+2; //sometimes after PID is started the temp is falling a little bit. we want to avoid an alarm
}
temp = SetTemperatue*(100+band);
//temp = SetTemperatue*110.0;
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h
index a919ce4e1..3e2cf6ecb 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h
@@ -15,6 +15,7 @@ extern uint32_t DispenserPrepareTimeLag ;
extern int32_t CurrentDispenserSpeed[MAX_SYSTEM_DISPENSERS];
extern uint32_t DispenserIdToMotorId[MAX_SYSTEM_DISPENSERS];
+extern bool JobStartStopBackLash[MAX_SYSTEM_DISPENSERS];
extern float DispenserPressure[MAX_SYSTEM_DISPENSERS];
uint32_t DispenserConfigMessage(HardwareDispenser * request);
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c
index b9ab97714..9c15885fc 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c
@@ -111,7 +111,7 @@ uint32_t IDS_Dispenser_Build_Pressure_Callback(uint32_t DispenserId, uint32_t Re
{
Report("Cannot Add control callback",__FILE__,(int)DispenserId,GetControlCallbackFuncPtr(DispenserControlId[DispenserId]),RpWarning,(int)DispenserControlId[DispenserId],0);
}
- DispenserControlId[DispenserId] = AddControlCallback( IDS_Dispenser_Build_Pressure_Callback, DispenserPrepareTimeLag,TemplateDataReadCBFunction ,DispenserId, DispenserId, 0 );
+ DispenserControlId[DispenserId] = AddControlCallback(NULL, IDS_Dispenser_Build_Pressure_Callback, DispenserPrepareTimeLag,TemplateDataReadCBFunction ,DispenserId, DispenserId, 0 );
if (DispenserControlId[DispenserId] == 0xFF)
Report("Add control callback failed",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)DispenserControlId[DispenserId],0);
else
@@ -156,7 +156,7 @@ uint32_t IDS_Dispenser_Build_Pressure_Callback(uint32_t DispenserId, uint32_t Re
if (DispenserControlId[DispenserId] != 0xFF)
Report("Cannot Add control callback",__FILE__,(int)DispenserId,GetControlCallbackFuncPtr(DispenserControlId[DispenserId]),RpWarning,(int)DispenserControlId[DispenserId],0);
- DispenserControlId[DispenserId] = AddControlCallback( IDS_Dispenser_StopMotorCallback, CloseValveTimeout, TemplateDataReadCBFunction,DispenserId, DispenserId, 0 );
+ DispenserControlId[DispenserId] = AddControlCallback(NULL, IDS_Dispenser_StopMotorCallback, CloseValveTimeout, TemplateDataReadCBFunction,DispenserId, DispenserId, 0 );
if (DispenserControlId[DispenserId] == 0xFF)
Report("Add control callback failed",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)DispenserControlId[DispenserId],0);
else
@@ -207,7 +207,7 @@ uint32_t IDS_Dispenser_Start_Motor_and_Open_Valve(int DispenserId, int MotorSpee
Report("Cannot Add control callback",__FILE__,(int)DispenserId,GetControlCallbackFuncPtr(DispenserControlId[DispenserId]),RpWarning,(int)DispenserControlId[DispenserId],0);
//Report("IDS_Dispenser_Start_Motor_and_Open_Valve",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)msec_millisecondCounter,0);
- DispenserControlId[DispenserId] = AddControlCallback( IDS_Dispenser_OpenValveCallback, OpenValveTimeout, TemplateDataReadCBFunction,DispenserId, DispenserId, 0 );
+ DispenserControlId[DispenserId] = AddControlCallback(NULL, IDS_Dispenser_OpenValveCallback, OpenValveTimeout, TemplateDataReadCBFunction,DispenserId, DispenserId, 0 );
if (DispenserControlId[DispenserId] == 0xFF)
Report("Add control callback failed",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)DispenserControlId[DispenserId],0);
//else
@@ -235,6 +235,12 @@ void IDS_Dispenser_Content_Init (void)
HW_Motor_Id = DispenserIdToMotorId[i];
dispenser_running_data__init(&IDS_Dispenser_Data[i]);
dispenserdata[i] = &IDS_Dispenser_Data[i];
+ IDS_Dispenser_Data[i].has_consumedinnanolitter = true;
+ IDS_Dispenser_Data[i].has_direction = true;
+ IDS_Dispenser_Data[i].has_microsteps = true;
+ IDS_Dispenser_Data[i].has_nanolitterperpulse = true;
+ IDS_Dispenser_Data[i].has_numberofrefills = true;
+ IDS_Dispenser_Data[i].has_totalconsumedinnanolitter = true;
IDS_Dispenser_Data[i].nanolitterperpulse = DEFAULT_NANOLITER_PER_PULSE;
IDS_Dispenser_Data[i].microsteps = MotorsCfg[HW_Motor_Id].microstep;
}
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c
index 1302d262a..f3528d4c8 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c
@@ -136,7 +136,7 @@ uint32_t IDS_HomeDispenserWaitForHomingEnd(uint32_t DispenserId, uint32_t timeo
DispenserBacklashControlId[DispenserId] = 0xFF;
//return ERROR;
}
- DispenserBacklashControlId[DispenserId] = AddControlCallback( IDS_HomeDispenserWaitForHomingEnd,eOneSecond , TemplateDataReadCBFunction,DispenserId,0, 0 );
+ DispenserBacklashControlId[DispenserId] = AddControlCallback(NULL, IDS_HomeDispenserWaitForHomingEnd,eOneSecond , TemplateDataReadCBFunction,DispenserId,0, 0 );
if ( DispenserBacklashControlId[DispenserId] == 0xFF)
return ERROR;
@@ -146,7 +146,7 @@ uint32_t IDS_HomeDispenserWaitForHomingEnd(uint32_t DispenserId, uint32_t timeo
uint32_t IDS_HomeDispenserBackMoveCallback(uint32_t motorId, uint32_t ReadValue)
{
uint8_t DispenserId = motorId-HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1;
- if ((GetDispenserPressure(DispenserId)>=InitialDispenserPressure)||(DispenserHomingTime[DispenserId]>InitialDispenserTimeout))
+ if ((GetDispenserPressure(DispenserId)>=InitialDispenserPressure)||(DispenserHomingTime[DispenserId]>InitialDispenserTimeout)||(JobStartStopBackLash[DispenserId] == true))
{
MotorStop(motorId,Hard_Hiz);
CurrentDispenserSpeed[DispenserId] = 0;
@@ -161,6 +161,8 @@ uint32_t IDS_HomeDispenserBackMoveCallback(uint32_t motorId, uint32_t ReadValue)
Valve_Set(IDS_Id_to_AirValve[DispenserId], Atm_MidTank_OFF);
Disable_MidTank_Pressure_Reading(DispenserId);
+ if (JobStartStopBackLash[DispenserId] == true)
+ JobStartStopBackLash[DispenserId] = false;
Report("End backlash",__FILE__,millisecondCounter,(int)DispenserId,RpWarning,(int)DispenserHomingTime[DispenserId],0);
if (SafeRemoveControlCallback(DispenserHomingControlId[DispenserId], IDS_HomeDispenserBackMoveCallback )==OK)
DispenserHomingControlId[DispenserId] = 0xFF;
@@ -191,7 +193,7 @@ uint32_t IDS_HomeDispenserCallback(uint32_t motorId, uint32_t ReadValue)
// HomingActive[DispenserId]= false;
IDS_Dispenser_RefillEnded ( DispenserId, MotorsCfg[motorId].microstep);
Report("Start backlash",__FILE__,millisecondCounter,(int)DispenserId,RpWarning,(int)DispenserHomingTime[DispenserId],0);
- DispenserHomingControlId[DispenserId] = AddControlCallback( IDS_HomeDispenserBackMoveCallback, InitialDispenserTimeLag, GetDispenserPressure,motorId, motorId, 0 );
+ DispenserHomingControlId[DispenserId] = AddControlCallback(NULL, IDS_HomeDispenserBackMoveCallback, InitialDispenserTimeLag, GetDispenserPressure,motorId, motorId, 0 );
MotorSetDirection(motorId,MotorsCfg[motorId].directionthreadwize);
Task_sleep(10);
MotorSetSpeed(motorId, InitialDispenserSpeed);
@@ -213,7 +215,7 @@ uint32_t IDS_HomeDispenser (uint32_t DispenserId, uint32_t speed , callback_fptr
}
if (Get_MidTank_Pressure_Sensor(DispenserId)<0.2)
{
- Report("IDS_HomeDispenser - Midtank is empty",__FILE__,Get_MidTank_Int100_Sensor(DispenserId),(int)DispenserId,RpWarning,LIMIT,0);
+ Report("IDS_HomeDispenser - Midtank is empty",__FILE__,Get_MidTank_Int1000_Sensor(DispenserId),(int)DispenserId,RpWarning,LIMIT,0);
return ERROR;
}
//if Safety is active
@@ -363,7 +365,7 @@ uint32_t IDS_StopHomeDispenserBuildPressure (uint32_t DispenserId)
}
// HomingActive[DispenserId]= false;
Report("Start backlash",__FILE__,millisecondCounter,(int)DispenserId,RpWarning,(int)DispenserHomingTime[DispenserId],0);
- DispenserHomingControlId[DispenserId] = AddControlCallback( IDS_HomeDispenserBackMoveCallback, InitialDispenserTimeLag, GetDispenserPressure,motorId, motorId, 0 );
+ DispenserHomingControlId[DispenserId] = AddControlCallback("DispenserBackLash", IDS_HomeDispenserBackMoveCallback, InitialDispenserTimeLag, GetDispenserPressure,motorId, motorId, 0 );
Task_sleep(10);
MotorSetDirection(motorId,MotorsCfg[motorId].directionthreadwize);
Task_sleep(10);
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
index 791b3c47b..1bab2c65d 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
@@ -55,6 +55,7 @@ uint32_t IDS_Valve_DistanceToSpoolReady(uint32_t deviceID, uint32_t ReadValue);
uint32_t IDS_Valve_PresegmentReady(uint32_t deviceID, uint32_t ReadValue);
uint32_t IDSBrushStopRestartCallback(uint32_t IfIndex, uint32_t readValue);
//bool IDS_isDispenserUsedNextSegment(void *JobDetails,int DispenserId, int SegmentId);
+bool JobStartStopBackLash[MAX_SYSTEM_DISPENSERS] = {false,false,false,false,false,false,false,false};
/******************** GLOBAL PARAMETERS ********************************************/
DispenserControlConfig_t DispenserControlConfig[MAX_SYSTEM_DISPENSERS];
uint32_t ControlIdtoDispenserId [MAX_SYSTEM_DISPENSERS] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
@@ -549,6 +550,7 @@ c. Go to step 2.a x Segment.BrushStopsCount.
if (DispenserUsedInJob[i] == true) //we actually should check for all dispensers
{
IDS_StopHomeDispenser(i);
+ JobStartStopBackLash[i] = true;
NumOfActiveDispensers++;
}
else
@@ -585,7 +587,7 @@ c. Go to step 2.a x Segment.BrushStopsCount.
}
}
DispenserBuildTimeCounter = 0;
- DispenserPrepareControlId = AddControlCallback( IDS_Prepare_Callback, PRESSURE_READ_TIME_GAP,TemplateDataReadCBFunction ,0, 0, 0 );
+ DispenserPrepareControlId = AddControlCallback(NULL, IDS_Prepare_Callback, PRESSURE_READ_TIME_GAP,TemplateDataReadCBFunction ,0, 0, 0 );
setRapidPressureRead(true);
}
@@ -978,7 +980,7 @@ uint32_t IDSPreSegmentState(void *SegmentDetails, int SegmentId)
lInterSegmentLength = ((IntersegmentLength*100)*1000/dyeingspeed);
lInterSegmentLength-=(lInterSegmentLength%100); //round to a 100 multiplication
InterSegmentStepsCount = 0;
- DispenserPreSegmentControlId = AddControlCallback( IDSPreSegmentStateCallbackRunner, 100,TemplateDataReadCBFunction ,0, 0, 0 );
+ DispenserPreSegmentControlId = AddControlCallback(NULL,IDSPreSegmentStateCallbackRunner, 100,TemplateDataReadCBFunction ,0, 0, 0 );
if (DispenserPreSegmentControlId == 0xFF)
{
Report("Add control callback failed",__FILE__,__LINE__,(int)100,RpWarning,(int)0,0);
@@ -1256,7 +1258,7 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId)
JobBrushStopId++;
if ((BrushStopTime)&&(SegmentNumOfBrushStops > 1))
{
- BrushStopControlId = AddControlCallback( IDSBrushStopRestartCallback, BrushStopTime,TemplateDataReadCBFunction ,SegmentDetails, 0, 0 );
+ BrushStopControlId = AddControlCallback(NULL, IDSBrushStopRestartCallback, BrushStopTime,TemplateDataReadCBFunction ,SegmentDetails, 0, 0 );
if (BrushStopControlId == 0xFF)
{
Report("Add control callback failed",__FILE__,__LINE__,(int)BrushStopTime,RpWarning,(int)0,0);
@@ -1327,7 +1329,7 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId)
lInterSegmentLength = (dryerbufferCentimeters*1000/dyeingspeed);
lInterSegmentLength-=(lInterSegmentLength%100); //round to a 100 multiplication
InterSegmentStepsCount = 0;
- DispenserPreSegmentControlId = AddControlCallback( IDSPreSegmentStateCallbackRunner, 100,TemplateDataReadCBFunction ,0, 0, 0 );
+ DispenserPreSegmentControlId = AddControlCallback(NULL, IDSPreSegmentStateCallbackRunner, 100,TemplateDataReadCBFunction ,0, 0, 0 );
if (DispenserPreSegmentControlId == 0xFF)
{
Report("Add control callback failed",__FILE__,__LINE__,(int)100,RpWarning,(int)0,0);
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
index 8f9628f20..79e4b202a 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
@@ -16,8 +16,6 @@
#include "drivers/ADC_Sampling/adc.h"
#include "Drivers/I2C_Communication/Head_Card/PT100/PT100_ADC.h"
-#include "Drivers/I2C_Communication/Head_Card/Fan/fan_click.h"
-#include "Drivers/I2C_Communication/Head_Card/Fan/Head_Fan.h"
#include "drivers/Motors/Motor.h"
#include "drivers/FPGA/FPGA_SPI_Comm.h"
#include "Modules/IFS/ifs.h"
@@ -25,10 +23,6 @@
//#include "graphics_adapter.h"
extern uint8_t Input_Voltage;
extern uint8_t Test_Read_Buf[4];
-
-extern uint8_t Head_Fan_PWM_1_Command;
-extern uint16_t Head_Fan_Tach[2];
-
void Stub_ProgressRequest(MessageContainer* requestContainer)
{
MessageContainer responseContainer;
@@ -79,16 +73,6 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
}
else
- if((request->amount == 0xFAC) /*&& (request->delay == 0xFAC)*/) //measured sensor voltage without flow (orifice flow meter)
- {
- Head_Fan_PWM_1_Command = (request->delay & 0xFF) ;
- Test_fan_Click();
- //response.progress = Fan_Click_Info.Product_ID;
- response.progress = Head_Fan_Tach[0];
- response.has_progress = true;
-
- }
- else
if((request->amount == 0x0A) && ((request->delay >= 0) && (request->delay < 8))) //read the midtank calibration
{
response.progress = Initial_Offset_A[request->delay];
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
index 5a1bb9063..50fad6503 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
@@ -29,6 +29,7 @@
#include "drivers/I2C_Communication/DAC/Blower.h"
#include "drivers/SSI_Comm/Dancer/Dancer.h"
#include "drivers/motors/motor.h"
+#include "drivers/Flash_ram/MCU_E2Prom.h"
#include "PMR/Stubs/StubHeatingTestRequest.pb-c.h"
#include "PMR/Stubs/StubHeatingTestResponse.pb-c.h"
@@ -78,7 +79,7 @@
uint32_t LoadArmBackLash;
}LoadArmInfoStruc;
LoadArmInfoStruc LoadArmInfo;
- char LoadArmPath[50] = "0://SysInfo//LoadArm.cfg";
+ //char LoadArmPath[50] = "0://SysInfo//LoadArm.cfg";
//RUN MOTOR TO SWITCH WITH TIMEOUT
//RUN MOTOR TO BREAK SENSOR
@@ -96,14 +97,21 @@
}
uint32_t Thread_Load_Init(void)
{
- void* buffer = NULL;
- uint32_t Bytes = 0;
- FRESULT Fresult = FR_OK;
+ //void* buffer = NULL;
+ //uint32_t Bytes = 0;
+ //FRESULT Fresult = FR_OK;
REPORT_MSG(LoadStages, "Thread Load State Machine step");
LoadArmInfo.LoadArmBackLash = 5;
- LoadArmInfo.LoadArmRounds = 0xFF;
- Fresult = f_mkdir(SW_INFO_DIR);
+ //LoadArmInfo.LoadArmRounds = 0xFF;
+ //EEPROM_STORAGE_DRYER_CYCLES
+ MCU_E2PromRead(EEPROM_STORAGE_DRYER_CYCLES,&LoadArmInfo.LoadArmRounds);
+ if (LoadArmInfo.LoadArmRounds <= 2)
+ LoadArmInfo.LoadArmRounds = 20;
+ MCU_E2PromRead(EEPROM_STORAGE_DRYER_CYCLES,&LoadArmInfo.LoadArmRounds);
+ Report("MotorMovetoEncoderPosition",__FILE__,__LINE__,LoadArmInfo.LoadArmRounds,RpWarning,LoadArmInfo.LoadArmBackLash,0);
+
+ /*Fresult = f_mkdir(SW_INFO_DIR);
if ((Fresult == FR_OK)||(Fresult == FR_EXIST))
{
@@ -114,9 +122,9 @@
memcpy (&LoadArmInfo,buffer,sizeof(LoadArmInfo));
free (buffer);
}
- }
+ }*/
- Report("Thread_Load_Init",__FILE__,__LINE__,LoadArmInfo.LoadArmBackLash,RpMessage,LoadArmInfo.LoadArmRounds,0);
+ Report("Thread_Load_Init",__FILE__,__LINE__,LoadArmInfo.LoadArmRounds,RpMessage,LoadArmInfo.LoadArmRounds,0);
StopInitSequence();
memcpy (&ProcessParametersRecover,&ProcessParametersKeep,sizeof(ProcessParameters));
//NumberOfDrierLoaderCycles = loadLoadArmParameters();
@@ -175,6 +183,8 @@
{
Report("Thread_Load_Set_Load_Arm_To_Start_Position_Callback",__FILE__,__LINE__,LoadStages,RpMessage,CallbackCounter,0);
//storeLoadArmParameters();
+ MotorMove(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].directionthreadwize,LoadArmInfo.LoadArmBackLash );
+
SetMotHome(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM); //set this point as the spool home
LoadStages++;
ThreadLoadStateMachine(LoadStages);
@@ -228,7 +238,7 @@
}
else //number of circles is not known - compare to position of the motor to verify location at the stopper
{
- Report("Thread_Load_Set_Load_Arm_To_Start_Position",__FILE__,__LINE__,LoadStages,RpMessage,NumberOfDrierLoaderCycles,0);
+ Report("Thread_Load_Set_Load_Arm_To_Start_Position unknown cycles",__FILE__,__LINE__,LoadStages,RpMessage,NumberOfDrierLoaderCycles,0);
status |= MotorMoveToStopper(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM, (1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].directionthreadwize),
MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulseperround/2, Thread_Load_Set_Load_Arm_To_Stopper_Callback,LoadArmInfo.LoadArmBackLash,1000);
@@ -251,6 +261,15 @@
{
Report("Thread_Load_HomingCallback",__FILE__,__LINE__,LoadStages,RpMessage,CallbackCounter,0);
// REPORT_MSG(MotorId, "Thread_Load_HomingCallback Motor Id");
+ if ((LoadStages == THREAD_LOAD_CLOSE_ROCKERS)||(LoadStages == THREAD_LOAD_LIFT_ROCKERS))
+ {
+ if((MotorId == HARDWARE_MOTOR_TYPE__MOTO_RLOADING)||(MotorId == HARDWARE_MOTOR_TYPE__MOTO_LLOADING))
+ {
+ MotorSetMicroStep(MotorId, keepmicrostep);
+ MotorSetKvalRun(MotorId, keepkvalrun);
+ }
+ }
+
if (CallbackCounter)
{
CallbackCounter--;
@@ -269,13 +288,6 @@
else
{
LoadStages++;
- if (LoadStages == THREAD_LOAD_CLOSE_ROCKERS)
- {
- MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, keepmicrostep);
- MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, keepmicrostep);
- MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, keepkvalrun);
- MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, keepkvalrun);
- }
if (LoadStages == THREAD_LOAD_CLOSE_DANCERS)
{
MotorSetKvalHold(HARDWARE_MOTOR_TYPE__MOTO_RDANCER, keepkvalhold);
@@ -331,6 +343,10 @@
{
keepmicrostep = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].microstep;
keepkvalrun = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].kvalrun;
+ if (keepkvalrun>=25)
+ keepkvalrun = 25;
+ Report("Thread_Load_Lift_Rockers",__FILE__,__LINE__,keepkvalrun,RpMessage,keepmicrostep,0);
+
REPORT_MSG(LoadStages, "Thread Load State Machine step");
MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 8);
MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 8);
@@ -360,6 +376,17 @@
}
uint32_t Thread_Load_Close_Rockers(void)
{
+ keepmicrostep = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].microstep;
+ keepkvalrun = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].kvalrun;
+ if (keepkvalrun>=25)
+ keepkvalrun = 25;
+ Report("Thread_Load_Close_Rockers",__FILE__,__LINE__,keepkvalrun,RpMessage,keepmicrostep,0);
+
+ MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 8);
+ MotorSetMicroStep(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 8);
+ MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 70);
+ MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 70);
+
REPORT_MSG(LoadStages, "Thread Load State Machine step");
CallbackCounter++;
MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_RLOADING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].directionthreadwize, 250, Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_RLOADING], Thread_Load_HomingCallback,25000);
@@ -464,15 +491,19 @@
uint32_t Thread_Load_Dryer_Loading(void)
{
REPORT_MSG(LoadStages, "Thread Load State Machine step");
- LoadArmInfo.LoadArmRounds = (int)dryerbufferlength;
- if (LoadArmInfo.LoadArmRounds <= 2)
- LoadArmInfo.LoadArmRounds = 20;
+
+ if (dryerbufferlength)
+ LoadArmInfo.LoadArmRounds = (int)dryerbufferlength;
+ //if (LoadArmInfo.LoadArmRounds <= 2)
+ // LoadArmInfo.LoadArmRounds = 20;
float numberOfSteps = 0;
//Start Feeder Pid, Rotate Loading Arm Counter Thread Direction X Circles According To Rml. Feeder Speed Is 40
SetOriginMotorSpeed(19);
// OriginalMotorSpd_2PPS[FEEDER_MOTOR] = 1000;
// CurrentControlledSpeed[FEEDER_MOTOR] = 1000;
+ MCU_E2PromProgram(EEPROM_STORAGE_DRYER_CYCLES,LoadArmInfo.LoadArmRounds);
+
numberOfSteps = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulseperround*LoadArmInfo.LoadArmRounds*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].microstep*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulleyradius;
numberOfSteps -= 100;
//numberOfSteps = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulseperround*3.3*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].microstep*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulleyradius;
@@ -498,7 +529,7 @@
MotorSetMaxSpeed (HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM, MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulseperround/4*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulleyradius);
- LoadingControlId = AddControlCallback(ThreadLoadControlCBFunction, eOneMillisecond,Control_Read_Dancer_Position,(IfTypeThread*0x100+FEEDER_MOTOR),FEEDER_DANCER,FEEDER_MOTOR);
+ LoadingControlId = AddControlCallback(NULL,ThreadLoadControlCBFunction, eOneMillisecond,Control_Read_Dancer_Position,(IfTypeThread*0x100+FEEDER_MOTOR),FEEDER_DANCER,FEEDER_MOTOR);
Report("AddControlCallback feeder",__FILE__,__LINE__,LoadingControlId,RpMessage,IfTypeThread*0x100+FEEDER_MOTOR,0);
CallbackCounter++;
Report("Thread_Load_Dryer_Loading",__FILE__,__LINE__,LoadStages,RpMessage,CallbackCounter,0);
@@ -507,7 +538,7 @@
//Keep Notation How Many Rotations In The Dryer
//LoadArmInfo.LoadArmBackLash = 0;
- LoadArmInfo.LoadArmRounds = (int)dryerbufferlength;
+ //LoadArmInfo.LoadArmRounds = (int)dryerbufferlength;
//FileWrite(&LoadArmInfo, sizeof(LoadArmInfo),LoadArmPath,BIOS_WAIT_FOREVER);
return OK;
}
@@ -526,7 +557,7 @@
{
REPORT_MSG(LoadStages, "Thread Load State Machine step");
ThreadJoggingFunc(20);
- LoadingControlId = AddControlCallback(Thread_Load_Jog_ThreadStop, eOneSecond*5,Control_Read_Dancer_Position,(IfTypeThread*0x100+FEEDER_MOTOR),FEEDER_DANCER,FEEDER_MOTOR);
+ LoadingControlId = AddControlCallback(NULL,Thread_Load_Jog_ThreadStop, eOneSecond*5,Control_Read_Dancer_Position,(IfTypeThread*0x100+FEEDER_MOTOR),FEEDER_DANCER,FEEDER_MOTOR);
return OK;
}
uint32_t Thread_Load_End(void)
@@ -592,7 +623,7 @@
MotorControlConfig[POOLER_MOTOR].m_SetParam = 0;//need to update SetParams on presegment stage
MotorSetDirection(HARDWARE_MOTOR_TYPE__MOTO_LDRIVING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LDRIVING].directionthreadwize);
- PullerControlId = AddControlCallback(ThreadLoadControlCBFunction, eOneMillisecond,Control_Read_Dancer_Position,(IfTypeThread*0x100+POOLER_MOTOR),POOLER_DANCER,POOLER_MOTOR);
+ PullerControlId = AddControlCallback(NULL,ThreadLoadControlCBFunction, eOneMillisecond,Control_Read_Dancer_Position,(IfTypeThread*0x100+POOLER_MOTOR),POOLER_DANCER,POOLER_MOTOR);
Report("AddControlCallback Puller",__FILE__,__LINE__,PullerControlId,RpMessage,IfTypeThread*0x100+POOLER_MOTOR,0);
////////////////////////
MotorControlConfig[WINDER_MOTOR].m_params.MAX = 1;
@@ -614,7 +645,7 @@
MotorControlConfig[WINDER_MOTOR].m_SetParam = 0;//need to update SetParams on presegment stage
MotorSetDirection(HARDWARE_MOTOR_TYPE__MOTO_WINDER,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_WINDER].directionthreadwize);
- WinderControlId = AddControlCallback(ThreadLoadControlCBFunction, eOneMillisecond,Control_Read_Dancer_Position,(IfTypeThread*0x100+WINDER_MOTOR),WINDER_DANCER,WINDER_MOTOR);
+ WinderControlId = AddControlCallback(NULL,ThreadLoadControlCBFunction, eOneMillisecond,Control_Read_Dancer_Position,(IfTypeThread*0x100+WINDER_MOTOR),WINDER_DANCER,WINDER_MOTOR);
Report("AddControlCallback Winder",__FILE__,__LINE__,WinderControlId,RpMessage,IfTypeThread*0x100+WINDER_MOTOR,0);
////////////////////////
@@ -631,9 +662,9 @@
MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulseperround/4, Thread_Load_Set_Load_Arm_To_Stopper_Callback,LoadArmInfo.LoadArmBackLash,1000);
//Keep Notation How Many Rotations In The Dryer
- //LoadArmInfo.LoadArmBackLash = 0;
+ LoadArmInfo.LoadArmBackLash = 5;
LoadArmInfo.LoadArmRounds = (int)dryerbufferlength;
- FileWrite(&LoadArmInfo, sizeof(LoadArmInfo),LoadArmPath,BIOS_WAIT_FOREVER);
+ //FileWrite(&LoadArmInfo, sizeof(LoadArmInfo),LoadArmPath,BIOS_WAIT_FOREVER);
return OK;
}
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
index 9d57cd29f..a93387e0a 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
@@ -547,7 +547,7 @@ uint32_t Winder_Presegment(void *SegmentDetails, uint32_t SegmentId)
}
if (SegmentId == 0)
{
- ScrewControlId = AddControlCallback(Screw100msecDirectionChange, eHundredMillisecond,TemplateDataReadCBFunction,0,0,0);
+ ScrewControlId = AddControlCallback("screw control",Screw100msecDirectionChange, eHundredMillisecond,TemplateDataReadCBFunction,0,0,0);
}
PreSegmentReady(Module_Winder,ModuleDone);
@@ -583,7 +583,7 @@ uint32_t WinderDistanceToSpoolState(void )
double DTS_Time = (dryerbufferCentimeters/dyeingspeed)*1000;//distance to spool time in milliseconds
REPORT_MSG ((int)DTS_Time,"WinderDistanceToSpoolState");
- ScrewDTSControlId = AddControlCallback(ScrewDTSCallback, DTS_Time-WinderBackToBaseTime,TemplateDataReadCBFunction,0,0,0);
+ ScrewDTSControlId = AddControlCallback("screw DTS",ScrewDTSCallback, DTS_Time-WinderBackToBaseTime,TemplateDataReadCBFunction,0,0,0);
REPORT_MSG ((int)msec_millisecondCounter,"ScrewDTSCallback start");
return OK;
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c
index 8c42735cb..416b53494 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c
@@ -148,12 +148,13 @@ char DancerConfigPath[50] = "0://SysInfo//DancCfg.cfg";
uint32_t StoreDancerConfigMessage()
{
- FRESULT Fresult = FR_OK;
- HardwareConfiguration DancerConfig;
- HardwareDancer Dancers[MAX_SYSTEM_DANCERS];
- uint8_t* response_buffer;
- size_t response_size = 0;
- int Dancer_i;
+ uint32_t status = OK;
+ /* FRESULT Fresult = FR_OK;
+ // HardwareConfiguration DancerConfig;
+ // HardwareDancer Dancers[MAX_SYSTEM_DANCERS];
+ // uint8_t* response_buffer;
+ // size_t response_size = 0;
+ // int Dancer_i;
hardware_configuration__init(&DancerConfig);
DancerConfig.dancers = (HardwareDancer**)my_malloc(sizeof(HardwareDancer*)*MAX_SYSTEM_DANCERS);
@@ -168,11 +169,12 @@ uint32_t StoreDancerConfigMessage()
DancerConfig.n_dancers++;
DancersCfg[Dancer_i].zeropoint = DancerConfig.dancers[Dancer_i]->zeropoint;
}
- MCU_E2PromProgram(EEPROM_STORAGE_DANCER_0,DancersCfg[0].zeropoint);
- MCU_E2PromProgram(EEPROM_STORAGE_DANCER_1,DancersCfg[1].zeropoint);
- MCU_E2PromProgram(EEPROM_STORAGE_DANCER_2,DancersCfg[2].zeropoint);
+ */
+ status |= MCU_E2PromProgram(EEPROM_STORAGE_DANCER_0,DancersCfg[0].zeropoint);
+ status |= MCU_E2PromProgram(EEPROM_STORAGE_DANCER_1,DancersCfg[1].zeropoint);
+ status |= MCU_E2PromProgram(EEPROM_STORAGE_DANCER_2,DancersCfg[2].zeropoint);
Report("Store eeprom 0",__FILE__,DancersCfg[0].zeropoint,(int)DancersCfg[1].zeropoint,RpWarning,(int)DancersCfg[2].zeropoint,0);
-
+/*
response_buffer = my_malloc(hardware_configuration__get_packed_size(&DancerConfig));
if (response_buffer)
{
@@ -187,43 +189,23 @@ uint32_t StoreDancerConfigMessage()
my_free(response_buffer);
-
- return Fresult;
+*/
+ return status;
}
uint32_t LoadDancerConfigMessage()
{
- void* buffer = NULL;
- uint32_t Bytes = 0;
- FRESULT Fresult = FR_OK;
-
- HardwareConfiguration *DancerConfig;
- int Dancer_i;
- HardwareDancer DancersCfg1[MAX_SYSTEM_DANCERS] = {0};
- HardwareDancer DancersCfg2[MAX_SYSTEM_DANCERS] = {0};
+ uint32_t status = OK;
- memcpy(DancersCfg1,(void *)DANCERS_MAP_IN_FLASH,sizeof(DancersCfg1));
-
- Fresult = FileRead(DancerConfigPath, &Bytes, &buffer);
- if (Fresult == FR_OK)
- {
- DancerConfig = hardware_configuration__unpack(NULL, Bytes, buffer);
- for (Dancer_i = 0; Dancer_i < DancerConfig->n_dancers ; Dancer_i++)
- {
- DancersCfg2[Dancer_i].zeropoint = DancerConfig->dancers[Dancer_i]->zeropoint;
- }
- hardware_configuration__free_unpacked(DancerConfig,NULL);
- free (buffer);
- }
MCU_E2PromRead(EEPROM_STORAGE_DANCER_0,&DancersCfg[0].zeropoint);
MCU_E2PromRead(EEPROM_STORAGE_DANCER_1,&DancersCfg[1].zeropoint);
MCU_E2PromRead(EEPROM_STORAGE_DANCER_2,&DancersCfg[2].zeropoint);
- Report("Dancer 0 Store data flash, internal flash, eeprom ",__FILE__,DancersCfg[0].zeropoint,(int)DancersCfg1[0].zeropoint,RpWarning,(int)DancersCfg2[0].zeropoint,0);
- Report("Dancer 1 Store data flash, internal flash, eeprom ",__FILE__,DancersCfg[1].zeropoint,(int)DancersCfg1[1].zeropoint,RpWarning,(int)DancersCfg2[1].zeropoint,0);
- Report("Dancer 2 Store data flash, internal flash, eeprom ",__FILE__,DancersCfg[2].zeropoint,(int)DancersCfg1[2].zeropoint,RpWarning,(int)DancersCfg2[2].zeropoint,0);
+ status |= Report("Dancer 0 Store data eeprom ",__FILE__,__LINE__,0,RpWarning,(int)DancersCfg[0].zeropoint,0);
+ status |= Report("Dancer 1 Store data eeprom ",__FILE__,__LINE__,1,RpWarning,(int)DancersCfg[1].zeropoint,0);
+ status |= Report("Dancer 2 Store data eeprom ",__FILE__,__LINE__,2,RpWarning,(int)DancersCfg[2].zeropoint,0);
- return Fresult;
+ return status;
}
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
index 45acfabea..28ba11fcd 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
@@ -732,6 +732,18 @@ uint32_t ThreadInitialTestStub(HardwareMotor * request)
MotorStop(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM, Hard_Stop);
+ if (FPGA_Read_limit_Switches(Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_DH_LID]) != LIMIT)
+ {
+ ReportWithPackageFilter(ThreadFilter,"Dyeing head is open!!!",__FILE__,__LINE__,HARDWARE_MOTOR_TYPE__MOTO_DH_LID,RpFatalError,LIMIT,0);
+ PrepareReady(Module_Thread,ModuleFail);
+ return ERROR;
+ }
+ if (FPGA_Read_limit_Switches(Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID]) != LIMIT)
+ {
+ ReportWithPackageFilter(ThreadFilter,"Dryer lid is open!!!",__FILE__,__LINE__,HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID,RpFatalError,LIMIT,0);
+ PrepareReady(Module_Thread,ModuleFail);
+ return ERROR;
+ }
//start thread control for all motors
for (Motor_i = 0;Motor_i < MAX_THREAD_MOTORS_NUM;Motor_i++)
@@ -768,7 +780,7 @@ uint32_t ThreadInitialTestStub(HardwareMotor * request)
}
//SetMotHome(ThreadMotorIdToMotorId[Motor_i]);
LengthCalculationMultiplier = (MotorsCfg[ThreadMotorIdToMotorId[Motor_i]].pulleyradius*2*PI)/(MotorsCfg[ThreadMotorIdToMotorId[Motor_i]].pulseperround*MotorsCfg[ThreadMotorIdToMotorId[Motor_i]].microstep);
- SpeedControlId = AddControlCallback(ThreadLengthCBFunction, eHundredMillisecond,MotorGetPositionFromFPGA,(IfTypeThread*0x100+Motor_i),ThreadMotorIdToMotorId[Motor_i],Motor_i);
+ SpeedControlId = AddControlCallback(NULL,ThreadLengthCBFunction, eHundredMillisecond,MotorGetPositionFromFPGA,(IfTypeThread*0x100+Motor_i),ThreadMotorIdToMotorId[Motor_i],Motor_i);
}
if (Motor_i == POOLER_MOTOR) // dryer motor is speed controlled. later a speed sensor will be utilized, but for now it will not be controlled
{
@@ -781,7 +793,7 @@ uint32_t ThreadInitialTestStub(HardwareMotor * request)
}
//SetMotHome(ThreadMotorIdToMotorId[Motor_i]);
PoolerLengthCalculationMultiplier = (MotorsCfg[ThreadMotorIdToMotorId[Motor_i]].pulleyradius*2*PI)/(MotorsCfg[ThreadMotorIdToMotorId[Motor_i]].pulseperround*MotorsCfg[ThreadMotorIdToMotorId[Motor_i]].microstep);
- PoolerSpeedControlId = AddControlCallback(PoolerThreadLengthCBFunction, eHundredMillisecond,MotorGetPositionFromFPGA,(IfTypeThread*0x100+Motor_i),ThreadMotorIdToMotorId[Motor_i],Motor_i);
+ PoolerSpeedControlId = AddControlCallback(NULL,PoolerThreadLengthCBFunction, eHundredMillisecond,MotorGetPositionFromFPGA,(IfTypeThread*0x100+Motor_i),ThreadMotorIdToMotorId[Motor_i],Motor_i);
}
if (Motor_i == FEEDER_MOTOR) // dryer motor is speed controlled. later a speed sensor will be utilized, but for now it will not be controlled
{
@@ -793,8 +805,8 @@ uint32_t ThreadInitialTestStub(HardwareMotor * request)
CurrentControlledSpeed[Motor_i] = 0;
}
#ifndef TEST_PID_THREAD
- ControlIdtoMotorId[Motor_i] = AddControlCallback(ThreadControlCBFunction, eOneMillisecond,Control_Read_Dancer_Position,(IfTypeThread*0x100+Motor_i),ThreadMotorIdToDancerId[Motor_i],Motor_i);
- //AddControlCallback(ThreadControlSpeedReadFunction, eHundredMillisecond,MotorGetSpeedFromFPGA,(IfTypeThread*0x100+Motor_i),ThreadMotorIdToMotorId[Motor_i],Motor_i);
+ ControlIdtoMotorId[Motor_i] = AddControlCallback(NULL,ThreadControlCBFunction, eOneMillisecond,Control_Read_Dancer_Position,(IfTypeThread*0x100+Motor_i),ThreadMotorIdToDancerId[Motor_i],Motor_i);
+ //AddControlCallback(NULL,ThreadControlSpeedReadFunction, eHundredMillisecond,MotorGetSpeedFromFPGA,(IfTypeThread*0x100+Motor_i),ThreadMotorIdToMotorId[Motor_i],Motor_i);
#endif
}
if (Motor_i == POOLER_MOTOR) // dryer motor is speed controlled. later a speed sensor will be utilized, but for now it will n//ot be controlled
@@ -807,7 +819,7 @@ uint32_t ThreadInitialTestStub(HardwareMotor * request)
ControlIdtoMotorId[Motor_i] = 0xFF;
}
#ifndef TEST_PID_THREAD
- ControlIdtoMotorId[Motor_i] = AddControlCallback(ThreadControlCBFunction, eOneMillisecond,Control_Read_Dancer_Position,(IfTypeThread*0x100+Motor_i),ThreadMotorIdToDancerId[Motor_i],Motor_i);
+ ControlIdtoMotorId[Motor_i] = AddControlCallback(NULL,ThreadControlCBFunction, eOneMillisecond,Control_Read_Dancer_Position,(IfTypeThread*0x100+Motor_i),ThreadMotorIdToDancerId[Motor_i],Motor_i);
#endif
}
if (Motor_i == WINDER_MOTOR) // dryer motor is speed controlled. later a speed sensor will be utilized, but for now it will n//ot be controlled
@@ -821,7 +833,7 @@ uint32_t ThreadInitialTestStub(HardwareMotor * request)
ControlIdtoMotorId[Motor_i] = 0xFF;
}
#ifndef TEST_PID_THREAD
- ControlIdtoMotorId[Motor_i] = AddControlCallback(ThreadControlCBFunction, eOneMillisecond,Control_Read_Dancer_Position,(IfTypeThread*0x100+Motor_i),ThreadMotorIdToDancerId[Motor_i],Motor_i);
+ ControlIdtoMotorId[Motor_i] = AddControlCallback(NULL,ThreadControlCBFunction, eOneMillisecond,Control_Read_Dancer_Position,(IfTypeThread*0x100+Motor_i),ThreadMotorIdToDancerId[Motor_i],Motor_i);
#endif
}
// if (HW_Motor_Id == HARDWARE_MOTOR_TYPE__MOTO_DRYER_DRIVING) // dryer motor is speed controlled. later a speed sensor will be utilized, but for now it will not be controlled
@@ -912,7 +924,7 @@ uint32_t ThreadPreSegmentState(void *SegmentDetails, uint32_t SegmentId)
#else
InitialDryerSpeed = OriginalMotorSpd_2PPS[DRYER_MOTOR]/10;
MotorSetSpeed(HARDWARE_MOTOR_TYPE__MOTO_DRYER_DRIVING,InitialDryerSpeed );
- ControlIdtoMotorId[DRYER_MOTOR] = AddControlCallback(ThreadDryerRampUp, 200,TemplateDataReadCBFunction,0,0,0);
+ ControlIdtoMotorId[DRYER_MOTOR] = AddControlCallback("DryerRampUp",ThreadDryerRampUp, 200,TemplateDataReadCBFunction,0,0,0);
#endif
#endif
#ifdef HUNDRED_MICROSECONDS_DANCER_READ
diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c
index c2451118d..90df9cfb1 100644
--- a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c
+++ b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c
@@ -589,7 +589,7 @@ bool initWHS_WasteTank()
WHS_info.WHS_sensors.waste_tank_empty_sensor = RdWasteTankEmptySensor();
WHS_info.WHS_sensors.waste_tank_full_sensor = SENSORnotFULL;
UpdateStateMachine();
- AddControlCallback(WasteTankCBFunction, WasteTankCallBackTime , WasteTankCallBackFunction, 0,0,0);//eOneMinute
+ AddControlCallback("Waste tank",WasteTankCBFunction, WasteTankCallBackTime , WasteTankCallBackFunction, 0,0,0);//eOneMinute
return OK;
}
@@ -663,7 +663,7 @@ WHS_sensor WasteTankCallBackFunction()
/*
bool start_WHS_machin()
{
- AddControlCallback( WasteTankCBFunction, eTenMillisecond, WasteTankCallBackFunction, 0,0,0 );// eOneMinute
+ AddControlCallback(NULL, WasteTankCBFunction, eTenMillisecond, WasteTankCallBackFunction, 0,0,0 );// eOneMinute
return OK;
}
*/
@@ -700,7 +700,7 @@ bool WasteTankCBFunction()
REPORT_MSG(WHS_filling," ------------ WHS_empty ----------------- ");
ret = CartridgeWasteFilling(OFF);
WHS_info.Cartridge_Cover_device_Id = RemoveControlCallback(WHS_info.Cartridge_Cover_device_Id, WasteTankCBFunction );
- WHS_info.Cartridge_Cover_device_Id = AddControlCallback( WasteTankCBFunction, CartridgeCoverCallBackTime, CartridgeCoverCallBackFunction, 0,0,0 );//eOneSecond
+ WHS_info.Cartridge_Cover_device_Id = AddControlCallback(NULL, WasteTankCBFunction, CartridgeCoverCallBackTime, CartridgeCoverCallBackFunction, 0,0,0 );//eOneSecond
WrRFIDStatus(WHS_info.active_cartridge, WasteFull);//write RFID status todo
}
else
@@ -726,7 +726,7 @@ bool WasteTankCBFunction()
WHS_info.sttMachine = WHS_full;
REPORT_MSG(WHS_emptying," ------------ WHS_full ----------------- ");
WHS_info.Cartridge_Cover_device_Id = RemoveControlCallback(WHS_info.Cartridge_Cover_device_Id, WasteTankCBFunction );
- WHS_info.Cartridge_Cover_device_Id = AddControlCallback( WasteTankCBFunction, CartridgeCoverCallBackFastTime , CartridgeCoverCallBackFunction, 0,0,0 );//eTenMillisecond
+ WHS_info.Cartridge_Cover_device_Id = AddControlCallback(NULL, WasteTankCBFunction, CartridgeCoverCallBackFastTime , CartridgeCoverCallBackFunction, 0,0,0 );//eTenMillisecond
if (RdRFIDStatus (WHS_info.active_cartridge) == WasteEmpty)
{
ret = WrRFIDStatus(WHS_info.active_cartridge, WasteFilling);//write RFID status todo
@@ -794,9 +794,9 @@ bool WasteTankCBFunction()
if ( !PowerOffInProcessGetState() )
{
- IFS_info.Cartridge_Ink_device_Id = AddControlCallback( WasteTankCBFunction, CartridgeInkCallBackTime , CartridgeInkCallBackFunction , 0,0,0 ); //eOneSecond
- WHS_info.Cartridge_Waste1_device_Id = AddControlCallback( WasteTankCBFunction, CartridgeWaste1CallBackTime, CartridgeWaste1CallBackFunction, 0,0,0 ); //eOneSecond
- WHS_info.Cartridge_Waste2_device_Id = AddControlCallback( WasteTankCBFunction, CartridgeWaste2CallBackTime, CartridgeWaste2CallBackFunction, 0,0,0 ); //eOneSecond
+ IFS_info.Cartridge_Ink_device_Id = AddControlCallback(NULL, WasteTankCBFunction, CartridgeInkCallBackTime , CartridgeInkCallBackFunction , 0,0,0 ); //eOneSecond
+ WHS_info.Cartridge_Waste1_device_Id = AddControlCallback(NULL, WasteTankCBFunction, CartridgeWaste1CallBackTime, CartridgeWaste1CallBackFunction, 0,0,0 ); //eOneSecond
+ WHS_info.Cartridge_Waste2_device_Id = AddControlCallback(NULL, WasteTankCBFunction, CartridgeWaste2CallBackTime, CartridgeWaste2CallBackFunction, 0,0,0 ); //eOneSecond
}
else
{
@@ -848,11 +848,11 @@ bool WasteTankCBFunction()
cart1.color = BLINK;
//add timeout
IFS_info.Ink.time_out = 1;
- IFS_info.Cartridge_Ink_TimeOut_device_Id = AddControlCallback( WasteTankCBFunction, CartridgeInkTimeOutCallBackTime, CartridgeInkTimeOutCallBackFunction, 0,0,0 ); //eOneSecond
+ IFS_info.Cartridge_Ink_TimeOut_device_Id = AddControlCallback(NULL, WasteTankCBFunction, CartridgeInkTimeOutCallBackTime, CartridgeInkTimeOutCallBackFunction, 0,0,0 ); //eOneSecond
// //add callback for midtank status is full
-// IFS_info.Cartridge_Ink_TimeOut_device_Id = AddControlCallback( WasteTankCBFunction, CartridgeInkTimeOutCallBackTime, CartridgeInkTimeOutCallBackFunction, 0,0,0 ); //eOneSecond
+// IFS_info.Cartridge_Ink_TimeOut_device_Id = AddControlCallback(NULL, WasteTankCBFunction, CartridgeInkTimeOutCallBackTime, CartridgeInkTimeOutCallBackFunction, 0,0,0 ); //eOneSecond
// Enable_MidTank_Pressure_Reading(IFS_info.Ink.cart_color);
// Read_MidTank_Pressure_Sensor(IFS_info.Ink.cart_color);
// if ( Get_MidTank_Pressure_Sensor(IFS_info.Ink.cart_color) > MidTank_Pressure_FULL )
@@ -1257,11 +1257,11 @@ bool InitCartStatus()
if (WHS_info.WHS_sensors.cartridge_cover == WHS_CartridgeCoverOPEN)
{
REPORT_MSG(parameter," ------------ WHS_CartridgeCoverOPEN : add callback for cart1 and cart 2 ----------------- ");
- IFS_info.Cartridge_Ink_device_Id = AddControlCallback( WasteTankCBFunction, eOneSecond, CartridgeInkCallBackFunction, 0,0,0 );
- WHS_info.Cartridge_Waste1_device_Id = AddControlCallback( WasteTankCBFunction, eOneSecond, CartridgeWaste1CallBackFunction, 0,0,0 );
- WHS_info.Cartridge_Waste2_device_Id = AddControlCallback( WasteTankCBFunction, eOneSecond, CartridgeWaste2CallBackFunction, 0,0,0 );
+ IFS_info.Cartridge_Ink_device_Id = AddControlCallback(NULL, WasteTankCBFunction, eOneSecond, CartridgeInkCallBackFunction, 0,0,0 );
+ WHS_info.Cartridge_Waste1_device_Id = AddControlCallback(NULL, WasteTankCBFunction, eOneSecond, CartridgeWaste1CallBackFunction, 0,0,0 );
+ WHS_info.Cartridge_Waste2_device_Id = AddControlCallback(NULL, WasteTankCBFunction, eOneSecond, CartridgeWaste2CallBackFunction, 0,0,0 );
}
- WHS_info.Cartridge_Cover_device_Id = AddControlCallback( WasteTankCBFunction, eOneSecond, CartridgeCoverCallBackFunction, 0,0,0 );
+ WHS_info.Cartridge_Cover_device_Id = AddControlCallback(NULL, WasteTankCBFunction, eOneSecond, CartridgeCoverCallBackFunction, 0,0,0 );
return OK;
}
@@ -1355,7 +1355,7 @@ U8 RdWastePrecenseSensor(cartridge_name name)
/*
U8 cartridge_handeling()
{
- AddControlCallback( CartridgePrecenceCBFunction, eOneMinute, CartridgePrecenceCallBackFunction, 0,0,0 ); //
+ AddControlCallback(NULL, CartridgePrecenceCBFunction, eOneMinute, CartridgePrecenceCallBackFunction, 0,0,0 ); //
return OK;
}
*/
@@ -1802,23 +1802,23 @@ uint32_t start_WHS_machin()
switch( WHS_info.sttMachine )
{
case WHS_empty: // last OnOffPBstate was OFF
- AddControlCallback( EmptyWasteTankCBFunction, eOneMinute, WasteTankEmptyCallBackFunction, 0,0,0 ); //
+ AddControlCallback(NULL, EmptyWasteTankCBFunction, eOneMinute, WasteTankEmptyCallBackFunction, 0,0,0 ); //
break;
case WHS_filling : // last OnOffPBstate was COUNTPB
- AddControlCallback( EmptyWasteTankCBFunction, eOneMinute, WasteTankFullCallBackFunction, 0,0,0 ); //
- AddControlCallback( EmptyWasteTankCBFunction, eOneMinute, WasteTankEmptyCallBackFunction, 0,0,0 ); //
+ AddControlCallback(NULL, EmptyWasteTankCBFunction, eOneMinute, WasteTankFullCallBackFunction, 0,0,0 ); //
+ AddControlCallback(NULL, EmptyWasteTankCBFunction, eOneMinute, WasteTankEmptyCallBackFunction, 0,0,0 ); //
break;
case WHS_emptying: // last OnOffPBstate was SHORTPB
- AddControlCallback( EmptyWasteTankCBFunction, eOneMinute, WasteTankEmptyCallBackFunction, 0,0,0 ); //
- AddControlCallback( EmptyWasteTankCBFunction, eOneMinute, WasteTankFullCallBackFunction, 0,0,0 ); //
+ AddControlCallback(NULL, EmptyWasteTankCBFunction, eOneMinute, WasteTankEmptyCallBackFunction, 0,0,0 ); //
+ AddControlCallback(NULL, EmptyWasteTankCBFunction, eOneMinute, WasteTankFullCallBackFunction, 0,0,0 ); //
break;
case WHS_full:
- AddControlCallback( EmptyWasteTankCBFunction, eOneMinute, WasteTankFullCallBackFunction, 0,0,0 ); //
- AddControlCallback( EmptyWasteTankCBFunction, eOneMinute, WasteTankOverflowCallBackFunction, 0,0,0 ); //
+ AddControlCallback(NULL, EmptyWasteTankCBFunction, eOneMinute, WasteTankFullCallBackFunction, 0,0,0 ); //
+ AddControlCallback(NULL, EmptyWasteTankCBFunction, eOneMinute, WasteTankOverflowCallBackFunction, 0,0,0 ); //
break;
case WHS_overflow:
- AddControlCallback( EmptyWasteTankCBFunction, eOneMinute, WasteTankFullCallBackFunction, 0,0,0 ); //
- AddControlCallback( EmptyWasteTankCBFunction, eOneMinute, WasteTankOverflowCallBackFunction, 0,0,0 ); //
+ AddControlCallback(NULL, EmptyWasteTankCBFunction, eOneMinute, WasteTankFullCallBackFunction, 0,0,0 ); //
+ AddControlCallback(NULL, EmptyWasteTankCBFunction, eOneMinute, WasteTankOverflowCallBackFunction, 0,0,0 ); //
break;
default: // WHS_sttError
break;
diff --git a/Software/Embedded_SW/Embedded/Software Release Notes.txt b/Software/Embedded_SW/Embedded/Software Release Notes.txt
index ac9a49feb..e366ef378 100644
--- a/Software/Embedded_SW/Embedded/Software Release Notes.txt
+++ b/Software/Embedded_SW/Embedded/Software Release Notes.txt
@@ -1,3 +1,43 @@
+Embedded SW Release note - Version 1.4.5.9 (alpha 3)
+=============================================================
+I2C reading task for better handling of slow I2C interactions (head etc)
+textual names for control calls to help debuggng
+add midtank and dispenser ink content to diagnostics
+*observe and handle FPGA watchdog reset (reinitialize motors)
+
+alarm handling: midtamk overflow, fix current alarms, consequent actions and job verification, critical alrms.
+diagnostics: improved
+*heaters: band alarm fixed
+IDS: *dispenser data, *improve autofill on job start, *puller_tension from RML as cleaner speed
+Thread: *real dryer rampup. dancers from EEPROM only. *insure rockers motors voltage value;
+print: *prevent job on open covers (dryer, head)
+
+
+Embedded SW Release note - Version 1.4.5.95 (alpha 2)
+=============================================================
+Embedded SW Release note - Version 1.4.5.9 (alpha 1)
+=============================================================
+common:
+ log filtering by severity and modules
+ file transfer chuck size reduced (slower transfer
+drivers:
+ fpga: motor init improved, WD handling fixed, secondary pump, powerstep 01 handling.
+ I2C: midtank calibration, safety improved, head card and RFID preparations
+ valves: bug fixed.
+modules:
+ alarm handling: current alarms, fans alarms, bugs fixes.
+ control: current reading disabled, machine status, led on FPGA reset.
+ general: buttons fixed. handling of config failures, dryer buffer length: number of dryer cycles *76 cm + 90 cm (dryer to winder), safety alarms.
+ heaters: machine internal alrms, bugs fixed.
+ IDS: dispenser data store in FFS, homing - consider safety bypass, midtank content, active homing. use RML's feeder_tension as pressure buildup limit.
+ thread: load fixed. hold dryer arm.
+ waste, IFS: tested and fixed
+state machines
+ Init: open and cloase dispensers valve, fix problems,
+ power off sequence and clean job fixed.
+ print: job length fixed.
+
+
Embedded SW Release note - Version 1.4.4.6
=============================================================
drivers:
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c
index cb30919bf..fe6f12053 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c
+++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c
@@ -116,8 +116,8 @@ uint32_t Start_InitSequence(void)
{
MachineStateDetail = MACHINE_STATE_HW_CONFIG;
SetMachineStatus(MACHINE_STATE__Initializing);
- HWControlId = AddControlCallback( InitSequenceCallBackFunction, 4* eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
- InitSchedulerControlId = AddControlCallback( InitScheduler, eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
+ HWControlId = AddControlCallback("Init HW Init", InitSequenceCallBackFunction, 4* eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
+ InitSchedulerControlId = AddControlCallback("InitScheduler", InitScheduler, eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
return OK;
}
void InitSequenceResetReason(void)
@@ -211,13 +211,13 @@ uint32_t InitSequenceInitialBlowerActivation(void)
Control_Voltage_To_Blower(BlowerCfg.voltage);
else
Control_Voltage_To_Blower(3000);
- HWControlId = AddControlCallback( InitSequenceBlowerCallBackFunction, 10* eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
+ HWControlId = AddControlCallback("Init Blower", InitSequenceBlowerCallBackFunction, 10* eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
/*if (RdInkCartridgeSensor()) //if there is a cartridge in the ink slot skip the valves procedure
{
MidTankOperationCounter = 32;
Report("There is a cartridge in the ink slot. skipping the valves procedure",__FILE__,__LINE__,(int)MidTankOperationCounter,RpWarning,(int)InitStages,0);
}*/
- MidTankControlId = AddControlCallback( InitSequenceMidTankCallBackFunction, 300/*eHundredMillisecond*/, TemplateDataReadCBFunction,0,0, 0 );
+ MidTankControlId = AddControlCallback("Init Midtank", InitSequenceMidTankCallBackFunction, 300/*eHundredMillisecond*/, TemplateDataReadCBFunction,0,0, 0 );
return OK;
}
@@ -265,6 +265,7 @@ uint32_t InitSequenceStartHeatingCallBackFunction(uint32_t IfIndex, uint32_t Bus
if (HeaterCheckReady()==true)
{
MachineStateDetail = MACHINE_STATE_MACHINE_READY_TO_DYE;
+ SetMachineStatus(MACHINE_STATE__Ready);
if (SafeRemoveControlCallback(HWControlId, InitSequenceStartHeatingCallBackFunction )==OK)
HWControlId = 0xFF;
else
@@ -287,7 +288,7 @@ uint32_t InitSequenceStartHeating(void)
if (ProcessParamsInit() ==OK)
{
MachineStateDetail = MACHINE_STATE_HEATING_STARTED;
- HWControlId = AddControlCallback( InitSequenceStartHeatingCallBackFunction, 2*eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
+ HWControlId = AddControlCallback("Init Heating", InitSequenceStartHeatingCallBackFunction, 2*eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
//start heaters with predefined / store process parameters
}
else
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c
index 3cf2a363d..df2f3705c 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c
+++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c
@@ -94,7 +94,7 @@ uint32_t PowerIdleCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag)
}
void PowerIdleInit(void)
{
- IdleControlId = AddControlCallback( PowerIdleCallBackFunction, eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
+ IdleControlId = AddControlCallback("IdleCounter", PowerIdleCallBackFunction, eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
if (IdleControlId == 0xFF)
Report("AddControlCallback failed",__FILE__,__LINE__,(int)IdleControlId,RpWarning,(int)0,0);
Report("PowerIdleInit ",__FILE__,__LINE__,(int)powerIdleSecondsLimit,RpWarning,(int)0,0);
@@ -128,7 +128,7 @@ void PowerIdleOutOfIdleState(void)
return ;
}
if (IdleControlId == 0xFF)
- IdleControlId = AddControlCallback( PowerIdleCallBackFunction, eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
+ IdleControlId = AddControlCallback("IdleCounter", PowerIdleCallBackFunction, eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
if (IdleControlId == 0xFF)
Report("AddControlCallback failed",__FILE__,__LINE__,(int)IdleControlId,RpWarning,(int)0,0);
SetMachineStatus(MACHINE_STATE__Ready);
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c
index 94567a1c7..67e86397c 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c
+++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c
@@ -90,7 +90,7 @@ uint32_t PowerOffInit(void)
StopInitSequence();
setmachineActive(true);
PowerOffInProcess = true;
- PowerOffControlId = AddControlCallback( PowerOffScheduler, eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
+ PowerOffControlId = AddControlCallback("PowerOff", PowerOffScheduler, eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
SetMachineStatus(MACHINE_STATE__PowerOff);
return OK;
}
@@ -133,7 +133,7 @@ uint32_t PowerOffHeadClean(void)
PowerOffHeadCleanControlId = 0xFF;
//return ERROR;
}
- PowerOffHeadCleanControlId = AddControlCallback( PowerOffHeadCleanCallback,eOneSecond , TemplateDataReadCBFunction,0,0, 0 );
+ PowerOffHeadCleanControlId = AddControlCallback(NULL, PowerOffHeadCleanCallback,eOneSecond , TemplateDataReadCBFunction,0,0, 0 );
}
else
{
@@ -187,7 +187,7 @@ uint32_t PowerOffMixerFlushDispenserStopCallback(void)
{
REPORT_MSG (PowerOffMachineState, "PowerOffMixerFlushDispenserStopCallback");
IDS_Dispenser_Start_Motor_and_Open_Valve(TI_DISPENSER_ID,DEFAULT_MIXER_CLEANING_SPEED,NULL);
- PowerOffHeadCleanControlId = AddControlCallback( PowerOffMixerFlushCallback,DEFAULT_MIXER_CLEANING_TIMEOUT , TemplateDataReadCBFunction,0,0, 0 );
+ PowerOffHeadCleanControlId = AddControlCallback("Poweroff cleaning", PowerOffMixerFlushCallback,DEFAULT_MIXER_CLEANING_TIMEOUT , TemplateDataReadCBFunction,0,0, 0 );
return OK;
}
/*******************************************************************************************************/
@@ -296,7 +296,7 @@ uint32_t PowerOffWaitForProcesses(void)
{
WaitForProcessCounter = 0; //15 minutes wait
REPORT_MSG (PowerOffMachineState, "Ongoing processes, wait for end of process");
- WaitForProcessControlId = AddControlCallback( PowerOffWaitForProcessesCallback, eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
+ WaitForProcessControlId = AddControlCallback("ongoing processes", PowerOffWaitForProcessesCallback, eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
}
else
{
@@ -373,7 +373,7 @@ uint32_t PowerOffWaitForTemperature(void)
if (WaitForProcessControlId == 0xFF)
{
WaitForProcessCounter = 0;
- WaitForProcessControlId = AddControlCallback( PowerOffWaitForTemperatureCallback, eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
+ WaitForProcessControlId = AddControlCallback("poweroff cooling", PowerOffWaitForTemperatureCallback, eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
}
//TBD
return OK;
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c
index 3cdc4d1b8..1f6ff685e 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c
+++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c
@@ -102,7 +102,7 @@ JobUploadStrategy uploadstrategy = JOB_UPLOAD_STRATEGY__Default;
ModuleStateEnum PrepareWaiting[MAX_SYSTEM_MODULES] = {ModuleIdle,ModuleIdle,ModuleIdle,ModuleIdle,ModuleIdle};
-uint16_t job_length = 0;
+double job_length = 0.0;
/********************************************************************************************
* functions describes motor operation flow and movement state during profile execution
@@ -517,7 +517,23 @@ void ThreadJoggingRequestFunc(MessageContainer* requestContainer)
ThreadJoggingResponse response = THREAD_JOGGING_RESPONSE__INIT;
- status = ThreadJoggingFunc(request->speed);
+ if (JobIsActive() == true)
+ {
+ AbortJob(0);
+ //set the job handler to handle heaters, ids and waste in the state machine
+ Task_sleep(100); //let the job end procedure role before returning the configuration to normal.
+ usnprintf(ErrorMsg, 80,"Copy Configured T %d W %d I %d H %d W %d",CopyConfigured[Module_Thread],CopyConfigured[Module_Winder],CopyConfigured[Module_IDS],CopyConfigured[Module_Heaters],CopyConfigured[Module_Waste]);
+ Report(ErrorMsg, __FILE__, __LINE__, 0, RpWarning, 0, 0);
+
+
+ my_free(Ticket.segments);
+ my_free(TSegment);
+ my_free(Tspool);
+ }
+ else
+ {
+ status = ThreadJoggingFunc(request->speed);
+ }
responseContainer = createContainer(MESSAGE_TYPE__ThreadJoggingResponse, requestContainer->token, true, &response, &thread_jogging_response__pack, &thread_jogging_response__get_packed_size);
if (status!= OK)
@@ -536,7 +552,7 @@ void ThreadJoggingRequestFunc(MessageContainer* requestContainer)
}
void ThreadAbortJoggingFunc(void)
{
- if (JobIsActive() == true)
+/* if (JobIsActive() == true)
{
AbortJob(0);
//set the job handler to handle heaters, ids and waste in the state machine
@@ -549,7 +565,7 @@ void ThreadAbortJoggingFunc(void)
my_free(TSegment);
my_free(Tspool);
}
-
+*/
}
void ThreadAbortJoggingRequestFunc(MessageContainer* requestContainer)
{
@@ -640,7 +656,7 @@ void Stub_JobRequest(MessageContainer* requestContainer)
StubLength = Ticket->length*100;
StubLengthCounter = 0;
ustrncpy (JobToken, requestContainer->token,36);
- StubControlId = AddControlCallback( SendStubJobProgress, eOneSecond,TemplateDataReadCBFunction,0,0,0);
+ StubControlId = AddControlCallback(NULL, SendStubJobProgress, eOneSecond,TemplateDataReadCBFunction,0,0,0);
jobStatus.has_progress = true;
jobStatus.progress = 0.0;
@@ -753,9 +769,9 @@ void JobRequestFunc(MessageContainer* requestContainer)
if (JobAlarmReason ==OK)
{
n_unit_segments = n_segments;
- if ((Ticket->has_units)&&(Ticket->units > 1))
+ if ((Ticket->has_numberofunits)&&(Ticket->numberofunits > 1))
{
- n_units = Ticket->units;
+ n_units = Ticket->numberofunits;
}
if (n_units>1)
{
diff --git a/Software/Embedded_SW/Embedded/embeddedparametersbuild.cs b/Software/Embedded_SW/Embedded/embeddedparametersbuild.cs
index 4aad16764..3b2ff042b 100644
--- a/Software/Embedded_SW/Embedded/embeddedparametersbuild.cs
+++ b/Software/Embedded_SW/Embedded/embeddedparametersbuild.cs
@@ -81,7 +81,7 @@ configurationParameters.SwitchToIdleTimeinSeconds = 3600;
configurationParameters.IdleDrierTemperature = 80;
configurationParameters.IdleHeadTemperature = 80;
configurationParameters.IdleMixerTemperature = 0;
-configurationParameters.PowerOffTemperatureLimit = 100;
+configurationParameters.PowerOffTemperatureLimit = 50;
//general parameters, ORDER MUST BE PRESERVED!!!!
//check the dispensers hard limit alarms