Исправление срабатывания таймера при работе бракиратора на пропуск 1908151156

This commit is contained in:
Иван Мокротоваров 2019-08-15 11:57:00 +03:00
parent 7a5e1ea8e7
commit 78a11ca88f
3 changed files with 17 additions and 12 deletions

View File

@ -95,8 +95,7 @@ void braker_set(string cmd){
}
else{
if (type == "G"){
relay_set(brakers[num].config->Relay,true);
brakers[num].State = true;
braker_change_state(num-1,true);
d("Бракиратор #"+str(num)+" включен по сигналу сервера");
}else{
d("Бракиратор #"+str(num)+" получил сигнал 'B'. Игнорируем.");
@ -114,24 +113,18 @@ void braker_proc(unsigned char number)
unsigned long timeout = brakers[num].config->Timeout;
if (brakers[num].State){ // проверка на выключение
if (brakers[num].OnTime + timeout < sys.timercountms){ // Обработка таймаута
relay_set(brakers[num].config->Relay,false);
brakers[num].State = false;
braker_change_state(num,false);
d("Бракиратор #"+str(number)+" выключен по таймауту ["+str(sys.timercountms - brakers[num].OnTime)+"/"+str(timeout)+"]ms");
brakers[num].OnTime = 0;
}else{ // проверка статуса порта
if (brakers[num].config->DropPort>0 && getPinState(brakers[num].config->DropPort)){
relay_set(brakers[num].config->Relay,false);
brakers[num].State = false;
braker_change_state(num,false);
d("Бракиратор #"+str(number)+" выключен по сигналу сброса через "+str(sys.timercountms - brakers[num].OnTime)+"ms");
brakers[num].OnTime = 0;
}
}
}else{ // проверка на сработку
if (brakers[num].config->Mode==0 && pinChange(brakers[num].config->SensPort) && getPinStateS(brakers[num].config->SensPort,true)){
if (braker_get_current(num) == "B"){
relay_set(brakers[num].config->Relay,true);
brakers[num].State = true;
brakers[num].OnTime = sys.timercountms;
braker_change_state(num,true);
d("Бракиратор #"+str(number)+" включен по сигналу сенсора");
}
}
@ -140,6 +133,16 @@ void braker_proc(unsigned char number)
}
}
void braker_change_state(unsigned char num, bool state){
relay_set(brakers[num].config->Relay,state);
brakers[num].State = state;
if (state){
brakers[num].OnTime = sys.timercountms;
}else{
brakers[num].OnTime = 0;
}
}
string braker_get_current(unsigned char num){
string c = left(brakers[num].Fifo,1);
int l = len(brakers[num].Fifo);

View File

@ -10,4 +10,5 @@ void braker_proc(unsigned char number);
string braker_get_current(unsigned char num);
void braker_add_port(char port);
bool isBrakerPort(int port);
void braker_change_state(unsigned char num, bool state);
#endif

View File

@ -9,7 +9,7 @@
#message "link global not defined"
#endif
#define VERSION "2.0b_1908141216"
#define VERSION "2.0b_1908151156"
#define MAX_FIFO_SIZE 20
#define BRAKER_COUNT 3
@ -132,5 +132,6 @@ extern BrakerProcess brakers[BRAKER_COUNT];