НПО Тепловизор. Теплосчетчики и расходомеры К вершинам эволюции теплосчетчика
Продукция Поддержка Форум Контакты
     
Пользователь    Пароль  
Регистрация | Пароль?  
Главное меню
НовостиПродукцияФайлы/ДокументыСтатьиФорумОпросыФотогалереяО компанииРекламодателям
Потребители о нас
"Узлы учета ВИСТ.Т, производства ЗАО «НПО Тепловизор» использовались при строительстве ЕАСДКиУ в Зеленоградском АО, что позволило без затруднений сертифицировать ЕАСДКиУ в качестве автоматизированной системы коммерческого учета энергоресурсов в объеме жилищного фонда и административных зданий не имеющем аналогов в России."

А.С.Григорян, Генеральный директор МТК КОМКОР
Наши партнёры
Свернуть/Развернуть ТЕПЛОСЧЕТЧИКИ • ВОДОСЧЕТЧИКИ • РАСХОДОМЕРЫ • ВИС.Т Свернуть/Развернуть
/  Список форумов
   /  Оборудование производства НПО "Тепловизор"
/  Поле "Response data Length" функции Read FIle Record
«  Предыдущая тема    Следующая тема  »
Тема:  Поле "Response data Length" функции Read FIle Record    

reficul0 Поле "Response data Length" функции Read FIle Record

Новенький


Один из модулей рабочего сервера, опирается на спецификацию модбаса(http://modbus.org/specs.php), в соответствие с этой спецификацией в модуле присутствует функция Read File Record.
В ответе на запрос, составленный по спецификации функции Read File Record, присутствует поле "Response data Length". Согласно таблице этой функции это поле должно принимать значения от 0x07 до 0xF5 включительно.
Проблема заключается в том, что при вычислении ограничений самостоятельно было установлено, что в указанных ограничениях этого поля в спецификации не прослеживается логика. По нашим расчетам нижняя граница должна быть равна 0x04(4) байта ( 1 байт на File Response length + 1 байт на Reference Type + 2 байта для данных из одного регистра ). Так же по расчетам верхняя граница должна составлять 0xFA (251) ( 253 байта это максимальная длинна PDU, вычитаем из нее 1 байт на Function code, так же вычитаем 1 байт для Response Data length ).
Более того, ограничения поля "Response data Length" и поля "Sub-Req. x, File Resp. length" странным образом пересекаются. По факту, при соблюдении обоих, минимальный размер Response data Length недостижим, как и максимальный размер File Resp. length.
Так же, если учитывать такие ограничения, то становится невозможным запросить меньше двух регистров (4-х байт) в одном подзапросе, из чего вытекает что невозможно создать запрос, который будет опрашивать данные из 1 регистра.

Вопрос:
Какие ограничения должны быть у поля "Response data Length" функции Read File Record нашего модуля, для корректного общения с устройством теплосчетчик ВИС.Т ?

[ Редактировано reficul0 в 27.8.18 08:01 ]

[ Редактировано reficul0 в 27.8.18 08:01 ]
» 27.8.18 07:00 Профайл

CH Re: Поле "Response data Length" функции Read FIle Record

Администратор


В официальной модбас-спецификации достаточно ошибок и неточностей. Мало ли, что накопипастил творец этого документа - руководствуйтесь собственным здравым смыслом и всё будет хорошо.
Мне вообще не видится необходимым проверять поля-счётчики ответа на граничные условия. Необходимо и достаточно проверить их на соответствие _запрошенному_ числу регистров (байтов), без чего всё равно не обойтись. С учётом поддержки прибором только одного файлового подзапроса:
Response data Length = число запрошенных байтов + 2.
Sub-Req. 1, File Resp. length = число запрошенных байтов + 1.
А верхнее ограничение по числу байт установлено прибором в 96 байт (размер записи-заголовка архива).

--
Виктор В. Жданов
NegaSoft Co. FAE
НПО "Тепловизор", Главный инженер-программист
» 27.8.18 12:10 Профайл Посетить веб-сайт
Распечатать топик 
«  Предыдущая тема    Следующая тема  »


Поиск

Ключевые слова:    
[ Расширенный поиск ]

Права

Вы не можете начинать темы.
Вы не можете редактировать свои сообщения.
Вы не можете создавать опросы.
Вы не можете вкладывать файлы в сообщения.
Вы не можете отвечать на сообщения.
Вы не можете удалять свои сообщения.
Вы не можете голосовать.