Просмотр полной версии : Modbus.lib
Есть ПЛК110 и панель Weintek, связаны между собой через RS232.
Задача считать по адресу 10 регистров панели по Modbus.
Прием передача настроена, но проблема в том, что считать можно только один регистр, т.е. когда установка Quantity:=1, при установке Quantity большего значения выскакиевает ошибка 255.
Чтение функцией MB_RD_HOLD_REGS 03. При тех же настройках Modbus Poll спокойно считывает 10 регистров с панели.
Сам пример программы из описания библиотеки Modbus.lib с нужными настройками порта.
Подскажите, как можно считать 10 регистров группой?
Вы пробовали считать эти 10 регистров группой сторонней программой?
Да, Modbus Poll считывает нормально.
Функция та же, как и все настройки.
Впринципе и ПЛК при параметре quantity = 1 считывает.
Есть ПЛК110 и панель Weintek, связаны между собой через RS232.
Задача считать по адресу 10 регистров панели по Modbus.
Прием передача настроена, но проблема в том, что считать можно только один регистр, т.е. когда установка Quantity:=1, при установке Quantity большего значения выскакиевает ошибка 255.
Чтение функцией MB_RD_HOLD_REGS 03. При тех же настройках Modbus Poll спокойно считывает 10 регистров с панели.
Сам пример программы из описания библиотеки Modbus.lib с нужными настройками порта.
Подскажите, как можно считать 10 регистров группой?
Если у вас в проекте только пример из описания, то выложите его здесь, может кто найдет проблему
ПЛК110.30M v2 , обращаюсь к устройству через RS232, в моем случае начиная с 80го регистра
Вообще, если планируете использовать Modbus.lib, посмотрите эту тему (https://owen.ru/forum/showthread.php?t=25112). Я пробовал, очень удобно
Спорягин Кирилл
19.01.2023, 14:59
Вообще, если планируете использовать Modbus.lib, посмотрите эту тему (https://owen.ru/forum/showthread.php?t=25112). Я пробовал, очень удобно
Внесу комментарий, как автор универсального диспетчера...
Библиотека для случаев, когда ПЛК - мастер!!!
ТС спрашивает, конечно, как с помощью ПЛК считать из панели 10 регистров, т.е. видимо, подразумевает, что ПЛК - мастер в связке с панелью.
Но в подавляющем большинстве случаев в связке ПЛК-панель, мастером должна быть панель!!!
Быть может ТС не правильно создает архитектуру системы?
kondor3000
19.01.2023, 15:21
Есть ПЛК110 и панель Weintek, связаны между собой через RS232.
Задача считать по адресу 10 регистров панели по Modbus.
Прием передача настроена, но проблема в том, что считать можно только один регистр, т.е. когда установка Quantity:=1, при установке Quantity большего значения выскакиевает ошибка 255.
Чтение функцией MB_RD_HOLD_REGS 03. При тех же настройках Modbus Poll спокойно считывает 10 регистров с панели.
Сам пример программы из описания библиотеки Modbus.lib с нужными настройками порта.
Подскажите, как можно считать 10 регистров группой?
Так у вас и в коде только 1 регистр считывается, с байтами 0 и 1, надо добавить х1, х2, х3, х4 .....х10 с разными последующими байтами из буфера естественно 65248
Тогда и Quantity:=10, заработает. Панель надеюсь Слейв у вас.
А вообще считывать регистры группой, можно и через конфигурацию, с помощью String, до 40 штук за раз. https://owen.ru/forum/showthread.php?t=22915&page=39&p=244022&viewfull=1#post244022
Все оказалось непредсказуемо просто, дело было в минимальной длине цикла работы контроллера, увеличил до 10мс и стало все ок.
Вообще, если планируете использовать Modbus.lib, посмотрите эту тему (https://owen.ru/forum/showthread.php?t=25112). Я пробовал, очень удобно
Да, думаю, что скоро буду переходить на данный способ связи с модулями.
Внесу комментарий, как автор универсального диспетчера...
Библиотека для случаев, когда ПЛК - мастер!!!
ТС спрашивает, конечно, как с помощью ПЛК считать из панели 10 регистров, т.е. видимо, подразумевает, что ПЛК - мастер в связке с панелью.
Но в подавляющем большинстве случаев в связке ПЛК-панель, мастером должна быть панель!!!
Быть может ТС не правильно создает архитектуру системы?
Да, про мастера и слейва иногда забываю, но тут панель просто использовалась как устройство с регистрами, дальше контроллер пойдет в поле.
Так у вас и в коде только 1 регистр считывается, с байтами 0 и 1, надо добавить х1, х2, х3, х4 .....х10 с разными последующими байтами из буфера естественно 65248
Тогда и Quantity:=10, заработает. Панель надеюсь Слейв у вас.
А вообще считывать регистры группой, можно и через конфигурацию, с помощью String, до 40 штук за раз. https://owen.ru/forum/showthread.php?t=22915&page=39&p=244022&viewfull=1#post244022
Тут вопрос был не колличестве преобразованных переменных, а в самой способности считать весь пакет в регистр. Со string я бы не додумался, тоже решает мою проблему, попробовал, все читается как надо в string, спасибо.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot