123

Dependencies:   mbed

Fork of LG by igor Apu

Committer:
Diletant
Date:
Sun Jun 05 11:03:33 2016 +0000
Revision:
167:bedc0a9d559a
Parent:
166:c3c0b8a90d81
Child:
174:0f86eedd511c
Device & ... update. Not final!!!

Who changed what in which revision?

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