Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
cms:units:sensors:calc [11/06/2018 10:13]
tagr [Пример 2: датчик уровня топлива]
cms:units:sensors:calc [06/07/2020 12:13] (текущий)
irra
Строка 4: Строка 4:
 Таблица расчета имеет ключевое значение для настройки датчика (см. [[props|свойства датчика]]). Согласно таблице расчета сырые данные,​ приходящие в параметре,​ преобразуются в значения датчика,​ например,​ некоторое абстрактное 86 преобразуется в 10,5 литров топлива. ​ Таблица расчета имеет ключевое значение для настройки датчика (см. [[props|свойства датчика]]). Согласно таблице расчета сырые данные,​ приходящие в параметре,​ преобразуются в значения датчика,​ например,​ некоторое абстрактное 86 преобразуется в 10,5 литров топлива. ​
  
-Таблица расчета нужна не всегда. Например,​ если датчик цифровой и присылает только 1 или 0, которые соответствуют состояниям ​"включен/​выключен", в таблице расчета значений для такого датчика нужды нет.+Таблица расчета нужна не всегда. Например,​ если датчик цифровой и присылает только 1 или 0, которые соответствуют состояниям ​**включен/​выключен**, в таблице расчета значений для такого датчика нужды нет.
  
-:!: Внимание:​ заполненная таблица расчета необходима для аналогового датчика зажигания,​ поскольку необходимо определить,​ по какому принципу все возможные аналоговые значения будут преобразованы в два возможных состояния — Вкл/​Выкл.+:!: Заполненная таблица расчета необходима для аналогового датчика зажигания,​ поскольку необходимо определить,​ по какому принципу все возможные аналоговые значения будут преобразованы в два возможных состояния — Вкл/​Выкл.
  
 Таблица расчета пересчитывает полученные данные согласно уравнению прямой **Y = a×X + b**, где Таблица расчета пересчитывает полученные данные согласно уравнению прямой **Y = a×X + b**, где
Строка 12: Строка 12:
   * **X** — входное значение — значение,​ которое поступает от оборудования;​   * **X** — входное значение — значение,​ которое поступает от оборудования;​
   * **Y** — выходное значение — значение,​ которое должно попадать в отчет;   * **Y** — выходное значение — значение,​ которое должно попадать в отчет;
-  * **a** — коэффициент наклона прямой (тангенс угла наклона к оси ​//X//, или отношение противолежащего катета к прилежащему);​ +  * **a** — коэффициент наклона прямой (тангенс угла наклона к оси ​**X**, или отношение противолежащего катета к прилежащему);​ 
-  * **b** — смещение прямой по оси ​//Y//.+  * **b** — смещение прямой по оси ​**Y**.
  
-По приходу значения (т.е. **Х**) оно будет подставлено в таблицу расчета,​ **a** и **b** будут рассчитаны автоматически,​ а на выходе будет получено конечное значение,​ т.е. **Y** (оно и попадет в отчеты,​ графики,​ всплывающие подсказки и т.п.). ​+По приходу значения (т. е. **Х**) оно будет подставлено в таблицу расчета,​ **a** и **b** будут рассчитаны автоматически,​ а на выходе будет получено конечное значение,​ т. е. **Y** (оно и попадет в отчеты,​ графики,​ всплывающие подсказки и т. п.). 
  
-Каждая строка в таблице расчета работает только на своем промежутке,​ т.е. до значения **Х** в следующей строке. Поэтому значения по оси ​//Х// повторяться не могут. ​+Каждая строка в таблице расчета работает только на своем промежутке,​ т. е. до значения **Х** в следующей строке. Поэтому значения по оси ​**Х** повторяться не могут. ​
  
-Получить тангенс угла и подставить его в коэффициент **а** можно без таблицы тангенсов,​ а с помощью математических расчетов. Для этого по осям Х и Y необходимо найти дельты — интервалы действия значений (т.е. от Х<​sub>​1</​sub>​ до Х<​sub>​2</​sub>,​ от Х<​sub>​2</​sub>​ до Х<​sub>​3</​sub>​ и т.д.). Далее остается только поделить дельты друг на друга: **∆y/​∆x**. Полученное значение и является тангенсом угла.+Получить тангенс угла и подставить его в коэффициент **а** можно без таблицы тангенсов,​ а с помощью математических расчетов. Для этого по осям Х и Y необходимо найти дельты — интервалы действия значений (т. е. от Х<​sub>​1</​sub>​ до Х<​sub>​2</​sub>,​ от Х<​sub>​2</​sub>​ до Х<​sub>​3</​sub>​ и т. д.). Далее остается только поделить дельты друг на друга: **∆y/​∆x**. Полученное значение и является тангенсом угла.
  
-Используйте поля **"Нижняя/​Верхняя граница"**, чтобы задать рамки входящих значений. Следует отметить,​ что данные границы представляют собой полуоткрытый интервал. Другими словами,​ нижняя граница включена в интервал валидных значений датчика,​ а верхняя нет. В случае прихода каких-либо значений,​ выходящих за эти пределы,​ они будут считаться невалидными. Кроме того, от наличия/​отсутствия флага ​"Применять после расчета" ​зависит,​ будут ли применяться указанные границы к сырым значениям Х (флаг не выставлен) или к обработанным значениям Y (флаг выставлен).+Используйте поля ****Нижняя/​Верхняя граница****, чтобы задать рамки входящих значений. Следует отметить,​ что данные границы представляют собой полуоткрытый интервал. Другими словами,​ нижняя граница включена в интервал валидных значений датчика,​ а верхняя нет. В случае прихода каких-либо значений,​ выходящих за эти пределы,​ они будут считаться невалидными. Кроме того, от наличия/​отсутствия флага ​**Применять после расчета** зависит,​ будут ли применяться указанные границы к сырым значениям Х (флаг не выставлен) или к обработанным значениям Y (флаг выставлен).
  
-После введения каждой пары значений,​ нажимайте ​"Добавить". Неверно введенные значения можно удалить при помощи кнопки {{:​icons:​del.png?​nolink}}. Также можно удалить все строки сразу — при помощи кнопки ​"Очистить таблицу"+После введения каждой пары значений,​ нажимайте ​**Добавить**. Неверно введенные значения можно удалить при помощи кнопки {{:​icons:​del.png?​nolink}}. Также можно удалить все строки сразу — при помощи кнопки ​**Очистить таблицу**
  
 Чтобы визуально оценить результат настройки таблицы расчета,​ перейдите к просмотру графика,​ кликнув соответствующую иконку вверху. ​ Чтобы визуально оценить результат настройки таблицы расчета,​ перейдите к просмотру графика,​ кликнув соответствующую иконку вверху. ​
Строка 29: Строка 29:
 ===== Способы заполнения таблицы ===== ===== Способы заполнения таблицы =====
  
-  - Заполняются ​//все// доступные поля: значения **Х**-ов,​ коэффициента **а** (тангенса угла) и смещения **b**. Способ пригоден для получения таблицы пересчета под полным Вашим контролем.\\ \\ +  - Заполняются ​**все** доступные поля: значения **Х**-ов,​ коэффициента **а** (тангенса угла) и смещения **b**. Способ пригоден для получения таблицы пересчета под полным Вашим контролем.\\ \\ 
   - Заполняются только **X** и **b**, а коэффициент **а** выставляется нулевым. Этот способ удобен,​ если необходимо преобразовать аналоговый сигнал в цифровой.\\ \\   - Заполняются только **X** и **b**, а коэффициент **а** выставляется нулевым. Этот способ удобен,​ если необходимо преобразовать аналоговый сигнал в цифровой.\\ \\
   - Заполняются только **X** и **a**. Этот способ удобен,​ если необходимо получить кривую,​ зная углы, но без пересчета смещения по Y.\\ \\   - Заполняются только **X** и **a**. Этот способ удобен,​ если необходимо получить кривую,​ зная углы, но без пересчета смещения по Y.\\ \\
Строка 44: Строка 44:
 ===== Пример 1: датчик температуры ===== ===== Пример 1: датчик температуры =====
  
-Создадим таблицу преобразования для датчика температуры. Допустим,​ данные будут поступать в дополнительном коде, т.е. положительные значения — от 0 до 127, а отрицательные — от 128 (что соответствует -128 градусам) до 255 (что соответствует -1 градусу).+Создадим таблицу преобразования для датчика температуры. Допустим,​ данные будут поступать в дополнительном коде, т. е. положительные значения — от 0 до 127, а отрицательные — от 128 (что соответствует -128 градусам) до 255 (что соответствует -1 градусу).
  
 {{ :​units:​calc1.png?​nolink }} {{ :​units:​calc1.png?​nolink }}
Строка 52: Строка 52:
 {{ :​units:​calc2.png?​nolink }} {{ :​units:​calc2.png?​nolink }}
  
-:!: //​Примечание//​.\\ ​График расчета всегда имеет несколько расширенный вид — по оси ​//Х// он растягивается вправо и влево. Это связано с тем, что на первом интервале функция действует в том числе и в обратную сторону — до минус бесконечности,​ а на последнем интервале — до плюс бесконечности.+:!: График расчета всегда имеет несколько расширенный вид — по оси ​**Х** он растягивается вправо и влево. Это связано с тем, что на первом интервале функция действует в том числе и в обратную сторону — до минус бесконечности,​ а на последнем интервале — до плюс бесконечности.
  
 ===== Пример 2: датчик зажигания ===== ===== Пример 2: датчик зажигания =====
  
-Рассмотрим пример настройки нецифрового датчика зажигания,​ когда активация зажигания определяется ​ по параметру,​ передающему напряжение. Например,​ напряжение до 0.5В будет расцениваться как ​"зажигание выключено", свыше 0.5В — "зажигание включено". Для такого датчика требуется создать таблицу преобразований,​ как показано на рисунке ниже. ​+Рассмотрим пример настройки нецифрового датчика зажигания,​ когда активация зажигания определяется ​ по параметру,​ передающему напряжение. Например,​ напряжение до 0.5В будет расцениваться как ​**зажигание выключено**, свыше 0.5В — **зажигание включено**. Для такого датчика требуется создать таблицу преобразований,​ как показано на рисунке ниже. ​
  
 {{ :​units:​calc3.png?​nolink }} {{ :​units:​calc3.png?​nolink }}
Строка 66: Строка 66:
 ====== Мастер таблицы расчета ====== ====== Мастер таблицы расчета ======
  
-Мастер таблицы расчета — это инструмент,​ который упрощает процесс создания таблицы преобразования значений для [[cms/​units/​sensors/​sensors|датчика]]. Здесь достаточно ввести входные значения X и соответствующие им выходные значения Y. Мастер таблицы расчета располагается в правой части диалогового окна. По умолчанию он неактивен. Чтобы воспользоваться данным инструментом,​ необходимо активировать флаг ​"Пары XY"+Мастер таблицы расчета — это инструмент,​ который упрощает процесс создания таблицы преобразования значений для [[cms/​units/​sensors/​sensors|датчика]]. Здесь достаточно ввести входные значения X и соответствующие им выходные значения Y. Мастер таблицы расчета располагается в правой части диалогового окна. По умолчанию он неактивен. Чтобы воспользоваться данным инструментом,​ необходимо активировать флаг ​**Пары XY**
  
 Мастер таблицы расчета целесообразно применять,​ когда тарировка значений датчика выясняется опытным путем. Например,​ заливается разный объем топлива и с датчика снимаются значения,​ соответствующие разным объемам. ​ Мастер таблицы расчета целесообразно применять,​ когда тарировка значений датчика выясняется опытным путем. Например,​ заливается разный объем топлива и с датчика снимаются значения,​ соответствующие разным объемам. ​
  
-После введения всех пар значений нажмите кнопку ​"**Генерировать**", чтобы программа обработала введенные данные. Результат можно оценить в таблице расчета,​ где по введенным данным будут получены коэффициент **а** и смещение **b**, а также графике (кликнуть соответствующую иконку). ​+После введения всех пар значений нажмите кнопку ​****Генерировать****, чтобы программа обработала введенные данные. Результат можно оценить в таблице расчета,​ где по введенным данным будут получены коэффициент **а** и смещение **b**, а также графике (кликнуть соответствующую иконку). ​
  
 Коэффициент **a** и смещение **b** вычисляется программой по следующей схеме: Коэффициент **a** и смещение **b** вычисляется программой по следующей схеме:
-  * **a** вычисляется по формуле **∆Y/​∆X**. На каждом отдельно взятом интервале вычисляется смещение по оси ​//Х// и смещение по оси ​//Y//, затем смещение по //Y// делится на смещение по //Х//, т.е. ​//∆Y/∆X//+  * **a** вычисляется по формуле **∆Y/​∆X**. На каждом отдельно взятом интервале вычисляется смещение по оси ​**Х** и смещение по оси ​**Y**, затем смещение по **Y** делится на смещение по **Х**, т. е. **∆Y/∆X**
   * **b** вычисляется по формуле **b = Y — a × X**.    * **b** вычисляется по формуле **b = Y — a × X**. 
  
-:!: //​Примечание.//​\\ ​В правом верхнем углу мастера таблицы расчета предусмотрены кнопки для экспорта введенных пар XY в файл CSV, а также импорта готовых значений из файлов CSV или TXT. +:!: В правом верхнем углу мастера таблицы расчета предусмотрены кнопки для экспорта введенных пар XY в файл CSV, а также импорта готовых значений из файлов CSV или TXT. 
 ===== Пример 1: датчик уровня топлива ===== ===== Пример 1: датчик уровня топлива =====
  
-Допустим,​ было залито 10 литров топлива,​ и датчик прислал значение 86, потом было залито 20 литров,​ и датчик показал 173, и т.д. В конце концов,​ мы получаем некоторую табличку типа: ​+Допустим,​ было залито 10 литров топлива,​ и датчик прислал значение 86, потом было залито 20 литров,​ и датчик показал 173, и т. д. В конце концов,​ мы получаем некоторую табличку типа: ​
  
 ^  Входное значение (X)  ^  Выходное значение (Y)  | ^  Входное значение (X)  ^  Выходное значение (Y)  |
Строка 94: Строка 94:
 |  749  |  100  | |  749  |  100  |
  
-Пары значений внести в мастер таблицы расчета,​ кликнуть ​"Генерировать". На основании введенных значений будет сгенерирована таблица расчета (слева).+Пары значений внести в мастер таблицы расчета,​ кликнуть ​**Генерировать**. На основании введенных значений будет сгенерирована таблица расчета (слева).
  
 {{ :​units:​wizard1.png?​nolink }} {{ :​units:​wizard1.png?​nolink }}
Строка 102: Строка 102:
 {{ :​units:​wizard2.png?​nolink }} {{ :​units:​wizard2.png?​nolink }}
  
-:!: //​Примечание//​.\\ ​Все данные,​ введенные и сохраненные на этой вкладке,​ будут доступны и при последующем открытии диалога. Любые изменения в таблице расчета не влияют на мастер. Другими словами,​ мастер только показывает введенные значения,​ но не отражает текущей ситуации.+:!: Все данные,​ введенные и сохраненные на этой вкладке,​ будут доступны и при последующем открытии диалога. Любые изменения в таблице расчета не влияют на мастер. Другими словами,​ мастер только показывает введенные значения,​ но не отражает текущей ситуации.
  
-Теперь проследим,​ как произошел расчет коэффициента **a** и смещения **b**. Первый интервал начитается в нуле, действует по входящим значениям до 86, при этом в самой последней точке на выходе должно быть значение 10. Рассчитываем смещение по //Х//, т.е. **∆Х** = 86 — 0 = 86. Точно так же рассчитываем смещение по //Y//, т.е. **∆Y** = 10 — 0 = 10. Теперь нам необходимо получить коэффициент **a**, который является тангенсом угла в начале осей координат,​ т.е. нужно **∆Y** разделить на **∆X** (**∆Y/​∆X**):​ **a** = 10 / 86 = 0,​11627906976744186 (калькулятор).+Теперь проследим,​ как произошел расчет коэффициента **a** и смещения **b**. Первый интервал начитается в нуле, действует по входящим значениям до 86, при этом в самой последней точке на выходе должно быть значение 10. Рассчитываем смещение по **Х**, т. е. **∆Х** = 86 0 = 86. Точно так же рассчитываем смещение по **Y**, т. е. **∆Y** = 10 0 = 10. Теперь нам необходимо получить коэффициент **a**, который является тангенсом угла в начале осей координат,​ т. е. нужно **∆Y** разделить на **∆X** (**∆Y/​∆X**):​ **a** = 10 / 86 = 0,​11627906976744186 (калькулятор).
  
 Для остальных интервалов применяем ту же схему расчета (интервалов будет на один меньше,​ чем строк в мастере расчета): ​ Для остальных интервалов применяем ту же схему расчета (интервалов будет на один меньше,​ чем строк в мастере расчета): ​
Строка 122: Строка 122:
 |  11  |  749  |  100  |  (110 — 100) / (812 — 749)  |  100 — a×749 ​ | |  11  |  749  |  100  |  (110 — 100) / (812 — 749)  |  100 — a×749 ​ |
  
-Информацию о том, как провести тарировку бака, можно найти в разделе ​«[[faq/​hw/​hw1|Тарировка бака]]».+Информацию о том, как провести тарировку бака, можно найти в разделе ​**[[faq/​hw/​hw1|Тарировка бака]]**.
 ===== Пример 2: датчик уровня топлива ===== ===== Пример 2: датчик уровня топлива =====
  
-В данном примере входные значения ​//Х// идут по убывающей при возрастании значений ​//Y//. Однако при введении пар значений в мастер таблицы расчета они будут автоматически расположены в нужном порядке. ​+В данном примере входные значения ​**Х** идут по убывающей при возрастании значений ​**Y**. Однако при введении пар значений в мастер таблицы расчета они будут автоматически расположены в нужном порядке. ​
  
 Исходные данные:​ Исходные данные:​
Строка 163: Строка 163:
 |  10  |  2,58  |  10  |  (0 — 10) / (2,8 — 2,58)  |   10 — a×2.58 ​ | |  10  |  2,58  |  10  |  (0 — 10) / (2,8 — 2,58)  |   10 — a×2.58 ​ |
  
-Информацию о том, как провести тарировку бака, можно найти в разделе ​«[[faq/​hw/​hw1|Тарировка бака]]».+Информацию о том, как провести тарировку бака, можно найти в разделе ​**[[faq/​hw/​hw1|Тарировка бака]]**.
  
Was this helpful?
Thank you!