#ifndef __PLC_H #define __PLC_H #include #define AMOUNT_REMOUT_BLOCK_PLC 3 #define AMOUNT_BLOCK_PLC AMOUNT_REMOUT_BLOCK_PLC + 1 #define PLC_ADDR_BOARD 0x0E // board ИП 01 #define PLC_MARKER_BOARD 0xEE #define MAX_LEN_PLC_BUFF 1536 typedef struct { uint16_t len; uint8_t data[MAX_LEN_PLC_BUFF + 64]; }plc_buff_typeDef; typedef struct { uint8_t Pointer; uint8_t Buff[MAX_LEN_PLC_BUFF]; uint16_t LenBuff; }plc_TxData_typeDef; typedef struct { _Bool Valid; uint8_t Query; // запрос данных uint8_t Pointer; uint8_t Buff[MAX_LEN_PLC_BUFF]; uint16_t LenBuff; }plc_RxData_typeDef; typedef enum { //b FPRM, FPRMS }TypeFilter_typeDef; typedef enum { //a P_NONE, P_20W, P_40W }PowerPRD_typedef; typedef enum { ATT_FPRM_0 = 0, ATT_FPRM_6, ATT_FPRM_12, ATT_FPRM_18, ATT_FPRM_24 }FilterATT_typeDef; typedef enum { NO_SIGNAL, OVERLOAD, ACTIVATION, RECEIVING }StatusReceiver_typeDef; typedef enum { ANALOG, TRANSIT, DIGITAL_MASTER, DIGITAL_SLAVE }ModeChannel_typeDef; typedef enum { NO_ALARM, LINE_BREAK, FAILURE_PRD, NO_SIGNAL_PWR_AMP, HIGH_TEMPERATURE }pwrAmpAlarm_typeDef; typedef struct { //(UM-02) _Bool Presence; uint8_t Version; pwrAmpAlarm_typeDef Alarm; uint8_t Level_Transmitter; // l-prd uint8_t Temp; uint16_t Voltage; }PowerAmplifier_typeDef; typedef struct { _Bool En; //Включен/выключен приемник (МД-02): Рег 0x11, 0x12, 0x13 (байт 3[7]) StatusReceiver_typeDef Status_Receiver; ModeChannel_typeDef Mode; uint16_t Frequency_Transmitter; // Чатота передатчика (МД-02): Рег 0x11, 0x12, 0x13 (байты (3,2)[9:0]) uint16_t Frequency_Receiver; // Чатота приемника (МД-02): Рег 0x11, 0x12, 0x13 (байты (5,4)[9:0]) int16_t Level_Receiver; // Уровень сигнала приемника ((Level_InputSignal * -0,2) + 0,007 + Frequency_Receiver + 9 + 2a + 2b + ATT) (-20...+30 dBm) int16_t Level_InputSignal; // Уровень входного сигнала (МД-02): Рег - 0x15, 0x16, 0x17 (байт 3), (0.0..-51.0 дБ, -0.2дБ/ед) uint16_t Rate_Transmitter; // Скорость передатчика (МД-02): Рег - 0x15, 0x16, 0x17 (байт 4) (0,1...30 кб/с) uint16_t Rate_Receiver; //Скорость приемника (МД-02): Рег - 0x15, 0x16, 0x17 (байт 5) (0,1 - 30 кб/с) uint16_t QualityNoise_Receiver; // Запас по шуму приемника (МД-02): Рег - 0x15, 0x16, 0x17 (байт 6) (10...30 dB) uint16_t SNR_Receiver; // Отношение сигнал/шум (Rate_Receiver + QualityNoise_Receiver - 2) (10...40 dB) uint8_t Kosh_sig;// коэффициент битовых ошибок (sig * 10) int8_t Kosh_exp; // -7 степень к примеру uint8_t Kosh_raw; uint16_t CounterError; }plc_Channel_typeDef; typedef struct { char NameBlock[64]; _Bool ChangeSettings; // флаг если настройки меняются и нужно сделать отсутствующим блок _Bool EnablePoll; uint8_t PollingTimeout; // время через которое опрашивать блок(в секундах) uint8_t Route[9]; uint8_t CommonAlarm; // 1 - missing block, 0 - normal, 2 - alarm uint8_t VersionMD; char Version[16]; TypeFilter_typeDef Type_Filter; PowerPRD_typedef Power_PRD; FilterATT_typeDef FilterATT; plc_Channel_typeDef HF_Channel[3]; PowerAmplifier_typeDef PowerAmplifier[2]; }plc_data_typeDef; typedef struct { _Bool enable_all_pool; uint8_t num; // кол-во блоков для опроса uint8_t change_block; // для переноса блоков }plc_common_typeDef; uint16_t plc_calc_cs(uint8_t *buff, uint16_t len); void plc_receive(uint8_t ch); uint16_t escape_encoder(uint8_t *buff, uint16_t len_buf, uint8_t *out_biff); uint8_t my_cmd_plc(plc_RxData_typeDef *PLCRxData, plc_TxData_typeDef *PLCTxData); #endif /* __PLC_H */