universal IO.md 3.6 KB

Modbus

Определение конца пакета.

  • Если скорость передачи данных больше 19200, то нужно использовать фиксированное время 1750 мкс. В противном случае время должно быть в 3,5 больше времени символа.
  • Таймер настраивается на частоту 50 мкс.
  • В данном проекте управление переключением режима передачи происходит не стороне контроллера. Между включением передатчика и отправкой первого байта пакета необходима задержка. Задержка необходима и между отправкой последнего символа и выключением передатчика. Задержка реализована с помощью аппаратного таймера TIM6. Время задержки соответствует времени передачи двух символов с учетом текущей скорости USART.
    Функции
  • 0x01 (1) - чтение значений из нескольких регистров флагов - Read Coil Status.
  • 0x02 (2) - чтение значений из нескольких дискретных входов - Read Discrete Inputs.
  • 0x03 (3) - чтение значений из нескольких регистров хранения - Read Holding Registers.
  • 0x04 (4) - чтение значений из нескольких регистров ввода - Read Input Registers.
  • 0x05 (5) - запись значения одного флага - Force Single Coil.
  • 0x06 (6) - запись значения в один регистр хранения - Preset Single Register.
  • 0x07 (7) - чтение сигналов состояния - Read Exception Status.
  • 0x08 (8) - диагностика - Diagnostic.
  • 0x0B (11) - чтение счетчика событий - Get Com Event Counter.
  • 0x0C (12) - чтение журнала событий - Get Com Event Log.
  • 0x0F (15) - запись значений в несколько регистров флагов - Force Multiple Coils.
  • 0x10 (16) - запись значений в несколько регистров хранения - Preset Multiple Registers.
  • 0x11 (17) - чтение информации об устройстве - Report Slave ID.
  • 0x14 (20) - чтение из файла - Read File Record.
  • 0x15 (21) - запись в файл - Write File Record.
  • 0x16 (22) - запись в один регистр хранения с использованием маски "И" и маски "ИЛИ" - Mask Write Register.
  • 0x18 (24) - чтение данных из очереди - Read FIFO Queue.
  • 0x2B (43) - Encapsulated Interface Transport.
    Команды и регистры для теста
    Проверить функции для чтения и записа:
  • (0x03) Read Holding Registers. Чтение N регистров управления и уставок.
  • (0x10) Write Multiple registers Запись N регистров управления и уставок (0x10). Адреса тестовых регистров для чтения и записи: 0x30 - лежит значение 123456789 тип uint32_t (4 байта) 0x32 - лежит значение 32768 тип uint16_t (2 байта) 0x34 - лежит значение 1.23456 тип float (4 байта)