1

Dependencies:   mbed

Committer:
meric
Date:
Mon Jul 09 09:12:38 2018 +0000
Revision:
0:2a01c5a56ed1
1

Who changed what in which revision?

UserRevisionLine numberNew 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