Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 13

Тема: Modbus Slave

  1. #1

    По умолчанию Modbus Slave

    Не могли бы вы объяснить, как конфигурируется модуль Modbus Slave. Вставил я переменную "2 байта". Назвал её. Дальше?
    Как привязать привязать эту переменную к памяти? Как привязать эту переменную к конкретному адресу Modbus? Как сконфигурировать связь между переменными Modbus Slave и вставленного внутрь него Modbus Master?

  2. #2

    По умолчанию

    Для начала рекомендую прочитать документацию

  3. #3

    По умолчанию

    Документацию? По поводу неё речь уже заходила…
    Мне, по работе, приходится программировать контроллеры Siemens S7-200, S7-300, панели оператора Siemens от TP170 Micro до PC477, и за три года я несколько раз заходил на форум к российскому представительству и раз пять звонил в службу тех. поддержки. Больше не потребовалось. Два месяца назад купил пару ПЛК 100 и два месяца не вылезаю с этого форума. Документации не хватает. Поглупел, что ли, так резко?

  4. #4
    Пользователь
    Регистрация
    10.01.2007
    Адрес
    Красноярск
    Сообщений
    138

    По умолчанию

    Документ "PLC_Configuration_OWEN.pdf" на диске с ПЛК.

    3.1.3. Настройка данных информационного обмена................49
    3.1.3.1. Выравнивание переменных при размещении в области памяти............................................ ..............................51
    3.1.3.2. Отображение устройства в области памяти..............52

    Если знаете modbus вопросов больше не возникнет

  5. #5

    По умолчанию

    Цитата Сообщение от Serj_N Посмотреть сообщение
    Не могли бы вы объяснить, как конфигурируется модуль Modbus Slave. Вставил я переменную "2 байта". Назвал её. Дальше?
    Как привязать привязать эту переменную к памяти? Как привязать эту переменную к конкретному адресу Modbus? Как сконфигурировать связь между переменными Modbus Slave и вставленного внутрь него Modbus Master?
    После того, как вы добавили в ModBus slave переменную, например 2 байта, она автоматически привязывается к памяти ПЛК. Для протокола Модбас она автоматически получает адрес. Адресация регистров, т.е. 2 байтовых переменных, производится ПЛК следующим образом: первый 2 byte получает адрес 0, второй - 1 и т.д. Эти адреса заданы для данного интерфейса связи и для данного слэйва. Если у вас ПЛК выступает в роли слэйва на разных интерфейсах, то для каждого интерфейса адресация регистров будет своя. При этом сам ПЛК условно становится несколькими Модбас-устройствами по разным интерфейсам.

    Надеюсь, не запутал

  6. #6

    По умолчанию

    От Kirill >> Надеюсь, не запутал
    «Нас атомной бомбой запугаешь едва ли …»©

    Странно как то получается. Взаимосвязь переменной и адреса Modbus идёт неформально. Эта переменная выше в списке, значит адрес у неё меньше, эта переменная ниже в списке, значит адрес у неё больше. А само значение адреса можно узнать только пересчитав все переменные с начала. Очень неудобно. Причём в модуле Modbus Master это же сделано по уму – у каждой переменной в свойствах можно посмотреть (и поменять) её Modbus адрес. Почему для Modbus Slave не сделали так же?

    А как объяснить это?
    Если сделать так, то первая переменная по адресу Modbus 40000 не видна! Считывание происходит, начиная со второй.




    А если вставить однобайтовую переменную, то первая (двухбайтовая) переменная начинает читаться.

    Изображения Изображения
    • Тип файла: jpg 1.jpg (30.0 Кб, Просмотров: 236)
    • Тип файла: jpg 2.jpg (27.7 Кб, Просмотров: 208)

  7. #7

    По умолчанию

    А можно на проект в целом взглянуть?
    Откуда взялся адрес 40000? И адрес чего это, slave-a или регистра в нем?

  8. #8

    По умолчанию

    Прошейте 2.02.8 и используйте CoDeSys 2.3.8.1

  9. #9

    По умолчанию

    Цитата Сообщение от Serj_N Посмотреть сообщение
    Странно как то получается. Взаимосвязь переменной и адреса Modbus идёт неформально. Эта переменная выше в списке, значит адрес у неё меньше, эта переменная ниже в списке, значит адрес у неё больше. А само значение адреса можно узнать только пересчитав все переменные с начала. Очень неудобно. Причём в модуле Modbus Master это же сделано по уму – у каждой переменной в свойствах можно посмотреть (и поменять) её Modbus адрес. Почему для Modbus Slave не сделали так же?
    Определенное неудобство конечно есть, но тут на вкус и цвет у каждого свой фломастер. Для каждого регистра вы можете в комментарии подписать адрес - это не сложнее, чем задать его в свойствах. Мастер оперирует чужими адресами регистров, вы меняете адрес и получаете другие данные.

    Вы можете поменять имя переменной, связанной с конкретным регистром Слэйва.

  10. #10

    По умолчанию

    Проект, по сути, простой. ПЛК работает как протокольный шлюз между Modbus RTU и Modbus ASCII. Такое решение потребовалось по той простой причине, что радиомодем "Невод-5" практически не способен работать в режиме RTU. Постоянно возникают тайм-ауты (ориентировочно до 200..300 мс) между байтами в кадре. Придется использовать ASCII. И роль ПЛК – организация Modbus ASCII моста через эти радиомодемы.
    Схема сети:


    По поводу адреса – команда 0x03 автоматически использует адреса из пространства 04xxxx. Например, в Modbus Master мы задаём адрес ‘0’, и он конвертируется модулем в адрес 40000. А адресом slave-a число 40000 (в Modbus протоколе) не может быть в принципе.

    >> Для каждого регистра вы можете в комментарии подписать адрес - это не сложнее, чем задать его в свойствах.
    Это здорово. Нужно тебе вставить новую переменную в середину имеющегося списка – и понесся программист перебивать комментарии. Да смотри – не ошибись! Потом заново выполнить тестирование этого участка коммуникаций. Изменил настройки – будь добр, проверь работу этого участка по всем пунктам теста… А если адрес в свойствах – это жесткая привязка. Я могу быть уверен, что по запросу на адрес ’3’ вернётся содержимое переменной, у которой в свойствах прописана привязка к адресу ‘3’. И никак иначе!
    Другой вариант – если реализовать такую схему, когда Modbus адрес для переменной Modbus Slave задаётся самим программистом сложно, то обязательно нужно добавить в свойства переменной строку, в которой будет показываться Modbus адрес, присвоенный данной переменной модулем Modbus Slave. Это позволит избежать ошибок при определении адреса переменной и абсолютно глупой трате времени на это.

    Проекты:
    Master.zip
    Slave.zip
    Изображения Изображения
    • Тип файла: jpg qw.JPG (25.5 Кб, Просмотров: 214)

Страница 1 из 2 12 ПоследняяПоследняя

Ваши права

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