/* * control_station.h * * Created on: 1 èþí. 2020 ã. * Author: Vladislav */ #ifndef SRC_LIBS_NIO12_CONTROL_STATION_H_ #define SRC_LIBS_NIO12_CONTROL_STATION_H_ #include <control_station_project.h> // ãðóçèì âíåøíèå íàñòðîéêè ïðîåêòà #include "word_structurs.h" ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// #define COUNT_CONTROL_STATION CONTROL_STATION_LAST // êîë-âî ïîñòîâ óïðàâëåíèÿ //#define COUNT_CMD_ARR_CONTROL_STATION CONTROL_STATION_LAST // êîë-âî ïîñòîâ óïðàâëåíèÿ ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// #define CONTROL_STATION_TIME_WAIT 250//500 // ïåðèîä îïðîñà ìñåê #define CONTROL_STATION_SETUP_TIME_DETECT_ACTIVE 18//12//6 // â òèêàõ îò CONTROL_STATION_TIME_WAIT #define CONTROL_STATION_SETUP_TIME_DETECT_ACTIVE_RESEND_485 2 // â òèêàõ îò CONTROL_STATION_TIME_WAIT #define CONTROL_STATION_SETUP_TIME_SEND_CMD_AFTER_OFF 5 // â òèêàõ îò CONTROL_STATION_TIME_WAIT #define CONTROL_STATION_MAX_RAW_DATA 256 //128 // ìàêñèìàëüíîå êîë-âî äàííûõ äëÿ ñûðûõ äàííûõ ïîëó÷åííûõ îò ïîñòîâ #define CONTROL_STATION_MAX_RAW_DATA_TEMP 3 //128 // ñêîëüêî äàííûõ õðàíèì äëÿ âðåìåííîãî áóôåðà ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// typedef struct { unsigned int time_detect_active[COUNT_CONTROL_STATION]; // òåêóùèé òàéìåð äëÿ ïðîïàäàíèè ñâÿçè, ñáðàñûâàåòñÿ ïðè íàëè÷èè ñâÿçè unsigned int period_detect_active[COUNT_CONTROL_STATION]; // ïåðèîä îáìåíà ñ ïîñòîì unsigned int time_detect_answer_485[COUNT_CONTROL_STATION]; // òåêóùèé òàéìåð äëÿ îæèäàíèÿ îòâåòà ïî Modbus unsigned int setup_time_detect_active[COUNT_CONTROL_STATION]; // âðåìÿ äî ñáðîñà ïðè ïðîïàäàíèè ñâÿçè unsigned int setup_time_detect_active_resend_485[COUNT_CONTROL_STATION]; // âðåìÿ äî ñáðîñà ïðè ïðîïàäàíèè ñâÿçè, äîëæåí áûòü ìåíüøå setup_time_detect_active unsigned int setup_time_send_cmd_after_off[COUNT_CONTROL_STATION]; // âðåìÿ çàäåðæêè íà ïåðåêëþ÷åíèå êîìàíä, íàïðèìåð íà Go. ×òîá íå áûëî äðåáåçãà íà âêë/âûêë. unsigned int active_control_station[COUNT_CONTROL_STATION]; // àêòèâíûé ïîñò óïðàâëåíèÿ, âîçìîæíî èõ ìîæåò áûòü íåñêîëüêî îäíîâðåìåííî? unsigned int detect_get_data_control_station[COUNT_CONTROL_STATION]; // åñëè åñòü îáìåí ñ ïîñòîì, òî âûñòàâëÿåì òóò ôëàã, îí ñáðîñèòñÿ ïðè update_timers unsigned int alive_control_station[COUNT_CONTROL_STATION]; // ôëàã î òîì ÷òî ñâÿçü ñ ïîñòîì åñòü int array_cmd[COUNT_CONTROL_STATION][CONTROL_STATION_CMD_LAST]; // ìàññèâ äàííûõ ïîëó÷åííûõ îò êàæäîãî èç ïîñòîâ, äàííûå ïîñëå parse int active_array_cmd[CONTROL_STATION_CMD_LAST]; // ìàññèâ äàííûõ àêòóàëüíûõ äëÿ àâòèâíîãî ïîñòà, äàííûå ïîñëå parse WORD_UINT2BITS_STRUCT raw_array_data[COUNT_CONTROL_STATION][CONTROL_STATION_MAX_RAW_DATA]; // ñûðîé ìàññèâ äàííûõ ïîëó÷åííûõ îò êàæäîãî èç ïîñòîâ, áåç parse. WORD_UINT2BITS_STRUCT raw_array_data_temp[COUNT_CONTROL_STATION][CONTROL_STATION_MAX_RAW_DATA][CONTROL_STATION_MAX_RAW_DATA_TEMP]; // âðåìåííûé ñûðîé ìàññèâ äàííûõ ïîëó÷åííûõ îò êàæäîãî èç ïîñòîâ, áåç parse. unsigned int flag_message_sent[COUNT_CONTROL_STATION]; // ôëàã íà îæèäàíèå îòâåòà ïî ñèñòåìå çàïðîñ-îòâåò unsigned int flag_waiting_answer[COUNT_CONTROL_STATION]; // îæèäàòü ëè îòâåò ïî ñèñòåìå çàïðîñ-îòâåò unsigned int count_ok_modbus[COUNT_CONTROL_STATION]; // ñ÷åò÷èê îøèáîê ïî êîìàíäå modbus 15 unsigned int count_error_modbus[COUNT_CONTROL_STATION]; // ñ÷åò÷èê îøèáîê ïî êîìàíäå modbus 15 unsigned int flag_refresh_array[COUNT_CONTROL_STATION]; // ôëàã íà îæèäàíèå îáíîâëåíèÿ äàííûõ îò modbus /* unsigned int cmd_go_from_control_station[COUNT_CONTROL_STATION]; // cmd_go îò ïîñòà ïóñê/ñòîï ØÈÌà unsigned int set_izad_from_control_station[COUNT_CONTROL_STATION]; // òîê îò ïîñòà unsigned int set_rotor_from_control_station[COUNT_CONTROL_STATION]; // îáîðîòû îò ïîñòà unsigned int cmd_charge_from_control_station[COUNT_CONTROL_STATION]; // ñáîð ñõåìû îò ïîñòà unsigned int cmd_uncharge_from_control_station[COUNT_CONTROL_STATION]; // ðàçáîð ñõåìû îò ïîñòà unsigned int cmd_checkback_from_control_station[COUNT_CONTROL_STATION]; // êâèòèðîâàíèå îò ïîñòà unsigned int cmd_test_leds_from_control_station[COUNT_CONTROL_STATION]; // òåñò ëàìï îò ïîñòà */ unsigned int prev_CAN_count_cycle_input_units[COUNT_CONTROL_STATION]; // ïðåä êîë-âî îáíîâëåíèé èç CAN unsigned int count_raw_array_data_temp[COUNT_CONTROL_STATION]; // èíäåêñ ïåðåáîðà ïî CONTROL_STATION_MAX_RAW_DATA_TEMP void (*clear)(); // Clear buffers void (*update_timers)(); // Îáíóëÿåì òàéìåðû íà ïîñòàõ ñ êîòîðûìè åñòü îáìåí void (*detect_active_station)(); // îïðåäåëÿåì êàêîé ïîñò àêòèâåí } CONTROL_STATION; typedef CONTROL_STATION *CONTROL_STATION_handle; #define CONTROL_STATION_DEFAULTS { \ {0}, \ {0}, \ {0}, \ {0}, \ {0}, \ {0}, \ {0}, \ {0}, \ {0}, \ {0}, \ {0}, \ {0}, \ {0}, \ {0}, \ {0}, \ {0}, \ {0}, \ {0}, \ {0}, \ {0}, \ control_station_clear, \ control_station_update_timers, \ control_station_detect_active_station \ } void control_station_clear(CONTROL_STATION_handle); void control_station_update_timers(CONTROL_STATION_handle); void control_station_detect_active_station(CONTROL_STATION_handle); extern CONTROL_STATION control_station; #endif /* SRC_LIBS_NIO12_CONTROL_STATION_H_ */