source: S-port/trunk/Core/Inc/plc.h

Last change on this file was 1, checked in by AlexLir, 3 years ago
File size: 3.5 KB
Line 
1#ifndef __PLC_H
2#define __PLC_H
3#include <stdint.h>
4
5#define AMOUNT_REMOUT_BLOCK_PLC 3
6#define AMOUNT_BLOCK_PLC AMOUNT_REMOUT_BLOCK_PLC + 1
7
8#define PLC_ADDR_BOARD 0x0E // board ÈÏ 01
9#define PLC_MARKER_BOARD 0xEE
10
11#define MAX_LEN_PLC_BUFF 1536
12
13typedef struct {
14 uint16_t len;
15 uint8_t data[MAX_LEN_PLC_BUFF + 64];
16}plc_buff_typeDef;
17
18typedef struct {
19 uint8_t Pointer;
20 uint8_t Buff[MAX_LEN_PLC_BUFF];
21 uint16_t LenBuff;
22}plc_TxData_typeDef;
23
24typedef struct {
25 _Bool Valid;
26 uint8_t Query; // çàïðîñ äàííûõ
27 uint8_t Pointer;
28 uint8_t Buff[MAX_LEN_PLC_BUFF];
29 uint16_t LenBuff;
30}plc_RxData_typeDef;
31
32typedef enum { //b
33 FPRM,
34 FPRMS
35}TypeFilter_typeDef;
36
37typedef enum { //a
38 P_NONE,
39 P_20W,
40 P_40W
41}PowerPRD_typedef;
42
43typedef enum {
44 ATT_FPRM_0 = 0,
45 ATT_FPRM_6,
46 ATT_FPRM_12,
47 ATT_FPRM_18,
48 ATT_FPRM_24
49}FilterATT_typeDef;
50
51typedef enum {
52 NO_SIGNAL,
53 OVERLOAD,
54 ACTIVATION,
55 RECEIVING
56}StatusReceiver_typeDef;
57
58typedef enum {
59 ANALOG,
60 TRANSIT,
61 DIGITAL_MASTER,
62 DIGITAL_SLAVE
63}ModeChannel_typeDef;
64
65typedef enum {
66 NO_ALARM,
67 LINE_BREAK,
68 FAILURE_PRD,
69 NO_SIGNAL_PWR_AMP,
70 HIGH_TEMPERATURE
71}pwrAmpAlarm_typeDef;
72
73typedef struct { //(UM-02)
74 _Bool Presence;
75 uint8_t Version;
76 pwrAmpAlarm_typeDef Alarm;
77 uint8_t Level_Transmitter; // l-prd
78 uint8_t Temp;
79 uint16_t Voltage;
80}PowerAmplifier_typeDef;
81
82typedef struct {
83 _Bool En; //Âêëþ÷åí/âûêëþ÷åí ïðèåìíèê (ÌÄ-02): Ðåã 0x11, 0x12, 0x13 (áàéò 3[7])
84 StatusReceiver_typeDef Status_Receiver;
85 ModeChannel_typeDef Mode;
86 uint16_t Frequency_Transmitter; // ×àòîòà ïåðåäàò÷èêà (ÌÄ-02): Ðåã 0x11, 0x12, 0x13 (áàéòû (3,2)[9:0])
87 uint16_t Frequency_Receiver; // ×àòîòà ïðèåìíèêà (ÌÄ-02): Ðåã 0x11, 0x12, 0x13 (áàéòû (5,4)[9:0])
88 int16_t Level_Receiver; // Óðîâåíü ñèãíàëà ïðèåìíèêà ((Level_InputSignal * -0,2) + 0,007 + Frequency_Receiver + 9 + 2a + 2b + ATT) (-20...+30 dBm)
89 int16_t Level_InputSignal; // Óðîâåíü âõîäíîãî ñèãíàëà (ÌÄ-02): Ðåã - 0x15, 0x16, 0x17 (áàéò 3), (0.0..-51.0 äÁ, -0.2äÁ/åä)
90 uint16_t Rate_Transmitter; // Ñêîðîñòü ïåðåäàò÷èêà (ÌÄ-02): Ðåã - 0x15, 0x16, 0x17 (áàéò 4) (0,1...30 êá/ñ)
91 uint16_t Rate_Receiver; //Ñêîðîñòü ïðèåìíèêà (ÌÄ-02): Ðåã - 0x15, 0x16, 0x17 (áàéò 5) (0,1 - 30 êá/ñ)
92 uint16_t QualityNoise_Receiver; // Çàïàñ ïî øóìó ïðèåìíèêà (ÌÄ-02): Ðåã - 0x15, 0x16, 0x17 (áàéò 6) (10...30 dB)
93 uint16_t SNR_Receiver; // Îòíîøåíèå ñèãíàë/øóì (Rate_Receiver + QualityNoise_Receiver - 2) (10...40 dB)
94 uint8_t Kosh_sig;// êîýôôèöèåíò áèòîâûõ îøèáîê (sig * 10)
95 int8_t Kosh_exp; // -7 ñòåïåíü ê ïðèìåðó
96 uint8_t Kosh_raw;
97 uint16_t CounterError;
98}plc_Channel_typeDef;
99
100typedef struct {
101 char NameBlock[64];
102 _Bool ChangeSettings; // ôëàã åñëè íàñòðîéêè ìåíÿþòñÿ è íóæíî ñäåëàòü îòñóòñòâóþùèì áëîê
103 _Bool EnablePoll;
104 uint8_t PollingTimeout; // âðåìÿ ÷åðåç êîòîðîå îïðàøèâàòü áëîê(â ñåêóíäàõ)
105 uint8_t Route[9];
106 uint8_t CommonAlarm; // 1 - missing block, 0 - normal, 2 - alarm
107 uint8_t VersionMD;
108 char Version[16];
109 TypeFilter_typeDef Type_Filter;
110 PowerPRD_typedef Power_PRD;
111 FilterATT_typeDef FilterATT;
112 plc_Channel_typeDef HF_Channel[3];
113 PowerAmplifier_typeDef PowerAmplifier[2];
114}plc_data_typeDef;
115
116typedef struct {
117 _Bool enable_all_pool;
118 uint8_t num; // êîë-âî áëîêîâ äëÿ îïðîñà
119 uint8_t change_block; // äëÿ ïåðåíîñà áëîêîâ
120}plc_common_typeDef;
121
122uint16_t plc_calc_cs(uint8_t *buff, uint16_t len);
123void plc_receive(uint8_t ch);
124uint16_t escape_encoder(uint8_t *buff, uint16_t len_buf, uint8_t *out_biff);
125uint8_t my_cmd_plc(plc_RxData_typeDef *PLCRxData, plc_TxData_typeDef *PLCTxData);
126
127#endif /* __PLC_H */
Note: See TracBrowser for help on using the repository browser.