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

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

Форум : Оборудование производства НПО "Тепловизор"

Название : Поле "Response data Length" функции Read FIle Record

© NegaSoft co., 2005
http://www.teplovizor.ru

URL этой темы
http://www.teplovizor.ru/forum/viewtopic.php?topic_id=561&forum=1


 reficul0 :

27.8.18 07:00
 Один из модулей рабочего сервера, опирается на спецификацию модбаса(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 ]

 CH :

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