matlab_23550/Inu/Src2/N12_Libs/control_station.c

195 lines
5.0 KiB
C
Raw Normal View History

/*
* control_station.c
*
* Created on: 1 <EFBFBD><EFBFBD><EFBFBD>. 2020 <EFBFBD>.
* Author: Yura
*/
#include "control_station.h"
#include "global_time.h"
#pragma DATA_SECTION(control_station, ".slow_vars")
CONTROL_STATION control_station = CONTROL_STATION_DEFAULTS;
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
void control_station_clear(CONTROL_STATION_handle cs)
{
int i,k,j;
for (i=0;i<COUNT_CONTROL_STATION;i++)
{
cs->count_error_modbus[i] = 0;
cs->count_ok_modbus[i] = 0;
cs->flag_waiting_answer[i] = 0;
cs->flag_message_sent[i] = 0;
cs->active_control_station[i] = 0;
cs->alive_control_station[i] = 0;
for (k=0;k<CONTROL_STATION_CMD_LAST;k++)
cs->array_cmd[i][k] = 0;
cs->detect_get_data_control_station[i] = 0;
cs->period_detect_active[i] = 0;
cs->setup_time_detect_active[i] = CONTROL_STATION_SETUP_TIME_DETECT_ACTIVE;
cs->setup_time_detect_active_resend_485[i] = CONTROL_STATION_SETUP_TIME_DETECT_ACTIVE_RESEND_485;
cs->setup_time_send_cmd_after_off[i] = CONTROL_STATION_SETUP_TIME_SEND_CMD_AFTER_OFF;
cs->time_detect_active[i] = 0;
cs->time_detect_answer_485[i] = 0;
for (k=0;k<CONTROL_STATION_MAX_RAW_DATA;k++)
{
cs->raw_array_data[i][k].all = 0;
for (j=0;j<CONTROL_STATION_MAX_RAW_DATA_TEMP;j++)
cs->raw_array_data_temp[i][k][j].all = 0;
}
cs->flag_refresh_array[i] = 0;
cs->prev_CAN_count_cycle_input_units[i] = 0;
cs->count_raw_array_data_temp[i] = 0;
}
for (k=0;k<CONTROL_STATION_CMD_LAST;k++)
cs->active_array_cmd[k] = 0;
}
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
void control_station_update_timers(CONTROL_STATION_handle cs)
{
static unsigned int old_time = 0;
volatile int i;
if (!detect_pause_milisec(CONTROL_STATION_TIME_WAIT,&old_time))
return;
for (i=0;i<COUNT_CONTROL_STATION;i++)
{
if (cs->flag_message_sent[i] == 1)
(cs->time_detect_answer_485[i])++;
// cs->time_detect_answer_485[i] = 0;
if (cs->detect_get_data_control_station[i])
{
cs->period_detect_active[i] = cs->time_detect_active[i];
cs->time_detect_active[i] = 0;
cs->detect_get_data_control_station[i] = 0;
cs->alive_control_station[i] = 1;
}
else
{
if (cs->time_detect_active[i]>=cs->setup_time_detect_active[i])
{
cs->alive_control_station[i] = 0; // <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
cs->period_detect_active[i] = 0;
// cs->flag_message_sent[i] = 0;
cs->time_detect_active[i] = cs->setup_time_detect_active[i]+1;
}
else
{
cs->time_detect_active[i]++;
// if (cs->flag_message_sent[i])
// {
// if (cs->flag_waiting_answer[i])
// cs->time_detect_active[i]++;
// else
// {
// cs->time_detect_active[i] = 0;
// }
// }
// else
// cs->time_detect_active[i]++;
}
}
}
}
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
void control_station_detect_active_station(CONTROL_STATION_handle cs)
{
}
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////