Исправление срабатывания таймера при работе бракиратора на пропуск 1908151156
This commit is contained in:
parent
7a5e1ea8e7
commit
78a11ca88f
25
braker.tc
25
braker.tc
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
Loading…
Reference in New Issue