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

Тема: Проблема связи ПЛК110-60(Master) с ПЛК110-60(Slave) по ModBus ASCII RS485

  1. #1

    По умолчанию Проблема связи ПЛК110-60(Master) с ПЛК110-60(Slave) по ModBus ASCII RS485

    В обоих ModBus slave и Master создано по 4 переменные byte.
    В Master тип переменных out. подэлемента Universal ModBus device.

    Проблема в том что меняются значения только первого
    байта В ModBus slave.


    ModBus-Master.jpg

    ModBus - Slave.jpg


    Что я делаю не так?

  2. #2

    По умолчанию

    Почитайте в руководстве пользователя про адресацию и про выравнивание адресов ModBus

  3. #3
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,251

    По умолчанию

    Цитата Сообщение от jon Посмотреть сообщение
    В обоих ModBus slave и Master создано по 4 переменные byte.
    В Master тип переменных out. подэлемента Universal ModBus device.

    Проблема в том что меняются значения только первого
    байта В ModBus slave.


    ModBus-Master.jpg

    ModBus - Slave.jpg


    Что я делаю не так?
    Сделайте в мастере так
    Захват-2.png
    И все получится
    26 лет деятельности в области промышленной безопасности

  4. #4

    По умолчанию

    Все работает.
    Спасибо за помощь!

  5. #5

    По умолчанию

    Поднимаю тему, как наиболее близкую к моему вопросу.
    Имею опыт программирования на МЭК, но ОВЕН попал в руки впервые.
    Пытаюсь разобраться с выравниванием переменных в буфере обмена контроллеров по Modbus.
    Прочитал "7.4.2.2.1 Выравнивание адресации" из файла rp_plk110.160.pdf, нахожусь в ступоре.
    Если я указал в элементе Modbus(slave) Переменную типа Float, то я обязан ее читать элементом Modbus(master) из регистра 4?
    А первые 64 бита буфера обмена куда девать? Наплевать и забыть?
    Я готов смириться с потерей байта при передаче 8 бит через регистр.
    Но терять 32 бит при передаче слова и 64 бита при передаче дабла, это маразм.
    Совет petera меня вообще озадачил, это 7,5 регистров буфера в потерях.

    Может я чего не понял в объяснениях автора руководства по программированию?

    PS Немного оффтоп, но чтобы не распыляться спрашиваю здесь.
    Зачем на входах с 16 битными АЦП и выходах с совсем-уж 10 битными ЦАП забиты переменные формата REAL?
    Последний раз редактировалось Maxlan; 13.10.2016 в 15:12.

  6. #6
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,251

    По умолчанию

    Цитата Сообщение от Maxlan Посмотреть сообщение
    Поднимаю тему, как наиболее близкую к моему вопросу.
    Имею опыт программирования на МЭК, но ОВЕН попал в руки впервые.
    Пытаюсь разобраться с выравниванием переменных в буфере обмена контроллеров по Modbus.
    Прочитал "7.4.2.2.1 Выравнивание адресации" из файла rp_plk110.160.pdf, нахожусь в ступоре.
    Если я указал в элементе Modbus(slave) Переменную типа Float, то я обязан ее читать элементом Modbus(master) из регистра 4?
    А первые 64 бита буфера обмена куда девать? Наплевать и забыть?
    Я готов смириться с потерей байта при передаче 8 бит через регистр.
    Но терять 32 бит при передаче слова и 64 бита при передаче дабла, это маразм.
    Совет petera меня вообще озадачил, это 7,5 регистров буфера в потерях.

    Может я чего не понял в объяснениях автора руководства по программированию?

    PS Немного оффтоп, но чтобы не распыляться спрашиваю здесь.
    Зачем на входах с 16 битными АЦП и выходах с совсем-уж 10 битными ЦАП забиты переменные формата REAL?
    О каких потерях в моем посте Вы говорите?
    Просто у вопрошающего команды в мастере были Write bytes, вместо нужных Force multiply coils.
    И причем здесь выравнивание?
    26 лет деятельности в области промышленной безопасности

  7. #7

    По умолчанию

    Судя по рисунку первый байт буфера пишется в регистр 0, второй в регистр 8, третий читается из регистра 16, четвертый опять пишется в регистр 24
    Куда делись регистры 1-7,9-15, 17-24?

  8. #8
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,251

    По умолчанию

    Про выравнивание

    Левая колонка - память слейва в контроллере нумеруется в БАЙТАХ.
    Регистры в слейве (третья колонка) нумеруются в регистрах, в каждом два байта.
    Суть выравнивания:
    компилятор автоматически выравнивает адрес регистра WORD до четного байта, а для DWORD или REAL до байта кратного ЧЕТЫРЕМ или регистра кратного ДВУМ.
    Из-за чего могут возникать области незанятого пространства но только не 64 бита!
    В худшем случае Вы потеряете два байта или 16 бит.
    26 лет деятельности в области промышленной безопасности

  9. #9
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,251

    По умолчанию

    Цитата Сообщение от Maxlan Посмотреть сообщение
    Судя по рисунку первый байт буфера пишется в регистр 0, второй в регистр 8, третий читается из регистра 16, четвертый опять пишется в регистр 24
    Куда делись регистры 1-7,9-15, 17-24?
    Самое главное в том, что выравнивание относится к слейву, а не к мастеру.
    А Вы ссылаетесь на картинку конфигурации мастера.
    Первый 8bits пишет один байт в область 0х(1х) второго контроллера с любого БИТА хоть с 1, хоть 10, хоть с 2345.
    Второй и последующие могут писать один байт в область 0х(1х) второго контроллера тоже с любого БИТА.
    Старшинства здесь нет.
    При чем здесь регистры?
    А если эти биты и попадают в регистры слейва, то могут попасть с любого разряда, совсем дажке не с нулевого или восьмого, а хоть с 13, следующие биты окажутся уже в разрябах другого регистра.
    А в слейве, для байтовых модулей 8bits никакого выравнивания нет и не может быть

    ЗЫ.
    Первый 8bits пишет один байт в область 0х(1х) второго контроллера с номера 2345
    Захват-1.png
    А второй 8bits пишет один байт в область 0х(1х) второго контроллера с номера 23
    Захват-2.png
    Последний раз редактировалось petera; 13.10.2016 в 15:50.
    26 лет деятельности в области промышленной безопасности

  10. #10

    По умолчанию

    Путем логических рассуждений и экспериментов я пришел именно к такому методу выравнивания.
    По дискретным переменным никаких проблем. Засаду с плавающей точкой пока понять не могу.
    Похоже что при считывании мастером переменной с плавающей точкой пропал знак.
    Как сделать чтобы в master значение переменной выглядело так-же как и в slave?
    Изображения Изображения
    • Тип файла: png Master.png (48.2 Кб, Просмотров: 17)
    • Тип файла: png Slave.png (21.9 Кб, Просмотров: 16)

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

Похожие темы

  1. ПЛК110-60 и Modbus (Master)
    от rwg в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 19.05.2014, 09:52
  2. ПЛК110-60 - нет связи по RS-232 через АС3-М
    от smk1635 в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 13.05.2013, 20:12
  3. Проблема с ПЛК110-60
    от deniska13 в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 30.10.2012, 10:23
  4. ПЛК110-60-Р-М(Master)+ИП320
    от Александр Ч. в разделе Панели оператора (HMI)
    Ответов: 0
    Последнее сообщение: 25.11.2010, 11:07
  5. проблема с плк110-60
    от niklud19511 в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 18.11.2010, 17:08

Ваши права

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