123

Dependencies:   mbed

Fork of LG by igor Apu

develop.txt

Committer:
Kovalev_D
Date:
2016-10-19
Revision:
197:7a05523bf588
Parent:
177:672ef279c8e0

File content as of revision 197:7a05523bf588:

01.07.2016 Dile Tant
Основные циклы:
    Измерительный плавающий цикл/Measurment floating cycle
        Цикл задается измерительным таймером с переменной частотой следования прерываний - таймер 1 контроллера
    Регулярный внутренний цикл/Regular internal cycle
        Цикл задается управляющим таймером с постоянной частотой следования прерываний - таймер 2 контроллера
    Основной последовательный плавающий цикл/Main sequential floating cycle
        Цикл выполняется с переменной частотой, определяемой загрузкой процессора.
    Регулярный внешний цикл/Regular external cycle
        Цикл задается внешним периодическим сигналом - защелкой

Замечание:
    Измерение частоты расщепления производится в плавающем цикле, результат измерения - количество импульсов за период вибропривода,
    для получения частоты нужно поделить импульсы на текущий период измерения.
    Остальные измеряемые параметры от периода измерений не зависят.     

Параметры:
    Представление параметров алгоритма в виде единого последовательного блока параметров с фиксированным положением и размером
    параметров нецелесообразно. Для удобства, независимости модулей и упрощения их модификации следует определять параметры в модулях подсистем.
    При этом удобно представить параметры в виде дерева, каждая ветвь которого относится к соответствующей подсистеме.
    Следует разделять неизменяемые в процессе работы параметры настройки (settings) и изменяемые (текущие) параметры состояния (state).
    Параметры настройки определяются при настройке и калибровке устройства и записываются во флэш-память.
    Параметры состояния вычисляются в процессе работы на основе параметров настройки. Параметры настройки могут задавать начальное значение 
    параметров состояния, значения параметров состояния при определенных событиях (например при обнулении СРП) или функцию зависимости
    параметров состояния (например от температуры).
    Параметры настройки делятся на настройки по умолчанию (default), которые инициализируются в коде программы,
    и настройки, загружаемые из флэш-памяти.
    В частности, в протоколе есть команды установки состояния из настроек по умолчанию и из флэш-памяти, что означает необходимость
    раздельного хранения параметров настройки и параметров состояния состояния.
    
Идентификация параметров:
    Всем параметрам присваивается хэш/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 - размер в байтах.

Хранение констант и переменных в ROM:
    Сектор 22 - таблица адресов в формате hash32 : address32
    Сектор 23 - данные по адресам из таблицы адресов
    Чтение из ROM:
        FlashReadAll()
    Запись в ROM:
        FlashWriteAll()

Использование портов:
    UART0 - порт обслуживания  / Service port
    UART1 - порт команд/данных / User port
    
Доступ к параметрам через 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-байтного параметра

Последовательность старта системы:
    1. Инициализация настроек по умолчанию - InitDefaultSettings(). В идеале - инициализация абсолютно всех настроек
    на случай отсутствия настроек во флэш-памяти или отказа флэш-памяти.
    2. Загрузка настроек подсистем из флэш-памяти с перезаписью настроек по умолчанию - FlashReadAll().
    3. Инициализация начального состояния подсистем из сформированных на этапах 1 и 2 настроек - InitState().
    4. Старт модулей после установки начального состояния всех подсистем - DeviceStart().

Работа управляющего алгоритма в вольтах:
    Вычисления в алгоритме можно проводить в виде напряжения на исполнительном элементе (ГВЧ, нагреватель, пъезоэлемент и т.д.).
    Для этого требуется в настройках задать параметры преобразования в виде линейной интерполяции: код на ЦАП - напряжение на элементе.
    Плюсы:
        - настройки для конкретного датчика сохраняются на разных основаниях, в том числе с разной электрической схемой
        - настройки для конкретного основания (параметры преобразования) сохраняются для разных датчиков
        - калибровка оснований может производиться отдельно от датчиков и отражаться в паспорте основания
        - учет нелинейностей (16 контрольных точек)
        - передача потребителю истинных напряжений (без необходимости учета знаков, падений напряжений на транзисторе и т.п.)
    Минусы:
        - требуется постоянный пересчет вольты - коды при работе алгоритма
        - требуется калибровка оснований

Передаточные функции:
    1. При вычислениях с фиксированной точкой есть 2 существенные проблемы:
        - переполнение
        - округление
    2. С целью обеспечения независимости собственно алгоритма от диапазона входных данных, определяемого "железом" и
    полного использования битности процессора требуется преобразование входных данных в нормализованный диапазон (-1 ... +1
    например). Такое преобразование может быть выполнено с помощью передаточной функции (например, в виде линейной
    интерполяции: код АЦП - нормализованная величина).
    3. Для управления исполнительным элементом также требуется преобразование нормализованных данных с
    помощью передаточной функции (например в виде линейной интерполяции: нормализованная величина - код ЦАП).
  
Работа СРП:
    Режимы работы:
        - по опорному генератору
        - с запоминанием
    Детектор:
        Опорный сигнал:
            - выходное напряжение опорного генератора
            - выходное напряжение СРП
        Обратная связь:
            - выходное напряжение амплитудного детектора
            - выходное напряжение стабилизатора амплитуды
    Функции передачи:
        - опорный сигнал (В) - опорный сигнал (у.е. -1...+1)
        - обратная связь (В) - обратная связь (у.е. -1...+1). Требуется отфильтровать постоянную составляющую, чтобы попасть в диапазон -1...+1?
        - рассогласование (у.е. -1...+1) - рассогласование (-0.5 ... +0.5)
        - ошибка регулятора (-1...+1) - коррекция выходного напряжения СРП (В)
        - выходное напряжение СРП (В) - код ЦАП (у.е.)