Skip to content
Snippets Groups Projects
Commit c752a039 authored by wactbprot's avatar wactbprot
Browse files

eod

parent 72b2189e
No related branches found
No related tags found
No related merge requests found
......@@ -60,6 +60,9 @@ IPAddress ip(192, 168, 98, 134);
EthernetServer server(PORT);
String cmd, param;
// run
unsigned long start_time = 0;
// 0-10V out ---
int analogOutPercent0 = 0; // initial value 0-100 percent
......@@ -96,6 +99,25 @@ unsigned long get_abs_seconds() {
int minute = Controllino_GetMinute();
int second = Controllino_GetSecond();
return second + minute*MINTOSECOND + hour*HOURTOSECOND + day*DAYTOSECOND;
}
unsigned long set_start_seconds(String cmd) {
if (cmd == "now"){
start_time = get_abs_seconds();
}
if (cmd == "reset"){
start_time = 0;
}
return start_time;
}
unsigned long get_rel_seconds() {
if (start_time == 0) {
return 0;
} else {
return get_abs_seconds() - start_time;
}
}
float get_current_temperature() {
......@@ -122,22 +144,28 @@ unsigned long get_t3(){
char get_current_state() {
char state = 'n'; //u<n>defined
unsigned long current_time = get_abs_seconds();
unsigned long t1 = get_t1();
unsigned long t2 = get_t2();
unsigned long t3 = get_t3();
if(current_time < t1) {
state = 'u'; // ramp <u>p
}
if(current_time > t1 && current_time < t2) {
state = 'b'; // <b>akeout
}
if(current_time > t2 && current_time < t3) {
state = 'd'; // ramp <d>own'
}
if(current_time > t3) {
state = 'e'; // <e>nd hold
unsigned long rel_time = get_rel_seconds();
unsigned long abs_time = get_abs_seconds();
unsigned long t1 = get_t1();
unsigned long t2 = get_t2();
unsigned long t3 = get_t3();
if (start_time == 0 || abs_time < start_time) {
state = 'w'; // waiting for start
} else {
if(rel_time < t1) {
state = 'u'; // ramp <u>p
}
if(rel_time > t1 && rel_time < t2) {
state = 'b'; // <b>akeout
}
if(rel_time > t2 && rel_time < t3) {
state = 'd'; // ramp <d>own'
}
if(rel_time > t3) {
state = 'e'; // <e>nd hold
}
}
return state;
}
......@@ -169,21 +197,24 @@ float get_target_temperature() {
unsigned long t1 = get_t1();
unsigned long t2 = get_t2();
unsigned long t3 = get_t3();
unsigned long curr_time = get_abs_seconds();
unsigned long rel_time = get_rel_seconds();
char state = get_current_state();
float target_temp = 0.0;
float target_temp = curr_temp;
switch(state){
case 'n':
break;
case 'w':
target_temp = curr_temp;
break;
case 'u':
target_temp = ROOMTEMP+TEMPSLOPEPERHOUR*curr_time/HOURTOSECOND;
target_temp = ROOMTEMP+TEMPSLOPEPERHOUR*rel_time/HOURTOSECOND;
break;
case 'b':
target_temp = TARGETTEMPHIGH;
break;
case 'd':
target_temp = TARGETTEMPHIGH-TEMPSLOPEPERHOUR*(curr_time-t2)/HOURTOSECOND;
target_temp = TARGETTEMPHIGH-TEMPSLOPEPERHOUR*(rel_time-t2)/HOURTOSECOND;
break;
case 'e':
target_temp = TARGETTEMPEND;
......@@ -192,11 +223,18 @@ float get_target_temperature() {
return target_temp;
}
void set_over_temperature(bool s) {
digitalWrite(CONTROLLINO_D7, s);
void set_break_temperature(bool s) {
digitalWrite(CONTROLLINO_D6, s);
}
void set_under_temperature(bool s) {
digitalWrite(CONTROLLINO_D6, s);
digitalWrite(CONTROLLINO_D7, s);
}
void set_over_temperature(bool s) {
digitalWrite(CONTROLLINO_D8, s);
}
void set_max_temperature(bool s) {
digitalWrite(CONTROLLINO_D9, s);
}
float get_rel_heatpower(float targ_temp, float curr_temp) {
......@@ -205,6 +243,14 @@ float get_rel_heatpower(float targ_temp, float curr_temp) {
float upper_limit = targ_temp+BREAKDEVTEMP;
float lower_limit = targ_temp-BREAKDEVTEMP;
if(curr_temp <= BREAKTEMP) {
set_break_temperature(true);
p = 0.0;
}
if(curr_temp >= MAXTEMP) {
set_max_temperature(true);
p = 0.0;
}
if(curr_temp >= upper_limit) {
set_over_temperature(true);
p = 0.0;
......@@ -224,10 +270,8 @@ float get_rel_heatpower(float targ_temp, float curr_temp) {
return p;
}
void write_info_serial(char st, unsigned long se, float ct, float tt, float hp) {
Serial.print("current state is (u:ramp up, b: bake out, d:ramp down, e: end hold): ");
Serial.print("current state is (w: waiting for start time, u:ramp up, b: bake out, d:ramp down, e: end hold): ");
Serial.print(st);
Serial.println("\n");
......@@ -265,8 +309,8 @@ void net_read(){
if (c == '\n') {
client.println(net_exec(cmd, param));
client.stop();
cmd="";
param="";
cmd = "";
param = "";
break;
}
......@@ -288,21 +332,33 @@ String net_exec(String cmd, String param) {
}
if( cmd == "runtime") {
res = String(get_abs_seconds());
res = String(get_rel_seconds());
}
if (cmd == "heatpower") {
float ct = get_current_temperature();
float tt = get_target_temperature();
float hp = get_rel_heatpower(tt, ct);
res = String(hp);
}
return res;
if (cmd == "run") {
unsigned long st = set_start_seconds("now");
res = String(st);
}
if( cmd == "stop"){
unsigned long st = set_start_seconds("reset");
res = String(st);
}
return res;
}
void loop() {
char st = get_current_state();
unsigned long se = get_abs_seconds();
unsigned long se = get_rel_seconds();
float ct = get_current_temperature();
float tt = get_target_temperature();
float hp = get_rel_heatpower(tt, ct);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment