123

Dependencies:   mbed

Fork of LG by igor Apu

Committer:
Kovalev_D
Date:
Wed Oct 19 10:55:05 2016 +0000
Revision:
197:7a05523bf588
Parent:
177:672ef279c8e0
modul

Who changed what in which revision?

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