123
Fork of LG by
develop.txt
- Committer:
- Diletant
- Date:
- 2016-06-05
- Revision:
- 167:bedc0a9d559a
- Parent:
- 166:c3c0b8a90d81
- Child:
- 174:0f86eedd511c
File content as of revision 167:bedc0a9d559a:
05.06.2016 Dile Tant Основные циклы: Измерительный плавающий цикл/Measurment floating cycle Цикл задается измерительным таймером с переменной частотой следования прерываний - таймер 0 контроллера Регулярный цикл/Regular cycle Цикл задается управляющим таймером с постоянной частотой следования прерываний - таймер 1 контроллера Основной последовательный плавающий цикл/Main sequential floating cycle Цикл выполняется с переменной частотой, определяемой загрузкой процессора. Замечание: Измерение частоты расщепления производится в плавающем цикле, результат измерения - количество импульсов за период вибропривода, для получения частоты нужно поделить импульсы на текущий период измерения. Остальные измеряемые параметры от периода измерений не зависят. Использование портов: UART0 - порт обслуживания / Service port UART1 - порт команд/данных / User port Параметры: Представление параметров алгоритма в виде единого непрерывного блока параметров нецелесообразно. Для удобного именования параметров, независимости модулей и упрощения их модификации следует хранить параметры в модулях подсистем. Следует разделять неизменяемые в процессе работы параметры настройки (settings) и изменяемые (текущие) параметры состояния (state). Настройки делятся на настройки по умолчанию (default), которые инициализируются в коде программы, и настройки, загружаемые из флэш-памяти. В частности, в протоколе есть команды установки состояния из настроек по умолчанию и из флэш-памяти, что означает необходимость раздельного хранения настроек и состояния. Загрузка параметров: 1. Инициализация настроек по умолчанию InitDefaultSettings(). В идеале - инициализация абсолютно всех настроек на случай отсутствия настроек во флэш-памяти или отказа флэш-памяти. 2. Загрузка настроек из флэш-памяти с перезаписью настроек по умолчанию FlashReadAll(). 3. Инициализация состояния из сформированных на этапах 1 и 2 настроек InitState(). Идентификация параметров: Всем параметрам присваивается хэш/hash. В качестве хэш-функции можно использовать hash(name, type) = crc32(name) ^ crc32(type), где name - имя переменной в RAM или константы в ROM, type - тип. Например: crc32("uint16_t") ^ crc32("device.settings.address") = 0x4d8e4523 Хранение констант и переменных в RAM: Все параметры хранятся в переменной device. При загрузке инициализируется таблица адресов переменных hashParamTable[HASH_PARAM_COUNT] в формате hash32 : address32 : size32, где hash32 - хэш параметра, address32 - ссылка на параметр, size32 - размер в байтах. Доступ к параметрам через User port Формат команды: cc address8 code16 hash32 crc16 code16: H_PARAM8_R : чтение 1-байтного параметра H_PARAM16_R: чтение 2-байтного параметра H_PARAM32_R: чтение 4-байтного параметра H_PARAM8_W : запись 1-байтного параметра H_PARAM16_W: запись 2-байтного параметра H_PARAM32_W: запись 4-байтного параметра Хранение констант и переменных в ROM: Сектор 22 - таблица адресов в формате hash32 : address32 Сектор 23 - данные по адресам из таблицы адресов Чтение из ROM: FlashReadAll() Запись в ROM: FlashWriteAll() Работа управляющего алгоритма в вольтах: Вычисления в алгоритме можно проводить в виде напряжения на исполнительном элементе (ГВЧ, нагреватель, пъезоэлемент и т.д.). Для этого требуется в настройках задать параметры преобразования в виде линейной интерполяции: код на ЦАП - напряжение на элементе. Плюсы: - настройки для конкретного датчика сохраняются на разных основаниях, в том числе с разной электрической схемой - настройки для конкретного основания (параметры преобразования) сохраняются для разных датчиков - калибровка оснований может производиться отдельно от датчиков и отражаться в паспорте основания - учет нелинейностей (16 контрольных точек) - передача потребителю истинных напряжений (без необходимости учета знаков, падений напряжений на транзисторе и т.п.) Минусы: - требуется постоянный пересчет вольты - коды при работе алгоритма - требуется калибровка оснований Передаточные функции: При вычислениях с фиксированной точкой есть 2 существенные проблемы: - переполнение - округление Во избежание проблем при вычислениях требуется преобразование входных данных в нормализованный диапазон (-1 ... +1 например). Такое преобразование может быть выполнено с помощью передаточной функции (например, в виде линейной интерполяции: исходная величина - нормализованная величина). Работа СРП: Режимы работы: - по опорному генератору - с запоминанием Детектор: Опорный сигнал: - выходное напряжение опорного генератора - выходное напряжение СРП Обратная связь: - выходное напряжение амплитудного детектора - выходное напряжение стабилизатора амплитуды Функции передачи: - опорный сигнал (В) - опорный сигнал (у.е. -1...+1) - обратная связь (В) - обратная связь (у.е. -1...+1) - рассогласование (у.е. -1...+1) - рассогласование (-0.5 ... +0.5) - ошибка регулятора (-1...+1) - коррекция выходного напряжения СРП (В) - выходное напряжение СРП (В) - код ЦАП (у.е.)