Как ведомое устройство Modbus RTU различает команды чтения и записи ведущего устройства Modbus? - PullRequest
0 голосов
/ 13 июля 2020

Я начал реализацию Modbus RTU Slave на микроконтроллере STM32G071. Я начал с кода функции Read Holding Register. Я хочу понять, как происходит операция записи. Пожалуйста, поправьте мое понимание.

  1. Чтение регистра временного хранения Modbus. Сообщение от ведущего (в шестнадцатеричном формате):

    SlaveID Function_Code Address Highbyte AddressLowbyte QuantityHighbyte QuantityLowbyte CRCHighbyte CRCLowbyte: 01 03 00 04 00 03 07 58

  2. Регистр временного хранения Modbus Чтение ответа Modbus RTU Slave (в шестнадцатеричном формате):

SlaveID Function_Code QuantityBytes Value1HighByte Value1LowByte Value2HighByte Value2LowByte Value3HighByte Value3LowByte CRCHighbyte CRCLowbyte: 01 03 06 12e3 45ef 63de 58 BA

Код функции регистра временного хранения - это функция чтения / записи. Как раб будет различать read and write commands? Насколько я понимаю:

  1. Использование кода функции 03 Мы можем только читать аналоговые регистры.
  2. Для записи регистра временного хранения Мастер фактически использует Function code 06 и Function code 16
  3. Но пункт №2 противоречит моему опыту. Обычно мы настраиваем регистры аналогового вывода с Function code 3 в PLC / DCS.

Пожалуйста, помогите мне.

Наконец, запрос на CR C проверка ведомым устройством при получении команды записи :

  1. Должна ли ведомая проверка CRC получена первой перед обработкой?
...