Просмотр полной версии : Особенность библиотеки Modbus-Slave
Пишу проект под СПК207. По COM1 (RS232) связываюсь по Modbus. СПК - Slave. Использую библиотеку Modbus-Slave. В руководстве на библиотеку описан только функциональный блок MB_Slave и приведён пример работы с ним. В самой библиотеке содержатся ещё ФБ, но описания на них нет. Кто-нибудь знает где взять какую-нибудь инфу по ним? Взял пример за основу, вроде всё работает, но если Master запрашивает более 60 регистров, то ФБ возвращает ошибку ILLEGAL_DATA_VALUE и формирует исключительный ответ. Если Master записывает допустим 100 регистров то, то всё нормально. Подозреваю, что у этого ФБ буфер на отправку Buffer[0..255] of Byte. Каждый регистр в ASCII кодируется 4 байтами (60 регистров * 4 = 240 байт) + LRC, адрес, номер ф-ции, кол-во байт и т.д. Т.е. получается нельзя отдать более 60 рег-ров, так ли это, или я что-то делаю не так? Еще не понятно что за выход NewData у ФБ MB_Slave? Признак того, что поступил запрос от Master'а? И как надо строить программу? POU с вызовом MB_Slave вызывать циклически как можно чаще, чтобы не прозевать запрос от Master'а?
Неужели никто не в курсе?
вроде всё работает, но если Master запрашивает более 60 регистров, то ФБ возвращает ошибку ILLEGAL_DATA_VALUE и формирует исключительный ответ. Если Master записывает допустим 100 регистров то, то всё нормально.
а как можно на это отвечать, если 100 больше 60?
а как можно на это отвечать, если 100 больше 60?
Может запутанно объяснил. СПК - Slave. В СПК задана область - массив из 100 элементов типа WORD. При вызове ФБ MB_Slave в неё передаётся адрес массива и и размер в байтах (100*2=200 байт). Теперь подключаюсь Master'ом, пытаюсь считать 60 регистров - всё нормально, Master получает все данные из этих 60 регистров. Пытаюсь считать 80 регистров (это меньше 100) - master получает исключительный ответ. Дальше Master'ом записываю (16-ой ф-цией) 100 регистров - всё ОК, в КДС вижу полученные данные в регистрах. Такое ощущение, что пакет отправляемые Slave'ом с помощью этой ФБ не может быть длиннее 255 байт.
Народ, никто не пытался считывать большое кол-во регистров?
Народ, никто не пытался считывать большое кол-во регистров?
Добрый! Так и не получили ответа по данному вопросу?? тоже столкнулся, хотя в описании к библиотеке http://ftp.owen.ru/index.html/CoDeSys3/04_Library/03_Documentation/Modbus_Slave_v1.pdf
ни чёго подобного не сказанно.
Такое ощущение, что пакет отправляемые Slave'ом с помощью этой ФБ не может быть длиннее 255 байт.
смотрим структуру модбас запросов/ответов и обращаем на область данных под именем N и догадываемся сколько можно передать регистров за один раз
Евгений Кислов
16.08.2017, 06:53
Добрый день. Действительно, у библиотеки была такая "особенность".
Исправлено в текущей версии:
http://ftp.owen.ru/index.html/CoDeSys3/04_Library/02_Manual_installation/04_ModBus-slave/3.5.4.2/modbus-slave_v3.5.4.2.compiled-library
Теперь групповым запросом можно считать до 127-ми регистров.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot