Мне было интересно, можно ли как-то принудительно записать в регистр Modbus «только для чтения»? Является ли определение регистра «только для чтения» достаточно безопасным или его можно обойти??
Спасибо за ответы!
Мне было интересно, можно ли как-то принудительно записать в регистр Modbus «только для чтения»? Является ли определение регистра «только для чтения» достаточно безопасным или его можно обойти??
Спасибо за ответы!
Правильный способ определить аналоговую переменную «только для чтения» в Modbus — отобразить ее как входной регистр. В Modbus не определен функциональный код для записи во входной регистр.
По историческим причинам некоторые поставщики отображают все свои переменные как регистры хранения, которые теоретически доступны для чтения/записи, т. е. существует функция записи нескольких регистров. Всякий раз, когда они отображают переменную только для чтения в качестве регистра хранения, они должны утверждать, что функции записи не работают. Однако для этого не существует стандартного кода исключения, поскольку регистр временного хранения должен быть доступен для чтения/записи. Это только одна из особенностей Modbus.
Возвращаясь к вашему вопросу, если вы отобразите свою переменную как входной регистр, вы можете быть уверены, что протокол не позволит мастеру писать в нее. Если из соображений совместимости вы отобразите его как регистр хранения, протокол позволит главному устройству использовать функцию записи для изменения его значения, и вам решать блокировать в реализации вашего устройства.