modbus in ethernet stm32.md 9.2 KB

~={yellow}Модуль высокого напряжения=~ USB / ethernet

  • cfg.riseTime (unsigned int, 10) / hvRiseTime (int, 10)
  • cfg.presetHV (FloatUint32, 0) / hvDacPreset (uint16_t, 0)
  • cfg.presetHVMin (FloatUint32, 0.0) / hvDacMin (uint16_t, 0)
  • cfg.presetHVMax (FloatUint32, 30.3) / hvDacMax (uint16_t, 0)
  • curHV_dac (unsigned int, 0) / hvDac (uint16_t, 0)
  • hvStep (не передается) (double) / hvStep (не передается) (double)
  • cfg.k0 (FloatUint32, 0) / hvK0 (double, 0)
  • cfg.k1 (FloatUint32, 454.545) / hvK1 (double, 0.3662109375)
  • state (hvState, HV_OFF) / hvState (HvState, HV_OFF)
  • curHV_voltage (FloatUint32, dacToVolt(curHV_dac)) /

    #define CONFIG_BASE         ((uint16_t)0x0000)
    #define CONFIG_LEN          18 //32 // CONFIG_LEN в словах по 16 бит
    #define CONFIG_VER_SOFT     CONFIG_BASE + 1
    #define CONFIG_VER_FPGA     CONFIG_BASE + 2
    #define CONFIG_UREF         CONFIG_BASE + 16   
    
       
    #define UART_BASE           0x0012   
    #define UART_BAUDRATEL      UART_BASE
    #define UART_BAUDRATEH      UART_BASE + 1
    #define UART_DATA_BITS      UART_BASE + 2    
    #define UART_STOP_BITS      UART_BASE + 3       
    #define UART_PARITY         UART_BASE + 4 
    
    #define UART_NREG           5   
       
    #define MODBUS_ADDR         0x0017   
       
    #define PRESET_BASE         0x0100
    #define PRESET_LEN          32 //с резервом   
    #define PRESET_MODE         PRESET_BASE
    // 0 - без остановки
    // 1 - по реальному времени (RTIME)
    // 2 - по живому времени    (LTIME)
    // 3 - по счету             (SUM)
    // 4 - по пику в ROI        (PRESET_SUM_ROI)
    #define PRESET_RTIME        PRESET_BASE + 1
    #define PRESET_LTIME        PRESET_BASE + 3
    #define PRESET_SUM          PRESET_BASE + 5
    #define PRESET_SUM_ROI      PRESET_BASE + 7
    #define PRESET_ROIL         PRESET_BASE + 9
    #define PRESET_ROIH         PRESET_BASE + 10
       
    
    // -------------------------------------------------------------------------- //
    
    #define HV_BASE             0x0200
        
    #define HV_STATE            HV_BASE + 0 // состояние/команда hvState 
        
    #define HV_CUR_VOLT_L       HV_BASE + 1 // Текущее напряжение в вольтах Float, 4 байта
    #define HV_CUR_VOLT_H       HV_BASE + 2 // Текущее напряжение в вольтах Float, 4 байта
        
    #define HV_RISE_TIME        HV_BASE + 3 // время подъёма в секундах
        
    #define HV_PRESET_L         HV_BASE + 4 // уставка, напряжение в вольтах Float, 4 байта  
    #define HV_PRESET_H         HV_BASE + 5 // уставка, напряжение в вольтах Float, 4 байта  
        
    #define HV_PRESET_MIN_L     HV_BASE + 6 // минимальная уставка, напряжение в вольтах Float, 4 байта  
    #define HV_PRESET_MIN_H     HV_BASE + 7 // минимальнаяуставка, напряжение в вольтах Float, 4 байта  
        
    #define HV_PRESET_MAX_L     HV_BASE + 8 // максимальная уставка, напряжение в вольтах Float, 4 байта  
    #define HV_PRESET_MAX_H     HV_BASE + 9 // максимальная уставка, напряжение в вольтах Float, 4 байта  
    
    #define HV_K0_L             HV_BASE + 10 // коэф. преобразования напряжения ЦАП в вольты, Float, 4 байта  
    #define HV_K0_H             HV_BASE + 11 // коэф. преобразования напряжения ЦАП в вольты, Float, 4 байта  
    #define HV_K1_L             HV_BASE + 12 // коэф. преобразования напряжения ЦАП в вольты, Float, 4 байта   
    #define HV_K1_H             HV_BASE + 13 // коэф. преобразования напряжения ЦАП в вольты, Float, 4 байта 
    
    #define HV_DELAY            HV_BASE + 14 // время задержки после установки HV перед началом набора
    
    #define HV_NREG             16
    
    // -------------------------------------------------------------------------- //
    
    //"FPGA"		
    #define FPGA_BASE           0x300
    #define FPGA_NREG           32
    
    // -------------------------------------------------------------------------- //
    
    //Мониторинг
    #define MON_BASE            0x500
    #define MON_BASE_RAW        0x600
    
    #define MON_BAT_VOLTAGE     MON_BASE + 0x014 // напряжение АКБ
    #define MON_BAT_CHARGE_ST   MON_BASE + 0x016 // статус заряда АКБ (есть/нет)
    #define MON_FLASH_SIZE      MON_BASE + 0x018 // объем флеш-памяти (байты)
    #define MON_FLASH_FREE      MON_BASE + 0x01A // объем свободной флеш-памяти (байты)
    
    
    // -------------------------------------------------------------------------- //
    // Автономный режим работы
    
    #define AUTO_BASE           0x700
    #define AUTO_NREG           12
    #define AUTO_STATE          AUTO_BASE + 0 // статус автономного режима
    #define AUTO_DELAY_L        AUTO_BASE + 1 // задержка перед началом цикла измерений (сек.)
    #define AUTO_DELAY_H        AUTO_BASE + 2 // задержка перед началом цикла измерений (сек.)
    #define AUTO_CNT_DW_L       AUTO_BASE + 3 // осталось до начала цикла (сек.)
    #define AUTO_CNT_DW_H       AUTO_BASE + 4 // осталось до начала цикла (сек.)
    #define AUTO_PERIOD_L       AUTO_BASE + 5 // период начала набора каждого спектра
    #define AUTO_PERIOD_H       AUTO_BASE + 6 // период начала набора каждого спектра
    #define AUTO_NBR_SP         AUTO_BASE + 7 // количество набираемых спектров (0 без остановки)
    #define AUTO_NBR_SP_ALR     AUTO_BASE + 8 // количество уже набранных спектров
    #define AUTO_STNB_MODE      AUTO_BASE + 9 // режим сна 
    #define AUTO_STNB_DELAY_L   AUTO_BASE + 10// время до перехода в режим сна (сек.)
    #define AUTO_STNB_DELAY_H   AUTO_BASE + 11// время до перехода в режим сна (сек.)
    
    
    // -------------------------------------------------------------------------- //
    
    //Сохранение настройек прибора
    #define SAVE_LOAD_BASE          0x800
    #define SAVE_LOAD_LOAD          (SAVE_LOAD_BASE + 0)
    #define SAVE_LOAD_SAVE          (SAVE_LOAD_BASE + 1)
    #define SAVE_LOAD_LOAD_SP_PARAM (SAVE_LOAD_BASE + 2)
    #define SAVE_LOAD_SAVE_SP_PARAM (SAVE_LOAD_BASE + 3)
    
    // -------------------------------------------------------------------------- //
    
    // Режимы работы
    #define KEY_REBOOT          0x2031  // перезагрузка в режиме бутлоадера (DFU)
    #define KEY_RESET           0x2032  // перезагрузка
    #define REBOOT_OK           0x3120
    #define REBOOT_0            0x840
    
    #define BLAST_FPGA          0x841
    #define BLAST_MODE_ON       0x1
    #define BLAST_MODE_OFF      0x0
    #define WORK_MODE_N_REG     2
    
    // specter
    // Состояние набора   
    #if 0
    enum spState 
    {
    SP_CLEAR = 0, // очистка, нет спектра
    SP_STOP  = 1, // останов, есть спектр
    SP_ACQ   = 2, // набор спектра
    };
    #endif
    
    // -------------------------------------------------------------------------- //
    
    #define SPECTER_INFO_BASE   0x900
    #define SPECTER_INFO_NREG   15
    
    #define SPECTER_FORMAT      0x0900
    #define SPECTER_ACQ_STATE   0x0901
    #define SPECTER_NCHANNELS   0x0902
    #define SPECTER_EN_K0       0x0903
    #define SPECTER_EN_K1       0x0905
    #define SPECTER_REGRATE     0x0907
    #define SPECTER_INPRATE     0x0909
    #define SPECTER_RTIME       0x090B
    #define SPECTER_LTIME       0x090D
    #define SPECTER_LOCALTIME   0x090F
    #define GPS_STATUS          0x0911
    #define GPS_LON             0x0912
    #define GPS_LAT             0x0914
    #define GPS_ALT             0x0916
    #define SP_OFFSET           0x0918
    
    // -------------------------------------------------------------------------- //
    // Для считывания заголовка спектра из файла. 
    
    #define SPECTER_FILE_INFO_BASE   0xB000
    #define SPECTER_FILE_INFO_NREG   255
    
    #define SPECTER_FORMAT_F    0xB000
    #define SPECTER_ACQ_STATE_F 0xB001
    #define SPECTER_NCHANNELS_F 0xB002
    #define SPECTER_EN_K0_F     0xB003
    #define SPECTER_EN_K1_F     0xB005
    #define SPECTER_REGRATE_F   0xB007
    #define SPECTER_INPRATE_F   0xB009
    #define SPECTER_RTIME_F     0xB00B
    #define SPECTER_LTIME_F     0xB00D
    #define SPECTER_LOCALTIME_F 0xB00F
    #define GPS_STATUS_F        0xB011
    #define GPS_LON_F           0xB012
    #define GPS_LAT_F           0xB014
    #define GPS_ALT_F           0xB016
    #define SP_OFFSET_F         0xB018
    
    #define SPECTER_FILE_BASE   0xB100
    
    
    #define SPECTER_BASE        0x1000
    #define SPECTER_CNL         4096
    #define SPECTER_NREG        (SPECTER_CNL * 2)
    
    #define N_REGS_BIG_FRAME    ((64 + 2)*2)
    
    // осциллограф	
    #define N_SCOPE_FRAME       4
    #define SCOPE_BASE          0xA000
    #define SCOPE_NREG          (N_REGS_BIG_FRAME * N_SCOPE_FRAME)
    
    // fifo
    #define N_FIFO_FRAME        8
    #define FIFO_BASE           0xA400
    #define FIFO_NREG           (N_REGS_BIG_FRAME * N_FIFO_FRAME)
    
    // Обмен текстовыми сообщениями
    #define STR_BASE            0x7F00
    #define STR_NREG            125