Added integration of analog channels, introduced three new setpoints (Pb_1, Pb_2, Tp) for automatic compressor operation.

Dependencies:   _24LCXXX

Revision:
12:de8c39bf5da3
Parent:
11:86a18c130515
Child:
13:65936a2190ac
--- a/main.cpp	Fri Oct 08 11:53:23 2021 +0000
+++ b/main.cpp	Fri Oct 15 10:15:22 2021 +0000
@@ -1,27 +1,28 @@
-// 07.10.2021 Продолжение (клон )mbed-os5-press22
-// По шине i2c Arduino Nano с адресом 2, передает значение веса с дискретностью 1 кг.
-// digital pin 11, pin 12 as an input концевики теперь нормально замкнутые
-// Вернул timer_4. Теперь он периодически открывает выпускной клапан для контроля утечек воды.
-// Вместо pc.printf("Reset ALARM \r\n") теперь plotter.printf("Reset ALARM \r\n") это нужно для парсера программы  Setup_EEPROM
-// Удалена команда pc.printf, посылающая пустую строку раз в секунду и связанный с ней timer_4, т.к. изменена программа оператора (Loc()).
-// Суммирование значений каналов А0 А1 А2 было 9 раз, исправлено на 10.
-// Передаваемые через pc.printf сообщения в РС дополнены контрольными суммами для увеличения надёжности связи.
-//    Введена команда pc.printf, посылающая пустую строку раз в секунду, на случай потери (порчи )данных при пересылке и
+// 11.10.2021 Продолжение (клон )mbed-os5-press22
+//19. Теперь вес принимается по шине i2c в Ньютонах, как на дисплее динамометра.
+//18. По шине i2c Arduino Nano с адресом 2, передает значение веса с дискретностью 1 кг, приём происходит раз в секунду, используется timer.
+//17. digital pin 11, pin 12 as an input концевики теперь нормально замкнутые.
+//16. Вернул timer_4. Теперь он периодически открывает выпускной клапан для контроля утечек воды.
+//15. Вместо pc.printf("Reset ALARM \r\n") теперь plotter.printf("Reset ALARM \r\n") это нужно для парсера программы  Setup_EEPROM.
+//14. Удалена команда pc.printf, посылающая пустую строку раз в секунду и связанный с ней timer_4, т.к. изменена программа оператора (Loc()).
+//13. Суммирование значений каналов А0 А1 А2 было 9 раз, исправлено на 10.
+//12. Передаваемые через pc.printf сообщения в РС дополнены контрольными суммами для увеличения надёжности связи.
+//11. Введена команда pc.printf, посылающая пустую строку раз в секунду, на случай потери (порчи )данных при пересылке и
 //    возможного зависания программы оператора при ожидании символа из serial порта (для этого добавлен timer_4).
-// Значения уставок EEPROM2  выводяться в pc.print в специальной строке с текущими данными диагностики
-// Сделан дополнительный блок в парсере для декодирования приходящих аварийных уставок, они пишутся в  EEPROM2
-// Сделан timer_2 для отсчёта времени открытого состояния вентиля 1
-// Сделан timer_3 для отсчёта времени открытого состояния вентиля 2
-// Подключены цифровые входы D11,D12,D13. Реализованы условия остановки по 10 аварийным событиям.
-// Реализован  сброс события (event_N = 255) через кнопку Стоп в программе оператора 
-// Принимается флаг от кнопки Стоп - полной остановки регулятора - закрытие всех 4-х клапанов и передача статуса кнопки в программу оператора
-// Принимается флаг от кнопок включения - выключения компрессора, - идет команда на дискретный выход digital_6(PB_10)
-// Принимается новая уставка num_chan - переключение номера  активного измерительного канала для обратной связи регулятора. 
-// Эта уставка, как и все остальные,  пишется в EEPROM.
-// Включены все шесть аналоговых входа, читаются пять
-// при получении командной строки с нулевой суммой, по новому флагу flag_zerostart, передаётся в сериал текущие уставки и величины
-// (важно для старта программы на PC), эти нулевые уставки не вводятся в регулятор и не записываются в EEPROM.
-// сторожевой таймер,  истекает через 100мс
+//10. Значения уставок EEPROM2  выводяться в pc.print в специальной строке с текущими данными диагностики.
+//9. Сделан дополнительный блок в парсере для декодирования приходящих аварийных уставок, они пишутся в  EEPROM2.
+//8. Сделан timer_2 для отсчёта времени открытого состояния вентиля 1.
+//   Сделан timer_3 для отсчёта времени открытого состояния вентиля 2.
+//7. Подключены цифровые входы D11,D12,D13. Реализованы условия остановки по 10 аварийным событиям.
+//6. Реализован  сброс события (event_N = 255) через кнопку Стоп в программе оператора .
+//5. Принимается флаг от кнопки Стоп - полной остановки регулятора - закрытие всех 4-х клапанов и передача статуса кнопки в программу оператора.
+//   Принимается флаг от кнопок включения - выключения компрессора, - идет команда на дискретный выход digital_6(PB_10)
+//4. Принимается новая уставка num_chan - переключение номера  активного измерительного канала для обратной связи регулятора. 
+//   эта уставка, как и все остальные,  пишется в EEPROM.
+//3. Включены все шесть аналоговых входа, читаются пять.
+//2. При получении командной строки с нулевой суммой, по новому флагу flag_zerostart, передаётся в сериал текущие уставки и величины
+//   (важно для старта программы на PC), эти нулевые уставки не вводятся в регулятор и не записываются в EEPROM.
+//1. Сторожевой таймер,  истекает через 100мс.
 // 
 
 #include "mbed.h"
@@ -77,7 +78,7 @@
 int numSet, anySet;
 //=================================
 int value_auto=250 ;                                                            //set begin value auto "pressure"
-int WL = 0;                                                                     //напряжение с аналогового входа А0 (WL - вес опресовщика)
+int WL = 0;                                                                     // WL - вес опресовщика
 int sensor_value =0;                                                            //напряжение с аналогового входа А1 (Pa - текущее давление)
 int Pb = 0;                                                                     //напряжение с аналогового входа А2 (Pb - давление в баллоне)
 int Pw1 = 0;                                                                    //напряжение с аналогового входа А3 (Pw1 - давление воды на входе опрессовщика)
@@ -475,7 +476,7 @@
     int time, time_2, time_3, time_4, ks, valve1, valve2, countValve1=0, countValve2=0, temp_valueSensor;
     int frequencyValve1, frequencyValve2;
     float raw_value_sum_0=0, raw_value_sum_1=0, raw_value_sum_2=0, raw_value_sum_3=0, raw_value_sum_4=0, raw_value_sum_5=0;
-    char cmd[1];                                                                //массив с весом, принятым от slave
+    char cmd[2];                                                                //массив с весом, принятым от slave
     //i2c.read( addr8bit, cmd, 1);                                                 //читаем вес по шине i2c  из slave Arduino_Nano
     //pc.printf("cmd[0] = %x\n", cmd[0]);
 
@@ -649,9 +650,9 @@
         frequencyValve1 =  countValve1;                                         //частота (Гц) срабатывания клапана 1 
         frequencyValve2 =  countValve2;                                         //частота (Гц) срабатывания клапана 2 
         countValve1=0;
-        countValve2=0;
-        i2c.read( addr8bit, cmd, 1);                                            //читаем вес по шине i2c  из slave Arduino_Nano
-        WL=cmd[0];
+        countValve2=0;       
+        i2c.read( addr8bit, cmd, 2);                                            //читаем вес в байтах по шине i2c  из slave Arduino_Nano
+        WL = (cmd[0]<<8)|cmd[1];                                                //преобразовываем байты побитовым сдвигом влево и сложением в десятичное число Ньютонов
         //plotter.printf("cmd[0] = %x\n", cmd[0]);
       }
       //--------------------==_ALARM_scope_Begin==----------------------