Показано с 1 по 9 из 9

Тема: Modbus.lib

  1. #1

    По умолчанию Modbus.lib

    Есть ПЛК110 и панель Weintek, связаны между собой через RS232.
    Задача считать по адресу 10 регистров панели по Modbus.
    Прием передача настроена, но проблема в том, что считать можно только один регистр, т.е. когда установка Quantity:=1, при установке Quantity большего значения выскакиевает ошибка 255.
    Чтение функцией MB_RD_HOLD_REGS 03. При тех же настройках Modbus Poll спокойно считывает 10 регистров с панели.

    Сам пример программы из описания библиотеки Modbus.lib с нужными настройками порта.

    Подскажите, как можно считать 10 регистров группой?
    Изображения Изображения

  2. #2

    По умолчанию

    Вы пробовали считать эти 10 регистров группой сторонней программой?

  3. #3

    По умолчанию

    Да, Modbus Poll считывает нормально.
    Функция та же, как и все настройки.
    Впринципе и ПЛК при параметре quantity = 1 считывает.
    Изображения Изображения

  4. #4

    По умолчанию

    Цитата Сообщение от K3114 Посмотреть сообщение
    Есть ПЛК110 и панель Weintek, связаны между собой через RS232.
    Задача считать по адресу 10 регистров панели по Modbus.
    Прием передача настроена, но проблема в том, что считать можно только один регистр, т.е. когда установка Quantity:=1, при установке Quantity большего значения выскакиевает ошибка 255.
    Чтение функцией MB_RD_HOLD_REGS 03. При тех же настройках Modbus Poll спокойно считывает 10 регистров с панели.

    Сам пример программы из описания библиотеки Modbus.lib с нужными настройками порта.

    Подскажите, как можно считать 10 регистров группой?
    Если у вас в проекте только пример из описания, то выложите его здесь, может кто найдет проблему

  5. #5

    По умолчанию

    ПЛК110.30M v2 , обращаюсь к устройству через RS232, в моем случае начиная с 80го регистра
    Вложения Вложения
    Последний раз редактировалось K3114; 19.01.2023 в 12:57.

  6. #6

    По умолчанию

    Вообще, если планируете использовать Modbus.lib, посмотрите эту тему. Я пробовал, очень удобно

  7. #7
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    980

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    Вообще, если планируете использовать Modbus.lib, посмотрите эту тему. Я пробовал, очень удобно
    Внесу комментарий, как автор универсального диспетчера...

    Библиотека для случаев, когда ПЛК - мастер!!!
    ТС спрашивает, конечно, как с помощью ПЛК считать из панели 10 регистров, т.е. видимо, подразумевает, что ПЛК - мастер в связке с панелью.
    Но в подавляющем большинстве случаев в связке ПЛК-панель, мастером должна быть панель!!!

    Быть может ТС не правильно создает архитектуру системы?

  8. #8

    По умолчанию

    Цитата Сообщение от K3114 Посмотреть сообщение
    Есть ПЛК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 с разными последующими байтами из буфера естественно 1 Кусок кода.jpg
    Тогда и Quantity:=10, заработает. Панель надеюсь Слейв у вас.

    А вообще считывать регистры группой, можно и через конфигурацию, с помощью String, до 40 штук за раз. https://owen.ru/forum/showthread.php...l=1#post244022
    Последний раз редактировалось kondor3000; 19.01.2023 в 15:55.

  9. #9

    По умолчанию

    Все оказалось непредсказуемо просто, дело было в минимальной длине цикла работы контроллера, увеличил до 10мс и стало все ок.


    Цитата Сообщение от 1exan Посмотреть сообщение
    Вообще, если планируете использовать Modbus.lib, посмотрите эту тему. Я пробовал, очень удобно
    Да, думаю, что скоро буду переходить на данный способ связи с модулями.


    Цитата Сообщение от Спорягин Кирилл Посмотреть сообщение
    Внесу комментарий, как автор универсального диспетчера...

    Библиотека для случаев, когда ПЛК - мастер!!!
    ТС спрашивает, конечно, как с помощью ПЛК считать из панели 10 регистров, т.е. видимо, подразумевает, что ПЛК - мастер в связке с панелью.
    Но в подавляющем большинстве случаев в связке ПЛК-панель, мастером должна быть панель!!!

    Быть может ТС не правильно создает архитектуру системы?
    Да, про мастера и слейва иногда забываю, но тут панель просто использовалась как устройство с регистрами, дальше контроллер пойдет в поле.


    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Так у вас и в коде только 1 регистр считывается, с байтами 0 и 1, надо добавить х1, х2, х3, х4 .....х10 с разными последующими байтами из буфера естественно 1 Кусок кода.jpg
    Тогда и Quantity:=10, заработает. Панель надеюсь Слейв у вас.

    А вообще считывать регистры группой, можно и через конфигурацию, с помощью String, до 40 штук за раз. https://owen.ru/forum/showthread.php...l=1#post244022
    Тут вопрос был не колличестве преобразованных переменных, а в самой способности считать весь пакет в регистр. Со string я бы не додумался, тоже решает мою проблему, попробовал, все читается как надо в string, спасибо.

Похожие темы

  1. Ответов: 26
    Последнее сообщение: 31.01.2023, 17:42
  2. Ответов: 2
    Последнее сообщение: 04.06.2019, 16:55
  3. Ответов: 10
    Последнее сообщение: 10.06.2018, 16:36
  4. Ответов: 2
    Последнее сообщение: 17.03.2016, 08:47
  5. Ответов: 5
    Последнее сообщение: 14.10.2010, 14:42

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •