1
Dependencies: mbed
define.h@0:2a01c5a56ed1, 2018-07-09 (annotated)
- Committer:
- meric
- Date:
- Mon Jul 09 09:12:38 2018 +0000
- Revision:
- 0:2a01c5a56ed1
1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
meric | 0:2a01c5a56ed1 | 1 | #ifndef _DEFINE_H_ |
meric | 0:2a01c5a56ed1 | 2 | #define _DEFINE_H_ |
meric | 0:2a01c5a56ed1 | 3 | /* |
meric | 0:2a01c5a56ed1 | 4 | **************************************************************************** |
meric | 0:2a01c5a56ed1 | 5 | **************************************************************************** |
meric | 0:2a01c5a56ed1 | 6 | ** DEVINT BİLİŞİM YAZILIM DONANIM TİC. LTD. ŞTİ. TARAFINDAN GELİŞTİRİLMİŞTİR |
meric | 0:2a01c5a56ed1 | 7 | ** İzmir / TÜRKİYE |
meric | 0:2a01c5a56ed1 | 8 | ** |
meric | 0:2a01c5a56ed1 | 9 | ** (C) 2015 |
meric | 0:2a01c5a56ed1 | 10 | **************************************************************************** |
meric | 0:2a01c5a56ed1 | 11 | **************************************************************************** |
meric | 0:2a01c5a56ed1 | 12 | *************************************************************** K A M B O ** |
meric | 0:2a01c5a56ed1 | 13 | */ |
meric | 0:2a01c5a56ed1 | 14 | |
meric | 0:2a01c5a56ed1 | 15 | /* FİLTRASYON MASTER PIN SET |
meric | 0:2a01c5a56ed1 | 16 | RF Tx..................................................................PA_11 |
meric | 0:2a01c5a56ed1 | 17 | RF Rx..................................................................PA_12 |
meric | 0:2a01c5a56ed1 | 18 | RF Aktif...............................................................PB_10 |
meric | 0:2a01c5a56ed1 | 19 | |
meric | 0:2a01c5a56ed1 | 20 | EEPROM SDA..............................................................PB_9 |
meric | 0:2a01c5a56ed1 | 21 | EEPROM SCL..............................................................PB_8 |
meric | 0:2a01c5a56ed1 | 22 | |
meric | 0:2a01c5a56ed1 | 23 | DP Sensörü (0-3.3VDC)...................................................PC_2 |
meric | 0:2a01c5a56ed1 | 24 | Basınç Sensörü (4-20mA).................................................PA_0 |
meric | 0:2a01c5a56ed1 | 25 | Akış Sensörü............................................................PC_3 |
meric | 0:2a01c5a56ed1 | 26 | Sayaç...................................................................PC_4 |
meric | 0:2a01c5a56ed1 | 27 | */ |
meric | 0:2a01c5a56ed1 | 28 | |
meric | 0:2a01c5a56ed1 | 29 | // MASTER ID |
meric | 0:2a01c5a56ed1 | 30 | #define MASTER_ID 0x00 |
meric | 0:2a01c5a56ed1 | 31 | |
meric | 0:2a01c5a56ed1 | 32 | // EEPROM Ayarları |
meric | 0:2a01c5a56ed1 | 33 | #define EEPROM_TYPE 1 // 1: 1 bayt hafıza adreslemeli EEPROM, 2: 2 bayt hafıza adreslemeli EEPROM |
meric | 0:2a01c5a56ed1 | 34 | #define EEPROM_ADDRESS 0xA0 // EEPROM device address |
meric | 0:2a01c5a56ed1 | 35 | #define IO_EXPANDER_ADDRESS 0x40 // IO çoklayıcı adresi |
meric | 0:2a01c5a56ed1 | 36 | #define EEPROM_FREQUENCY 100000 // EEPROM frekansı 100 KHz |
meric | 0:2a01c5a56ed1 | 37 | |
meric | 0:2a01c5a56ed1 | 38 | // EEPROM Varsayılan Değerler |
meric | 0:2a01c5a56ed1 | 39 | #define SYSTEM_SETUP_DEFAULT 15 // Sistem el kitabına bakın |
meric | 0:2a01c5a56ed1 | 40 | #define AUTOSEND_STATUS_DEFAULT 1 // 0: Otomatik veri aktarımı kapalı, 1: Otomatik veri aktarımı açık |
meric | 0:2a01c5a56ed1 | 41 | #define IRRI_TRANSMIT_INTERVAL_DEFAULT 15 // Sulama sırasında veri gönderim sıklığı (Dakika) |
meric | 0:2a01c5a56ed1 | 42 | #define DRY_TRANSMIT_INTERVAL_DEFAULT 15 // Sulama dışında veri gönderim sıklığı, (Dakika) |
meric | 0:2a01c5a56ed1 | 43 | #define PMAX_DEFAULT 10 // Basınç sensörü max. basınç değeri (Bar) |
meric | 0:2a01c5a56ed1 | 44 | #define PRESSURE_SENSOR_DEFAULT 1 // Basınç sensörü tipi: 0: 0-3.3V (HONEYWELL), 1: 4-20mA |
meric | 0:2a01c5a56ed1 | 45 | #define WATERMETER_COEFF_DEFAULT 1000 // Sayaç katsayısı (litre/pals) |
meric | 0:2a01c5a56ed1 | 46 | #define DP_DEFAULT 10 // Ters yıkamanın başlayacağı fark basınç (DP) değeri, bar (10/10 = 1) |
meric | 0:2a01c5a56ed1 | 47 | #define PRESSURE_CONTROL_FREQUENCY_DEFAULT 30 // Basınç kontrol sıklığı (Saniye) |
meric | 0:2a01c5a56ed1 | 48 | #define FLUSH_DURATION_DEFAULT 45 // 1 filtre yıkama süresi (Saniye) |
meric | 0:2a01c5a56ed1 | 49 | #define FLUSH_INTERVAL_DEFAULT 30 // 2 filtre yıkaması arası bekleme süresi (Saniye) |
meric | 0:2a01c5a56ed1 | 50 | #define FLOW_CONTROL_LATENCY_DEFAULT 20 // Akış kontrolü gecikme süresi (Saniye) |
meric | 0:2a01c5a56ed1 | 51 | #define FLUSH_ENABLE_DEFAULT 1 // 0: Ters yıkama kapalı, 1: Ters yıkama açık |
meric | 0:2a01c5a56ed1 | 52 | #define PR_SENSOR_POSITION_DEFAULT 0 // 0: Basınç sensörü filtre girişinde, 1: Basınç sensörü filtre çıkışında |
meric | 0:2a01c5a56ed1 | 53 | #define BACKFLUSH_STOP_DEFAULT 0 // 0: Ters yıkama sırasındaki herhangi bir hatada ters yıkama devam eder, 1: Ters yıkama sırasındaki herhangi bir hatada ters yıkama durur |
meric | 0:2a01c5a56ed1 | 54 | #define INLET_PRS_LOW_TRS_DEFAULT 20 // Giriş basıncı alarmı alt eşik set değeri 1 bar (10/10 = 1) |
meric | 0:2a01c5a56ed1 | 55 | #define INLET_PRS_HIGH_TRS_DEFAULT 60 // Giriş basıncı alarmı üst eşik set değeri 7 bar (70/10 = 7) |
meric | 0:2a01c5a56ed1 | 56 | #define ALARMS_ENABLE_DEFAULT 1 // 0: Alarmlar kapalı, 1: Alarmlar açık |
meric | 0:2a01c5a56ed1 | 57 | #define DP_HIGH_TRS_DEFAULT 15 // DP üst sınır alarmı eşik değeri (Bar) (/10) |
meric | 0:2a01c5a56ed1 | 58 | #define INLET_PRS_SET_DEFAULT 10 // Sulamanın başladığının anlaşıldığı giriş basıncı değeri 0.2 bar (2/10 = 0.2) |
meric | 0:2a01c5a56ed1 | 59 | #define OUTLET_PRS_SET_FOR_DP_DEFAULT 20 // DP kontrolünün başlayacağı filtrasyon çıkış basıncı (Bar) (/10) |
meric | 0:2a01c5a56ed1 | 60 | #define PERIODIC_FLUSH_DEFAULT 10 // Periyodik yıkama aktif ve belirtilen dakikada devreye girer. Bu değer sıfır ise periyodik yıkama aktiflenmez. (saat) |
meric | 0:2a01c5a56ed1 | 61 | #define MIN_FLUSH_INTERVAL_DEFAULT 5 // DP'ye göre yıkamada iki yıkama arasındaki süre (DAKİKA). Bu değer sıfır ise DP'ye göre yıkama bittiğinde DP değeri düşmemişse hemen yeniden yıkama yapar. |
meric | 0:2a01c5a56ed1 | 62 | #define FILTER_NUMBER_DEFAULT 4 // Varsayılan filtre sayısı 4 |
meric | 0:2a01c5a56ed1 | 63 | |
meric | 0:2a01c5a56ed1 | 64 | // EEPROM Adresleri |
meric | 0:2a01c5a56ed1 | 65 | #define DEFAULT_CONFIG_ADDR 0x00 |
meric | 0:2a01c5a56ed1 | 66 | #define IRRI_STATUS_ADDR 0x01 |
meric | 0:2a01c5a56ed1 | 67 | #define SYSTEM_SETUP_ADDR 0x02 |
meric | 0:2a01c5a56ed1 | 68 | #define AUTOSEND_STATUS_ADDR 0x03 |
meric | 0:2a01c5a56ed1 | 69 | #define IRRI_TRANSMIT_INTERVAL_ADDR 0x04 |
meric | 0:2a01c5a56ed1 | 70 | #define DRY_TRANSMIT_INTERVAL_ADDR 0x05 |
meric | 0:2a01c5a56ed1 | 71 | #define WATERMETER_COEFF_ADDR_1 0x06 |
meric | 0:2a01c5a56ed1 | 72 | #define WATERMETER_COEFF_ADDR_2 0x07 |
meric | 0:2a01c5a56ed1 | 73 | #define PMAX_ADDR 0x08 |
meric | 0:2a01c5a56ed1 | 74 | #define PRESSURE_SENSOR_ADDR 0X09 |
meric | 0:2a01c5a56ed1 | 75 | #define DP_ADDR 0x0A |
meric | 0:2a01c5a56ed1 | 76 | #define PRESSURE_CONTROL_FREQUENCY_ADDR 0x0B |
meric | 0:2a01c5a56ed1 | 77 | #define FLUSH_DURATION_ADDR 0x0C |
meric | 0:2a01c5a56ed1 | 78 | #define FLUSH_INTERVAL_ADDR 0x0D |
meric | 0:2a01c5a56ed1 | 79 | #define FLOW_CONTROL_LATENCY_ADDR 0x0E |
meric | 0:2a01c5a56ed1 | 80 | #define FLUSH_ENABLE_ADDR 0x0F |
meric | 0:2a01c5a56ed1 | 81 | #define PR_SENSOR_POSITION_ADDR 0x10 |
meric | 0:2a01c5a56ed1 | 82 | #define BACKFLUSH_STOP_ADDR 0x11 |
meric | 0:2a01c5a56ed1 | 83 | #define INLET_PRS_LOW_TRS_ADDR 0x12 |
meric | 0:2a01c5a56ed1 | 84 | #define INLET_PRS_HIGH_TRS_ADDR 0x13 |
meric | 0:2a01c5a56ed1 | 85 | #define ALARMS_ENABLE_ADDR 0x14 |
meric | 0:2a01c5a56ed1 | 86 | #define DP_HIGH_TRS_ADDR 0x15 |
meric | 0:2a01c5a56ed1 | 87 | #define INLET_PRS_SET_ADDR 0x16 |
meric | 0:2a01c5a56ed1 | 88 | #define OUTLET_PRS_SET_FOR_DP_ADDR 0x17 |
meric | 0:2a01c5a56ed1 | 89 | #define PERIODIC_FLUSH_ADDR 0x18 |
meric | 0:2a01c5a56ed1 | 90 | #define MIN_FLUSH_INTERVAL_ADDR_1 0x19 |
meric | 0:2a01c5a56ed1 | 91 | #define MIN_FLUSH_INTERVAL_ADDR_2 0x1A |
meric | 0:2a01c5a56ed1 | 92 | #define FILTER_NUMBER_ADDR 0x1B |
meric | 0:2a01c5a56ed1 | 93 | |
meric | 0:2a01c5a56ed1 | 94 | // RF Koordinatör Adresi |
meric | 0:2a01c5a56ed1 | 95 | #define COORD_ADDR_1 255 // WSN koordinatör adresi 1. baytı (0xFF) |
meric | 0:2a01c5a56ed1 | 96 | #define COORD_ADDR_2 255 // WSN koordinatör adresi 2. baytı (0xFF) |
meric | 0:2a01c5a56ed1 | 97 | |
meric | 0:2a01c5a56ed1 | 98 | // RF USART |
meric | 0:2a01c5a56ed1 | 99 | #define TX_RF PA_11 // RF Module Tx Pin (Serial6) |
meric | 0:2a01c5a56ed1 | 100 | #define RX_RF PA_12 // RF Module Rx Pin (Serial6) |
meric | 0:2a01c5a56ed1 | 101 | #define RF_ACTIVE PB_10 // RF Reset Pin (3.3v verilirse RF aktif kalır) |
meric | 0:2a01c5a56ed1 | 102 | #define BAUD_SERIAL_RF 38400 // RF USART Baudrate |
meric | 0:2a01c5a56ed1 | 103 | #define CR 13 // "\r" ASCII kodu |
meric | 0:2a01c5a56ed1 | 104 | #define EQUAL 61 // "=" ASCII kodu |
meric | 0:2a01c5a56ed1 | 105 | |
meric | 0:2a01c5a56ed1 | 106 | // MASTER USART |
meric | 0:2a01c5a56ed1 | 107 | #define TX_MASTER PB_6 |
meric | 0:2a01c5a56ed1 | 108 | #define RX_MASTER PB_7 |
meric | 0:2a01c5a56ed1 | 109 | #define BAUD_MASTER 38400 |
meric | 0:2a01c5a56ed1 | 110 | #define CR 13 // "\r" ASCII kodu |
meric | 0:2a01c5a56ed1 | 111 | |
meric | 0:2a01c5a56ed1 | 112 | // GPIO |
meric | 0:2a01c5a56ed1 | 113 | #define WATERMETER_PIN PC_4 // IN1 - Sayaç |
meric | 0:2a01c5a56ed1 | 114 | #define FLOW_PIN PC_3 // IN2 - Akış sensörü |
meric | 0:2a01c5a56ed1 | 115 | #define DP_PIN PC_2 // IN3 - Fark basınç sensörü |
meric | 0:2a01c5a56ed1 | 116 | #define PRESSURE_PIN PA_0 // IN4 - Basınç sensörü |
meric | 0:2a01c5a56ed1 | 117 | |
meric | 0:2a01c5a56ed1 | 118 | // Diğer |
meric | 0:2a01c5a56ed1 | 119 | #define RMS_SAMPLING_NUMBER 100 // Analog kanal okumaları için RMS örnekleme sayısı |
meric | 0:2a01c5a56ed1 | 120 | #define RT_DATA_TRANSMIT_INTERVAL 30 // Gerçek zamanlı veri 30 sn aralıkla gönderiliyor |
meric | 0:2a01c5a56ed1 | 121 | |
meric | 0:2a01c5a56ed1 | 122 | // Alarmlar |
meric | 0:2a01c5a56ed1 | 123 | #define BACKFLUSH_DP_STARTED 255 |
meric | 0:2a01c5a56ed1 | 124 | #define BAKCFLUSH_ENDED 254 |
meric | 0:2a01c5a56ed1 | 125 | |
meric | 0:2a01c5a56ed1 | 126 | #define DP_CONTROL_STARTED 253 |
meric | 0:2a01c5a56ed1 | 127 | |
meric | 0:2a01c5a56ed1 | 128 | #define IRRIGATION_STARTED 252 |
meric | 0:2a01c5a56ed1 | 129 | #define IRRIGATION_ENDED 251 |
meric | 0:2a01c5a56ed1 | 130 | |
meric | 0:2a01c5a56ed1 | 131 | #define INLET_LOW_PRESSURE 250 |
meric | 0:2a01c5a56ed1 | 132 | #define INLET_NORMAL_PRESSURE 249 |
meric | 0:2a01c5a56ed1 | 133 | #define INLET_HIGH_PRESSURE 248 |
meric | 0:2a01c5a56ed1 | 134 | |
meric | 0:2a01c5a56ed1 | 135 | #define FILTER_FLUSH_STARTED 1 |
meric | 0:2a01c5a56ed1 | 136 | #define FILTER_FLUSH_ENDED 2 |
meric | 0:2a01c5a56ed1 | 137 | |
meric | 0:2a01c5a56ed1 | 138 | #define NO_FLOW_DURING_FLUSH 3 |
meric | 0:2a01c5a56ed1 | 139 | #define FLOW_DURING_FLUSH 4 |
meric | 0:2a01c5a56ed1 | 140 | |
meric | 0:2a01c5a56ed1 | 141 | #define BACKFLUSH_MANUAL_STARTED 247 |
meric | 0:2a01c5a56ed1 | 142 | #define ALREADY_FLUSHING 246 |
meric | 0:2a01c5a56ed1 | 143 | #define NO_IRRIGATION_FOR_FLUSHING 245 |
meric | 0:2a01c5a56ed1 | 144 | #define FLUSH_DISABLED 244 |
meric | 0:2a01c5a56ed1 | 145 | #define BACKFLUSH_PERIODIC_STARTED 243 |
meric | 0:2a01c5a56ed1 | 146 | |
meric | 0:2a01c5a56ed1 | 147 | enum node_commands { |
meric | 0:2a01c5a56ed1 | 148 | |
meric | 0:2a01c5a56ed1 | 149 | FENABLE = 1, |
meric | 0:2a01c5a56ed1 | 150 | FDISABLE, |
meric | 0:2a01c5a56ed1 | 151 | FSETSYS, |
meric | 0:2a01c5a56ed1 | 152 | FSETDEF, |
meric | 0:2a01c5a56ed1 | 153 | FGETCFG, |
meric | 0:2a01c5a56ed1 | 154 | FREAD, |
meric | 0:2a01c5a56ed1 | 155 | FSTART, |
meric | 0:2a01c5a56ed1 | 156 | FSTOP, |
meric | 0:2a01c5a56ed1 | 157 | FTEST, |
meric | 0:2a01c5a56ed1 | 158 | FRESET, |
meric | 0:2a01c5a56ed1 | 159 | FCLEAR, |
meric | 0:2a01c5a56ed1 | 160 | FFIX, |
meric | 0:2a01c5a56ed1 | 161 | FGETSTATUS, |
meric | 0:2a01c5a56ed1 | 162 | FGETFSTATUS, |
meric | 0:2a01c5a56ed1 | 163 | FLUSHNOW, |
meric | 0:2a01c5a56ed1 | 164 | SELTESTON, |
meric | 0:2a01c5a56ed1 | 165 | SELTESTOFF, |
meric | 0:2a01c5a56ed1 | 166 | FFGETSTAT |
meric | 0:2a01c5a56ed1 | 167 | }; |
meric | 0:2a01c5a56ed1 | 168 | |
meric | 0:2a01c5a56ed1 | 169 | enum solenoid_commands { |
meric | 0:2a01c5a56ed1 | 170 | |
meric | 0:2a01c5a56ed1 | 171 | CLOSE_SOLENOID = 0x00, |
meric | 0:2a01c5a56ed1 | 172 | OPEN_SOLENOID = 0x01, |
meric | 0:2a01c5a56ed1 | 173 | TEST_OPEN_SOLENOID = 0x02, |
meric | 0:2a01c5a56ed1 | 174 | TEST_CLOSE_SOLENOID = 0x03 |
meric | 0:2a01c5a56ed1 | 175 | |
meric | 0:2a01c5a56ed1 | 176 | }; |
meric | 0:2a01c5a56ed1 | 177 | |
meric | 0:2a01c5a56ed1 | 178 | enum success_state { |
meric | 0:2a01c5a56ed1 | 179 | |
meric | 0:2a01c5a56ed1 | 180 | _ERROR_ = 0x00, |
meric | 0:2a01c5a56ed1 | 181 | _OK_ = 0x01 |
meric | 0:2a01c5a56ed1 | 182 | |
meric | 0:2a01c5a56ed1 | 183 | }; |
meric | 0:2a01c5a56ed1 | 184 | |
meric | 0:2a01c5a56ed1 | 185 | enum filter_solenoid_id { |
meric | 0:2a01c5a56ed1 | 186 | |
meric | 0:2a01c5a56ed1 | 187 | FILTER_MAIN_SOLENOID = 0x00, |
meric | 0:2a01c5a56ed1 | 188 | FILTER_1_SOLENOID = 0x01, |
meric | 0:2a01c5a56ed1 | 189 | FILTER_2_SOLENOID = 0x02, |
meric | 0:2a01c5a56ed1 | 190 | FILTER_3_SOLENOID = 0x03, |
meric | 0:2a01c5a56ed1 | 191 | FILTER_4_SOLENOID = 0x04 |
meric | 0:2a01c5a56ed1 | 192 | |
meric | 0:2a01c5a56ed1 | 193 | }; |
meric | 0:2a01c5a56ed1 | 194 | |
meric | 0:2a01c5a56ed1 | 195 | struct RTU { |
meric | 0:2a01c5a56ed1 | 196 | float dpPressure; |
meric | 0:2a01c5a56ed1 | 197 | float pressure; |
meric | 0:2a01c5a56ed1 | 198 | float inletPressure; |
meric | 0:2a01c5a56ed1 | 199 | float outletPressure; |
meric | 0:2a01c5a56ed1 | 200 | float flowrate; |
meric | 0:2a01c5a56ed1 | 201 | float flowrateTransmission; |
meric | 0:2a01c5a56ed1 | 202 | |
meric | 0:2a01c5a56ed1 | 203 | char temporaryBuffer[256]; |
meric | 0:2a01c5a56ed1 | 204 | char dataBuffer[256]; |
meric | 0:2a01c5a56ed1 | 205 | char rfBuffer[256]; |
meric | 0:2a01c5a56ed1 | 206 | char str[24]; |
meric | 0:2a01c5a56ed1 | 207 | char alarmBuffer[256]; |
meric | 0:2a01c5a56ed1 | 208 | char edata; |
meric | 0:2a01c5a56ed1 | 209 | char edata2[2]; |
meric | 0:2a01c5a56ed1 | 210 | char edata3[3]; |
meric | 0:2a01c5a56ed1 | 211 | char value; |
meric | 0:2a01c5a56ed1 | 212 | char iodata[2]; |
meric | 0:2a01c5a56ed1 | 213 | |
meric | 0:2a01c5a56ed1 | 214 | uint8_t systemSetup; |
meric | 0:2a01c5a56ed1 | 215 | uint8_t filterNumber; |
meric | 0:2a01c5a56ed1 | 216 | uint8_t dpSet; |
meric | 0:2a01c5a56ed1 | 217 | uint8_t flushDuration; |
meric | 0:2a01c5a56ed1 | 218 | uint8_t flushInterval; |
meric | 0:2a01c5a56ed1 | 219 | uint8_t pressureControlFrequency; |
meric | 0:2a01c5a56ed1 | 220 | uint8_t pMax; |
meric | 0:2a01c5a56ed1 | 221 | uint8_t pressureSensorType; |
meric | 0:2a01c5a56ed1 | 222 | uint8_t autosendStatus; |
meric | 0:2a01c5a56ed1 | 223 | uint8_t irriTransmitInterval; |
meric | 0:2a01c5a56ed1 | 224 | uint8_t dryTransmitInterval; |
meric | 0:2a01c5a56ed1 | 225 | uint8_t enableFlush; |
meric | 0:2a01c5a56ed1 | 226 | uint8_t filterByte_1; |
meric | 0:2a01c5a56ed1 | 227 | uint8_t filterByte_2; |
meric | 0:2a01c5a56ed1 | 228 | uint8_t flowControlLatency; |
meric | 0:2a01c5a56ed1 | 229 | uint8_t pressureSensorPosition; |
meric | 0:2a01c5a56ed1 | 230 | uint8_t pressureLowThreshold; |
meric | 0:2a01c5a56ed1 | 231 | uint8_t pressureHighThreshold; |
meric | 0:2a01c5a56ed1 | 232 | uint8_t dpThreshold; |
meric | 0:2a01c5a56ed1 | 233 | uint8_t inletPressureSet; |
meric | 0:2a01c5a56ed1 | 234 | uint8_t outletPressureSet; |
meric | 0:2a01c5a56ed1 | 235 | uint8_t alarm; |
meric | 0:2a01c5a56ed1 | 236 | uint8_t flushEnabled; |
meric | 0:2a01c5a56ed1 | 237 | uint8_t onErrorStop; |
meric | 0:2a01c5a56ed1 | 238 | uint8_t alarmsEnabled; |
meric | 0:2a01c5a56ed1 | 239 | |
meric | 0:2a01c5a56ed1 | 240 | uint16_t watermeterCoefficient; |
meric | 0:2a01c5a56ed1 | 241 | |
meric | 0:2a01c5a56ed1 | 242 | uint64_t WI; |
meric | 0:2a01c5a56ed1 | 243 | uint64_t WIC; |
meric | 0:2a01c5a56ed1 | 244 | float QI; |
meric | 0:2a01c5a56ed1 | 245 | |
meric | 0:2a01c5a56ed1 | 246 | uint64_t WD; |
meric | 0:2a01c5a56ed1 | 247 | uint64_t WDC; |
meric | 0:2a01c5a56ed1 | 248 | float QD; |
meric | 0:2a01c5a56ed1 | 249 | |
meric | 0:2a01c5a56ed1 | 250 | uint64_t rWI; |
meric | 0:2a01c5a56ed1 | 251 | uint64_t rWIC; |
meric | 0:2a01c5a56ed1 | 252 | float rQI; |
meric | 0:2a01c5a56ed1 | 253 | |
meric | 0:2a01c5a56ed1 | 254 | uint64_t rWD; |
meric | 0:2a01c5a56ed1 | 255 | uint64_t rWDC; |
meric | 0:2a01c5a56ed1 | 256 | float rQD; |
meric | 0:2a01c5a56ed1 | 257 | |
meric | 0:2a01c5a56ed1 | 258 | volatile uint64_t pulse; |
meric | 0:2a01c5a56ed1 | 259 | volatile uint64_t pulseTransmit; |
meric | 0:2a01c5a56ed1 | 260 | volatile uint64_t pulsePressureCheck; |
meric | 0:2a01c5a56ed1 | 261 | |
meric | 0:2a01c5a56ed1 | 262 | volatile bool transmitData; |
meric | 0:2a01c5a56ed1 | 263 | volatile bool rfInterruptComplete; |
meric | 0:2a01c5a56ed1 | 264 | bool flushStarted; |
meric | 0:2a01c5a56ed1 | 265 | volatile bool checkPressure; |
meric | 0:2a01c5a56ed1 | 266 | |
meric | 0:2a01c5a56ed1 | 267 | volatile uint8_t rfBufferCounter; |
meric | 0:2a01c5a56ed1 | 268 | volatile uint8_t flushPhase; |
meric | 0:2a01c5a56ed1 | 269 | |
meric | 0:2a01c5a56ed1 | 270 | volatile char rfBufferChar; |
meric | 0:2a01c5a56ed1 | 271 | |
meric | 0:2a01c5a56ed1 | 272 | bool irrigation; |
meric | 0:2a01c5a56ed1 | 273 | bool autosend; |
meric | 0:2a01c5a56ed1 | 274 | bool flushing; |
meric | 0:2a01c5a56ed1 | 275 | bool flowControl; |
meric | 0:2a01c5a56ed1 | 276 | bool errorOccured; |
meric | 0:2a01c5a56ed1 | 277 | bool pressureLowError; |
meric | 0:2a01c5a56ed1 | 278 | bool pressureNormalError; |
meric | 0:2a01c5a56ed1 | 279 | bool pressureHighError; |
meric | 0:2a01c5a56ed1 | 280 | bool dpControlStarted; |
meric | 0:2a01c5a56ed1 | 281 | bool checkDp; |
meric | 0:2a01c5a56ed1 | 282 | |
meric | 0:2a01c5a56ed1 | 283 | bool periodicFlushEnabled; |
meric | 0:2a01c5a56ed1 | 284 | uint8_t periodicFlushInterval; |
meric | 0:2a01c5a56ed1 | 285 | volatile uint16_t periodicFlushCounter; |
meric | 0:2a01c5a56ed1 | 286 | |
meric | 0:2a01c5a56ed1 | 287 | uint16_t minFlushInterval; |
meric | 0:2a01c5a56ed1 | 288 | volatile uint16_t minFlushCounter; |
meric | 0:2a01c5a56ed1 | 289 | bool isMinTimePassed; |
meric | 0:2a01c5a56ed1 | 290 | bool minFlushEnabled; |
meric | 0:2a01c5a56ed1 | 291 | |
meric | 0:2a01c5a56ed1 | 292 | volatile bool transmit_rtData; |
meric | 0:2a01c5a56ed1 | 293 | volatile uint8_t rtCounter; |
meric | 0:2a01c5a56ed1 | 294 | |
meric | 0:2a01c5a56ed1 | 295 | volatile uint64_t rtPulseFirst; |
meric | 0:2a01c5a56ed1 | 296 | bool rtActive; |
meric | 0:2a01c5a56ed1 | 297 | |
meric | 0:2a01c5a56ed1 | 298 | uint8_t testFilterNo; |
meric | 0:2a01c5a56ed1 | 299 | |
meric | 0:2a01c5a56ed1 | 300 | uint16_t lastFlushPhase; |
meric | 0:2a01c5a56ed1 | 301 | |
meric | 0:2a01c5a56ed1 | 302 | volatile char masterBufferChar; |
meric | 0:2a01c5a56ed1 | 303 | char masterRxBuffer[2]; |
meric | 0:2a01c5a56ed1 | 304 | char masterTxBuffer[5]; |
meric | 0:2a01c5a56ed1 | 305 | volatile uint8_t masterBufferCounter; |
meric | 0:2a01c5a56ed1 | 306 | volatile bool masterInterruptComplete; |
meric | 0:2a01c5a56ed1 | 307 | |
meric | 0:2a01c5a56ed1 | 308 | uint16_t globalFlushPhase; |
meric | 0:2a01c5a56ed1 | 309 | uint8_t currentFlushPhase; |
meric | 0:2a01c5a56ed1 | 310 | uint8_t currentFlushingFilter; |
meric | 0:2a01c5a56ed1 | 311 | uint8_t currentWorkingSlave; |
meric | 0:2a01c5a56ed1 | 312 | uint16_t globalFlushingFilter; |
meric | 0:2a01c5a56ed1 | 313 | |
meric | 0:2a01c5a56ed1 | 314 | uint8_t testid; |
meric | 0:2a01c5a56ed1 | 315 | |
meric | 0:2a01c5a56ed1 | 316 | volatile bool flush_isr; |
meric | 0:2a01c5a56ed1 | 317 | |
meric | 0:2a01c5a56ed1 | 318 | uint8_t periodicFirstStartCounter; |
meric | 0:2a01c5a56ed1 | 319 | |
meric | 0:2a01c5a56ed1 | 320 | uint8_t totalSlaveNumber; |
meric | 0:2a01c5a56ed1 | 321 | |
meric | 0:2a01c5a56ed1 | 322 | |
meric | 0:2a01c5a56ed1 | 323 | RTU() { |
meric | 0:2a01c5a56ed1 | 324 | |
meric | 0:2a01c5a56ed1 | 325 | pulse = 0; |
meric | 0:2a01c5a56ed1 | 326 | pulseTransmit = 0; |
meric | 0:2a01c5a56ed1 | 327 | pulsePressureCheck = 0; |
meric | 0:2a01c5a56ed1 | 328 | |
meric | 0:2a01c5a56ed1 | 329 | rfBufferCounter = 0; |
meric | 0:2a01c5a56ed1 | 330 | alarm = 0; |
meric | 0:2a01c5a56ed1 | 331 | flushPhase = 0; |
meric | 0:2a01c5a56ed1 | 332 | pressureSensorPosition = 0; |
meric | 0:2a01c5a56ed1 | 333 | onErrorStop = 0; |
meric | 0:2a01c5a56ed1 | 334 | |
meric | 0:2a01c5a56ed1 | 335 | filterByte_1 = 255; |
meric | 0:2a01c5a56ed1 | 336 | filterByte_2 = 255; |
meric | 0:2a01c5a56ed1 | 337 | alarmsEnabled = 1; |
meric | 0:2a01c5a56ed1 | 338 | |
meric | 0:2a01c5a56ed1 | 339 | transmitData = false; |
meric | 0:2a01c5a56ed1 | 340 | rfInterruptComplete = false; |
meric | 0:2a01c5a56ed1 | 341 | irrigation = false; |
meric | 0:2a01c5a56ed1 | 342 | autosend = false; |
meric | 0:2a01c5a56ed1 | 343 | flushStarted = false; |
meric | 0:2a01c5a56ed1 | 344 | checkPressure = false; |
meric | 0:2a01c5a56ed1 | 345 | flushing = false; |
meric | 0:2a01c5a56ed1 | 346 | flowControl = false; |
meric | 0:2a01c5a56ed1 | 347 | errorOccured = false; |
meric | 0:2a01c5a56ed1 | 348 | pressureLowError = false; |
meric | 0:2a01c5a56ed1 | 349 | pressureNormalError = false; |
meric | 0:2a01c5a56ed1 | 350 | pressureHighError = false; |
meric | 0:2a01c5a56ed1 | 351 | dpControlStarted = false; |
meric | 0:2a01c5a56ed1 | 352 | checkDp = true; |
meric | 0:2a01c5a56ed1 | 353 | |
meric | 0:2a01c5a56ed1 | 354 | WI = 0; |
meric | 0:2a01c5a56ed1 | 355 | WIC = 0; |
meric | 0:2a01c5a56ed1 | 356 | QI = 0.0; |
meric | 0:2a01c5a56ed1 | 357 | |
meric | 0:2a01c5a56ed1 | 358 | WD = 0; |
meric | 0:2a01c5a56ed1 | 359 | WDC = 0; |
meric | 0:2a01c5a56ed1 | 360 | QD = 0.0; |
meric | 0:2a01c5a56ed1 | 361 | |
meric | 0:2a01c5a56ed1 | 362 | rWI = 0; |
meric | 0:2a01c5a56ed1 | 363 | rWIC = 0; |
meric | 0:2a01c5a56ed1 | 364 | rQI = 0.0; |
meric | 0:2a01c5a56ed1 | 365 | |
meric | 0:2a01c5a56ed1 | 366 | rWD = 0; |
meric | 0:2a01c5a56ed1 | 367 | rWDC = 0; |
meric | 0:2a01c5a56ed1 | 368 | rQD = 0.0; |
meric | 0:2a01c5a56ed1 | 369 | |
meric | 0:2a01c5a56ed1 | 370 | periodicFlushEnabled = false; |
meric | 0:2a01c5a56ed1 | 371 | periodicFlushInterval = 0; |
meric | 0:2a01c5a56ed1 | 372 | periodicFlushCounter = 0; |
meric | 0:2a01c5a56ed1 | 373 | |
meric | 0:2a01c5a56ed1 | 374 | minFlushInterval = 0; |
meric | 0:2a01c5a56ed1 | 375 | minFlushCounter = 0; |
meric | 0:2a01c5a56ed1 | 376 | isMinTimePassed = true; |
meric | 0:2a01c5a56ed1 | 377 | minFlushEnabled = false; |
meric | 0:2a01c5a56ed1 | 378 | |
meric | 0:2a01c5a56ed1 | 379 | transmit_rtData = false; |
meric | 0:2a01c5a56ed1 | 380 | rtCounter = 0; |
meric | 0:2a01c5a56ed1 | 381 | |
meric | 0:2a01c5a56ed1 | 382 | rtPulseFirst = 0; |
meric | 0:2a01c5a56ed1 | 383 | rtActive = false; |
meric | 0:2a01c5a56ed1 | 384 | |
meric | 0:2a01c5a56ed1 | 385 | masterBufferCounter = 0; |
meric | 0:2a01c5a56ed1 | 386 | masterInterruptComplete = false; |
meric | 0:2a01c5a56ed1 | 387 | |
meric | 0:2a01c5a56ed1 | 388 | flush_isr = false; |
meric | 0:2a01c5a56ed1 | 389 | |
meric | 0:2a01c5a56ed1 | 390 | periodicFirstStartCounter = 0; |
meric | 0:2a01c5a56ed1 | 391 | } |
meric | 0:2a01c5a56ed1 | 392 | } fnode; |
meric | 0:2a01c5a56ed1 | 393 | |
meric | 0:2a01c5a56ed1 | 394 | // Global değişkenler |
meric | 0:2a01c5a56ed1 | 395 | uint8_t c1 = 0; |
meric | 0:2a01c5a56ed1 | 396 | uint8_t c2 = 0; |
meric | 0:2a01c5a56ed1 | 397 | uint8_t c3 = 0; |
meric | 0:2a01c5a56ed1 | 398 | uint8_t c4 = 0; |
meric | 0:2a01c5a56ed1 | 399 | uint8_t c5_a = 0; |
meric | 0:2a01c5a56ed1 | 400 | uint8_t c5_b = 0; |
meric | 0:2a01c5a56ed1 | 401 | uint16_t c5 = 0; |
meric | 0:2a01c5a56ed1 | 402 | uint8_t c6 = 0; |
meric | 0:2a01c5a56ed1 | 403 | uint8_t c7 = 0; |
meric | 0:2a01c5a56ed1 | 404 | uint8_t c8 = 0; |
meric | 0:2a01c5a56ed1 | 405 | uint8_t c9 = 0; |
meric | 0:2a01c5a56ed1 | 406 | uint8_t c10 = 0; |
meric | 0:2a01c5a56ed1 | 407 | uint8_t c11 = 0; |
meric | 0:2a01c5a56ed1 | 408 | uint8_t c12 = 0; |
meric | 0:2a01c5a56ed1 | 409 | uint8_t c13 = 0; |
meric | 0:2a01c5a56ed1 | 410 | uint8_t c14 = 0; |
meric | 0:2a01c5a56ed1 | 411 | uint8_t c15 = 0; |
meric | 0:2a01c5a56ed1 | 412 | uint8_t c16 = 0; |
meric | 0:2a01c5a56ed1 | 413 | uint8_t c17 = 0; |
meric | 0:2a01c5a56ed1 | 414 | uint8_t c18 = 0; |
meric | 0:2a01c5a56ed1 | 415 | uint8_t c19 = 0; |
meric | 0:2a01c5a56ed1 | 416 | uint8_t c20 = 0; |
meric | 0:2a01c5a56ed1 | 417 | uint8_t c21 = 0; |
meric | 0:2a01c5a56ed1 | 418 | uint8_t c22 = 0; |
meric | 0:2a01c5a56ed1 | 419 | uint8_t c23_a = 0; |
meric | 0:2a01c5a56ed1 | 420 | uint8_t c23_b = 0; |
meric | 0:2a01c5a56ed1 | 421 | uint16_t c23 = 0; |
meric | 0:2a01c5a56ed1 | 422 | uint8_t c24 = 0; |
meric | 0:2a01c5a56ed1 | 423 | uint8_t irriTrsIntOld = 0; |
meric | 0:2a01c5a56ed1 | 424 | uint8_t dryTrsIntOld = 0; |
meric | 0:2a01c5a56ed1 | 425 | |
meric | 0:2a01c5a56ed1 | 426 | float rmsStore[RMS_SAMPLING_NUMBER]; |
meric | 0:2a01c5a56ed1 | 427 | float totalSampling = 0.0; |
meric | 0:2a01c5a56ed1 | 428 | float tempValue = 0.0; |
meric | 0:2a01c5a56ed1 | 429 | float tp = 0.0; |
meric | 0:2a01c5a56ed1 | 430 | float tdp = 0.0; |
meric | 0:2a01c5a56ed1 | 431 | float tdpResult = 0.0; |
meric | 0:2a01c5a56ed1 | 432 | |
meric | 0:2a01c5a56ed1 | 433 | // JSON |
meric | 0:2a01c5a56ed1 | 434 | const char* jsonHeader[9] = {"PRIN:", "PROUT:", "DP:", "WI:", "WIC:", "QI:", "WD:", "WDC:", "QD:"}; |
meric | 0:2a01c5a56ed1 | 435 | const char* json[2] = {"{F:{", "}}"}; |
meric | 0:2a01c5a56ed1 | 436 | const char* jsonAlarm[15] = {"{ALR:\"FALR\"", "ALRCODE:", "APRSIN:", "ADP:", "AIRR:", "AFLUSH:", "AF11:", "AF12:", "AF21:", "AF22:", "AF31:", "AF32:", "AF41:", "AF42:", "}"}; |
meric | 0:2a01c5a56ed1 | 437 | |
meric | 0:2a01c5a56ed1 | 438 | // Komutlar |
meric | 0:2a01c5a56ed1 | 439 | const char* fenable_command = "FENABLE"; |
meric | 0:2a01c5a56ed1 | 440 | const char* fdisable_command = "FDISABLE"; |
meric | 0:2a01c5a56ed1 | 441 | const char* fsetsys_command = "FSETSYS"; |
meric | 0:2a01c5a56ed1 | 442 | const char* fgetcfg_command = "FGETCFG"; |
meric | 0:2a01c5a56ed1 | 443 | const char* fread_command = "FREAD"; |
meric | 0:2a01c5a56ed1 | 444 | const char* fstart_command = "FSTART"; |
meric | 0:2a01c5a56ed1 | 445 | const char* fstop_command = "FSTOP"; |
meric | 0:2a01c5a56ed1 | 446 | const char* ftest_command = "FTEST"; |
meric | 0:2a01c5a56ed1 | 447 | const char* freset_command = "FRESET"; |
meric | 0:2a01c5a56ed1 | 448 | const char* fclear_command = "FCLEAR"; |
meric | 0:2a01c5a56ed1 | 449 | const char* ffix_command = "FFIX"; |
meric | 0:2a01c5a56ed1 | 450 | const char* fgetstatus_command = "FGETSTATUS"; |
meric | 0:2a01c5a56ed1 | 451 | const char* fgetfstatus_command = "FGETFSTATUS"; |
meric | 0:2a01c5a56ed1 | 452 | const char* fflushnow_command = "FLUSHNOW"; |
meric | 0:2a01c5a56ed1 | 453 | const char* frton_command = "FRTON"; |
meric | 0:2a01c5a56ed1 | 454 | const char* frtoff_command = "FRTOFF"; |
meric | 0:2a01c5a56ed1 | 455 | const char* getfrtstatus_command = "GETFRTSTATUS"; |
meric | 0:2a01c5a56ed1 | 456 | const char* selteston_command = "SELTESTON"; |
meric | 0:2a01c5a56ed1 | 457 | const char* seltestoff_command = "SELTESTOFF"; |
meric | 0:2a01c5a56ed1 | 458 | const char* ffgetstat_command = "FFGETSTAT"; |
meric | 0:2a01c5a56ed1 | 459 | |
meric | 0:2a01c5a56ed1 | 460 | // EEPROM I2C |
meric | 0:2a01c5a56ed1 | 461 | I2C i2c(I2C_SDA, I2C_SCL); |
meric | 0:2a01c5a56ed1 | 462 | |
meric | 0:2a01c5a56ed1 | 463 | // DP Sensörü |
meric | 0:2a01c5a56ed1 | 464 | AnalogIn dpSensor = DP_PIN; |
meric | 0:2a01c5a56ed1 | 465 | |
meric | 0:2a01c5a56ed1 | 466 | // Basınç sensörü |
meric | 0:2a01c5a56ed1 | 467 | AnalogIn pressureSensor = PRESSURE_PIN; |
meric | 0:2a01c5a56ed1 | 468 | |
meric | 0:2a01c5a56ed1 | 469 | // Akış sensörü |
meric | 0:2a01c5a56ed1 | 470 | DigitalIn flowSensor(FLOW_PIN, PullDown); |
meric | 0:2a01c5a56ed1 | 471 | |
meric | 0:2a01c5a56ed1 | 472 | // RF Reset Pin |
meric | 0:2a01c5a56ed1 | 473 | DigitalOut rfPower(RF_ACTIVE, 0); |
meric | 0:2a01c5a56ed1 | 474 | |
meric | 0:2a01c5a56ed1 | 475 | // Sayaç & Sayaç ISR |
meric | 0:2a01c5a56ed1 | 476 | DigitalIn watermeterPin(WATERMETER_PIN, PullDown); |
meric | 0:2a01c5a56ed1 | 477 | InterruptIn watermeterInterrupt(WATERMETER_PIN); |
meric | 0:2a01c5a56ed1 | 478 | |
meric | 0:2a01c5a56ed1 | 479 | // RF USART |
meric | 0:2a01c5a56ed1 | 480 | RawSerial rf(TX_RF, RX_RF); |
meric | 0:2a01c5a56ed1 | 481 | RawSerial master(TX_MASTER, RX_MASTER); |
meric | 0:2a01c5a56ed1 | 482 | |
meric | 0:2a01c5a56ed1 | 483 | // Zamanlayıcılar |
meric | 0:2a01c5a56ed1 | 484 | Timeout flushTimer; |
meric | 0:2a01c5a56ed1 | 485 | Timer timer; |
meric | 0:2a01c5a56ed1 | 486 | Ticker pressureCheckTicker; |
meric | 0:2a01c5a56ed1 | 487 | Ticker dataTransmitTicker; |
meric | 0:2a01c5a56ed1 | 488 | Ticker periodicFlushTicker; |
meric | 0:2a01c5a56ed1 | 489 | Ticker minFlushTicker; |
meric | 0:2a01c5a56ed1 | 490 | Ticker rtDataTransmitTicker; |
meric | 0:2a01c5a56ed1 | 491 | #endif |