123

Dependencies:   mbed

Fork of LG by igor Apu

Committer:
Diletant
Date:
Sun Jun 26 10:16:39 2016 +0000
Revision:
174:0f86eedd511c
Parent:
167:bedc0a9d559a
Child:
177:672ef279c8e0
Device&... update. Not final!!!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Diletant 174:0f86eedd511c 1 14.06.2016 Dile Tant
Diletant 156:e68ee0bcdcda 2 Основные циклы:
Diletant 156:e68ee0bcdcda 3 Измерительный плавающий цикл/Measurment floating cycle
Diletant 174:0f86eedd511c 4 Цикл задается измерительным таймером с переменной частотой следования прерываний - таймер 1 контроллера
Diletant 156:e68ee0bcdcda 5 Регулярный цикл/Regular cycle
Diletant 174:0f86eedd511c 6 Цикл задается управляющим таймером с постоянной частотой следования прерываний - таймер 2 контроллера
Diletant 156:e68ee0bcdcda 7 Основной последовательный плавающий цикл/Main sequential floating cycle
Diletant 156:e68ee0bcdcda 8 Цикл выполняется с переменной частотой, определяемой загрузкой процессора.
Diletant 156:e68ee0bcdcda 9
Diletant 156:e68ee0bcdcda 10 Замечание:
Diletant 156:e68ee0bcdcda 11 Измерение частоты расщепления производится в плавающем цикле, результат измерения - количество импульсов за период вибропривода,
Diletant 156:e68ee0bcdcda 12 для получения частоты нужно поделить импульсы на текущий период измерения.
Diletant 156:e68ee0bcdcda 13 Остальные измеряемые параметры от периода измерений не зависят.
Diletant 156:e68ee0bcdcda 14
Diletant 167:bedc0a9d559a 15 Параметры:
Diletant 174:0f86eedd511c 16 Представление параметров алгоритма в виде единого последовательного блока параметров с фиксированным положением и размером
Diletant 174:0f86eedd511c 17 параметров нецелесообразно. Для удобства, независимости модулей и упрощения их модификации следует определять параметры в модулях подсистем.
Diletant 174:0f86eedd511c 18 При этом удобно представить параметры в виде дерева, каждая ветвь которого относится к соответствующей подсистеме.
Diletant 167:bedc0a9d559a 19 Следует разделять неизменяемые в процессе работы параметры настройки (settings) и изменяемые (текущие) параметры состояния (state).
Diletant 174:0f86eedd511c 20 Параметры настройки определяются при настройке и калибровке устройства и записываются во флэш-память.
Diletant 174:0f86eedd511c 21 Параметры состояния вычисляются в процессе работы на основе параметров настройки. Параметры настройки могут задавать начальное значение
Diletant 174:0f86eedd511c 22 параметров состояния, значения параметров состояния при определенных событиях (например при обнулении СРП) или функцию зависимости
Diletant 174:0f86eedd511c 23 параметров состояния (например от температуры).
Diletant 174:0f86eedd511c 24 Параметры настройки делятся на настройки по умолчанию (default), которые инициализируются в коде программы,
Diletant 174:0f86eedd511c 25 и настройки, загружаемые из флэш-памяти.
Diletant 174:0f86eedd511c 26 В частности, в протоколе есть команды установки состояния из настроек по умолчанию и из флэш-памяти, что означает необходимость
Diletant 174:0f86eedd511c 27 раздельного хранения параметров настройки и параметров состояния состояния.
Diletant 167:bedc0a9d559a 28
Diletant 149:abbf7663d27d 29 Идентификация параметров:
Diletant 149:abbf7663d27d 30 Всем параметрам присваивается хэш/hash. В качестве хэш-функции можно использовать
Diletant 149:abbf7663d27d 31 hash(name, type) = crc32(name) ^ crc32(type),
Diletant 149:abbf7663d27d 32 где name - имя переменной в RAM или константы в ROM, type - тип.
Diletant 149:abbf7663d27d 33 Например: crc32("uint16_t") ^ crc32("device.settings.address") = 0x4d8e4523
Diletant 149:abbf7663d27d 34
Diletant 149:abbf7663d27d 35 Хранение констант и переменных в RAM:
Diletant 174:0f86eedd511c 36 Все параметры хранятся в переменной device в виде иерархической структуры.
Diletant 149:abbf7663d27d 37 При загрузке инициализируется таблица адресов переменных hashParamTable[HASH_PARAM_COUNT] в формате hash32 : address32 : size32,
Diletant 149:abbf7663d27d 38 где hash32 - хэш параметра, address32 - ссылка на параметр, size32 - размер в байтах.
igor_v 70:9cc252048c59 39
Diletant 174:0f86eedd511c 40 Хранение констант и переменных в ROM:
Diletant 174:0f86eedd511c 41 Сектор 22 - таблица адресов в формате hash32 : address32
Diletant 174:0f86eedd511c 42 Сектор 23 - данные по адресам из таблицы адресов
Diletant 174:0f86eedd511c 43 Чтение из ROM:
Diletant 174:0f86eedd511c 44 FlashReadAll()
Diletant 174:0f86eedd511c 45 Запись в ROM:
Diletant 174:0f86eedd511c 46 FlashWriteAll()
Diletant 174:0f86eedd511c 47
Diletant 174:0f86eedd511c 48 Использование портов:
Diletant 174:0f86eedd511c 49 UART0 - порт обслуживания / Service port
Diletant 174:0f86eedd511c 50 UART1 - порт команд/данных / User port
Diletant 174:0f86eedd511c 51
Diletant 161:efd949e8d536 52 Доступ к параметрам через User port
Diletant 149:abbf7663d27d 53 Формат команды:
Diletant 156:e68ee0bcdcda 54 cc address8 code16 hash32 crc16
Diletant 149:abbf7663d27d 55 code16:
Diletant 149:abbf7663d27d 56 H_PARAM8_R : чтение 1-байтного параметра
Diletant 149:abbf7663d27d 57 H_PARAM16_R: чтение 2-байтного параметра
Diletant 149:abbf7663d27d 58 H_PARAM32_R: чтение 4-байтного параметра
Diletant 149:abbf7663d27d 59 H_PARAM8_W : запись 1-байтного параметра
Diletant 149:abbf7663d27d 60 H_PARAM16_W: запись 2-байтного параметра
Diletant 149:abbf7663d27d 61 H_PARAM32_W: запись 4-байтного параметра
igor_v 70:9cc252048c59 62
Diletant 174:0f86eedd511c 63 Последовательность старта системы:
Diletant 174:0f86eedd511c 64 1. Инициализация настроек по умолчанию - InitDefaultSettings(). В идеале - инициализация абсолютно всех настроек
Diletant 174:0f86eedd511c 65 на случай отсутствия настроек во флэш-памяти или отказа флэш-памяти.
Diletant 174:0f86eedd511c 66 2. Загрузка настроек подсистем из флэш-памяти с перезаписью настроек по умолчанию - FlashReadAll().
Diletant 174:0f86eedd511c 67 3. Инициализация начального состояния подсистем из сформированных на этапах 1 и 2 настроек - InitState().
Diletant 174:0f86eedd511c 68 4. Старт модулей после установки начального состояния всех подсистем - DeviceStart().
Diletant 166:c3c0b8a90d81 69
Diletant 166:c3c0b8a90d81 70 Работа управляющего алгоритма в вольтах:
Diletant 166:c3c0b8a90d81 71 Вычисления в алгоритме можно проводить в виде напряжения на исполнительном элементе (ГВЧ, нагреватель, пъезоэлемент и т.д.).
Diletant 166:c3c0b8a90d81 72 Для этого требуется в настройках задать параметры преобразования в виде линейной интерполяции: код на ЦАП - напряжение на элементе.
Diletant 166:c3c0b8a90d81 73 Плюсы:
Diletant 166:c3c0b8a90d81 74 - настройки для конкретного датчика сохраняются на разных основаниях, в том числе с разной электрической схемой
Diletant 166:c3c0b8a90d81 75 - настройки для конкретного основания (параметры преобразования) сохраняются для разных датчиков
Diletant 166:c3c0b8a90d81 76 - калибровка оснований может производиться отдельно от датчиков и отражаться в паспорте основания
Diletant 166:c3c0b8a90d81 77 - учет нелинейностей (16 контрольных точек)
Diletant 167:bedc0a9d559a 78 - передача потребителю истинных напряжений (без необходимости учета знаков, падений напряжений на транзисторе и т.п.)
Diletant 166:c3c0b8a90d81 79 Минусы:
Diletant 166:c3c0b8a90d81 80 - требуется постоянный пересчет вольты - коды при работе алгоритма
Diletant 167:bedc0a9d559a 81 - требуется калибровка оснований
Diletant 167:bedc0a9d559a 82
Diletant 167:bedc0a9d559a 83 Передаточные функции:
Diletant 174:0f86eedd511c 84 1. При вычислениях с фиксированной точкой есть 2 существенные проблемы:
Diletant 167:bedc0a9d559a 85 - переполнение
Diletant 167:bedc0a9d559a 86 - округление
Diletant 174:0f86eedd511c 87 2. С целью обеспечения независимости собственно алгоритма от диапазона входных данных, определяемого "железом" и
Diletant 174:0f86eedd511c 88 полного использования битности процессора требуется преобразование входных данных в нормализованный диапазон (-1 ... +1
Diletant 174:0f86eedd511c 89 например). Такое преобразование может быть выполнено с помощью передаточной функции (например, в виде линейной
Diletant 174:0f86eedd511c 90 интерполяции: код АЦП - нормализованная величина).
Diletant 174:0f86eedd511c 91 3. Для управления исполнительным элементом также требуется преобразование нормализованных данных с
Diletant 174:0f86eedd511c 92 помощью передаточной функции (например в виде линейной интерполяции: нормализованная величина - код ЦАП).
Diletant 167:bedc0a9d559a 93
Diletant 167:bedc0a9d559a 94 Работа СРП:
Diletant 167:bedc0a9d559a 95 Режимы работы:
Diletant 167:bedc0a9d559a 96 - по опорному генератору
Diletant 167:bedc0a9d559a 97 - с запоминанием
Diletant 167:bedc0a9d559a 98 Детектор:
Diletant 167:bedc0a9d559a 99 Опорный сигнал:
Diletant 167:bedc0a9d559a 100 - выходное напряжение опорного генератора
Diletant 167:bedc0a9d559a 101 - выходное напряжение СРП
Diletant 167:bedc0a9d559a 102 Обратная связь:
Diletant 167:bedc0a9d559a 103 - выходное напряжение амплитудного детектора
Diletant 167:bedc0a9d559a 104 - выходное напряжение стабилизатора амплитуды
Diletant 167:bedc0a9d559a 105 Функции передачи:
Diletant 167:bedc0a9d559a 106 - опорный сигнал (В) - опорный сигнал (у.е. -1...+1)
Diletant 174:0f86eedd511c 107 - обратная связь (В) - обратная связь (у.е. -1...+1). Требуется отфильтровать постоянную составляющую, чтобы попасть в диапазон -1...+1?
Diletant 167:bedc0a9d559a 108 - рассогласование (у.е. -1...+1) - рассогласование (-0.5 ... +0.5)
Diletant 167:bedc0a9d559a 109 - ошибка регулятора (-1...+1) - коррекция выходного напряжения СРП (В)
Diletant 167:bedc0a9d559a 110 - выходное напряжение СРП (В) - код ЦАП (у.е.)